@d-id/client-sdk 3.0.3-staging.434 → 3.0.3-staging.435

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||{}),Re=(n=>(n.Idle="IDLE",n.Loading="LOADING",n.Talking="TALKING",n.ToolActive="TOOL_ACTIVE",n))(Re||{}),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||{}),Ga=(n=>(n.Presentation="did.presentation",n))(Ga||{}),ne=(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))(ne||{}),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||{}),zr=(n=>(n.Livekit="livekit",n))(zr||{}),$a=(n=>(n.Amazon="amazon",n.AzureOpenAi="azure-openai",n.Microsoft="microsoft",n.Elevenlabs="elevenlabs",n.Cartesia="cartesia",n))($a||{}),Ya=(n=>(n.Public="public",n.Premium="premium",n.Private="private",n.ExternalPrivate="external-private",n))(Ya||{});const Hl=(...n)=>{},Qa=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 Jr(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 Xa;function Gr(){return Xa??(Xa=pn())}function Wl(){Xa=pn()}function Za(n,e){if(n.type==="bearer")return`Bearer ${n.token}~${Gr()}`;if(n.type==="basic")return`Basic ${"token"in n?n.token:btoa(`${n.username}:${n.password}`)}~${Gr()}`;if(n.type==="key")return`Client-Key ${n.clientKey}.${Jr(e)}_${Gr()}`;throw new Error(`Unknown auth type: ${n}`)}const zl=45*1e3,Jl="X-Playground-Chat",eo=2e3,ri="https://api.d-id.com",Gl="wss://notifications.d-id.com",$l="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 Yl(n){return n instanceof Error&&typeof n.kind=="string"}class to extends qt{constructor(t,i){super(`Failed to create ${i?"persistent ":""}chat, mode: ${t}`,"ChatCreationFailed");qe(this,"kind","ChatCreationFailed")}}class no extends qt{constructor(t){super(`Chat mode downgraded to ${t}`,"ChatModeDowngraded");qe(this,"kind","ChatModeDowngraded")}}function Ql(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=Ql(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 io 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 ro extends qt{constructor(t){super(t,"WSError");qe(this,"kind","WSError")}}const so=n=>n.type,Xl=n=>n.type===fn.Expressive?"v4":n.type===fn.Clip?"v3-pro":n.type===fn.Image?"image":"v2",$r=n=>n===fn.Expressive||n===fn.Image,Yr=n=>[me.TextOnly,me.Playground,me.Maintenance].includes(n),Ln=n=>n&&[me.DirectPlayback,me.Off].includes(n),ao=/\[!\[([^\[\]]*)\]\(([^)\s]+)\)\]\(([^)\s]+)\)/g,oo=/!\[([^\[\]]*)\]\(([^)\s]+)\)/g,Zl=[".mp4",".webm",".mkv",".mov",".m4v",".ogv"];function eh(n){const e=n.split("?")[0].split("#")[0].toLowerCase();return Zl.some(t=>e.endsWith(t))}const co=new RegExp("(?<!!)\\[([^\\[\\]]+)\\]\\(([^)\\s]+)\\)","g"),uo=/<a\s+href="([^"]*)"[^>]*?>([^<]*)<\/a>/gi;function Qr(n){if(n.length===0)return[];const e=[];let t;for(ao.lastIndex=0;(t=ao.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(oo.lastIndex=0;(t=oo.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;eh(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(co.lastIndex=0;(t=co.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(uo.lastIndex=0;(t=uo.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 lo="",Xr=[];function si(n){return n===lo||(lo=n,Xr=Qr(n)),Xr}function th(n,e){let t;return{promise:new Promise((r,s)=>{t=setTimeout(()=>s(new Error(e)),n)}),clear:()=>clearTimeout(t)}}async function Zr(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}=th(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 Qa(t.delayMs),await t.onRetry(s)}throw i}class ho{constructor(e){qe(this,"status",429);this.response=e}}const nh=n=>Zr(n,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:e=>e.status===429});function es(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 nh(async()=>{const h=await fetch(e+(s!=null&&s.startsWith("/")?s:`/${s}`),{...d,headers:{...d.headers,Authorization:Za(n,i),"Content-Type":"application/json"}});if(h.status===429)throw new ho(h);return h})}catch(h){if(h instanceof ho)l=h.response;else{if((h==null?void 0:h.name)==="AbortError")throw h;const p=new io(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 ih(n,e=ri,t,i){const r=es(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 rh(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:so(i),agentVoice:{language:(s=(r=n.avatar)==null?void 0:r.voice)==null?void 0:s.language}}}function sh(n){var e;return{agentType:so(n.avatar),presenterType:Xl(n.avatar),owner_id:n.owner_id??"",starterQuestionsCount:(e=n.starter_message)==null?void 0:e.length,agentId:n.id,agentName:n.name}}const ah=n=>{try{return String((n==null?void 0:n.message)??n??"").slice(0,256)}catch{return"Unknown error"}},oh=n=>n.reduce((e,t)=>e+t,0),fo=n=>oh(n)/n.length,mo=n=>Math.min(...n),po=n=>Math.max(...n),Hi=(n,e=0)=>{const t=10**e;return Math.round(n*t)/t},ch=(n,e)=>{const t=[...n].sort((i,r)=>i-r);return t[Math.min(t.length-1,Math.floor(e*(t.length-1)))]},dh=n=>ch(n,.5),uh=(n,e)=>{try{return n()}catch{return e}};function go(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 vo(n){"requestIdleCallback"in window?requestIdleCallback(n,{timeout:2e3}):setTimeout(n,0)}function Wi(n){return n instanceof qt?n.toJson():{kind:"UnknownError",message:ah(n)||"UnknownError"}}const lh="3.0.3-staging.434",hh="https://api-js.mixpanel.com/track/?verbose=1&ip=1",yo=50,gn=[];let ts=!1;async function bo(n){const e=await fetch(hh,{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 fh(n){gn.push(n),gn.splice(yo)}function ns(){if(ts||!gn.length)return;ts=!0;const n=gn.splice(0,gn.length);bo(n).catch(()=>{gn.unshift(...n),gn.splice(yo)}).finally(()=>{ts=!1})}typeof window<"u"&&typeof window.addEventListener=="function"&&(window.addEventListener("online",ns),typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&ns()}));function mh(n){const e=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",t={};return{token:n.token||"testKey",distinct_id:Jr(n.externalId),agentId:n.agentId,additionalProperties:{id:Jr(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:lh,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 ns(),bo([o]).catch(()=>fh(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 is(){let n=0;return{reset:()=>n=0,update:()=>n=Date.now(),get:(e=!1)=>e?Date.now()-n:n}}const Lt=is(),rs=is(),ko=is();function To(n){return n===me.Playground?{headers:{[Jl]:"true"}}:{}}async function So(n,e,t,i,r=!1,s){return s?{chat:s,chatMode:i}:(Ln(i)||(s=await e.newChat(n.id,{persist:r},To(i)),t.track("agent-chat",{event:"created",chatId:s.id,mode:i})),{chat:s,chatMode:(s==null?void 0:s.chat_mode)??i})}function ph(n){return!n||n.length===0?[]:n.map(e=>Array.isArray(e.parts)&&e.parts.length>0?e:{...e,parts:Qr(typeof e.content=="string"?e.content:"")})}function gh(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(Za(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 vh(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 gh(n)}catch(r){if(i===e)throw r;await Qa(i*500)}return t}async function yh(n,e,t,i){const r=t!=null&&t.onMessage?[t.onMessage]:[],s=await vh({auth:n,host:e,externalId:i,callbacks:{onError:a=>{var c;return(c=t.onError)==null?void 0:c.call(t,new ro(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 bh={manual:xn.Ok,inactivity:xn.Inactivity,peer_disconnected:xn.NetworkIssue,shutdown:xn.UnknownError};function kh(n){return bh[n.close_reason]??n.close_reason}const Th=[G.StreamVideoDone,G.StreamVideoError,G.StreamVideoRejected],Co=[G.StreamFailed,G.StreamVideoError,G.StreamVideoRejected];function wo(n){if(n.answer!==void 0)return n.answer;let e=0,t="";for(;e in n;)t+=n[e++];return t}function Sh(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 Ch(n,e,t,i,r,s,a){if(n===He.Transcribe&&e.content){Sh(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=wo(t);!!(l&&l.length<p.length)&&(u.interrupted=!0),t.answer=l}const f=wo(t);(u.content!==f||n===He.Answer)&&(u.content=f,u.parts=si(f),r==null||r([...i.messages],n))}function wh(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;Ch(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=go(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(Th.includes(o)){const v=o.split("/")[1],b=go(u,i,{mode:e.chatMode});Co.includes(o)?n.track("agent-video",{...b,event:v}):n.linkTrack("agent-video",{...b,event:v},o,["done"])}Co.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(kh(u))}}}}function Eh(n,e,t,i){const r=es(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 Eo=(n,e)=>(t,i)=>n&&console.log(`[${e}] ${t}`,i??""),Ph=45;function Rh(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(dh(c))}}function _h(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 Ih(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 Mh(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 Po(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=Ih(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:uh(()=>Rh(n),null),minRtt:mo(c),avgRtt:fo(c),maxRtt:po(c),aggregateReport:_h(n[0],n[n.length-1],s),minJitterDelayInInterval:mo(a),maxJitterDelayInInterval:po(a),avgJitterDelayInInterval:fo(a)},codec:n[0].codec,resolution:`${n[0].frameWidth}x${n[0].frameHeight}`}}function Ro(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 Dh(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=Ro(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,Oh=Math.max(Math.ceil(400/zi),1),Ah=.25,xh=.28;function Lh(){let n=0,e,t,i=0;return r=>{const s=Ro(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 _o(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=Lh();async function v(){const b=await n();if(!b)return;const{isReceiving:k,avgJitterDelayInInterval:E,freezeCount:R}=p(b),y=Mh(b);if(k)d=0,h=R-f,l=E<Ah?vt.Strong:E>xh&&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>=Oh)){const T=Po(a,zi,c);i==null||i(X.Stop,T??void 0),e()||t(),f=R,o=!1}}return{start:()=>{s||(s=setInterval(v,zi))},stop:()=>{s&&(clearInterval(s),s=null)},getReport:()=>Po(a,zi,c)}}const Nh=()=>{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 Io(n){switch(n){case"connected":return ne.Connected;case"checking":return ne.Connecting;case"failed":return ne.Fail;case"new":return ne.New;case"closed":return ne.Closed;case"disconnected":return ne.Disconnected;case"completed":return ne.Completed;default:return ne.New}}const Uh=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 Fh({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 Bh({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(Re.Talking):e===X.Stop&&(i==null||i(Re.Idle))}function Mo({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,streamType:r,report:s,log:a}){r===yt.Legacy?Fh({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:s,log:a}):r===yt.Fluent&&Bh({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:s,log:a})}async function jh(n,e,{debug:t=!1,callbacks:i,auth:r,baseURL:s=ri,analytics:a},c){var en;const d=Eo(t,"WebRTCStreamingManager"),o=Uh(d);let u=!1,l=!1,h=X.Stop,f=X.Stop;const{startConnection:p,sendStreamRequest:v,close:b,createStream:k,addIceCandidate:E}=Eh(r,s,n,i.onError),{id:R,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");(en=i.onStreamCreated)==null||en.call(i,{streamId:R,sessionId:S,agentId:n});const F=W=>{var K;return(K=i.onError)==null?void 0:K.call(i,W,{streamId:R})},A=new(Nh())({iceServers:T}),N=A.createDataChannel("JanusDataChannel"),j=x?yt.Fluent:yt.Legacy;a.enrich({"stream-type":j});const ie=e.stream_warmup&&!x,oe=()=>u,Ce=()=>{var W;u=!0,l&&(d("CALLBACK: onConnectionStateChange(Connected)"),(W=i.onConnectionStateChange)==null||W.call(i,ne.Connected))},Le=_o(()=>A.getStats(),oe,Ce,(W,K)=>Mo({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?E(R,{candidate:W.candidate.candidate,sdpMid:W.candidate.sdpMid,sdpMLineIndex:W.candidate.sdpMLineIndex},S,c):E(R,{candidate:null},S,c)}catch(K){F(K)}},N.onopen=()=>{l=!0,(!ie||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 C=K.metadata;Me(C.videoId)}W===G.StreamDone&&Me(null),h=W===G.StreamStarted?X.Start:X.Stop,Mo({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 C=typeof K=="string"?K:K==null?void 0:K.metadata;C&&a.enrich({streamMetadata:C}),(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:C}=o(W.data);(B=Ot[K])==null||B.call(Ot,K,C)},A.oniceconnectionstatechange=()=>{var K;d("peerConnection.oniceconnectionstatechange => "+A.iceConnectionState);const W=Io(A.iceConnectionState);W!==ne.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(R,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(C){d("Error sending data channel message",C),F(C)}}return{speak(W){return v(R,S,W)},async disconnect(){var W;if(R){const K=Io(A.iceConnectionState);if(A){if(K===ne.New){Le.stop();return}A.close(),A.oniceconnectionstatechange=null,A.onnegotiationneeded=null,A.onicecandidate=null,A.ontrack=null}try{K===ne.Connected&&await b(R,S)}catch(C){d("Error on close stream connection",C)}(W=i.onAgentActivityStateChange)==null||W.call(i,Re.Idle),Le.stop()}},sendDataChannelMessage:xt,sessionId:S,streamId:R,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 Vh(n,e,t,i){const r=n.id;switch(e.version){case"v1":{const{version:s,...a}=e;return jh(r,a,t,i)}case"v2":{const{version:s,...a}=e;switch(a.transport.provider){case zr.Livekit:const{createLiveKitStreamingManager:c}=await Promise.resolve().then(()=>Bo);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 qh="cht";function Kh(n){return{transport:{provider:zr.Livekit},...(n==null?void 0:n.persistentChat)!==void 0&&{chat_persist:n.persistentChat}}}function Hh(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 Wh(n,e){return $r(n.avatar.type)?{version:Ji.V2,...Kh(e)}:{version:Ji.V1,...Hh(e)}}function zh(n,e,t){t.track("agent-connection-state-change",{state:n,...e&&{reason:e}})}function Jh(n,e,t,i,r){r===yt.Fluent?Gh(n,e,t,i,r):$h(n,e,t,i,r)}function Gh(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 Do(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 $h(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 Yh(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 Oo(n,e,t,i){return Lt.reset(),ko.update(),new Promise(async(r,s)=>{try{let a,c=!1;const d=Wh(n,e);t.enrich({"stream-version":d.version.toString()});let o=null;const u=d.version===Ji.V2;a=await Vh(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),zh(l,h,t),l===ne.Connected&&(a?r(a):c=!0)},onVideoStateChange:(l,h)=>{var f,p;(p=(f=e.callbacks).onVideoStateChange)==null||p.call(f,l),Jh(l,n,h,t,a.streamType)},onAgentActivityStateChange:l=>{var h,f;(f=(h=e.callbacks).onAgentActivityStateChange)==null||f.call(h,l),l===Re.Talking?(rs.update(),o=p=>{Do(X.Start,n,t,a.streamType,p),o=null},u||o({latency:Lt.get(!0)})):(rs.reset(),o=null,Do(X.Stop,n,t,a.streamType))},onFirstAudioDetected:l=>{o==null||o(l)},onStreamReady:()=>{const l=ko.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),Yh(l,h,t)})}},i),c&&r(a)}catch(a){s(a)}})}async function Qh(n,e,t,i,r){var u,l;const s=async()=>{if($r(n.avatar.type)){const h=await Oo(n,e,i),f=`${qh}_${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=So(n,t,i,e.mode,e.persistentChat,r),b=Oo(n,e,i,f).then(R=>(p=R,R)),[k,E]=await Promise.all([v,b]);return{chatResult:k,streamingManager:E}}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 no(o)),c==null||c.disconnect(),{chat:d}):{chat:d,streamingManager:c}}const ss="ChatMode.Off and ChatMode.DirectPlayback are not supported for Expressive agents",Ao="callbacks.onSrcObjectReady is required in every chat mode that streams video; it is optional only in ChatMode.TextOnly, ChatMode.Playground and ChatMode.Maintenance",Xh=[ne.Disconnected,ne.Closed,ne.Fail];async function Zh(n,e){var At,xt,en,W,K;const t={...e.callbacks};let i=!0;const r=((At=e.analytics)==null?void 0:At.mixpanelKey)||$l,s=e.wsURL||Gl,a=e.baseURL||ri,c=e.mode||me.Functional;if(!t.onSrcObjectReady&&!Yr(c))throw new pe(Ao);const d={messages:[],chatMode:c},o=mh({token:r,agentId:n,isEnabled:(xt=e.analytics)==null?void 0:xt.enabled,externalId:e.externalId,mixpanelAdditionalProperties:(en=e.analytics)==null?void 0:en.additionalProperties}),u=Date.now();vo(()=>{o.track("agent-sdk",{event:"init"},u)});let l=ne.New,h;const f={...t,onError(C,B){var H;o.track("agent-error",{error:Wi(C)}),(H=t.onError)==null||H.call(t,C,B)},onConnectionStateChange(C,B){var H;l=C,(H=t.onConnectionStateChange)==null||H.call(t,C,B)},onStreamCreated(C){var B;h=C,(B=t.onStreamCreated)==null||B.call(t,C)}},p={...e,callbacks:f},v=ih(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=$r(b.avatar.type);if(k&&Ln(c))throw new pe(ss);k&&Promise.resolve().then(()=>Bo).then(({preloadLiveKit:C})=>C()).catch(()=>{}),o.enrich(sh(b));const{onMessage:E,clearQueue:R}=wh(o,d,p,b,C=>{var B,H;(B=d.socketManager)==null||B.disconnect(),(H=f.onConnectionStateChange)==null||H.call(f,ne.Disconnected,C)});d.messages=ph(p.initialMessages),d.messages.length&&((K=f.onNewMessage)==null||K.call(f,[...d.messages],"answer"));const y=C=>o.enrich({videoId:C}),T=C=>{var $e;const B=(C==null?void 0:C.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:rs.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(C){return async B=>{const H=S.get(C);if(!H)throw new Error(`No handler registered for client tool: ${C}`);const se=JSON.parse(B.payload);return H(se)}}function U(){var C,B,H,se;for(const[be]of S)(B=(C=d.streamingManager)==null?void 0:C.unregisterRpcMethod)==null||B.call(C,be),(se=(H=d.streamingManager)==null?void 0:H.registerRpcMethod)==null||se.call(H,be,x(be))}function F(C,B){var se,be;if(!k)throw new pe("registerClientTool is only available on Expressive (V4) agents");const H=!S.has(C);S.set(C,B),H&&((be=(se=d.streamingManager)==null?void 0:se.registerRpcMethod)==null||be.call(se,C,x(C)))}function A(C){var B,H;S.delete(C),(H=(B=d.streamingManager)==null?void 0:B.unregisterRpcMethod)==null||H.call(B,C)}const N=Date.now();vo(()=>{o.track("agent-sdk",{event:"loaded",...rh(b)},N)});let j,ie=!1;function oe(C){return ie=!1,j=Promise.resolve().then(C).finally(()=>{j=void 0}),j}function Ce(C){return j||oe(()=>Le(C))}async function Le(C){var ot,Fi,Bi,Ve;if(ie)return;d.streamingManager&&await re(),Wl(),(ot=f.onConnectionStateChange)==null||ot.call(f,ne.Connecting),Lt.reset(),C&&!i&&(delete d.chat,(Fi=f.onNewMessage)==null||Fi.call(f,[...d.messages],"answer"));const B=Me(d.chatMode)?yh(p.auth,s,{onMessage:E,onError:f.onError},p.externalId):Promise.resolve(void 0),H=Zr(()=>Qh(b,{...p,mode:d.chatMode,callbacks:{...f,onVideoIdChange:y,onMessage:E},rpcMethods:new Map([...S.keys()].map(Ne=>[Ne,x(Ne)]))},v,o,d.chat),{limit:3,timeout:zl,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:Ne=>!(Ne instanceof qi&&(Ne.status===429||Ne.code==="InsufficientCreditsError"||Ne.code==="AgentUpgradingError")),delayMs:1e3}).catch(async Ne=>{var ti;throw B.then(Vt=>Vt==null?void 0:Vt.disconnect()).catch(()=>{}),Ne instanceof qi&&Ne.code==="AgentUpgradingError"||await Dt(me.Maintenance),(ti=f.onConnectionStateChange)==null||ti.call(f,ne.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,ie){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}": ${ss}`);return}await Dt(De)}async function re(){var C,B,H;(C=d.socketManager)==null||C.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,ne.Disconnected)}function Me(C){return!k&&C!==me.DirectPlayback}function jt(C){const B=!Ln(C);return(!Me(C)||!!d.socketManager)&&(!B||!!d.chat)}async function Dt(C){var B;if(C!==d.chatMode){o.track("agent-mode-change",{mode:C}),d.chatMode=C;const H=!!d.streamingManager||!!d.socketManager;(C!==me.Functional||H&&!jt(C))&&await re(),(B=f.onModeChange)==null||B.call(f,C)}}async function Ot(C){if(k&&Ln(C))throw new pe(ss);await Dt(C)}return{agent:b,getStreamType:()=>{var C;return(C=d.streamingManager)==null?void 0:C.streamType},isInterruptAvailable:()=>{var C;return((C=d.streamingManager)==null?void 0:C.interruptAvailable)??!1},starterMessages:[...b.starter_message??[]],getSttToken:()=>v.getSttToken(b.id),getChatMode:()=>d.chatMode,getConnectionState:()=>l,getSessionInfo:()=>h,changeMode:Ot,enrichAnalytics:C=>o.enrich(C),async connect(){if(!f.onSrcObjectReady&&!Yr(d.chatMode))throw new pe(Ao);if(j)return ie=!1,j;if(d.streamingManager&&!Xh.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 C=d.streamingManager;let B;if(k&&(C!=null&&C.reconnect))try{await C.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&&(ie=!0),await re(),o.track("agent-chat",{event:"disconnect",mode:d.chatMode})},publishMicrophoneStream(C){var B;return(B=d.streamingManager)!=null&&B.publishMicrophoneStream?d.streamingManager.publishMicrophoneStream(C):Promise.reject(new pe("publishMicrophoneStream is only available on Expressive (V4) agents, after connect()"))},setSttLanguage(C){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:C}),d.streamingManager.sendDataChannelMessage(Fe.SttLanguage,JSON.stringify({language:C})))},sendDataChannelMessage(C,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:C}),d.streamingManager.sendDataChannelMessage(C,JSON.stringify(B)))},unpublishMicrophoneStream(){var C;return(C=d.streamingManager)!=null&&C.unpublishMicrophoneStream?d.streamingManager.unpublishMicrophoneStream():Promise.resolve()},replaceMicrophoneTrack(C){var B;return(B=d.streamingManager)!=null&&B.replaceMicrophoneTrack?d.streamingManager.replaceMicrophoneTrack(C):Promise.reject(new pe("replaceMicrophoneTrack is only available on Expressive (V4) agents, after connect()"))},publishCameraStream(C){var B;return(B=d.streamingManager)!=null&&B.publishCameraStream?d.streamingManager.publishCameraStream(C):Promise.reject(new pe("publishCameraStream is only available on Expressive (V4) agents, after connect()"))},unpublishCameraStream(){var C;return(C=d.streamingManager)!=null&&C.unpublishCameraStream?d.streamingManager.unpublishCameraStream():Promise.resolve()},async chat(C){var be,$e,fe;const B=()=>{if(Ln(d.chatMode))throw new pe(`${d.chatMode} is enabled, chat is disabled`);if(C.length>=eo)throw new pe(`Message cannot be more than ${eo} characters`);if(C.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 So(b,v,o,d.chatMode,p.persistentChat);if(!De.chat)throw new to(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 Zr(k&&!ot?async()=>{var Ve;return await((Ve=d.streamingManager)==null?void 0:Ve.sendDataChannelMessage(Fe.Chat,C)),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()}))},{...To(d.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:Ve=>{var Vt,ni,Wr;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?((Wr=f.onError)==null||Wr.call(f,Ve),!1):!0},onRetry:async()=>{await re(),await Ce(!1)}})};try{R(),B(),d.messages.push({id:pn(),role:"user",content:C,parts:si(C),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(C,B,H){var $e,fe,we,De;const se=d.messages.find(ot=>ot.id===C);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:C,matches:be,score:B}):v.createRating(b.id,d.chat.id,{knowledge_id:((De=b.knowledge)==null?void 0:De.id)??"",message_id:C,matches:be,score:B})},async deleteRate(C){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,C)},async submitFeedback(C,B){if(!d.chat)throw new pe("Chat is not initialized");return o.track("agent-feedback",{rating:C,hasAnswer:!!B}),v.submitFeedback(b.id,d.chat.id,{rating:C,answer:B})},async speak(C){var fe,we;function B(){return typeof C=="string"?{type:"text",input:C,ssml:!1}:C.type==="text"&&!C.provider?{type:"text",input:C.input,ssml:C.ssml,should_queue_speaks:C.should_queue_speaks,sentiment:C.sentiment}:C}const H=Yr(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 ef(n){return n.some(e=>e.executionMode==="blocking")}function tf(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone??""}catch{return""}}function nf(){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 rf(){const n={},e=tf();e&&(n.timezone=e);const t=nf();return t&&(n.device=t),n}function sf(n,e,t,i){const r=es(n,`${e}/v2/agents/${t}`,i);return{async createStream(s){return r.post("/sessions",s)}}}const af={[G.ChatAnswer]:He.Answer,[G.ChatPartial]:He.Partial},xo=2e4,of=[];let as;function Lo(){return as??(as=Promise.resolve().then(()=>Ny).catch(()=>{throw as=void 0,new Error("LiveKit client is required for this streaming manager. Please install it using: npm install livekit-client")})),as}function cf(){Lo().catch(()=>{})}const df={excellent:vt.Strong,good:vt.Strong,poor:vt.Weak,lost:vt.Unknown,unknown:vt.Unknown},oi=(n="Stream Error")=>new Ki(n),uf=new TextDecoder;function lf(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 No(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 hf(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 ff(n){const e=hf(n);return{...No(n),output:n.output,...e!==void 0?{error:e}:{}}}function Uo(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 Fo(n,e,t){var i,r;throw e("Failed to connect to LiveKit room:",n),(i=t.onConnectionStateChange)==null||i.call(t,ne.Fail,"internal:init-error"),(r=t.onError)==null||r.call(t,n,{}),n}async function mf(n,e,t){var Bl;const i=Eo(t.debug||!1,"LiveKitStreamingManager"),{Room:r,RoomEvent:s,ConnectionState:a,RpcError:c,Track:d}=await Lo(),{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},E={isPublishing:!1,publication:null};let R=null,y=null,T=null,S=!1;f=new r({adaptiveStream:!1,dynacast:!0});for(const[w,I]of t.rpcMethods??[])f.registerRpcMethod(w,Uo(c,I));let x=null,U=Re.Idle,F=!0;const A=new Map;let N=null,j=null;const ie=sf(u,l||ri,n,o.onError);let oe,Ce,Le,re=!0;try{const w=await ie.createStream({transport:e.transport,chat_persist:e.chat_persist??!1,verbose:t.verbose??!1}),{id:I,session_token:V,session_url:J,interrupt_enabled:he}=w;(Bl=o.onStreamCreated)==null||Bl.call(o,{sessionId:I,streamId:I,agentId:n}),oe=I,Ce=V,Le=J,re=he??!0,await f.prepareConnection(Le,Ce)}catch(w){Fo(w,i,o)}if(!Le||!Ce||!oe)return Promise.reject(new Error("Failed to initialize LiveKit stream"));const Me=w=>{var I;return(I=o.onError)==null?void 0:I.call(o,w,{sessionId:oe})};f.on(s.ConnectionStateChanged,Ot).on(s.ConnectionQualityChanged,At).on(s.ParticipantConnected,xt).on(s.ParticipantDisconnected,en).on(s.TrackSubscribed,C).on(s.TrackUnsubscribed,B).on(s.DataReceived,Vt).on(s.MediaDevicesError,ni).on(s.TranscriptionReceived,jt).on(s.EncryptionError,Wr).on(s.TrackSubscriptionFailed,Uy);function jt(w,I){I!=null&&I.isLocal&&Lt.update()}async function Dt(){const w=rf();if(!(!f||Object.keys(w).length===0))try{await f.localParticipant.setAttributes(w)}catch(I){i("Failed to set user context attributes",I)}}try{await f.connect(Le,Ce),i("LiveKit room joined successfully"),Dt(),x=setTimeout(()=>{i(`Track subscription timeout - no track subscribed within ${xo/1e3} seconds after connect`),x=null;const w=oi("Track subscription timeout");h.track("connectivity-error",{error:Wi(w),sessionId:oe}),Me(w),Ja("internal:track-subscription-timeout")},xo)}catch(w){Fo(w,i,o)}h.enrich({"stream-type":v});function Ot(w){var I,V,J,he;switch(i("Connection state changed:",w),w){case a.Connecting:i("CALLBACK: onConnectionStateChange(Connecting)"),(I=o.onConnectionStateChange)==null||I.call(o,ne.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,E.publication=null,(V=o.onConnectionStateChange)==null||V.call(o,ne.Disconnected,j??"livekit:disconnected");break;case a.Reconnecting:i("LiveKit room reconnecting..."),(J=o.onConnectionStateChange)==null||J.call(o,ne.Connecting,"livekit:reconnecting");break;case a.SignalReconnecting:i("LiveKit room signal reconnecting..."),(he=o.onConnectionStateChange)==null||he.call(o,ne.Connecting,"livekit:signal-reconnecting");break}}function At(w,I){var V;i("Connection quality:",w),I!=null&&I.isLocal&&((V=o.onConnectivityStateChange)==null||V.call(o,df[w]))}function xt(w){i("Participant connected:",w.identity)}function en(w){i("Participant disconnected:",w.identity),Ja("livekit:participant-disconnected")}function W(){var w;T!==X.Start&&(i("CALLBACK: onVideoStateChange(Start)"),T=X.Start,(w=o.onVideoStateChange)==null||w.call(o,X.Start))}function K(w){var I;T!==X.Stop&&(i("CALLBACK: onVideoStateChange(Stop)"),T=X.Stop,(I=o.onVideoStateChange)==null||I.call(o,X.Stop,w))}function C(w,I,V){var he,ke,ue;i(`Track subscribed: ${w.kind} from ${V.identity}`);const J=w.mediaStreamTrack;if(!J){i(`No mediaStreamTrack available for ${w.kind}`);return}b?(b.addTrack(J),i(`Added ${w.kind} track to shared MediaStream`)):(b=new MediaStream([J]),i(`Created shared MediaStream with ${w.kind} track`)),w.kind==="audio"&&(y=Dh(()=>w.getRTCStatsReport(),({sttLatency:Ue,serviceLatency:tt})=>{var jl,Vl,ql;const ji=Lt.get(!0);let Vi=0;if(Ue){const Kl=((Vl=(jl=R==null?void 0:R.getReport())==null?void 0:jl.webRTCStats)==null?void 0:Vl.avgRtt)??0;Vi=Kl>0?Math.round(Kl*1e3):0}const ii=ji>0?ji+(Ue??0)+Vi:void 0,tn=ii!==void 0&&tt!==void 0?ii-tt:void 0;(ql=o.onFirstAudioDetected)==null||ql.call(o,{latency:ii,networkLatency:tn})})),w.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,ne.Connected,"livekit:track-subscribed")),R=_o(()=>w.getRTCStatsReport(),()=>p,Hl,(Ue,tt)=>{i(`Video state change: ${Ue}`),Ue===X.Start?(x&&(clearTimeout(x),x=null,i("Track subscription timeout cleared")),W()):Ue===X.Stop&&K(tt)}),R.start())}function B(w,I,V){i(`Track unsubscribed: ${w.kind} from ${V.identity}`),w.kind==="audio"&&(y==null||y.destroy(),y=null),w.kind==="video"&&(K((R==null?void 0:R.getReport())??void 0),R==null||R.stop(),R=null)}function H(w,I){var J;const V=af[w];V&&((J=o.onMessage)==null||J.call(o,V,{event:V,...I}))}function se(w,I){var V,J,he,ke;if(w===G.ToolCallStarted){const ue=lf(I);A.set(ue.callId,{call:{callId:ue.callId,name:ue.name,executionMode:ue.executionMode},interruptible:ue.interruptible,turnId:ue.turnId??N}),fe(),we(),U=Re.ToolActive,(V=o.onAgentActivityStateChange)==null||V.call(o,Re.ToolActive),(J=o.onToolEvent)==null||J.call(o,mn.Started,ue);return}if(w===G.ToolCallDone){const ue=No(I);be(ue.callId),(he=o.onToolEvent)==null||he.call(o,mn.Done,ue);return}if(w===G.ToolCallError){const ue=ff(I);be(ue.callId),(ke=o.onToolEvent)==null||ke.call(o,mn.Error,ue)}}function be(w){A.delete(w)&&(fe(),we())}function $e(w){let I=!1;for(const[V,J]of A)J.call.executionMode==="blocking"&&(w!==null&&J.turnId!==null&&J.turnId!==w||(A.delete(V),I=!0));I&&(fe(),we())}function fe(){var I;const w=![...A.values()].some(({call:V})=>V.executionMode==="blocking");w!==F&&(F=w,(I=o.onInterruptibleChange)==null||I.call(o,w))}function we(){var w;(w=o.onRunningToolCallsChange)==null||w.call(o,A.size===0?of:[...A.values()].map(({call:I})=>I))}function De(w,I){var V,J,he;if(w===G.StreamVideoCreated){U=Re.Talking,(V=o.onAgentActivityStateChange)==null||V.call(o,Re.Talking),y==null||y.arm({sttLatency:(J=I==null?void 0:I.stt)==null?void 0:J.latency,serviceLatency:I==null?void 0:I.serviceLatency});return}if(A.size>0){U!==Re.ToolActive&&(U=Re.ToolActive,(he=o.onAgentActivityStateChange)==null||he.call(o,Re.ToolActive));return}}function ot(w,I){var ke,ue,Ue,tt;const V=((ue=(ke=R==null?void 0:R.getReport())==null?void 0:ke.webRTCStats)==null?void 0:ue.avgRtt)??0,J=V>0?Math.round(V/2*1e3):0,he={...I,downstreamNetworkLatency:J};t.debug&&((Ue=I==null?void 0:I.metadata)!=null&&Ue.sentiment)&&(he.sentiment={id:I.metadata.sentiment.id,name:I.metadata.sentiment.sentiment}),(tt=o.onMessage)==null||tt.call(o,w,he),De(w,I)}function Fi(w,I){var V;(V=o.onMessage)==null||V.call(o,He.Transcribe,{event:He.Transcribe,...I}),queueMicrotask(()=>{var J;(J=o.onAgentActivityStateChange)==null||J.call(o,Re.Loading)})}function Bi(w,I){var V;N=(I==null?void 0:I.turn_id)??null,U=Re.Loading,(V=o.onAgentActivityStateChange)==null||V.call(o,Re.Loading)}function Ve(w,I){var J;const V=(I==null?void 0:I.turn_id)??null;N!==null&&V!==null&&V<N||($e(V),U=Re.Idle,(J=o.onAgentActivityStateChange)==null||J.call(o,Re.Idle))}function Ne(w,I){j=(I==null?void 0:I.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(w,I,V,J){const he=uf.decode(w);let ke;try{ke=JSON.parse(he)}catch(tt){i("Failed to parse data channel message:",tt);return}const ue=J||ke.subject;if(i("Data received:",{subject:ue,data:ke}),!ue)return;const Ue=ti[ue];if(Ue)try{Ue(ue,ke)}catch(tt){console.warn("[LiveKitStreamingManager] Data channel handler failed",{subject:ue,error:tt})}}function ni(w){i("Media devices error:",w),Me(oi())}function Wr(w){i("Encryption error:",w),Me(oi())}function Uy(w,I,V){i("Track subscription failed:",{trackSid:w,participant:I,reason:V})}function Fy(w,I,V){for(const[J,he]of V)if(he.source===I&&he.track){const ke=he.track.mediaStreamTrack;if(ke===w||(ke==null?void 0:ke.id)===w.id)return he}return null}async function Ul(w,I,V,J,he,ke){var ji,Vi,ii;if(!p||!f)throw i(`Room is not connected, cannot publish ${J} stream`),new Error("Room is not connected");if(w.isPublishing){i(`${J} publish already in progress, skipping`);return}const ue=V(I);if(ue.length===0)throw new Error(`No ${J} track found in the provided MediaStream`);const Ue=ue[0],tt=Fy(Ue,J,he());if(tt){i(`${J} track is already published, skipping`,{trackId:Ue.id,publishedTrackId:(Vi=(ji=tt.track)==null?void 0:ji.mediaStreamTrack)==null?void 0:Vi.id}),w.publication=tt;return}if((ii=w.publication)!=null&&ii.track){const tn=w.publication.track.mediaStreamTrack;tn!==Ue&&(tn==null?void 0:tn.id)!==Ue.id&&(i(`Unpublishing existing ${J} track before publishing new one`),await ke())}i(`Publishing ${J} track from provided MediaStream`,{trackId:Ue.id}),w.isPublishing=!0;try{w.publication=await f.localParticipant.publishTrack(Ue,{source:J}),i(`${J} track published successfully`,{trackSid:w.publication.trackSid})}catch(tn){throw i(`Failed to publish ${J} track:`,tn),tn}finally{w.isPublishing=!1}}async function Fl(w,I){if(!(!w.publication||!w.publication.track))try{f&&(await f.localParticipant.unpublishTrack(w.publication.track,!1),i(`${I} track unpublished`))}catch(V){i(`Error unpublishing ${I} track:`,V)}finally{w.publication=null}}async function By(w){return Ul(k,w,I=>I.getAudioTracks(),d.Source.Microphone,()=>f.localParticipant.audioTrackPublications,Ha)}async function Ha(){return Fl(k,"Microphone")}async function jy(w){if(!p||!f)throw i("Cannot replace microphone track: room is not connected"),new Error("Room is not connected");if(w.kind!=="audio")throw i("Cannot replace microphone track: not an audio track",{kind:w.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 I=k.publication;if(!I||!I.track)throw i("Cannot replace microphone track: no publication to replace"),new Error("No microphone publication to replace");try{k.isPublishing=!0,await I.track.replaceTrack(w),i("Microphone track replaced",{trackId:w.id,trackSid:I.trackSid})}finally{k.isPublishing=!1}}async function Vy(w){return Ul(E,w,I=>I.getVideoTracks(),d.Source.Camera,()=>f.localParticipant.videoTrackPublications,Wa)}async function Wa(){return Fl(E,"Camera")}function qy(){b&&(b.getTracks().forEach(w=>w.stop()),b=null)}async function za(w,I){if(!p||!f){i("Room is not connected for sending messages"),Me(oi());return}try{await f.localParticipant.sendText(I,{topic:w}),i("Message sent successfully:",I)}catch(V){i("Failed to send message:",V),Me(oi())}}async function Ja(w){var I,V;x&&(clearTimeout(x),x=null),y==null||y.destroy(),y=null,f&&((I=o.onConnectionStateChange)==null||I.call(o,ne.Disconnecting,w),await Promise.all([Ha(),Wa()]),await f.disconnect()),qy(),p=!1,S=!1,A.size>0&&(A.clear(),fe(),we()),N=null,(V=o.onAgentActivityStateChange)==null||V.call(o,Re.Idle),U=Re.Idle}return{speak(w){const I=typeof w=="string"?w:JSON.stringify(w);return za(Fe.Speak,I)},disconnect:()=>Ja("user:disconnect"),async reconnect(){var w,I;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,(w=o.onConnectionStateChange)==null||w.call(o,ne.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(J=>{const he=setTimeout(()=>{f==null||f.off(s.ParticipantConnected,ke),J(!1)},5e3),ke=()=>{clearTimeout(he),f==null||f.off(s.ParticipantConnected,ke),J(!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),(I=o.onConnectionStateChange)==null||I.call(o,ne.Fail,"user:reconnect-failed"),V}},sendDataChannelMessage:za,publishMicrophoneStream:By,unpublishMicrophoneStream:Ha,replaceMicrophoneTrack:jy,publishCameraStream:Vy,unpublishCameraStream:Wa,interrupt(w){return w==="text"||!p||!f?!1:(za(Fe.Interrupt,""),!0)},registerRpcMethod(w,I){f==null||f.registerRpcMethod(w,Uo(c,I))},unregisterRpcMethod(w){f==null||f.unregisterRpcMethod(w)},sessionId:oe,streamId:oe,streamType:v,interruptAvailable:re,get isInterruptible(){return F}}}const Bo=Object.freeze(Object.defineProperty({__proto__:null,createLiveKitStreamingManager:mf,preloadLiveKit:cf},Symbol.toStringTag,{value:"Module"}));function pf(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 gf=Object.defineProperty,vf=(n,e,t)=>e in n?gf(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,jo=(n,e,t)=>vf(n,typeof e!="symbol"?e+"":e,t);class Ae{constructor(){jo(this,"_locking"),jo(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 yf=34028234663852886e22,bf=-34028234663852886e22,kf=4294967295,Tf=2147483647,Sf=-2147483648;function Gi(n){if(typeof n!="number")throw new Error("invalid int 32: "+typeof n);if(!Number.isInteger(n)||n>Tf||n<Sf)throw new Error("invalid int 32: "+n)}function os(n){if(typeof n!="number")throw new Error("invalid uint 32: "+typeof n);if(!Number.isInteger(n)||n>kf||n<0)throw new Error("invalid uint 32: "+n)}function Vo(n){if(typeof n!="number")throw new Error("invalid float 32: "+typeof n);if(Number.isFinite(n)&&(n>yf||n<bf))throw new Error("invalid float 32: "+n)}const qo=Symbol("@bufbuild/protobuf/enum-type");function Cf(n){const e=n[qo];return Ee(e,"missing enum type on enum object"),e}function Ko(n,e,t,i){n[qo]=Ho(e,t.map(r=>({no:r.no,name:r.name,localName:n[r.no]})))}function Ho(n,e,t){const i=Object.create(null),r=Object.create(null),s=[];for(const a of e){const c=Wo(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 wf(n,e,t){const i={};for(const r of e){const s=Wo(r);i[s.localName]=s.no,i[s.no]=s.localName}return Ko(i,n,e),i}function Wo(n){return"localName"in n?n:Object.assign(Object.assign({},n),{localName:n.name})}class cs{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 Ef(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 cs),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 ds(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 zo(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?Go(i,r):us(i,r)}function Rf(n,e){let t=us(n,e);const i=t.hi&2147483648;i&&(t=Go(t.lo,t.hi));const r=Jo(t.lo,t.hi);return i?"-"+r:r}function Jo(n,e){if({lo:n,hi:e}=_f(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()+$o(a)+$o(s)}function _f(n,e){return{lo:n>>>0,hi:e>>>0}}function us(n,e){return{lo:n|0,hi:e|0}}function Go(n,e){return e=~e,n?n=~n+1:e+=1,us(n,e)}const $o=n=>{const e=String(n);return"0000000".slice(e.length)+e};function Yo(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 If(){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 Mf(){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),zo(r)},uEnc(r){return typeof r!="string"&&(r=r.toString()),i(r),zo(r)},dec(r,s){return Rf(r,s)},uDec(r,s){return Jo(r,s)}}}const ge=Mf();var _;(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"})(_||(_={}));var nn;(function(n){n[n.BIGINT=0]="BIGINT",n[n.STRING=1]="STRING"})(nn||(nn={}));function rn(n,e,t){if(e===t)return!0;if(n==_.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 _.UINT64:case _.FIXED64:case _.INT64:case _.SFIXED64:case _.SINT64:return e==t}return!1}function Nn(n,e){switch(n){case _.BOOL:return!1;case _.UINT64:case _.FIXED64:case _.INT64:case _.SFIXED64:case _.SINT64:return e==0?ge.zero:"0";case _.DOUBLE:case _.FLOAT:return 0;case _.BYTES:return new Uint8Array(0);case _.STRING:return"";default:return 0}}function Qo(n,e){switch(n){case _.BOOL:return e===!1;case _.STRING:return e==="";case _.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 Df{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(os(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return Gi(e),Yo(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){Vo(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){os(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,Yo(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 ds(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 ds(r,s,this.buf),this}uint64(e){let t=ge.uEnc(e);return ds(t.lo,t.hi,this.buf),this}}class Of{constructor(e,t){this.varint64=Pf,this.uint32=If,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 Af(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 Xo(n){const e=n.field.localName,t=Object.create(null);return t[e]=xf(n),[t,()=>t[e]]}function xf(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 Lf(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 Zo={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||{}),Re=(n=>(n.Idle="IDLE",n.Loading="LOADING",n.Talking="TALKING",n.ToolActive="TOOL_ACTIVE",n))(Re||{}),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||{}),Ga=(n=>(n.Presentation="did.presentation",n))(Ga||{}),ne=(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))(ne||{}),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||{}),zr=(n=>(n.Livekit="livekit",n))(zr||{}),$a=(n=>(n.Amazon="amazon",n.AzureOpenAi="azure-openai",n.Microsoft="microsoft",n.Elevenlabs="elevenlabs",n.Cartesia="cartesia",n))($a||{}),Ya=(n=>(n.Public="public",n.Premium="premium",n.Private="private",n.ExternalPrivate="external-private",n))(Ya||{});const Hl=(...n)=>{},Qa=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 Jr(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 Xa;function Gr(){return Xa??(Xa=pn())}function Wl(){Xa=pn()}function Za(n,e){if(n.type==="bearer")return`Bearer ${n.token}~${Gr()}`;if(n.type==="basic")return`Basic ${"token"in n?n.token:btoa(`${n.username}:${n.password}`)}~${Gr()}`;if(n.type==="key")return`Client-Key ${n.clientKey}.${Jr(e)}_${Gr()}`;throw new Error(`Unknown auth type: ${n}`)}const zl=45*1e3,Jl="X-Playground-Chat",eo=2e3,ri="https://api.d-id.com",Gl="wss://notifications.d-id.com",$l="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 Yl(n){return n instanceof Error&&typeof n.kind=="string"}class to extends qt{constructor(t,i){super(`Failed to create ${i?"persistent ":""}chat, mode: ${t}`,"ChatCreationFailed");qe(this,"kind","ChatCreationFailed")}}class no extends qt{constructor(t){super(`Chat mode downgraded to ${t}`,"ChatModeDowngraded");qe(this,"kind","ChatModeDowngraded")}}function Ql(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=Ql(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 io 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 ro extends qt{constructor(t){super(t,"WSError");qe(this,"kind","WSError")}}const so=n=>n.type,Xl=n=>n.type===fn.Expressive?"v4":n.type===fn.Clip?"v3-pro":n.type===fn.Image?"image":"v2",$r=n=>n===fn.Expressive||n===fn.Image,Yr=n=>[me.TextOnly,me.Playground,me.Maintenance].includes(n),Ln=n=>n&&[me.DirectPlayback,me.Off].includes(n),ao=/\[!\[([^\[\]]*)\]\(([^)\s]+)\)\]\(([^)\s]+)\)/g,oo=/!\[([^\[\]]*)\]\(([^)\s]+)\)/g,Zl=[".mp4",".webm",".mkv",".mov",".m4v",".ogv"];function eh(n){const e=n.split("?")[0].split("#")[0].toLowerCase();return Zl.some(t=>e.endsWith(t))}const co=new RegExp("(?<!!)\\[([^\\[\\]]+)\\]\\(([^)\\s]+)\\)","g"),uo=/<a\s+href="([^"]*)"[^>]*?>([^<]*)<\/a>/gi;function Qr(n){if(n.length===0)return[];const e=[];let t;for(ao.lastIndex=0;(t=ao.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(oo.lastIndex=0;(t=oo.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;eh(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(co.lastIndex=0;(t=co.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(uo.lastIndex=0;(t=uo.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 lo="",Xr=[];function si(n){return n===lo||(lo=n,Xr=Qr(n)),Xr}function th(n,e){let t;return{promise:new Promise((r,s)=>{t=setTimeout(()=>s(new Error(e)),n)}),clear:()=>clearTimeout(t)}}async function Zr(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}=th(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 Qa(t.delayMs),await t.onRetry(s)}throw i}class ho{constructor(e){qe(this,"status",429);this.response=e}}const nh=n=>Zr(n,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:e=>e.status===429});function es(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 nh(async()=>{const h=await fetch(e+(s!=null&&s.startsWith("/")?s:`/${s}`),{...d,headers:{...d.headers,Authorization:Za(n,i),"Content-Type":"application/json"}});if(h.status===429)throw new ho(h);return h})}catch(h){if(h instanceof ho)l=h.response;else{if((h==null?void 0:h.name)==="AbortError")throw h;const p=new io(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 ih(n,e=ri,t,i){const r=es(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 rh(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:so(i),agentVoice:{language:(s=(r=n.avatar)==null?void 0:r.voice)==null?void 0:s.language}}}function sh(n){var e;return{agentType:so(n.avatar),presenterType:Xl(n.avatar),owner_id:n.owner_id??"",starterQuestionsCount:(e=n.starter_message)==null?void 0:e.length,agentId:n.id,agentName:n.name}}const ah=n=>{try{return String((n==null?void 0:n.message)??n??"").slice(0,256)}catch{return"Unknown error"}},oh=n=>n.reduce((e,t)=>e+t,0),fo=n=>oh(n)/n.length,mo=n=>Math.min(...n),po=n=>Math.max(...n),Hi=(n,e=0)=>{const t=10**e;return Math.round(n*t)/t},ch=(n,e)=>{const t=[...n].sort((i,r)=>i-r);return t[Math.min(t.length-1,Math.floor(e*(t.length-1)))]},dh=n=>ch(n,.5),uh=(n,e)=>{try{return n()}catch{return e}};function go(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 vo(n){"requestIdleCallback"in window?requestIdleCallback(n,{timeout:2e3}):setTimeout(n,0)}function Wi(n){return n instanceof qt?n.toJson():{kind:"UnknownError",message:ah(n)||"UnknownError"}}const lh="3.0.3-staging.435",hh="https://api-js.mixpanel.com/track/?verbose=1&ip=1",yo=50,gn=[];let ts=!1;async function bo(n){const e=await fetch(hh,{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 fh(n){gn.push(n),gn.splice(yo)}function ns(){if(ts||!gn.length)return;ts=!0;const n=gn.splice(0,gn.length);bo(n).catch(()=>{gn.unshift(...n),gn.splice(yo)}).finally(()=>{ts=!1})}typeof window<"u"&&typeof window.addEventListener=="function"&&(window.addEventListener("online",ns),typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&ns()}));function mh(n){const e=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",t={};return{token:n.token||"testKey",distinct_id:Jr(n.externalId),agentId:n.agentId,additionalProperties:{id:Jr(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:lh,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 ns(),bo([o]).catch(()=>fh(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 is(){let n=0;return{reset:()=>n=0,update:()=>n=Date.now(),get:(e=!1)=>e?Date.now()-n:n}}const Lt=is(),rs=is(),ko=is();function To(n){return n===me.Playground?{headers:{[Jl]:"true"}}:{}}async function So(n,e,t,i,r=!1,s){return s?{chat:s,chatMode:i}:(Ln(i)||(s=await e.newChat(n.id,{persist:r},To(i)),t.track("agent-chat",{event:"created",chatId:s.id,mode:i})),{chat:s,chatMode:(s==null?void 0:s.chat_mode)??i})}function ph(n){return!n||n.length===0?[]:n.map(e=>Array.isArray(e.parts)&&e.parts.length>0?e:{...e,parts:Qr(typeof e.content=="string"?e.content:"")})}function gh(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(Za(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 vh(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 gh(n)}catch(r){if(i===e)throw r;await Qa(i*500)}return t}async function yh(n,e,t,i){const r=t!=null&&t.onMessage?[t.onMessage]:[],s=await vh({auth:n,host:e,externalId:i,callbacks:{onError:a=>{var c;return(c=t.onError)==null?void 0:c.call(t,new ro(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 bh={manual:xn.Ok,inactivity:xn.Inactivity,peer_disconnected:xn.NetworkIssue,shutdown:xn.UnknownError};function kh(n){return bh[n.close_reason]??n.close_reason}const Th=[G.StreamVideoDone,G.StreamVideoError,G.StreamVideoRejected],Co=[G.StreamFailed,G.StreamVideoError,G.StreamVideoRejected];function wo(n){if(n.answer!==void 0)return n.answer;let e=0,t="";for(;e in n;)t+=n[e++];return t}function Sh(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 Ch(n,e,t,i,r,s,a){if(n===He.Transcribe&&e.content){Sh(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=wo(t);!!(l&&l.length<p.length)&&(u.interrupted=!0),t.answer=l}const f=wo(t);(u.content!==f||n===He.Answer)&&(u.content=f,u.parts=si(f),r==null||r([...i.messages],n))}function wh(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;Ch(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=go(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(Th.includes(o)){const v=o.split("/")[1],b=go(u,i,{mode:e.chatMode});Co.includes(o)?n.track("agent-video",{...b,event:v}):n.linkTrack("agent-video",{...b,event:v},o,["done"])}Co.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(kh(u))}}}}function Eh(n,e,t,i){const r=es(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 Eo=(n,e)=>(t,i)=>n&&console.log(`[${e}] ${t}`,i??""),Ph=45;function Rh(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(dh(c))}}function _h(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 Ih(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 Mh(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 Po(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=Ih(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:uh(()=>Rh(n),null),minRtt:mo(c),avgRtt:fo(c),maxRtt:po(c),aggregateReport:_h(n[0],n[n.length-1],s),minJitterDelayInInterval:mo(a),maxJitterDelayInInterval:po(a),avgJitterDelayInInterval:fo(a)},codec:n[0].codec,resolution:`${n[0].frameWidth}x${n[0].frameHeight}`}}function Ro(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 Dh(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=Ro(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,Oh=Math.max(Math.ceil(400/zi),1),Ah=.25,xh=.28;function Lh(){let n=0,e,t,i=0;return r=>{const s=Ro(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 _o(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=Lh();async function v(){const b=await n();if(!b)return;const{isReceiving:k,avgJitterDelayInInterval:E,freezeCount:R}=p(b),y=Mh(b);if(k)d=0,h=R-f,l=E<Ah?vt.Strong:E>xh&&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>=Oh)){const T=Po(a,zi,c);i==null||i(X.Stop,T??void 0),e()||t(),f=R,o=!1}}return{start:()=>{s||(s=setInterval(v,zi))},stop:()=>{s&&(clearInterval(s),s=null)},getReport:()=>Po(a,zi,c)}}const Nh=()=>{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 Io(n){switch(n){case"connected":return ne.Connected;case"checking":return ne.Connecting;case"failed":return ne.Fail;case"new":return ne.New;case"closed":return ne.Closed;case"disconnected":return ne.Disconnected;case"completed":return ne.Completed;default:return ne.New}}const Uh=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 Fh({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 Bh({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(Re.Talking):e===X.Stop&&(i==null||i(Re.Idle))}function Mo({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,streamType:r,report:s,log:a}){r===yt.Legacy?Fh({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:s,log:a}):r===yt.Fluent&&Bh({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:s,log:a})}async function jh(n,e,{debug:t=!1,callbacks:i,auth:r,baseURL:s=ri,analytics:a},c){var en;const d=Eo(t,"WebRTCStreamingManager"),o=Uh(d);let u=!1,l=!1,h=X.Stop,f=X.Stop;const{startConnection:p,sendStreamRequest:v,close:b,createStream:k,addIceCandidate:E}=Eh(r,s,n,i.onError),{id:R,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");(en=i.onStreamCreated)==null||en.call(i,{streamId:R,sessionId:S,agentId:n});const F=W=>{var K;return(K=i.onError)==null?void 0:K.call(i,W,{streamId:R})},A=new(Nh())({iceServers:T}),N=A.createDataChannel("JanusDataChannel"),j=x?yt.Fluent:yt.Legacy;a.enrich({"stream-type":j});const ie=e.stream_warmup&&!x,oe=()=>u,Ce=()=>{var W;u=!0,l&&(d("CALLBACK: onConnectionStateChange(Connected)"),(W=i.onConnectionStateChange)==null||W.call(i,ne.Connected))},Le=_o(()=>A.getStats(),oe,Ce,(W,K)=>Mo({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?E(R,{candidate:W.candidate.candidate,sdpMid:W.candidate.sdpMid,sdpMLineIndex:W.candidate.sdpMLineIndex},S,c):E(R,{candidate:null},S,c)}catch(K){F(K)}},N.onopen=()=>{l=!0,(!ie||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 C=K.metadata;Me(C.videoId)}W===G.StreamDone&&Me(null),h=W===G.StreamStarted?X.Start:X.Stop,Mo({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 C=typeof K=="string"?K:K==null?void 0:K.metadata;C&&a.enrich({streamMetadata:C}),(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:C}=o(W.data);(B=Ot[K])==null||B.call(Ot,K,C)},A.oniceconnectionstatechange=()=>{var K;d("peerConnection.oniceconnectionstatechange => "+A.iceConnectionState);const W=Io(A.iceConnectionState);W!==ne.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(R,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(C){d("Error sending data channel message",C),F(C)}}return{speak(W){return v(R,S,W)},async disconnect(){var W;if(R){const K=Io(A.iceConnectionState);if(A){if(K===ne.New){Le.stop();return}A.close(),A.oniceconnectionstatechange=null,A.onnegotiationneeded=null,A.onicecandidate=null,A.ontrack=null}try{K===ne.Connected&&await b(R,S)}catch(C){d("Error on close stream connection",C)}(W=i.onAgentActivityStateChange)==null||W.call(i,Re.Idle),Le.stop()}},sendDataChannelMessage:xt,sessionId:S,streamId:R,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 Vh(n,e,t,i){const r=n.id;switch(e.version){case"v1":{const{version:s,...a}=e;return jh(r,a,t,i)}case"v2":{const{version:s,...a}=e;switch(a.transport.provider){case zr.Livekit:const{createLiveKitStreamingManager:c}=await Promise.resolve().then(()=>Bo);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 qh="cht";function Kh(n){return{transport:{provider:zr.Livekit},...(n==null?void 0:n.persistentChat)!==void 0&&{chat_persist:n.persistentChat}}}function Hh(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 Wh(n,e){return $r(n.avatar.type)?{version:Ji.V2,...Kh(e)}:{version:Ji.V1,...Hh(e)}}function zh(n,e,t){t.track("agent-connection-state-change",{state:n,...e&&{reason:e}})}function Jh(n,e,t,i,r){r===yt.Fluent?Gh(n,e,t,i,r):$h(n,e,t,i,r)}function Gh(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 Do(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 $h(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 Yh(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 Oo(n,e,t,i){return Lt.reset(),ko.update(),new Promise(async(r,s)=>{try{let a,c=!1;const d=Wh(n,e);t.enrich({"stream-version":d.version.toString()});let o=null;const u=d.version===Ji.V2;a=await Vh(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),zh(l,h,t),l===ne.Connected&&(a?r(a):c=!0)},onVideoStateChange:(l,h)=>{var f,p;(p=(f=e.callbacks).onVideoStateChange)==null||p.call(f,l),Jh(l,n,h,t,a.streamType)},onAgentActivityStateChange:l=>{var h,f;(f=(h=e.callbacks).onAgentActivityStateChange)==null||f.call(h,l),l===Re.Talking?(rs.update(),o=p=>{Do(X.Start,n,t,a.streamType,p),o=null},u||o({latency:Lt.get(!0)})):(rs.reset(),o=null,Do(X.Stop,n,t,a.streamType))},onFirstAudioDetected:l=>{o==null||o(l)},onStreamReady:()=>{const l=ko.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),Yh(l,h,t)})}},i),c&&r(a)}catch(a){s(a)}})}async function Qh(n,e,t,i,r){var u,l;const s=async()=>{if($r(n.avatar.type)){const h=await Oo(n,e,i),f=`${qh}_${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=So(n,t,i,e.mode,e.persistentChat,r),b=Oo(n,e,i,f).then(R=>(p=R,R)),[k,E]=await Promise.all([v,b]);return{chatResult:k,streamingManager:E}}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 no(o)),c==null||c.disconnect(),{chat:d}):{chat:d,streamingManager:c}}const ss="ChatMode.Off and ChatMode.DirectPlayback are not supported for Expressive agents",Ao="callbacks.onSrcObjectReady is required in every chat mode that streams video; it is optional only in ChatMode.TextOnly, ChatMode.Playground and ChatMode.Maintenance",Xh=[ne.Disconnected,ne.Closed,ne.Fail];async function Zh(n,e){var At,xt,en,W,K;const t={...e.callbacks};let i=!0;const r=((At=e.analytics)==null?void 0:At.mixpanelKey)||$l,s=e.wsURL||Gl,a=e.baseURL||ri,c=e.mode||me.Functional;if(!t.onSrcObjectReady&&!Yr(c))throw new pe(Ao);const d={messages:[],chatMode:c},o=mh({token:r,agentId:n,isEnabled:(xt=e.analytics)==null?void 0:xt.enabled,externalId:e.externalId,mixpanelAdditionalProperties:(en=e.analytics)==null?void 0:en.additionalProperties}),u=Date.now();vo(()=>{o.track("agent-sdk",{event:"init"},u)});let l=ne.New,h;const f={...t,onError(C,B){var H;o.track("agent-error",{error:Wi(C)}),(H=t.onError)==null||H.call(t,C,B)},onConnectionStateChange(C,B){var H;l=C,(H=t.onConnectionStateChange)==null||H.call(t,C,B)},onStreamCreated(C){var B;h=C,(B=t.onStreamCreated)==null||B.call(t,C)}},p={...e,callbacks:f},v=ih(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=$r(b.avatar.type);if(k&&Ln(c))throw new pe(ss);k&&Promise.resolve().then(()=>Bo).then(({preloadLiveKit:C})=>C()).catch(()=>{}),o.enrich(sh(b));const{onMessage:E,clearQueue:R}=wh(o,d,p,b,C=>{var B,H;(B=d.socketManager)==null||B.disconnect(),(H=f.onConnectionStateChange)==null||H.call(f,ne.Disconnected,C)});d.messages=ph(p.initialMessages),d.messages.length&&((K=f.onNewMessage)==null||K.call(f,[...d.messages],"answer"));const y=C=>o.enrich({videoId:C}),T=C=>{var $e;const B=(C==null?void 0:C.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:rs.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(C){return async B=>{const H=S.get(C);if(!H)throw new Error(`No handler registered for client tool: ${C}`);const se=JSON.parse(B.payload);return H(se)}}function U(){var C,B,H,se;for(const[be]of S)(B=(C=d.streamingManager)==null?void 0:C.unregisterRpcMethod)==null||B.call(C,be),(se=(H=d.streamingManager)==null?void 0:H.registerRpcMethod)==null||se.call(H,be,x(be))}function F(C,B){var se,be;if(!k)throw new pe("registerClientTool is only available on Expressive (V4) agents");const H=!S.has(C);S.set(C,B),H&&((be=(se=d.streamingManager)==null?void 0:se.registerRpcMethod)==null||be.call(se,C,x(C)))}function A(C){var B,H;S.delete(C),(H=(B=d.streamingManager)==null?void 0:B.unregisterRpcMethod)==null||H.call(B,C)}const N=Date.now();vo(()=>{o.track("agent-sdk",{event:"loaded",...rh(b)},N)});let j,ie=!1;function oe(C){return ie=!1,j=Promise.resolve().then(C).finally(()=>{j=void 0}),j}function Ce(C){return j||oe(()=>Le(C))}async function Le(C){var ot,Fi,Bi,Ve;if(ie)return;d.streamingManager&&await re(),Wl(),(ot=f.onConnectionStateChange)==null||ot.call(f,ne.Connecting),Lt.reset(),C&&!i&&(delete d.chat,(Fi=f.onNewMessage)==null||Fi.call(f,[...d.messages],"answer"));const B=Me(d.chatMode)?yh(p.auth,s,{onMessage:E,onError:f.onError},p.externalId):Promise.resolve(void 0),H=Zr(()=>Qh(b,{...p,mode:d.chatMode,callbacks:{...f,onVideoIdChange:y,onMessage:E},rpcMethods:new Map([...S.keys()].map(Ne=>[Ne,x(Ne)]))},v,o,d.chat),{limit:3,timeout:zl,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,ne.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,ie){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}": ${ss}`);return}await Dt(De)}async function re(){var C,B,H;(C=d.socketManager)==null||C.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,ne.Disconnected)}function Me(C){return!k&&C!==me.DirectPlayback}function jt(C){const B=!Ln(C);return(!Me(C)||!!d.socketManager)&&(!B||!!d.chat)}async function Dt(C){var B;if(C!==d.chatMode){o.track("agent-mode-change",{mode:C}),d.chatMode=C;const H=!!d.streamingManager||!!d.socketManager;(C!==me.Functional||H&&!jt(C))&&await re(),(B=f.onModeChange)==null||B.call(f,C)}}async function Ot(C){if(k&&Ln(C))throw new pe(ss);await Dt(C)}return{agent:b,getStreamType:()=>{var C;return(C=d.streamingManager)==null?void 0:C.streamType},isInterruptAvailable:()=>{var C;return((C=d.streamingManager)==null?void 0:C.interruptAvailable)??!1},starterMessages:[...b.starter_message??[]],getSttToken:()=>v.getSttToken(b.id),getChatMode:()=>d.chatMode,getConnectionState:()=>l,getSessionInfo:()=>h,changeMode:Ot,enrichAnalytics:C=>o.enrich(C),async connect(){if(!f.onSrcObjectReady&&!Yr(d.chatMode))throw new pe(Ao);if(j)return ie=!1,j;if(d.streamingManager&&!Xh.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 C=d.streamingManager;let B;if(k&&(C!=null&&C.reconnect))try{await C.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&&(ie=!0),await re(),o.track("agent-chat",{event:"disconnect",mode:d.chatMode})},publishMicrophoneStream(C){var B;return(B=d.streamingManager)!=null&&B.publishMicrophoneStream?d.streamingManager.publishMicrophoneStream(C):Promise.reject(new pe("publishMicrophoneStream is only available on Expressive (V4) agents, after connect()"))},setSttLanguage(C){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:C}),d.streamingManager.sendDataChannelMessage(Fe.SttLanguage,JSON.stringify({language:C})))},sendDataChannelMessage(C,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:C}),d.streamingManager.sendDataChannelMessage(C,JSON.stringify(B)))},unpublishMicrophoneStream(){var C;return(C=d.streamingManager)!=null&&C.unpublishMicrophoneStream?d.streamingManager.unpublishMicrophoneStream():Promise.resolve()},replaceMicrophoneTrack(C){var B;return(B=d.streamingManager)!=null&&B.replaceMicrophoneTrack?d.streamingManager.replaceMicrophoneTrack(C):Promise.reject(new pe("replaceMicrophoneTrack is only available on Expressive (V4) agents, after connect()"))},publishCameraStream(C){var B;return(B=d.streamingManager)!=null&&B.publishCameraStream?d.streamingManager.publishCameraStream(C):Promise.reject(new pe("publishCameraStream is only available on Expressive (V4) agents, after connect()"))},unpublishCameraStream(){var C;return(C=d.streamingManager)!=null&&C.unpublishCameraStream?d.streamingManager.unpublishCameraStream():Promise.resolve()},async chat(C){var be,$e,fe;const B=()=>{if(Ln(d.chatMode))throw new pe(`${d.chatMode} is enabled, chat is disabled`);if(C.length>=eo)throw new pe(`Message cannot be more than ${eo} characters`);if(C.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 So(b,v,o,d.chatMode,p.persistentChat);if(!De.chat)throw new to(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 Zr(k&&!ot?async()=>{var Ve;return await((Ve=d.streamingManager)==null?void 0:Ve.sendDataChannelMessage(Fe.Chat,C)),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()}))},{...To(d.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:Ve=>{var Vt,ni,Wr;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?((Wr=f.onError)==null||Wr.call(f,Ve),!1):!0},onRetry:async()=>{await re(),await Ce(!1)}})};try{R(),B(),d.messages.push({id:pn(),role:"user",content:C,parts:si(C),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(C,B,H){var $e,fe,we,De;const se=d.messages.find(ot=>ot.id===C);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:C,matches:be,score:B}):v.createRating(b.id,d.chat.id,{knowledge_id:((De=b.knowledge)==null?void 0:De.id)??"",message_id:C,matches:be,score:B})},async deleteRate(C){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,C)},async submitFeedback(C,B){if(!d.chat)throw new pe("Chat is not initialized");return o.track("agent-feedback",{rating:C,hasAnswer:!!B}),v.submitFeedback(b.id,d.chat.id,{rating:C,answer:B})},async speak(C){var fe,we;function B(){return typeof C=="string"?{type:"text",input:C,ssml:!1}:C.type==="text"&&!C.provider?{type:"text",input:C.input,ssml:C.ssml,should_queue_speaks:C.should_queue_speaks,sentiment:C.sentiment}:C}const H=Yr(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 ef(n){return n.some(e=>e.executionMode==="blocking")}function tf(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone??""}catch{return""}}function nf(){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 rf(){const n={},e=tf();e&&(n.timezone=e);const t=nf();return t&&(n.device=t),n}function sf(n,e,t,i){const r=es(n,`${e}/v2/agents/${t}`,i);return{async createStream(s){return r.post("/sessions",s)}}}const af={[G.ChatAnswer]:He.Answer,[G.ChatPartial]:He.Partial},xo=2e4,of=[];let as;function Lo(){return as??(as=Promise.resolve().then(()=>Ny).catch(()=>{throw as=void 0,new Error("LiveKit client is required for this streaming manager. Please install it using: npm install livekit-client")})),as}function cf(){Lo().catch(()=>{})}const df={excellent:vt.Strong,good:vt.Strong,poor:vt.Weak,lost:vt.Unknown,unknown:vt.Unknown},oi=(n="Stream Error")=>new Ki(n),uf=new TextDecoder;function lf(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 No(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 hf(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 ff(n){const e=hf(n);return{...No(n),output:n.output,...e!==void 0?{error:e}:{}}}function Uo(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 Fo(n,e,t){var i,r;throw e("Failed to connect to LiveKit room:",n),(i=t.onConnectionStateChange)==null||i.call(t,ne.Fail,"internal:init-error"),(r=t.onError)==null||r.call(t,n,{}),n}async function mf(n,e,t){var Bl;const i=Eo(t.debug||!1,"LiveKitStreamingManager"),{Room:r,RoomEvent:s,ConnectionState:a,RpcError:c,Track:d}=await Lo(),{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},E={isPublishing:!1,publication:null};let R=null,y=null,T=null,S=!1;f=new r({adaptiveStream:!1,dynacast:!0});for(const[w,I]of t.rpcMethods??[])f.registerRpcMethod(w,Uo(c,I));let x=null,U=Re.Idle,F=!0;const A=new Map;let N=null,j=null;const ie=sf(u,l||ri,n,o.onError);let oe,Ce,Le,re=!0;try{const w=await ie.createStream({transport:e.transport,chat_persist:e.chat_persist??!1,verbose:t.verbose??!1}),{id:I,session_token:V,session_url:J,interrupt_enabled:he}=w;(Bl=o.onStreamCreated)==null||Bl.call(o,{sessionId:I,streamId:I,agentId:n}),oe=I,Ce=V,Le=J,re=he??!0,await f.prepareConnection(Le,Ce)}catch(w){Fo(w,i,o)}if(!Le||!Ce||!oe)return Promise.reject(new Error("Failed to initialize LiveKit stream"));const Me=w=>{var I;return(I=o.onError)==null?void 0:I.call(o,w,{sessionId:oe})};f.on(s.ConnectionStateChanged,Ot).on(s.ConnectionQualityChanged,At).on(s.ParticipantConnected,xt).on(s.ParticipantDisconnected,en).on(s.TrackSubscribed,C).on(s.TrackUnsubscribed,B).on(s.DataReceived,Vt).on(s.MediaDevicesError,ni).on(s.TranscriptionReceived,jt).on(s.EncryptionError,Wr).on(s.TrackSubscriptionFailed,Uy);function jt(w,I){I!=null&&I.isLocal&&Lt.update()}async function Dt(){const w=rf();if(!(!f||Object.keys(w).length===0))try{await f.localParticipant.setAttributes(w)}catch(I){i("Failed to set user context attributes",I)}}try{await f.connect(Le,Ce),i("LiveKit room joined successfully"),Dt(),x=setTimeout(()=>{i(`Track subscription timeout - no track subscribed within ${xo/1e3} seconds after connect`),x=null;const w=oi("Track subscription timeout");h.track("connectivity-error",{error:Wi(w),sessionId:oe}),Me(w),Ja("internal:track-subscription-timeout")},xo)}catch(w){Fo(w,i,o)}h.enrich({"stream-type":v});function Ot(w){var I,V,J,he;switch(i("Connection state changed:",w),w){case a.Connecting:i("CALLBACK: onConnectionStateChange(Connecting)"),(I=o.onConnectionStateChange)==null||I.call(o,ne.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,E.publication=null,(V=o.onConnectionStateChange)==null||V.call(o,ne.Disconnected,j??"livekit:disconnected");break;case a.Reconnecting:i("LiveKit room reconnecting..."),(J=o.onConnectionStateChange)==null||J.call(o,ne.Connecting,"livekit:reconnecting");break;case a.SignalReconnecting:i("LiveKit room signal reconnecting..."),(he=o.onConnectionStateChange)==null||he.call(o,ne.Connecting,"livekit:signal-reconnecting");break}}function At(w,I){var V;i("Connection quality:",w),I!=null&&I.isLocal&&((V=o.onConnectivityStateChange)==null||V.call(o,df[w]))}function xt(w){i("Participant connected:",w.identity)}function en(w){i("Participant disconnected:",w.identity),Ja("livekit:participant-disconnected")}function W(){var w;T!==X.Start&&(i("CALLBACK: onVideoStateChange(Start)"),T=X.Start,(w=o.onVideoStateChange)==null||w.call(o,X.Start))}function K(w){var I;T!==X.Stop&&(i("CALLBACK: onVideoStateChange(Stop)"),T=X.Stop,(I=o.onVideoStateChange)==null||I.call(o,X.Stop,w))}function C(w,I,V){var he,ke,ue;i(`Track subscribed: ${w.kind} from ${V.identity}`);const J=w.mediaStreamTrack;if(!J){i(`No mediaStreamTrack available for ${w.kind}`);return}b?(b.addTrack(J),i(`Added ${w.kind} track to shared MediaStream`)):(b=new MediaStream([J]),i(`Created shared MediaStream with ${w.kind} track`)),w.kind==="audio"&&(y=Dh(()=>w.getRTCStatsReport(),({sttLatency:Ue,serviceLatency:tt})=>{var jl,Vl,ql;const ji=Lt.get(!0);let Vi=0;if(Ue){const Kl=((Vl=(jl=R==null?void 0:R.getReport())==null?void 0:jl.webRTCStats)==null?void 0:Vl.avgRtt)??0;Vi=Kl>0?Math.round(Kl*1e3):0}const ii=ji>0?ji+(Ue??0)+Vi:void 0,tn=ii!==void 0&&tt!==void 0?ii-tt:void 0;(ql=o.onFirstAudioDetected)==null||ql.call(o,{latency:ii,networkLatency:tn})})),w.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,ne.Connected,"livekit:track-subscribed")),R=_o(()=>w.getRTCStatsReport(),()=>p,Hl,(Ue,tt)=>{i(`Video state change: ${Ue}`),Ue===X.Start?(x&&(clearTimeout(x),x=null,i("Track subscription timeout cleared")),W()):Ue===X.Stop&&K(tt)}),R.start())}function B(w,I,V){i(`Track unsubscribed: ${w.kind} from ${V.identity}`),w.kind==="audio"&&(y==null||y.destroy(),y=null),w.kind==="video"&&(K((R==null?void 0:R.getReport())??void 0),R==null||R.stop(),R=null)}function H(w,I){var J;const V=af[w];V&&((J=o.onMessage)==null||J.call(o,V,{event:V,...I}))}function se(w,I){var V,J,he,ke;if(w===G.ToolCallStarted){const ue=lf(I);A.set(ue.callId,{call:{callId:ue.callId,name:ue.name,executionMode:ue.executionMode},interruptible:ue.interruptible,turnId:ue.turnId??N}),fe(),we(),U=Re.ToolActive,(V=o.onAgentActivityStateChange)==null||V.call(o,Re.ToolActive),(J=o.onToolEvent)==null||J.call(o,mn.Started,ue);return}if(w===G.ToolCallDone){const ue=No(I);be(ue.callId),(he=o.onToolEvent)==null||he.call(o,mn.Done,ue);return}if(w===G.ToolCallError){const ue=ff(I);be(ue.callId),(ke=o.onToolEvent)==null||ke.call(o,mn.Error,ue)}}function be(w){A.delete(w)&&(fe(),we())}function $e(w){let I=!1;for(const[V,J]of A)J.call.executionMode==="blocking"&&(w!==null&&J.turnId!==null&&J.turnId!==w||(A.delete(V),I=!0));I&&(fe(),we())}function fe(){var I;const w=![...A.values()].some(({call:V})=>V.executionMode==="blocking");w!==F&&(F=w,(I=o.onInterruptibleChange)==null||I.call(o,w))}function we(){var w;(w=o.onRunningToolCallsChange)==null||w.call(o,A.size===0?of:[...A.values()].map(({call:I})=>I))}function De(w,I){var V,J,he;if(w===G.StreamVideoCreated){U=Re.Talking,(V=o.onAgentActivityStateChange)==null||V.call(o,Re.Talking),y==null||y.arm({sttLatency:(J=I==null?void 0:I.stt)==null?void 0:J.latency,serviceLatency:I==null?void 0:I.serviceLatency});return}if(A.size>0){U!==Re.ToolActive&&(U=Re.ToolActive,(he=o.onAgentActivityStateChange)==null||he.call(o,Re.ToolActive));return}}function ot(w,I){var ke,ue,Ue,tt;const V=((ue=(ke=R==null?void 0:R.getReport())==null?void 0:ke.webRTCStats)==null?void 0:ue.avgRtt)??0,J=V>0?Math.round(V/2*1e3):0,he={...I,downstreamNetworkLatency:J};t.debug&&((Ue=I==null?void 0:I.metadata)!=null&&Ue.sentiment)&&(he.sentiment={id:I.metadata.sentiment.id,name:I.metadata.sentiment.sentiment}),(tt=o.onMessage)==null||tt.call(o,w,he),De(w,I)}function Fi(w,I){var V;(V=o.onMessage)==null||V.call(o,He.Transcribe,{event:He.Transcribe,...I}),queueMicrotask(()=>{var J;(J=o.onAgentActivityStateChange)==null||J.call(o,Re.Loading)})}function Bi(w,I){var V;N=(I==null?void 0:I.turn_id)??null,U=Re.Loading,(V=o.onAgentActivityStateChange)==null||V.call(o,Re.Loading)}function Ve(w,I){var J;const V=(I==null?void 0:I.turn_id)??null;N!==null&&V!==null&&V<N||($e(V),U=Re.Idle,(J=o.onAgentActivityStateChange)==null||J.call(o,Re.Idle))}function Ne(w,I){j=(I==null?void 0:I.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(w,I,V,J){const he=uf.decode(w);let ke;try{ke=JSON.parse(he)}catch(tt){i("Failed to parse data channel message:",tt);return}const ue=J||ke.subject;if(i("Data received:",{subject:ue,data:ke}),!ue)return;const Ue=ti[ue];if(Ue)try{Ue(ue,ke)}catch(tt){console.warn("[LiveKitStreamingManager] Data channel handler failed",{subject:ue,error:tt})}}function ni(w){i("Media devices error:",w),Me(oi())}function Wr(w){i("Encryption error:",w),Me(oi())}function Uy(w,I,V){i("Track subscription failed:",{trackSid:w,participant:I,reason:V})}function Fy(w,I,V){for(const[J,he]of V)if(he.source===I&&he.track){const ke=he.track.mediaStreamTrack;if(ke===w||(ke==null?void 0:ke.id)===w.id)return he}return null}async function Ul(w,I,V,J,he,ke){var ji,Vi,ii;if(!p||!f)throw i(`Room is not connected, cannot publish ${J} stream`),new Error("Room is not connected");if(w.isPublishing){i(`${J} publish already in progress, skipping`);return}const ue=V(I);if(ue.length===0)throw new Error(`No ${J} track found in the provided MediaStream`);const Ue=ue[0],tt=Fy(Ue,J,he());if(tt){i(`${J} track is already published, skipping`,{trackId:Ue.id,publishedTrackId:(Vi=(ji=tt.track)==null?void 0:ji.mediaStreamTrack)==null?void 0:Vi.id}),w.publication=tt;return}if((ii=w.publication)!=null&&ii.track){const tn=w.publication.track.mediaStreamTrack;tn!==Ue&&(tn==null?void 0:tn.id)!==Ue.id&&(i(`Unpublishing existing ${J} track before publishing new one`),await ke())}i(`Publishing ${J} track from provided MediaStream`,{trackId:Ue.id}),w.isPublishing=!0;try{w.publication=await f.localParticipant.publishTrack(Ue,{source:J}),i(`${J} track published successfully`,{trackSid:w.publication.trackSid})}catch(tn){throw i(`Failed to publish ${J} track:`,tn),tn}finally{w.isPublishing=!1}}async function Fl(w,I){if(!(!w.publication||!w.publication.track))try{f&&(await f.localParticipant.unpublishTrack(w.publication.track,!1),i(`${I} track unpublished`))}catch(V){i(`Error unpublishing ${I} track:`,V)}finally{w.publication=null}}async function By(w){return Ul(k,w,I=>I.getAudioTracks(),d.Source.Microphone,()=>f.localParticipant.audioTrackPublications,Ha)}async function Ha(){return Fl(k,"Microphone")}async function jy(w){if(!p||!f)throw i("Cannot replace microphone track: room is not connected"),new Error("Room is not connected");if(w.kind!=="audio")throw i("Cannot replace microphone track: not an audio track",{kind:w.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 I=k.publication;if(!I||!I.track)throw i("Cannot replace microphone track: no publication to replace"),new Error("No microphone publication to replace");try{k.isPublishing=!0,await I.track.replaceTrack(w),i("Microphone track replaced",{trackId:w.id,trackSid:I.trackSid})}finally{k.isPublishing=!1}}async function Vy(w){return Ul(E,w,I=>I.getVideoTracks(),d.Source.Camera,()=>f.localParticipant.videoTrackPublications,Wa)}async function Wa(){return Fl(E,"Camera")}function qy(){b&&(b.getTracks().forEach(w=>w.stop()),b=null)}async function za(w,I){if(!p||!f){i("Room is not connected for sending messages"),Me(oi());return}try{await f.localParticipant.sendText(I,{topic:w}),i("Message sent successfully:",I)}catch(V){i("Failed to send message:",V),Me(oi())}}async function Ja(w){var I,V;x&&(clearTimeout(x),x=null),y==null||y.destroy(),y=null,f&&((I=o.onConnectionStateChange)==null||I.call(o,ne.Disconnecting,w),await Promise.all([Ha(),Wa()]),await f.disconnect()),qy(),p=!1,S=!1,A.size>0&&(A.clear(),fe(),we()),N=null,(V=o.onAgentActivityStateChange)==null||V.call(o,Re.Idle),U=Re.Idle}return{speak(w){const I=typeof w=="string"?w:JSON.stringify(w);return za(Fe.Speak,I)},disconnect:()=>Ja("user:disconnect"),async reconnect(){var w,I;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,(w=o.onConnectionStateChange)==null||w.call(o,ne.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(J=>{const he=setTimeout(()=>{f==null||f.off(s.ParticipantConnected,ke),J(!1)},5e3),ke=()=>{clearTimeout(he),f==null||f.off(s.ParticipantConnected,ke),J(!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),(I=o.onConnectionStateChange)==null||I.call(o,ne.Fail,"user:reconnect-failed"),V}},sendDataChannelMessage:za,publishMicrophoneStream:By,unpublishMicrophoneStream:Ha,replaceMicrophoneTrack:jy,publishCameraStream:Vy,unpublishCameraStream:Wa,interrupt(w){return w==="text"||!p||!f?!1:(za(Fe.Interrupt,""),!0)},registerRpcMethod(w,I){f==null||f.registerRpcMethod(w,Uo(c,I))},unregisterRpcMethod(w){f==null||f.unregisterRpcMethod(w)},sessionId:oe,streamId:oe,streamType:v,interruptAvailable:re,get isInterruptible(){return F}}}const Bo=Object.freeze(Object.defineProperty({__proto__:null,createLiveKitStreamingManager:mf,preloadLiveKit:cf},Symbol.toStringTag,{value:"Module"}));function pf(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 gf=Object.defineProperty,vf=(n,e,t)=>e in n?gf(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,jo=(n,e,t)=>vf(n,typeof e!="symbol"?e+"":e,t);class Ae{constructor(){jo(this,"_locking"),jo(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 yf=34028234663852886e22,bf=-34028234663852886e22,kf=4294967295,Tf=2147483647,Sf=-2147483648;function Gi(n){if(typeof n!="number")throw new Error("invalid int 32: "+typeof n);if(!Number.isInteger(n)||n>Tf||n<Sf)throw new Error("invalid int 32: "+n)}function os(n){if(typeof n!="number")throw new Error("invalid uint 32: "+typeof n);if(!Number.isInteger(n)||n>kf||n<0)throw new Error("invalid uint 32: "+n)}function Vo(n){if(typeof n!="number")throw new Error("invalid float 32: "+typeof n);if(Number.isFinite(n)&&(n>yf||n<bf))throw new Error("invalid float 32: "+n)}const qo=Symbol("@bufbuild/protobuf/enum-type");function Cf(n){const e=n[qo];return Ee(e,"missing enum type on enum object"),e}function Ko(n,e,t,i){n[qo]=Ho(e,t.map(r=>({no:r.no,name:r.name,localName:n[r.no]})))}function Ho(n,e,t){const i=Object.create(null),r=Object.create(null),s=[];for(const a of e){const c=Wo(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 wf(n,e,t){const i={};for(const r of e){const s=Wo(r);i[s.localName]=s.no,i[s.no]=s.localName}return Ko(i,n,e),i}function Wo(n){return"localName"in n?n:Object.assign(Object.assign({},n),{localName:n.name})}class cs{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 Ef(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 cs),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 ds(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 zo(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?Go(i,r):us(i,r)}function Rf(n,e){let t=us(n,e);const i=t.hi&2147483648;i&&(t=Go(t.lo,t.hi));const r=Jo(t.lo,t.hi);return i?"-"+r:r}function Jo(n,e){if({lo:n,hi:e}=_f(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()+$o(a)+$o(s)}function _f(n,e){return{lo:n>>>0,hi:e>>>0}}function us(n,e){return{lo:n|0,hi:e|0}}function Go(n,e){return e=~e,n?n=~n+1:e+=1,us(n,e)}const $o=n=>{const e=String(n);return"0000000".slice(e.length)+e};function Yo(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 If(){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 Mf(){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),zo(r)},uEnc(r){return typeof r!="string"&&(r=r.toString()),i(r),zo(r)},dec(r,s){return Rf(r,s)},uDec(r,s){return Jo(r,s)}}}const ge=Mf();var _;(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"})(_||(_={}));var nn;(function(n){n[n.BIGINT=0]="BIGINT",n[n.STRING=1]="STRING"})(nn||(nn={}));function rn(n,e,t){if(e===t)return!0;if(n==_.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 _.UINT64:case _.FIXED64:case _.INT64:case _.SFIXED64:case _.SINT64:return e==t}return!1}function Nn(n,e){switch(n){case _.BOOL:return!1;case _.UINT64:case _.FIXED64:case _.INT64:case _.SFIXED64:case _.SINT64:return e==0?ge.zero:"0";case _.DOUBLE:case _.FLOAT:return 0;case _.BYTES:return new Uint8Array(0);case _.STRING:return"";default:return 0}}function Qo(n,e){switch(n){case _.BOOL:return e===!1;case _.STRING:return e==="";case _.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 Df{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(os(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return Gi(e),Yo(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){Vo(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){os(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,Yo(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 ds(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 ds(r,s,this.buf),this}uint64(e){let t=ge.uEnc(e);return ds(t.lo,t.hi,this.buf),this}}class Of{constructor(e,t){this.varint64=Pf,this.uint32=If,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 Af(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 Xo(n){const e=n.field.localName,t=Object.create(null);return t[e]=xf(n),[t,()=>t[e]]}function xf(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 Lf(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 Zo={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 Nf(n,e,t){tc(e,n);const i=e.runtime.bin.makeReadOptions(t),r=Lf(n.getType().runtime.bin.listUnknownFields(n),e.field),[s,a]=Xo(e);for(const c of r)e.runtime.bin.readField(s,i.readerFactory(c.data),e.field,c.wireType,i);return a()}function Uf(n,e,t,i){tc(e,n);const r=e.runtime.bin.makeReadOptions(i),s=e.runtime.bin.makeWriteOptions(i);if(ec(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 ec(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 tc(n,e){Ee(n.extendee.typeName==e.getType().typeName,"extension ".concat(n.typeName," can only be applied to message ").concat(n.extendee.typeName))}function nc(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:!Qo(n.T,e[t]);case"message":return e[t]!==void 0;case"map":return Object.keys(e[t]).length>0}}function ic(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(cs.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 rc(n,e){return Ht(e)||!n.fieldWrapper?e:n.fieldWrapper.wrapField(e)}_.DOUBLE,_.FLOAT,_.INT64,_.UINT64,_.INT32,_.UINT32,_.BOOL,_.STRING,_.BYTES;const sc={ignoreUnknownFields:!1},ac={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function Ff(n){return n?Object.assign(Object.assign({},sc),n):sc}function Bf(n){return n?Object.assign(Object.assign({},ac),n):ac}const Qi=Symbol(),Xi=Symbol();function jf(){return{makeReadOptions:Ff,makeWriteOptions:Bf,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)}oc(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]=Xo(u);oc(l,c,u.field,t,u),Uf(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(!nc(r,n)){if(r.req)throw"required field not set";if(!e.emitDefaultValues||!qf(r))continue}const a=r.oneof?n[r.oneof.localName].value:n[r.localName],c=cc(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&&ec(n,c)){const d=Nf(n,c,e),o=cc(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??nn.BIGINT,!0)},writeScalar(n,e,t){if(e!==void 0&&(t||Qo(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 oc(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=ls(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=Vf(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=ls(t.V.T,d,i.ignoreUnknownFields,!0);u!==Xi&&(a[o]=u);break;case"scalar":try{a[o]=ci(t.V.T,d,nn.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=ls(t.T,e,i.ignoreUnknownFields,!1);switch(d){case Qi:ic(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:ic(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 Vf(n,e){if(n===_.BOOL)switch(e){case"true":e=!0;break;case"false":e=!1;break}return ci(n,e,nn.BIGINT,!0).toString()}function ci(n,e,t,i){if(e===null)return i?Nn(n,t):Qi;switch(n){case _.DOUBLE:case _.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==_.FLOAT&&Vo(r),r;case _.INT32:case _.FIXED32:case _.SFIXED32:case _.SINT32:case _.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==_.UINT32||n==_.FIXED32?os(s):Gi(s),s;case _.INT64:case _.SFIXED64:case _.SINT64:if(typeof e!="number"&&typeof e!="string")break;const a=ge.parse(e);return t?a.toString():a;case _.FIXED64:case _.UINT64:if(typeof e!="number"&&typeof e!="string")break;const c=ge.uParse(e);return t?c.toString():c;case _.BOOL:if(typeof e!="boolean")break;return e;case _.STRING:if(typeof e!="string")break;try{encodeURIComponent(e)}catch{throw new Error("invalid UTF8")}return e;case _.BYTES:if(e==="")return new Uint8Array(0);if(typeof e!="string")break;return Zo.dec(e)}throw new Error}function ls(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 qf(n){return n.repeated||n.kind=="map"?!0:!(n.oneof||n.kind=="message"||n.opt||n.req)}function cc(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()]=hs(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(hs(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 hs(n.T,e,t.enumAsInteger);case"message":return rc(n.T,e).toJson(t)}}function hs(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 _.INT32:case _.SFIXED32:case _.SINT32:case _.FIXED32:case _.UINT32:return Ee(typeof e=="number"),e;case _.FLOAT:case _.DOUBLE:return Ee(typeof e=="number"),Number.isNaN(e)?"NaN":e===Number.POSITIVE_INFINITY?"Infinity":e===Number.NEGATIVE_INFINITY?"-Infinity":e;case _.STRING:return Ee(typeof e=="string"),e;case _.BOOL:return Ee(typeof e=="boolean"),e;case _.UINT64:case _.FIXED64:case _.INT64:case _.SFIXED64:case _.SINT64:return Ee(typeof e=="bigint"||typeof e=="string"||typeof e=="number"),e.toString();case _.BYTES:return Ee(e instanceof Uint8Array),Zo.enc(e)}}const Un=Symbol("@bufbuild/protobuf/unknown-fields"),dc={readUnknownFields:!0,readerFactory:n=>new Of(n)},uc={writeUnknownFields:!0,writerFactory:()=>new Df};function Kf(n){return n?Object.assign(Object.assign({},dc),n):dc}function Hf(n){return n?Object.assign(Object.assign({},uc),n):uc}function Wf(){return{makeReadOptions:Kf,makeWriteOptions:Hf,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}lc(n,e,o,d,i)}if(r&&(d!=_e.EndGroup||c!==t))throw new Error("invalid end group tag")},readField:lc,writeMessage(n,e,t){const i=n.getType();for(const r of i.fields.byNumber()){if(!nc(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];hc(r,s,e,t)}return t.writeUnknownFields&&this.writeUnknownFields(n,e),e},writeField(n,e,t,i){e!==void 0&&hc(n,e,t,i)}}}function lc(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"?_.INT32:t.T;let d=tr;if(t.kind=="scalar"&&t.L>0&&(d=Jf),s){let h=n[a];if(i==_e.LengthDelimited&&c!=_.STRING&&c!=_.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]=zf(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 zf(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,nn.BIGINT)),typeof s!="string"&&typeof s!="number"&&(s=s.toString()),a===void 0)switch(n.V.kind){case"scalar":a=Nn(n.V.T,nn.BIGINT);break;case"enum":a=n.V.T.values[0].no;break;case"message":a=new n.V.T;break}return[s,a]}function Jf(n,e){const t=tr(n,e);return typeof t=="bigint"?t.toString():t}function tr(n,e){switch(e){case _.STRING:return n.string();case _.BOOL:return n.bool();case _.DOUBLE:return n.double();case _.FLOAT:return n.float();case _.INT32:return n.int32();case _.INT64:return n.int64();case _.UINT64:return n.uint64();case _.FIXED64:return n.fixed64();case _.BYTES:return n.bytes();case _.FIXED32:return n.fixed32();case _.SFIXED32:return n.sfixed32();case _.SFIXED64:return n.sfixed64();case _.SINT64:return n.sint64();case _.UINT32:return n.uint32();case _.SINT32:return n.sint32()}}function hc(n,e,t,i){Ee(e!==void 0);const r=n.repeated;switch(n.kind){case"scalar":case"enum":let s=n.kind=="enum"?_.INT32:n.T;if(r)if(Ee(Array.isArray(e)),n.packed)$f(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)fc(t,i,n,a)}else fc(t,i,n,e);break;case"map":Ee(typeof e=="object"&&e!=null);for(const[a,c]of Object.entries(e))Gf(t,i,n,a,c);break}}function Gf(n,e,t,i,r){n.tag(t.no,_e.LengthDelimited),n.fork();let s=i;switch(t.K){case _.INT32:case _.FIXED32:case _.UINT32:case _.SFIXED32:case _.SINT32:s=Number.parseInt(i);break;case _.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,_.INT32,2,r);break;case"message":Ee(r!==void 0),n.tag(2,_e.LengthDelimited).bytes(r.toBinary(e));break}n.join()}function fc(n,e,t,i){const r=rc(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]=mc(e);n.tag(t,r)[s](i)}function $f(n,e,t,i){if(!i.length)return;n.tag(t,_e.LengthDelimited).fork();let[,r]=mc(e);for(let s=0;s<i.length;s++)n[r](i[s]);n.join()}function mc(n){let e=_e.Varint;switch(n){case _.BYTES:case _.STRING:e=_e.LengthDelimited;break;case _.DOUBLE:case _.FIXED64:case _.SFIXED64:e=_e.Bit64;break;case _.FIXED32:case _.SFIXED32:case _.FLOAT:e=_e.Bit32;break}const t=_[n].toLowerCase();return[e,t]}function Yf(){return{setEnumType:Ko,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===_.BYTES&&(o=ui(o)),s[r]={case:c,value:o};break;case"scalar":case"enum":let u=a[r];i.T===_.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===_.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)=>rn(i.T,a,s[c]));case"enum":return r.every((a,c)=>rn(_.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 rn(_.INT32,r,s);case"scalar":return rn(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 rn(_.INT32,r.value,s.value);case"scalar":return rn(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=>rn(_.INT32,r[h],s[h]));case"scalar":const l=i.V.T;return o.every(h=>rn(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 Qf(n,e,t){return{syntax:n,json:jf(),bin:Wf(),util:Object.assign(Object.assign({},Yf()),{newFieldList:e,initFields:t}),makeMessageType(i,r,s){return Ef(this,i,r,s)},makeEnum:wf,makeEnumType:Ho,getEnumType:Cf,makeExtension(i,r,s){return Af(this,i,r,s)}}}class Xf{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 pc(n,e){const t=gc(n);return e?t:rm(im(t))}function Zf(n){return pc(n,!1)}const em=gc;function gc(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 tm=new Set(["constructor","toString","toJSON","valueOf"]),nm=new Set(["getType","clone","equals","fromBinary","fromJson","fromJsonString","toBinary","toJson","toJsonString","toObject"]),vc=n=>"".concat(n,"$"),im=n=>nm.has(n)?vc(n):n,rm=n=>tm.has(n)?vc(n):n;class sm{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=Zf(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 am(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=pc(u.name,u.oneof!==void 0),l.jsonName=(t=u.jsonName)!==null&&t!==void 0?t:em(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:nn.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!=_.BYTES&&u.T!=_.STRING),u.oneof!==void 0){const h=typeof u.oneof=="string"?u.oneof:u.oneof.name;(!o||o.name!=h)&&(o=new sm(h)),l.oneof=o,o.addField(l)}d.push(l)}return d}const g=Qf("proto3",n=>new Xf(n,e=>am(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 nt extends cs{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 nt.fromDate(new Date)}static fromDate(e){const t=e.getTime();return new nt({seconds:ge.parse(Math.floor(t/1e3)),nanos:t%1e3*1e6})}static fromBinary(e,t){return new nt().fromBinary(e,t)}static fromJson(e,t){return new nt().fromJson(e,t)}static fromJsonString(e,t){return new nt().fromJsonString(e,t)}static equals(e,t){return g.util.equals(nt,e,t)}}nt.runtime=g,nt.typeName="google.protobuf.Timestamp",nt.fields=g.util.newFieldList(()=>[{no:1,name:"seconds",kind:"scalar",T:3},{no:2,name:"nanos",kind:"scalar",T:5}]);const om=g.makeMessageType("livekit.MetricsBatch",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:nt},{no:3,name:"str_data",kind:"scalar",T:9,repeated:!0},{no:4,name:"time_series",kind:"message",T:cm,repeated:!0},{no:5,name:"events",kind:"message",T:um,repeated:!0}]),cm=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:dm,repeated:!0},{no:5,name:"rid",kind:"scalar",T:13}]),dm=g.makeMessageType("livekit.MetricSample",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:nt},{no:3,name:"value",kind:"scalar",T:2}]),um=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:nt},{no:7,name:"normalized_end_timestamp",kind:"message",T:nt,opt:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"rid",kind:"scalar",T:13}]),lm=g.makeEnum("livekit.AudioCodec",[{no:0,name:"DEFAULT_AC"},{no:1,name:"OPUS"},{no:2,name:"AAC"},{no:3,name:"AC_MP3"}]),hm=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"}]),fm=g.makeEnum("livekit.ImageCodec",[{no:0,name:"IC_DEFAULT"},{no:1,name:"IC_JPEG"}]),yc=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"}]),fs=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"}]),bc=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"}]),kc=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:xc}]),rr=g.makeMessageType("livekit.Codec",()=>[{no:1,name:"mime",kind:"scalar",T:9},{no:2,name:"fmtp_line",kind:"scalar",T:9}]),mm=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:mm},{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(pm),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"}]),pm=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"}]),gm=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:sn,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:g.getEnumType(Tc)},{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:sn,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:gm,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:xc},{no:19,name:"audio_features",kind:"enum",T:g.getEnumType(Be),repeated:!0},{no:20,name:"backup_codec_policy",kind:"enum",T:g.getEnumType(yc)},{no:21,name:"packet_trailer_features",kind:"enum",T:g.getEnumType(kc),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)}]),vm=g.makeMessageType("livekit.DataTrackSubscriptionOptions",()=>[{no:1,name:"target_fps",kind:"scalar",T:13,opt:!0}]),sn=g.makeMessageType("livekit.VideoLayer",()=>[{no:1,name:"quality",kind:"enum",T:g.getEnumType(fs)},{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}]),Tc=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(an)},{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:ms,oneof:"value"},{no:3,name:"speaker",kind:"message",T:ym,oneof:"value"},{no:6,name:"sip_dtmf",kind:"message",T:Ec,oneof:"value"},{no:7,name:"transcription",kind:"message",T:bm,oneof:"value"},{no:8,name:"metrics",kind:"message",T:om,oneof:"value"},{no:9,name:"chat_message",kind:"message",T:ar,oneof:"value"},{no:10,name:"rpc_request",kind:"message",T:ps,oneof:"value"},{no:11,name:"rpc_ack",kind:"message",T:gs,oneof:"value"},{no:12,name:"rpc_response",kind:"message",T:vs,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:Sc,oneof:"value"},{no:16,name:"sequence",kind:"scalar",T:13},{no:17,name:"participant_sid",kind:"scalar",T:9}]),an=g.makeEnum("livekit.DataPacket.Kind",[{no:0,name:"RELIABLE"},{no:1,name:"LOSSY"}]),Sc=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}]),Cc=g.makeMessageType("livekit.EncryptedPacketPayload",()=>[{no:1,name:"user",kind:"message",T:ms,oneof:"value"},{no:3,name:"chat_message",kind:"message",T:ar,oneof:"value"},{no:4,name:"rpc_request",kind:"message",T:ps,oneof:"value"},{no:5,name:"rpc_ack",kind:"message",T:gs,oneof:"value"},{no:6,name:"rpc_response",kind:"message",T:vs,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"}]),ym=g.makeMessageType("livekit.ActiveSpeakerUpdate",()=>[{no:1,name:"speakers",kind:"message",T:wc,repeated:!0}]),wc=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}]),ms=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}]),Ec=g.makeMessageType("livekit.SipDTMF",()=>[{no:3,name:"code",kind:"scalar",T:13},{no:4,name:"digit",kind:"scalar",T:9}]),bm=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:km,repeated:!0}]),km=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}]),ps=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}]),gs=g.makeMessageType("livekit.RpcAck",()=>[{no:1,name:"request_id",kind:"scalar",T:9}]),vs=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:Pc,oneof:"value"},{no:4,name:"compressed_payload",kind:"scalar",T:12,oneof:"value"}]),Pc=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}]),Rc=g.makeMessageType("livekit.ParticipantTracks",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sids",kind:"scalar",T:9,repeated:!0}]),_c=g.makeMessageType("livekit.ServerInfo",()=>[{no:1,name:"edition",kind:"enum",T:g.getEnumType(Ic)},{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}]),Ic=g.makeEnum("livekit.ServerInfo.Edition",[{no:0,name:"Standard"},{no:1,name:"Cloud"}]),Mc=g.makeMessageType("livekit.ClientInfo",()=>[{no:1,name:"sdk",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:"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}]),Dc=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"}]),Oc=g.makeMessageType("livekit.ClientConfiguration",()=>[{no:1,name:"video",kind:"message",T:Ac},{no:2,name:"screen",kind:"message",T:Ac},{no:3,name:"resume_connection",kind:"enum",T:g.getEnumType(hi)},{no:4,name:"disabled_codecs",kind:"message",T:Tm},{no:5,name:"force_relay",kind:"enum",T:g.getEnumType(hi)}]),Ac=g.makeMessageType("livekit.VideoConfiguration",()=>[{no:1,name:"hardware_encoder",kind:"enum",T:g.getEnumType(hi)}]),Tm=g.makeMessageType("livekit.DisabledCodecs",()=>[{no:1,name:"codecs",kind:"message",T:rr,repeated:!0},{no:2,name:"publish",kind:"message",T:rr,repeated:!0}]),xc=g.makeMessageType("livekit.TimedVersion",()=>[{no:1,name:"unix_micro",kind:"scalar",T:3},{no:2,name:"ticks",kind:"scalar",T:5}]),ys=g.makeEnum("livekit.DataStream.OperationType",[{no:0,name:"CREATE"},{no:1,name:"UPDATE"},{no:2,name:"DELETE"},{no:3,name:"REACTION"}]),Lc=g.makeMessageType("livekit.DataStream.TextHeader",()=>[{no:1,name:"operation_type",kind:"enum",T:g.getEnumType(ys)},{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"}),Nc=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:Lc,oneof:"content_header"},{no:10,name:"byte_header",kind:"message",T:Nc,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"}),Sm=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}]),Cm=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:Sm}]),wm=g.makeMessageType("livekit.SubscribedAudioCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"enabled",kind:"scalar",T:8}]),Em=g.makeEnum("livekit.JobRestartPolicy",[{no:0,name:"JRP_ON_FAILURE"},{no:1,name:"JRP_NEVER"}]),bs=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(Em)}]),bt=g.makeEnum("livekit.SignalTarget",[{no:0,name:"PUBLISHER"},{no:1,name:"SUBSCRIBER"}]),ks=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"}]),Rm=g.makeMessageType("livekit.SignalRequest",()=>[{no:1,name:"offer",kind:"message",T:on,oneof:"message"},{no:2,name:"answer",kind:"message",T:on,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:jc,oneof:"message"},{no:8,name:"leave",kind:"message",T:fr,oneof:"message"},{no:10,name:"update_layers",kind:"message",T:qc,oneof:"message"},{no:11,name:"subscription_permission",kind:"message",T:Wc,oneof:"message"},{no:12,name:"sync_state",kind:"message",T:Is,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:Rs,oneof:"message"},{no:16,name:"ping_req",kind:"message",T:Gc,oneof:"message"},{no:17,name:"update_audio_track",kind:"message",T:Ps,oneof:"message"},{no:18,name:"update_video_track",kind:"message",T:Vc,oneof:"message"},{no:19,name:"publish_data_track_request",kind:"message",T:Ss,oneof:"message"},{no:20,name:"unpublish_data_track_request",kind:"message",T:ws,oneof:"message"},{no:21,name:"update_data_subscription",kind:"message",T:Fc,oneof:"message"}]),Uc=g.makeMessageType("livekit.SignalResponse",()=>[{no:1,name:"join",kind:"message",T:Dm,oneof:"message"},{no:2,name:"answer",kind:"message",T:on,oneof:"message"},{no:3,name:"offer",kind:"message",T:on,oneof:"message"},{no:4,name:"trickle",kind:"message",T:ur,oneof:"message"},{no:5,name:"update",kind:"message",T:xm,oneof:"message"},{no:6,name:"track_published",kind:"message",T:Es,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:Lm,oneof:"message"},{no:11,name:"room_update",kind:"message",T:Nm,oneof:"message"},{no:12,name:"connection_quality",kind:"message",T:Fm,oneof:"message"},{no:13,name:"stream_state_update",kind:"message",T:jm,oneof:"message"},{no:14,name:"subscribed_quality_update",kind:"message",T:qm,oneof:"message"},{no:15,name:"subscription_permission_update",kind:"message",T:Hm,oneof:"message"},{no:16,name:"refresh_token",kind:"scalar",T:9,oneof:"message"},{no:17,name:"track_unpublished",kind:"message",T:Am,oneof:"message"},{no:18,name:"pong",kind:"scalar",T:3,oneof:"message"},{no:19,name:"reconnect",kind:"message",T:Om,oneof:"message"},{no:20,name:"pong_resp",kind:"message",T:zm,oneof:"message"},{no:21,name:"subscription_response",kind:"message",T:$m,oneof:"message"},{no:22,name:"request_response",kind:"message",T:Ym,oneof:"message"},{no:23,name:"track_subscribed",kind:"message",T:Qm,oneof:"message"},{no:24,name:"room_moved",kind:"message",T:Wm,oneof:"message"},{no:25,name:"media_sections_requirement",kind:"message",T:ep,oneof:"message"},{no:26,name:"subscribed_audio_codec_update",kind:"message",T:Km,oneof:"message"},{no:27,name:"publish_data_track_response",kind:"message",T:Cs,oneof:"message"},{no:28,name:"unpublish_data_track_response",kind:"message",T:_m,oneof:"message"},{no:29,name:"data_track_subscriber_handles",kind:"message",T:Im,oneof:"message"}]),Ts=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:sn,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:g.getEnumType(Tc)}]),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:sn,repeated:!0},{no:10,name:"simulcast_codecs",kind:"message",T:Ts,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(yc)},{no:17,name:"audio_features",kind:"enum",T:g.getEnumType(Be),repeated:!0},{no:18,name:"packet_trailer_features",kind:"enum",T:g.getEnumType(kc),repeated:!0}]),Ss=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)}]),Cs=g.makeMessageType("livekit.PublishDataTrackResponse",()=>[{no:1,name:"info",kind:"message",T:sr}]),ws=g.makeMessageType("livekit.UnpublishDataTrackRequest",()=>[{no:1,name:"pub_handle",kind:"scalar",T:13}]),_m=g.makeMessageType("livekit.UnpublishDataTrackResponse",()=>[{no:1,name:"info",kind:"message",T:sr}]),Im=g.makeMessageType("livekit.DataTrackSubscriberHandles",()=>[{no:1,name:"sub_handles",kind:"map",K:13,V:{kind:"message",T:Mm}}]),Mm=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}]),Dm=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:Kc,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:Oc},{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:_c},{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}]),Om=g.makeMessageType("livekit.ReconnectResponse",()=>[{no:1,name:"ice_servers",kind:"message",T:Kc,repeated:!0},{no:2,name:"client_configuration",kind:"message",T:Oc},{no:3,name:"server_info",kind:"message",T:_c},{no:4,name:"last_message_seq",kind:"scalar",T:13}]),Es=g.makeMessageType("livekit.TrackPublishedResponse",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"track",kind:"message",T:jn}]),Am=g.makeMessageType("livekit.TrackUnpublishedResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),on=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}}]),xm=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:Rc,repeated:!0}]),Fc=g.makeMessageType("livekit.UpdateDataSubscription",()=>[{no:1,name:"updates",kind:"message",T:Bc,repeated:!0}]),Bc=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:vm}],{localName:"UpdateDataSubscription_Update"}),jc=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(fs)},{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}]),Vc=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:Jm}]),Vn=g.makeEnum("livekit.LeaveRequest.Action",[{no:0,name:"DISCONNECT"},{no:1,name:"RESUME"},{no:2,name:"RECONNECT"}]),qc=g.makeMessageType("livekit.UpdateVideoLayers",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"layers",kind:"message",T:sn,repeated:!0}]),Rs=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}]),Kc=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}]),Lm=g.makeMessageType("livekit.SpeakersChanged",()=>[{no:1,name:"speakers",kind:"message",T:wc,repeated:!0}]),Nm=g.makeMessageType("livekit.RoomUpdate",()=>[{no:1,name:"room",kind:"message",T:ir}]),Um=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}]),Fm=g.makeMessageType("livekit.ConnectionQualityUpdate",()=>[{no:1,name:"updates",kind:"message",T:Um,repeated:!0}]),Bm=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(ks)}]),jm=g.makeMessageType("livekit.StreamStateUpdate",()=>[{no:1,name:"stream_states",kind:"message",T:Bm,repeated:!0}]),_s=g.makeMessageType("livekit.SubscribedQuality",()=>[{no:1,name:"quality",kind:"enum",T:g.getEnumType(fs)},{no:2,name:"enabled",kind:"scalar",T:8}]),Vm=g.makeMessageType("livekit.SubscribedCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"qualities",kind:"message",T:_s,repeated:!0}]),qm=g.makeMessageType("livekit.SubscribedQualityUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_qualities",kind:"message",T:_s,repeated:!0},{no:3,name:"subscribed_codecs",kind:"message",T:Vm,repeated:!0}]),Km=g.makeMessageType("livekit.SubscribedAudioCodecUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_audio_codecs",kind:"message",T:wm,repeated:!0}]),Hc=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}]),Wc=g.makeMessageType("livekit.SubscriptionPermission",()=>[{no:1,name:"all_participants",kind:"scalar",T:8},{no:2,name:"track_permissions",kind:"message",T:Hc,repeated:!0}]),Hm=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}]),Wm=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}]),Is=g.makeMessageType("livekit.SyncState",()=>[{no:1,name:"answer",kind:"message",T:on},{no:2,name:"subscription",kind:"message",T:hr},{no:3,name:"publish_tracks",kind:"message",T:Es,repeated:!0},{no:4,name:"data_channels",kind:"message",T:Jc,repeated:!0},{no:5,name:"offer",kind:"message",T:on},{no:6,name:"track_sids_disabled",kind:"scalar",T:9,repeated:!0},{no:7,name:"datachannel_receive_states",kind:"message",T:zc,repeated:!0},{no:8,name:"publish_data_tracks",kind:"message",T:Cs,repeated:!0}]),zc=g.makeMessageType("livekit.DataChannelReceiveState",()=>[{no:1,name:"publisher_sid",kind:"scalar",T:9},{no:2,name:"last_seq",kind:"scalar",T:13}]),Jc=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"}]),Gc=g.makeMessageType("livekit.Ping",()=>[{no:1,name:"timestamp",kind:"scalar",T:3},{no:2,name:"rtt",kind:"scalar",T:3}]),zm=g.makeMessageType("livekit.Pong",()=>[{no:1,name:"last_ping_timestamp",kind:"scalar",T:3},{no:2,name:"timestamp",kind:"scalar",T:3}]),Jm=g.makeMessageType("livekit.RegionSettings",()=>[{no:1,name:"regions",kind:"message",T:Gm,repeated:!0}]),Gm=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}]),$m=g.makeMessageType("livekit.SubscriptionResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"err",kind:"enum",T:g.getEnumType(bc)}]),Ym=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:Rs,oneof:"request"},{no:8,name:"update_audio_track",kind:"message",T:Ps,oneof:"request"},{no:9,name:"update_video_track",kind:"message",T:Vc,oneof:"request"},{no:10,name:"publish_data_track",kind:"message",T:Ss,oneof:"request"},{no:11,name:"unpublish_data_track",kind:"message",T:ws,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"}]),Qm=g.makeMessageType("livekit.TrackSubscribed",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),$c=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}]),Xm=g.makeMessageType("livekit.JoinRequest",()=>[{no:1,name:"client_info",kind:"message",T:Mc},{no:2,name:"connection_settings",kind:"message",T:$c},{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:on},{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:Is}]),Zm=g.makeMessageType("livekit.WrappedJoinRequest",()=>[{no:1,name:"compression",kind:"enum",T:g.getEnumType(Ms)},{no:2,name:"join_request",kind:"scalar",T:12}]),Ms=g.makeEnum("livekit.WrappedJoinRequest.Compression",[{no:0,name:"NONE"},{no:1,name:"GZIP"}]),ep=g.makeMessageType("livekit.MediaSectionsRequirement",()=>[{no:1,name:"num_audios",kind:"scalar",T:13},{no:2,name:"num_videos",kind:"scalar",T:13}]),Yc=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"}]),tp=g.makeEnum("livekit.EncodedFileType",[{no:0,name:"DEFAULT_FILETYPE"},{no:1,name:"MP4"},{no:2,name:"OGG"},{no:3,name:"MP3"}]),np=g.makeEnum("livekit.StreamProtocol",[{no:0,name:"DEFAULT_PROTOCOL"},{no:1,name:"RTMP"},{no:2,name:"SRT"},{no:3,name:"WEBSOCKET"}]),ip=g.makeEnum("livekit.SegmentedFileProtocol",[{no:0,name:"DEFAULT_SEGMENTED_FILE_PROTOCOL"},{no:1,name:"HLS_PROTOCOL"}]),rp=g.makeEnum("livekit.SegmentedFileSuffix",[{no:0,name:"INDEX"},{no:1,name:"TIMESTAMP"}]),sp=g.makeEnum("livekit.ImageFileSuffix",[{no:0,name:"IMAGE_SUFFIX_INDEX"},{no:1,name:"IMAGE_SUFFIX_TIMESTAMP"},{no:2,name:"IMAGE_SUFFIX_NONE_OVERWRITE"}]),ap=g.makeEnum("livekit.AudioMixing",[{no:0,name:"DEFAULT_MIXING"},{no:1,name:"DUAL_CHANNEL_AGENT"},{no:2,name:"DUAL_CHANNEL_ALTERNATE"}]),Qc=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(lm)},{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(hm)},{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}]),Xc=g.makeMessageType("livekit.StreamOutput",()=>[{no:1,name:"protocol",kind:"enum",T:g.getEnumType(np)},{no:2,name:"urls",kind:"scalar",T:9,repeated:!0}]),Ds=g.makeMessageType("livekit.SegmentedFileOutput",()=>[{no:1,name:"protocol",kind:"enum",T:g.getEnumType(ip)},{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(rp)},{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"}]),op=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(sp)},{no:6,name:"image_codec",kind:"enum",T:g.getEnumType(fm)},{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:Zc}]),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:Zc}]),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}]),Zc=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}]),cp=g.makeMessageType("livekit.AutoParticipantEgress",()=>[{no:1,name:"preset",kind:"enum",T:g.getEnumType(Yc),oneof:"options"},{no:2,name:"advanced",kind:"message",T:Qc,oneof:"options"},{no:3,name:"file_outputs",kind:"message",T:Os,repeated:!0},{no:4,name:"segment_outputs",kind:"message",T:Ds,repeated:!0}]),dp=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"}]),up=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(ap)},{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:Os,oneof:"output"},{no:7,name:"stream",kind:"message",T:Xc,oneof:"output"},{no:10,name:"segments",kind:"message",T:Ds,oneof:"output"},{no:8,name:"preset",kind:"enum",T:g.getEnumType(Yc),oneof:"options"},{no:9,name:"advanced",kind:"message",T:Qc,oneof:"options"},{no:11,name:"file_outputs",kind:"message",T:Os,repeated:!0},{no:12,name:"stream_outputs",kind:"message",T:Xc,repeated:!0},{no:13,name:"segment_outputs",kind:"message",T:Ds,repeated:!0},{no:14,name:"image_outputs",kind:"message",T:op,repeated:!0},{no:16,name:"webhooks",kind:"message",T:Cm,repeated:!0}]),Os=g.makeMessageType("livekit.EncodedFileOutput",()=>[{no:1,name:"file_type",kind:"enum",T:g.getEnumType(tp)},{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"}]),lp=g.makeMessageType("livekit.RoomEgress",()=>[{no:1,name:"room",kind:"message",T:up},{no:3,name:"participant",kind:"message",T:cp},{no:2,name:"tracks",kind:"message",T:dp}]),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:lp},{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:bs,repeated:!0},{no:12,name:"tags",kind:"map",K:9,V:{kind:"scalar",T:9}}]),hp=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}]),ed=g.makeMessageType("livekit.TokenSourceResponse",()=>[{no:1,name:"server_url",kind:"scalar",T:9},{no:2,name:"participant_token",kind:"scalar",T:9}]);function fp(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var br={exports:{}},mp=br.exports,td;function pp(){return td||(td=1,(function(n){(function(e,t){n.exports?n.exports=t():e.log=t()})(mp,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,E,R,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,ie=encodeURIComponent(T),oe=j.indexOf(ie+"=");oe!==-1&&(N=/^([^;]+)/.exec(j.slice(oe+ie.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??R??E},k.setLevel=function(N,j){return y=F(N),j!==!1&&S(y),u.call(k)},k.setDefaultLevel=function(N){R=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&&(E=F(a.getLevel())),u.call(k),a===k)for(var N in s)s[N].rebuild()},E=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=pp(),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 z=mi.getLogger("livekit");const nd=Object.values(Ke).map(n=>mi.getLogger(n));z.setDefaultLevel(qn.info);function Qe(n){const e=mi.getLogger(n);return e.setDefaultLevel(z.getLevel()),e}function gp(n,e){if(e)mi.getLogger(e).setLevel(n);else for(const t of nd)t.setLevel(n)}function vp(n,e){(e?[e]:nd).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 yp=mi.getLogger("lk-e2ee"),pi=7e3,bp=[0,300,4*300,9*300,16*300,pi,pi,pi,pi,pi];class id{constructor(e){this._retryDelays=e!==void 0?[...e]:bp}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 As(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 rd(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 kp(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 Tp(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 rd=="function"?rd(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:{}},sd;function Sp(){if(sd)return kr.exports;sd=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 ie=j.length,oe=p(j,ie),x=0;x<ie;++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))}R(y,T,F,{once:!0}),T!=="error"&&E(y,U,{once:!0})})}function E(y,T,S){typeof y.on=="function"&&R(y,"error",T,S)}function R(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=Sp();let ad=!0,od=!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){xs("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 Cp(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):(ad=n,n?"adapter.js logging disabled":"adapter.js logging enabled")}function wp(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):(od=!n,"adapter.js deprecation warnings "+(n?"disabled":"enabled"))}function xs(){if(typeof window=="object"){if(ad)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Ls(n,e){od&&console.warn(n+" is deprecated, please use "+e+" instead.")}function Ep(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 cd(n){return Object.prototype.toString.call(n)==="[object Object]"}function dd(n){return cd(n)?Object.keys(n).reduce(function(e,t){const i=cd(n[t]),r=i?dd(n[t]):n[t],s=i&&!Object.keys(r).length;return r===void 0||s?e:Object.assign(e,{[t]:r})},{}):n}function Ns(n,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(i=>{i.endsWith("Id")?Ns(n,n.get(e[i]),t):i.endsWith("Ids")&&e[i].forEach(r=>{Ns(n,n.get(r),t)})}))}function ud(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&&Ns(n,c,r)})}),r}const ld=xs;function hd(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),ld("chrome: "+JSON.stringify(c)),d(c)})}c.video=i(c.video)}return ld("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 fd(n){n.MediaStream=n.MediaStream||n.webkitMediaStream}function md(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 pd(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 gd(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=>ud(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=>ud(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 vd(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 yd(n,e){if(!n.RTCPeerConnection)return;if(n.RTCPeerConnection.prototype.addTrack&&e.version>=65)return vd(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 Us(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 bd(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 kd=Object.freeze({__proto__:null,fixNegotiationNeeded:bd,shimAddTrackRemoveTrack:yd,shimAddTrackRemoveTrackWithNative:vd,shimGetSendersWithDtmf:pd,shimGetUserMedia:hd,shimMediaStream:fd,shimOnTrack:md,shimPeerConnection:Us,shimSenderReceiverGetStats:gd});function Td(n,e){const t=n&&n.navigator,i=n&&n.MediaStreamTrack;if(t.getUserMedia=function(r,s,a){Ls("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 Sd(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 Fs(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 Cd(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 wd(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 Ed(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 Pd(n){!n.RTCPeerConnection||"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){Ls("removeStream","removeTrack"),this.getSenders().forEach(i=>{i.track&&t.getTracks().includes(i.track)&&this.removeTrack(i)})})}function Rd(n){n.DataChannel&&!n.RTCDataChannel&&(n.RTCDataChannel=n.DataChannel)}function _d(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 Id(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 Md(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 Dd(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 Od=Object.freeze({__proto__:null,shimAddTransceiver:_d,shimCreateAnswer:Dd,shimCreateOffer:Md,shimGetDisplayMedia:Pp,shimGetParameters:Id,shimGetStats:Cd,shimGetUserMedia:Td,shimOnTrack:Sd,shimPeerConnection:Fs,shimRTCDataChannel:Rd,shimReceiverGetStats:Ed,shimRemoveStream:Pd,shimSenderGetStats:wd});function Ad(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 xd(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 Ld(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 Nd(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(Ud(r))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=(function(i,r,s){e.mediaDevices.getUserMedia(i).then(r,s)}).bind(e))}function Ud(n){return n&&n.video!==void 0?Object.assign({},n,{video:dd(n.video)}):n}function Fd(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?(Ls("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 Bd(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 jd(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 Vd(n){typeof n!="object"||n.AudioContext||(n.AudioContext=n.webkitAudioContext)}var qd=Object.freeze({__proto__:null,shimAudioContext:Vd,shimCallbacksAPI:Ld,shimConstraints:Ud,shimCreateOfferLegacy:jd,shimGetUserMedia:Nd,shimLocalStreamsAPI:Ad,shimRTCIceServerUrls:Fd,shimRemoteStreamsAPI:xd,shimTrackEventTransceiver:Bd}),Bs={exports:{}},Kd;function Rp(){return Kd||(Kd=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