small-websocket-prebuilt 0.2.2__tar.gz → 0.2.3__tar.gz
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.
- {small_websocket_prebuilt-0.2.2/small_websocket_prebuilt.egg-info → small_websocket_prebuilt-0.2.3}/PKG-INFO +1 -1
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/pyproject.toml +1 -1
- small_websocket_prebuilt-0.2.2/small_websocket_prebuilt/client/dist/assets/index-B4X-UIWR.js → small_websocket_prebuilt-0.2.3/small_websocket_prebuilt/client/dist/assets/index-Bb8i3nk4.js +1 -1
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/client/dist/index.html +1 -1
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3/small_websocket_prebuilt.egg-info}/PKG-INFO +1 -1
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt.egg-info/SOURCES.txt +1 -1
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/MANIFEST.in +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/README.md +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/setup.cfg +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/__init__.py +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/client/dist/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/client/dist/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/client/dist/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/client/dist/assets/geist-mono-cyrillic-wght-normal-BZdD_g9V.woff2 +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/client/dist/assets/geist-mono-latin-ext-wght-normal-b6lpi8_2.woff2 +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/client/dist/assets/geist-mono-latin-wght-normal-Cjtb1TV-.woff2 +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/client/dist/assets/index-MrVEiU1O.css +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/client/dist/assets/voice-ui-kit_false-BPs6efg0.js +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/client/dist/assets/voice-ui-kit_false-b2I56sea.js +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/client/dist/favicon.svg +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/client/dist/pipecat-logo.svg +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt/frontend.py +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt.egg-info/dependency_links.txt +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt.egg-info/requires.txt +0 -0
- {small_websocket_prebuilt-0.2.2 → small_websocket_prebuilt-0.2.3}/small_websocket_prebuilt.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: small-websocket-prebuilt
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: A simple, ready-to-use client for testing the WebSocket transport with Pipecat.
|
|
5
5
|
License: BSD 2-Clause License
|
|
6
6
|
Project-URL: homepage, https://github.com/Qiliang/small-websocket-prebuilt
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "small-websocket-prebuilt"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.3"
|
|
8
8
|
description = "A simple, ready-to-use client for testing the WebSocket transport with Pipecat."
|
|
9
9
|
license = { text = "BSD 2-Clause License" }
|
|
10
10
|
readme = "README.md"
|
|
@@ -387,4 +387,4 @@ registerProcessor('audio_processor', AudioProcessor);
|
|
|
387
387
|
especially due to system audio feedback preventative measures.
|
|
388
388
|
use only for debugging`),l.connect(n.destination)),this.source=r,this.node=a,this.analyser=l,this.processor=i,console.log("begin completed"),!0}getFrequencies(e="frequency",n=-100,r=-30){if(!this.processor)throw new Error("Session ended: please call .begin() first");return Dl.getFrequencies(this.analyser,this.sampleRate,null,e,n,r)}async pause(){if(this.processor){if(!this.recording)throw new Error("Already paused: please call .record() first")}else throw new Error("Session ended: please call .begin() first");return this._chunkProcessorBuffer.raw.byteLength&&this._chunkProcessor(this._chunkProcessorBuffer),this.log("Pausing ..."),await this._event("stop"),this.recording=!1,!0}async record(e=()=>{},n=8192){if(this.processor){if(this.recording)throw new Error("Already recording: please call .pause() first");if(typeof e!="function")throw new Error("chunkProcessor must be a function")}else throw new Error("Session ended: please call .begin() first");return this._chunkProcessor=e,this._chunkProcessorSize=n,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)},this.log("Recording ..."),await this._event("start"),this.recording=!0,!0}async clear(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return await this._event("clear"),!0}async read(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return this.log("Reading ..."),await this._event("read")}async save(e=!1){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!e&&this.recording)throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");this.log("Exporting ...");const n=await this._event("export");return new Dr().pack(this.sampleRate,n.audio)}async end(){if(!this.processor)throw new Error("Session ended: please call .begin() first");const e=this.processor;this.log("Stopping ..."),await this._event("stop"),this.recording=!1,this.stream.getTracks().forEach(l=>l.stop()),this.log("Exporting ...");const r=await this._event("export",{},e);return this.processor.disconnect(),this.source.disconnect(),this.node.disconnect(),this.analyser.disconnect(),this.stream=null,this.processor=null,this.source=null,this.node=null,new Dr().pack(this.sampleRate,r.audio)}async quit(){return this.listenForDeviceChange(null),this.deviceSelection=null,this.processor&&await this.end(),!0}}globalThis.WavRecorder=C7;function mM(t,e,n){if(e===n)return t;const r=new Int16Array(t),i=e/n,a=Math.round(r.length/i),l=new ArrayBuffer(a*2),c=new Int16Array(l);for(let u=0;u<a;u++){const f=u*i,h=Math.floor(f),m=Math.min(h+1,r.length-1),g=f-h;c[u]=Math.round(r[h]*(1-g)+r[m]*g)}return l}class QK{constructor({sampleRate:e=44100,outputToSpeakers:n=!1,debug:r=!1}={}){this.scriptSrc=S7,this.sampleRate=e,this.outputToSpeakers=n,this.debug=!!r,this.stream=null,this.processor=null,this.source=null,this.node=null,this.recording=!1,this._lastEventId=0,this.eventReceipts={},this.eventTimeout=5e3,this._chunkProcessor=()=>{},this._chunkProcessorSize=void 0,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)}}log(){return this.debug&&this.log(...arguments),!0}getSampleRate(){return this.sampleRate}getStatus(){return this.processor?this.recording?"recording":"paused":"ended"}async _event(e,n={},r=null){if(r=r||this.processor,!r)throw new Error("Can not send events without recording first");const i={event:e,id:this._lastEventId++,data:n};r.port.postMessage(i);const a=new Date().valueOf();for(;!this.eventReceipts[i.id];){if(new Date().valueOf()-a>this.eventTimeout)throw new Error(`Timeout waiting for "${e}" event`);await new Promise(c=>setTimeout(()=>c(!0),1))}const l=this.eventReceipts[i.id];return delete this.eventReceipts[i.id],l}async begin(e){if(this.processor)throw new Error("Already connected: please call .end() to start a new session");if(!e||e.kind!=="audio")throw new Error("No audio track provided");this.stream=new MediaStream([e]);const n=navigator.userAgent.toLowerCase().includes("firefox");let r;n?r=new AudioContext:r=new AudioContext({sampleRate:this.sampleRate});const i=r.sampleRate,a=r.createMediaStreamSource(this.stream);try{await r.audioWorklet.addModule(this.scriptSrc)}catch(f){throw console.error(f),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}const l=new AudioWorkletNode(r,"audio_processor");l.port.onmessage=f=>{const{event:h,id:m,data:g}=f.data;if(h==="receipt")this.eventReceipts[m]=g;else if(h==="chunk"){const y={raw:mM(g.raw,i,this.sampleRate),mono:mM(g.mono,i,this.sampleRate)};if(this._chunkProcessorSize){const S=this._chunkProcessorBuffer;this._chunkProcessorBuffer={raw:Dr.mergeBuffers(S.raw,y.raw),mono:Dr.mergeBuffers(S.mono,y.mono)},this._chunkProcessorBuffer.mono.byteLength>=this._chunkProcessorSize&&(this._chunkProcessor(this._chunkProcessorBuffer),this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)})}else this._chunkProcessor(y)}};const c=a.connect(l),u=r.createAnalyser();return u.fftSize=8192,u.smoothingTimeConstant=.1,c.connect(u),this.outputToSpeakers&&(console.warn(`Warning: Output to speakers may affect sound quality,
|
|
389
389
|
especially due to system audio feedback preventative measures.
|
|
390
|
-
use only for debugging`),u.connect(r.destination)),this.source=a,this.node=c,this.analyser=u,this.processor=l,!0}getFrequencies(e="frequency",n=-100,r=-30){if(!this.processor)throw new Error("Session ended: please call .begin() first");return Dl.getFrequencies(this.analyser,this.sampleRate,null,e,n,r)}async pause(){if(this.processor){if(!this.recording)throw new Error("Already paused: please call .record() first")}else throw new Error("Session ended: please call .begin() first");return this._chunkProcessorBuffer.raw.byteLength&&this._chunkProcessor(this._chunkProcessorBuffer),this.log("Pausing ..."),await this._event("stop"),this.recording=!1,!0}async record(e=()=>{},n=8192){if(this.processor){if(this.recording)throw new Error("Already recording: HELLO please call .pause() first");if(typeof e!="function")throw new Error("chunkProcessor must be a function")}else throw new Error("Session ended: please call .begin() first");return this._chunkProcessor=e,this._chunkProcessorSize=n,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)},this.log("Recording ..."),await this._event("start"),this.recording=!0,!0}async clear(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return await this._event("clear"),!0}async read(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return this.log("Reading ..."),await this._event("read")}async save(e=!1){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!e&&this.recording)throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");this.log("Exporting ...");const n=await this._event("export");return new Dr().pack(this.sampleRate,n.audio)}async end(){if(!this.processor)throw new Error("Session ended: please call .begin() first");const e=this.processor;this.log("Stopping ..."),await this._event("stop"),this.recording=!1,this.log("Exporting ...");const n=await this._event("export",{},e);return this.processor.disconnect(),this.source.disconnect(),this.node.disconnect(),this.analyser.disconnect(),this.stream=null,this.processor=null,this.source=null,this.node=null,new Dr().pack(this.sampleRate,n.audio)}async quit(){return this.listenForDeviceChange(null),this.processor&&await this.end(),!0}}globalThis.WavRecorder=WavRecorder;var ZK=(function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})(),ka=function(t,e,n,r){function i(a){return a instanceof n?a:new n(function(l){l(a)})}return new(n||(n=Promise))(function(a,l){function c(h){try{f(r.next(h))}catch(m){l(m)}}function u(h){try{f(r.throw(h))}catch(m){l(m)}}function f(h){h.done?a(h.value):i(h.value).then(c,u)}f((r=r.apply(t,e||[])).next())})},Ea=function(t,e){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,l=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return l.next=c(0),l.throw=c(1),l.return=c(2),typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(f){return function(h){return u([f,h])}}function u(f){if(r)throw new TypeError("Generator is already executing.");for(;l&&(l=0,f[0]&&(n=0)),n;)try{if(r=1,i&&(a=f[0]&2?i.return:f[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,f[1])).done)return a;switch(i=0,a&&(f=[f[0]&2,a.value]),f[0]){case 0:case 1:a=f;break;case 4:return n.label++,{value:f[1],done:!1};case 5:n.label++,i=f[1],f=[0];continue;case 7:f=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(f[0]===6||f[0]===2)){n=0;continue}if(f[0]===3&&(!a||f[1]>a[0]&&f[1]<a[3])){n.label=f[1];break}if(f[0]===6&&n.label<a[1]){n.label=a[1],a=f;break}if(a&&n.label<a[2]){n.label=a[2],n.ops.push(f);break}a[2]&&n.ops.pop(),n.trys.pop();continue}f=e.call(t,n)}catch(h){f=[6,h],i=0}finally{r=a=0}if(f[0]&5)throw f[1];return{value:f[0]?f[1]:void 0,done:!0}}},k7=(function(){function t(){this._callbacks={},this._micEnabled=!0,this._camEnabled=!1,this._supportsScreenShare=!1}return t.prototype.setUserAudioCallback=function(e){this._userAudioCallback=e},t.prototype.setClientOptions=function(e,n){var r,i,a;n===void 0&&(n=!1),!(this._options&&!n)&&(this._options=e,this._callbacks=(r=e.callbacks)!==null&&r!==void 0?r:{},this._micEnabled=(i=e.enableMic)!==null&&i!==void 0?i:!0,this._camEnabled=(a=e.enableCam)!==null&&a!==void 0?a:!1)},Object.defineProperty(t.prototype,"supportsScreenShare",{get:function(){return this._supportsScreenShare},enumerable:!1,configurable:!0}),t})();(function(t){ZK(e,t);function e(n,r){n===void 0&&(n=void 0),r===void 0&&(r=24e3);var i=t.call(this)||this;return i._initialized=!1,i._recorderChunkSize=void 0,i._recorderChunkSize=n,i._wavRecorder=new C7({sampleRate:r}),i._wavStreamPlayer=new N_({sampleRate:24e3}),i}return e.prototype.initialize=function(){return ka(this,void 0,Promise,function(){return Ea(this,function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,this._wavRecorder.begin()];case 1:return n.sent(),[3,3];case 2:return n.sent(),[3,3];case 3:return this._wavRecorder.listenForDeviceChange(null),this._wavRecorder.listenForDeviceChange(this._handleAvailableDevicesUpdated.bind(this)),this._wavRecorder.listenForDeviceErrors(null),this._wavRecorder.listenForDeviceErrors(this._handleDeviceError.bind(this)),[4,this._wavStreamPlayer.connect()];case 4:return n.sent(),this._initialized=!0,[2]}})})},e.prototype.connect=function(){return ka(this,void 0,Promise,function(){var n;return Ea(this,function(r){switch(r.label){case 0:return this._initialized?[3,2]:[4,this.initialize()];case 1:r.sent(),r.label=2;case 2:return n=this._wavRecorder.getStatus()=="recording",this._micEnabled&&!n?[4,this._startRecording()]:[3,4];case 3:r.sent(),r.label=4;case 4:return this._camEnabled&&console.warn("WavMediaManager does not support video input."),[2]}})})},e.prototype.disconnect=function(){return ka(this,void 0,Promise,function(){return Ea(this,function(n){switch(n.label){case 0:return this._initialized?[4,this._wavRecorder.end()]:[2];case 1:return n.sent(),[4,this._wavStreamPlayer.interrupt()];case 2:return n.sent(),this._initialized=!1,[2]}})})},e.prototype.userStartedSpeaking=function(){return ka(this,void 0,Promise,function(){return Ea(this,function(n){return[2,this._wavStreamPlayer.interrupt()]})})},e.prototype.bufferBotAudio=function(n,r){return this._wavStreamPlayer.add16BitPCM(n,r)},e.prototype.getAllMics=function(){return this._wavRecorder.listDevices()},e.prototype.getAllCams=function(){return Promise.resolve([])},e.prototype.getAllSpeakers=function(){return Promise.resolve([])},e.prototype.updateMic=function(n){return ka(this,void 0,Promise,function(){var r,i,a,l;return Ea(this,function(c){switch(c.label){case 0:return r=this._wavRecorder.deviceSelection,this._wavRecorder.getStatus()==="ended"?[3,2]:[4,this._wavRecorder.end()];case 1:c.sent(),c.label=2;case 2:return c.trys.push([2,6,,7]),[4,this._wavRecorder.begin(n)];case 3:return c.sent(),this._micEnabled?[4,this._startRecording()]:[3,5];case 4:c.sent(),c.label=5;case 5:return i=this._wavRecorder.deviceSelection,i&&r&&r.label!==i.label&&((l=(a=this._callbacks).onMicUpdated)===null||l===void 0||l.call(a,i)),[3,7];case 6:return c.sent(),[3,7];case 7:return[2]}})})},e.prototype.updateCam=function(n){},e.prototype.updateSpeaker=function(n){},Object.defineProperty(e.prototype,"selectedMic",{get:function(){var n;return(n=this._wavRecorder.deviceSelection)!==null&&n!==void 0?n:{}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectedCam",{get:function(){return{}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectedSpeaker",{get:function(){return{}},enumerable:!1,configurable:!0}),e.prototype.enableMic=function(n){return ka(this,void 0,Promise,function(){var r=this;return Ea(this,function(i){switch(i.label){case 0:return this._micEnabled=n,this._wavRecorder.stream?(this._wavRecorder.stream.getAudioTracks().forEach(function(a){var l,c;a.enabled=n,n||(c=(l=r._callbacks).onTrackStopped)===null||c===void 0||c.call(l,a,gM())}),n?[4,this._startRecording()]:[3,2]):[2];case 1:return i.sent(),[3,4];case 2:return[4,this._wavRecorder.pause()];case 3:i.sent(),i.label=4;case 4:return[2]}})})},e.prototype.enableCam=function(n){console.warn("WavMediaManager does not support video input.")},e.prototype.enableScreenShare=function(n){console.warn("WavMediaManager does not support screen sharing.")},Object.defineProperty(e.prototype,"isCamEnabled",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isMicEnabled",{get:function(){return this._micEnabled},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isSharingScreen",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.tracks=function(){var n,r=(n=this._wavRecorder.stream)===null||n===void 0?void 0:n.getTracks()[0];return{local:r?{audio:r}:{}}},e.prototype._startRecording=function(){return ka(this,void 0,void 0,function(){var n,r=this,i,a,l;return Ea(this,function(c){switch(c.label){case 0:return[4,this._wavRecorder.record(function(u){var f;(f=r._userAudioCallback)===null||f===void 0||f.call(r,u.mono)},this._recorderChunkSize)];case 1:return c.sent(),n=(i=this._wavRecorder.stream)===null||i===void 0?void 0:i.getAudioTracks()[0],n&&((l=(a=this._callbacks).onTrackStarted)===null||l===void 0||l.call(a,n,gM())),[2]}})})},e.prototype._handleAvailableDevicesUpdated=function(n){var r,i,a,l;(i=(r=this._callbacks).onAvailableCamsUpdated)===null||i===void 0||i.call(r,n.filter(function(f){return f.kind==="videoinput"})),(l=(a=this._callbacks).onAvailableMicsUpdated)===null||l===void 0||l.call(a,n.filter(function(f){return f.kind==="audioinput"}));var c=n.find(function(f){return f.deviceId==="default"}),u=this._wavRecorder.deviceSelection;u&&(!n.some(function(f){return f.deviceId===u.deviceId})||u.deviceId==="default"&&u.label!==c?.label)&&this.updateMic("")},e.prototype._handleDeviceError=function(n){var r,i,a=n.devices,l=n.type,c=n.error,u=new Bi(a,l,c?.message,c?{sourceError:c}:void 0);(i=(r=this._callbacks).onDeviceError)===null||i===void 0||i.call(r,u)},e})(k7);var gM=function(){return{id:"local",name:"",local:!0}},eJ=(function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})(),Or=function(t,e,n,r){function i(a){return a instanceof n?a:new n(function(l){l(a)})}return new(n||(n=Promise))(function(a,l){function c(h){try{f(r.next(h))}catch(m){l(m)}}function u(h){try{f(r.throw(h))}catch(m){l(m)}}function f(h){h.done?a(h.value):i(h.value).then(c,u)}f((r=r.apply(t,e||[])).next())})},Rr=function(t,e){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,l=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return l.next=c(0),l.throw=c(1),l.return=c(2),typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(f){return function(h){return u([f,h])}}function u(f){if(r)throw new TypeError("Generator is already executing.");for(;l&&(l=0,f[0]&&(n=0)),n;)try{if(r=1,i&&(a=f[0]&2?i.return:f[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,f[1])).done)return a;switch(i=0,a&&(f=[f[0]&2,a.value]),f[0]){case 0:case 1:a=f;break;case 4:return n.label++,{value:f[1],done:!1};case 5:n.label++,i=f[1],f=[0];continue;case 7:f=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(f[0]===6||f[0]===2)){n=0;continue}if(f[0]===3&&(!a||f[1]>a[0]&&f[1]<a[3])){n.label=f[1];break}if(f[0]===6&&n.label<a[1]){n.label=a[1],a=f;break}if(a&&n.label<a[2]){n.label=a[2],n.ops.push(f);break}a[2]&&n.ops.pop(),n.trys.pop();continue}f=e.call(t,n)}catch(h){f=[6,h],i=0}finally{r=a=0}if(f[0]&5)throw f[1];return{value:f[0]?f[1]:void 0,done:!0}}},tJ=(function(t){eJ(e,t);function e(n,r,i,a,l,c,u){n===void 0&&(n=!0),r===void 0&&(r=!0),l===void 0&&(l=void 0),c===void 0&&(c=24e3),u===void 0&&(u=24e3);var f,h=t.call(this)||this;return h._selectedCam={},h._selectedMic={},h._selectedSpeaker={},h._remoteAudioLevelInterval=null,h._recorderChunkSize=void 0,h._initialized=!1,h._connected=!1,h._currentAudioTrack=null,h._connectResolve=null,h.onTrackStartedCallback=i,h.onTrackStoppedCallback=a,h._recorderChunkSize=l,h._supportsScreenShare=!0,h._daily=(f=hy.getCallInstance())!==null&&f!==void 0?f:hy.createCallObject(),r&&(h._mediaStreamRecorder=new QK({sampleRate:c})),n&&(h._wavStreamPlayer=new N_({sampleRate:u})),h._daily.on("track-started",h.handleTrackStarted.bind(h)),h._daily.on("track-stopped",h.handleTrackStopped.bind(h)),h._daily.on("available-devices-updated",h._handleAvailableDevicesUpdated.bind(h)),h._daily.on("selected-devices-updated",h._handleSelectedDevicesUpdated.bind(h)),h._daily.on("camera-error",h.handleDeviceError.bind(h)),h._daily.on("local-audio-level",h._handleLocalAudioLevel.bind(h)),h}return e.prototype.initialize=function(){return Or(this,void 0,Promise,function(){var n,r,i,a,l,c=this,u,f,h,m,g,y,S,x,C,A,R,j;return Rr(this,function(N){switch(N.label){case 0:return this._initialized?(console.warn("DailyMediaManager already initialized"),[2]):[4,this._daily.startCamera({startVideoOff:!this._camEnabled,startAudioOff:!this._micEnabled,dailyConfig:{useDevicePreferenceCookies:!0}})];case 1:return n=N.sent(),[4,this._daily.enumerateDevices()];case 2:return r=N.sent().devices,i=r.filter(function(O){return O.kind==="videoinput"}),a=r.filter(function(O){return O.kind==="audioinput"}),l=r.filter(function(O){return O.kind==="audiooutput"}),(f=(u=this._callbacks).onAvailableCamsUpdated)===null||f===void 0||f.call(u,i),(m=(h=this._callbacks).onAvailableMicsUpdated)===null||m===void 0||m.call(h,a),(y=(g=this._callbacks).onAvailableSpeakersUpdated)===null||y===void 0||y.call(g,l),this._selectedCam=n.camera,(x=(S=this._callbacks).onCamUpdated)===null||x===void 0||x.call(S,n.camera),this._selectedMic=n.mic,(A=(C=this._callbacks).onMicUpdated)===null||A===void 0||A.call(C,n.mic),this._selectedSpeaker=n.speaker,(j=(R=this._callbacks).onSpeakerUpdated)===null||j===void 0||j.call(R,n.speaker),this._daily.isLocalAudioLevelObserverRunning()?[3,4]:[4,this._daily.startLocalAudioLevelObserver(100)];case 3:N.sent(),N.label=4;case 4:return this._wavStreamPlayer?[4,this._wavStreamPlayer.connect()]:[3,6];case 5:N.sent(),this._remoteAudioLevelInterval||(this._remoteAudioLevelInterval=setInterval(function(){var O,B=c._wavStreamPlayer.getFrequencies(),P=0;!((O=B.values)===null||O===void 0)&&O.length&&(P=B.values.reduce(function(L,G){return L+G},0)/B.values.length),c._handleRemoteAudioLevel(P)},100)),N.label=6;case 6:return this._initialized=!0,[2]}})})},e.prototype.connect=function(){return Or(this,void 0,Promise,function(){var n=this;return Rr(this,function(r){return this._connected?(console.warn("DailyMediaManager already connected"),[2]):(this._connected=!0,this._initialized?(this._micEnabled&&this._startRecording(),[2]):[2,new Promise(function(i){(function(){return Or(n,void 0,void 0,function(){return Rr(this,function(a){switch(a.label){case 0:return this._connectResolve=i,[4,this.initialize()];case 1:return a.sent(),[2]}})})})()})])})})},e.prototype.disconnect=function(){return Or(this,void 0,Promise,function(){var n,r;return Rr(this,function(i){switch(i.label){case 0:return this._remoteAudioLevelInterval&&clearInterval(this._remoteAudioLevelInterval),this._remoteAudioLevelInterval=null,this._daily.leave(),this._currentAudioTrack=null,[4,(n=this._mediaStreamRecorder)===null||n===void 0?void 0:n.end()];case 1:return i.sent(),(r=this._wavStreamPlayer)===null||r===void 0||r.interrupt(),this._initialized=!1,this._connected=!1,[2]}})})},e.prototype.userStartedSpeaking=function(){return Or(this,void 0,Promise,function(){var n;return Rr(this,function(r){return[2,(n=this._wavStreamPlayer)===null||n===void 0?void 0:n.interrupt()]})})},e.prototype.bufferBotAudio=function(n,r){var i;return(i=this._wavStreamPlayer)===null||i===void 0?void 0:i.add16BitPCM(n,r)},e.prototype.getAllMics=function(){return Or(this,void 0,Promise,function(){var n;return Rr(this,function(r){switch(r.label){case 0:return[4,this._daily.enumerateDevices()];case 1:return n=r.sent().devices,[2,n.filter(function(i){return i.kind==="audioinput"})]}})})},e.prototype.getAllCams=function(){return Or(this,void 0,Promise,function(){var n;return Rr(this,function(r){switch(r.label){case 0:return[4,this._daily.enumerateDevices()];case 1:return n=r.sent().devices,[2,n.filter(function(i){return i.kind==="videoinput"})]}})})},e.prototype.getAllSpeakers=function(){return Or(this,void 0,Promise,function(){var n;return Rr(this,function(r){switch(r.label){case 0:return[4,this._daily.enumerateDevices()];case 1:return n=r.sent().devices,[2,n.filter(function(i){return i.kind==="audiooutput"})]}})})},e.prototype.updateMic=function(n){var r=this;this._daily.setInputDevicesAsync({audioDeviceId:n}).then(function(i){r._selectedMic=i.mic})},e.prototype.updateCam=function(n){var r=this;this._daily.setInputDevicesAsync({videoDeviceId:n}).then(function(i){r._selectedCam=i.camera})},e.prototype.updateSpeaker=function(n){return Or(this,void 0,Promise,function(){var r,i,a,l,c,u,f=this,h,m,g,y;return Rr(this,function(S){switch(S.label){case 0:if(this._wavStreamPlayer)return[3,5];S.label=1;case 1:return S.trys.push([1,3,,4]),[4,this._daily.setOutputDeviceAsync({outputDeviceId:n})];case 2:return r=S.sent(),this._selectedSpeaker=r.speaker,(m=(h=this._callbacks).onSpeakerUpdated)===null||m===void 0||m.call(h,this._selectedSpeaker),[3,4];case 3:return i=S.sent(),console.error("Error setting output device",i),[3,4];case 4:return[2];case 5:return n!=="default"&&this._selectedSpeaker.deviceId===n?[2]:(a=n,a!=="default"?[3,7]:[4,this.getAllSpeakers()]);case 6:if(l=S.sent(),c=l.find(function(x){return x.deviceId==="default"}),!c)return console.warn("No default speaker found"),[2];l.splice(l.indexOf(c),1),u=l.find(function(x){return c.label.includes(x.label)}),a=(g=u?.deviceId)!==null&&g!==void 0?g:n,S.label=7;case 7:return(y=this._wavStreamPlayer)===null||y===void 0||y.updateSpeaker(a).then(function(){var x,C;f._selectedSpeaker={deviceId:n},(C=(x=f._callbacks).onSpeakerUpdated)===null||C===void 0||C.call(x,f._selectedSpeaker)}),[2]}})})},Object.defineProperty(e.prototype,"selectedMic",{get:function(){return this._selectedMic},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectedCam",{get:function(){return this._selectedCam},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectedSpeaker",{get:function(){return this._selectedSpeaker},enumerable:!1,configurable:!0}),e.prototype.enableMic=function(n){return Or(this,void 0,Promise,function(){var r;return Rr(this,function(i){return this._micEnabled=n,!((r=this._daily.participants())===null||r===void 0)&&r.local?(this._daily.setLocalAudio(n),this._mediaStreamRecorder&&(n?this._mediaStreamRecorder.getStatus()==="paused"&&this._startRecording():this._mediaStreamRecorder.getStatus()==="recording"&&this._mediaStreamRecorder.pause()),[2]):[2]})})},e.prototype.enableCam=function(n){this._camEnabled=n,this._daily.setLocalVideo(n)},e.prototype.enableScreenShare=function(n){n?this._daily.startScreenShare():this._daily.stopScreenShare()},Object.defineProperty(e.prototype,"isCamEnabled",{get:function(){return this._daily.localVideo()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isMicEnabled",{get:function(){return this._daily.localAudio()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isSharingScreen",{get:function(){return this._daily.localScreenAudio()||this._daily.localScreenVideo()},enumerable:!1,configurable:!0}),e.prototype.tracks=function(){var n,r,i,a,l,c,u,f,h,m,g,y,S=this._daily.participants();return{local:{audio:(i=(r=(n=S?.local)===null||n===void 0?void 0:n.tracks)===null||r===void 0?void 0:r.audio)===null||i===void 0?void 0:i.persistentTrack,screenAudio:(c=(l=(a=S?.local)===null||a===void 0?void 0:a.tracks)===null||l===void 0?void 0:l.screenAudio)===null||c===void 0?void 0:c.persistentTrack,screenVideo:(h=(f=(u=S?.local)===null||u===void 0?void 0:u.tracks)===null||f===void 0?void 0:f.screenVideo)===null||h===void 0?void 0:h.persistentTrack,video:(y=(g=(m=S?.local)===null||m===void 0?void 0:m.tracks)===null||g===void 0?void 0:g.video)===null||y===void 0?void 0:y.persistentTrack}}},e.prototype._startRecording=function(){var n=this;if(!(!this._connected||!this._mediaStreamRecorder))try{this._mediaStreamRecorder.record(function(i){n._userAudioCallback(i.mono)},this._recorderChunkSize)}catch(i){var r=i;r.message.includes("Already recording")||console.error("Error starting recording",i)}},e.prototype._handleAvailableDevicesUpdated=function(n){var r,i,a,l,c,u;(i=(r=this._callbacks).onAvailableCamsUpdated)===null||i===void 0||i.call(r,n.availableDevices.filter(function(f){return f.kind==="videoinput"})),(l=(a=this._callbacks).onAvailableMicsUpdated)===null||l===void 0||l.call(a,n.availableDevices.filter(function(f){return f.kind==="audioinput"})),(u=(c=this._callbacks).onAvailableSpeakersUpdated)===null||u===void 0||u.call(c,n.availableDevices.filter(function(f){return f.kind==="audiooutput"})),this._selectedSpeaker.deviceId==="default"&&this.updateSpeaker("default")},e.prototype._handleSelectedDevicesUpdated=function(n){var r,i,a,l,c,u;((r=this._selectedCam)===null||r===void 0?void 0:r.deviceId)!==n.devices.camera&&(this._selectedCam=n.devices.camera,(a=(i=this._callbacks).onCamUpdated)===null||a===void 0||a.call(i,n.devices.camera)),((l=this._selectedMic)===null||l===void 0?void 0:l.deviceId)!==n.devices.mic&&(this._selectedMic=n.devices.mic,(u=(c=this._callbacks).onMicUpdated)===null||u===void 0||u.call(c,n.devices.mic))},e.prototype.handleDeviceError=function(n){var r,i,a=function(l){var c=[];switch(l.type){case"permissions":return l.blockedMedia.forEach(function(u){c.push(u==="video"?"cam":"mic")}),new Bi(c,l.type,l.msg,{blockedBy:l.blockedBy});case"not-found":return l.missingMedia.forEach(function(u){c.push(u==="video"?"cam":"mic")}),new Bi(c,l.type,l.msg);case"constraints":return l.failedMedia.forEach(function(u){c.push(u==="video"?"cam":"mic")}),new Bi(c,l.type,l.msg,{reason:l.reason});case"cam-in-use":return c.push("cam"),new Bi(c,"in-use",l.msg);case"mic-in-use":return c.push("mic"),new Bi(c,"in-use",l.msg);case"cam-mic-in-use":return c.push("cam"),c.push("mic"),new Bi(c,"in-use",l.msg);case"undefined-mediadevices":case"unknown":default:return c.push("cam"),c.push("mic"),new Bi(c,l.type,l.msg)}};(i=(r=this._callbacks).onDeviceError)===null||i===void 0||i.call(r,a(n.error))},e.prototype._handleLocalAudioLevel=function(n){var r,i;(i=(r=this._callbacks).onLocalAudioLevel)===null||i===void 0||i.call(r,n.audioLevel)},e.prototype._handleRemoteAudioLevel=function(n){var r,i;(i=(r=this._callbacks).onRemoteAudioLevel)===null||i===void 0||i.call(r,n,nJ())},e.prototype.handleTrackStarted=function(n){return Or(this,void 0,void 0,function(){var r,i,a,l,c,u;return Rr(this,function(f){switch(f.label){case 0:if(!(!((a=n.participant)===null||a===void 0)&&a.local))return[2];if(n.track.kind!=="audio")return[3,15];if(!this._mediaStreamRecorder)return[3,14];switch(r=this._mediaStreamRecorder.getStatus(),i=r,i){case"ended":return[3,1];case"paused":return[3,5];case"recording":return[3,6]}return[3,6];case 1:return f.trys.push([1,3,,4]),[4,this._mediaStreamRecorder.begin(n.track)];case 2:return f.sent(),this._connected&&(this._startRecording(),this._connectResolve&&(this._connectResolve(),this._connectResolve=null)),[3,4];case 3:return f.sent(),[3,4];case 4:return[3,14];case 5:return this._startRecording(),[3,14];case 6:return this._currentAudioTrack===n.track?[3,12]:[4,this._mediaStreamRecorder.end()];case 7:f.sent(),f.label=8;case 8:return f.trys.push([8,10,,11]),[4,this._mediaStreamRecorder.begin(n.track)];case 9:return f.sent(),this._startRecording(),[3,11];case 10:return f.sent(),[3,11];case 11:return[3,13];case 12:console.warn("track-started event received for current track and already recording"),f.label=13;case 13:return[3,14];case 14:this._currentAudioTrack=n.track,f.label=15;case 15:return(c=(l=this._callbacks).onTrackStarted)===null||c===void 0||c.call(l,n.track,n.participant?vM(n.participant):void 0),(u=this.onTrackStartedCallback)===null||u===void 0||u.call(this,n),[2]}})})},e.prototype.handleTrackStopped=function(n){var r,i,a,l;!((r=n.participant)===null||r===void 0)&&r.local&&(n.track.kind==="audio"&&this._mediaStreamRecorder&&this._mediaStreamRecorder.getStatus()==="recording"&&this._mediaStreamRecorder.pause(),(a=(i=this._callbacks).onTrackStopped)===null||a===void 0||a.call(i,n.track,n.participant?vM(n.participant):void 0),(l=this.onTrackStoppedCallback)===null||l===void 0||l.call(this,n))},e})(k7),vM=function(t){return{id:t.user_id,local:t.local,name:t.user_name}},nJ=function(){return{id:"bot",local:!1,name:"Bot"}},rJ=(function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})(),As=function(t,e,n,r){function i(a){return a instanceof n?a:new n(function(l){l(a)})}return new(n||(n=Promise))(function(a,l){function c(h){try{f(r.next(h))}catch(m){l(m)}}function u(h){try{f(r.throw(h))}catch(m){l(m)}}function f(h){h.done?a(h.value):i(h.value).then(c,u)}f((r=r.apply(t,e||[])).next())})},Ts=function(t,e){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,l=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return l.next=c(0),l.throw=c(1),l.return=c(2),typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(f){return function(h){return u([f,h])}}function u(f){if(r)throw new TypeError("Generator is already executing.");for(;l&&(l=0,f[0]&&(n=0)),n;)try{if(r=1,i&&(a=f[0]&2?i.return:f[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,f[1])).done)return a;switch(i=0,a&&(f=[f[0]&2,a.value]),f[0]){case 0:case 1:a=f;break;case 4:return n.label++,{value:f[1],done:!1};case 5:n.label++,i=f[1],f=[0];continue;case 7:f=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(f[0]===6||f[0]===2)){n=0;continue}if(f[0]===3&&(!a||f[1]>a[0]&&f[1]<a[3])){n.label=f[1];break}if(f[0]===6&&n.label<a[1]){n.label=a[1],a=f;break}if(a&&n.label<a[2]){n.label=a[2],n.ops.push(f);break}a[2]&&n.ops.pop(),n.trys.pop();continue}f=e.call(t,n)}catch(h){f=[6,h],i=0}finally{r=a=0}if(f[0]&5)throw f[1];return{value:f[0]?f[1]:void 0,done:!0}}},eh=function(t,e,n){if(n||arguments.length===2)for(var r=0,i=e.length,a;r<i;r++)(a||!(r in e))&&(a||(a=Array.prototype.slice.call(e,0,r)),a[r]=e[r]);return t.concat(a||Array.prototype.slice.call(e))},E7=["CONNECTING","OPEN","CLOSING","CLOSED"],iJ=5e3,sJ=15e3,aJ=15e4,bM=2,oJ=10,lJ=1e3,cJ=3e4,uJ=1.5,dJ=4100,fJ="SIG_CONNECTION_CANCELED",hJ="WEBSOCKET_ERROR",wn;(function(t){t[t.DEBUG=0]="DEBUG",t[t.ERROR=1]="ERROR",t[t.INFO=2]="INFO",t[t.WARN=3]="WARN"})(wn||(wn={}));var pJ=(function(){function t(e,n){this._closedManually=!1,this._errored=!1,this._rejected=!1,this._timed_out=!1,this._initialConnectionOk=!1,this._ws=new WebSocket(e,n)}return t.prototype.addEventListener=function(e,n){this._ws.addEventListener(e,n)},t.prototype.close=function(e,n){this._ws.close(e,n)},t.prototype.send=function(e){this._ws.send(e)},Object.defineProperty(t.prototype,"url",{get:function(){return this._ws.url},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"readyState",{get:function(){return this._ws.readyState},enumerable:!1,configurable:!0}),t})(),Yp=(function(t){rJ(e,t);function e(n,r,i){i===void 0&&(i={});var a,l=t.call(this)||this;if(!n)throw new Error("Need a valid WebSocket URL");return l._ws=null,l._url=n,l._protocols=r,l._parseBlobToJson=(a=i?.parseBlobToJson)!==null&&a!==void 0?a:!0,l.init(),l}return e.prototype.init=function(){this._keepAliveTimeout=sJ,this._keepAliveInterval=iJ,this._disconnected=!1,this._keepIntervalID=null,this._shouldRetryFn=null,this._connectionTimeout=aJ,this._reconnectAttempts=0,this._allowedReconnectAttempts=bM,this._reconnectInterval=lJ,this._maxReconnectInterval=cJ,this._reconnectDecay=uJ},e.prototype.connect=function(){return As(this,void 0,void 0,function(){var n=this;return Ts(this,function(r){return[2,new Promise(function(i,a){n._disconnected=!1,n.clearReconnectTimeout();var l=new pJ(n._url,n._protocols);n.setConnectionTimeout(),l.addEventListener("close",function(c){var u=c,f=l._timed_out?dJ:u.code,h=l._timed_out?"websocket connection timed out":u.reason;if(l._timed_out=!1,!l._closedManually&&l._initialConnectionOk?(console.warn("signaling socket closed unexpectedly: ".concat(f).concat(h?" "+h:"")),n._closeSocket(),n.emit("close",f,h)):n.log("signaling socket closed"),!l._closedManually&&(l._errored||l._timed_out)&&(console.warn("signaling socket closed on error: ".concat(f).concat(h?" "+h:"")),!l._rejected)){l._rejected=!0;var m=new Error("WebSocket connection error (".concat(f,"): ").concat(h));m.name=hJ,a(m)}}),l.addEventListener("open",function(c){if(n.log("wss connection opened to",wn.DEBUG,n._url),n.clearConnectionTimeout(),!(l._rejected||l._timed_out)){if(l._closedManually||n._ws&&n._ws!==l){l._rejected=!0,l.close();var u=Error("wss connection interrupted by disconnect or newer connection");u.name=fJ,a(u);return}l._initialConnectionOk=n._url,n._lastMsgRecvTime=Date.now(),n._keepAliveInterval&&(n._keepIntervalID=setInterval(function(){return n.checkSocketHealthAndSendKeepAlive()},n._keepAliveInterval)),n._ws=l,n.emit("open"),i(l)}}),l.addEventListener("error",function(c){if(!l._closedManually){var u=c.currentTarget;n.log("websocket error event: ".concat(u?.url))}l._errored=!0}),l.addEventListener("message",function(c){n._handleMessage(c)})})]})})},e.prototype.setConnectionTimeout=function(){var n=this;this._connectionTimeoutID=setTimeout(function(){return As(n,void 0,void 0,function(){return Ts(this,function(r){switch(r.label){case 0:return this.log("Connection reconnect attempt timed out."),this.emit("connection-timeout"),this.clearConnectionTimeout(),[4,this._closeSocket()];case 1:return r.sent(),[2]}})})},this._connectionTimeout)},e.prototype.clearConnectionTimeout=function(){clearTimeout(this._connectionTimeoutID),this._connectionTimeoutID=void 0},e.prototype.clearReconnectTimeout=function(){clearTimeout(this._reconnectTimeoutID),this._reconnectTimeoutID=void 0},e.prototype.clearKeepAliveInterval=function(){this._keepIntervalID&&(clearInterval(this._keepIntervalID),this._keepIntervalID=null)},e.prototype.checkSocketHealthAndSendKeepAlive=function(){return As(this,void 0,void 0,function(){return Ts(this,function(n){switch(n.label){case 0:return this._ws&&this._ws.readyState===WebSocket.OPEN?!this._keepAliveTimeout||!this._keepAliveInterval?[2]:Date.now()-this._lastMsgRecvTime>this._keepAliveTimeout?(this.log("Connection is stale, need to reconnect",wn.WARN),[4,this._closeSocket()]):[3,2]:[2];case 1:return n.sent(),[2];case 2:return Date.now()-this._lastMsgSendTime<this._keepAliveInterval?[2]:(this.log("Emitting keep-alive",wn.DEBUG),this.emit("keep-alive"),[2])}})})},e.prototype._closeSocket=function(){return As(this,void 0,void 0,function(){var n,r,i;return Ts(this,function(a){switch(a.label){case 0:this.log("Closing"),a.label=1;case 1:return a.trys.push([1,4,,5]),this.clearKeepAliveInterval(),this._lastMsgRecvTime=0,this._ws&&(this._ws._closedManually=!0,this._ws.close()),n=((i=this._ws)===null||i===void 0?void 0:i._initialConnectionOk)&&this._shouldRetryFn&&this._shouldRetryFn(),this._ws=null,n?(this.log("Emitting reconnect",wn.DEBUG),this.emit("reconnecting"),[4,this.retryFailedConnection()]):[3,3];case 2:a.sent(),a.label=3;case 3:return[3,5];case 4:return r=a.sent(),this.log("Error while closing and retrying: ".concat(r),wn.ERROR),[3,5];case 5:return[2]}})})},e.prototype.retryFailedConnection=function(){return As(this,void 0,void 0,function(){var n,r=this;return Ts(this,function(i){if(this._reconnectAttempts<this._allowedReconnectAttempts){if(this._reconnectTimeoutID)return this.log("Retry already scheduled"),[2];this.log("Retrying failed connection"),n=this._reconnectInterval*Math.pow(this._reconnectDecay,this._reconnectAttempts),n=n>this._maxReconnectInterval?this._maxReconnectInterval:n,this.log("Reconnecting in ".concat(n/1e3," seconds")),this._reconnectAttempts+=1,this._reconnectTimeoutID=setTimeout(function(){return r.connect()},n)}else this.log("Maximum connection retry attempts exceeded",wn.ERROR),this.emit("reconnect-failed");return[2]})})},e.prototype.log=function(n,r){r===void 0&&(r=wn.DEBUG);for(var i=[],a=2;a<arguments.length;a++)i[a-2]=arguments[a];switch(r){case wn.DEBUG:console.debug.apply(console,eh(["websocket: ".concat(n)],i,!1));break;case wn.ERROR:console.error.apply(console,eh(["websocket: ".concat(n)],i,!1));break;case wn.WARN:console.warn.apply(console,eh(["websocket: ".concat(n)],i,!1));break;case wn.INFO:default:console.log.apply(console,eh(["websocket: ".concat(n)],i,!1));break}},e.prototype.send=function(n){return As(this,void 0,void 0,function(){return Ts(this,function(r){try{this._ws&&this._ws.readyState===WebSocket.OPEN?(this._lastMsgSendTime=Date.now(),this._ws.send(n)):this.log("Failed to send data, web socket not open.",wn.ERROR)}catch(i){this.log("Failed to send data. ".concat(i),wn.ERROR)}return[2]})})},e.prototype.close=function(){return As(this,void 0,void 0,function(){return Ts(this,function(n){try{this.log("Closing websocket"),this._disconnected=!0,this.clearReconnectTimeout(),this._closeSocket()}catch(r){this.log("Failed to close websocket. ".concat(r))}return[2]})})},Object.defineProperty(e.prototype,"readyState",{get:function(){var n,r;return(r=(n=this._ws)===null||n===void 0?void 0:n.readyState)!==null&&r!==void 0?r:WebSocket.CLOSED},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"url",{get:function(){return this._url},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"keepAliveTimeout",{get:function(){return this._keepAliveTimeout},set:function(n){typeof n=="number"&&(this.log("Setting ACK freshness timeout to ".concat(n)),this._keepAliveTimeout=n)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"keepAliveInterval",{get:function(){return this._keepAliveInterval},set:function(n){typeof n=="number"&&(this.log("Setting keep-alive interval to ".concat(n)),this._keepAliveInterval=n)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"shouldRetryFn",{set:function(n){typeof n=="function"&&(this._shouldRetryFn=n)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"connectionTimeout",{get:function(){return this._connectionTimeout},set:function(n){typeof n=="number"&&(this._connectionTimeout=n)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxReconnectAttempts",{get:function(){return this._allowedReconnectAttempts},set:function(n){n>0&&n<oJ?(this.log("Setting maximum connection retry attempts to ".concat(n)),this._allowedReconnectAttempts=n):this._allowedReconnectAttempts=bM},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reconnectInterval",{get:function(){return this._reconnectInterval},set:function(n){typeof n=="number"&&(this._reconnectInterval=n<this._maxReconnectInterval?n:this._maxReconnectInterval)},enumerable:!1,configurable:!0}),e.prototype._handleMessage=function(n){return As(this,void 0,void 0,function(){var r,i,a,l=this;return Ts(this,function(c){switch(c.label){case 0:return this._lastMsgRecvTime=Date.now(),r=n.data,i=new Promise(function(u,f){if(typeof r=="string")u(r);else if(r instanceof ArrayBuffer){var h=r;u(new Uint8Array(h))}else if(r instanceof Blob){if(!l._parseBlobToJson){u(r);return}var m=r,g=new FileReader;g.onload=function(){var y=g.result;try{var S=JSON.parse(y);u(S)}catch(x){console.error("Failed to parse JSON from Blob:",x)}},g.readAsText(m)}}),[4,i];case 1:return a=c.sent(),this.emit("message",a),[2]}})})},e})(LM.EventEmitter);["binaryType","bufferedAmount","extensions","protocol","readyState","url","keepAliveTimeout","keepAliveInterval","shouldRetryFn","connectionTimeout","maxReconnectAttempts","reconnectInterval"].forEach(function(t){Object.defineProperty(Yp.prototype,t,{enumerable:!0})});["CONNECTING","OPEN","CLOSING","CLOSED"].forEach(function(t){Object.defineProperty(Yp.prototype,t,{enumerable:!0,value:E7.indexOf(t)})});["CONNECTING","OPEN","CLOSING","CLOSED"].forEach(function(t){Object.defineProperty(Yp,t,{enumerable:!0,value:E7.indexOf(t)})});class mJ extends $u{constructor(){super("pipecat.TextFrame",[{no:1,name:"id",kind:"scalar",T:4,L:0},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"text",kind:"scalar",T:9}])}create(e){const n=globalThis.Object.create(this.messagePrototype);return n.id=0n,n.name="",n.text="",e!==void 0&&Us(this,n,e),n}internalBinaryRead(e,n,r,i){let a=i??this.create(),l=e.pos+n;for(;e.pos<l;){let[c,u]=e.tag();switch(c){case 1:a.id=e.uint64().toBigInt();break;case 2:a.name=e.string();break;case 3:a.text=e.string();break;default:let f=r.readUnknownField;if(f==="throw")throw new globalThis.Error(`Unknown field ${c} (wire type ${u}) for ${this.typeName}`);let h=e.skip(u);f!==!1&&(f===!0?zn.onRead:f)(this.typeName,a,c,u,h)}}return a}internalBinaryWrite(e,n,r){e.id!==0n&&n.tag(1,Fe.Varint).uint64(e.id),e.name!==""&&n.tag(2,Fe.LengthDelimited).string(e.name),e.text!==""&&n.tag(3,Fe.LengthDelimited).string(e.text);let i=r.writeUnknownFields;return i!==!1&&(i==!0?zn.onWrite:i)(this.typeName,e,n),n}}const pb=new mJ;class gJ extends $u{constructor(){super("pipecat.AudioRawFrame",[{no:1,name:"id",kind:"scalar",T:4,L:0},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"audio",kind:"scalar",T:12},{no:4,name:"sample_rate",kind:"scalar",T:13},{no:5,name:"num_channels",kind:"scalar",T:13},{no:6,name:"pts",kind:"scalar",opt:!0,T:4,L:0}])}create(e){const n=globalThis.Object.create(this.messagePrototype);return n.id=0n,n.name="",n.audio=new Uint8Array(0),n.sampleRate=0,n.numChannels=0,e!==void 0&&Us(this,n,e),n}internalBinaryRead(e,n,r,i){let a=i??this.create(),l=e.pos+n;for(;e.pos<l;){let[c,u]=e.tag();switch(c){case 1:a.id=e.uint64().toBigInt();break;case 2:a.name=e.string();break;case 3:a.audio=e.bytes();break;case 4:a.sampleRate=e.uint32();break;case 5:a.numChannels=e.uint32();break;case 6:a.pts=e.uint64().toBigInt();break;default:let f=r.readUnknownField;if(f==="throw")throw new globalThis.Error(`Unknown field ${c} (wire type ${u}) for ${this.typeName}`);let h=e.skip(u);f!==!1&&(f===!0?zn.onRead:f)(this.typeName,a,c,u,h)}}return a}internalBinaryWrite(e,n,r){e.id!==0n&&n.tag(1,Fe.Varint).uint64(e.id),e.name!==""&&n.tag(2,Fe.LengthDelimited).string(e.name),e.audio.length&&n.tag(3,Fe.LengthDelimited).bytes(e.audio),e.sampleRate!==0&&n.tag(4,Fe.Varint).uint32(e.sampleRate),e.numChannels!==0&&n.tag(5,Fe.Varint).uint32(e.numChannels),e.pts!==void 0&&n.tag(6,Fe.Varint).uint64(e.pts);let i=r.writeUnknownFields;return i!==!1&&(i==!0?zn.onWrite:i)(this.typeName,e,n),n}}const mb=new gJ;class vJ extends $u{constructor(){super("pipecat.TranscriptionFrame",[{no:1,name:"id",kind:"scalar",T:4,L:0},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"text",kind:"scalar",T:9},{no:4,name:"user_id",kind:"scalar",T:9},{no:5,name:"timestamp",kind:"scalar",T:9}])}create(e){const n=globalThis.Object.create(this.messagePrototype);return n.id=0n,n.name="",n.text="",n.userId="",n.timestamp="",e!==void 0&&Us(this,n,e),n}internalBinaryRead(e,n,r,i){let a=i??this.create(),l=e.pos+n;for(;e.pos<l;){let[c,u]=e.tag();switch(c){case 1:a.id=e.uint64().toBigInt();break;case 2:a.name=e.string();break;case 3:a.text=e.string();break;case 4:a.userId=e.string();break;case 5:a.timestamp=e.string();break;default:let f=r.readUnknownField;if(f==="throw")throw new globalThis.Error(`Unknown field ${c} (wire type ${u}) for ${this.typeName}`);let h=e.skip(u);f!==!1&&(f===!0?zn.onRead:f)(this.typeName,a,c,u,h)}}return a}internalBinaryWrite(e,n,r){e.id!==0n&&n.tag(1,Fe.Varint).uint64(e.id),e.name!==""&&n.tag(2,Fe.LengthDelimited).string(e.name),e.text!==""&&n.tag(3,Fe.LengthDelimited).string(e.text),e.userId!==""&&n.tag(4,Fe.LengthDelimited).string(e.userId),e.timestamp!==""&&n.tag(5,Fe.LengthDelimited).string(e.timestamp);let i=r.writeUnknownFields;return i!==!1&&(i==!0?zn.onWrite:i)(this.typeName,e,n),n}}const gb=new vJ;class bJ extends $u{constructor(){super("pipecat.MessageFrame",[{no:1,name:"data",kind:"scalar",T:9}])}create(e){const n=globalThis.Object.create(this.messagePrototype);return n.data="",e!==void 0&&Us(this,n,e),n}internalBinaryRead(e,n,r,i){let a=i??this.create(),l=e.pos+n;for(;e.pos<l;){let[c,u]=e.tag();switch(c){case 1:a.data=e.string();break;default:let f=r.readUnknownField;if(f==="throw")throw new globalThis.Error(`Unknown field ${c} (wire type ${u}) for ${this.typeName}`);let h=e.skip(u);f!==!1&&(f===!0?zn.onRead:f)(this.typeName,a,c,u,h)}}return a}internalBinaryWrite(e,n,r){e.data!==""&&n.tag(1,Fe.LengthDelimited).string(e.data);let i=r.writeUnknownFields;return i!==!1&&(i==!0?zn.onWrite:i)(this.typeName,e,n),n}}const vb=new bJ;class yJ extends $u{constructor(){super("pipecat.Frame",[{no:1,name:"text",kind:"message",oneof:"frame",T:()=>pb},{no:2,name:"audio",kind:"message",oneof:"frame",T:()=>mb},{no:3,name:"transcription",kind:"message",oneof:"frame",T:()=>gb},{no:4,name:"message",kind:"message",oneof:"frame",T:()=>vb}])}create(e){const n=globalThis.Object.create(this.messagePrototype);return n.frame={oneofKind:void 0},e!==void 0&&Us(this,n,e),n}internalBinaryRead(e,n,r,i){let a=i??this.create(),l=e.pos+n;for(;e.pos<l;){let[c,u]=e.tag();switch(c){case 1:a.frame={oneofKind:"text",text:pb.internalBinaryRead(e,e.uint32(),r,a.frame.text)};break;case 2:a.frame={oneofKind:"audio",audio:mb.internalBinaryRead(e,e.uint32(),r,a.frame.audio)};break;case 3:a.frame={oneofKind:"transcription",transcription:gb.internalBinaryRead(e,e.uint32(),r,a.frame.transcription)};break;case 4:a.frame={oneofKind:"message",message:vb.internalBinaryRead(e,e.uint32(),r,a.frame.message)};break;default:let f=r.readUnknownField;if(f==="throw")throw new globalThis.Error(`Unknown field ${c} (wire type ${u}) for ${this.typeName}`);let h=e.skip(u);f!==!1&&(f===!0?zn.onRead:f)(this.typeName,a,c,u,h)}}return a}internalBinaryWrite(e,n,r){e.frame.oneofKind==="text"&&pb.internalBinaryWrite(e.frame.text,n.tag(1,Fe.LengthDelimited).fork(),r).join(),e.frame.oneofKind==="audio"&&mb.internalBinaryWrite(e.frame.audio,n.tag(2,Fe.LengthDelimited).fork(),r).join(),e.frame.oneofKind==="transcription"&&gb.internalBinaryWrite(e.frame.transcription,n.tag(3,Fe.LengthDelimited).fork(),r).join(),e.frame.oneofKind==="message"&&vb.internalBinaryWrite(e.frame.message,n.tag(4,Fe.LengthDelimited).fork(),r).join();let i=r.writeUnknownFields;return i!==!1&&(i==!0?zn.onWrite:i)(this.typeName,e,n),n}}const Ic=new yJ;class _J{serialize(e){}serializeAudio(e,n,r){const i=new Uint8Array(e),a=Ic.create({frame:{oneofKind:"audio",audio:{id:0n,name:"audio",audio:i,sampleRate:n,numChannels:r}}});return new Uint8Array(Ic.toBinary(a))}serializeMessage(e){const n=Ic.create({frame:{oneofKind:"message",message:{data:JSON.stringify(e)}}});return new Uint8Array(Ic.toBinary(n))}async deserialize(e){if(!(e instanceof Blob))throw new Error("Unknown data type");const n=await e.arrayBuffer(),r=Ic.fromBinary(new Uint8Array(n)).frame;if(r.oneofKind==="audio"){const i=Array.from(r.audio.audio),a=new Uint8Array(i);return{type:"audio",audio:new Int16Array(a.buffer)}}else{if(r.oneofKind==="message")return{type:"message",message:JSON.parse(r.message.data)};throw new Error("Unknown frame kind")}}}class wl extends KM{constructor(e={}){super(),this._wsUrl=null,this.audioQueue=[],this._wsUrl=e.wsUrl??e.ws_url??null,this._recorderSampleRate=e.recorderSampleRate??wl.RECORDER_SAMPLE_RATE,this._mediaManager=e.mediaManager||new tJ(!0,!0,void 0,void 0,512,this._recorderSampleRate,e.playerSampleRate??wl.PLAYER_SAMPLE_RATE),this._mediaManager.setUserAudioCallback(this.handleUserAudioStream.bind(this)),this._ws=null,this._serializer=e.serializer||new _J,this._maxMessageSize=1048576}initialize(e,n){this._options=e,this._callbacks=e.callbacks??{},this._onMessage=n,this._mediaManager.setClientOptions(e),this.state="disconnected"}async initDevices(){this.state="initializing",await this._mediaManager.initialize(),this.state="initialized"}_validateConnectionParams(e){if(e==null)return;if(typeof e!="object")throw new In("Invalid connection parameters");const n=i=>i.replace(/_([a-z,A-Z])/g,(a,l)=>l.toUpperCase()),r={};for(const[i,a]of Object.entries(e)){const l=n(i);if(l==="wsUrl"){if(typeof a!="string")throw new In(`Invalid type for wsUrl: expected string, got ${typeof a}`)}else throw new In(`Unrecognized connection parameter: ${i}.`);r[l]=a}return r}async _connect(e){if(!this._abortController?.signal.aborted){if(this.state="connecting",this._wsUrl=e?.wsUrl??e?.ws_url??this._wsUrl,!this._wsUrl)throw je.error("No url provided for connection"),this.state="error",new _b;try{if(this._ws=this.initializeWebsocket(),await this._ws.connect(),await this._mediaManager.connect(),this._abortController?.signal.aborted)return;this.state="connected",this._callbacks.onConnected?.()}catch(n){const r=`Failed to connect to websocket: ${n}`;throw je.error(r),this.state="error",new _b(r)}}}async _disconnect(){this.state="disconnecting",await this._mediaManager.disconnect(),await this._ws?.close(),this.state="disconnected",this._callbacks.onDisconnected?.()}getAllMics(){return this._mediaManager.getAllMics()}getAllCams(){return this._mediaManager.getAllCams()}getAllSpeakers(){return this._mediaManager.getAllSpeakers()}async updateMic(e){return this._mediaManager.updateMic(e)}updateCam(e){return this._mediaManager.updateCam(e)}updateSpeaker(e){return this._mediaManager.updateSpeaker(e)}get selectedMic(){return this._mediaManager.selectedMic}get selectedSpeaker(){return this._mediaManager.selectedSpeaker}enableMic(e){this._mediaManager.enableMic(e)}get isMicEnabled(){return this._mediaManager.isMicEnabled}get state(){return this._state}set state(e){this._state!==e&&(this._state=e,this._callbacks.onTransportStateChanged?.(e))}tracks(){return this._mediaManager.tracks()}initializeWebsocket(){const e=new Yp(this._wsUrl,void 0,{parseBlobToJson:!1});return e.keepAliveInterval=0,e.on("open",()=>{je.debug("Websocket connection opened")}),e.on("message",async n=>{try{const r=await this._serializer.deserialize(n);r.type==="audio"?this._mediaManager.bufferBotAudio(r.audio):r.type==="message"&&r.message.label==="rtvi-ai"&&this._onMessage(r.message)}catch(r){je.error("Failed to deserialize incoming message",r)}}),e.on("error",n=>{this.connectionError(`websocket error: ${n}`)}),e.on("connection-timeout",()=>{this.connectionError("websocket connection timed out")}),e.on("close",n=>{this.connectionError(`websocket connection closed. Code: ${n}`)}),e.on("reconnect-failed",()=>{this.connectionError("websocket reconnect failed")}),e}sendReadyMessage(){this.state="ready",this.sendMessage(Kt.clientReady())}handleUserAudioStream(e){if(this.state==="ready")try{this.flushAudioQueue(),this._sendAudioInput(e)}catch(n){je.error("Error sending audio stream to websocket:",n),this.state="error"}else this.audioQueue.push(e)}flushAudioQueue(){if(!(this.audioQueue.length<=0))for(je.info("Will flush audio queue",this.audioQueue.length);this.audioQueue.length>0;){const e=this.audioQueue.shift();e&&this._sendAudioInput(e)}}sendRawMessage(e){const n=this._serializer.serialize(e);this._sendMsg(n)}sendMessage(e){const n=this._serializer.serializeMessage(e);this._sendMsg(n)}async _sendAudioInput(e){try{const n=this._serializer.serializeAudio(e,this._recorderSampleRate,1);await this._sendMsg(n)}catch(n){je.error("Error sending audio frame",n)}}async _sendMsg(e){if(!this._ws){je.error("sendMsg called but WS is null");return}if(this._ws.readyState!==WebSocket.OPEN){je.error("attempt to send to closed socket");return}if(e)try{await this._ws.send(e)}catch(n){je.error("sendMsg error",n)}}connectionError(e){this._callbacks.onError?.(Kt.error(e,!0))}enableScreenShare(e){throw je.error("enableScreenShare not implemented for WebSocketTransport"),new th("enableScreenShare","webSocketTransport","This feature has not been implemented")}get isSharingScreen(){return je.error("isSharingScreen not implemented for WebSocketTransport"),!1}enableCam(e){throw je.error("enableCam not implemented for WebSocketTransport"),new th("enableCam","webSocketTransport","This feature has not been implemented")}get isCamEnabled(){return je.error("isCamEnabled not implemented for WebSocketTransport"),!1}get selectedCam(){throw je.error("selectedCam not implemented for WebSocketTransport"),new th("selectedCam","webSocketTransport","This feature has not been implemented")}}wl.RECORDER_SAMPLE_RATE=16e3;wl.PLAYER_SAMPLE_RATE=24e3;class xJ extends wl{constructor(e){super(e)}get isSharingScreen(){return je.warn("isSharingScreen not implemented for WebSocketTransport"),!1}get isCamEnabled(){return je.warn("isCamEnabled not implemented for WebSocketTransport"),!1}}const wJ=t=>t;function SJ({clientOptions:t,connectOnMount:e=!1,connectParams:n,initDevicesOnMount:r=!1,noAudioOutput:i=!1,noThemeProvider:a=!1,startBotParams:l,startBotResponseTransformer:c=wJ,transportOptions:u,themeProps:f,children:h}){const[m,g]=k.useState({client:null,error:null,rawStartBotResponse:null,transformedStartBotResponse:null}),[y,S]=k.useState(0),x=k.useRef(n),C=k.useRef(l),A=k.useRef(c);k.useEffect(()=>{x.current=n}),k.useEffect(()=>{C.current=l}),k.useEffect(()=>{A.current=c});const R=k.useCallback(async L=>{try{if(C.current){const G=await L.startBot({requestData:{},...C.current});g(re=>({...re,rawStartBotResponse:G}));const U=await A.current(G);await L.connect(U),g(re=>({...re,transformedStartBotResponse:U}))}else await L.connect(x.current??{})}catch(G){console.error("Connection error:",G),g(U=>({...U,error:`Failed to start session: ${G instanceof Error?G.message:String(G)}`}))}},[]);k.useEffect(()=>{let L=null;return(async()=>{try{const G=new xJ(u??{}),U=new qr({enableCam:!1,enableScreenShare:!1,enableMic:!0,transport:G,...t});L=U,g(re=>({...re,client:U,error:null})),r&&await U.initDevices(),e&&await R(U)}catch(G){console.error("Failed to initialize WebSocket transport:",G)}})(),()=>{L?.disconnect(),g({client:null,error:null,rawStartBotResponse:null,transformedStartBotResponse:null})}},[t,e,r,R,u,y]);const j=async()=>{const L=m.client;!L||!["initialized","disconnected","error"].includes(L.state)||(g(G=>({...G,error:null})),await R(L))},N=async()=>{const L=m.client;if(L){try{await L.disconnect()}catch(G){console.error("Error during disconnect:",G)}S(G=>G+1)}},O=L=>typeof h=="function"?h(L):h;if(!m.client)return typeof h=="function"?O({client:null,handleConnect:async()=>{},handleDisconnect:async()=>{},error:null,rawStartBotResponse:void 0,transformedStartBotResponse:void 0}):h;const B={client:m.client,handleConnect:j,handleDisconnect:N,error:m.error,rawStartBotResponse:m.rawStartBotResponse??void 0,transformedStartBotResponse:m.transformedStartBotResponse??void 0},P=w.jsx(By,{client:m.client,children:w.jsxs(KO,{children:[O(B),i?null:w.jsx($y,{})]})});return a?P:w.jsx(__,{...f,children:P})}const CJ=new URL("/bot/connect",window.location.origin).href,kJ={conversation_id:"",audio:{audio_filter:{name:"vad_rms_gate",trigger_threshold:.05,grace_continue_threshold:.03}},user_start_strategy:{selected:["stt_min_chars","intent_start"],stt_min_chars:3,intent_threshold:.85},user_stop_strategy:{selected:["vad_stop","intent_stop"],vad_stop_seconds:.6,intent_time_out:2},stt:{provider:{name:"volcengine",hotwords_enabled:!1,hotwords:"",context_enabled:!1,context:""}},tts:{provider:{name:"qwen_vc",model:"qwen3-tts-vc-realtime-2026-01-15",voice:"qwen-tts-vc-yanyan-voice-20260414162946853-a320",speech_rate:1.2,pitch_rate:1}},agent:{provider:{name:"mpaas",url:"wss://service.7x24cc.com/service/ws",account_id:"N000000001907",agent_id:"582480b02daf11f198fbbdeca5433be1"}},filler:{provider:{name:"disabled"}},idle:{provider:{name:"mpaas"}},audio_output_mixer:{provider:{name:"soundfile",sound_files:"office-ambience-16000-mono.mp3",volume:1}},user_mute_strategy:{provider:{name:"first_speech"}},dialogue:{enabled:!1}},yM=JSON.stringify(kJ,null,2),EJ={recorderSampleRate:16e3,playerSampleRate:16e3};function MJ(){const[t,e]=k.useState(CJ),[n,r]=k.useState(yM),[i,a]=k.useState(null),l=k.useCallback(h=>{r(h);try{JSON.parse(h),a(null)}catch(m){a(m.message)}},[]),c=k.useMemo(()=>{try{const h=JSON.parse(n);return h.conversation_id||(h.conversation_id=crypto.randomUUID()),{endpoint:t,requestData:h}}catch{return{endpoint:t,requestData:{}}}},[n,t]),u=k.useCallback(h=>{const m=h;return typeof m.ws_url=="string"?{wsUrl:m.ws_url}:m},[]),f=w.jsx(oK,{endpoint:t,onEndpointChange:e,settingsJson:n,onSettingsChange:l,jsonError:i,defaultSettingsJson:yM});return w.jsx(__,{children:w.jsx(f_,{children:w.jsx(TY,{children:w.jsx(SJ,{noThemeProvider:!0,initDevicesOnMount:!0,transportOptions:EJ,startBotParams:c,startBotResponseTransformer:u,children:h=>w.jsx(nK,{...h,settingsContent:f})})})})})}IX.createRoot(document.getElementById("root")).render(w.jsx(k.StrictMode,{children:w.jsx(MJ,{})}));
|
|
390
|
+
use only for debugging`),u.connect(r.destination)),this.source=a,this.node=c,this.analyser=u,this.processor=l,!0}getFrequencies(e="frequency",n=-100,r=-30){if(!this.processor)throw new Error("Session ended: please call .begin() first");return Dl.getFrequencies(this.analyser,this.sampleRate,null,e,n,r)}async pause(){if(this.processor){if(!this.recording)throw new Error("Already paused: please call .record() first")}else throw new Error("Session ended: please call .begin() first");return this._chunkProcessorBuffer.raw.byteLength&&this._chunkProcessor(this._chunkProcessorBuffer),this.log("Pausing ..."),await this._event("stop"),this.recording=!1,!0}async record(e=()=>{},n=8192){if(this.processor){if(this.recording)throw new Error("Already recording: HELLO please call .pause() first");if(typeof e!="function")throw new Error("chunkProcessor must be a function")}else throw new Error("Session ended: please call .begin() first");return this._chunkProcessor=e,this._chunkProcessorSize=n,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)},this.log("Recording ..."),await this._event("start"),this.recording=!0,!0}async clear(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return await this._event("clear"),!0}async read(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return this.log("Reading ..."),await this._event("read")}async save(e=!1){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!e&&this.recording)throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");this.log("Exporting ...");const n=await this._event("export");return new Dr().pack(this.sampleRate,n.audio)}async end(){if(!this.processor)throw new Error("Session ended: please call .begin() first");const e=this.processor;this.log("Stopping ..."),await this._event("stop"),this.recording=!1,this.log("Exporting ...");const n=await this._event("export",{},e);return this.processor.disconnect(),this.source.disconnect(),this.node.disconnect(),this.analyser.disconnect(),this.stream=null,this.processor=null,this.source=null,this.node=null,new Dr().pack(this.sampleRate,n.audio)}async quit(){return this.listenForDeviceChange(null),this.processor&&await this.end(),!0}}globalThis.WavRecorder=WavRecorder;var ZK=(function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})(),ka=function(t,e,n,r){function i(a){return a instanceof n?a:new n(function(l){l(a)})}return new(n||(n=Promise))(function(a,l){function c(h){try{f(r.next(h))}catch(m){l(m)}}function u(h){try{f(r.throw(h))}catch(m){l(m)}}function f(h){h.done?a(h.value):i(h.value).then(c,u)}f((r=r.apply(t,e||[])).next())})},Ea=function(t,e){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,l=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return l.next=c(0),l.throw=c(1),l.return=c(2),typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(f){return function(h){return u([f,h])}}function u(f){if(r)throw new TypeError("Generator is already executing.");for(;l&&(l=0,f[0]&&(n=0)),n;)try{if(r=1,i&&(a=f[0]&2?i.return:f[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,f[1])).done)return a;switch(i=0,a&&(f=[f[0]&2,a.value]),f[0]){case 0:case 1:a=f;break;case 4:return n.label++,{value:f[1],done:!1};case 5:n.label++,i=f[1],f=[0];continue;case 7:f=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(f[0]===6||f[0]===2)){n=0;continue}if(f[0]===3&&(!a||f[1]>a[0]&&f[1]<a[3])){n.label=f[1];break}if(f[0]===6&&n.label<a[1]){n.label=a[1],a=f;break}if(a&&n.label<a[2]){n.label=a[2],n.ops.push(f);break}a[2]&&n.ops.pop(),n.trys.pop();continue}f=e.call(t,n)}catch(h){f=[6,h],i=0}finally{r=a=0}if(f[0]&5)throw f[1];return{value:f[0]?f[1]:void 0,done:!0}}},k7=(function(){function t(){this._callbacks={},this._micEnabled=!0,this._camEnabled=!1,this._supportsScreenShare=!1}return t.prototype.setUserAudioCallback=function(e){this._userAudioCallback=e},t.prototype.setClientOptions=function(e,n){var r,i,a;n===void 0&&(n=!1),!(this._options&&!n)&&(this._options=e,this._callbacks=(r=e.callbacks)!==null&&r!==void 0?r:{},this._micEnabled=(i=e.enableMic)!==null&&i!==void 0?i:!0,this._camEnabled=(a=e.enableCam)!==null&&a!==void 0?a:!1)},Object.defineProperty(t.prototype,"supportsScreenShare",{get:function(){return this._supportsScreenShare},enumerable:!1,configurable:!0}),t})();(function(t){ZK(e,t);function e(n,r){n===void 0&&(n=void 0),r===void 0&&(r=24e3);var i=t.call(this)||this;return i._initialized=!1,i._recorderChunkSize=void 0,i._recorderChunkSize=n,i._wavRecorder=new C7({sampleRate:r}),i._wavStreamPlayer=new N_({sampleRate:24e3}),i}return e.prototype.initialize=function(){return ka(this,void 0,Promise,function(){return Ea(this,function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,this._wavRecorder.begin()];case 1:return n.sent(),[3,3];case 2:return n.sent(),[3,3];case 3:return this._wavRecorder.listenForDeviceChange(null),this._wavRecorder.listenForDeviceChange(this._handleAvailableDevicesUpdated.bind(this)),this._wavRecorder.listenForDeviceErrors(null),this._wavRecorder.listenForDeviceErrors(this._handleDeviceError.bind(this)),[4,this._wavStreamPlayer.connect()];case 4:return n.sent(),this._initialized=!0,[2]}})})},e.prototype.connect=function(){return ka(this,void 0,Promise,function(){var n;return Ea(this,function(r){switch(r.label){case 0:return this._initialized?[3,2]:[4,this.initialize()];case 1:r.sent(),r.label=2;case 2:return n=this._wavRecorder.getStatus()=="recording",this._micEnabled&&!n?[4,this._startRecording()]:[3,4];case 3:r.sent(),r.label=4;case 4:return this._camEnabled&&console.warn("WavMediaManager does not support video input."),[2]}})})},e.prototype.disconnect=function(){return ka(this,void 0,Promise,function(){return Ea(this,function(n){switch(n.label){case 0:return this._initialized?[4,this._wavRecorder.end()]:[2];case 1:return n.sent(),[4,this._wavStreamPlayer.interrupt()];case 2:return n.sent(),this._initialized=!1,[2]}})})},e.prototype.userStartedSpeaking=function(){return ka(this,void 0,Promise,function(){return Ea(this,function(n){return[2,this._wavStreamPlayer.interrupt()]})})},e.prototype.bufferBotAudio=function(n,r){return this._wavStreamPlayer.add16BitPCM(n,r)},e.prototype.getAllMics=function(){return this._wavRecorder.listDevices()},e.prototype.getAllCams=function(){return Promise.resolve([])},e.prototype.getAllSpeakers=function(){return Promise.resolve([])},e.prototype.updateMic=function(n){return ka(this,void 0,Promise,function(){var r,i,a,l;return Ea(this,function(c){switch(c.label){case 0:return r=this._wavRecorder.deviceSelection,this._wavRecorder.getStatus()==="ended"?[3,2]:[4,this._wavRecorder.end()];case 1:c.sent(),c.label=2;case 2:return c.trys.push([2,6,,7]),[4,this._wavRecorder.begin(n)];case 3:return c.sent(),this._micEnabled?[4,this._startRecording()]:[3,5];case 4:c.sent(),c.label=5;case 5:return i=this._wavRecorder.deviceSelection,i&&r&&r.label!==i.label&&((l=(a=this._callbacks).onMicUpdated)===null||l===void 0||l.call(a,i)),[3,7];case 6:return c.sent(),[3,7];case 7:return[2]}})})},e.prototype.updateCam=function(n){},e.prototype.updateSpeaker=function(n){},Object.defineProperty(e.prototype,"selectedMic",{get:function(){var n;return(n=this._wavRecorder.deviceSelection)!==null&&n!==void 0?n:{}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectedCam",{get:function(){return{}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectedSpeaker",{get:function(){return{}},enumerable:!1,configurable:!0}),e.prototype.enableMic=function(n){return ka(this,void 0,Promise,function(){var r=this;return Ea(this,function(i){switch(i.label){case 0:return this._micEnabled=n,this._wavRecorder.stream?(this._wavRecorder.stream.getAudioTracks().forEach(function(a){var l,c;a.enabled=n,n||(c=(l=r._callbacks).onTrackStopped)===null||c===void 0||c.call(l,a,gM())}),n?[4,this._startRecording()]:[3,2]):[2];case 1:return i.sent(),[3,4];case 2:return[4,this._wavRecorder.pause()];case 3:i.sent(),i.label=4;case 4:return[2]}})})},e.prototype.enableCam=function(n){console.warn("WavMediaManager does not support video input.")},e.prototype.enableScreenShare=function(n){console.warn("WavMediaManager does not support screen sharing.")},Object.defineProperty(e.prototype,"isCamEnabled",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isMicEnabled",{get:function(){return this._micEnabled},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isSharingScreen",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.tracks=function(){var n,r=(n=this._wavRecorder.stream)===null||n===void 0?void 0:n.getTracks()[0];return{local:r?{audio:r}:{}}},e.prototype._startRecording=function(){return ka(this,void 0,void 0,function(){var n,r=this,i,a,l;return Ea(this,function(c){switch(c.label){case 0:return[4,this._wavRecorder.record(function(u){var f;(f=r._userAudioCallback)===null||f===void 0||f.call(r,u.mono)},this._recorderChunkSize)];case 1:return c.sent(),n=(i=this._wavRecorder.stream)===null||i===void 0?void 0:i.getAudioTracks()[0],n&&((l=(a=this._callbacks).onTrackStarted)===null||l===void 0||l.call(a,n,gM())),[2]}})})},e.prototype._handleAvailableDevicesUpdated=function(n){var r,i,a,l;(i=(r=this._callbacks).onAvailableCamsUpdated)===null||i===void 0||i.call(r,n.filter(function(f){return f.kind==="videoinput"})),(l=(a=this._callbacks).onAvailableMicsUpdated)===null||l===void 0||l.call(a,n.filter(function(f){return f.kind==="audioinput"}));var c=n.find(function(f){return f.deviceId==="default"}),u=this._wavRecorder.deviceSelection;u&&(!n.some(function(f){return f.deviceId===u.deviceId})||u.deviceId==="default"&&u.label!==c?.label)&&this.updateMic("")},e.prototype._handleDeviceError=function(n){var r,i,a=n.devices,l=n.type,c=n.error,u=new Bi(a,l,c?.message,c?{sourceError:c}:void 0);(i=(r=this._callbacks).onDeviceError)===null||i===void 0||i.call(r,u)},e})(k7);var gM=function(){return{id:"local",name:"",local:!0}},eJ=(function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})(),Or=function(t,e,n,r){function i(a){return a instanceof n?a:new n(function(l){l(a)})}return new(n||(n=Promise))(function(a,l){function c(h){try{f(r.next(h))}catch(m){l(m)}}function u(h){try{f(r.throw(h))}catch(m){l(m)}}function f(h){h.done?a(h.value):i(h.value).then(c,u)}f((r=r.apply(t,e||[])).next())})},Rr=function(t,e){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,l=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return l.next=c(0),l.throw=c(1),l.return=c(2),typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(f){return function(h){return u([f,h])}}function u(f){if(r)throw new TypeError("Generator is already executing.");for(;l&&(l=0,f[0]&&(n=0)),n;)try{if(r=1,i&&(a=f[0]&2?i.return:f[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,f[1])).done)return a;switch(i=0,a&&(f=[f[0]&2,a.value]),f[0]){case 0:case 1:a=f;break;case 4:return n.label++,{value:f[1],done:!1};case 5:n.label++,i=f[1],f=[0];continue;case 7:f=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(f[0]===6||f[0]===2)){n=0;continue}if(f[0]===3&&(!a||f[1]>a[0]&&f[1]<a[3])){n.label=f[1];break}if(f[0]===6&&n.label<a[1]){n.label=a[1],a=f;break}if(a&&n.label<a[2]){n.label=a[2],n.ops.push(f);break}a[2]&&n.ops.pop(),n.trys.pop();continue}f=e.call(t,n)}catch(h){f=[6,h],i=0}finally{r=a=0}if(f[0]&5)throw f[1];return{value:f[0]?f[1]:void 0,done:!0}}},tJ=(function(t){eJ(e,t);function e(n,r,i,a,l,c,u){n===void 0&&(n=!0),r===void 0&&(r=!0),l===void 0&&(l=void 0),c===void 0&&(c=24e3),u===void 0&&(u=24e3);var f,h=t.call(this)||this;return h._selectedCam={},h._selectedMic={},h._selectedSpeaker={},h._remoteAudioLevelInterval=null,h._recorderChunkSize=void 0,h._initialized=!1,h._connected=!1,h._currentAudioTrack=null,h._connectResolve=null,h.onTrackStartedCallback=i,h.onTrackStoppedCallback=a,h._recorderChunkSize=l,h._supportsScreenShare=!0,h._daily=(f=hy.getCallInstance())!==null&&f!==void 0?f:hy.createCallObject(),r&&(h._mediaStreamRecorder=new QK({sampleRate:c})),n&&(h._wavStreamPlayer=new N_({sampleRate:u})),h._daily.on("track-started",h.handleTrackStarted.bind(h)),h._daily.on("track-stopped",h.handleTrackStopped.bind(h)),h._daily.on("available-devices-updated",h._handleAvailableDevicesUpdated.bind(h)),h._daily.on("selected-devices-updated",h._handleSelectedDevicesUpdated.bind(h)),h._daily.on("camera-error",h.handleDeviceError.bind(h)),h._daily.on("local-audio-level",h._handleLocalAudioLevel.bind(h)),h}return e.prototype.initialize=function(){return Or(this,void 0,Promise,function(){var n,r,i,a,l,c=this,u,f,h,m,g,y,S,x,C,A,R,j;return Rr(this,function(N){switch(N.label){case 0:return this._initialized?(console.warn("DailyMediaManager already initialized"),[2]):[4,this._daily.startCamera({startVideoOff:!this._camEnabled,startAudioOff:!this._micEnabled,dailyConfig:{useDevicePreferenceCookies:!0}})];case 1:return n=N.sent(),[4,this._daily.enumerateDevices()];case 2:return r=N.sent().devices,i=r.filter(function(O){return O.kind==="videoinput"}),a=r.filter(function(O){return O.kind==="audioinput"}),l=r.filter(function(O){return O.kind==="audiooutput"}),(f=(u=this._callbacks).onAvailableCamsUpdated)===null||f===void 0||f.call(u,i),(m=(h=this._callbacks).onAvailableMicsUpdated)===null||m===void 0||m.call(h,a),(y=(g=this._callbacks).onAvailableSpeakersUpdated)===null||y===void 0||y.call(g,l),this._selectedCam=n.camera,(x=(S=this._callbacks).onCamUpdated)===null||x===void 0||x.call(S,n.camera),this._selectedMic=n.mic,(A=(C=this._callbacks).onMicUpdated)===null||A===void 0||A.call(C,n.mic),this._selectedSpeaker=n.speaker,(j=(R=this._callbacks).onSpeakerUpdated)===null||j===void 0||j.call(R,n.speaker),this._daily.isLocalAudioLevelObserverRunning()?[3,4]:[4,this._daily.startLocalAudioLevelObserver(100)];case 3:N.sent(),N.label=4;case 4:return this._wavStreamPlayer?[4,this._wavStreamPlayer.connect()]:[3,6];case 5:N.sent(),this._remoteAudioLevelInterval||(this._remoteAudioLevelInterval=setInterval(function(){var O,B=c._wavStreamPlayer.getFrequencies(),P=0;!((O=B.values)===null||O===void 0)&&O.length&&(P=B.values.reduce(function(L,G){return L+G},0)/B.values.length),c._handleRemoteAudioLevel(P)},100)),N.label=6;case 6:return this._initialized=!0,[2]}})})},e.prototype.connect=function(){return Or(this,void 0,Promise,function(){var n=this;return Rr(this,function(r){return this._connected?(console.warn("DailyMediaManager already connected"),[2]):(this._connected=!0,this._initialized?(this._micEnabled&&this._startRecording(),[2]):[2,new Promise(function(i){(function(){return Or(n,void 0,void 0,function(){return Rr(this,function(a){switch(a.label){case 0:return this._connectResolve=i,[4,this.initialize()];case 1:return a.sent(),[2]}})})})()})])})})},e.prototype.disconnect=function(){return Or(this,void 0,Promise,function(){var n,r;return Rr(this,function(i){switch(i.label){case 0:return this._remoteAudioLevelInterval&&clearInterval(this._remoteAudioLevelInterval),this._remoteAudioLevelInterval=null,this._daily.leave(),this._currentAudioTrack=null,[4,(n=this._mediaStreamRecorder)===null||n===void 0?void 0:n.end()];case 1:return i.sent(),(r=this._wavStreamPlayer)===null||r===void 0||r.interrupt(),this._initialized=!1,this._connected=!1,[2]}})})},e.prototype.userStartedSpeaking=function(){return Or(this,void 0,Promise,function(){var n;return Rr(this,function(r){return[2,(n=this._wavStreamPlayer)===null||n===void 0?void 0:n.interrupt()]})})},e.prototype.bufferBotAudio=function(n,r){var i;return(i=this._wavStreamPlayer)===null||i===void 0?void 0:i.add16BitPCM(n,r)},e.prototype.getAllMics=function(){return Or(this,void 0,Promise,function(){var n;return Rr(this,function(r){switch(r.label){case 0:return[4,this._daily.enumerateDevices()];case 1:return n=r.sent().devices,[2,n.filter(function(i){return i.kind==="audioinput"})]}})})},e.prototype.getAllCams=function(){return Or(this,void 0,Promise,function(){var n;return Rr(this,function(r){switch(r.label){case 0:return[4,this._daily.enumerateDevices()];case 1:return n=r.sent().devices,[2,n.filter(function(i){return i.kind==="videoinput"})]}})})},e.prototype.getAllSpeakers=function(){return Or(this,void 0,Promise,function(){var n;return Rr(this,function(r){switch(r.label){case 0:return[4,this._daily.enumerateDevices()];case 1:return n=r.sent().devices,[2,n.filter(function(i){return i.kind==="audiooutput"})]}})})},e.prototype.updateMic=function(n){var r=this;this._daily.setInputDevicesAsync({audioDeviceId:n}).then(function(i){r._selectedMic=i.mic})},e.prototype.updateCam=function(n){var r=this;this._daily.setInputDevicesAsync({videoDeviceId:n}).then(function(i){r._selectedCam=i.camera})},e.prototype.updateSpeaker=function(n){return Or(this,void 0,Promise,function(){var r,i,a,l,c,u,f=this,h,m,g,y;return Rr(this,function(S){switch(S.label){case 0:if(this._wavStreamPlayer)return[3,5];S.label=1;case 1:return S.trys.push([1,3,,4]),[4,this._daily.setOutputDeviceAsync({outputDeviceId:n})];case 2:return r=S.sent(),this._selectedSpeaker=r.speaker,(m=(h=this._callbacks).onSpeakerUpdated)===null||m===void 0||m.call(h,this._selectedSpeaker),[3,4];case 3:return i=S.sent(),console.error("Error setting output device",i),[3,4];case 4:return[2];case 5:return n!=="default"&&this._selectedSpeaker.deviceId===n?[2]:(a=n,a!=="default"?[3,7]:[4,this.getAllSpeakers()]);case 6:if(l=S.sent(),c=l.find(function(x){return x.deviceId==="default"}),!c)return console.warn("No default speaker found"),[2];l.splice(l.indexOf(c),1),u=l.find(function(x){return c.label.includes(x.label)}),a=(g=u?.deviceId)!==null&&g!==void 0?g:n,S.label=7;case 7:return(y=this._wavStreamPlayer)===null||y===void 0||y.updateSpeaker(a).then(function(){var x,C;f._selectedSpeaker={deviceId:n},(C=(x=f._callbacks).onSpeakerUpdated)===null||C===void 0||C.call(x,f._selectedSpeaker)}),[2]}})})},Object.defineProperty(e.prototype,"selectedMic",{get:function(){return this._selectedMic},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectedCam",{get:function(){return this._selectedCam},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectedSpeaker",{get:function(){return this._selectedSpeaker},enumerable:!1,configurable:!0}),e.prototype.enableMic=function(n){return Or(this,void 0,Promise,function(){var r;return Rr(this,function(i){return this._micEnabled=n,!((r=this._daily.participants())===null||r===void 0)&&r.local?(this._daily.setLocalAudio(n),this._mediaStreamRecorder&&(n?this._mediaStreamRecorder.getStatus()==="paused"&&this._startRecording():this._mediaStreamRecorder.getStatus()==="recording"&&this._mediaStreamRecorder.pause()),[2]):[2]})})},e.prototype.enableCam=function(n){this._camEnabled=n,this._daily.setLocalVideo(n)},e.prototype.enableScreenShare=function(n){n?this._daily.startScreenShare():this._daily.stopScreenShare()},Object.defineProperty(e.prototype,"isCamEnabled",{get:function(){return this._daily.localVideo()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isMicEnabled",{get:function(){return this._daily.localAudio()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isSharingScreen",{get:function(){return this._daily.localScreenAudio()||this._daily.localScreenVideo()},enumerable:!1,configurable:!0}),e.prototype.tracks=function(){var n,r,i,a,l,c,u,f,h,m,g,y,S=this._daily.participants();return{local:{audio:(i=(r=(n=S?.local)===null||n===void 0?void 0:n.tracks)===null||r===void 0?void 0:r.audio)===null||i===void 0?void 0:i.persistentTrack,screenAudio:(c=(l=(a=S?.local)===null||a===void 0?void 0:a.tracks)===null||l===void 0?void 0:l.screenAudio)===null||c===void 0?void 0:c.persistentTrack,screenVideo:(h=(f=(u=S?.local)===null||u===void 0?void 0:u.tracks)===null||f===void 0?void 0:f.screenVideo)===null||h===void 0?void 0:h.persistentTrack,video:(y=(g=(m=S?.local)===null||m===void 0?void 0:m.tracks)===null||g===void 0?void 0:g.video)===null||y===void 0?void 0:y.persistentTrack}}},e.prototype._startRecording=function(){var n=this;if(!(!this._connected||!this._mediaStreamRecorder))try{this._mediaStreamRecorder.record(function(i){n._userAudioCallback(i.mono)},this._recorderChunkSize)}catch(i){var r=i;r.message.includes("Already recording")||console.error("Error starting recording",i)}},e.prototype._handleAvailableDevicesUpdated=function(n){var r,i,a,l,c,u;(i=(r=this._callbacks).onAvailableCamsUpdated)===null||i===void 0||i.call(r,n.availableDevices.filter(function(f){return f.kind==="videoinput"})),(l=(a=this._callbacks).onAvailableMicsUpdated)===null||l===void 0||l.call(a,n.availableDevices.filter(function(f){return f.kind==="audioinput"})),(u=(c=this._callbacks).onAvailableSpeakersUpdated)===null||u===void 0||u.call(c,n.availableDevices.filter(function(f){return f.kind==="audiooutput"})),this._selectedSpeaker.deviceId==="default"&&this.updateSpeaker("default")},e.prototype._handleSelectedDevicesUpdated=function(n){var r,i,a,l,c,u;((r=this._selectedCam)===null||r===void 0?void 0:r.deviceId)!==n.devices.camera&&(this._selectedCam=n.devices.camera,(a=(i=this._callbacks).onCamUpdated)===null||a===void 0||a.call(i,n.devices.camera)),((l=this._selectedMic)===null||l===void 0?void 0:l.deviceId)!==n.devices.mic&&(this._selectedMic=n.devices.mic,(u=(c=this._callbacks).onMicUpdated)===null||u===void 0||u.call(c,n.devices.mic))},e.prototype.handleDeviceError=function(n){var r,i,a=function(l){var c=[];switch(l.type){case"permissions":return l.blockedMedia.forEach(function(u){c.push(u==="video"?"cam":"mic")}),new Bi(c,l.type,l.msg,{blockedBy:l.blockedBy});case"not-found":return l.missingMedia.forEach(function(u){c.push(u==="video"?"cam":"mic")}),new Bi(c,l.type,l.msg);case"constraints":return l.failedMedia.forEach(function(u){c.push(u==="video"?"cam":"mic")}),new Bi(c,l.type,l.msg,{reason:l.reason});case"cam-in-use":return c.push("cam"),new Bi(c,"in-use",l.msg);case"mic-in-use":return c.push("mic"),new Bi(c,"in-use",l.msg);case"cam-mic-in-use":return c.push("cam"),c.push("mic"),new Bi(c,"in-use",l.msg);case"undefined-mediadevices":case"unknown":default:return c.push("cam"),c.push("mic"),new Bi(c,l.type,l.msg)}};(i=(r=this._callbacks).onDeviceError)===null||i===void 0||i.call(r,a(n.error))},e.prototype._handleLocalAudioLevel=function(n){var r,i;(i=(r=this._callbacks).onLocalAudioLevel)===null||i===void 0||i.call(r,n.audioLevel)},e.prototype._handleRemoteAudioLevel=function(n){var r,i;(i=(r=this._callbacks).onRemoteAudioLevel)===null||i===void 0||i.call(r,n,nJ())},e.prototype.handleTrackStarted=function(n){return Or(this,void 0,void 0,function(){var r,i,a,l,c,u;return Rr(this,function(f){switch(f.label){case 0:if(!(!((a=n.participant)===null||a===void 0)&&a.local))return[2];if(n.track.kind!=="audio")return[3,15];if(!this._mediaStreamRecorder)return[3,14];switch(r=this._mediaStreamRecorder.getStatus(),i=r,i){case"ended":return[3,1];case"paused":return[3,5];case"recording":return[3,6]}return[3,6];case 1:return f.trys.push([1,3,,4]),[4,this._mediaStreamRecorder.begin(n.track)];case 2:return f.sent(),this._connected&&(this._startRecording(),this._connectResolve&&(this._connectResolve(),this._connectResolve=null)),[3,4];case 3:return f.sent(),[3,4];case 4:return[3,14];case 5:return this._startRecording(),[3,14];case 6:return this._currentAudioTrack===n.track?[3,12]:[4,this._mediaStreamRecorder.end()];case 7:f.sent(),f.label=8;case 8:return f.trys.push([8,10,,11]),[4,this._mediaStreamRecorder.begin(n.track)];case 9:return f.sent(),this._startRecording(),[3,11];case 10:return f.sent(),[3,11];case 11:return[3,13];case 12:console.warn("track-started event received for current track and already recording"),f.label=13;case 13:return[3,14];case 14:this._currentAudioTrack=n.track,f.label=15;case 15:return(c=(l=this._callbacks).onTrackStarted)===null||c===void 0||c.call(l,n.track,n.participant?vM(n.participant):void 0),(u=this.onTrackStartedCallback)===null||u===void 0||u.call(this,n),[2]}})})},e.prototype.handleTrackStopped=function(n){var r,i,a,l;!((r=n.participant)===null||r===void 0)&&r.local&&(n.track.kind==="audio"&&this._mediaStreamRecorder&&this._mediaStreamRecorder.getStatus()==="recording"&&this._mediaStreamRecorder.pause(),(a=(i=this._callbacks).onTrackStopped)===null||a===void 0||a.call(i,n.track,n.participant?vM(n.participant):void 0),(l=this.onTrackStoppedCallback)===null||l===void 0||l.call(this,n))},e})(k7),vM=function(t){return{id:t.user_id,local:t.local,name:t.user_name}},nJ=function(){return{id:"bot",local:!1,name:"Bot"}},rJ=(function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})(),As=function(t,e,n,r){function i(a){return a instanceof n?a:new n(function(l){l(a)})}return new(n||(n=Promise))(function(a,l){function c(h){try{f(r.next(h))}catch(m){l(m)}}function u(h){try{f(r.throw(h))}catch(m){l(m)}}function f(h){h.done?a(h.value):i(h.value).then(c,u)}f((r=r.apply(t,e||[])).next())})},Ts=function(t,e){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,l=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return l.next=c(0),l.throw=c(1),l.return=c(2),typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(f){return function(h){return u([f,h])}}function u(f){if(r)throw new TypeError("Generator is already executing.");for(;l&&(l=0,f[0]&&(n=0)),n;)try{if(r=1,i&&(a=f[0]&2?i.return:f[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,f[1])).done)return a;switch(i=0,a&&(f=[f[0]&2,a.value]),f[0]){case 0:case 1:a=f;break;case 4:return n.label++,{value:f[1],done:!1};case 5:n.label++,i=f[1],f=[0];continue;case 7:f=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(f[0]===6||f[0]===2)){n=0;continue}if(f[0]===3&&(!a||f[1]>a[0]&&f[1]<a[3])){n.label=f[1];break}if(f[0]===6&&n.label<a[1]){n.label=a[1],a=f;break}if(a&&n.label<a[2]){n.label=a[2],n.ops.push(f);break}a[2]&&n.ops.pop(),n.trys.pop();continue}f=e.call(t,n)}catch(h){f=[6,h],i=0}finally{r=a=0}if(f[0]&5)throw f[1];return{value:f[0]?f[1]:void 0,done:!0}}},eh=function(t,e,n){if(n||arguments.length===2)for(var r=0,i=e.length,a;r<i;r++)(a||!(r in e))&&(a||(a=Array.prototype.slice.call(e,0,r)),a[r]=e[r]);return t.concat(a||Array.prototype.slice.call(e))},E7=["CONNECTING","OPEN","CLOSING","CLOSED"],iJ=5e3,sJ=15e3,aJ=15e4,bM=2,oJ=10,lJ=1e3,cJ=3e4,uJ=1.5,dJ=4100,fJ="SIG_CONNECTION_CANCELED",hJ="WEBSOCKET_ERROR",wn;(function(t){t[t.DEBUG=0]="DEBUG",t[t.ERROR=1]="ERROR",t[t.INFO=2]="INFO",t[t.WARN=3]="WARN"})(wn||(wn={}));var pJ=(function(){function t(e,n){this._closedManually=!1,this._errored=!1,this._rejected=!1,this._timed_out=!1,this._initialConnectionOk=!1,this._ws=new WebSocket(e,n)}return t.prototype.addEventListener=function(e,n){this._ws.addEventListener(e,n)},t.prototype.close=function(e,n){this._ws.close(e,n)},t.prototype.send=function(e){this._ws.send(e)},Object.defineProperty(t.prototype,"url",{get:function(){return this._ws.url},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"readyState",{get:function(){return this._ws.readyState},enumerable:!1,configurable:!0}),t})(),Yp=(function(t){rJ(e,t);function e(n,r,i){i===void 0&&(i={});var a,l=t.call(this)||this;if(!n)throw new Error("Need a valid WebSocket URL");return l._ws=null,l._url=n,l._protocols=r,l._parseBlobToJson=(a=i?.parseBlobToJson)!==null&&a!==void 0?a:!0,l.init(),l}return e.prototype.init=function(){this._keepAliveTimeout=sJ,this._keepAliveInterval=iJ,this._disconnected=!1,this._keepIntervalID=null,this._shouldRetryFn=null,this._connectionTimeout=aJ,this._reconnectAttempts=0,this._allowedReconnectAttempts=bM,this._reconnectInterval=lJ,this._maxReconnectInterval=cJ,this._reconnectDecay=uJ},e.prototype.connect=function(){return As(this,void 0,void 0,function(){var n=this;return Ts(this,function(r){return[2,new Promise(function(i,a){n._disconnected=!1,n.clearReconnectTimeout();var l=new pJ(n._url,n._protocols);n.setConnectionTimeout(),l.addEventListener("close",function(c){var u=c,f=l._timed_out?dJ:u.code,h=l._timed_out?"websocket connection timed out":u.reason;if(l._timed_out=!1,!l._closedManually&&l._initialConnectionOk?(console.warn("signaling socket closed unexpectedly: ".concat(f).concat(h?" "+h:"")),n._closeSocket(),n.emit("close",f,h)):n.log("signaling socket closed"),!l._closedManually&&(l._errored||l._timed_out)&&(console.warn("signaling socket closed on error: ".concat(f).concat(h?" "+h:"")),!l._rejected)){l._rejected=!0;var m=new Error("WebSocket connection error (".concat(f,"): ").concat(h));m.name=hJ,a(m)}}),l.addEventListener("open",function(c){if(n.log("wss connection opened to",wn.DEBUG,n._url),n.clearConnectionTimeout(),!(l._rejected||l._timed_out)){if(l._closedManually||n._ws&&n._ws!==l){l._rejected=!0,l.close();var u=Error("wss connection interrupted by disconnect or newer connection");u.name=fJ,a(u);return}l._initialConnectionOk=n._url,n._lastMsgRecvTime=Date.now(),n._keepAliveInterval&&(n._keepIntervalID=setInterval(function(){return n.checkSocketHealthAndSendKeepAlive()},n._keepAliveInterval)),n._ws=l,n.emit("open"),i(l)}}),l.addEventListener("error",function(c){if(!l._closedManually){var u=c.currentTarget;n.log("websocket error event: ".concat(u?.url))}l._errored=!0}),l.addEventListener("message",function(c){n._handleMessage(c)})})]})})},e.prototype.setConnectionTimeout=function(){var n=this;this._connectionTimeoutID=setTimeout(function(){return As(n,void 0,void 0,function(){return Ts(this,function(r){switch(r.label){case 0:return this.log("Connection reconnect attempt timed out."),this.emit("connection-timeout"),this.clearConnectionTimeout(),[4,this._closeSocket()];case 1:return r.sent(),[2]}})})},this._connectionTimeout)},e.prototype.clearConnectionTimeout=function(){clearTimeout(this._connectionTimeoutID),this._connectionTimeoutID=void 0},e.prototype.clearReconnectTimeout=function(){clearTimeout(this._reconnectTimeoutID),this._reconnectTimeoutID=void 0},e.prototype.clearKeepAliveInterval=function(){this._keepIntervalID&&(clearInterval(this._keepIntervalID),this._keepIntervalID=null)},e.prototype.checkSocketHealthAndSendKeepAlive=function(){return As(this,void 0,void 0,function(){return Ts(this,function(n){switch(n.label){case 0:return this._ws&&this._ws.readyState===WebSocket.OPEN?!this._keepAliveTimeout||!this._keepAliveInterval?[2]:Date.now()-this._lastMsgRecvTime>this._keepAliveTimeout?(this.log("Connection is stale, need to reconnect",wn.WARN),[4,this._closeSocket()]):[3,2]:[2];case 1:return n.sent(),[2];case 2:return Date.now()-this._lastMsgSendTime<this._keepAliveInterval?[2]:(this.log("Emitting keep-alive",wn.DEBUG),this.emit("keep-alive"),[2])}})})},e.prototype._closeSocket=function(){return As(this,void 0,void 0,function(){var n,r,i;return Ts(this,function(a){switch(a.label){case 0:this.log("Closing"),a.label=1;case 1:return a.trys.push([1,4,,5]),this.clearKeepAliveInterval(),this._lastMsgRecvTime=0,this._ws&&(this._ws._closedManually=!0,this._ws.close()),n=((i=this._ws)===null||i===void 0?void 0:i._initialConnectionOk)&&this._shouldRetryFn&&this._shouldRetryFn(),this._ws=null,n?(this.log("Emitting reconnect",wn.DEBUG),this.emit("reconnecting"),[4,this.retryFailedConnection()]):[3,3];case 2:a.sent(),a.label=3;case 3:return[3,5];case 4:return r=a.sent(),this.log("Error while closing and retrying: ".concat(r),wn.ERROR),[3,5];case 5:return[2]}})})},e.prototype.retryFailedConnection=function(){return As(this,void 0,void 0,function(){var n,r=this;return Ts(this,function(i){if(this._reconnectAttempts<this._allowedReconnectAttempts){if(this._reconnectTimeoutID)return this.log("Retry already scheduled"),[2];this.log("Retrying failed connection"),n=this._reconnectInterval*Math.pow(this._reconnectDecay,this._reconnectAttempts),n=n>this._maxReconnectInterval?this._maxReconnectInterval:n,this.log("Reconnecting in ".concat(n/1e3," seconds")),this._reconnectAttempts+=1,this._reconnectTimeoutID=setTimeout(function(){return r.connect()},n)}else this.log("Maximum connection retry attempts exceeded",wn.ERROR),this.emit("reconnect-failed");return[2]})})},e.prototype.log=function(n,r){r===void 0&&(r=wn.DEBUG);for(var i=[],a=2;a<arguments.length;a++)i[a-2]=arguments[a];switch(r){case wn.DEBUG:console.debug.apply(console,eh(["websocket: ".concat(n)],i,!1));break;case wn.ERROR:console.error.apply(console,eh(["websocket: ".concat(n)],i,!1));break;case wn.WARN:console.warn.apply(console,eh(["websocket: ".concat(n)],i,!1));break;case wn.INFO:default:console.log.apply(console,eh(["websocket: ".concat(n)],i,!1));break}},e.prototype.send=function(n){return As(this,void 0,void 0,function(){return Ts(this,function(r){try{this._ws&&this._ws.readyState===WebSocket.OPEN?(this._lastMsgSendTime=Date.now(),this._ws.send(n)):this.log("Failed to send data, web socket not open.",wn.ERROR)}catch(i){this.log("Failed to send data. ".concat(i),wn.ERROR)}return[2]})})},e.prototype.close=function(){return As(this,void 0,void 0,function(){return Ts(this,function(n){try{this.log("Closing websocket"),this._disconnected=!0,this.clearReconnectTimeout(),this._closeSocket()}catch(r){this.log("Failed to close websocket. ".concat(r))}return[2]})})},Object.defineProperty(e.prototype,"readyState",{get:function(){var n,r;return(r=(n=this._ws)===null||n===void 0?void 0:n.readyState)!==null&&r!==void 0?r:WebSocket.CLOSED},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"url",{get:function(){return this._url},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"keepAliveTimeout",{get:function(){return this._keepAliveTimeout},set:function(n){typeof n=="number"&&(this.log("Setting ACK freshness timeout to ".concat(n)),this._keepAliveTimeout=n)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"keepAliveInterval",{get:function(){return this._keepAliveInterval},set:function(n){typeof n=="number"&&(this.log("Setting keep-alive interval to ".concat(n)),this._keepAliveInterval=n)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"shouldRetryFn",{set:function(n){typeof n=="function"&&(this._shouldRetryFn=n)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"connectionTimeout",{get:function(){return this._connectionTimeout},set:function(n){typeof n=="number"&&(this._connectionTimeout=n)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxReconnectAttempts",{get:function(){return this._allowedReconnectAttempts},set:function(n){n>0&&n<oJ?(this.log("Setting maximum connection retry attempts to ".concat(n)),this._allowedReconnectAttempts=n):this._allowedReconnectAttempts=bM},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reconnectInterval",{get:function(){return this._reconnectInterval},set:function(n){typeof n=="number"&&(this._reconnectInterval=n<this._maxReconnectInterval?n:this._maxReconnectInterval)},enumerable:!1,configurable:!0}),e.prototype._handleMessage=function(n){return As(this,void 0,void 0,function(){var r,i,a,l=this;return Ts(this,function(c){switch(c.label){case 0:return this._lastMsgRecvTime=Date.now(),r=n.data,i=new Promise(function(u,f){if(typeof r=="string")u(r);else if(r instanceof ArrayBuffer){var h=r;u(new Uint8Array(h))}else if(r instanceof Blob){if(!l._parseBlobToJson){u(r);return}var m=r,g=new FileReader;g.onload=function(){var y=g.result;try{var S=JSON.parse(y);u(S)}catch(x){console.error("Failed to parse JSON from Blob:",x)}},g.readAsText(m)}}),[4,i];case 1:return a=c.sent(),this.emit("message",a),[2]}})})},e})(LM.EventEmitter);["binaryType","bufferedAmount","extensions","protocol","readyState","url","keepAliveTimeout","keepAliveInterval","shouldRetryFn","connectionTimeout","maxReconnectAttempts","reconnectInterval"].forEach(function(t){Object.defineProperty(Yp.prototype,t,{enumerable:!0})});["CONNECTING","OPEN","CLOSING","CLOSED"].forEach(function(t){Object.defineProperty(Yp.prototype,t,{enumerable:!0,value:E7.indexOf(t)})});["CONNECTING","OPEN","CLOSING","CLOSED"].forEach(function(t){Object.defineProperty(Yp,t,{enumerable:!0,value:E7.indexOf(t)})});class mJ extends $u{constructor(){super("pipecat.TextFrame",[{no:1,name:"id",kind:"scalar",T:4,L:0},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"text",kind:"scalar",T:9}])}create(e){const n=globalThis.Object.create(this.messagePrototype);return n.id=0n,n.name="",n.text="",e!==void 0&&Us(this,n,e),n}internalBinaryRead(e,n,r,i){let a=i??this.create(),l=e.pos+n;for(;e.pos<l;){let[c,u]=e.tag();switch(c){case 1:a.id=e.uint64().toBigInt();break;case 2:a.name=e.string();break;case 3:a.text=e.string();break;default:let f=r.readUnknownField;if(f==="throw")throw new globalThis.Error(`Unknown field ${c} (wire type ${u}) for ${this.typeName}`);let h=e.skip(u);f!==!1&&(f===!0?zn.onRead:f)(this.typeName,a,c,u,h)}}return a}internalBinaryWrite(e,n,r){e.id!==0n&&n.tag(1,Fe.Varint).uint64(e.id),e.name!==""&&n.tag(2,Fe.LengthDelimited).string(e.name),e.text!==""&&n.tag(3,Fe.LengthDelimited).string(e.text);let i=r.writeUnknownFields;return i!==!1&&(i==!0?zn.onWrite:i)(this.typeName,e,n),n}}const pb=new mJ;class gJ extends $u{constructor(){super("pipecat.AudioRawFrame",[{no:1,name:"id",kind:"scalar",T:4,L:0},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"audio",kind:"scalar",T:12},{no:4,name:"sample_rate",kind:"scalar",T:13},{no:5,name:"num_channels",kind:"scalar",T:13},{no:6,name:"pts",kind:"scalar",opt:!0,T:4,L:0}])}create(e){const n=globalThis.Object.create(this.messagePrototype);return n.id=0n,n.name="",n.audio=new Uint8Array(0),n.sampleRate=0,n.numChannels=0,e!==void 0&&Us(this,n,e),n}internalBinaryRead(e,n,r,i){let a=i??this.create(),l=e.pos+n;for(;e.pos<l;){let[c,u]=e.tag();switch(c){case 1:a.id=e.uint64().toBigInt();break;case 2:a.name=e.string();break;case 3:a.audio=e.bytes();break;case 4:a.sampleRate=e.uint32();break;case 5:a.numChannels=e.uint32();break;case 6:a.pts=e.uint64().toBigInt();break;default:let f=r.readUnknownField;if(f==="throw")throw new globalThis.Error(`Unknown field ${c} (wire type ${u}) for ${this.typeName}`);let h=e.skip(u);f!==!1&&(f===!0?zn.onRead:f)(this.typeName,a,c,u,h)}}return a}internalBinaryWrite(e,n,r){e.id!==0n&&n.tag(1,Fe.Varint).uint64(e.id),e.name!==""&&n.tag(2,Fe.LengthDelimited).string(e.name),e.audio.length&&n.tag(3,Fe.LengthDelimited).bytes(e.audio),e.sampleRate!==0&&n.tag(4,Fe.Varint).uint32(e.sampleRate),e.numChannels!==0&&n.tag(5,Fe.Varint).uint32(e.numChannels),e.pts!==void 0&&n.tag(6,Fe.Varint).uint64(e.pts);let i=r.writeUnknownFields;return i!==!1&&(i==!0?zn.onWrite:i)(this.typeName,e,n),n}}const mb=new gJ;class vJ extends $u{constructor(){super("pipecat.TranscriptionFrame",[{no:1,name:"id",kind:"scalar",T:4,L:0},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"text",kind:"scalar",T:9},{no:4,name:"user_id",kind:"scalar",T:9},{no:5,name:"timestamp",kind:"scalar",T:9}])}create(e){const n=globalThis.Object.create(this.messagePrototype);return n.id=0n,n.name="",n.text="",n.userId="",n.timestamp="",e!==void 0&&Us(this,n,e),n}internalBinaryRead(e,n,r,i){let a=i??this.create(),l=e.pos+n;for(;e.pos<l;){let[c,u]=e.tag();switch(c){case 1:a.id=e.uint64().toBigInt();break;case 2:a.name=e.string();break;case 3:a.text=e.string();break;case 4:a.userId=e.string();break;case 5:a.timestamp=e.string();break;default:let f=r.readUnknownField;if(f==="throw")throw new globalThis.Error(`Unknown field ${c} (wire type ${u}) for ${this.typeName}`);let h=e.skip(u);f!==!1&&(f===!0?zn.onRead:f)(this.typeName,a,c,u,h)}}return a}internalBinaryWrite(e,n,r){e.id!==0n&&n.tag(1,Fe.Varint).uint64(e.id),e.name!==""&&n.tag(2,Fe.LengthDelimited).string(e.name),e.text!==""&&n.tag(3,Fe.LengthDelimited).string(e.text),e.userId!==""&&n.tag(4,Fe.LengthDelimited).string(e.userId),e.timestamp!==""&&n.tag(5,Fe.LengthDelimited).string(e.timestamp);let i=r.writeUnknownFields;return i!==!1&&(i==!0?zn.onWrite:i)(this.typeName,e,n),n}}const gb=new vJ;class bJ extends $u{constructor(){super("pipecat.MessageFrame",[{no:1,name:"data",kind:"scalar",T:9}])}create(e){const n=globalThis.Object.create(this.messagePrototype);return n.data="",e!==void 0&&Us(this,n,e),n}internalBinaryRead(e,n,r,i){let a=i??this.create(),l=e.pos+n;for(;e.pos<l;){let[c,u]=e.tag();switch(c){case 1:a.data=e.string();break;default:let f=r.readUnknownField;if(f==="throw")throw new globalThis.Error(`Unknown field ${c} (wire type ${u}) for ${this.typeName}`);let h=e.skip(u);f!==!1&&(f===!0?zn.onRead:f)(this.typeName,a,c,u,h)}}return a}internalBinaryWrite(e,n,r){e.data!==""&&n.tag(1,Fe.LengthDelimited).string(e.data);let i=r.writeUnknownFields;return i!==!1&&(i==!0?zn.onWrite:i)(this.typeName,e,n),n}}const vb=new bJ;class yJ extends $u{constructor(){super("pipecat.Frame",[{no:1,name:"text",kind:"message",oneof:"frame",T:()=>pb},{no:2,name:"audio",kind:"message",oneof:"frame",T:()=>mb},{no:3,name:"transcription",kind:"message",oneof:"frame",T:()=>gb},{no:4,name:"message",kind:"message",oneof:"frame",T:()=>vb}])}create(e){const n=globalThis.Object.create(this.messagePrototype);return n.frame={oneofKind:void 0},e!==void 0&&Us(this,n,e),n}internalBinaryRead(e,n,r,i){let a=i??this.create(),l=e.pos+n;for(;e.pos<l;){let[c,u]=e.tag();switch(c){case 1:a.frame={oneofKind:"text",text:pb.internalBinaryRead(e,e.uint32(),r,a.frame.text)};break;case 2:a.frame={oneofKind:"audio",audio:mb.internalBinaryRead(e,e.uint32(),r,a.frame.audio)};break;case 3:a.frame={oneofKind:"transcription",transcription:gb.internalBinaryRead(e,e.uint32(),r,a.frame.transcription)};break;case 4:a.frame={oneofKind:"message",message:vb.internalBinaryRead(e,e.uint32(),r,a.frame.message)};break;default:let f=r.readUnknownField;if(f==="throw")throw new globalThis.Error(`Unknown field ${c} (wire type ${u}) for ${this.typeName}`);let h=e.skip(u);f!==!1&&(f===!0?zn.onRead:f)(this.typeName,a,c,u,h)}}return a}internalBinaryWrite(e,n,r){e.frame.oneofKind==="text"&&pb.internalBinaryWrite(e.frame.text,n.tag(1,Fe.LengthDelimited).fork(),r).join(),e.frame.oneofKind==="audio"&&mb.internalBinaryWrite(e.frame.audio,n.tag(2,Fe.LengthDelimited).fork(),r).join(),e.frame.oneofKind==="transcription"&&gb.internalBinaryWrite(e.frame.transcription,n.tag(3,Fe.LengthDelimited).fork(),r).join(),e.frame.oneofKind==="message"&&vb.internalBinaryWrite(e.frame.message,n.tag(4,Fe.LengthDelimited).fork(),r).join();let i=r.writeUnknownFields;return i!==!1&&(i==!0?zn.onWrite:i)(this.typeName,e,n),n}}const Ic=new yJ;class _J{serialize(e){}serializeAudio(e,n,r){const i=new Uint8Array(e),a=Ic.create({frame:{oneofKind:"audio",audio:{id:0n,name:"audio",audio:i,sampleRate:n,numChannels:r}}});return new Uint8Array(Ic.toBinary(a))}serializeMessage(e){const n=Ic.create({frame:{oneofKind:"message",message:{data:JSON.stringify(e)}}});return new Uint8Array(Ic.toBinary(n))}async deserialize(e){if(!(e instanceof Blob))throw new Error("Unknown data type");const n=await e.arrayBuffer(),r=Ic.fromBinary(new Uint8Array(n)).frame;if(r.oneofKind==="audio"){const i=Array.from(r.audio.audio),a=new Uint8Array(i);return{type:"audio",audio:new Int16Array(a.buffer)}}else{if(r.oneofKind==="message")return{type:"message",message:JSON.parse(r.message.data)};throw new Error("Unknown frame kind")}}}class wl extends KM{constructor(e={}){super(),this._wsUrl=null,this.audioQueue=[],this._wsUrl=e.wsUrl??e.ws_url??null,this._recorderSampleRate=e.recorderSampleRate??wl.RECORDER_SAMPLE_RATE,this._mediaManager=e.mediaManager||new tJ(!0,!0,void 0,void 0,512,this._recorderSampleRate,e.playerSampleRate??wl.PLAYER_SAMPLE_RATE),this._mediaManager.setUserAudioCallback(this.handleUserAudioStream.bind(this)),this._ws=null,this._serializer=e.serializer||new _J,this._maxMessageSize=1048576}initialize(e,n){this._options=e,this._callbacks=e.callbacks??{},this._onMessage=n,this._mediaManager.setClientOptions(e),this.state="disconnected"}async initDevices(){this.state="initializing",await this._mediaManager.initialize(),this.state="initialized"}_validateConnectionParams(e){if(e==null)return;if(typeof e!="object")throw new In("Invalid connection parameters");const n=i=>i.replace(/_([a-z,A-Z])/g,(a,l)=>l.toUpperCase()),r={};for(const[i,a]of Object.entries(e)){const l=n(i);if(l==="wsUrl"){if(typeof a!="string")throw new In(`Invalid type for wsUrl: expected string, got ${typeof a}`)}else throw new In(`Unrecognized connection parameter: ${i}.`);r[l]=a}return r}async _connect(e){if(!this._abortController?.signal.aborted){if(this.state="connecting",this._wsUrl=e?.wsUrl??e?.ws_url??this._wsUrl,!this._wsUrl)throw je.error("No url provided for connection"),this.state="error",new _b;try{if(this._ws=this.initializeWebsocket(),await this._ws.connect(),await this._mediaManager.connect(),this._abortController?.signal.aborted)return;this.state="connected",this._callbacks.onConnected?.()}catch(n){const r=`Failed to connect to websocket: ${n}`;throw je.error(r),this.state="error",new _b(r)}}}async _disconnect(){this.state="disconnecting",await this._mediaManager.disconnect(),await this._ws?.close(),this.state="disconnected",this._callbacks.onDisconnected?.()}getAllMics(){return this._mediaManager.getAllMics()}getAllCams(){return this._mediaManager.getAllCams()}getAllSpeakers(){return this._mediaManager.getAllSpeakers()}async updateMic(e){return this._mediaManager.updateMic(e)}updateCam(e){return this._mediaManager.updateCam(e)}updateSpeaker(e){return this._mediaManager.updateSpeaker(e)}get selectedMic(){return this._mediaManager.selectedMic}get selectedSpeaker(){return this._mediaManager.selectedSpeaker}enableMic(e){this._mediaManager.enableMic(e)}get isMicEnabled(){return this._mediaManager.isMicEnabled}get state(){return this._state}set state(e){this._state!==e&&(this._state=e,this._callbacks.onTransportStateChanged?.(e))}tracks(){return this._mediaManager.tracks()}initializeWebsocket(){const e=new Yp(this._wsUrl,void 0,{parseBlobToJson:!1});return e.keepAliveInterval=0,e.on("open",()=>{je.debug("Websocket connection opened")}),e.on("message",async n=>{try{const r=await this._serializer.deserialize(n);r.type==="audio"?this._mediaManager.bufferBotAudio(r.audio):r.type==="message"&&r.message.label==="rtvi-ai"&&this._onMessage(r.message)}catch(r){je.error("Failed to deserialize incoming message",r)}}),e.on("error",n=>{this.connectionError(`websocket error: ${n}`)}),e.on("connection-timeout",()=>{this.connectionError("websocket connection timed out")}),e.on("close",n=>{this.connectionError(`websocket connection closed. Code: ${n}`)}),e.on("reconnect-failed",()=>{this.connectionError("websocket reconnect failed")}),e}sendReadyMessage(){this.state="ready",this.sendMessage(Kt.clientReady())}handleUserAudioStream(e){if(this.state==="ready")try{this.flushAudioQueue(),this._sendAudioInput(e)}catch(n){je.error("Error sending audio stream to websocket:",n),this.state="error"}else this.audioQueue.push(e)}flushAudioQueue(){if(!(this.audioQueue.length<=0))for(je.info("Will flush audio queue",this.audioQueue.length);this.audioQueue.length>0;){const e=this.audioQueue.shift();e&&this._sendAudioInput(e)}}sendRawMessage(e){const n=this._serializer.serialize(e);this._sendMsg(n)}sendMessage(e){const n=this._serializer.serializeMessage(e);this._sendMsg(n)}async _sendAudioInput(e){try{const n=this._serializer.serializeAudio(e,this._recorderSampleRate,1);await this._sendMsg(n)}catch(n){je.error("Error sending audio frame",n)}}async _sendMsg(e){if(!this._ws){je.error("sendMsg called but WS is null");return}if(this._ws.readyState!==WebSocket.OPEN){je.error("attempt to send to closed socket");return}if(e)try{await this._ws.send(e)}catch(n){je.error("sendMsg error",n)}}connectionError(e){this._callbacks.onError?.(Kt.error(e,!0))}enableScreenShare(e){throw je.error("enableScreenShare not implemented for WebSocketTransport"),new th("enableScreenShare","webSocketTransport","This feature has not been implemented")}get isSharingScreen(){return je.error("isSharingScreen not implemented for WebSocketTransport"),!1}enableCam(e){throw je.error("enableCam not implemented for WebSocketTransport"),new th("enableCam","webSocketTransport","This feature has not been implemented")}get isCamEnabled(){return je.error("isCamEnabled not implemented for WebSocketTransport"),!1}get selectedCam(){throw je.error("selectedCam not implemented for WebSocketTransport"),new th("selectedCam","webSocketTransport","This feature has not been implemented")}}wl.RECORDER_SAMPLE_RATE=16e3;wl.PLAYER_SAMPLE_RATE=24e3;class xJ extends wl{constructor(e){super(e)}get isSharingScreen(){return je.warn("isSharingScreen not implemented for WebSocketTransport"),!1}get isCamEnabled(){return je.warn("isCamEnabled not implemented for WebSocketTransport"),!1}}const wJ=t=>t;function SJ({clientOptions:t,connectOnMount:e=!1,connectParams:n,initDevicesOnMount:r=!1,noAudioOutput:i=!1,noThemeProvider:a=!1,startBotParams:l,startBotResponseTransformer:c=wJ,transportOptions:u,themeProps:f,children:h}){const[m,g]=k.useState({client:null,error:null,rawStartBotResponse:null,transformedStartBotResponse:null}),[y,S]=k.useState(0),x=k.useRef(n),C=k.useRef(l),A=k.useRef(c);k.useEffect(()=>{x.current=n}),k.useEffect(()=>{C.current=l}),k.useEffect(()=>{A.current=c});const R=k.useCallback(async L=>{try{if(C.current){const G=await L.startBot({requestData:{},...C.current});g(re=>({...re,rawStartBotResponse:G}));const U=await A.current(G);await L.connect(U),g(re=>({...re,transformedStartBotResponse:U}))}else await L.connect(x.current??{})}catch(G){console.error("Connection error:",G),g(U=>({...U,error:`Failed to start session: ${G instanceof Error?G.message:String(G)}`}))}},[]);k.useEffect(()=>{let L=null;return(async()=>{try{const G=new xJ(u??{}),U=new qr({enableCam:!1,enableScreenShare:!1,enableMic:!0,transport:G,...t});L=U,g(re=>({...re,client:U,error:null})),r&&await U.initDevices(),e&&await R(U)}catch(G){console.error("Failed to initialize WebSocket transport:",G)}})(),()=>{L?.disconnect(),g({client:null,error:null,rawStartBotResponse:null,transformedStartBotResponse:null})}},[t,e,r,R,u,y]);const j=async()=>{const L=m.client;!L||!["initialized","disconnected","error"].includes(L.state)||(g(G=>({...G,error:null})),await R(L))},N=async()=>{const L=m.client;if(L){try{await L.disconnect()}catch(G){console.error("Error during disconnect:",G)}S(G=>G+1)}},O=L=>typeof h=="function"?h(L):h;if(!m.client)return typeof h=="function"?O({client:null,handleConnect:async()=>{},handleDisconnect:async()=>{},error:null,rawStartBotResponse:void 0,transformedStartBotResponse:void 0}):h;const B={client:m.client,handleConnect:j,handleDisconnect:N,error:m.error,rawStartBotResponse:m.rawStartBotResponse??void 0,transformedStartBotResponse:m.transformedStartBotResponse??void 0},P=w.jsx(By,{client:m.client,children:w.jsxs(KO,{children:[O(B),i?null:w.jsx($y,{})]})});return a?P:w.jsx(__,{...f,children:P})}const CJ=new URL("/bot/connect",window.location.origin).href,kJ={conversation_id:"",audio:{audio_filter:{name:"vad_rms_gate",trigger_threshold:.05,grace_continue_threshold:.03}},user_start_strategy:{selected:["stt_min_chars","intent_start"],stt_min_chars:3,intent_threshold:.85},user_stop_strategy:{selected:["vad_stop","intent_stop"],vad_stop_seconds:.6,intent_time_out:2},stt:{provider:{name:"volcengine",hotwords_enabled:!1,hotwords:"",context_enabled:!1,context:""}},tts:{provider:{name:"qwen_vc",model:"qwen3-tts-vc-realtime-2026-01-15",voice:"qwen-tts-vc-yanyan-voice-20260414162946853-a320",speech_rate:1.2,pitch_rate:1}},agent:{provider:{name:"mpaas",url:"wss://service.7x24cc.com/service/ws",account_id:"N000000001907",agent_id:"582480b02daf11f198fbbdeca5433be1"}},filler:{provider:{name:"disabled"}},idle:{provider:{name:"mpaas"}},audio_output_mixer:{provider:{name:"soundfile",sound_files:"office-ambience-16000-mono.mp3",volume:1}},user_mute_strategy:{provider:{name:"first_speech"}},dialogue:{enabled:!1}},yM=JSON.stringify(kJ,null,2),EJ={recorderSampleRate:16e3,playerSampleRate:16e3};function MJ(){const[t,e]=k.useState(CJ),[n,r]=k.useState(yM),[i,a]=k.useState(null),l=k.useCallback(h=>{r(h);try{JSON.parse(h),a(null)}catch(m){a(m.message)}},[]),c=k.useMemo(()=>{try{const h=JSON.parse(n);return h.conversation_id||(h.conversation_id=crypto.randomUUID()),{endpoint:t,requestData:h}}catch{return{endpoint:t,requestData:{}}}},[n,t]),u=k.useCallback(h=>{const m=h;if(typeof m.ws_url=="string"){let g=m.ws_url;return window.location.protocol==="https:"&&(g=g.replace(/^ws:\/\//,"wss://")),{wsUrl:g}}return m},[]),f=w.jsx(oK,{endpoint:t,onEndpointChange:e,settingsJson:n,onSettingsChange:l,jsonError:i,defaultSettingsJson:yM});return w.jsx(__,{children:w.jsx(f_,{children:w.jsx(TY,{children:w.jsx(SJ,{noThemeProvider:!0,initDevicesOnMount:!0,transportOptions:EJ,startBotParams:c,startBotResponseTransformer:u,children:h=>w.jsx(nK,{...h,settingsContent:f})})})})})}IX.createRoot(document.getElementById("root")).render(w.jsx(k.StrictMode,{children:w.jsx(MJ,{})}));
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Pipecat UI</title>
|
|
8
8
|
<link rel="icon" href="./favicon.svg" type="image/svg+xml">
|
|
9
|
-
<script type="module" crossorigin src="./assets/index-
|
|
9
|
+
<script type="module" crossorigin src="./assets/index-Bb8i3nk4.js"></script>
|
|
10
10
|
<link rel="stylesheet" crossorigin href="./assets/index-MrVEiU1O.css">
|
|
11
11
|
</head>
|
|
12
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: small-websocket-prebuilt
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: A simple, ready-to-use client for testing the WebSocket transport with Pipecat.
|
|
5
5
|
License: BSD 2-Clause License
|
|
6
6
|
Project-URL: homepage, https://github.com/Qiliang/small-websocket-prebuilt
|
|
@@ -17,7 +17,7 @@ small_websocket_prebuilt/client/dist/assets/geist-latin-wght-normal-Dm3htQBi.wof
|
|
|
17
17
|
small_websocket_prebuilt/client/dist/assets/geist-mono-cyrillic-wght-normal-BZdD_g9V.woff2
|
|
18
18
|
small_websocket_prebuilt/client/dist/assets/geist-mono-latin-ext-wght-normal-b6lpi8_2.woff2
|
|
19
19
|
small_websocket_prebuilt/client/dist/assets/geist-mono-latin-wght-normal-Cjtb1TV-.woff2
|
|
20
|
-
small_websocket_prebuilt/client/dist/assets/index-
|
|
20
|
+
small_websocket_prebuilt/client/dist/assets/index-Bb8i3nk4.js
|
|
21
21
|
small_websocket_prebuilt/client/dist/assets/index-MrVEiU1O.css
|
|
22
22
|
small_websocket_prebuilt/client/dist/assets/voice-ui-kit_false-BPs6efg0.js
|
|
23
23
|
small_websocket_prebuilt/client/dist/assets/voice-ui-kit_false-b2I56sea.js
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|