@d-id/client-sdk 3.0.4-staging.437 → 3.0.5-staging.439

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.
@@ -1,4 +1,4 @@
1
- (function(Z,Fe){typeof exports=="object"&&typeof module<"u"?Fe(exports):typeof define=="function"&&define.amd?define(["exports"],Fe):(Z=typeof globalThis<"u"?globalThis:Z||self,Fe(Z.index={}))})(this,(function(Z){"use strict";var Ky=Object.defineProperty;var Hy=(Z,Fe,me)=>Fe in Z?Ky(Z,Fe,{enumerable:!0,configurable:!0,writable:!0,value:me}):Z[Fe]=me;var qe=(Z,Fe,me)=>Hy(Z,typeof Fe!="symbol"?Fe+"":Fe,me);var Fe=(n=>(n.Chat="lk.chat",n.Speak="did.speak",n.Interrupt="did.interrupt",n.SttLanguage="did.stt-language",n.Presentation="did.presentation",n))(Fe||{}),me=(n=>(n.Functional="Functional",n.TextOnly="TextOnly",n.Maintenance="Maintenance",n.Playground="Playground",n.DirectPlayback="DirectPlayback",n.Off="Off",n))(me||{}),He=(n=>(n.Embed="embed",n.Query="query",n.Partial="partial",n.Answer="answer",n.Transcribe="transcribe",n.Complete="done",n))(He||{}),fn=(n=>(n.Clip="clip",n.Talk="talk",n.Expressive="expressive",n.Image="image",n))(fn||{}),X=(n=>(n.Start="START",n.Stop="STOP",n))(X||{}),vt=(n=>(n.Strong="STRONG",n.Weak="WEAK",n.Unknown="UNKNOWN",n))(vt||{}),Pe=(n=>(n.Idle="IDLE",n.Loading="LOADING",n.Talking="TALKING",n.ToolActive="TOOL_ACTIVE",n))(Pe||{}),G=(n=>(n.ChatAnswer="chat/answer",n.ChatPartial="chat/partial",n.ChatAudioTranscribed="chat/audio-transcribed",n.StreamDone="stream/done",n.StreamStarted="stream/started",n.StreamFailed="stream/error",n.StreamReady="stream/ready",n.StreamInterrupt="stream/interrupt",n.StreamVideoCreated="stream-video/started",n.StreamVideoDone="stream-video/done",n.StreamVideoError="stream-video/error",n.StreamVideoRejected="stream-video/rejected",n.ToolCallStarted="tool-call/started",n.ToolCallDone="tool-call/done",n.ToolCallError="tool-call/error",n.TurnStarted="turn/started",n.TurnEnded="turn/ended",n))(G||{}),mn=(n=>(n.Started="tool-call/started",n.Done="tool-call/done",n.Error="tool-call/error",n))(mn||{}),Ya=(n=>(n.Presentation="did.presentation",n))(Ya||{}),ie=(n=>(n.New="new",n.Fail="fail",n.Connected="connected",n.Connecting="connecting",n.Closed="closed",n.Completed="completed",n.Disconnecting="disconnecting",n.Disconnected="disconnected",n))(ie||{}),yt=(n=>(n.Legacy="legacy",n.Fluent="fluent",n))(yt||{}),xn=(n=>(n.Ok="ok",n.UnknownError="unknown_error",n.NetworkIssue="network_issue",n.MessageLimit="message_limit",n.TimeLimit="time_limit",n.Inactivity="inactivity",n.EndedByAgent="ended_by_agent",n))(xn||{}),Jr=(n=>(n.Livekit="livekit",n))(Jr||{}),Qa=(n=>(n.Amazon="amazon",n.AzureOpenAi="azure-openai",n.Microsoft="microsoft",n.Elevenlabs="elevenlabs",n.Cartesia="cartesia",n))(Qa||{}),Xa=(n=>(n.Public="public",n.Premium="premium",n.Private="private",n.ExternalPrivate="external-private",n))(Xa||{});const Wl=(...n)=>{},Za=n=>new Promise(e=>setTimeout(e,n)),pn=(n=16)=>{const e=new Uint8Array(n);return globalThis.crypto.getRandomValues(e),Array.from(e,t=>t.toString(16).padStart(2,"0")).join("").slice(0,13)};function Gr(n){if(n!==void 0)return window.localStorage.setItem("did_external_key_id",n),n;let e=window.localStorage.getItem("did_external_key_id");if(!e){let t=pn();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let eo;function $r(){return eo??(eo=pn())}function zl(){eo=pn()}function to(n,e){if(n.type==="bearer")return`Bearer ${n.token}~${$r()}`;if(n.type==="basic")return`Basic ${"token"in n?n.token:btoa(`${n.username}:${n.password}`)}~${$r()}`;if(n.type==="key")return`Client-Key ${n.clientKey}.${Gr(e)}_${$r()}`;throw new Error(`Unknown auth type: ${n}`)}const Jl=45*1e3,Gl="X-Playground-Chat",no=2e3,ri="https://api.d-id.com",$l="wss://notifications.d-id.com",Yl="79f81a83a67430be2bc0fd61042b8faa";class qt extends Error{constructor(e,t="Error",i){super(e),this.kind=t,this.originalError=i,Object.setPrototypeOf(this,new.target.prototype)}toJson(){const e=this.originalError instanceof Error?this.originalError.message.slice(0,256):void 0;return{kind:this.kind,message:this.message,...e&&e!==this.message?{cause:e}:{}}}}function Ql(n){return n instanceof Error&&typeof n.kind=="string"}class io extends qt{constructor(t,i){super(`Failed to create ${i?"persistent ":""}chat, mode: ${t}`,"ChatCreationFailed");qe(this,"kind","ChatCreationFailed")}}class ro extends qt{constructor(t){super(`Chat mode downgraded to ${t}`,"ChatModeDowngraded");qe(this,"kind","ChatModeDowngraded")}}function Xl(n){try{const e=JSON.parse(n);if(e&&typeof e=="object"&&typeof e.kind=="string")return e}catch{}}class qi extends qt{constructor(t,i,r={}){const s=Xl(i);super(((s==null?void 0:s.description)??i).slice(0,256),"HttpError");qe(this,"kind","HttpError");qe(this,"code");qe(this,"status");qe(this,"endpoint");qe(this,"method");this.code=(s==null?void 0:s.kind)??"HttpError",this.status=t,this.endpoint=r.endpoint,this.method=r.method}toJson(){return{...super.toJson(),code:this.code,httpStatus:this.status,...this.endpoint?{endpoint:this.endpoint}:{},...this.method?{method:this.method}:{}}}}class so extends qt{constructor(t,i={}){super("Network request failed","NetworkError",t);qe(this,"kind","NetworkError");qe(this,"endpoint");qe(this,"method");qe(this,"durationMs");qe(this,"online");qe(this,"visibility");this.endpoint=i.endpoint,this.method=i.method,this.durationMs=i.durationMs,this.online=i.online,this.visibility=i.visibility}toJson(){return{...super.toJson(),...this.endpoint?{endpoint:this.endpoint}:{},...this.method?{method:this.method}:{},...this.durationMs!==void 0?{durationMs:this.durationMs}:{},...this.online!==void 0?{online:this.online}:{},...this.visibility?{visibility:this.visibility}:{}}}}class Ki extends qt{constructor(t,i){super(t,"StreamError",i);qe(this,"kind","StreamError")}}class pe extends qt{constructor(t,i){super(t,"ValidationError");qe(this,"kind","ValidationError");this.key=i}}class ao extends qt{constructor(t){super(t,"WSError");qe(this,"kind","WSError")}}const oo=n=>n.type,Zl=n=>n.type===fn.Expressive?"v4":n.type===fn.Clip?"v3-pro":n.type===fn.Image?"image":"v2",Yr=n=>n===fn.Expressive||n===fn.Image,Qr=n=>[me.TextOnly,me.Playground,me.Maintenance].includes(n),Ln=n=>n&&[me.DirectPlayback,me.Off].includes(n),co=/\[!\[([^\[\]]*)\]\(([^)\s]+)\)\]\(([^)\s]+)\)/g,uo=/!\[([^\[\]]*)\]\(([^)\s]+)\)/g,eh=[".mp4",".webm",".mkv",".mov",".m4v",".ogv"];function th(n){const e=n.split("?")[0].split("#")[0].toLowerCase();return eh.some(t=>e.endsWith(t))}const lo=new RegExp("(?<!!)\\[([^\\[\\]]+)\\]\\(([^)\\s]+)\\)","g"),ho=/<a\s+href="([^"]*)"[^>]*?>([^<]*)<\/a>/gi;function Xr(n){if(n.length===0)return[];const e=[];let t;for(co.lastIndex=0;(t=co.exec(n))!==null;)e.push({index:t.index,length:t[0].length,part:{type:"video",src:t[3],alt:t[1],thumbnail:t[2]}});for(uo.lastIndex=0;(t=uo.exec(n))!==null;)if(!e.some(a=>t.index>=a.index&&t.index<a.index+a.length)){const a=t[2],c=t[1];let d;th(a)?d={type:"video",src:a,alt:c}:(d={type:"image",src:a,alt:c},a.toLowerCase().endsWith(".gif")&&(d.mimeType="image/gif")),e.push({index:t.index,length:t[0].length,part:d})}for(lo.lastIndex=0;(t=lo.exec(n))!==null;)e.some(a=>t.index>=a.index&&t.index<a.index+a.length)||e.push({index:t.index,length:t[0].length,part:{type:"link",href:t[2],label:t[1]}});for(ho.lastIndex=0;(t=ho.exec(n))!==null;)e.some(a=>t.index>=a.index&&t.index<a.index+a.length)||e.push({index:t.index,length:t[0].length,part:{type:"link",href:t[1],label:t[2]}});if(e.length===0)return[{type:"text",text:n}];e.sort((s,a)=>s.index-a.index);const i=[];let r=0;for(const s of e)s.index>r&&i.push({type:"text",text:n.slice(r,s.index)}),i.push(s.part),r=s.index+s.length;return r<n.length&&i.push({type:"text",text:n.slice(r)}),i}let fo="",Zr=[];function si(n){return n===fo||(fo=n,Zr=Xr(n)),Zr}function nh(n,e){let t;return{promise:new Promise((r,s)=>{t=setTimeout(()=>s(new Error(e)),n)}),clear:()=>clearTimeout(t)}}async function es(n,e){const t={limit:(e==null?void 0:e.limit)??3,delayMs:(e==null?void 0:e.delayMs)??0,timeout:(e==null?void 0:e.timeout)??3e4,timeoutErrorMessage:(e==null?void 0:e.timeoutErrorMessage)||"Timeout error",shouldRetryFn:(e==null?void 0:e.shouldRetryFn)??(()=>!0),onRetry:(e==null?void 0:e.onRetry)??(()=>{})};let i;for(let r=1;r<=t.limit;r++)try{if(!t.timeout)return await n();const{promise:s,clear:a}=nh(t.timeout,t.timeoutErrorMessage),c=n().finally(a);return await Promise.race([c,s])}catch(s){if(i=s,!t.shouldRetryFn(s)||r>=t.limit)throw s;await Za(t.delayMs),await t.onRetry(s)}throw i}class mo{constructor(e){qe(this,"status",429);this.response=e}}const ih=n=>es(n,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:e=>e.status===429});function ts(n,e=ri,t,i){const r=async(s,a)=>{const{skipErrorHandler:c,...d}=a||{},o=d.method??"GET",u=performance.now();let l;try{l=await ih(async()=>{const h=await fetch(e+(s!=null&&s.startsWith("/")?s:`/${s}`),{...d,headers:{...d.headers,Authorization:to(n,i),"Content-Type":"application/json"}});if(h.status===429)throw new mo(h);return h})}catch(h){if(h instanceof mo)l=h.response;else{if((h==null?void 0:h.name)==="AbortError")throw h;const p=new so(h,{endpoint:s,method:o,durationMs:Math.round(performance.now()-u),online:typeof navigator<"u"?navigator.onLine:void 0,visibility:typeof document<"u"?document.visibilityState:void 0});throw c||t==null||t(p,{endpoint:s,method:o}),p}}if(!l.ok){const h=await l.text().catch(()=>`Failed to fetch with status ${l.status}`),f=new qi(l.status,h,{endpoint:s,method:o});throw c||t==null||t(f,{endpoint:s,method:o}),f}return l.json()};return{get(s,a){return r(s,{...a,method:"GET"})},post(s,a,c){return r(s,{...c,body:JSON.stringify(a),method:"POST"})},delete(s,a,c){return r(s,{...c,body:JSON.stringify(a),method:"DELETE"})},patch(s,a,c){return r(s,{...c,body:JSON.stringify(a),method:"PATCH"})}}}function rh(n,e=ri,t,i){const r=ts(n,`${e}/agents`,t,i);return{getRuntimeById(s,a){return r.get(`/${s}/runtime`,a)},newChat(s,a,c){return r.post(`/${s}/chat`,a,c)},chat(s,a,c,d){return r.post(`/${s}/chat/${a}`,c,d)},createRating(s,a,c,d){return r.post(`/${s}/chat/${a}/ratings`,c,d)},updateRating(s,a,c,d,o){return r.patch(`/${s}/chat/${a}/ratings/${c}`,d,o)},deleteRating(s,a,c,d){return r.delete(`/${s}/chat/${a}/ratings/${c}`,d)},submitFeedback(s,a,c,d){return r.post(`/${s}/chat/${a}/feedback`,c,d)},getSttToken(s,a){return r.get(`/${s}/stt-token`,a)}}}function sh(n){var r,s;const e=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",t=()=>{const a=navigator.platform;return a.toLowerCase().includes("win")?"Windows":a.toLowerCase().includes("mac")?"Mac OS X":a.toLowerCase().includes("linux")?"Linux":"Unknown"},i=n.avatar;return{$os:`${t()}`,isMobile:`${e()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:oo(i),agentVoice:{language:(s=(r=n.avatar)==null?void 0:r.voice)==null?void 0:s.language}}}function ah(n){var e;return{agentType:oo(n.avatar),presenterType:Zl(n.avatar),owner_id:n.owner_id??"",starterQuestionsCount:(e=n.starter_message)==null?void 0:e.length,agentId:n.id,agentName:n.name}}const oh=n=>{try{return String((n==null?void 0:n.message)??n??"").slice(0,256)}catch{return"Unknown error"}},ch=n=>n.reduce((e,t)=>e+t,0),po=n=>ch(n)/n.length,go=n=>Math.min(...n),vo=n=>Math.max(...n),Hi=(n,e=0)=>{const t=10**e;return Math.round(n*t)/t},dh=(n,e)=>{const t=[...n].sort((i,r)=>i-r);return t[Math.min(t.length-1,Math.floor(e*(t.length-1)))]},uh=n=>dh(n,.5),lh=(n,e)=>{try{return n()}catch{return e}};function yo(n,e,t){var c,d;const{event:i,...r}=n,{language:s}=((c=e==null?void 0:e.avatar)==null?void 0:c.voice)||{};return{...r,script:{...r.script,provider:{...(d=r==null?void 0:r.script)==null?void 0:d.provider,language:s}},...t}}function bo(n){"requestIdleCallback"in window?requestIdleCallback(n,{timeout:2e3}):setTimeout(n,0)}function Wi(n){return n instanceof qt?n.toJson():{kind:"UnknownError",message:oh(n)||"UnknownError"}}const hh="3.0.4-staging.437",fh="https://api-js.mixpanel.com/track/?verbose=1&ip=1",ko=50,gn=[];let ns=!1;async function To(n){const e=await fetch(fh,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify(n)})});if(!e.ok)throw new Error(`Mixpanel responded with ${e.status}`)}function mh(n){gn.push(n),gn.splice(ko)}function is(){if(ns||!gn.length)return;ns=!0;const n=gn.splice(0,gn.length);To(n).catch(()=>{gn.unshift(...n),gn.splice(ko)}).finally(()=>{ns=!1})}typeof window<"u"&&typeof window.addEventListener=="function"&&(window.addEventListener("online",is),typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&is()}));function ph(n){const e=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",t={};return{token:n.token||"testKey",distinct_id:Gr(n.externalId),agentId:n.agentId,additionalProperties:{id:Gr(n.externalId),...n.mixpanelAdditionalProperties||{}},isEnabled:n.isEnabled??!0,getRandom:pn,enrich(i){this.additionalProperties={...this.additionalProperties,...i}},async track(i,r,s){if(!this.isEnabled)return Promise.resolve();const{audioPath:a,...c}=r||{},d=s||Date.now(),o={event:i,properties:{...this.additionalProperties,...c,agentId:this.agentId,source:e,emittedBy:"agents-sdk",sdkVersion:hh,token:this.token,time:d,$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerHeight,"Screen Width":window.screen.width||window.innerWidth,"User Agent":navigator.userAgent}};return is(),To([o]).catch(()=>mh(o)),Promise.resolve()},linkTrack(i,r,s,a){t[i]||(t[i]={events:{},resolvedDependencies:[]}),a.includes(s)||a.push(s);const c=t[i];if(c.events[s]={props:r},c.resolvedDependencies.push(s),a.every(o=>c.resolvedDependencies.includes(o))){const o=a.reduce((u,l)=>c.events[l]?{...u,...c.events[l].props}:u,{});this.track(i,o),c.resolvedDependencies=c.resolvedDependencies.filter(u=>!a.includes(u)),a.forEach(u=>{delete c.events[u]})}}}}function rs(){let n=0;return{reset:()=>n=0,update:()=>n=Date.now(),get:(e=!1)=>e?Date.now()-n:n}}const Lt=rs(),ss=rs(),So=rs();function Co(n){return n===me.Playground?{headers:{[Gl]:"true"}}:{}}async function wo(n,e,t,i,r=!1,s){return s?{chat:s,chatMode:i}:(Ln(i)||(s=await e.newChat(n.id,{persist:r},Co(i)),t.track("agent-chat",{event:"created",chatId:s.id,mode:i})),{chat:s,chatMode:(s==null?void 0:s.chat_mode)??i})}function gh(n){return!n||n.length===0?[]:n.map(e=>Array.isArray(e.parts)&&e.parts.length>0?e:{...e,parts:Xr(typeof e.content=="string"?e.content:"")})}function vh(n){return new Promise((e,t)=>{const{callbacks:i,host:r,auth:s,externalId:a}=n,{onMessage:c=null,onOpen:d=null,onClose:o=null,onError:u=null}=i||{},l=new WebSocket(`${r}?authorization=${encodeURIComponent(to(s,a))}`);l.onmessage=c,l.onclose=o,l.onerror=h=>{console.error(h),u==null||u("Websocket failed to connect",h),t(h)},l.onopen=h=>{d==null||d(h),e(l)}})}async function yh(n){const{retries:e=1}=n;let t=null;for(let i=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;i++)try{t=await vh(n)}catch(r){if(i===e)throw r;await Za(i*500)}return t}async function bh(n,e,t,i){const r=t!=null&&t.onMessage?[t.onMessage]:[],s=await yh({auth:n,host:e,externalId:i,callbacks:{onError:a=>{var c;return(c=t.onError)==null?void 0:c.call(t,new ao(a))},onMessage(a){const c=JSON.parse(a.data);r.forEach(d=>d(c.event,c))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:a=>r.push(a)}}const kh={manual:xn.Ok,inactivity:xn.Inactivity,peer_disconnected:xn.NetworkIssue,shutdown:xn.UnknownError};function Th(n){return kh[n.close_reason]??n.close_reason}const Sh=[G.StreamVideoDone,G.StreamVideoError,G.StreamVideoRejected],Eo=[G.StreamFailed,G.StreamVideoError,G.StreamVideoRejected];function Ro(n){if(n.answer!==void 0)return n.answer;let e=0,t="";for(;e in n;)t+=n[e++];return t}function Ch(n,e,t){if(!n.content)return;const i={id:n.id||`user-${Date.now()}`,role:n.role,content:n.content,parts:si(n.content),createdAt:n.created_at||new Date().toISOString(),transcribed:!0};e.messages.push(i),t==null||t([...e.messages],"user")}function wh(n,e,t,i,r,s,a){if(n===He.Transcribe&&e.content){Ch(e,i,r);return}if(!(n===He.Partial||n===He.Answer))return;const c=i.messages[i.messages.length-1];if(n===He.Answer&&(c==null?void 0:c.role)==="user"&&a==="partial")return;const o=a==="answer";let u;if((c==null?void 0:c.role)==="assistant"&&!o)u=c;else if(!c||c.role==="user"||o)o&&s(),u={id:e.id||`assistant-${Date.now()}`,role:e.role||"assistant",content:"",parts:[],createdAt:e.created_at||new Date().toISOString()},i.messages.push(u);else return;const{content:l,sequence:h}=e;if(n===He.Partial)t[h]=l;else{const p=Ro(t);!!(l&&l.length<p.length)&&(u.interrupted=!0),t.answer=l}const f=Ro(t);(u.content!==f||n===He.Answer)&&(u.content=f,u.parts=si(f),r==null||r([...i.messages],n))}function Eh(n,e,t,i,r){const s={},a=()=>{for(const o of Object.keys(s))delete s[o]};let c=null;const d=(o,u)=>{var l,h;u==="user"&&a(),(h=(l=t.callbacks).onNewMessage)==null||h.call(l,o,u)};return{clearQueue:a,onMessage:(o,u)=>{var l,h,f;if("content"in u){const p=o===G.ChatAnswer?He.Answer:o===G.ChatAudioTranscribed?He.Transcribe:o;wh(p,u,s,e,d,a,c),p===He.Partial?c="partial":p===He.Answer&&(c="answer",a()),p===He.Answer&&n.track("agent-message-received",{content:u.content,messages:e.messages.length,mode:e.chatMode})}else{const p=G;if(o=o,o===p.StreamVideoCreated){const v=yo(u,i,{mode:e.chatMode});if(n.linkTrack("agent-video",v,p.StreamVideoCreated,["start"]),u.sentiment){const b=e.messages[e.messages.length-1];if((b==null?void 0:b.role)==="assistant"){const k={...b,sentiment:u.sentiment};e.messages[e.messages.length-1]=k,d==null||d([...e.messages],c??"answer")}}}if(Sh.includes(o)){const v=o.split("/")[1],b=yo(u,i,{mode:e.chatMode});Eo.includes(o)?n.track("agent-video",{...b,event:v}):n.linkTrack("agent-video",{...b,event:v},o,["done"])}Eo.includes(o)&&((f=(h=t.callbacks).onError)==null||f.call(h,new Ki(`Stream failed with event ${o}`),{streamId:(l=e.streamingManager)==null?void 0:l.streamId})),u.event===p.StreamDone&&r(Th(u))}}}}function Rh(n,e,t,i){const r=ts(n,`${e}/agents/${t}`,i);return{createStream(s,a){return r.post("/streams",s,{signal:a})},startConnection(s,a,c,d){return r.post(`/streams/${s}/sdp`,{session_id:c,answer:a},{signal:d})},addIceCandidate(s,a,c,d){return r.post(`/streams/${s}/ice`,{session_id:c,...a},{signal:d})},async sendStreamRequest(s,a,c){const d=await r.post(`/streams/${s}`,{session_id:a,...c});return{status:d.status,sessionId:d.session_id,duration:d.duration,videoId:d.video_id}},close(s,a){return r.delete(`/streams/${s}`,{session_id:a},{skipErrorHandler:!0})}}}const Po=(n,e)=>(t,i)=>n&&console.log(`[${e}] ${t}`,i??""),Ph=45;function _h(n){const e=n.map(d=>d.av).filter(d=>!!d&&d.audioPlayout>0&&d.videoPlayout>0);if(e.length<2)return null;const t=e[0].localTs,i=e[e.length-1].localTs-t,r=e.map(d=>d.audioPlayout-d.videoPlayout),s=r.filter(d=>d>Ph||d<-100),a=e.filter(d=>d.localTs-t>=Math.min(5e3,i/2)),c=(a.length?a:e).map(d=>d.audioPlayout-d.videoPlayout);return{sampleCount:e.length,durationMs:Hi(i),desyncDurationMs:Hi(i*(s.length/r.length)),maxOffsetMs:Hi(r.reduce((d,o)=>Math.abs(o)>Math.abs(d)?o:d)),residualOffsetMs:Hi(uh(c))}}function Ih(n,e,t){const i=(e.timestamp-n.timestamp)/1e3;return{duration:i,bytesReceived:e.bytesReceived-n.bytesReceived,bitrate:Math.round((e.bytesReceived-n.bytesReceived)*8/i),packetsReceived:e.packetsReceived-n.packetsReceived,packetsLost:e.packetsLost-n.packetsLost,framesDropped:e.framesDropped-n.framesDropped,framesDecoded:e.framesDecoded-n.framesDecoded,jitter:e.jitter,avgJitterDelayInInterval:(e.jitterBufferDelay-n.jitterBufferDelay)/(e.jitterBufferEmittedCount-n.jitterBufferEmittedCount),jitterBufferEmittedCount:e.jitterBufferEmittedCount-n.jitterBufferEmittedCount,jitterBufferDelay:(e.jitterBufferDelay-n.jitterBufferDelay)/i,framesPerSecond:e.framesPerSecond,freezeCount:e.freezeCount-n.freezeCount,freezeDuration:e.freezeDuration-n.freezeDuration,lowFpsCount:t}}function Mh(n){return n.filter(e=>e.freezeCount>0||e.framesPerSecond<21||e.framesDropped>0||e.packetsLost>0).map(e=>{const{timestamp:t,...i}=e,r=[];return e.freezeCount>0&&r.push("freeze"),e.framesPerSecond<21&&r.push("low fps"),e.framesDropped>0&&r.push("frames dropped"),e.packetsLost>0&&r.push("packet loss"),{...i,causes:r}})}function Dh(n){var d;let e="",t=0,i=null,r=null;const s=new Map;for(const o of n.values())if(o)if(o.type==="codec"&&((d=o.mimeType)!=null&&d.startsWith("video")))s.set(o.id,o.mimeType.split("/")[1]);else if(o.type==="candidate-pair"){const u=o,l=u.currentRoundTripTime??0;l>0&&(u.nominated===!0||t===0)&&(t=l)}else o.type==="inbound-rtp"&&o.kind==="video"?i=o:o.type==="inbound-rtp"&&o.kind==="audio"&&(r=o);if(!i)return{};const a=i;a.codecId&&s.has(a.codecId)?e=s.get(a.codecId):s.size>0&&(e=s.values().next().value??"");const c={codec:e,rtt:t,timestamp:a.timestamp,bytesReceived:a.bytesReceived,packetsReceived:a.packetsReceived,packetsLost:a.packetsLost,framesDropped:a.framesDropped,framesDecoded:a.framesDecoded,jitter:a.jitter,jitterBufferDelay:a.jitterBufferDelay,jitterBufferEmittedCount:a.jitterBufferEmittedCount,avgJitterDelayInInterval:a.jitterBufferDelay/a.jitterBufferEmittedCount,frameWidth:a.frameWidth,frameHeight:a.frameHeight,framesPerSecond:a.framesPerSecond,freezeCount:a.freezeCount,freezeDuration:a.totalFreezesDuration};return r&&(c.av={audioPlayout:r.estimatedPlayoutTimestamp??0,videoPlayout:a.estimatedPlayoutTimestamp??0,localTs:a.timestamp}),c}function _o(n,e,t){if(n.length===0)return null;const i=n.map((d,o)=>o===0?t?{timestamp:d.timestamp,duration:0,rtt:d.rtt,bytesReceived:d.bytesReceived-t.bytesReceived,bitrate:(d.bytesReceived-t.bytesReceived)*8/(e/1e3),packetsReceived:d.packetsReceived-t.packetsReceived,packetsLost:d.packetsLost-t.packetsLost,framesDropped:d.framesDropped-t.framesDropped,framesDecoded:d.framesDecoded-t.framesDecoded,jitter:d.jitter,jitterBufferDelay:d.jitterBufferDelay-t.jitterBufferDelay,jitterBufferEmittedCount:d.jitterBufferEmittedCount-t.jitterBufferEmittedCount,avgJitterDelayInInterval:(d.jitterBufferDelay-t.jitterBufferDelay)/(d.jitterBufferEmittedCount-t.jitterBufferEmittedCount),framesPerSecond:d.framesPerSecond,freezeCount:d.freezeCount-t.freezeCount,freezeDuration:d.freezeDuration-t.freezeDuration}:{timestamp:d.timestamp,rtt:d.rtt,duration:0,bytesReceived:d.bytesReceived,bitrate:d.bytesReceived*8/(e/1e3),packetsReceived:d.packetsReceived,packetsLost:d.packetsLost,framesDropped:d.framesDropped,framesDecoded:d.framesDecoded,jitter:d.jitter,jitterBufferDelay:d.jitterBufferDelay,jitterBufferEmittedCount:d.jitterBufferEmittedCount,avgJitterDelayInInterval:d.jitterBufferDelay/d.jitterBufferEmittedCount,framesPerSecond:d.framesPerSecond,freezeCount:d.freezeCount,freezeDuration:d.freezeDuration}:{timestamp:d.timestamp,duration:e*o/1e3,rtt:d.rtt,bytesReceived:d.bytesReceived-n[o-1].bytesReceived,bitrate:(d.bytesReceived-n[o-1].bytesReceived)*8/(e/1e3),packetsReceived:d.packetsReceived-n[o-1].packetsReceived,packetsLost:d.packetsLost-n[o-1].packetsLost,framesDropped:d.framesDropped-n[o-1].framesDropped,framesDecoded:d.framesDecoded-n[o-1].framesDecoded,jitter:d.jitter,jitterBufferDelay:d.jitterBufferDelay-n[o-1].jitterBufferDelay,jitterBufferEmittedCount:d.jitterBufferEmittedCount-n[o-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(d.jitterBufferDelay-n[o-1].jitterBufferDelay)/(d.jitterBufferEmittedCount-n[o-1].jitterBufferEmittedCount),framesPerSecond:d.framesPerSecond,freezeCount:d.freezeCount-n[o-1].freezeCount,freezeDuration:d.freezeDuration-n[o-1].freezeDuration}),r=Mh(i),s=r.reduce((d,o)=>d+(o.causes.includes("low fps")?1:0),0),a=i.filter(d=>!!d.avgJitterDelayInInterval).map(d=>d.avgJitterDelayInInterval),c=i.filter(d=>!!d.rtt).map(d=>d.rtt);return{webRTCStats:{anomalies:r,avSync:lh(()=>_h(n),null),minRtt:go(c),avgRtt:po(c),maxRtt:vo(c),aggregateReport:Ih(n[0],n[n.length-1],s),minJitterDelayInInterval:go(a),maxJitterDelayInInterval:vo(a),avgJitterDelayInInterval:po(a)},codec:n[0].codec,resolution:`${n[0].frameWidth}x${n[0].frameHeight}`}}function Io(n,e){for(const t of n.values())if((t==null?void 0:t.type)==="inbound-rtp"&&t.kind===e)return t;return null}const ai=10;function Oh(n,e){let t=!1,i=!1,r=null,s=0,a=0,c={};async function d(){if(t){try{const o=await n();if(!o){r=setTimeout(d,ai);return}const u=Io(o,"audio");if(!u){r=setTimeout(d,ai);return}const l=u.totalAudioEnergy??0,h=u.totalSamplesReceived??0;if(!i){s=l,a=h,i=!0,r=setTimeout(d,ai);return}const f=l-s,p=h-a;if(s=l,a=h,p>0&&f>0){t=!1,e(c);return}}catch{}t&&(r=setTimeout(d,ai))}}return{arm(o={}){c=o,t=!0,i=!1,performance.now(),r!==null&&clearTimeout(r),r=setTimeout(d,ai)},destroy(){t=!1,r!==null&&(clearTimeout(r),r=null)}}}const zi=100,Ah=Math.max(Math.ceil(400/zi),1),xh=.25,Lh=.28;function Nh(){let n=0,e,t,i=0;return r=>{const s=Io(r,"video");if(!s)return{isReceiving:!1,avgJitterDelayInInterval:i};const a=s.jitterBufferDelay,c=s.jitterBufferEmittedCount;if(t&&c>t){const u=a-e,l=c-t;i=u/l}e=a,t=c;const d=s.framesDecoded,o=d-n>0;return n=d,{isReceiving:o,avgJitterDelayInInterval:i,freezeCount:s.freezeCount}}}function Mo(n,e,t,i,r){let s=null,a=[],c,d=0,o=!1,u=vt.Unknown,l=vt.Unknown,h=0,f=0;const p=Nh();async function v(){const b=await n();if(!b)return;const{isReceiving:k,avgJitterDelayInInterval:C,freezeCount:_}=p(b),y=Dh(b);if(k)d=0,h=_-f,l=C<xh?vt.Strong:C>Lh&&h>1?vt.Weak:u,l!==u&&(r==null||r(l),u=l,f+=h,h=0),o||(i==null||i(X.Start),c=a[a.length-1],a=[],o=!0),a.push(y);else if(o&&(d++,d>=Ah)){const T=_o(a,zi,c);i==null||i(X.Stop,T??void 0),e()||t(),f=_,o=!1}}return{start:()=>{s||(s=setInterval(v,zi))},stop:()=>{s&&(clearInterval(s),s=null)},getReport:()=>_o(a,zi,c)}}const Uh=()=>{const n=globalThis,e=n.RTCPeerConnection||n.webkitRTCPeerConnection||n.mozRTCPeerConnection;if(!e)throw new Error("RTCPeerConnection is not available in this environment");return e.bind(n)};function Do(n){switch(n){case"connected":return ie.Connected;case"checking":return ie.Connecting;case"failed":return ie.Fail;case"new":return ie.New;case"closed":return ie.Closed;case"disconnected":return ie.Disconnected;case"completed":return ie.Completed;default:return ie.New}}const Fh=n=>e=>{const[t,i=""]=e.split(/:(.+)/);try{const r=JSON.parse(i);return n("parsed data channel message",{subject:t,data:r}),{subject:t,data:r}}catch(r){return n("Failed to parse data channel message, returning data as string",{subject:t,rawData:i,error:r}),{subject:t,data:i}}};function Bh({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:i,log:r}){n===X.Start&&e===X.Start?(r("CALLBACK: onVideoStateChange(Start)"),t==null||t(X.Start)):n===X.Stop&&e===X.Stop&&(r("CALLBACK: onVideoStateChange(Stop)"),t==null||t(X.Stop,i))}function jh({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:r,log:s}){n===X.Start?(s("CALLBACK: onVideoStateChange(Start)"),t==null||t(X.Start)):n===X.Stop&&(s("CALLBACK: onVideoStateChange(Stop)"),t==null||t(X.Stop,r)),e===X.Start?i==null||i(Pe.Talking):e===X.Stop&&(i==null||i(Pe.Idle))}function Oo({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,streamType:r,report:s,log:a}){r===yt.Legacy?Bh({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:s,log:a}):r===yt.Fluent&&jh({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:s,log:a})}async function Vh(n,e,{debug:t=!1,callbacks:i,auth:r,baseURL:s=ri,analytics:a},c){var nn;const d=Po(t,"WebRTCStreamingManager"),o=Fh(d);let u=!1,l=!1,h=X.Stop,f=X.Stop;const{startConnection:p,sendStreamRequest:v,close:b,createStream:k,addIceCandidate:C}=Rh(r,s,n,i.onError),{id:_,offer:y,ice_servers:T,session_id:S,fluent:x,interrupt_enabled:U}=await k(e,c);if(!S)throw new Error("Could not create session_id");(nn=i.onStreamCreated)==null||nn.call(i,{streamId:_,sessionId:S,agentId:n});const F=W=>{var K;return(K=i.onError)==null?void 0:K.call(i,W,{streamId:_})},A=new(Uh())({iceServers:T}),N=A.createDataChannel("JanusDataChannel"),j=x?yt.Fluent:yt.Legacy;a.enrich({"stream-type":j});const ne=e.stream_warmup&&!x,oe=()=>u,Ce=()=>{var W;u=!0,l&&(d("CALLBACK: onConnectionStateChange(Connected)"),(W=i.onConnectionStateChange)==null||W.call(i,ie.Connected))},Le=Mo(()=>A.getStats(),oe,Ce,(W,K)=>Oo({statsSignal:f=W,dataChannelSignal:j===yt.Legacy?h:void 0,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,report:K,streamType:j,log:d}),W=>{var K;return(K=i.onConnectivityStateChange)==null?void 0:K.call(i,W)});Le.start(),A.onicecandidate=W=>{d("peerConnection.onicecandidate",W);try{W.candidate&&W.candidate.sdpMid&&W.candidate.sdpMLineIndex!==null?C(_,{candidate:W.candidate.candidate,sdpMid:W.candidate.sdpMid,sdpMLineIndex:W.candidate.sdpMLineIndex},S,c):C(_,{candidate:null},S,c)}catch(K){F(K)}},N.onopen=()=>{l=!0,(!ne||u)&&Ce()};let re=null;const Me=W=>{var K;re=W,(K=i.onVideoIdChange)==null||K.call(i,W)};function jt(W,K){if(W===G.StreamStarted&&typeof K=="object"&&"metadata"in K){const w=K.metadata;Me(w.videoId)}W===G.StreamDone&&Me(null),h=W===G.StreamStarted?X.Start:X.Stop,Oo({statsSignal:j===yt.Legacy?f:void 0,dataChannelSignal:h,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,streamType:j,log:d})}function Dt(W,K){var B;const w=typeof K=="string"?K:K==null?void 0:K.metadata;w&&a.enrich({streamMetadata:w}),(B=i.onStreamReady)==null||B.call(i)}const Ot={[G.StreamStarted]:jt,[G.StreamDone]:jt,[G.StreamReady]:Dt};N.onmessage=W=>{var B;const{subject:K,data:w}=o(W.data);(B=Ot[K])==null||B.call(Ot,K,w)},A.oniceconnectionstatechange=()=>{var K;d("peerConnection.oniceconnectionstatechange => "+A.iceConnectionState);const W=Do(A.iceConnectionState);W!==ie.Connected&&((K=i.onConnectionStateChange)==null||K.call(i,W,`webrtc:ice-${A.iceConnectionState}`))},A.ontrack=W=>{var K;d("peerConnection.ontrack",W),d("CALLBACK: onSrcObjectReady"),(K=i.onSrcObjectReady)==null||K.call(i,W.streams[0])},await A.setRemoteDescription(y),d("set remote description OK");const At=await A.createAnswer();d("create answer OK"),await A.setLocalDescription(At),d("set local description OK"),await p(_,At,S,c),d("start connection OK");async function xt(W,K){if(!u||N.readyState!=="open"){d("Data channel is not ready for sending messages"),F(new Ki("Data channel is not ready for sending messages"));return}try{N.send(K)}catch(w){d("Error sending data channel message",w),F(w)}}return{speak(W){return v(_,S,W)},async disconnect(){var W;if(_){const K=Do(A.iceConnectionState);if(A){if(K===ie.New){Le.stop();return}A.close(),A.oniceconnectionstatechange=null,A.onnegotiationneeded=null,A.onicecandidate=null,A.ontrack=null}try{K===ie.Connected&&await b(_,S)}catch(w){d("Error on close stream connection",w)}(W=i.onAgentActivityStateChange)==null||W.call(i,Pe.Idle),Le.stop()}},sendDataChannelMessage:xt,sessionId:S,streamId:_,streamType:j,interruptAvailable:U??!1,isInterruptible:!0,interrupt(W){if(!U||j!==yt.Fluent||!re||!u||N.readyState!=="open")return!1;const K={type:G.StreamInterrupt,videoId:re,timestamp:Date.now()};return xt(Fe.Interrupt,JSON.stringify(K)),!0}}}var Ji=(n=>(n.V1="v1",n.V2="v2",n))(Ji||{});async function qh(n,e,t,i){const r=n.id;switch(e.version){case"v1":{const{version:s,...a}=e;return Vh(r,a,t,i)}case"v2":{const{version:s,...a}=e;switch(a.transport.provider){case Jr.Livekit:const{createLiveKitStreamingManager:c}=await Promise.resolve().then(()=>Vo);return c(r,a,t);default:throw new Error(`Unsupported transport provider: ${a.transport.provider}`)}}default:throw new Error(`Invalid stream version: ${e.version}`)}}const Kh="cht";function Hh(n){return{transport:{provider:Jr.Livekit},...(n==null?void 0:n.persistentChat)!==void 0&&{chat_persist:n.persistentChat}}}function Wh(n){var r,s;const{streamOptions:e}=n??{},t=((s=(r=n==null?void 0:n.analytics)==null?void 0:r.additionalProperties)==null?void 0:s.plan)!==void 0?{plan:n.analytics.additionalProperties.plan}:void 0;return{...{session_timeout:e==null?void 0:e.sessionTimeout,stream_warmup:e==null?void 0:e.streamWarmup,compatibility_mode:e==null?void 0:e.compatibilityMode,fluent:e==null?void 0:e.fluent},...t&&{end_user_data:t}}}function zh(n,e){return Yr(n.avatar.type)?{version:Ji.V2,...Hh(e)}:{version:Ji.V1,...Wh(e)}}function Jh(n,e,t){t.track("agent-connection-state-change",{state:n,...e&&{reason:e}})}function Gh(n,e,t,i,r){r===yt.Fluent?$h(n,e,t,i,r):Yh(n,e,t,i,r)}function $h(n,e,t,i,r){n===X.Start?i.track("stream-session",{event:"start","stream-type":r}):n===X.Stop&&i.track("stream-session",{event:"stop","stream-type":r,...t})}function Ao(n,e,t,i,r){n===X.Start?t.linkTrack("agent-video",{event:"start",...r,"stream-type":i},"start",[G.StreamVideoCreated]):n===X.Stop&&t.linkTrack("agent-video",{event:"stop","stream-type":i},"done",[G.StreamVideoDone])}function Yh(n,e,t,i,r){n===X.Start?i.linkTrack("agent-video",{event:"start",latency:Lt.get(!0),"stream-type":r},"start",[G.StreamVideoCreated]):n===X.Stop&&i.linkTrack("agent-video",{event:"stop","stream-type":r,...t},"done",[G.StreamVideoDone])}function Qh(n,e,t){const i={call_id:e.callId,name:e.name};if(n===mn.Started){t.track("agent-tool-call",{...i,event:"started"});return}const r=e;t.track("agent-tool-call",{...i,event:n===mn.Done?"done":"error",duration_ms:r.durationMs,extra_keys:r.extra?Object.keys(r.extra).length:0})}function xo(n,e,t,i){return Lt.reset(),So.update(),new Promise(async(r,s)=>{try{let a,c=!1;const d=zh(n,e);t.enrich({"stream-version":d.version.toString()});let o=null;const u=d.version===Ji.V2;a=await qh(n,d,{...e,analytics:t,callbacks:{...e.callbacks,onConnectionStateChange:(l,h)=>{var f,p;(p=(f=e.callbacks).onConnectionStateChange)==null||p.call(f,l,h),Jh(l,h,t),l===ie.Connected&&(a?r(a):c=!0)},onVideoStateChange:(l,h)=>{var f,p;(p=(f=e.callbacks).onVideoStateChange)==null||p.call(f,l),Gh(l,n,h,t,a.streamType)},onAgentActivityStateChange:l=>{var h,f;(f=(h=e.callbacks).onAgentActivityStateChange)==null||f.call(h,l),l===Pe.Talking?(ss.update(),o=p=>{Ao(X.Start,n,t,a.streamType,p),o=null},u||o({latency:Lt.get(!0)})):(ss.reset(),o=null,Ao(X.Stop,n,t,a.streamType))},onFirstAudioDetected:l=>{o==null||o(l)},onStreamReady:()=>{const l=So.get(!0);t.track("agent-chat",{event:"ready",latency:l})},onToolEvent:((l,h)=>{var f,p;(p=(f=e.callbacks).onToolEvent)==null||p.call(f,l,h),Qh(l,h,t)})}},i),c&&r(a)}catch(a){s(a)}})}async function Xh(n,e,t,i,r){var u,l;const s=async()=>{if(Yr(n.avatar.type)){const h=await xo(n,e,i),f=`${Kh}_${h.sessionId}`,p=new Date().toISOString();return{chatResult:{chatMode:me.Functional,chat:{id:f,agent_id:n.id,owner_id:n.owner_id??"",created:p,modified:p,agent_id__created_at:p,agent_id__modified_at:p,chat_mode:me.Functional,messages:[]}},streamingManager:h}}else{const h=new AbortController,f=h.signal;let p;try{const v=wo(n,t,i,e.mode,e.persistentChat,r),b=xo(n,e,i,f).then(_=>(p=_,_)),[k,C]=await Promise.all([v,b]);return{chatResult:k,streamingManager:C}}catch(v){throw h.abort(),p&&await p.disconnect().catch(()=>{}),v}}},{chatResult:a,streamingManager:c}=await s(),{chat:d,chatMode:o}=a;return o&&e.mode!==void 0&&o!==e.mode&&o!==me.Functional?((l=(u=e.callbacks).onError)==null||l.call(u,new ro(o)),c==null||c.disconnect(),{chat:d}):{chat:d,streamingManager:c}}const as="ChatMode.Off and ChatMode.DirectPlayback are not supported for Expressive agents",Lo="callbacks.onSrcObjectReady is required in every chat mode that streams video; it is optional only in ChatMode.TextOnly, ChatMode.Playground and ChatMode.Maintenance",Zh=[ie.Disconnected,ie.Closed,ie.Fail];async function ef(n,e){var At,xt,nn,W,K;const t={...e.callbacks};let i=!0;const r=((At=e.analytics)==null?void 0:At.mixpanelKey)||Yl,s=e.wsURL||$l,a=e.baseURL||ri,c=e.mode||me.Functional;if(!t.onSrcObjectReady&&!Qr(c))throw new pe(Lo);const d={messages:[],chatMode:c},o=ph({token:r,agentId:n,isEnabled:(xt=e.analytics)==null?void 0:xt.enabled,externalId:e.externalId,mixpanelAdditionalProperties:(nn=e.analytics)==null?void 0:nn.additionalProperties}),u=Date.now();bo(()=>{o.track("agent-sdk",{event:"init"},u)});let l=ie.New,h;const f={...t,onError(w,B){var H;o.track("agent-error",{error:Wi(w)}),(H=t.onError)==null||H.call(t,w,B)},onConnectionStateChange(w,B){var H;l=w,(H=t.onConnectionStateChange)==null||H.call(t,w,B)},onStreamCreated(w){var B;h=w,(B=t.onStreamCreated)==null||B.call(t,w)}},p={...e,callbacks:f},v=rh(p.auth,a,f.onError,p.externalId),b=await v.getRuntimeById(n);p.debug=p.debug||((W=b==null?void 0:b.advanced_settings)==null?void 0:W.ui_debug_mode);const k=Yr(b.avatar.type);if(k&&Ln(c))throw new pe(as);k&&Promise.resolve().then(()=>Vo).then(({preloadLiveKit:w})=>w()).catch(()=>{}),o.enrich(ah(b));const{onMessage:C,clearQueue:_}=Eh(o,d,p,b,w=>{var B,H;(B=d.socketManager)==null||B.disconnect(),(H=f.onConnectionStateChange)==null||H.call(f,ie.Disconnected,w)});d.messages=gh(p.initialMessages),d.messages.length&&((K=f.onNewMessage)==null||K.call(f,[...d.messages],"answer"));const y=w=>o.enrich({videoId:w}),T=w=>{var $e;const B=(w==null?void 0:w.type)??"click",H=d.streamingManager;if(!(H!=null&&H.interruptAvailable)||!H.isInterruptible||!H.interrupt(B))return;o.track("agent-video-interrupt",{type:B,video_duration_to_interrupt:ss.get(!0),message_duration_to_interrupt:Lt.get(!0)});const be=d.messages[d.messages.length-1];be&&(be.interrupted=!0,($e=f.onNewMessage)==null||$e.call(f,[...d.messages],"answer"))},S=new Map;function x(w){return async B=>{const H=S.get(w);if(!H)throw new Error(`No handler registered for client tool: ${w}`);const se=JSON.parse(B.payload);return H(se)}}function U(){var w,B,H,se;for(const[be]of S)(B=(w=d.streamingManager)==null?void 0:w.unregisterRpcMethod)==null||B.call(w,be),(se=(H=d.streamingManager)==null?void 0:H.registerRpcMethod)==null||se.call(H,be,x(be))}function F(w,B){var se,be;if(!k)throw new pe("registerClientTool is only available on Expressive (V4) agents");const H=!S.has(w);S.set(w,B),H&&((be=(se=d.streamingManager)==null?void 0:se.registerRpcMethod)==null||be.call(se,w,x(w)))}function A(w){var B,H;S.delete(w),(H=(B=d.streamingManager)==null?void 0:B.unregisterRpcMethod)==null||H.call(B,w)}const N=Date.now();bo(()=>{o.track("agent-sdk",{event:"loaded",...sh(b)},N)});let j,ne=!1;function oe(w){return ne=!1,j=Promise.resolve().then(w).finally(()=>{j=void 0}),j}function Ce(w){return j||oe(()=>Le(w))}async function Le(w){var ot,Fi,Bi,Ve;if(ne)return;d.streamingManager&&await re(),zl(),(ot=f.onConnectionStateChange)==null||ot.call(f,ie.Connecting),Lt.reset(),w&&!i&&(delete d.chat,(Fi=f.onNewMessage)==null||Fi.call(f,[...d.messages],"answer"));const B=Me(d.chatMode)?bh(p.auth,s,{onMessage:C,onError:f.onError},p.externalId):Promise.resolve(void 0),H=es(()=>Xh(b,{...p,mode:d.chatMode,callbacks:{...f,onVideoIdChange:y,onMessage:C},rpcMethods:new Map([...S.keys()].map(Ne=>[Ne,x(Ne)]))},v,o,d.chat),{limit:3,timeout:Jl,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:Ne=>!(Ne instanceof qi&&(Ne.status===429||Ne.status===409||Ne.code==="InsufficientCreditsError")),delayMs:1e3}).catch(async Ne=>{var ti;throw B.then(Vt=>Vt==null?void 0:Vt.disconnect()).catch(()=>{}),Ne instanceof qi&&Ne.code==="NotReadyError"||await Dt(me.Maintenance),(ti=f.onConnectionStateChange)==null||ti.call(f,ie.Fail),Ne}),se=(Bi=d.chat)==null?void 0:Bi.id,[be,{streamingManager:$e,chat:fe}]=await Promise.all([B,H]),we=!!fe&&fe.id!==se;if(fe&&we&&((Ve=f.onNewChat)==null||Ve.call(f,fe.id)),d.streamingManager=$e,d.socketManager=be,d.chat=fe,ne){await re();return}U(),i=!1,o.enrich({chatId:fe==null?void 0:fe.id,streamId:$e==null?void 0:$e.streamId,mode:d.chatMode});const De=(we?fe==null?void 0:fe.chat_mode:void 0)??d.chatMode;if(k&&Ln(De)){console.warn(`[AgentManager] Ignoring chat mode "${De}": ${as}`);return}await Dt(De)}async function re(){var w,B,H;(w=d.socketManager)==null||w.disconnect(),await((B=d.streamingManager)==null?void 0:B.disconnect()),delete d.streamingManager,delete d.socketManager,h=void 0,(H=f.onConnectionStateChange)==null||H.call(f,ie.Disconnected)}function Me(w){return!k&&w!==me.DirectPlayback}function jt(w){const B=!Ln(w);return(!Me(w)||!!d.socketManager)&&(!B||!!d.chat)}async function Dt(w){var B;if(w!==d.chatMode){o.track("agent-mode-change",{mode:w}),d.chatMode=w;const H=!!d.streamingManager||!!d.socketManager;(w!==me.Functional||H&&!jt(w))&&await re(),(B=f.onModeChange)==null||B.call(f,w)}}async function Ot(w){if(k&&Ln(w))throw new pe(as);await Dt(w)}return{agent:b,getStreamType:()=>{var w;return(w=d.streamingManager)==null?void 0:w.streamType},isInterruptAvailable:()=>{var w;return((w=d.streamingManager)==null?void 0:w.interruptAvailable)??!1},starterMessages:[...b.starter_message??[]],getSttToken:()=>v.getSttToken(b.id),getChatMode:()=>d.chatMode,getConnectionState:()=>l,getSessionInfo:()=>h,changeMode:Ot,enrichAnalytics:w=>o.enrich(w),async connect(){if(!f.onSrcObjectReady&&!Qr(d.chatMode))throw new pe(Lo);if(j)return ne=!1,j;if(d.streamingManager&&!Zh.includes(l))throw new pe("Already connected; call disconnect() first");await Ce(!0),d.streamingManager&&o.track("agent-chat",{event:"connect",mode:d.chatMode})},async reconnect(){if(j)throw new pe("A connect() is in flight; wait for it before calling reconnect()");return oe(async()=>{const w=d.streamingManager;let B;if(k&&(w!=null&&w.reconnect))try{await w.reconnect()}catch(H){const se=Wi(H);B=se.code??se.kind,await re(),await Le(!1)}else await re(),await Le(!1);o.track("agent-chat",{event:"reconnect",mode:d.chatMode,success:!!d.streamingManager,...B&&{fallbackReason:B}})})},async disconnect(){j&&(ne=!0),await re(),o.track("agent-chat",{event:"disconnect",mode:d.chatMode})},publishMicrophoneStream(w){var B;return(B=d.streamingManager)!=null&&B.publishMicrophoneStream?d.streamingManager.publishMicrophoneStream(w):Promise.reject(new pe("publishMicrophoneStream is only available on Expressive (V4) agents, after connect()"))},setSttLanguage(w){return!k||!d.streamingManager?Promise.reject(new pe("setSttLanguage is only available on Expressive (V4) agents, after connect()")):(o.track("agent-stt-language-change",{language:w}),d.streamingManager.sendDataChannelMessage(Fe.SttLanguage,JSON.stringify({language:w})))},sendDataChannelMessage(w,B){return!k||!d.streamingManager?Promise.reject(new pe("sendDataChannelMessage is only available on Expressive (V4) agents, after connect()")):(o.track("agent-data-message",{topic:w}),d.streamingManager.sendDataChannelMessage(w,JSON.stringify(B)))},unpublishMicrophoneStream(){var w;return(w=d.streamingManager)!=null&&w.unpublishMicrophoneStream?d.streamingManager.unpublishMicrophoneStream():Promise.resolve()},replaceMicrophoneTrack(w){var B;return(B=d.streamingManager)!=null&&B.replaceMicrophoneTrack?d.streamingManager.replaceMicrophoneTrack(w):Promise.reject(new pe("replaceMicrophoneTrack is only available on Expressive (V4) agents, after connect()"))},publishCameraStream(w){var B;return(B=d.streamingManager)!=null&&B.publishCameraStream?d.streamingManager.publishCameraStream(w):Promise.reject(new pe("publishCameraStream is only available on Expressive (V4) agents, after connect()"))},unpublishCameraStream(){var w;return(w=d.streamingManager)!=null&&w.unpublishCameraStream?d.streamingManager.unpublishCameraStream():Promise.resolve()},async chat(w){var be,$e,fe;const B=()=>{if(Ln(d.chatMode))throw new pe(`${d.chatMode} is enabled, chat is disabled`);if(w.length>=no)throw new pe(`Message cannot be more than ${no} characters`);if(w.length===0)throw new pe("Message cannot be empty");if(d.chatMode===me.Maintenance)throw new pe("Chat is in maintenance mode");if(![me.TextOnly,me.Playground].includes(d.chatMode)){if(!d.streamingManager)throw new pe("Streaming manager is not initialized");if(!d.chat)throw new pe("Chat is not initialized")}},H=async()=>{var we;if(!d.chat){const De=await wo(b,v,o,d.chatMode,p.persistentChat);if(!De.chat)throw new io(d.chatMode,!!p.persistentChat);d.chat=De.chat,(we=f.onNewChat)==null||we.call(f,d.chat.id)}return d.chat.id},se=async(we,De)=>{const ot=d.chatMode===me.Playground;return es(k&&!ot?async()=>{var Ve;return await((Ve=d.streamingManager)==null?void 0:Ve.sendDataChannelMessage(Fe.Chat,w)),Promise.resolve({})}:async()=>{var Ve,Ne;return v.chat(b.id,De,{chatMode:d.chatMode,streamId:(Ve=d.streamingManager)==null?void 0:Ve.streamId,sessionId:(Ne=d.streamingManager)==null?void 0:Ne.sessionId,messages:we.map(({matches:ti,createdAt:Vt,...ni})=>({...ni,created_at:Vt??new Date().toISOString()}))},{...Co(d.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:Ve=>{var Vt,ni,zr;const Ne=(Vt=Ve==null?void 0:Ve.message)==null?void 0:Vt.includes("missing or invalid session_id");return!((ni=Ve==null?void 0:Ve.message)==null?void 0:ni.includes("Stream Error"))&&!Ne?((zr=f.onError)==null||zr.call(f,Ve),!1):!0},onRetry:async()=>{await re(),await Ce(!1)}})};try{_(),B(),d.messages.push({id:pn(),role:"user",content:w,parts:si(w),createdAt:new Date(Lt.update()).toISOString()}),(be=f.onNewMessage)==null||be.call(f,[...d.messages],"user");const we=await H(),De=await se([...d.messages],we);return De.result&&d.messages.push({id:pn(),role:"assistant",content:De.result,parts:si(De.result),createdAt:new Date().toISOString(),context:De.context,matches:De.matches}),o.track("agent-message-send",{event:"success",messages:d.messages.length+1}),De.result&&(($e=f.onNewMessage)==null||$e.call(f,[...d.messages],"answer"),o.track("agent-message-received",{latency:Lt.get(!0),messages:d.messages.length})),De}catch(we){throw((fe=d.messages[d.messages.length-1])==null?void 0:fe.role)==="assistant"&&d.messages.pop(),o.track("agent-message-send",{event:"error",messages:d.messages.length,error:Wi(we)}),we}},async rate(w,B,H){var $e,fe,we,De;const se=d.messages.find(ot=>ot.id===w);if(d.chat){if(!se)throw new pe("Message not found")}else throw new pe("Chat is not initialized");const be=(($e=se.matches)==null?void 0:$e.map(ot=>[ot.document_id,ot.id]))??[];return o.track("agent-rate",{event:H?"update":"create",thumb:B===1?"up":"down",knowledge_id:((fe=b.knowledge)==null?void 0:fe.id)??"",matches:be,score:B}),H?v.updateRating(b.id,d.chat.id,H,{knowledge_id:((we=b.knowledge)==null?void 0:we.id)??"",message_id:w,matches:be,score:B}):v.createRating(b.id,d.chat.id,{knowledge_id:((De=b.knowledge)==null?void 0:De.id)??"",message_id:w,matches:be,score:B})},async deleteRate(w){if(!d.chat)throw new pe("Chat is not initialized");return o.track("agent-rate-delete",{type:"text"}),v.deleteRating(b.id,d.chat.id,w)},async submitFeedback(w,B){if(!d.chat)throw new pe("Chat is not initialized");return o.track("agent-feedback",{rating:w,hasAnswer:!!B}),v.submitFeedback(b.id,d.chat.id,{rating:w,answer:B})},async speak(w){var fe,we;function B(){return typeof w=="string"?{type:"text",input:w,ssml:!1}:w.type==="text"&&!w.provider?{type:"text",input:w.input,ssml:w.ssml,should_queue_speaks:w.should_queue_speaks,sentiment:w.sentiment}:w}const H=Qr(d.chatMode);if(!H&&!d.streamingManager)throw new pe("Please connect to the agent first");const se=B();o.track("agent-speak",se),Lt.update(),d.messages&&se.type==="text"&&(d.messages.push({id:pn(),role:"assistant",content:se.input,parts:si(se.input),createdAt:new Date().toISOString()}),(fe=f.onNewMessage)==null||fe.call(f,[...d.messages],"answer"));const be={duration:0,videoId:"",status:"success"};return H||!d.streamingManager?be:await d.streamingManager.speak({script:se,metadata:{chat_id:(we=d.chat)==null?void 0:we.id,agent_id:b.id}})??be},interrupt:T,registerClientTool:F,unregisterClientTool:A}}function tf(n){return n.some(e=>e.executionMode==="blocking")}function nf(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone??""}catch{return""}}function rf(){if(typeof navigator>"u")return"";const n=navigator.userAgent??"",e=(navigator.platform??"").toLowerCase();let t="Unknown";/android/i.test(n)?t="Android":/iphone|ipad|ipod/i.test(n)?t="iOS":e.includes("win")?t="Windows":e.includes("mac")?t="Mac OS X":e.includes("linux")&&(t="Linux");const i=t==="Android"||t==="iOS"||/Mobi/i.test(n);return`${t}, ${i?"Mobile":"Desktop"}`}function sf(){const n={},e=nf();e&&(n.timezone=e);const t=rf();return t&&(n.device=t),n}function af(n,e,t,i){const r=ts(n,`${e}/v2/agents/${t}`,i);return{async createStream(s){return r.post("/sessions",s)}}}const of={[G.ChatAnswer]:He.Answer,[G.ChatPartial]:He.Partial},No=2e4,cf=[];let os;function Uo(){return os??(os=Promise.resolve().then(()=>Ny).catch(()=>{throw os=void 0,new Error("LiveKit client is required for this streaming manager. Please install it using: npm install livekit-client")})),os}function df(){Uo().catch(()=>{})}const uf={excellent:vt.Strong,good:vt.Strong,poor:vt.Weak,lost:vt.Unknown,unknown:vt.Unknown},oi=(n="Stream Error")=>new Ki(n),lf=new TextDecoder;function hf(n){return{callId:n.call_id,name:n.name,input:n.input,...n.output!==void 0?{output:n.output}:{},interruptible:n.interruptible===!0,executionMode:n.execution_mode==="async"?"async":"blocking",...n.turn_id!==void 0?{turnId:n.turn_id}:{},timestamp:n.timestamp}}function Fo(n){return{callId:n.call_id,name:n.name,input:n.input,output:n.output,durationMs:n.duration_ms,extra:n.extra,timestamp:n.timestamp}}function ff(n){var t;const e=(t=n.extra)==null?void 0:t.error;return typeof(e==null?void 0:e.message)=="string"&&e.message?e.message:typeof n.output=="string"&&n.output?n.output:void 0}function mf(n){const e=ff(n);return{...Fo(n),output:n.output,...e!==void 0?{error:e}:{}}}function Bo(n,e){return async t=>{try{return await e(t)}catch(i){throw i instanceof n?i:new n(n.ErrorCode.APPLICATION_ERROR,(i==null?void 0:i.message)||"Client tool failed")}}}function jo(n,e,t){var i,r;throw e("Failed to connect to LiveKit room:",n),(i=t.onConnectionStateChange)==null||i.call(t,ie.Fail,"internal:init-error"),(r=t.onError)==null||r.call(t,n,{}),n}async function pf(n,e,t){var jl;const i=Po(t.debug||!1,"LiveKitStreamingManager"),{Room:r,RoomEvent:s,ConnectionState:a,RpcError:c,Track:d}=await Uo(),{callbacks:o,auth:u,baseURL:l,analytics:h}=t;let f=null,p=!1;const v=yt.Fluent;let b=null;const k={isPublishing:!1,publication:null},C={isPublishing:!1,publication:null};let _=null,y=null,T=null,S=!1;f=new r({adaptiveStream:!1,dynacast:!0});for(const[E,M]of t.rpcMethods??[])f.registerRpcMethod(E,Bo(c,M));let x=null,U=Pe.Idle,F=!0;const A=new Map;let N=null,j=null;const ne=af(u,l||ri,n,o.onError);let oe,Ce,Le,re=!0;try{const E=await ne.createStream({transport:e.transport,chat_persist:e.chat_persist??!1,verbose:t.verbose??!1}),{id:M,session_token:V,session_url:z,interrupt_enabled:he}=E;(jl=o.onStreamCreated)==null||jl.call(o,{sessionId:M,streamId:M,agentId:n}),oe=M,Ce=V,Le=z,re=he??!0,await f.prepareConnection(Le,Ce)}catch(E){jo(E,i,o)}if(!Le||!Ce||!oe)return Promise.reject(new Error("Failed to initialize LiveKit stream"));const Me=E=>{var M;return(M=o.onError)==null?void 0:M.call(o,E,{sessionId:oe})};f.on(s.ConnectionStateChanged,Ot).on(s.ConnectionQualityChanged,At).on(s.ParticipantConnected,xt).on(s.ParticipantDisconnected,nn).on(s.TrackSubscribed,w).on(s.TrackUnsubscribed,B).on(s.DataReceived,Vt).on(s.MediaDevicesError,ni).on(s.TranscriptionReceived,jt).on(s.EncryptionError,zr).on(s.TrackSubscriptionFailed,Uy);function jt(E,M){M!=null&&M.isLocal&&Lt.update()}async function Dt(){const E=sf();if(!(!f||Object.keys(E).length===0))try{await f.localParticipant.setAttributes(E)}catch(M){i("Failed to set user context attributes",M)}}try{await f.connect(Le,Ce),i("LiveKit room joined successfully"),Dt(),x=setTimeout(()=>{i(`Track subscription timeout - no track subscribed within ${No/1e3} seconds after connect`),x=null;const E=oi("Track subscription timeout");h.track("connectivity-error",{error:Wi(E),sessionId:oe}),Me(E),$a("internal:track-subscription-timeout")},No)}catch(E){jo(E,i,o)}h.enrich({"stream-type":v});function Ot(E){var M,V,z,he;switch(i("Connection state changed:",E),E){case a.Connecting:i("CALLBACK: onConnectionStateChange(Connecting)"),(M=o.onConnectionStateChange)==null||M.call(o,ie.Connecting,"livekit:connecting");break;case a.Connected:i("LiveKit room connected successfully"),p=!0;break;case a.Disconnected:i("LiveKit room disconnected"),p=!1,S=!1,k.publication=null,C.publication=null,(V=o.onConnectionStateChange)==null||V.call(o,ie.Disconnected,j??"livekit:disconnected");break;case a.Reconnecting:i("LiveKit room reconnecting..."),(z=o.onConnectionStateChange)==null||z.call(o,ie.Connecting,"livekit:reconnecting");break;case a.SignalReconnecting:i("LiveKit room signal reconnecting..."),(he=o.onConnectionStateChange)==null||he.call(o,ie.Connecting,"livekit:signal-reconnecting");break}}function At(E,M){var V;i("Connection quality:",E),M!=null&&M.isLocal&&((V=o.onConnectivityStateChange)==null||V.call(o,uf[E]))}function xt(E){i("Participant connected:",E.identity)}function nn(E){i("Participant disconnected:",E.identity),$a("livekit:participant-disconnected")}function W(){var E;T!==X.Start&&(i("CALLBACK: onVideoStateChange(Start)"),T=X.Start,(E=o.onVideoStateChange)==null||E.call(o,X.Start))}function K(E){var M;T!==X.Stop&&(i("CALLBACK: onVideoStateChange(Stop)"),T=X.Stop,(M=o.onVideoStateChange)==null||M.call(o,X.Stop,E))}function w(E,M,V){var he,ke,ue;i(`Track subscribed: ${E.kind} from ${V.identity}`);const z=E.mediaStreamTrack;if(!z){i(`No mediaStreamTrack available for ${E.kind}`);return}b?(b.addTrack(z),i(`Added ${E.kind} track to shared MediaStream`)):(b=new MediaStream([z]),i(`Created shared MediaStream with ${E.kind} track`)),E.kind==="audio"&&(y=Oh(()=>E.getRTCStatsReport(),({sttLatency:Ue,serviceLatency:nt})=>{var Vl,ql,Kl;const ji=Lt.get(!0);let Vi=0;if(Ue){const Hl=((ql=(Vl=_==null?void 0:_.getReport())==null?void 0:Vl.webRTCStats)==null?void 0:ql.avgRtt)??0;Vi=Hl>0?Math.round(Hl*1e3):0}const ii=ji>0?ji+(Ue??0)+Vi:void 0,rn=ii!==void 0&&nt!==void 0?ii-nt:void 0;(Kl=o.onFirstAudioDetected)==null||Kl.call(o,{latency:ii,networkLatency:rn})})),E.kind==="video"&&((he=o.onStreamReady)==null||he.call(o),i("CALLBACK: onSrcObjectReady"),(ke=o.onSrcObjectReady)==null||ke.call(o,b),S||(S=!0,i("CALLBACK: onConnectionStateChange(Connected)"),(ue=o.onConnectionStateChange)==null||ue.call(o,ie.Connected,"livekit:track-subscribed")),_=Mo(()=>E.getRTCStatsReport(),()=>p,Wl,(Ue,nt)=>{i(`Video state change: ${Ue}`),Ue===X.Start?(x&&(clearTimeout(x),x=null,i("Track subscription timeout cleared")),W()):Ue===X.Stop&&K(nt)}),_.start())}function B(E,M,V){i(`Track unsubscribed: ${E.kind} from ${V.identity}`),E.kind==="audio"&&(y==null||y.destroy(),y=null),E.kind==="video"&&(K((_==null?void 0:_.getReport())??void 0),_==null||_.stop(),_=null)}function H(E,M){var z;const V=of[E];V&&((z=o.onMessage)==null||z.call(o,V,{event:V,...M}))}function se(E,M){var V,z,he,ke;if(E===G.ToolCallStarted){const ue=hf(M);A.set(ue.callId,{call:{callId:ue.callId,name:ue.name,executionMode:ue.executionMode},interruptible:ue.interruptible,turnId:ue.turnId??N}),fe(),we(),U=Pe.ToolActive,(V=o.onAgentActivityStateChange)==null||V.call(o,Pe.ToolActive),(z=o.onToolEvent)==null||z.call(o,mn.Started,ue);return}if(E===G.ToolCallDone){const ue=Fo(M);be(ue.callId),(he=o.onToolEvent)==null||he.call(o,mn.Done,ue);return}if(E===G.ToolCallError){const ue=mf(M);be(ue.callId),(ke=o.onToolEvent)==null||ke.call(o,mn.Error,ue)}}function be(E){A.delete(E)&&(fe(),we())}function $e(E){let M=!1;for(const[V,z]of A)z.call.executionMode==="blocking"&&(E!==null&&z.turnId!==null&&z.turnId!==E||(A.delete(V),M=!0));M&&(fe(),we())}function fe(){var M;const E=![...A.values()].some(({call:V})=>V.executionMode==="blocking");E!==F&&(F=E,(M=o.onInterruptibleChange)==null||M.call(o,E))}function we(){var E;(E=o.onRunningToolCallsChange)==null||E.call(o,A.size===0?cf:[...A.values()].map(({call:M})=>M))}function De(E,M){var V,z,he;if(E===G.StreamVideoCreated){U=Pe.Talking,(V=o.onAgentActivityStateChange)==null||V.call(o,Pe.Talking),y==null||y.arm({sttLatency:(z=M==null?void 0:M.stt)==null?void 0:z.latency,serviceLatency:M==null?void 0:M.serviceLatency});return}if(A.size>0){U!==Pe.ToolActive&&(U=Pe.ToolActive,(he=o.onAgentActivityStateChange)==null||he.call(o,Pe.ToolActive));return}}function ot(E,M){var ke,ue,Ue,nt;const V=((ue=(ke=_==null?void 0:_.getReport())==null?void 0:ke.webRTCStats)==null?void 0:ue.avgRtt)??0,z=V>0?Math.round(V/2*1e3):0,he={...M,downstreamNetworkLatency:z};t.debug&&((Ue=M==null?void 0:M.metadata)!=null&&Ue.sentiment)&&(he.sentiment={id:M.metadata.sentiment.id,name:M.metadata.sentiment.sentiment}),(nt=o.onMessage)==null||nt.call(o,E,he),De(E,M)}function Fi(E,M){var V;(V=o.onMessage)==null||V.call(o,He.Transcribe,{event:He.Transcribe,...M}),queueMicrotask(()=>{var z;(z=o.onAgentActivityStateChange)==null||z.call(o,Pe.Loading)})}function Bi(E,M){var V;N=(M==null?void 0:M.turn_id)??null,U=Pe.Loading,(V=o.onAgentActivityStateChange)==null||V.call(o,Pe.Loading)}function Ve(E,M){var z;const V=(M==null?void 0:M.turn_id)??null;N!==null&&V!==null&&V<N||($e(V),U=Pe.Idle,(z=o.onAgentActivityStateChange)==null||z.call(o,Pe.Idle))}function Ne(E,M){j=(M==null?void 0:M.reason)??null}const ti={[G.ChatAnswer]:H,[G.ChatPartial]:H,[G.ToolCallStarted]:se,[G.ToolCallDone]:se,[G.ToolCallError]:se,[G.StreamVideoCreated]:ot,[G.StreamVideoDone]:ot,[G.StreamVideoError]:ot,[G.StreamVideoRejected]:ot,[G.ChatAudioTranscribed]:Fi,[G.TurnStarted]:Bi,[G.TurnEnded]:Ve,[G.StreamDone]:Ne,[G.StreamFailed]:Ne};function Vt(E,M,V,z){const he=lf.decode(E);let ke;try{ke=JSON.parse(he)}catch(nt){i("Failed to parse data channel message:",nt);return}const ue=z||ke.subject;if(i("Data received:",{subject:ue,data:ke}),!ue)return;const Ue=ti[ue];if(Ue)try{Ue(ue,ke)}catch(nt){console.warn("[LiveKitStreamingManager] Data channel handler failed",{subject:ue,error:nt})}}function ni(E){i("Media devices error:",E),Me(oi())}function zr(E){i("Encryption error:",E),Me(oi())}function Uy(E,M,V){i("Track subscription failed:",{trackSid:E,participant:M,reason:V})}function Fy(E,M,V){for(const[z,he]of V)if(he.source===M&&he.track){const ke=he.track.mediaStreamTrack;if(ke===E||(ke==null?void 0:ke.id)===E.id)return he}return null}async function Fl(E,M,V,z,he,ke){var ji,Vi,ii;if(!p||!f)throw i(`Room is not connected, cannot publish ${z} stream`),new Error("Room is not connected");if(E.isPublishing){i(`${z} publish already in progress, skipping`);return}const ue=V(M);if(ue.length===0)throw new Error(`No ${z} track found in the provided MediaStream`);const Ue=ue[0],nt=Fy(Ue,z,he());if(nt){i(`${z} track is already published, skipping`,{trackId:Ue.id,publishedTrackId:(Vi=(ji=nt.track)==null?void 0:ji.mediaStreamTrack)==null?void 0:Vi.id}),E.publication=nt;return}if((ii=E.publication)!=null&&ii.track){const rn=E.publication.track.mediaStreamTrack;rn!==Ue&&(rn==null?void 0:rn.id)!==Ue.id&&(i(`Unpublishing existing ${z} track before publishing new one`),await ke())}i(`Publishing ${z} track from provided MediaStream`,{trackId:Ue.id}),E.isPublishing=!0;try{E.publication=await f.localParticipant.publishTrack(Ue,{source:z}),i(`${z} track published successfully`,{trackSid:E.publication.trackSid})}catch(rn){throw i(`Failed to publish ${z} track:`,rn),rn}finally{E.isPublishing=!1}}async function Bl(E,M){if(!(!E.publication||!E.publication.track))try{f&&(await f.localParticipant.unpublishTrack(E.publication.track,!1),i(`${M} track unpublished`))}catch(V){i(`Error unpublishing ${M} track:`,V)}finally{E.publication=null}}async function By(E){return Fl(k,E,M=>M.getAudioTracks(),d.Source.Microphone,()=>f.localParticipant.audioTrackPublications,za)}async function za(){return Bl(k,"Microphone")}async function jy(E){if(!p||!f)throw i("Cannot replace microphone track: room is not connected"),new Error("Room is not connected");if(E.kind!=="audio")throw i("Cannot replace microphone track: not an audio track",{kind:E.kind}),new Error("Microphone track must be an audio track");if(k.isPublishing)throw i("Cannot replace microphone track: publish in progress"),new Error("Microphone publish in progress");const M=k.publication;if(!M||!M.track)throw i("Cannot replace microphone track: no publication to replace"),new Error("No microphone publication to replace");try{k.isPublishing=!0,await M.track.replaceTrack(E),i("Microphone track replaced",{trackId:E.id,trackSid:M.trackSid})}finally{k.isPublishing=!1}}async function Vy(E){return Fl(C,E,M=>M.getVideoTracks(),d.Source.Camera,()=>f.localParticipant.videoTrackPublications,Ja)}async function Ja(){return Bl(C,"Camera")}function qy(){b&&(b.getTracks().forEach(E=>E.stop()),b=null)}async function Ga(E,M){if(!p||!f){i("Room is not connected for sending messages"),Me(oi());return}try{await f.localParticipant.sendText(M,{topic:E}),i("Message sent successfully:",M)}catch(V){i("Failed to send message:",V),Me(oi())}}async function $a(E){var M,V;x&&(clearTimeout(x),x=null),y==null||y.destroy(),y=null,f&&((M=o.onConnectionStateChange)==null||M.call(o,ie.Disconnecting,E),await Promise.all([za(),Ja()]),await f.disconnect()),qy(),p=!1,S=!1,A.size>0&&(A.clear(),fe(),we()),N=null,(V=o.onAgentActivityStateChange)==null||V.call(o,Pe.Idle),U=Pe.Idle}return{speak(E){const M=typeof E=="string"?E:JSON.stringify(E);return Ga(Fe.Speak,M)},disconnect:()=>$a("user:disconnect"),async reconnect(){var E,M;if((f==null?void 0:f.state)===a.Connected){i("Room is already connected");return}if(!f||!Le||!Ce)throw i("Cannot reconnect: missing room, URL or token"),new Error("Cannot reconnect: session not available");i("Reconnecting to LiveKit room, state:",f.state),S=!1,j=null,(E=o.onConnectionStateChange)==null||E.call(o,ie.Connecting,"user:reconnect");try{if(await f.connect(Le,Ce),i("Room reconnected"),p=!0,f.remoteParticipants.size===0){if(i("Waiting for agent to join..."),!await new Promise(z=>{const he=setTimeout(()=>{f==null||f.off(s.ParticipantConnected,ke),z(!1)},5e3),ke=()=>{clearTimeout(he),f==null||f.off(s.ParticipantConnected,ke),z(!0)};f==null||f.on(s.ParticipantConnected,ke)}))throw i("Agent did not join within timeout"),await f.disconnect(),new Error("Agent did not rejoin the room");i("Agent joined, reconnection successful")}}catch(V){throw i("Failed to reconnect:",V),(M=o.onConnectionStateChange)==null||M.call(o,ie.Fail,"user:reconnect-failed"),V}},sendDataChannelMessage:Ga,publishMicrophoneStream:By,unpublishMicrophoneStream:za,replaceMicrophoneTrack:jy,publishCameraStream:Vy,unpublishCameraStream:Ja,interrupt(E){return E==="text"||!p||!f?!1:(Ga(Fe.Interrupt,""),!0)},registerRpcMethod(E,M){f==null||f.registerRpcMethod(E,Bo(c,M))},unregisterRpcMethod(E){f==null||f.unregisterRpcMethod(E)},sessionId:oe,streamId:oe,streamType:v,interruptAvailable:re,get isInterruptible(){return F}}}const Vo=Object.freeze(Object.defineProperty({__proto__:null,createLiveKitStreamingManager:pf,preloadLiveKit:df},Symbol.toStringTag,{value:"Module"}));function gf(n,e){return e.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(i){if(i!=="default"&&!(i in n)){var r=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(n,i,r.get?r:{enumerable:!0,get:function(){return t[i]}})}})}),Object.freeze(n)}var vf=Object.defineProperty,yf=(n,e,t)=>e in n?vf(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,qo=(n,e,t)=>yf(n,typeof e!="symbol"?e+"":e,t);class Ae{constructor(){qo(this,"_locking"),qo(this,"_locks"),this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){this._locks+=1;let e;const t=new Promise(r=>e=()=>{this._locks-=1,r()}),i=this._locking.then(()=>e);return this._locking=this._locking.then(()=>t),i}}function Ee(n,e){if(!n)throw new Error(e)}const bf=34028234663852886e22,kf=-34028234663852886e22,Tf=4294967295,Sf=2147483647,Cf=-2147483648;function Gi(n){if(typeof n!="number")throw new Error("invalid int 32: "+typeof n);if(!Number.isInteger(n)||n>Sf||n<Cf)throw new Error("invalid int 32: "+n)}function cs(n){if(typeof n!="number")throw new Error("invalid uint 32: "+typeof n);if(!Number.isInteger(n)||n>Tf||n<0)throw new Error("invalid uint 32: "+n)}function Ko(n){if(typeof n!="number")throw new Error("invalid float 32: "+typeof n);if(Number.isFinite(n)&&(n>bf||n<kf))throw new Error("invalid float 32: "+n)}const Ho=Symbol("@bufbuild/protobuf/enum-type");function wf(n){const e=n[Ho];return Ee(e,"missing enum type on enum object"),e}function Wo(n,e,t,i){n[Ho]=zo(e,t.map(r=>({no:r.no,name:r.name,localName:n[r.no]})))}function zo(n,e,t){const i=Object.create(null),r=Object.create(null),s=[];for(const a of e){const c=Jo(a);s.push(c),i[a.name]=c,r[a.no]=c}return{typeName:n,values:s,findName(a){return i[a]},findNumber(a){return r[a]}}}function Ef(n,e,t){const i={};for(const r of e){const s=Jo(r);i[s.localName]=s.no,i[s.no]=s.localName}return Wo(i,n,e),i}function Jo(n){return"localName"in n?n:Object.assign(Object.assign({},n),{localName:n.name})}class ds{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){const i=this.getType(),r=i.runtime.bin,s=r.makeReadOptions(t);return r.readMessage(this,s.readerFactory(e),e.byteLength,s),this}fromJson(e,t){const i=this.getType(),r=i.runtime.json,s=r.makeReadOptions(t);return r.readMessage(i,e,s,this),this}fromJsonString(e,t){let i;try{i=JSON.parse(e)}catch(r){throw new Error("cannot decode ".concat(this.getType().typeName," from JSON: ").concat(r instanceof Error?r.message:String(r)))}return this.fromJson(i,t)}toBinary(e){const t=this.getType(),i=t.runtime.bin,r=i.makeWriteOptions(e),s=r.writerFactory();return i.writeMessage(this,s,r),s.finish()}toJson(e){const t=this.getType(),i=t.runtime.json,r=i.makeWriteOptions(e);return i.writeMessage(this,r)}toJsonString(e){var t;const i=this.toJson(e);return JSON.stringify(i,null,(t=e==null?void 0:e.prettySpaces)!==null&&t!==void 0?t:0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}}function Rf(n,e,t,i){var r;const s=(r=i==null?void 0:i.localName)!==null&&r!==void 0?r:e.substring(e.lastIndexOf(".")+1),a={[s]:function(c){n.util.initFields(this),n.util.initPartial(c,this)}}[s];return Object.setPrototypeOf(a.prototype,new ds),Object.assign(a,{runtime:n,typeName:e,fields:n.util.newFieldList(t),fromBinary(c,d){return new a().fromBinary(c,d)},fromJson(c,d){return new a().fromJson(c,d)},fromJsonString(c,d){return new a().fromJsonString(c,d)},equals(c,d){return n.util.equals(a,c,d)}}),a}function Pf(){let n=0,e=0;for(let i=0;i<28;i+=7){let r=this.buf[this.pos++];if(n|=(r&127)<<i,(r&128)==0)return this.assertBounds(),[n,e]}let t=this.buf[this.pos++];if(n|=(t&15)<<28,e=(t&112)>>4,(t&128)==0)return this.assertBounds(),[n,e];for(let i=3;i<=31;i+=7){let r=this.buf[this.pos++];if(e|=(r&127)<<i,(r&128)==0)return this.assertBounds(),[n,e]}throw new Error("invalid varint")}function us(n,e,t){for(let s=0;s<28;s=s+7){const a=n>>>s,c=!(!(a>>>7)&&e==0),d=(c?a|128:a)&255;if(t.push(d),!c)return}const i=n>>>28&15|(e&7)<<4,r=e>>3!=0;if(t.push((r?i|128:i)&255),!!r){for(let s=3;s<31;s=s+7){const a=e>>>s,c=!!(a>>>7),d=(c?a|128:a)&255;if(t.push(d),!c)return}t.push(e>>>31&1)}}const $i=4294967296;function Go(n){const e=n[0]==="-";e&&(n=n.slice(1));const t=1e6;let i=0,r=0;function s(a,c){const d=Number(n.slice(a,c));r*=t,i=i*t+d,i>=$i&&(r=r+(i/$i|0),i=i%$i)}return s(-24,-18),s(-18,-12),s(-12,-6),s(-6),e?Yo(i,r):ls(i,r)}function _f(n,e){let t=ls(n,e);const i=t.hi&2147483648;i&&(t=Yo(t.lo,t.hi));const r=$o(t.lo,t.hi);return i?"-"+r:r}function $o(n,e){if({lo:n,hi:e}=If(n,e),e<=2097151)return String($i*e+n);const t=n&16777215,i=(n>>>24|e<<8)&16777215,r=e>>16&65535;let s=t+i*6777216+r*6710656,a=i+r*8147497,c=r*2;const d=1e7;return s>=d&&(a+=Math.floor(s/d),s%=d),a>=d&&(c+=Math.floor(a/d),a%=d),c.toString()+Qo(a)+Qo(s)}function If(n,e){return{lo:n>>>0,hi:e>>>0}}function ls(n,e){return{lo:n|0,hi:e|0}}function Yo(n,e){return e=~e,n?n=~n+1:e+=1,ls(n,e)}const Qo=n=>{const e=String(n);return"0000000".slice(e.length)+e};function Xo(n,e){if(n>=0){for(;n>127;)e.push(n&127|128),n=n>>>7;e.push(n)}else{for(let t=0;t<9;t++)e.push(n&127|128),n=n>>7;e.push(1)}}function Mf(){let n=this.buf[this.pos++],e=n&127;if((n&128)==0)return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<7,(n&128)==0)return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<14,(n&128)==0)return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<21,(n&128)==0)return this.assertBounds(),e;n=this.buf[this.pos++],e|=(n&15)<<28;for(let t=5;(n&128)!==0&&t<10;t++)n=this.buf[this.pos++];if((n&128)!=0)throw new Error("invalid varint");return this.assertBounds(),e>>>0}function Df(){const n=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof n.getBigInt64=="function"&&typeof n.getBigUint64=="function"&&typeof n.setBigInt64=="function"&&typeof n.setBigUint64=="function"&&(typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){const r=BigInt("-9223372036854775808"),s=BigInt("9223372036854775807"),a=BigInt("0"),c=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(d){const o=typeof d=="bigint"?d:BigInt(d);if(o>s||o<r)throw new Error("int64 invalid: ".concat(d));return o},uParse(d){const o=typeof d=="bigint"?d:BigInt(d);if(o>c||o<a)throw new Error("uint64 invalid: ".concat(d));return o},enc(d){return n.setBigInt64(0,this.parse(d),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},uEnc(d){return n.setBigInt64(0,this.uParse(d),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},dec(d,o){return n.setInt32(0,d,!0),n.setInt32(4,o,!0),n.getBigInt64(0,!0)},uDec(d,o){return n.setInt32(0,d,!0),n.setInt32(4,o,!0),n.getBigUint64(0,!0)}}}const t=r=>Ee(/^-?[0-9]+$/.test(r),"int64 invalid: ".concat(r)),i=r=>Ee(/^[0-9]+$/.test(r),"uint64 invalid: ".concat(r));return{zero:"0",supported:!1,parse(r){return typeof r!="string"&&(r=r.toString()),t(r),r},uParse(r){return typeof r!="string"&&(r=r.toString()),i(r),r},enc(r){return typeof r!="string"&&(r=r.toString()),t(r),Go(r)},uEnc(r){return typeof r!="string"&&(r=r.toString()),i(r),Go(r)},dec(r,s){return _f(r,s)},uDec(r,s){return $o(r,s)}}}const ge=Df();var P;(function(n){n[n.DOUBLE=1]="DOUBLE",n[n.FLOAT=2]="FLOAT",n[n.INT64=3]="INT64",n[n.UINT64=4]="UINT64",n[n.INT32=5]="INT32",n[n.FIXED64=6]="FIXED64",n[n.FIXED32=7]="FIXED32",n[n.BOOL=8]="BOOL",n[n.STRING=9]="STRING",n[n.BYTES=12]="BYTES",n[n.UINT32=13]="UINT32",n[n.SFIXED32=15]="SFIXED32",n[n.SFIXED64=16]="SFIXED64",n[n.SINT32=17]="SINT32",n[n.SINT64=18]="SINT64"})(P||(P={}));var sn;(function(n){n[n.BIGINT=0]="BIGINT",n[n.STRING=1]="STRING"})(sn||(sn={}));function an(n,e,t){if(e===t)return!0;if(n==P.BYTES){if(!(e instanceof Uint8Array)||!(t instanceof Uint8Array)||e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0}switch(n){case P.UINT64:case P.FIXED64:case P.INT64:case P.SFIXED64:case P.SINT64:return e==t}return!1}function Nn(n,e){switch(n){case P.BOOL:return!1;case P.UINT64:case P.FIXED64:case P.INT64:case P.SFIXED64:case P.SINT64:return e==0?ge.zero:"0";case P.DOUBLE:case P.FLOAT:return 0;case P.BYTES:return new Uint8Array(0);case P.STRING:return"";default:return 0}}function Zo(n,e){switch(n){case P.BOOL:return e===!1;case P.STRING:return e==="";case P.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}var _e;(function(n){n[n.Varint=0]="Varint",n[n.Bit64=1]="Bit64",n[n.LengthDelimited=2]="LengthDelimited",n[n.StartGroup=3]="StartGroup",n[n.EndGroup=4]="EndGroup",n[n.Bit32=5]="Bit32"})(_e||(_e={}));class Of{constructor(e){this.stack=[],this.textEncoder=e??new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let r=0;r<this.chunks.length;r++)e+=this.chunks[r].length;let t=new Uint8Array(e),i=0;for(let r=0;r<this.chunks.length;r++)t.set(this.chunks[r],i),i+=this.chunks[r].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(cs(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return Gi(e),Xo(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){Ko(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){cs(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){Gi(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return Gi(e),e=(e<<1^e>>31)>>>0,Xo(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),r=ge.enc(e);return i.setInt32(0,r.lo,!0),i.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),r=ge.uEnc(e);return i.setInt32(0,r.lo,!0),i.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=ge.enc(e);return us(t.lo,t.hi,this.buf),this}sint64(e){let t=ge.enc(e),i=t.hi>>31,r=t.lo<<1^i,s=(t.hi<<1|t.lo>>>31)^i;return us(r,s,this.buf),this}uint64(e){let t=ge.uEnc(e);return us(t.lo,t.hi,this.buf),this}}class Af{constructor(e,t){this.varint64=Pf,this.uint32=Mf,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=t??new TextDecoder}tag(){let e=this.uint32(),t=e>>>3,i=e&7;if(t<=0||i<0||i>5)throw new Error("illegal tag: field no "+t+" wire type "+i);return[t,i]}skip(e,t){let i=this.pos;switch(e){case _e.Varint:for(;this.buf[this.pos++]&128;);break;case _e.Bit64:this.pos+=4;case _e.Bit32:this.pos+=4;break;case _e.LengthDelimited:let r=this.uint32();this.pos+=r;break;case _e.StartGroup:for(;;){const[s,a]=this.tag();if(a===_e.EndGroup){if(t!==void 0&&s!==t)throw new Error("invalid end group tag");break}this.skip(a,s)}break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(i,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return ge.dec(...this.varint64())}uint64(){return ge.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),i=-(e&1);return e=(e>>>1|(t&1)<<31)^i,t=t>>>1^i,ge.dec(e,t)}bool(){let[e,t]=this.varint64();return e!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return ge.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return ge.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}function xf(n,e,t,i){let r;return{typeName:e,extendee:t,get field(){if(!r){const s=typeof i=="function"?i():i;s.name=e.split(".").pop(),s.jsonName="[".concat(e,"]"),r=n.util.newFieldList([s]).list()[0]}return r},runtime:n}}function ec(n){const e=n.field.localName,t=Object.create(null);return t[e]=Lf(n),[t,()=>t[e]]}function Lf(n){const e=n.field;if(e.repeated)return[];if(e.default!==void 0)return e.default;switch(e.kind){case"enum":return e.T.values[0].no;case"scalar":return Nn(e.T,e.L);case"message":const t=e.T,i=new t;return t.fieldWrapper?t.fieldWrapper.unwrapField(i):i;case"map":throw"map fields are not allowed to be extensions"}}function Nf(n,e){if(!e.repeated&&(e.kind=="enum"||e.kind=="scalar")){for(let t=n.length-1;t>=0;--t)if(n[t].no==e.no)return[n[t]];return[]}return n.filter(t=>t.no===e.no)}let Kt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),Yi=[];for(let n=0;n<Kt.length;n++)Yi[Kt[n].charCodeAt(0)]=n;Yi[45]=Kt.indexOf("+"),Yi[95]=Kt.indexOf("/");const tc={dec(n){let e=n.length*3/4;n[n.length-2]=="="?e-=2:n[n.length-1]=="="&&(e-=1);let t=new Uint8Array(e),i=0,r=0,s,a=0;for(let c=0;c<n.length;c++){if(s=Yi[n.charCodeAt(c)],s===void 0)switch(n[c]){case"=":r=0;case`
1
+ (function(Z,Fe){typeof exports=="object"&&typeof module<"u"?Fe(exports):typeof define=="function"&&define.amd?define(["exports"],Fe):(Z=typeof globalThis<"u"?globalThis:Z||self,Fe(Z.index={}))})(this,(function(Z){"use strict";var Ky=Object.defineProperty;var Hy=(Z,Fe,me)=>Fe in Z?Ky(Z,Fe,{enumerable:!0,configurable:!0,writable:!0,value:me}):Z[Fe]=me;var qe=(Z,Fe,me)=>Hy(Z,typeof Fe!="symbol"?Fe+"":Fe,me);var Fe=(n=>(n.Chat="lk.chat",n.Speak="did.speak",n.Interrupt="did.interrupt",n.SttLanguage="did.stt-language",n.Presentation="did.presentation",n))(Fe||{}),me=(n=>(n.Functional="Functional",n.TextOnly="TextOnly",n.Maintenance="Maintenance",n.Playground="Playground",n.DirectPlayback="DirectPlayback",n.Off="Off",n))(me||{}),He=(n=>(n.Embed="embed",n.Query="query",n.Partial="partial",n.Answer="answer",n.Transcribe="transcribe",n.Complete="done",n))(He||{}),fn=(n=>(n.Clip="clip",n.Talk="talk",n.Expressive="expressive",n.Image="image",n))(fn||{}),X=(n=>(n.Start="START",n.Stop="STOP",n))(X||{}),vt=(n=>(n.Strong="STRONG",n.Weak="WEAK",n.Unknown="UNKNOWN",n))(vt||{}),Pe=(n=>(n.Idle="IDLE",n.Loading="LOADING",n.Talking="TALKING",n.ToolActive="TOOL_ACTIVE",n))(Pe||{}),G=(n=>(n.ChatAnswer="chat/answer",n.ChatPartial="chat/partial",n.ChatAudioTranscribed="chat/audio-transcribed",n.StreamDone="stream/done",n.StreamStarted="stream/started",n.StreamFailed="stream/error",n.StreamReady="stream/ready",n.StreamInterrupt="stream/interrupt",n.StreamVideoCreated="stream-video/started",n.StreamVideoDone="stream-video/done",n.StreamVideoError="stream-video/error",n.StreamVideoRejected="stream-video/rejected",n.ToolCallStarted="tool-call/started",n.ToolCallDone="tool-call/done",n.ToolCallError="tool-call/error",n.TurnStarted="turn/started",n.TurnEnded="turn/ended",n))(G||{}),mn=(n=>(n.Started="tool-call/started",n.Done="tool-call/done",n.Error="tool-call/error",n))(mn||{}),Ya=(n=>(n.Presentation="did.presentation",n))(Ya||{}),ie=(n=>(n.New="new",n.Fail="fail",n.Connected="connected",n.Connecting="connecting",n.Closed="closed",n.Completed="completed",n.Disconnecting="disconnecting",n.Disconnected="disconnected",n))(ie||{}),yt=(n=>(n.Legacy="legacy",n.Fluent="fluent",n))(yt||{}),xn=(n=>(n.Ok="ok",n.UnknownError="unknown_error",n.NetworkIssue="network_issue",n.MessageLimit="message_limit",n.TimeLimit="time_limit",n.Inactivity="inactivity",n.EndedByAgent="ended_by_agent",n))(xn||{}),Jr=(n=>(n.Livekit="livekit",n))(Jr||{}),Qa=(n=>(n.Amazon="amazon",n.AzureOpenAi="azure-openai",n.Microsoft="microsoft",n.Elevenlabs="elevenlabs",n.Cartesia="cartesia",n))(Qa||{}),Xa=(n=>(n.Public="public",n.Premium="premium",n.Private="private",n.ExternalPrivate="external-private",n))(Xa||{});const Wl=(...n)=>{},Za=n=>new Promise(e=>setTimeout(e,n)),pn=(n=16)=>{const e=new Uint8Array(n);return globalThis.crypto.getRandomValues(e),Array.from(e,t=>t.toString(16).padStart(2,"0")).join("").slice(0,13)};function Gr(n){if(n!==void 0)return window.localStorage.setItem("did_external_key_id",n),n;let e=window.localStorage.getItem("did_external_key_id");if(!e){let t=pn();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let eo;function $r(){return eo??(eo=pn())}function zl(){eo=pn()}function to(n,e){if(n.type==="bearer")return`Bearer ${n.token}~${$r()}`;if(n.type==="basic")return`Basic ${"token"in n?n.token:btoa(`${n.username}:${n.password}`)}~${$r()}`;if(n.type==="key")return`Client-Key ${n.clientKey}.${Gr(e)}_${$r()}`;throw new Error(`Unknown auth type: ${n}`)}const Jl=45*1e3,Gl="X-Playground-Chat",no=2e3,ri="https://api.d-id.com",$l="wss://notifications.d-id.com",Yl="79f81a83a67430be2bc0fd61042b8faa";class qt extends Error{constructor(e,t="Error",i){super(e),this.kind=t,this.originalError=i,Object.setPrototypeOf(this,new.target.prototype)}toJson(){const e=this.originalError instanceof Error?this.originalError.message.slice(0,256):void 0;return{kind:this.kind,message:this.message,...e&&e!==this.message?{cause:e}:{}}}}function Ql(n){return n instanceof Error&&typeof n.kind=="string"}class io extends qt{constructor(t,i){super(`Failed to create ${i?"persistent ":""}chat, mode: ${t}`,"ChatCreationFailed");qe(this,"kind","ChatCreationFailed")}}class ro extends qt{constructor(t){super(`Chat mode downgraded to ${t}`,"ChatModeDowngraded");qe(this,"kind","ChatModeDowngraded")}}function Xl(n){try{const e=JSON.parse(n);if(e&&typeof e=="object"&&typeof e.kind=="string")return e}catch{}}class qi extends qt{constructor(t,i,r={}){const s=Xl(i);super(((s==null?void 0:s.description)??i).slice(0,256),"HttpError");qe(this,"kind","HttpError");qe(this,"code");qe(this,"status");qe(this,"endpoint");qe(this,"method");this.code=(s==null?void 0:s.kind)??"HttpError",this.status=t,this.endpoint=r.endpoint,this.method=r.method}toJson(){return{...super.toJson(),code:this.code,httpStatus:this.status,...this.endpoint?{endpoint:this.endpoint}:{},...this.method?{method:this.method}:{}}}}class so extends qt{constructor(t,i={}){super("Network request failed","NetworkError",t);qe(this,"kind","NetworkError");qe(this,"endpoint");qe(this,"method");qe(this,"durationMs");qe(this,"online");qe(this,"visibility");this.endpoint=i.endpoint,this.method=i.method,this.durationMs=i.durationMs,this.online=i.online,this.visibility=i.visibility}toJson(){return{...super.toJson(),...this.endpoint?{endpoint:this.endpoint}:{},...this.method?{method:this.method}:{},...this.durationMs!==void 0?{durationMs:this.durationMs}:{},...this.online!==void 0?{online:this.online}:{},...this.visibility?{visibility:this.visibility}:{}}}}class Ki extends qt{constructor(t,i){super(t,"StreamError",i);qe(this,"kind","StreamError")}}class pe extends qt{constructor(t,i){super(t,"ValidationError");qe(this,"kind","ValidationError");this.key=i}}class ao extends qt{constructor(t){super(t,"WSError");qe(this,"kind","WSError")}}const oo=n=>n.type,Zl=n=>n.type===fn.Expressive?"v4":n.type===fn.Clip?"v3-pro":n.type===fn.Image?"image":"v2",Yr=n=>n===fn.Expressive||n===fn.Image,Qr=n=>[me.TextOnly,me.Playground,me.Maintenance].includes(n),Ln=n=>n&&[me.DirectPlayback,me.Off].includes(n),co=/\[!\[([^\[\]]*)\]\(([^)\s]+)\)\]\(([^)\s]+)\)/g,uo=/!\[([^\[\]]*)\]\(([^)\s]+)\)/g,eh=[".mp4",".webm",".mkv",".mov",".m4v",".ogv"];function th(n){const e=n.split("?")[0].split("#")[0].toLowerCase();return eh.some(t=>e.endsWith(t))}const lo=new RegExp("(?<!!)\\[([^\\[\\]]+)\\]\\(([^)\\s]+)\\)","g"),ho=/<a\s+href="([^"]*)"[^>]*?>([^<]*)<\/a>/gi;function Xr(n){if(n.length===0)return[];const e=[];let t;for(co.lastIndex=0;(t=co.exec(n))!==null;)e.push({index:t.index,length:t[0].length,part:{type:"video",src:t[3],alt:t[1],thumbnail:t[2]}});for(uo.lastIndex=0;(t=uo.exec(n))!==null;)if(!e.some(a=>t.index>=a.index&&t.index<a.index+a.length)){const a=t[2],c=t[1];let d;th(a)?d={type:"video",src:a,alt:c}:(d={type:"image",src:a,alt:c},a.toLowerCase().endsWith(".gif")&&(d.mimeType="image/gif")),e.push({index:t.index,length:t[0].length,part:d})}for(lo.lastIndex=0;(t=lo.exec(n))!==null;)e.some(a=>t.index>=a.index&&t.index<a.index+a.length)||e.push({index:t.index,length:t[0].length,part:{type:"link",href:t[2],label:t[1]}});for(ho.lastIndex=0;(t=ho.exec(n))!==null;)e.some(a=>t.index>=a.index&&t.index<a.index+a.length)||e.push({index:t.index,length:t[0].length,part:{type:"link",href:t[1],label:t[2]}});if(e.length===0)return[{type:"text",text:n}];e.sort((s,a)=>s.index-a.index);const i=[];let r=0;for(const s of e)s.index>r&&i.push({type:"text",text:n.slice(r,s.index)}),i.push(s.part),r=s.index+s.length;return r<n.length&&i.push({type:"text",text:n.slice(r)}),i}let fo="",Zr=[];function si(n){return n===fo||(fo=n,Zr=Xr(n)),Zr}function nh(n,e){let t;return{promise:new Promise((r,s)=>{t=setTimeout(()=>s(new Error(e)),n)}),clear:()=>clearTimeout(t)}}async function es(n,e){const t={limit:(e==null?void 0:e.limit)??3,delayMs:(e==null?void 0:e.delayMs)??0,timeout:(e==null?void 0:e.timeout)??3e4,timeoutErrorMessage:(e==null?void 0:e.timeoutErrorMessage)||"Timeout error",shouldRetryFn:(e==null?void 0:e.shouldRetryFn)??(()=>!0),onRetry:(e==null?void 0:e.onRetry)??(()=>{})};let i;for(let r=1;r<=t.limit;r++)try{if(!t.timeout)return await n();const{promise:s,clear:a}=nh(t.timeout,t.timeoutErrorMessage),c=n().finally(a);return await Promise.race([c,s])}catch(s){if(i=s,!t.shouldRetryFn(s)||r>=t.limit)throw s;await Za(t.delayMs),await t.onRetry(s)}throw i}class mo{constructor(e){qe(this,"status",429);this.response=e}}const ih=n=>es(n,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:e=>e.status===429});function ts(n,e=ri,t,i){const r=async(s,a)=>{const{skipErrorHandler:c,...d}=a||{},o=d.method??"GET",u=performance.now();let l;try{l=await ih(async()=>{const h=await fetch(e+(s!=null&&s.startsWith("/")?s:`/${s}`),{...d,headers:{...d.headers,Authorization:to(n,i),"Content-Type":"application/json"}});if(h.status===429)throw new mo(h);return h})}catch(h){if(h instanceof mo)l=h.response;else{if((h==null?void 0:h.name)==="AbortError")throw h;const p=new so(h,{endpoint:s,method:o,durationMs:Math.round(performance.now()-u),online:typeof navigator<"u"?navigator.onLine:void 0,visibility:typeof document<"u"?document.visibilityState:void 0});throw c||t==null||t(p,{endpoint:s,method:o}),p}}if(!l.ok){const h=await l.text().catch(()=>`Failed to fetch with status ${l.status}`),f=new qi(l.status,h,{endpoint:s,method:o});throw c||t==null||t(f,{endpoint:s,method:o}),f}return l.json()};return{get(s,a){return r(s,{...a,method:"GET"})},post(s,a,c){return r(s,{...c,body:JSON.stringify(a),method:"POST"})},delete(s,a,c){return r(s,{...c,body:JSON.stringify(a),method:"DELETE"})},patch(s,a,c){return r(s,{...c,body:JSON.stringify(a),method:"PATCH"})}}}function rh(n,e=ri,t,i){const r=ts(n,`${e}/agents`,t,i);return{getRuntimeById(s,a){return r.get(`/${s}/runtime`,a)},newChat(s,a,c){return r.post(`/${s}/chat`,a,c)},chat(s,a,c,d){return r.post(`/${s}/chat/${a}`,c,d)},createRating(s,a,c,d){return r.post(`/${s}/chat/${a}/ratings`,c,d)},updateRating(s,a,c,d,o){return r.patch(`/${s}/chat/${a}/ratings/${c}`,d,o)},deleteRating(s,a,c,d){return r.delete(`/${s}/chat/${a}/ratings/${c}`,d)},submitFeedback(s,a,c,d){return r.post(`/${s}/chat/${a}/feedback`,c,d)},getSttToken(s,a){return r.get(`/${s}/stt-token`,a)}}}function sh(n){var r,s;const e=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",t=()=>{const a=navigator.platform;return a.toLowerCase().includes("win")?"Windows":a.toLowerCase().includes("mac")?"Mac OS X":a.toLowerCase().includes("linux")?"Linux":"Unknown"},i=n.avatar;return{$os:`${t()}`,isMobile:`${e()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:oo(i),agentVoice:{language:(s=(r=n.avatar)==null?void 0:r.voice)==null?void 0:s.language}}}function ah(n){var e;return{agentType:oo(n.avatar),presenterType:Zl(n.avatar),owner_id:n.owner_id??"",starterQuestionsCount:(e=n.starter_message)==null?void 0:e.length,agentId:n.id,agentName:n.name}}const oh=n=>{try{return String((n==null?void 0:n.message)??n??"").slice(0,256)}catch{return"Unknown error"}},ch=n=>n.reduce((e,t)=>e+t,0),po=n=>ch(n)/n.length,go=n=>Math.min(...n),vo=n=>Math.max(...n),Hi=(n,e=0)=>{const t=10**e;return Math.round(n*t)/t},dh=(n,e)=>{const t=[...n].sort((i,r)=>i-r);return t[Math.min(t.length-1,Math.floor(e*(t.length-1)))]},uh=n=>dh(n,.5),lh=(n,e)=>{try{return n()}catch{return e}};function yo(n,e,t){var c,d;const{event:i,...r}=n,{language:s}=((c=e==null?void 0:e.avatar)==null?void 0:c.voice)||{};return{...r,script:{...r.script,provider:{...(d=r==null?void 0:r.script)==null?void 0:d.provider,language:s}},...t}}function bo(n){"requestIdleCallback"in window?requestIdleCallback(n,{timeout:2e3}):setTimeout(n,0)}function Wi(n){return n instanceof qt?n.toJson():{kind:"UnknownError",message:oh(n)||"UnknownError"}}const hh="3.0.5-staging.439",fh="https://api-js.mixpanel.com/track/?verbose=1&ip=1",ko=50,gn=[];let ns=!1;async function To(n){const e=await fetch(fh,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify(n)})});if(!e.ok)throw new Error(`Mixpanel responded with ${e.status}`)}function mh(n){gn.push(n),gn.splice(ko)}function is(){if(ns||!gn.length)return;ns=!0;const n=gn.splice(0,gn.length);To(n).catch(()=>{gn.unshift(...n),gn.splice(ko)}).finally(()=>{ns=!1})}typeof window<"u"&&typeof window.addEventListener=="function"&&(window.addEventListener("online",is),typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&is()}));function ph(n){const e=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",t={};return{token:n.token||"testKey",distinct_id:Gr(n.externalId),agentId:n.agentId,additionalProperties:{id:Gr(n.externalId),...n.mixpanelAdditionalProperties||{}},isEnabled:n.isEnabled??!0,getRandom:pn,enrich(i){this.additionalProperties={...this.additionalProperties,...i}},async track(i,r,s){if(!this.isEnabled)return Promise.resolve();const{audioPath:a,...c}=r||{},d=s||Date.now(),o={event:i,properties:{...this.additionalProperties,...c,agentId:this.agentId,source:e,emittedBy:"agents-sdk",sdkVersion:hh,token:this.token,time:d,$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerHeight,"Screen Width":window.screen.width||window.innerWidth,"User Agent":navigator.userAgent}};return is(),To([o]).catch(()=>mh(o)),Promise.resolve()},linkTrack(i,r,s,a){t[i]||(t[i]={events:{},resolvedDependencies:[]}),a.includes(s)||a.push(s);const c=t[i];if(c.events[s]={props:r},c.resolvedDependencies.push(s),a.every(o=>c.resolvedDependencies.includes(o))){const o=a.reduce((u,l)=>c.events[l]?{...u,...c.events[l].props}:u,{});this.track(i,o),c.resolvedDependencies=c.resolvedDependencies.filter(u=>!a.includes(u)),a.forEach(u=>{delete c.events[u]})}}}}function rs(){let n=0;return{reset:()=>n=0,update:()=>n=Date.now(),get:(e=!1)=>e?Date.now()-n:n}}const Lt=rs(),ss=rs(),So=rs();function Co(n){return n===me.Playground?{headers:{[Gl]:"true"}}:{}}async function wo(n,e,t,i,r=!1,s){return s?{chat:s,chatMode:i}:(Ln(i)||(s=await e.newChat(n.id,{persist:r},Co(i)),t.track("agent-chat",{event:"created",chatId:s.id,mode:i})),{chat:s,chatMode:(s==null?void 0:s.chat_mode)??i})}function gh(n){return!n||n.length===0?[]:n.map(e=>Array.isArray(e.parts)&&e.parts.length>0?e:{...e,parts:Xr(typeof e.content=="string"?e.content:"")})}function vh(n){return new Promise((e,t)=>{const{callbacks:i,host:r,auth:s,externalId:a}=n,{onMessage:c=null,onOpen:d=null,onClose:o=null,onError:u=null}=i||{},l=new WebSocket(`${r}?authorization=${encodeURIComponent(to(s,a))}`);l.onmessage=c,l.onclose=o,l.onerror=h=>{console.error(h),u==null||u("Websocket failed to connect",h),t(h)},l.onopen=h=>{d==null||d(h),e(l)}})}async function yh(n){const{retries:e=1}=n;let t=null;for(let i=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;i++)try{t=await vh(n)}catch(r){if(i===e)throw r;await Za(i*500)}return t}async function bh(n,e,t,i){const r=t!=null&&t.onMessage?[t.onMessage]:[],s=await yh({auth:n,host:e,externalId:i,callbacks:{onError:a=>{var c;return(c=t.onError)==null?void 0:c.call(t,new ao(a))},onMessage(a){const c=JSON.parse(a.data);r.forEach(d=>d(c.event,c))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:a=>r.push(a)}}const kh={manual:xn.Ok,inactivity:xn.Inactivity,peer_disconnected:xn.NetworkIssue,shutdown:xn.UnknownError};function Th(n){return kh[n.close_reason]??n.close_reason}const Sh=[G.StreamVideoDone,G.StreamVideoError,G.StreamVideoRejected],Eo=[G.StreamFailed,G.StreamVideoError,G.StreamVideoRejected];function Ro(n){if(n.answer!==void 0)return n.answer;let e=0,t="";for(;e in n;)t+=n[e++];return t}function Ch(n,e,t){if(!n.content)return;const i={id:n.id||`user-${Date.now()}`,role:n.role,content:n.content,parts:si(n.content),createdAt:n.created_at||new Date().toISOString(),transcribed:!0};e.messages.push(i),t==null||t([...e.messages],"user")}function wh(n,e,t,i,r,s,a){if(n===He.Transcribe&&e.content){Ch(e,i,r);return}if(!(n===He.Partial||n===He.Answer))return;const c=i.messages[i.messages.length-1];if(n===He.Answer&&(c==null?void 0:c.role)==="user"&&a==="partial")return;const o=a==="answer";let u;if((c==null?void 0:c.role)==="assistant"&&!o)u=c;else if(!c||c.role==="user"||o)o&&s(),u={id:e.id||`assistant-${Date.now()}`,role:e.role||"assistant",content:"",parts:[],createdAt:e.created_at||new Date().toISOString()},i.messages.push(u);else return;const{content:l,sequence:h}=e;if(n===He.Partial)t[h]=l;else{const p=Ro(t);!!(l&&l.length<p.length)&&(u.interrupted=!0),t.answer=l}const f=Ro(t);(u.content!==f||n===He.Answer)&&(u.content=f,u.parts=si(f),r==null||r([...i.messages],n))}function Eh(n,e,t,i,r){const s={},a=()=>{for(const o of Object.keys(s))delete s[o]};let c=null;const d=(o,u)=>{var l,h;u==="user"&&a(),(h=(l=t.callbacks).onNewMessage)==null||h.call(l,o,u)};return{clearQueue:a,onMessage:(o,u)=>{var l,h,f;if("content"in u){const p=o===G.ChatAnswer?He.Answer:o===G.ChatAudioTranscribed?He.Transcribe:o;wh(p,u,s,e,d,a,c),p===He.Partial?c="partial":p===He.Answer&&(c="answer",a()),p===He.Answer&&n.track("agent-message-received",{content:u.content,messages:e.messages.length,mode:e.chatMode})}else{const p=G;if(o=o,o===p.StreamVideoCreated){const v=yo(u,i,{mode:e.chatMode});if(n.linkTrack("agent-video",v,p.StreamVideoCreated,["start"]),u.sentiment){const b=e.messages[e.messages.length-1];if((b==null?void 0:b.role)==="assistant"){const k={...b,sentiment:u.sentiment};e.messages[e.messages.length-1]=k,d==null||d([...e.messages],c??"answer")}}}if(Sh.includes(o)){const v=o.split("/")[1],b=yo(u,i,{mode:e.chatMode});Eo.includes(o)?n.track("agent-video",{...b,event:v}):n.linkTrack("agent-video",{...b,event:v},o,["done"])}Eo.includes(o)&&((f=(h=t.callbacks).onError)==null||f.call(h,new Ki(`Stream failed with event ${o}`),{streamId:(l=e.streamingManager)==null?void 0:l.streamId})),u.event===p.StreamDone&&r(Th(u))}}}}function Rh(n,e,t,i){const r=ts(n,`${e}/agents/${t}`,i);return{createStream(s,a){return r.post("/streams",s,{signal:a})},startConnection(s,a,c,d){return r.post(`/streams/${s}/sdp`,{session_id:c,answer:a},{signal:d})},addIceCandidate(s,a,c,d){return r.post(`/streams/${s}/ice`,{session_id:c,...a},{signal:d})},async sendStreamRequest(s,a,c){const d=await r.post(`/streams/${s}`,{session_id:a,...c});return{status:d.status,sessionId:d.session_id,duration:d.duration,videoId:d.video_id}},close(s,a){return r.delete(`/streams/${s}`,{session_id:a},{skipErrorHandler:!0})}}}const Po=(n,e)=>(t,i)=>n&&console.log(`[${e}] ${t}`,i??""),Ph=45;function _h(n){const e=n.map(d=>d.av).filter(d=>!!d&&d.audioPlayout>0&&d.videoPlayout>0);if(e.length<2)return null;const t=e[0].localTs,i=e[e.length-1].localTs-t,r=e.map(d=>d.audioPlayout-d.videoPlayout),s=r.filter(d=>d>Ph||d<-100),a=e.filter(d=>d.localTs-t>=Math.min(5e3,i/2)),c=(a.length?a:e).map(d=>d.audioPlayout-d.videoPlayout);return{sampleCount:e.length,durationMs:Hi(i),desyncDurationMs:Hi(i*(s.length/r.length)),maxOffsetMs:Hi(r.reduce((d,o)=>Math.abs(o)>Math.abs(d)?o:d)),residualOffsetMs:Hi(uh(c))}}function Ih(n,e,t){const i=(e.timestamp-n.timestamp)/1e3;return{duration:i,bytesReceived:e.bytesReceived-n.bytesReceived,bitrate:Math.round((e.bytesReceived-n.bytesReceived)*8/i),packetsReceived:e.packetsReceived-n.packetsReceived,packetsLost:e.packetsLost-n.packetsLost,framesDropped:e.framesDropped-n.framesDropped,framesDecoded:e.framesDecoded-n.framesDecoded,jitter:e.jitter,avgJitterDelayInInterval:(e.jitterBufferDelay-n.jitterBufferDelay)/(e.jitterBufferEmittedCount-n.jitterBufferEmittedCount),jitterBufferEmittedCount:e.jitterBufferEmittedCount-n.jitterBufferEmittedCount,jitterBufferDelay:(e.jitterBufferDelay-n.jitterBufferDelay)/i,framesPerSecond:e.framesPerSecond,freezeCount:e.freezeCount-n.freezeCount,freezeDuration:e.freezeDuration-n.freezeDuration,lowFpsCount:t}}function Mh(n){return n.filter(e=>e.freezeCount>0||e.framesPerSecond<21||e.framesDropped>0||e.packetsLost>0).map(e=>{const{timestamp:t,...i}=e,r=[];return e.freezeCount>0&&r.push("freeze"),e.framesPerSecond<21&&r.push("low fps"),e.framesDropped>0&&r.push("frames dropped"),e.packetsLost>0&&r.push("packet loss"),{...i,causes:r}})}function Dh(n){var d;let e="",t=0,i=null,r=null;const s=new Map;for(const o of n.values())if(o)if(o.type==="codec"&&((d=o.mimeType)!=null&&d.startsWith("video")))s.set(o.id,o.mimeType.split("/")[1]);else if(o.type==="candidate-pair"){const u=o,l=u.currentRoundTripTime??0;l>0&&(u.nominated===!0||t===0)&&(t=l)}else o.type==="inbound-rtp"&&o.kind==="video"?i=o:o.type==="inbound-rtp"&&o.kind==="audio"&&(r=o);if(!i)return{};const a=i;a.codecId&&s.has(a.codecId)?e=s.get(a.codecId):s.size>0&&(e=s.values().next().value??"");const c={codec:e,rtt:t,timestamp:a.timestamp,bytesReceived:a.bytesReceived,packetsReceived:a.packetsReceived,packetsLost:a.packetsLost,framesDropped:a.framesDropped,framesDecoded:a.framesDecoded,jitter:a.jitter,jitterBufferDelay:a.jitterBufferDelay,jitterBufferEmittedCount:a.jitterBufferEmittedCount,avgJitterDelayInInterval:a.jitterBufferDelay/a.jitterBufferEmittedCount,frameWidth:a.frameWidth,frameHeight:a.frameHeight,framesPerSecond:a.framesPerSecond,freezeCount:a.freezeCount,freezeDuration:a.totalFreezesDuration};return r&&(c.av={audioPlayout:r.estimatedPlayoutTimestamp??0,videoPlayout:a.estimatedPlayoutTimestamp??0,localTs:a.timestamp}),c}function _o(n,e,t){if(n.length===0)return null;const i=n.map((d,o)=>o===0?t?{timestamp:d.timestamp,duration:0,rtt:d.rtt,bytesReceived:d.bytesReceived-t.bytesReceived,bitrate:(d.bytesReceived-t.bytesReceived)*8/(e/1e3),packetsReceived:d.packetsReceived-t.packetsReceived,packetsLost:d.packetsLost-t.packetsLost,framesDropped:d.framesDropped-t.framesDropped,framesDecoded:d.framesDecoded-t.framesDecoded,jitter:d.jitter,jitterBufferDelay:d.jitterBufferDelay-t.jitterBufferDelay,jitterBufferEmittedCount:d.jitterBufferEmittedCount-t.jitterBufferEmittedCount,avgJitterDelayInInterval:(d.jitterBufferDelay-t.jitterBufferDelay)/(d.jitterBufferEmittedCount-t.jitterBufferEmittedCount),framesPerSecond:d.framesPerSecond,freezeCount:d.freezeCount-t.freezeCount,freezeDuration:d.freezeDuration-t.freezeDuration}:{timestamp:d.timestamp,rtt:d.rtt,duration:0,bytesReceived:d.bytesReceived,bitrate:d.bytesReceived*8/(e/1e3),packetsReceived:d.packetsReceived,packetsLost:d.packetsLost,framesDropped:d.framesDropped,framesDecoded:d.framesDecoded,jitter:d.jitter,jitterBufferDelay:d.jitterBufferDelay,jitterBufferEmittedCount:d.jitterBufferEmittedCount,avgJitterDelayInInterval:d.jitterBufferDelay/d.jitterBufferEmittedCount,framesPerSecond:d.framesPerSecond,freezeCount:d.freezeCount,freezeDuration:d.freezeDuration}:{timestamp:d.timestamp,duration:e*o/1e3,rtt:d.rtt,bytesReceived:d.bytesReceived-n[o-1].bytesReceived,bitrate:(d.bytesReceived-n[o-1].bytesReceived)*8/(e/1e3),packetsReceived:d.packetsReceived-n[o-1].packetsReceived,packetsLost:d.packetsLost-n[o-1].packetsLost,framesDropped:d.framesDropped-n[o-1].framesDropped,framesDecoded:d.framesDecoded-n[o-1].framesDecoded,jitter:d.jitter,jitterBufferDelay:d.jitterBufferDelay-n[o-1].jitterBufferDelay,jitterBufferEmittedCount:d.jitterBufferEmittedCount-n[o-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(d.jitterBufferDelay-n[o-1].jitterBufferDelay)/(d.jitterBufferEmittedCount-n[o-1].jitterBufferEmittedCount),framesPerSecond:d.framesPerSecond,freezeCount:d.freezeCount-n[o-1].freezeCount,freezeDuration:d.freezeDuration-n[o-1].freezeDuration}),r=Mh(i),s=r.reduce((d,o)=>d+(o.causes.includes("low fps")?1:0),0),a=i.filter(d=>!!d.avgJitterDelayInInterval).map(d=>d.avgJitterDelayInInterval),c=i.filter(d=>!!d.rtt).map(d=>d.rtt);return{webRTCStats:{anomalies:r,avSync:lh(()=>_h(n),null),minRtt:go(c),avgRtt:po(c),maxRtt:vo(c),aggregateReport:Ih(n[0],n[n.length-1],s),minJitterDelayInInterval:go(a),maxJitterDelayInInterval:vo(a),avgJitterDelayInInterval:po(a)},codec:n[0].codec,resolution:`${n[0].frameWidth}x${n[0].frameHeight}`}}function Io(n,e){for(const t of n.values())if((t==null?void 0:t.type)==="inbound-rtp"&&t.kind===e)return t;return null}const ai=10;function Oh(n,e){let t=!1,i=!1,r=null,s=0,a=0,c={};async function d(){if(t){try{const o=await n();if(!o){r=setTimeout(d,ai);return}const u=Io(o,"audio");if(!u){r=setTimeout(d,ai);return}const l=u.totalAudioEnergy??0,h=u.totalSamplesReceived??0;if(!i){s=l,a=h,i=!0,r=setTimeout(d,ai);return}const f=l-s,p=h-a;if(s=l,a=h,p>0&&f>0){t=!1,e(c);return}}catch{}t&&(r=setTimeout(d,ai))}}return{arm(o={}){c=o,t=!0,i=!1,performance.now(),r!==null&&clearTimeout(r),r=setTimeout(d,ai)},destroy(){t=!1,r!==null&&(clearTimeout(r),r=null)}}}const zi=100,Ah=Math.max(Math.ceil(400/zi),1),xh=.25,Lh=.28;function Nh(){let n=0,e,t,i=0;return r=>{const s=Io(r,"video");if(!s)return{isReceiving:!1,avgJitterDelayInInterval:i};const a=s.jitterBufferDelay,c=s.jitterBufferEmittedCount;if(t&&c>t){const u=a-e,l=c-t;i=u/l}e=a,t=c;const d=s.framesDecoded,o=d-n>0;return n=d,{isReceiving:o,avgJitterDelayInInterval:i,freezeCount:s.freezeCount}}}function Mo(n,e,t,i,r){let s=null,a=[],c,d=0,o=!1,u=vt.Unknown,l=vt.Unknown,h=0,f=0;const p=Nh();async function v(){const b=await n();if(!b)return;const{isReceiving:k,avgJitterDelayInInterval:C,freezeCount:_}=p(b),y=Dh(b);if(k)d=0,h=_-f,l=C<xh?vt.Strong:C>Lh&&h>1?vt.Weak:u,l!==u&&(r==null||r(l),u=l,f+=h,h=0),o||(i==null||i(X.Start),c=a[a.length-1],a=[],o=!0),a.push(y);else if(o&&(d++,d>=Ah)){const T=_o(a,zi,c);i==null||i(X.Stop,T??void 0),e()||t(),f=_,o=!1}}return{start:()=>{s||(s=setInterval(v,zi))},stop:()=>{s&&(clearInterval(s),s=null)},getReport:()=>_o(a,zi,c)}}const Uh=()=>{const n=globalThis,e=n.RTCPeerConnection||n.webkitRTCPeerConnection||n.mozRTCPeerConnection;if(!e)throw new Error("RTCPeerConnection is not available in this environment");return e.bind(n)};function Do(n){switch(n){case"connected":return ie.Connected;case"checking":return ie.Connecting;case"failed":return ie.Fail;case"new":return ie.New;case"closed":return ie.Closed;case"disconnected":return ie.Disconnected;case"completed":return ie.Completed;default:return ie.New}}const Fh=n=>e=>{const[t,i=""]=e.split(/:(.+)/);try{const r=JSON.parse(i);return n("parsed data channel message",{subject:t,data:r}),{subject:t,data:r}}catch(r){return n("Failed to parse data channel message, returning data as string",{subject:t,rawData:i,error:r}),{subject:t,data:i}}};function Bh({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:i,log:r}){n===X.Start&&e===X.Start?(r("CALLBACK: onVideoStateChange(Start)"),t==null||t(X.Start)):n===X.Stop&&e===X.Stop&&(r("CALLBACK: onVideoStateChange(Stop)"),t==null||t(X.Stop,i))}function jh({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:r,log:s}){n===X.Start?(s("CALLBACK: onVideoStateChange(Start)"),t==null||t(X.Start)):n===X.Stop&&(s("CALLBACK: onVideoStateChange(Stop)"),t==null||t(X.Stop,r)),e===X.Start?i==null||i(Pe.Talking):e===X.Stop&&(i==null||i(Pe.Idle))}function Oo({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,streamType:r,report:s,log:a}){r===yt.Legacy?Bh({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:s,log:a}):r===yt.Fluent&&jh({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:s,log:a})}async function Vh(n,e,{debug:t=!1,callbacks:i,auth:r,baseURL:s=ri,analytics:a},c){var nn;const d=Po(t,"WebRTCStreamingManager"),o=Fh(d);let u=!1,l=!1,h=X.Stop,f=X.Stop;const{startConnection:p,sendStreamRequest:v,close:b,createStream:k,addIceCandidate:C}=Rh(r,s,n,i.onError),{id:_,offer:y,ice_servers:T,session_id:S,fluent:x,interrupt_enabled:U}=await k(e,c);if(!S)throw new Error("Could not create session_id");(nn=i.onStreamCreated)==null||nn.call(i,{streamId:_,sessionId:S,agentId:n});const F=W=>{var K;return(K=i.onError)==null?void 0:K.call(i,W,{streamId:_})},A=new(Uh())({iceServers:T}),N=A.createDataChannel("JanusDataChannel"),j=x?yt.Fluent:yt.Legacy;a.enrich({"stream-type":j});const ne=e.stream_warmup&&!x,oe=()=>u,Ce=()=>{var W;u=!0,l&&(d("CALLBACK: onConnectionStateChange(Connected)"),(W=i.onConnectionStateChange)==null||W.call(i,ie.Connected))},Le=Mo(()=>A.getStats(),oe,Ce,(W,K)=>Oo({statsSignal:f=W,dataChannelSignal:j===yt.Legacy?h:void 0,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,report:K,streamType:j,log:d}),W=>{var K;return(K=i.onConnectivityStateChange)==null?void 0:K.call(i,W)});Le.start(),A.onicecandidate=W=>{d("peerConnection.onicecandidate",W);try{W.candidate&&W.candidate.sdpMid&&W.candidate.sdpMLineIndex!==null?C(_,{candidate:W.candidate.candidate,sdpMid:W.candidate.sdpMid,sdpMLineIndex:W.candidate.sdpMLineIndex},S,c):C(_,{candidate:null},S,c)}catch(K){F(K)}},N.onopen=()=>{l=!0,(!ne||u)&&Ce()};let re=null;const Me=W=>{var K;re=W,(K=i.onVideoIdChange)==null||K.call(i,W)};function jt(W,K){if(W===G.StreamStarted&&typeof K=="object"&&"metadata"in K){const w=K.metadata;Me(w.videoId)}W===G.StreamDone&&Me(null),h=W===G.StreamStarted?X.Start:X.Stop,Oo({statsSignal:j===yt.Legacy?f:void 0,dataChannelSignal:h,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,streamType:j,log:d})}function Dt(W,K){var B;const w=typeof K=="string"?K:K==null?void 0:K.metadata;w&&a.enrich({streamMetadata:w}),(B=i.onStreamReady)==null||B.call(i)}const Ot={[G.StreamStarted]:jt,[G.StreamDone]:jt,[G.StreamReady]:Dt};N.onmessage=W=>{var B;const{subject:K,data:w}=o(W.data);(B=Ot[K])==null||B.call(Ot,K,w)},A.oniceconnectionstatechange=()=>{var K;d("peerConnection.oniceconnectionstatechange => "+A.iceConnectionState);const W=Do(A.iceConnectionState);W!==ie.Connected&&((K=i.onConnectionStateChange)==null||K.call(i,W,`webrtc:ice-${A.iceConnectionState}`))},A.ontrack=W=>{var K;d("peerConnection.ontrack",W),d("CALLBACK: onSrcObjectReady"),(K=i.onSrcObjectReady)==null||K.call(i,W.streams[0])},await A.setRemoteDescription(y),d("set remote description OK");const At=await A.createAnswer();d("create answer OK"),await A.setLocalDescription(At),d("set local description OK"),await p(_,At,S,c),d("start connection OK");async function xt(W,K){if(!u||N.readyState!=="open"){d("Data channel is not ready for sending messages"),F(new Ki("Data channel is not ready for sending messages"));return}try{N.send(K)}catch(w){d("Error sending data channel message",w),F(w)}}return{speak(W){return v(_,S,W)},async disconnect(){var W;if(_){const K=Do(A.iceConnectionState);if(A){if(K===ie.New){Le.stop();return}A.close(),A.oniceconnectionstatechange=null,A.onnegotiationneeded=null,A.onicecandidate=null,A.ontrack=null}try{K===ie.Connected&&await b(_,S)}catch(w){d("Error on close stream connection",w)}(W=i.onAgentActivityStateChange)==null||W.call(i,Pe.Idle),Le.stop()}},sendDataChannelMessage:xt,sessionId:S,streamId:_,streamType:j,interruptAvailable:U??!1,isInterruptible:!0,interrupt(W){if(!U||j!==yt.Fluent||!re||!u||N.readyState!=="open")return!1;const K={type:G.StreamInterrupt,videoId:re,timestamp:Date.now()};return xt(Fe.Interrupt,JSON.stringify(K)),!0}}}var Ji=(n=>(n.V1="v1",n.V2="v2",n))(Ji||{});async function qh(n,e,t,i){const r=n.id;switch(e.version){case"v1":{const{version:s,...a}=e;return Vh(r,a,t,i)}case"v2":{const{version:s,...a}=e;switch(a.transport.provider){case Jr.Livekit:const{createLiveKitStreamingManager:c}=await Promise.resolve().then(()=>Vo);return c(r,a,t);default:throw new Error(`Unsupported transport provider: ${a.transport.provider}`)}}default:throw new Error(`Invalid stream version: ${e.version}`)}}const Kh="cht";function Hh(n){return{transport:{provider:Jr.Livekit},...(n==null?void 0:n.persistentChat)!==void 0&&{chat_persist:n.persistentChat}}}function Wh(n){var r,s;const{streamOptions:e}=n??{},t=((s=(r=n==null?void 0:n.analytics)==null?void 0:r.additionalProperties)==null?void 0:s.plan)!==void 0?{plan:n.analytics.additionalProperties.plan}:void 0;return{...{session_timeout:e==null?void 0:e.sessionTimeout,stream_warmup:e==null?void 0:e.streamWarmup,compatibility_mode:e==null?void 0:e.compatibilityMode,fluent:e==null?void 0:e.fluent},...t&&{end_user_data:t}}}function zh(n,e){return Yr(n.avatar.type)?{version:Ji.V2,...Hh(e)}:{version:Ji.V1,...Wh(e)}}function Jh(n,e,t){t.track("agent-connection-state-change",{state:n,...e&&{reason:e}})}function Gh(n,e,t,i,r){r===yt.Fluent?$h(n,e,t,i,r):Yh(n,e,t,i,r)}function $h(n,e,t,i,r){n===X.Start?i.track("stream-session",{event:"start","stream-type":r}):n===X.Stop&&i.track("stream-session",{event:"stop","stream-type":r,...t})}function Ao(n,e,t,i,r){n===X.Start?t.linkTrack("agent-video",{event:"start",...r,"stream-type":i},"start",[G.StreamVideoCreated]):n===X.Stop&&t.linkTrack("agent-video",{event:"stop","stream-type":i},"done",[G.StreamVideoDone])}function Yh(n,e,t,i,r){n===X.Start?i.linkTrack("agent-video",{event:"start",latency:Lt.get(!0),"stream-type":r},"start",[G.StreamVideoCreated]):n===X.Stop&&i.linkTrack("agent-video",{event:"stop","stream-type":r,...t},"done",[G.StreamVideoDone])}function Qh(n,e,t){const i={call_id:e.callId,name:e.name};if(n===mn.Started){t.track("agent-tool-call",{...i,event:"started"});return}const r=e;t.track("agent-tool-call",{...i,event:n===mn.Done?"done":"error",duration_ms:r.durationMs,extra_keys:r.extra?Object.keys(r.extra).length:0})}function xo(n,e,t,i){return Lt.reset(),So.update(),new Promise(async(r,s)=>{try{let a,c=!1;const d=zh(n,e);t.enrich({"stream-version":d.version.toString()});let o=null;const u=d.version===Ji.V2;a=await qh(n,d,{...e,analytics:t,callbacks:{...e.callbacks,onConnectionStateChange:(l,h)=>{var f,p;(p=(f=e.callbacks).onConnectionStateChange)==null||p.call(f,l,h),Jh(l,h,t),l===ie.Connected&&(a?r(a):c=!0)},onVideoStateChange:(l,h)=>{var f,p;(p=(f=e.callbacks).onVideoStateChange)==null||p.call(f,l),Gh(l,n,h,t,a.streamType)},onAgentActivityStateChange:l=>{var h,f;(f=(h=e.callbacks).onAgentActivityStateChange)==null||f.call(h,l),l===Pe.Talking?(ss.update(),o=p=>{Ao(X.Start,n,t,a.streamType,p),o=null},u||o({latency:Lt.get(!0)})):(ss.reset(),o=null,Ao(X.Stop,n,t,a.streamType))},onFirstAudioDetected:l=>{o==null||o(l)},onStreamReady:()=>{const l=So.get(!0);t.track("agent-chat",{event:"ready",latency:l})},onToolEvent:((l,h)=>{var f,p;(p=(f=e.callbacks).onToolEvent)==null||p.call(f,l,h),Qh(l,h,t)})}},i),c&&r(a)}catch(a){s(a)}})}async function Xh(n,e,t,i,r){var u,l;const s=async()=>{if(Yr(n.avatar.type)){const h=await xo(n,e,i),f=`${Kh}_${h.sessionId}`,p=new Date().toISOString();return{chatResult:{chatMode:me.Functional,chat:{id:f,agent_id:n.id,owner_id:n.owner_id??"",created:p,modified:p,agent_id__created_at:p,agent_id__modified_at:p,chat_mode:me.Functional,messages:[]}},streamingManager:h}}else{const h=new AbortController,f=h.signal;let p;try{const v=wo(n,t,i,e.mode,e.persistentChat,r),b=xo(n,e,i,f).then(_=>(p=_,_)),[k,C]=await Promise.all([v,b]);return{chatResult:k,streamingManager:C}}catch(v){throw h.abort(),p&&await p.disconnect().catch(()=>{}),v}}},{chatResult:a,streamingManager:c}=await s(),{chat:d,chatMode:o}=a;return o&&e.mode!==void 0&&o!==e.mode&&o!==me.Functional?((l=(u=e.callbacks).onError)==null||l.call(u,new ro(o)),c==null||c.disconnect(),{chat:d}):{chat:d,streamingManager:c}}const as="ChatMode.Off and ChatMode.DirectPlayback are not supported for Expressive agents",Lo="callbacks.onSrcObjectReady is required in every chat mode that streams video; it is optional only in ChatMode.TextOnly, ChatMode.Playground and ChatMode.Maintenance",Zh=[ie.Disconnected,ie.Closed,ie.Fail];async function ef(n,e){var At,xt,nn,W,K;const t={...e.callbacks};let i=!0;const r=((At=e.analytics)==null?void 0:At.mixpanelKey)||Yl,s=e.wsURL||$l,a=e.baseURL||ri,c=e.mode||me.Functional;if(!t.onSrcObjectReady&&!Qr(c))throw new pe(Lo);const d={messages:[],chatMode:c},o=ph({token:r,agentId:n,isEnabled:(xt=e.analytics)==null?void 0:xt.enabled,externalId:e.externalId,mixpanelAdditionalProperties:(nn=e.analytics)==null?void 0:nn.additionalProperties}),u=Date.now();bo(()=>{o.track("agent-sdk",{event:"init"},u)});let l=ie.New,h;const f={...t,onError(w,B){var H;o.track("agent-error",{error:Wi(w)}),(H=t.onError)==null||H.call(t,w,B)},onConnectionStateChange(w,B){var H;l=w,(H=t.onConnectionStateChange)==null||H.call(t,w,B)},onStreamCreated(w){var B;h=w,(B=t.onStreamCreated)==null||B.call(t,w)}},p={...e,callbacks:f},v=rh(p.auth,a,f.onError,p.externalId),b=await v.getRuntimeById(n);p.debug=p.debug||((W=b==null?void 0:b.advanced_settings)==null?void 0:W.ui_debug_mode);const k=Yr(b.avatar.type);if(k&&Ln(c))throw new pe(as);k&&Promise.resolve().then(()=>Vo).then(({preloadLiveKit:w})=>w()).catch(()=>{}),o.enrich(ah(b));const{onMessage:C,clearQueue:_}=Eh(o,d,p,b,w=>{var B,H;(B=d.socketManager)==null||B.disconnect(),(H=f.onConnectionStateChange)==null||H.call(f,ie.Disconnected,w)});d.messages=gh(p.initialMessages),d.messages.length&&((K=f.onNewMessage)==null||K.call(f,[...d.messages],"answer"));const y=w=>o.enrich({videoId:w}),T=w=>{var $e;const B=(w==null?void 0:w.type)??"click",H=d.streamingManager;if(!(H!=null&&H.interruptAvailable)||!H.isInterruptible||!H.interrupt(B))return;o.track("agent-video-interrupt",{type:B,video_duration_to_interrupt:ss.get(!0),message_duration_to_interrupt:Lt.get(!0)});const be=d.messages[d.messages.length-1];be&&(be.interrupted=!0,($e=f.onNewMessage)==null||$e.call(f,[...d.messages],"answer"))},S=new Map;function x(w){return async B=>{const H=S.get(w);if(!H)throw new Error(`No handler registered for client tool: ${w}`);const se=JSON.parse(B.payload);return H(se)}}function U(){var w,B,H,se;for(const[be]of S)(B=(w=d.streamingManager)==null?void 0:w.unregisterRpcMethod)==null||B.call(w,be),(se=(H=d.streamingManager)==null?void 0:H.registerRpcMethod)==null||se.call(H,be,x(be))}function F(w,B){var se,be;if(!k)throw new pe("registerClientTool is only available on Expressive (V4) agents");const H=!S.has(w);S.set(w,B),H&&((be=(se=d.streamingManager)==null?void 0:se.registerRpcMethod)==null||be.call(se,w,x(w)))}function A(w){var B,H;S.delete(w),(H=(B=d.streamingManager)==null?void 0:B.unregisterRpcMethod)==null||H.call(B,w)}const N=Date.now();bo(()=>{o.track("agent-sdk",{event:"loaded",...sh(b)},N)});let j,ne=!1;function oe(w){return ne=!1,j=Promise.resolve().then(w).finally(()=>{j=void 0}),j}function Ce(w){return j||oe(()=>Le(w))}async function Le(w){var ot,Fi,Bi,Ve;if(ne)return;d.streamingManager&&await re(),zl(),(ot=f.onConnectionStateChange)==null||ot.call(f,ie.Connecting),Lt.reset(),w&&!i&&(delete d.chat,(Fi=f.onNewMessage)==null||Fi.call(f,[...d.messages],"answer"));const B=Me(d.chatMode)?bh(p.auth,s,{onMessage:C,onError:f.onError},p.externalId):Promise.resolve(void 0),H=es(()=>Xh(b,{...p,mode:d.chatMode,callbacks:{...f,onVideoIdChange:y,onMessage:C},rpcMethods:new Map([...S.keys()].map(Ne=>[Ne,x(Ne)]))},v,o,d.chat),{limit:3,timeout:Jl,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:Ne=>!(Ne instanceof qi&&(Ne.status===429||Ne.status===409||Ne.code==="InsufficientCreditsError")),delayMs:1e3}).catch(async Ne=>{var ti;throw B.then(Vt=>Vt==null?void 0:Vt.disconnect()).catch(()=>{}),Ne instanceof qi&&Ne.code==="NotReadyError"||await Dt(me.Maintenance),(ti=f.onConnectionStateChange)==null||ti.call(f,ie.Fail),Ne}),se=(Bi=d.chat)==null?void 0:Bi.id,[be,{streamingManager:$e,chat:fe}]=await Promise.all([B,H]),we=!!fe&&fe.id!==se;if(fe&&we&&((Ve=f.onNewChat)==null||Ve.call(f,fe.id)),d.streamingManager=$e,d.socketManager=be,d.chat=fe,ne){await re();return}U(),i=!1,o.enrich({chatId:fe==null?void 0:fe.id,streamId:$e==null?void 0:$e.streamId,mode:d.chatMode});const De=(we?fe==null?void 0:fe.chat_mode:void 0)??d.chatMode;if(k&&Ln(De)){console.warn(`[AgentManager] Ignoring chat mode "${De}": ${as}`);return}await Dt(De)}async function re(){var w,B,H;(w=d.socketManager)==null||w.disconnect(),await((B=d.streamingManager)==null?void 0:B.disconnect()),delete d.streamingManager,delete d.socketManager,h=void 0,(H=f.onConnectionStateChange)==null||H.call(f,ie.Disconnected)}function Me(w){return!k&&w!==me.DirectPlayback}function jt(w){const B=!Ln(w);return(!Me(w)||!!d.socketManager)&&(!B||!!d.chat)}async function Dt(w){var B;if(w!==d.chatMode){o.track("agent-mode-change",{mode:w}),d.chatMode=w;const H=!!d.streamingManager||!!d.socketManager;(w!==me.Functional||H&&!jt(w))&&await re(),(B=f.onModeChange)==null||B.call(f,w)}}async function Ot(w){if(k&&Ln(w))throw new pe(as);await Dt(w)}return{agent:b,getStreamType:()=>{var w;return(w=d.streamingManager)==null?void 0:w.streamType},isInterruptAvailable:()=>{var w;return((w=d.streamingManager)==null?void 0:w.interruptAvailable)??!1},starterMessages:[...b.starter_message??[]],getSttToken:()=>v.getSttToken(b.id),getChatMode:()=>d.chatMode,getConnectionState:()=>l,getSessionInfo:()=>h,changeMode:Ot,enrichAnalytics:w=>o.enrich(w),async connect(){if(!f.onSrcObjectReady&&!Qr(d.chatMode))throw new pe(Lo);if(j)return ne=!1,j;if(d.streamingManager&&!Zh.includes(l))throw new pe("Already connected; call disconnect() first");await Ce(!0),d.streamingManager&&o.track("agent-chat",{event:"connect",mode:d.chatMode})},async reconnect(){if(j)throw new pe("A connect() is in flight; wait for it before calling reconnect()");return oe(async()=>{const w=d.streamingManager;let B;if(k&&(w!=null&&w.reconnect))try{await w.reconnect()}catch(H){const se=Wi(H);B=se.code??se.kind,await re(),await Le(!1)}else await re(),await Le(!1);o.track("agent-chat",{event:"reconnect",mode:d.chatMode,success:!!d.streamingManager,...B&&{fallbackReason:B}})})},async disconnect(){j&&(ne=!0),await re(),o.track("agent-chat",{event:"disconnect",mode:d.chatMode})},publishMicrophoneStream(w){var B;return(B=d.streamingManager)!=null&&B.publishMicrophoneStream?d.streamingManager.publishMicrophoneStream(w):Promise.reject(new pe("publishMicrophoneStream is only available on Expressive (V4) agents, after connect()"))},setSttLanguage(w){return!k||!d.streamingManager?Promise.reject(new pe("setSttLanguage is only available on Expressive (V4) agents, after connect()")):(o.track("agent-stt-language-change",{language:w}),d.streamingManager.sendDataChannelMessage(Fe.SttLanguage,JSON.stringify({language:w})))},sendDataChannelMessage(w,B){return!k||!d.streamingManager?Promise.reject(new pe("sendDataChannelMessage is only available on Expressive (V4) agents, after connect()")):(o.track("agent-data-message",{topic:w}),d.streamingManager.sendDataChannelMessage(w,JSON.stringify(B)))},unpublishMicrophoneStream(){var w;return(w=d.streamingManager)!=null&&w.unpublishMicrophoneStream?d.streamingManager.unpublishMicrophoneStream():Promise.resolve()},replaceMicrophoneTrack(w){var B;return(B=d.streamingManager)!=null&&B.replaceMicrophoneTrack?d.streamingManager.replaceMicrophoneTrack(w):Promise.reject(new pe("replaceMicrophoneTrack is only available on Expressive (V4) agents, after connect()"))},publishCameraStream(w){var B;return(B=d.streamingManager)!=null&&B.publishCameraStream?d.streamingManager.publishCameraStream(w):Promise.reject(new pe("publishCameraStream is only available on Expressive (V4) agents, after connect()"))},unpublishCameraStream(){var w;return(w=d.streamingManager)!=null&&w.unpublishCameraStream?d.streamingManager.unpublishCameraStream():Promise.resolve()},async chat(w){var be,$e,fe;const B=()=>{if(Ln(d.chatMode))throw new pe(`${d.chatMode} is enabled, chat is disabled`);if(w.length>=no)throw new pe(`Message cannot be more than ${no} characters`);if(w.length===0)throw new pe("Message cannot be empty");if(d.chatMode===me.Maintenance)throw new pe("Chat is in maintenance mode");if(![me.TextOnly,me.Playground].includes(d.chatMode)){if(!d.streamingManager)throw new pe("Streaming manager is not initialized");if(!d.chat)throw new pe("Chat is not initialized")}},H=async()=>{var we;if(!d.chat){const De=await wo(b,v,o,d.chatMode,p.persistentChat);if(!De.chat)throw new io(d.chatMode,!!p.persistentChat);d.chat=De.chat,(we=f.onNewChat)==null||we.call(f,d.chat.id)}return d.chat.id},se=async(we,De)=>{const ot=d.chatMode===me.Playground;return es(k&&!ot?async()=>{var Ve;return await((Ve=d.streamingManager)==null?void 0:Ve.sendDataChannelMessage(Fe.Chat,w)),Promise.resolve({})}:async()=>{var Ve,Ne;return v.chat(b.id,De,{chatMode:d.chatMode,streamId:(Ve=d.streamingManager)==null?void 0:Ve.streamId,sessionId:(Ne=d.streamingManager)==null?void 0:Ne.sessionId,messages:we.map(({matches:ti,createdAt:Vt,...ni})=>({...ni,created_at:Vt??new Date().toISOString()}))},{...Co(d.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:Ve=>{var Vt,ni,zr;const Ne=(Vt=Ve==null?void 0:Ve.message)==null?void 0:Vt.includes("missing or invalid session_id");return!((ni=Ve==null?void 0:Ve.message)==null?void 0:ni.includes("Stream Error"))&&!Ne?((zr=f.onError)==null||zr.call(f,Ve),!1):!0},onRetry:async()=>{await re(),await Ce(!1)}})};try{_(),B(),d.messages.push({id:pn(),role:"user",content:w,parts:si(w),createdAt:new Date(Lt.update()).toISOString()}),(be=f.onNewMessage)==null||be.call(f,[...d.messages],"user");const we=await H(),De=await se([...d.messages],we);return De.result&&d.messages.push({id:pn(),role:"assistant",content:De.result,parts:si(De.result),createdAt:new Date().toISOString(),context:De.context,matches:De.matches}),o.track("agent-message-send",{event:"success",messages:d.messages.length+1}),De.result&&(($e=f.onNewMessage)==null||$e.call(f,[...d.messages],"answer"),o.track("agent-message-received",{latency:Lt.get(!0),messages:d.messages.length})),De}catch(we){throw((fe=d.messages[d.messages.length-1])==null?void 0:fe.role)==="assistant"&&d.messages.pop(),o.track("agent-message-send",{event:"error",messages:d.messages.length,error:Wi(we)}),we}},async rate(w,B,H){var $e,fe,we,De;const se=d.messages.find(ot=>ot.id===w);if(d.chat){if(!se)throw new pe("Message not found")}else throw new pe("Chat is not initialized");const be=(($e=se.matches)==null?void 0:$e.map(ot=>[ot.document_id,ot.id]))??[];return o.track("agent-rate",{event:H?"update":"create",thumb:B===1?"up":"down",knowledge_id:((fe=b.knowledge)==null?void 0:fe.id)??"",matches:be,score:B}),H?v.updateRating(b.id,d.chat.id,H,{knowledge_id:((we=b.knowledge)==null?void 0:we.id)??"",message_id:w,matches:be,score:B}):v.createRating(b.id,d.chat.id,{knowledge_id:((De=b.knowledge)==null?void 0:De.id)??"",message_id:w,matches:be,score:B})},async deleteRate(w){if(!d.chat)throw new pe("Chat is not initialized");return o.track("agent-rate-delete",{type:"text"}),v.deleteRating(b.id,d.chat.id,w)},async submitFeedback(w,B){if(!d.chat)throw new pe("Chat is not initialized");return o.track("agent-feedback",{rating:w,hasAnswer:!!B}),v.submitFeedback(b.id,d.chat.id,{rating:w,answer:B})},async speak(w){var fe,we;function B(){return typeof w=="string"?{type:"text",input:w,ssml:!1}:w.type==="text"&&!w.provider?{type:"text",input:w.input,ssml:w.ssml,should_queue_speaks:w.should_queue_speaks,sentiment:w.sentiment}:w}const H=Qr(d.chatMode);if(!H&&!d.streamingManager)throw new pe("Please connect to the agent first");const se=B();o.track("agent-speak",se),Lt.update(),d.messages&&se.type==="text"&&(d.messages.push({id:pn(),role:"assistant",content:se.input,parts:si(se.input),createdAt:new Date().toISOString()}),(fe=f.onNewMessage)==null||fe.call(f,[...d.messages],"answer"));const be={duration:0,videoId:"",status:"success"};return H||!d.streamingManager?be:await d.streamingManager.speak({script:se,metadata:{chat_id:(we=d.chat)==null?void 0:we.id,agent_id:b.id}})??be},interrupt:T,registerClientTool:F,unregisterClientTool:A}}function tf(n){return n.some(e=>e.executionMode==="blocking")}function nf(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone??""}catch{return""}}function rf(){if(typeof navigator>"u")return"";const n=navigator.userAgent??"",e=(navigator.platform??"").toLowerCase();let t="Unknown";/android/i.test(n)?t="Android":/iphone|ipad|ipod/i.test(n)?t="iOS":e.includes("win")?t="Windows":e.includes("mac")?t="Mac OS X":e.includes("linux")&&(t="Linux");const i=t==="Android"||t==="iOS"||/Mobi/i.test(n);return`${t}, ${i?"Mobile":"Desktop"}`}function sf(){const n={},e=nf();e&&(n.timezone=e);const t=rf();return t&&(n.device=t),n}function af(n,e,t,i){const r=ts(n,`${e}/v2/agents/${t}`,i);return{async createStream(s){return r.post("/sessions",s)}}}const of={[G.ChatAnswer]:He.Answer,[G.ChatPartial]:He.Partial},No=2e4,cf=[];let os;function Uo(){return os??(os=Promise.resolve().then(()=>Ny).catch(()=>{throw os=void 0,new Error("LiveKit client is required for this streaming manager. Please install it using: npm install livekit-client")})),os}function df(){Uo().catch(()=>{})}const uf={excellent:vt.Strong,good:vt.Strong,poor:vt.Weak,lost:vt.Unknown,unknown:vt.Unknown},oi=(n="Stream Error")=>new Ki(n),lf=new TextDecoder;function hf(n){return{callId:n.call_id,name:n.name,input:n.input,...n.output!==void 0?{output:n.output}:{},interruptible:n.interruptible===!0,executionMode:n.execution_mode==="async"?"async":"blocking",...n.turn_id!==void 0?{turnId:n.turn_id}:{},timestamp:n.timestamp}}function Fo(n){return{callId:n.call_id,name:n.name,input:n.input,output:n.output,durationMs:n.duration_ms,extra:n.extra,timestamp:n.timestamp}}function ff(n){var t;const e=(t=n.extra)==null?void 0:t.error;return typeof(e==null?void 0:e.message)=="string"&&e.message?e.message:typeof n.output=="string"&&n.output?n.output:void 0}function mf(n){const e=ff(n);return{...Fo(n),output:n.output,...e!==void 0?{error:e}:{}}}function Bo(n,e){return async t=>{try{return await e(t)}catch(i){throw i instanceof n?i:new n(n.ErrorCode.APPLICATION_ERROR,(i==null?void 0:i.message)||"Client tool failed")}}}function jo(n,e,t){var i,r;throw e("Failed to connect to LiveKit room:",n),(i=t.onConnectionStateChange)==null||i.call(t,ie.Fail,"internal:init-error"),(r=t.onError)==null||r.call(t,n,{}),n}async function pf(n,e,t){var jl;const i=Po(t.debug||!1,"LiveKitStreamingManager"),{Room:r,RoomEvent:s,ConnectionState:a,RpcError:c,Track:d}=await Uo(),{callbacks:o,auth:u,baseURL:l,analytics:h}=t;let f=null,p=!1;const v=yt.Fluent;let b=null;const k={isPublishing:!1,publication:null},C={isPublishing:!1,publication:null};let _=null,y=null,T=null,S=!1;f=new r({adaptiveStream:!1,dynacast:!0});for(const[E,M]of t.rpcMethods??[])f.registerRpcMethod(E,Bo(c,M));let x=null,U=Pe.Idle,F=!0;const A=new Map;let N=null,j=null;const ne=af(u,l||ri,n,o.onError);let oe,Ce,Le,re=!0;try{const E=await ne.createStream({transport:e.transport,chat_persist:e.chat_persist??!1,verbose:t.verbose??!1}),{id:M,session_token:V,session_url:z,interrupt_enabled:he}=E;(jl=o.onStreamCreated)==null||jl.call(o,{sessionId:M,streamId:M,agentId:n}),oe=M,Ce=V,Le=z,re=he??!0,await f.prepareConnection(Le,Ce)}catch(E){jo(E,i,o)}if(!Le||!Ce||!oe)return Promise.reject(new Error("Failed to initialize LiveKit stream"));const Me=E=>{var M;return(M=o.onError)==null?void 0:M.call(o,E,{sessionId:oe})};f.on(s.ConnectionStateChanged,Ot).on(s.ConnectionQualityChanged,At).on(s.ParticipantConnected,xt).on(s.ParticipantDisconnected,nn).on(s.TrackSubscribed,w).on(s.TrackUnsubscribed,B).on(s.DataReceived,Vt).on(s.MediaDevicesError,ni).on(s.TranscriptionReceived,jt).on(s.EncryptionError,zr).on(s.TrackSubscriptionFailed,Uy);function jt(E,M){M!=null&&M.isLocal&&Lt.update()}async function Dt(){const E=sf();if(!(!f||Object.keys(E).length===0))try{await f.localParticipant.setAttributes(E)}catch(M){i("Failed to set user context attributes",M)}}try{await f.connect(Le,Ce),i("LiveKit room joined successfully"),Dt(),x=setTimeout(()=>{i(`Track subscription timeout - no track subscribed within ${No/1e3} seconds after connect`),x=null;const E=oi("Track subscription timeout");h.track("connectivity-error",{error:Wi(E),sessionId:oe}),Me(E),$a("internal:track-subscription-timeout")},No)}catch(E){jo(E,i,o)}h.enrich({"stream-type":v});function Ot(E){var M,V,z,he;switch(i("Connection state changed:",E),E){case a.Connecting:i("CALLBACK: onConnectionStateChange(Connecting)"),(M=o.onConnectionStateChange)==null||M.call(o,ie.Connecting,"livekit:connecting");break;case a.Connected:i("LiveKit room connected successfully"),p=!0;break;case a.Disconnected:i("LiveKit room disconnected"),p=!1,S=!1,k.publication=null,C.publication=null,(V=o.onConnectionStateChange)==null||V.call(o,ie.Disconnected,j??"livekit:disconnected");break;case a.Reconnecting:i("LiveKit room reconnecting..."),(z=o.onConnectionStateChange)==null||z.call(o,ie.Connecting,"livekit:reconnecting");break;case a.SignalReconnecting:i("LiveKit room signal reconnecting..."),(he=o.onConnectionStateChange)==null||he.call(o,ie.Connecting,"livekit:signal-reconnecting");break}}function At(E,M){var V;i("Connection quality:",E),M!=null&&M.isLocal&&((V=o.onConnectivityStateChange)==null||V.call(o,uf[E]))}function xt(E){i("Participant connected:",E.identity)}function nn(E){i("Participant disconnected:",E.identity),$a("livekit:participant-disconnected")}function W(){var E;T!==X.Start&&(i("CALLBACK: onVideoStateChange(Start)"),T=X.Start,(E=o.onVideoStateChange)==null||E.call(o,X.Start))}function K(E){var M;T!==X.Stop&&(i("CALLBACK: onVideoStateChange(Stop)"),T=X.Stop,(M=o.onVideoStateChange)==null||M.call(o,X.Stop,E))}function w(E,M,V){var he,ke,ue;i(`Track subscribed: ${E.kind} from ${V.identity}`);const z=E.mediaStreamTrack;if(!z){i(`No mediaStreamTrack available for ${E.kind}`);return}b?(b.addTrack(z),i(`Added ${E.kind} track to shared MediaStream`)):(b=new MediaStream([z]),i(`Created shared MediaStream with ${E.kind} track`)),E.kind==="audio"&&(y=Oh(()=>E.getRTCStatsReport(),({sttLatency:Ue,serviceLatency:nt})=>{var Vl,ql,Kl;const ji=Lt.get(!0);let Vi=0;if(Ue){const Hl=((ql=(Vl=_==null?void 0:_.getReport())==null?void 0:Vl.webRTCStats)==null?void 0:ql.avgRtt)??0;Vi=Hl>0?Math.round(Hl*1e3):0}const ii=ji>0?ji+(Ue??0)+Vi:void 0,rn=ii!==void 0&&nt!==void 0?ii-nt:void 0;(Kl=o.onFirstAudioDetected)==null||Kl.call(o,{latency:ii,networkLatency:rn})})),E.kind==="video"&&((he=o.onStreamReady)==null||he.call(o),i("CALLBACK: onSrcObjectReady"),(ke=o.onSrcObjectReady)==null||ke.call(o,b),S||(S=!0,i("CALLBACK: onConnectionStateChange(Connected)"),(ue=o.onConnectionStateChange)==null||ue.call(o,ie.Connected,"livekit:track-subscribed")),_=Mo(()=>E.getRTCStatsReport(),()=>p,Wl,(Ue,nt)=>{i(`Video state change: ${Ue}`),Ue===X.Start?(x&&(clearTimeout(x),x=null,i("Track subscription timeout cleared")),W()):Ue===X.Stop&&K(nt)}),_.start())}function B(E,M,V){i(`Track unsubscribed: ${E.kind} from ${V.identity}`),E.kind==="audio"&&(y==null||y.destroy(),y=null),E.kind==="video"&&(K((_==null?void 0:_.getReport())??void 0),_==null||_.stop(),_=null)}function H(E,M){var z;const V=of[E];V&&((z=o.onMessage)==null||z.call(o,V,{event:V,...M}))}function se(E,M){var V,z,he,ke;if(E===G.ToolCallStarted){const ue=hf(M);A.set(ue.callId,{call:{callId:ue.callId,name:ue.name,executionMode:ue.executionMode},interruptible:ue.interruptible,turnId:ue.turnId??N}),fe(),we(),U=Pe.ToolActive,(V=o.onAgentActivityStateChange)==null||V.call(o,Pe.ToolActive),(z=o.onToolEvent)==null||z.call(o,mn.Started,ue);return}if(E===G.ToolCallDone){const ue=Fo(M);be(ue.callId),(he=o.onToolEvent)==null||he.call(o,mn.Done,ue);return}if(E===G.ToolCallError){const ue=mf(M);be(ue.callId),(ke=o.onToolEvent)==null||ke.call(o,mn.Error,ue)}}function be(E){A.delete(E)&&(fe(),we())}function $e(E){let M=!1;for(const[V,z]of A)z.call.executionMode==="blocking"&&(E!==null&&z.turnId!==null&&z.turnId!==E||(A.delete(V),M=!0));M&&(fe(),we())}function fe(){var M;const E=![...A.values()].some(({call:V})=>V.executionMode==="blocking");E!==F&&(F=E,(M=o.onInterruptibleChange)==null||M.call(o,E))}function we(){var E;(E=o.onRunningToolCallsChange)==null||E.call(o,A.size===0?cf:[...A.values()].map(({call:M})=>M))}function De(E,M){var V,z,he;if(E===G.StreamVideoCreated){U=Pe.Talking,(V=o.onAgentActivityStateChange)==null||V.call(o,Pe.Talking),y==null||y.arm({sttLatency:(z=M==null?void 0:M.stt)==null?void 0:z.latency,serviceLatency:M==null?void 0:M.serviceLatency});return}if(A.size>0){U!==Pe.ToolActive&&(U=Pe.ToolActive,(he=o.onAgentActivityStateChange)==null||he.call(o,Pe.ToolActive));return}}function ot(E,M){var ke,ue,Ue,nt;const V=((ue=(ke=_==null?void 0:_.getReport())==null?void 0:ke.webRTCStats)==null?void 0:ue.avgRtt)??0,z=V>0?Math.round(V/2*1e3):0,he={...M,downstreamNetworkLatency:z};t.debug&&((Ue=M==null?void 0:M.metadata)!=null&&Ue.sentiment)&&(he.sentiment={id:M.metadata.sentiment.id,name:M.metadata.sentiment.sentiment}),(nt=o.onMessage)==null||nt.call(o,E,he),De(E,M)}function Fi(E,M){var V;(V=o.onMessage)==null||V.call(o,He.Transcribe,{event:He.Transcribe,...M}),queueMicrotask(()=>{var z;(z=o.onAgentActivityStateChange)==null||z.call(o,Pe.Loading)})}function Bi(E,M){var V;N=(M==null?void 0:M.turn_id)??null,U=Pe.Loading,(V=o.onAgentActivityStateChange)==null||V.call(o,Pe.Loading)}function Ve(E,M){var z;const V=(M==null?void 0:M.turn_id)??null;N!==null&&V!==null&&V<N||($e(V),U=Pe.Idle,(z=o.onAgentActivityStateChange)==null||z.call(o,Pe.Idle))}function Ne(E,M){j=(M==null?void 0:M.reason)??null}const ti={[G.ChatAnswer]:H,[G.ChatPartial]:H,[G.ToolCallStarted]:se,[G.ToolCallDone]:se,[G.ToolCallError]:se,[G.StreamVideoCreated]:ot,[G.StreamVideoDone]:ot,[G.StreamVideoError]:ot,[G.StreamVideoRejected]:ot,[G.ChatAudioTranscribed]:Fi,[G.TurnStarted]:Bi,[G.TurnEnded]:Ve,[G.StreamDone]:Ne,[G.StreamFailed]:Ne};function Vt(E,M,V,z){const he=lf.decode(E);let ke;try{ke=JSON.parse(he)}catch(nt){i("Failed to parse data channel message:",nt);return}const ue=z||ke.subject;if(i("Data received:",{subject:ue,data:ke}),!ue)return;const Ue=ti[ue];if(Ue)try{Ue(ue,ke)}catch(nt){console.warn("[LiveKitStreamingManager] Data channel handler failed",{subject:ue,error:nt})}}function ni(E){i("Media devices error:",E),Me(oi())}function zr(E){i("Encryption error:",E),Me(oi())}function Uy(E,M,V){i("Track subscription failed:",{trackSid:E,participant:M,reason:V})}function Fy(E,M,V){for(const[z,he]of V)if(he.source===M&&he.track){const ke=he.track.mediaStreamTrack;if(ke===E||(ke==null?void 0:ke.id)===E.id)return he}return null}async function Fl(E,M,V,z,he,ke){var ji,Vi,ii;if(!p||!f)throw i(`Room is not connected, cannot publish ${z} stream`),new Error("Room is not connected");if(E.isPublishing){i(`${z} publish already in progress, skipping`);return}const ue=V(M);if(ue.length===0)throw new Error(`No ${z} track found in the provided MediaStream`);const Ue=ue[0],nt=Fy(Ue,z,he());if(nt){i(`${z} track is already published, skipping`,{trackId:Ue.id,publishedTrackId:(Vi=(ji=nt.track)==null?void 0:ji.mediaStreamTrack)==null?void 0:Vi.id}),E.publication=nt;return}if((ii=E.publication)!=null&&ii.track){const rn=E.publication.track.mediaStreamTrack;rn!==Ue&&(rn==null?void 0:rn.id)!==Ue.id&&(i(`Unpublishing existing ${z} track before publishing new one`),await ke())}i(`Publishing ${z} track from provided MediaStream`,{trackId:Ue.id}),E.isPublishing=!0;try{E.publication=await f.localParticipant.publishTrack(Ue,{source:z}),i(`${z} track published successfully`,{trackSid:E.publication.trackSid})}catch(rn){throw i(`Failed to publish ${z} track:`,rn),rn}finally{E.isPublishing=!1}}async function Bl(E,M){if(!(!E.publication||!E.publication.track))try{f&&(await f.localParticipant.unpublishTrack(E.publication.track,!1),i(`${M} track unpublished`))}catch(V){i(`Error unpublishing ${M} track:`,V)}finally{E.publication=null}}async function By(E){return Fl(k,E,M=>M.getAudioTracks(),d.Source.Microphone,()=>f.localParticipant.audioTrackPublications,za)}async function za(){return Bl(k,"Microphone")}async function jy(E){if(!p||!f)throw i("Cannot replace microphone track: room is not connected"),new Error("Room is not connected");if(E.kind!=="audio")throw i("Cannot replace microphone track: not an audio track",{kind:E.kind}),new Error("Microphone track must be an audio track");if(k.isPublishing)throw i("Cannot replace microphone track: publish in progress"),new Error("Microphone publish in progress");const M=k.publication;if(!M||!M.track)throw i("Cannot replace microphone track: no publication to replace"),new Error("No microphone publication to replace");try{k.isPublishing=!0,await M.track.replaceTrack(E),i("Microphone track replaced",{trackId:E.id,trackSid:M.trackSid})}finally{k.isPublishing=!1}}async function Vy(E){return Fl(C,E,M=>M.getVideoTracks(),d.Source.Camera,()=>f.localParticipant.videoTrackPublications,Ja)}async function Ja(){return Bl(C,"Camera")}function qy(){b&&(b.getTracks().forEach(E=>E.stop()),b=null)}async function Ga(E,M){if(!p||!f){i("Room is not connected for sending messages"),Me(oi());return}try{await f.localParticipant.sendText(M,{topic:E}),i("Message sent successfully:",M)}catch(V){i("Failed to send message:",V),Me(oi())}}async function $a(E){var M,V;x&&(clearTimeout(x),x=null),y==null||y.destroy(),y=null,f&&((M=o.onConnectionStateChange)==null||M.call(o,ie.Disconnecting,E),await Promise.all([za(),Ja()]),await f.disconnect()),qy(),p=!1,S=!1,A.size>0&&(A.clear(),fe(),we()),N=null,(V=o.onAgentActivityStateChange)==null||V.call(o,Pe.Idle),U=Pe.Idle}return{speak(E){const M=typeof E=="string"?E:JSON.stringify(E);return Ga(Fe.Speak,M)},disconnect:()=>$a("user:disconnect"),async reconnect(){var E,M;if((f==null?void 0:f.state)===a.Connected){i("Room is already connected");return}if(!f||!Le||!Ce)throw i("Cannot reconnect: missing room, URL or token"),new Error("Cannot reconnect: session not available");i("Reconnecting to LiveKit room, state:",f.state),S=!1,j=null,(E=o.onConnectionStateChange)==null||E.call(o,ie.Connecting,"user:reconnect");try{if(await f.connect(Le,Ce),i("Room reconnected"),p=!0,f.remoteParticipants.size===0){if(i("Waiting for agent to join..."),!await new Promise(z=>{const he=setTimeout(()=>{f==null||f.off(s.ParticipantConnected,ke),z(!1)},5e3),ke=()=>{clearTimeout(he),f==null||f.off(s.ParticipantConnected,ke),z(!0)};f==null||f.on(s.ParticipantConnected,ke)}))throw i("Agent did not join within timeout"),await f.disconnect(),new Error("Agent did not rejoin the room");i("Agent joined, reconnection successful")}}catch(V){throw i("Failed to reconnect:",V),(M=o.onConnectionStateChange)==null||M.call(o,ie.Fail,"user:reconnect-failed"),V}},sendDataChannelMessage:Ga,publishMicrophoneStream:By,unpublishMicrophoneStream:za,replaceMicrophoneTrack:jy,publishCameraStream:Vy,unpublishCameraStream:Ja,interrupt(E){return E==="text"||!p||!f?!1:(Ga(Fe.Interrupt,""),!0)},registerRpcMethod(E,M){f==null||f.registerRpcMethod(E,Bo(c,M))},unregisterRpcMethod(E){f==null||f.unregisterRpcMethod(E)},sessionId:oe,streamId:oe,streamType:v,interruptAvailable:re,get isInterruptible(){return F}}}const Vo=Object.freeze(Object.defineProperty({__proto__:null,createLiveKitStreamingManager:pf,preloadLiveKit:df},Symbol.toStringTag,{value:"Module"}));function gf(n,e){return e.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(i){if(i!=="default"&&!(i in n)){var r=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(n,i,r.get?r:{enumerable:!0,get:function(){return t[i]}})}})}),Object.freeze(n)}var vf=Object.defineProperty,yf=(n,e,t)=>e in n?vf(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,qo=(n,e,t)=>yf(n,typeof e!="symbol"?e+"":e,t);class Ae{constructor(){qo(this,"_locking"),qo(this,"_locks"),this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){this._locks+=1;let e;const t=new Promise(r=>e=()=>{this._locks-=1,r()}),i=this._locking.then(()=>e);return this._locking=this._locking.then(()=>t),i}}function Ee(n,e){if(!n)throw new Error(e)}const bf=34028234663852886e22,kf=-34028234663852886e22,Tf=4294967295,Sf=2147483647,Cf=-2147483648;function Gi(n){if(typeof n!="number")throw new Error("invalid int 32: "+typeof n);if(!Number.isInteger(n)||n>Sf||n<Cf)throw new Error("invalid int 32: "+n)}function cs(n){if(typeof n!="number")throw new Error("invalid uint 32: "+typeof n);if(!Number.isInteger(n)||n>Tf||n<0)throw new Error("invalid uint 32: "+n)}function Ko(n){if(typeof n!="number")throw new Error("invalid float 32: "+typeof n);if(Number.isFinite(n)&&(n>bf||n<kf))throw new Error("invalid float 32: "+n)}const Ho=Symbol("@bufbuild/protobuf/enum-type");function wf(n){const e=n[Ho];return Ee(e,"missing enum type on enum object"),e}function Wo(n,e,t,i){n[Ho]=zo(e,t.map(r=>({no:r.no,name:r.name,localName:n[r.no]})))}function zo(n,e,t){const i=Object.create(null),r=Object.create(null),s=[];for(const a of e){const c=Jo(a);s.push(c),i[a.name]=c,r[a.no]=c}return{typeName:n,values:s,findName(a){return i[a]},findNumber(a){return r[a]}}}function Ef(n,e,t){const i={};for(const r of e){const s=Jo(r);i[s.localName]=s.no,i[s.no]=s.localName}return Wo(i,n,e),i}function Jo(n){return"localName"in n?n:Object.assign(Object.assign({},n),{localName:n.name})}class ds{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){const i=this.getType(),r=i.runtime.bin,s=r.makeReadOptions(t);return r.readMessage(this,s.readerFactory(e),e.byteLength,s),this}fromJson(e,t){const i=this.getType(),r=i.runtime.json,s=r.makeReadOptions(t);return r.readMessage(i,e,s,this),this}fromJsonString(e,t){let i;try{i=JSON.parse(e)}catch(r){throw new Error("cannot decode ".concat(this.getType().typeName," from JSON: ").concat(r instanceof Error?r.message:String(r)))}return this.fromJson(i,t)}toBinary(e){const t=this.getType(),i=t.runtime.bin,r=i.makeWriteOptions(e),s=r.writerFactory();return i.writeMessage(this,s,r),s.finish()}toJson(e){const t=this.getType(),i=t.runtime.json,r=i.makeWriteOptions(e);return i.writeMessage(this,r)}toJsonString(e){var t;const i=this.toJson(e);return JSON.stringify(i,null,(t=e==null?void 0:e.prettySpaces)!==null&&t!==void 0?t:0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}}function Rf(n,e,t,i){var r;const s=(r=i==null?void 0:i.localName)!==null&&r!==void 0?r:e.substring(e.lastIndexOf(".")+1),a={[s]:function(c){n.util.initFields(this),n.util.initPartial(c,this)}}[s];return Object.setPrototypeOf(a.prototype,new ds),Object.assign(a,{runtime:n,typeName:e,fields:n.util.newFieldList(t),fromBinary(c,d){return new a().fromBinary(c,d)},fromJson(c,d){return new a().fromJson(c,d)},fromJsonString(c,d){return new a().fromJsonString(c,d)},equals(c,d){return n.util.equals(a,c,d)}}),a}function Pf(){let n=0,e=0;for(let i=0;i<28;i+=7){let r=this.buf[this.pos++];if(n|=(r&127)<<i,(r&128)==0)return this.assertBounds(),[n,e]}let t=this.buf[this.pos++];if(n|=(t&15)<<28,e=(t&112)>>4,(t&128)==0)return this.assertBounds(),[n,e];for(let i=3;i<=31;i+=7){let r=this.buf[this.pos++];if(e|=(r&127)<<i,(r&128)==0)return this.assertBounds(),[n,e]}throw new Error("invalid varint")}function us(n,e,t){for(let s=0;s<28;s=s+7){const a=n>>>s,c=!(!(a>>>7)&&e==0),d=(c?a|128:a)&255;if(t.push(d),!c)return}const i=n>>>28&15|(e&7)<<4,r=e>>3!=0;if(t.push((r?i|128:i)&255),!!r){for(let s=3;s<31;s=s+7){const a=e>>>s,c=!!(a>>>7),d=(c?a|128:a)&255;if(t.push(d),!c)return}t.push(e>>>31&1)}}const $i=4294967296;function Go(n){const e=n[0]==="-";e&&(n=n.slice(1));const t=1e6;let i=0,r=0;function s(a,c){const d=Number(n.slice(a,c));r*=t,i=i*t+d,i>=$i&&(r=r+(i/$i|0),i=i%$i)}return s(-24,-18),s(-18,-12),s(-12,-6),s(-6),e?Yo(i,r):ls(i,r)}function _f(n,e){let t=ls(n,e);const i=t.hi&2147483648;i&&(t=Yo(t.lo,t.hi));const r=$o(t.lo,t.hi);return i?"-"+r:r}function $o(n,e){if({lo:n,hi:e}=If(n,e),e<=2097151)return String($i*e+n);const t=n&16777215,i=(n>>>24|e<<8)&16777215,r=e>>16&65535;let s=t+i*6777216+r*6710656,a=i+r*8147497,c=r*2;const d=1e7;return s>=d&&(a+=Math.floor(s/d),s%=d),a>=d&&(c+=Math.floor(a/d),a%=d),c.toString()+Qo(a)+Qo(s)}function If(n,e){return{lo:n>>>0,hi:e>>>0}}function ls(n,e){return{lo:n|0,hi:e|0}}function Yo(n,e){return e=~e,n?n=~n+1:e+=1,ls(n,e)}const Qo=n=>{const e=String(n);return"0000000".slice(e.length)+e};function Xo(n,e){if(n>=0){for(;n>127;)e.push(n&127|128),n=n>>>7;e.push(n)}else{for(let t=0;t<9;t++)e.push(n&127|128),n=n>>7;e.push(1)}}function Mf(){let n=this.buf[this.pos++],e=n&127;if((n&128)==0)return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<7,(n&128)==0)return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<14,(n&128)==0)return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<21,(n&128)==0)return this.assertBounds(),e;n=this.buf[this.pos++],e|=(n&15)<<28;for(let t=5;(n&128)!==0&&t<10;t++)n=this.buf[this.pos++];if((n&128)!=0)throw new Error("invalid varint");return this.assertBounds(),e>>>0}function Df(){const n=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof n.getBigInt64=="function"&&typeof n.getBigUint64=="function"&&typeof n.setBigInt64=="function"&&typeof n.setBigUint64=="function"&&(typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){const r=BigInt("-9223372036854775808"),s=BigInt("9223372036854775807"),a=BigInt("0"),c=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(d){const o=typeof d=="bigint"?d:BigInt(d);if(o>s||o<r)throw new Error("int64 invalid: ".concat(d));return o},uParse(d){const o=typeof d=="bigint"?d:BigInt(d);if(o>c||o<a)throw new Error("uint64 invalid: ".concat(d));return o},enc(d){return n.setBigInt64(0,this.parse(d),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},uEnc(d){return n.setBigInt64(0,this.uParse(d),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},dec(d,o){return n.setInt32(0,d,!0),n.setInt32(4,o,!0),n.getBigInt64(0,!0)},uDec(d,o){return n.setInt32(0,d,!0),n.setInt32(4,o,!0),n.getBigUint64(0,!0)}}}const t=r=>Ee(/^-?[0-9]+$/.test(r),"int64 invalid: ".concat(r)),i=r=>Ee(/^[0-9]+$/.test(r),"uint64 invalid: ".concat(r));return{zero:"0",supported:!1,parse(r){return typeof r!="string"&&(r=r.toString()),t(r),r},uParse(r){return typeof r!="string"&&(r=r.toString()),i(r),r},enc(r){return typeof r!="string"&&(r=r.toString()),t(r),Go(r)},uEnc(r){return typeof r!="string"&&(r=r.toString()),i(r),Go(r)},dec(r,s){return _f(r,s)},uDec(r,s){return $o(r,s)}}}const ge=Df();var P;(function(n){n[n.DOUBLE=1]="DOUBLE",n[n.FLOAT=2]="FLOAT",n[n.INT64=3]="INT64",n[n.UINT64=4]="UINT64",n[n.INT32=5]="INT32",n[n.FIXED64=6]="FIXED64",n[n.FIXED32=7]="FIXED32",n[n.BOOL=8]="BOOL",n[n.STRING=9]="STRING",n[n.BYTES=12]="BYTES",n[n.UINT32=13]="UINT32",n[n.SFIXED32=15]="SFIXED32",n[n.SFIXED64=16]="SFIXED64",n[n.SINT32=17]="SINT32",n[n.SINT64=18]="SINT64"})(P||(P={}));var sn;(function(n){n[n.BIGINT=0]="BIGINT",n[n.STRING=1]="STRING"})(sn||(sn={}));function an(n,e,t){if(e===t)return!0;if(n==P.BYTES){if(!(e instanceof Uint8Array)||!(t instanceof Uint8Array)||e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0}switch(n){case P.UINT64:case P.FIXED64:case P.INT64:case P.SFIXED64:case P.SINT64:return e==t}return!1}function Nn(n,e){switch(n){case P.BOOL:return!1;case P.UINT64:case P.FIXED64:case P.INT64:case P.SFIXED64:case P.SINT64:return e==0?ge.zero:"0";case P.DOUBLE:case P.FLOAT:return 0;case P.BYTES:return new Uint8Array(0);case P.STRING:return"";default:return 0}}function Zo(n,e){switch(n){case P.BOOL:return e===!1;case P.STRING:return e==="";case P.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}var _e;(function(n){n[n.Varint=0]="Varint",n[n.Bit64=1]="Bit64",n[n.LengthDelimited=2]="LengthDelimited",n[n.StartGroup=3]="StartGroup",n[n.EndGroup=4]="EndGroup",n[n.Bit32=5]="Bit32"})(_e||(_e={}));class Of{constructor(e){this.stack=[],this.textEncoder=e??new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let r=0;r<this.chunks.length;r++)e+=this.chunks[r].length;let t=new Uint8Array(e),i=0;for(let r=0;r<this.chunks.length;r++)t.set(this.chunks[r],i),i+=this.chunks[r].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(cs(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return Gi(e),Xo(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){Ko(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){cs(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){Gi(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return Gi(e),e=(e<<1^e>>31)>>>0,Xo(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),r=ge.enc(e);return i.setInt32(0,r.lo,!0),i.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),r=ge.uEnc(e);return i.setInt32(0,r.lo,!0),i.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=ge.enc(e);return us(t.lo,t.hi,this.buf),this}sint64(e){let t=ge.enc(e),i=t.hi>>31,r=t.lo<<1^i,s=(t.hi<<1|t.lo>>>31)^i;return us(r,s,this.buf),this}uint64(e){let t=ge.uEnc(e);return us(t.lo,t.hi,this.buf),this}}class Af{constructor(e,t){this.varint64=Pf,this.uint32=Mf,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=t??new TextDecoder}tag(){let e=this.uint32(),t=e>>>3,i=e&7;if(t<=0||i<0||i>5)throw new Error("illegal tag: field no "+t+" wire type "+i);return[t,i]}skip(e,t){let i=this.pos;switch(e){case _e.Varint:for(;this.buf[this.pos++]&128;);break;case _e.Bit64:this.pos+=4;case _e.Bit32:this.pos+=4;break;case _e.LengthDelimited:let r=this.uint32();this.pos+=r;break;case _e.StartGroup:for(;;){const[s,a]=this.tag();if(a===_e.EndGroup){if(t!==void 0&&s!==t)throw new Error("invalid end group tag");break}this.skip(a,s)}break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(i,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return ge.dec(...this.varint64())}uint64(){return ge.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),i=-(e&1);return e=(e>>>1|(t&1)<<31)^i,t=t>>>1^i,ge.dec(e,t)}bool(){let[e,t]=this.varint64();return e!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return ge.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return ge.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}function xf(n,e,t,i){let r;return{typeName:e,extendee:t,get field(){if(!r){const s=typeof i=="function"?i():i;s.name=e.split(".").pop(),s.jsonName="[".concat(e,"]"),r=n.util.newFieldList([s]).list()[0]}return r},runtime:n}}function ec(n){const e=n.field.localName,t=Object.create(null);return t[e]=Lf(n),[t,()=>t[e]]}function Lf(n){const e=n.field;if(e.repeated)return[];if(e.default!==void 0)return e.default;switch(e.kind){case"enum":return e.T.values[0].no;case"scalar":return Nn(e.T,e.L);case"message":const t=e.T,i=new t;return t.fieldWrapper?t.fieldWrapper.unwrapField(i):i;case"map":throw"map fields are not allowed to be extensions"}}function Nf(n,e){if(!e.repeated&&(e.kind=="enum"||e.kind=="scalar")){for(let t=n.length-1;t>=0;--t)if(n[t].no==e.no)return[n[t]];return[]}return n.filter(t=>t.no===e.no)}let Kt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),Yi=[];for(let n=0;n<Kt.length;n++)Yi[Kt[n].charCodeAt(0)]=n;Yi[45]=Kt.indexOf("+"),Yi[95]=Kt.indexOf("/");const tc={dec(n){let e=n.length*3/4;n[n.length-2]=="="?e-=2:n[n.length-1]=="="&&(e-=1);let t=new Uint8Array(e),i=0,r=0,s,a=0;for(let c=0;c<n.length;c++){if(s=Yi[n.charCodeAt(c)],s===void 0)switch(n[c]){case"=":r=0;case`
2
2
  `:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string.")}switch(r){case 0:a=s,r=1;break;case 1:t[i++]=a<<2|(s&48)>>4,a=s,r=2;break;case 2:t[i++]=(a&15)<<4|(s&60)>>2,a=s,r=3;break;case 3:t[i++]=(a&3)<<6|s,r=0;break}}if(r==1)throw Error("invalid base64 string.");return t.subarray(0,i)},enc(n){let e="",t=0,i,r=0;for(let s=0;s<n.length;s++)switch(i=n[s],t){case 0:e+=Kt[i>>2],r=(i&3)<<4,t=1;break;case 1:e+=Kt[r|i>>4],r=(i&15)<<2,t=2;break;case 2:e+=Kt[r|i>>6],e+=Kt[i&63],t=0;break}return t&&(e+=Kt[r],e+="=",t==1&&(e+="=")),e}};function Uf(n,e,t){ic(e,n);const i=e.runtime.bin.makeReadOptions(t),r=Nf(n.getType().runtime.bin.listUnknownFields(n),e.field),[s,a]=ec(e);for(const c of r)e.runtime.bin.readField(s,i.readerFactory(c.data),e.field,c.wireType,i);return a()}function Ff(n,e,t,i){ic(e,n);const r=e.runtime.bin.makeReadOptions(i),s=e.runtime.bin.makeWriteOptions(i);if(nc(n,e)){const o=n.getType().runtime.bin.listUnknownFields(n).filter(u=>u.no!=e.field.no);n.getType().runtime.bin.discardUnknownFields(n);for(const u of o)n.getType().runtime.bin.onUnknownField(n,u.no,u.wireType,u.data)}const a=s.writerFactory();let c=e.field;!c.opt&&!c.repeated&&(c.kind=="enum"||c.kind=="scalar")&&(c=Object.assign(Object.assign({},e.field),{opt:!0})),e.runtime.bin.writeField(c,t,a,s);const d=r.readerFactory(a.finish());for(;d.pos<d.len;){const[o,u]=d.tag(),l=d.skip(u,o);n.getType().runtime.bin.onUnknownField(n,o,u,l)}}function nc(n,e){const t=n.getType();return e.extendee.typeName===t.typeName&&!!t.runtime.bin.listUnknownFields(n).find(i=>i.no==e.field.no)}function ic(n,e){Ee(n.extendee.typeName==e.getType().typeName,"extension ".concat(n.typeName," can only be applied to message ").concat(n.extendee.typeName))}function rc(n,e){const t=n.localName;if(n.repeated)return e[t].length>0;if(n.oneof)return e[n.oneof.localName].case===t;switch(n.kind){case"enum":case"scalar":return n.opt||n.req?e[t]!==void 0:n.kind=="enum"?e[t]!==n.T.values[0].no:!Zo(n.T,e[t]);case"message":return e[t]!==void 0;case"map":return Object.keys(e[t]).length>0}}function sc(n,e){const t=n.localName,i=!n.opt&&!n.req;if(n.repeated)e[t]=[];else if(n.oneof)e[n.oneof.localName]={case:void 0};else switch(n.kind){case"map":e[t]={};break;case"enum":e[t]=i?n.T.values[0].no:void 0;break;case"scalar":e[t]=i?Nn(n.T,n.L):void 0;break;case"message":e[t]=void 0;break}}function Ht(n,e){if(n===null||typeof n!="object"||!Object.getOwnPropertyNames(ds.prototype).every(i=>i in n&&typeof n[i]=="function"))return!1;const t=n.getType();return t===null||typeof t!="function"||!("typeName"in t)||typeof t.typeName!="string"?!1:e===void 0?!0:t.typeName==e.typeName}function ac(n,e){return Ht(e)||!n.fieldWrapper?e:n.fieldWrapper.wrapField(e)}P.DOUBLE,P.FLOAT,P.INT64,P.UINT64,P.INT32,P.UINT32,P.BOOL,P.STRING,P.BYTES;const oc={ignoreUnknownFields:!1},cc={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function Bf(n){return n?Object.assign(Object.assign({},oc),n):oc}function jf(n){return n?Object.assign(Object.assign({},cc),n):cc}const Qi=Symbol(),Xi=Symbol();function Vf(){return{makeReadOptions:Bf,makeWriteOptions:jf,readMessage(n,e,t,i){if(e==null||Array.isArray(e)||typeof e!="object")throw new Error("cannot decode message ".concat(n.typeName," from JSON: ").concat(Nt(e)));i=i??new n;const r=new Map,s=t.typeRegistry;for(const[a,c]of Object.entries(e)){const d=n.fields.findJsonName(a);if(d){if(d.oneof){if(c===null&&d.kind=="scalar")continue;const o=r.get(d.oneof);if(o!==void 0)throw new Error("cannot decode message ".concat(n.typeName,' from JSON: multiple keys for oneof "').concat(d.oneof.name,'" present: "').concat(o,'", "').concat(a,'"'));r.set(d.oneof,a)}dc(i,c,d,t,n)}else{let o=!1;if(s!=null&&s.findExtension&&a.startsWith("[")&&a.endsWith("]")){const u=s.findExtension(a.substring(1,a.length-1));if(u&&u.extendee.typeName==n.typeName){o=!0;const[l,h]=ec(u);dc(l,c,u.field,t,u),Ff(i,u,h(),t)}}if(!o&&!t.ignoreUnknownFields)throw new Error("cannot decode message ".concat(n.typeName,' from JSON: key "').concat(a,'" is unknown'))}}return i},writeMessage(n,e){const t=n.getType(),i={};let r;try{for(r of t.fields.byNumber()){if(!rc(r,n)){if(r.req)throw"required field not set";if(!e.emitDefaultValues||!Kf(r))continue}const a=r.oneof?n[r.oneof.localName].value:n[r.localName],c=uc(r,a,e);c!==void 0&&(i[e.useProtoFieldName?r.name:r.jsonName]=c)}const s=e.typeRegistry;if(s!=null&&s.findExtensionFor)for(const a of t.runtime.bin.listUnknownFields(n)){const c=s.findExtensionFor(t.typeName,a.no);if(c&&nc(n,c)){const d=Uf(n,c,e),o=uc(c.field,d,e);o!==void 0&&(i[c.field.jsonName]=o)}}}catch(s){const a=r?"cannot encode field ".concat(t.typeName,".").concat(r.name," to JSON"):"cannot encode message ".concat(t.typeName," to JSON"),c=s instanceof Error?s.message:String(s);throw new Error(a+(c.length>0?": ".concat(c):""))}return i},readScalar(n,e,t){return ci(n,e,t??sn.BIGINT,!0)},writeScalar(n,e,t){if(e!==void 0&&(t||Zo(n,e)))return Zi(n,e)},debug:Nt}}function Nt(n){if(n===null)return"null";switch(typeof n){case"object":return Array.isArray(n)?"array":"object";case"string":return n.length>100?"string":'"'.concat(n.split('"').join('\\"'),'"');default:return String(n)}}function dc(n,e,t,i,r){let s=t.localName;if(t.repeated){if(Ee(t.kind!="map"),e===null)return;if(!Array.isArray(e))throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Nt(e)));const a=n[s];for(const c of e){if(c===null)throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Nt(c)));switch(t.kind){case"message":a.push(t.T.fromJson(c,i));break;case"enum":const d=hs(t.T,c,i.ignoreUnknownFields,!0);d!==Xi&&a.push(d);break;case"scalar":try{a.push(ci(t.T,c,t.L,!0))}catch(o){let u="cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Nt(c));throw o instanceof Error&&o.message.length>0&&(u+=": ".concat(o.message)),new Error(u)}break}}}else if(t.kind=="map"){if(e===null)return;if(typeof e!="object"||Array.isArray(e))throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Nt(e)));const a=n[s];for(const[c,d]of Object.entries(e)){if(d===null)throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: map value null"));let o;try{o=qf(t.K,c)}catch(u){let l="cannot decode map key for field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Nt(e));throw u instanceof Error&&u.message.length>0&&(l+=": ".concat(u.message)),new Error(l)}switch(t.V.kind){case"message":a[o]=t.V.T.fromJson(d,i);break;case"enum":const u=hs(t.V.T,d,i.ignoreUnknownFields,!0);u!==Xi&&(a[o]=u);break;case"scalar":try{a[o]=ci(t.V.T,d,sn.BIGINT,!0)}catch(l){let h="cannot decode map value for field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Nt(e));throw l instanceof Error&&l.message.length>0&&(h+=": ".concat(l.message)),new Error(h)}break}}}else switch(t.oneof&&(n=n[t.oneof.localName]={case:s},s="value"),t.kind){case"message":const a=t.T;if(e===null&&a.typeName!="google.protobuf.Value")return;let c=n[s];Ht(c)?c.fromJson(e,i):(n[s]=c=a.fromJson(e,i),a.fieldWrapper&&!t.oneof&&(n[s]=a.fieldWrapper.unwrapField(c)));break;case"enum":const d=hs(t.T,e,i.ignoreUnknownFields,!1);switch(d){case Qi:sc(t,n);break;case Xi:break;default:n[s]=d;break}break;case"scalar":try{const o=ci(t.T,e,t.L,!1);switch(o){case Qi:sc(t,n);break;default:n[s]=o;break}}catch(o){let u="cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Nt(e));throw o instanceof Error&&o.message.length>0&&(u+=": ".concat(o.message)),new Error(u)}break}}function qf(n,e){if(n===P.BOOL)switch(e){case"true":e=!0;break;case"false":e=!1;break}return ci(n,e,sn.BIGINT,!0).toString()}function ci(n,e,t,i){if(e===null)return i?Nn(n,t):Qi;switch(n){case P.DOUBLE:case P.FLOAT:if(e==="NaN")return Number.NaN;if(e==="Infinity")return Number.POSITIVE_INFINITY;if(e==="-Infinity")return Number.NEGATIVE_INFINITY;if(e===""||typeof e=="string"&&e.trim().length!==e.length||typeof e!="string"&&typeof e!="number")break;const r=Number(e);if(Number.isNaN(r)||!Number.isFinite(r))break;return n==P.FLOAT&&Ko(r),r;case P.INT32:case P.FIXED32:case P.SFIXED32:case P.SINT32:case P.UINT32:let s;if(typeof e=="number"?s=e:typeof e=="string"&&e.length>0&&e.trim().length===e.length&&(s=Number(e)),s===void 0)break;return n==P.UINT32||n==P.FIXED32?cs(s):Gi(s),s;case P.INT64:case P.SFIXED64:case P.SINT64:if(typeof e!="number"&&typeof e!="string")break;const a=ge.parse(e);return t?a.toString():a;case P.FIXED64:case P.UINT64:if(typeof e!="number"&&typeof e!="string")break;const c=ge.uParse(e);return t?c.toString():c;case P.BOOL:if(typeof e!="boolean")break;return e;case P.STRING:if(typeof e!="string")break;try{encodeURIComponent(e)}catch{throw new Error("invalid UTF8")}return e;case P.BYTES:if(e==="")return new Uint8Array(0);if(typeof e!="string")break;return tc.dec(e)}throw new Error}function hs(n,e,t,i){if(e===null)return n.typeName=="google.protobuf.NullValue"?0:i?n.values[0].no:Qi;switch(typeof e){case"number":if(Number.isInteger(e))return e;break;case"string":const r=n.findName(e);if(r!==void 0)return r.no;if(t)return Xi;break}throw new Error("cannot decode enum ".concat(n.typeName," from JSON: ").concat(Nt(e)))}function Kf(n){return n.repeated||n.kind=="map"?!0:!(n.oneof||n.kind=="message"||n.opt||n.req)}function uc(n,e,t){if(n.kind=="map"){Ee(typeof e=="object"&&e!=null);const i={},r=Object.entries(e);switch(n.V.kind){case"scalar":for(const[a,c]of r)i[a.toString()]=Zi(n.V.T,c);break;case"message":for(const[a,c]of r)i[a.toString()]=c.toJson(t);break;case"enum":const s=n.V.T;for(const[a,c]of r)i[a.toString()]=fs(s,c,t.enumAsInteger);break}return t.emitDefaultValues||r.length>0?i:void 0}if(n.repeated){Ee(Array.isArray(e));const i=[];switch(n.kind){case"scalar":for(let r=0;r<e.length;r++)i.push(Zi(n.T,e[r]));break;case"enum":for(let r=0;r<e.length;r++)i.push(fs(n.T,e[r],t.enumAsInteger));break;case"message":for(let r=0;r<e.length;r++)i.push(e[r].toJson(t));break}return t.emitDefaultValues||i.length>0?i:void 0}switch(n.kind){case"scalar":return Zi(n.T,e);case"enum":return fs(n.T,e,t.enumAsInteger);case"message":return ac(n.T,e).toJson(t)}}function fs(n,e,t){var i;if(Ee(typeof e=="number"),n.typeName=="google.protobuf.NullValue")return null;if(t)return e;const r=n.findNumber(e);return(i=r==null?void 0:r.name)!==null&&i!==void 0?i:e}function Zi(n,e){switch(n){case P.INT32:case P.SFIXED32:case P.SINT32:case P.FIXED32:case P.UINT32:return Ee(typeof e=="number"),e;case P.FLOAT:case P.DOUBLE:return Ee(typeof e=="number"),Number.isNaN(e)?"NaN":e===Number.POSITIVE_INFINITY?"Infinity":e===Number.NEGATIVE_INFINITY?"-Infinity":e;case P.STRING:return Ee(typeof e=="string"),e;case P.BOOL:return Ee(typeof e=="boolean"),e;case P.UINT64:case P.FIXED64:case P.INT64:case P.SFIXED64:case P.SINT64:return Ee(typeof e=="bigint"||typeof e=="string"||typeof e=="number"),e.toString();case P.BYTES:return Ee(e instanceof Uint8Array),tc.enc(e)}}const Un=Symbol("@bufbuild/protobuf/unknown-fields"),lc={readUnknownFields:!0,readerFactory:n=>new Af(n)},hc={writeUnknownFields:!0,writerFactory:()=>new Of};function Hf(n){return n?Object.assign(Object.assign({},lc),n):lc}function Wf(n){return n?Object.assign(Object.assign({},hc),n):hc}function zf(){return{makeReadOptions:Hf,makeWriteOptions:Wf,listUnknownFields(n){var e;return(e=n[Un])!==null&&e!==void 0?e:[]},discardUnknownFields(n){delete n[Un]},writeUnknownFields(n,e){const i=n[Un];if(i)for(const r of i)e.tag(r.no,r.wireType).raw(r.data)},onUnknownField(n,e,t,i){const r=n;Array.isArray(r[Un])||(r[Un]=[]),r[Un].push({no:e,wireType:t,data:i})},readMessage(n,e,t,i,r){const s=n.getType(),a=r?e.len:e.pos+t;let c,d;for(;e.pos<a&&([c,d]=e.tag(),!(r===!0&&d==_e.EndGroup));){const o=s.fields.find(c);if(!o){const u=e.skip(d,c);i.readUnknownFields&&this.onUnknownField(n,c,d,u);continue}fc(n,e,o,d,i)}if(r&&(d!=_e.EndGroup||c!==t))throw new Error("invalid end group tag")},readField:fc,writeMessage(n,e,t){const i=n.getType();for(const r of i.fields.byNumber()){if(!rc(r,n)){if(r.req)throw new Error("cannot encode field ".concat(i.typeName,".").concat(r.name," to binary: required field not set"));continue}const s=r.oneof?n[r.oneof.localName].value:n[r.localName];mc(r,s,e,t)}return t.writeUnknownFields&&this.writeUnknownFields(n,e),e},writeField(n,e,t,i){e!==void 0&&mc(n,e,t,i)}}}function fc(n,e,t,i,r){let{repeated:s,localName:a}=t;switch(t.oneof&&(n=n[t.oneof.localName],n.case!=a&&delete n.value,n.case=a,a="value"),t.kind){case"scalar":case"enum":const c=t.kind=="enum"?P.INT32:t.T;let d=tr;if(t.kind=="scalar"&&t.L>0&&(d=Gf),s){let h=n[a];if(i==_e.LengthDelimited&&c!=P.STRING&&c!=P.BYTES){let p=e.uint32()+e.pos;for(;e.pos<p;)h.push(d(e,c))}else h.push(d(e,c))}else n[a]=d(e,c);break;case"message":const o=t.T;s?n[a].push(er(e,new o,r,t)):Ht(n[a])?er(e,n[a],r,t):(n[a]=er(e,new o,r,t),o.fieldWrapper&&!t.oneof&&!t.repeated&&(n[a]=o.fieldWrapper.unwrapField(n[a])));break;case"map":let[u,l]=Jf(t,e,r);n[a][u]=l;break}}function er(n,e,t,i){const r=e.getType().runtime.bin,s=i==null?void 0:i.delimited;return r.readMessage(e,n,s?i.no:n.uint32(),t,s),e}function Jf(n,e,t){const i=e.uint32(),r=e.pos+i;let s,a;for(;e.pos<r;){const[c]=e.tag();switch(c){case 1:s=tr(e,n.K);break;case 2:switch(n.V.kind){case"scalar":a=tr(e,n.V.T);break;case"enum":a=e.int32();break;case"message":a=er(e,new n.V.T,t,void 0);break}break}}if(s===void 0&&(s=Nn(n.K,sn.BIGINT)),typeof s!="string"&&typeof s!="number"&&(s=s.toString()),a===void 0)switch(n.V.kind){case"scalar":a=Nn(n.V.T,sn.BIGINT);break;case"enum":a=n.V.T.values[0].no;break;case"message":a=new n.V.T;break}return[s,a]}function Gf(n,e){const t=tr(n,e);return typeof t=="bigint"?t.toString():t}function tr(n,e){switch(e){case P.STRING:return n.string();case P.BOOL:return n.bool();case P.DOUBLE:return n.double();case P.FLOAT:return n.float();case P.INT32:return n.int32();case P.INT64:return n.int64();case P.UINT64:return n.uint64();case P.FIXED64:return n.fixed64();case P.BYTES:return n.bytes();case P.FIXED32:return n.fixed32();case P.SFIXED32:return n.sfixed32();case P.SFIXED64:return n.sfixed64();case P.SINT64:return n.sint64();case P.UINT32:return n.uint32();case P.SINT32:return n.sint32()}}function mc(n,e,t,i){Ee(e!==void 0);const r=n.repeated;switch(n.kind){case"scalar":case"enum":let s=n.kind=="enum"?P.INT32:n.T;if(r)if(Ee(Array.isArray(e)),n.packed)Yf(t,s,n.no,e);else for(const a of e)di(t,s,n.no,a);else di(t,s,n.no,e);break;case"message":if(r){Ee(Array.isArray(e));for(const a of e)pc(t,i,n,a)}else pc(t,i,n,e);break;case"map":Ee(typeof e=="object"&&e!=null);for(const[a,c]of Object.entries(e))$f(t,i,n,a,c);break}}function $f(n,e,t,i,r){n.tag(t.no,_e.LengthDelimited),n.fork();let s=i;switch(t.K){case P.INT32:case P.FIXED32:case P.UINT32:case P.SFIXED32:case P.SINT32:s=Number.parseInt(i);break;case P.BOOL:Ee(i=="true"||i=="false"),s=i=="true";break}switch(di(n,t.K,1,s),t.V.kind){case"scalar":di(n,t.V.T,2,r);break;case"enum":di(n,P.INT32,2,r);break;case"message":Ee(r!==void 0),n.tag(2,_e.LengthDelimited).bytes(r.toBinary(e));break}n.join()}function pc(n,e,t,i){const r=ac(t.T,i);t.delimited?n.tag(t.no,_e.StartGroup).raw(r.toBinary(e)).tag(t.no,_e.EndGroup):n.tag(t.no,_e.LengthDelimited).bytes(r.toBinary(e))}function di(n,e,t,i){Ee(i!==void 0);let[r,s]=gc(e);n.tag(t,r)[s](i)}function Yf(n,e,t,i){if(!i.length)return;n.tag(t,_e.LengthDelimited).fork();let[,r]=gc(e);for(let s=0;s<i.length;s++)n[r](i[s]);n.join()}function gc(n){let e=_e.Varint;switch(n){case P.BYTES:case P.STRING:e=_e.LengthDelimited;break;case P.DOUBLE:case P.FIXED64:case P.SFIXED64:e=_e.Bit64;break;case P.FIXED32:case P.SFIXED32:case P.FLOAT:e=_e.Bit32;break}const t=P[n].toLowerCase();return[e,t]}function Qf(){return{setEnumType:Wo,initPartial(n,e){if(n===void 0)return;const t=e.getType();for(const i of t.fields.byMember()){const r=i.localName,s=e,a=n;if(a[r]!=null)switch(i.kind){case"oneof":const c=a[r].case;if(c===void 0)continue;const d=i.findField(c);let o=a[r].value;d&&d.kind=="message"&&!Ht(o,d.T)?o=new d.T(o):d&&d.kind==="scalar"&&d.T===P.BYTES&&(o=ui(o)),s[r]={case:c,value:o};break;case"scalar":case"enum":let u=a[r];i.T===P.BYTES&&(u=i.repeated?u.map(ui):ui(u)),s[r]=u;break;case"map":switch(i.V.kind){case"scalar":case"enum":if(i.V.T===P.BYTES)for(const[f,p]of Object.entries(a[r]))s[r][f]=ui(p);else Object.assign(s[r],a[r]);break;case"message":const h=i.V.T;for(const f of Object.keys(a[r])){let p=a[r][f];h.fieldWrapper||(p=new h(p)),s[r][f]=p}break}break;case"message":const l=i.T;if(i.repeated)s[r]=a[r].map(h=>Ht(h,l)?h:new l(h));else{const h=a[r];l.fieldWrapper?l.typeName==="google.protobuf.BytesValue"?s[r]=ui(h):s[r]=h:s[r]=Ht(h,l)?h:new l(h)}break}}},equals(n,e,t){return e===t?!0:!e||!t?!1:n.fields.byMember().every(i=>{const r=e[i.localName],s=t[i.localName];if(i.repeated){if(r.length!==s.length)return!1;switch(i.kind){case"message":return r.every((a,c)=>i.T.equals(a,s[c]));case"scalar":return r.every((a,c)=>an(i.T,a,s[c]));case"enum":return r.every((a,c)=>an(P.INT32,a,s[c]))}throw new Error("repeated cannot contain ".concat(i.kind))}switch(i.kind){case"message":let a=r,c=s;return i.T.fieldWrapper&&(a!==void 0&&!Ht(a)&&(a=i.T.fieldWrapper.wrapField(a)),c!==void 0&&!Ht(c)&&(c=i.T.fieldWrapper.wrapField(c))),i.T.equals(a,c);case"enum":return an(P.INT32,r,s);case"scalar":return an(i.T,r,s);case"oneof":if(r.case!==s.case)return!1;const d=i.findField(r.case);if(d===void 0)return!0;switch(d.kind){case"message":return d.T.equals(r.value,s.value);case"enum":return an(P.INT32,r.value,s.value);case"scalar":return an(d.T,r.value,s.value)}throw new Error("oneof cannot contain ".concat(d.kind));case"map":const o=Object.keys(r).concat(Object.keys(s));switch(i.V.kind){case"message":const u=i.V.T;return o.every(h=>u.equals(r[h],s[h]));case"enum":return o.every(h=>an(P.INT32,r[h],s[h]));case"scalar":const l=i.V.T;return o.every(h=>an(l,r[h],s[h]))}break}})},clone(n){const e=n.getType(),t=new e,i=t;for(const r of e.fields.byMember()){const s=n[r.localName];let a;if(r.repeated)a=s.map(nr);else if(r.kind=="map"){a=i[r.localName];for(const[c,d]of Object.entries(s))a[c]=nr(d)}else r.kind=="oneof"?a=r.findField(s.case)?{case:s.case,value:nr(s.value)}:{case:void 0}:a=nr(s);i[r.localName]=a}for(const r of e.runtime.bin.listUnknownFields(n))e.runtime.bin.onUnknownField(i,r.no,r.wireType,r.data);return t}}}function nr(n){if(n===void 0)return n;if(Ht(n))return n.clone();if(n instanceof Uint8Array){const e=new Uint8Array(n.byteLength);return e.set(n),e}return n}function ui(n){return n instanceof Uint8Array?n:new Uint8Array(n)}function Xf(n,e,t){return{syntax:n,json:Vf(),bin:zf(),util:Object.assign(Object.assign({},Qf()),{newFieldList:e,initFields:t}),makeMessageType(i,r,s){return Rf(this,i,r,s)},makeEnum:Ef,makeEnumType:zo,getEnumType:wf,makeExtension(i,r,s){return xf(this,i,r,s)}}}class Zf{constructor(e,t){this._fields=e,this._normalizer=t}findJsonName(e){if(!this.jsonNames){const t={};for(const i of this.list())t[i.jsonName]=t[i.name]=i;this.jsonNames=t}return this.jsonNames[e]}find(e){if(!this.numbers){const t={};for(const i of this.list())t[i.no]=i;this.numbers=t}return this.numbers[e]}list(){return this.all||(this.all=this._normalizer(this._fields)),this.all}byNumber(){return this.numbersAsc||(this.numbersAsc=this.list().concat().sort((e,t)=>e.no-t.no)),this.numbersAsc}byMember(){if(!this.members){this.members=[];const e=this.members;let t;for(const i of this.list())i.oneof?i.oneof!==t&&(t=i.oneof,e.push(t)):e.push(i)}return this.members}}function vc(n,e){const t=yc(n);return e?t:sm(rm(t))}function em(n){return vc(n,!1)}const tm=yc;function yc(n){let e=!1;const t=[];for(let i=0;i<n.length;i++){let r=n.charAt(i);switch(r){case"_":e=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":t.push(r),e=!1;break;default:e&&(e=!1,r=r.toUpperCase()),t.push(r);break}}return t.join("")}const nm=new Set(["constructor","toString","toJSON","valueOf"]),im=new Set(["getType","clone","equals","fromBinary","fromJson","fromJsonString","toBinary","toJson","toJsonString","toObject"]),bc=n=>"".concat(n,"$"),rm=n=>im.has(n)?bc(n):n,sm=n=>nm.has(n)?bc(n):n;class am{constructor(e){this.kind="oneof",this.repeated=!1,this.packed=!1,this.opt=!1,this.req=!1,this.default=void 0,this.fields=[],this.name=e,this.localName=em(e)}addField(e){Ee(e.oneof===this,"field ".concat(e.name," not one of ").concat(this.name)),this.fields.push(e)}findField(e){if(!this._lookup){this._lookup=Object.create(null);for(let t=0;t<this.fields.length;t++)this._lookup[this.fields[t].localName]=this.fields[t]}return this._lookup[e]}}function om(n,e){var t,i,r,s,a,c;const d=[];let o;for(const u of typeof n=="function"?n():n){const l=u;if(l.localName=vc(u.name,u.oneof!==void 0),l.jsonName=(t=u.jsonName)!==null&&t!==void 0?t:tm(u.name),l.repeated=(i=u.repeated)!==null&&i!==void 0?i:!1,u.kind=="scalar"&&(l.L=(r=u.L)!==null&&r!==void 0?r:sn.BIGINT),l.delimited=(s=u.delimited)!==null&&s!==void 0?s:!1,l.req=(a=u.req)!==null&&a!==void 0?a:!1,l.opt=(c=u.opt)!==null&&c!==void 0?c:!1,u.packed===void 0&&(l.packed=u.kind=="enum"||u.kind=="scalar"&&u.T!=P.BYTES&&u.T!=P.STRING),u.oneof!==void 0){const h=typeof u.oneof=="string"?u.oneof:u.oneof.name;(!o||o.name!=h)&&(o=new am(h)),l.oneof=o,o.addField(l)}d.push(l)}return d}const g=Xf("proto3",n=>new Zf(n,e=>om(e)),n=>{for(const e of n.getType().fields.byMember()){if(e.opt)continue;const t=e.localName,i=n;if(e.repeated){i[t]=[];continue}switch(e.kind){case"oneof":i[t]={case:void 0};break;case"enum":i[t]=0;break;case"map":i[t]={};break;case"scalar":i[t]=Nn(e.T,e.L);break}}});class it extends ds{constructor(e){super(),this.seconds=ge.zero,this.nanos=0,g.util.initPartial(e,this)}fromJson(e,t){if(typeof e!="string")throw new Error("cannot decode google.protobuf.Timestamp from JSON: ".concat(g.json.debug(e)));const i=e.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!i)throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");const r=Date.parse(i[1]+"-"+i[2]+"-"+i[3]+"T"+i[4]+":"+i[5]+":"+i[6]+(i[8]?i[8]:"Z"));if(Number.isNaN(r))throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");if(r<Date.parse("0001-01-01T00:00:00Z")||r>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot decode message google.protobuf.Timestamp from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");return this.seconds=ge.parse(r/1e3),this.nanos=0,i[7]&&(this.nanos=parseInt("1"+i[7]+"0".repeat(9-i[7].length))-1e9),this}toJson(e){const t=Number(this.seconds)*1e3;if(t<Date.parse("0001-01-01T00:00:00Z")||t>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot encode google.protobuf.Timestamp to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");if(this.nanos<0)throw new Error("cannot encode google.protobuf.Timestamp to JSON: nanos must not be negative");let i="Z";if(this.nanos>0){const r=(this.nanos+1e9).toString().substring(1);r.substring(3)==="000000"?i="."+r.substring(0,3)+"Z":r.substring(6)==="000"?i="."+r.substring(0,6)+"Z":i="."+r+"Z"}return new Date(t).toISOString().replace(".000Z",i)}toDate(){return new Date(Number(this.seconds)*1e3+Math.ceil(this.nanos/1e6))}static now(){return it.fromDate(new Date)}static fromDate(e){const t=e.getTime();return new it({seconds:ge.parse(Math.floor(t/1e3)),nanos:t%1e3*1e6})}static fromBinary(e,t){return new it().fromBinary(e,t)}static fromJson(e,t){return new it().fromJson(e,t)}static fromJsonString(e,t){return new it().fromJsonString(e,t)}static equals(e,t){return g.util.equals(it,e,t)}}it.runtime=g,it.typeName="google.protobuf.Timestamp",it.fields=g.util.newFieldList(()=>[{no:1,name:"seconds",kind:"scalar",T:3},{no:2,name:"nanos",kind:"scalar",T:5}]);const cm=g.makeMessageType("livekit.MetricsBatch",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:it},{no:3,name:"str_data",kind:"scalar",T:9,repeated:!0},{no:4,name:"time_series",kind:"message",T:dm,repeated:!0},{no:5,name:"events",kind:"message",T:lm,repeated:!0}]),dm=g.makeMessageType("livekit.TimeSeriesMetric",()=>[{no:1,name:"label",kind:"scalar",T:13},{no:2,name:"participant_identity",kind:"scalar",T:13},{no:3,name:"track_sid",kind:"scalar",T:13},{no:4,name:"samples",kind:"message",T:um,repeated:!0},{no:5,name:"rid",kind:"scalar",T:13}]),um=g.makeMessageType("livekit.MetricSample",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:it},{no:3,name:"value",kind:"scalar",T:2}]),lm=g.makeMessageType("livekit.EventMetric",()=>[{no:1,name:"label",kind:"scalar",T:13},{no:2,name:"participant_identity",kind:"scalar",T:13},{no:3,name:"track_sid",kind:"scalar",T:13},{no:4,name:"start_timestamp_ms",kind:"scalar",T:3},{no:5,name:"end_timestamp_ms",kind:"scalar",T:3,opt:!0},{no:6,name:"normalized_start_timestamp",kind:"message",T:it},{no:7,name:"normalized_end_timestamp",kind:"message",T:it,opt:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"rid",kind:"scalar",T:13}]),hm=g.makeEnum("livekit.AudioCodec",[{no:0,name:"DEFAULT_AC"},{no:1,name:"OPUS"},{no:2,name:"AAC"},{no:3,name:"AC_MP3"}]),fm=g.makeEnum("livekit.VideoCodec",[{no:0,name:"DEFAULT_VC"},{no:1,name:"H264_BASELINE"},{no:2,name:"H264_MAIN"},{no:3,name:"H264_HIGH"},{no:4,name:"VP8"}]),mm=g.makeEnum("livekit.ImageCodec",[{no:0,name:"IC_DEFAULT"},{no:1,name:"IC_JPEG"}]),kc=g.makeEnum("livekit.BackupCodecPolicy",[{no:0,name:"PREFER_REGRESSION"},{no:1,name:"SIMULCAST"},{no:2,name:"REGRESSION"}]),ut=g.makeEnum("livekit.TrackType",[{no:0,name:"AUDIO"},{no:1,name:"VIDEO"},{no:2,name:"DATA"}]),Oe=g.makeEnum("livekit.TrackSource",[{no:0,name:"UNKNOWN"},{no:1,name:"CAMERA"},{no:2,name:"MICROPHONE"},{no:3,name:"SCREEN_SHARE"},{no:4,name:"SCREEN_SHARE_AUDIO"}]),ms=g.makeEnum("livekit.VideoQuality",[{no:0,name:"LOW"},{no:1,name:"MEDIUM"},{no:2,name:"HIGH"},{no:3,name:"OFF"}]),li=g.makeEnum("livekit.ConnectionQuality",[{no:0,name:"POOR"},{no:1,name:"GOOD"},{no:2,name:"EXCELLENT"},{no:3,name:"LOST"}]),hi=g.makeEnum("livekit.ClientConfigSetting",[{no:0,name:"UNSET"},{no:1,name:"DISABLED"},{no:2,name:"ENABLED"}]),lt=g.makeEnum("livekit.DisconnectReason",[{no:0,name:"UNKNOWN_REASON"},{no:1,name:"CLIENT_INITIATED"},{no:2,name:"DUPLICATE_IDENTITY"},{no:3,name:"SERVER_SHUTDOWN"},{no:4,name:"PARTICIPANT_REMOVED"},{no:5,name:"ROOM_DELETED"},{no:6,name:"STATE_MISMATCH"},{no:7,name:"JOIN_FAILURE"},{no:8,name:"MIGRATION"},{no:9,name:"SIGNAL_CLOSE"},{no:10,name:"ROOM_CLOSED"},{no:11,name:"USER_UNAVAILABLE"},{no:12,name:"USER_REJECTED"},{no:13,name:"SIP_TRUNK_FAILURE"},{no:14,name:"CONNECTION_TIMEOUT"},{no:15,name:"MEDIA_FAILURE"},{no:16,name:"AGENT_ERROR"}]),vn=g.makeEnum("livekit.ReconnectReason",[{no:0,name:"RR_UNKNOWN"},{no:1,name:"RR_SIGNAL_DISCONNECTED"},{no:2,name:"RR_PUBLISHER_FAILED"},{no:3,name:"RR_SUBSCRIBER_FAILED"},{no:4,name:"RR_SWITCH_CANDIDATE"}]),Tc=g.makeEnum("livekit.SubscriptionError",[{no:0,name:"SE_UNKNOWN"},{no:1,name:"SE_CODEC_UNSUPPORTED"},{no:2,name:"SE_TRACK_NOTFOUND"}]),Be=g.makeEnum("livekit.AudioTrackFeature",[{no:0,name:"TF_STEREO"},{no:1,name:"TF_NO_DTX"},{no:2,name:"TF_AUTO_GAIN_CONTROL"},{no:3,name:"TF_ECHO_CANCELLATION"},{no:4,name:"TF_NOISE_SUPPRESSION"},{no:5,name:"TF_ENHANCED_NOISE_CANCELLATION"},{no:6,name:"TF_PRECONNECT_BUFFER"}]),Sc=g.makeEnum("livekit.PacketTrailerFeature",[{no:0,name:"PTF_USER_TIMESTAMP"},{no:1,name:"PTF_FRAME_ID"}]),ir=g.makeMessageType("livekit.Room",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"empty_timeout",kind:"scalar",T:13},{no:14,name:"departure_timeout",kind:"scalar",T:13},{no:4,name:"max_participants",kind:"scalar",T:13},{no:5,name:"creation_time",kind:"scalar",T:3},{no:15,name:"creation_time_ms",kind:"scalar",T:3},{no:6,name:"turn_password",kind:"scalar",T:9},{no:7,name:"enabled_codecs",kind:"message",T:rr,repeated:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"num_participants",kind:"scalar",T:13},{no:11,name:"num_publishers",kind:"scalar",T:13},{no:10,name:"active_recording",kind:"scalar",T:8},{no:13,name:"version",kind:"message",T:Nc}]),rr=g.makeMessageType("livekit.Codec",()=>[{no:1,name:"mime",kind:"scalar",T:9},{no:2,name:"fmtp_line",kind:"scalar",T:9}]),pm=g.makeMessageType("livekit.ParticipantPermission",()=>[{no:1,name:"can_subscribe",kind:"scalar",T:8},{no:2,name:"can_publish",kind:"scalar",T:8},{no:3,name:"can_publish_data",kind:"scalar",T:8},{no:9,name:"can_publish_sources",kind:"enum",T:g.getEnumType(Oe),repeated:!0},{no:7,name:"hidden",kind:"scalar",T:8},{no:8,name:"recorder",kind:"scalar",T:8},{no:10,name:"can_update_metadata",kind:"scalar",T:8},{no:11,name:"agent",kind:"scalar",T:8},{no:12,name:"can_subscribe_metrics",kind:"scalar",T:8},{no:13,name:"can_manage_agent_session",kind:"scalar",T:8}]),yn=g.makeMessageType("livekit.ParticipantInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"identity",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:g.getEnumType(Fn)},{no:4,name:"tracks",kind:"message",T:jn,repeated:!0},{no:5,name:"metadata",kind:"scalar",T:9},{no:6,name:"joined_at",kind:"scalar",T:3},{no:17,name:"joined_at_ms",kind:"scalar",T:3},{no:9,name:"name",kind:"scalar",T:9},{no:10,name:"version",kind:"scalar",T:13},{no:11,name:"permission",kind:"message",T:pm},{no:12,name:"region",kind:"scalar",T:9},{no:13,name:"is_publisher",kind:"scalar",T:8},{no:14,name:"kind",kind:"enum",T:g.getEnumType(Bn)},{no:15,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:16,name:"disconnect_reason",kind:"enum",T:g.getEnumType(lt)},{no:18,name:"kind_details",kind:"enum",T:g.getEnumType(gm),repeated:!0},{no:19,name:"data_tracks",kind:"message",T:sr,repeated:!0},{no:20,name:"client_protocol",kind:"scalar",T:5}]),Fn=g.makeEnum("livekit.ParticipantInfo.State",[{no:0,name:"JOINING"},{no:1,name:"JOINED"},{no:2,name:"ACTIVE"},{no:3,name:"DISCONNECTED"}]),Bn=g.makeEnum("livekit.ParticipantInfo.Kind",[{no:0,name:"STANDARD"},{no:1,name:"INGRESS"},{no:2,name:"EGRESS"},{no:3,name:"SIP"},{no:4,name:"AGENT"},{no:7,name:"CONNECTOR"},{no:8,name:"BRIDGE"}]),gm=g.makeEnum("livekit.ParticipantInfo.KindDetail",[{no:0,name:"CLOUD_AGENT"},{no:1,name:"FORWARDED"},{no:2,name:"CONNECTOR_WHATSAPP"},{no:3,name:"CONNECTOR_TWILIO"},{no:4,name:"BRIDGE_RTSP"}]),ce=g.makeEnum("livekit.Encryption.Type",[{no:0,name:"NONE"},{no:1,name:"GCM"},{no:2,name:"CUSTOM"}]),vm=g.makeMessageType("livekit.SimulcastCodecInfo",()=>[{no:1,name:"mime_type",kind:"scalar",T:9},{no:2,name:"mid",kind:"scalar",T:9},{no:3,name:"cid",kind:"scalar",T:9},{no:4,name:"layers",kind:"message",T:on,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:g.getEnumType(Cc)},{no:6,name:"sdp_cid",kind:"scalar",T:9}]),jn=g.makeMessageType("livekit.TrackInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"type",kind:"enum",T:g.getEnumType(ut)},{no:3,name:"name",kind:"scalar",T:9},{no:4,name:"muted",kind:"scalar",T:8},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"simulcast",kind:"scalar",T:8},{no:8,name:"disable_dtx",kind:"scalar",T:8},{no:9,name:"source",kind:"enum",T:g.getEnumType(Oe)},{no:10,name:"layers",kind:"message",T:on,repeated:!0},{no:11,name:"mime_type",kind:"scalar",T:9},{no:12,name:"mid",kind:"scalar",T:9},{no:13,name:"codecs",kind:"message",T:vm,repeated:!0},{no:14,name:"stereo",kind:"scalar",T:8},{no:15,name:"disable_red",kind:"scalar",T:8},{no:16,name:"encryption",kind:"enum",T:g.getEnumType(ce)},{no:17,name:"stream",kind:"scalar",T:9},{no:18,name:"version",kind:"message",T:Nc},{no:19,name:"audio_features",kind:"enum",T:g.getEnumType(Be),repeated:!0},{no:20,name:"backup_codec_policy",kind:"enum",T:g.getEnumType(kc)},{no:21,name:"packet_trailer_features",kind:"enum",T:g.getEnumType(Sc),repeated:!0}]),sr=g.makeMessageType("livekit.DataTrackInfo",()=>[{no:1,name:"pub_handle",kind:"scalar",T:13},{no:2,name:"sid",kind:"scalar",T:9},{no:3,name:"name",kind:"scalar",T:9},{no:4,name:"encryption",kind:"enum",T:g.getEnumType(ce)}]),ym=g.makeMessageType("livekit.DataTrackSubscriptionOptions",()=>[{no:1,name:"target_fps",kind:"scalar",T:13,opt:!0}]),on=g.makeMessageType("livekit.VideoLayer",()=>[{no:1,name:"quality",kind:"enum",T:g.getEnumType(ms)},{no:2,name:"width",kind:"scalar",T:13},{no:3,name:"height",kind:"scalar",T:13},{no:4,name:"bitrate",kind:"scalar",T:13},{no:5,name:"ssrc",kind:"scalar",T:13},{no:6,name:"spatial_layer",kind:"scalar",T:5},{no:7,name:"rid",kind:"scalar",T:9},{no:8,name:"repair_ssrc",kind:"scalar",T:13}]),Cc=g.makeEnum("livekit.VideoLayer.Mode",[{no:0,name:"MODE_UNUSED"},{no:1,name:"ONE_SPATIAL_LAYER_PER_STREAM"},{no:2,name:"MULTIPLE_SPATIAL_LAYERS_PER_STREAM"},{no:3,name:"ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR"}]),Ye=g.makeMessageType("livekit.DataPacket",()=>[{no:1,name:"kind",kind:"enum",T:g.getEnumType(cn)},{no:4,name:"participant_identity",kind:"scalar",T:9},{no:5,name:"destination_identities",kind:"scalar",T:9,repeated:!0},{no:2,name:"user",kind:"message",T:ps,oneof:"value"},{no:3,name:"speaker",kind:"message",T:bm,oneof:"value"},{no:6,name:"sip_dtmf",kind:"message",T:Pc,oneof:"value"},{no:7,name:"transcription",kind:"message",T:km,oneof:"value"},{no:8,name:"metrics",kind:"message",T:cm,oneof:"value"},{no:9,name:"chat_message",kind:"message",T:ar,oneof:"value"},{no:10,name:"rpc_request",kind:"message",T:gs,oneof:"value"},{no:11,name:"rpc_ack",kind:"message",T:vs,oneof:"value"},{no:12,name:"rpc_response",kind:"message",T:ys,oneof:"value"},{no:13,name:"stream_header",kind:"message",T:or,oneof:"value"},{no:14,name:"stream_chunk",kind:"message",T:cr,oneof:"value"},{no:15,name:"stream_trailer",kind:"message",T:dr,oneof:"value"},{no:18,name:"encrypted_packet",kind:"message",T:wc,oneof:"value"},{no:16,name:"sequence",kind:"scalar",T:13},{no:17,name:"participant_sid",kind:"scalar",T:9}]),cn=g.makeEnum("livekit.DataPacket.Kind",[{no:0,name:"RELIABLE"},{no:1,name:"LOSSY"}]),wc=g.makeMessageType("livekit.EncryptedPacket",()=>[{no:1,name:"encryption_type",kind:"enum",T:g.getEnumType(ce)},{no:2,name:"iv",kind:"scalar",T:12},{no:3,name:"key_index",kind:"scalar",T:13},{no:4,name:"encrypted_value",kind:"scalar",T:12}]),Ec=g.makeMessageType("livekit.EncryptedPacketPayload",()=>[{no:1,name:"user",kind:"message",T:ps,oneof:"value"},{no:3,name:"chat_message",kind:"message",T:ar,oneof:"value"},{no:4,name:"rpc_request",kind:"message",T:gs,oneof:"value"},{no:5,name:"rpc_ack",kind:"message",T:vs,oneof:"value"},{no:6,name:"rpc_response",kind:"message",T:ys,oneof:"value"},{no:7,name:"stream_header",kind:"message",T:or,oneof:"value"},{no:8,name:"stream_chunk",kind:"message",T:cr,oneof:"value"},{no:9,name:"stream_trailer",kind:"message",T:dr,oneof:"value"}]),bm=g.makeMessageType("livekit.ActiveSpeakerUpdate",()=>[{no:1,name:"speakers",kind:"message",T:Rc,repeated:!0}]),Rc=g.makeMessageType("livekit.SpeakerInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"level",kind:"scalar",T:2},{no:3,name:"active",kind:"scalar",T:8}]),ps=g.makeMessageType("livekit.UserPacket",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:5,name:"participant_identity",kind:"scalar",T:9},{no:2,name:"payload",kind:"scalar",T:12},{no:3,name:"destination_sids",kind:"scalar",T:9,repeated:!0},{no:6,name:"destination_identities",kind:"scalar",T:9,repeated:!0},{no:4,name:"topic",kind:"scalar",T:9,opt:!0},{no:8,name:"id",kind:"scalar",T:9,opt:!0},{no:9,name:"start_time",kind:"scalar",T:4,opt:!0},{no:10,name:"end_time",kind:"scalar",T:4,opt:!0},{no:11,name:"nonce",kind:"scalar",T:12}]),Pc=g.makeMessageType("livekit.SipDTMF",()=>[{no:3,name:"code",kind:"scalar",T:13},{no:4,name:"digit",kind:"scalar",T:9}]),km=g.makeMessageType("livekit.Transcription",()=>[{no:2,name:"transcribed_participant_identity",kind:"scalar",T:9},{no:3,name:"track_id",kind:"scalar",T:9},{no:4,name:"segments",kind:"message",T:Tm,repeated:!0}]),Tm=g.makeMessageType("livekit.TranscriptionSegment",()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"text",kind:"scalar",T:9},{no:3,name:"start_time",kind:"scalar",T:4},{no:4,name:"end_time",kind:"scalar",T:4},{no:5,name:"final",kind:"scalar",T:8},{no:6,name:"language",kind:"scalar",T:9}]),ar=g.makeMessageType("livekit.ChatMessage",()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"timestamp",kind:"scalar",T:3},{no:3,name:"edit_timestamp",kind:"scalar",T:3,opt:!0},{no:4,name:"message",kind:"scalar",T:9},{no:5,name:"deleted",kind:"scalar",T:8},{no:6,name:"generated",kind:"scalar",T:8}]),gs=g.makeMessageType("livekit.RpcRequest",()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"method",kind:"scalar",T:9},{no:3,name:"payload",kind:"scalar",T:9},{no:4,name:"response_timeout_ms",kind:"scalar",T:13},{no:5,name:"version",kind:"scalar",T:13},{no:6,name:"compressed_payload",kind:"scalar",T:12}]),vs=g.makeMessageType("livekit.RpcAck",()=>[{no:1,name:"request_id",kind:"scalar",T:9}]),ys=g.makeMessageType("livekit.RpcResponse",()=>[{no:1,name:"request_id",kind:"scalar",T:9},{no:2,name:"payload",kind:"scalar",T:9,oneof:"value"},{no:3,name:"error",kind:"message",T:_c,oneof:"value"},{no:4,name:"compressed_payload",kind:"scalar",T:12,oneof:"value"}]),_c=g.makeMessageType("livekit.RpcError",()=>[{no:1,name:"code",kind:"scalar",T:13},{no:2,name:"message",kind:"scalar",T:9},{no:3,name:"data",kind:"scalar",T:9}]),Ic=g.makeMessageType("livekit.ParticipantTracks",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sids",kind:"scalar",T:9,repeated:!0}]),Mc=g.makeMessageType("livekit.ServerInfo",()=>[{no:1,name:"edition",kind:"enum",T:g.getEnumType(Dc)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"region",kind:"scalar",T:9},{no:5,name:"node_id",kind:"scalar",T:9},{no:6,name:"debug_info",kind:"scalar",T:9},{no:7,name:"agent_protocol",kind:"scalar",T:5}]),Dc=g.makeEnum("livekit.ServerInfo.Edition",[{no:0,name:"Standard"},{no:1,name:"Cloud"}]),Oc=g.makeMessageType("livekit.ClientInfo",()=>[{no:1,name:"sdk",kind:"enum",T:g.getEnumType(Ac)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"os",kind:"scalar",T:9},{no:5,name:"os_version",kind:"scalar",T:9},{no:6,name:"device_model",kind:"scalar",T:9},{no:7,name:"browser",kind:"scalar",T:9},{no:8,name:"browser_version",kind:"scalar",T:9},{no:9,name:"address",kind:"scalar",T:9},{no:10,name:"network",kind:"scalar",T:9},{no:11,name:"other_sdks",kind:"scalar",T:9},{no:12,name:"client_protocol",kind:"scalar",T:5}]),Ac=g.makeEnum("livekit.ClientInfo.SDK",[{no:0,name:"UNKNOWN"},{no:1,name:"JS"},{no:2,name:"SWIFT"},{no:3,name:"ANDROID"},{no:4,name:"FLUTTER"},{no:5,name:"GO"},{no:6,name:"UNITY"},{no:7,name:"REACT_NATIVE"},{no:8,name:"RUST"},{no:9,name:"PYTHON"},{no:10,name:"CPP"},{no:11,name:"UNITY_WEB"},{no:12,name:"NODE"},{no:13,name:"UNREAL"},{no:14,name:"ESP32"}]),xc=g.makeMessageType("livekit.ClientConfiguration",()=>[{no:1,name:"video",kind:"message",T:Lc},{no:2,name:"screen",kind:"message",T:Lc},{no:3,name:"resume_connection",kind:"enum",T:g.getEnumType(hi)},{no:4,name:"disabled_codecs",kind:"message",T:Sm},{no:5,name:"force_relay",kind:"enum",T:g.getEnumType(hi)}]),Lc=g.makeMessageType("livekit.VideoConfiguration",()=>[{no:1,name:"hardware_encoder",kind:"enum",T:g.getEnumType(hi)}]),Sm=g.makeMessageType("livekit.DisabledCodecs",()=>[{no:1,name:"codecs",kind:"message",T:rr,repeated:!0},{no:2,name:"publish",kind:"message",T:rr,repeated:!0}]),Nc=g.makeMessageType("livekit.TimedVersion",()=>[{no:1,name:"unix_micro",kind:"scalar",T:3},{no:2,name:"ticks",kind:"scalar",T:5}]),bs=g.makeEnum("livekit.DataStream.OperationType",[{no:0,name:"CREATE"},{no:1,name:"UPDATE"},{no:2,name:"DELETE"},{no:3,name:"REACTION"}]),Uc=g.makeMessageType("livekit.DataStream.TextHeader",()=>[{no:1,name:"operation_type",kind:"enum",T:g.getEnumType(bs)},{no:2,name:"version",kind:"scalar",T:5},{no:3,name:"reply_to_stream_id",kind:"scalar",T:9},{no:4,name:"attached_stream_ids",kind:"scalar",T:9,repeated:!0},{no:5,name:"generated",kind:"scalar",T:8}],{localName:"DataStream_TextHeader"}),Fc=g.makeMessageType("livekit.DataStream.ByteHeader",()=>[{no:1,name:"name",kind:"scalar",T:9}],{localName:"DataStream_ByteHeader"}),or=g.makeMessageType("livekit.DataStream.Header",()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"timestamp",kind:"scalar",T:3},{no:3,name:"topic",kind:"scalar",T:9},{no:4,name:"mime_type",kind:"scalar",T:9},{no:5,name:"total_length",kind:"scalar",T:4,opt:!0},{no:7,name:"encryption_type",kind:"enum",T:g.getEnumType(ce)},{no:8,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:9,name:"text_header",kind:"message",T:Uc,oneof:"content_header"},{no:10,name:"byte_header",kind:"message",T:Fc,oneof:"content_header"}],{localName:"DataStream_Header"}),cr=g.makeMessageType("livekit.DataStream.Chunk",()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"chunk_index",kind:"scalar",T:4},{no:3,name:"content",kind:"scalar",T:12},{no:4,name:"version",kind:"scalar",T:5},{no:5,name:"iv",kind:"scalar",T:12,opt:!0}],{localName:"DataStream_Chunk"}),dr=g.makeMessageType("livekit.DataStream.Trailer",()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"reason",kind:"scalar",T:9},{no:3,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}}],{localName:"DataStream_Trailer"}),Cm=g.makeMessageType("livekit.FilterParams",()=>[{no:1,name:"include_events",kind:"scalar",T:9,repeated:!0},{no:2,name:"exclude_events",kind:"scalar",T:9,repeated:!0}]),wm=g.makeMessageType("livekit.WebhookConfig",()=>[{no:1,name:"url",kind:"scalar",T:9},{no:2,name:"signing_key",kind:"scalar",T:9},{no:3,name:"filter_params",kind:"message",T:Cm}]),Em=g.makeMessageType("livekit.SubscribedAudioCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"enabled",kind:"scalar",T:8}]),Rm=g.makeEnum("livekit.JobRestartPolicy",[{no:0,name:"JRP_ON_FAILURE"},{no:1,name:"JRP_NEVER"}]),ks=g.makeMessageType("livekit.RoomAgentDispatch",()=>[{no:1,name:"agent_name",kind:"scalar",T:9},{no:2,name:"metadata",kind:"scalar",T:9},{no:3,name:"restart_policy",kind:"enum",T:g.getEnumType(Rm)}]),bt=g.makeEnum("livekit.SignalTarget",[{no:0,name:"PUBLISHER"},{no:1,name:"SUBSCRIBER"}]),Ts=g.makeEnum("livekit.StreamState",[{no:0,name:"ACTIVE"},{no:1,name:"PAUSED"}]),Pm=g.makeEnum("livekit.CandidateProtocol",[{no:0,name:"UDP"},{no:1,name:"TCP"},{no:2,name:"TLS"}]),_m=g.makeMessageType("livekit.SignalRequest",()=>[{no:1,name:"offer",kind:"message",T:dn,oneof:"message"},{no:2,name:"answer",kind:"message",T:dn,oneof:"message"},{no:3,name:"trickle",kind:"message",T:ur,oneof:"message"},{no:4,name:"add_track",kind:"message",T:fi,oneof:"message"},{no:5,name:"mute",kind:"message",T:lr,oneof:"message"},{no:6,name:"subscription",kind:"message",T:hr,oneof:"message"},{no:7,name:"track_setting",kind:"message",T:qc,oneof:"message"},{no:8,name:"leave",kind:"message",T:fr,oneof:"message"},{no:10,name:"update_layers",kind:"message",T:Hc,oneof:"message"},{no:11,name:"subscription_permission",kind:"message",T:Jc,oneof:"message"},{no:12,name:"sync_state",kind:"message",T:Ms,oneof:"message"},{no:13,name:"simulate",kind:"message",T:Ut,oneof:"message"},{no:14,name:"ping",kind:"scalar",T:3,oneof:"message"},{no:15,name:"update_metadata",kind:"message",T:_s,oneof:"message"},{no:16,name:"ping_req",kind:"message",T:Yc,oneof:"message"},{no:17,name:"update_audio_track",kind:"message",T:Ps,oneof:"message"},{no:18,name:"update_video_track",kind:"message",T:Kc,oneof:"message"},{no:19,name:"publish_data_track_request",kind:"message",T:Cs,oneof:"message"},{no:20,name:"unpublish_data_track_request",kind:"message",T:Es,oneof:"message"},{no:21,name:"update_data_subscription",kind:"message",T:jc,oneof:"message"}]),Bc=g.makeMessageType("livekit.SignalResponse",()=>[{no:1,name:"join",kind:"message",T:Om,oneof:"message"},{no:2,name:"answer",kind:"message",T:dn,oneof:"message"},{no:3,name:"offer",kind:"message",T:dn,oneof:"message"},{no:4,name:"trickle",kind:"message",T:ur,oneof:"message"},{no:5,name:"update",kind:"message",T:Lm,oneof:"message"},{no:6,name:"track_published",kind:"message",T:Rs,oneof:"message"},{no:8,name:"leave",kind:"message",T:fr,oneof:"message"},{no:9,name:"mute",kind:"message",T:lr,oneof:"message"},{no:10,name:"speakers_changed",kind:"message",T:Nm,oneof:"message"},{no:11,name:"room_update",kind:"message",T:Um,oneof:"message"},{no:12,name:"connection_quality",kind:"message",T:Bm,oneof:"message"},{no:13,name:"stream_state_update",kind:"message",T:Vm,oneof:"message"},{no:14,name:"subscribed_quality_update",kind:"message",T:Km,oneof:"message"},{no:15,name:"subscription_permission_update",kind:"message",T:Wm,oneof:"message"},{no:16,name:"refresh_token",kind:"scalar",T:9,oneof:"message"},{no:17,name:"track_unpublished",kind:"message",T:xm,oneof:"message"},{no:18,name:"pong",kind:"scalar",T:3,oneof:"message"},{no:19,name:"reconnect",kind:"message",T:Am,oneof:"message"},{no:20,name:"pong_resp",kind:"message",T:Jm,oneof:"message"},{no:21,name:"subscription_response",kind:"message",T:Ym,oneof:"message"},{no:22,name:"request_response",kind:"message",T:Qm,oneof:"message"},{no:23,name:"track_subscribed",kind:"message",T:Xm,oneof:"message"},{no:24,name:"room_moved",kind:"message",T:zm,oneof:"message"},{no:25,name:"media_sections_requirement",kind:"message",T:tp,oneof:"message"},{no:26,name:"subscribed_audio_codec_update",kind:"message",T:Hm,oneof:"message"},{no:27,name:"publish_data_track_response",kind:"message",T:ws,oneof:"message"},{no:28,name:"unpublish_data_track_response",kind:"message",T:Im,oneof:"message"},{no:29,name:"data_track_subscriber_handles",kind:"message",T:Mm,oneof:"message"}]),Ss=g.makeMessageType("livekit.SimulcastCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"cid",kind:"scalar",T:9},{no:4,name:"layers",kind:"message",T:on,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:g.getEnumType(Cc)}]),fi=g.makeMessageType("livekit.AddTrackRequest",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"type",kind:"enum",T:g.getEnumType(ut)},{no:4,name:"width",kind:"scalar",T:13},{no:5,name:"height",kind:"scalar",T:13},{no:6,name:"muted",kind:"scalar",T:8},{no:7,name:"disable_dtx",kind:"scalar",T:8},{no:8,name:"source",kind:"enum",T:g.getEnumType(Oe)},{no:9,name:"layers",kind:"message",T:on,repeated:!0},{no:10,name:"simulcast_codecs",kind:"message",T:Ss,repeated:!0},{no:11,name:"sid",kind:"scalar",T:9},{no:12,name:"stereo",kind:"scalar",T:8},{no:13,name:"disable_red",kind:"scalar",T:8},{no:14,name:"encryption",kind:"enum",T:g.getEnumType(ce)},{no:15,name:"stream",kind:"scalar",T:9},{no:16,name:"backup_codec_policy",kind:"enum",T:g.getEnumType(kc)},{no:17,name:"audio_features",kind:"enum",T:g.getEnumType(Be),repeated:!0},{no:18,name:"packet_trailer_features",kind:"enum",T:g.getEnumType(Sc),repeated:!0}]),Cs=g.makeMessageType("livekit.PublishDataTrackRequest",()=>[{no:1,name:"pub_handle",kind:"scalar",T:13},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"encryption",kind:"enum",T:g.getEnumType(ce)}]),ws=g.makeMessageType("livekit.PublishDataTrackResponse",()=>[{no:1,name:"info",kind:"message",T:sr}]),Es=g.makeMessageType("livekit.UnpublishDataTrackRequest",()=>[{no:1,name:"pub_handle",kind:"scalar",T:13}]),Im=g.makeMessageType("livekit.UnpublishDataTrackResponse",()=>[{no:1,name:"info",kind:"message",T:sr}]),Mm=g.makeMessageType("livekit.DataTrackSubscriberHandles",()=>[{no:1,name:"sub_handles",kind:"map",K:13,V:{kind:"message",T:Dm}}]),Dm=g.makeMessageType("livekit.DataTrackSubscriberHandles.PublishedDataTrack",()=>[{no:1,name:"publisher_identity",kind:"scalar",T:9},{no:2,name:"publisher_sid",kind:"scalar",T:9},{no:3,name:"track_sid",kind:"scalar",T:9}],{localName:"DataTrackSubscriberHandles_PublishedDataTrack"}),ur=g.makeMessageType("livekit.TrickleRequest",()=>[{no:1,name:"candidateInit",kind:"scalar",T:9},{no:2,name:"target",kind:"enum",T:g.getEnumType(bt)},{no:3,name:"final",kind:"scalar",T:8}]),lr=g.makeMessageType("livekit.MuteTrackRequest",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"muted",kind:"scalar",T:8}]),Om=g.makeMessageType("livekit.JoinResponse",()=>[{no:1,name:"room",kind:"message",T:ir},{no:2,name:"participant",kind:"message",T:yn},{no:3,name:"other_participants",kind:"message",T:yn,repeated:!0},{no:4,name:"server_version",kind:"scalar",T:9},{no:5,name:"ice_servers",kind:"message",T:Wc,repeated:!0},{no:6,name:"subscriber_primary",kind:"scalar",T:8},{no:7,name:"alternative_url",kind:"scalar",T:9},{no:8,name:"client_configuration",kind:"message",T:xc},{no:9,name:"server_region",kind:"scalar",T:9},{no:10,name:"ping_timeout",kind:"scalar",T:5},{no:11,name:"ping_interval",kind:"scalar",T:5},{no:12,name:"server_info",kind:"message",T:Mc},{no:13,name:"sif_trailer",kind:"scalar",T:12},{no:14,name:"enabled_publish_codecs",kind:"message",T:rr,repeated:!0},{no:15,name:"fast_publish",kind:"scalar",T:8}]),Am=g.makeMessageType("livekit.ReconnectResponse",()=>[{no:1,name:"ice_servers",kind:"message",T:Wc,repeated:!0},{no:2,name:"client_configuration",kind:"message",T:xc},{no:3,name:"server_info",kind:"message",T:Mc},{no:4,name:"last_message_seq",kind:"scalar",T:13}]),Rs=g.makeMessageType("livekit.TrackPublishedResponse",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"track",kind:"message",T:jn}]),xm=g.makeMessageType("livekit.TrackUnpublishedResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),dn=g.makeMessageType("livekit.SessionDescription",()=>[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sdp",kind:"scalar",T:9},{no:3,name:"id",kind:"scalar",T:13},{no:4,name:"mid_to_track_id",kind:"map",K:9,V:{kind:"scalar",T:9}}]),Lm=g.makeMessageType("livekit.ParticipantUpdate",()=>[{no:1,name:"participants",kind:"message",T:yn,repeated:!0}]),hr=g.makeMessageType("livekit.UpdateSubscription",()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:2,name:"subscribe",kind:"scalar",T:8},{no:3,name:"participant_tracks",kind:"message",T:Ic,repeated:!0}]),jc=g.makeMessageType("livekit.UpdateDataSubscription",()=>[{no:1,name:"updates",kind:"message",T:Vc,repeated:!0}]),Vc=g.makeMessageType("livekit.UpdateDataSubscription.Update",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribe",kind:"scalar",T:8},{no:3,name:"options",kind:"message",T:ym}],{localName:"UpdateDataSubscription_Update"}),qc=g.makeMessageType("livekit.UpdateTrackSettings",()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:3,name:"disabled",kind:"scalar",T:8},{no:4,name:"quality",kind:"enum",T:g.getEnumType(ms)},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"fps",kind:"scalar",T:13},{no:8,name:"priority",kind:"scalar",T:13}]),Ps=g.makeMessageType("livekit.UpdateLocalAudioTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"features",kind:"enum",T:g.getEnumType(Be),repeated:!0}]),Kc=g.makeMessageType("livekit.UpdateLocalVideoTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"width",kind:"scalar",T:13},{no:3,name:"height",kind:"scalar",T:13}]),fr=g.makeMessageType("livekit.LeaveRequest",()=>[{no:1,name:"can_reconnect",kind:"scalar",T:8},{no:2,name:"reason",kind:"enum",T:g.getEnumType(lt)},{no:3,name:"action",kind:"enum",T:g.getEnumType(Vn)},{no:4,name:"regions",kind:"message",T:Gm}]),Vn=g.makeEnum("livekit.LeaveRequest.Action",[{no:0,name:"DISCONNECT"},{no:1,name:"RESUME"},{no:2,name:"RECONNECT"}]),Hc=g.makeMessageType("livekit.UpdateVideoLayers",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"layers",kind:"message",T:on,repeated:!0}]),_s=g.makeMessageType("livekit.UpdateParticipantMetadata",()=>[{no:1,name:"metadata",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:4,name:"request_id",kind:"scalar",T:13}]),Wc=g.makeMessageType("livekit.ICEServer",()=>[{no:1,name:"urls",kind:"scalar",T:9,repeated:!0},{no:2,name:"username",kind:"scalar",T:9},{no:3,name:"credential",kind:"scalar",T:9}]),Nm=g.makeMessageType("livekit.SpeakersChanged",()=>[{no:1,name:"speakers",kind:"message",T:Rc,repeated:!0}]),Um=g.makeMessageType("livekit.RoomUpdate",()=>[{no:1,name:"room",kind:"message",T:ir}]),Fm=g.makeMessageType("livekit.ConnectionQualityInfo",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"quality",kind:"enum",T:g.getEnumType(li)},{no:3,name:"score",kind:"scalar",T:2}]),Bm=g.makeMessageType("livekit.ConnectionQualityUpdate",()=>[{no:1,name:"updates",kind:"message",T:Fm,repeated:!0}]),jm=g.makeMessageType("livekit.StreamStateInfo",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:g.getEnumType(Ts)}]),Vm=g.makeMessageType("livekit.StreamStateUpdate",()=>[{no:1,name:"stream_states",kind:"message",T:jm,repeated:!0}]),Is=g.makeMessageType("livekit.SubscribedQuality",()=>[{no:1,name:"quality",kind:"enum",T:g.getEnumType(ms)},{no:2,name:"enabled",kind:"scalar",T:8}]),qm=g.makeMessageType("livekit.SubscribedCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"qualities",kind:"message",T:Is,repeated:!0}]),Km=g.makeMessageType("livekit.SubscribedQualityUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_qualities",kind:"message",T:Is,repeated:!0},{no:3,name:"subscribed_codecs",kind:"message",T:qm,repeated:!0}]),Hm=g.makeMessageType("livekit.SubscribedAudioCodecUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_audio_codecs",kind:"message",T:Em,repeated:!0}]),zc=g.makeMessageType("livekit.TrackPermission",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"all_tracks",kind:"scalar",T:8},{no:3,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:4,name:"participant_identity",kind:"scalar",T:9}]),Jc=g.makeMessageType("livekit.SubscriptionPermission",()=>[{no:1,name:"all_participants",kind:"scalar",T:8},{no:2,name:"track_permissions",kind:"message",T:zc,repeated:!0}]),Wm=g.makeMessageType("livekit.SubscriptionPermissionUpdate",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"allowed",kind:"scalar",T:8}]),zm=g.makeMessageType("livekit.RoomMovedResponse",()=>[{no:1,name:"room",kind:"message",T:ir},{no:2,name:"token",kind:"scalar",T:9},{no:3,name:"participant",kind:"message",T:yn},{no:4,name:"other_participants",kind:"message",T:yn,repeated:!0}]),Ms=g.makeMessageType("livekit.SyncState",()=>[{no:1,name:"answer",kind:"message",T:dn},{no:2,name:"subscription",kind:"message",T:hr},{no:3,name:"publish_tracks",kind:"message",T:Rs,repeated:!0},{no:4,name:"data_channels",kind:"message",T:$c,repeated:!0},{no:5,name:"offer",kind:"message",T:dn},{no:6,name:"track_sids_disabled",kind:"scalar",T:9,repeated:!0},{no:7,name:"datachannel_receive_states",kind:"message",T:Gc,repeated:!0},{no:8,name:"publish_data_tracks",kind:"message",T:ws,repeated:!0}]),Gc=g.makeMessageType("livekit.DataChannelReceiveState",()=>[{no:1,name:"publisher_sid",kind:"scalar",T:9},{no:2,name:"last_seq",kind:"scalar",T:13}]),$c=g.makeMessageType("livekit.DataChannelInfo",()=>[{no:1,name:"label",kind:"scalar",T:9},{no:2,name:"id",kind:"scalar",T:13},{no:3,name:"target",kind:"enum",T:g.getEnumType(bt)}]),Ut=g.makeMessageType("livekit.SimulateScenario",()=>[{no:1,name:"speaker_update",kind:"scalar",T:5,oneof:"scenario"},{no:2,name:"node_failure",kind:"scalar",T:8,oneof:"scenario"},{no:3,name:"migration",kind:"scalar",T:8,oneof:"scenario"},{no:4,name:"server_leave",kind:"scalar",T:8,oneof:"scenario"},{no:5,name:"switch_candidate_protocol",kind:"enum",T:g.getEnumType(Pm),oneof:"scenario"},{no:6,name:"subscriber_bandwidth",kind:"scalar",T:3,oneof:"scenario"},{no:7,name:"disconnect_signal_on_resume",kind:"scalar",T:8,oneof:"scenario"},{no:8,name:"disconnect_signal_on_resume_no_messages",kind:"scalar",T:8,oneof:"scenario"},{no:9,name:"leave_request_full_reconnect",kind:"scalar",T:8,oneof:"scenario"}]),Yc=g.makeMessageType("livekit.Ping",()=>[{no:1,name:"timestamp",kind:"scalar",T:3},{no:2,name:"rtt",kind:"scalar",T:3}]),Jm=g.makeMessageType("livekit.Pong",()=>[{no:1,name:"last_ping_timestamp",kind:"scalar",T:3},{no:2,name:"timestamp",kind:"scalar",T:3}]),Gm=g.makeMessageType("livekit.RegionSettings",()=>[{no:1,name:"regions",kind:"message",T:$m,repeated:!0}]),$m=g.makeMessageType("livekit.RegionInfo",()=>[{no:1,name:"region",kind:"scalar",T:9},{no:2,name:"url",kind:"scalar",T:9},{no:3,name:"distance",kind:"scalar",T:3}]),Ym=g.makeMessageType("livekit.SubscriptionResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"err",kind:"enum",T:g.getEnumType(Tc)}]),Qm=g.makeMessageType("livekit.RequestResponse",()=>[{no:1,name:"request_id",kind:"scalar",T:13},{no:2,name:"reason",kind:"enum",T:g.getEnumType(bn)},{no:3,name:"message",kind:"scalar",T:9},{no:4,name:"trickle",kind:"message",T:ur,oneof:"request"},{no:5,name:"add_track",kind:"message",T:fi,oneof:"request"},{no:6,name:"mute",kind:"message",T:lr,oneof:"request"},{no:7,name:"update_metadata",kind:"message",T:_s,oneof:"request"},{no:8,name:"update_audio_track",kind:"message",T:Ps,oneof:"request"},{no:9,name:"update_video_track",kind:"message",T:Kc,oneof:"request"},{no:10,name:"publish_data_track",kind:"message",T:Cs,oneof:"request"},{no:11,name:"unpublish_data_track",kind:"message",T:Es,oneof:"request"}]),bn=g.makeEnum("livekit.RequestResponse.Reason",[{no:0,name:"OK"},{no:1,name:"NOT_FOUND"},{no:2,name:"NOT_ALLOWED"},{no:3,name:"LIMIT_EXCEEDED"},{no:4,name:"QUEUED"},{no:5,name:"UNSUPPORTED_TYPE"},{no:6,name:"UNCLASSIFIED_ERROR"},{no:7,name:"INVALID_HANDLE"},{no:8,name:"INVALID_NAME"},{no:9,name:"DUPLICATE_HANDLE"},{no:10,name:"DUPLICATE_NAME"}]),Xm=g.makeMessageType("livekit.TrackSubscribed",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),Qc=g.makeMessageType("livekit.ConnectionSettings",()=>[{no:1,name:"auto_subscribe",kind:"scalar",T:8},{no:2,name:"adaptive_stream",kind:"scalar",T:8},{no:3,name:"subscriber_allow_pause",kind:"scalar",T:8,opt:!0},{no:4,name:"disable_ice_lite",kind:"scalar",T:8},{no:5,name:"auto_subscribe_data_track",kind:"scalar",T:8,opt:!0}]),Zm=g.makeMessageType("livekit.JoinRequest",()=>[{no:1,name:"client_info",kind:"message",T:Oc},{no:2,name:"connection_settings",kind:"message",T:Qc},{no:3,name:"metadata",kind:"scalar",T:9},{no:4,name:"participant_attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:5,name:"add_track_requests",kind:"message",T:fi,repeated:!0},{no:6,name:"publisher_offer",kind:"message",T:dn},{no:7,name:"reconnect",kind:"scalar",T:8},{no:8,name:"reconnect_reason",kind:"enum",T:g.getEnumType(vn)},{no:9,name:"participant_sid",kind:"scalar",T:9},{no:10,name:"sync_state",kind:"message",T:Ms}]),ep=g.makeMessageType("livekit.WrappedJoinRequest",()=>[{no:1,name:"compression",kind:"enum",T:g.getEnumType(Ds)},{no:2,name:"join_request",kind:"scalar",T:12}]),Ds=g.makeEnum("livekit.WrappedJoinRequest.Compression",[{no:0,name:"NONE"},{no:1,name:"GZIP"}]),tp=g.makeMessageType("livekit.MediaSectionsRequirement",()=>[{no:1,name:"num_audios",kind:"scalar",T:13},{no:2,name:"num_videos",kind:"scalar",T:13}]),Xc=g.makeEnum("livekit.EncodingOptionsPreset",[{no:0,name:"H264_720P_30"},{no:1,name:"H264_720P_60"},{no:2,name:"H264_1080P_30"},{no:3,name:"H264_1080P_60"},{no:4,name:"PORTRAIT_H264_720P_30"},{no:5,name:"PORTRAIT_H264_720P_60"},{no:6,name:"PORTRAIT_H264_1080P_30"},{no:7,name:"PORTRAIT_H264_1080P_60"}]),np=g.makeEnum("livekit.EncodedFileType",[{no:0,name:"DEFAULT_FILETYPE"},{no:1,name:"MP4"},{no:2,name:"OGG"},{no:3,name:"MP3"}]),ip=g.makeEnum("livekit.StreamProtocol",[{no:0,name:"DEFAULT_PROTOCOL"},{no:1,name:"RTMP"},{no:2,name:"SRT"},{no:3,name:"WEBSOCKET"}]),rp=g.makeEnum("livekit.SegmentedFileProtocol",[{no:0,name:"DEFAULT_SEGMENTED_FILE_PROTOCOL"},{no:1,name:"HLS_PROTOCOL"}]),sp=g.makeEnum("livekit.SegmentedFileSuffix",[{no:0,name:"INDEX"},{no:1,name:"TIMESTAMP"}]),ap=g.makeEnum("livekit.ImageFileSuffix",[{no:0,name:"IMAGE_SUFFIX_INDEX"},{no:1,name:"IMAGE_SUFFIX_TIMESTAMP"},{no:2,name:"IMAGE_SUFFIX_NONE_OVERWRITE"}]),op=g.makeEnum("livekit.AudioMixing",[{no:0,name:"DEFAULT_MIXING"},{no:1,name:"DUAL_CHANNEL_AGENT"},{no:2,name:"DUAL_CHANNEL_ALTERNATE"}]),Zc=g.makeMessageType("livekit.EncodingOptions",()=>[{no:1,name:"width",kind:"scalar",T:5},{no:2,name:"height",kind:"scalar",T:5},{no:3,name:"depth",kind:"scalar",T:5},{no:4,name:"framerate",kind:"scalar",T:5},{no:5,name:"audio_codec",kind:"enum",T:g.getEnumType(hm)},{no:6,name:"audio_bitrate",kind:"scalar",T:5},{no:7,name:"audio_frequency",kind:"scalar",T:5},{no:8,name:"video_codec",kind:"enum",T:g.getEnumType(fm)},{no:9,name:"video_bitrate",kind:"scalar",T:5},{no:10,name:"key_frame_interval",kind:"scalar",T:1},{no:11,name:"audio_quality",kind:"scalar",T:5},{no:12,name:"video_quality",kind:"scalar",T:5}]),ed=g.makeMessageType("livekit.StreamOutput",()=>[{no:1,name:"protocol",kind:"enum",T:g.getEnumType(ip)},{no:2,name:"urls",kind:"scalar",T:9,repeated:!0}]),Os=g.makeMessageType("livekit.SegmentedFileOutput",()=>[{no:1,name:"protocol",kind:"enum",T:g.getEnumType(rp)},{no:2,name:"filename_prefix",kind:"scalar",T:9},{no:3,name:"playlist_name",kind:"scalar",T:9},{no:11,name:"live_playlist_name",kind:"scalar",T:9},{no:4,name:"segment_duration",kind:"scalar",T:13},{no:10,name:"filename_suffix",kind:"enum",T:g.getEnumType(sp)},{no:8,name:"disable_manifest",kind:"scalar",T:8},{no:5,name:"s3",kind:"message",T:mr,oneof:"output"},{no:6,name:"gcp",kind:"message",T:pr,oneof:"output"},{no:7,name:"azure",kind:"message",T:gr,oneof:"output"},{no:9,name:"aliOSS",kind:"message",T:vr,oneof:"output"}]),cp=g.makeMessageType("livekit.ImageOutput",()=>[{no:1,name:"capture_interval",kind:"scalar",T:13},{no:2,name:"width",kind:"scalar",T:5},{no:3,name:"height",kind:"scalar",T:5},{no:4,name:"filename_prefix",kind:"scalar",T:9},{no:5,name:"filename_suffix",kind:"enum",T:g.getEnumType(ap)},{no:6,name:"image_codec",kind:"enum",T:g.getEnumType(mm)},{no:7,name:"disable_manifest",kind:"scalar",T:8},{no:8,name:"s3",kind:"message",T:mr,oneof:"output"},{no:9,name:"gcp",kind:"message",T:pr,oneof:"output"},{no:10,name:"azure",kind:"message",T:gr,oneof:"output"},{no:11,name:"aliOSS",kind:"message",T:vr,oneof:"output"}]),mr=g.makeMessageType("livekit.S3Upload",()=>[{no:1,name:"access_key",kind:"scalar",T:9},{no:2,name:"secret",kind:"scalar",T:9},{no:11,name:"session_token",kind:"scalar",T:9},{no:12,name:"assume_role_arn",kind:"scalar",T:9},{no:13,name:"assume_role_external_id",kind:"scalar",T:9},{no:3,name:"region",kind:"scalar",T:9},{no:4,name:"endpoint",kind:"scalar",T:9},{no:5,name:"bucket",kind:"scalar",T:9},{no:6,name:"force_path_style",kind:"scalar",T:8},{no:7,name:"metadata",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:8,name:"tagging",kind:"scalar",T:9},{no:9,name:"content_disposition",kind:"scalar",T:9},{no:10,name:"proxy",kind:"message",T:td}]),pr=g.makeMessageType("livekit.GCPUpload",()=>[{no:1,name:"credentials",kind:"scalar",T:9},{no:2,name:"bucket",kind:"scalar",T:9},{no:3,name:"proxy",kind:"message",T:td}]),gr=g.makeMessageType("livekit.AzureBlobUpload",()=>[{no:1,name:"account_name",kind:"scalar",T:9},{no:2,name:"account_key",kind:"scalar",T:9},{no:3,name:"container_name",kind:"scalar",T:9}]),vr=g.makeMessageType("livekit.AliOSSUpload",()=>[{no:1,name:"access_key",kind:"scalar",T:9},{no:2,name:"secret",kind:"scalar",T:9},{no:3,name:"region",kind:"scalar",T:9},{no:4,name:"endpoint",kind:"scalar",T:9},{no:5,name:"bucket",kind:"scalar",T:9}]),td=g.makeMessageType("livekit.ProxyConfig",()=>[{no:1,name:"url",kind:"scalar",T:9},{no:2,name:"username",kind:"scalar",T:9},{no:3,name:"password",kind:"scalar",T:9}]),dp=g.makeMessageType("livekit.AutoParticipantEgress",()=>[{no:1,name:"preset",kind:"enum",T:g.getEnumType(Xc),oneof:"options"},{no:2,name:"advanced",kind:"message",T:Zc,oneof:"options"},{no:3,name:"file_outputs",kind:"message",T:As,repeated:!0},{no:4,name:"segment_outputs",kind:"message",T:Os,repeated:!0}]),up=g.makeMessageType("livekit.AutoTrackEgress",()=>[{no:1,name:"filepath",kind:"scalar",T:9},{no:5,name:"disable_manifest",kind:"scalar",T:8},{no:2,name:"s3",kind:"message",T:mr,oneof:"output"},{no:3,name:"gcp",kind:"message",T:pr,oneof:"output"},{no:4,name:"azure",kind:"message",T:gr,oneof:"output"},{no:6,name:"aliOSS",kind:"message",T:vr,oneof:"output"}]),lp=g.makeMessageType("livekit.RoomCompositeEgressRequest",()=>[{no:1,name:"room_name",kind:"scalar",T:9},{no:2,name:"layout",kind:"scalar",T:9},{no:3,name:"audio_only",kind:"scalar",T:8},{no:15,name:"audio_mixing",kind:"enum",T:g.getEnumType(op)},{no:4,name:"video_only",kind:"scalar",T:8},{no:5,name:"custom_base_url",kind:"scalar",T:9},{no:6,name:"file",kind:"message",T:As,oneof:"output"},{no:7,name:"stream",kind:"message",T:ed,oneof:"output"},{no:10,name:"segments",kind:"message",T:Os,oneof:"output"},{no:8,name:"preset",kind:"enum",T:g.getEnumType(Xc),oneof:"options"},{no:9,name:"advanced",kind:"message",T:Zc,oneof:"options"},{no:11,name:"file_outputs",kind:"message",T:As,repeated:!0},{no:12,name:"stream_outputs",kind:"message",T:ed,repeated:!0},{no:13,name:"segment_outputs",kind:"message",T:Os,repeated:!0},{no:14,name:"image_outputs",kind:"message",T:cp,repeated:!0},{no:16,name:"webhooks",kind:"message",T:wm,repeated:!0}]),As=g.makeMessageType("livekit.EncodedFileOutput",()=>[{no:1,name:"file_type",kind:"enum",T:g.getEnumType(np)},{no:2,name:"filepath",kind:"scalar",T:9},{no:6,name:"disable_manifest",kind:"scalar",T:8},{no:3,name:"s3",kind:"message",T:mr,oneof:"output"},{no:4,name:"gcp",kind:"message",T:pr,oneof:"output"},{no:5,name:"azure",kind:"message",T:gr,oneof:"output"},{no:7,name:"aliOSS",kind:"message",T:vr,oneof:"output"}]),hp=g.makeMessageType("livekit.RoomEgress",()=>[{no:1,name:"room",kind:"message",T:lp},{no:3,name:"participant",kind:"message",T:dp},{no:2,name:"tracks",kind:"message",T:up}]),yr=g.makeMessageType("livekit.RoomConfiguration",()=>[{no:1,name:"name",kind:"scalar",T:9},{no:2,name:"empty_timeout",kind:"scalar",T:13},{no:3,name:"departure_timeout",kind:"scalar",T:13},{no:4,name:"max_participants",kind:"scalar",T:13},{no:11,name:"metadata",kind:"scalar",T:9},{no:5,name:"egress",kind:"message",T:hp},{no:7,name:"min_playout_delay",kind:"scalar",T:13},{no:8,name:"max_playout_delay",kind:"scalar",T:13},{no:9,name:"sync_streams",kind:"scalar",T:8},{no:10,name:"agents",kind:"message",T:ks,repeated:!0},{no:12,name:"tags",kind:"map",K:9,V:{kind:"scalar",T:9}}]),fp=g.makeMessageType("livekit.TokenSourceRequest",()=>[{no:1,name:"room_name",kind:"scalar",T:9,opt:!0},{no:2,name:"participant_name",kind:"scalar",T:9,opt:!0},{no:3,name:"participant_identity",kind:"scalar",T:9,opt:!0},{no:4,name:"participant_metadata",kind:"scalar",T:9,opt:!0},{no:5,name:"participant_attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:6,name:"room_config",kind:"message",T:yr,opt:!0}]),nd=g.makeMessageType("livekit.TokenSourceResponse",()=>[{no:1,name:"server_url",kind:"scalar",T:9},{no:2,name:"participant_token",kind:"scalar",T:9}]);function mp(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var br={exports:{}},pp=br.exports,id;function gp(){return id||(id=1,(function(n){(function(e,t){n.exports?n.exports=t():e.log=t()})(pp,function(){var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"],s={},a=null;function c(v,b){var k=v[b];if(typeof k.bind=="function")return k.bind(v);try{return Function.prototype.bind.call(k,v)}catch{return function(){return Function.prototype.apply.apply(k,[v,arguments])}}}function d(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function o(v){return v==="debug"&&(v="log"),typeof console===t?!1:v==="trace"&&i?d:console[v]!==void 0?c(console,v):console.log!==void 0?c(console,"log"):e}function u(){for(var v=this.getLevel(),b=0;b<r.length;b++){var k=r[b];this[k]=b<v?e:this.methodFactory(k,v,this.name)}if(this.log=this.debug,typeof console===t&&v<this.levels.SILENT)return"No console available for logging"}function l(v){return function(){typeof console!==t&&(u.call(this),this[v].apply(this,arguments))}}function h(v,b,k){return o(v)||l.apply(this,arguments)}function f(v,b){var k=this,C,_,y,T="loglevel";typeof v=="string"?T+=":"+v:typeof v=="symbol"&&(T=void 0);function S(N){var j=(r[N]||"silent").toUpperCase();if(!(typeof window===t||!T)){try{window.localStorage[T]=j;return}catch{}try{window.document.cookie=encodeURIComponent(T)+"="+j+";"}catch{}}}function x(){var N;if(!(typeof window===t||!T)){try{N=window.localStorage[T]}catch{}if(typeof N===t)try{var j=window.document.cookie,ne=encodeURIComponent(T),oe=j.indexOf(ne+"=");oe!==-1&&(N=/^([^;]+)/.exec(j.slice(oe+ne.length+1))[1])}catch{}return k.levels[N]===void 0&&(N=void 0),N}}function U(){if(!(typeof window===t||!T)){try{window.localStorage.removeItem(T)}catch{}try{window.document.cookie=encodeURIComponent(T)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function F(N){var j=N;if(typeof j=="string"&&k.levels[j.toUpperCase()]!==void 0&&(j=k.levels[j.toUpperCase()]),typeof j=="number"&&j>=0&&j<=k.levels.SILENT)return j;throw new TypeError("log.setLevel() called with invalid level: "+N)}k.name=v,k.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},k.methodFactory=b||h,k.getLevel=function(){return y??_??C},k.setLevel=function(N,j){return y=F(N),j!==!1&&S(y),u.call(k)},k.setDefaultLevel=function(N){_=F(N),x()||k.setLevel(N,!1)},k.resetLevel=function(){y=null,U(),u.call(k)},k.enableAll=function(N){k.setLevel(k.levels.TRACE,N)},k.disableAll=function(N){k.setLevel(k.levels.SILENT,N)},k.rebuild=function(){if(a!==k&&(C=F(a.getLevel())),u.call(k),a===k)for(var N in s)s[N].rebuild()},C=F(a?a.getLevel():"WARN");var A=x();A!=null&&(y=F(A)),u.call(k)}a=new f,a.getLogger=function(b){if(typeof b!="symbol"&&typeof b!="string"||b==="")throw new TypeError("You must supply a name when creating a logger.");var k=s[b];return k||(k=s[b]=new f(b,a.methodFactory)),k};var p=typeof window!==t?window.log:void 0;return a.noConflict=function(){return typeof window!==t&&window.log===a&&(window.log=p),a},a.getLoggers=function(){return s},a.default=a,a})})(br)),br.exports}var mi=gp(),qn;(function(n){n[n.trace=0]="trace",n[n.debug=1]="debug",n[n.info=2]="info",n[n.warn=3]="warn",n[n.error=4]="error",n[n.silent=5]="silent"})(qn||(qn={}));var Ke;(function(n){n.Default="livekit",n.Room="livekit-room",n.TokenSource="livekit-token-source",n.Participant="livekit-participant",n.Track="livekit-track",n.Publication="livekit-track-publication",n.Engine="livekit-engine",n.Signal="livekit-signal",n.PCManager="livekit-pc-manager",n.PCTransport="livekit-pc-transport",n.E2EE="lk-e2ee",n.DataTracks="livekit-data-tracks"})(Ke||(Ke={}));let J=mi.getLogger("livekit");const rd=Object.values(Ke).map(n=>mi.getLogger(n));J.setDefaultLevel(qn.info);function Qe(n){const e=mi.getLogger(n);return e.setDefaultLevel(J.getLevel()),e}function vp(n,e){if(e)mi.getLogger(e).setLevel(n);else for(const t of rd)t.setLevel(n)}function yp(n,e){(e?[e]:rd).forEach(i=>{const r=i.methodFactory;i.methodFactory=(s,a,c)=>{const d=r(s,a,c),o=qn[s],u=o>=a&&o<qn.silent;return(l,h)=>{h?d(l,h):d(l),u&&n(o,l,h)}},i.setLevel(i.getLevel())})}const bp=mi.getLogger("lk-e2ee"),pi=7e3,kp=[0,300,4*300,9*300,16*300,pi,pi,pi,pi,pi];class sd{constructor(e){this._retryDelays=e!==void 0?[...e]:kp}nextRetryDelayInMs(e){if(e.retryCount>=this._retryDelays.length)return null;const t=this._retryDelays[e.retryCount];return e.retryCount<=1?t:t+Math.random()*1e3}}function xs(n,e){var t={};for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&e.indexOf(i)<0&&(t[i]=n[i]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,i=Object.getOwnPropertySymbols(n);r<i.length;r++)e.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(n,i[r])&&(t[i[r]]=n[i[r]]);return t}function m(n,e,t,i){function r(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function c(u){try{o(i.next(u))}catch(l){a(l)}}function d(u){try{o(i.throw(u))}catch(l){a(l)}}function o(u){u.done?s(u.value):r(u.value).then(c,d)}o((i=i.apply(n,e||[])).next())})}function ad(n){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&n[e],i=0;if(t)return t.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&i>=n.length&&(n=void 0),{value:n&&n[i++],done:!n}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Kn(n){return this instanceof Kn?(this.v=n,this):new Kn(n)}function Tp(n,e,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=t.apply(n,e||[]),r,s=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),c("next"),c("throw"),c("return",a),r[Symbol.asyncIterator]=function(){return this},r;function a(f){return function(p){return Promise.resolve(p).then(f,l)}}function c(f,p){i[f]&&(r[f]=function(v){return new Promise(function(b,k){s.push([f,v,b,k])>1||d(f,v)})},p&&(r[f]=p(r[f])))}function d(f,p){try{o(i[f](p))}catch(v){h(s[0][3],v)}}function o(f){f.value instanceof Kn?Promise.resolve(f.value.v).then(u,l):h(s[0][2],f)}function u(f){d("next",f)}function l(f){d("throw",f)}function h(f,p){f(p),s.shift(),s.length&&d(s[0][0],s[0][1])}}function Sp(n){var e,t;return e={},i("next"),i("throw",function(r){throw r}),i("return"),e[Symbol.iterator]=function(){return this},e;function i(r,s){e[r]=n[r]?function(a){return(t=!t)?{value:Kn(n[r](a)),done:!1}:s?s(a):a}:s}}function kt(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=n[Symbol.asyncIterator],t;return e?e.call(n):(n=typeof ad=="function"?ad(n):n[Symbol.iterator](),t={},i("next"),i("throw"),i("return"),t[Symbol.asyncIterator]=function(){return this},t);function i(s){t[s]=n[s]&&function(a){return new Promise(function(c,d){a=n[s](a),r(c,d,a.done,a.value)})}}function r(s,a,c,d){Promise.resolve(d).then(function(o){s({value:o,done:c})},a)}}typeof SuppressedError=="function"&&SuppressedError;var kr={exports:{}},od;function Cp(){if(od)return kr.exports;od=1;var n=typeof Reflect=="object"?Reflect:null,e=n&&typeof n.apply=="function"?n.apply:function(T,S,x){return Function.prototype.apply.call(T,S,x)},t;n&&typeof n.ownKeys=="function"?t=n.ownKeys:Object.getOwnPropertySymbols?t=function(T){return Object.getOwnPropertyNames(T).concat(Object.getOwnPropertySymbols(T))}:t=function(T){return Object.getOwnPropertyNames(T)};function i(y){console&&console.warn&&console.warn(y)}var r=Number.isNaN||function(T){return T!==T};function s(){s.init.call(this)}kr.exports=s,kr.exports.once=k,s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var a=10;function c(y){if(typeof y!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof y)}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return a},set:function(y){if(typeof y!="number"||y<0||r(y))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+y+".");a=y}}),s.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(T){if(typeof T!="number"||T<0||r(T))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+T+".");return this._maxListeners=T,this};function d(y){return y._maxListeners===void 0?s.defaultMaxListeners:y._maxListeners}s.prototype.getMaxListeners=function(){return d(this)},s.prototype.emit=function(T){for(var S=[],x=1;x<arguments.length;x++)S.push(arguments[x]);var U=T==="error",F=this._events;if(F!==void 0)U=U&&F.error===void 0;else if(!U)return!1;if(U){var A;if(S.length>0&&(A=S[0]),A instanceof Error)throw A;var N=new Error("Unhandled error."+(A?" ("+A.message+")":""));throw N.context=A,N}var j=F[T];if(j===void 0)return!1;if(typeof j=="function")e(j,this,S);else for(var ne=j.length,oe=p(j,ne),x=0;x<ne;++x)e(oe[x],this,S);return!0};function o(y,T,S,x){var U,F,A;if(c(S),F=y._events,F===void 0?(F=y._events=Object.create(null),y._eventsCount=0):(F.newListener!==void 0&&(y.emit("newListener",T,S.listener?S.listener:S),F=y._events),A=F[T]),A===void 0)A=F[T]=S,++y._eventsCount;else if(typeof A=="function"?A=F[T]=x?[S,A]:[A,S]:x?A.unshift(S):A.push(S),U=d(y),U>0&&A.length>U&&!A.warned){A.warned=!0;var N=new Error("Possible EventEmitter memory leak detected. "+A.length+" "+String(T)+" listeners added. Use emitter.setMaxListeners() to increase limit");N.name="MaxListenersExceededWarning",N.emitter=y,N.type=T,N.count=A.length,i(N)}return y}s.prototype.addListener=function(T,S){return o(this,T,S,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(T,S){return o(this,T,S,!0)};function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(y,T,S){var x={fired:!1,wrapFn:void 0,target:y,type:T,listener:S},U=u.bind(x);return U.listener=S,x.wrapFn=U,U}s.prototype.once=function(T,S){return c(S),this.on(T,l(this,T,S)),this},s.prototype.prependOnceListener=function(T,S){return c(S),this.prependListener(T,l(this,T,S)),this},s.prototype.removeListener=function(T,S){var x,U,F,A,N;if(c(S),U=this._events,U===void 0)return this;if(x=U[T],x===void 0)return this;if(x===S||x.listener===S)--this._eventsCount===0?this._events=Object.create(null):(delete U[T],U.removeListener&&this.emit("removeListener",T,x.listener||S));else if(typeof x!="function"){for(F=-1,A=x.length-1;A>=0;A--)if(x[A]===S||x[A].listener===S){N=x[A].listener,F=A;break}if(F<0)return this;F===0?x.shift():v(x,F),x.length===1&&(U[T]=x[0]),U.removeListener!==void 0&&this.emit("removeListener",T,N||S)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(T){var S,x,U;if(x=this._events,x===void 0)return this;if(x.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):x[T]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete x[T]),this;if(arguments.length===0){var F=Object.keys(x),A;for(U=0;U<F.length;++U)A=F[U],A!=="removeListener"&&this.removeAllListeners(A);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(S=x[T],typeof S=="function")this.removeListener(T,S);else if(S!==void 0)for(U=S.length-1;U>=0;U--)this.removeListener(T,S[U]);return this};function h(y,T,S){var x=y._events;if(x===void 0)return[];var U=x[T];return U===void 0?[]:typeof U=="function"?S?[U.listener||U]:[U]:S?b(U):p(U,U.length)}s.prototype.listeners=function(T){return h(this,T,!0)},s.prototype.rawListeners=function(T){return h(this,T,!1)},s.listenerCount=function(y,T){return typeof y.listenerCount=="function"?y.listenerCount(T):f.call(y,T)},s.prototype.listenerCount=f;function f(y){var T=this._events;if(T!==void 0){var S=T[y];if(typeof S=="function")return 1;if(S!==void 0)return S.length}return 0}s.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]};function p(y,T){for(var S=new Array(T),x=0;x<T;++x)S[x]=y[x];return S}function v(y,T){for(;T+1<y.length;T++)y[T]=y[T+1];y.pop()}function b(y){for(var T=new Array(y.length),S=0;S<T.length;++S)T[S]=y[S].listener||y[S];return T}function k(y,T){return new Promise(function(S,x){function U(A){y.removeListener(T,F),x(A)}function F(){typeof y.removeListener=="function"&&y.removeListener("error",U),S([].slice.call(arguments))}_(y,T,F,{once:!0}),T!=="error"&&C(y,U,{once:!0})})}function C(y,T,S){typeof y.on=="function"&&_(y,"error",T,S)}function _(y,T,S,x){if(typeof y.on=="function")x.once?y.once(T,S):y.on(T,S);else if(typeof y.addEventListener=="function")y.addEventListener(T,function U(F){x.once&&y.removeEventListener(T,U),S(F)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof y)}return kr.exports}var ht=Cp();let cd=!0,dd=!0;function gi(n,e,t){const i=n.match(e);return i&&i.length>=t&&parseFloat(i[t],10)}function kn(n,e,t){if(!n.RTCPeerConnection)return;if(!Object.getOwnPropertyDescriptor(EventTarget.prototype,"addEventListener").writable){Ls("Unable to polyfill events");return}const r=n.RTCPeerConnection.prototype,s=r.addEventListener;r.addEventListener=function(c,d){if(c!==e)return s.apply(this,arguments);const o=u=>{const l=t(u);l&&(d.handleEvent?d.handleEvent(l):d(l))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(d,o),s.apply(this,[c,o])};const a=r.removeEventListener;r.removeEventListener=function(c,d){if(c!==e||!this._eventMap||!this._eventMap[e])return a.apply(this,arguments);if(!this._eventMap[e].has(d))return a.apply(this,arguments);const o=this._eventMap[e].get(d);return this._eventMap[e].delete(d),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,a.apply(this,[c,o])},Object.defineProperty(r,"on"+e,{get(){return this["_on"+e]},set(c){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),c&&this.addEventListener(e,this["_on"+e]=c)},enumerable:!0,configurable:!0})}function wp(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):(cd=n,n?"adapter.js logging disabled":"adapter.js logging enabled")}function Ep(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):(dd=!n,"adapter.js deprecation warnings "+(n?"disabled":"enabled"))}function Ls(){if(typeof window=="object"){if(cd)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Ns(n,e){dd&&console.warn(n+" is deprecated, please use "+e+" instead.")}function Rp(n){const e={browser:null,version:null};if(typeof n>"u"||!n.navigator||!n.navigator.userAgent)return e.browser="Not a browser.",e;const{navigator:t}=n;if(t.userAgentData&&t.userAgentData.brands){const i=t.userAgentData.brands.find(r=>r.brand==="Chromium");if(i)return{browser:"chrome",version:parseInt(i.version,10)}}if(t.mozGetUserMedia)e.browser="firefox",e.version=parseInt(gi(t.userAgent,/Firefox\/(\d+)\./,1));else if(t.webkitGetUserMedia||n.isSecureContext===!1&&n.webkitRTCPeerConnection)e.browser="chrome",e.version=parseInt(gi(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2))||null;else if(n.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=parseInt(gi(t.userAgent,/AppleWebKit\/(\d+)\./,1)),e.supportsUnifiedPlan=n.RTCRtpTransceiver&&"currentDirection"in n.RTCRtpTransceiver.prototype,e._safariVersion=gi(t.userAgent,/Version\/(\d+(\.?\d+))/,1);else return e.browser="Not a supported browser.",e;return e}function ud(n){return Object.prototype.toString.call(n)==="[object Object]"}function ld(n){return ud(n)?Object.keys(n).reduce(function(e,t){const i=ud(n[t]),r=i?ld(n[t]):n[t],s=i&&!Object.keys(r).length;return r===void 0||s?e:Object.assign(e,{[t]:r})},{}):n}function Us(n,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(i=>{i.endsWith("Id")?Us(n,n.get(e[i]),t):i.endsWith("Ids")&&e[i].forEach(r=>{Us(n,n.get(r),t)})}))}function hd(n,e,t){const i=t?"outbound-rtp":"inbound-rtp",r=new Map;if(e===null)return r;const s=[];return n.forEach(a=>{a.type==="track"&&a.trackIdentifier===e.id&&s.push(a)}),s.forEach(a=>{n.forEach(c=>{c.type===i&&c.trackId===a.id&&Us(n,c,r)})}),r}const fd=Ls;function md(n,e){const t=n&&n.navigator;if(!t.mediaDevices)return;const i=function(c){if(typeof c!="object"||c.mandatory||c.optional)return c;const d={};return Object.keys(c).forEach(o=>{if(o==="require"||o==="advanced"||o==="mediaSource")return;const u=typeof c[o]=="object"?c[o]:{ideal:c[o]};u.exact!==void 0&&typeof u.exact=="number"&&(u.min=u.max=u.exact);const l=function(h,f){return h?h+f.charAt(0).toUpperCase()+f.slice(1):f==="deviceId"?"sourceId":f};if(u.ideal!==void 0){d.optional=d.optional||[];let h={};typeof u.ideal=="number"?(h[l("min",o)]=u.ideal,d.optional.push(h),h={},h[l("max",o)]=u.ideal,d.optional.push(h)):(h[l("",o)]=u.ideal,d.optional.push(h))}u.exact!==void 0&&typeof u.exact!="number"?(d.mandatory=d.mandatory||{},d.mandatory[l("",o)]=u.exact):["min","max"].forEach(h=>{u[h]!==void 0&&(d.mandatory=d.mandatory||{},d.mandatory[l(h,o)]=u[h])})}),c.advanced&&(d.optional=(d.optional||[]).concat(c.advanced)),d},r=function(c,d){if(e.version>=61)return d(c);if(c=JSON.parse(JSON.stringify(c)),c&&typeof c.audio=="object"){const o=function(u,l,h){l in u&&!(h in u)&&(u[h]=u[l],delete u[l])};c=JSON.parse(JSON.stringify(c)),o(c.audio,"autoGainControl","googAutoGainControl"),o(c.audio,"noiseSuppression","googNoiseSuppression"),c.audio=i(c.audio)}if(c&&typeof c.video=="object"){let o=c.video.facingMode;o=o&&(typeof o=="object"?o:{ideal:o});const u=e.version<66;if(o&&(o.exact==="user"||o.exact==="environment"||o.ideal==="user"||o.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!u)){delete c.video.facingMode;let l;if(o.exact==="environment"||o.ideal==="environment"?l=["back","rear"]:(o.exact==="user"||o.ideal==="user")&&(l=["front"]),l)return t.mediaDevices.enumerateDevices().then(h=>{h=h.filter(p=>p.kind==="videoinput");let f=h.find(p=>l.some(v=>p.label.toLowerCase().includes(v)));return!f&&h.length&&l.includes("back")&&(f=h[h.length-1]),f&&(c.video.deviceId=o.exact?{exact:f.deviceId}:{ideal:f.deviceId}),c.video=i(c.video),fd("chrome: "+JSON.stringify(c)),d(c)})}c.video=i(c.video)}return fd("chrome: "+JSON.stringify(c)),d(c)},s=function(c){return e.version>=64?c:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[c.name]||c.name,message:c.message,constraint:c.constraint||c.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}},a=function(c,d,o){r(c,u=>{t.webkitGetUserMedia(u,d,l=>{o&&o(s(l))})})};if(t.getUserMedia=a.bind(t),t.mediaDevices.getUserMedia){const c=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(d){return r(d,o=>c(o).then(u=>{if(o.audio&&!u.getAudioTracks().length||o.video&&!u.getVideoTracks().length)throw u.getTracks().forEach(l=>{l.stop()}),new DOMException("","NotFoundError");return u},u=>Promise.reject(s(u))))}}}function pd(n){n.MediaStream=n.MediaStream||n.webkitMediaStream}function gd(n,e){if(!(e.version>102))if(typeof n=="object"&&n.RTCPeerConnection&&!("ontrack"in n.RTCPeerConnection.prototype)){Object.defineProperty(n.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(i){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=i)},enumerable:!0,configurable:!0});const t=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=r=>{r.stream.addEventListener("addtrack",s=>{let a;n.RTCPeerConnection.prototype.getReceivers?a=this.getReceivers().find(d=>d.track&&d.track.id===s.track.id):a={track:s.track};const c=new Event("track");c.track=s.track,c.receiver=a,c.transceiver={receiver:a},c.streams=[r.stream],this.dispatchEvent(c)}),r.stream.getTracks().forEach(s=>{let a;n.RTCPeerConnection.prototype.getReceivers?a=this.getReceivers().find(d=>d.track&&d.track.id===s.id):a={track:s};const c=new Event("track");c.track=s,c.receiver=a,c.transceiver={receiver:a},c.streams=[r.stream],this.dispatchEvent(c)})},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else kn(n,"track",t=>(t.transceiver||Object.defineProperty(t,"transceiver",{value:{receiver:t.receiver}}),t))}function vd(n){if(typeof n=="object"&&n.RTCPeerConnection&&!("getSenders"in n.RTCPeerConnection.prototype)&&"createDTMFSender"in n.RTCPeerConnection.prototype){const e=function(r,s){return{track:s,get dtmf(){return this._dtmf===void 0&&(s.kind==="audio"?this._dtmf=r.createDTMFSender(s):this._dtmf=null),this._dtmf},_pc:r}};if(!n.RTCPeerConnection.prototype.getSenders){n.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(c,d){let o=r.apply(this,arguments);return o||(o=e(this,c),this._senders.push(o)),o};const s=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(c){s.apply(this,arguments);const d=this._senders.indexOf(c);d!==-1&&this._senders.splice(d,1)}}const t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(s){this._senders=this._senders||[],t.apply(this,[s]),s.getTracks().forEach(a=>{this._senders.push(e(this,a))})};const i=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(s){this._senders=this._senders||[],i.apply(this,[s]),s.getTracks().forEach(a=>{const c=this._senders.find(d=>d.track===a);c&&this._senders.splice(this._senders.indexOf(c),1)})}}else if(typeof n=="object"&&n.RTCPeerConnection&&"getSenders"in n.RTCPeerConnection.prototype&&"createDTMFSender"in n.RTCPeerConnection.prototype&&n.RTCRtpSender&&!("dtmf"in n.RTCRtpSender.prototype)){const e=n.RTCPeerConnection.prototype.getSenders;n.RTCPeerConnection.prototype.getSenders=function(){const i=e.apply(this,[]);return i.forEach(r=>r._pc=this),i},Object.defineProperty(n.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function yd(n,e){if(e.version>=67||!(typeof n=="object"&&n.RTCPeerConnection&&n.RTCRtpSender&&n.RTCRtpReceiver))return;if(!("getStats"in n.RTCRtpSender.prototype)){const i=n.RTCPeerConnection.prototype.getSenders;i&&(n.RTCPeerConnection.prototype.getSenders=function(){const a=i.apply(this,[]);return a.forEach(c=>c._pc=this),a});const r=n.RTCPeerConnection.prototype.addTrack;r&&(n.RTCPeerConnection.prototype.addTrack=function(){const a=r.apply(this,arguments);return a._pc=this,a}),n.RTCRtpSender.prototype.getStats=function(){const a=this;return this._pc.getStats().then(c=>hd(c,a.track,!0))}}if(!("getStats"in n.RTCRtpReceiver.prototype)){const i=n.RTCPeerConnection.prototype.getReceivers;i&&(n.RTCPeerConnection.prototype.getReceivers=function(){const s=i.apply(this,[]);return s.forEach(a=>a._pc=this),s}),kn(n,"track",r=>(r.receiver._pc=r.srcElement,r)),n.RTCRtpReceiver.prototype.getStats=function(){const s=this;return this._pc.getStats().then(a=>hd(a,s.track,!1))}}if(!("getStats"in n.RTCRtpSender.prototype&&"getStats"in n.RTCRtpReceiver.prototype))return;const t=n.RTCPeerConnection.prototype.getStats;n.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof n.MediaStreamTrack){const r=arguments[0];let s,a,c;return this.getSenders().forEach(d=>{d.track===r&&(s?c=!0:s=d)}),this.getReceivers().forEach(d=>(d.track===r&&(a?c=!0:a=d),d.track===r)),c||s&&a?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):s?s.getStats():a?a.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function bd(n){n.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(a=>this._shimmedLocalStreams[a][0])};const e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(a,c){if(!c)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const d=e.apply(this,arguments);return this._shimmedLocalStreams[c.id]?this._shimmedLocalStreams[c.id].indexOf(d)===-1&&this._shimmedLocalStreams[c.id].push(d):this._shimmedLocalStreams[c.id]=[c,d],d};const t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(a){this._shimmedLocalStreams=this._shimmedLocalStreams||{},a.getTracks().forEach(o=>{if(this.getSenders().find(l=>l.track===o))throw new DOMException("Track already exists.","InvalidAccessError")});const c=this.getSenders();t.apply(this,arguments);const d=this.getSenders().filter(o=>c.indexOf(o)===-1);this._shimmedLocalStreams[a.id]=[a].concat(d)};const i=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[a.id],i.apply(this,arguments)};const r=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},a&&Object.keys(this._shimmedLocalStreams).forEach(c=>{const d=this._shimmedLocalStreams[c].indexOf(a);d!==-1&&this._shimmedLocalStreams[c].splice(d,1),this._shimmedLocalStreams[c].length===1&&delete this._shimmedLocalStreams[c]}),r.apply(this,arguments)}}function kd(n,e){if(!n.RTCPeerConnection)return;if(n.RTCPeerConnection.prototype.addTrack&&e.version>=65)return bd(n);const t=n.RTCPeerConnection.prototype.getLocalStreams;n.RTCPeerConnection.prototype.getLocalStreams=function(){const u=t.apply(this);return this._reverseStreams=this._reverseStreams||{},u.map(l=>this._reverseStreams[l.id])};const i=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(u){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},u.getTracks().forEach(l=>{if(this.getSenders().find(f=>f.track===l))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[u.id]){const l=new n.MediaStream(u.getTracks());this._streams[u.id]=l,this._reverseStreams[l.id]=u,u=l}i.apply(this,[u])};const r=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(u){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},r.apply(this,[this._streams[u.id]||u]),delete this._reverseStreams[this._streams[u.id]?this._streams[u.id].id:u.id],delete this._streams[u.id]},n.RTCPeerConnection.prototype.addTrack=function(u,l){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const h=[].slice.call(arguments,1);if(h.length!==1||!h[0].getTracks().find(v=>v===u))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(v=>v.track===u))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const p=this._streams[l.id];if(p)p.addTrack(u),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const v=new n.MediaStream([u]);this._streams[l.id]=v,this._reverseStreams[v.id]=l,this.addStream(v)}return this.getSenders().find(v=>v.track===u)};function s(o,u){let l=u.sdp;return Object.keys(o._reverseStreams||[]).forEach(h=>{const f=o._reverseStreams[h],p=o._streams[f.id];l=l.replace(new RegExp(p.id,"g"),f.id)}),new RTCSessionDescription({type:u.type,sdp:l})}function a(o,u){let l=u.sdp;return Object.keys(o._reverseStreams||[]).forEach(h=>{const f=o._reverseStreams[h],p=o._streams[f.id];l=l.replace(new RegExp(f.id,"g"),p.id)}),new RTCSessionDescription({type:u.type,sdp:l})}["createOffer","createAnswer"].forEach(function(o){const u=n.RTCPeerConnection.prototype[o],l={[o](){const h=arguments;return arguments.length&&typeof arguments[0]=="function"?u.apply(this,[p=>{const v=s(this,p);h[0].apply(null,[v])},p=>{h[1]&&h[1].apply(null,p)},arguments[2]]):u.apply(this,arguments).then(p=>s(this,p))}};n.RTCPeerConnection.prototype[o]=l[o]});const c=n.RTCPeerConnection.prototype.setLocalDescription;n.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?c.apply(this,arguments):(arguments[0]=a(this,arguments[0]),c.apply(this,arguments))};const d=Object.getOwnPropertyDescriptor(n.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(n.RTCPeerConnection.prototype,"localDescription",{get(){const o=d.get.apply(this);return o.type===""?o:s(this,o)}}),n.RTCPeerConnection.prototype.removeTrack=function(u){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!u._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(u._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};let h;Object.keys(this._streams).forEach(f=>{this._streams[f].getTracks().find(v=>u.track===v)&&(h=this._streams[f])}),h&&(h.getTracks().length===1?this.removeStream(this._reverseStreams[h.id]):h.removeTrack(u.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Fs(n,e){!n.RTCPeerConnection&&n.webkitRTCPeerConnection&&(n.RTCPeerConnection=n.webkitRTCPeerConnection),n.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){const i=n.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new(t==="addIceCandidate"?n.RTCIceCandidate:n.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}};n.RTCPeerConnection.prototype[t]=r[t]})}function Td(n,e){e.version>102||kn(n,"negotiationneeded",t=>{const i=t.target;if(!((e.version<72||i.getConfiguration&&i.getConfiguration().sdpSemantics==="plan-b")&&i.signalingState!=="stable"))return t})}var Sd=Object.freeze({__proto__:null,fixNegotiationNeeded:Td,shimAddTrackRemoveTrack:kd,shimAddTrackRemoveTrackWithNative:bd,shimGetSendersWithDtmf:vd,shimGetUserMedia:md,shimMediaStream:pd,shimOnTrack:gd,shimPeerConnection:Fs,shimSenderReceiverGetStats:yd});function Cd(n,e){const t=n&&n.navigator,i=n&&n.MediaStreamTrack;if(t.getUserMedia=function(r,s,a){Ns("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(r).then(s,a)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){const r=function(a,c,d){c in a&&!(d in a)&&(a[d]=a[c],delete a[c])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(t.mediaDevices.getUserMedia=function(a){return typeof a=="object"&&typeof a.audio=="object"&&(a=JSON.parse(JSON.stringify(a)),r(a.audio,"autoGainControl","mozAutoGainControl"),r(a.audio,"noiseSuppression","mozNoiseSuppression")),s(a)},i&&i.prototype.getSettings){const a=i.prototype.getSettings;i.prototype.getSettings=function(){const c=a.apply(this,arguments);return r(c,"mozAutoGainControl","autoGainControl"),r(c,"mozNoiseSuppression","noiseSuppression"),c}}if(i&&i.prototype.applyConstraints){const a=i.prototype.applyConstraints;i.prototype.applyConstraints=function(c){return this.kind==="audio"&&typeof c=="object"&&(c=JSON.parse(JSON.stringify(c)),r(c,"autoGainControl","mozAutoGainControl"),r(c,"noiseSuppression","mozNoiseSuppression")),a.apply(this,[c])}}}}function Pp(n,e){n.navigator.mediaDevices&&"getDisplayMedia"in n.navigator.mediaDevices||n.navigator.mediaDevices&&(n.navigator.mediaDevices.getDisplayMedia=function(i){if(!(i&&i.video)){const r=new DOMException("getDisplayMedia without video constraints is undefined");return r.name="NotFoundError",r.code=8,Promise.reject(r)}return i.video===!0?i.video={mediaSource:e}:i.video.mediaSource=e,n.navigator.mediaDevices.getUserMedia(i)})}function wd(n){typeof n=="object"&&n.RTCTrackEvent&&"receiver"in n.RTCTrackEvent.prototype&&!("transceiver"in n.RTCTrackEvent.prototype)&&Object.defineProperty(n.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Bs(n,e){typeof n!="object"||!(n.RTCPeerConnection||n.mozRTCPeerConnection)||(!n.RTCPeerConnection&&n.mozRTCPeerConnection&&(n.RTCPeerConnection=n.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){const i=n.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new(t==="addIceCandidate"?n.RTCIceCandidate:n.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}};n.RTCPeerConnection.prototype[t]=r[t]}))}function Ed(n,e){if(typeof n!="object"||!(n.RTCPeerConnection||n.mozRTCPeerConnection)||e.version>=151)return;const t={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},i=n.RTCPeerConnection.prototype.getStats;n.RTCPeerConnection.prototype.getStats=function(){const[s,a,c]=arguments;return this.signalingState==="closed"?Promise.resolve(new Map):i.apply(this,[s||null]).then(d=>{if(e.version<53&&!a)try{d.forEach(o=>{o.type=t[o.type]||o.type})}catch(o){if(o.name!=="TypeError")throw o;d.forEach((u,l)=>{d.set(l,Object.assign({},u,{type:t[u.type]||u.type}))})}return d}).then(a,c)}}function Rd(n){if(!(typeof n=="object"&&n.RTCPeerConnection&&n.RTCRtpSender)||n.RTCRtpSender&&"getStats"in n.RTCRtpSender.prototype)return;const e=n.RTCPeerConnection.prototype.getSenders;e&&(n.RTCPeerConnection.prototype.getSenders=function(){const r=e.apply(this,[]);return r.forEach(s=>s._pc=this),r});const t=n.RTCPeerConnection.prototype.addTrack;t&&(n.RTCPeerConnection.prototype.addTrack=function(){const r=t.apply(this,arguments);return r._pc=this,r}),n.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function Pd(n){if(!(typeof n=="object"&&n.RTCPeerConnection&&n.RTCRtpSender)||n.RTCRtpSender&&"getStats"in n.RTCRtpReceiver.prototype)return;const e=n.RTCPeerConnection.prototype.getReceivers;e&&(n.RTCPeerConnection.prototype.getReceivers=function(){const i=e.apply(this,[]);return i.forEach(r=>r._pc=this),i}),kn(n,"track",t=>(t.receiver._pc=t.srcElement,t)),n.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function _d(n){!n.RTCPeerConnection||"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){Ns("removeStream","removeTrack"),this.getSenders().forEach(i=>{i.track&&t.getTracks().includes(i.track)&&this.removeTrack(i)})})}function Id(n){n.DataChannel&&!n.RTCDataChannel&&(n.RTCDataChannel=n.DataChannel)}function Md(n){if(!(typeof n=="object"&&n.RTCPeerConnection))return;const e=n.RTCPeerConnection.prototype.addTransceiver;e&&(n.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let i=arguments[1]&&arguments[1].sendEncodings;i===void 0&&(i=[]),i=[...i];const r=i.length>0;r&&i.forEach(a=>{if("rid"in a&&!/^[a-z0-9]{0,16}$/i.test(a.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in a&&!(parseFloat(a.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in a&&!(parseFloat(a.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const s=e.apply(this,arguments);if(r){const{sender:a}=s,c=a.getParameters();(!("encodings"in c)||c.encodings.length===1&&Object.keys(c.encodings[0]).length===0)&&(c.encodings=i,a.sendEncodings=i,this.setParametersPromises.push(a.setParameters(c).then(()=>{delete a.sendEncodings}).catch(()=>{delete a.sendEncodings})))}return s})}function Dd(n){if(!(typeof n=="object"&&n.RTCRtpSender))return;const e=n.RTCRtpSender.prototype.getParameters;e&&(n.RTCRtpSender.prototype.getParameters=function(){const i=e.apply(this,arguments);return"encodings"in i||(i.encodings=[].concat(this.sendEncodings||[{}])),i})}function Od(n){if(!(typeof n=="object"&&n.RTCPeerConnection))return;const e=n.RTCPeerConnection.prototype.createOffer;n.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}function Ad(n){if(!(typeof n=="object"&&n.RTCPeerConnection))return;const e=n.RTCPeerConnection.prototype.createAnswer;n.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}var xd=Object.freeze({__proto__:null,shimAddTransceiver:Md,shimCreateAnswer:Ad,shimCreateOffer:Od,shimGetDisplayMedia:Pp,shimGetParameters:Dd,shimGetStats:Ed,shimGetUserMedia:Cd,shimOnTrack:wd,shimPeerConnection:Bs,shimRTCDataChannel:Id,shimReceiverGetStats:Pd,shimRemoveStream:_d,shimSenderGetStats:Rd});function Ld(n){if(!(typeof n!="object"||!n.RTCPeerConnection)){if("getLocalStreams"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in n.RTCPeerConnection.prototype)){const e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addStream=function(i){this._localStreams||(this._localStreams=[]),this._localStreams.includes(i)||this._localStreams.push(i),i.getAudioTracks().forEach(r=>e.call(this,r,i)),i.getVideoTracks().forEach(r=>e.call(this,r,i))},n.RTCPeerConnection.prototype.addTrack=function(i){for(var r=arguments.length,s=new Array(r>1?r-1:0),a=1;a<r;a++)s[a-1]=arguments[a];return s&&s.forEach(c=>{this._localStreams?this._localStreams.includes(c)||this._localStreams.push(c):this._localStreams=[c]}),e.apply(this,arguments)}}"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){this._localStreams||(this._localStreams=[]);const i=this._localStreams.indexOf(t);if(i===-1)return;this._localStreams.splice(i,1);const r=t.getTracks();this.getSenders().forEach(s=>{r.includes(s.track)&&this.removeTrack(s)})})}}function Nd(n){if(!(typeof n!="object"||!n.RTCPeerConnection)&&("getRemoteStreams"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in n.RTCPeerConnection.prototype))){Object.defineProperty(n.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(t){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=t),this.addEventListener("track",this._onaddstreampoly=i=>{i.streams.forEach(r=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(r))return;this._remoteStreams.push(r);const s=new Event("addstream");s.stream=r,this.dispatchEvent(s)})})}});const e=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(){const i=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(r){r.streams.forEach(s=>{if(i._remoteStreams||(i._remoteStreams=[]),i._remoteStreams.indexOf(s)>=0)return;i._remoteStreams.push(s);const a=new Event("addstream");a.stream=s,i.dispatchEvent(a)})}),e.apply(i,arguments)}}}function Ud(n){if(typeof n!="object"||!n.RTCPeerConnection)return;const e=n.RTCPeerConnection.prototype,t=e.createOffer,i=e.createAnswer,r=e.setLocalDescription,s=e.setRemoteDescription,a=e.addIceCandidate;e.createOffer=function(o,u){const l=arguments.length>=2?arguments[2]:arguments[0],h=t.apply(this,[l]);return u?(h.then(o,u),Promise.resolve()):h},e.createAnswer=function(o,u){const l=arguments.length>=2?arguments[2]:arguments[0],h=i.apply(this,[l]);return u?(h.then(o,u),Promise.resolve()):h};let c=function(d,o,u){const l=r.apply(this,[d]);return u?(l.then(o,u),Promise.resolve()):l};e.setLocalDescription=c,c=function(d,o,u){const l=s.apply(this,[d]);return u?(l.then(o,u),Promise.resolve()):l},e.setRemoteDescription=c,c=function(d,o,u){const l=a.apply(this,[d]);return u?(l.then(o,u),Promise.resolve()):l},e.addIceCandidate=c}function Fd(n){const e=n&&n.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){const t=e.mediaDevices,i=t.getUserMedia.bind(t);e.mediaDevices.getUserMedia=r=>i(Bd(r))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=(function(i,r,s){e.mediaDevices.getUserMedia(i).then(r,s)}).bind(e))}function Bd(n){return n&&n.video!==void 0?Object.assign({},n,{video:ld(n.video)}):n}function jd(n){if(!n.RTCPeerConnection)return;const e=n.RTCPeerConnection;n.RTCPeerConnection=function(i,r){if(i&&i.iceServers){const s=[];for(let a=0;a<i.iceServers.length;a++){let c=i.iceServers[a];c.urls===void 0&&c.url?(Ns("RTCIceServer.url","RTCIceServer.urls"),c=JSON.parse(JSON.stringify(c)),c.urls=c.url,delete c.url,s.push(c)):s.push(i.iceServers[a])}i.iceServers=s}return new e(i,r)},n.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(n.RTCPeerConnection,"generateCertificate",{get(){return e.generateCertificate}})}function Vd(n){typeof n=="object"&&n.RTCTrackEvent&&"receiver"in n.RTCTrackEvent.prototype&&!("transceiver"in n.RTCTrackEvent.prototype)&&Object.defineProperty(n.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function qd(n){const e=n.RTCPeerConnection.prototype.createOffer;n.RTCPeerConnection.prototype.createOffer=function(i){if(i){typeof i.offerToReceiveAudio<"u"&&(i.offerToReceiveAudio=!!i.offerToReceiveAudio);const r=this.getTransceivers().find(a=>a.receiver.track.kind==="audio");i.offerToReceiveAudio===!1&&r?r.direction==="sendrecv"?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":r.direction==="recvonly"&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):i.offerToReceiveAudio===!0&&!r&&this.addTransceiver("audio",{direction:"recvonly"}),typeof i.offerToReceiveVideo<"u"&&(i.offerToReceiveVideo=!!i.offerToReceiveVideo);const s=this.getTransceivers().find(a=>a.receiver.track.kind==="video");i.offerToReceiveVideo===!1&&s?s.direction==="sendrecv"?s.setDirection?s.setDirection("sendonly"):s.direction="sendonly":s.direction==="recvonly"&&(s.setDirection?s.setDirection("inactive"):s.direction="inactive"):i.offerToReceiveVideo===!0&&!s&&this.addTransceiver("video",{direction:"recvonly"})}return e.apply(this,arguments)}}function Kd(n){typeof n!="object"||n.AudioContext||(n.AudioContext=n.webkitAudioContext)}var Hd=Object.freeze({__proto__:null,shimAudioContext:Kd,shimCallbacksAPI:Ud,shimConstraints:Bd,shimCreateOfferLegacy:qd,shimGetUserMedia:Fd,shimLocalStreamsAPI:Ld,shimRTCIceServerUrls:jd,shimRemoteStreamsAPI:Nd,shimTrackEventTransceiver:Vd}),js={exports:{}},Wd;function _p(){return Wd||(Wd=1,(function(n){const e={};e.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)},e.localCName=e.generateIdentifier(),e.splitLines=function(t){return t.trim().split(`
3
3
  `).map(i=>i.trim())},e.splitSections=function(t){return t.split(`
4
4
  m=`).map((r,s)=>(s>0?"m="+r:r).trim()+`\r