@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.
- 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
- package/dist/assets/devices-Ccad-MYH.js +1 -0
- package/dist/assets/{hostInit-DcknmeNu.js → hostInit-BpDp2mzG.js} +1 -1
- package/dist/assets/index-CAlT1MNc.css +1 -0
- package/dist/assets/index-CO8Odo2q.js +1103 -0
- package/dist/assets/index-CaiMG86U.js +80 -0
- package/dist/assets/{index-F3MAsf-9.js → index-D9kg0e9y.js} +1 -1
- package/dist/assets/index-DDPTeM3J.js +80 -0
- package/dist/assets/index-DMrjJViX.js +1 -0
- package/dist/assets/{index-CvVlJEP5.js → index-DOXiszQ-.js} +1 -1
- package/dist/assets/{index-Dq_5fsAQ.js → index-DV9irWJe.js} +1 -1
- package/dist/assets/index-bCeHA7pg.js +1 -0
- package/dist/assets/index-ihiza8WC.js +1 -0
- package/dist/assets/index-vWF3glDx.js +1 -0
- package/dist/assets/index-zk-hwOKE.js +1 -0
- package/dist/assets/method-access-map-DAzkqn3U.js +1 -0
- package/dist/assets/{remoteEntry-D1zRuKvw.js → remoteEntry-DcLH2pUv.js} +1 -1
- 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
- package/dist/index.html +6 -6
- package/dist/mf-entry-bootstrap-0.js +2 -2
- package/dist/sw.js +1 -1
- package/package.json +1 -1
- package/dist/assets/auth-records-DLqosdE2.js +0 -1
- package/dist/assets/capability-router-map-UNVkwZU9.js +0 -1
- package/dist/assets/devices-BUM64diU.js +0 -1
- package/dist/assets/index-B95gHp6V.js +0 -1
- package/dist/assets/index-DVf1U7c4.js +0 -1
- package/dist/assets/index-De6hr8eY.js +0 -1
- package/dist/assets/index-DvrBfik_.js +0 -1
- package/dist/assets/index-agmLjvC2.js +0 -80
- package/dist/assets/index-bZcruxoE.js +0 -80
- package/dist/assets/index-k_vr1qwb.js +0 -1098
- package/dist/assets/index-uOUrSD7R.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var Ge=(s,a)=>()=>(a||s((a={exports:{}}).exports,a),a.exports);var ba=Ge(n=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});const i=require("./index-s8uJNgNs.js"),b=require("zod");class Ke{disposers=[];disposed=!1;onError;constructor(a={}){this.onError=a.onError??((e,o)=>{console.error(`[DisposerChain] disposer #${o} threw`,e)})}add(a){if(this.disposed){try{const e=a();e&&typeof e.then=="function"&&e.catch(o=>this.onError(o,-1))}catch(e){this.onError(e,-1)}return()=>{}}return this.disposers.push(a),()=>{const e=this.disposers.indexOf(a);e>=0&&this.disposers.splice(e,1)}}get isDisposed(){return this.disposed}get size(){return this.disposers.length}async dispose(){if(this.disposed)return;this.disposed=!0;const a=this.disposers.slice().reverse();this.disposers=[];for(let e=0;e<a.length;e++){const o=a[e];try{const c=o();c&&typeof c.then=="function"&&await c}catch(c){this.onError(c,a.length-1-e)}}}}const Ie="main-group",Ce="hub-only";function z(s){return{placement:s.execution?.placement??Ce,group:s.execution?.group??Ie}}function Ze(s){const a=z(s).placement;return a==="any-node"||a==="agent-only"}function Ve(s){return z(s).placement==="agent-only"}function Ye(s){return z(s).group}function Qe(s){return z(s).placement}var L=(s=>(s.SystemBoot="system.boot",s.SystemAddonsReady="system.addons-ready",s.SystemRestarting="system.restarting",s.SystemReadyState="system.ready-state",s.AddonStarted="addon.started",s.AddonStopped="addon.stopped",s.AddonRestarted="addon.restarted",s.AddonUpdated="addon.updated",s.AddonInstalled="addon.installed",s.AddonUninstalled="addon.uninstalled",s.AddonCrashed="addon.crashed",s.AddonError="addon.error",s.AddonPageReady="addon.page-ready",s.AddonWidgetReady="addon.widget-ready",s.AddonLoadFailed="addon.load-failed",s.AddonLoadRecovered="addon.load-recovered",s.AddonRetryScheduled="addon.retry-scheduled",s.AddonRetryAttempting="addon.retry-attempting",s.DeviceRegistered="device.registered",s.DeviceUnregistered="device.unregistered",s.DeviceEnabled="device.enabled",s.DeviceDisabled="device.disabled",s.DeviceSettingsUpdated="device.settings-updated",s.DeviceBindingsChanged="device.bindings-changed",s.DeviceMetaChanged="device.meta-changed",s.DeviceStreamsRegistered="device.streams-registered",s.IntegrationEnabled="integration.enabled",s.IntegrationDisabled="integration.disabled",s.IntegrationDeleted="integration.deleted",s.ProviderStarted="provider.started",s.ProviderStopped="provider.stopped",s.ProcessCrashed="process.crashed",s.ProcessRestartScheduled="process.restart_scheduled",s.ProcessRestarted="process.restarted",s.RecordingStarted="recording.started",s.RecordingStopped="recording.stopped",s.RecordingError="recording.error",s.RecordingHealthDegraded="recording.health.degraded",s.RecordingStorageCritical="recording.storage.critical",s.RecordingSegmentWritten="recording.segment.written",s.RecordingPolicyFallback="recording.policy.fallback",s.RecordingRetentionCompleted="recording.retention.completed",s.DetectionEvent="detection.event",s.SessionTrackNew="session.track.new",s.SessionTrackExpired="session.track.expired",s.BenchmarkProgress="benchmark.progress",s.PlatformProbePhase="platform-probe.phase",s.PipelineProgress="pipeline.progress",s.PipelineTrace="pipeline.trace",s.PipelineInferenceResult="pipeline.inference-result",s.PipelineCameraAssigned="pipeline.camera-assigned",s.PipelineCameraUnassigned="pipeline.camera-unassigned",s.PipelineCameraUpdated="pipeline.camera-updated",s.PipelineRunnerLoadSnapshot="pipeline.runner-load-snapshot",s.PipelineCameraMetricsSnapshot="pipeline.camera-metrics-snapshot",s.StreamBrokerMetricsSnapshot="stream-broker.metrics-snapshot",s.StreamBrokerOnCamStreamDemand="stream-broker.onCamStreamDemand",s.StreamBrokerOnCamStreamIdle="stream-broker.onCamStreamIdle",s.StreamBrokerOnRequestStreamSourceRefresh="stream-broker.onRequestStreamSourceRefresh",s.DeviceStateChanged="device.state-changed",s.BatteryOnStatusChanged="battery.onStatusChanged",s.DoorbellOnPressed="doorbell.onPressed",s.PipelineEngineMetricsSnapshot="pipeline.engine-metrics-snapshot",s.ClusterTopologySnapshot="cluster.topology-snapshot",s.MetricsNodeResourcesSnapshot="metrics.node-resources-snapshot",s.MetricsNodeProcessesSnapshot="metrics.node-processes-snapshot",s.CapabilityBindingChanged="capability.binding-changed",s.ModelDownloadProgress="model.download.progress",s.AgentRegistered="agent.registered",s.AgentUnregistered="agent.unregistered",s.AgentOnline="agent.online",s.AgentOffline="agent.offline",s.WorkerOnline="worker.online",s.WorkerOffline="worker.offline",s.AgentTaskDispatched="agent.task.dispatched",s.AgentTaskAssigned="agent.task.assigned",s.AgentTrpcConnected="agent.trpc.connected",s.AgentWsConnected="agent.ws.connected",s.AgentWsDisconnected="agent.ws.disconnected",s.AgentBackupActivated="agent.backup.activated",s.OrchestrationSettingsUpdated="orchestration.settings-updated",s.PipelineAgentHwaccelChanged="pipeline.agent-hwaccel-changed",s.MotionAnalysis="detection.motion-analysis",s.MotionZonesRaw="detection.motion-zones-raw",s.MotionOnMotionChanged="motion.on-motion-changed",s.DetectionResult="detection.result",s.DetectionRaw="detection.raw",s.DetectionCameraNative="detection.camera-native",s.PipelineAudioInferenceResult="pipeline.audio-inference-result",s.DetectionPhaseTransition="detection.phase-transition",s.ProviderMotion="provider.motion",s.ProviderDetection="provider.detection",s.EnrichmentEmbeddingStored="enrichment.embedding.stored",s.EnrichmentSceneStateChanged="enrichment.scene.state-changed",s.EnrichmentActivitySummary="enrichment.activity.summary",s.PipelineAnalyticsTrackStarted="pipeline-analytics.track-started",s.PipelineAnalyticsTrackEnded="pipeline-analytics.track-ended",s.PipelineAnalyticsDetectionEvent="pipeline-analytics.detection-event",s.PipelineAnalyticsFrameTracked="pipeline-analytics.frame-tracked",s.FrigateLiveEvent="frigate.live-event",s.CameraStreamsProfileSlotsChanged="camera-streams.onProfileSlotsChanged",s.StreamOnline="stream.online",s.StreamOffline="stream.offline",s.NetworkTunnelStarted="network.tunnel.started",s.NetworkTunnelStopped="network.tunnel.stopped",s.LocalNetworkChanged="network.local.changed",s.BackupCompleted="backup.completed",s.BackupRestored="backup.restored",s.NotificationDispatched="notification.dispatched",s.NotificationFailed="notification.failed",s.DeviceUpdated="device.updated",s.DeviceOnline="device.online",s.DeviceOffline="device.offline",s.DeviceAwake="device.awake",s.DeviceSleeping="device.sleeping",s.RetentionCleanup="retention.cleanup",s))(L||{});function Je(s,a){return s.category===a}function V(s,a,e){return{id:typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2),timestamp:new Date,source:a,category:s,data:e}}function we(s,a){const e=a.ts??Date.now();s.emit(V("system.ready-state",{type:"capability",id:a.capName,nodeId:a.sourceNodeId},{capName:a.capName,scope:a.scope,state:a.state,generation:a.generation,sourceNodeId:a.sourceNodeId,ts:e}))}class Ae{_ctx=null;_config;_readinessGeneration=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14);_registeredCapNames=[];defaults;constructor(a){this.defaults=a,this._config={...a}}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(a){this._ctx=a,await this.resolveConfig();const e=await this.onInitialize();this.emitLifecycle(L.AddonStarted);const o=Ne(e),c=o&&"providers"in o&&o.providers?o.providers:[];return this._registeredCapNames=c.map(l=>l.capability.name),o}postBrokerStart(){this.autoEmitReadiness&&this._registeredCapNames.length>0&&this.emitReadinessForProviders("ready")}async onHubReachable(){}async shutdown(){this.emitLifecycle(L.AddonStopped),this.autoEmitReadiness&&this.emitReadinessForProviders("down"),await this.onShutdown();for(const a of this._subscriptions)a();this._subscriptions=[],this._ctx=null}async onShutdown(){}async onConfigChanged(){}field(a){return a}schema(a){return a}globalSettingsSchema(){return null}deviceSettingsSchema(){return null}async getGlobalSettings(a){const e=this.globalSettingsSchema();if(!e)return{sections:[]};const o=await this._ctx?.settings?.readAddonStore()??{};return i.hydrateSchema(e,a?{...o,...a}:o)}async updateGlobalSettings(a){await this._ctx?.settings?.writeAddonStore(a),await this.resolveConfig(),await this.onConfigChanged(),this.emitLifecycle(L.AddonUpdated,{level:"global"}),this.maybeAutoRestart(a,this.globalSettingsSchema())}maybeAutoRestart(a,e){if(!e)return;const o=new Set;for(const d of e.sections)for(const u of d.fields)u.type==="separator"||u.type==="info"||u.requiresRestart&&o.add(u.key);if(o.size===0||!Object.keys(a).some(d=>o.has(d)))return;const l=this._ctx;if(!l)return;const p=l.id;setImmediate(()=>{l.api.addons?.restartAddon?.mutate({addonId:p}).then(()=>{l.logger.info("addon auto-restart triggered by restart-required setting change",{meta:{changedFields:Object.keys(a).filter(u=>o.has(u))}})}).catch(u=>{l.logger.error("addon auto-restart failed",{meta:{error:u instanceof Error?u.message:String(u)}})})})}async getDeviceSettings(a){const e=this.deviceSettingsSchema();if(!e)return{sections:[]};const o=await this._ctx?.settings?.readDeviceStore(a)??{};return i.hydrateSchema(e,o)}async updateDeviceSettings(a,e){await this._ctx?.settings?.writeDeviceStore(a,e)}_subscriptions=[];watchCapability(a,e){const o=Array.isArray(a)?a:[a],c=new Set(o);this.subscribe({category:"system.ready-state"},l=>{const p=l.data;if(typeof p.capName!="string"||!c.has(p.capName)||p.scope?.type!=="node")return;const d=p.scope.nodeId;if(typeof d!="string"||d.length===0)return;const u=p.capName;p.state==="down"?e.onDown?.(d,u):p.state==="ready"&&e.onReady?.(d,u)})}subscribe(a,e){const o=this.ctx.eventBus.subscribe(a,e);this._subscriptions.push(o)}emitLifecycle(a,e){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:a,data:e??{}})}catch{}}emitReadinessForProviders(a){const e=this._ctx;if(!e||this._registeredCapNames.length===0)return;const o=e.kernel?.localNodeId??"hub",c=o.includes("/")?o.split("/")[0]:o;for(const l of this._registeredCapNames)try{we(e.eventBus,{capName:l,scope:{type:"node",nodeId:c},state:a,generation:this._readinessGeneration,sourceNodeId:c})}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 a=await this.readAddonStoreWithRetry(),e={...this.defaults};for(const o of Object.keys(this.defaults)){const c=a[o];if(c!=null){const l=typeof this.defaults[o];typeof c===l&&(e[o]=c)}}this._config=e}async readAddonStoreWithRetry(){const a=this._ctx?.settings;if(!a)return{};const e=[150,350,600,900];let o;for(let c=0;c<=e.length;c++)try{return await a.readAddonStore()??{}}catch(l){o=l;const p=l instanceof Error?l.message:String(l);if(!(p.includes("SqliteSettingsBackend not initialized")||p.includes("provider not available")))throw l;if(c===e.length)break;await new Promise(u=>setTimeout(u,e[c]))}return this._ctx?.logger?.warn?.("readAddonStore: settings-store unavailable after retries — using defaults",{meta:{error:o instanceof Error?o.message:String(o)}}),{}}}function Ne(s){if(s!=null)return Array.isArray(s)?{providers:s}:s}class ke extends Error{capName;scope;waitedMs;constructor(a,e,o){super(`Timed out waiting for ${a} (${D(e)}) to become ready after ${o}ms`),this.name="ReadinessTimeoutError",this.capName=a,this.scope=e,this.waitedMs=o}}function W(s,a){return`${s}|${D(a)}`}function D(s){switch(s.type){case"global":return"global";case"node":return`node:${s.nodeId}`;case"device":return`device:${s.deviceId}`}}function G(s,a){return s.type!==a.type?!1:s.type==="global"||a.type==="global"?!0:s.type==="node"&&a.type==="node"?s.nodeId===a.nodeId:s.type==="device"&&a.type==="device"?s.deviceId===a.deviceId:!1}class Xe{bus;sourceNodeId;logger;now;generation;snapshot=new Map;subscriptions=new Set;unsubscribeBus;unsubscribeAgentOffline;constructor(a){if(this.bus=a.eventBus,this.sourceNodeId=a.sourceNodeId,this.logger=a.logger,this.now=a.now??(()=>Date.now()),this.generation=a.generation??et(),this.unsubscribeBus=this.bus.subscribe({category:"system.ready-state"},e=>this.ingest(e.data)),this.unsubscribeAgentOffline=this.bus.subscribe({category:"agent.offline"},e=>this.synthesizeDownForNode(e.data.agentId)),typeof this.bus.getRecent=="function")try{const e=this.bus.getRecent({category:"system.ready-state"});for(const o of e)this.ingest(o.data)}catch{}}close(){this.unsubscribeBus(),this.unsubscribeAgentOffline(),this.subscriptions.clear()}get(a,e){return this.snapshot.get(W(a,e))??null}getSnapshotForTransport(){return Array.from(this.snapshot.values())}hydrate(a){const e=this.now();for(const o of a){const c=W(o.capName,o.scope);if(this.snapshot.has(c))continue;const l={capName:o.capName,scope:o.scope,state:o.state,generation:o.generation,epoch:1,lastChange:e,sourceNodeId:o.sourceNodeId};this.snapshot.set(c,l),this.logger&&this.logger.debug(`readiness: ${o.capName} (${D(o.scope)}) → ${o.state} (hydrated, gen=${o.generation.slice(0,6)})`);const p={capName:o.capName,scope:o.scope,state:o.state,epoch:1,generation:o.generation,sourceNodeId:"hydrated",ts:e,durationInPrevState:0};for(const d of this.subscriptions)if(d.capName===o.capName&&G(d.scope,o.scope))try{d.handler(p)}catch(u){this.logger?.warn(`readiness hydrate handler threw for ${o.capName}: ${u.message??String(u)}`)}}}getAll(){return new Map(this.snapshot)}emitReady(a,e){this.emitTransition(a,e,"ready")}emitStarting(a,e){this.emitTransition(a,e,"starting")}emitDown(a,e){this.emitTransition(a,e,"down")}awaitReady(a,e,o={}){const c=o.timeoutMs??Number.POSITIVE_INFINITY,l=this.now();return this.get(a,e)?.state==="ready"?Promise.resolve():o.signal?.aborted?Promise.reject(o.signal.reason??new Error("aborted")):new Promise((d,u)=>{let m=!1;const g=this.onReadyState(a,e,k=>{k.state==="ready"&&(m||(m=!0,I(),d()))}),v=!Number.isFinite(c)?null:setTimeout(()=>{m||(m=!0,I(),u(new ke(a,e,this.now()-l)))},c),S=()=>{m||(m=!0,I(),u(o.signal?.reason??new Error("aborted")))};o.signal?.addEventListener("abort",S,{once:!0});function I(){g(),v!==null&&clearTimeout(v),o.signal?.removeEventListener("abort",S)}})}onReadyState(a,e,o){const c={capName:a,scope:e,handler:o};this.subscriptions.add(c);const l=this.get(a,e);return l!==null&&queueMicrotask(()=>{this.subscriptions.has(c)&&o({capName:a,scope:e,state:l.state,epoch:l.epoch,generation:l.generation,sourceNodeId:this.sourceNodeId,ts:l.lastChange,durationInPrevState:0})}),()=>{this.subscriptions.delete(c)}}emitTransition(a,e,o){const c=this.now();this.bus.emit(V("system.ready-state",{type:"capability",id:a,nodeId:this.sourceNodeId},{capName:a,scope:e,state:o,generation:this.generation,sourceNodeId:this.sourceNodeId,ts:c}))}ingest(a){if(typeof a?.capName!="string"||a.state!=="ready"&&a.state!=="starting"&&a.state!=="down"||typeof a.generation!="string"||a.scope?.type!=="global"&&a.scope?.type!=="node"&&a.scope?.type!=="device")return;const e=W(a.capName,a.scope),o=this.snapshot.get(e)??null,c=this.now();let l;if(o===null?l=a.state==="ready"?1:0:o.generation!==a.generation&&a.state==="ready"?l=o.epoch+1:l=o.epoch,o!==null&&o.generation===a.generation&&o.state===a.state)return;const p=o===null?0:Math.max(0,c-o.lastChange),d={capName:a.capName,scope:a.scope,state:a.state,generation:a.generation,epoch:l,lastChange:c,sourceNodeId:a.sourceNodeId};this.snapshot.set(e,d);const u={capName:a.capName,scope:a.scope,state:a.state,epoch:l,generation:a.generation,sourceNodeId:a.sourceNodeId,ts:a.ts,durationInPrevState:p};this.logger&&this.logger.debug(`readiness: ${a.capName} (${D(a.scope)}) → ${a.state} epoch=${l} gen=${a.generation.slice(0,6)} (prev ${p}ms)`);for(const m of this.subscriptions)if(m.capName===a.capName&&G(m.scope,a.scope))try{m.handler(u)}catch(g){this.logger?.warn(`readiness handler threw for ${a.capName}: ${g.message??String(g)}`)}}synthesizeDownForNode(a){const e=this.now();for(const[o,c]of this.snapshot){if(c.state==="down"||!(c.scope.type==="node"&&c.scope.nodeId===a||c.scope.type==="device"&&c.sourceNodeId===a))continue;const p=Math.max(0,e-c.lastChange),d={...c,state:"down",lastChange:e};this.snapshot.set(o,d);const u={capName:c.capName,scope:c.scope,state:"down",epoch:c.epoch,generation:c.generation,sourceNodeId:this.sourceNodeId,ts:e,durationInPrevState:p};this.logger&&this.logger.debug(`readiness: ${c.capName} (${D(c.scope)}) → down (synthesized from agent.offline ${a})`);for(const m of this.subscriptions)if(m.capName===c.capName&&G(m.scope,c.scope))try{m.handler(u)}catch(g){this.logger?.warn(`readiness handler threw during agent.offline demux for ${c.capName}: ${g.message??String(g)}`)}}}}function et(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14)}function tt(s,a){for(const{capName:e,scope:o}of a)s.emitDown(e,o)}const at=["data","media","recordings","recordings-high","recordings-low","recordings-clips","event-images","models","addons-data","cache","logs","backups"],it={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"},Pe={high:"High",mid:"Mid",low:"Low"};function nt(s){return Pe[s]??s.charAt(0).toUpperCase()+s.slice(1)}function De(s){return(s.width??0)*(s.height??0)}function Ee(s){if(s.length===0)return[];const a=s.map((o,c)=>({s:o,i:c,px:De(o.metadata??{})})).sort((o,c)=>c.px-o.px),e=Array.from({length:s.length});for(let o=0;o<a.length;o++){const{s:c,i:l}=a[o];let p;o===0?p="high":o===a.length-1?p="low":p="mid",e[l]={...c,quality:p}}return e}function st(s){const a=s.height??0,e=s.width??0;return a>=1080||e>=1920?"high":a>=480||e>=640?"mid":"low"}function rt(s){const a=s.protocols.find(c=>c.type==="rtsp"&&c.url)??s.protocols.find(c=>c.url),e=a?.type,o=e==="rtsp"?"rtsp":e==="http"||e==="flv"?"http-mjpeg":"custom";return{id:s.id,label:s.label??s.id,protocol:o,url:a?.url,profileHint:s.quality}}function f(s){return typeof s=="string"}function ot(s){return typeof s=="object"&&s!==null&&!Array.isArray(s)}function ct(s){return f(s)&&s.trim()?{url:s}:ot(s)&&f(s.url)&&s.url.trim()?{url:s.url,label:f(s.label)?s.label:void 0}:null}function dt(s){const a=f(s.snapshot_url)?s.snapshot_url:void 0;if(Array.isArray(s.streams)){const p=[];for(const d of s.streams){const u=ct(d);u&&p.push(u)}return{streams:p,snapshot_url:a}}const e=[],o=f(s.main_stream_url)?s.main_stream_url:void 0;o&&e.push({url:o,label:f(s.main_stream_name)?s.main_stream_name:void 0});const c=f(s.sub_stream_url)?s.sub_stream_url:void 0;c&&e.push({url:c,label:f(s.sub_stream_name)?s.sub_stream_name:void 0});const l=f(s.third_stream_url)?s.third_stream_url:void 0;return l&&e.push({url:l,label:f(s.third_stream_name)?s.third_stream_name:void 0}),{streams:e,snapshot_url:a}}function lt(s){if(s.length===0)return{};const a=Ee(s),e={},o=a.find(d=>d.quality==="high"),c=a.find(d=>d.quality==="mid"),l=a.find(d=>d.quality==="low");o&&(e.high=o.id),c&&(e.mid=c.id),l&&(e.low=l.id);const p=o??c??l??a[0];return p&&(e.high||(e.high=p.id),e.mid||(e.mid=p.id),e.low||(e.low=p.id)),e}const ut={streaming:!0,notifications:!0,objectDetection:!1,remoteAccess:!0,agentCluster:!1,smartHome:!0,recordings:!0,backup:!0,repl:!0},pt=["face","plate"],mt=["face","plate","clip","custom"],gt={cleanupIntervalMs:3600*1e3,detectionEventsDays:30,audioLevelsDays:7,snapshotsDays:14};var Me=(s=>(s.Addon="addon",s.Core="core",s.Device="device",s.Provider="provider",s.System="system",s))(Me||{});const Re="camstack/camstack-models",ht=`https://huggingface.co/${Re}/resolve/main`,vt={"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 Y(s){return JSON.parse(s)}function Oe(s){return s===null||typeof s!="object"||Array.isArray(s)?null:{...s}}function St(s){return Array.isArray(s)?s:[]}function yt(s,a=""){return typeof s=="string"?s:a}function ft(s,a=0){return typeof s=="number"?s:a}function bt(s,a=!1){return typeof s=="boolean"?s:a}function It(s){try{return Oe(Y(s))}catch{return null}}function Ct(s){try{const a=Y(s);return Array.isArray(a)?a:null}catch{return null}}function wt(s,a){return`https://huggingface.co/${s}/resolve/main/${a}`}function At(s,a){if(s.length!==a.length)return 0;let e=0,o=0,c=0;for(let p=0;p<s.length;p++)e+=s[p]*a[p],o+=s[p]*s[p],c+=a[p]*a[p];const l=Math.sqrt(o)*Math.sqrt(c);return l===0?0:e/l}class Nt{constructor(a,e){this.elementId=a,this.getBackend=typeof e=="function"?e:()=>e}cache={};listeners=new Set;loaded=!1;getBackend;async ensureLoaded(){if(this.loaded)return;const a=this.getBackend();if(!a)throw new Error(`ElementConfigStore(${this.elementId}): settings backend not available`);const e=await a.query({collection:"config",filter:{where:{id:this.elementId},limit:1}});e.length>0&&(this.cache=e[0].data??{}),this.loaded=!0}getAll(){return{...this.cache}}get(a){const e=a.split(".");let o=this.cache;for(const c of e){if(o===null||typeof o!="object"||Array.isArray(o))return;o=Reflect.get(o,c)}return o}async set(a,e){await this.ensureLoaded(),kt(this.cache,a,e),await this.persist(),this.notifyListeners()}async setAll(a){await this.ensureLoaded(),this.cache={...a},await this.persist(),this.notifyListeners()}onChange(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}async load(){await this.ensureLoaded()}async loadDefaults(a){await this.ensureLoaded(),Object.keys(this.cache).length===0&&(this.cache={...a},await this.persist())}async persist(){const a=this.getBackend();if(!a)throw new Error(`ElementConfigStore(${this.elementId}): settings backend not available — cannot persist config`);await a.set({collection:"config",key:this.elementId,value:this.cache})}notifyListeners(){const a=this.getAll();for(const e of this.listeners)try{e(a)}catch{}}}function kt(s,a,e){const o=a.split(".");let c=s;for(let l=0;l<o.length-1;l++){const p=o[l],d=c[p];if(d===null||typeof d!="object"||Array.isArray(d)){const u={};c[p]=u,c=u}else c=d}c[o[o.length-1]]=e}const Q={cpu:"onnx",coreml:"onnx",cuda:"onnx",tensorrt:"onnx","onnx-py":"onnx",pytorch:"pt",openvino:"openvino"},Te={onnx:"onnx",coreml:"coreml",openvino:"openvino",tflite:"tflite",pytorch:"pt"},qe={coreml:"coreml_inference.py",pytorch:"pytorch_inference.py",openvino:"openvino_inference.py"};function Le(s,a){return s==="node"?"onnx":{coreml:"coreml",openvino:"openvino",pytorch:"pytorch","onnx-py":"onnx",cpu:"onnx"}[a]??a}function Pt(s,a){return s==="node"?Q[a]??"onnx":{coreml:"coreml",openvino:"openvino",pytorch:"pt","onnx-py":"onnx",cpu:"onnx"}[a]??"onnx"}function Dt(s,a){return!s||s==="auto"?"auto":Le(s,a??"cpu")}function Et(s){return Q[s]??"onnx"}function Mt(s){return Te[s]}function Rt(s){return qe[s]}function Ot(s){return s==="coreml"||s==="pytorch"||s==="openvino"}async function Tt(s,a){const e=performance.now();try{return{output:a!==void 0?await qt(s(),a):await s(),durationMs:fe(performance.now()-e),ok:!0}}catch(o){return{output:void 0,durationMs:fe(performance.now()-e),ok:!1,error:i.errMsg(o)}}}function fe(s){return Math.round(s*100)/100}function qt(s,a){return new Promise((e,o)=>{const c=setTimeout(()=>o(new Error(`Inference timeout after ${a}ms`)),a);s.then(l=>{clearTimeout(c),e(l)}).catch(l=>{clearTimeout(c),o(l)})})}const Lt=[{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"}],Bt=[{id:"person",name:"Person"},{id:"vehicle",name:"Vehicle"},{id:"animal",name:"Animal"}],zt={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},_t={camera:{type:"camera",label:"Camera",icon:"camera"}};class E{schema;data;persistFn;constructor(a,e,o){this.schema=a,this.data=e,this.persistFn=o}static fromSchema(a,e,o={},c){const l=a.safeParse(o);if(l.success)return new E(a,l.data,e);const p=new Set;for(const g of l.error.issues){const h=g.path[0];typeof h=="string"&&p.add(h)}const d={...o};for(const g of p)delete d[g];const u=a.safeParse(d);if(c?.({droppedKeys:[...p],issues:l.error.issues}),u.success)return e(u.data).catch(()=>{}),new E(a,u.data,e);const m=a.parse({});return new E(a,m,e)}get values(){return this.data}get(a){return this.data[a]}async set(a,e){const o=this.schema.parse({...this.data,[a]:e});this.data=o,await this.persistFn(this.data)}async setAll(a){const e=this.schema.parse({...this.data,...a});this.data=e,await this.persistFn(this.data)}async deleteKey(a){const{[a]:e,...o}=this.data,c=this.schema.parse(o);this.data=c,await this.persistFn(this.data)}entries(){const a=this.schema.shape;return Object.entries(a).map(([e,o])=>({key:e,schema:o,value:this.data[e],description:o.description}))}}class ${writer;pendingWrites=new Set;slices;schemas=new Map;listeners=new Set;capListeners=new Map;constructor(a,e){this.writer=e,this.slices=new Map;for(const[o,c]of Object.entries(a))c&&typeof c=="object"&&!Array.isArray(c)&&this.slices.set(o,{...c})}static fromInitial(a,e){return new $(a,e)}installCapSchema(a,e){const o=this.schemas.get(a);if(o){if(o!==e)throw new Error(`[DeviceRuntimeState] capability "${a}" registered a different runtime-state schema; each cap must declare ONE shape across every provider`);return}this.schemas.set(a,e);const c=this.slices.get(a);if(c){const l=e.safeParse(c);l.success?this.slices.set(a,l.data):this.slices.delete(a)}}getCapState(a){const e=this.slices.get(a);if(e)return Object.freeze({...e})}getCapField(a,e){return this.slices.get(a)?.[e]}setCapState(a,e){this.applyCapWrite(a,e,!1)}patchCapState(a,e){this.applyCapWrite(a,e,!0)}applyCapWrite(a,e,o){const c=this.schemas.get(a);if(!c)throw new Error(`[DeviceRuntimeState] no schema registered for cap "${a}" — did the device register it via ctx.registerNativeCap before writing?`);const l=this.slices.get(a)??{},p=o?{...l,...e}:{...e},d=c.parse(p);if(xt(l,d))return;this.slices.set(a,d),this.fireListeners([a]);const u=this.writer(a,{...d}).catch(()=>{});this.pendingWrites.add(u),u.finally(()=>{this.pendingWrites.delete(u)})}fireListeners(a){const e=this.snapshot();for(const o of this.listeners)try{o(a,e)}catch{}for(const o of a){const c=this.capListeners.get(o);if(!c)continue;const l=this.getCapState(o);for(const p of c)try{p(l)}catch{}}}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}subscribeCap(a,e){let o=this.capListeners.get(a);o||(o=new Set,this.capListeners.set(a,o));const c=l=>{e(l)};return o.add(c),()=>{const l=this.capListeners.get(a);l&&(l.delete(c),l.size===0&&this.capListeners.delete(a))}}snapshot(){const a={};for(const[e,o]of this.slices)a[e]=Object.freeze({...o});return Object.freeze(a)}async flush(){if(this.pendingWrites.size===0)return;const a=[...this.pendingWrites];await Promise.allSettled(a)}}function xt(s,a){const e=Object.keys(s),o=Object.keys(a);if(e.length!==o.length)return!1;for(const c of e)if(s[c]!==a[c])return!1;return!0}const K="lastFetchedAt";function Ut(s){const{runtimeState:a,cap:e,ownDeviceId:o,refresh:c,staleMs:l,empty:p}=s,d=async()=>{const g=a.getCapState(e.name),h=typeof g?.[K]=="number"?g[K]:0;(!g||Date.now()-h>l)&&await c()},u=()=>{const g=a.getCapState(e.name);if(!g)return p();const{[K]:h,...v}=g;return v};return{ensureFresh:d,getStatus:async({deviceId:g})=>{if(g!==o)throw new Error(`${e.name}: deviceId mismatch, expected ${o}, got ${g}`);return await d(),u()}}}const Ft={audioMetrics:i.audioMetricsCapability,battery:i.batteryCapability,brightness:i.brightnessCapability,cameraStreams:i.cameraStreamsCapability,deviceDiscovery:i.deviceDiscoveryCapability,deviceStatus:i.deviceStatusCapability,doorbell:i.doorbellCapability,featureProbe:i.featureProbeCapability,motion:i.motionCapability,motionTrigger:i.motionTriggerCapability,ptzAutotrack:i.ptzAutotrackCapability,switch:i.switchCapability,zoneAnalytics:i.zoneAnalyticsCapability,zoneRules:i.zoneRulesCapability,zones:i.zonesCapability};class Wt{id;stableId;type;name;parentDeviceId;role;get online(){return this.runtimeState.getCapState("device-status")?.online??!1}set online(a){this.markOnline(a)}get state(){if(!this._stateProxyCache){const a={},e={get:(o,c)=>{const l=c;if(l in a)return a[l];const p=Ft[l];if(!p)return;const d=this.sliceProxy(p);return a[l]=d,d}};this._stateProxyCache=new Proxy(a,e)}return this._stateProxyCache}_stateProxyCache;config;runtimeState;ctx;location;disabled;constructor(a,e,o){if(this.ctx=a,this.id=a.id,this.stableId=a.stableId,this.type=o.type,!a.deviceMeta)throw new Error(`BaseDevice constructor: ctx.deviceMeta is required (id=${a.id} stableId=${a.stableId})`);this.name=a.deviceMeta.name,this.location=a.deviceMeta.location,this.disabled=a.deviceMeta.disabled,this.role=o.role,this.parentDeviceId=a.parentDeviceId;const c=a.persistedConfig??{};this.config=E.fromSchema(e,g=>a.persistConfig(g),c,({droppedKeys:g,issues:h})=>{a.logger.warn("Device config recovery: dropping invalid persisted fields",{tags:{deviceId:a.id,stableId:a.stableId},meta:{droppedKeys:[...g],firstIssue:h[0]?.message??null}})});let l=null;const p=async(g,h)=>{l||(l=a.fetchDevice(a.id)),await(await l).deviceState.setCapSlice({capName:g,slice:h})},d=a.initialRuntimeState??{};this.runtimeState=$.fromInitial(d,p),a.bindRuntimeState?.(this.runtimeState),a.registerNativeCap?.(i.deviceStatusCapability,{});const u={online:!1,lastChangedAt:Date.now()};this.runtimeState.setCapState("device-status",u),a.registerNativeCap?.(i.featureProbeCapability,{});const m={flags:{},deviceType:null,model:null,channelCount:null,lastProbedAt:0,lastFetchedAt:0};this.runtimeState.setCapState("feature-probe",m)}async removeDevice(){}markOnline(a){if(this.online===a)return;const e={online:a,lastChangedAt:Date.now()};this.runtimeState.setCapState("device-status",e)}async refreshFeatures(){const e=this.ctx.api?.deviceManager?.registerDevice;if(e)try{await e.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(a){return this.runtimeState.getCapState(a.name)??null}setCapSlice(a,e){this.runtimeState.setCapState(a.name,e)}sliceProxy(a){const e={},o={get:(c,l)=>this.runtimeState.getCapState(a.name)?.[l],set:(c,l,p)=>(this.runtimeState.patchCapState(a.name,{[l]:p}),!0),has:(c,l)=>{const p=this.runtimeState.getCapState(a.name);return p?l in p:!1},ownKeys:()=>{const c=this.runtimeState.getCapState(a.name);return c?Object.keys(c):[]},getOwnPropertyDescriptor:(c,l)=>{const p=this.runtimeState.getCapState(a.name);if(!(!p||!(l in p)))return{configurable:!0,enumerable:!0,value:p[l]}}};return new Proxy(e,o)}getSettingsUISchema(){return{sections:[]}}async applySettingsPatch(a){await this.config.setAll(a)}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 Be(s,a){const e={};for(const o of s.config.entries())e[o.key]=o.value;return{id:s.id,stableId:s.stableId,addonId:a,type:String(s.type),name:s.name,parentDeviceId:s.parentDeviceId,online:s.online,features:[...s.features],config:e}}class Ht extends Ae{async onInitialize(){return this.ctx.logger.info(`${this.providerName} Provider initialized`),[{capability:i.deviceProviderCapability,provider:this}]}async onShutdown(){const a=await this.ctx.kernel.devices?.getAll()??[];for(const e of a)try{await this.ctx.kernel.devices?.decommission(e.id)}catch(o){this.ctx.logger.warn(`${this.providerName}: decommission failed`,{tags:{deviceId:e.id,stableId:e.stableId},meta:{error:o instanceof Error?o.message:String(o)}})}this.ctx.logger.info(`${this.providerName} Provider shut down`,{meta:{decommissionedCount:a.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(e=>({id:e.stableId,name:e.name,type:String(e.type)}))}async supportsDiscovery(){return!1}async discoverDevices(){return[]}async adoptDiscoveredDevice(a){throw new Error(`${this.providerName} provider does not support discovery-based adoption`)}async supportsManualCreation(){return!0}async getChildCreationSchema(a){return this.onGetCreationSchema(a.type)}async createDevice(a){const e=await this.onCreateDevice(a.type,a.config),o=this.deviceClasses[e.meta.type];if(!o)throw new Error(`${this.providerName} provider: no device class registered for type "${e.meta.type}" — add it to the deviceClasses map`);const c=this.generateStableId(e.meta.type,e.config),l=await this.ctx.kernel.devices.create(c,o,e.config,null,e.meta);if(e.onAfterCreate)try{await e.onAfterCreate(l)}catch(p){this.ctx.logger.warn("createDevice: onAfterCreate hook threw — device is already registered",{tags:{deviceId:l.id,stableId:c},meta:{error:p instanceof Error?p.message:String(p)}})}return this.toSummary(l)}generateStableId(a,e){return`${this.addonId}-${Date.now()}`}async testCreationField(a){return{status:"ok",labels:["probe not implemented"]}}async restoreDevices(a){await this.onRestoreDevices(a),a.length>0&&this.ctx.logger.info(`Restored ${a.length} ${this.providerName} device(s)`)}async onRestoreDevices(a){const e=new Set;for(const c of a){if(c.parentDeviceId!==null)continue;const l=this.deviceClasses[c.type];if(!l){this.ctx.logger.warn("No device class registered for restored type — skipping",{tags:{stableId:c.stableId},meta:{type:c.type}});continue}try{await this.ctx.kernel.devices.create(c.stableId,l,{}),e.add(c.id)}catch(p){this.ctx.logger.warn("Failed to restore device",{tags:{stableId:c.stableId},meta:{type:c.type,error:p instanceof Error?p.message:String(p)}})}}const o=a.filter(c=>c.parentDeviceId!==null);for(const c of o){const l=this.deviceClasses[c.type];if(l&&c.parentDeviceId!==null&&e.has(c.parentDeviceId))try{await this.ctx.kernel.devices.create(c.stableId,l,{},c.parentDeviceId),e.add(c.id)}catch(p){this.ctx.logger.warn("Failed to restore hub-adopted child",{tags:{stableId:c.stableId,parentDeviceId:c.parentDeviceId},meta:{type:c.type,error:p instanceof Error?p.message:String(p)}})}}}toSummary(a){return Be(a,this.addonId)}}function B(s){return s.def}function $t(s,a="Configuration",e="main"){const o=s.map(c=>jt(c.key,c.schema,c.description));return{sections:[{id:e,title:a,fields:o}]}}function jt(s,a,e){const o=H(a),c=Yt(a),l=e??ze(s),p={key:s,label:l,description:e,default:c};return o instanceof b.z.ZodString?Gt(s,p):o instanceof b.z.ZodNumber?Kt(o,p):o instanceof b.z.ZodBoolean?{...p,type:"boolean"}:o instanceof b.z.ZodEnum?Vt(o,p):o instanceof b.z.ZodArray||o instanceof b.z.ZodObject?{...p,type:"textarea",rows:6,isJson:!0}:{...p,type:"text"}}function Gt(s,a){const e=s.toLowerCase();return e.includes("password")||e.includes("secret")||e.includes("token")||e.includes("apikey")||e.includes("api_key")?{...a,type:"password",showToggle:!0}:{...a,type:"text"}}function Kt(s,a){const e=s,o=e.minValue,c=e.maxValue,l=o!=null&&isFinite(o)?o:void 0,p=c!=null&&isFinite(c)?c:void 0,d=Zt(s);return{...a,type:"number",...l!==void 0?{min:l}:{},...p!==void 0?{max:p}:{},...d!==void 0?{step:d}:{}}}function Zt(s){const e=B(s).checks??[];for(const o of e)if(o._zod?.def?.check==="multiple_of"&&o._zod.def.value!==void 0)return o._zod.def.value}function Vt(s,a){const e=s.options.map(c=>String(c));return{...a,type:"select",options:e.map(c=>({label:ze(c),value:c}))}}function H(s){return s instanceof b.z.ZodDefault||s instanceof b.z.ZodOptional||s instanceof b.z.ZodNullable?H(B(s).innerType):s}function Yt(s){if(s instanceof b.z.ZodDefault)return B(s).defaultValue}function ze(s){return s.replace(/([A-Z])/g," $1").replace(/[_-]/g," ").replace(/^\w/,a=>a.toUpperCase()).trim()}const Qt="device.state-changed";function J(s){const a=new Map,e=new Map;let o=null;const c=(d,u)=>`${d}:${u}`,l=()=>{o||s.live?.onEvent&&(o=s.live.onEvent.subscribe({category:Qt},{onData:d=>{const u=d.data;if(!u||typeof u.deviceId!="number"||typeof u.capName!="string")return;const m=c(u.deviceId,u.capName);a.set(m,u.slice);const g=e.get(m);if(g)for(const h of g)try{h(u.slice)}catch{}}}))},p=()=>{o&&(e.size>0||(o.unsubscribe(),o=null))};return{read(d,u){return a.get(c(d,u))},async refresh(d,u){const m=await s.deviceState.getCapSlice.query({deviceId:d,capName:u}),g=c(d,u);a.set(g,m??void 0);const h=e.get(g);if(h)for(const v of h)try{v(m??void 0)}catch{}},watch(d,u,m){const g=c(d,u);let h=e.get(g);return h||(h=new Set,e.set(g,h)),h.add(m),l(),()=>{h.delete(m),h.size===0&&e.delete(g),p()}},async write(d,u,m){await s.deviceState.setCapSlice.mutate({deviceId:d,capName:u,slice:m})}}}function _e(s,a,e){const o=(c,l)=>`${c}:${l}`;return{read(c,l){return s.get(c)?.get(l)},async refresh(){},watch(c,l,p){const d=o(c,l);let u=a.get(d);return u||(u=new Set,a.set(d,u)),u.add(p),()=>{u.delete(p),u.size===0&&a.delete(d)}},async write(c,l,p){if(!e)throw new Error("createMirrorSource: write requires an api reference — pass it as the third argument when constructing the source");await e.deviceState.setCapSlice.mutate({deviceId:c,capName:l,slice:p})}}}function y(s,a,e){const o=Jt(s)?s:J(s);return{get value(){return o.read(a,e)},refresh(){return o.refresh(a,e)},subscribe(c){const l=o.watch(a,e,p=>{try{c(p)}catch{}});try{c(o.read(a,e))}catch{}return o.read(a,e)===void 0&&o.refresh(a,e).catch(()=>{}),l},async set(c){await o.write(a,e,c)},async patch(c){const p={...o.read(a,e)??{},...c};await o.write(a,e,p)}}}function Jt(s){return typeof s.read=="function"&&typeof s.watch=="function"}function xe(s,a,e){const o=s,c=e?.stateSource??J(s);function l(r,C){const w=typeof r=="object"&&r!==null?r:{};return C!==void 0?{...w,deviceId:a.deviceId,nodeId:C}:{...w,deviceId:a.deviceId}}function p(r,C,w,N,T){const U=o[r]?.[C];if(!U)throw new Error(`DeviceProxy: api has no '${r}.${C}'`);const q=U;return w==="mutation"?q.mutate(N):w==="subscription"?q.subscribe(N,T):q.query(N)}function d(r,C,w,N,T,U){const q=a.entries.find(je=>je.capName===r);return p(C,w,N,l(T,q?.providerNodeId),U)}function u(r,C,w,N,T){return p(r,C,w,l(N,void 0),T)}const m={getStatus:r=>d("accessories","accessories","getStatus","query",r)},g={resolveDeviceSettings:r=>d("audio-analysis","audioAnalysis","resolveDeviceSettings","query",r),getDeviceSettingsContribution:r=>d("audio-analysis","audioAnalysis","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>d("audio-analysis","audioAnalysis","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>d("audio-analysis","audioAnalysis","applyDeviceSettingsPatch","mutation",r)},h={getCurrentSnapshot:r=>d("audio-metrics","audioMetrics","getCurrentSnapshot","query",r),getHistory:r=>d("audio-metrics","audioMetrics","getHistory","query",r)},v={getStatus:r=>d("battery","battery","getStatus","query",r)},S={setBrightness:r=>d("brightness","brightness","setBrightness","mutation",r),getStatus:r=>d("brightness","brightness","getStatus","query",r)},I={getCredentials:r=>d("camera-credentials","cameraCredentials","getCredentials","query",r),getStatus:r=>d("camera-credentials","cameraCredentials","getStatus","query",r)},k={getCameraStreams:r=>d("camera-streams","cameraStreams","getCameraStreams","query",r),getBrokerStreams:r=>d("camera-streams","cameraStreams","getBrokerStreams","query",r),getRtspEntries:r=>d("camera-streams","cameraStreams","getRtspEntries","query",r)},M={getDeviceSettingsContribution:r=>d("detection-pipeline","detectionPipeline","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>d("detection-pipeline","detectionPipeline","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>d("detection-pipeline","detectionPipeline","applyDeviceSettingsPatch","mutation",r)},P={listDiscovered:r=>d("device-discovery","deviceDiscovery","listDiscovered","query",r),refreshDiscovery:r=>d("device-discovery","deviceDiscovery","refreshDiscovery","mutation",r),adoptDevice:r=>d("device-discovery","deviceDiscovery","adoptDevice","mutation",r),releaseDevice:r=>d("device-discovery","deviceDiscovery","releaseDevice","mutation",r),getStatus:r=>d("device-discovery","deviceDiscovery","getStatus","query",r)},X={getStreamSources:r=>d("device-ops","deviceOps","getStreamSources","query",r),getConfigEntries:r=>d("device-ops","deviceOps","getConfigEntries","query",r),setConfig:r=>d("device-ops","deviceOps","setConfig","mutation",r),removeDevice:r=>d("device-ops","deviceOps","removeDevice","mutation",r),getSettingsSchema:r=>d("device-ops","deviceOps","getSettingsSchema","query",r)},ee={getStatus:r=>d("device-status","deviceStatus","getStatus","query",r)},te={getStatus:r=>d("doorbell","doorbell","getStatus","query",r)},ae={getEvents:r=>d("events","events","getEvents","query",r),getEventThumbnail:r=>d("events","events","getEventThumbnail","query",r),getEventClipUrl:r=>d("events","events","getEventClipUrl","query",r)},ie={getStatus:r=>d("feature-probe","featureProbe","getStatus","query",r)},ne={startSession:r=>d("intercom","intercom","startSession","mutation",r),handleAnswer:r=>d("intercom","intercom","handleAnswer","mutation",r),stopSession:r=>d("intercom","intercom","stopSession","mutation",r),getStatus:r=>d("intercom","intercom","getStatus","query",r)},se={isDetected:r=>d("motion","motion","isDetected","query",r),getStatus:r=>d("motion","motion","getStatus","query",r)},re={analyze:r=>d("motion-detection","motionDetection","analyze","mutation",r),removeCamera:r=>d("motion-detection","motionDetection","removeCamera","mutation",r),reset:r=>d("motion-detection","motionDetection","reset","mutation",r),getDeviceSettingsContribution:r=>d("motion-detection","motionDetection","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>d("motion-detection","motionDetection","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>d("motion-detection","motionDetection","applyDeviceSettingsPatch","mutation",r)},oe={setMotionTrigger:r=>d("motion-trigger","motionTrigger","setMotionTrigger","mutation",r),getStatus:r=>d("motion-trigger","motionTrigger","getStatus","query",r)},ce={getStatus:r=>d("native-object-detection","nativeObjectDetection","getStatus","query",r)},de={setOverlay:r=>d("osd","osd","setOverlay","mutation",r),getStatus:r=>d("osd","osd","getStatus","query",r)},le={getActiveTracks:r=>d("pipeline-analytics","pipelineAnalytics","getActiveTracks","query",r),getTrack:r=>d("pipeline-analytics","pipelineAnalytics","getTrack","query",r),listTracks:r=>d("pipeline-analytics","pipelineAnalytics","listTracks","query",r),clearTracks:r=>d("pipeline-analytics","pipelineAnalytics","clearTracks","mutation",r),getMotionEvents:r=>d("pipeline-analytics","pipelineAnalytics","getMotionEvents","query",r),getObjectEvents:r=>d("pipeline-analytics","pipelineAnalytics","getObjectEvents","query",r),getAudioEvents:r=>d("pipeline-analytics","pipelineAnalytics","getAudioEvents","query",r),getEventMedia:r=>d("pipeline-analytics","pipelineAnalytics","getEventMedia","query",r),getTrackMedia:r=>d("pipeline-analytics","pipelineAnalytics","getTrackMedia","query",r),getDeviceSettingsContribution:r=>d("pipeline-analytics","pipelineAnalytics","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>d("pipeline-analytics","pipelineAnalytics","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>d("pipeline-analytics","pipelineAnalytics","applyDeviceSettingsPatch","mutation",r)},ue={move:r=>d("ptz","ptz","move","mutation",r),continuousMove:r=>d("ptz","ptz","continuousMove","mutation",r),stop:r=>d("ptz","ptz","stop","mutation",r),getPresets:r=>d("ptz","ptz","getPresets","query",r),goToPreset:r=>d("ptz","ptz","goToPreset","mutation",r),goHome:r=>d("ptz","ptz","goHome","mutation",r),getPosition:r=>d("ptz","ptz","getPosition","query",r),getStatus:r=>d("ptz","ptz","getStatus","query",r)},pe={getStatus:r=>d("ptz-autotrack","ptzAutotrack","getStatus","query",r),setEnabled:r=>d("ptz-autotrack","ptzAutotrack","setEnabled","mutation",r),getSettings:r=>d("ptz-autotrack","ptzAutotrack","getSettings","query",r),setSettings:r=>d("ptz-autotrack","ptzAutotrack","setSettings","mutation",r)},me={reboot:r=>d("reboot","reboot","reboot","mutation",r)},ge={getSegments:r=>d("recording","recording","getSegments","query",r),getPlaybackUrl:r=>d("recording","recording","getPlaybackUrl","query",r),getThumbnailAt:r=>d("recording","recording","getThumbnailAt","query",r)},he={getSnapshot:r=>d("snapshot","snapshot","getSnapshot","query",r),invalidateCache:r=>d("snapshot","snapshot","invalidateCache","mutation",r),getStatus:r=>d("snapshot","snapshot","getStatus","query",r),getDeviceSettingsContribution:r=>d("snapshot","snapshot","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>d("snapshot","snapshot","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>d("snapshot","snapshot","applyDeviceSettingsPatch","mutation",r)},ve={setState:r=>d("switch","switch","setState","mutation",r),getStatus:r=>d("switch","switch","getStatus","query",r)},Se={listStreams:r=>d("webrtc-session","webrtcSession","listStreams","query",r),createSession:r=>d("webrtc-session","webrtcSession","createSession","mutation",r),handleAnswer:r=>d("webrtc-session","webrtcSession","handleAnswer","mutation",r),closeSession:r=>d("webrtc-session","webrtcSession","closeSession","mutation",r),hasAdaptiveBitrate:r=>d("webrtc-session","webrtcSession","hasAdaptiveBitrate","query",r)},ye={getCurrentSnapshot:r=>d("zone-analytics","zoneAnalytics","getCurrentSnapshot","query",r),getZoneHistory:r=>d("zone-analytics","zoneAnalytics","getZoneHistory","query",r),getCameraHistory:r=>d("zone-analytics","zoneAnalytics","getCameraHistory","query",r),getUnzonedHistory:r=>d("zone-analytics","zoneAnalytics","getUnzonedHistory","query",r)},t={listRules:r=>d("zone-rules","zoneRules","listRules","query",r),setRules:r=>d("zone-rules","zoneRules","setRules","mutation",r)},A={listZones:r=>d("zones","zones","listZones","query",r),addZone:r=>d("zones","zones","addZone","mutation",r),removeZone:r=>d("zones","zones","removeZone","mutation",r),updateZone:r=>d("zones","zones","updateZone","mutation",r)},_={getDeviceSettings:r=>u("addonSettings","getDeviceSettings","query",r),updateDeviceSettings:r=>u("addonSettings","updateDeviceSettings","mutation",r)},R={loadConfig:r=>u("deviceManager","loadConfig","query",r),loadRuntimeState:r=>u("deviceManager","loadRuntimeState","query",r),loadMeta:r=>u("deviceManager","loadMeta","query",r),setName:r=>u("deviceManager","setName","mutation",r),setLocation:r=>u("deviceManager","setLocation","mutation",r),setMetadata:r=>u("deviceManager","setMetadata","mutation",r),setDisabled:r=>u("deviceManager","setDisabled","mutation",r),getDevice:r=>u("deviceManager","getDevice","query",r),getStreamSources:r=>u("deviceManager","getStreamSources","query",r),getConfigSchema:r=>u("deviceManager","getConfigSchema","query",r),getSettingsSchema:r=>u("deviceManager","getSettingsSchema","query",r),updateConfig:r=>u("deviceManager","updateConfig","mutation",r),enable:r=>u("deviceManager","enable","mutation",r),disable:r=>u("deviceManager","disable","mutation",r),remove:r=>u("deviceManager","remove","mutation",r),getStreamProfileMap:r=>u("deviceManager","getStreamProfileMap","query",r),setStreamProfileMap:r=>u("deviceManager","setStreamProfileMap","mutation",r),probeStreams:r=>u("deviceManager","probeStreams","mutation",r),getBindings:r=>u("deviceManager","getBindings","query",r),getAllBindings:r=>u("deviceManager","getAllBindings","query",r),setWrapperActive:r=>u("deviceManager","setWrapperActive","mutation",r),getDeviceSettingsAggregate:r=>u("deviceManager","getDeviceSettingsAggregate","query",r),getDeviceLiveInfoAggregate:r=>u("deviceManager","getDeviceLiveInfoAggregate","query",r),getDeviceAggregate:r=>u("deviceManager","getDeviceAggregate","query",r),updateDeviceField:r=>u("deviceManager","updateDeviceField","mutation",r),updateDeviceFieldsBatch:r=>u("deviceManager","updateDeviceFieldsBatch","mutation",r),testField:r=>u("deviceManager","testField","mutation",r),getDeviceStatusAggregate:r=>u("deviceManager","getDeviceStatusAggregate","query",r)},j={getSnapshot:r=>u("deviceState","getSnapshot","query",r),getCapSlice:r=>u("deviceState","getCapSlice","query",r),setCapSlice:r=>u("deviceState","setCapSlice","mutation",r)},x={getDeviceStats:r=>u("networkQuality","getDeviceStats","query",r),reportClientStats:r=>u("networkQuality","reportClientStats","mutation",r)},O={runPipeline:r=>u("pipelineExecutor","runPipeline","mutation",r),runPipelineBatch:r=>u("pipelineExecutor","runPipelineBatch","mutation",r)},Ue={assignPipeline:r=>u("pipelineOrchestrator","assignPipeline","mutation",r),unassignPipeline:r=>u("pipelineOrchestrator","unassignPipeline","mutation",r),getPipelineAssignment:r=>u("pipelineOrchestrator","getPipelineAssignment","query",r),getCameraMetrics:r=>u("pipelineOrchestrator","getCameraMetrics","query",r),assignDecoder:r=>u("pipelineOrchestrator","assignDecoder","mutation",r),unassignDecoder:r=>u("pipelineOrchestrator","unassignDecoder","mutation",r),assignAudio:r=>u("pipelineOrchestrator","assignAudio","mutation",r),unassignAudio:r=>u("pipelineOrchestrator","unassignAudio","mutation",r),getAudioAssignment:r=>u("pipelineOrchestrator","getAudioAssignment","query",r),getAudioAssignments:r=>u("pipelineOrchestrator","getAudioAssignments","query",r),getDecoderAssignment:r=>u("pipelineOrchestrator","getDecoderAssignment","query",r),getCameraSettings:r=>u("pipelineOrchestrator","getCameraSettings","query",r),setCameraStepToggle:r=>u("pipelineOrchestrator","setCameraStepToggle","mutation",r),getCameraStepOverrides:r=>u("pipelineOrchestrator","getCameraStepOverrides","query",r),setCameraStepOverride:r=>u("pipelineOrchestrator","setCameraStepOverride","mutation",r),setCameraPipelineForAgent:r=>u("pipelineOrchestrator","setCameraPipelineForAgent","mutation",r),resolvePipeline:r=>u("pipelineOrchestrator","resolvePipeline","query",r),getDeviceSettingsContribution:r=>u("pipelineOrchestrator","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>u("pipelineOrchestrator","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>u("pipelineOrchestrator","applyDeviceSettingsPatch","mutation",r)},Fe={detachCamera:r=>u("pipelineRunner","detachCamera","mutation",r),getCameraMetrics:r=>u("pipelineRunner","getCameraMetrics","query",r)},We={getPolicyStatus:r=>u("recordingEngine","getPolicyStatus","query",r)},He={supportsDevice:r=>u("snapshotProvider","supportsDevice","query",r),getSnapshot:r=>u("snapshotProvider","getSnapshot","query",r)},$e={publishCameraStream:r=>u("streamBroker","publishCameraStream","mutation",r),retractCameraStream:r=>u("streamBroker","retractCameraStream","mutation",r),assignProfile:r=>u("streamBroker","assignProfile","mutation",r),unassignProfile:r=>u("streamBroker","unassignProfile","mutation",r),restartProfile:r=>u("streamBroker","restartProfile","mutation",r),getDeviceSettingsContribution:r=>u("streamBroker","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>u("streamBroker","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>u("streamBroker","applyDeviceSettingsPatch","mutation",r)};return{deviceId:a.deviceId,binding:a,state:{audioMetrics:y(c,a.deviceId,"audio-metrics"),battery:y(c,a.deviceId,"battery"),brightness:y(c,a.deviceId,"brightness"),cameraStreams:y(c,a.deviceId,"camera-streams"),deviceDiscovery:y(c,a.deviceId,"device-discovery"),deviceStatus:y(c,a.deviceId,"device-status"),doorbell:y(c,a.deviceId,"doorbell"),featureProbe:y(c,a.deviceId,"feature-probe"),motion:y(c,a.deviceId,"motion"),motionTrigger:y(c,a.deviceId,"motion-trigger"),ptzAutotrack:y(c,a.deviceId,"ptz-autotrack"),switch:y(c,a.deviceId,"switch"),zoneAnalytics:y(c,a.deviceId,"zone-analytics"),zoneRules:y(c,a.deviceId,"zone-rules"),zones:y(c,a.deviceId,"zones")},accessories:m,audioAnalysis:g,audioMetrics:h,battery:v,brightness:S,cameraCredentials:I,cameraStreams:k,detectionPipeline:M,deviceDiscovery:P,deviceOps:X,deviceStatus:ee,doorbell:te,events:ae,featureProbe:ie,intercom:ne,motion:se,motionDetection:re,motionTrigger:oe,nativeObjectDetection:ce,osd:de,pipelineAnalytics:le,ptz:ue,ptzAutotrack:pe,reboot:me,recording:ge,snapshot:he,switch:ve,webrtcSession:Se,zoneAnalytics:ye,zoneRules:t,zones:A,addonSettings:_,deviceManager:R,deviceState:j,networkQuality:x,pipelineExecutor:O,pipelineOrchestrator:Ue,pipelineRunner:Fe,recordingEngine:We,snapshotProvider:He,streamBroker:$e}}function Xt(s,a,e,o,c){if(e.length===0||a.length===0)return{passed:s,excluded:[]};const l=e.filter(v=>v.enabled!==!1),p=l.filter(v=>v.mode==="include"),d=l.filter(v=>v.mode==="exclude"),u=p.length>0,m=new Map(a.map(v=>[v.id,v])),g=[],h=[];for(const v of s){const S=o(v),I=c?.(v),k=p.some(P=>be(P,S,I,m)),M=d.some(P=>be(P,S,I,m));u?k&&!M?g.push(v):h.push(v):M?h.push(v):g.push(v)}return{passed:g,excluded:h}}function be(s,a,e,o){if(s.classFilter&&s.classFilter.length>0&&e!==void 0&&!s.classFilter.includes(e))return!1;for(const c of s.zoneIds){const l=o.get(c);if(l&&ea(a,l.polygon))return!0}return!1}function ea(s,a){if(a.length<3)return!1;let e=!1;const{x:o,y:c}=s;for(let l=0,p=a.length-1;l<a.length;p=l++){const d=a[l],u=a[p];d.y>c!=u.y>c&&o<(u.x-d.x)*(c-d.y)/(u.y-d.y||Number.EPSILON)+d.x&&(e=!e)}return e}function ta(s){const a=s;function e(t,A,_,R,j){const x=a[t]?.[A];if(!x)throw new Error(`SystemProxy: api has no '${t}.${A}'`);const O=x;return _==="mutation"?O.mutate(R):_==="subscription"?O.subscribe(R,j):O.query(R)}return{addonPages:{listPages:t=>e("addonPages","listPages","query",t)},addons:{list:t=>e("addons","list","query",t),getLogs:t=>e("addons","getLogs","query",t),listPackages:t=>e("addons","listPackages","query",t),installPackage:t=>e("addons","installPackage","mutation",t),installFromWorkspace:t=>e("addons","installFromWorkspace","mutation",t),isWorkspaceAvailable:t=>e("addons","isWorkspaceAvailable","query",t),listWorkspacePackages:t=>e("addons","listWorkspacePackages","query",t),uninstallPackage:t=>e("addons","uninstallPackage","mutation",t),reloadPackages:t=>e("addons","reloadPackages","mutation",t),searchAvailable:t=>e("addons","searchAvailable","query",t),listUpdates:t=>e("addons","listUpdates","query",t),updatePackage:t=>e("addons","updatePackage","mutation",t),rollbackPackage:t=>e("addons","rollbackPackage","mutation",t),forceRefresh:t=>e("addons","forceRefresh","mutation",t),restartServer:t=>e("addons","restartServer","mutation",t),getVersions:t=>e("addons","getVersions","query",t),restartAddon:t=>e("addons","restartAddon","mutation",t),retryLoad:t=>e("addons","retryLoad","mutation",t),getAutoUpdateSettings:t=>e("addons","getAutoUpdateSettings","query",t),setAutoUpdateSettings:t=>e("addons","setAutoUpdateSettings","mutation",t),getAddonAutoUpdate:t=>e("addons","getAddonAutoUpdate","query",t),setAddonAutoUpdate:t=>e("addons","setAddonAutoUpdate","mutation",t),applyAutoUpdateToAll:t=>e("addons","applyAutoUpdateToAll","mutation",t),custom:t=>e("addons","custom","mutation",t),onAddonLogs:(t,A)=>e("addons","onAddonLogs","subscription",t,A)},addonSettings:{getGlobalSettings:t=>e("addonSettings","getGlobalSettings","query",t),updateGlobalSettings:t=>e("addonSettings","updateGlobalSettings","mutation",t)},addonWidgets:{listWidgets:t=>e("addonWidgets","listWidgets","query",t)},alerts:{emit:t=>e("alerts","emit","mutation",t),update:t=>e("alerts","update","mutation",t),list:t=>e("alerts","list","query",t),getUnreadCount:t=>e("alerts","getUnreadCount","query",t),markRead:t=>e("alerts","markRead","mutation",t),markAllRead:t=>e("alerts","markAllRead","mutation",t),dismiss:t=>e("alerts","dismiss","mutation",t)},audioAnalyzer:{analyseChunk:t=>e("audioAnalyzer","analyseChunk","mutation",t),classify:t=>e("audioAnalyzer","classify","query",t),isReady:t=>e("audioAnalyzer","isReady","query",t),dispose:t=>e("audioAnalyzer","dispose","mutation",t),reprobeAudioEngine:t=>e("audioAnalyzer","reprobeAudioEngine","mutation",t)},audioCodec:{listSupportedCodecs:t=>e("audioCodec","listSupportedCodecs","query",t),canHandle:t=>e("audioCodec","canHandle","query",t),createDecodeSession:t=>e("audioCodec","createDecodeSession","mutation",t),createEncodeSession:t=>e("audioCodec","createEncodeSession","mutation",t),closeSession:t=>e("audioCodec","closeSession","mutation",t),pushEncodedFrame:t=>e("audioCodec","pushEncodedFrame","mutation",t),pullPcm:t=>e("audioCodec","pullPcm","query",t),pushPcm:t=>e("audioCodec","pushPcm","mutation",t),pullEncoded:t=>e("audioCodec","pullEncoded","query",t),flushEncode:t=>e("audioCodec","flushEncode","mutation",t),listActiveSessions:t=>e("audioCodec","listActiveSessions","query",t)},authentication:{listProviders:t=>e("authentication","listProviders","query",t),setProviderEnabled:t=>e("authentication","setProviderEnabled","mutation",t)},backup:{listDestinations:t=>e("backup","listDestinations","query",t),trigger:t=>e("backup","trigger","mutation",t),list:t=>e("backup","list","query",t),listLocations:t=>e("backup","listLocations","query",t),getEntries:t=>e("backup","getEntries","query",t),restore:t=>e("backup","restore","mutation",t),delete:t=>e("backup","delete","mutation",t),listArchives:t=>e("backup","listArchives","query",t),upsertDestinationPolicy:t=>e("backup","upsertDestinationPolicy","mutation",t),previewSchedule:t=>e("backup","previewSchedule","query",t)},decoder:{supportsCodec:t=>e("decoder","supportsCodec","query",t),getInfo:t=>e("decoder","getInfo","query",t),createSession:t=>e("decoder","createSession","query",t),destroySession:t=>e("decoder","destroySession","query",t),pushPacket:t=>e("decoder","pushPacket","query",t),openStream:t=>e("decoder","openStream","query",t),pullFrames:t=>e("decoder","pullFrames","query",t),updateConfig:t=>e("decoder","updateConfig","query",t),getStats:t=>e("decoder","getStats","query",t),listActiveSessions:t=>e("decoder","listActiveSessions","query",t),reprobeHwaccel:t=>e("decoder","reprobeHwaccel","mutation",t)},deviceManager:{allocateDeviceId:t=>e("deviceManager","allocateDeviceId","mutation",t),registerDevice:t=>e("deviceManager","registerDevice","mutation",t),removeDevice:t=>e("deviceManager","removeDevice","mutation",t),persistConfig:t=>e("deviceManager","persistConfig","mutation",t),listLocations:t=>e("deviceManager","listLocations","query",t),addLocation:t=>e("deviceManager","addLocation","mutation",t),removeLocation:t=>e("deviceManager","removeLocation","mutation",t),listPersistedByAddon:t=>e("deviceManager","listPersistedByAddon","query",t),listAll:t=>e("deviceManager","listAll","query",t),getChildren:t=>e("deviceManager","getChildren","query",t),listWrappersForCap:t=>e("deviceManager","listWrappersForCap","query",t),listBindableCapsForDeviceType:t=>e("deviceManager","listBindableCapsForDeviceType","query",t),discoverDevices:t=>e("deviceManager","discoverDevices","mutation",t),adoptDevice:t=>e("deviceManager","adoptDevice","mutation",t),getCreationSchema:t=>e("deviceManager","getCreationSchema","query",t),createDevice:t=>e("deviceManager","createDevice","mutation",t),testCreationField:t=>e("deviceManager","testCreationField","mutation",t)},deviceProvider:{start:t=>e("deviceProvider","start","mutation",t),stop:t=>e("deviceProvider","stop","mutation",t),getStatus:t=>e("deviceProvider","getStatus","query",t),getDevices:t=>e("deviceProvider","getDevices","query",t),supportsDiscovery:t=>e("deviceProvider","supportsDiscovery","query",t),discoverDevices:t=>e("deviceProvider","discoverDevices","mutation",t),adoptDiscoveredDevice:t=>e("deviceProvider","adoptDiscoveredDevice","mutation",t),supportsManualCreation:t=>e("deviceProvider","supportsManualCreation","query",t),getChildCreationSchema:t=>e("deviceProvider","getChildCreationSchema","query",t),createDevice:t=>e("deviceProvider","createDevice","mutation",t),testCreationField:t=>e("deviceProvider","testCreationField","mutation",t)},deviceState:{getAllSnapshots:t=>e("deviceState","getAllSnapshots","query",t)},integrations:{list:t=>e("integrations","list","query",t),get:t=>e("integrations","get","query",t),getByAddonId:t=>e("integrations","getByAddonId","query",t),create:t=>e("integrations","create","mutation",t),update:t=>e("integrations","update","mutation",t),delete:t=>e("integrations","delete","mutation",t),getSettings:t=>e("integrations","getSettings","query",t),setSettings:t=>e("integrations","setSettings","mutation",t),getAvailableTypes:t=>e("integrations","getAvailableTypes","query",t),testConnection:t=>e("integrations","testConnection","mutation",t)},localNetwork:{list:t=>e("localNetwork","list","query",t),getPreferred:t=>e("localNetwork","getPreferred","query",t),getConnectionEndpoints:t=>e("localNetwork","getConnectionEndpoints","query",t),getAllowedAddresses:t=>e("localNetwork","getAllowedAddresses","query",t),setAllowedAddresses:t=>e("localNetwork","setAllowedAddresses","mutation",t),resetAllowlistToBestMatch:t=>e("localNetwork","resetAllowlistToBestMatch","mutation",t)},meshNetwork:{getStatus:t=>e("meshNetwork","getStatus","query",t),join:t=>e("meshNetwork","join","mutation",t),leave:t=>e("meshNetwork","leave","mutation",t),listPeers:t=>e("meshNetwork","listPeers","query",t),setPublicIngress:t=>e("meshNetwork","setPublicIngress","mutation",t),setMeshIngress:t=>e("meshNetwork","setMeshIngress","mutation",t)},meshOrchestrator:{listProviders:t=>e("meshOrchestrator","listProviders","query",t),joinProvider:t=>e("meshOrchestrator","joinProvider","mutation",t),leaveProvider:t=>e("meshOrchestrator","leaveProvider","mutation",t)},metricsProvider:{collectSnapshot:t=>e("metricsProvider","collectSnapshot","query",t),getCached:t=>e("metricsProvider","getCached","query",t),getCurrent:t=>e("metricsProvider","getCurrent","query",t),getDiskSpace:t=>e("metricsProvider","getDiskSpace","query",t),getGpuInfo:t=>e("metricsProvider","getGpuInfo","query",t),getCpuTemperature:t=>e("metricsProvider","getCpuTemperature","query",t),getProcessStats:t=>e("metricsProvider","getProcessStats","query",t),listAddonInstances:t=>e("metricsProvider","listAddonInstances","query",t),getAddonStats:t=>e("metricsProvider","getAddonStats","query",t),listNodeProcesses:t=>e("metricsProvider","listNodeProcesses","query",t),killProcess:t=>e("metricsProvider","killProcess","mutation",t)},networkQuality:{getAllStats:t=>e("networkQuality","getAllStats","query",t)},nodes:{topology:t=>e("nodes","topology","query",t),deployAddon:t=>e("nodes","deployAddon","mutation",t),undeployAddon:t=>e("nodes","undeployAddon","mutation",t),restartAddon:t=>e("nodes","restartAddon","mutation",t),restartProcess:t=>e("nodes","restartProcess","mutation",t),restartNode:t=>e("nodes","restartNode","mutation",t),shutdownNode:t=>e("nodes","shutdownNode","mutation",t),renameNode:t=>e("nodes","renameNode","mutation",t),clusterAddonStatus:t=>e("nodes","clusterAddonStatus","query",t),setProcessLogLevel:t=>e("nodes","setProcessLogLevel","mutation",t),executeQuery:t=>e("nodes","executeQuery","mutation",t)},notificationOutput:{send:t=>e("notificationOutput","send","mutation",t),sendTest:t=>e("notificationOutput","sendTest","mutation",t)},pipelineExecutor:{getAvailableEngines:t=>e("pipelineExecutor","getAvailableEngines","query",t),getSelectedEngine:t=>e("pipelineExecutor","getSelectedEngine","query",t),getDefaultSteps:t=>e("pipelineExecutor","getDefaultSteps","query",t),reprobeEngine:t=>e("pipelineExecutor","reprobeEngine","mutation",t),getVideoPipelineSteps:t=>e("pipelineExecutor","getVideoPipelineSteps","query",t),setVideoPipelineSteps:t=>e("pipelineExecutor","setVideoPipelineSteps","mutation",t),getSchema:t=>e("pipelineExecutor","getSchema","query",t),getGlobalSteps:t=>e("pipelineExecutor","getGlobalSteps","query",t),getGlobalPipelineConfig:t=>e("pipelineExecutor","getGlobalPipelineConfig","query",t),getOrchestratorConfigSchema:t=>e("pipelineExecutor","getOrchestratorConfigSchema","query",t),listTemplates:t=>e("pipelineExecutor","listTemplates","query",t),saveTemplate:t=>e("pipelineExecutor","saveTemplate","mutation",t),updateTemplate:t=>e("pipelineExecutor","updateTemplate","mutation",t),deleteTemplate:t=>e("pipelineExecutor","deleteTemplate","mutation",t),getCapabilities:t=>e("pipelineExecutor","getCapabilities","query",t),getAddonModels:t=>e("pipelineExecutor","getAddonModels","query",t),downloadModel:t=>e("pipelineExecutor","downloadModel","mutation",t),deleteModel:t=>e("pipelineExecutor","deleteModel","mutation",t),detect:t=>e("pipelineExecutor","detect","query",t),cacheFrameInPool:t=>e("pipelineExecutor","cacheFrameInPool","mutation",t),inferCached:t=>e("pipelineExecutor","inferCached","mutation",t),uncacheFrame:t=>e("pipelineExecutor","uncacheFrame","mutation",t),getEffectiveTuning:t=>e("pipelineExecutor","getEffectiveTuning","query",t),listLoadedEngines:t=>e("pipelineExecutor","listLoadedEngines","query",t),spinEngine:t=>e("pipelineExecutor","spinEngine","mutation",t),killEngine:t=>e("pipelineExecutor","killEngine","mutation",t),listReferenceImages:t=>e("pipelineExecutor","listReferenceImages","query",t),getReferenceImage:t=>e("pipelineExecutor","getReferenceImage","query",t),getReferenceAudioFiles:t=>e("pipelineExecutor","getReferenceAudioFiles","query",t),getReferenceAudio:t=>e("pipelineExecutor","getReferenceAudio","query",t),getAudioCapabilities:t=>e("pipelineExecutor","getAudioCapabilities","query",t),runAudioTest:t=>e("pipelineExecutor","runAudioTest","mutation",t),getDetectionConfigSchema:t=>e("pipelineExecutor","getDetectionConfigSchema","query",t)},pipelineOrchestrator:{rebalance:t=>e("pipelineOrchestrator","rebalance","mutation",t),getPipelineAssignments:t=>e("pipelineOrchestrator","getPipelineAssignments","query",t),getAgentLoad:t=>e("pipelineOrchestrator","getAgentLoad","query",t),getGlobalMetrics:t=>e("pipelineOrchestrator","getGlobalMetrics","query",t),getCapabilityBindings:t=>e("pipelineOrchestrator","getCapabilityBindings","query",t),setCapabilityBinding:t=>e("pipelineOrchestrator","setCapabilityBinding","mutation",t),getDecoderAssignments:t=>e("pipelineOrchestrator","getDecoderAssignments","query",t),getAudioNodeLoad:t=>e("pipelineOrchestrator","getAudioNodeLoad","query",t),getAgentSettings:t=>e("pipelineOrchestrator","getAgentSettings","query",t),listAgentSettings:t=>e("pipelineOrchestrator","listAgentSettings","query",t),setAgentAddonDefaults:t=>e("pipelineOrchestrator","setAgentAddonDefaults","mutation",t),removeAgentSettings:t=>e("pipelineOrchestrator","removeAgentSettings","mutation",t),listTemplates:t=>e("pipelineOrchestrator","listTemplates","query",t),saveTemplate:t=>e("pipelineOrchestrator","saveTemplate","mutation",t),updateTemplate:t=>e("pipelineOrchestrator","updateTemplate","mutation",t),deleteTemplate:t=>e("pipelineOrchestrator","deleteTemplate","mutation",t)},pipelineRunner:{attachCamera:t=>e("pipelineRunner","attachCamera","mutation",t),reportMotion:t=>e("pipelineRunner","reportMotion","mutation",t),getLocalLoad:t=>e("pipelineRunner","getLocalLoad","query",t),getLocalMetrics:t=>e("pipelineRunner","getLocalMetrics","query",t),getAllCameraMetrics:t=>e("pipelineRunner","getAllCameraMetrics","query",t),getLocalCameras:t=>e("pipelineRunner","getLocalCameras","query",t)},platformProbe:{getCapabilities:t=>e("platformProbe","getCapabilities","query",t),getHardware:t=>e("platformProbe","getHardware","query",t),resolveInferenceConfig:t=>e("platformProbe","resolveInferenceConfig","query",t),resolveHwAccel:t=>e("platformProbe","resolveHwAccel","query",t)},recordingEngine:{getStatus:t=>e("recordingEngine","getStatus","query",t),enable:t=>e("recordingEngine","enable","mutation",t),disable:t=>e("recordingEngine","disable","mutation",t),getConfig:t=>e("recordingEngine","getConfig","query",t),updateConfig:t=>e("recordingEngine","updateConfig","mutation",t),getPlaylist:t=>e("recordingEngine","getPlaylist","query",t),getThumbnail:t=>e("recordingEngine","getThumbnail","query",t),getSegments:t=>e("recordingEngine","getSegments","query",t),getAvailability:t=>e("recordingEngine","getAvailability","query",t),estimateStorage:t=>e("recordingEngine","estimateStorage","query",t),estimateGlobalStorage:t=>e("recordingEngine","estimateGlobalStorage","query",t),getStorageUsage:t=>e("recordingEngine","getStorageUsage","query",t),setPolicy:t=>e("recordingEngine","setPolicy","mutation",t),getPolicy:t=>e("recordingEngine","getPolicy","query",t),getRetentionConfig:t=>e("recordingEngine","getRetentionConfig","query",t),updateRetentionConfig:t=>e("recordingEngine","updateRetentionConfig","mutation",t),getMotionStats:t=>e("recordingEngine","getMotionStats","query",t)},remoteAccess:{listProviders:t=>e("remoteAccess","listProviders","query",t),startProvider:t=>e("remoteAccess","startProvider","mutation",t),stopProvider:t=>e("remoteAccess","stopProvider","mutation",t)},settingsStore:{get:t=>e("settingsStore","get","query",t),set:t=>e("settingsStore","set","mutation",t),query:t=>e("settingsStore","query","query",t),insert:t=>e("settingsStore","insert","mutation",t),update:t=>e("settingsStore","update","mutation",t),delete:t=>e("settingsStore","delete","mutation",t),count:t=>e("settingsStore","count","query",t),isEmpty:t=>e("settingsStore","isEmpty","query",t),declareCollection:t=>e("settingsStore","declareCollection","mutation",t)},storage:{resolve:t=>e("storage","resolve","query",t),write:t=>e("storage","write","mutation",t),read:t=>e("storage","read","query",t),exists:t=>e("storage","exists","query",t),list:t=>e("storage","list","query",t),delete:t=>e("storage","delete","mutation",t),getAvailableSpace:t=>e("storage","getAvailableSpace","query",t),beginUpload:t=>e("storage","beginUpload","mutation",t),writeChunk:t=>e("storage","writeChunk","mutation",t),finalizeUpload:t=>e("storage","finalizeUpload","mutation",t),abortUpload:t=>e("storage","abortUpload","mutation",t),beginDownload:t=>e("storage","beginDownload","mutation",t),readChunk:t=>e("storage","readChunk","query",t),endDownload:t=>e("storage","endDownload","mutation",t),listLocations:t=>e("storage","listLocations","query",t),getDefaultLocation:t=>e("storage","getDefaultLocation","query",t),upsertLocation:t=>e("storage","upsertLocation","mutation",t),deleteLocation:t=>e("storage","deleteLocation","mutation",t),testLocation:t=>e("storage","testLocation","query",t),listProviders:t=>e("storage","listProviders","query",t),testConfig:t=>e("storage","testConfig","query",t)},streamBroker:{listAllCameraStreams:t=>e("streamBroker","listAllCameraStreams","query",t),listAllProfileSlots:t=>e("streamBroker","listAllProfileSlots","query",t),getBrokerStats:t=>e("streamBroker","getBrokerStats","query",t),listClients:t=>e("streamBroker","listClients","query",t),killClient:t=>e("streamBroker","killClient","mutation",t),getStreamUrl:t=>e("streamBroker","getStreamUrl","query",t),getBroker:t=>e("streamBroker","getBroker","query",t),setPreBufferDuration:t=>e("streamBroker","setPreBufferDuration","mutation",t),getPreBufferInfo:t=>e("streamBroker","getPreBufferInfo","query",t),getRtspPort:t=>e("streamBroker","getRtspPort","query",t),getAllRtspEntries:t=>e("streamBroker","getAllRtspEntries","query",t),getRtspEntry:t=>e("streamBroker","getRtspEntry","query",t),regenerateRtspToken:t=>e("streamBroker","regenerateRtspToken","mutation",t),setRtspEnabled:t=>e("streamBroker","setRtspEnabled","mutation",t),isRtspEnabled:t=>e("streamBroker","isRtspEnabled","query",t)},system:{info:t=>e("system","info","query",t),health:t=>e("system","health","query",t),featureFlags:t=>e("system","featureFlags","query",t),networkAddresses:t=>e("system","networkAddresses","query",t),getRetentionConfig:t=>e("system","getRetentionConfig","query",t),setRetentionConfig:t=>e("system","setRetentionConfig","mutation",t),forceRetentionCleanup:t=>e("system","forceRetentionCleanup","mutation",t)},toast:{onToast:(t,A)=>e("toast","onToast","subscription",t,A)},turnOrchestrator:{listProviders:t=>e("turnOrchestrator","listProviders","query",t),getAllServers:t=>e("turnOrchestrator","getAllServers","query",t),setProviderEnabled:t=>e("turnOrchestrator","setProviderEnabled","mutation",t)},turnProvider:{getTurnServers:t=>e("turnProvider","getTurnServers","query",t)},userManagement:{listUsers:t=>e("userManagement","listUsers","query",t),createUser:t=>e("userManagement","createUser","mutation",t),updateUser:t=>e("userManagement","updateUser","mutation",t),deleteUser:t=>e("userManagement","deleteUser","mutation",t),resetPassword:t=>e("userManagement","resetPassword","mutation",t),setUserScopes:t=>e("userManagement","setUserScopes","mutation",t),validateCredentials:t=>e("userManagement","validateCredentials","mutation",t),listApiKeys:t=>e("userManagement","listApiKeys","query",t),createApiKey:t=>e("userManagement","createApiKey","mutation",t),revokeApiKey:t=>e("userManagement","revokeApiKey","mutation",t),validateApiKey:t=>e("userManagement","validateApiKey","mutation",t),createScopedToken:t=>e("userManagement","createScopedToken","mutation",t),revokeScopedToken:t=>e("userManagement","revokeScopedToken","mutation",t),validateScopedToken:t=>e("userManagement","validateScopedToken","query",t),listScopedTokens:t=>e("userManagement","listScopedTokens","query",t)}}}const aa="device.state-changed",ia="capability.binding-changed",na="device.registered",sa="device.unregistered",ra="device.updated";class oa{constructor(a){this.api=a,this.stateSource=_e(this.stateMirror,this.handleListeners,this.api)}stateMirror=new Map;bindings=new Map;devices=new Map;handleListeners=new Map;globalStateListeners=new Set;capListeners=new Map;deviceListeners=new Map;addedListeners=new Set;removedListeners=new Set;pendingWaits=new Set;stateSource;bridges=[];initialized=!1;initPromise=null;async init(a=15e3){if(!this.initialized){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{const e=(p,d)=>Number.isFinite(a)?new Promise((u,m)=>{const g=setTimeout(()=>m(new Error(`SystemMirror.init: '${d}' timed out after ${a}ms`)),a);p.then(h=>{clearTimeout(g),u(h)},h=>{clearTimeout(g),m(h)})}):p,[o,c,l]=await Promise.all([e(this.api.deviceManager.getAllBindings.query({}),"deviceManager.getAllBindings"),e(this.api.deviceState.getAllSnapshots.query({}),"deviceState.getAllSnapshots"),e(this.api.deviceManager.listAll.query({}),"deviceManager.listAll")]);for(const p of o)this.bindings.set(p.deviceId,p);for(const[p,d]of Object.entries(c)){const u=Number(p);if(!Number.isFinite(u))continue;const m=new Map;for(const[g,h]of Object.entries(d))m.set(g,h);this.stateMirror.set(u,m)}for(const p of l)this.devices.set(p.id,p);try{this.subscribeBus()}catch{}this.initialized=!0})();try{await this.initPromise}finally{this.initPromise=null}}}isReady(){return this.initialized}async awaitReady(){if(!this.initialized)return this.initPromise?this.initPromise:this.init()}dispose(){for(const a of this.bridges)try{a.unsubscribe()}catch{}this.bridges=[],this.handleListeners.clear(),this.globalStateListeners.clear(),this.capListeners.clear(),this.deviceListeners.clear(),this.addedListeners.clear(),this.removedListeners.clear(),this.pendingWaits.clear(),this.initialized=!1}getDeviceById(a){const e=this.bindings.get(a);return e?xe(this.api,e,{stateSource:this.stateSource}):null}getDeviceByName(a){for(const e of this.devices.values())if(e.name===a)return this.getDeviceById(e.id);return null}getDeviceByStableId(a){for(const e of this.devices.values())if(e.stableId===a)return this.getDeviceById(e.id);return null}getDevicesByAddon(a){return this.query({addonId:a})}getDevicesByType(a){return this.query({type:a})}getDeviceInfo(a){return this.devices.get(a)??null}getAllDevices(){const a=[];for(const e of this.bindings.keys()){const o=this.getDeviceById(e);o&&a.push(o)}return a}filterByCap(a){return this.query({caps:a})}query(a={}){const e=[];for(const[o,c]of this.bindings){const l=this.devices.get(o);if(a.id!==void 0&&!F(o,a.id)||a.stableId!==void 0&&(!l||!F(l.stableId,a.stableId))||a.addonId!==void 0&&(!l||!F(l.addonId,a.addonId))||a.type!==void 0&&(!l||!F(l.type,a.type)))continue;if(a.caps!==void 0){const d=Z(a.caps),u=new Set(c.entries.map(m=>m.capName));if(!d.every(m=>u.has(m)))continue}if(a.anyCap!==void 0){const d=Z(a.anyCap),u=new Set(c.entries.map(m=>m.capName));if(!d.some(m=>u.has(m)))continue}if(a.name!==void 0&&(!l||!ca(l.name,a.name))||a.online!==void 0&&(!l||l.online!==a.online))continue;if(a.parentDeviceId!==void 0){if(!l)continue;const d=a.parentDeviceId;if((l.parentDeviceId??null)!==d)continue}if(a.feature!==void 0&&(!l||!Z(a.feature).every(u=>l.features.includes(u)))||a.isCamera!==void 0&&(!l||l.isCamera!==a.isCamera))continue;const p=this.getDeviceById(o);if(p){if(a.where&&l){if(!a.where(l,p))continue}else if(a.where&&!l)continue;e.push(p)}}return e}whereState(a,e){const o=[];for(const[c,l]of this.stateMirror){const p=l.get(a);if(!p||!e(p,c))continue;const d=this.getDeviceById(c);d&&o.push(d)}return o}mapState(a,e){const o=[];for(const[c,l]of this.stateMirror){const p=l.get(a);p&&o.push(e(p,c))}return o}findState(a,e){for(const[o,c]of this.stateMirror){const l=c.get(a);if(l&&e(l,o))return this.getDeviceById(o)}return null}countByCap(a){let e=0;for(const o of this.bindings.values())o.entries.some(c=>c.capName===a)&&e++;return e}countByState(a,e){let o=0;for(const[c,l]of this.stateMirror){const p=l.get(a);p&&e(p,c)&&o++}return o}listen(a){return this.globalStateListeners.add(a),()=>{this.globalStateListeners.delete(a)}}listenCap(a,e){let o=this.capListeners.get(a);return o||(o=new Set,this.capListeners.set(a,o)),o.add(e),()=>{o.delete(e),o.size===0&&this.capListeners.delete(a)}}listenDevice(a,e){let o=this.deviceListeners.get(a);return o||(o=new Set,this.deviceListeners.set(a,o)),o.add(e),()=>{o.delete(e),o.size===0&&this.deviceListeners.delete(a)}}onDeviceAdded(a){return this.addedListeners.add(a),()=>{this.addedListeners.delete(a)}}onDeviceRemoved(a){return this.removedListeners.add(a),()=>{this.removedListeners.delete(a)}}waitForState(a,e,o,c=3e4){return new Promise((l,p)=>{const u=(()=>{const h=this.stateMirror.get(a)?.get(e);return h&&o(h)?h:null})();if(u){l(u);return}let m=null;const g=this.listenDevice(a,(h,v,S)=>{v===e&&S&&o(S)&&(m&&clearTimeout(m),g(),l(S))});Number.isFinite(c)&&(m=setTimeout(()=>{g(),p(new Error(`waitForState timed out after ${c}ms (deviceId=${a}, capName=${e})`))},c))})}waitForDevice(a,e=3e4){return new Promise((o,c)=>{const l=this.getDeviceById(a);if(l){o(l);return}let p=null;const d=this.onDeviceAdded(u=>{if(u!==a)return;const m=this.getDeviceById(u);m&&(p&&clearTimeout(p),d(),o(m))});Number.isFinite(e)&&(p=setTimeout(()=>{d(),c(new Error(`waitForDevice timed out after ${e}ms (deviceId=${a})`))},e))})}async forEachCap(a,e){for(const o of this.filterByCap(a))await e(o)}async invokeCap(a,e,o,c={}){const l=this.filterByCap(a),p=Math.max(1,c.parallelism??l.length),d=[];for(let u=0;u<l.length;u+=p){const m=l.slice(u,u+p),g=await Promise.allSettled(m.map(async h=>{const v=h[a];if(!v||typeof v[e]!="function")throw new Error(`device '${h.deviceId}' does not expose '${a}.${e}'`);return await v[e](o)}));for(let h=0;h<g.length;h++){const v=m[h],S=g[h];S.status==="fulfilled"?d.push({deviceId:v.deviceId,ok:!0,result:S.value}):d.push({deviceId:v.deviceId,ok:!1,error:S.reason})}}return d}summary(){const a={},e={},o={};let c=0,l=0;for(const p of this.bindings.values())for(const d of p.entries)a[d.capName]=(a[d.capName]??0)+1;for(const p of this.devices.values())e[p.addonId]=(e[p.addonId]??0)+1,o[p.type]=(o[p.type]??0)+1,p.online?c++:l++;return{totalDevices:this.bindings.size,online:c,offline:l,byCap:a,byAddon:e,byType:o,statedDevices:this.stateMirror.size}}dump(a){const e=c=>{const l=this.devices.get(c)??null,p=this.bindings.get(c)??null,d={},u=this.stateMirror.get(c);if(u)for(const[m,g]of u)d[m]={...g};return{deviceId:c,info:l,binding:p?{...p,entries:p.entries.map(m=>({...m}))}:null,state:d}};if(a!==void 0)return e(a);const o=[];for(const c of this.bindings.keys())o.push(e(c));return o}getRawMirror(){return this.stateMirror}getSystemState(){const a=new Map;for(const[e,o]of this.stateMirror){const c=new Map;for(const[l,p]of o)c.set(l,{...p});a.set(e,c)}return a}subscribeBus(){if(!this.api.live?.onEvent)return;const a=this.api.live.onEvent;this.bridges.push(a.subscribe({category:aa},{onData:e=>{const o=e.data;!o||typeof o.deviceId!="number"||typeof o.capName!="string"||this.applyStateUpdate(o.deviceId,o.capName,o.slice)}})),this.bridges.push(a.subscribe({category:ia},{onData:e=>{const o=e.data,c=typeof o?.deviceId=="number"?o.deviceId:o?.source?.type==="device"&&typeof o.source.id=="number"?o.source.id:null;c!==null&&this.refreshBinding(c)}})),this.bridges.push(a.subscribe({category:na},{onData:e=>{const o=e.data;typeof o?.deviceId=="number"&&this.refreshDeviceMetadata(o.deviceId,"added")}})),this.bridges.push(a.subscribe({category:sa},{onData:e=>{const o=e.data;typeof o?.deviceId=="number"&&this.applyDeviceRemoval(o.deviceId)}})),this.bridges.push(a.subscribe({category:ra},{onData:e=>{const o=e.data;typeof o?.deviceId=="number"&&this.refreshDeviceMetadata(o.deviceId,"updated")}}))}applyStateUpdate(a,e,o){let c=this.stateMirror.get(a);c||(c=new Map,this.stateMirror.set(a,c)),o===void 0?c.delete(e):c.set(e,o);const l=`${a}:${e}`,p=this.handleListeners.get(l);if(p)for(const m of p)try{m(o)}catch{}for(const m of this.globalStateListeners)try{m(a,e,o)}catch{}const d=this.capListeners.get(e);if(d)for(const m of d)try{m(a,o)}catch{}const u=this.deviceListeners.get(a);if(u)for(const m of u)try{m(a,e,o)}catch{}}applyDeviceRemoval(a){const e=this.devices.get(a)??null;this.bindings.delete(a),this.devices.delete(a),this.stateMirror.delete(a);for(const o of this.removedListeners)try{o(a,e)}catch{}}async refreshBinding(a){try{const o=(await this.api.deviceManager.getAllBindings.query({})).find(c=>c.deviceId===a);o?this.bindings.set(a,o):this.applyDeviceRemoval(a)}catch{}}async refreshDeviceMetadata(a,e){try{const c=(await this.api.deviceManager.listAll.query({})).find(p=>p.id===a);if(!c)return;const l=!this.devices.has(a);if(this.devices.set(a,c),e==="added"&&l){await this.refreshBinding(a);for(const p of this.addedListeners)try{p(a,c)}catch{}}}catch{}}}function F(s,a){return Array.isArray(a)?a.includes(s):s===a}function Z(s){return Array.isArray(s)?s:[s]}function ca(s,a){return typeof a=="string"?s===a:a instanceof RegExp?a.test(s):"exact"in a?s===a.exact:"contains"in a?s.toLowerCase().includes(a.contains.toLowerCase()):!1}function da(s){return s}function la(s,a,e){return{input:s,output:a,kind:e?.kind??"query",auth:e?.auth??"protected",scope:e?.scope??{kind:"system"}}}const ua={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"},pa=[{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"}],ma=[i.accessoriesCapability,i.addonPagesCapability,i.addonPagesSourceCapability,i.addonRoutesCapability,i.addonSettingsCapability,i.addonWidgetsCapability,i.addonWidgetsSourceCapability,i.addonsCapability,i.adminUiCapability,i.advancedNotifierCapability,i.alertsCapability,i.audioAnalysisCapability,i.audioAnalyzerCapability,i.audioCodecCapability,i.audioMetricsCapability,i.authProviderCapability,i.authenticationCapability,i.backupCapability,i.batteryCapability,i.brightnessCapability,i.cameraCredentialsCapability,i.cameraStreamsCapability,i.decoderCapability,i.detectionPipelineCapability,i.deviceDiscoveryCapability,i.deviceManagerCapability,i.deviceOpsCapability,i.deviceProviderCapability,i.deviceStateCapability,i.deviceStatusCapability,i.doorbellCapability,i.embeddingEncoderCapability,i.eventsCapability,i.featureProbeCapability,i.integrationsCapability,i.intercomCapability,i.localNetworkCapability,i.logDestinationCapability,i.meshNetworkCapability,i.meshOrchestratorCapability,i.metricsProviderCapability,i.motionCapability,i.motionDetectionCapability,i.motionTriggerCapability,i.nativeObjectDetectionCapability,i.networkAccessCapability,i.networkQualityCapability,i.nodesCapability,i.notificationOutputCapability,i.osdCapability,i.pipelineAnalyticsCapability,i.pipelineExecutorCapability,i.pipelineOrchestratorCapability,i.pipelineRunnerCapability,i.platformProbeCapability,i.ptzCapability,i.ptzAutotrackCapability,i.rebootCapability,i.recordingCapability,i.recordingEngineCapability,i.remoteAccessCapability,i.restreamerCapability,i.settingsStoreCapability,i.snapshotCapability,i.snapshotProviderCapability,i.storageCapability,i.storageProviderCapability,i.streamBrokerCapability,i.streamingEngineCapability,i.switchCapability,i.systemCapability,i.toastCapability,i.turnOrchestratorCapability,i.turnProviderCapability,i.userManagementCapability,i.webrtcCapability,i.webrtcSessionCapability,i.zoneAnalyticsCapability,i.zoneRulesCapability,i.zonesCapability],ga=["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"],ha=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"}}),va=["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"];function Sa(s){try{const a=new URL(s);return!a.username&&!a.password?s:(a.username="",a.password="",a.toString())}catch{return s}}class ya{constructor(a){this.capacity=a,this.items=Array.from({length:a})}items;head=0;tail=0;count=0;get size(){return this.count}push(a){this.items[this.tail]=a,this.tail=(this.tail+1)%this.capacity,this.count<this.capacity?this.count++:this.head=(this.head+1)%this.capacity}drain(a){const e=[],o=Math.min(a,this.count);for(let c=0;c<o;c++)e.push(this.items[this.head]),this.items[this.head]=void 0,this.head=(this.head+1)%this.capacity;return this.count-=o,e}}function fa(s,a,e){const o={};for(const c of Object.keys(e))o[c]=l=>s.addons.custom.mutate({addonId:a,action:c,input:l});return o}n.ACCESSORY_LABEL=i.ACCESSORY_LABEL;n.APPLE_SA_TO_MACRO=i.APPLE_SA_TO_MACRO;n.AUDIO_BACKEND_CHOICES=i.AUDIO_BACKEND_CHOICES;n.AUDIO_MACRO_LABELS=i.AUDIO_MACRO_LABELS;n.AccessoriesStatusSchema=i.AccessoriesStatusSchema;n.AccessoryKind=i.AccessoryKind;n.AddonAutoUpdateSchema=i.AddonAutoUpdateSchema;n.AddonListItemSchema=i.AddonListItemSchema;n.AddonPageDeclarationSchema=i.AddonPageDeclarationSchema;n.AddonPageInfoSchema=i.AddonPageInfoSchema;n.AgentLoadSummarySchema=i.AgentLoadSummarySchema;n.AlertSchema=i.AlertSchema;n.AlertSeveritySchema=i.AlertSeveritySchema;n.AlertSourceSchema=i.AlertSourceSchema;n.AlertStatusSchema=i.AlertStatusSchema;n.ApiKeyRecordSchema=i.ApiKeyRecordSchema;n.ApiKeySummarySchema=i.ApiKeySummarySchema;n.ArchiveEntrySchema=i.ArchiveEntrySchema;n.ArchiveManifestSchema=i.ArchiveManifestSchema;n.AudioAnalysisResultSchema=i.AudioAnalysisResultSchema;n.AudioAnalysisSettingsSchema=i.AudioAnalysisSettingsSchema;n.AudioChunkInputSchema=i.AudioChunkInputSchema;n.AudioClassSummarySchema=i.AudioClassSummarySchema;n.AudioClassificationLabelSchema=i.AudioClassificationLabelSchema;n.AudioClassificationResultSchema=i.AudioClassificationResultSchema;n.AudioCodecInfoSchema=i.AudioCodecInfoSchema;n.AudioDecodeSessionConfigSchema=i.AudioDecodeSessionConfigSchema;n.AudioEncodeSessionConfigSchema=i.AudioEncodeSessionConfigSchema;n.AudioEncodedChunkSchema=i.AudioEncodedChunkSchema;n.AudioEventSchema=i.AudioEventSchema;n.AudioLevelSchema=i.AudioLevelSchema;n.AudioMetricsHistoryPointSchema=i.AudioMetricsHistoryPointSchema;n.AudioMetricsHistorySchema=i.AudioMetricsHistorySchema;n.AudioMetricsSnapshotSchema=i.AudioMetricsSnapshotSchema;n.AudioPcmChunkSchema=i.AudioPcmChunkSchema;n.AuthProviderInfoSchema=i.AuthProviderInfoSchema;n.AuthResultSchema=i.AuthResultSchema;n.AutoUpdateSettingsSchema=i.AutoUpdateSettingsSchema;n.AvailableIntegrationTypeSchema=i.AvailableIntegrationTypeSchema;n.BATTERY_DEVICE_PROFILE=i.BATTERY_DEVICE_PROFILE;n.BackupDestinationInfoSchema=i.BackupDestinationInfoSchema;n.BackupEntrySchema=i.BackupEntrySchema;n.BatteryStatusSchema=i.BatteryStatusSchema;n.BoundingBoxSchema=i.BoundingBoxSchema;n.BrightnessStatusSchema=i.BrightnessStatusSchema;n.BrokerAudioClientSchema=i.BrokerAudioClientSchema;n.BrokerClientsSchema=i.BrokerClientsSchema;n.BrokerDecodedClientSchema=i.BrokerDecodedClientSchema;n.BrokerRtspClientSchema=i.BrokerRtspClientSchema;n.BrokerStatsSchema=i.BrokerStatsSchema;n.BrokerStatusSchema=i.BrokerStatusSchema;n.CAM_PROFILE_ORDER=i.CAM_PROFILE_ORDER;n.CamProfileSchema=i.CamProfileSchema;n.CamStreamKindSchema=i.CamStreamKindSchema;n.CamStreamResolutionSchema=i.CamStreamResolutionSchema;n.CameraCredentialsSchema=i.CameraCredentialsSchema;n.CameraCredentialsStatusSchema=i.CameraCredentialsStatusSchema;n.CameraMetricsSchema=i.CameraMetricsSchema;n.CameraMetricsWithDeviceIdSchema=i.CameraMetricsWithDeviceIdSchema;n.CameraStreamSchema=i.CameraStreamSchema;n.CapabilityBindingsSchema=i.CapabilityBindingsSchema;n.ChargingStatus=i.ChargingStatus;n.ClientNetworkStatsSchema=i.ClientNetworkStatsSchema;n.ClusterAddonNodeDeploymentSchema=i.ClusterAddonNodeDeploymentSchema;n.ClusterAddonStatusEntrySchema=i.ClusterAddonStatusEntrySchema;n.CollectionColumnSchema=i.CollectionColumnSchema;n.CollectionIndexSchema=i.CollectionIndexSchema;n.ConfigEntrySchema=i.ConfigEntrySchema;n.ConfigSectionWithValuesSchema=i.ConfigSectionWithValuesSchema;n.ConfigTabDeclarationSchema=i.ConfigTabDeclarationSchema;n.CreateApiKeyInputSchema=i.CreateApiKeyInputSchema;n.CreateApiKeyResultSchema=i.CreateApiKeyResultSchema;n.CreateIntegrationInputSchema=i.CreateIntegrationInputSchema;n.CreateScopedTokenInputSchema=i.CreateScopedTokenInputSchema;n.CreateScopedTokenResultSchema=i.CreateScopedTokenResultSchema;n.CreateUserInputSchema=i.CreateUserInputSchema;n.CustomActionInputSchema=i.CustomActionInputSchema;n.DEFAULT_AUDIO_ANALYZER_CONFIG=i.DEFAULT_AUDIO_ANALYZER_CONFIG;n.DEFAULT_DECODER_HWACCEL_CONFIG=i.DEFAULT_DECODER_HWACCEL_CONFIG;n.DEVICE_PROFILES=i.DEVICE_PROFILES;n.DEVICE_SETTINGS_CONTRIBUTION_METHODS=i.DEVICE_SETTINGS_CONTRIBUTION_METHODS;n.DEVICE_STATUS_METHOD=i.DEVICE_STATUS_METHOD;n.DecodedFrameSchema=i.DecodedFrameSchema;n.DecoderAssignmentSchema=i.DecoderAssignmentSchema;n.DecoderSessionConfigSchema=i.DecoderSessionConfigSchema;n.DecoderStatsSchema=i.DecoderStatsSchema;n.DeleteIntegrationResultSchema=i.DeleteIntegrationResultSchema;n.DetectorOutputSchema=i.DetectorOutputSchema;n.DeviceDiscoveryStatusSchema=i.DeviceDiscoveryStatusSchema;n.DeviceFeature=i.DeviceFeature;n.DeviceInfoSchema=i.DeviceInfoSchema;n.DeviceNetworkStatsSchema=i.DeviceNetworkStatsSchema;n.DeviceRole=i.DeviceRole;n.DeviceStatusSchema=i.DeviceStatusSchema;n.DeviceType=i.DeviceType;n.DiscoveredChildDeviceSchema=i.DiscoveredChildDeviceSchema;n.DiscoveredChildStatusSchema=i.DiscoveredChildStatusSchema;n.DiscoveredDeviceSchema=i.DiscoveredDeviceSchema;n.DoorbellPressEventSchema=i.DoorbellPressEventSchema;n.DoorbellStatusSchema=i.DoorbellStatusSchema;n.EmbeddingInfoSchema=i.EmbeddingInfoSchema;n.EmbeddingResultSchema=i.EmbeddingResultSchema;n.EncodedPacketSchema=i.EncodedPacketSchema;n.EnrichedWidgetMetadataSchema=i.EnrichedWidgetMetadataSchema;n.EventItemSchema=i.EventItemSchema;n.EventKindSchema=i.EventKindSchema;n.ExposedResourceSchema=i.ExposedResourceSchema;n.FeatureManifestSchema=i.FeatureManifestSchema;n.FeatureProbeStatusSchema=i.FeatureProbeStatusSchema;n.FrameInputSchema=i.FrameInputSchema;n.GlobalMetricsSchema=i.GlobalMetricsSchema;n.HWACCEL_OPTIONS=i.HWACCEL_OPTIONS;n.HealthStatusSchema=i.HealthStatusSchema;n.HistoryPointSchema=i.HistoryPointSchema;n.HistoryResolutionEnum=i.HistoryResolutionEnum;n.InstalledPackageSchema=i.InstalledPackageSchema;n.IntegrationLiteSchema=i.IntegrationLiteSchema;n.IntegrationWithStateSchema=i.IntegrationWithStateSchema;n.IntercomAbilitySchema=i.IntercomAbilitySchema;n.IntercomStatusSchema=i.IntercomStatusSchema;n.LocationStatSchema=i.LocationStatSchema;n.LogEntrySchema=i.LogEntrySchema;n.LogLevelSchema=i.LogLevelSchema;n.LogStreamEntrySchema=i.LogStreamEntrySchema;n.MODEL_FORMATS=i.MODEL_FORMATS;n.MediaFileSchema=i.MediaFileSchema;n.MethodAccessSchema=i.MethodAccessSchema;n.MotionAnalysisResultSchema=i.MotionAnalysisResultSchema;n.MotionEventSchema=i.MotionEventSchema;n.MotionOnMotionChangedDataSchema=i.MotionOnMotionChangedDataSchema;n.MotionRegionSchema=i.MotionRegionSchema;n.MotionSourceEnum=i.MotionSourceEnum;n.MotionSourcesSchema=i.MotionSourcesSchema;n.MotionStatusSchema=i.MotionStatusSchema;n.MotionTriggerRuntimeStateSchema=i.MotionTriggerRuntimeStateSchema;n.MotionTriggerStatusSchema=i.MotionTriggerStatusSchema;n.NativeDetectionSchema=i.NativeDetectionSchema;n.NativeObjectClassEnum=i.NativeObjectClassEnum;n.NativeObjectDetectionStatusSchema=i.NativeObjectDetectionStatusSchema;n.NetworkAccessStatusSchema=i.NetworkAccessStatusSchema;n.NetworkAddressSchema=i.NetworkAddressSchema;n.NetworkEndpointSchema=i.NetworkEndpointSchema;n.NotificationHistoryEntrySchema=i.NotificationHistoryEntrySchema;n.NotificationRuleSchema=i.NotificationRuleSchema;n.NotificationSchema=i.NotificationSchema;n.ObjectEventSchema=i.ObjectEventSchema;n.OrchestratorMetricsSchema=i.OrchestratorMetricsSchema;n.OsdOverlayKindEnum=i.OsdOverlayKindEnum;n.OsdOverlayPatchSchema=i.OsdOverlayPatchSchema;n.OsdOverlaySchema=i.OsdOverlaySchema;n.OsdPositionEnum=i.OsdPositionEnum;n.OsdStatusSchema=i.OsdStatusSchema;n.PIPELINE_FLOW_CAPABILITY_NAMES=i.PIPELINE_FLOW_CAPABILITY_NAMES;n.PIPELINE_OWNER_CAPABILITY_NAMES=i.PIPELINE_OWNER_CAPABILITY_NAMES;n.PackageUpdateSchema=i.PackageUpdateSchema;n.PackageVersionInfoSchema=i.PackageVersionInfoSchema;n.PcmSampleFormatSchema=i.PcmSampleFormatSchema;n.PerScopeBreakdownSchema=i.PerScopeBreakdownSchema;n.PipelineAssignmentSchema=i.PipelineAssignmentSchema;n.PipelineDefaultStepSchema=i.PipelineDefaultStepSchema;n.PipelineEngineChoiceSchema=i.PipelineEngineChoiceSchema;n.PipelineRunResultBridge=i.PipelineRunResultBridge;n.PipelineStepInputSchema=i.PipelineStepInputSchema;n.PlaceholderReasonSchema=i.PlaceholderReasonSchema;n.PolygonPointSchema=i.PolygonPointSchema;n.ProfileSlotSchema=i.ProfileSlotSchema;n.ProfileSlotStatusSchema=i.ProfileSlotStatusSchema;n.ProviderStatusSchema=i.ProviderStatusSchema;n.PtzAutotrackRuntimeStateSchema=i.PtzAutotrackRuntimeStateSchema;n.PtzAutotrackSettingsSchema=i.PtzAutotrackSettingsSchema;n.PtzAutotrackStatusSchema=i.PtzAutotrackStatusSchema;n.PtzAutotrackTargetOptionSchema=i.PtzAutotrackTargetOptionSchema;n.PtzMoveCommandSchema=i.PtzMoveCommandSchema;n.PtzPositionSchema=i.PtzPositionSchema;n.PtzPresetSchema=i.PtzPresetSchema;n.QueryFilterSchema=i.QueryFilterSchema;n.RegisteredStreamSchema=i.RegisteredStreamSchema;n.RemoteAccessEndpointSchema=i.RemoteAccessEndpointSchema;n.RemoteAccessProviderInfoSchema=i.RemoteAccessProviderInfoSchema;n.ReportMotionInputSchema=i.ReportMotionInputSchema;n.RtspRestreamEntrySchema=i.RtspRestreamEntrySchema;n.RunnerCameraConfigSchema=i.RunnerCameraConfigSchema;n.RunnerCameraDeviceUIFields=i.RunnerCameraDeviceUIFields;n.RunnerLocalLoadSchema=i.RunnerLocalLoadSchema;n.RunnerLocalMetricsSchema=i.RunnerLocalMetricsSchema;n.STORAGE_LOCATION_CARDINALITY=i.STORAGE_LOCATION_CARDINALITY;n.ScopedTokenSchema=i.ScopedTokenSchema;n.ScopedTokenSummarySchema=i.ScopedTokenSummarySchema;n.SearchResultSchema=i.SearchResultSchema;n.SegmentSchema=i.SegmentSchema;n.SettingsPatchSchema=i.SettingsPatchSchema;n.SettingsRecordSchema=i.SettingsRecordSchema;n.SettingsSchemaWithValuesSchema=i.SettingsSchemaWithValuesSchema;n.SettingsUpdateResultSchema=i.SettingsUpdateResultSchema;n.SnapshotImageSchema=i.SnapshotImageSchema;n.SpatialDetectionSchema=i.SpatialDetectionSchema;n.StorageAbortUploadInputSchema=i.AbortUploadInputSchema;n.StorageBeginDownloadInputSchema=i.BeginDownloadInputSchema;n.StorageBeginDownloadResultSchema=i.BeginDownloadResultSchema;n.StorageBeginUploadInputSchema=i.BeginUploadInputSchema;n.StorageBeginUploadResultSchema=i.BeginUploadResultSchema;n.StorageEndDownloadInputSchema=i.EndDownloadInputSchema;n.StorageFinalizeUploadInputSchema=i.FinalizeUploadInputSchema;n.StorageLocationRefSchema=i.StorageLocationRefSchema;n.StorageLocationSchema=i.StorageLocationSchema;n.StorageLocationTypeSchema=i.StorageLocationTypeSchema;n.StorageProviderInfoSchema=i.ProviderInfoSchema;n.StorageReadChunkInputSchema=i.ReadChunkInputSchema;n.StorageTestLocationResultSchema=i.TestLocationResultSchema;n.StorageWriteChunkInputSchema=i.WriteChunkInputSchema;n.StreamFormatSchema=i.StreamFormatSchema;n.StreamInfoSchema=i.StreamInfoSchema;n.StreamNetworkStatsSchema=i.StreamNetworkStatsSchema;n.StreamSourceEntrySchema=i.StreamSourceEntrySchema;n.StreamSourceSchema=i.StreamSourceSchema;n.SwitchStatusSchema=i.SwitchStatusSchema;n.SystemMetricsSchema=i.SystemMetricsSchema;n.TestConnectionResultSchema=i.TestConnectionResultSchema;n.ToastSchema=i.ToastSchema;n.TokenScopeSchema=i.TokenScopeSchema;n.TopologyNodeSchema=i.TopologyNodeSchema;n.TopologyProcessSchema=i.TopologyProcessSchema;n.TopologyServiceSchema=i.TopologyServiceSchema;n.TrackSchema=i.TrackSchema;n.TrackStateSchema=i.TrackStateSchema;n.TrackedDetectionSchema=i.TrackedDetectionSchema;n.TurnProviderInfoSchema=i.TurnProviderInfoSchema;n.TurnServerSchema=i.TurnServerSchema;n.UpdateIntegrationInputSchema=i.UpdateIntegrationInputSchema;n.UpdateUserInputSchema=i.UpdateUserInputSchema;n.UserRecordSchema=i.UserRecordSchema;n.UserRoleSchema=i.UserRoleSchema;n.UserSummarySchema=i.UserSummarySchema;n.WELL_KNOWN_TABS=i.WELL_KNOWN_TABS;n.WELL_KNOWN_TAB_MAP=i.WELL_KNOWN_TAB_MAP;n.WebrtcStreamChoiceSchema=i.WebrtcStreamChoiceSchema;n.WebrtcStreamTargetSchema=i.WebrtcStreamTargetSchema;n.WidgetHostEnum=i.WidgetHostEnum;n.WidgetMetadataSchema=i.WidgetMetadataSchema;n.WidgetSizeEnum=i.WidgetSizeEnum;n.YAMNET_TO_MACRO=i.YAMNET_TO_MACRO;n.ZoneKindEnum=i.ZoneKindEnum;n.ZoneRuleModeEnum=i.ZoneRuleModeEnum;n.ZoneRuleSchema=i.ZoneRuleSchema;n.ZoneRuleStageEnum=i.ZoneRuleStageEnum;n.ZoneRulesArraySchema=i.ZoneRulesArraySchema;n.ZoneSchema=i.ZoneSchema;n.ZoneScopeBreakdownSchema=i.ZoneScopeBreakdownSchema;n.accessoriesCapability=i.accessoriesCapability;n.accessoryStableId=i.accessoryStableId;n.addonPagesCapability=i.addonPagesCapability;n.addonPagesSourceCapability=i.addonPagesSourceCapability;n.addonRoutesCapability=i.addonRoutesCapability;n.addonSettingsCapability=i.addonSettingsCapability;n.addonWidgetsCapability=i.addonWidgetsCapability;n.addonWidgetsSourceCapability=i.addonWidgetsSourceCapability;n.addonsCapability=i.addonsCapability;n.adminUiCapability=i.adminUiCapability;n.advancedNotifierCapability=i.advancedNotifierCapability;n.alertsCapability=i.alertsCapability;n.audioAnalysisCapability=i.audioAnalysisCapability;n.audioAnalyzerCapability=i.audioAnalyzerCapability;n.audioCodecCapability=i.audioCodecCapability;n.audioMetricsCapability=i.audioMetricsCapability;n.authProviderCapability=i.authProviderCapability;n.authenticationCapability=i.authenticationCapability;n.backupCapability=i.backupCapability;n.batteryCapability=i.batteryCapability;n.brightnessCapability=i.brightnessCapability;n.cameraCredentialsCapability=i.cameraCredentialsCapability;n.cameraStreamsCapability=i.cameraStreamsCapability;n.decoderCapability=i.decoderCapability;n.detectionPipelineCapability=i.detectionPipelineCapability;n.deviceDiscoveryCapability=i.deviceDiscoveryCapability;n.deviceManagerCapability=i.deviceManagerCapability;n.deviceMatchesProfile=i.deviceMatchesProfile;n.deviceOpsCapability=i.deviceOpsCapability;n.deviceProviderCapability=i.deviceProviderCapability;n.deviceStateCapability=i.deviceStateCapability;n.deviceStatusCapability=i.deviceStatusCapability;n.doorbellCapability=i.doorbellCapability;n.embeddingEncoderCapability=i.embeddingEncoderCapability;n.errMsg=i.errMsg;n.event=i.event;n.eventsCapability=i.eventsCapability;n.expandCapMethods=i.expandCapMethods;n.featureProbeCapability=i.featureProbeCapability;n.getAudioMacroClassIds=i.getAudioMacroClassIds;n.hydrateSchema=i.hydrateSchema;n.integrationsCapability=i.integrationsCapability;n.intercomCapability=i.intercomCapability;n.localNetworkCapability=i.localNetworkCapability;n.logDestinationCapability=i.logDestinationCapability;n.mapAudioLabelToMacro=i.mapAudioLabelToMacro;n.meshNetworkCapability=i.meshNetworkCapability;n.meshOrchestratorCapability=i.meshOrchestratorCapability;n.method=i.method;n.metricsProviderCapability=i.metricsProviderCapability;n.motionCapability=i.motionCapability;n.motionDetectionCapability=i.motionDetectionCapability;n.motionTriggerCapability=i.motionTriggerCapability;n.nativeObjectDetectionCapability=i.nativeObjectDetectionCapability;n.networkAccessCapability=i.networkAccessCapability;n.networkQualityCapability=i.networkQualityCapability;n.nodesCapability=i.nodesCapability;n.notificationOutputCapability=i.notificationOutputCapability;n.osdCapability=i.osdCapability;n.pipelineAnalyticsCapability=i.pipelineAnalyticsCapability;n.pipelineExecutorCapability=i.pipelineExecutorCapability;n.pipelineOrchestratorCapability=i.pipelineOrchestratorCapability;n.pipelineRunnerCapability=i.pipelineRunnerCapability;n.platformProbeCapability=i.platformProbeCapability;n.ptzAutotrackCapability=i.ptzAutotrackCapability;n.ptzCapability=i.ptzCapability;n.rebootCapability=i.rebootCapability;n.recordingCapability=i.recordingCapability;n.recordingEngineCapability=i.recordingEngineCapability;n.remoteAccessCapability=i.remoteAccessCapability;n.resolveDeviceProfile=i.resolveDeviceProfile;n.restreamerCapability=i.restreamerCapability;n.settingsStoreCapability=i.settingsStoreCapability;n.snapshotCapability=i.snapshotCapability;n.snapshotProviderCapability=i.snapshotProviderCapability;n.storageCapability=i.storageCapability;n.storageProviderCapability=i.storageProviderCapability;n.streamBrokerCapability=i.streamBrokerCapability;n.streamingEngineCapability=i.streamingEngineCapability;n.switchCapability=i.switchCapability;n.systemCapability=i.systemCapability;n.toastCapability=i.toastCapability;n.turnOrchestratorCapability=i.turnOrchestratorCapability;n.turnProviderCapability=i.turnProviderCapability;n.userManagementCapability=i.userManagementCapability;n.webrtcCapability=i.webrtcCapability;n.webrtcClientHintsSchema=i.webrtcClientHintsSchema;n.webrtcSessionCapability=i.webrtcSessionCapability;n.zoneAnalyticsCapability=i.zoneAnalyticsCapability;n.zoneRulesCapability=i.zoneRulesCapability;n.zonesCapability=i.zonesCapability;n.ALL_CAPABILITY_DEFINITIONS=ma;n.BACKEND_TO_FORMAT=Q;n.BaseAddon=Ae;n.BaseDevice=Wt;n.BaseDeviceProvider=Ht;n.CAPABILITY_NAMES=ua;n.CAPABILITY_ROUTER_KEYS=pa;n.CAP_NAMES_WITH_STATUS=ga;n.COCO_80_LABELS=Lt;n.COCO_TO_MACRO=zt;n.DEFAULT_ADDON_GROUP=Ie;n.DEFAULT_ADDON_PLACEMENT=Ce;n.DEFAULT_FEATURES=ut;n.DEFAULT_LOCATION_SUBDIRS=it;n.DEFAULT_RETENTION=gt;n.DEVICE_TYPE_INFO=_t;n.DeviceConfig=E;n.DeviceRuntimeState=$;n.DisposerChain=Ke;n.ElementConfigStore=Nt;n.EventCategory=L;n.EventSourceType=Me;n.HF_BASE_URL=ht;n.HF_REPO=Re;n.KNOWN_CAP_NAMES=va;n.MACRO_LABELS=Bt;n.METHOD_ACCESS_MAP=ha;n.PYTHON_SCRIPT=qe;n.RECOGNITION_TYPES=mt;n.RUNTIME_DEFAULTS=vt;n.RUNTIME_TO_FORMAT=Te;n.ReadinessRegistry=Xe;n.ReadinessTimeoutError=ke;n.RingBuffer=ya;n.STORAGE_LOCATION_TYPES=at;n.STREAM_QUALITY_LABELS=Pe;n.SUB_DETECTION_TYPES=pt;n.SystemMirror=oa;n.asBoolean=bt;n.asJsonArray=St;n.asJsonObject=Oe;n.asNumber=ft;n.asString=yt;n.autoAssignProfiles=lt;n.bindAddonActions=fa;n.classifyStream=st;n.classifyStreams=Ee;n.cosineSimilarity=At;n.createDeviceProxy=xe;n.createEvent=V;n.createLazyTrpcSource=J;n.createMirrorSource=_e;n.createRuntimeStateBridge=Ut;n.createSliceHandle=y;n.createSystemProxy=ta;n.customAction=la;n.defineCustomActions=da;n.emitDownForOwnedCaps=tt;n.emitReadiness=we;n.evaluateZoneRules=Xt;n.formatForBackend=Et;n.formatForRuntime=Mt;n.hfModelUrl=wt;n.isAgentOnlyPlacement=Ve;n.isDeployableToAgent=Ze;n.isEvent=Je;n.maskUrlCredentials=Sa;n.normalizeAddonInitResult=Ne;n.parseCameraStreamConfig=dt;n.parseJsonArray=Ct;n.parseJsonObject=It;n.parseJsonUnknown=Y;n.pythonScriptForBackend=Rt;n.readinessKey=W;n.requiresPython=Ot;n.resolveAddonExecution=z;n.resolveAddonGroup=Ye;n.resolveAddonPlacement=Qe;n.resolveAddonRuntime=Dt;n.resolveDetectionRuntime=Le;n.resolveModelFormat=Pt;n.runInferenceStep=Tt;n.scopeKey=D;n.streamPixels=De;n.streamQualityLabel=nt;n.toDeviceSummary=Be;n.toStreamSourceEntry=rt;n.zodEntriesToConfigUI=$t});export default ba();
|