@camstack/addon-admin-ui 0.1.24 → 0.1.26

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.
Files changed (33) hide show
  1. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-CV-R_rHB.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-DlcNv4jc.js} +1 -1
  2. package/dist/assets/devices-Ccad-MYH.js +1 -0
  3. package/dist/assets/{hostInit-DcknmeNu.js → hostInit-BpDp2mzG.js} +1 -1
  4. package/dist/assets/index-CAlT1MNc.css +1 -0
  5. package/dist/assets/index-CO8Odo2q.js +1103 -0
  6. package/dist/assets/index-CaiMG86U.js +80 -0
  7. package/dist/assets/{index-F3MAsf-9.js → index-D9kg0e9y.js} +1 -1
  8. package/dist/assets/index-DDPTeM3J.js +80 -0
  9. package/dist/assets/index-DMrjJViX.js +1 -0
  10. package/dist/assets/{index-CvVlJEP5.js → index-DOXiszQ-.js} +1 -1
  11. package/dist/assets/{index-Dq_5fsAQ.js → index-DV9irWJe.js} +1 -1
  12. package/dist/assets/index-bCeHA7pg.js +1 -0
  13. package/dist/assets/index-ihiza8WC.js +1 -0
  14. package/dist/assets/index-vWF3glDx.js +1 -0
  15. package/dist/assets/index-zk-hwOKE.js +1 -0
  16. package/dist/assets/method-access-map-DAzkqn3U.js +1 -0
  17. package/dist/assets/{remoteEntry-D1zRuKvw.js → remoteEntry-DcLH2pUv.js} +1 -1
  18. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DItyrftX.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-CJWQPV3f.js} +2 -2
  19. package/dist/index.html +6 -6
  20. package/dist/mf-entry-bootstrap-0.js +2 -2
  21. package/dist/sw.js +1 -1
  22. package/package.json +1 -1
  23. package/dist/assets/auth-records-DLqosdE2.js +0 -1
  24. package/dist/assets/capability-router-map-UNVkwZU9.js +0 -1
  25. package/dist/assets/devices-BUM64diU.js +0 -1
  26. package/dist/assets/index-B95gHp6V.js +0 -1
  27. package/dist/assets/index-DVf1U7c4.js +0 -1
  28. package/dist/assets/index-De6hr8eY.js +0 -1
  29. package/dist/assets/index-DvrBfik_.js +0 -1
  30. package/dist/assets/index-agmLjvC2.js +0 -80
  31. package/dist/assets/index-bZcruxoE.js +0 -80
  32. package/dist/assets/index-k_vr1qwb.js +0 -1098
  33. package/dist/assets/index-uOUrSD7R.css +0 -1
@@ -0,0 +1 @@
1
+ import{n as _e,c as x,F as be,s as ve}from"./__mfe_internal__admin_ui_host__loadShare___mf_0_trpc_mf_1_client__loadShare__.mjs-DIkg6-MH.js";import{b as V,d as Ee}from"./index-DMrjJViX.js";import"./schemas-XgIEoUz3.js";class Pe{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(t,r){this.keyToValue.set(t,r),this.valueToKey.set(r,t)}getByKey(t){return this.keyToValue.get(t)}getByValue(t){return this.valueToKey.get(t)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}}class q{constructor(t){this.generateIdentifier=t,this.kv=new Pe}register(t,r){this.kv.getByValue(t)||(r||(r=this.generateIdentifier(t)),this.kv.set(r,t))}clear(){this.kv.clear()}getIdentifier(t){return this.kv.getByValue(t)}getValue(t){return this.kv.getByKey(t)}}class Ce extends q{constructor(){super(t=>t.name),this.classToAllowedProps=new Map}register(t,r){typeof r=="object"?(r.allowProps&&this.classToAllowedProps.set(t,r.allowProps),super.register(t,r.identifier)):super.register(t,r)}getAllowedProps(t){return this.classToAllowedProps.get(t)}}function Se(e){if("values"in Object)return Object.values(e);const t=[];for(const r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t}function ke(e,t){const r=Se(e);if("find"in r)return r.find(t);const s=r;for(let n=0;n<s.length;n++){const i=s[n];if(t(i))return i}}function v(e,t){Object.entries(e).forEach(([r,s])=>t(s,r))}function k(e,t){return e.indexOf(t)!==-1}function B(e,t){for(let r=0;r<e.length;r++){const s=e[r];if(t(s))return s}}class Re{constructor(){this.transfomers={}}register(t){this.transfomers[t.name]=t}findApplicable(t){return ke(this.transfomers,r=>r.isApplicable(t))}findByName(t){return this.transfomers[t]}}const Ie=e=>Object.prototype.toString.call(e).slice(8,-1),W=e=>typeof e>"u",Te=e=>e===null,P=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,T=e=>P(e)&&Object.keys(e).length===0,g=e=>Array.isArray(e),Ae=e=>typeof e=="string",Me=e=>typeof e=="number"&&!isNaN(e),Oe=e=>typeof e=="boolean",De=e=>e instanceof RegExp,C=e=>e instanceof Map,S=e=>e instanceof Set,K=e=>Ie(e)==="Symbol",Le=e=>e instanceof Date&&!isNaN(e.valueOf()),Y=e=>e instanceof Error,U=e=>typeof e=="number"&&isNaN(e),Ne=e=>Oe(e)||Te(e)||W(e)||Me(e)||Ae(e)||K(e),xe=e=>typeof e=="bigint",Ve=e=>e===1/0||e===-1/0,Be=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),Ue=e=>e instanceof URL,A=e=>e.replace(/\\/g,"\\\\").replace(/\./g,"\\."),I=e=>e.map(String).map(A).join("."),E=(e,t)=>{const r=[];let s="";for(let i=0;i<e.length;i++){let o=e.charAt(i);if(!t&&o==="\\"){const f=e.charAt(i+1);if(f==="\\"){s+="\\",i++;continue}else if(f!==".")throw Error("invalid path")}if(o==="\\"&&e.charAt(i+1)==="."){s+=".",i++;continue}if(o==="."){r.push(s),s="";continue}s+=o}const n=s;return r.push(n),r};function y(e,t,r,s){return{isApplicable:e,annotation:t,transform:r,untransform:s}}const G=[y(W,"undefined",()=>null,()=>{}),y(xe,"bigint",e=>e.toString(),e=>typeof BigInt<"u"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),y(Le,"Date",e=>e.toISOString(),e=>new Date(e)),y(Y,"Error",(e,t)=>{const r={name:e.name,message:e.message};return"cause"in e&&(r.cause=e.cause),t.allowedErrorProps.forEach(s=>{r[s]=e[s]}),r},(e,t)=>{const r=new Error(e.message,{cause:e.cause});return r.name=e.name,r.stack=e.stack,t.allowedErrorProps.forEach(s=>{r[s]=e[s]}),r}),y(De,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),r=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,r)}),y(S,"set",e=>[...e.values()],e=>new Set(e)),y(C,"map",e=>[...e.entries()],e=>new Map(e)),y(e=>U(e)||Ve(e),"number",e=>U(e)?"NaN":e>0?"Infinity":"-Infinity",Number),y(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),y(Ue,"URL",e=>e.toString(),e=>new URL(e))];function R(e,t,r,s){return{isApplicable:e,annotation:t,transform:r,untransform:s}}const H=R((e,t)=>K(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,r)=>{const s=r.symbolRegistry.getValue(t[1]);if(!s)throw new Error("Trying to deserialize unknown symbol");return s}),ze=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),X=R(Be,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const r=ze[t[1]];if(!r)throw new Error("Trying to deserialize unknown typed array");return new r(e)});function Z(e,t){return e?.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}const Q=R(Z,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const r=t.classRegistry.getAllowedProps(e.constructor);if(!r)return{...e};const s={};return r.forEach(n=>{s[n]=e[n]}),s},(e,t,r)=>{const s=r.classRegistry.getValue(t[1]);if(!s)throw new Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);return Object.assign(Object.create(s.prototype),e)}),j=R((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,r)=>{const s=r.customTransformerRegistry.findByName(t[1]);if(!s)throw new Error("Trying to deserialize unknown custom value");return s.deserialize(e)}),Fe=[Q,H,j,X],z=(e,t)=>{const r=B(Fe,n=>n.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation(e,t)};const s=B(G,n=>n.isApplicable(e,t));if(s)return{value:s.transform(e,t),type:s.annotation}},J={};G.forEach(e=>{J[e.annotation]=e});const $e=(e,t,r)=>{if(g(t))switch(t[0]){case"symbol":return H.untransform(e,t,r);case"class":return Q.untransform(e,t,r);case"custom":return j.untransform(e,t,r);case"typed-array":return X.untransform(e,t,r);default:throw new Error("Unknown transformation: "+t)}else{const s=J[t];if(!s)throw new Error("Unknown transformation: "+t);return s.untransform(e,r)}},b=(e,t)=>{if(t>e.size)throw new Error("index out of bounds");const r=e.keys();for(;t>0;)r.next(),t--;return r.next().value};function ee(e){if(k(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(k(e,"prototype"))throw new Error("prototype is not allowed as a property");if(k(e,"constructor"))throw new Error("constructor is not allowed as a property")}const qe=(e,t)=>{ee(t);for(let r=0;r<t.length;r++){const s=t[r];if(S(e))e=b(e,+s);else if(C(e)){const n=+s,i=+t[++r]==0?"key":"value",o=b(e,n);switch(i){case"key":e=o;break;case"value":e=e.get(o);break}}else e=e[s]}return e},M=(e,t,r)=>{if(ee(t),t.length===0)return r(e);let s=e;for(let i=0;i<t.length-1;i++){const o=t[i];if(g(s)){const a=+o;s=s[a]}else if(P(s))s=s[o];else if(S(s)){const a=+o;s=b(s,a)}else if(C(s)){if(i===t.length-2)break;const c=+o,f=+t[++i]==0?"key":"value",h=b(s,c);switch(f){case"key":s=h;break;case"value":s=s.get(h);break}}}const n=t[t.length-1];if(g(s)?s[+n]=r(s[+n]):P(s)&&(s[n]=r(s[n])),S(s)){const i=b(s,+n),o=r(i);i!==o&&(s.delete(i),s.add(o))}if(C(s)){const i=+t[t.length-2],o=b(s,i);switch(+n==0?"key":"value"){case"key":{const c=r(o);s.set(c,s.get(o)),c!==o&&s.delete(o);break}case"value":{s.set(o,r(s.get(o)));break}}}return e},te=e=>e<1;function O(e,t,r,s=[]){if(!e)return;const n=te(r);if(!g(e)){v(e,(a,c)=>O(a,t,r,[...s,...E(c,n)]));return}const[i,o]=e;o&&v(o,(a,c)=>{O(a,t,r,[...s,...E(c,n)])}),t(i,s)}function We(e,t,r,s){return O(t,(n,i)=>{e=M(e,i,o=>$e(o,n,s))},r),e}function Ke(e,t,r){const s=te(r);function n(i,o){const a=qe(e,E(o,s));i.map(c=>E(c,s)).forEach(c=>{e=M(e,c,()=>a)})}if(g(t)){const[i,o]=t;i.forEach(a=>{e=M(e,E(a,s),()=>e)}),o&&v(o,n)}else v(t,n);return e}const Ye=(e,t)=>P(e)||g(e)||C(e)||S(e)||Y(e)||Z(e,t);function Ge(e,t,r){const s=r.get(e);s?s.push(t):r.set(e,[t])}function He(e,t){const r={};let s;return e.forEach(n=>{if(n.length<=1)return;t||(n=n.map(a=>a.map(String)).sort((a,c)=>a.length-c.length));const[i,...o]=n;i.length===0?s=o.map(I):r[I(i)]=o.map(I)}),s?T(r)?[s]:[s,r]:T(r)?void 0:r}const re=(e,t,r,s,n=[],i=[],o=new Map)=>{const a=Ne(e);if(!a){Ge(e,n,t);const u=o.get(e);if(u)return s?{transformedValue:null}:u}if(!Ye(e,r)){const u=z(e,r),m=u?{transformedValue:u.value,annotations:[u.type]}:{transformedValue:e};return a||o.set(e,m),m}if(k(i,e))return{transformedValue:null};const c=z(e,r),f=c?.value??e,h=g(f)?[]:{},p={};v(f,(u,m)=>{if(m==="__proto__"||m==="constructor"||m==="prototype")throw new Error(`Detected property ${m}. This is a prototype pollution risk, please remove it from your object.`);const _=re(u,t,r,s,[...n,m],[...i,e],o);h[m]=_.transformedValue,g(_.annotations)?p[A(m)]=_.annotations:P(_.annotations)&&v(_.annotations,(w,we)=>{p[A(m)+"."+we]=w})});const d=T(p)?{transformedValue:h,annotations:c?[c.type]:void 0}:{transformedValue:h,annotations:c?[c.type,p]:p};return a||o.set(e,d),d};function se(e){return Object.prototype.toString.call(e).slice(8,-1)}function F(e){return se(e)==="Array"}function Xe(e){if(se(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function Ze(e,t,r,s,n){const i={}.propertyIsEnumerable.call(s,t)?"enumerable":"nonenumerable";i==="enumerable"&&(e[t]=r),n&&i==="nonenumerable"&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}function D(e,t={}){if(F(e))return e.map(n=>D(n,t));if(!Xe(e))return e;const r=Object.getOwnPropertyNames(e),s=Object.getOwnPropertySymbols(e);return[...r,...s].reduce((n,i)=>{if(i==="__proto__"||F(t.props)&&!t.props.includes(i))return n;const o=e[i],a=D(o,t);return Ze(n,i,a,e,t.nonenumerable),n},{})}class l{constructor({dedupe:t=!1}={}){this.classRegistry=new Ce,this.symbolRegistry=new q(r=>r.description??""),this.customTransformerRegistry=new Re,this.allowedErrorProps=[],this.dedupe=t}serialize(t){const r=new Map,s=re(t,r,this,this.dedupe),n={json:s.transformedValue};s.annotations&&(n.meta={...n.meta,values:s.annotations});const i=He(r,this.dedupe);return i&&(n.meta={...n.meta,referentialEqualities:i}),n.meta&&(n.meta.v=1),n}deserialize(t,r){const{json:s,meta:n}=t;let i=r?.inPlace?s:D(s);return n?.values&&(i=We(i,n.values,n.v??0,this)),n?.referentialEqualities&&(i=Ke(i,n.referentialEqualities,n.v??0)),i}stringify(t){return JSON.stringify(this.serialize(t))}parse(t){return this.deserialize(JSON.parse(t),{inPlace:!0})}registerClass(t,r){this.classRegistry.register(t,r)}registerSymbol(t,r){this.symbolRegistry.register(t,r)}registerCustom(t,r){this.customTransformerRegistry.register({name:r,...t})}allowErrorProps(...t){this.allowedErrorProps.push(...t)}}l.defaultInstance=new l;l.serialize=l.defaultInstance.serialize.bind(l.defaultInstance);l.deserialize=l.defaultInstance.deserialize.bind(l.defaultInstance);l.stringify=l.defaultInstance.stringify.bind(l.defaultInstance);l.parse=l.defaultInstance.parse.bind(l.defaultInstance);l.registerClass=l.defaultInstance.registerClass.bind(l.defaultInstance);l.registerSymbol=l.defaultInstance.registerSymbol.bind(l.defaultInstance);l.registerCustom=l.defaultInstance.registerCustom.bind(l.defaultInstance);l.allowErrorProps=l.defaultInstance.allowErrorProps.bind(l.defaultInstance);l.serialize;l.deserialize;l.stringify;l.parse;l.registerClass;l.registerCustom;l.registerSymbol;l.allowErrorProps;const Qe=1e4,je=3e3,Je=2e3,et=3e4;class tt{_serverUrl;useWs;baseRetryMs;maxRetryMs;onConnectionChange;token;_trpcClient;_wsClient=null;mirror=null;mirrorInit=null;connected=!1;connectedPromise=null;_systemProxy;_connectionVersion=0;connectionListeners=new Set;constructor(t){this._serverUrl=t.serverUrl.replace(/\/+$/,""),this.token=t.token;const r=typeof window<"u";this.useWs=t.useWebSocket??r,this.onConnectionChange=t.onConnectionChange,this.baseRetryMs=t.retryDelayMs??Je,this.maxRetryMs=t.maxRetryDelayMs??et,this._trpcClient=this.buildTrpcClient(),this._systemProxy=V(this._trpcClient)}get serverUrl(){return this._serverUrl}get connectionVersion(){return this._connectionVersion}subscribeConnectionEvents(t){return this.connectionListeners.add(t),()=>{this.connectionListeners.delete(t)}}emitConnectionEvent(t){try{this.onConnectionChange?.(t)}catch{}for(const r of this.connectionListeners)try{r(t,this._connectionVersion)}catch{}}async awaitConnected(t){if(this.connected)return;if(this.connectedPromise)return this.connectedPromise;const r=t??15e3;this.connectedPromise=(async()=>{const s=this._trpcClient.auth.me.query();Number.isFinite(r)?await new Promise((n,i)=>{const o=setTimeout(()=>i(new Error(`System.awaitConnected: probe timed out after ${r}ms`)),r);s.then(()=>{clearTimeout(o),n()},a=>{clearTimeout(o),i(a instanceof Error?a:new Error(String(a)))})}):await s,this.connected=!0})();try{await this.connectedPromise}finally{this.connectedPromise=null}}async init(t){if(this.mirror?.isReady())return;if(this.mirrorInit)return this.mirrorInit;const r=new Ee(this._trpcClient);return this.mirror=r,this.mirrorInit=(async()=>{await this.awaitConnected(t),await r.init(t)})().finally(()=>{this.mirrorInit=null}),this.mirrorInit}async awaitReady(){if(!this.mirror?.isReady())return this.mirrorInit?this.mirrorInit:this.init()}isReady(){return this.mirror?.isReady()??!1}isConnected(){return this.connected}reconnect(){this.useWs&&(this.emitConnectionEvent("connecting"),this._wsClient?.close(),this.disposeMirror(),this.connected=!1,this.connectedPromise=null,this._trpcClient=this.buildTrpcClient(),this._systemProxy=V(this._trpcClient))}switchServerUrl(t){const r=t.replace(/\/+$/,"");r!==this._serverUrl&&(this._serverUrl=r,this.reconnect())}async raceConnectionEndpoints(t){const r=t?.perCandidateTimeoutMs??1500,s=(()=>{try{return new URL(this._serverUrl)}catch{return null}})(),n=s?.port?Number(s.port):s?.protocol==="https:"?443:80,i=s?.protocol==="https:"?"https":"http",a=this._trpcClient.localNetwork?.getConnectionEndpoints;if(!a)return{winner:this._serverUrl,switched:!1};let c;try{c=(await a.query({port:n,ipv4Only:t?.ipv4Only,scheme:i})).endpoints}catch{return{winner:this._serverUrl,switched:!1}}if(c.length===0)return{winner:this._serverUrl,switched:!1};const f=await rt(c.map(h=>h.baseUrl),r);return!f||f===this._serverUrl?{winner:f??this._serverUrl,switched:!1}:(this.switchServerUrl(f),{winner:f,switched:!0})}close(){this.disposeMirror(),this.connected=!1,this.connectedPromise=null,this._wsClient?.close()}disposeMirror(){this.mirror?.dispose(),this.mirror=null,this.mirrorInit=null}async login(t,r){const s=await this._trpcClient.auth.login.mutate({username:t,password:r});if(typeof s=="object"&&s!==null&&"token"in s){const n=s.token;typeof n=="string"&&this.setToken(n)}return s}async logout(){await this._trpcClient.auth.logout.mutate()}async getMe(){return await this._trpcClient.auth.me.query()}setToken(t){this.token=t}listDevices(t){return this.mirror?(t?this.mirror.query(t):this.mirror.getAllDevices()).map(s=>this.attachBinding(s)):[]}getDevice(t){const r=this.mirror?.getDeviceById(t)??null;return r?this.attachBinding(r):null}getDeviceByName(t){const r=this.mirror?.getDeviceByName(t)??null;return r?this.attachBinding(r):null}getDeviceByStableId(t){const r=this.mirror?.getDeviceByStableId(t)??null;return r?this.attachBinding(r):null}async waitForDevice(t,r){this.mirror||await this.init();const s=await this.mirror.waitForDevice(t,r??3e4);return this.attachBinding(s)}onDeviceAdded(t){if(!this.mirror)throw new Error("System.onDeviceAdded: call init() before subscribing");return this.mirror.onDeviceAdded(t)}onDeviceRemoved(t){if(!this.mirror)throw new Error("System.onDeviceRemoved: call init() before subscribing");return this.mirror.onDeviceRemoved(t)}attachBinding(t){const r=this.lookupBinding(t.deviceId);if(r===t.binding)return t;const s=t;return s.binding=r,t}lookupBinding(t){return this.mirror?this.mirror.getDeviceById(t)?.binding??null:null}get addonPages(){return this._systemProxy.addonPages}get addonSettings(){return this._systemProxy.addonSettings}get alerts(){return this._systemProxy.alerts}get audioAnalyzer(){return this._systemProxy.audioAnalyzer}get audioCodec(){return this._systemProxy.audioCodec}get backup(){return this._systemProxy.backup}get decoder(){return this._systemProxy.decoder}get deviceManager(){return this._systemProxy.deviceManager}get deviceProvider(){return this._systemProxy.deviceProvider}get deviceState(){return this._systemProxy.deviceState}get metricsProvider(){return this._systemProxy.metricsProvider}get notificationOutput(){return this._systemProxy.notificationOutput}get pipelineExecutor(){return this._systemProxy.pipelineExecutor}get pipelineOrchestrator(){return this._systemProxy.pipelineOrchestrator}get pipelineRunner(){return this._systemProxy.pipelineRunner}get platformProbe(){return this._systemProxy.platformProbe}get recordingEngine(){return this._systemProxy.recordingEngine}get settingsStore(){return this._systemProxy.settingsStore}get storage(){return this._systemProxy.storage}get streamBroker(){return this._systemProxy.streamBroker}get turnProvider(){return this._systemProxy.turnProvider}get userManagement(){return this._systemProxy.userManagement}subscribeEvent(t,r){const s=this._trpcClient.live.onEvent.subscribe({category:t},{onData:n=>{try{r(n)}catch{}}});return()=>{try{s.unsubscribe()}catch{}}}get trpcClient(){return this._trpcClient}get wsClient(){return this._wsClient}buildTrpcClient(){const t=()=>{const r={};return this.token&&(r.Authorization=`Bearer ${this.token}`),r};if(this.useWs){const r=this._serverUrl.replace(/^http/,"ws")+"/trpc",s=this.baseRetryMs,n=this.maxRetryMs;return this._wsClient=_e({url:r,connectionParams:()=>({token:this.token}),retryDelayMs:i=>Math.min(s*Math.pow(2,i),n),keepAlive:{enabled:!0,intervalMs:Qe,pongTimeoutMs:je},onOpen:()=>{this._connectionVersion+=1,this.emitConnectionEvent("connected")},onClose:()=>{this.emitConnectionEvent("disconnected")}}),x({links:[be({client:this._wsClient,transformer:l})]})}return this._wsClient=null,x({links:[ve({url:`${this._serverUrl}/trpc`,headers:t,transformer:l})]})}}function mt(e){return new tt(e)}async function rt(e,t){if(e.length===0)return null;if(typeof fetch!="function")return e[0]??null;const s=typeof window<"u"&&typeof window.location<"u"&&window.location.protocol==="https:"?e.filter(o=>o.toLowerCase().startsWith("https://")):e;if(s.length===0)return null;const n=s.map(()=>new AbortController),i=s.map(async(o,a)=>{const c=n[a],f=setTimeout(()=>c.abort(),t);try{const h=await fetch(`${o.replace(/\/+$/,"")}/trpc/health`,{method:"GET",signal:c.signal,credentials:"omit"});if(!h.ok)throw new Error(`${h.status}`);return o}finally{clearTimeout(f)}});try{const o=await Promise.any(i);for(const a of n)try{a.abort()}catch{}return o}catch{return null}}var ne=(e=>(e.Motion="motion",e.Person="person",e.Vehicle="vehicle",e.Animal="animal",e.Audio="audio",e.Face="face",e.Plate="plate",e.Package="package",e.Doorbell="doorbell",e.Sensor="sensor",e))(ne||{});const ie=["animal","dog_cat","dog","cat","horse","sheep","cow","elephant","bear","zebra","giraffe","mouse","rabbit","deer","lion","tiger","bird","eagle","owl","pigeon","fish","whale","dolphin","snake","turtle","lizard"],oe=["person","people","pedestrian","rider","driver","cyclist","skier","skateboarder","face","hand","head","body"],ae=["vehicle","car","truck","bus","motorcycle","bicycle","van","ambulance","police_car","fire_truck","train","subway","tram","airplane","boat","ship","helicopter"],le=["face","eyes","nose","mouth","ears","eyebrows","left_eye","right_eye","pupil","iris","eyelid","eye_corner","upper_lip","lower_lip","teeth","chin","cheek","forehead","jaw","glasses","sunglasses","facial_hair","beard","mustache","facial_landmark","facial_keypoint"],ce=["plate","license_plate","front_plate","rear_plate","motorcycle_plate","temporary_plate","dealer_plate","licensePlate","plate_number","plate_character","plate_digit","plate_letter","plate_symbol","plate_region","plate_country_identifier","plate_frame","plate_bolt","plate_sticker","plate_validation_tag","damaged_plate","obscured_plate","dirty_plate"],ue=["motion","movement","other"],de=["package","packet"],fe=["audio"],me=["speech","scream","babbling","yell","bellow","whoop","whispering","laughter","snicker","crying","cry","sigh","singing","choir","chant","mantra","child_singing","rapping","humming","groan","grunt","whistling","breathing","wheeze","snoring","gasp","pant","snort","cough","throat_clearing","sneeze","sniff","cheering","applause","chatter","crowd","children_playing","bark","yip","howl","bow-wow","growling","whimper_dog","purr","meow","hiss","caterwaul","pets","livestock","doorbell","ding-dong","door","slam","knock","alarm","telephone","music","dog","dogs"],he=["doorbell","ring"],pe=["lock","binary","flood","entry","door","leak","door_open","flooded","entry_open"],ye={...ie.reduce((e,t)=>({...e,[t]:"animal"}),{}),...oe.reduce((e,t)=>({...e,[t]:"person"}),{}),...ae.reduce((e,t)=>({...e,[t]:"vehicle"}),{}),...ue.reduce((e,t)=>({...e,[t]:"motion"}),{}),...de.reduce((e,t)=>({...e,[t]:"package"}),{}),...le.reduce((e,t)=>({...e,[t]:"face"}),{}),...ce.reduce((e,t)=>({...e,[t]:"plate"}),{}),...fe.reduce((e,t)=>({...e,[t]:"audio"}),{}),...me.reduce((e,t)=>({...e,[t]:"audio"}),{}),...he.reduce((e,t)=>({...e,[t]:"doorbell"}),{}),...pe.reduce((e,t)=>({...e,[t]:"sensor"}),{})},st=e=>le.includes(e),nt=e=>ce.includes(e),ht=e=>ie.includes(e),pt=e=>oe.includes(e),yt=e=>ae.includes(e),gt=e=>ue.includes(e),wt=e=>he.includes(e),_t=e=>de.includes(e),bt=e=>fe.includes(e)||me.includes(e),vt=e=>pe.includes(e),Et=e=>st(e)||nt(e),Pt=e=>ye[e],Ct=e=>{const{className:t}=e,r={face:"person",plate:"vehicle"},s=ye[t];return s&&s!==t?s:r[t]},it=Object.values(ne),L=it.filter(e=>e!=="motion"),ge=["person","doorbell","package"],ot=[...ge,"vehicle","animal","audio","face","plate"],at=[...L];function St(e,t){switch(e){case"critical":return ge;case"important":return ot;case"all":return at;case"custom":return t?.length?t:L;default:return L}}const $={Light:"light",Switch:"switch",WindowCovering:"cover",Lock:"lock",SecuritySystem:"alarm",Buttons:"button",Select:"select",Siren:"siren",Sensor:"sensor",Entry:"entry",Program:"script",MediaPlayer:"media_player",Outlet:"switch",light:"light",switch:"switch",input_boolean:"switch",cover:"cover",lock:"lock",alarm_control_panel:"alarm",input_button:"button",button:"button",input_select:"select",select:"select",siren:"siren",sensor:"sensor",media_player:"media_player",script:"script"},kt={light:"light",switch:"switch",input_boolean:"switch",cover:"cover",lock:"lock",alarm_control_panel:"alarm",input_button:"button",button:"button",input_select:"select",select:"select",siren:"siren",sensor:"sensor",binary_sensor:"sensor",media_player:"media_player",script:"script",climate:"climate",camera:"camera",fan:"fan",vacuum:"vacuum",automation:"automation",scene:"scene",input_number:"sensor",person:"person",device_tracker:"tracker",weather:"weather",water_heater:"climate"},Rt={Light:"light",Switch:"switch",WindowCovering:"cover",Lock:"lock",SecuritySystem:"alarm",Buttons:"button",Select:"select",Siren:"siren",Sensor:"sensor",Entry:"entry",Program:"script",MediaPlayer:"media_player",Camera:"camera",Doorbell:"doorbell",Fan:"fan",Outlet:"switch"};function It(e){const t=$[e];if(t)return t;const r=e.toLowerCase();return $[r]??null}const lt=["Entry","Light","Switch","Lock","SecuritySystem","Buttons","WindowCovering","Siren","Sensor","Select","Program"],Tt=new Set(lt),ct=["light","switch","input_boolean","cover","lock","alarm_control_panel","input_button","button","input_select","select","siren","media_player","script"],At=new Set(ct),N=[{id:"liveStream",label:"Live Stream",sources:{frigate:!0,scrypted:!0,rtsp:!0},adapterMethod:"getLiveStream"},{id:"multiResolution",label:"Multi-Resolution",sources:{frigate:!0,scrypted:!0,rtsp:!1},adapterMethod:"getResolutions"},{id:"motion",label:"Motion Detection",sources:{frigate:!1,scrypted:!0,rtsp:!1},adapterMethod:"getMotion"},{id:"objectDetection",label:"Object Detection",sources:{frigate:!1,scrypted:!0,rtsp:!1},adapterMethod:"getObjectDetections"},{id:"audioVolume",label:"Audio Level",sources:{frigate:!1,scrypted:!0,rtsp:!1},adapterMethod:"getAudioVolume"},{id:"audioVolumes",label:"Audio Volumes (dBFS)",sources:{frigate:!1,scrypted:!0,rtsp:!1},adapterMethod:"getAudioVolumes"},{id:"ptz",label:"PTZ Control",sources:{frigate:!1,scrypted:!0,rtsp:!1},adapterMethod:"getPTZ"},{id:"intercom",label:"Intercom (Mic)",sources:{frigate:!1,scrypted:!0,rtsp:!1},adapterMethod:"getIntercomSupport"},{id:"deviceStatus",label:"Device Status",sources:{frigate:!1,scrypted:!0,rtsp:!1},adapterMethod:"getStatus"},{id:"timeline",label:"Detection Timeline",sources:{frigate:!0,scrypted:!0,rtsp:!1},adapterMethod:"getCameraDayData"},{id:"clusteredTimeline",label:"Clustered Timeline",sources:{frigate:!0,scrypted:!0,rtsp:!1},requiresBackend:!0,adapterMethod:"getClusteredDayData"},{id:"detectionClasses",label:"Detection Classes",sources:{frigate:!0,scrypted:!0,rtsp:!1},adapterMethod:"getDetectionClasses"},{id:"videoClips",label:"Video Clips",sources:{frigate:!0,scrypted:!0,rtsp:!1},adapterMethod:"getVideoClips"},{id:"nvrPlayback",label:"NVR Playback",sources:{frigate:!0,scrypted:!0,rtsp:!1},adapterMethod:"getNvrPlaybackSupported"},{id:"nvrScrub",label:"NVR Scrub/Seek",sources:{frigate:!1,scrypted:!0,rtsp:!1},adapterMethod:"seekRecordingStream"},{id:"recordingThumbnail",label:"Recording Thumbnails",sources:{frigate:!0,scrypted:!0,rtsp:!1},adapterMethod:"getRecordingStreamThumbnail"},{id:"nvrSeekToLive",label:"Seek to Live",sources:{frigate:!1,scrypted:!0,rtsp:!1},adapterMethod:"seekNvrToLive"}];function Mt(e,t,r){const s=N.find(n=>n.id===e);return!(!s||!s.sources[t]||s.platforms&&s.platforms[r]===!1)}function Ot(e){return N.filter(t=>t.sources[e])}function Dt(){return N.filter(e=>e.requiresBackend)}function Lt(e,t,r){if(e.length===0)return null;const s=t.viewportWidth*t.viewportHeight*(t.pixelRatio??1),n=t.bandwidthMbps??100,i=t.packetLoss??0,o=t.rttMs??50;let a="high";t.maxResolution==="low"||t.isCellular||n<1||i>.05?a="low":t.maxResolution==="medium"||n<5||s<5e5||o>200?a="medium":(t.maxResolution==="high"||s>2e6)&&(a="high");const c={main:"high",sub:"medium",ext:"low"},f=r??"native",h=e.map(d=>{let u=0;const m=c[d.profile]??"medium";if(m===a?u+=100:(a==="high"&&m==="medium"||a==="medium"&&m==="high"||a==="medium"&&m==="low"||a==="low"&&m==="medium")&&(u+=50),d.transport===f?u+=30:d.transport==="native"?u+=20:d.transport==="rtsp"?u+=15:d.transport==="rtmp"&&(u+=10),d.metadata?.width&&d.metadata?.height){const w=d.metadata.width*d.metadata.height/Math.max(s,1);w>=.8&&w<=2?u+=25:w>=.5&&w<=3&&(u+=15),w>4&&n<10&&(u-=20)}return d.metadata?.codec&&(n<5&&d.metadata.codec.includes("265")&&(u+=10),n>=10&&d.metadata.codec.includes("264")&&(u+=5)),{...d,score:u,targetTier:a}});h.sort((d,u)=>u.score-d.score);const p=h[0];return{streamName:p.streamName,profile:p.profile,transport:p.transport,label:p.label,metadata:p.metadata,reason:`${p.targetTier} quality → ${p.profile}/${p.transport} (score: ${p.score})`}}function Nt(e,t){return t?10:e.isCellular||(e.packetLoss??0)>.02?15:30}export{L as DEFAULT_ENABLED_CLASSES,ne as DetectionClass,ct as ELIGIBLE_HA_DOMAINS,At as ELIGIBLE_HA_DOMAINS_SET,lt as ELIGIBLE_SCRYPTED_DEVICE_TYPES,Tt as ELIGIBLE_SCRYPTED_DEVICE_TYPES_SET,N as FEATURE_MATRIX,kt as HA_DOMAIN_TYPE_MAP,$ as RAW_TO_CANONICAL,Rt as SCRYPTED_TYPE_TO_CANONICAL,tt as System,at as TIMELINE_PRESET_ALL,ge as TIMELINE_PRESET_CRITICAL,ot as TIMELINE_PRESET_IMPORTANT,ie as animalClasses,fe as audioClasses,me as audioLabelClasses,mt as createSystem,it as defaultDetectionClasses,ye as detectionClassesDefaultMap,he as doorbellClasses,le as faceClasses,Dt as getBackendRequiredFeatures,It as getCanonicalDeviceType,St as getClassesForTimelinePreset,Nt as getNextEvalInterval,Pt as getParentClass,Ct as getParentDetectionClass,Ot as getSourceFeatures,ht as isAnimalClassname,bt as isAudioClassname,wt as isDoorbellClassname,st as isFaceClassname,Mt as isFeatureAvailable,Et as isLabelDetection,gt as isMotionClassname,_t as isPackageClassname,pt as isPersonClassname,nt as isPlateClassname,vt as isSensorLabelClassname,yt as isVehicleClassname,ce as licensePlateClasses,ue as motionClasses,de as packageClasses,oe as personClasses,rt as raceFastestEndpoint,Lt as selectOptimalStream,pe as sensorLabelClasses,ae as vehicleClasses};
@@ -0,0 +1 @@
1
+ import{h as k,z as B,e as F,f as U,s as z,p as $,m as W,g as j,i as P,j as H,k as R,l as K,n as Z,o as q,q as V,r as G,t as Y,A as ge,u as Se,v as ye,w as be,x as Ce,y as ve,B as Ae,C as Ie,E as we,F as Ee,G as _e,H as De,I as ke,J as Pe,K as Re,L as Te,N as Ne,O as Oe,P as Me,Q as xe,R as Le,T as Be,U as Fe,V as Ue,X as ze,Y as $e,Z as We,_ as je,$ as He,a0 as Ke,a1 as Ze,a2 as qe,a3 as Ve,a4 as Ge,a5 as Ye,a6 as Je,a7 as Qe,a8 as Xe,a9 as et,aa as tt,ab as at,ac as st,ad as it,ae as nt,af as rt,ag as ot,ah as ct,ai as dt,aj as lt,ak as ut,al as ht,am as mt,an as pt,ao as ft,ap as gt,aq as St,ar as yt,as as bt,at as Ct,au as vt,av as At,aw as It,ax as wt,ay as Et,az as _t,aA as Dt,aB as kt,aC as Pt,aD as Rt,aE as Tt,aF as Nt,aG as Ot,aH as Mt,aI as xt,aJ as Lt,aK as Bt,aL as Ft,aM as Ut,aN as zt,aO as $t,aP as Wt,aQ as jt,aR as Ht,aS as Kt,aT as Zt,aU as qt,aV as Vt,aW as Gt,aX as Yt,D as Jt,aY as Qt,aZ as Xt,a_ as ea,a$ as ta,a as aa,b0 as sa,b1 as ia,b2 as na,b3 as ra,b4 as oa,b5 as ca,b6 as da,b7 as la,b8 as ua,b9 as ha,ba as ma,bb as pa,bc as fa,bd as ga,be as Sa,bf as ya,bg as ba,bh as Ca,bi as va,bj as Aa,bk as Ia,bl as wa,bm as Ea,bn as _a,bo as Da,bp as ka,bq as Pa,br as Ra,bs as Ta,M as Na,bt as Oa,bu as Ma,bv as xa,bw as La,bx as Ba,by as Fa,bz as Ua,bA as za,bB as $a,bC as Wa,bD as ja,bE as Ha,bF as Ka,bG as Za,bH as qa,bI as Va,bJ as Ga,bK as Ya,bL as Ja,bM as Qa,bN as Xa,bO as es,bP as ts,bQ as as,bR as ss,bS as is,bT as ns,bU as rs,bV as os,bW as cs,bX as ds,bY as ls,bZ as us,b_ as hs,b$ as ms,c0 as ps,c1 as fs,c2 as gs,c3 as Ss,c4 as ys,c5 as bs,c6 as Cs,c7 as vs,c8 as As,c9 as Is,ca as ws,cb as Es,cc as _s,cd as Ds,ce as ks,cf as Ps,cg as Rs,ch as Ts,ci as Ns,cj as Os,ck as Ms,cl as xs,cm as Ls,cn as Bs,co as Fs,S as Us,cp as zs,cq as $s,cr as Ws,cs as js,ct as Hs,cu as Ks,cv as Zs,cw as qs,cx as Vs,cy as Gs,cz as Ys,cA as Js,cB as Qs,cC as Xs,cD as ei,cE as ti,cF as ai,cG as si,cH as ii,cI as ni,cJ as ri,cK as oi,cL as ci,cM as di,cN as li,cO as ui,cP as hi,cQ as mi,cR as pi,cS as fi,cT as gi,d as Si,cU as yi,cV as bi,cW as Ci,cX as vi,cY as Ai,cZ as Ii,c_ as wi,c$ as Ei,d0 as _i,d1 as Di,d2 as ki,d3 as Pi,d4 as Ri,d5 as Ti,d6 as Ni,d7 as Oi,d8 as Mi,W as xi,d9 as Li,da as Bi,db as Fi,dc as Ui,dd as zi,de as $i,df as Wi,dg as ji,dh as Hi,di as Ki,dj as Zi,dk as qi,dl as Vi,dm as Gi,dn as Yi,dp as Ji,dq as Qi,dr as Xi,ds as en,dt as tn,du as an,dv as sn,dw as nn,dx as rn,dy as on,dz as cn,dA as dn,dB as ln,dC as un,dD as hn,dE as mn,dF as pn,c as fn,dG as gn,dH as Sn,dI as yn,b as bn,dJ as Cn,dK as vn,dL as An,dM as In,dN as wn,dO as En,dP as _n,dQ as Dn,dR as kn,dS as Pn,dT as Rn,dU as Tn,dV as Nn,dW as On,dX as Mn,dY as xn,dZ as Ln,d_ as Bn,d$ as Fn,e0 as Un,e1 as zn,e2 as $n,e3 as Wn,e4 as jn,e5 as Hn,e6 as Kn,e7 as Zn,e8 as qn,e9 as Vn,ea as Gn,eb as Yn,ec as Jn,ed as Qn,ee as Xn,ef as er,eg as tr,eh as ar,ei as sr,ej as ir,ek as nr,el as rr,em as or,en as cr,eo as dr,ep as lr,eq as ur,er as hr,es as mr,et as pr,eu as fr,ev as gr,ew as Sr,ex as yr,ey as br}from"./index-DMrjJViX.js";import{E as C,A as Cr,C as vr,a as Ar,K as Ir,M as wr}from"./method-access-map-DAzkqn3U.js";import{Z as Er,m as _r,p as Dr,q as kr,v as Pr,w as Rr,x as J,y as Tr,z as Nr}from"./schemas-XgIEoUz3.js";class Or{disposers=[];disposed=!1;onError;constructor(e={}){this.onError=e.onError??((t,s)=>{console.error(`[DisposerChain] disposer #${s} threw`,t)})}add(e){if(this.disposed){try{const t=e();t&&typeof t.then=="function"&&t.catch(s=>this.onError(s,-1))}catch(t){this.onError(t,-1)}return()=>{}}return this.disposers.push(e),()=>{const t=this.disposers.indexOf(e);t>=0&&this.disposers.splice(t,1)}}get isDisposed(){return this.disposed}get size(){return this.disposers.length}async dispose(){if(this.disposed)return;this.disposed=!0;const e=this.disposers.slice().reverse();this.disposers=[];for(let t=0;t<e.length;t++){const s=e[t];try{const i=s();i&&typeof i.then=="function"&&await i}catch(i){this.onError(i,e.length-1-t)}}}}const Q="main-group",X="hub-only";function b(a){return{placement:a.execution?.placement??X,group:a.execution?.group??Q}}function Mr(a){const e=b(a).placement;return e==="any-node"||e==="agent-only"}function xr(a){return b(a).placement==="agent-only"}function Lr(a){return b(a).group}function Br(a){return b(a).placement}function Fr(a,e){return a.category===e}function T(a,e,t){return{id:typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2),timestamp:new Date,source:e,category:a,data:t}}function ee(a,e){const t=e.ts??Date.now();a.emit(T("system.ready-state",{type:"capability",id:e.capName,nodeId:e.sourceNodeId},{capName:e.capName,scope:e.scope,state:e.state,generation:e.generation,sourceNodeId:e.sourceNodeId,ts:t}))}class te{_ctx=null;_config;_readinessGeneration=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14);_registeredCapNames=[];defaults;constructor(e){this.defaults=e,this._config={...e}}get autoEmitReadiness(){return!0}get ctx(){if(!this._ctx)throw new Error(`${this.constructor.name}: ctx accessed before initialize()`);return this._ctx}get ctxIfReady(){return this._ctx}get config(){return this._config}async initialize(e){this._ctx=e,await this.resolveConfig();const t=await this.onInitialize();this.emitLifecycle(C.AddonStarted);const s=ae(t),i=s&&"providers"in s&&s.providers?s.providers:[];return this._registeredCapNames=i.map(n=>n.capability.name),s}postBrokerStart(){this.autoEmitReadiness&&this._registeredCapNames.length>0&&this.emitReadinessForProviders("ready")}async onHubReachable(){}async shutdown(){this.emitLifecycle(C.AddonStopped),this.autoEmitReadiness&&this.emitReadinessForProviders("down"),await this.onShutdown();for(const e of this._subscriptions)e();this._subscriptions=[],this._ctx=null}async onShutdown(){}async onConfigChanged(){}field(e){return e}schema(e){return e}globalSettingsSchema(){return null}deviceSettingsSchema(){return null}async getGlobalSettings(e){const t=this.globalSettingsSchema();if(!t)return{sections:[]};const s=await this._ctx?.settings?.readAddonStore()??{};return k(t,e?{...s,...e}:s)}async updateGlobalSettings(e){await this._ctx?.settings?.writeAddonStore(e),await this.resolveConfig(),await this.onConfigChanged(),this.emitLifecycle(C.AddonUpdated,{level:"global"}),this.maybeAutoRestart(e,this.globalSettingsSchema())}maybeAutoRestart(e,t){if(!t)return;const s=new Set;for(const o of t.sections)for(const c of o.fields)c.type==="separator"||c.type==="info"||c.requiresRestart&&s.add(c.key);if(s.size===0||!Object.keys(e).some(o=>s.has(o)))return;const n=this._ctx;if(!n)return;const r=n.id;setImmediate(()=>{n.api.addons?.restartAddon?.mutate({addonId:r}).then(()=>{n.logger.info("addon auto-restart triggered by restart-required setting change",{meta:{changedFields:Object.keys(e).filter(c=>s.has(c))}})}).catch(c=>{n.logger.error("addon auto-restart failed",{meta:{error:c instanceof Error?c.message:String(c)}})})})}async getDeviceSettings(e){const t=this.deviceSettingsSchema();if(!t)return{sections:[]};const s=await this._ctx?.settings?.readDeviceStore(e)??{};return k(t,s)}async updateDeviceSettings(e,t){await this._ctx?.settings?.writeDeviceStore(e,t)}_subscriptions=[];watchCapability(e,t){const s=Array.isArray(e)?e:[e],i=new Set(s);this.subscribe({category:"system.ready-state"},n=>{const r=n.data;if(typeof r.capName!="string"||!i.has(r.capName)||r.scope?.type!=="node")return;const o=r.scope.nodeId;if(typeof o!="string"||o.length===0)return;const c=r.capName;r.state==="down"?t.onDown?.(o,c):r.state==="ready"&&t.onReady?.(o,c)})}subscribe(e,t){const s=this.ctx.eventBus.subscribe(e,t);this._subscriptions.push(s)}emitLifecycle(e,t){try{this._ctx?.eventBus.emit({id:`${this._ctx.id}-${Date.now()}`,timestamp:new Date,source:{type:"addon",id:this._ctx.id,nodeId:this._ctx.kernel.localNodeId??"hub"},category:e,data:t??{}})}catch{}}emitReadinessForProviders(e){const t=this._ctx;if(!t||this._registeredCapNames.length===0)return;const s=t.kernel?.localNodeId??"hub",i=s.includes("/")?s.split("/")[0]:s;for(const n of this._registeredCapNames)try{ee(t.eventBus,{capName:n,scope:{type:"node",nodeId:i},state:e,generation:this._readinessGeneration,sourceNodeId:i})}catch{}}async resolveModelsDir(){return this.ctx.api.storage.resolve.query({location:"models",relativePath:""}).catch(()=>"camstack-data/models")}get capabilities(){return this.ctx.capabilities??null}async resolveConfig(){const e=await this.readAddonStoreWithRetry(),t={...this.defaults};for(const s of Object.keys(this.defaults)){const i=e[s];if(i!=null){const n=typeof this.defaults[s];typeof i===n&&(t[s]=i)}}this._config=t}async readAddonStoreWithRetry(){const e=this._ctx?.settings;if(!e)return{};const t=[150,350,600,900];let s;for(let i=0;i<=t.length;i++)try{return await e.readAddonStore()??{}}catch(n){s=n;const r=n instanceof Error?n.message:String(n);if(!(r.includes("SqliteSettingsBackend not initialized")||r.includes("provider not available")))throw n;if(i===t.length)break;await new Promise(c=>setTimeout(c,t[i]))}return this._ctx?.logger?.warn?.("readAddonStore: settings-store unavailable after retries — using defaults",{meta:{error:s instanceof Error?s.message:String(s)}}),{}}}function ae(a){if(a!=null)return Array.isArray(a)?{providers:a}:a}class se extends Error{capName;scope;waitedMs;constructor(e,t,s){super(`Timed out waiting for ${e} (${f(t)}) to become ready after ${s}ms`),this.name="ReadinessTimeoutError",this.capName=e,this.scope=t,this.waitedMs=s}}function v(a,e){return`${a}|${f(e)}`}function f(a){switch(a.type){case"global":return"global";case"node":return`node:${a.nodeId}`;case"device":return`device:${a.deviceId}`}}function _(a,e){return a.type!==e.type?!1:a.type==="global"||e.type==="global"?!0:a.type==="node"&&e.type==="node"?a.nodeId===e.nodeId:a.type==="device"&&e.type==="device"?a.deviceId===e.deviceId:!1}class Ur{bus;sourceNodeId;logger;now;generation;snapshot=new Map;subscriptions=new Set;unsubscribeBus;unsubscribeAgentOffline;constructor(e){if(this.bus=e.eventBus,this.sourceNodeId=e.sourceNodeId,this.logger=e.logger,this.now=e.now??(()=>Date.now()),this.generation=e.generation??zr(),this.unsubscribeBus=this.bus.subscribe({category:"system.ready-state"},t=>this.ingest(t.data)),this.unsubscribeAgentOffline=this.bus.subscribe({category:"agent.offline"},t=>this.synthesizeDownForNode(t.data.agentId)),typeof this.bus.getRecent=="function")try{const t=this.bus.getRecent({category:"system.ready-state"});for(const s of t)this.ingest(s.data)}catch{}}close(){this.unsubscribeBus(),this.unsubscribeAgentOffline(),this.subscriptions.clear()}get(e,t){return this.snapshot.get(v(e,t))??null}getSnapshotForTransport(){return Array.from(this.snapshot.values())}hydrate(e){const t=this.now();for(const s of e){const i=v(s.capName,s.scope);if(this.snapshot.has(i))continue;const n={capName:s.capName,scope:s.scope,state:s.state,generation:s.generation,epoch:1,lastChange:t,sourceNodeId:s.sourceNodeId};this.snapshot.set(i,n),this.logger&&this.logger.debug(`readiness: ${s.capName} (${f(s.scope)}) → ${s.state} (hydrated, gen=${s.generation.slice(0,6)})`);const r={capName:s.capName,scope:s.scope,state:s.state,epoch:1,generation:s.generation,sourceNodeId:"hydrated",ts:t,durationInPrevState:0};for(const o of this.subscriptions)if(o.capName===s.capName&&_(o.scope,s.scope))try{o.handler(r)}catch(c){this.logger?.warn(`readiness hydrate handler threw for ${s.capName}: ${c.message??String(c)}`)}}}getAll(){return new Map(this.snapshot)}emitReady(e,t){this.emitTransition(e,t,"ready")}emitStarting(e,t){this.emitTransition(e,t,"starting")}emitDown(e,t){this.emitTransition(e,t,"down")}awaitReady(e,t,s={}){const i=s.timeoutMs??Number.POSITIVE_INFINITY,n=this.now();return this.get(e,t)?.state==="ready"?Promise.resolve():s.signal?.aborted?Promise.reject(s.signal.reason??new Error("aborted")):new Promise((o,c)=>{let l=!1;const d=this.onReadyState(e,t,w=>{w.state==="ready"&&(l||(l=!0,p(),o()))}),u=!Number.isFinite(i)?null:setTimeout(()=>{l||(l=!0,p(),c(new se(e,t,this.now()-n)))},i),S=()=>{l||(l=!0,p(),c(s.signal?.reason??new Error("aborted")))};s.signal?.addEventListener("abort",S,{once:!0});function p(){d(),u!==null&&clearTimeout(u),s.signal?.removeEventListener("abort",S)}})}onReadyState(e,t,s){const i={capName:e,scope:t,handler:s};this.subscriptions.add(i);const n=this.get(e,t);return n!==null&&queueMicrotask(()=>{this.subscriptions.has(i)&&s({capName:e,scope:t,state:n.state,epoch:n.epoch,generation:n.generation,sourceNodeId:this.sourceNodeId,ts:n.lastChange,durationInPrevState:0})}),()=>{this.subscriptions.delete(i)}}emitTransition(e,t,s){const i=this.now();this.bus.emit(T("system.ready-state",{type:"capability",id:e,nodeId:this.sourceNodeId},{capName:e,scope:t,state:s,generation:this.generation,sourceNodeId:this.sourceNodeId,ts:i}))}ingest(e){if(typeof e?.capName!="string"||e.state!=="ready"&&e.state!=="starting"&&e.state!=="down"||typeof e.generation!="string"||e.scope?.type!=="global"&&e.scope?.type!=="node"&&e.scope?.type!=="device")return;const t=v(e.capName,e.scope),s=this.snapshot.get(t)??null,i=this.now();let n;if(s===null?n=e.state==="ready"?1:0:s.generation!==e.generation&&e.state==="ready"?n=s.epoch+1:n=s.epoch,s!==null&&s.generation===e.generation&&s.state===e.state)return;const r=s===null?0:Math.max(0,i-s.lastChange),o={capName:e.capName,scope:e.scope,state:e.state,generation:e.generation,epoch:n,lastChange:i,sourceNodeId:e.sourceNodeId};this.snapshot.set(t,o);const c={capName:e.capName,scope:e.scope,state:e.state,epoch:n,generation:e.generation,sourceNodeId:e.sourceNodeId,ts:e.ts,durationInPrevState:r};this.logger&&this.logger.debug(`readiness: ${e.capName} (${f(e.scope)}) → ${e.state} epoch=${n} gen=${e.generation.slice(0,6)} (prev ${r}ms)`);for(const l of this.subscriptions)if(l.capName===e.capName&&_(l.scope,e.scope))try{l.handler(c)}catch(d){this.logger?.warn(`readiness handler threw for ${e.capName}: ${d.message??String(d)}`)}}synthesizeDownForNode(e){const t=this.now();for(const[s,i]of this.snapshot){if(i.state==="down"||!(i.scope.type==="node"&&i.scope.nodeId===e||i.scope.type==="device"&&i.sourceNodeId===e))continue;const r=Math.max(0,t-i.lastChange),o={...i,state:"down",lastChange:t};this.snapshot.set(s,o);const c={capName:i.capName,scope:i.scope,state:"down",epoch:i.epoch,generation:i.generation,sourceNodeId:this.sourceNodeId,ts:t,durationInPrevState:r};this.logger&&this.logger.debug(`readiness: ${i.capName} (${f(i.scope)}) → down (synthesized from agent.offline ${e})`);for(const l of this.subscriptions)if(l.capName===i.capName&&_(l.scope,i.scope))try{l.handler(c)}catch(d){this.logger?.warn(`readiness handler threw during agent.offline demux for ${i.capName}: ${d.message??String(d)}`)}}}}function zr(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14)}function $r(a,e){for(const{capName:t,scope:s}of e)a.emitDown(t,s)}const Wr=["data","media","recordings","recordings-high","recordings-low","recordings-clips","event-images","models","addons-data","cache","logs","backups"],jr={data:"db",media:"media",recordings:"recordings","recordings-high":"recordings-high","recordings-low":"recordings-low","recordings-clips":"recordings-clips","event-images":"event-images",models:"models","addons-data":"addons-data",cache:"/tmp/camstack-cache",logs:"logs",backups:"backups"},ie={high:"High",mid:"Mid",low:"Low"};function Hr(a){return ie[a]??a.charAt(0).toUpperCase()+a.slice(1)}function ne(a){return(a.width??0)*(a.height??0)}function re(a){if(a.length===0)return[];const e=a.map((s,i)=>({s,i,px:ne(s.metadata??{})})).sort((s,i)=>i.px-s.px),t=Array.from({length:a.length});for(let s=0;s<e.length;s++){const{s:i,i:n}=e[s];let r;s===0?r="high":s===e.length-1?r="low":r="mid",t[n]={...i,quality:r}}return t}function Kr(a){const e=a.height??0,t=a.width??0;return e>=1080||t>=1920?"high":e>=480||t>=640?"mid":"low"}function Zr(a){const e=a.protocols.find(i=>i.type==="rtsp"&&i.url)??a.protocols.find(i=>i.url),t=e?.type,s=t==="rtsp"?"rtsp":t==="http"||t==="flv"?"http-mjpeg":"custom";return{id:a.id,label:a.label??a.id,protocol:s,url:e?.url,profileHint:a.quality}}function m(a){return typeof a=="string"}function qr(a){return typeof a=="object"&&a!==null&&!Array.isArray(a)}function Vr(a){return m(a)&&a.trim()?{url:a}:qr(a)&&m(a.url)&&a.url.trim()?{url:a.url,label:m(a.label)?a.label:void 0}:null}function Gr(a){const e=m(a.snapshot_url)?a.snapshot_url:void 0;if(Array.isArray(a.streams)){const r=[];for(const o of a.streams){const c=Vr(o);c&&r.push(c)}return{streams:r,snapshot_url:e}}const t=[],s=m(a.main_stream_url)?a.main_stream_url:void 0;s&&t.push({url:s,label:m(a.main_stream_name)?a.main_stream_name:void 0});const i=m(a.sub_stream_url)?a.sub_stream_url:void 0;i&&t.push({url:i,label:m(a.sub_stream_name)?a.sub_stream_name:void 0});const n=m(a.third_stream_url)?a.third_stream_url:void 0;return n&&t.push({url:n,label:m(a.third_stream_name)?a.third_stream_name:void 0}),{streams:t,snapshot_url:e}}function Yr(a){if(a.length===0)return{};const e=re(a),t={},s=e.find(o=>o.quality==="high"),i=e.find(o=>o.quality==="mid"),n=e.find(o=>o.quality==="low");s&&(t.high=s.id),i&&(t.mid=i.id),n&&(t.low=n.id);const r=s??i??n??e[0];return r&&(t.high||(t.high=r.id),t.mid||(t.mid=r.id),t.low||(t.low=r.id)),t}const Jr={streaming:!0,notifications:!0,objectDetection:!1,remoteAccess:!0,agentCluster:!1,smartHome:!0,recordings:!0,backup:!0,repl:!0},Qr=["face","plate"],Xr=["face","plate","clip","custom"],eo={cleanupIntervalMs:3600*1e3,detectionEventsDays:30,audioLevelsDays:7,snapshotsDays:14};var oe=(a=>(a.Addon="addon",a.Core="core",a.Device="device",a.Provider="provider",a.System="system",a))(oe||{});const ce="camstack/camstack-models",to=`https://huggingface.co/${ce}/resolve/main`,ao={"features.streaming":!0,"features.notifications":!0,"features.objectDetection":!1,"features.remoteAccess":!0,"features.agentCluster":!1,"features.smartHome":!0,"features.recordings":!0,"features.backup":!0,"features.repl":!0,"retention.detectionEventsDays":30,"retention.audioLevelsDays":7,"logging.level":"info","logging.retentionDays":30,"eventBus.ringBufferSize":1e4,"storage.provider":"sqlite-storage","storage.locations":{data:"camstack-data/data",media:"camstack-data/media",recordings:"camstack-data/recordings",cache:"/tmp/camstack-cache",logs:"camstack-data/logs",models:"camstack-data/models"},providers:[],"recording.segmentDurationSeconds":4,"recording.defaultRetentionDays":30,"ffmpeg.binaryPath":"ffmpeg","ffmpeg.hwAccel":"auto","ffmpeg.threadCount":0,"auth.tokenExpiry":"24h"};function N(a){return JSON.parse(a)}function de(a){return a===null||typeof a!="object"||Array.isArray(a)?null:{...a}}function so(a){return Array.isArray(a)?a:[]}function io(a,e=""){return typeof a=="string"?a:e}function no(a,e=0){return typeof a=="number"?a:e}function ro(a,e=!1){return typeof a=="boolean"?a:e}function oo(a){try{return de(N(a))}catch{return null}}function co(a){try{const e=N(a);return Array.isArray(e)?e:null}catch{return null}}function lo(a,e){return`https://huggingface.co/${a}/resolve/main/${e}`}function uo(a,e){if(a.length!==e.length)return 0;let t=0,s=0,i=0;for(let r=0;r<a.length;r++)t+=a[r]*e[r],s+=a[r]*a[r],i+=e[r]*e[r];const n=Math.sqrt(s)*Math.sqrt(i);return n===0?0:t/n}class ho{constructor(e,t){this.elementId=e,this.getBackend=typeof t=="function"?t:()=>t}cache={};listeners=new Set;loaded=!1;getBackend;async ensureLoaded(){if(this.loaded)return;const e=this.getBackend();if(!e)throw new Error(`ElementConfigStore(${this.elementId}): settings backend not available`);const t=await e.query({collection:"config",filter:{where:{id:this.elementId},limit:1}});t.length>0&&(this.cache=t[0].data??{}),this.loaded=!0}getAll(){return{...this.cache}}get(e){const t=e.split(".");let s=this.cache;for(const i of t){if(s===null||typeof s!="object"||Array.isArray(s))return;s=Reflect.get(s,i)}return s}async set(e,t){await this.ensureLoaded(),mo(this.cache,e,t),await this.persist(),this.notifyListeners()}async setAll(e){await this.ensureLoaded(),this.cache={...e},await this.persist(),this.notifyListeners()}onChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async load(){await this.ensureLoaded()}async loadDefaults(e){await this.ensureLoaded(),Object.keys(this.cache).length===0&&(this.cache={...e},await this.persist())}async persist(){const e=this.getBackend();if(!e)throw new Error(`ElementConfigStore(${this.elementId}): settings backend not available — cannot persist config`);await e.set({collection:"config",key:this.elementId,value:this.cache})}notifyListeners(){const e=this.getAll();for(const t of this.listeners)try{t(e)}catch{}}}function mo(a,e,t){const s=e.split(".");let i=a;for(let n=0;n<s.length-1;n++){const r=s[n],o=i[r];if(o===null||typeof o!="object"||Array.isArray(o)){const c={};i[r]=c,i=c}else i=o}i[s[s.length-1]]=t}const O={cpu:"onnx",coreml:"onnx",cuda:"onnx",tensorrt:"onnx","onnx-py":"onnx",pytorch:"pt",openvino:"openvino"},le={onnx:"onnx",coreml:"coreml",openvino:"openvino",tflite:"tflite",pytorch:"pt"},ue={coreml:"coreml_inference.py",pytorch:"pytorch_inference.py",openvino:"openvino_inference.py"};function he(a,e){return a==="node"?"onnx":{coreml:"coreml",openvino:"openvino",pytorch:"pytorch","onnx-py":"onnx",cpu:"onnx"}[e]??e}function po(a,e){return a==="node"?O[e]??"onnx":{coreml:"coreml",openvino:"openvino",pytorch:"pt","onnx-py":"onnx",cpu:"onnx"}[e]??"onnx"}function fo(a,e){return!a||a==="auto"?"auto":he(a,e??"cpu")}function go(a){return O[a]??"onnx"}function So(a){return le[a]}function yo(a){return ue[a]}function bo(a){return a==="coreml"||a==="pytorch"||a==="openvino"}function me(a){return a instanceof Error?a.message:typeof a=="string"?a:String(a)}async function Co(a,e){const t=performance.now();try{return{output:e!==void 0?await vo(a(),e):await a(),durationMs:x(performance.now()-t),ok:!0}}catch(s){return{output:void 0,durationMs:x(performance.now()-t),ok:!1,error:me(s)}}}function x(a){return Math.round(a*100)/100}function vo(a,e){return new Promise((t,s)=>{const i=setTimeout(()=>s(new Error(`Inference timeout after ${e}ms`)),e);a.then(n=>{clearTimeout(i),t(n)}).catch(n=>{clearTimeout(i),s(n)})})}const Ao=[{id:"person",name:"Person"},{id:"bicycle",name:"Bicycle"},{id:"car",name:"Car"},{id:"motorcycle",name:"Motorcycle"},{id:"airplane",name:"Airplane"},{id:"bus",name:"Bus"},{id:"train",name:"Train"},{id:"truck",name:"Truck"},{id:"boat",name:"Boat"},{id:"traffic light",name:"Traffic Light"},{id:"fire hydrant",name:"Fire Hydrant"},{id:"stop sign",name:"Stop Sign"},{id:"parking meter",name:"Parking Meter"},{id:"bench",name:"Bench"},{id:"bird",name:"Bird"},{id:"cat",name:"Cat"},{id:"dog",name:"Dog"},{id:"horse",name:"Horse"},{id:"sheep",name:"Sheep"},{id:"cow",name:"Cow"},{id:"elephant",name:"Elephant"},{id:"bear",name:"Bear"},{id:"zebra",name:"Zebra"},{id:"giraffe",name:"Giraffe"},{id:"backpack",name:"Backpack"},{id:"umbrella",name:"Umbrella"},{id:"handbag",name:"Handbag"},{id:"tie",name:"Tie"},{id:"suitcase",name:"Suitcase"},{id:"frisbee",name:"Frisbee"},{id:"skis",name:"Skis"},{id:"snowboard",name:"Snowboard"},{id:"sports ball",name:"Sports Ball"},{id:"kite",name:"Kite"},{id:"baseball bat",name:"Baseball Bat"},{id:"baseball glove",name:"Baseball Glove"},{id:"skateboard",name:"Skateboard"},{id:"surfboard",name:"Surfboard"},{id:"tennis racket",name:"Tennis Racket"},{id:"bottle",name:"Bottle"},{id:"wine glass",name:"Wine Glass"},{id:"cup",name:"Cup"},{id:"fork",name:"Fork"},{id:"knife",name:"Knife"},{id:"spoon",name:"Spoon"},{id:"bowl",name:"Bowl"},{id:"banana",name:"Banana"},{id:"apple",name:"Apple"},{id:"sandwich",name:"Sandwich"},{id:"orange",name:"Orange"},{id:"broccoli",name:"Broccoli"},{id:"carrot",name:"Carrot"},{id:"hot dog",name:"Hot Dog"},{id:"pizza",name:"Pizza"},{id:"donut",name:"Donut"},{id:"cake",name:"Cake"},{id:"chair",name:"Chair"},{id:"couch",name:"Couch"},{id:"potted plant",name:"Potted Plant"},{id:"bed",name:"Bed"},{id:"dining table",name:"Dining Table"},{id:"toilet",name:"Toilet"},{id:"tv",name:"TV"},{id:"laptop",name:"Laptop"},{id:"mouse",name:"Mouse"},{id:"remote",name:"Remote"},{id:"keyboard",name:"Keyboard"},{id:"cell phone",name:"Cell Phone"},{id:"microwave",name:"Microwave"},{id:"oven",name:"Oven"},{id:"toaster",name:"Toaster"},{id:"sink",name:"Sink"},{id:"refrigerator",name:"Refrigerator"},{id:"book",name:"Book"},{id:"clock",name:"Clock"},{id:"vase",name:"Vase"},{id:"scissors",name:"Scissors"},{id:"teddy bear",name:"Teddy Bear"},{id:"hair drier",name:"Hair Drier"},{id:"toothbrush",name:"Toothbrush"}],Io=[{id:"person",name:"Person"},{id:"vehicle",name:"Vehicle"},{id:"animal",name:"Animal"}],wo={mapping:{person:"person",bicycle:"vehicle",car:"vehicle",motorcycle:"vehicle",airplane:"vehicle",bus:"vehicle",train:"vehicle",truck:"vehicle",boat:"vehicle",bird:"animal",cat:"animal",dog:"animal",horse:"animal",sheep:"animal",cow:"animal",elephant:"animal",bear:"animal",zebra:"animal",giraffe:"animal"},preserveOriginal:!1},Eo={camera:{type:"camera",label:"Camera",icon:"camera"}};class g{schema;data;persistFn;constructor(e,t,s){this.schema=e,this.data=t,this.persistFn=s}static fromSchema(e,t,s={},i){const n=e.safeParse(s);if(n.success)return new g(e,n.data,t);const r=new Set;for(const d of n.error.issues){const h=d.path[0];typeof h=="string"&&r.add(h)}const o={...s};for(const d of r)delete o[d];const c=e.safeParse(o);if(i?.({droppedKeys:[...r],issues:n.error.issues}),c.success)return t(c.data).catch(()=>{}),new g(e,c.data,t);const l=e.parse({});return new g(e,l,t)}get values(){return this.data}get(e){return this.data[e]}async set(e,t){const s=this.schema.parse({...this.data,[e]:t});this.data=s,await this.persistFn(this.data)}async setAll(e){const t=this.schema.parse({...this.data,...e});this.data=t,await this.persistFn(this.data)}async deleteKey(e){const{[e]:t,...s}=this.data,i=this.schema.parse(s);this.data=i,await this.persistFn(this.data)}entries(){const e=this.schema.shape;return Object.entries(e).map(([t,s])=>({key:t,schema:s,value:this.data[t],description:s.description}))}}class I{writer;pendingWrites=new Set;slices;schemas=new Map;listeners=new Set;capListeners=new Map;constructor(e,t){this.writer=t,this.slices=new Map;for(const[s,i]of Object.entries(e))i&&typeof i=="object"&&!Array.isArray(i)&&this.slices.set(s,{...i})}static fromInitial(e,t){return new I(e,t)}installCapSchema(e,t){const s=this.schemas.get(e);if(s){if(s!==t)throw new Error(`[DeviceRuntimeState] capability "${e}" registered a different runtime-state schema; each cap must declare ONE shape across every provider`);return}this.schemas.set(e,t);const i=this.slices.get(e);if(i){const n=t.safeParse(i);n.success?this.slices.set(e,n.data):this.slices.delete(e)}}getCapState(e){const t=this.slices.get(e);if(t)return Object.freeze({...t})}getCapField(e,t){return this.slices.get(e)?.[t]}setCapState(e,t){this.applyCapWrite(e,t,!1)}patchCapState(e,t){this.applyCapWrite(e,t,!0)}applyCapWrite(e,t,s){const i=this.schemas.get(e);if(!i)throw new Error(`[DeviceRuntimeState] no schema registered for cap "${e}" — did the device register it via ctx.registerNativeCap before writing?`);const n=this.slices.get(e)??{},r=s?{...n,...t}:{...t},o=i.parse(r);if(_o(n,o))return;this.slices.set(e,o),this.fireListeners([e]);const c=this.writer(e,{...o}).catch(()=>{});this.pendingWrites.add(c),c.finally(()=>{this.pendingWrites.delete(c)})}fireListeners(e){const t=this.snapshot();for(const s of this.listeners)try{s(e,t)}catch{}for(const s of e){const i=this.capListeners.get(s);if(!i)continue;const n=this.getCapState(s);for(const r of i)try{r(n)}catch{}}}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}subscribeCap(e,t){let s=this.capListeners.get(e);s||(s=new Set,this.capListeners.set(e,s));const i=n=>{t(n)};return s.add(i),()=>{const n=this.capListeners.get(e);n&&(n.delete(i),n.size===0&&this.capListeners.delete(e))}}snapshot(){const e={};for(const[t,s]of this.slices)e[t]=Object.freeze({...s});return Object.freeze(e)}async flush(){if(this.pendingWrites.size===0)return;const e=[...this.pendingWrites];await Promise.allSettled(e)}}function _o(a,e){const t=Object.keys(a),s=Object.keys(e);if(t.length!==s.length)return!1;for(const i of t)if(a[i]!==e[i])return!1;return!0}const D="lastFetchedAt";function Do(a){const{runtimeState:e,cap:t,ownDeviceId:s,refresh:i,staleMs:n,empty:r}=a,o=async()=>{const d=e.getCapState(t.name),h=typeof d?.[D]=="number"?d[D]:0;(!d||Date.now()-h>n)&&await i()},c=()=>{const d=e.getCapState(t.name);if(!d)return r();const{[D]:h,...u}=d;return u};return{ensureFresh:o,getStatus:async({deviceId:d})=>{if(d!==s)throw new Error(`${t.name}: deviceId mismatch, expected ${s}, got ${d}`);return await o(),c()}}}const ko={audioMetrics:G,battery:V,brightness:q,cameraStreams:Z,deviceDiscovery:K,deviceStatus:R,doorbell:H,featureProbe:P,motion:j,motionTrigger:W,ptzAutotrack:$,switch:z,zoneAnalytics:U,zoneRules:F,zones:B};class Po{id;stableId;type;name;parentDeviceId;role;get online(){return this.runtimeState.getCapState("device-status")?.online??!1}set online(e){this.markOnline(e)}get state(){if(!this._stateProxyCache){const e={},t={get:(s,i)=>{const n=i;if(n in e)return e[n];const r=ko[n];if(!r)return;const o=this.sliceProxy(r);return e[n]=o,o}};this._stateProxyCache=new Proxy(e,t)}return this._stateProxyCache}_stateProxyCache;config;runtimeState;ctx;location;disabled;constructor(e,t,s){if(this.ctx=e,this.id=e.id,this.stableId=e.stableId,this.type=s.type,!e.deviceMeta)throw new Error(`BaseDevice constructor: ctx.deviceMeta is required (id=${e.id} stableId=${e.stableId})`);this.name=e.deviceMeta.name,this.location=e.deviceMeta.location,this.disabled=e.deviceMeta.disabled,this.role=s.role,this.parentDeviceId=e.parentDeviceId;const i=e.persistedConfig??{};this.config=g.fromSchema(t,d=>e.persistConfig(d),i,({droppedKeys:d,issues:h})=>{e.logger.warn("Device config recovery: dropping invalid persisted fields",{tags:{deviceId:e.id,stableId:e.stableId},meta:{droppedKeys:[...d],firstIssue:h[0]?.message??null}})});let n=null;const r=async(d,h)=>{n||(n=e.fetchDevice(e.id)),await(await n).deviceState.setCapSlice({capName:d,slice:h})},o=e.initialRuntimeState??{};this.runtimeState=I.fromInitial(o,r),e.bindRuntimeState?.(this.runtimeState),e.registerNativeCap?.(R,{});const c={online:!1,lastChangedAt:Date.now()};this.runtimeState.setCapState("device-status",c),e.registerNativeCap?.(P,{});const l={flags:{},deviceType:null,model:null,channelCount:null,lastProbedAt:0,lastFetchedAt:0};this.runtimeState.setCapState("feature-probe",l)}async removeDevice(){}markOnline(e){if(this.online===e)return;const t={online:e,lastChangedAt:Date.now()};this.runtimeState.setCapState("device-status",t)}async refreshFeatures(){const t=this.ctx.api?.deviceManager?.registerDevice;if(t)try{await t.mutate({addonId:this.ctx.deviceMeta.addonId,stableId:this.stableId,id:this.id,type:this.type,name:this.name,parentDeviceId:this.parentDeviceId,features:[...this.features],config:{}})}catch{}}getCapSlice(e){return this.runtimeState.getCapState(e.name)??null}setCapSlice(e,t){this.runtimeState.setCapState(e.name,t)}sliceProxy(e){const t={},s={get:(i,n)=>this.runtimeState.getCapState(e.name)?.[n],set:(i,n,r)=>(this.runtimeState.patchCapState(e.name,{[n]:r}),!0),has:(i,n)=>{const r=this.runtimeState.getCapState(e.name);return r?n in r:!1},ownKeys:()=>{const i=this.runtimeState.getCapState(e.name);return i?Object.keys(i):[]},getOwnPropertyDescriptor:(i,n)=>{const r=this.runtimeState.getCapState(e.name);if(!(!r||!(n in r)))return{configurable:!0,enumerable:!0,value:r[n]}}};return new Proxy(t,s)}getSettingsUISchema(){return{sections:[]}}async applySettingsPatch(e){await this.config.setAll(e)}async onProbe(){}async onActivate(){}async reprobe(){this._kernelReprobe?await this._kernelReprobe():await this.onProbe()}_kernelReprobe;getAccessoryChildren(){return[]}getProbeFlags(){return this.runtimeState.getCapState("feature-probe")?.flags??{}}hasProbed(){return(this.runtimeState.getCapState("feature-probe")?.lastProbedAt??0)>0}}function pe(a,e){const t={};for(const s of a.config.entries())t[s.key]=s.value;return{id:a.id,stableId:a.stableId,addonId:e,type:String(a.type),name:a.name,parentDeviceId:a.parentDeviceId,online:a.online,features:[...a.features],config:t}}class Ro extends te{async onInitialize(){return this.ctx.logger.info(`${this.providerName} Provider initialized`),[{capability:Y,provider:this}]}async onShutdown(){const e=await this.ctx.kernel.devices?.getAll()??[];for(const t of e)try{await this.ctx.kernel.devices?.decommission(t.id)}catch(s){this.ctx.logger.warn(`${this.providerName}: decommission failed`,{tags:{deviceId:t.id,stableId:t.stableId},meta:{error:s instanceof Error?s.message:String(s)}})}this.ctx.logger.info(`${this.providerName} Provider shut down`,{meta:{decommissionedCount:e.length}})}async start(){}async stop(){}async getStatus(){return{connected:!0,deviceCount:(await this.ctx.kernel.devices?.getAll()??[]).length}}async getDevices(){return(await this.ctx.kernel.devices?.getAll()??[]).map(t=>({id:t.stableId,name:t.name,type:String(t.type)}))}async supportsDiscovery(){return!1}async discoverDevices(){return[]}async adoptDiscoveredDevice(e){throw new Error(`${this.providerName} provider does not support discovery-based adoption`)}async supportsManualCreation(){return!0}async getChildCreationSchema(e){return this.onGetCreationSchema(e.type)}async createDevice(e){const t=await this.onCreateDevice(e.type,e.config),s=this.deviceClasses[t.meta.type];if(!s)throw new Error(`${this.providerName} provider: no device class registered for type "${t.meta.type}" — add it to the deviceClasses map`);const i=this.generateStableId(t.meta.type,t.config),n=await this.ctx.kernel.devices.create(i,s,t.config,null,t.meta);if(t.onAfterCreate)try{await t.onAfterCreate(n)}catch(r){this.ctx.logger.warn("createDevice: onAfterCreate hook threw — device is already registered",{tags:{deviceId:n.id,stableId:i},meta:{error:r instanceof Error?r.message:String(r)}})}return this.toSummary(n)}generateStableId(e,t){return`${this.addonId}-${Date.now()}`}async testCreationField(e){return{status:"ok",labels:["probe not implemented"]}}async restoreDevices(e){await this.onRestoreDevices(e),e.length>0&&this.ctx.logger.info(`Restored ${e.length} ${this.providerName} device(s)`)}async onRestoreDevices(e){const t=new Set;for(const i of e){if(i.parentDeviceId!==null)continue;const n=this.deviceClasses[i.type];if(!n){this.ctx.logger.warn("No device class registered for restored type — skipping",{tags:{stableId:i.stableId},meta:{type:i.type}});continue}try{await this.ctx.kernel.devices.create(i.stableId,n,{}),t.add(i.id)}catch(r){this.ctx.logger.warn("Failed to restore device",{tags:{stableId:i.stableId},meta:{type:i.type,error:r instanceof Error?r.message:String(r)}})}}const s=e.filter(i=>i.parentDeviceId!==null);for(const i of s){const n=this.deviceClasses[i.type];if(n&&i.parentDeviceId!==null&&t.has(i.parentDeviceId))try{await this.ctx.kernel.devices.create(i.stableId,n,{},i.parentDeviceId),t.add(i.id)}catch(r){this.ctx.logger.warn("Failed to restore hub-adopted child",{tags:{stableId:i.stableId,parentDeviceId:i.parentDeviceId},meta:{type:i.type,error:r instanceof Error?r.message:String(r)}})}}}toSummary(e){return pe(e,this.addonId)}}function y(a){return a.def}function To(a,e="Configuration",t="main"){const s=a.map(i=>No(i.key,i.schema,i.description));return{sections:[{id:t,title:e,fields:s}]}}function No(a,e,t){const s=A(e),i=Bo(e),n=t??fe(a),r={key:a,label:n,description:t,default:i};return s instanceof Er?Oo(a,r):s instanceof _r?Mo(s,r):s instanceof Dr?{...r,type:"boolean"}:s instanceof kr?Lo(s,r):s instanceof Pr||s instanceof Rr?{...r,type:"textarea",rows:6,isJson:!0}:{...r,type:"text"}}function Oo(a,e){const t=a.toLowerCase();return t.includes("password")||t.includes("secret")||t.includes("token")||t.includes("apikey")||t.includes("api_key")?{...e,type:"password",showToggle:!0}:{...e,type:"text"}}function Mo(a,e){const t=a,s=t.minValue,i=t.maxValue,n=s!=null&&isFinite(s)?s:void 0,r=i!=null&&isFinite(i)?i:void 0,o=xo(a);return{...e,type:"number",...n!==void 0?{min:n}:{},...r!==void 0?{max:r}:{},...o!==void 0?{step:o}:{}}}function xo(a){const t=y(a).checks??[];for(const s of t)if(s._zod?.def?.check==="multiple_of"&&s._zod.def.value!==void 0)return s._zod.def.value}function Lo(a,e){const t=a.options.map(i=>String(i));return{...e,type:"select",options:t.map(i=>({label:fe(i),value:i}))}}function A(a){return a instanceof J||a instanceof Tr||a instanceof Nr?A(y(a).innerType):a}function Bo(a){if(a instanceof J)return y(a).defaultValue}function fe(a){return a.replace(/([A-Z])/g," $1").replace(/[_-]/g," ").replace(/^\w/,e=>e.toUpperCase()).trim()}function Fo(a,e,t,s,i){if(t.length===0||e.length===0)return{passed:a,excluded:[]};const n=t.filter(u=>u.enabled!==!1),r=n.filter(u=>u.mode==="include"),o=n.filter(u=>u.mode==="exclude"),c=r.length>0,l=new Map(e.map(u=>[u.id,u])),d=[],h=[];for(const u of a){const S=s(u),p=i?.(u),w=r.some(E=>L(E,S,p,l)),M=o.some(E=>L(E,S,p,l));c?w&&!M?d.push(u):h.push(u):M?h.push(u):d.push(u)}return{passed:d,excluded:h}}function L(a,e,t,s){if(a.classFilter&&a.classFilter.length>0&&t!==void 0&&!a.classFilter.includes(t))return!1;for(const i of a.zoneIds){const n=s.get(i);if(n&&Uo(e,n.polygon))return!0}return!1}function Uo(a,e){if(e.length<3)return!1;let t=!1;const{x:s,y:i}=a;for(let n=0,r=e.length-1;n<e.length;r=n++){const o=e[n],c=e[r];o.y>i!=c.y>i&&s<(c.x-o.x)*(i-o.y)/(c.y-o.y||Number.EPSILON)+o.x&&(t=!t)}return t}function zo(a){return a}function $o(a,e,t){return{input:a,output:e,kind:t?.kind??"query",auth:t?.auth??"protected",scope:t?.scope??{kind:"system"}}}const Wo=["accessories","battery","brightness","camera-credentials","device-discovery","device-status","doorbell","feature-probe","intercom","motion","motion-trigger","native-object-detection","osd","ptz","ptz-autotrack","snapshot","switch"];function jo(a){try{const e=new URL(a);return!e.username&&!e.password?a:(e.username="",e.password="",e.toString())}catch{return a}}class Ho{constructor(e){this.capacity=e,this.items=Array.from({length:e})}items;head=0;tail=0;count=0;get size(){return this.count}push(e){this.items[this.tail]=e,this.tail=(this.tail+1)%this.capacity,this.count<this.capacity?this.count++:this.head=(this.head+1)%this.capacity}drain(e){const t=[],s=Math.min(e,this.count);for(let i=0;i<s;i++)t.push(this.items[this.head]),this.items[this.head]=void 0,this.head=(this.head+1)%this.capacity;return this.count-=s,t}}function Ko(a,e,t){const s={};for(const i of Object.keys(t))s[i]=n=>a.addons.custom.mutate({addonId:e,action:i,input:n});return s}const Go=Object.freeze(Object.defineProperty({__proto__:null,ACCESSORY_LABEL:ge,ALL_CAPABILITY_DEFINITIONS:Cr,APPLE_SA_TO_MACRO:Se,AUDIO_BACKEND_CHOICES:ye,AUDIO_MACRO_LABELS:be,AccessoriesStatusSchema:Ce,AccessoryKind:ve,AddonAutoUpdateSchema:Ae,AddonListItemSchema:Ie,AddonPageDeclarationSchema:we,AddonPageInfoSchema:Ee,AgentLoadSummarySchema:_e,AlertSchema:De,AlertSeveritySchema:ke,AlertSourceSchema:Pe,AlertStatusSchema:Re,ApiKeyRecordSchema:Te,ApiKeySummarySchema:Ne,ArchiveEntrySchema:Oe,ArchiveManifestSchema:Me,AudioAnalysisResultSchema:xe,AudioAnalysisSettingsSchema:Le,AudioChunkInputSchema:Be,AudioClassSummarySchema:Fe,AudioClassificationLabelSchema:Ue,AudioClassificationResultSchema:ze,AudioCodecInfoSchema:$e,AudioDecodeSessionConfigSchema:We,AudioEncodeSessionConfigSchema:je,AudioEncodedChunkSchema:He,AudioEventSchema:Ke,AudioLevelSchema:Ze,AudioMetricsHistoryPointSchema:qe,AudioMetricsHistorySchema:Ve,AudioMetricsSnapshotSchema:Ge,AudioPcmChunkSchema:Ye,AuthProviderInfoSchema:Je,AuthResultSchema:Qe,AutoUpdateSettingsSchema:Xe,AvailableIntegrationTypeSchema:et,BACKEND_TO_FORMAT:O,BATTERY_DEVICE_PROFILE:tt,BackupDestinationInfoSchema:at,BackupEntrySchema:st,BaseAddon:te,BaseDevice:Po,BaseDeviceProvider:Ro,BatteryStatusSchema:it,BoundingBoxSchema:nt,BrightnessStatusSchema:rt,BrokerAudioClientSchema:ot,BrokerClientsSchema:ct,BrokerDecodedClientSchema:dt,BrokerRtspClientSchema:lt,BrokerStatsSchema:ut,BrokerStatusSchema:ht,CAM_PROFILE_ORDER:mt,CAPABILITY_NAMES:vr,CAPABILITY_ROUTER_KEYS:Ar,CAP_NAMES_WITH_STATUS:Wo,COCO_80_LABELS:Ao,COCO_TO_MACRO:wo,CamProfileSchema:pt,CamStreamKindSchema:ft,CamStreamResolutionSchema:gt,CameraCredentialsSchema:St,CameraCredentialsStatusSchema:yt,CameraMetricsSchema:bt,CameraMetricsWithDeviceIdSchema:Ct,CameraStreamSchema:vt,CapabilityBindingsSchema:At,ChargingStatus:It,ClientNetworkStatsSchema:wt,ClusterAddonNodeDeploymentSchema:Et,ClusterAddonStatusEntrySchema:_t,CollectionColumnSchema:Dt,CollectionIndexSchema:kt,ConfigEntrySchema:Pt,ConfigSectionWithValuesSchema:Rt,ConfigTabDeclarationSchema:Tt,CreateApiKeyInputSchema:Nt,CreateApiKeyResultSchema:Ot,CreateIntegrationInputSchema:Mt,CreateScopedTokenInputSchema:xt,CreateScopedTokenResultSchema:Lt,CreateUserInputSchema:Bt,CustomActionInputSchema:Ft,DEFAULT_ADDON_GROUP:Q,DEFAULT_ADDON_PLACEMENT:X,DEFAULT_AUDIO_ANALYZER_CONFIG:Ut,DEFAULT_DECODER_HWACCEL_CONFIG:zt,DEFAULT_FEATURES:Jr,DEFAULT_LOCATION_SUBDIRS:jr,DEFAULT_RETENTION:eo,DEVICE_PROFILES:$t,DEVICE_SETTINGS_CONTRIBUTION_METHODS:Wt,DEVICE_STATUS_METHOD:jt,DEVICE_TYPE_INFO:Eo,DecodedFrameSchema:Ht,DecoderAssignmentSchema:Kt,DecoderSessionConfigSchema:Zt,DecoderStatsSchema:qt,DeleteIntegrationResultSchema:Vt,DetectorOutputSchema:Gt,DeviceConfig:g,DeviceDiscoveryStatusSchema:Yt,DeviceFeature:Jt,DeviceInfoSchema:Qt,DeviceNetworkStatsSchema:Xt,DeviceRole:ea,DeviceRuntimeState:I,DeviceStatusSchema:ta,DeviceType:aa,DiscoveredChildDeviceSchema:sa,DiscoveredChildStatusSchema:ia,DiscoveredDeviceSchema:na,DisposerChain:Or,DoorbellPressEventSchema:ra,DoorbellStatusSchema:oa,ElementConfigStore:ho,EmbeddingInfoSchema:ca,EmbeddingResultSchema:da,EncodedPacketSchema:la,EnrichedWidgetMetadataSchema:ua,EventCategory:C,EventItemSchema:ha,EventKindSchema:ma,EventSourceType:oe,ExposedResourceSchema:pa,FeatureManifestSchema:fa,FeatureProbeStatusSchema:ga,FrameInputSchema:Sa,GlobalMetricsSchema:ya,HF_BASE_URL:to,HF_REPO:ce,HWACCEL_OPTIONS:ba,HealthStatusSchema:Ca,HistoryPointSchema:va,HistoryResolutionEnum:Aa,InstalledPackageSchema:Ia,IntegrationLiteSchema:wa,IntegrationWithStateSchema:Ea,IntercomAbilitySchema:_a,IntercomStatusSchema:Da,KNOWN_CAP_NAMES:Ir,LocationStatSchema:ka,LogEntrySchema:Pa,LogLevelSchema:Ra,LogStreamEntrySchema:Ta,MACRO_LABELS:Io,METHOD_ACCESS_MAP:wr,MODEL_FORMATS:Na,MediaFileSchema:Oa,MethodAccessSchema:Ma,MotionAnalysisResultSchema:xa,MotionEventSchema:La,MotionOnMotionChangedDataSchema:Ba,MotionRegionSchema:Fa,MotionSourceEnum:Ua,MotionSourcesSchema:za,MotionStatusSchema:$a,MotionTriggerRuntimeStateSchema:Wa,MotionTriggerStatusSchema:ja,NativeDetectionSchema:Ha,NativeObjectClassEnum:Ka,NativeObjectDetectionStatusSchema:Za,NetworkAccessStatusSchema:qa,NetworkAddressSchema:Va,NetworkEndpointSchema:Ga,NotificationHistoryEntrySchema:Ya,NotificationRuleSchema:Ja,NotificationSchema:Qa,ObjectEventSchema:Xa,OrchestratorMetricsSchema:es,OsdOverlayKindEnum:ts,OsdOverlayPatchSchema:as,OsdOverlaySchema:ss,OsdPositionEnum:is,OsdStatusSchema:ns,PIPELINE_FLOW_CAPABILITY_NAMES:rs,PIPELINE_OWNER_CAPABILITY_NAMES:os,PYTHON_SCRIPT:ue,PackageUpdateSchema:cs,PackageVersionInfoSchema:ds,PcmSampleFormatSchema:ls,PerScopeBreakdownSchema:us,PipelineAssignmentSchema:hs,PipelineDefaultStepSchema:ms,PipelineEngineChoiceSchema:ps,PipelineRunResultBridge:fs,PipelineStepInputSchema:gs,PlaceholderReasonSchema:Ss,PolygonPointSchema:ys,ProfileSlotSchema:bs,ProfileSlotStatusSchema:Cs,ProviderStatusSchema:vs,PtzAutotrackRuntimeStateSchema:As,PtzAutotrackSettingsSchema:Is,PtzAutotrackStatusSchema:ws,PtzAutotrackTargetOptionSchema:Es,PtzMoveCommandSchema:_s,PtzPositionSchema:Ds,PtzPresetSchema:ks,QueryFilterSchema:Ps,RECOGNITION_TYPES:Xr,RUNTIME_DEFAULTS:ao,RUNTIME_TO_FORMAT:le,ReadinessRegistry:Ur,ReadinessTimeoutError:se,RegisteredStreamSchema:Rs,RemoteAccessEndpointSchema:Ts,RemoteAccessProviderInfoSchema:Ns,ReportMotionInputSchema:Os,RingBuffer:Ho,RtspRestreamEntrySchema:Ms,RunnerCameraConfigSchema:xs,RunnerCameraDeviceUIFields:Ls,RunnerLocalLoadSchema:Bs,RunnerLocalMetricsSchema:Fs,STORAGE_LOCATION_CARDINALITY:Us,STORAGE_LOCATION_TYPES:Wr,STREAM_QUALITY_LABELS:ie,SUB_DETECTION_TYPES:Qr,ScopedTokenSchema:zs,ScopedTokenSummarySchema:$s,SearchResultSchema:Ws,SegmentSchema:js,SettingsPatchSchema:Hs,SettingsRecordSchema:Ks,SettingsSchemaWithValuesSchema:Zs,SettingsUpdateResultSchema:qs,SnapshotImageSchema:Vs,SpatialDetectionSchema:Gs,StorageAbortUploadInputSchema:Ys,StorageBeginDownloadInputSchema:Js,StorageBeginDownloadResultSchema:Qs,StorageBeginUploadInputSchema:Xs,StorageBeginUploadResultSchema:ei,StorageEndDownloadInputSchema:ti,StorageFinalizeUploadInputSchema:ai,StorageLocationRefSchema:si,StorageLocationSchema:ii,StorageLocationTypeSchema:ni,StorageProviderInfoSchema:ri,StorageReadChunkInputSchema:oi,StorageTestLocationResultSchema:ci,StorageWriteChunkInputSchema:di,StreamFormatSchema:li,StreamInfoSchema:ui,StreamNetworkStatsSchema:hi,StreamSourceEntrySchema:mi,StreamSourceSchema:pi,SwitchStatusSchema:fi,SystemMetricsSchema:gi,SystemMirror:Si,TestConnectionResultSchema:yi,ToastSchema:bi,TokenScopeSchema:Ci,TopologyNodeSchema:vi,TopologyProcessSchema:Ai,TopologyServiceSchema:Ii,TrackSchema:wi,TrackStateSchema:Ei,TrackedDetectionSchema:_i,TurnProviderInfoSchema:Di,TurnServerSchema:ki,UpdateIntegrationInputSchema:Pi,UpdateUserInputSchema:Ri,UserRecordSchema:Ti,UserRoleSchema:Ni,UserSummarySchema:Oi,WELL_KNOWN_TABS:Mi,WELL_KNOWN_TAB_MAP:xi,WebrtcStreamChoiceSchema:Li,WebrtcStreamTargetSchema:Bi,WidgetHostEnum:Fi,WidgetMetadataSchema:Ui,WidgetSizeEnum:zi,YAMNET_TO_MACRO:$i,ZoneKindEnum:Wi,ZoneRuleModeEnum:ji,ZoneRuleSchema:Hi,ZoneRuleStageEnum:Ki,ZoneRulesArraySchema:Zi,ZoneSchema:qi,ZoneScopeBreakdownSchema:Vi,accessoriesCapability:Gi,accessoryStableId:Yi,addonPagesCapability:Ji,addonPagesSourceCapability:Qi,addonRoutesCapability:Xi,addonSettingsCapability:en,addonWidgetsCapability:tn,addonWidgetsSourceCapability:an,addonsCapability:sn,adminUiCapability:nn,advancedNotifierCapability:rn,alertsCapability:on,asBoolean:ro,asJsonArray:so,asJsonObject:de,asNumber:no,asString:io,audioAnalysisCapability:cn,audioAnalyzerCapability:dn,audioCodecCapability:ln,audioMetricsCapability:G,authProviderCapability:un,authenticationCapability:hn,autoAssignProfiles:Yr,backupCapability:mn,batteryCapability:V,bindAddonActions:Ko,brightnessCapability:q,cameraCredentialsCapability:pn,cameraStreamsCapability:Z,classifyStream:Kr,classifyStreams:re,cosineSimilarity:uo,createDeviceProxy:fn,createEvent:T,createLazyTrpcSource:gn,createMirrorSource:Sn,createRuntimeStateBridge:Do,createSliceHandle:yn,createSystemProxy:bn,customAction:$o,decoderCapability:Cn,defineCustomActions:zo,detectionPipelineCapability:vn,deviceDiscoveryCapability:K,deviceManagerCapability:An,deviceMatchesProfile:In,deviceOpsCapability:wn,deviceProviderCapability:Y,deviceStateCapability:En,deviceStatusCapability:R,doorbellCapability:H,embeddingEncoderCapability:_n,emitDownForOwnedCaps:$r,emitReadiness:ee,errMsg:me,evaluateZoneRules:Fo,event:Dn,eventsCapability:kn,expandCapMethods:Pn,featureProbeCapability:P,formatForBackend:go,formatForRuntime:So,getAudioMacroClassIds:Rn,hfModelUrl:lo,hydrateSchema:k,integrationsCapability:Tn,intercomCapability:Nn,isAgentOnlyPlacement:xr,isDeployableToAgent:Mr,isEvent:Fr,localNetworkCapability:On,logDestinationCapability:Mn,mapAudioLabelToMacro:xn,maskUrlCredentials:jo,meshNetworkCapability:Ln,meshOrchestratorCapability:Bn,method:Fn,metricsProviderCapability:Un,motionCapability:j,motionDetectionCapability:zn,motionTriggerCapability:W,nativeObjectDetectionCapability:$n,networkAccessCapability:Wn,networkQualityCapability:jn,nodesCapability:Hn,normalizeAddonInitResult:ae,notificationOutputCapability:Kn,osdCapability:Zn,parseCameraStreamConfig:Gr,parseJsonArray:co,parseJsonObject:oo,parseJsonUnknown:N,pipelineAnalyticsCapability:qn,pipelineExecutorCapability:Vn,pipelineOrchestratorCapability:Gn,pipelineRunnerCapability:Yn,platformProbeCapability:Jn,ptzAutotrackCapability:$,ptzCapability:Qn,pythonScriptForBackend:yo,readinessKey:v,rebootCapability:Xn,recordingCapability:er,recordingEngineCapability:tr,remoteAccessCapability:ar,requiresPython:bo,resolveAddonExecution:b,resolveAddonGroup:Lr,resolveAddonPlacement:Br,resolveAddonRuntime:fo,resolveDetectionRuntime:he,resolveDeviceProfile:sr,resolveModelFormat:po,restreamerCapability:ir,runInferenceStep:Co,scopeKey:f,settingsStoreCapability:nr,snapshotCapability:rr,snapshotProviderCapability:or,storageCapability:cr,storageProviderCapability:dr,streamBrokerCapability:lr,streamPixels:ne,streamQualityLabel:Hr,streamingEngineCapability:ur,switchCapability:z,systemCapability:hr,toDeviceSummary:pe,toStreamSourceEntry:Zr,toastCapability:mr,turnOrchestratorCapability:pr,turnProviderCapability:fr,userManagementCapability:gr,webrtcCapability:Sr,webrtcClientHintsSchema:yr,webrtcSessionCapability:br,zodEntriesToConfigUI:To,zoneAnalyticsCapability:U,zoneRulesCapability:F,zonesCapability:B},Symbol.toStringTag,{value:"Module"}));export{Wr as S,de as a,Go as s};
@@ -0,0 +1 @@
1
+ import{dm as a,dp as d,dq as c,dr as n,ds as s,dt as i,du as t,dv as r,dw as o,dx as l,dy as p,dz as m,dA as u,dB as g,r as v,dC as N,dD as I,dE as w,q as k,o as b,dF as h,n as y,dJ as S,dK as P,l as A,dL as f,dN as M,t as D,dO as C,k as z,j as O,dP as R,dR as x,i as T,dU as B,dV as U,dW as L,dX as W,dZ as F,d_ as q,e0 as E,g as H,e1 as j,m as _,e2 as K,e3 as G,e4 as Q,e5 as Z,e6 as V,e7 as Y,e8 as J,e9 as X,ea as $,eb as ee,ec as ae,ed as de,p as ce,ee as ne,ef as se,eg as ie,eh as te,ej as re,ek as oe,el as le,em as pe,en as me,eo as ue,ep as ge,eq as ve,s as Ne,er as Ie,es as we,et as ke,eu as be,ev as he,ew as ye,ey as Se,f as Pe,e as Ae,z as fe}from"./index-DMrjJViX.js";var Me=(e=>(e.SystemBoot="system.boot",e.SystemAddonsReady="system.addons-ready",e.SystemRestarting="system.restarting",e.SystemReadyState="system.ready-state",e.AddonStarted="addon.started",e.AddonStopped="addon.stopped",e.AddonRestarted="addon.restarted",e.AddonUpdated="addon.updated",e.AddonInstalled="addon.installed",e.AddonUninstalled="addon.uninstalled",e.AddonCrashed="addon.crashed",e.AddonError="addon.error",e.AddonPageReady="addon.page-ready",e.AddonWidgetReady="addon.widget-ready",e.AddonLoadFailed="addon.load-failed",e.AddonLoadRecovered="addon.load-recovered",e.AddonRetryScheduled="addon.retry-scheduled",e.AddonRetryAttempting="addon.retry-attempting",e.DeviceRegistered="device.registered",e.DeviceUnregistered="device.unregistered",e.DeviceEnabled="device.enabled",e.DeviceDisabled="device.disabled",e.DeviceSettingsUpdated="device.settings-updated",e.DeviceBindingsChanged="device.bindings-changed",e.DeviceMetaChanged="device.meta-changed",e.DeviceStreamsRegistered="device.streams-registered",e.IntegrationEnabled="integration.enabled",e.IntegrationDisabled="integration.disabled",e.IntegrationDeleted="integration.deleted",e.ProviderStarted="provider.started",e.ProviderStopped="provider.stopped",e.ProcessCrashed="process.crashed",e.ProcessRestartScheduled="process.restart_scheduled",e.ProcessRestarted="process.restarted",e.RecordingStarted="recording.started",e.RecordingStopped="recording.stopped",e.RecordingError="recording.error",e.RecordingHealthDegraded="recording.health.degraded",e.RecordingStorageCritical="recording.storage.critical",e.RecordingSegmentWritten="recording.segment.written",e.RecordingPolicyFallback="recording.policy.fallback",e.RecordingRetentionCompleted="recording.retention.completed",e.DetectionEvent="detection.event",e.SessionTrackNew="session.track.new",e.SessionTrackExpired="session.track.expired",e.BenchmarkProgress="benchmark.progress",e.PlatformProbePhase="platform-probe.phase",e.PipelineProgress="pipeline.progress",e.PipelineTrace="pipeline.trace",e.PipelineInferenceResult="pipeline.inference-result",e.PipelineCameraAssigned="pipeline.camera-assigned",e.PipelineCameraUnassigned="pipeline.camera-unassigned",e.PipelineCameraUpdated="pipeline.camera-updated",e.PipelineRunnerLoadSnapshot="pipeline.runner-load-snapshot",e.PipelineCameraMetricsSnapshot="pipeline.camera-metrics-snapshot",e.StreamBrokerMetricsSnapshot="stream-broker.metrics-snapshot",e.StreamBrokerOnCamStreamDemand="stream-broker.onCamStreamDemand",e.StreamBrokerOnCamStreamIdle="stream-broker.onCamStreamIdle",e.StreamBrokerOnRequestStreamSourceRefresh="stream-broker.onRequestStreamSourceRefresh",e.DeviceStateChanged="device.state-changed",e.BatteryOnStatusChanged="battery.onStatusChanged",e.DoorbellOnPressed="doorbell.onPressed",e.PipelineEngineMetricsSnapshot="pipeline.engine-metrics-snapshot",e.ClusterTopologySnapshot="cluster.topology-snapshot",e.MetricsNodeResourcesSnapshot="metrics.node-resources-snapshot",e.MetricsNodeProcessesSnapshot="metrics.node-processes-snapshot",e.CapabilityBindingChanged="capability.binding-changed",e.ModelDownloadProgress="model.download.progress",e.AgentRegistered="agent.registered",e.AgentUnregistered="agent.unregistered",e.AgentOnline="agent.online",e.AgentOffline="agent.offline",e.WorkerOnline="worker.online",e.WorkerOffline="worker.offline",e.AgentTaskDispatched="agent.task.dispatched",e.AgentTaskAssigned="agent.task.assigned",e.AgentTrpcConnected="agent.trpc.connected",e.AgentWsConnected="agent.ws.connected",e.AgentWsDisconnected="agent.ws.disconnected",e.AgentBackupActivated="agent.backup.activated",e.OrchestrationSettingsUpdated="orchestration.settings-updated",e.PipelineAgentHwaccelChanged="pipeline.agent-hwaccel-changed",e.MotionAnalysis="detection.motion-analysis",e.MotionZonesRaw="detection.motion-zones-raw",e.MotionOnMotionChanged="motion.on-motion-changed",e.DetectionResult="detection.result",e.DetectionRaw="detection.raw",e.DetectionCameraNative="detection.camera-native",e.PipelineAudioInferenceResult="pipeline.audio-inference-result",e.DetectionPhaseTransition="detection.phase-transition",e.ProviderMotion="provider.motion",e.ProviderDetection="provider.detection",e.EnrichmentEmbeddingStored="enrichment.embedding.stored",e.EnrichmentSceneStateChanged="enrichment.scene.state-changed",e.EnrichmentActivitySummary="enrichment.activity.summary",e.PipelineAnalyticsTrackStarted="pipeline-analytics.track-started",e.PipelineAnalyticsTrackEnded="pipeline-analytics.track-ended",e.PipelineAnalyticsDetectionEvent="pipeline-analytics.detection-event",e.PipelineAnalyticsFrameTracked="pipeline-analytics.frame-tracked",e.FrigateLiveEvent="frigate.live-event",e.CameraStreamsProfileSlotsChanged="camera-streams.onProfileSlotsChanged",e.StreamOnline="stream.online",e.StreamOffline="stream.offline",e.NetworkTunnelStarted="network.tunnel.started",e.NetworkTunnelStopped="network.tunnel.stopped",e.LocalNetworkChanged="network.local.changed",e.BackupCompleted="backup.completed",e.BackupRestored="backup.restored",e.NotificationDispatched="notification.dispatched",e.NotificationFailed="notification.failed",e.DeviceUpdated="device.updated",e.DeviceOnline="device.online",e.DeviceOffline="device.offline",e.DeviceAwake="device.awake",e.DeviceSleeping="device.sleeping",e.RetentionCleanup="retention.cleanup",e))(Me||{});const Ce={accessories:"accessories",addonPages:"addon-pages",addonPagesSource:"addon-pages-source",addonRoutes:"addon-routes",addonSettings:"addon-settings",addonWidgets:"addon-widgets",addonWidgetsSource:"addon-widgets-source",addons:"addons",adminUi:"admin-ui",advancedNotifier:"advanced-notifier",alerts:"alerts",audioAnalysis:"audio-analysis",audioAnalyzer:"audio-analyzer",audioCodec:"audio-codec",audioMetrics:"audio-metrics",authProvider:"auth-provider",authentication:"authentication",backup:"backup",battery:"battery",brightness:"brightness",cameraCredentials:"camera-credentials",cameraStreams:"camera-streams",decoder:"decoder",detectionPipeline:"detection-pipeline",deviceDiscovery:"device-discovery",deviceManager:"device-manager",deviceOps:"device-ops",deviceProvider:"device-provider",deviceState:"device-state",deviceStatus:"device-status",doorbell:"doorbell",embeddingEncoder:"embedding-encoder",events:"events",featureProbe:"feature-probe",integrations:"integrations",intercom:"intercom",localNetwork:"local-network",logDestination:"log-destination",meshNetwork:"mesh-network",meshOrchestrator:"mesh-orchestrator",metricsProvider:"metrics-provider",motion:"motion",motionDetection:"motion-detection",motionTrigger:"motion-trigger",nativeObjectDetection:"native-object-detection",networkAccess:"network-access",networkQuality:"network-quality",nodes:"nodes",notificationOutput:"notification-output",osd:"osd",pipelineAnalytics:"pipeline-analytics",pipelineExecutor:"pipeline-executor",pipelineOrchestrator:"pipeline-orchestrator",pipelineRunner:"pipeline-runner",platformProbe:"platform-probe",ptz:"ptz",ptzAutotrack:"ptz-autotrack",reboot:"reboot",recording:"recording",recordingEngine:"recording-engine",remoteAccess:"remote-access",restreamer:"restreamer",settingsStore:"settings-store",snapshot:"snapshot",snapshotProvider:"snapshot-provider",storage:"storage",storageProvider:"storage-provider",streamBroker:"stream-broker",streamingEngine:"streaming-engine",switch:"switch",system:"system",toast:"toast",turnOrchestrator:"turn-orchestrator",turnProvider:"turn-provider",userManagement:"user-management",webrtc:"webrtc",webrtcSession:"webrtc-session",zoneAnalytics:"zone-analytics",zoneRules:"zone-rules",zones:"zones"},ze=[{key:"accessories",name:"accessories"},{key:"addonPages",name:"addon-pages"},{key:"addonPagesSource",name:"addon-pages-source"},{key:"addonRoutes",name:"addon-routes"},{key:"addonSettings",name:"addon-settings"},{key:"addonWidgets",name:"addon-widgets"},{key:"addonWidgetsSource",name:"addon-widgets-source"},{key:"addons",name:"addons"},{key:"adminUi",name:"admin-ui"},{key:"advancedNotifier",name:"advanced-notifier"},{key:"alerts",name:"alerts"},{key:"audioAnalysis",name:"audio-analysis"},{key:"audioAnalyzer",name:"audio-analyzer"},{key:"audioCodec",name:"audio-codec"},{key:"audioMetrics",name:"audio-metrics"},{key:"authProvider",name:"auth-provider"},{key:"authentication",name:"authentication"},{key:"backup",name:"backup"},{key:"battery",name:"battery"},{key:"brightness",name:"brightness"},{key:"cameraCredentials",name:"camera-credentials"},{key:"cameraStreams",name:"camera-streams"},{key:"decoder",name:"decoder"},{key:"detectionPipeline",name:"detection-pipeline"},{key:"deviceDiscovery",name:"device-discovery"},{key:"deviceManager",name:"device-manager"},{key:"deviceOps",name:"device-ops"},{key:"deviceProvider",name:"device-provider"},{key:"deviceState",name:"device-state"},{key:"deviceStatus",name:"device-status"},{key:"doorbell",name:"doorbell"},{key:"embeddingEncoder",name:"embedding-encoder"},{key:"events",name:"events"},{key:"featureProbe",name:"feature-probe"},{key:"integrations",name:"integrations"},{key:"intercom",name:"intercom"},{key:"localNetwork",name:"local-network"},{key:"logDestination",name:"log-destination"},{key:"meshNetwork",name:"mesh-network"},{key:"meshOrchestrator",name:"mesh-orchestrator"},{key:"metricsProvider",name:"metrics-provider"},{key:"motion",name:"motion"},{key:"motionDetection",name:"motion-detection"},{key:"motionTrigger",name:"motion-trigger"},{key:"nativeObjectDetection",name:"native-object-detection"},{key:"networkAccess",name:"network-access"},{key:"networkQuality",name:"network-quality"},{key:"nodes",name:"nodes"},{key:"notificationOutput",name:"notification-output"},{key:"osd",name:"osd"},{key:"pipelineAnalytics",name:"pipeline-analytics"},{key:"pipelineExecutor",name:"pipeline-executor"},{key:"pipelineOrchestrator",name:"pipeline-orchestrator"},{key:"pipelineRunner",name:"pipeline-runner"},{key:"platformProbe",name:"platform-probe"},{key:"ptz",name:"ptz"},{key:"ptzAutotrack",name:"ptz-autotrack"},{key:"reboot",name:"reboot"},{key:"recording",name:"recording"},{key:"recordingEngine",name:"recording-engine"},{key:"remoteAccess",name:"remote-access"},{key:"restreamer",name:"restreamer"},{key:"settingsStore",name:"settings-store"},{key:"snapshot",name:"snapshot"},{key:"snapshotProvider",name:"snapshot-provider"},{key:"storage",name:"storage"},{key:"storageProvider",name:"storage-provider"},{key:"streamBroker",name:"stream-broker"},{key:"streamingEngine",name:"streaming-engine"},{key:"switch",name:"switch"},{key:"system",name:"system"},{key:"toast",name:"toast"},{key:"turnOrchestrator",name:"turn-orchestrator"},{key:"turnProvider",name:"turn-provider"},{key:"userManagement",name:"user-management"},{key:"webrtc",name:"webrtc"},{key:"webrtcSession",name:"webrtc-session"},{key:"zoneAnalytics",name:"zone-analytics"},{key:"zoneRules",name:"zone-rules"},{key:"zones",name:"zones"}],Oe=[a,d,c,n,s,i,t,r,o,l,p,m,u,g,v,N,I,w,k,b,h,y,S,P,A,f,M,D,C,z,O,R,x,T,B,U,L,W,F,q,E,H,j,_,K,G,Q,Z,V,Y,J,X,$,ee,ae,de,ce,ne,se,ie,te,re,oe,le,pe,me,ue,ge,ve,Ne,Ie,we,ke,be,he,ye,Se,Pe,Ae,fe],Re=Object.freeze({"addonPages.listPages":{capName:"addon-pages",addonId:null,access:"view"},"addonPagesSource.listPages":{capName:"addon-pages-source",addonId:null,access:"view"},"addonRoutes.getRoutes":{capName:"addon-routes",addonId:null,access:"view"},"addons.applyAutoUpdateToAll":{capName:"addons",addonId:null,access:"create"},"addons.custom":{capName:"addons",addonId:null,access:"create"},"addons.forceRefresh":{capName:"addons",addonId:null,access:"create"},"addons.getAddonAutoUpdate":{capName:"addons",addonId:null,access:"view"},"addons.getAutoUpdateSettings":{capName:"addons",addonId:null,access:"view"},"addons.getLogs":{capName:"addons",addonId:null,access:"view"},"addons.getVersions":{capName:"addons",addonId:null,access:"view"},"addons.installFromWorkspace":{capName:"addons",addonId:null,access:"create"},"addons.installPackage":{capName:"addons",addonId:null,access:"create"},"addons.isWorkspaceAvailable":{capName:"addons",addonId:null,access:"view"},"addons.list":{capName:"addons",addonId:null,access:"view"},"addons.listPackages":{capName:"addons",addonId:null,access:"view"},"addons.listUpdates":{capName:"addons",addonId:null,access:"view"},"addons.listWorkspacePackages":{capName:"addons",addonId:null,access:"view"},"addons.onAddonLogs":{capName:"addons",addonId:null,access:"view"},"addons.reloadPackages":{capName:"addons",addonId:null,access:"create"},"addons.restartAddon":{capName:"addons",addonId:null,access:"create"},"addons.restartServer":{capName:"addons",addonId:null,access:"create"},"addons.retryLoad":{capName:"addons",addonId:null,access:"create"},"addons.rollbackPackage":{capName:"addons",addonId:null,access:"create"},"addons.searchAvailable":{capName:"addons",addonId:null,access:"view"},"addons.setAddonAutoUpdate":{capName:"addons",addonId:null,access:"create"},"addons.setAutoUpdateSettings":{capName:"addons",addonId:null,access:"create"},"addons.uninstallPackage":{capName:"addons",addonId:null,access:"delete"},"addons.updatePackage":{capName:"addons",addonId:null,access:"create"},"addonSettings.getDeviceSettings":{capName:"addon-settings",addonId:null,access:"view"},"addonSettings.getGlobalSettings":{capName:"addon-settings",addonId:null,access:"view"},"addonSettings.updateDeviceSettings":{capName:"addon-settings",addonId:null,access:"create"},"addonSettings.updateGlobalSettings":{capName:"addon-settings",addonId:null,access:"create"},"addonWidgets.listWidgets":{capName:"addon-widgets",addonId:null,access:"view"},"addonWidgetsSource.listWidgets":{capName:"addon-widgets-source",addonId:null,access:"view"},"adminUi.getStaticDir":{capName:"admin-ui",addonId:null,access:"view"},"adminUi.getVersion":{capName:"admin-ui",addonId:null,access:"view"},"advancedNotifier.deleteRule":{capName:"advanced-notifier",addonId:null,access:"delete"},"advancedNotifier.getHistory":{capName:"advanced-notifier",addonId:null,access:"view"},"advancedNotifier.getRules":{capName:"advanced-notifier",addonId:null,access:"view"},"advancedNotifier.testRule":{capName:"advanced-notifier",addonId:null,access:"create"},"advancedNotifier.upsertRule":{capName:"advanced-notifier",addonId:null,access:"create"},"alerts.dismiss":{capName:"alerts",addonId:null,access:"create"},"alerts.emit":{capName:"alerts",addonId:null,access:"create"},"alerts.getUnreadCount":{capName:"alerts",addonId:null,access:"view"},"alerts.list":{capName:"alerts",addonId:null,access:"view"},"alerts.markAllRead":{capName:"alerts",addonId:null,access:"create"},"alerts.markRead":{capName:"alerts",addonId:null,access:"create"},"alerts.update":{capName:"alerts",addonId:null,access:"create"},"audioAnalysis.resolveDeviceSettings":{capName:"audio-analysis",addonId:null,access:"view"},"audioAnalyzer.analyseChunk":{capName:"audio-analyzer",addonId:null,access:"create"},"audioAnalyzer.classify":{capName:"audio-analyzer",addonId:null,access:"view"},"audioAnalyzer.dispose":{capName:"audio-analyzer",addonId:null,access:"create"},"audioAnalyzer.isReady":{capName:"audio-analyzer",addonId:null,access:"view"},"audioAnalyzer.reprobeAudioEngine":{capName:"audio-analyzer",addonId:null,access:"create"},"audioCodec.canHandle":{capName:"audio-codec",addonId:null,access:"view"},"audioCodec.closeSession":{capName:"audio-codec",addonId:null,access:"create"},"audioCodec.createDecodeSession":{capName:"audio-codec",addonId:null,access:"create"},"audioCodec.createEncodeSession":{capName:"audio-codec",addonId:null,access:"create"},"audioCodec.flushEncode":{capName:"audio-codec",addonId:null,access:"create"},"audioCodec.listActiveSessions":{capName:"audio-codec",addonId:null,access:"view"},"audioCodec.listSupportedCodecs":{capName:"audio-codec",addonId:null,access:"view"},"audioCodec.pullEncoded":{capName:"audio-codec",addonId:null,access:"view"},"audioCodec.pullPcm":{capName:"audio-codec",addonId:null,access:"view"},"audioCodec.pushEncodedFrame":{capName:"audio-codec",addonId:null,access:"create"},"audioCodec.pushPcm":{capName:"audio-codec",addonId:null,access:"create"},"audioMetrics.getCurrentSnapshot":{capName:"audio-metrics",addonId:null,access:"view"},"audioMetrics.getHistory":{capName:"audio-metrics",addonId:null,access:"view"},"authentication.listProviders":{capName:"authentication",addonId:null,access:"view"},"authentication.setProviderEnabled":{capName:"authentication",addonId:null,access:"create"},"authProvider.getLoginUrl":{capName:"auth-provider",addonId:null,access:"view"},"authProvider.handleCallback":{capName:"auth-provider",addonId:null,access:"create"},"authProvider.validateCredentials":{capName:"auth-provider",addonId:null,access:"create"},"authProvider.validateToken":{capName:"auth-provider",addonId:null,access:"view"},"backup.delete":{capName:"backup",addonId:null,access:"delete"},"backup.getEntries":{capName:"backup",addonId:null,access:"view"},"backup.list":{capName:"backup",addonId:null,access:"view"},"backup.listArchives":{capName:"backup",addonId:null,access:"view"},"backup.listDestinations":{capName:"backup",addonId:null,access:"view"},"backup.listLocations":{capName:"backup",addonId:null,access:"view"},"backup.previewSchedule":{capName:"backup",addonId:null,access:"view"},"backup.restore":{capName:"backup",addonId:null,access:"create"},"backup.trigger":{capName:"backup",addonId:null,access:"create"},"backup.upsertDestinationPolicy":{capName:"backup",addonId:null,access:"create"},"brightness.setBrightness":{capName:"brightness",addonId:null,access:"create"},"cameraCredentials.getCredentials":{capName:"camera-credentials",addonId:null,access:"view"},"cameraStreams.getBrokerStreams":{capName:"camera-streams",addonId:null,access:"view"},"cameraStreams.getCameraStreams":{capName:"camera-streams",addonId:null,access:"view"},"cameraStreams.getRtspEntries":{capName:"camera-streams",addonId:null,access:"view"},"decoder.createSession":{capName:"decoder",addonId:null,access:"view"},"decoder.destroySession":{capName:"decoder",addonId:null,access:"delete"},"decoder.getInfo":{capName:"decoder",addonId:null,access:"view"},"decoder.getStats":{capName:"decoder",addonId:null,access:"view"},"decoder.listActiveSessions":{capName:"decoder",addonId:null,access:"view"},"decoder.openStream":{capName:"decoder",addonId:null,access:"view"},"decoder.pullFrames":{capName:"decoder",addonId:null,access:"view"},"decoder.pushPacket":{capName:"decoder",addonId:null,access:"view"},"decoder.reprobeHwaccel":{capName:"decoder",addonId:null,access:"create"},"decoder.supportsCodec":{capName:"decoder",addonId:null,access:"view"},"decoder.updateConfig":{capName:"decoder",addonId:null,access:"view"},"deviceDiscovery.adoptDevice":{capName:"device-discovery",addonId:null,access:"create"},"deviceDiscovery.listDiscovered":{capName:"device-discovery",addonId:null,access:"view"},"deviceDiscovery.refreshDiscovery":{capName:"device-discovery",addonId:null,access:"create"},"deviceDiscovery.releaseDevice":{capName:"device-discovery",addonId:null,access:"create"},"deviceManager.addLocation":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.adoptDevice":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.allocateDeviceId":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.createDevice":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.disable":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.discoverDevices":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.enable":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.getAllBindings":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getBindings":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getChildren":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getConfigSchema":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getCreationSchema":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getDevice":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getDeviceAggregate":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getDeviceLiveInfoAggregate":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getDeviceSettingsAggregate":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getDeviceStatusAggregate":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getSettingsSchema":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getStreamProfileMap":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getStreamSources":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.listAll":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.listBindableCapsForDeviceType":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.listLocations":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.listPersistedByAddon":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.listWrappersForCap":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.loadConfig":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.loadMeta":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.loadRuntimeState":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.persistConfig":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.probeStreams":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.registerDevice":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.remove":{capName:"device-manager",addonId:null,access:"delete"},"deviceManager.removeDevice":{capName:"device-manager",addonId:null,access:"delete"},"deviceManager.removeLocation":{capName:"device-manager",addonId:null,access:"delete"},"deviceManager.setDisabled":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.setLocation":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.setMetadata":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.setName":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.setStreamProfileMap":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.setWrapperActive":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.testCreationField":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.testField":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.updateConfig":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.updateDeviceField":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.updateDeviceFieldsBatch":{capName:"device-manager",addonId:null,access:"create"},"deviceOps.getConfigEntries":{capName:"device-ops",addonId:null,access:"view"},"deviceOps.getSettingsSchema":{capName:"device-ops",addonId:null,access:"view"},"deviceOps.getStreamSources":{capName:"device-ops",addonId:null,access:"view"},"deviceOps.removeDevice":{capName:"device-ops",addonId:null,access:"delete"},"deviceOps.setConfig":{capName:"device-ops",addonId:null,access:"create"},"deviceProvider.adoptDiscoveredDevice":{capName:"device-provider",addonId:null,access:"create"},"deviceProvider.createDevice":{capName:"device-provider",addonId:null,access:"create"},"deviceProvider.discoverDevices":{capName:"device-provider",addonId:null,access:"create"},"deviceProvider.getChildCreationSchema":{capName:"device-provider",addonId:null,access:"view"},"deviceProvider.getDevices":{capName:"device-provider",addonId:null,access:"view"},"deviceProvider.getStatus":{capName:"device-provider",addonId:null,access:"view"},"deviceProvider.start":{capName:"device-provider",addonId:null,access:"create"},"deviceProvider.stop":{capName:"device-provider",addonId:null,access:"create"},"deviceProvider.supportsDiscovery":{capName:"device-provider",addonId:null,access:"view"},"deviceProvider.supportsManualCreation":{capName:"device-provider",addonId:null,access:"view"},"deviceProvider.testCreationField":{capName:"device-provider",addonId:null,access:"create"},"deviceState.getAllSnapshots":{capName:"device-state",addonId:null,access:"view"},"deviceState.getCapSlice":{capName:"device-state",addonId:null,access:"view"},"deviceState.getSnapshot":{capName:"device-state",addonId:null,access:"view"},"deviceState.setCapSlice":{capName:"device-state",addonId:null,access:"create"},"embeddingEncoder.encode":{capName:"embedding-encoder",addonId:null,access:"view"},"embeddingEncoder.encodeText":{capName:"embedding-encoder",addonId:null,access:"view"},"embeddingEncoder.getInfo":{capName:"embedding-encoder",addonId:null,access:"view"},"events.getEventClipUrl":{capName:"events",addonId:null,access:"view"},"events.getEvents":{capName:"events",addonId:null,access:"view"},"events.getEventThumbnail":{capName:"events",addonId:null,access:"view"},"integrations.create":{capName:"integrations",addonId:null,access:"create"},"integrations.delete":{capName:"integrations",addonId:null,access:"delete"},"integrations.get":{capName:"integrations",addonId:null,access:"view"},"integrations.getAvailableTypes":{capName:"integrations",addonId:null,access:"view"},"integrations.getByAddonId":{capName:"integrations",addonId:null,access:"view"},"integrations.getSettings":{capName:"integrations",addonId:null,access:"view"},"integrations.list":{capName:"integrations",addonId:null,access:"view"},"integrations.setSettings":{capName:"integrations",addonId:null,access:"create"},"integrations.testConnection":{capName:"integrations",addonId:null,access:"create"},"integrations.update":{capName:"integrations",addonId:null,access:"create"},"intercom.handleAnswer":{capName:"intercom",addonId:null,access:"create"},"intercom.startSession":{capName:"intercom",addonId:null,access:"create"},"intercom.stopSession":{capName:"intercom",addonId:null,access:"create"},"localNetwork.getAllowedAddresses":{capName:"local-network",addonId:null,access:"view"},"localNetwork.getConnectionEndpoints":{capName:"local-network",addonId:null,access:"view"},"localNetwork.getPreferred":{capName:"local-network",addonId:null,access:"view"},"localNetwork.list":{capName:"local-network",addonId:null,access:"view"},"localNetwork.resetAllowlistToBestMatch":{capName:"local-network",addonId:null,access:"delete"},"localNetwork.setAllowedAddresses":{capName:"local-network",addonId:null,access:"create"},"logDestination.query":{capName:"log-destination",addonId:null,access:"view"},"logDestination.write":{capName:"log-destination",addonId:null,access:"create"},"meshNetwork.getStatus":{capName:"mesh-network",addonId:null,access:"view"},"meshNetwork.join":{capName:"mesh-network",addonId:null,access:"create"},"meshNetwork.leave":{capName:"mesh-network",addonId:null,access:"create"},"meshNetwork.listPeers":{capName:"mesh-network",addonId:null,access:"view"},"meshNetwork.setMeshIngress":{capName:"mesh-network",addonId:null,access:"create"},"meshNetwork.setPublicIngress":{capName:"mesh-network",addonId:null,access:"create"},"meshOrchestrator.joinProvider":{capName:"mesh-orchestrator",addonId:null,access:"create"},"meshOrchestrator.leaveProvider":{capName:"mesh-orchestrator",addonId:null,access:"create"},"meshOrchestrator.listProviders":{capName:"mesh-orchestrator",addonId:null,access:"view"},"metricsProvider.collectSnapshot":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getAddonStats":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getCached":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getCpuTemperature":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getCurrent":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getDiskSpace":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getGpuInfo":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getProcessStats":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.killProcess":{capName:"metrics-provider",addonId:null,access:"create"},"metricsProvider.listAddonInstances":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.listNodeProcesses":{capName:"metrics-provider",addonId:null,access:"view"},"motion.isDetected":{capName:"motion",addonId:null,access:"view"},"motionDetection.analyze":{capName:"motion-detection",addonId:null,access:"create"},"motionDetection.removeCamera":{capName:"motion-detection",addonId:null,access:"delete"},"motionDetection.reset":{capName:"motion-detection",addonId:null,access:"delete"},"motionTrigger.setMotionTrigger":{capName:"motion-trigger",addonId:null,access:"create"},"networkAccess.getEndpoint":{capName:"network-access",addonId:null,access:"view"},"networkAccess.getStatus":{capName:"network-access",addonId:null,access:"view"},"networkAccess.start":{capName:"network-access",addonId:null,access:"create"},"networkAccess.stop":{capName:"network-access",addonId:null,access:"create"},"networkQuality.getAllStats":{capName:"network-quality",addonId:null,access:"view"},"networkQuality.getDeviceStats":{capName:"network-quality",addonId:null,access:"view"},"networkQuality.reportClientStats":{capName:"network-quality",addonId:null,access:"create"},"nodes.clusterAddonStatus":{capName:"nodes",addonId:null,access:"view"},"nodes.deployAddon":{capName:"nodes",addonId:null,access:"create"},"nodes.executeQuery":{capName:"nodes",addonId:null,access:"create"},"nodes.renameNode":{capName:"nodes",addonId:null,access:"create"},"nodes.restartAddon":{capName:"nodes",addonId:null,access:"create"},"nodes.restartNode":{capName:"nodes",addonId:null,access:"create"},"nodes.restartProcess":{capName:"nodes",addonId:null,access:"create"},"nodes.setProcessLogLevel":{capName:"nodes",addonId:null,access:"create"},"nodes.shutdownNode":{capName:"nodes",addonId:null,access:"create"},"nodes.topology":{capName:"nodes",addonId:null,access:"view"},"nodes.undeployAddon":{capName:"nodes",addonId:null,access:"create"},"notificationOutput.send":{capName:"notification-output",addonId:null,access:"create"},"notificationOutput.sendTest":{capName:"notification-output",addonId:null,access:"create"},"osd.setOverlay":{capName:"osd",addonId:null,access:"create"},"pipelineAnalytics.clearTracks":{capName:"pipeline-analytics",addonId:null,access:"delete"},"pipelineAnalytics.getActiveTracks":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.getAudioEvents":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.getEventMedia":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.getMotionEvents":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.getObjectEvents":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.getTrack":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.getTrackMedia":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.listTracks":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineExecutor.cacheFrameInPool":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.deleteModel":{capName:"pipeline-executor",addonId:null,access:"delete"},"pipelineExecutor.deleteTemplate":{capName:"pipeline-executor",addonId:null,access:"delete"},"pipelineExecutor.detect":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.downloadModel":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.getAddonModels":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getAudioCapabilities":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getAvailableEngines":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getCapabilities":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getDefaultSteps":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getDetectionConfigSchema":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getEffectiveTuning":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getGlobalPipelineConfig":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getGlobalSteps":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getOrchestratorConfigSchema":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getReferenceAudio":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getReferenceAudioFiles":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getReferenceImage":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getSchema":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getSelectedEngine":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getVideoPipelineSteps":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.inferCached":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.killEngine":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.listLoadedEngines":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.listReferenceImages":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.listTemplates":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.reprobeEngine":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.runAudioTest":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.runPipeline":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.runPipelineBatch":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.saveTemplate":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.setVideoPipelineSteps":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.spinEngine":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.uncacheFrame":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.updateTemplate":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineOrchestrator.assignAudio":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.assignDecoder":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.assignPipeline":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.deleteTemplate":{capName:"pipeline-orchestrator",addonId:null,access:"delete"},"pipelineOrchestrator.getAgentLoad":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getAgentSettings":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getAudioAssignment":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getAudioAssignments":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getAudioNodeLoad":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getCameraMetrics":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getCameraSettings":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getCameraStepOverrides":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getCapabilityBindings":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getDecoderAssignment":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getDecoderAssignments":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getGlobalMetrics":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getPipelineAssignment":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getPipelineAssignments":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.listAgentSettings":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.listTemplates":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.rebalance":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.removeAgentSettings":{capName:"pipeline-orchestrator",addonId:null,access:"delete"},"pipelineOrchestrator.resolvePipeline":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.saveTemplate":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.setAgentAddonDefaults":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.setCameraPipelineForAgent":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.setCameraStepOverride":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.setCameraStepToggle":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.setCapabilityBinding":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.unassignAudio":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.unassignDecoder":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.unassignPipeline":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.updateTemplate":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineRunner.attachCamera":{capName:"pipeline-runner",addonId:null,access:"create"},"pipelineRunner.detachCamera":{capName:"pipeline-runner",addonId:null,access:"create"},"pipelineRunner.getAllCameraMetrics":{capName:"pipeline-runner",addonId:null,access:"view"},"pipelineRunner.getCameraMetrics":{capName:"pipeline-runner",addonId:null,access:"view"},"pipelineRunner.getLocalCameras":{capName:"pipeline-runner",addonId:null,access:"view"},"pipelineRunner.getLocalLoad":{capName:"pipeline-runner",addonId:null,access:"view"},"pipelineRunner.getLocalMetrics":{capName:"pipeline-runner",addonId:null,access:"view"},"pipelineRunner.reportMotion":{capName:"pipeline-runner",addonId:null,access:"create"},"platformProbe.getCapabilities":{capName:"platform-probe",addonId:null,access:"view"},"platformProbe.getHardware":{capName:"platform-probe",addonId:null,access:"view"},"platformProbe.resolveHwAccel":{capName:"platform-probe",addonId:null,access:"view"},"platformProbe.resolveInferenceConfig":{capName:"platform-probe",addonId:null,access:"view"},"ptz.continuousMove":{capName:"ptz",addonId:null,access:"create"},"ptz.getPosition":{capName:"ptz",addonId:null,access:"view"},"ptz.getPresets":{capName:"ptz",addonId:null,access:"view"},"ptz.goHome":{capName:"ptz",addonId:null,access:"create"},"ptz.goToPreset":{capName:"ptz",addonId:null,access:"create"},"ptz.move":{capName:"ptz",addonId:null,access:"create"},"ptz.stop":{capName:"ptz",addonId:null,access:"create"},"ptzAutotrack.getSettings":{capName:"ptz-autotrack",addonId:null,access:"view"},"ptzAutotrack.getStatus":{capName:"ptz-autotrack",addonId:null,access:"view"},"ptzAutotrack.setEnabled":{capName:"ptz-autotrack",addonId:null,access:"create"},"ptzAutotrack.setSettings":{capName:"ptz-autotrack",addonId:null,access:"create"},"reboot.reboot":{capName:"reboot",addonId:null,access:"create"},"recording.getPlaybackUrl":{capName:"recording",addonId:null,access:"view"},"recording.getSegments":{capName:"recording",addonId:null,access:"view"},"recording.getThumbnailAt":{capName:"recording",addonId:null,access:"view"},"recordingEngine.disable":{capName:"recording-engine",addonId:null,access:"create"},"recordingEngine.enable":{capName:"recording-engine",addonId:null,access:"create"},"recordingEngine.estimateGlobalStorage":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.estimateStorage":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getAvailability":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getConfig":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getMotionStats":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getPlaylist":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getPolicy":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getPolicyStatus":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getRetentionConfig":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getSegments":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getStatus":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getStorageUsage":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getThumbnail":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.setPolicy":{capName:"recording-engine",addonId:null,access:"create"},"recordingEngine.updateConfig":{capName:"recording-engine",addonId:null,access:"create"},"recordingEngine.updateRetentionConfig":{capName:"recording-engine",addonId:null,access:"create"},"remoteAccess.listProviders":{capName:"remote-access",addonId:null,access:"view"},"remoteAccess.startProvider":{capName:"remote-access",addonId:null,access:"create"},"remoteAccess.stopProvider":{capName:"remote-access",addonId:null,access:"create"},"restreamer.getExposedResources":{capName:"restreamer",addonId:null,access:"view"},"restreamer.registerDevice":{capName:"restreamer",addonId:null,access:"create"},"restreamer.unregisterDevice":{capName:"restreamer",addonId:null,access:"delete"},"settingsStore.count":{capName:"settings-store",addonId:null,access:"view"},"settingsStore.declareCollection":{capName:"settings-store",addonId:null,access:"create"},"settingsStore.delete":{capName:"settings-store",addonId:null,access:"delete"},"settingsStore.get":{capName:"settings-store",addonId:null,access:"view"},"settingsStore.insert":{capName:"settings-store",addonId:null,access:"create"},"settingsStore.isEmpty":{capName:"settings-store",addonId:null,access:"view"},"settingsStore.query":{capName:"settings-store",addonId:null,access:"view"},"settingsStore.set":{capName:"settings-store",addonId:null,access:"create"},"settingsStore.update":{capName:"settings-store",addonId:null,access:"create"},"snapshot.getSnapshot":{capName:"snapshot",addonId:null,access:"view"},"snapshot.invalidateCache":{capName:"snapshot",addonId:null,access:"create"},"snapshotProvider.getSnapshot":{capName:"snapshot-provider",addonId:null,access:"view"},"snapshotProvider.supportsDevice":{capName:"snapshot-provider",addonId:null,access:"view"},"storage.abortUpload":{capName:"storage",addonId:null,access:"create"},"storage.beginDownload":{capName:"storage",addonId:null,access:"create"},"storage.beginUpload":{capName:"storage",addonId:null,access:"create"},"storage.delete":{capName:"storage",addonId:null,access:"delete"},"storage.deleteLocation":{capName:"storage",addonId:null,access:"delete"},"storage.endDownload":{capName:"storage",addonId:null,access:"create"},"storage.exists":{capName:"storage",addonId:null,access:"view"},"storage.finalizeUpload":{capName:"storage",addonId:null,access:"create"},"storage.getAvailableSpace":{capName:"storage",addonId:null,access:"view"},"storage.getDefaultLocation":{capName:"storage",addonId:null,access:"view"},"storage.list":{capName:"storage",addonId:null,access:"view"},"storage.listLocations":{capName:"storage",addonId:null,access:"view"},"storage.listProviders":{capName:"storage",addonId:null,access:"view"},"storage.read":{capName:"storage",addonId:null,access:"view"},"storage.readChunk":{capName:"storage",addonId:null,access:"view"},"storage.resolve":{capName:"storage",addonId:null,access:"view"},"storage.testConfig":{capName:"storage",addonId:null,access:"view"},"storage.testLocation":{capName:"storage",addonId:null,access:"view"},"storage.upsertLocation":{capName:"storage",addonId:null,access:"create"},"storage.write":{capName:"storage",addonId:null,access:"create"},"storage.writeChunk":{capName:"storage",addonId:null,access:"create"},"storageProvider.abortUpload":{capName:"storage-provider",addonId:null,access:"create"},"storageProvider.beginDownload":{capName:"storage-provider",addonId:null,access:"create"},"storageProvider.beginUpload":{capName:"storage-provider",addonId:null,access:"create"},"storageProvider.delete":{capName:"storage-provider",addonId:null,access:"delete"},"storageProvider.endDownload":{capName:"storage-provider",addonId:null,access:"create"},"storageProvider.exists":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.finalizeUpload":{capName:"storage-provider",addonId:null,access:"create"},"storageProvider.getAvailableSpace":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.getProviderInfo":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.list":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.read":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.readChunk":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.resolve":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.testLocation":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.write":{capName:"storage-provider",addonId:null,access:"create"},"storageProvider.writeChunk":{capName:"storage-provider",addonId:null,access:"create"},"streamBroker.assignProfile":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.getAllRtspEntries":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.getBroker":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.getBrokerStats":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.getPreBufferInfo":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.getRtspEntry":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.getRtspPort":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.getStreamUrl":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.isRtspEnabled":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.killClient":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.listAllCameraStreams":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.listAllProfileSlots":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.listClients":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.publishCameraStream":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.regenerateRtspToken":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.restartProfile":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.retractCameraStream":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.setPreBufferDuration":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.setRtspEnabled":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.unassignProfile":{capName:"stream-broker",addonId:null,access:"create"},"streamingEngine.getStreamUrl":{capName:"streaming-engine",addonId:null,access:"view"},"streamingEngine.listStreams":{capName:"streaming-engine",addonId:null,access:"view"},"streamingEngine.registerStream":{capName:"streaming-engine",addonId:null,access:"create"},"streamingEngine.unregisterStream":{capName:"streaming-engine",addonId:null,access:"delete"},"switch.setState":{capName:"switch",addonId:null,access:"create"},"system.featureFlags":{capName:"system",addonId:null,access:"view"},"system.forceRetentionCleanup":{capName:"system",addonId:null,access:"create"},"system.getRetentionConfig":{capName:"system",addonId:null,access:"view"},"system.health":{capName:"system",addonId:null,access:"view"},"system.info":{capName:"system",addonId:null,access:"view"},"system.networkAddresses":{capName:"system",addonId:null,access:"view"},"system.setRetentionConfig":{capName:"system",addonId:null,access:"create"},"toast.onToast":{capName:"toast",addonId:null,access:"view"},"turnOrchestrator.getAllServers":{capName:"turn-orchestrator",addonId:null,access:"view"},"turnOrchestrator.listProviders":{capName:"turn-orchestrator",addonId:null,access:"view"},"turnOrchestrator.setProviderEnabled":{capName:"turn-orchestrator",addonId:null,access:"create"},"turnProvider.getTurnServers":{capName:"turn-provider",addonId:null,access:"view"},"userManagement.createApiKey":{capName:"user-management",addonId:null,access:"create"},"userManagement.createScopedToken":{capName:"user-management",addonId:null,access:"create"},"userManagement.createUser":{capName:"user-management",addonId:null,access:"create"},"userManagement.deleteUser":{capName:"user-management",addonId:null,access:"delete"},"userManagement.listApiKeys":{capName:"user-management",addonId:null,access:"view"},"userManagement.listScopedTokens":{capName:"user-management",addonId:null,access:"view"},"userManagement.listUsers":{capName:"user-management",addonId:null,access:"view"},"userManagement.resetPassword":{capName:"user-management",addonId:null,access:"delete"},"userManagement.revokeApiKey":{capName:"user-management",addonId:null,access:"delete"},"userManagement.revokeScopedToken":{capName:"user-management",addonId:null,access:"delete"},"userManagement.setUserScopes":{capName:"user-management",addonId:null,access:"create"},"userManagement.updateUser":{capName:"user-management",addonId:null,access:"create"},"userManagement.validateApiKey":{capName:"user-management",addonId:null,access:"create"},"userManagement.validateCredentials":{capName:"user-management",addonId:null,access:"create"},"userManagement.validateScopedToken":{capName:"user-management",addonId:null,access:"view"},"webrtc.closeSession":{capName:"webrtc",addonId:null,access:"create"},"webrtc.createSession":{capName:"webrtc",addonId:null,access:"create"},"webrtc.handleAnswer":{capName:"webrtc",addonId:null,access:"create"},"webrtc.handleOffer":{capName:"webrtc",addonId:null,access:"create"},"webrtc.hasAdaptiveBitrate":{capName:"webrtc",addonId:null,access:"view"},"webrtc.registerStream":{capName:"webrtc",addonId:null,access:"create"},"webrtc.supportsStream":{capName:"webrtc",addonId:null,access:"view"},"webrtc.unregisterStream":{capName:"webrtc",addonId:null,access:"delete"},"webrtcSession.closeSession":{capName:"webrtc-session",addonId:null,access:"create"},"webrtcSession.createSession":{capName:"webrtc-session",addonId:null,access:"create"},"webrtcSession.handleAnswer":{capName:"webrtc-session",addonId:null,access:"create"},"webrtcSession.hasAdaptiveBitrate":{capName:"webrtc-session",addonId:null,access:"view"},"webrtcSession.listStreams":{capName:"webrtc-session",addonId:null,access:"view"},"zoneAnalytics.getCameraHistory":{capName:"zone-analytics",addonId:null,access:"view"},"zoneAnalytics.getCurrentSnapshot":{capName:"zone-analytics",addonId:null,access:"view"},"zoneAnalytics.getUnzonedHistory":{capName:"zone-analytics",addonId:null,access:"view"},"zoneAnalytics.getZoneHistory":{capName:"zone-analytics",addonId:null,access:"view"},"zoneRules.listRules":{capName:"zone-rules",addonId:null,access:"view"},"zoneRules.setRules":{capName:"zone-rules",addonId:null,access:"create"},"zones.addZone":{capName:"zones",addonId:null,access:"create"},"zones.listZones":{capName:"zones",addonId:null,access:"view"},"zones.removeZone":{capName:"zones",addonId:null,access:"delete"},"zones.updateZone":{capName:"zones",addonId:null,access:"create"}}),xe=["addon-pages","addon-pages-source","addon-routes","addon-settings","addon-widgets","addon-widgets-source","addons","admin-ui","advanced-notifier","alerts","audio-analysis","audio-analyzer","audio-codec","audio-metrics","auth-provider","authentication","backup","brightness","camera-credentials","camera-streams","decoder","device-discovery","device-manager","device-ops","device-provider","device-state","embedding-encoder","events","integrations","intercom","local-network","log-destination","mesh-network","mesh-orchestrator","metrics-provider","motion","motion-detection","motion-trigger","network-access","network-quality","nodes","notification-output","osd","pipeline-analytics","pipeline-executor","pipeline-orchestrator","pipeline-runner","platform-probe","ptz","ptz-autotrack","reboot","recording","recording-engine","remote-access","restreamer","settings-store","snapshot","snapshot-provider","storage","storage-provider","stream-broker","streaming-engine","switch","system","toast","turn-orchestrator","turn-provider","user-management","webrtc","webrtc-session","zone-analytics","zone-rules","zones"];export{Oe as A,Ce as C,Me as E,xe as K,Re as M,ze as a};
@@ -1 +1 @@
1
- import"./preload-helper-BlTxHScW.js";import{g as r,i as a}from"./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DItyrftX.js";export{r as get,a as init};
1
+ import"./preload-helper-BlTxHScW.js";import{g as r,i as a}from"./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-CJWQPV3f.js";export{r as get,a as init};