@d-id/client-sdk 1.1.58-staging.273 → 1.1.59

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($,xe){typeof exports=="object"&&typeof module<"u"?xe(exports):typeof define=="function"&&define.amd?define(["exports"],xe):($=typeof globalThis<"u"?globalThis:$||self,xe($.index={}))})(this,function($){"use strict";var zg=Object.defineProperty;var $g=($,xe,Wt)=>xe in $?zg($,xe,{enumerable:!0,configurable:!0,writable:!0,value:Wt}):$[xe]=Wt;var oi=($,xe,Wt)=>$g($,typeof xe!="symbol"?xe+"":xe,Wt);class xe extends Error{constructor({kind:t,description:i,error:r}){super(JSON.stringify({kind:t,description:i}));oi(this,"kind");oi(this,"description");oi(this,"error");this.kind=t,this.description=i,this.error=r}}class Wt extends xe{constructor(e,t){super({kind:"ChatCreationFailed",description:`Failed to create ${t?"persistent":""} chat, mode: ${e}`})}}class Js extends xe{constructor(e){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${e}`})}}class Ht extends xe{constructor(t,i){super({kind:"ValidationError",description:t});oi(this,"key");this.key=i}}class Gs extends xe{constructor(e){super({kind:"WSError",description:e})}}var zs=(n=>(n.TRIAL="trial",n.BASIC="basic",n.ENTERPRISE="enterprise",n.LITE="lite",n.ADVANCED="advanced",n))(zs||{}),$s=(n=>(n.TRIAL="deid-trial",n.PRO="deid-pro",n.ENTERPRISE="deid-enterprise",n.LITE="deid-lite",n.ADVANCED="deid-advanced",n.BUILD="deid-api-build",n.LAUNCH="deid-api-launch",n.SCALE="deid-api-scale",n))($s||{}),Qs=(n=>(n.Created="created",n.Started="started",n.Done="done",n.Error="error",n.Rejected="rejected",n.Ready="ready",n))(Qs||{}),Ys=(n=>(n.Unrated="Unrated",n.Positive="Positive",n.Negative="Negative",n))(Ys||{}),_e=(n=>(n.Functional="Functional",n.TextOnly="TextOnly",n.Maintenance="Maintenance",n.Playground="Playground",n.DirectPlayback="DirectPlayback",n.Off="Off",n))(_e||{}),Ke=(n=>(n.Embed="embed",n.Query="query",n.Partial="partial",n.Answer="answer",n.Transcribe="transcribe",n.Complete="done",n))(Ke||{}),Xs=(n=>(n.KnowledgeProcessing="knowledge/processing",n.KnowledgeIndexing="knowledge/indexing",n.KnowledgeFailed="knowledge/error",n.KnowledgeDone="knowledge/done",n))(Xs||{}),Zs=(n=>(n.Knowledge="knowledge",n.Document="document",n.Record="record",n))(Zs||{}),ea=(n=>(n.Pdf="pdf",n.Text="text",n.Html="html",n.Word="word",n.Json="json",n.Markdown="markdown",n.Csv="csv",n.Excel="excel",n.Powerpoint="powerpoint",n.Archive="archive",n.Image="image",n.Audio="audio",n.Video="video",n))(ea||{}),tr=(n=>(n.Clip="clip",n.Talk="talk",n.Expressive="expressive",n))(tr||{});const El=n=>{switch(n){case"clip":return"clip";case"talk":return"talk";case"expressive":return"expressive";default:throw new Error(`Unknown video type: ${n}`)}};var X=(n=>(n.Start="START",n.Stop="STOP",n))(X||{}),it=(n=>(n.Strong="STRONG",n.Weak="WEAK",n.Unknown="UNKNOWN",n))(it||{}),Pe=(n=>(n.Idle="IDLE",n.Loading="LOADING",n.Talking="TALKING",n.ToolActive="TOOL_ACTIVE",n))(Pe||{}),ie=(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.StreamCreated="stream/created",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.ToolCalling="tool/calling",n.ToolResult="tool/result",n))(ie||{}),de=(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))(de||{}),rt=(n=>(n.Legacy="legacy",n.Fluent="fluent",n))(rt||{}),ci=(n=>(n.Livekit="livekit",n))(ci||{}),ta=(n=>(n.Amazon="amazon",n.AzureOpenAi="azure-openai",n.Microsoft="microsoft",n.Afflorithmics="afflorithmics",n.Elevenlabs="elevenlabs",n))(ta||{}),na=(n=>(n.Public="public",n.Premium="premium",n.Private="private",n))(na||{});const wl=45*1e3,Rl="X-Playground-Chat",Rn="https://api.d-id.com",_l="wss://notifications.d-id.com",Pl="79f81a83a67430be2bc0fd61042b8faa",Il=(...n)=>{},ia=n=>new Promise(e=>setTimeout(e,n)),an=(n=16)=>{const e=new Uint8Array(n);return window.crypto.getRandomValues(e),Array.from(e,t=>t.toString(16).padStart(2,"0")).join("").slice(0,13)},ra=n=>n.type==="clip"&&n.presenter_id.startsWith("v2_")?"clip_v2":n.type,Ml=n=>{switch(n.type){case"expressive":return"v4";case"clip":return"v3-pro";case"talk":return"v2"}},Ol=n=>n.type==="talk"?n.source_url:n.presenter_id,nr=n=>n===tr.Expressive,Dl=n=>[_e.TextOnly,_e.Playground,_e.Maintenance].includes(n),sa=n=>n&&[_e.DirectPlayback,_e.Off].includes(n),aa=/\[!\[([^\[\]]*)\]\(([^)\s]+)\)\]\(([^)\s]+)\)/g,oa=/!\[([^\[\]]*)\]\(([^)\s]+)\)/g,ca=new RegExp("(?<!!)\\[([^\\[\\]]+)\\]\\(([^)\\s]+)\\)","g"),da=/<a\s+href="([^"]*)"[^>]*?>([^<]*)<\/a>/gi;function la(n){if(n.length===0)return[];const e=[];let t;for(aa.lastIndex=0;(t=aa.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(oa.lastIndex=0;(t=oa.exec(n))!==null;)if(!e.some(c=>t.index>=c.index&&t.index<c.index+c.length)){const c=t[2],a={type:"image",src:c,alt:t[1]};c.toLowerCase().endsWith(".gif")&&(a.mimeType="image/gif"),e.push({index:t.index,length:t[0].length,part:a})}for(ca.lastIndex=0;(t=ca.exec(n))!==null;)e.some(c=>t.index>=c.index&&t.index<c.index+c.length)||e.push({index:t.index,length:t[0].length,part:{type:"link",href:t[2],label:t[1]}});for(da.lastIndex=0;(t=da.exec(n))!==null;)e.some(c=>t.index>=c.index&&t.index<c.index+c.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,c)=>s.index-c.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 ua="",ir=[];function _n(n){return n===ua||(ua=n,ir=la(n)),ir}function Al(n,e){let t;return{promise:new Promise((r,s)=>{t=setTimeout(()=>s(new Error(e)),n)}),clear:()=>clearTimeout(t)}}async function rr(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:c}=Al(t.timeout,t.timeoutErrorMessage),a=n().finally(c);return await Promise.race([a,s])}catch(s){if(i=s,!t.shouldRetryFn(s)||r>=t.limit)throw s;await ia(t.delayMs),t.onRetry(s)}throw i}function sr(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=an();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let xl=an();function ha(n,e){if(n.type==="bearer")return`Bearer ${n.token}`;if(n.type==="basic")return`Basic ${"token"in n?n.token:btoa(`${n.username}:${n.password}`)}`;if(n.type==="key")return`Client-Key ${n.clientKey}.${sr(e)}_${xl}`;throw new Error(`Unknown auth type: ${n}`)}const Ll=n=>rr(n,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:e=>e.status===429});function ar(n,e=Rn,t,i){const r=async(s,c)=>{const{skipErrorHandler:a,...o}=c||{},d=await Ll(()=>fetch(e+(s!=null&&s.startsWith("/")?s:`/${s}`),{...o,headers:{...o.headers,Authorization:ha(n,i),"Content-Type":"application/json"}}));if(!d.ok){let l=await d.text().catch(()=>`Failed to fetch with status ${d.status}`);const u=new Error(l);throw t&&!a&&t(u,{url:s,options:o,headers:d.headers}),u}return d.json()};return{get(s,c){return r(s,{...c,method:"GET"})},post(s,c,a){return r(s,{...a,body:JSON.stringify(c),method:"POST"})},delete(s,c,a){return r(s,{...a,body:JSON.stringify(c),method:"DELETE"})},patch(s,c,a){return r(s,{...a,body:JSON.stringify(c),method:"PATCH"})}}}function Nl(n,e=Rn,t,i){const r=ar(n,`${e}/agents`,t,i);return{create(s,c){return r.post("/",s,c)},getAgents(s,c){return r.get(`/${s?`?tag=${s}`:""}`,c).then(a=>a??[])},getById(s,c){return r.get(`/${s}`,c)},delete(s,c){return r.delete(`/${s}`,void 0,c)},update(s,c,a){return r.patch(`/${s}`,c,a)},newChat(s,c,a){return r.post(`/${s}/chat`,c,a)},chat(s,c,a,o){return r.post(`/${s}/chat/${c}`,a,o)},createRating(s,c,a,o){return r.post(`/${s}/chat/${c}/ratings`,a,o)},updateRating(s,c,a,o,d){return r.patch(`/${s}/chat/${c}/ratings/${a}`,o,d)},deleteRating(s,c,a,o){return r.delete(`/${s}/chat/${c}/ratings/${a}`,o)},getSTTToken(s,c){return r.get(`/${s}/stt-token`,c)}}}function Ul(n){var r,s,c,a;const e=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",t=()=>{const o=navigator.platform;return o.toLowerCase().includes("win")?"Windows":o.toLowerCase().includes("mac")?"Mac OS X":o.toLowerCase().includes("linux")?"Linux":"Unknown"},i=n.presenter;return{$os:`${t()}`,isMobile:`${e()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:ra(i),agentVoice:{voiceId:(s=(r=n.presenter)==null?void 0:r.voice)==null?void 0:s.voice_id,provider:(a=(c=n.presenter)==null?void 0:c.voice)==null?void 0:a.type}}}function Fl(n){var t,i,r,s,c,a;const e=(t=n.llm)==null?void 0:t.prompt_customization;return{agentType:ra(n.presenter),presenterType:Ml(n.presenter),presenter:Ol(n.presenter),owner_id:n.owner_id??"",promptVersion:(i=n.llm)==null?void 0:i.prompt_version,behavior:{role:e==null?void 0:e.role,personality:e==null?void 0:e.personality,instructions:(r=n.llm)==null?void 0:r.instructions},temperature:(s=n.llm)==null?void 0:s.temperature,knowledgeSource:e==null?void 0:e.knowledge_source,starterQuestionsCount:(a=(c=n.knowledge)==null?void 0:c.starter_message)==null?void 0:a.length,topicsToAvoid:e==null?void 0:e.topics_to_avoid,maxResponseLength:e==null?void 0:e.max_response_length,agentId:n.id,access:n.access,agentName:n.preview_name,...n.access==="public"?{from:"agent-template"}:{}}}const Bl=n=>n.reduce((e,t)=>e+t,0),ma=n=>Bl(n)/n.length;function jl(n,e,t){var o,d,l;const{event:i,...r}=n,{template:s}=(e==null?void 0:e.llm)||{},{language:c}=((o=e==null?void 0:e.presenter)==null?void 0:o.voice)||{};return{...r,llm:{...r.llm,template:s},script:{...r.script,provider:{...(d=r==null?void 0:r.script)==null?void 0:d.provider,language:c}},stitch:(e==null?void 0:e.presenter.type)==="talk"?(l=e==null?void 0:e.presenter)==null?void 0:l.stitch:void 0,...t}}function fa(n){"requestIdleCallback"in window?requestIdleCallback(n,{timeout:2e3}):setTimeout(n,0)}const Vl="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function ql(n){const e=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",t={};return{token:n.token||"testKey",distinct_id:sr(n.externalId),agentId:n.agentId,additionalProperties:{id:sr(n.externalId),...n.mixpanelAdditionalProperties||{}},isEnabled:n.isEnabled??!0,getRandom:an,enrich(i){this.additionalProperties={...this.additionalProperties,...i}},async track(i,r,s){if(!this.isEnabled)return Promise.resolve();const{audioPath:c,...a}=r||{},o=s||Date.now(),d={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:i,properties:{...this.additionalProperties,...a,agentId:this.agentId,source:e,token:this.token,time:o,$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerWidth,"Screen Width":window.screen.width||window.innerHeight,"User Agent":navigator.userAgent}}])})};return fetch(Vl,d).catch(l=>console.error("Analytics tracking error:",l)),Promise.resolve()},linkTrack(i,r,s,c){t[i]||(t[i]={events:{},resolvedDependencies:[]}),c.includes(s)||c.push(s);const a=t[i];if(a.events[s]={props:r},a.resolvedDependencies.push(s),c.every(d=>a.resolvedDependencies.includes(d))){const d=c.reduce((l,u)=>a.events[u]?{...l,...a.events[u].props}:l,{});this.track(i,d),a.resolvedDependencies=a.resolvedDependencies.filter(l=>!c.includes(l)),c.forEach(l=>{delete a.events[l]})}}}}function or(){let n=0;return{reset:()=>n=0,update:()=>n=Date.now(),get:(e=!1)=>e?Date.now()-n:n}}const mt=or(),cr=or(),pa=or();function ga(n){return n===_e.Playground?{headers:{[Rl]:"true"}}:{}}async function va(n,e,t,i,r=!1,s){try{return!s&&!sa(i)&&(s=await e.newChat(n.id,{persist:r},ga(i)),t.track("agent-chat",{event:"created",chatId:s.id,mode:i})),{chat:s,chatMode:(s==null?void 0:s.chat_mode)??i}}catch(c){throw Kl(c)==="InsufficientCreditsError"?new Error("InsufficientCreditsError"):new Error("Cannot create new chat")}}const Kl=n=>{try{const e=JSON.parse(n.message);return e==null?void 0:e.kind}catch{return"UnknownError"}};function Wl(n){return n&&n.length>0?n:[]}function Hl(n,e,t,i){const r=ar(n,`${e}/v2/agents/${t}`,i);return{async createStream(s){return r.post("/sessions",s)}}}const ya=(n,e)=>(t,i)=>n&&console.log(`[${e}] ${t}`,i??""),Jl={[ie.ChatAnswer]:Ke.Answer,[ie.ChatPartial]:Ke.Partial};function Gl(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 zl(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 $l(n){let e="",t=0;for(const i of n.values()){if(i&&i.type==="codec"&&i.mimeType.startsWith("video")&&(e=i.mimeType.split("/")[1]),i&&i.type==="candidate-pair"){const r=i.currentRoundTripTime,c=i.nominated===!0;r>0&&(c||t===0)&&(t=r)}if(i&&i.type==="inbound-rtp"&&i.kind==="video")return{codec:e,rtt:t,timestamp:i.timestamp,bytesReceived:i.bytesReceived,packetsReceived:i.packetsReceived,packetsLost:i.packetsLost,framesDropped:i.framesDropped,framesDecoded:i.framesDecoded,jitter:i.jitter,jitterBufferDelay:i.jitterBufferDelay,jitterBufferEmittedCount:i.jitterBufferEmittedCount,avgJitterDelayInInterval:i.jitterBufferDelay/i.jitterBufferEmittedCount,frameWidth:i.frameWidth,frameHeight:i.frameHeight,framesPerSecond:i.framesPerSecond,freezeCount:i.freezeCount,freezeDuration:i.totalFreezesDuration}}return{}}function ba(n,e,t){const i=n.map((o,d)=>d===0?t?{timestamp:o.timestamp,duration:0,rtt:o.rtt,bytesReceived:o.bytesReceived-t.bytesReceived,bitrate:(o.bytesReceived-t.bytesReceived)*8/(e/1e3),packetsReceived:o.packetsReceived-t.packetsReceived,packetsLost:o.packetsLost-t.packetsLost,framesDropped:o.framesDropped-t.framesDropped,framesDecoded:o.framesDecoded-t.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-t.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-t.jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-t.jitterBufferDelay)/(o.jitterBufferEmittedCount-t.jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-t.freezeCount,freezeDuration:o.freezeDuration-t.freezeDuration}:{timestamp:o.timestamp,rtt:o.rtt,duration:0,bytesReceived:o.bytesReceived,bitrate:o.bytesReceived*8/(e/1e3),packetsReceived:o.packetsReceived,packetsLost:o.packetsLost,framesDropped:o.framesDropped,framesDecoded:o.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount,avgJitterDelayInInterval:o.jitterBufferDelay/o.jitterBufferEmittedCount,framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount,freezeDuration:o.freezeDuration}:{timestamp:o.timestamp,duration:e*d/1e3,rtt:o.rtt,bytesReceived:o.bytesReceived-n[d-1].bytesReceived,bitrate:(o.bytesReceived-n[d-1].bytesReceived)*8/(e/1e3),packetsReceived:o.packetsReceived-n[d-1].packetsReceived,packetsLost:o.packetsLost-n[d-1].packetsLost,framesDropped:o.framesDropped-n[d-1].framesDropped,framesDecoded:o.framesDecoded-n[d-1].framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-n[d-1].jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-n[d-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-n[d-1].jitterBufferDelay)/(o.jitterBufferEmittedCount-n[d-1].jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-n[d-1].freezeCount,freezeDuration:o.freezeDuration-n[d-1].freezeDuration}),r=zl(i),s=r.reduce((o,d)=>o+(d.causes.includes("low fps")?1:0),0),c=i.filter(o=>!!o.avgJitterDelayInInterval).map(o=>o.avgJitterDelayInInterval),a=i.filter(o=>!!o.rtt).map(o=>o.rtt);return{webRTCStats:{anomalies:r,minRtt:Math.min(...a),avgRtt:ma(a),maxRtt:Math.max(...a),aggregateReport:Gl(n[0],n[n.length-1],s),minJitterDelayInInterval:Math.min(...c),maxJitterDelayInInterval:Math.max(...c),avgJitterDelayInInterval:ma(c)},codec:n[0].codec,resolution:`${n[0].frameWidth}x${n[0].frameHeight}`}}function ka(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 Pn=10;function Ql(n,e){let t=!1,i=!1,r=null,s=0,c=0,a={};async function o(){if(t){try{const d=await n();if(!d){r=setTimeout(o,Pn);return}const l=ka(d,"audio");if(!l){r=setTimeout(o,Pn);return}const u=l.totalAudioEnergy??0,h=l.totalSamplesReceived??0;if(!i){s=u,c=h,i=!0,r=setTimeout(o,Pn);return}const f=u-s,v=h-c;if(s=u,c=h,v>0&&f>0){t=!1,e(a);return}}catch{}t&&(r=setTimeout(o,Pn))}}return{arm(d={}){a=d,t=!0,i=!1,performance.now(),r!==null&&clearTimeout(r),r=setTimeout(o,Pn)},destroy(){t=!1,r!==null&&(clearTimeout(r),r=null)}}}const di=100,Yl=Math.max(Math.ceil(400/di),1),Xl=.25,Zl=.28;function eu(){let n=0,e,t,i=0;return r=>{const s=ka(r,"video");if(!s)return{isReceiving:!1,avgJitterDelayInInterval:i};const c=s.jitterBufferDelay,a=s.jitterBufferEmittedCount;if(t&&a>t){const l=c-e,u=a-t;i=l/u}e=c,t=a;const o=s.framesDecoded,d=o-n>0;return n=o,{isReceiving:d,avgJitterDelayInInterval:i,freezeCount:s.freezeCount}}}function Ta(n,e,t,i,r){let s=null,c=[],a,o=0,d=!1,l=it.Unknown,u=it.Unknown,h=0,f=0;const v=eu();async function g(){const S=await n();if(!S)return;const{isReceiving:k,avgJitterDelayInInterval:w,freezeCount:_}=v(S),y=$l(S);if(k)o=0,h=_-f,u=w<Xl?it.Strong:w>Zl&&h>1?it.Weak:l,u!==l&&(r==null||r(u),l=u,f+=h,h=0),d||(i==null||i(X.Start),a=c[c.length-1],c=[],d=!0),c.push(y);else if(d&&(o++,o>=Yl)){const b=ba(c,di,a);i==null||i(X.Stop,b),e()||t(),f=_,d=!1}}return{start:()=>{s||(s=setInterval(g,di))},stop:()=>{s&&(clearInterval(s),s=null)},getReport:()=>ba(c,di,a)}}const Sa=2e4;async function tu(){try{return await Promise.resolve().then(()=>qg)}catch{throw new Error("LiveKit client is required for this streaming manager. Please install it using: npm install livekit-client")}}const nu={excellent:it.Strong,good:it.Strong,poor:it.Weak,lost:it.Unknown,unknown:it.Unknown},In=JSON.stringify({kind:"InternalServerError",description:"Stream Error"});var dr=(n=>(n.Chat="lk.chat",n.Speak="did.speak",n.Interrupt="did.interrupt",n))(dr||{});function lr(n,e,t){var i,r;throw e("Failed to connect to LiveKit room:",n),(i=t.onConnectionStateChange)==null||i.call(t,de.Fail,"internal:init-error"),(r=t.onError)==null||r.call(t,n,{sessionId:""}),n}async function iu(n,e,t){var bl;const i=ya(t.debug||!1,"LiveKitStreamingManager"),{Room:r,RoomEvent:s,ConnectionState:c,Track:a}=await tu(),{callbacks:o,auth:d,baseURL:l,analytics:u}=t;let h=null,f=!1;const v=rt.Fluent;let g=null;const S={isPublishing:!1,publication:null},k={isPublishing:!1,publication:null};let w=null,_=null,y=null,b=!1;h=new r({adaptiveStream:!1,dynacast:!0});let T=null,N=Pe.Idle,F=!0;const M=Hl(d,l||Rn,n,o.onError);let D,U,H,ae=!0;try{const R=await M.createStream({transport:e.transport,chat_persist:e.chat_persist??!0}),{id:L,session_token:q,session_url:J,interrupt_enabled:ce}=R;(bl=o.onStreamCreated)==null||bl.call(o,{session_id:L,stream_id:L,agent_id:n}),D=L,U=q,H=J,ae=ce??!0,await h.prepareConnection(H,U)}catch(R){lr(R,i,o)}if(!H||!U||!D)return Promise.reject(new Error("Failed to initialize LiveKit stream"));h.on(s.ConnectionStateChanged,O).on(s.ConnectionQualityChanged,B).on(s.ParticipantConnected,V).on(s.ParticipantDisconnected,ne).on(s.TrackSubscribed,ve).on(s.TrackUnsubscribed,K).on(s.DataReceived,we).on(s.MediaDevicesError,nt).on(s.TranscriptionReceived,Ce).on(s.EncryptionError,Vs).on(s.TrackSubscriptionFailed,En);function Ce(R,L){var q;L!=null&&L.isLocal&&(mt.update(),N===Pe.Talking&&((q=o.onInterruptDetected)==null||q.call(o,{type:"audio"}),N=Pe.Idle))}try{await h.connect(H,U),i("LiveKit room joined successfully"),T=setTimeout(()=>{var R;i(`Track subscription timeout - no track subscribed within ${Sa/1e3} seconds after connect`),T=null,u.track("connectivity-error",{error:"Track subscription timeout",sessionId:D}),(R=o.onError)==null||R.call(o,new Error("Track subscription timeout"),{sessionId:D}),Hs("internal:track-subscription-timeout")},Sa)}catch(R){lr(R,i,o)}u.enrich({"stream-type":v});function O(R){var L,q,J,ce;switch(i("Connection state changed:",R),R){case c.Connecting:i("CALLBACK: onConnectionStateChange(Connecting)"),(L=o.onConnectionStateChange)==null||L.call(o,de.Connecting,"livekit:connecting");break;case c.Connected:i("LiveKit room connected successfully"),f=!0;break;case c.Disconnected:i("LiveKit room disconnected"),f=!1,b=!1,S.publication=null,k.publication=null,(q=o.onConnectionStateChange)==null||q.call(o,de.Disconnected,"livekit:disconnected");break;case c.Reconnecting:i("LiveKit room reconnecting..."),(J=o.onConnectionStateChange)==null||J.call(o,de.Connecting,"livekit:reconnecting");break;case c.SignalReconnecting:i("LiveKit room signal reconnecting..."),(ce=o.onConnectionStateChange)==null||ce.call(o,de.Connecting,"livekit:signal-reconnecting");break}}function B(R,L){var q;i("Connection quality:",R),L!=null&&L.isLocal&&((q=o.onConnectivityStateChange)==null||q.call(o,nu[R]))}function V(R){i("Participant connected:",R.identity)}function ne(R){i("Participant disconnected:",R.identity),Hs("livekit:participant-disconnected")}function ee(){var R;y!==X.Start&&(i("CALLBACK: onVideoStateChange(Start)"),y=X.Start,(R=o.onVideoStateChange)==null||R.call(o,X.Start))}function se(R){var L;y!==X.Stop&&(i("CALLBACK: onVideoStateChange(Stop)"),y=X.Stop,(L=o.onVideoStateChange)==null||L.call(o,X.Stop,R))}function ve(R,L,q){var ce,me,Fe;i(`Track subscribed: ${R.kind} from ${q.identity}`);const J=R.mediaStreamTrack;if(!J){i(`No mediaStreamTrack available for ${R.kind}`);return}g?(g.addTrack(J),i(`Added ${R.kind} track to shared MediaStream`)):(g=new MediaStream([J]),i(`Created shared MediaStream with ${R.kind} track`)),R.kind==="audio"&&(_=Ql(()=>R.getRTCStatsReport(),({sttLatency:Re,serviceLatency:ht})=>{var kl,Tl,Sl;const si=mt.get(!0);let ai=0;if(Re){const Cl=((Tl=(kl=w==null?void 0:w.getReport())==null?void 0:kl.webRTCStats)==null?void 0:Tl.avgRtt)??0;ai=Cl>0?Math.round(Cl*1e3):0}const wn=si>0?si+(Re??0)+ai:void 0,At=wn!==void 0&&ht!==void 0?wn-ht:void 0;(Sl=o.onFirstAudioDetected)==null||Sl.call(o,{latency:wn,networkLatency:At})})),R.kind==="video"&&((ce=o.onStreamReady)==null||ce.call(o),i("CALLBACK: onSrcObjectReady"),(me=o.onSrcObjectReady)==null||me.call(o,g),b||(b=!0,i("CALLBACK: onConnectionStateChange(Connected)"),(Fe=o.onConnectionStateChange)==null||Fe.call(o,de.Connected,"livekit:track-subscribed")),w=Ta(()=>R.getRTCStatsReport(),()=>f,Il,(Re,ht)=>{i(`Video state change: ${Re}`),Re===X.Start?(T&&(clearTimeout(T),T=null,i("Track subscription timeout cleared")),ee()):Re===X.Stop&&se(ht)}),w.start())}function K(R,L,q){i(`Track unsubscribed: ${R.kind} from ${q.identity}`),R.kind==="audio"&&(_==null||_.destroy(),_=null),R.kind==="video"&&(se(w==null?void 0:w.getReport()),w==null||w.stop(),w=null)}function W(R,L){var J;const q=Jl[R];q&&((J=o.onMessage)==null||J.call(o,q,{event:q,...L}))}function Z(R,L){var q,J,ce;if(R===ie.ToolCalling){N=Pe.ToolActive,(q=o.onAgentActivityStateChange)==null||q.call(o,Pe.ToolActive),(J=o.onToolEvent)==null||J.call(o,ie.ToolCalling,L);return}R===ie.ToolResult&&((ce=o.onToolEvent)==null||ce.call(o,ie.ToolResult,L))}function ue(R,L){var q,J,ce,me,Fe;if(F=((q=L.metadata)==null?void 0:q.interruptible)!==!1,(J=o.onInterruptibleChange)==null||J.call(o,F),R===ie.StreamVideoCreated){N=Pe.Talking,(ce=o.onAgentActivityStateChange)==null||ce.call(o,Pe.Talking),_==null||_.arm({sttLatency:(me=L==null?void 0:L.stt)==null?void 0:me.latency,serviceLatency:L==null?void 0:L.serviceLatency});return}F&&(N=Pe.Idle,(Fe=o.onAgentActivityStateChange)==null||Fe.call(o,Pe.Idle))}function Ue(R,L){var me,Fe,Re,ht;const q=((Fe=(me=w==null?void 0:w.getReport())==null?void 0:me.webRTCStats)==null?void 0:Fe.avgRtt)??0,J=q>0?Math.round(q/2*1e3):0,ce={...L,downstreamNetworkLatency:J};t.debug&&((Re=L==null?void 0:L.metadata)!=null&&Re.sentiment)&&(ce.sentiment={id:L.metadata.sentiment.id,name:L.metadata.sentiment.sentiment}),(ht=o.onMessage)==null||ht.call(o,R,ce),ue(R,L)}function ni(R,L){var q;(q=o.onMessage)==null||q.call(o,Ke.Transcribe,{event:Ke.Transcribe,...L}),queueMicrotask(()=>{var J;(J=o.onAgentActivityStateChange)==null||J.call(o,Pe.Loading)})}const tt={[ie.ChatAnswer]:W,[ie.ChatPartial]:W,[ie.ToolCalling]:Z,[ie.ToolResult]:Z,[ie.StreamVideoCreated]:Ue,[ie.StreamVideoDone]:Ue,[ie.StreamVideoError]:Ue,[ie.StreamVideoRejected]:Ue,[ie.ChatAudioTranscribed]:ni};function we(R,L,q,J){const ce=new TextDecoder().decode(R);try{const me=JSON.parse(ce),Fe=J||me.subject;if(i("Data received:",{subject:Fe,data:me}),!Fe)return;const Re=tt[Fe];Re==null||Re(Fe,me)}catch(me){i("Failed to parse data channel message:",me)}}function nt(R){var L;i("Media devices error:",R),(L=o.onError)==null||L.call(o,new Error(In),{sessionId:D})}function Vs(R){var L;i("Encryption error:",R),(L=o.onError)==null||L.call(o,new Error(In),{sessionId:D})}function En(R,L,q){i("Track subscription failed:",{trackSid:R,participant:L,reason:q})}function er(R,L,q){for(const[J,ce]of q)if(ce.source===L&&ce.track){const me=ce.track.mediaStreamTrack;if(me===R||(me==null?void 0:me.id)===R.id)return ce}return null}async function ii(R,L,q,J,ce,me){var si,ai,wn;if(!f||!h)throw i(`Room is not connected, cannot publish ${J} stream`),new Error("Room is not connected");if(R.isPublishing){i(`${J} publish already in progress, skipping`);return}const Fe=q(L);if(Fe.length===0)throw new Error(`No ${J} track found in the provided MediaStream`);const Re=Fe[0],ht=er(Re,J,ce());if(ht){i(`${J} track is already published, skipping`,{trackId:Re.id,publishedTrackId:(ai=(si=ht.track)==null?void 0:si.mediaStreamTrack)==null?void 0:ai.id}),R.publication=ht;return}if((wn=R.publication)!=null&&wn.track){const At=R.publication.track.mediaStreamTrack;At!==Re&&(At==null?void 0:At.id)!==Re.id&&(i(`Unpublishing existing ${J} track before publishing new one`),await me())}i(`Publishing ${J} track from provided MediaStream`,{trackId:Re.id}),R.isPublishing=!0;try{R.publication=await h.localParticipant.publishTrack(Re,{source:J}),i(`${J} track published successfully`,{trackSid:R.publication.trackSid})}catch(At){throw i(`Failed to publish ${J} track:`,At),At}finally{R.isPublishing=!1}}async function ri(R,L){if(!(!R.publication||!R.publication.track))try{h&&(await h.localParticipant.unpublishTrack(R.publication.track,!1),i(`${L} track unpublished`))}catch(q){i(`Error unpublishing ${L} track:`,q)}finally{R.publication=null}}async function Kg(R){return ii(S,R,L=>L.getAudioTracks(),a.Source.Microphone,()=>h.localParticipant.audioTrackPublications,qs)}async function qs(){return ri(S,"Microphone")}async function Wg(R){return ii(k,R,L=>L.getVideoTracks(),a.Source.Camera,()=>h.localParticipant.videoTrackPublications,Ks)}async function Ks(){return ri(k,"Camera")}function Hg(){g&&(g.getTracks().forEach(R=>R.stop()),g=null)}async function Ws(R,L){var q,J;if(!f||!h){i("Room is not connected for sending messages"),(q=o.onError)==null||q.call(o,new Error(In),{sessionId:D});return}try{await h.localParticipant.sendText(R,{topic:L}),i("Message sent successfully:",R)}catch(ce){i("Failed to send message:",ce),(J=o.onError)==null||J.call(o,new Error(In),{sessionId:D})}}async function Jg(R){var L;try{const J=JSON.parse(R).topic;return Ws("",J)}catch(q){i("Failed to send data channel message:",q),(L=o.onError)==null||L.call(o,new Error(In),{sessionId:D})}}function Gg(R){return Ws(R,"lk.chat")}async function Hs(R){var L,q;T&&(clearTimeout(T),T=null),_==null||_.destroy(),_=null,h&&((L=o.onConnectionStateChange)==null||L.call(o,de.Disconnecting,R),await Promise.all([qs(),Ks()]),await h.disconnect()),Hg(),f=!1,b=!1,(q=o.onAgentActivityStateChange)==null||q.call(o,Pe.Idle),N=Pe.Idle}return{speak(R){const L=typeof R=="string"?R:JSON.stringify(R);return Ws(L,"did.speak")},disconnect:()=>Hs("user:disconnect"),async reconnect(){var R,L;if((h==null?void 0:h.state)===c.Connected){i("Room is already connected");return}if(!h||!H||!U)throw i("Cannot reconnect: missing room, URL or token"),new Error("Cannot reconnect: session not available");i("Reconnecting to LiveKit room, state:",h.state),b=!1,(R=o.onConnectionStateChange)==null||R.call(o,de.Connecting,"user:reconnect");try{if(await h.connect(H,U),i("Room reconnected"),f=!0,h.remoteParticipants.size===0){if(i("Waiting for agent to join..."),!await new Promise(J=>{const ce=setTimeout(()=>{h==null||h.off(s.ParticipantConnected,me),J(!1)},5e3),me=()=>{clearTimeout(ce),h==null||h.off(s.ParticipantConnected,me),J(!0)};h==null||h.on(s.ParticipantConnected,me)}))throw i("Agent did not join within timeout"),await h.disconnect(),new Error("Agent did not rejoin the room");i("Agent joined, reconnection successful")}}catch(q){throw i("Failed to reconnect:",q),(L=o.onConnectionStateChange)==null||L.call(o,de.Fail,"user:reconnect-failed"),q}},sendDataChannelMessage:Jg,sendTextMessage:Gg,publishMicrophoneStream:Kg,unpublishMicrophoneStream:qs,publishCameraStream:Wg,unpublishCameraStream:Ks,registerRpcMethod(R,L){h==null||h.registerRpcMethod(R,L)},unregisterRpcMethod(R){h==null||h.unregisterRpcMethod(R)},sessionId:D,streamId:D,streamType:v,interruptAvailable:ae,isInterruptible:F}}const ru=Object.freeze(Object.defineProperty({__proto__:null,DataChannelTopic:dr,createLiveKitStreamingManager:iu,handleInitError:lr},Symbol.toStringTag,{value:"Module"}));function su(n,e,t){if(!n)throw new Error("Please connect to the agent first");if(!n.interruptAvailable)throw new Error("Interrupt is not enabled for this stream");if(e!==rt.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!t)throw new Error("No active video to interrupt")}async function au(n,e){const t={type:ie.StreamInterrupt,videoId:e,timestamp:Date.now()};n.sendDataChannelMessage(JSON.stringify(t))}async function ou(n){const e={topic:dr.Interrupt};n.sendDataChannelMessage(JSON.stringify(e))}function cu(n){return new Promise((e,t)=>{const{callbacks:i,host:r,auth:s,externalId:c}=n,{onMessage:a=null,onOpen:o=null,onClose:d=null,onError:l=null}=i||{},u=new WebSocket(`${r}?authorization=${encodeURIComponent(ha(s,c))}`);u.onmessage=a,u.onclose=d,u.onerror=h=>{console.error(h),l==null||l("Websocket failed to connect",h),t(h)},u.onopen=h=>{o==null||o(h),e(u)}})}async function du(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 cu(n)}catch(r){if(i===e)throw r;await ia(i*500)}return t}async function lu(n,e,t,i){const r=t!=null&&t.onMessage?[t.onMessage]:[],s=await du({auth:n,host:e,externalId:i,callbacks:{onError:c=>{var a;return(a=t.onError)==null?void 0:a.call(t,new Gs(c))},onMessage(c){const a=JSON.parse(c.data);r.forEach(o=>o(a.event,a))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:c=>r.push(c)}}function uu(n){if(n.answer!==void 0)return n.answer;let e=0,t="";for(;e in n;)t+=n[e++];return t}function hu(n,e,t){if(!n.content)return;const i=e.messages[e.messages.length-1];(i==null?void 0:i.role)==="assistant"&&!i.interrupted&&(i.interrupted=!0);const r={id:n.id||`user-${Date.now()}`,role:n.role,content:n.content,parts:_n(n.content),created_at:n.created_at||new Date().toISOString(),transcribed:!0};e.messages.push(r),t==null||t([...e.messages],"user")}function mu(n,e,t,i,r,s){if(n===Ke.Transcribe&&e.content){hu(e,i,r);return}if(!(n===Ke.Partial||n===Ke.Answer))return;const c=i.messages[i.messages.length-1],a=e.id&&(c==null?void 0:c.role)==="assistant"&&c.id!==e.id;let o;if((c==null?void 0:c.role)==="assistant"&&!a)o=c;else if(!c||c.transcribed&&c.role==="user"||a)a&&s(),o={id:e.id||`assistant-${Date.now()}`,role:e.role||"assistant",content:e.content||"",parts:[],created_at:e.created_at||new Date().toISOString()},i.messages.push(o);else return;const{content:d,sequence:l}=e;n===Ke.Partial?t[l]=d:t.answer=d;const u=uu(t);(o.content!==u||n===Ke.Answer)&&(o.content=u,o.parts=_n(u),r==null||r([...i.messages],n))}function fu(n,e,t,i,r){let s={};const c=()=>s={};let a="answer";const o=(d,l)=>{var u,h;l==="user"&&c(),a=l,(h=(u=t.callbacks).onNewMessage)==null||h.call(u,d,l)};return{clearQueue:c,onMessage:(d,l)=>{var u,h;if("content"in l){const f=d===ie.ChatAnswer?Ke.Answer:d===ie.ChatAudioTranscribed?Ke.Transcribe:d;mu(f,l,s,e,o,c),f===Ke.Answer&&n.track("agent-message-received",{content:l.content,messages:e.messages.length,mode:e.chatMode})}else{const f=ie,v=[f.StreamVideoDone,f.StreamVideoError,f.StreamVideoRejected],g=[f.StreamFailed,f.StreamVideoError,f.StreamVideoRejected],S=jl(l,i,{mode:e.chatMode});if(d=d,d===f.StreamVideoCreated&&(n.linkTrack("agent-video",S,f.StreamVideoCreated,["start"]),l.sentiment)){const k=e.messages[e.messages.length-1];if((k==null?void 0:k.role)==="assistant"){const w={...k,sentiment:l.sentiment};e.messages[e.messages.length-1]=w,o==null||o([...e.messages],a)}}if(v.includes(d)){const k=d.split("/")[1];g.includes(d)?n.track("agent-video",{...S,event:k}):n.linkTrack("agent-video",{...S,event:k},d,["done"])}g.includes(d)&&((h=(u=t.callbacks).onError)==null||h.call(u,new Error(`Stream failed with event ${d}`),{data:l})),l.event===f.StreamDone&&r()}}}}function pu(n,e,t,i){const r=ar(n,`${e}/agents/${t}`,i);return{createStream(s,c){return r.post("/streams",s,{signal:c})},startConnection(s,c,a,o){return r.post(`/streams/${s}/sdp`,{session_id:a,answer:c},{signal:o})},addIceCandidate(s,c,a,o){return r.post(`/streams/${s}/ice`,{session_id:a,...c},{signal:o})},sendStreamRequest(s,c,a){return r.post(`/streams/${s}`,{session_id:c,...a})},close(s,c){return r.delete(`/streams/${s}`,{session_id:c})}}}const gu=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function Ca(n){switch(n){case"connected":return de.Connected;case"checking":return de.Connecting;case"failed":return de.Fail;case"new":return de.New;case"closed":return de.Closed;case"disconnected":return de.Disconnected;case"completed":return de.Completed;default:return de.New}}const vu=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 yu({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 bu({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:r,log:s}){n===X.Start?(s("CALLBACK: onVideoStateChange(Start)"),t==null||t(X.Start)):n===X.Stop&&(s("CALLBACK: onVideoStateChange(Stop)"),t==null||t(X.Stop,r)),e===X.Start?i==null||i(Pe.Talking):e===X.Stop&&(i==null||i(Pe.Idle))}function Ea({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,streamType:r,report:s,log:c}){r===rt.Legacy?yu({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:s,log:c}):r===rt.Fluent&&bu({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:s,log:c})}async function ku(n,e,{debug:t=!1,callbacks:i,auth:r,baseURL:s=Rn,analytics:c},a){var ve;const o=ya(t,"WebRTCStreamingManager"),d=vu(o);let l=!1,u=!1,h=X.Stop,f=X.Stop;const{startConnection:v,sendStreamRequest:g,close:S,createStream:k,addIceCandidate:w}=pu(r,s,n,i.onError),{id:_,offer:y,ice_servers:b,session_id:T,fluent:N,interrupt_enabled:F}=await k(e,a);(ve=i.onStreamCreated)==null||ve.call(i,{stream_id:_,session_id:T,agent_id:n});const M=new gu({iceServers:b}),D=M.createDataChannel("JanusDataChannel");if(!T)throw new Error("Could not create session_id");const U=N?rt.Fluent:rt.Legacy;c.enrich({"stream-type":U});const H=e.stream_warmup&&!N,ae=()=>l,Ce=()=>{var K;l=!0,u&&(o("CALLBACK: onConnectionStateChange(Connected)"),(K=i.onConnectionStateChange)==null||K.call(i,de.Connected))},O=Ta(()=>M.getStats(),ae,Ce,(K,W)=>Ea({statsSignal:f=K,dataChannelSignal:U===rt.Legacy?h:void 0,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,report:W,streamType:U,log:o}),K=>{var W;return(W=i.onConnectivityStateChange)==null?void 0:W.call(i,K)});O.start(),M.onicecandidate=K=>{var W;o("peerConnection.onicecandidate",K);try{K.candidate&&K.candidate.sdpMid&&K.candidate.sdpMLineIndex!==null?w(_,{candidate:K.candidate.candidate,sdpMid:K.candidate.sdpMid,sdpMLineIndex:K.candidate.sdpMLineIndex},T,a):w(_,{candidate:null},T,a)}catch(Z){(W=i.onError)==null||W.call(i,Z,{streamId:_})}},D.onopen=()=>{u=!0,(!H||l)&&Ce()};const B=K=>{var W;(W=i.onVideoIdChange)==null||W.call(i,K)};function V(K,W){if(K===ie.StreamStarted&&typeof W=="object"&&"metadata"in W){const Z=W.metadata;B(Z.videoId)}K===ie.StreamDone&&B(null),h=K===ie.StreamStarted?X.Start:X.Stop,Ea({statsSignal:U===rt.Legacy?f:void 0,dataChannelSignal:h,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,streamType:U,log:o})}function ne(K,W){var ue;const Z=typeof W=="string"?W:W==null?void 0:W.metadata;Z&&c.enrich({streamMetadata:Z}),(ue=i.onStreamReady)==null||ue.call(i)}const ee={[ie.StreamStarted]:V,[ie.StreamDone]:V,[ie.StreamReady]:ne};D.onmessage=K=>{var ue;const{subject:W,data:Z}=d(K.data);(ue=ee[W])==null||ue.call(ee,W,Z)},M.oniceconnectionstatechange=()=>{var W;o("peerConnection.oniceconnectionstatechange => "+M.iceConnectionState);const K=Ca(M.iceConnectionState);K!==de.Connected&&((W=i.onConnectionStateChange)==null||W.call(i,K))},M.ontrack=K=>{var W;o("peerConnection.ontrack",K),o("CALLBACK: onSrcObjectReady"),(W=i.onSrcObjectReady)==null||W.call(i,K.streams[0])},await M.setRemoteDescription(y),o("set remote description OK");const se=await M.createAnswer();return o("create answer OK"),await M.setLocalDescription(se),o("set local description OK"),await v(_,se,T,a),o("start connection OK"),{speak(K){return g(_,T,K)},async disconnect(){var K;if(_){const W=Ca(M.iceConnectionState);if(M){if(W===de.New){O.stop();return}M.close(),M.oniceconnectionstatechange=null,M.onnegotiationneeded=null,M.onicecandidate=null,M.ontrack=null}try{W===de.Connected&&await S(_,T).catch(Z=>{})}catch(Z){o("Error on close stream connection",Z)}(K=i.onAgentActivityStateChange)==null||K.call(i,Pe.Idle),O.stop()}},sendDataChannelMessage(K){var W,Z;if(!l||D.readyState!=="open"){o("Data channel is not ready for sending messages"),(W=i.onError)==null||W.call(i,new Error("Data channel is not ready for sending messages"),{streamId:_});return}try{D.send(K)}catch(ue){o("Error sending data channel message",ue),(Z=i.onError)==null||Z.call(i,ue,{streamId:_})}},sessionId:T,streamId:_,streamType:U,interruptAvailable:F??!1,isInterruptible:!0}}var ur=(n=>(n.V1="v1",n.V2="v2",n))(ur||{});async function Tu(n,e,t,i){const r=n.id;switch(e.version){case"v1":{const{version:s,...c}=e;return ku(r,c,t,i)}case"v2":{const{version:s,...c}=e;switch(c.transport.provider){case ci.Livekit:const{createLiveKitStreamingManager:a}=await Promise.resolve().then(()=>ru);return a(r,c,t);default:throw new Error(`Unsupported transport provider: ${c.transport.provider}`)}}default:throw new Error(`Invalid stream version: ${e.version}`)}}const Su="cht";function Cu(){return{transport:{provider:ci.Livekit}}}function Eu(n){var r,s;const{streamOptions:e}=n??{},t=((r=n==null?void 0:n.mixpanelAdditionalProperties)==null?void 0:r.plan)!==void 0?{plan:(s=n.mixpanelAdditionalProperties)==null?void 0:s.plan}:void 0;return{...{output_resolution:e==null?void 0:e.outputResolution,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 wu(n,e){return nr(n.presenter.type)?{version:ur.V2,...Cu()}:{version:ur.V1,...Eu(e)}}function Ru(n,e,t){t.track("agent-connection-state-change",{state:n,...e&&{reason:e}})}function _u(n,e,t,i,r){r===rt.Fluent?Pu(n,e,t,i,r):Iu(n,e,t,i,r)}function Pu(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",is_greenscreen:e.presenter.type==="clip"&&e.presenter.is_greenscreen,background:e.presenter.type==="clip"&&e.presenter.background,"stream-type":r,...t})}function wa(n,e,t,i,r){n===X.Start?t.linkTrack("agent-video",{event:"start",...r,"stream-type":i},"start",[ie.StreamVideoCreated]):n===X.Stop&&t.linkTrack("agent-video",{event:"stop",is_greenscreen:e.presenter.type==="clip"&&e.presenter.is_greenscreen,background:e.presenter.type==="clip"&&e.presenter.background,"stream-type":i},"done",[ie.StreamVideoDone])}function Iu(n,e,t,i,r){n===X.Start?i.linkTrack("agent-video",{event:"start",latency:mt.get(!0),"stream-type":r},"start",[ie.StreamVideoCreated]):n===X.Stop&&i.linkTrack("agent-video",{event:"stop",is_greenscreen:e.presenter.type==="clip"&&e.presenter.is_greenscreen,background:e.presenter.type==="clip"&&e.presenter.background,"stream-type":r,...t},"done",[ie.StreamVideoDone])}function Ra(n,e,t,i){return mt.reset(),pa.update(),new Promise(async(r,s)=>{try{let c,a=!1;const o=wu(n,e);t.enrich({"stream-version":o.version.toString()});let d=null;const l=n.presenter.type==="expressive";c=await Tu(n,o,{...e,analytics:t,callbacks:{...e.callbacks,onConnectionStateChange:(u,h)=>{var f,v;(v=(f=e.callbacks).onConnectionStateChange)==null||v.call(f,u),Ru(u,h,t),u===de.Connected&&(c?r(c):a=!0)},onVideoStateChange:(u,h)=>{var f,v;(v=(f=e.callbacks).onVideoStateChange)==null||v.call(f,u),_u(u,n,h,t,c.streamType)},onAgentActivityStateChange:u=>{var h,f;(f=(h=e.callbacks).onAgentActivityStateChange)==null||f.call(h,u),u===Pe.Talking?(cr.update(),d=v=>{wa(X.Start,n,t,c.streamType,v),d=null},l||d({latency:mt.get(!0)})):(cr.reset(),d=null,wa(X.Stop,n,t,c.streamType))},onFirstAudioDetected:u=>{d==null||d(u)},onStreamReady:()=>{const u=pa.get(!0);t.track("agent-chat",{event:"ready",latency:u})}}},i),a&&r(c)}catch(c){s(c)}})}async function Mu(n,e,t,i,r){var l,u,h,f;const s=async()=>{if(nr(n.presenter.type)){const v=await Ra(n,e,i),g=`${Su}_${v.sessionId}`,S=new Date().toISOString();return{chatResult:{chatMode:_e.Functional,chat:{id:g,agent_id:n.id,owner_id:n.owner_id??"",created:S,modified:S,agent_id__created_at:S,agent_id__modified_at:S,chat_mode:_e.Functional,messages:[]}},streamingManager:v}}else{const v=new AbortController,g=v.signal;let S;try{const k=va(n,t,i,e.mode,e.persistentChat,r),w=Ra(n,e,i,g).then(b=>(S=b,b)),[_,y]=await Promise.all([k,w]);return{chatResult:_,streamingManager:y}}catch(k){throw v.abort(),S&&await S.disconnect().catch(()=>{}),k}}},{chatResult:c,streamingManager:a}=await s(),{chat:o,chatMode:d}=c;return d&&e.mode!==void 0&&d!==e.mode&&(e.mode=d,(u=(l=e.callbacks).onModeChange)==null||u.call(l,d),d!==_e.Functional)?((f=(h=e.callbacks).onError)==null||f.call(h,new Js(d)),a==null||a.disconnect(),{chat:o}):{chat:o,streamingManager:a}}async function Ou(n,e){var U,H,ae,Ce;let t=!0,i=null;const r=e.mixpanelKey||Pl,s=e.wsURL||_l,c=e.baseURL||Rn,a=e.mode||_e.Functional,o={messages:[],chatMode:a},d=ql({token:r,agentId:n,isEnabled:e.enableAnalitics,externalId:e.externalId,mixpanelAdditionalProperties:e.mixpanelAdditionalProperties}),l=Date.now();fa(()=>{d.track("agent-sdk",{event:"init"},l)});const u=Nl(e.auth,c,e.callbacks.onError,e.externalId),h=await u.getById(n);e.debug=e.debug||((U=h==null?void 0:h.advanced_settings)==null?void 0:U.ui_debug_mode);const f=nr(h.presenter.type);d.enrich(Fl(h));const{onMessage:v,clearQueue:g}=fu(d,o,e,h,()=>{var O,B,V;(O=o.socketManager)==null||O.disconnect(),(V=(B=e.callbacks).onConnectionStateChange)==null||V.call(B,de.Disconnected)});o.messages=Wl(e.initialMessages),(ae=(H=e.callbacks).onNewMessage)==null||ae.call(H,[...o.messages],"answer");const S=O=>{i=O},k=({type:O})=>{var V,ne,ee,se,ve;if(!((V=o.streamingManager)!=null&&V.interruptAvailable)||!((ne=o.streamingManager)!=null&&ne.isInterruptible))return;const B=o.messages[o.messages.length-1];d.track("agent-video-interrupt",{type:O||"click",video_duration_to_interrupt:cr.get(!0),message_duration_to_interrupt:mt.get(!0)}),B.interrupted=!0,(se=(ee=e.callbacks).onNewMessage)==null||se.call(ee,[...o.messages],"answer"),f?ou(o.streamingManager):(su(o.streamingManager,(ve=o.streamingManager)==null?void 0:ve.streamType,i),au(o.streamingManager,i))},w=new Map;function _(O){return async B=>{const V=w.get(O);if(!V)throw new Error(`No handler registered for client tool: ${O}`);try{const ne=JSON.parse(B.payload);return await V(ne)}catch(ne){throw new Error(`Client tool "${O}" failed: ${ne.message}`)}}}function y(){var O,B,V,ne;for(const[ee]of w)(B=(O=o.streamingManager)==null?void 0:O.unregisterRpcMethod)==null||B.call(O,ee),(ne=(V=o.streamingManager)==null?void 0:V.registerRpcMethod)==null||ne.call(V,ee,_(ee))}function b(O,B){var ne,ee;const V=!w.has(O);w.set(O,B),V&&((ee=(ne=o.streamingManager)==null?void 0:ne.registerRpcMethod)==null||ee.call(ne,O,_(O)))}function T(O){var B,V;w.delete(O),(V=(B=o.streamingManager)==null?void 0:B.unregisterRpcMethod)==null||V.call(B,O)}const N=Date.now();fa(()=>{d.track("agent-sdk",{event:"loaded",...Ul(h)},N)});async function F(O){var ve,K,W,Z,ue,Ue,ni;(K=(ve=e.callbacks).onConnectionStateChange)==null||K.call(ve,de.Connecting),mt.reset(),O&&!t&&(delete o.chat,(Z=(W=e.callbacks).onNewMessage)==null||Z.call(W,[...o.messages],"answer"));const B=a===_e.DirectPlayback||f?Promise.resolve(void 0):lu(e.auth,s,{onMessage:v,onError:e.callbacks.onError},e.externalId),V=rr(()=>Mu(h,{...e,mode:a,callbacks:{...e.callbacks,onVideoIdChange:S,onMessage:v,onInterruptDetected:k}},u,d,o.chat),{limit:3,timeout:wl,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:tt=>(tt==null?void 0:tt.message)!=="Could not connect"&&tt.status!==429&&(tt==null?void 0:tt.message)!=="InsufficientCreditsError",delayMs:1e3}).catch(tt=>{var we,nt;throw D(_e.Maintenance),(nt=(we=e.callbacks).onConnectionStateChange)==null||nt.call(we,de.Fail),tt}),[ne,{streamingManager:ee,chat:se}]=await Promise.all([B,V]);se&&se.id!==((ue=o.chat)==null?void 0:ue.id)&&((ni=(Ue=e.callbacks).onNewChat)==null||ni.call(Ue,se.id)),o.streamingManager=ee,o.socketManager=ne,o.chat=se,y(),t=!1,d.enrich({chatId:se==null?void 0:se.id,streamId:ee==null?void 0:ee.streamId,mode:o.chatMode}),D((se==null?void 0:se.chat_mode)??a)}async function M(){var O,B,V,ne;(O=o.socketManager)==null||O.disconnect(),await((B=o.streamingManager)==null?void 0:B.disconnect()),delete o.streamingManager,delete o.socketManager,(ne=(V=e.callbacks).onConnectionStateChange)==null||ne.call(V,de.Disconnected)}async function D(O){var B,V;O!==o.chatMode&&(d.track("agent-mode-change",{mode:O}),o.chatMode=O,o.chatMode!==_e.Functional&&await M(),(V=(B=e.callbacks).onModeChange)==null||V.call(B,O))}return{agent:h,getStreamType:()=>{var O;return(O=o.streamingManager)==null?void 0:O.streamType},getIsInterruptAvailable:()=>{var O;return((O=o.streamingManager)==null?void 0:O.interruptAvailable)??!1},starterMessages:((Ce=h.knowledge)==null?void 0:Ce.starter_message)||[],getSTTToken:()=>u.getSTTToken(h.id),changeMode:D,enrichAnalytics:d.enrich,async connect(){await F(!0),d.track("agent-chat",{event:"connect",mode:o.chatMode})},async reconnect(){const O=o.streamingManager;if(f&&(O!=null&&O.reconnect)){try{await O.reconnect(),d.track("agent-chat",{event:"reconnect",mode:o.chatMode})}catch{await M(),await F(!1)}return}await M(),await F(!1),d.track("agent-chat",{event:"reconnect",mode:o.chatMode})},async disconnect(){await M(),d.track("agent-chat",{event:"disconnect",mode:o.chatMode})},async publishMicrophoneStream(O){var B;if(!((B=o.streamingManager)!=null&&B.publishMicrophoneStream))throw new Error("publishMicrophoneStream is not available for this streaming manager");return o.streamingManager.publishMicrophoneStream(O)},async unpublishMicrophoneStream(){var O;if((O=o.streamingManager)!=null&&O.unpublishMicrophoneStream)return o.streamingManager.unpublishMicrophoneStream()},async publishCameraStream(O){var B;if(!((B=o.streamingManager)!=null&&B.publishCameraStream))throw new Error("publishCameraStream is not available for this streaming manager");return o.streamingManager.publishCameraStream(O)},async unpublishCameraStream(){var O;if((O=o.streamingManager)!=null&&O.unpublishCameraStream)return o.streamingManager.unpublishCameraStream()},async chat(O){var ee,se,ve,K,W;const B=()=>{if(sa(a))throw new Ht(`${a} is enabled, chat is disabled`);if(O.length>=800)throw new Ht("Message cannot be more than 800 characters");if(O.length===0)throw new Ht("Message cannot be empty");if(o.chatMode===_e.Maintenance)throw new Ht("Chat is in maintenance mode");if(![_e.TextOnly,_e.Playground].includes(o.chatMode)){if(!o.streamingManager)throw new Ht("Streaming manager is not initialized");if(!o.chat)throw new Ht("Chat is not initialized")}},V=async()=>{var Z,ue;if(!o.chat){const Ue=await va(h,u,d,o.chatMode,e.persistentChat);if(!Ue.chat)throw new Wt(o.chatMode,!!e.persistentChat);o.chat=Ue.chat,(ue=(Z=e.callbacks).onNewChat)==null||ue.call(Z,o.chat.id)}return o.chat.id},ne=async(Z,ue)=>{const Ue=o.chatMode===_e.Playground;return rr(f&&!Ue?async()=>{var we,nt;return await((nt=(we=o.streamingManager)==null?void 0:we.sendTextMessage)==null?void 0:nt.call(we,O)),Promise.resolve({})}:async()=>{var we,nt;return u.chat(h.id,ue,{chatMode:o.chatMode,streamId:(we=o.streamingManager)==null?void 0:we.streamId,sessionId:(nt=o.streamingManager)==null?void 0:nt.sessionId,messages:Z.map(({matches:Vs,...En})=>En)},{...ga(o.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:we=>{var En,er,ii,ri;const nt=(En=we==null?void 0:we.message)==null?void 0:En.includes("missing or invalid session_id");return!((er=we==null?void 0:we.message)==null?void 0:er.includes("Stream Error"))&&!nt?((ri=(ii=e.callbacks).onError)==null||ri.call(ii,we),!1):!0},onRetry:async()=>{await M(),await F(!1)}})};try{g(),B(),o.messages.push({id:an(),role:"user",content:O,parts:_n(O),created_at:new Date(mt.update()).toISOString()}),(se=(ee=e.callbacks).onNewMessage)==null||se.call(ee,[...o.messages],"user");const Z=await V(),ue=await ne([...o.messages],Z);return o.messages.push({id:an(),role:"assistant",content:ue.result||"",parts:_n(ue.result||""),created_at:new Date().toISOString(),context:ue.context,matches:ue.matches}),d.track("agent-message-send",{event:"success",messages:o.messages.length+1}),ue.result&&((K=(ve=e.callbacks).onNewMessage)==null||K.call(ve,[...o.messages],"answer"),d.track("agent-message-received",{latency:mt.get(!0),messages:o.messages.length})),ue}catch(Z){throw((W=o.messages[o.messages.length-1])==null?void 0:W.role)==="assistant"&&o.messages.pop(),d.track("agent-message-send",{event:"error",messages:o.messages.length}),Z}},rate(O,B,V){var se,ve,K,W;const ne=o.messages.find(Z=>Z.id===O);if(o.chat){if(!ne)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const ee=((se=ne.matches)==null?void 0:se.map(Z=>[Z.document_id,Z.id]))??[];return d.track("agent-rate",{event:V?"update":"create",thumb:B===1?"up":"down",knowledge_id:((ve=h.knowledge)==null?void 0:ve.id)??"",matches:ee,score:B}),V?u.updateRating(h.id,o.chat.id,V,{knowledge_id:((K=h.knowledge)==null?void 0:K.id)??"",message_id:O,matches:ee,score:B}):u.createRating(h.id,o.chat.id,{knowledge_id:((W=h.knowledge)==null?void 0:W.id)??"",message_id:O,matches:ee,score:B})},deleteRate(O){if(!o.chat)throw new Error("Chat is not initialized");return d.track("agent-rate-delete",{type:"text"}),u.deleteRating(h.id,o.chat.id,O)},async speak(O){var ee,se,ve;function B(){if(typeof O=="string"){if(!h.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:h.presenter.voice,input:O,ssml:!1}}if(O.type==="text"&&!O.provider){if(!h.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:h.presenter.voice,input:O.input,ssml:O.ssml}}return O}const V=B();if(d.track("agent-speak",V),mt.update(),o.messages&&V.type==="text"&&(o.messages.push({id:an(),role:"assistant",content:V.input,parts:_n(V.input),created_at:new Date().toISOString()}),(se=(ee=e.callbacks).onNewMessage)==null||se.call(ee,[...o.messages],"answer")),Dl(o.chatMode))return{duration:0,video_id:"",status:"success"};if(!o.streamingManager)throw new Error("Please connect to the agent first");return o.streamingManager.speak({script:V,metadata:{chat_id:(ve=o.chat)==null?void 0:ve.id,agent_id:h.id}})},interrupt:k,registerClientTool:b,unregisterClientTool:T}}function Du(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 Au=Object.defineProperty,xu=(n,e,t)=>e in n?Au(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,_a=(n,e,t)=>xu(n,typeof e!="symbol"?e+"":e,t);class De{constructor(){_a(this,"_locking"),_a(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 ye(n,e){if(!n)throw new Error(e)}const Lu=34028234663852886e22,Nu=-34028234663852886e22,Uu=4294967295,Fu=2147483647,Bu=-2147483648;function li(n){if(typeof n!="number")throw new Error("invalid int 32: "+typeof n);if(!Number.isInteger(n)||n>Fu||n<Bu)throw new Error("invalid int 32: "+n)}function hr(n){if(typeof n!="number")throw new Error("invalid uint 32: "+typeof n);if(!Number.isInteger(n)||n>Uu||n<0)throw new Error("invalid uint 32: "+n)}function Pa(n){if(typeof n!="number")throw new Error("invalid float 32: "+typeof n);if(Number.isFinite(n)&&(n>Lu||n<Nu))throw new Error("invalid float 32: "+n)}const Ia=Symbol("@bufbuild/protobuf/enum-type");function ju(n){const e=n[Ia];return ye(e,"missing enum type on enum object"),e}function Ma(n,e,t,i){n[Ia]=Oa(e,t.map(r=>({no:r.no,name:r.name,localName:n[r.no]})))}function Oa(n,e,t){const i=Object.create(null),r=Object.create(null),s=[];for(const c of e){const a=Da(c);s.push(a),i[c.name]=a,r[c.no]=a}return{typeName:n,values:s,findName(c){return i[c]},findNumber(c){return r[c]}}}function Vu(n,e,t){const i={};for(const r of e){const s=Da(r);i[s.localName]=s.no,i[s.no]=s.localName}return Ma(i,n,e),i}function Da(n){return"localName"in n?n:Object.assign(Object.assign({},n),{localName:n.name})}class mr{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 qu(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),c={[s]:function(a){n.util.initFields(this),n.util.initPartial(a,this)}}[s];return Object.setPrototypeOf(c.prototype,new mr),Object.assign(c,{runtime:n,typeName:e,fields:n.util.newFieldList(t),fromBinary(a,o){return new c().fromBinary(a,o)},fromJson(a,o){return new c().fromJson(a,o)},fromJsonString(a,o){return new c().fromJsonString(a,o)},equals(a,o){return n.util.equals(c,a,o)}}),c}function Ku(){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))return this.assertBounds(),[n,e]}let t=this.buf[this.pos++];if(n|=(t&15)<<28,e=(t&112)>>4,!(t&128))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))return this.assertBounds(),[n,e]}throw new Error("invalid varint")}function fr(n,e,t){for(let s=0;s<28;s=s+7){const c=n>>>s,a=!(!(c>>>7)&&e==0),o=(a?c|128:c)&255;if(t.push(o),!a)return}const i=n>>>28&15|(e&7)<<4,r=!!(e>>3);if(t.push((r?i|128:i)&255),!!r){for(let s=3;s<31;s=s+7){const c=e>>>s,a=!!(c>>>7),o=(a?c|128:c)&255;if(t.push(o),!a)return}t.push(e>>>31&1)}}const ui=4294967296;function Aa(n){const e=n[0]==="-";e&&(n=n.slice(1));const t=1e6;let i=0,r=0;function s(c,a){const o=Number(n.slice(c,a));r*=t,i=i*t+o,i>=ui&&(r=r+(i/ui|0),i=i%ui)}return s(-24,-18),s(-18,-12),s(-12,-6),s(-6),e?La(i,r):pr(i,r)}function Wu(n,e){let t=pr(n,e);const i=t.hi&2147483648;i&&(t=La(t.lo,t.hi));const r=xa(t.lo,t.hi);return i?"-"+r:r}function xa(n,e){if({lo:n,hi:e}=Hu(n,e),e<=2097151)return String(ui*e+n);const t=n&16777215,i=(n>>>24|e<<8)&16777215,r=e>>16&65535;let s=t+i*6777216+r*6710656,c=i+r*8147497,a=r*2;const o=1e7;return s>=o&&(c+=Math.floor(s/o),s%=o),c>=o&&(a+=Math.floor(c/o),c%=o),a.toString()+Na(c)+Na(s)}function Hu(n,e){return{lo:n>>>0,hi:e>>>0}}function pr(n,e){return{lo:n|0,hi:e|0}}function La(n,e){return e=~e,n?n=~n+1:e+=1,pr(n,e)}const Na=n=>{const e=String(n);return"0000000".slice(e.length)+e};function Ua(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 Ju(){let n=this.buf[this.pos++],e=n&127;if(!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<7,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<14,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<21,!(n&128))return this.assertBounds(),e;n=this.buf[this.pos++],e|=(n&15)<<28;for(let t=5;n&128&&t<10;t++)n=this.buf[this.pos++];if(n&128)throw new Error("invalid varint");return this.assertBounds(),e>>>0}function Gu(){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"),c=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(o){const d=typeof o=="bigint"?o:BigInt(o);if(d>s||d<r)throw new Error("int64 invalid: ".concat(o));return d},uParse(o){const d=typeof o=="bigint"?o:BigInt(o);if(d>a||d<c)throw new Error("uint64 invalid: ".concat(o));return d},enc(o){return n.setBigInt64(0,this.parse(o),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},uEnc(o){return n.setBigInt64(0,this.uParse(o),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},dec(o,d){return n.setInt32(0,o,!0),n.setInt32(4,d,!0),n.getBigInt64(0,!0)},uDec(o,d){return n.setInt32(0,o,!0),n.setInt32(4,d,!0),n.getBigUint64(0,!0)}}}const t=r=>ye(/^-?[0-9]+$/.test(r),"int64 invalid: ".concat(r)),i=r=>ye(/^[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),Aa(r)},uEnc(r){return typeof r!="string"&&(r=r.toString()),i(r),Aa(r)},dec(r,s){return Wu(r,s)},uDec(r,s){return xa(r,s)}}}const fe=Gu();var E;(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"})(E||(E={}));var xt;(function(n){n[n.BIGINT=0]="BIGINT",n[n.STRING=1]="STRING"})(xt||(xt={}));function Lt(n,e,t){if(e===t)return!0;if(n==E.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 E.UINT64:case E.FIXED64:case E.INT64:case E.SFIXED64:case E.SINT64:return e==t}return!1}function on(n,e){switch(n){case E.BOOL:return!1;case E.UINT64:case E.FIXED64:case E.INT64:case E.SFIXED64:case E.SINT64:return e==0?fe.zero:"0";case E.DOUBLE:case E.FLOAT:return 0;case E.BYTES:return new Uint8Array(0);case E.STRING:return"";default:return 0}}function Fa(n,e){switch(n){case E.BOOL:return e===!1;case E.STRING:return e==="";case E.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}var Te;(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"})(Te||(Te={}));class zu{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(hr(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return li(e),Ua(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){Pa(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){hr(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){li(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return li(e),e=(e<<1^e>>31)>>>0,Ua(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),r=fe.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=fe.uEnc(e);return i.setInt32(0,r.lo,!0),i.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=fe.enc(e);return fr(t.lo,t.hi,this.buf),this}sint64(e){let t=fe.enc(e),i=t.hi>>31,r=t.lo<<1^i,s=(t.hi<<1|t.lo>>>31)^i;return fr(r,s,this.buf),this}uint64(e){let t=fe.uEnc(e);return fr(t.lo,t.hi,this.buf),this}}class $u{constructor(e,t){this.varint64=Ku,this.uint32=Ju,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 Te.Varint:for(;this.buf[this.pos++]&128;);break;case Te.Bit64:this.pos+=4;case Te.Bit32:this.pos+=4;break;case Te.LengthDelimited:let r=this.uint32();this.pos+=r;break;case Te.StartGroup:for(;;){const[s,c]=this.tag();if(c===Te.EndGroup){if(t!==void 0&&s!==t)throw new Error("invalid end group tag");break}this.skip(c,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 fe.dec(...this.varint64())}uint64(){return fe.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),i=-(e&1);return e=(e>>>1|(t&1)<<31)^i,t=t>>>1^i,fe.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 fe.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return fe.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 Qu(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 Ba(n){const e=n.field.localName,t=Object.create(null);return t[e]=Yu(n),[t,()=>t[e]]}function Yu(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 on(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 Xu(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 Ct="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),hi=[];for(let n=0;n<Ct.length;n++)hi[Ct[n].charCodeAt(0)]=n;hi[45]=Ct.indexOf("+"),hi[95]=Ct.indexOf("/");const ja={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,c=0;for(let a=0;a<n.length;a++){if(s=hi[n.charCodeAt(a)],s===void 0)switch(n[a]){case"=":r=0;case`
1
+ (function($,xe){typeof exports=="object"&&typeof module<"u"?xe(exports):typeof define=="function"&&define.amd?define(["exports"],xe):($=typeof globalThis<"u"?globalThis:$||self,xe($.index={}))})(this,function($){"use strict";var zg=Object.defineProperty;var $g=($,xe,Wt)=>xe in $?zg($,xe,{enumerable:!0,configurable:!0,writable:!0,value:Wt}):$[xe]=Wt;var oi=($,xe,Wt)=>$g($,typeof xe!="symbol"?xe+"":xe,Wt);class xe extends Error{constructor({kind:t,description:i,error:r}){super(JSON.stringify({kind:t,description:i}));oi(this,"kind");oi(this,"description");oi(this,"error");this.kind=t,this.description=i,this.error=r}}class Wt extends xe{constructor(e,t){super({kind:"ChatCreationFailed",description:`Failed to create ${t?"persistent":""} chat, mode: ${e}`})}}class Js extends xe{constructor(e){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${e}`})}}class Ht extends xe{constructor(t,i){super({kind:"ValidationError",description:t});oi(this,"key");this.key=i}}class Gs extends xe{constructor(e){super({kind:"WSError",description:e})}}var zs=(n=>(n.TRIAL="trial",n.BASIC="basic",n.ENTERPRISE="enterprise",n.LITE="lite",n.ADVANCED="advanced",n))(zs||{}),$s=(n=>(n.TRIAL="deid-trial",n.PRO="deid-pro",n.ENTERPRISE="deid-enterprise",n.LITE="deid-lite",n.ADVANCED="deid-advanced",n.BUILD="deid-api-build",n.LAUNCH="deid-api-launch",n.SCALE="deid-api-scale",n))($s||{}),Qs=(n=>(n.Created="created",n.Started="started",n.Done="done",n.Error="error",n.Rejected="rejected",n.Ready="ready",n))(Qs||{}),Ys=(n=>(n.Unrated="Unrated",n.Positive="Positive",n.Negative="Negative",n))(Ys||{}),_e=(n=>(n.Functional="Functional",n.TextOnly="TextOnly",n.Maintenance="Maintenance",n.Playground="Playground",n.DirectPlayback="DirectPlayback",n.Off="Off",n))(_e||{}),Ke=(n=>(n.Embed="embed",n.Query="query",n.Partial="partial",n.Answer="answer",n.Transcribe="transcribe",n.Complete="done",n))(Ke||{}),Xs=(n=>(n.KnowledgeProcessing="knowledge/processing",n.KnowledgeIndexing="knowledge/indexing",n.KnowledgeFailed="knowledge/error",n.KnowledgeDone="knowledge/done",n))(Xs||{}),Zs=(n=>(n.Knowledge="knowledge",n.Document="document",n.Record="record",n))(Zs||{}),ea=(n=>(n.Pdf="pdf",n.Text="text",n.Html="html",n.Word="word",n.Json="json",n.Markdown="markdown",n.Csv="csv",n.Excel="excel",n.Powerpoint="powerpoint",n.Archive="archive",n.Image="image",n.Audio="audio",n.Video="video",n))(ea||{}),tr=(n=>(n.Clip="clip",n.Talk="talk",n.Expressive="expressive",n))(tr||{});const El=n=>{switch(n){case"clip":return"clip";case"talk":return"talk";case"expressive":return"expressive";default:throw new Error(`Unknown video type: ${n}`)}};var X=(n=>(n.Start="START",n.Stop="STOP",n))(X||{}),it=(n=>(n.Strong="STRONG",n.Weak="WEAK",n.Unknown="UNKNOWN",n))(it||{}),Pe=(n=>(n.Idle="IDLE",n.Loading="LOADING",n.Talking="TALKING",n.ToolActive="TOOL_ACTIVE",n))(Pe||{}),ie=(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.StreamCreated="stream/created",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.ToolCalling="tool/calling",n.ToolResult="tool/result",n))(ie||{}),de=(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))(de||{}),rt=(n=>(n.Legacy="legacy",n.Fluent="fluent",n))(rt||{}),ci=(n=>(n.Livekit="livekit",n))(ci||{}),ta=(n=>(n.Amazon="amazon",n.AzureOpenAi="azure-openai",n.Microsoft="microsoft",n.Afflorithmics="afflorithmics",n.Elevenlabs="elevenlabs",n))(ta||{}),na=(n=>(n.Public="public",n.Premium="premium",n.Private="private",n))(na||{});const wl=45*1e3,Rl="X-Playground-Chat",Rn="https://api.d-id.com",_l="wss://notifications.d-id.com",Pl="79f81a83a67430be2bc0fd61042b8faa",Il=(...n)=>{},ia=n=>new Promise(e=>setTimeout(e,n)),an=(n=16)=>{const e=new Uint8Array(n);return window.crypto.getRandomValues(e),Array.from(e,t=>t.toString(16).padStart(2,"0")).join("").slice(0,13)},ra=n=>n.type==="clip"&&n.presenter_id.startsWith("v2_")?"clip_v2":n.type,Ml=n=>{switch(n.type){case"expressive":return"v4";case"clip":return"v3-pro";case"talk":return"v2"}},Ol=n=>n.type==="talk"?n.source_url:n.presenter_id,nr=n=>n===tr.Expressive,Dl=n=>[_e.TextOnly,_e.Playground,_e.Maintenance].includes(n),sa=n=>n&&[_e.DirectPlayback,_e.Off].includes(n),aa=/\[!\[([^\[\]]*)\]\(([^)\s]+)\)\]\(([^)\s]+)\)/g,oa=/!\[([^\[\]]*)\]\(([^)\s]+)\)/g,ca=new RegExp("(?<!!)\\[([^\\[\\]]+)\\]\\(([^)\\s]+)\\)","g"),da=/<a\s+href="([^"]*)"[^>]*?>([^<]*)<\/a>/gi;function la(n){if(n.length===0)return[];const e=[];let t;for(aa.lastIndex=0;(t=aa.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(oa.lastIndex=0;(t=oa.exec(n))!==null;)if(!e.some(c=>t.index>=c.index&&t.index<c.index+c.length)){const c=t[2],a={type:"image",src:c,alt:t[1]};c.toLowerCase().endsWith(".gif")&&(a.mimeType="image/gif"),e.push({index:t.index,length:t[0].length,part:a})}for(ca.lastIndex=0;(t=ca.exec(n))!==null;)e.some(c=>t.index>=c.index&&t.index<c.index+c.length)||e.push({index:t.index,length:t[0].length,part:{type:"link",href:t[2],label:t[1]}});for(da.lastIndex=0;(t=da.exec(n))!==null;)e.some(c=>t.index>=c.index&&t.index<c.index+c.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,c)=>s.index-c.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 ua="",ir=[];function _n(n){return n===ua||(ua=n,ir=la(n)),ir}function Al(n,e){let t;return{promise:new Promise((r,s)=>{t=setTimeout(()=>s(new Error(e)),n)}),clear:()=>clearTimeout(t)}}async function rr(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:c}=Al(t.timeout,t.timeoutErrorMessage),a=n().finally(c);return await Promise.race([a,s])}catch(s){if(i=s,!t.shouldRetryFn(s)||r>=t.limit)throw s;await ia(t.delayMs),t.onRetry(s)}throw i}function sr(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=an();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let xl=an();function ha(n,e){if(n.type==="bearer")return`Bearer ${n.token}`;if(n.type==="basic")return`Basic ${"token"in n?n.token:btoa(`${n.username}:${n.password}`)}`;if(n.type==="key")return`Client-Key ${n.clientKey}.${sr(e)}_${xl}`;throw new Error(`Unknown auth type: ${n}`)}const Ll=n=>rr(n,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:e=>e.status===429});function ar(n,e=Rn,t,i){const r=async(s,c)=>{const{skipErrorHandler:a,...o}=c||{},d=await Ll(()=>fetch(e+(s!=null&&s.startsWith("/")?s:`/${s}`),{...o,headers:{...o.headers,Authorization:ha(n,i),"Content-Type":"application/json"}}));if(!d.ok){let l=await d.text().catch(()=>`Failed to fetch with status ${d.status}`);const u=new Error(l);throw t&&!a&&t(u,{url:s,options:o,headers:d.headers}),u}return d.json()};return{get(s,c){return r(s,{...c,method:"GET"})},post(s,c,a){return r(s,{...a,body:JSON.stringify(c),method:"POST"})},delete(s,c,a){return r(s,{...a,body:JSON.stringify(c),method:"DELETE"})},patch(s,c,a){return r(s,{...a,body:JSON.stringify(c),method:"PATCH"})}}}function Nl(n,e=Rn,t,i){const r=ar(n,`${e}/agents`,t,i);return{create(s,c){return r.post("/",s,c)},getAgents(s,c){return r.get(`/${s?`?tag=${s}`:""}`,c).then(a=>a??[])},getById(s,c){return r.get(`/${s}`,c)},delete(s,c){return r.delete(`/${s}`,void 0,c)},update(s,c,a){return r.patch(`/${s}`,c,a)},newChat(s,c,a){return r.post(`/${s}/chat`,c,a)},chat(s,c,a,o){return r.post(`/${s}/chat/${c}`,a,o)},createRating(s,c,a,o){return r.post(`/${s}/chat/${c}/ratings`,a,o)},updateRating(s,c,a,o,d){return r.patch(`/${s}/chat/${c}/ratings/${a}`,o,d)},deleteRating(s,c,a,o){return r.delete(`/${s}/chat/${c}/ratings/${a}`,o)},getSTTToken(s,c){return r.get(`/${s}/stt-token`,c)}}}function Ul(n){var r,s,c,a;const e=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",t=()=>{const o=navigator.platform;return o.toLowerCase().includes("win")?"Windows":o.toLowerCase().includes("mac")?"Mac OS X":o.toLowerCase().includes("linux")?"Linux":"Unknown"},i=n.presenter;return{$os:`${t()}`,isMobile:`${e()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:ra(i),agentVoice:{voiceId:(s=(r=n.presenter)==null?void 0:r.voice)==null?void 0:s.voice_id,provider:(a=(c=n.presenter)==null?void 0:c.voice)==null?void 0:a.type}}}function Fl(n){var t,i,r,s,c,a;const e=(t=n.llm)==null?void 0:t.prompt_customization;return{agentType:ra(n.presenter),presenterType:Ml(n.presenter),presenter:Ol(n.presenter),owner_id:n.owner_id??"",promptVersion:(i=n.llm)==null?void 0:i.prompt_version,behavior:{role:e==null?void 0:e.role,personality:e==null?void 0:e.personality,instructions:(r=n.llm)==null?void 0:r.instructions},temperature:(s=n.llm)==null?void 0:s.temperature,knowledgeSource:e==null?void 0:e.knowledge_source,starterQuestionsCount:(a=(c=n.knowledge)==null?void 0:c.starter_message)==null?void 0:a.length,topicsToAvoid:e==null?void 0:e.topics_to_avoid,maxResponseLength:e==null?void 0:e.max_response_length,agentId:n.id,access:n.access,agentName:n.preview_name,...n.access==="public"?{from:"agent-template"}:{}}}const Bl=n=>n.reduce((e,t)=>e+t,0),ma=n=>Bl(n)/n.length;function jl(n,e,t){var o,d,l;const{event:i,...r}=n,{template:s}=(e==null?void 0:e.llm)||{},{language:c}=((o=e==null?void 0:e.presenter)==null?void 0:o.voice)||{};return{...r,llm:{...r.llm,template:s},script:{...r.script,provider:{...(d=r==null?void 0:r.script)==null?void 0:d.provider,language:c}},stitch:(e==null?void 0:e.presenter.type)==="talk"?(l=e==null?void 0:e.presenter)==null?void 0:l.stitch:void 0,...t}}function fa(n){"requestIdleCallback"in window?requestIdleCallback(n,{timeout:2e3}):setTimeout(n,0)}const Vl="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function ql(n){const e=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",t={};return{token:n.token||"testKey",distinct_id:sr(n.externalId),agentId:n.agentId,additionalProperties:{id:sr(n.externalId),...n.mixpanelAdditionalProperties||{}},isEnabled:n.isEnabled??!0,getRandom:an,enrich(i){this.additionalProperties={...this.additionalProperties,...i}},async track(i,r,s){if(!this.isEnabled)return Promise.resolve();const{audioPath:c,...a}=r||{},o=s||Date.now(),d={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:i,properties:{...this.additionalProperties,...a,agentId:this.agentId,source:e,token:this.token,time:o,$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerWidth,"Screen Width":window.screen.width||window.innerHeight,"User Agent":navigator.userAgent}}])})};return fetch(Vl,d).catch(l=>console.error("Analytics tracking error:",l)),Promise.resolve()},linkTrack(i,r,s,c){t[i]||(t[i]={events:{},resolvedDependencies:[]}),c.includes(s)||c.push(s);const a=t[i];if(a.events[s]={props:r},a.resolvedDependencies.push(s),c.every(d=>a.resolvedDependencies.includes(d))){const d=c.reduce((l,u)=>a.events[u]?{...l,...a.events[u].props}:l,{});this.track(i,d),a.resolvedDependencies=a.resolvedDependencies.filter(l=>!c.includes(l)),c.forEach(l=>{delete a.events[l]})}}}}function or(){let n=0;return{reset:()=>n=0,update:()=>n=Date.now(),get:(e=!1)=>e?Date.now()-n:n}}const mt=or(),cr=or(),pa=or();function ga(n){return n===_e.Playground?{headers:{[Rl]:"true"}}:{}}async function va(n,e,t,i,r=!1,s){try{return!s&&!sa(i)&&(s=await e.newChat(n.id,{persist:r},ga(i)),t.track("agent-chat",{event:"created",chatId:s.id,mode:i})),{chat:s,chatMode:(s==null?void 0:s.chat_mode)??i}}catch(c){throw Kl(c)==="InsufficientCreditsError"?new Error("InsufficientCreditsError"):new Error("Cannot create new chat")}}const Kl=n=>{try{const e=JSON.parse(n.message);return e==null?void 0:e.kind}catch{return"UnknownError"}};function Wl(n){return n&&n.length>0?n:[]}function Hl(n,e,t,i){const r=ar(n,`${e}/v2/agents/${t}`,i);return{async createStream(s){return r.post("/sessions",s)}}}const ya=(n,e)=>(t,i)=>n&&console.log(`[${e}] ${t}`,i??""),Jl={[ie.ChatAnswer]:Ke.Answer,[ie.ChatPartial]:Ke.Partial};function Gl(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 zl(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 $l(n){let e="",t=0;for(const i of n.values()){if(i&&i.type==="codec"&&i.mimeType.startsWith("video")&&(e=i.mimeType.split("/")[1]),i&&i.type==="candidate-pair"){const r=i.currentRoundTripTime,c=i.nominated===!0;r>0&&(c||t===0)&&(t=r)}if(i&&i.type==="inbound-rtp"&&i.kind==="video")return{codec:e,rtt:t,timestamp:i.timestamp,bytesReceived:i.bytesReceived,packetsReceived:i.packetsReceived,packetsLost:i.packetsLost,framesDropped:i.framesDropped,framesDecoded:i.framesDecoded,jitter:i.jitter,jitterBufferDelay:i.jitterBufferDelay,jitterBufferEmittedCount:i.jitterBufferEmittedCount,avgJitterDelayInInterval:i.jitterBufferDelay/i.jitterBufferEmittedCount,frameWidth:i.frameWidth,frameHeight:i.frameHeight,framesPerSecond:i.framesPerSecond,freezeCount:i.freezeCount,freezeDuration:i.totalFreezesDuration}}return{}}function ba(n,e,t){const i=n.map((o,d)=>d===0?t?{timestamp:o.timestamp,duration:0,rtt:o.rtt,bytesReceived:o.bytesReceived-t.bytesReceived,bitrate:(o.bytesReceived-t.bytesReceived)*8/(e/1e3),packetsReceived:o.packetsReceived-t.packetsReceived,packetsLost:o.packetsLost-t.packetsLost,framesDropped:o.framesDropped-t.framesDropped,framesDecoded:o.framesDecoded-t.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-t.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-t.jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-t.jitterBufferDelay)/(o.jitterBufferEmittedCount-t.jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-t.freezeCount,freezeDuration:o.freezeDuration-t.freezeDuration}:{timestamp:o.timestamp,rtt:o.rtt,duration:0,bytesReceived:o.bytesReceived,bitrate:o.bytesReceived*8/(e/1e3),packetsReceived:o.packetsReceived,packetsLost:o.packetsLost,framesDropped:o.framesDropped,framesDecoded:o.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount,avgJitterDelayInInterval:o.jitterBufferDelay/o.jitterBufferEmittedCount,framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount,freezeDuration:o.freezeDuration}:{timestamp:o.timestamp,duration:e*d/1e3,rtt:o.rtt,bytesReceived:o.bytesReceived-n[d-1].bytesReceived,bitrate:(o.bytesReceived-n[d-1].bytesReceived)*8/(e/1e3),packetsReceived:o.packetsReceived-n[d-1].packetsReceived,packetsLost:o.packetsLost-n[d-1].packetsLost,framesDropped:o.framesDropped-n[d-1].framesDropped,framesDecoded:o.framesDecoded-n[d-1].framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-n[d-1].jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-n[d-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-n[d-1].jitterBufferDelay)/(o.jitterBufferEmittedCount-n[d-1].jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-n[d-1].freezeCount,freezeDuration:o.freezeDuration-n[d-1].freezeDuration}),r=zl(i),s=r.reduce((o,d)=>o+(d.causes.includes("low fps")?1:0),0),c=i.filter(o=>!!o.avgJitterDelayInInterval).map(o=>o.avgJitterDelayInInterval),a=i.filter(o=>!!o.rtt).map(o=>o.rtt);return{webRTCStats:{anomalies:r,minRtt:Math.min(...a),avgRtt:ma(a),maxRtt:Math.max(...a),aggregateReport:Gl(n[0],n[n.length-1],s),minJitterDelayInInterval:Math.min(...c),maxJitterDelayInInterval:Math.max(...c),avgJitterDelayInInterval:ma(c)},codec:n[0].codec,resolution:`${n[0].frameWidth}x${n[0].frameHeight}`}}function ka(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 Pn=10;function Ql(n,e){let t=!1,i=!1,r=null,s=0,c=0,a={};async function o(){if(t){try{const d=await n();if(!d){r=setTimeout(o,Pn);return}const l=ka(d,"audio");if(!l){r=setTimeout(o,Pn);return}const u=l.totalAudioEnergy??0,h=l.totalSamplesReceived??0;if(!i){s=u,c=h,i=!0,r=setTimeout(o,Pn);return}const f=u-s,v=h-c;if(s=u,c=h,v>0&&f>0){t=!1,e(a);return}}catch{}t&&(r=setTimeout(o,Pn))}}return{arm(d={}){a=d,t=!0,i=!1,performance.now(),r!==null&&clearTimeout(r),r=setTimeout(o,Pn)},destroy(){t=!1,r!==null&&(clearTimeout(r),r=null)}}}const di=100,Yl=Math.max(Math.ceil(400/di),1),Xl=.25,Zl=.28;function eu(){let n=0,e,t,i=0;return r=>{const s=ka(r,"video");if(!s)return{isReceiving:!1,avgJitterDelayInInterval:i};const c=s.jitterBufferDelay,a=s.jitterBufferEmittedCount;if(t&&a>t){const l=c-e,u=a-t;i=l/u}e=c,t=a;const o=s.framesDecoded,d=o-n>0;return n=o,{isReceiving:d,avgJitterDelayInInterval:i,freezeCount:s.freezeCount}}}function Ta(n,e,t,i,r){let s=null,c=[],a,o=0,d=!1,l=it.Unknown,u=it.Unknown,h=0,f=0;const v=eu();async function g(){const S=await n();if(!S)return;const{isReceiving:k,avgJitterDelayInInterval:w,freezeCount:_}=v(S),y=$l(S);if(k)o=0,h=_-f,u=w<Xl?it.Strong:w>Zl&&h>1?it.Weak:l,u!==l&&(r==null||r(u),l=u,f+=h,h=0),d||(i==null||i(X.Start),a=c[c.length-1],c=[],d=!0),c.push(y);else if(d&&(o++,o>=Yl)){const b=ba(c,di,a);i==null||i(X.Stop,b),e()||t(),f=_,d=!1}}return{start:()=>{s||(s=setInterval(g,di))},stop:()=>{s&&(clearInterval(s),s=null)},getReport:()=>ba(c,di,a)}}const Sa=2e4;async function tu(){try{return await Promise.resolve().then(()=>qg)}catch{throw new Error("LiveKit client is required for this streaming manager. Please install it using: npm install livekit-client")}}const nu={excellent:it.Strong,good:it.Strong,poor:it.Weak,lost:it.Unknown,unknown:it.Unknown},In=JSON.stringify({kind:"InternalServerError",description:"Stream Error"});var dr=(n=>(n.Chat="lk.chat",n.Speak="did.speak",n.Interrupt="did.interrupt",n))(dr||{});function lr(n,e,t){var i,r;throw e("Failed to connect to LiveKit room:",n),(i=t.onConnectionStateChange)==null||i.call(t,de.Fail,"internal:init-error"),(r=t.onError)==null||r.call(t,n,{sessionId:""}),n}async function iu(n,e,t){var bl;const i=ya(t.debug||!1,"LiveKitStreamingManager"),{Room:r,RoomEvent:s,ConnectionState:c,Track:a}=await tu(),{callbacks:o,auth:d,baseURL:l,analytics:u}=t;let h=null,f=!1;const v=rt.Fluent;let g=null;const S={isPublishing:!1,publication:null},k={isPublishing:!1,publication:null};let w=null,_=null,y=null,b=!1;h=new r({adaptiveStream:!1,dynacast:!0});let T=null,N=Pe.Idle,F=!0;const M=Hl(d,l||Rn,n,o.onError);let D,U,H,ae=!0;try{const R=await M.createStream({transport:e.transport,chat_persist:e.chat_persist??!0}),{id:L,session_token:q,session_url:J,interrupt_enabled:ce}=R;(bl=o.onStreamCreated)==null||bl.call(o,{session_id:L,stream_id:L,agent_id:n}),D=L,U=q,H=J,ae=ce??!0,await h.prepareConnection(H,U)}catch(R){lr(R,i,o)}if(!H||!U||!D)return Promise.reject(new Error("Failed to initialize LiveKit stream"));h.on(s.ConnectionStateChanged,O).on(s.ConnectionQualityChanged,B).on(s.ParticipantConnected,V).on(s.ParticipantDisconnected,ne).on(s.TrackSubscribed,ve).on(s.TrackUnsubscribed,K).on(s.DataReceived,we).on(s.MediaDevicesError,nt).on(s.TranscriptionReceived,Ce).on(s.EncryptionError,Vs).on(s.TrackSubscriptionFailed,En);function Ce(R,L){var q;L!=null&&L.isLocal&&(mt.update(),N===Pe.Talking&&((q=o.onInterruptDetected)==null||q.call(o,{type:"audio"}),N=Pe.Idle))}try{await h.connect(H,U),i("LiveKit room joined successfully"),T=setTimeout(()=>{var R;i(`Track subscription timeout - no track subscribed within ${Sa/1e3} seconds after connect`),T=null,u.track("connectivity-error",{error:"Track subscription timeout",sessionId:D}),(R=o.onError)==null||R.call(o,new Error("Track subscription timeout"),{sessionId:D}),Hs("internal:track-subscription-timeout")},Sa)}catch(R){lr(R,i,o)}u.enrich({"stream-type":v});function O(R){var L,q,J,ce;switch(i("Connection state changed:",R),R){case c.Connecting:i("CALLBACK: onConnectionStateChange(Connecting)"),(L=o.onConnectionStateChange)==null||L.call(o,de.Connecting,"livekit:connecting");break;case c.Connected:i("LiveKit room connected successfully"),f=!0;break;case c.Disconnected:i("LiveKit room disconnected"),f=!1,b=!1,S.publication=null,k.publication=null,(q=o.onConnectionStateChange)==null||q.call(o,de.Disconnected,"livekit:disconnected");break;case c.Reconnecting:i("LiveKit room reconnecting..."),(J=o.onConnectionStateChange)==null||J.call(o,de.Connecting,"livekit:reconnecting");break;case c.SignalReconnecting:i("LiveKit room signal reconnecting..."),(ce=o.onConnectionStateChange)==null||ce.call(o,de.Connecting,"livekit:signal-reconnecting");break}}function B(R,L){var q;i("Connection quality:",R),L!=null&&L.isLocal&&((q=o.onConnectivityStateChange)==null||q.call(o,nu[R]))}function V(R){i("Participant connected:",R.identity)}function ne(R){i("Participant disconnected:",R.identity),Hs("livekit:participant-disconnected")}function ee(){var R;y!==X.Start&&(i("CALLBACK: onVideoStateChange(Start)"),y=X.Start,(R=o.onVideoStateChange)==null||R.call(o,X.Start))}function se(R){var L;y!==X.Stop&&(i("CALLBACK: onVideoStateChange(Stop)"),y=X.Stop,(L=o.onVideoStateChange)==null||L.call(o,X.Stop,R))}function ve(R,L,q){var ce,me,Fe;i(`Track subscribed: ${R.kind} from ${q.identity}`);const J=R.mediaStreamTrack;if(!J){i(`No mediaStreamTrack available for ${R.kind}`);return}g?(g.addTrack(J),i(`Added ${R.kind} track to shared MediaStream`)):(g=new MediaStream([J]),i(`Created shared MediaStream with ${R.kind} track`)),R.kind==="audio"&&(_=Ql(()=>R.getRTCStatsReport(),({sttLatency:Re,serviceLatency:ht})=>{var kl,Tl,Sl;const si=mt.get(!0);let ai=0;if(Re){const Cl=((Tl=(kl=w==null?void 0:w.getReport())==null?void 0:kl.webRTCStats)==null?void 0:Tl.avgRtt)??0;ai=Cl>0?Math.round(Cl*1e3):0}const wn=si>0?si+(Re??0)+ai:void 0,At=wn!==void 0&&ht!==void 0?wn-ht:void 0;(Sl=o.onFirstAudioDetected)==null||Sl.call(o,{latency:wn,networkLatency:At})})),R.kind==="video"&&((ce=o.onStreamReady)==null||ce.call(o),i("CALLBACK: onSrcObjectReady"),(me=o.onSrcObjectReady)==null||me.call(o,g),b||(b=!0,i("CALLBACK: onConnectionStateChange(Connected)"),(Fe=o.onConnectionStateChange)==null||Fe.call(o,de.Connected,"livekit:track-subscribed")),w=Ta(()=>R.getRTCStatsReport(),()=>f,Il,(Re,ht)=>{i(`Video state change: ${Re}`),Re===X.Start?(T&&(clearTimeout(T),T=null,i("Track subscription timeout cleared")),ee()):Re===X.Stop&&se(ht)}),w.start())}function K(R,L,q){i(`Track unsubscribed: ${R.kind} from ${q.identity}`),R.kind==="audio"&&(_==null||_.destroy(),_=null),R.kind==="video"&&(se(w==null?void 0:w.getReport()),w==null||w.stop(),w=null)}function W(R,L){var J;const q=Jl[R];q&&((J=o.onMessage)==null||J.call(o,q,{event:q,...L}))}function Z(R,L){var q,J,ce;if(R===ie.ToolCalling){N=Pe.ToolActive,(q=o.onAgentActivityStateChange)==null||q.call(o,Pe.ToolActive),(J=o.onToolEvent)==null||J.call(o,ie.ToolCalling,L);return}R===ie.ToolResult&&((ce=o.onToolEvent)==null||ce.call(o,ie.ToolResult,L))}function ue(R,L){var q,J,ce,me,Fe;if(F=((q=L.metadata)==null?void 0:q.interruptible)!==!1,(J=o.onInterruptibleChange)==null||J.call(o,F),R===ie.StreamVideoCreated){N=Pe.Talking,(ce=o.onAgentActivityStateChange)==null||ce.call(o,Pe.Talking),_==null||_.arm({sttLatency:(me=L==null?void 0:L.stt)==null?void 0:me.latency,serviceLatency:L==null?void 0:L.serviceLatency});return}F&&(N=Pe.Idle,(Fe=o.onAgentActivityStateChange)==null||Fe.call(o,Pe.Idle))}function Ue(R,L){var me,Fe,Re,ht;const q=((Fe=(me=w==null?void 0:w.getReport())==null?void 0:me.webRTCStats)==null?void 0:Fe.avgRtt)??0,J=q>0?Math.round(q/2*1e3):0,ce={...L,downstreamNetworkLatency:J};t.debug&&((Re=L==null?void 0:L.metadata)!=null&&Re.sentiment)&&(ce.sentiment={id:L.metadata.sentiment.id,name:L.metadata.sentiment.sentiment}),(ht=o.onMessage)==null||ht.call(o,R,ce),ue(R,L)}function ni(R,L){var q;(q=o.onMessage)==null||q.call(o,Ke.Transcribe,{event:Ke.Transcribe,...L}),queueMicrotask(()=>{var J;(J=o.onAgentActivityStateChange)==null||J.call(o,Pe.Loading)})}const tt={[ie.ChatAnswer]:W,[ie.ChatPartial]:W,[ie.ToolCalling]:Z,[ie.ToolResult]:Z,[ie.StreamVideoCreated]:Ue,[ie.StreamVideoDone]:Ue,[ie.StreamVideoError]:Ue,[ie.StreamVideoRejected]:Ue,[ie.ChatAudioTranscribed]:ni};function we(R,L,q,J){const ce=new TextDecoder().decode(R);try{const me=JSON.parse(ce),Fe=J||me.subject;if(i("Data received:",{subject:Fe,data:me}),!Fe)return;const Re=tt[Fe];Re==null||Re(Fe,me)}catch(me){i("Failed to parse data channel message:",me)}}function nt(R){var L;i("Media devices error:",R),(L=o.onError)==null||L.call(o,new Error(In),{sessionId:D})}function Vs(R){var L;i("Encryption error:",R),(L=o.onError)==null||L.call(o,new Error(In),{sessionId:D})}function En(R,L,q){i("Track subscription failed:",{trackSid:R,participant:L,reason:q})}function er(R,L,q){for(const[J,ce]of q)if(ce.source===L&&ce.track){const me=ce.track.mediaStreamTrack;if(me===R||(me==null?void 0:me.id)===R.id)return ce}return null}async function ii(R,L,q,J,ce,me){var si,ai,wn;if(!f||!h)throw i(`Room is not connected, cannot publish ${J} stream`),new Error("Room is not connected");if(R.isPublishing){i(`${J} publish already in progress, skipping`);return}const Fe=q(L);if(Fe.length===0)throw new Error(`No ${J} track found in the provided MediaStream`);const Re=Fe[0],ht=er(Re,J,ce());if(ht){i(`${J} track is already published, skipping`,{trackId:Re.id,publishedTrackId:(ai=(si=ht.track)==null?void 0:si.mediaStreamTrack)==null?void 0:ai.id}),R.publication=ht;return}if((wn=R.publication)!=null&&wn.track){const At=R.publication.track.mediaStreamTrack;At!==Re&&(At==null?void 0:At.id)!==Re.id&&(i(`Unpublishing existing ${J} track before publishing new one`),await me())}i(`Publishing ${J} track from provided MediaStream`,{trackId:Re.id}),R.isPublishing=!0;try{R.publication=await h.localParticipant.publishTrack(Re,{source:J}),i(`${J} track published successfully`,{trackSid:R.publication.trackSid})}catch(At){throw i(`Failed to publish ${J} track:`,At),At}finally{R.isPublishing=!1}}async function ri(R,L){if(!(!R.publication||!R.publication.track))try{h&&(await h.localParticipant.unpublishTrack(R.publication.track,!1),i(`${L} track unpublished`))}catch(q){i(`Error unpublishing ${L} track:`,q)}finally{R.publication=null}}async function Kg(R){return ii(S,R,L=>L.getAudioTracks(),a.Source.Microphone,()=>h.localParticipant.audioTrackPublications,qs)}async function qs(){return ri(S,"Microphone")}async function Wg(R){return ii(k,R,L=>L.getVideoTracks(),a.Source.Camera,()=>h.localParticipant.videoTrackPublications,Ks)}async function Ks(){return ri(k,"Camera")}function Hg(){g&&(g.getTracks().forEach(R=>R.stop()),g=null)}async function Ws(R,L){var q,J;if(!f||!h){i("Room is not connected for sending messages"),(q=o.onError)==null||q.call(o,new Error(In),{sessionId:D});return}try{await h.localParticipant.sendText(R,{topic:L}),i("Message sent successfully:",R)}catch(ce){i("Failed to send message:",ce),(J=o.onError)==null||J.call(o,new Error(In),{sessionId:D})}}async function Jg(R){var L;try{const J=JSON.parse(R).topic;return Ws("",J)}catch(q){i("Failed to send data channel message:",q),(L=o.onError)==null||L.call(o,new Error(In),{sessionId:D})}}function Gg(R){return Ws(R,"lk.chat")}async function Hs(R){var L,q;T&&(clearTimeout(T),T=null),_==null||_.destroy(),_=null,h&&((L=o.onConnectionStateChange)==null||L.call(o,de.Disconnecting,R),await Promise.all([qs(),Ks()]),await h.disconnect()),Hg(),f=!1,b=!1,(q=o.onAgentActivityStateChange)==null||q.call(o,Pe.Idle),N=Pe.Idle}return{speak(R){const L=typeof R=="string"?R:JSON.stringify(R);return Ws(L,"did.speak")},disconnect:()=>Hs("user:disconnect"),async reconnect(){var R,L;if((h==null?void 0:h.state)===c.Connected){i("Room is already connected");return}if(!h||!H||!U)throw i("Cannot reconnect: missing room, URL or token"),new Error("Cannot reconnect: session not available");i("Reconnecting to LiveKit room, state:",h.state),b=!1,(R=o.onConnectionStateChange)==null||R.call(o,de.Connecting,"user:reconnect");try{if(await h.connect(H,U),i("Room reconnected"),f=!0,h.remoteParticipants.size===0){if(i("Waiting for agent to join..."),!await new Promise(J=>{const ce=setTimeout(()=>{h==null||h.off(s.ParticipantConnected,me),J(!1)},5e3),me=()=>{clearTimeout(ce),h==null||h.off(s.ParticipantConnected,me),J(!0)};h==null||h.on(s.ParticipantConnected,me)}))throw i("Agent did not join within timeout"),await h.disconnect(),new Error("Agent did not rejoin the room");i("Agent joined, reconnection successful")}}catch(q){throw i("Failed to reconnect:",q),(L=o.onConnectionStateChange)==null||L.call(o,de.Fail,"user:reconnect-failed"),q}},sendDataChannelMessage:Jg,sendTextMessage:Gg,publishMicrophoneStream:Kg,unpublishMicrophoneStream:qs,publishCameraStream:Wg,unpublishCameraStream:Ks,registerRpcMethod(R,L){h==null||h.registerRpcMethod(R,L)},unregisterRpcMethod(R){h==null||h.unregisterRpcMethod(R)},sessionId:D,streamId:D,streamType:v,interruptAvailable:ae,isInterruptible:F}}const ru=Object.freeze(Object.defineProperty({__proto__:null,DataChannelTopic:dr,createLiveKitStreamingManager:iu,handleInitError:lr},Symbol.toStringTag,{value:"Module"}));function su(n,e,t){if(!n)throw new Error("Please connect to the agent first");if(!n.interruptAvailable)throw new Error("Interrupt is not enabled for this stream");if(e!==rt.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!t)throw new Error("No active video to interrupt")}async function au(n,e){const t={type:ie.StreamInterrupt,videoId:e,timestamp:Date.now()};n.sendDataChannelMessage(JSON.stringify(t))}async function ou(n){const e={topic:dr.Interrupt};n.sendDataChannelMessage(JSON.stringify(e))}function cu(n){return new Promise((e,t)=>{const{callbacks:i,host:r,auth:s,externalId:c}=n,{onMessage:a=null,onOpen:o=null,onClose:d=null,onError:l=null}=i||{},u=new WebSocket(`${r}?authorization=${encodeURIComponent(ha(s,c))}`);u.onmessage=a,u.onclose=d,u.onerror=h=>{console.error(h),l==null||l("Websocket failed to connect",h),t(h)},u.onopen=h=>{o==null||o(h),e(u)}})}async function du(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 cu(n)}catch(r){if(i===e)throw r;await ia(i*500)}return t}async function lu(n,e,t,i){const r=t!=null&&t.onMessage?[t.onMessage]:[],s=await du({auth:n,host:e,externalId:i,callbacks:{onError:c=>{var a;return(a=t.onError)==null?void 0:a.call(t,new Gs(c))},onMessage(c){const a=JSON.parse(c.data);r.forEach(o=>o(a.event,a))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:c=>r.push(c)}}function uu(n){if(n.answer!==void 0)return n.answer;let e=0,t="";for(;e in n;)t+=n[e++];return t}function hu(n,e,t){if(!n.content)return;const i=e.messages[e.messages.length-1];(i==null?void 0:i.role)==="assistant"&&!i.interrupted&&(i.interrupted=!0);const r={id:n.id||`user-${Date.now()}`,role:n.role,content:n.content,parts:_n(n.content),created_at:n.created_at||new Date().toISOString(),transcribed:!0};e.messages.push(r),t==null||t([...e.messages],"user")}function mu(n,e,t,i,r){if(n===Ke.Transcribe&&e.content){hu(e,i,r);return}if(!(n===Ke.Partial||n===Ke.Answer))return;const s=i.messages[i.messages.length-1];let c;if((s==null?void 0:s.role)==="assistant")c=s;else if(!s||s.transcribed&&s.role==="user")c={id:e.id||`assistant-${Date.now()}`,role:e.role||"assistant",content:e.content||"",parts:[],created_at:e.created_at||new Date().toISOString()},i.messages.push(c);else return;const{content:a,sequence:o}=e;n===Ke.Partial?t[o]=a:t.answer=a;const d=uu(t);(c.content!==d||n===Ke.Answer)&&(c.content=d,c.parts=_n(d),r==null||r([...i.messages],n))}function fu(n,e,t,i,r){let s={};const c=()=>s={};let a="answer";const o=(d,l)=>{var u,h;l==="user"&&c(),a=l,(h=(u=t.callbacks).onNewMessage)==null||h.call(u,d,l)};return{clearQueue:c,onMessage:(d,l)=>{var u,h;if("content"in l){const f=d===ie.ChatAnswer?Ke.Answer:d===ie.ChatAudioTranscribed?Ke.Transcribe:d;mu(f,l,s,e,o),f===Ke.Answer&&n.track("agent-message-received",{content:l.content,messages:e.messages.length,mode:e.chatMode})}else{const f=ie,v=[f.StreamVideoDone,f.StreamVideoError,f.StreamVideoRejected],g=[f.StreamFailed,f.StreamVideoError,f.StreamVideoRejected],S=jl(l,i,{mode:e.chatMode});if(d=d,d===f.StreamVideoCreated&&(n.linkTrack("agent-video",S,f.StreamVideoCreated,["start"]),l.sentiment)){const k=e.messages[e.messages.length-1];if((k==null?void 0:k.role)==="assistant"){const w={...k,sentiment:l.sentiment};e.messages[e.messages.length-1]=w,o==null||o([...e.messages],a)}}if(v.includes(d)){const k=d.split("/")[1];g.includes(d)?n.track("agent-video",{...S,event:k}):n.linkTrack("agent-video",{...S,event:k},d,["done"])}g.includes(d)&&((h=(u=t.callbacks).onError)==null||h.call(u,new Error(`Stream failed with event ${d}`),{data:l})),l.event===f.StreamDone&&r()}}}}function pu(n,e,t,i){const r=ar(n,`${e}/agents/${t}`,i);return{createStream(s,c){return r.post("/streams",s,{signal:c})},startConnection(s,c,a,o){return r.post(`/streams/${s}/sdp`,{session_id:a,answer:c},{signal:o})},addIceCandidate(s,c,a,o){return r.post(`/streams/${s}/ice`,{session_id:a,...c},{signal:o})},sendStreamRequest(s,c,a){return r.post(`/streams/${s}`,{session_id:c,...a})},close(s,c){return r.delete(`/streams/${s}`,{session_id:c})}}}const gu=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function Ca(n){switch(n){case"connected":return de.Connected;case"checking":return de.Connecting;case"failed":return de.Fail;case"new":return de.New;case"closed":return de.Closed;case"disconnected":return de.Disconnected;case"completed":return de.Completed;default:return de.New}}const vu=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 yu({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 bu({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:r,log:s}){n===X.Start?(s("CALLBACK: onVideoStateChange(Start)"),t==null||t(X.Start)):n===X.Stop&&(s("CALLBACK: onVideoStateChange(Stop)"),t==null||t(X.Stop,r)),e===X.Start?i==null||i(Pe.Talking):e===X.Stop&&(i==null||i(Pe.Idle))}function Ea({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,streamType:r,report:s,log:c}){r===rt.Legacy?yu({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:s,log:c}):r===rt.Fluent&&bu({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:s,log:c})}async function ku(n,e,{debug:t=!1,callbacks:i,auth:r,baseURL:s=Rn,analytics:c},a){var ve;const o=ya(t,"WebRTCStreamingManager"),d=vu(o);let l=!1,u=!1,h=X.Stop,f=X.Stop;const{startConnection:v,sendStreamRequest:g,close:S,createStream:k,addIceCandidate:w}=pu(r,s,n,i.onError),{id:_,offer:y,ice_servers:b,session_id:T,fluent:N,interrupt_enabled:F}=await k(e,a);(ve=i.onStreamCreated)==null||ve.call(i,{stream_id:_,session_id:T,agent_id:n});const M=new gu({iceServers:b}),D=M.createDataChannel("JanusDataChannel");if(!T)throw new Error("Could not create session_id");const U=N?rt.Fluent:rt.Legacy;c.enrich({"stream-type":U});const H=e.stream_warmup&&!N,ae=()=>l,Ce=()=>{var K;l=!0,u&&(o("CALLBACK: onConnectionStateChange(Connected)"),(K=i.onConnectionStateChange)==null||K.call(i,de.Connected))},O=Ta(()=>M.getStats(),ae,Ce,(K,W)=>Ea({statsSignal:f=K,dataChannelSignal:U===rt.Legacy?h:void 0,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,report:W,streamType:U,log:o}),K=>{var W;return(W=i.onConnectivityStateChange)==null?void 0:W.call(i,K)});O.start(),M.onicecandidate=K=>{var W;o("peerConnection.onicecandidate",K);try{K.candidate&&K.candidate.sdpMid&&K.candidate.sdpMLineIndex!==null?w(_,{candidate:K.candidate.candidate,sdpMid:K.candidate.sdpMid,sdpMLineIndex:K.candidate.sdpMLineIndex},T,a):w(_,{candidate:null},T,a)}catch(Z){(W=i.onError)==null||W.call(i,Z,{streamId:_})}},D.onopen=()=>{u=!0,(!H||l)&&Ce()};const B=K=>{var W;(W=i.onVideoIdChange)==null||W.call(i,K)};function V(K,W){if(K===ie.StreamStarted&&typeof W=="object"&&"metadata"in W){const Z=W.metadata;B(Z.videoId)}K===ie.StreamDone&&B(null),h=K===ie.StreamStarted?X.Start:X.Stop,Ea({statsSignal:U===rt.Legacy?f:void 0,dataChannelSignal:h,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,streamType:U,log:o})}function ne(K,W){var ue;const Z=typeof W=="string"?W:W==null?void 0:W.metadata;Z&&c.enrich({streamMetadata:Z}),(ue=i.onStreamReady)==null||ue.call(i)}const ee={[ie.StreamStarted]:V,[ie.StreamDone]:V,[ie.StreamReady]:ne};D.onmessage=K=>{var ue;const{subject:W,data:Z}=d(K.data);(ue=ee[W])==null||ue.call(ee,W,Z)},M.oniceconnectionstatechange=()=>{var W;o("peerConnection.oniceconnectionstatechange => "+M.iceConnectionState);const K=Ca(M.iceConnectionState);K!==de.Connected&&((W=i.onConnectionStateChange)==null||W.call(i,K))},M.ontrack=K=>{var W;o("peerConnection.ontrack",K),o("CALLBACK: onSrcObjectReady"),(W=i.onSrcObjectReady)==null||W.call(i,K.streams[0])},await M.setRemoteDescription(y),o("set remote description OK");const se=await M.createAnswer();return o("create answer OK"),await M.setLocalDescription(se),o("set local description OK"),await v(_,se,T,a),o("start connection OK"),{speak(K){return g(_,T,K)},async disconnect(){var K;if(_){const W=Ca(M.iceConnectionState);if(M){if(W===de.New){O.stop();return}M.close(),M.oniceconnectionstatechange=null,M.onnegotiationneeded=null,M.onicecandidate=null,M.ontrack=null}try{W===de.Connected&&await S(_,T).catch(Z=>{})}catch(Z){o("Error on close stream connection",Z)}(K=i.onAgentActivityStateChange)==null||K.call(i,Pe.Idle),O.stop()}},sendDataChannelMessage(K){var W,Z;if(!l||D.readyState!=="open"){o("Data channel is not ready for sending messages"),(W=i.onError)==null||W.call(i,new Error("Data channel is not ready for sending messages"),{streamId:_});return}try{D.send(K)}catch(ue){o("Error sending data channel message",ue),(Z=i.onError)==null||Z.call(i,ue,{streamId:_})}},sessionId:T,streamId:_,streamType:U,interruptAvailable:F??!1,isInterruptible:!0}}var ur=(n=>(n.V1="v1",n.V2="v2",n))(ur||{});async function Tu(n,e,t,i){const r=n.id;switch(e.version){case"v1":{const{version:s,...c}=e;return ku(r,c,t,i)}case"v2":{const{version:s,...c}=e;switch(c.transport.provider){case ci.Livekit:const{createLiveKitStreamingManager:a}=await Promise.resolve().then(()=>ru);return a(r,c,t);default:throw new Error(`Unsupported transport provider: ${c.transport.provider}`)}}default:throw new Error(`Invalid stream version: ${e.version}`)}}const Su="cht";function Cu(){return{transport:{provider:ci.Livekit}}}function Eu(n){var r,s;const{streamOptions:e}=n??{},t=((r=n==null?void 0:n.mixpanelAdditionalProperties)==null?void 0:r.plan)!==void 0?{plan:(s=n.mixpanelAdditionalProperties)==null?void 0:s.plan}:void 0;return{...{output_resolution:e==null?void 0:e.outputResolution,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 wu(n,e){return nr(n.presenter.type)?{version:ur.V2,...Cu()}:{version:ur.V1,...Eu(e)}}function Ru(n,e,t){t.track("agent-connection-state-change",{state:n,...e&&{reason:e}})}function _u(n,e,t,i,r){r===rt.Fluent?Pu(n,e,t,i,r):Iu(n,e,t,i,r)}function Pu(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",is_greenscreen:e.presenter.type==="clip"&&e.presenter.is_greenscreen,background:e.presenter.type==="clip"&&e.presenter.background,"stream-type":r,...t})}function wa(n,e,t,i,r){n===X.Start?t.linkTrack("agent-video",{event:"start",...r,"stream-type":i},"start",[ie.StreamVideoCreated]):n===X.Stop&&t.linkTrack("agent-video",{event:"stop",is_greenscreen:e.presenter.type==="clip"&&e.presenter.is_greenscreen,background:e.presenter.type==="clip"&&e.presenter.background,"stream-type":i},"done",[ie.StreamVideoDone])}function Iu(n,e,t,i,r){n===X.Start?i.linkTrack("agent-video",{event:"start",latency:mt.get(!0),"stream-type":r},"start",[ie.StreamVideoCreated]):n===X.Stop&&i.linkTrack("agent-video",{event:"stop",is_greenscreen:e.presenter.type==="clip"&&e.presenter.is_greenscreen,background:e.presenter.type==="clip"&&e.presenter.background,"stream-type":r,...t},"done",[ie.StreamVideoDone])}function Ra(n,e,t,i){return mt.reset(),pa.update(),new Promise(async(r,s)=>{try{let c,a=!1;const o=wu(n,e);t.enrich({"stream-version":o.version.toString()});let d=null;const l=n.presenter.type==="expressive";c=await Tu(n,o,{...e,analytics:t,callbacks:{...e.callbacks,onConnectionStateChange:(u,h)=>{var f,v;(v=(f=e.callbacks).onConnectionStateChange)==null||v.call(f,u),Ru(u,h,t),u===de.Connected&&(c?r(c):a=!0)},onVideoStateChange:(u,h)=>{var f,v;(v=(f=e.callbacks).onVideoStateChange)==null||v.call(f,u),_u(u,n,h,t,c.streamType)},onAgentActivityStateChange:u=>{var h,f;(f=(h=e.callbacks).onAgentActivityStateChange)==null||f.call(h,u),u===Pe.Talking?(cr.update(),d=v=>{wa(X.Start,n,t,c.streamType,v),d=null},l||d({latency:mt.get(!0)})):(cr.reset(),d=null,wa(X.Stop,n,t,c.streamType))},onFirstAudioDetected:u=>{d==null||d(u)},onStreamReady:()=>{const u=pa.get(!0);t.track("agent-chat",{event:"ready",latency:u})}}},i),a&&r(c)}catch(c){s(c)}})}async function Mu(n,e,t,i,r){var l,u,h,f;const s=async()=>{if(nr(n.presenter.type)){const v=await Ra(n,e,i),g=`${Su}_${v.sessionId}`,S=new Date().toISOString();return{chatResult:{chatMode:_e.Functional,chat:{id:g,agent_id:n.id,owner_id:n.owner_id??"",created:S,modified:S,agent_id__created_at:S,agent_id__modified_at:S,chat_mode:_e.Functional,messages:[]}},streamingManager:v}}else{const v=new AbortController,g=v.signal;let S;try{const k=va(n,t,i,e.mode,e.persistentChat,r),w=Ra(n,e,i,g).then(b=>(S=b,b)),[_,y]=await Promise.all([k,w]);return{chatResult:_,streamingManager:y}}catch(k){throw v.abort(),S&&await S.disconnect().catch(()=>{}),k}}},{chatResult:c,streamingManager:a}=await s(),{chat:o,chatMode:d}=c;return d&&e.mode!==void 0&&d!==e.mode&&(e.mode=d,(u=(l=e.callbacks).onModeChange)==null||u.call(l,d),d!==_e.Functional)?((f=(h=e.callbacks).onError)==null||f.call(h,new Js(d)),a==null||a.disconnect(),{chat:o}):{chat:o,streamingManager:a}}async function Ou(n,e){var U,H,ae,Ce;let t=!0,i=null;const r=e.mixpanelKey||Pl,s=e.wsURL||_l,c=e.baseURL||Rn,a=e.mode||_e.Functional,o={messages:[],chatMode:a},d=ql({token:r,agentId:n,isEnabled:e.enableAnalitics,externalId:e.externalId,mixpanelAdditionalProperties:e.mixpanelAdditionalProperties}),l=Date.now();fa(()=>{d.track("agent-sdk",{event:"init"},l)});const u=Nl(e.auth,c,e.callbacks.onError,e.externalId),h=await u.getById(n);e.debug=e.debug||((U=h==null?void 0:h.advanced_settings)==null?void 0:U.ui_debug_mode);const f=nr(h.presenter.type);d.enrich(Fl(h));const{onMessage:v,clearQueue:g}=fu(d,o,e,h,()=>{var O,B,V;(O=o.socketManager)==null||O.disconnect(),(V=(B=e.callbacks).onConnectionStateChange)==null||V.call(B,de.Disconnected)});o.messages=Wl(e.initialMessages),(ae=(H=e.callbacks).onNewMessage)==null||ae.call(H,[...o.messages],"answer");const S=O=>{i=O},k=({type:O})=>{var V,ne,ee,se,ve;if(!((V=o.streamingManager)!=null&&V.interruptAvailable)||!((ne=o.streamingManager)!=null&&ne.isInterruptible))return;const B=o.messages[o.messages.length-1];d.track("agent-video-interrupt",{type:O||"click",video_duration_to_interrupt:cr.get(!0),message_duration_to_interrupt:mt.get(!0)}),B.interrupted=!0,(se=(ee=e.callbacks).onNewMessage)==null||se.call(ee,[...o.messages],"answer"),f?ou(o.streamingManager):(su(o.streamingManager,(ve=o.streamingManager)==null?void 0:ve.streamType,i),au(o.streamingManager,i))},w=new Map;function _(O){return async B=>{const V=w.get(O);if(!V)throw new Error(`No handler registered for client tool: ${O}`);try{const ne=JSON.parse(B.payload);return await V(ne)}catch(ne){throw new Error(`Client tool "${O}" failed: ${ne.message}`)}}}function y(){var O,B,V,ne;for(const[ee]of w)(B=(O=o.streamingManager)==null?void 0:O.unregisterRpcMethod)==null||B.call(O,ee),(ne=(V=o.streamingManager)==null?void 0:V.registerRpcMethod)==null||ne.call(V,ee,_(ee))}function b(O,B){var ne,ee;const V=!w.has(O);w.set(O,B),V&&((ee=(ne=o.streamingManager)==null?void 0:ne.registerRpcMethod)==null||ee.call(ne,O,_(O)))}function T(O){var B,V;w.delete(O),(V=(B=o.streamingManager)==null?void 0:B.unregisterRpcMethod)==null||V.call(B,O)}const N=Date.now();fa(()=>{d.track("agent-sdk",{event:"loaded",...Ul(h)},N)});async function F(O){var ve,K,W,Z,ue,Ue,ni;(K=(ve=e.callbacks).onConnectionStateChange)==null||K.call(ve,de.Connecting),mt.reset(),O&&!t&&(delete o.chat,(Z=(W=e.callbacks).onNewMessage)==null||Z.call(W,[...o.messages],"answer"));const B=a===_e.DirectPlayback||f?Promise.resolve(void 0):lu(e.auth,s,{onMessage:v,onError:e.callbacks.onError},e.externalId),V=rr(()=>Mu(h,{...e,mode:a,callbacks:{...e.callbacks,onVideoIdChange:S,onMessage:v,onInterruptDetected:k}},u,d,o.chat),{limit:3,timeout:wl,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:tt=>(tt==null?void 0:tt.message)!=="Could not connect"&&tt.status!==429&&(tt==null?void 0:tt.message)!=="InsufficientCreditsError",delayMs:1e3}).catch(tt=>{var we,nt;throw D(_e.Maintenance),(nt=(we=e.callbacks).onConnectionStateChange)==null||nt.call(we,de.Fail),tt}),[ne,{streamingManager:ee,chat:se}]=await Promise.all([B,V]);se&&se.id!==((ue=o.chat)==null?void 0:ue.id)&&((ni=(Ue=e.callbacks).onNewChat)==null||ni.call(Ue,se.id)),o.streamingManager=ee,o.socketManager=ne,o.chat=se,y(),t=!1,d.enrich({chatId:se==null?void 0:se.id,streamId:ee==null?void 0:ee.streamId,mode:o.chatMode}),D((se==null?void 0:se.chat_mode)??a)}async function M(){var O,B,V,ne;(O=o.socketManager)==null||O.disconnect(),await((B=o.streamingManager)==null?void 0:B.disconnect()),delete o.streamingManager,delete o.socketManager,(ne=(V=e.callbacks).onConnectionStateChange)==null||ne.call(V,de.Disconnected)}async function D(O){var B,V;O!==o.chatMode&&(d.track("agent-mode-change",{mode:O}),o.chatMode=O,o.chatMode!==_e.Functional&&await M(),(V=(B=e.callbacks).onModeChange)==null||V.call(B,O))}return{agent:h,getStreamType:()=>{var O;return(O=o.streamingManager)==null?void 0:O.streamType},getIsInterruptAvailable:()=>{var O;return((O=o.streamingManager)==null?void 0:O.interruptAvailable)??!1},starterMessages:((Ce=h.knowledge)==null?void 0:Ce.starter_message)||[],getSTTToken:()=>u.getSTTToken(h.id),changeMode:D,enrichAnalytics:d.enrich,async connect(){await F(!0),d.track("agent-chat",{event:"connect",mode:o.chatMode})},async reconnect(){const O=o.streamingManager;if(f&&(O!=null&&O.reconnect)){try{await O.reconnect(),d.track("agent-chat",{event:"reconnect",mode:o.chatMode})}catch{await M(),await F(!1)}return}await M(),await F(!1),d.track("agent-chat",{event:"reconnect",mode:o.chatMode})},async disconnect(){await M(),d.track("agent-chat",{event:"disconnect",mode:o.chatMode})},async publishMicrophoneStream(O){var B;if(!((B=o.streamingManager)!=null&&B.publishMicrophoneStream))throw new Error("publishMicrophoneStream is not available for this streaming manager");return o.streamingManager.publishMicrophoneStream(O)},async unpublishMicrophoneStream(){var O;if((O=o.streamingManager)!=null&&O.unpublishMicrophoneStream)return o.streamingManager.unpublishMicrophoneStream()},async publishCameraStream(O){var B;if(!((B=o.streamingManager)!=null&&B.publishCameraStream))throw new Error("publishCameraStream is not available for this streaming manager");return o.streamingManager.publishCameraStream(O)},async unpublishCameraStream(){var O;if((O=o.streamingManager)!=null&&O.unpublishCameraStream)return o.streamingManager.unpublishCameraStream()},async chat(O){var ee,se,ve,K,W;const B=()=>{if(sa(a))throw new Ht(`${a} is enabled, chat is disabled`);if(O.length>=800)throw new Ht("Message cannot be more than 800 characters");if(O.length===0)throw new Ht("Message cannot be empty");if(o.chatMode===_e.Maintenance)throw new Ht("Chat is in maintenance mode");if(![_e.TextOnly,_e.Playground].includes(o.chatMode)){if(!o.streamingManager)throw new Ht("Streaming manager is not initialized");if(!o.chat)throw new Ht("Chat is not initialized")}},V=async()=>{var Z,ue;if(!o.chat){const Ue=await va(h,u,d,o.chatMode,e.persistentChat);if(!Ue.chat)throw new Wt(o.chatMode,!!e.persistentChat);o.chat=Ue.chat,(ue=(Z=e.callbacks).onNewChat)==null||ue.call(Z,o.chat.id)}return o.chat.id},ne=async(Z,ue)=>{const Ue=o.chatMode===_e.Playground;return rr(f&&!Ue?async()=>{var we,nt;return await((nt=(we=o.streamingManager)==null?void 0:we.sendTextMessage)==null?void 0:nt.call(we,O)),Promise.resolve({})}:async()=>{var we,nt;return u.chat(h.id,ue,{chatMode:o.chatMode,streamId:(we=o.streamingManager)==null?void 0:we.streamId,sessionId:(nt=o.streamingManager)==null?void 0:nt.sessionId,messages:Z.map(({matches:Vs,...En})=>En)},{...ga(o.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:we=>{var En,er,ii,ri;const nt=(En=we==null?void 0:we.message)==null?void 0:En.includes("missing or invalid session_id");return!((er=we==null?void 0:we.message)==null?void 0:er.includes("Stream Error"))&&!nt?((ri=(ii=e.callbacks).onError)==null||ri.call(ii,we),!1):!0},onRetry:async()=>{await M(),await F(!1)}})};try{g(),B(),o.messages.push({id:an(),role:"user",content:O,parts:_n(O),created_at:new Date(mt.update()).toISOString()}),(se=(ee=e.callbacks).onNewMessage)==null||se.call(ee,[...o.messages],"user");const Z=await V(),ue=await ne([...o.messages],Z);return o.messages.push({id:an(),role:"assistant",content:ue.result||"",parts:_n(ue.result||""),created_at:new Date().toISOString(),context:ue.context,matches:ue.matches}),d.track("agent-message-send",{event:"success",messages:o.messages.length+1}),ue.result&&((K=(ve=e.callbacks).onNewMessage)==null||K.call(ve,[...o.messages],"answer"),d.track("agent-message-received",{latency:mt.get(!0),messages:o.messages.length})),ue}catch(Z){throw((W=o.messages[o.messages.length-1])==null?void 0:W.role)==="assistant"&&o.messages.pop(),d.track("agent-message-send",{event:"error",messages:o.messages.length}),Z}},rate(O,B,V){var se,ve,K,W;const ne=o.messages.find(Z=>Z.id===O);if(o.chat){if(!ne)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const ee=((se=ne.matches)==null?void 0:se.map(Z=>[Z.document_id,Z.id]))??[];return d.track("agent-rate",{event:V?"update":"create",thumb:B===1?"up":"down",knowledge_id:((ve=h.knowledge)==null?void 0:ve.id)??"",matches:ee,score:B}),V?u.updateRating(h.id,o.chat.id,V,{knowledge_id:((K=h.knowledge)==null?void 0:K.id)??"",message_id:O,matches:ee,score:B}):u.createRating(h.id,o.chat.id,{knowledge_id:((W=h.knowledge)==null?void 0:W.id)??"",message_id:O,matches:ee,score:B})},deleteRate(O){if(!o.chat)throw new Error("Chat is not initialized");return d.track("agent-rate-delete",{type:"text"}),u.deleteRating(h.id,o.chat.id,O)},async speak(O){var ee,se,ve;function B(){if(typeof O=="string"){if(!h.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:h.presenter.voice,input:O,ssml:!1}}if(O.type==="text"&&!O.provider){if(!h.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:h.presenter.voice,input:O.input,ssml:O.ssml}}return O}const V=B();if(d.track("agent-speak",V),mt.update(),o.messages&&V.type==="text"&&(o.messages.push({id:an(),role:"assistant",content:V.input,parts:_n(V.input),created_at:new Date().toISOString()}),(se=(ee=e.callbacks).onNewMessage)==null||se.call(ee,[...o.messages],"answer")),Dl(o.chatMode))return{duration:0,video_id:"",status:"success"};if(!o.streamingManager)throw new Error("Please connect to the agent first");return o.streamingManager.speak({script:V,metadata:{chat_id:(ve=o.chat)==null?void 0:ve.id,agent_id:h.id}})},interrupt:k,registerClientTool:b,unregisterClientTool:T}}function Du(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 Au=Object.defineProperty,xu=(n,e,t)=>e in n?Au(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,_a=(n,e,t)=>xu(n,typeof e!="symbol"?e+"":e,t);class De{constructor(){_a(this,"_locking"),_a(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 ye(n,e){if(!n)throw new Error(e)}const Lu=34028234663852886e22,Nu=-34028234663852886e22,Uu=4294967295,Fu=2147483647,Bu=-2147483648;function li(n){if(typeof n!="number")throw new Error("invalid int 32: "+typeof n);if(!Number.isInteger(n)||n>Fu||n<Bu)throw new Error("invalid int 32: "+n)}function hr(n){if(typeof n!="number")throw new Error("invalid uint 32: "+typeof n);if(!Number.isInteger(n)||n>Uu||n<0)throw new Error("invalid uint 32: "+n)}function Pa(n){if(typeof n!="number")throw new Error("invalid float 32: "+typeof n);if(Number.isFinite(n)&&(n>Lu||n<Nu))throw new Error("invalid float 32: "+n)}const Ia=Symbol("@bufbuild/protobuf/enum-type");function ju(n){const e=n[Ia];return ye(e,"missing enum type on enum object"),e}function Ma(n,e,t,i){n[Ia]=Oa(e,t.map(r=>({no:r.no,name:r.name,localName:n[r.no]})))}function Oa(n,e,t){const i=Object.create(null),r=Object.create(null),s=[];for(const c of e){const a=Da(c);s.push(a),i[c.name]=a,r[c.no]=a}return{typeName:n,values:s,findName(c){return i[c]},findNumber(c){return r[c]}}}function Vu(n,e,t){const i={};for(const r of e){const s=Da(r);i[s.localName]=s.no,i[s.no]=s.localName}return Ma(i,n,e),i}function Da(n){return"localName"in n?n:Object.assign(Object.assign({},n),{localName:n.name})}class mr{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 qu(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),c={[s]:function(a){n.util.initFields(this),n.util.initPartial(a,this)}}[s];return Object.setPrototypeOf(c.prototype,new mr),Object.assign(c,{runtime:n,typeName:e,fields:n.util.newFieldList(t),fromBinary(a,o){return new c().fromBinary(a,o)},fromJson(a,o){return new c().fromJson(a,o)},fromJsonString(a,o){return new c().fromJsonString(a,o)},equals(a,o){return n.util.equals(c,a,o)}}),c}function Ku(){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))return this.assertBounds(),[n,e]}let t=this.buf[this.pos++];if(n|=(t&15)<<28,e=(t&112)>>4,!(t&128))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))return this.assertBounds(),[n,e]}throw new Error("invalid varint")}function fr(n,e,t){for(let s=0;s<28;s=s+7){const c=n>>>s,a=!(!(c>>>7)&&e==0),o=(a?c|128:c)&255;if(t.push(o),!a)return}const i=n>>>28&15|(e&7)<<4,r=!!(e>>3);if(t.push((r?i|128:i)&255),!!r){for(let s=3;s<31;s=s+7){const c=e>>>s,a=!!(c>>>7),o=(a?c|128:c)&255;if(t.push(o),!a)return}t.push(e>>>31&1)}}const ui=4294967296;function Aa(n){const e=n[0]==="-";e&&(n=n.slice(1));const t=1e6;let i=0,r=0;function s(c,a){const o=Number(n.slice(c,a));r*=t,i=i*t+o,i>=ui&&(r=r+(i/ui|0),i=i%ui)}return s(-24,-18),s(-18,-12),s(-12,-6),s(-6),e?La(i,r):pr(i,r)}function Wu(n,e){let t=pr(n,e);const i=t.hi&2147483648;i&&(t=La(t.lo,t.hi));const r=xa(t.lo,t.hi);return i?"-"+r:r}function xa(n,e){if({lo:n,hi:e}=Hu(n,e),e<=2097151)return String(ui*e+n);const t=n&16777215,i=(n>>>24|e<<8)&16777215,r=e>>16&65535;let s=t+i*6777216+r*6710656,c=i+r*8147497,a=r*2;const o=1e7;return s>=o&&(c+=Math.floor(s/o),s%=o),c>=o&&(a+=Math.floor(c/o),c%=o),a.toString()+Na(c)+Na(s)}function Hu(n,e){return{lo:n>>>0,hi:e>>>0}}function pr(n,e){return{lo:n|0,hi:e|0}}function La(n,e){return e=~e,n?n=~n+1:e+=1,pr(n,e)}const Na=n=>{const e=String(n);return"0000000".slice(e.length)+e};function Ua(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 Ju(){let n=this.buf[this.pos++],e=n&127;if(!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<7,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<14,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<21,!(n&128))return this.assertBounds(),e;n=this.buf[this.pos++],e|=(n&15)<<28;for(let t=5;n&128&&t<10;t++)n=this.buf[this.pos++];if(n&128)throw new Error("invalid varint");return this.assertBounds(),e>>>0}function Gu(){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"),c=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(o){const d=typeof o=="bigint"?o:BigInt(o);if(d>s||d<r)throw new Error("int64 invalid: ".concat(o));return d},uParse(o){const d=typeof o=="bigint"?o:BigInt(o);if(d>a||d<c)throw new Error("uint64 invalid: ".concat(o));return d},enc(o){return n.setBigInt64(0,this.parse(o),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},uEnc(o){return n.setBigInt64(0,this.uParse(o),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},dec(o,d){return n.setInt32(0,o,!0),n.setInt32(4,d,!0),n.getBigInt64(0,!0)},uDec(o,d){return n.setInt32(0,o,!0),n.setInt32(4,d,!0),n.getBigUint64(0,!0)}}}const t=r=>ye(/^-?[0-9]+$/.test(r),"int64 invalid: ".concat(r)),i=r=>ye(/^[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),Aa(r)},uEnc(r){return typeof r!="string"&&(r=r.toString()),i(r),Aa(r)},dec(r,s){return Wu(r,s)},uDec(r,s){return xa(r,s)}}}const fe=Gu();var E;(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"})(E||(E={}));var xt;(function(n){n[n.BIGINT=0]="BIGINT",n[n.STRING=1]="STRING"})(xt||(xt={}));function Lt(n,e,t){if(e===t)return!0;if(n==E.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 E.UINT64:case E.FIXED64:case E.INT64:case E.SFIXED64:case E.SINT64:return e==t}return!1}function on(n,e){switch(n){case E.BOOL:return!1;case E.UINT64:case E.FIXED64:case E.INT64:case E.SFIXED64:case E.SINT64:return e==0?fe.zero:"0";case E.DOUBLE:case E.FLOAT:return 0;case E.BYTES:return new Uint8Array(0);case E.STRING:return"";default:return 0}}function Fa(n,e){switch(n){case E.BOOL:return e===!1;case E.STRING:return e==="";case E.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}var Te;(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"})(Te||(Te={}));class zu{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(hr(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return li(e),Ua(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){Pa(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){hr(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){li(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return li(e),e=(e<<1^e>>31)>>>0,Ua(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),r=fe.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=fe.uEnc(e);return i.setInt32(0,r.lo,!0),i.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=fe.enc(e);return fr(t.lo,t.hi,this.buf),this}sint64(e){let t=fe.enc(e),i=t.hi>>31,r=t.lo<<1^i,s=(t.hi<<1|t.lo>>>31)^i;return fr(r,s,this.buf),this}uint64(e){let t=fe.uEnc(e);return fr(t.lo,t.hi,this.buf),this}}class $u{constructor(e,t){this.varint64=Ku,this.uint32=Ju,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 Te.Varint:for(;this.buf[this.pos++]&128;);break;case Te.Bit64:this.pos+=4;case Te.Bit32:this.pos+=4;break;case Te.LengthDelimited:let r=this.uint32();this.pos+=r;break;case Te.StartGroup:for(;;){const[s,c]=this.tag();if(c===Te.EndGroup){if(t!==void 0&&s!==t)throw new Error("invalid end group tag");break}this.skip(c,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 fe.dec(...this.varint64())}uint64(){return fe.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),i=-(e&1);return e=(e>>>1|(t&1)<<31)^i,t=t>>>1^i,fe.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 fe.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return fe.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 Qu(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 Ba(n){const e=n.field.localName,t=Object.create(null);return t[e]=Yu(n),[t,()=>t[e]]}function Yu(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 on(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 Xu(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 Ct="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),hi=[];for(let n=0;n<Ct.length;n++)hi[Ct[n].charCodeAt(0)]=n;hi[45]=Ct.indexOf("+"),hi[95]=Ct.indexOf("/");const ja={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,c=0;for(let a=0;a<n.length;a++){if(s=hi[n.charCodeAt(a)],s===void 0)switch(n[a]){case"=":r=0;case`
2
2
  `:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string.")}switch(r){case 0:c=s,r=1;break;case 1:t[i++]=c<<2|(s&48)>>4,c=s,r=2;break;case 2:t[i++]=(c&15)<<4|(s&60)>>2,c=s,r=3;break;case 3:t[i++]=(c&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+=Ct[i>>2],r=(i&3)<<4,t=1;break;case 1:e+=Ct[r|i>>4],r=(i&15)<<2,t=2;break;case 2:e+=Ct[r|i>>6],e+=Ct[i&63],t=0;break}return t&&(e+=Ct[r],e+="=",t==1&&(e+="=")),e}};function Zu(n,e,t){qa(e,n);const i=e.runtime.bin.makeReadOptions(t),r=Xu(n.getType().runtime.bin.listUnknownFields(n),e.field),[s,c]=Ba(e);for(const a of r)e.runtime.bin.readField(s,i.readerFactory(a.data),e.field,a.wireType,i);return c()}function eh(n,e,t,i){qa(e,n);const r=e.runtime.bin.makeReadOptions(i),s=e.runtime.bin.makeWriteOptions(i);if(Va(n,e)){const d=n.getType().runtime.bin.listUnknownFields(n).filter(l=>l.no!=e.field.no);n.getType().runtime.bin.discardUnknownFields(n);for(const l of d)n.getType().runtime.bin.onUnknownField(n,l.no,l.wireType,l.data)}const c=s.writerFactory();let a=e.field;!a.opt&&!a.repeated&&(a.kind=="enum"||a.kind=="scalar")&&(a=Object.assign(Object.assign({},e.field),{opt:!0})),e.runtime.bin.writeField(a,t,c,s);const o=r.readerFactory(c.finish());for(;o.pos<o.len;){const[d,l]=o.tag(),u=o.skip(l,d);n.getType().runtime.bin.onUnknownField(n,d,l,u)}}function Va(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 qa(n,e){ye(n.extendee.typeName==e.getType().typeName,"extension ".concat(n.typeName," can only be applied to message ").concat(n.extendee.typeName))}function Ka(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:!Fa(n.T,e[t]);case"message":return e[t]!==void 0;case"map":return Object.keys(e[t]).length>0}}function Wa(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?on(n.T,n.L):void 0;break;case"message":e[t]=void 0;break}}function Et(n,e){if(n===null||typeof n!="object"||!Object.getOwnPropertyNames(mr.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 Ha(n,e){return Et(e)||!n.fieldWrapper?e:n.fieldWrapper.wrapField(e)}E.DOUBLE,E.FLOAT,E.INT64,E.UINT64,E.INT32,E.UINT32,E.BOOL,E.STRING,E.BYTES;const Ja={ignoreUnknownFields:!1},Ga={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function th(n){return n?Object.assign(Object.assign({},Ja),n):Ja}function nh(n){return n?Object.assign(Object.assign({},Ga),n):Ga}const mi=Symbol(),fi=Symbol();function ih(){return{makeReadOptions:th,makeWriteOptions:nh,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(ft(e)));i=i??new n;const r=new Map,s=t.typeRegistry;for(const[c,a]of Object.entries(e)){const o=n.fields.findJsonName(c);if(o){if(o.oneof){if(a===null&&o.kind=="scalar")continue;const d=r.get(o.oneof);if(d!==void 0)throw new Error("cannot decode message ".concat(n.typeName,' from JSON: multiple keys for oneof "').concat(o.oneof.name,'" present: "').concat(d,'", "').concat(c,'"'));r.set(o.oneof,c)}za(i,a,o,t,n)}else{let d=!1;if(s!=null&&s.findExtension&&c.startsWith("[")&&c.endsWith("]")){const l=s.findExtension(c.substring(1,c.length-1));if(l&&l.extendee.typeName==n.typeName){d=!0;const[u,h]=Ba(l);za(u,a,l.field,t,l),eh(i,l,h(),t)}}if(!d&&!t.ignoreUnknownFields)throw new Error("cannot decode message ".concat(n.typeName,' from JSON: key "').concat(c,'" is unknown'))}}return i},writeMessage(n,e){const t=n.getType(),i={};let r;try{for(r of t.fields.byNumber()){if(!Ka(r,n)){if(r.req)throw"required field not set";if(!e.emitDefaultValues||!sh(r))continue}const c=r.oneof?n[r.oneof.localName].value:n[r.localName],a=$a(r,c,e);a!==void 0&&(i[e.useProtoFieldName?r.name:r.jsonName]=a)}const s=e.typeRegistry;if(s!=null&&s.findExtensionFor)for(const c of t.runtime.bin.listUnknownFields(n)){const a=s.findExtensionFor(t.typeName,c.no);if(a&&Va(n,a)){const o=Zu(n,a,e),d=$a(a.field,o,e);d!==void 0&&(i[a.field.jsonName]=d)}}}catch(s){const c=r?"cannot encode field ".concat(t.typeName,".").concat(r.name," to JSON"):"cannot encode message ".concat(t.typeName," to JSON"),a=s instanceof Error?s.message:String(s);throw new Error(c+(a.length>0?": ".concat(a):""))}return i},readScalar(n,e,t){return Mn(n,e,t??xt.BIGINT,!0)},writeScalar(n,e,t){if(e!==void 0&&(t||Fa(n,e)))return pi(n,e)},debug:ft}}function ft(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 za(n,e,t,i,r){let s=t.localName;if(t.repeated){if(ye(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(ft(e)));const c=n[s];for(const a of e){if(a===null)throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(ft(a)));switch(t.kind){case"message":c.push(t.T.fromJson(a,i));break;case"enum":const o=gr(t.T,a,i.ignoreUnknownFields,!0);o!==fi&&c.push(o);break;case"scalar":try{c.push(Mn(t.T,a,t.L,!0))}catch(d){let l="cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(ft(a));throw d instanceof Error&&d.message.length>0&&(l+=": ".concat(d.message)),new Error(l)}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(ft(e)));const c=n[s];for(const[a,o]of Object.entries(e)){if(o===null)throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: map value null"));let d;try{d=rh(t.K,a)}catch(l){let u="cannot decode map key for field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(ft(e));throw l instanceof Error&&l.message.length>0&&(u+=": ".concat(l.message)),new Error(u)}switch(t.V.kind){case"message":c[d]=t.V.T.fromJson(o,i);break;case"enum":const l=gr(t.V.T,o,i.ignoreUnknownFields,!0);l!==fi&&(c[d]=l);break;case"scalar":try{c[d]=Mn(t.V.T,o,xt.BIGINT,!0)}catch(u){let h="cannot decode map value for field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(ft(e));throw u instanceof Error&&u.message.length>0&&(h+=": ".concat(u.message)),new Error(h)}break}}}else switch(t.oneof&&(n=n[t.oneof.localName]={case:s},s="value"),t.kind){case"message":const c=t.T;if(e===null&&c.typeName!="google.protobuf.Value")return;let a=n[s];Et(a)?a.fromJson(e,i):(n[s]=a=c.fromJson(e,i),c.fieldWrapper&&!t.oneof&&(n[s]=c.fieldWrapper.unwrapField(a)));break;case"enum":const o=gr(t.T,e,i.ignoreUnknownFields,!1);switch(o){case mi:Wa(t,n);break;case fi:break;default:n[s]=o;break}break;case"scalar":try{const d=Mn(t.T,e,t.L,!1);switch(d){case mi:Wa(t,n);break;default:n[s]=d;break}}catch(d){let l="cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(ft(e));throw d instanceof Error&&d.message.length>0&&(l+=": ".concat(d.message)),new Error(l)}break}}function rh(n,e){if(n===E.BOOL)switch(e){case"true":e=!0;break;case"false":e=!1;break}return Mn(n,e,xt.BIGINT,!0).toString()}function Mn(n,e,t,i){if(e===null)return i?on(n,t):mi;switch(n){case E.DOUBLE:case E.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==E.FLOAT&&Pa(r),r;case E.INT32:case E.FIXED32:case E.SFIXED32:case E.SINT32:case E.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==E.UINT32||n==E.FIXED32?hr(s):li(s),s;case E.INT64:case E.SFIXED64:case E.SINT64:if(typeof e!="number"&&typeof e!="string")break;const c=fe.parse(e);return t?c.toString():c;case E.FIXED64:case E.UINT64:if(typeof e!="number"&&typeof e!="string")break;const a=fe.uParse(e);return t?a.toString():a;case E.BOOL:if(typeof e!="boolean")break;return e;case E.STRING:if(typeof e!="string")break;try{encodeURIComponent(e)}catch{throw new Error("invalid UTF8")}return e;case E.BYTES:if(e==="")return new Uint8Array(0);if(typeof e!="string")break;return ja.dec(e)}throw new Error}function gr(n,e,t,i){if(e===null)return n.typeName=="google.protobuf.NullValue"?0:i?n.values[0].no:mi;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 fi;break}throw new Error("cannot decode enum ".concat(n.typeName," from JSON: ").concat(ft(e)))}function sh(n){return n.repeated||n.kind=="map"?!0:!(n.oneof||n.kind=="message"||n.opt||n.req)}function $a(n,e,t){if(n.kind=="map"){ye(typeof e=="object"&&e!=null);const i={},r=Object.entries(e);switch(n.V.kind){case"scalar":for(const[c,a]of r)i[c.toString()]=pi(n.V.T,a);break;case"message":for(const[c,a]of r)i[c.toString()]=a.toJson(t);break;case"enum":const s=n.V.T;for(const[c,a]of r)i[c.toString()]=vr(s,a,t.enumAsInteger);break}return t.emitDefaultValues||r.length>0?i:void 0}if(n.repeated){ye(Array.isArray(e));const i=[];switch(n.kind){case"scalar":for(let r=0;r<e.length;r++)i.push(pi(n.T,e[r]));break;case"enum":for(let r=0;r<e.length;r++)i.push(vr(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 pi(n.T,e);case"enum":return vr(n.T,e,t.enumAsInteger);case"message":return Ha(n.T,e).toJson(t)}}function vr(n,e,t){var i;if(ye(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 pi(n,e){switch(n){case E.INT32:case E.SFIXED32:case E.SINT32:case E.FIXED32:case E.UINT32:return ye(typeof e=="number"),e;case E.FLOAT:case E.DOUBLE:return ye(typeof e=="number"),Number.isNaN(e)?"NaN":e===Number.POSITIVE_INFINITY?"Infinity":e===Number.NEGATIVE_INFINITY?"-Infinity":e;case E.STRING:return ye(typeof e=="string"),e;case E.BOOL:return ye(typeof e=="boolean"),e;case E.UINT64:case E.FIXED64:case E.INT64:case E.SFIXED64:case E.SINT64:return ye(typeof e=="bigint"||typeof e=="string"||typeof e=="number"),e.toString();case E.BYTES:return ye(e instanceof Uint8Array),ja.enc(e)}}const cn=Symbol("@bufbuild/protobuf/unknown-fields"),Qa={readUnknownFields:!0,readerFactory:n=>new $u(n)},Ya={writeUnknownFields:!0,writerFactory:()=>new zu};function ah(n){return n?Object.assign(Object.assign({},Qa),n):Qa}function oh(n){return n?Object.assign(Object.assign({},Ya),n):Ya}function ch(){return{makeReadOptions:ah,makeWriteOptions:oh,listUnknownFields(n){var e;return(e=n[cn])!==null&&e!==void 0?e:[]},discardUnknownFields(n){delete n[cn]},writeUnknownFields(n,e){const i=n[cn];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[cn])||(r[cn]=[]),r[cn].push({no:e,wireType:t,data:i})},readMessage(n,e,t,i,r){const s=n.getType(),c=r?e.len:e.pos+t;let a,o;for(;e.pos<c&&([a,o]=e.tag(),!(r===!0&&o==Te.EndGroup));){const d=s.fields.find(a);if(!d){const l=e.skip(o,a);i.readUnknownFields&&this.onUnknownField(n,a,o,l);continue}Xa(n,e,d,o,i)}if(r&&(o!=Te.EndGroup||a!==t))throw new Error("invalid end group tag")},readField:Xa,writeMessage(n,e,t){const i=n.getType();for(const r of i.fields.byNumber()){if(!Ka(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];Za(r,s,e,t)}return t.writeUnknownFields&&this.writeUnknownFields(n,e),e},writeField(n,e,t,i){e!==void 0&&Za(n,e,t,i)}}}function Xa(n,e,t,i,r){let{repeated:s,localName:c}=t;switch(t.oneof&&(n=n[t.oneof.localName],n.case!=c&&delete n.value,n.case=c,c="value"),t.kind){case"scalar":case"enum":const a=t.kind=="enum"?E.INT32:t.T;let o=vi;if(t.kind=="scalar"&&t.L>0&&(o=lh),s){let h=n[c];if(i==Te.LengthDelimited&&a!=E.STRING&&a!=E.BYTES){let v=e.uint32()+e.pos;for(;e.pos<v;)h.push(o(e,a))}else h.push(o(e,a))}else n[c]=o(e,a);break;case"message":const d=t.T;s?n[c].push(gi(e,new d,r,t)):Et(n[c])?gi(e,n[c],r,t):(n[c]=gi(e,new d,r,t),d.fieldWrapper&&!t.oneof&&!t.repeated&&(n[c]=d.fieldWrapper.unwrapField(n[c])));break;case"map":let[l,u]=dh(t,e,r);n[c][l]=u;break}}function gi(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 dh(n,e,t){const i=e.uint32(),r=e.pos+i;let s,c;for(;e.pos<r;){const[a]=e.tag();switch(a){case 1:s=vi(e,n.K);break;case 2:switch(n.V.kind){case"scalar":c=vi(e,n.V.T);break;case"enum":c=e.int32();break;case"message":c=gi(e,new n.V.T,t,void 0);break}break}}if(s===void 0&&(s=on(n.K,xt.BIGINT)),typeof s!="string"&&typeof s!="number"&&(s=s.toString()),c===void 0)switch(n.V.kind){case"scalar":c=on(n.V.T,xt.BIGINT);break;case"enum":c=n.V.T.values[0].no;break;case"message":c=new n.V.T;break}return[s,c]}function lh(n,e){const t=vi(n,e);return typeof t=="bigint"?t.toString():t}function vi(n,e){switch(e){case E.STRING:return n.string();case E.BOOL:return n.bool();case E.DOUBLE:return n.double();case E.FLOAT:return n.float();case E.INT32:return n.int32();case E.INT64:return n.int64();case E.UINT64:return n.uint64();case E.FIXED64:return n.fixed64();case E.BYTES:return n.bytes();case E.FIXED32:return n.fixed32();case E.SFIXED32:return n.sfixed32();case E.SFIXED64:return n.sfixed64();case E.SINT64:return n.sint64();case E.UINT32:return n.uint32();case E.SINT32:return n.sint32()}}function Za(n,e,t,i){ye(e!==void 0);const r=n.repeated;switch(n.kind){case"scalar":case"enum":let s=n.kind=="enum"?E.INT32:n.T;if(r)if(ye(Array.isArray(e)),n.packed)hh(t,s,n.no,e);else for(const c of e)On(t,s,n.no,c);else On(t,s,n.no,e);break;case"message":if(r){ye(Array.isArray(e));for(const c of e)eo(t,i,n,c)}else eo(t,i,n,e);break;case"map":ye(typeof e=="object"&&e!=null);for(const[c,a]of Object.entries(e))uh(t,i,n,c,a);break}}function uh(n,e,t,i,r){n.tag(t.no,Te.LengthDelimited),n.fork();let s=i;switch(t.K){case E.INT32:case E.FIXED32:case E.UINT32:case E.SFIXED32:case E.SINT32:s=Number.parseInt(i);break;case E.BOOL:ye(i=="true"||i=="false"),s=i=="true";break}switch(On(n,t.K,1,s),t.V.kind){case"scalar":On(n,t.V.T,2,r);break;case"enum":On(n,E.INT32,2,r);break;case"message":ye(r!==void 0),n.tag(2,Te.LengthDelimited).bytes(r.toBinary(e));break}n.join()}function eo(n,e,t,i){const r=Ha(t.T,i);t.delimited?n.tag(t.no,Te.StartGroup).raw(r.toBinary(e)).tag(t.no,Te.EndGroup):n.tag(t.no,Te.LengthDelimited).bytes(r.toBinary(e))}function On(n,e,t,i){ye(i!==void 0);let[r,s]=to(e);n.tag(t,r)[s](i)}function hh(n,e,t,i){if(!i.length)return;n.tag(t,Te.LengthDelimited).fork();let[,r]=to(e);for(let s=0;s<i.length;s++)n[r](i[s]);n.join()}function to(n){let e=Te.Varint;switch(n){case E.BYTES:case E.STRING:e=Te.LengthDelimited;break;case E.DOUBLE:case E.FIXED64:case E.SFIXED64:e=Te.Bit64;break;case E.FIXED32:case E.SFIXED32:case E.FLOAT:e=Te.Bit32;break}const t=E[n].toLowerCase();return[e,t]}function mh(){return{setEnumType:Ma,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,c=n;if(c[r]!=null)switch(i.kind){case"oneof":const a=c[r].case;if(a===void 0)continue;const o=i.findField(a);let d=c[r].value;o&&o.kind=="message"&&!Et(d,o.T)?d=new o.T(d):o&&o.kind==="scalar"&&o.T===E.BYTES&&(d=Dn(d)),s[r]={case:a,value:d};break;case"scalar":case"enum":let l=c[r];i.T===E.BYTES&&(l=i.repeated?l.map(Dn):Dn(l)),s[r]=l;break;case"map":switch(i.V.kind){case"scalar":case"enum":if(i.V.T===E.BYTES)for(const[f,v]of Object.entries(c[r]))s[r][f]=Dn(v);else Object.assign(s[r],c[r]);break;case"message":const h=i.V.T;for(const f of Object.keys(c[r])){let v=c[r][f];h.fieldWrapper||(v=new h(v)),s[r][f]=v}break}break;case"message":const u=i.T;if(i.repeated)s[r]=c[r].map(h=>Et(h,u)?h:new u(h));else{const h=c[r];u.fieldWrapper?u.typeName==="google.protobuf.BytesValue"?s[r]=Dn(h):s[r]=h:s[r]=Et(h,u)?h:new u(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((c,a)=>i.T.equals(c,s[a]));case"scalar":return r.every((c,a)=>Lt(i.T,c,s[a]));case"enum":return r.every((c,a)=>Lt(E.INT32,c,s[a]))}throw new Error("repeated cannot contain ".concat(i.kind))}switch(i.kind){case"message":let c=r,a=s;return i.T.fieldWrapper&&(c!==void 0&&!Et(c)&&(c=i.T.fieldWrapper.wrapField(c)),a!==void 0&&!Et(a)&&(a=i.T.fieldWrapper.wrapField(a))),i.T.equals(c,a);case"enum":return Lt(E.INT32,r,s);case"scalar":return Lt(i.T,r,s);case"oneof":if(r.case!==s.case)return!1;const o=i.findField(r.case);if(o===void 0)return!0;switch(o.kind){case"message":return o.T.equals(r.value,s.value);case"enum":return Lt(E.INT32,r.value,s.value);case"scalar":return Lt(o.T,r.value,s.value)}throw new Error("oneof cannot contain ".concat(o.kind));case"map":const d=Object.keys(r).concat(Object.keys(s));switch(i.V.kind){case"message":const l=i.V.T;return d.every(h=>l.equals(r[h],s[h]));case"enum":return d.every(h=>Lt(E.INT32,r[h],s[h]));case"scalar":const u=i.V.T;return d.every(h=>Lt(u,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 c;if(r.repeated)c=s.map(yi);else if(r.kind=="map"){c=i[r.localName];for(const[a,o]of Object.entries(s))c[a]=yi(o)}else r.kind=="oneof"?c=r.findField(s.case)?{case:s.case,value:yi(s.value)}:{case:void 0}:c=yi(s);i[r.localName]=c}for(const r of e.runtime.bin.listUnknownFields(n))e.runtime.bin.onUnknownField(i,r.no,r.wireType,r.data);return t}}}function yi(n){if(n===void 0)return n;if(Et(n))return n.clone();if(n instanceof Uint8Array){const e=new Uint8Array(n.byteLength);return e.set(n),e}return n}function Dn(n){return n instanceof Uint8Array?n:new Uint8Array(n)}function fh(n,e,t){return{syntax:n,json:ih(),bin:ch(),util:Object.assign(Object.assign({},mh()),{newFieldList:e,initFields:t}),makeMessageType(i,r,s){return qu(this,i,r,s)},makeEnum:Vu,makeEnumType:Oa,getEnumType:ju,makeExtension(i,r,s){return Qu(this,i,r,s)}}}class ph{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 no(n,e){const t=io(n);return e?t:Th(kh(t))}function gh(n){return no(n,!1)}const vh=io;function io(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 yh=new Set(["constructor","toString","toJSON","valueOf"]),bh=new Set(["getType","clone","equals","fromBinary","fromJson","fromJsonString","toBinary","toJson","toJsonString","toObject"]),ro=n=>"".concat(n,"$"),kh=n=>bh.has(n)?ro(n):n,Th=n=>yh.has(n)?ro(n):n;class Sh{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=gh(e)}addField(e){ye(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 Ch(n,e){var t,i,r,s,c,a;const o=[];let d;for(const l of typeof n=="function"?n():n){const u=l;if(u.localName=no(l.name,l.oneof!==void 0),u.jsonName=(t=l.jsonName)!==null&&t!==void 0?t:vh(l.name),u.repeated=(i=l.repeated)!==null&&i!==void 0?i:!1,l.kind=="scalar"&&(u.L=(r=l.L)!==null&&r!==void 0?r:xt.BIGINT),u.delimited=(s=l.delimited)!==null&&s!==void 0?s:!1,u.req=(c=l.req)!==null&&c!==void 0?c:!1,u.opt=(a=l.opt)!==null&&a!==void 0?a:!1,l.packed===void 0&&(u.packed=l.kind=="enum"||l.kind=="scalar"&&l.T!=E.BYTES&&l.T!=E.STRING),l.oneof!==void 0){const h=typeof l.oneof=="string"?l.oneof:l.oneof.name;(!d||d.name!=h)&&(d=new Sh(h)),u.oneof=d,d.addField(u)}o.push(u)}return o}const p=fh("proto3",n=>new ph(n,e=>Ch(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]=on(e.T,e.L);break}}});class We extends mr{constructor(e){super(),this.seconds=fe.zero,this.nanos=0,p.util.initPartial(e,this)}fromJson(e,t){if(typeof e!="string")throw new Error("cannot decode google.protobuf.Timestamp from JSON: ".concat(p.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=fe.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 We.fromDate(new Date)}static fromDate(e){const t=e.getTime();return new We({seconds:fe.parse(Math.floor(t/1e3)),nanos:t%1e3*1e6})}static fromBinary(e,t){return new We().fromBinary(e,t)}static fromJson(e,t){return new We().fromJson(e,t)}static fromJsonString(e,t){return new We().fromJsonString(e,t)}static equals(e,t){return p.util.equals(We,e,t)}}We.runtime=p,We.typeName="google.protobuf.Timestamp",We.fields=p.util.newFieldList(()=>[{no:1,name:"seconds",kind:"scalar",T:3},{no:2,name:"nanos",kind:"scalar",T:5}]);const Eh=p.makeMessageType("livekit.MetricsBatch",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:We},{no:3,name:"str_data",kind:"scalar",T:9,repeated:!0},{no:4,name:"time_series",kind:"message",T:wh,repeated:!0},{no:5,name:"events",kind:"message",T:_h,repeated:!0}]),wh=p.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:Rh,repeated:!0},{no:5,name:"rid",kind:"scalar",T:13}]),Rh=p.makeMessageType("livekit.MetricSample",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:We},{no:3,name:"value",kind:"scalar",T:2}]),_h=p.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:We},{no:7,name:"normalized_end_timestamp",kind:"message",T:We,opt:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"rid",kind:"scalar",T:13}]),Ph=p.makeEnum("livekit.AudioCodec",[{no:0,name:"DEFAULT_AC"},{no:1,name:"OPUS"},{no:2,name:"AAC"},{no:3,name:"AC_MP3"}]),Ih=p.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"}]),Mh=p.makeEnum("livekit.ImageCodec",[{no:0,name:"IC_DEFAULT"},{no:1,name:"IC_JPEG"}]),so=p.makeEnum("livekit.BackupCodecPolicy",[{no:0,name:"PREFER_REGRESSION"},{no:1,name:"SIMULCAST"},{no:2,name:"REGRESSION"}]),$e=p.makeEnum("livekit.TrackType",[{no:0,name:"AUDIO"},{no:1,name:"VIDEO"},{no:2,name:"DATA"}]),Ee=p.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"}]),yr=p.makeEnum("livekit.VideoQuality",[{no:0,name:"LOW"},{no:1,name:"MEDIUM"},{no:2,name:"HIGH"},{no:3,name:"OFF"}]),An=p.makeEnum("livekit.ConnectionQuality",[{no:0,name:"POOR"},{no:1,name:"GOOD"},{no:2,name:"EXCELLENT"},{no:3,name:"LOST"}]),xn=p.makeEnum("livekit.ClientConfigSetting",[{no:0,name:"UNSET"},{no:1,name:"DISABLED"},{no:2,name:"ENABLED"}]),Qe=p.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"}]),Jt=p.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"}]),ao=p.makeEnum("livekit.SubscriptionError",[{no:0,name:"SE_UNKNOWN"},{no:1,name:"SE_CODEC_UNSUPPORTED"},{no:2,name:"SE_TRACK_NOTFOUND"}]),Ie=p.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"}]),bi=p.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:ki,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:To}]),ki=p.makeMessageType("livekit.Codec",()=>[{no:1,name:"mime",kind:"scalar",T:9},{no:2,name:"fmtp_line",kind:"scalar",T:9}]),Oh=p.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:p.getEnumType(Ee),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}]),Gt=p.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:p.getEnumType(dn)},{no:4,name:"tracks",kind:"message",T:un,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:Oh},{no:12,name:"region",kind:"scalar",T:9},{no:13,name:"is_publisher",kind:"scalar",T:8},{no:14,name:"kind",kind:"enum",T:p.getEnumType(ln)},{no:15,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:16,name:"disconnect_reason",kind:"enum",T:p.getEnumType(Qe)},{no:18,name:"kind_details",kind:"enum",T:p.getEnumType(Dh),repeated:!0},{no:19,name:"data_tracks",kind:"message",T:br,repeated:!0}]),dn=p.makeEnum("livekit.ParticipantInfo.State",[{no:0,name:"JOINING"},{no:1,name:"JOINED"},{no:2,name:"ACTIVE"},{no:3,name:"DISCONNECTED"}]),ln=p.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"}]),Dh=p.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"}]),be=p.makeEnum("livekit.Encryption.Type",[{no:0,name:"NONE"},{no:1,name:"GCM"},{no:2,name:"CUSTOM"}]),Ah=p.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:Nt,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:p.getEnumType(oo)},{no:6,name:"sdp_cid",kind:"scalar",T:9}]),un=p.makeMessageType("livekit.TrackInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"type",kind:"enum",T:p.getEnumType($e)},{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:p.getEnumType(Ee)},{no:10,name:"layers",kind:"message",T:Nt,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:Ah,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:p.getEnumType(be)},{no:17,name:"stream",kind:"scalar",T:9},{no:18,name:"version",kind:"message",T:To},{no:19,name:"audio_features",kind:"enum",T:p.getEnumType(Ie),repeated:!0},{no:20,name:"backup_codec_policy",kind:"enum",T:p.getEnumType(so)}]),br=p.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:p.getEnumType(be)}]),xh=p.makeMessageType("livekit.DataTrackSubscriptionOptions",()=>[{no:1,name:"target_fps",kind:"scalar",T:13,opt:!0}]),Nt=p.makeMessageType("livekit.VideoLayer",()=>[{no:1,name:"quality",kind:"enum",T:p.getEnumType(yr)},{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}]),oo=p.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"}]),Be=p.makeMessageType("livekit.DataPacket",()=>[{no:1,name:"kind",kind:"enum",T:p.getEnumType(z)},{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:kr,oneof:"value"},{no:3,name:"speaker",kind:"message",T:Lh,oneof:"value"},{no:6,name:"sip_dtmf",kind:"message",T:ho,oneof:"value"},{no:7,name:"transcription",kind:"message",T:Nh,oneof:"value"},{no:8,name:"metrics",kind:"message",T:Eh,oneof:"value"},{no:9,name:"chat_message",kind:"message",T:Ti,oneof:"value"},{no:10,name:"rpc_request",kind:"message",T:Tr,oneof:"value"},{no:11,name:"rpc_ack",kind:"message",T:Sr,oneof:"value"},{no:12,name:"rpc_response",kind:"message",T:Cr,oneof:"value"},{no:13,name:"stream_header",kind:"message",T:Si,oneof:"value"},{no:14,name:"stream_chunk",kind:"message",T:Ci,oneof:"value"},{no:15,name:"stream_trailer",kind:"message",T:Ei,oneof:"value"},{no:18,name:"encrypted_packet",kind:"message",T:co,oneof:"value"},{no:16,name:"sequence",kind:"scalar",T:13},{no:17,name:"participant_sid",kind:"scalar",T:9}]),z=p.makeEnum("livekit.DataPacket.Kind",[{no:0,name:"RELIABLE"},{no:1,name:"LOSSY"}]),co=p.makeMessageType("livekit.EncryptedPacket",()=>[{no:1,name:"encryption_type",kind:"enum",T:p.getEnumType(be)},{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}]),lo=p.makeMessageType("livekit.EncryptedPacketPayload",()=>[{no:1,name:"user",kind:"message",T:kr,oneof:"value"},{no:3,name:"chat_message",kind:"message",T:Ti,oneof:"value"},{no:4,name:"rpc_request",kind:"message",T:Tr,oneof:"value"},{no:5,name:"rpc_ack",kind:"message",T:Sr,oneof:"value"},{no:6,name:"rpc_response",kind:"message",T:Cr,oneof:"value"},{no:7,name:"stream_header",kind:"message",T:Si,oneof:"value"},{no:8,name:"stream_chunk",kind:"message",T:Ci,oneof:"value"},{no:9,name:"stream_trailer",kind:"message",T:Ei,oneof:"value"}]),Lh=p.makeMessageType("livekit.ActiveSpeakerUpdate",()=>[{no:1,name:"speakers",kind:"message",T:uo,repeated:!0}]),uo=p.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}]),kr=p.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}]),ho=p.makeMessageType("livekit.SipDTMF",()=>[{no:3,name:"code",kind:"scalar",T:13},{no:4,name:"digit",kind:"scalar",T:9}]),Nh=p.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:Uh,repeated:!0}]),Uh=p.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}]),Ti=p.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}]),Tr=p.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}]),Sr=p.makeMessageType("livekit.RpcAck",()=>[{no:1,name:"request_id",kind:"scalar",T:9}]),Cr=p.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:mo,oneof:"value"}]),mo=p.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}]),fo=p.makeMessageType("livekit.ParticipantTracks",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sids",kind:"scalar",T:9,repeated:!0}]),po=p.makeMessageType("livekit.ServerInfo",()=>[{no:1,name:"edition",kind:"enum",T:p.getEnumType(go)},{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}]),go=p.makeEnum("livekit.ServerInfo.Edition",[{no:0,name:"Standard"},{no:1,name:"Cloud"}]),vo=p.makeMessageType("livekit.ClientInfo",()=>[{no:1,name:"sdk",kind:"enum",T:p.getEnumType(yo)},{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}]),yo=p.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"}]),bo=p.makeMessageType("livekit.ClientConfiguration",()=>[{no:1,name:"video",kind:"message",T:ko},{no:2,name:"screen",kind:"message",T:ko},{no:3,name:"resume_connection",kind:"enum",T:p.getEnumType(xn)},{no:4,name:"disabled_codecs",kind:"message",T:Fh},{no:5,name:"force_relay",kind:"enum",T:p.getEnumType(xn)}]),ko=p.makeMessageType("livekit.VideoConfiguration",()=>[{no:1,name:"hardware_encoder",kind:"enum",T:p.getEnumType(xn)}]),Fh=p.makeMessageType("livekit.DisabledCodecs",()=>[{no:1,name:"codecs",kind:"message",T:ki,repeated:!0},{no:2,name:"publish",kind:"message",T:ki,repeated:!0}]),To=p.makeMessageType("livekit.TimedVersion",()=>[{no:1,name:"unix_micro",kind:"scalar",T:3},{no:2,name:"ticks",kind:"scalar",T:5}]),Er=p.makeEnum("livekit.DataStream.OperationType",[{no:0,name:"CREATE"},{no:1,name:"UPDATE"},{no:2,name:"DELETE"},{no:3,name:"REACTION"}]),So=p.makeMessageType("livekit.DataStream.TextHeader",()=>[{no:1,name:"operation_type",kind:"enum",T:p.getEnumType(Er)},{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"}),Co=p.makeMessageType("livekit.DataStream.ByteHeader",()=>[{no:1,name:"name",kind:"scalar",T:9}],{localName:"DataStream_ByteHeader"}),Si=p.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:p.getEnumType(be)},{no:8,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:9,name:"text_header",kind:"message",T:So,oneof:"content_header"},{no:10,name:"byte_header",kind:"message",T:Co,oneof:"content_header"}],{localName:"DataStream_Header"}),Ci=p.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"}),Ei=p.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"}),Bh=p.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}]),jh=p.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:Bh}]),Vh=p.makeMessageType("livekit.SubscribedAudioCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"enabled",kind:"scalar",T:8}]),wr=p.makeMessageType("livekit.RoomAgentDispatch",()=>[{no:1,name:"agent_name",kind:"scalar",T:9},{no:2,name:"metadata",kind:"scalar",T:9}]),st=p.makeEnum("livekit.SignalTarget",[{no:0,name:"PUBLISHER"},{no:1,name:"SUBSCRIBER"}]),Rr=p.makeEnum("livekit.StreamState",[{no:0,name:"ACTIVE"},{no:1,name:"PAUSED"}]),qh=p.makeEnum("livekit.CandidateProtocol",[{no:0,name:"UDP"},{no:1,name:"TCP"},{no:2,name:"TLS"}]),Kh=p.makeMessageType("livekit.SignalRequest",()=>[{no:1,name:"offer",kind:"message",T:Ut,oneof:"message"},{no:2,name:"answer",kind:"message",T:Ut,oneof:"message"},{no:3,name:"trickle",kind:"message",T:wi,oneof:"message"},{no:4,name:"add_track",kind:"message",T:Ln,oneof:"message"},{no:5,name:"mute",kind:"message",T:Ri,oneof:"message"},{no:6,name:"subscription",kind:"message",T:_i,oneof:"message"},{no:7,name:"track_setting",kind:"message",T:Po,oneof:"message"},{no:8,name:"leave",kind:"message",T:Pi,oneof:"message"},{no:10,name:"update_layers",kind:"message",T:Mo,oneof:"message"},{no:11,name:"subscription_permission",kind:"message",T:Ao,oneof:"message"},{no:12,name:"sync_state",kind:"message",T:Dr,oneof:"message"},{no:13,name:"simulate",kind:"message",T:pt,oneof:"message"},{no:14,name:"ping",kind:"scalar",T:3,oneof:"message"},{no:15,name:"update_metadata",kind:"message",T:Mr,oneof:"message"},{no:16,name:"ping_req",kind:"message",T:No,oneof:"message"},{no:17,name:"update_audio_track",kind:"message",T:Ir,oneof:"message"},{no:18,name:"update_video_track",kind:"message",T:Io,oneof:"message"},{no:19,name:"publish_data_track_request",kind:"message",T:wo,oneof:"message"},{no:20,name:"unpublish_data_track_request",kind:"message",T:_o,oneof:"message"},{no:21,name:"update_data_subscription",kind:"message",T:Yh,oneof:"message"}]),Eo=p.makeMessageType("livekit.SignalResponse",()=>[{no:1,name:"join",kind:"message",T:Gh,oneof:"message"},{no:2,name:"answer",kind:"message",T:Ut,oneof:"message"},{no:3,name:"offer",kind:"message",T:Ut,oneof:"message"},{no:4,name:"trickle",kind:"message",T:wi,oneof:"message"},{no:5,name:"update",kind:"message",T:Qh,oneof:"message"},{no:6,name:"track_published",kind:"message",T:Pr,oneof:"message"},{no:8,name:"leave",kind:"message",T:Pi,oneof:"message"},{no:9,name:"mute",kind:"message",T:Ri,oneof:"message"},{no:10,name:"speakers_changed",kind:"message",T:Zh,oneof:"message"},{no:11,name:"room_update",kind:"message",T:em,oneof:"message"},{no:12,name:"connection_quality",kind:"message",T:nm,oneof:"message"},{no:13,name:"stream_state_update",kind:"message",T:rm,oneof:"message"},{no:14,name:"subscribed_quality_update",kind:"message",T:am,oneof:"message"},{no:15,name:"subscription_permission_update",kind:"message",T:cm,oneof:"message"},{no:16,name:"refresh_token",kind:"scalar",T:9,oneof:"message"},{no:17,name:"track_unpublished",kind:"message",T:$h,oneof:"message"},{no:18,name:"pong",kind:"scalar",T:3,oneof:"message"},{no:19,name:"reconnect",kind:"message",T:zh,oneof:"message"},{no:20,name:"pong_resp",kind:"message",T:lm,oneof:"message"},{no:21,name:"subscription_response",kind:"message",T:mm,oneof:"message"},{no:22,name:"request_response",kind:"message",T:fm,oneof:"message"},{no:23,name:"track_subscribed",kind:"message",T:pm,oneof:"message"},{no:24,name:"room_moved",kind:"message",T:dm,oneof:"message"},{no:25,name:"media_sections_requirement",kind:"message",T:bm,oneof:"message"},{no:26,name:"subscribed_audio_codec_update",kind:"message",T:om,oneof:"message"},{no:27,name:"publish_data_track_response",kind:"message",T:Ro,oneof:"message"},{no:28,name:"unpublish_data_track_response",kind:"message",T:Wh,oneof:"message"},{no:29,name:"data_track_subscriber_handles",kind:"message",T:Hh,oneof:"message"}]),_r=p.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:Nt,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:p.getEnumType(oo)}]),Ln=p.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:p.getEnumType($e)},{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:p.getEnumType(Ee)},{no:9,name:"layers",kind:"message",T:Nt,repeated:!0},{no:10,name:"simulcast_codecs",kind:"message",T:_r,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:p.getEnumType(be)},{no:15,name:"stream",kind:"scalar",T:9},{no:16,name:"backup_codec_policy",kind:"enum",T:p.getEnumType(so)},{no:17,name:"audio_features",kind:"enum",T:p.getEnumType(Ie),repeated:!0}]),wo=p.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:p.getEnumType(be)}]),Ro=p.makeMessageType("livekit.PublishDataTrackResponse",()=>[{no:1,name:"info",kind:"message",T:br}]),_o=p.makeMessageType("livekit.UnpublishDataTrackRequest",()=>[{no:1,name:"pub_handle",kind:"scalar",T:13}]),Wh=p.makeMessageType("livekit.UnpublishDataTrackResponse",()=>[{no:1,name:"info",kind:"message",T:br}]),Hh=p.makeMessageType("livekit.DataTrackSubscriberHandles",()=>[{no:1,name:"sub_handles",kind:"map",K:13,V:{kind:"message",T:Jh}}]),Jh=p.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"}),wi=p.makeMessageType("livekit.TrickleRequest",()=>[{no:1,name:"candidateInit",kind:"scalar",T:9},{no:2,name:"target",kind:"enum",T:p.getEnumType(st)},{no:3,name:"final",kind:"scalar",T:8}]),Ri=p.makeMessageType("livekit.MuteTrackRequest",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"muted",kind:"scalar",T:8}]),Gh=p.makeMessageType("livekit.JoinResponse",()=>[{no:1,name:"room",kind:"message",T:bi},{no:2,name:"participant",kind:"message",T:Gt},{no:3,name:"other_participants",kind:"message",T:Gt,repeated:!0},{no:4,name:"server_version",kind:"scalar",T:9},{no:5,name:"ice_servers",kind:"message",T:Oo,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:bo},{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:po},{no:13,name:"sif_trailer",kind:"scalar",T:12},{no:14,name:"enabled_publish_codecs",kind:"message",T:ki,repeated:!0},{no:15,name:"fast_publish",kind:"scalar",T:8}]),zh=p.makeMessageType("livekit.ReconnectResponse",()=>[{no:1,name:"ice_servers",kind:"message",T:Oo,repeated:!0},{no:2,name:"client_configuration",kind:"message",T:bo},{no:3,name:"server_info",kind:"message",T:po},{no:4,name:"last_message_seq",kind:"scalar",T:13}]),Pr=p.makeMessageType("livekit.TrackPublishedResponse",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"track",kind:"message",T:un}]),$h=p.makeMessageType("livekit.TrackUnpublishedResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),Ut=p.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}}]),Qh=p.makeMessageType("livekit.ParticipantUpdate",()=>[{no:1,name:"participants",kind:"message",T:Gt,repeated:!0}]),_i=p.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:fo,repeated:!0}]),Yh=p.makeMessageType("livekit.UpdateDataSubscription",()=>[{no:1,name:"updates",kind:"message",T:Xh,repeated:!0}]),Xh=p.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:xh}],{localName:"UpdateDataSubscription_Update"}),Po=p.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:p.getEnumType(yr)},{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}]),Ir=p.makeMessageType("livekit.UpdateLocalAudioTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"features",kind:"enum",T:p.getEnumType(Ie),repeated:!0}]),Io=p.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}]),Pi=p.makeMessageType("livekit.LeaveRequest",()=>[{no:1,name:"can_reconnect",kind:"scalar",T:8},{no:2,name:"reason",kind:"enum",T:p.getEnumType(Qe)},{no:3,name:"action",kind:"enum",T:p.getEnumType(hn)},{no:4,name:"regions",kind:"message",T:um}]),hn=p.makeEnum("livekit.LeaveRequest.Action",[{no:0,name:"DISCONNECT"},{no:1,name:"RESUME"},{no:2,name:"RECONNECT"}]),Mo=p.makeMessageType("livekit.UpdateVideoLayers",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"layers",kind:"message",T:Nt,repeated:!0}]),Mr=p.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}]),Oo=p.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}]),Zh=p.makeMessageType("livekit.SpeakersChanged",()=>[{no:1,name:"speakers",kind:"message",T:uo,repeated:!0}]),em=p.makeMessageType("livekit.RoomUpdate",()=>[{no:1,name:"room",kind:"message",T:bi}]),tm=p.makeMessageType("livekit.ConnectionQualityInfo",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"quality",kind:"enum",T:p.getEnumType(An)},{no:3,name:"score",kind:"scalar",T:2}]),nm=p.makeMessageType("livekit.ConnectionQualityUpdate",()=>[{no:1,name:"updates",kind:"message",T:tm,repeated:!0}]),im=p.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:p.getEnumType(Rr)}]),rm=p.makeMessageType("livekit.StreamStateUpdate",()=>[{no:1,name:"stream_states",kind:"message",T:im,repeated:!0}]),Or=p.makeMessageType("livekit.SubscribedQuality",()=>[{no:1,name:"quality",kind:"enum",T:p.getEnumType(yr)},{no:2,name:"enabled",kind:"scalar",T:8}]),sm=p.makeMessageType("livekit.SubscribedCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"qualities",kind:"message",T:Or,repeated:!0}]),am=p.makeMessageType("livekit.SubscribedQualityUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_qualities",kind:"message",T:Or,repeated:!0},{no:3,name:"subscribed_codecs",kind:"message",T:sm,repeated:!0}]),om=p.makeMessageType("livekit.SubscribedAudioCodecUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_audio_codecs",kind:"message",T:Vh,repeated:!0}]),Do=p.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}]),Ao=p.makeMessageType("livekit.SubscriptionPermission",()=>[{no:1,name:"all_participants",kind:"scalar",T:8},{no:2,name:"track_permissions",kind:"message",T:Do,repeated:!0}]),cm=p.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}]),dm=p.makeMessageType("livekit.RoomMovedResponse",()=>[{no:1,name:"room",kind:"message",T:bi},{no:2,name:"token",kind:"scalar",T:9},{no:3,name:"participant",kind:"message",T:Gt},{no:4,name:"other_participants",kind:"message",T:Gt,repeated:!0}]),Dr=p.makeMessageType("livekit.SyncState",()=>[{no:1,name:"answer",kind:"message",T:Ut},{no:2,name:"subscription",kind:"message",T:_i},{no:3,name:"publish_tracks",kind:"message",T:Pr,repeated:!0},{no:4,name:"data_channels",kind:"message",T:Lo,repeated:!0},{no:5,name:"offer",kind:"message",T:Ut},{no:6,name:"track_sids_disabled",kind:"scalar",T:9,repeated:!0},{no:7,name:"datachannel_receive_states",kind:"message",T:xo,repeated:!0},{no:8,name:"publish_data_tracks",kind:"message",T:Ro,repeated:!0}]),xo=p.makeMessageType("livekit.DataChannelReceiveState",()=>[{no:1,name:"publisher_sid",kind:"scalar",T:9},{no:2,name:"last_seq",kind:"scalar",T:13}]),Lo=p.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:p.getEnumType(st)}]),pt=p.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:p.getEnumType(qh),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"}]),No=p.makeMessageType("livekit.Ping",()=>[{no:1,name:"timestamp",kind:"scalar",T:3},{no:2,name:"rtt",kind:"scalar",T:3}]),lm=p.makeMessageType("livekit.Pong",()=>[{no:1,name:"last_ping_timestamp",kind:"scalar",T:3},{no:2,name:"timestamp",kind:"scalar",T:3}]),um=p.makeMessageType("livekit.RegionSettings",()=>[{no:1,name:"regions",kind:"message",T:hm,repeated:!0}]),hm=p.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}]),mm=p.makeMessageType("livekit.SubscriptionResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"err",kind:"enum",T:p.getEnumType(ao)}]),fm=p.makeMessageType("livekit.RequestResponse",()=>[{no:1,name:"request_id",kind:"scalar",T:13},{no:2,name:"reason",kind:"enum",T:p.getEnumType(Ar)},{no:3,name:"message",kind:"scalar",T:9},{no:4,name:"trickle",kind:"message",T:wi,oneof:"request"},{no:5,name:"add_track",kind:"message",T:Ln,oneof:"request"},{no:6,name:"mute",kind:"message",T:Ri,oneof:"request"},{no:7,name:"update_metadata",kind:"message",T:Mr,oneof:"request"},{no:8,name:"update_audio_track",kind:"message",T:Ir,oneof:"request"},{no:9,name:"update_video_track",kind:"message",T:Io,oneof:"request"},{no:10,name:"publish_data_track",kind:"message",T:wo,oneof:"request"},{no:11,name:"unpublish_data_track",kind:"message",T:_o,oneof:"request"}]),Ar=p.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"}]),pm=p.makeMessageType("livekit.TrackSubscribed",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),Uo=p.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}]),gm=p.makeMessageType("livekit.JoinRequest",()=>[{no:1,name:"client_info",kind:"message",T:vo},{no:2,name:"connection_settings",kind:"message",T:Uo},{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:Ln,repeated:!0},{no:6,name:"publisher_offer",kind:"message",T:Ut},{no:7,name:"reconnect",kind:"scalar",T:8},{no:8,name:"reconnect_reason",kind:"enum",T:p.getEnumType(Jt)},{no:9,name:"participant_sid",kind:"scalar",T:9},{no:10,name:"sync_state",kind:"message",T:Dr}]),vm=p.makeMessageType("livekit.WrappedJoinRequest",()=>[{no:1,name:"compression",kind:"enum",T:p.getEnumType(ym)},{no:2,name:"join_request",kind:"scalar",T:12}]),ym=p.makeEnum("livekit.WrappedJoinRequest.Compression",[{no:0,name:"NONE"},{no:1,name:"GZIP"}]),bm=p.makeMessageType("livekit.MediaSectionsRequirement",()=>[{no:1,name:"num_audios",kind:"scalar",T:13},{no:2,name:"num_videos",kind:"scalar",T:13}]),km=p.makeEnum("livekit.EncodedFileType",[{no:0,name:"DEFAULT_FILETYPE"},{no:1,name:"MP4"},{no:2,name:"OGG"},{no:3,name:"MP3"}]),Tm=p.makeEnum("livekit.SegmentedFileProtocol",[{no:0,name:"DEFAULT_SEGMENTED_FILE_PROTOCOL"},{no:1,name:"HLS_PROTOCOL"}]),Sm=p.makeEnum("livekit.SegmentedFileSuffix",[{no:0,name:"INDEX"},{no:1,name:"TIMESTAMP"}]),Cm=p.makeEnum("livekit.ImageFileSuffix",[{no:0,name:"IMAGE_SUFFIX_INDEX"},{no:1,name:"IMAGE_SUFFIX_TIMESTAMP"},{no:2,name:"IMAGE_SUFFIX_NONE_OVERWRITE"}]),Em=p.makeEnum("livekit.StreamProtocol",[{no:0,name:"DEFAULT_PROTOCOL"},{no:1,name:"RTMP"},{no:2,name:"SRT"}]),wm=p.makeEnum("livekit.AudioMixing",[{no:0,name:"DEFAULT_MIXING"},{no:1,name:"DUAL_CHANNEL_AGENT"},{no:2,name:"DUAL_CHANNEL_ALTERNATE"}]),Fo=p.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"}]),Rm=p.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:p.getEnumType(wm)},{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:xr,oneof:"output"},{no:7,name:"stream",kind:"message",T:jo,oneof:"output"},{no:10,name:"segments",kind:"message",T:Lr,oneof:"output"},{no:8,name:"preset",kind:"enum",T:p.getEnumType(Fo),oneof:"options"},{no:9,name:"advanced",kind:"message",T:Vo,oneof:"options"},{no:11,name:"file_outputs",kind:"message",T:xr,repeated:!0},{no:12,name:"stream_outputs",kind:"message",T:jo,repeated:!0},{no:13,name:"segment_outputs",kind:"message",T:Lr,repeated:!0},{no:14,name:"image_outputs",kind:"message",T:_m,repeated:!0},{no:16,name:"webhooks",kind:"message",T:jh,repeated:!0}]),xr=p.makeMessageType("livekit.EncodedFileOutput",()=>[{no:1,name:"file_type",kind:"enum",T:p.getEnumType(km)},{no:2,name:"filepath",kind:"scalar",T:9},{no:6,name:"disable_manifest",kind:"scalar",T:8},{no:3,name:"s3",kind:"message",T:Ii,oneof:"output"},{no:4,name:"gcp",kind:"message",T:Mi,oneof:"output"},{no:5,name:"azure",kind:"message",T:Oi,oneof:"output"},{no:7,name:"aliOSS",kind:"message",T:Di,oneof:"output"}]),Lr=p.makeMessageType("livekit.SegmentedFileOutput",()=>[{no:1,name:"protocol",kind:"enum",T:p.getEnumType(Tm)},{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:p.getEnumType(Sm)},{no:8,name:"disable_manifest",kind:"scalar",T:8},{no:5,name:"s3",kind:"message",T:Ii,oneof:"output"},{no:6,name:"gcp",kind:"message",T:Mi,oneof:"output"},{no:7,name:"azure",kind:"message",T:Oi,oneof:"output"},{no:9,name:"aliOSS",kind:"message",T:Di,oneof:"output"}]),_m=p.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:p.getEnumType(Cm)},{no:6,name:"image_codec",kind:"enum",T:p.getEnumType(Mh)},{no:7,name:"disable_manifest",kind:"scalar",T:8},{no:8,name:"s3",kind:"message",T:Ii,oneof:"output"},{no:9,name:"gcp",kind:"message",T:Mi,oneof:"output"},{no:10,name:"azure",kind:"message",T:Oi,oneof:"output"},{no:11,name:"aliOSS",kind:"message",T:Di,oneof:"output"}]),Ii=p.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:Bo}]),Mi=p.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:Bo}]),Oi=p.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}]),Di=p.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}]),Bo=p.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}]),jo=p.makeMessageType("livekit.StreamOutput",()=>[{no:1,name:"protocol",kind:"enum",T:p.getEnumType(Em)},{no:2,name:"urls",kind:"scalar",T:9,repeated:!0}]),Vo=p.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:p.getEnumType(Ph)},{no:6,name:"audio_bitrate",kind:"scalar",T:5},{no:11,name:"audio_quality",kind:"scalar",T:5},{no:7,name:"audio_frequency",kind:"scalar",T:5},{no:8,name:"video_codec",kind:"enum",T:p.getEnumType(Ih)},{no:9,name:"video_bitrate",kind:"scalar",T:5},{no:12,name:"video_quality",kind:"scalar",T:5},{no:10,name:"key_frame_interval",kind:"scalar",T:1}]),Pm=p.makeMessageType("livekit.AutoParticipantEgress",()=>[{no:1,name:"preset",kind:"enum",T:p.getEnumType(Fo),oneof:"options"},{no:2,name:"advanced",kind:"message",T:Vo,oneof:"options"},{no:3,name:"file_outputs",kind:"message",T:xr,repeated:!0},{no:4,name:"segment_outputs",kind:"message",T:Lr,repeated:!0}]),Im=p.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:Ii,oneof:"output"},{no:3,name:"gcp",kind:"message",T:Mi,oneof:"output"},{no:4,name:"azure",kind:"message",T:Oi,oneof:"output"},{no:6,name:"aliOSS",kind:"message",T:Di,oneof:"output"}]),Mm=p.makeMessageType("livekit.RoomEgress",()=>[{no:1,name:"room",kind:"message",T:Rm},{no:3,name:"participant",kind:"message",T:Pm},{no:2,name:"tracks",kind:"message",T:Im}]),Ai=p.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:Mm},{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:wr,repeated:!0}]),Om=p.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:Ai,opt:!0}]),qo=p.makeMessageType("livekit.TokenSourceResponse",()=>[{no:1,name:"server_url",kind:"scalar",T:9},{no:2,name:"participant_token",kind:"scalar",T:9}]);function Dm(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var xi={exports:{}},Am=xi.exports,Ko;function xm(){return Ko||(Ko=1,function(n){(function(e,t){n.exports?n.exports=t():e.log=t()})(Am,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={},c=null;function a(g,S){var k=g[S];if(typeof k.bind=="function")return k.bind(g);try{return Function.prototype.bind.call(k,g)}catch{return function(){return Function.prototype.apply.apply(k,[g,arguments])}}}function o(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function d(g){return g==="debug"&&(g="log"),typeof console===t?!1:g==="trace"&&i?o:console[g]!==void 0?a(console,g):console.log!==void 0?a(console,"log"):e}function l(){for(var g=this.getLevel(),S=0;S<r.length;S++){var k=r[S];this[k]=S<g?e:this.methodFactory(k,g,this.name)}if(this.log=this.debug,typeof console===t&&g<this.levels.SILENT)return"No console available for logging"}function u(g){return function(){typeof console!==t&&(l.call(this),this[g].apply(this,arguments))}}function h(g,S,k){return d(g)||u.apply(this,arguments)}function f(g,S){var k=this,w,_,y,b="loglevel";typeof g=="string"?b+=":"+g:typeof g=="symbol"&&(b=void 0);function T(U){var H=(r[U]||"silent").toUpperCase();if(!(typeof window===t||!b)){try{window.localStorage[b]=H;return}catch{}try{window.document.cookie=encodeURIComponent(b)+"="+H+";"}catch{}}}function N(){var U;if(!(typeof window===t||!b)){try{U=window.localStorage[b]}catch{}if(typeof U===t)try{var H=window.document.cookie,ae=encodeURIComponent(b),Ce=H.indexOf(ae+"=");Ce!==-1&&(U=/^([^;]+)/.exec(H.slice(Ce+ae.length+1))[1])}catch{}return k.levels[U]===void 0&&(U=void 0),U}}function F(){if(!(typeof window===t||!b)){try{window.localStorage.removeItem(b)}catch{}try{window.document.cookie=encodeURIComponent(b)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function M(U){var H=U;if(typeof H=="string"&&k.levels[H.toUpperCase()]!==void 0&&(H=k.levels[H.toUpperCase()]),typeof H=="number"&&H>=0&&H<=k.levels.SILENT)return H;throw new TypeError("log.setLevel() called with invalid level: "+U)}k.name=g,k.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},k.methodFactory=S||h,k.getLevel=function(){return y??_??w},k.setLevel=function(U,H){return y=M(U),H!==!1&&T(y),l.call(k)},k.setDefaultLevel=function(U){_=M(U),N()||k.setLevel(U,!1)},k.resetLevel=function(){y=null,F(),l.call(k)},k.enableAll=function(U){k.setLevel(k.levels.TRACE,U)},k.disableAll=function(U){k.setLevel(k.levels.SILENT,U)},k.rebuild=function(){if(c!==k&&(w=M(c.getLevel())),l.call(k),c===k)for(var U in s)s[U].rebuild()},w=M(c?c.getLevel():"WARN");var D=N();D!=null&&(y=M(D)),l.call(k)}c=new f,c.getLogger=function(S){if(typeof S!="symbol"&&typeof S!="string"||S==="")throw new TypeError("You must supply a name when creating a logger.");var k=s[S];return k||(k=s[S]=new f(S,c.methodFactory)),k};var v=typeof window!==t?window.log:void 0;return c.noConflict=function(){return typeof window!==t&&window.log===c&&(window.log=v),c},c.getLoggers=function(){return s},c.default=c,c})}(xi)),xi.exports}var Nn=xm(),mn;(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"})(mn||(mn={}));var Ge;(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"})(Ge||(Ge={}));let G=Nn.getLogger("livekit");const Wo=Object.values(Ge).map(n=>Nn.getLogger(n));G.setDefaultLevel(mn.info);function at(n){const e=Nn.getLogger(n);return e.setDefaultLevel(G.getLevel()),e}function Lm(n,e){if(e)Nn.getLogger(e).setLevel(n);else for(const t of Wo)t.setLevel(n)}function Nm(n,e){(e?[e]:Wo).forEach(i=>{const r=i.methodFactory;i.methodFactory=(s,c,a)=>{const o=r(s,c,a),d=mn[s],l=d>=c&&d<mn.silent;return(u,h)=>{h?o(u,h):o(u),l&&n(d,u,h)}},i.setLevel(i.getLevel())})}const Um=Nn.getLogger("lk-e2ee"),Un=7e3,Fm=[0,300,2*2*300,3*3*300,4*4*300,Un,Un,Un,Un,Un];class Ho{constructor(e){this._retryDelays=e!==void 0?[...e]:Fm}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 Nr(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(c){c(s)})}return new(t||(t=Promise))(function(s,c){function a(l){try{d(i.next(l))}catch(u){c(u)}}function o(l){try{d(i.throw(l))}catch(u){c(u)}}function d(l){l.done?s(l.value):r(l.value).then(a,o)}d((i=i.apply(n,e||[])).next())})}function Jo(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 wt(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 Jo=="function"?Jo(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(c){return new Promise(function(a,o){c=n[s](c),r(a,o,c.done,c.value)})}}function r(s,c,a,o){Promise.resolve(o).then(function(d){s({value:d,done:a})},c)}}typeof SuppressedError=="function"&&SuppressedError;var Li={exports:{}},Go;function Bm(){if(Go)return Li.exports;Go=1;var n=typeof Reflect=="object"?Reflect:null,e=n&&typeof n.apply=="function"?n.apply:function(b,T,N){return Function.prototype.apply.call(b,T,N)},t;n&&typeof n.ownKeys=="function"?t=n.ownKeys:Object.getOwnPropertySymbols?t=function(b){return Object.getOwnPropertyNames(b).concat(Object.getOwnPropertySymbols(b))}:t=function(b){return Object.getOwnPropertyNames(b)};function i(y){console&&console.warn&&console.warn(y)}var r=Number.isNaN||function(b){return b!==b};function s(){s.init.call(this)}Li.exports=s,Li.exports.once=k,s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var c=10;function a(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 c},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+".");c=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(b){if(typeof b!="number"||b<0||r(b))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+b+".");return this._maxListeners=b,this};function o(y){return y._maxListeners===void 0?s.defaultMaxListeners:y._maxListeners}s.prototype.getMaxListeners=function(){return o(this)},s.prototype.emit=function(b){for(var T=[],N=1;N<arguments.length;N++)T.push(arguments[N]);var F=b==="error",M=this._events;if(M!==void 0)F=F&&M.error===void 0;else if(!F)return!1;if(F){var D;if(T.length>0&&(D=T[0]),D instanceof Error)throw D;var U=new Error("Unhandled error."+(D?" ("+D.message+")":""));throw U.context=D,U}var H=M[b];if(H===void 0)return!1;if(typeof H=="function")e(H,this,T);else for(var ae=H.length,Ce=v(H,ae),N=0;N<ae;++N)e(Ce[N],this,T);return!0};function d(y,b,T,N){var F,M,D;if(a(T),M=y._events,M===void 0?(M=y._events=Object.create(null),y._eventsCount=0):(M.newListener!==void 0&&(y.emit("newListener",b,T.listener?T.listener:T),M=y._events),D=M[b]),D===void 0)D=M[b]=T,++y._eventsCount;else if(typeof D=="function"?D=M[b]=N?[T,D]:[D,T]:N?D.unshift(T):D.push(T),F=o(y),F>0&&D.length>F&&!D.warned){D.warned=!0;var U=new Error("Possible EventEmitter memory leak detected. "+D.length+" "+String(b)+" listeners added. Use emitter.setMaxListeners() to increase limit");U.name="MaxListenersExceededWarning",U.emitter=y,U.type=b,U.count=D.length,i(U)}return y}s.prototype.addListener=function(b,T){return d(this,b,T,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(b,T){return d(this,b,T,!0)};function l(){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 u(y,b,T){var N={fired:!1,wrapFn:void 0,target:y,type:b,listener:T},F=l.bind(N);return F.listener=T,N.wrapFn=F,F}s.prototype.once=function(b,T){return a(T),this.on(b,u(this,b,T)),this},s.prototype.prependOnceListener=function(b,T){return a(T),this.prependListener(b,u(this,b,T)),this},s.prototype.removeListener=function(b,T){var N,F,M,D,U;if(a(T),F=this._events,F===void 0)return this;if(N=F[b],N===void 0)return this;if(N===T||N.listener===T)--this._eventsCount===0?this._events=Object.create(null):(delete F[b],F.removeListener&&this.emit("removeListener",b,N.listener||T));else if(typeof N!="function"){for(M=-1,D=N.length-1;D>=0;D--)if(N[D]===T||N[D].listener===T){U=N[D].listener,M=D;break}if(M<0)return this;M===0?N.shift():g(N,M),N.length===1&&(F[b]=N[0]),F.removeListener!==void 0&&this.emit("removeListener",b,U||T)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(b){var T,N,F;if(N=this._events,N===void 0)return this;if(N.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):N[b]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete N[b]),this;if(arguments.length===0){var M=Object.keys(N),D;for(F=0;F<M.length;++F)D=M[F],D!=="removeListener"&&this.removeAllListeners(D);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(T=N[b],typeof T=="function")this.removeListener(b,T);else if(T!==void 0)for(F=T.length-1;F>=0;F--)this.removeListener(b,T[F]);return this};function h(y,b,T){var N=y._events;if(N===void 0)return[];var F=N[b];return F===void 0?[]:typeof F=="function"?T?[F.listener||F]:[F]:T?S(F):v(F,F.length)}s.prototype.listeners=function(b){return h(this,b,!0)},s.prototype.rawListeners=function(b){return h(this,b,!1)},s.listenerCount=function(y,b){return typeof y.listenerCount=="function"?y.listenerCount(b):f.call(y,b)},s.prototype.listenerCount=f;function f(y){var b=this._events;if(b!==void 0){var T=b[y];if(typeof T=="function")return 1;if(T!==void 0)return T.length}return 0}s.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]};function v(y,b){for(var T=new Array(b),N=0;N<b;++N)T[N]=y[N];return T}function g(y,b){for(;b+1<y.length;b++)y[b]=y[b+1];y.pop()}function S(y){for(var b=new Array(y.length),T=0;T<b.length;++T)b[T]=y[T].listener||y[T];return b}function k(y,b){return new Promise(function(T,N){function F(D){y.removeListener(b,M),N(D)}function M(){typeof y.removeListener=="function"&&y.removeListener("error",F),T([].slice.call(arguments))}_(y,b,M,{once:!0}),b!=="error"&&w(y,F,{once:!0})})}function w(y,b,T){typeof y.on=="function"&&_(y,"error",b,T)}function _(y,b,T,N){if(typeof y.on=="function")N.once?y.once(b,T):y.on(b,T);else if(typeof y.addEventListener=="function")y.addEventListener(b,function F(M){N.once&&y.removeEventListener(b,F),T(M)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof y)}return Li.exports}var gt=Bm();let zo=!0,$o=!0;function Fn(n,e,t){const i=n.match(e);return i&&i.length>=t&&parseFloat(i[t],10)}function zt(n,e,t){if(!n.RTCPeerConnection)return;const i=n.RTCPeerConnection.prototype,r=i.addEventListener;i.addEventListener=function(c,a){if(c!==e)return r.apply(this,arguments);const o=d=>{const l=t(d);l&&(a.handleEvent?a.handleEvent(l):a(l))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(a,o),r.apply(this,[c,o])};const s=i.removeEventListener;i.removeEventListener=function(c,a){if(c!==e||!this._eventMap||!this._eventMap[e])return s.apply(this,arguments);if(!this._eventMap[e].has(a))return s.apply(this,arguments);const o=this._eventMap[e].get(a);return this._eventMap[e].delete(a),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,s.apply(this,[c,o])},Object.defineProperty(i,"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 jm(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):(zo=n,n?"adapter.js logging disabled":"adapter.js logging enabled")}function Vm(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):($o=!n,"adapter.js deprecation warnings "+(n?"disabled":"enabled"))}function Qo(){if(typeof window=="object"){if(zo)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Ur(n,e){$o&&console.warn(n+" is deprecated, please use "+e+" instead.")}function qm(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(Fn(t.userAgent,/Firefox\/(\d+)\./,1));else if(t.webkitGetUserMedia||n.isSecureContext===!1&&n.webkitRTCPeerConnection)e.browser="chrome",e.version=parseInt(Fn(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2));else if(n.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=parseInt(Fn(t.userAgent,/AppleWebKit\/(\d+)\./,1)),e.supportsUnifiedPlan=n.RTCRtpTransceiver&&"currentDirection"in n.RTCRtpTransceiver.prototype,e._safariVersion=Fn(t.userAgent,/Version\/(\d+(\.?\d+))/,1);else return e.browser="Not a supported browser.",e;return e}function Yo(n){return Object.prototype.toString.call(n)==="[object Object]"}function Xo(n){return Yo(n)?Object.keys(n).reduce(function(e,t){const i=Yo(n[t]),r=i?Xo(n[t]):n[t],s=i&&!Object.keys(r).length;return r===void 0||s?e:Object.assign(e,{[t]:r})},{}):n}function Fr(n,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(i=>{i.endsWith("Id")?Fr(n,n.get(e[i]),t):i.endsWith("Ids")&&e[i].forEach(r=>{Fr(n,n.get(r),t)})}))}function Zo(n,e,t){const i=t?"outbound-rtp":"inbound-rtp",r=new Map;if(e===null)return r;const s=[];return n.forEach(c=>{c.type==="track"&&c.trackIdentifier===e.id&&s.push(c)}),s.forEach(c=>{n.forEach(a=>{a.type===i&&a.trackId===c.id&&Fr(n,a,r)})}),r}const ec=Qo;function tc(n,e){const t=n&&n.navigator;if(!t.mediaDevices)return;const i=function(a){if(typeof a!="object"||a.mandatory||a.optional)return a;const o={};return Object.keys(a).forEach(d=>{if(d==="require"||d==="advanced"||d==="mediaSource")return;const l=typeof a[d]=="object"?a[d]:{ideal:a[d]};l.exact!==void 0&&typeof l.exact=="number"&&(l.min=l.max=l.exact);const u=function(h,f){return h?h+f.charAt(0).toUpperCase()+f.slice(1):f==="deviceId"?"sourceId":f};if(l.ideal!==void 0){o.optional=o.optional||[];let h={};typeof l.ideal=="number"?(h[u("min",d)]=l.ideal,o.optional.push(h),h={},h[u("max",d)]=l.ideal,o.optional.push(h)):(h[u("",d)]=l.ideal,o.optional.push(h))}l.exact!==void 0&&typeof l.exact!="number"?(o.mandatory=o.mandatory||{},o.mandatory[u("",d)]=l.exact):["min","max"].forEach(h=>{l[h]!==void 0&&(o.mandatory=o.mandatory||{},o.mandatory[u(h,d)]=l[h])})}),a.advanced&&(o.optional=(o.optional||[]).concat(a.advanced)),o},r=function(a,o){if(e.version>=61)return o(a);if(a=JSON.parse(JSON.stringify(a)),a&&typeof a.audio=="object"){const d=function(l,u,h){u in l&&!(h in l)&&(l[h]=l[u],delete l[u])};a=JSON.parse(JSON.stringify(a)),d(a.audio,"autoGainControl","googAutoGainControl"),d(a.audio,"noiseSuppression","googNoiseSuppression"),a.audio=i(a.audio)}if(a&&typeof a.video=="object"){let d=a.video.facingMode;d=d&&(typeof d=="object"?d:{ideal:d});const l=e.version<66;if(d&&(d.exact==="user"||d.exact==="environment"||d.ideal==="user"||d.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!l)){delete a.video.facingMode;let u;if(d.exact==="environment"||d.ideal==="environment"?u=["back","rear"]:(d.exact==="user"||d.ideal==="user")&&(u=["front"]),u)return t.mediaDevices.enumerateDevices().then(h=>{h=h.filter(v=>v.kind==="videoinput");let f=h.find(v=>u.some(g=>v.label.toLowerCase().includes(g)));return!f&&h.length&&u.includes("back")&&(f=h[h.length-1]),f&&(a.video.deviceId=d.exact?{exact:f.deviceId}:{ideal:f.deviceId}),a.video=i(a.video),ec("chrome: "+JSON.stringify(a)),o(a)})}a.video=i(a.video)}return ec("chrome: "+JSON.stringify(a)),o(a)},s=function(a){return e.version>=64?a:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[a.name]||a.name,message:a.message,constraint:a.constraint||a.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}},c=function(a,o,d){r(a,l=>{t.webkitGetUserMedia(l,o,u=>{d&&d(s(u))})})};if(t.getUserMedia=c.bind(t),t.mediaDevices.getUserMedia){const a=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(o){return r(o,d=>a(d).then(l=>{if(d.audio&&!l.getAudioTracks().length||d.video&&!l.getVideoTracks().length)throw l.getTracks().forEach(u=>{u.stop()}),new DOMException("","NotFoundError");return l},l=>Promise.reject(s(l))))}}}function nc(n){n.MediaStream=n.MediaStream||n.webkitMediaStream}function ic(n){if(typeof n=="object"&&n.RTCPeerConnection&&!("ontrack"in n.RTCPeerConnection.prototype)){Object.defineProperty(n.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(t){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=t)},enumerable:!0,configurable:!0});const e=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=i=>{i.stream.addEventListener("addtrack",r=>{let s;n.RTCPeerConnection.prototype.getReceivers?s=this.getReceivers().find(a=>a.track&&a.track.id===r.track.id):s={track:r.track};const c=new Event("track");c.track=r.track,c.receiver=s,c.transceiver={receiver:s},c.streams=[i.stream],this.dispatchEvent(c)}),i.stream.getTracks().forEach(r=>{let s;n.RTCPeerConnection.prototype.getReceivers?s=this.getReceivers().find(a=>a.track&&a.track.id===r.id):s={track:r};const c=new Event("track");c.track=r,c.receiver=s,c.transceiver={receiver:s},c.streams=[i.stream],this.dispatchEvent(c)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else zt(n,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e))}function rc(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(a,o){let d=r.apply(this,arguments);return d||(d=e(this,a),this._senders.push(d)),d};const s=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(a){s.apply(this,arguments);const o=this._senders.indexOf(a);o!==-1&&this._senders.splice(o,1)}}const t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(s){this._senders=this._senders||[],t.apply(this,[s]),s.getTracks().forEach(c=>{this._senders.push(e(this,c))})};const i=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(s){this._senders=this._senders||[],i.apply(this,[s]),s.getTracks().forEach(c=>{const a=this._senders.find(o=>o.track===c);a&&this._senders.splice(this._senders.indexOf(a),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 sc(n){if(!(typeof n=="object"&&n.RTCPeerConnection&&n.RTCRtpSender&&n.RTCRtpReceiver))return;if(!("getStats"in n.RTCRtpSender.prototype)){const t=n.RTCPeerConnection.prototype.getSenders;t&&(n.RTCPeerConnection.prototype.getSenders=function(){const s=t.apply(this,[]);return s.forEach(c=>c._pc=this),s});const i=n.RTCPeerConnection.prototype.addTrack;i&&(n.RTCPeerConnection.prototype.addTrack=function(){const s=i.apply(this,arguments);return s._pc=this,s}),n.RTCRtpSender.prototype.getStats=function(){const s=this;return this._pc.getStats().then(c=>Zo(c,s.track,!0))}}if(!("getStats"in n.RTCRtpReceiver.prototype)){const t=n.RTCPeerConnection.prototype.getReceivers;t&&(n.RTCPeerConnection.prototype.getReceivers=function(){const r=t.apply(this,[]);return r.forEach(s=>s._pc=this),r}),zt(n,"track",i=>(i.receiver._pc=i.srcElement,i)),n.RTCRtpReceiver.prototype.getStats=function(){const r=this;return this._pc.getStats().then(s=>Zo(s,r.track,!1))}}if(!("getStats"in n.RTCRtpSender.prototype&&"getStats"in n.RTCRtpReceiver.prototype))return;const e=n.RTCPeerConnection.prototype.getStats;n.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof n.MediaStreamTrack){const i=arguments[0];let r,s,c;return this.getSenders().forEach(a=>{a.track===i&&(r?c=!0:r=a)}),this.getReceivers().forEach(a=>(a.track===i&&(s?c=!0:s=a),a.track===i)),c||r&&s?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):r?r.getStats():s?s.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return e.apply(this,arguments)}}function ac(n){n.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(c=>this._shimmedLocalStreams[c][0])};const e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(c,a){if(!a)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const o=e.apply(this,arguments);return this._shimmedLocalStreams[a.id]?this._shimmedLocalStreams[a.id].indexOf(o)===-1&&this._shimmedLocalStreams[a.id].push(o):this._shimmedLocalStreams[a.id]=[a,o],o};const t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(c){this._shimmedLocalStreams=this._shimmedLocalStreams||{},c.getTracks().forEach(d=>{if(this.getSenders().find(u=>u.track===d))throw new DOMException("Track already exists.","InvalidAccessError")});const a=this.getSenders();t.apply(this,arguments);const o=this.getSenders().filter(d=>a.indexOf(d)===-1);this._shimmedLocalStreams[c.id]=[c].concat(o)};const i=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(c){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[c.id],i.apply(this,arguments)};const r=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(c){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},c&&Object.keys(this._shimmedLocalStreams).forEach(a=>{const o=this._shimmedLocalStreams[a].indexOf(c);o!==-1&&this._shimmedLocalStreams[a].splice(o,1),this._shimmedLocalStreams[a].length===1&&delete this._shimmedLocalStreams[a]}),r.apply(this,arguments)}}function oc(n,e){if(!n.RTCPeerConnection)return;if(n.RTCPeerConnection.prototype.addTrack&&e.version>=65)return ac(n);const t=n.RTCPeerConnection.prototype.getLocalStreams;n.RTCPeerConnection.prototype.getLocalStreams=function(){const l=t.apply(this);return this._reverseStreams=this._reverseStreams||{},l.map(u=>this._reverseStreams[u.id])};const i=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(l){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},l.getTracks().forEach(u=>{if(this.getSenders().find(f=>f.track===u))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[l.id]){const u=new n.MediaStream(l.getTracks());this._streams[l.id]=u,this._reverseStreams[u.id]=l,l=u}i.apply(this,[l])};const r=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(l){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},r.apply(this,[this._streams[l.id]||l]),delete this._reverseStreams[this._streams[l.id]?this._streams[l.id].id:l.id],delete this._streams[l.id]},n.RTCPeerConnection.prototype.addTrack=function(l,u){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(g=>g===l))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(g=>g.track===l))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const v=this._streams[u.id];if(v)v.addTrack(l),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const g=new n.MediaStream([l]);this._streams[u.id]=g,this._reverseStreams[g.id]=u,this.addStream(g)}return this.getSenders().find(g=>g.track===l)};function s(d,l){let u=l.sdp;return Object.keys(d._reverseStreams||[]).forEach(h=>{const f=d._reverseStreams[h],v=d._streams[f.id];u=u.replace(new RegExp(v.id,"g"),f.id)}),new RTCSessionDescription({type:l.type,sdp:u})}function c(d,l){let u=l.sdp;return Object.keys(d._reverseStreams||[]).forEach(h=>{const f=d._reverseStreams[h],v=d._streams[f.id];u=u.replace(new RegExp(f.id,"g"),v.id)}),new RTCSessionDescription({type:l.type,sdp:u})}["createOffer","createAnswer"].forEach(function(d){const l=n.RTCPeerConnection.prototype[d],u={[d](){const h=arguments;return arguments.length&&typeof arguments[0]=="function"?l.apply(this,[v=>{const g=s(this,v);h[0].apply(null,[g])},v=>{h[1]&&h[1].apply(null,v)},arguments[2]]):l.apply(this,arguments).then(v=>s(this,v))}};n.RTCPeerConnection.prototype[d]=u[d]});const a=n.RTCPeerConnection.prototype.setLocalDescription;n.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?a.apply(this,arguments):(arguments[0]=c(this,arguments[0]),a.apply(this,arguments))};const o=Object.getOwnPropertyDescriptor(n.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(n.RTCPeerConnection.prototype,"localDescription",{get(){const d=o.get.apply(this);return d.type===""?d:s(this,d)}}),n.RTCPeerConnection.prototype.removeTrack=function(l){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!l._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(l._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(g=>l.track===g)&&(h=this._streams[f])}),h&&(h.getTracks().length===1?this.removeStream(this._reverseStreams[h.id]):h.removeTrack(l.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Br(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 cc(n,e){zt(n,"negotiationneeded",t=>{const i=t.target;if(!((e.version<72||i.getConfiguration&&i.getConfiguration().sdpSemantics==="plan-b")&&i.signalingState!=="stable"))return t})}var dc=Object.freeze({__proto__:null,fixNegotiationNeeded:cc,shimAddTrackRemoveTrack:oc,shimAddTrackRemoveTrackWithNative:ac,shimGetSendersWithDtmf:rc,shimGetUserMedia:tc,shimMediaStream:nc,shimOnTrack:ic,shimPeerConnection:Br,shimSenderReceiverGetStats:sc});function lc(n,e){const t=n&&n.navigator,i=n&&n.MediaStreamTrack;if(t.getUserMedia=function(r,s,c){Ur("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(r).then(s,c)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){const r=function(c,a,o){a in c&&!(o in c)&&(c[o]=c[a],delete c[a])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(t.mediaDevices.getUserMedia=function(c){return typeof c=="object"&&typeof c.audio=="object"&&(c=JSON.parse(JSON.stringify(c)),r(c.audio,"autoGainControl","mozAutoGainControl"),r(c.audio,"noiseSuppression","mozNoiseSuppression")),s(c)},i&&i.prototype.getSettings){const c=i.prototype.getSettings;i.prototype.getSettings=function(){const a=c.apply(this,arguments);return r(a,"mozAutoGainControl","autoGainControl"),r(a,"mozNoiseSuppression","noiseSuppression"),a}}if(i&&i.prototype.applyConstraints){const c=i.prototype.applyConstraints;i.prototype.applyConstraints=function(a){return this.kind==="audio"&&typeof a=="object"&&(a=JSON.parse(JSON.stringify(a)),r(a,"autoGainControl","mozAutoGainControl"),r(a,"noiseSuppression","mozNoiseSuppression")),c.apply(this,[a])}}}}function Km(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 uc(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 jr(n,e){if(typeof n!="object"||!(n.RTCPeerConnection||n.mozRTCPeerConnection))return;!n.RTCPeerConnection&&n.mozRTCPeerConnection&&(n.RTCPeerConnection=n.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(r){const s=n.RTCPeerConnection.prototype[r],c={[r](){return arguments[0]=new(r==="addIceCandidate"?n.RTCIceCandidate:n.RTCSessionDescription)(arguments[0]),s.apply(this,arguments)}};n.RTCPeerConnection.prototype[r]=c[r]});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,c,a]=arguments;return i.apply(this,[s||null]).then(o=>{if(e.version<53&&!c)try{o.forEach(d=>{d.type=t[d.type]||d.type})}catch(d){if(d.name!=="TypeError")throw d;o.forEach((l,u)=>{o.set(u,Object.assign({},l,{type:t[l.type]||l.type}))})}return o}).then(c,a)}}function hc(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 mc(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}),zt(n,"track",t=>(t.receiver._pc=t.srcElement,t)),n.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function fc(n){!n.RTCPeerConnection||"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){Ur("removeStream","removeTrack"),this.getSenders().forEach(i=>{i.track&&t.getTracks().includes(i.track)&&this.removeTrack(i)})})}function pc(n){n.DataChannel&&!n.RTCDataChannel&&(n.RTCDataChannel=n.DataChannel)}function gc(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(c=>{if("rid"in c&&!/^[a-z0-9]{0,16}$/i.test(c.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in c&&!(parseFloat(c.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in c&&!(parseFloat(c.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const s=e.apply(this,arguments);if(r){const{sender:c}=s,a=c.getParameters();(!("encodings"in a)||a.encodings.length===1&&Object.keys(a.encodings[0]).length===0)&&(a.encodings=i,c.sendEncodings=i,this.setParametersPromises.push(c.setParameters(a).then(()=>{delete c.sendEncodings}).catch(()=>{delete c.sendEncodings})))}return s})}function vc(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 yc(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 bc(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 kc=Object.freeze({__proto__:null,shimAddTransceiver:gc,shimCreateAnswer:bc,shimCreateOffer:yc,shimGetDisplayMedia:Km,shimGetParameters:vc,shimGetUserMedia:lc,shimOnTrack:uc,shimPeerConnection:jr,shimRTCDataChannel:pc,shimReceiverGetStats:mc,shimRemoveStream:fc,shimSenderGetStats:hc});function Tc(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),c=1;c<r;c++)s[c-1]=arguments[c];return s&&s.forEach(a=>{this._localStreams?this._localStreams.includes(a)||this._localStreams.push(a):this._localStreams=[a]}),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 Sc(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 c=new Event("addstream");c.stream=s,i.dispatchEvent(c)})}),e.apply(i,arguments)}}}function Cc(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,c=e.addIceCandidate;e.createOffer=function(d,l){const u=arguments.length>=2?arguments[2]:arguments[0],h=t.apply(this,[u]);return l?(h.then(d,l),Promise.resolve()):h},e.createAnswer=function(d,l){const u=arguments.length>=2?arguments[2]:arguments[0],h=i.apply(this,[u]);return l?(h.then(d,l),Promise.resolve()):h};let a=function(o,d,l){const u=r.apply(this,[o]);return l?(u.then(d,l),Promise.resolve()):u};e.setLocalDescription=a,a=function(o,d,l){const u=s.apply(this,[o]);return l?(u.then(d,l),Promise.resolve()):u},e.setRemoteDescription=a,a=function(o,d,l){const u=c.apply(this,[o]);return l?(u.then(d,l),Promise.resolve()):u},e.addIceCandidate=a}function Ec(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(wc(r))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=(function(i,r,s){e.mediaDevices.getUserMedia(i).then(r,s)}).bind(e))}function wc(n){return n&&n.video!==void 0?Object.assign({},n,{video:Xo(n.video)}):n}function Rc(n){if(!n.RTCPeerConnection)return;const e=n.RTCPeerConnection;n.RTCPeerConnection=function(i,r){if(i&&i.iceServers){const s=[];for(let c=0;c<i.iceServers.length;c++){let a=i.iceServers[c];a.urls===void 0&&a.url?(Ur("RTCIceServer.url","RTCIceServer.urls"),a=JSON.parse(JSON.stringify(a)),a.urls=a.url,delete a.url,s.push(a)):s.push(i.iceServers[c])}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 _c(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 Pc(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(c=>c.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(c=>c.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 Ic(n){typeof n!="object"||n.AudioContext||(n.AudioContext=n.webkitAudioContext)}var Mc=Object.freeze({__proto__:null,shimAudioContext:Ic,shimCallbacksAPI:Cc,shimConstraints:wc,shimCreateOfferLegacy:Pc,shimGetUserMedia:Ec,shimLocalStreamsAPI:Tc,shimRTCIceServerUrls:Rc,shimRemoteStreamsAPI:Sc,shimTrackEventTransceiver:_c}),Vr={exports:{}},Oc;function Wm(){return Oc||(Oc=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