@camstack/addon-admin-ui 0.1.35 → 0.1.37
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/{__mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.mjs-CeLhKMin.js → __mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.mjs-Cv6qLu_-.js} +1 -1
- package/dist/assets/{__mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.mjs_commonjs-proxy-DXPQtD9p.js → __mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.mjs_commonjs-proxy-CChEG9e0.js} +1 -1
- package/dist/assets/{__mfe_internal__admin_ui_host__loadShare___mf_0_trpc_mf_1_react_mf_2_query__loadShare__.mjs-OcRSBqRe.js → __mfe_internal__admin_ui_host__loadShare___mf_0_trpc_mf_1_react_mf_2_query__loadShare__.mjs-C1BmHlGM.js} +1 -1
- package/dist/assets/{__mfe_internal__admin_ui_host__loadShare___mf_0_trpc_mf_1_react_mf_2_query__loadShare__.mjs_commonjs-proxy-GvBGLFI2.js → __mfe_internal__admin_ui_host__loadShare___mf_0_trpc_mf_1_react_mf_2_query__loadShare__.mjs_commonjs-proxy-Bxv_3KWz.js} +1 -1
- package/dist/assets/__mfe_internal__admin_ui_host__loadShare__konva__loadShare__.mjs-g85Oidc0.js +15 -0
- package/dist/assets/__mfe_internal__admin_ui_host__loadShare__konva__loadShare__.mjs_commonjs-proxy-Bqeq2Zwj.js +1 -0
- package/dist/assets/{__mfe_internal__admin_ui_host__loadShare__react__loadShare__.mjs-Dl4u0xYE.js → __mfe_internal__admin_ui_host__loadShare__react__loadShare__.mjs-DC63qZbr.js} +1 -1
- package/dist/assets/{__mfe_internal__admin_ui_host__loadShare__react__loadShare__.mjs_commonjs-proxy-CSyOECfO.js → __mfe_internal__admin_ui_host__loadShare__react__loadShare__.mjs_commonjs-proxy-D2C49VyZ.js} +1 -1
- package/dist/assets/{__mfe_internal__admin_ui_host__loadShare__react_mf_2_dom__loadShare__.mjs-CzO_Esxm.js → __mfe_internal__admin_ui_host__loadShare__react_mf_2_dom__loadShare__.mjs-D3WbXy3O.js} +1 -1
- package/dist/assets/{__mfe_internal__admin_ui_host__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-xw6c6JeS.js → __mfe_internal__admin_ui_host__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-Csg6EbPB.js} +1 -1
- package/dist/assets/{__mfe_internal__admin_ui_host__loadShare__react_mf_2_dom_mf_1_client__loadShare__.mjs-DNpf5SLz.js → __mfe_internal__admin_ui_host__loadShare__react_mf_2_dom_mf_1_client__loadShare__.mjs-CUc0oFNo.js} +2 -2
- package/dist/assets/{__mfe_internal__admin_ui_host__loadShare__react_mf_2_dom_mf_1_client__loadShare__.mjs_commonjs-proxy-BEKtiDI3.js → __mfe_internal__admin_ui_host__loadShare__react_mf_2_dom_mf_1_client__loadShare__.mjs_commonjs-proxy-vh0hhA5d.js} +1 -1
- package/dist/assets/__mfe_internal__admin_ui_host__loadShare__react_mf_2_konva__loadShare__.mjs-CpGtTxci.js +35 -0
- package/dist/assets/__mfe_internal__admin_ui_host__loadShare__react_mf_2_konva__loadShare__.mjs_commonjs-proxy-RUDPE9aM.js +1 -0
- package/dist/assets/_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-Cjyt3AKP.js +1 -0
- package/dist/assets/{devices-D4k34mru.js → devices-GLp7me2a.js} +1 -1
- package/dist/assets/hostInit-Cx72YpvD.js +1 -0
- package/dist/assets/index-ByRJWRUP.js +1 -0
- package/dist/assets/index-COoei6lw.css +1 -0
- package/dist/assets/index-CtHpLu0L.js +1 -0
- package/dist/assets/{index-D92THlot.js → index-CwF7Dxf8.js} +1 -1
- package/dist/assets/{index-BI3Z7SSi.js → index-D6khiudP.js} +1 -1
- package/dist/assets/index-DNY_otk4.js +151 -0
- package/dist/assets/index-DQFO9ZU6.js +1 -0
- package/dist/assets/index-G9qsQFtk.js +1150 -0
- package/dist/assets/{index-BGZqVJZt.js → index-JJ5NLHxC.js} +1 -1
- package/dist/assets/{index-Bwcmc2hW.js → index-TiJwCuZx.js} +1 -1
- package/dist/assets/index-WrAHDGEr.js +87 -0
- package/dist/assets/index-b0D9qthW.js +1 -0
- package/dist/assets/method-access-map-DLEhlu0x.js +1 -0
- package/dist/assets/{remoteEntry-BRybuw2S.js → remoteEntry-CbhqJYoN.js} +1 -1
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DUkp33c_.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-I5siGnQL.js} +6 -6
- package/dist/index.html +6 -6
- package/dist/mf-entry-bootstrap-0.js +2 -2
- package/dist/server/addon.js +528 -96
- package/dist/server/addon.js.map +1 -1
- package/dist/sw.js +1 -1
- package/package.json +10 -2
- package/dist/assets/_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-DYU-qDnu.js +0 -1
- package/dist/assets/hostInit-CBKchP1G.js +0 -1
- package/dist/assets/index-BEewR-UX.js +0 -1
- package/dist/assets/index-BhNfKRLZ.js +0 -1156
- package/dist/assets/index-BqMPfvQx.js +0 -1
- package/dist/assets/index-CP1R6E2R.js +0 -88
- package/dist/assets/index-CwjnPcOV.js +0 -152
- package/dist/assets/index-Dmon2mdO.js +0 -1
- package/dist/assets/index-KlKJOjpC.js +0 -1
- package/dist/assets/index-bBEaoekV.css +0 -1
- package/dist/assets/method-access-map-BFPyQ2-G.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as t,a as l,_ as m,s as e,r as b,l as I,n as a,b as S,c as h,d as P,u as f,e as at,f as M,g as At,h as R,t as Ya,i as Ct,j as jn,k as Qa,m as Zn,Z as Yn,p as Qn,q as Jn,v as Xn,w as eo,x as to,y as Ja,z as ao,A as no}from"./schemas-BEt-CulV.js";const oo=["onnx","coreml","openvino","tflite","pt"],so=[{id:"overview",label:"Overview",icon:"layout-dashboard",order:-10},{id:"general",label:"General",icon:"settings",order:0},{id:"image",label:"Image",icon:"image",order:5},{id:"light",label:"Light",icon:"lightbulb",order:7},{id:"motion",label:"Motion",icon:"activity",order:10},{id:"audio",label:"Audio",icon:"mic",order:12},{id:"alarms",label:"Alarms",icon:"bell-ring",order:13},{id:"snapshot",label:"Snapshot",icon:"camera",order:15},{id:"osd",label:"OSD",icon:"type",order:18},{id:"stream-broker",label:"Stream Broker",icon:"radio",order:20},{id:"streaming",label:"Streaming",icon:"video",order:35},{id:"pipeline",label:"Detection Pipeline",icon:"cpu",order:39},{id:"zones",label:"Detection",icon:"shapes",order:38},{id:"live-stats",label:"Live Stats",icon:"activity",order:39},{id:"recording",label:"Recording",icon:"circle-dot",order:40},{id:"engine",label:"Inference Engine",icon:"zap",order:41},{id:"scheduler",label:"Scheduler",icon:"list-checks",order:42},{id:"decoder",label:"Decoder",icon:"film",order:43},{id:"notifications",label:"Notifications",icon:"bell",order:50},{id:"network",label:"Network",icon:"globe",order:60},{id:"storage",label:"Storage",icon:"hard-drive",order:70},{id:"advanced",label:"Advanced",icon:"wrench",order:100}],Sp=Object.fromEntries(so.map(c=>[c.id,c]));function io(c){return c.type==="separator"||c.type==="info"||c.type==="button"||c.type==="object-array"||c.type==="widget"||c.type==="addon-action-button"}function ta(c,s){return{...c.tabs?{tabs:[...c.tabs]}:{},sections:c.sections.map(n=>({...n,fields:n.fields.map(d=>nt(d,s))}))}}function nt(c,s){if(io(c))return c;if(c.type==="group"){const v=c.fields.map(w=>nt(w,s));return{...c,fields:v}}if(c.type==="sub-tabs"){const v=c.tabs.map(w=>({...w,fields:w.fields.map(A=>nt(A,s))}));return{...c,tabs:v}}const n=c.key,d=Object.prototype.hasOwnProperty.call(s,n)?s[n]:void 0,p=c.default;if(c.multiple){const v=Array.isArray(d)?d:d!=null?[d]:[],k=c.multiple.itemDefault!==void 0?c.multiple.itemDefault:p!==void 0?p:co(c)==="string"?"":null,w=Math.max(c.multiple.min,v.length),A=[];for(let N=0;N<w;N++)A.push(N<v.length?v[N]:k);return{...c,value:A}}const g=d!==void 0?d:p!==void 0?p:null,y=c.type==="textarea"&&c.isJson&&g!==null&&typeof g=="object"?JSON.stringify(g,null,2):g;return{...c,value:y}}function co(c){switch(c.type){case"text":case"textarea":case"password":case"color":case"probe":return"string";case"number":case"slider":return"number";case"boolean":return"boolean";default:return"other"}}const X=S(["data","media","recordings","recordings-high","recordings-low","recordings-clips","event-images","models","cache","logs","addons-data","backups"]),fp={data:"singleton",media:"singleton",cache:"singleton",logs:"singleton","addons-data":"singleton",models:"singleton","event-images":"singleton",recordings:"multi","recordings-high":"multi","recordings-low":"multi","recordings-clips":"multi",backups:"multi"},x=t({id:e().regex(/^[a-z][a-z0-9-]*:[a-z0-9-]+$/),type:X,displayName:e().min(1),providerId:e().min(1),config:b(e(),f()),isDefault:h().default(!1),isSystem:h().default(!1),createdAt:a(),updatedAt:a()}),L=M([X,e().regex(/^[a-z][a-z0-9-]*:[a-z0-9-]+$/)]),ro=t({inputFps:a(),outputFps:a(),avgDecodeTimeMs:a(),droppedFrames:a()}),aa=t({codec:e(),maxFps:a().default(0),outputFormat:S(["jpeg","rgb","bgr","yuv420","gray"]).default("jpeg"),scale:a().default(1),width:a().optional(),height:a().optional(),deviceId:a().int().nonnegative().optional(),tag:e().optional()});function lo(c){return c instanceof Error?c.message:typeof c=="string"?c:String(c)}const po=[{id:"speech",name:"Speech",icon:"🗣️"},{id:"scream",name:"Scream / Shout",icon:"😱"},{id:"crying",name:"Crying / Baby",icon:"😢"},{id:"laughter",name:"Laughter",icon:"😂"},{id:"music",name:"Music",icon:"🎵"},{id:"dog",name:"Dog",icon:"🐕"},{id:"cat",name:"Cat",icon:"🐈"},{id:"bird",name:"Bird",icon:"🐦"},{id:"animal",name:"Animal (other)",icon:"🐾"},{id:"alarm",name:"Alarm / Siren",icon:"🚨"},{id:"doorbell",name:"Doorbell / Knock",icon:"🔔"},{id:"glass_breaking",name:"Glass Breaking",icon:"💥"},{id:"gunshot",name:"Gunshot / Explosion",icon:"💣"},{id:"vehicle",name:"Vehicle",icon:"🚗"},{id:"siren",name:"Emergency Siren",icon:"🚑"},{id:"fire",name:"Fire / Smoke",icon:"🔥"},{id:"water",name:"Water",icon:"💧"},{id:"wind",name:"Wind / Weather",icon:"🌬️"},{id:"door",name:"Door",icon:"🚪"},{id:"footsteps",name:"Footsteps",icon:"👣"},{id:"crowd",name:"Crowd / Chatter",icon:"👥"},{id:"telephone",name:"Telephone",icon:"📞"},{id:"engine",name:"Engine / Motor",icon:"⚙️"},{id:"tools",name:"Tools / Construction",icon:"🔨"},{id:"silence",name:"Silence",icon:"🤫"}],mo={mapping:{Speech:"speech","Child speech, kid speaking":"speech",Conversation:"speech","Narration, monologue":"speech",Babbling:"speech",Whispering:"speech","Speech synthesizer":"speech",Humming:"speech",Rapping:"speech",Singing:"speech",Choir:"speech","Child singing":"speech",Shout:"scream",Bellow:"scream",Yell:"scream",Screaming:"scream","Children shouting":"scream",Whoop:"scream","Crying, sobbing":"crying","Baby cry, infant cry":"crying",Whimper:"crying","Wail, moan":"crying",Groan:"crying",Laughter:"laughter","Baby laughter":"laughter",Giggle:"laughter",Snicker:"laughter","Belly laugh":"laughter","Chuckle, chortle":"laughter",Music:"music","Musical instrument":"music",Guitar:"music",Piano:"music",Drum:"music","Drum kit":"music","Violin, fiddle":"music",Flute:"music",Saxophone:"music",Trumpet:"music",Synthesizer:"music","Pop music":"music","Rock music":"music","Hip hop music":"music","Classical music":"music",Jazz:"music","Electronic music":"music","Background music":"music",Dog:"dog",Bark:"dog",Yip:"dog",Howl:"dog","Bow-wow":"dog",Growling:"dog","Whimper (dog)":"dog",Cat:"cat",Purr:"cat",Meow:"cat",Hiss:"cat",Caterwaul:"cat",Bird:"bird","Bird vocalization, bird call, bird song":"bird","Chirp, tweet":"bird",Squawk:"bird",Crow:"bird",Owl:"bird","Pigeon, dove":"bird",Animal:"animal","Domestic animals, pets":"animal","Livestock, farm animals, working animals":"animal",Horse:"animal","Cattle, bovinae":"animal",Pig:"animal",Sheep:"animal",Goat:"animal",Frog:"animal",Insect:"animal",Cricket:"animal",Alarm:"alarm","Alarm clock":"alarm","Smoke detector, smoke alarm":"alarm","Fire alarm":"alarm",Buzzer:"alarm","Civil defense siren":"alarm","Car alarm":"alarm",Siren:"siren","Police car (siren)":"siren","Ambulance (siren)":"siren","Fire engine, fire truck (siren)":"siren","Emergency vehicle":"siren",Foghorn:"siren",Doorbell:"doorbell","Ding-dong":"doorbell",Knock:"doorbell",Tap:"doorbell",Glass:"glass_breaking",Shatter:"glass_breaking","Chink, clink":"glass_breaking","Gunshot, gunfire":"gunshot","Machine gun":"gunshot",Explosion:"gunshot",Fireworks:"gunshot",Firecracker:"gunshot","Artillery fire":"gunshot","Cap gun":"gunshot",Boom:"gunshot",Vehicle:"vehicle",Car:"vehicle",Truck:"vehicle",Bus:"vehicle",Motorcycle:"vehicle","Car passing by":"vehicle","Vehicle horn, car horn, honking":"vehicle","Traffic noise, roadway noise":"vehicle",Train:"vehicle",Aircraft:"vehicle",Helicopter:"vehicle",Bicycle:"vehicle",Skateboard:"vehicle",Fire:"fire",Crackle:"fire",Water:"water",Rain:"water",Raindrop:"water","Rain on surface":"water",Stream:"water",Waterfall:"water",Ocean:"water","Waves, surf":"water","Splash, splatter":"water",Wind:"wind",Thunderstorm:"wind",Thunder:"wind","Wind noise (microphone)":"wind","Rustling leaves":"wind",Door:"door","Sliding door":"door",Slam:"door","Cupboard open or close":"door","Walk, footsteps":"footsteps",Run:"footsteps",Shuffle:"footsteps",Crowd:"crowd",Chatter:"crowd",Cheering:"crowd",Applause:"crowd","Children playing":"crowd","Hubbub, speech noise, speech babble":"crowd",Telephone:"telephone","Telephone bell ringing":"telephone",Ringtone:"telephone","Telephone dialing, DTMF":"telephone","Busy signal":"telephone",Engine:"engine","Engine starting":"engine",Idling:"engine","Accelerating, revving, vroom":"engine","Light engine (high frequency)":"engine","Medium engine (mid frequency)":"engine","Heavy engine (low frequency)":"engine","Lawn mower":"engine",Chainsaw:"engine",Hammer:"tools",Jackhammer:"tools",Sawing:"tools","Power tool":"tools",Drill:"tools",Sanding:"tools",Silence:"silence"},preserveOriginal:!1},uo={mapping:{speech:"speech",child_speech:"speech",conversation:"speech",whispering:"speech",singing:"speech",humming:"speech",shout:"scream",yell:"scream",screaming:"scream",crying:"crying",baby_crying:"crying",sobbing:"crying",laughter:"laughter",baby_laughter:"laughter",giggling:"laughter",music:"music",guitar:"music",piano:"music",drums:"music",dog_bark:"dog",dog_bow_wow:"dog",dog_growling:"dog",dog_howl:"dog",cat_meow:"cat",cat_purr:"cat",cat_hiss:"cat",bird:"bird",bird_chirp:"bird",bird_squawk:"bird",animal:"animal",horse:"animal",cow_moo:"animal",insect:"animal",alarm:"alarm",smoke_alarm:"alarm",fire_alarm:"alarm",car_alarm:"alarm",siren:"siren",police_siren:"siren",ambulance_siren:"siren",doorbell:"doorbell",door_knock:"doorbell",knocking:"doorbell",glass_breaking:"glass_breaking",glass_shatter:"glass_breaking",gunshot:"gunshot",explosion:"gunshot",fireworks:"gunshot",car:"vehicle",truck:"vehicle",motorcycle:"vehicle",car_horn:"vehicle",vehicle_horn:"vehicle",traffic:"vehicle",fire:"fire",fire_crackle:"fire",water:"water",rain:"water",ocean:"water",splash:"water",wind:"wind",thunder:"wind",thunderstorm:"wind",door:"door",door_slam:"door",sliding_door:"door",footsteps:"footsteps",walking:"footsteps",running:"footsteps",crowd:"crowd",chatter:"crowd",cheering:"crowd",applause:"crowd",telephone_ring:"telephone",ringtone:"telephone",engine:"engine",engine_starting:"engine",lawn_mower:"engine",chainsaw:"engine",hammer:"tools",jackhammer:"tools",drill:"tools",power_tool:"tools",silence:"silence"},preserveOriginal:!1},Nt=new Map;for(const[c,s]of Object.entries(mo.mapping))Nt.set(c.toLowerCase(),s);for(const[c,s]of Object.entries(uo.mapping))Nt.set(c.toLowerCase(),s);function bp(c){return Nt.get(c.toLowerCase())??null}function Ip(){return po.map(c=>c.id)}var C=(c=>(c.Camera="camera",c.Hub="hub",c.Light="light",c.Siren="siren",c.Switch="switch",c.Sensor="sensor",c.Thermostat="thermostat",c.Button="button",c.Generic="generic",c))(C||{}),Xa=(c=>(c.BatteryOperated="battery-operated",c.Rebootable="rebootable",c.NativeSnapshot="native-snapshot",c.DoorbellButton="doorbell-button",c.TwoWayAudio="two-way-audio",c.PanTiltZoom="pan-tilt-zoom",c.PtzAutotrack="ptz-autotrack",c.MotionTrigger="motion-trigger",c))(Xa||{}),go=(c=>(c.ChargingDC="charging-dc",c.ChargingSolar="charging-solar",c.NotCharging="not-charging",c))(go||{}),_=(c=>(c.Siren="siren",c.Floodlight="floodlight",c.Spotlight="spotlight",c.PirSensor="pir-sensor",c.Chime="chime",c.Autotrack="autotrack",c.Nightvision="nightvision",c.PrivacyMask="privacy-mask",c.Doorbell="doorbell",c))(_||{});const F={Siren:_.Siren,Floodlight:_.Floodlight,Spotlight:_.Spotlight,PirSensor:_.PirSensor,Chime:_.Chime,Autotrack:_.Autotrack,Nightvision:_.Nightvision,PrivacyMask:_.PrivacyMask},kp={[F.Siren]:"Siren",[F.Floodlight]:"Floodlight",[F.Spotlight]:"Spotlight",[F.PirSensor]:"PIR",[F.Chime]:"Chime",[F.Autotrack]:"Autotracking",[F.Nightvision]:"Night Vision",[F.PrivacyMask]:"Privacy Mask"};function wp(c,s,n){const d=`${c}:${s}`;return typeof n=="number"?`${d}:${n}`:d}function ho(c,s){return!c||c.length===0?!1:c.includes(s.when.hasFeature)}const vo={id:"battery",label:"Battery-operated camera",when:{hasFeature:Xa.BatteryOperated},defaults:{audioMode:"disabled",detectionMode:"on-motion"},settings:{"snapshot.minRefreshIntervalSec":3600,"streamBroker.preBufferEnabled":!1}},yo=[vo];function Ap(c){for(const s of yo)if(ho(c,s))return s;return null}const Oe=t({online:h(),lastChangedAt:a()}),Pt={name:"device-status",scope:"device",mode:"singleton",methods:{},events:{onStatusChanged:{data:t({deviceId:a(),status:Oe})}},status:{schema:Oe,kind:"push"},runtimeState:Oe},ze=t({flags:b(e(),f()),deviceType:e().nullable(),model:e().nullable(),channelCount:a().nullable(),lastProbedAt:a(),lastFetchedAt:a()}),Dt={name:"feature-probe",scope:"device",mode:"singleton",methods:{},events:{onProbeChanged:{data:t({deviceId:a(),status:ze})}},status:{schema:ze,kind:"push"},runtimeState:ze},So=t({id:e(),title:e(),description:e().optional(),style:S(["card","accordion"]).optional(),defaultCollapsed:h().optional(),columns:M([I(1),I(2),I(3),I(4)]).optional(),tab:e().optional(),location:S(["settings","top-tab"]).optional(),order:a().optional(),fields:l(Qa())}),fo=t({id:e(),label:e(),icon:e(),order:a().optional()}),bo=t({tabs:l(fo).optional(),sections:l(So)}),na=bo.nullable(),Io={getDeviceSettingsContribution:{input:t({deviceId:a()}),output:na,kind:"query",auth:"protected"},getDeviceLiveContribution:{input:t({deviceId:a()}),output:na,kind:"query",auth:"protected"},applyDeviceSettingsPatch:{input:t({deviceId:a(),patch:b(e(),f())}),output:t({success:I(!0)}),kind:"mutation",auth:"admin"}},ko={getStatus:{input:t({deviceId:a()}),output:f().nullable(),kind:"query",auth:"protected"}};function Cp(c){let s=c.methods;return c.exposesDeviceSettings&&(s={...Io,...s}),c.status&&(s={...ko,...s}),s}function i(c,s,n){return{input:c,output:s,kind:n?.kind??"query",auth:n?.auth??"protected",...n?.access!==void 0?{access:n.access}:{},timeoutMs:n?.timeoutMs}}function G(c){return{data:c}}const wo=t({className:e(),hits:a().int().nonnegative(),avgScore:a().min(0).max(1),peakScore:a().min(0).max(1)}),oa=t({ts:a().int(),windowSec:a().int().positive(),level:t({rms:a(),dbfs:a()}),peakDbfs:a(),avgDbfs:a(),current:t({className:e(),score:a().min(0).max(1),timestamp:a().int()}).nullable(),byClass:l(wo).readonly()}),Ao=t({ts:a().int(),dbfs:a().nullable(),peakDbfs:a(),avgDbfs:a(),topClass:e().nullable(),topScore:a().min(0).max(1).nullable()}),Co=t({points:l(Ao).readonly(),effectiveSampleEveryMs:a().int().positive(),windowMsActual:a().int().nonnegative()}),en={name:"audio-metrics",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getCurrentSnapshot:i(t({deviceId:a()}),oa.nullable()),getHistory:i(t({deviceId:a(),windowSec:a().int().positive().optional(),sampleEveryMs:a().int().positive().optional()}),Co)},runtimeState:oa},Le=t({percentage:a().min(0).max(100),charging:S(["dc","solar","none"]),sleeping:h(),lastUpdated:a()}),tn={name:"battery",scope:"device",mode:"singleton",deviceTypes:[C.Camera,C.Sensor,C.Button,C.Switch],methods:{},events:{onStatusChanged:{data:t({deviceId:a(),status:Le})}},status:{schema:Le,kind:"push"},runtimeState:Le},sa=t({percentage:a().min(0).max(100),lastChangedAt:a()}),an={name:"brightness",scope:"device",mode:"singleton",deviceTypes:[C.Light],methods:{setBrightness:i(t({deviceId:a().int().nonnegative(),percentage:a().min(0).max(100)}),m(),{kind:"mutation",auth:"admin"})},events:{onBrightnessChanged:{data:t({deviceId:a(),percentage:a().min(0).max(100),lastChangedAt:a()})}},status:{schema:sa,kind:"command-driven"},runtimeState:sa},$=S(["high","mid","low"]),Np=["high","mid","low"],nn=S(["pull-rtsp","pull-rtmp","pull-http","pull-rfc4571","push-annexb"]),Mt=t({width:a().int().positive(),height:a().int().positive()}),ot=t({camStreamId:e().min(1),deviceId:a().int().nonnegative(),kind:nn,url:e().optional(),codec:e().optional(),resolution:Mt.optional(),fps:a().positive().optional(),label:e().optional(),deviceFeatures:l(e()).optional(),autoEligible:h().optional(),metadata:b(e(),f()).optional()}),ke=S(["unassigned","idle","connecting","streaming","error"]),st=t({deviceId:a().int().nonnegative(),profile:$,brokerId:e(),sourceCamStreamId:e().nullable(),status:ke,resolution:Mt.optional(),codec:e().optional(),preBufferSec:a().nonnegative().optional(),errorMessage:e().optional()}),No=t({id:e(),label:e(),protocol:S(["rtsp","rtmp","annexb","http-mjpeg","webrtc","custom"]),url:e().optional(),resolution:t({width:a(),height:a()}).readonly().optional(),fps:a().optional(),bitrate:a().optional(),codec:e().optional(),profileHint:S(["high","mid","low"]).optional()}),Pp=t({type:e(),url:e(),videoCodec:e().optional(),audioCodec:e().optional(),metadata:b(e(),f()).readonly().optional()}),Po=t({type:S(["video","audio"]),data:P(Uint8Array),pts:a(),dts:a(),keyframe:h(),codec:e()}),Do=t({data:P(Uint8Array),width:a(),height:a(),format:S(["jpeg","rgb","bgr","yuv420","gray"]),timestamp:a()}),Mo=S(["idle","connecting","streaming","error","stopped"]),Eo=t({status:Mo,inputFps:a(),decodeFps:a(),encodedSubscribers:a(),decodedSubscribers:a(),uptimeMs:a(),bitrateKbps:a(),idrIntervalMs:a(),codec:e().optional(),totalBytes:a(),packetCount:a(),rtspClients:a(),pipeClients:a(),preBufferSec:a(),preBufferMs:a(),preBufferPackets:a(),decoderNodeId:e().nullable(),audio:t({codec:e(),sampleRate:a(),channels:a(),supported:h()}).nullable().optional()}),Et=S(["webrtc","hls","mjpeg","rtsp"]),To=t({streamId:e(),format:Et,url:e().nullable(),active:h()}),xo={name:"streaming-engine",scope:"system",mode:"singleton",internal:!0,methods:{registerStream:i(t({streamId:e(),sourceUrl:e(),codec:e().optional()}),m(),{kind:"mutation"}),unregisterStream:i(t({streamId:e()}),m(),{kind:"mutation"}),getStreamUrl:i(t({streamId:e(),format:Et}),e().nullable()),listStreams:i(m(),l(To))}},it=t({brokerId:e(),url:e(),mutedUrl:e(),enabled:h()}),Ro=t({sessionId:e(),remoteAddr:e(),playing:h(),muted:h(),connectedAt:a(),lastRtpAt:a(),bytesSent:a()}),Bo=t({tag:e(),subscribedAt:a(),maxFps:a(),framesDelivered:a(),framesDropped:a()}),qo=t({tag:e(),subscribedAt:a(),chunksDelivered:a()}),Oo=t({rtsp:l(Ro).readonly(),decoded:l(Bo).readonly(),audio:l(qo).readonly(),pipeClients:a(),encodedSubscribers:a()}),Dp=S(["reconnecting","sleeping","offline","disabled","waking"]),zo=S(["H264","H265","auto"]),Lo=S(["AAC","Opus","PCMU","none"]),on=t({width:a().int().positive(),height:a().int().positive()}),_o=t({deviceId:a().int().nonnegative(),videoCodec:zo,audioCodec:Lo.optional(),maxResolution:on.optional(),tag:e().optional()}),Uo=t({url:e(),videoCodec:S(["H264","H265"]),audioCodec:e(),resolution:on,transcoded:h(),encoder:e(),pipelineKey:e()}),Fo={name:"stream-broker",scope:"system",mode:"singleton",exposesDeviceSettings:!0,methods:{publishCameraStream:i(t({deviceId:a().int().nonnegative(),camStreamId:e().min(1),kind:nn,url:e().optional(),codec:e().optional(),resolution:Mt.optional(),fps:a().positive().optional(),label:e().optional(),deviceFeatures:l(e()).optional(),autoEligible:h().optional(),metadata:b(e(),f()).optional()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),retractCameraStream:i(t({deviceId:a().int().nonnegative(),camStreamId:e().min(1)}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),assignProfile:i(t({deviceId:a().int().nonnegative(),profile:$,camStreamId:e().min(1)}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),unassignProfile:i(t({deviceId:a().int().nonnegative(),profile:$}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),listAllCameraStreams:i(m(),l(ot).readonly()),listAllProfileSlots:i(m(),l(st).readonly()),getBrokerStats:i(t({brokerId:e()}),Eo),listClients:i(t({brokerId:e()}),Oo),killClient:i(t({brokerId:e(),channel:S(["rtsp","decoded","audio"]),handle:e()}),t({killed:h()}),{kind:"mutation",auth:"admin"}),restartProfile:i(t({deviceId:a().int().nonnegative(),profile:$}),t({success:h()}),{kind:"mutation",auth:"admin"}),getStreamUrl:i(t({streamId:e(),format:Et}),t({url:e()})),getStreamWithCodec:i(_o,Uo,{kind:"mutation",auth:"admin"}),releaseStreamWithCodec:i(t({pipelineKey:e()}),t({released:h(),refcount:a().int().nonnegative()}),{kind:"mutation",auth:"admin"}),getBroker:i(t({brokerId:e()}),R()),setPreBufferDuration:i(t({brokerId:e(),seconds:a().min(0).max(30)}),m(),{kind:"mutation",auth:"admin"}),getPreBufferInfo:i(t({brokerId:e()}),t({configuredSec:a(),bufferedMs:a(),packetCount:a()})),getRtspPort:i(m(),a()),getAllRtspEntries:i(t({hostname:e().optional()}),l(it).readonly()),getRtspEntry:i(t({brokerId:e(),hostname:e().optional()}),it.nullable()),regenerateRtspToken:i(t({brokerId:e()}),e().nullable(),{kind:"mutation",auth:"admin"}),setRtspEnabled:i(t({brokerId:e(),enabled:h()}),m(),{kind:"mutation",auth:"admin"}),isRtspEnabled:i(t({brokerId:e()}),h())},events:{onCamStreamDemand:G(t({deviceId:a().int().nonnegative(),camStreamId:e(),profile:$})),onCamStreamIdle:G(t({deviceId:a().int().nonnegative(),camStreamId:e()})),onRequestStreamSourceRefresh:G(t({deviceId:a().int().nonnegative(),camStreamId:e(),brokerId:e()}))}},sn={name:"camera-streams",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getCameraStreams:i(t({deviceId:a().int().nonnegative()}),l(ot).readonly()),getBrokerStreams:i(t({deviceId:a().int().nonnegative()}),l(st).readonly()),getRtspEntries:i(t({deviceId:a().int().nonnegative(),hostname:e().optional()}),l(it).readonly())},events:{onCamStreamsChanged:G(t({deviceId:a().int().nonnegative(),camStreams:l(ot).readonly()})),onProfileSlotsChanged:G(t({deviceId:a().int().nonnegative(),profileSlots:l(st).readonly()}))},runtimeState:t({online:h(),slotStatuses:t({high:ke.optional(),mid:ke.optional(),low:ke.optional()}),slotErrors:t({high:e().optional(),mid:e().optional(),low:e().optional()}),lastChangedAt:a()})},Ho=S(["online","sleeping","offline","unknown"]),ct=t({childNativeId:e(),name:e(),type:S(C),status:Ho,metadata:t({model:e().optional(),serialNumber:e().optional(),uid:e().optional(),rtspChannel:a().int().nonnegative().optional(),isBattery:h().optional(),isDoorbell:h().optional(),isMultifocal:h().optional()}).default({}),alreadyAdopted:h(),adoptedDeviceId:a().int().nonnegative().nullable()}),ia=t({discovered:l(ct),lastDiscoveryAt:a().int().nonnegative().nullable(),lastError:e().nullable()}),cn={name:"device-discovery",scope:"device",mode:"singleton",deviceTypes:[C.Hub],status:{schema:ia,kind:"poll"},runtimeState:ia.extend({lastFetchedAt:a().int().nonnegative()}),methods:{listDiscovered:i(t({deviceId:a().int().nonnegative()}),l(ct).readonly()),refreshDiscovery:i(t({deviceId:a().int().nonnegative()}),l(ct).readonly(),{kind:"mutation",auth:"admin"}),adoptDevice:i(t({deviceId:a().int().nonnegative(),childNativeId:e(),name:e().optional()}),t({deviceId:a().int().nonnegative(),stableId:e()}),{kind:"mutation",auth:"admin"}),releaseDevice:i(t({deviceId:a().int().nonnegative(),childDeviceId:a().int().nonnegative()}),m(),{kind:"mutation",auth:"admin"})}},ca=t({lastPressedAt:a().nullable(),pressCountSinceStart:a()}),Wo=t({deviceId:a(),timestamp:a()}),rn={name:"doorbell",scope:"device",mode:"singleton",deviceTypes:[C.Button],methods:{},events:{onPressed:{data:Wo}},status:{schema:ca,kind:"push"},runtimeState:ca},$o=S(["jpeg","rgb","bgr","yuv420","gray"]),we=t({data:R(),format:$o,width:a(),height:a(),timestamp:a()}),te=t({x:a(),y:a(),w:a(),h:a()}),Ko=t({class:e(),originalClass:e(),score:a(),bbox:te}),ra=t({data:P(Float32Array),sampleRate:a(),channels:a(),timestamp:a(),deviceId:a().optional()}),Vo=t({rms:a(),dbfs:a()}),rt=t({className:e(),originalClass:e().optional(),score:a()}),De=t({bbox:te,pixelCount:a(),intensity:a()}),Go=t({detected:h(),regionCount:a(),regions:l(De).readonly(),rawRegions:l(De).readonly(),frameWidth:a(),frameHeight:a(),analysisMs:a()}),jo={name:"motion-detection",scope:"device",mode:"singleton",exposesDeviceSettings:!0,methods:{analyze:i(t({deviceId:a(),frame:we}),Go,{kind:"mutation"}),removeCamera:i(t({deviceId:a()}),m(),{kind:"mutation"}),reset:i(m(),m(),{kind:"mutation"})},events:{onMotion:{data:t({deviceId:a(),detected:h(),regionCount:a()})}}},Mp=t({activeCameras:a(),throttledCameras:a(),avgInferenceTimeMs:a(),queueDepth:a()}),Tt=t({detectionMode:S(["disabled","always-on","on-motion"]),configuredFps:a(),actualFps:a(),queueDepth:a(),avgInferenceTimeMs:a(),droppedFrames:a(),phase:S(["idle","watching","active"])}),Zo=Tt.extend({deviceId:a()}),dt=S(["onnx","coreml","openvino","tflite","pt"]),ue=S(["detector","cropper","classifier","refiner","audio-classifier"]),D=t({runtime:S(["node","python"]),backend:e(),format:dt,device:e().optional()}),Yo=t({id:e(),label:e(),description:e().optional()}),Qo=t({engine:D,devices:l(Yo).readonly(),defaultDevice:e()}),lt=At(()=>t({addonId:e(),addonName:e(),slot:ue,inputClasses:l(e()).readonly(),outputClasses:l(e()).readonly(),enabled:h(),modelId:e(),children:l(lt).readonly(),engine:D.optional(),group:e().optional(),settings:b(e(),f()).optional()})),Me=At(()=>t({addonId:e(),enabled:h(),modelId:e(),children:l(Me).readonly(),settings:b(e(),f()).optional()})),_e=t({id:e(),name:e(),createdAt:e(),updatedAt:e(),engine:D,steps:l(Me).readonly()}),Jo=t({id:e(),name:e(),formats:b(e(),t({downloaded:h(),sizeMB:a()}))}),Xo=R(),es=t({id:e(),name:e(),slot:ue,inputClasses:l(e()).readonly(),outputClasses:l(e()).readonly(),childSlots:l(ue).readonly(),models:l(Jo).readonly(),defaultModelId:e(),defaultModelIdByFormat:b(e(),e()).optional(),enabledByDefault:h().optional(),defaultConfidence:a(),group:e().optional(),configSchema:l(Xo).readonly().optional()}),ts=t({id:ue,label:e(),priority:a(),parentSlot:ue.nullable(),addons:l(es).readonly()}),as=t({availableEngines:l(Qo).readonly(),selectedEngine:D,slots:l(ts).readonly()}),ns=t({detections:l(Ko).readonly(),inferenceMs:a(),modelId:e()}),ee=At(()=>t({addonId:e(),modelId:e(),enabled:h().default(!0),children:l(ee).optional(),settings:b(e(),f()).optional()})),os=t({filename:e(),stepIds:l(e()).readonly().optional()}),ss=t({base64:e(),filename:e()}),is=t({filename:e(),sizeKb:a()}),cs=t({base64:e()}),rs=t({id:e(),name:e(),description:e(),available:h(),rawLabels:l(e()).readonly().optional()}),ds=t({activeBackend:e(),availableBackends:l(rs).readonly(),sampleRate:a(),chunkDurationMs:a()}),ls=t({filePath:e(),sizeMB:a(),durationMs:a()}),ps=t({success:h(),error:e().optional(),frame:R().optional()}),ms=R(),us=R(),gs=R(),hs=R(),vs=R(),da=R(),ys={name:"pipeline-executor",scope:"system",mode:"singleton",methods:{getAvailableEngines:i(m(),l(D)),getSelectedEngine:i(m(),D),getDefaultSteps:i(D,l(lt)),reprobeEngine:i(m(),D,{kind:"mutation",auth:"admin"}),getVideoPipelineSteps:i(m(),b(e(),t({modelId:e(),settings:b(e(),f()).readonly()}))),setVideoPipelineSteps:i(t({steps:b(e(),t({modelId:e(),settings:b(e(),f()).readonly()}))}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),getSchema:i(m(),as),getGlobalSteps:i(m(),l(lt).readonly().nullable()),getGlobalPipelineConfig:i(m(),ms),getOrchestratorConfigSchema:i(m(),us),listTemplates:i(m(),l(_e).readonly()),saveTemplate:i(t({name:e(),steps:l(Me).readonly(),engine:D}),_e,{kind:"mutation"}),updateTemplate:i(t({id:e(),name:e().optional(),steps:l(Me).readonly().optional()}),_e,{kind:"mutation"}),deleteTemplate:i(t({id:e()}),m(),{kind:"mutation"}),getCapabilities:i(m(),hs),getAddonModels:i(t({addonId:e()}),vs),downloadModel:i(t({addonId:e(),modelId:e(),format:dt}),ls,{kind:"mutation"}),deleteModel:i(t({addonId:e(),modelId:e(),format:dt}),t({success:I(!0)}),{kind:"mutation"}),detect:i(t({addonId:e(),frame:we,config:b(e(),f()).optional()}),ns),runPipeline:i(t({engine:D.optional(),steps:l(ee).min(1),frame:we.optional(),imageBase64:e().optional(),image:P(Uint8Array).optional(),referenceImage:e().optional(),deviceId:a().optional(),sessionId:e().optional()}),da,{kind:"mutation"}),runPipelineBatch:i(t({engine:D.optional(),steps:l(ee).min(1),frames:l(we).min(1).max(255),deviceId:a().optional(),sessionId:e().optional()}),t({results:l(da).readonly()}),{kind:"mutation"}),cacheFrameInPool:i(t({data:P(Uint8Array),width:a().int().positive(),height:a().int().positive(),format:S(["rgb","bgr","gray"])}),t({frameId:a(),width:a(),height:a()}),{kind:"mutation"}),inferCached:i(t({stepId:e(),frameId:a().int()}),b(e(),f()),{kind:"mutation"}),uncacheFrame:i(t({frameId:a().int()}),m(),{kind:"mutation"}),getEffectiveTuning:i(m(),t({batchMode:e(),windowMs:a(),maxBatchSize:a(),concurrency:a()})),listLoadedEngines:i(m(),l(t({engineKey:e(),engine:D,modelsLoaded:l(e()).readonly(),inUseByCameras:l(a()).readonly(),kind:S(["runtime","warm-override"]),poolPid:a().nullable(),idleMs:a().nullable(),idleTtlMs:a().nullable()})).readonly()),spinEngine:i(t({engine:D}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),killEngine:i(t({engine:D,force:h().optional()}),t({success:h(),reason:e().optional()}),{kind:"mutation",auth:"admin"}),listReferenceImages:i(m(),l(os).readonly()),getReferenceImage:i(t({filename:e()}),ss.nullable()),getReferenceAudioFiles:i(m(),l(is).readonly()),getReferenceAudio:i(t({filename:e()}),cs.nullable()),getAudioCapabilities:i(m(),ds),runAudioTest:i(t({addonId:e(),modelId:e(),filename:e().optional(),settings:b(e(),f()).optional()}),ps,{kind:"mutation"}),getDetectionConfigSchema:i(m(),gs)}},Ss=S(["polygon","tripwire"]),fs=t({x:a(),y:a()}),re=t({id:e(),name:e(),kind:Ss.default("polygon"),polygon:l(fs).readonly(),color:e().default("#3b82f6")}),dn={name:"zones",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{listZones:i(t({deviceId:a()}),l(re).readonly()),addZone:i(t({deviceId:a(),zone:re}),m(),{kind:"mutation",auth:"admin"}),removeZone:i(t({deviceId:a(),zoneId:e()}),m(),{kind:"mutation",auth:"admin"}),updateZone:i(t({deviceId:a(),zone:re}),m(),{kind:"mutation",auth:"admin"})},runtimeState:t({zones:l(re).readonly()})},Y={min:0,max:6e4,default:3e4,step:500},K={min:1,max:30,default:4,step:1},V={min:1,max:30,default:10,step:1},xt=S(["onboard","analyzer"]),bs=l(xt),Is=t({deviceId:a(),detected:h(),source:xt.default("analyzer"),regions:l(De).readonly().optional()}),ks=t({deviceId:a(),detectionMode:S(["disabled","always-on","on-motion"]).default("on-motion"),audioMode:S(["disabled","always-on","on-motion"]).default("always-on"),motionCooldownMs:a().min(Y.min).default(Y.default),motionFps:a().min(K.min).max(K.max).default(K.default),detectionFps:a().min(V.min).max(V.max).default(V.default),motionStreamId:e(),detectionStreamId:e(),motionSources:bs.default(["analyzer"]),pipelineEnabled:h().default(!0),engine:D.optional(),steps:l(ee).readonly().optional(),audio:t({engine:D,modelId:e(),enabled:h()}).nullable().optional(),zones:l(re).readonly().default([])}),Ep=[{key:"motionSources",type:"multiselect",label:"Motion Sources",default:["analyzer"],options:[{value:"analyzer",label:"Frame-diff Analyzer (motion addon)"},{value:"onboard",label:"Camera Onboard Sensor"}]},{key:"motionFps",type:"slider",label:"Motion FPS (analyzer)",min:K.min,max:K.max,step:K.step,default:K.default,showValue:!0,unit:"fps",showWhen:{field:"motionSources",includes:"analyzer"}},{key:"detectionFps",type:"slider",label:"Detection FPS",min:V.min,max:V.max,step:V.step,default:V.default,showValue:!0,unit:"fps"},{key:"motionCooldownMs",type:"slider",label:"Motion Cooldown",description:"Time without a fresh motion event before the active phase ends. Applies to all motion sources — every motion event re-arms the timer.",min:Y.min,max:Y.max,step:Y.step,default:Y.default,showValue:!0,unit:"s",displayScale:1e3}],ln=t({nodeId:e(),attachedCameras:a(),activeCameras:a(),avgInferenceFps:a(),avgInferenceTimeMs:a(),queueDepthTotal:a(),hardware:t({hasGpu:h(),inferenceBackend:e().optional(),cpuCores:a().optional()})}),ws=t({nodeId:e(),activeCameras:a(),throttledCameras:a(),avgInferenceTimeMs:a(),queueDepth:a()}),As={name:"pipeline-runner",scope:"system",mode:"singleton",methods:{attachCamera:i(ks,t({success:I(!0)}),{kind:"mutation"}),detachCamera:i(t({deviceId:a()}),t({success:I(!0)}),{kind:"mutation"}),reportMotion:i(Is,t({success:I(!0)}),{kind:"mutation"}),getLocalLoad:i(m(),ln),getLocalMetrics:i(m(),ws),getCameraMetrics:i(t({deviceId:a()}),Tt.nullable()),getAllCameraMetrics:i(m(),l(Zo).readonly()),getLocalCameras:i(m(),l(a()).readonly())}},la=t({detected:h(),lastDetectedAt:a().nullable(),autoClearAfterMs:a().nullable()}),Cs=t({deviceId:a(),detected:h(),timestamp:a(),source:xt,regions:l(De).readonly().optional()}),pn={name:"motion",scope:"device",mode:"singleton",deviceTypes:[C.Camera,C.Sensor],methods:{isDetected:i(t({deviceId:a()}),h())},events:{onMotionChanged:{data:Cs}},status:{schema:la,kind:"push"},runtimeState:la},mn=t({enabled:h(),lastChangedAt:a()}),Ns=mn.extend({lastFetchedAt:a()}),un={name:"motion-trigger",scope:"device",mode:"singleton",deviceTypes:[C.Light,C.Siren,C.Switch],methods:{setMotionTrigger:i(t({deviceId:a().int().nonnegative(),enabled:h()}),m(),{kind:"mutation",auth:"admin"})},events:{onMotionTriggerChanged:{data:t({deviceId:a(),enabled:h(),lastChangedAt:a()})}},status:{schema:mn,kind:"command-driven"},runtimeState:Ns},Ps=e().describe("Vendor target string (people/vehicle/pet); empty = camera default"),pt=t({targetType:Ps,stopDelaySeconds:a().int().min(0).max(300),disappearDelaySeconds:a().int().min(0).max(300)}),Ds=t({value:e(),label:e()}),Ae=t({enabled:h(),lastChangedAt:a(),currentSettings:pt.nullable(),supportedTargetTypes:l(Ds)}),Ms=Ae.extend({lastFetchedAt:a()}),gn={name:"ptz-autotrack",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getStatus:i(t({deviceId:a()}),Ae),setEnabled:i(t({deviceId:a(),enabled:h()}),m(),{kind:"mutation"}),getSettings:i(t({deviceId:a()}),pt.nullable()),setSettings:i(t({deviceId:a(),settings:pt.partial()}),m(),{kind:"mutation"})},events:{onStatusChanged:{data:t({deviceId:a(),status:Ae})}},status:{schema:Ae,kind:"command-driven"},runtimeState:Ms},pa=t({on:h(),lastChangedAt:a()}),hn={name:"switch",scope:"device",mode:"singleton",deviceTypes:[C.Switch,C.Siren,C.Light],methods:{setState:i(t({deviceId:a(),on:h()}),m(),{kind:"mutation",auth:"admin"})},events:{onStateChanged:{data:t({deviceId:a(),on:h(),lastChangedAt:a()})}},status:{schema:pa,kind:"command-driven"},runtimeState:pa,settings:{bindings:[{kind:"scalar",statusPath:"on",method:"setState",valueArg:"on",field:{label:"On",kind:"boolean"}}]}},mt=t({totalObjects:a().int().nonnegative(),byClass:b(e(),a().int().nonnegative())}),Es=mt.extend({zoneId:e(),zoneName:e(),trackIds:l(e()).readonly()}),ma=t({ts:a().int(),frameWidth:a().int().nonnegative(),frameHeight:a().int().nonnegative(),zones:l(Es).readonly(),frame:mt,unzoned:mt}),Ts=S(["minute","5min","hour"]),Ue=t({from:a().int(),to:a().int(),resolution:Ts}),Fe=t({ts:a().int(),count:a().int().nonnegative()}),vn={name:"zone-analytics",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getCurrentSnapshot:i(t({deviceId:a()}),ma.nullable()),getZoneHistory:i(t({deviceId:a(),zoneId:e(),className:e().optional()}).extend(Ue.shape),l(Fe).readonly()),getCameraHistory:i(t({deviceId:a(),className:e().optional()}).extend(Ue.shape),l(Fe).readonly()),getUnzonedHistory:i(t({deviceId:a(),className:e().optional()}).extend(Ue.shape),l(Fe).readonly())},runtimeState:ma},xs=S(["include","exclude"]),de=t({id:e(),name:e().optional(),zoneIds:l(e()).min(1).readonly(),mode:xs,classFilter:l(e()).readonly().optional(),overlapThreshold:a().min(0).max(1).optional(),bboxInclusionPct:a().min(0).max(100).optional(),preferMask:h().optional(),enabled:h().default(!0)}),Tp=l(de).readonly(),ua=S(["motion","detection"]),yn={name:"zone-rules",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{listRules:i(t({deviceId:a(),stage:ua}),l(de).readonly()),setRules:i(t({deviceId:a(),stage:ua,rules:l(de).readonly()}),m(),{kind:"mutation",auth:"admin"})},runtimeState:t({motion:l(de).readonly(),detection:l(de).readonly()})},Rs=t({connected:h(),deviceCount:a(),error:e().optional()}),xp=t({externalId:e(),name:e(),type:e(),metadata:b(e(),f()).optional()}),Ee=t({stableId:e(),type:S(C),suggestedName:e(),prefilledConfig:b(e(),f())}),Te=t({id:a(),stableId:e(),addonId:e(),type:e(),name:e(),parentDeviceId:a().nullable(),online:h(),features:l(e()),config:b(e(),f())}),ut=t({status:S(["ok","error"]),labels:l(e()).optional(),error:e().optional()}),Bs=f(),Sn={name:"device-provider",scope:"system",mode:"collection",methods:{start:i(m(),m(),{kind:"mutation"}),stop:i(m(),m(),{kind:"mutation"}),getStatus:i(m(),Rs),getDevices:i(m(),l(t({id:e(),name:e(),type:e()}))),supportsDiscovery:i(t({}),h()),discoverDevices:i(t({}),l(Ee),{kind:"mutation",auth:"admin"}),adoptDiscoveredDevice:i(t({candidate:Ee}),Te,{kind:"mutation",auth:"admin"}),supportsManualCreation:i(t({}),h()),getChildCreationSchema:i(t({type:S(C)}),Bs),createDevice:i(t({type:S(C),config:b(e(),f())}),Te,{kind:"mutation",auth:"admin"}),testCreationField:i(t({type:S(C),key:e(),value:f(),formValues:b(e(),f()).optional()}),ut,{kind:"mutation",auth:"admin"})}},qs=t({id:e(),label:e(),icon:e(),order:a().optional()}),Os=t({id:e(),title:e(),description:e().optional(),style:S(["card","accordion"]).optional(),defaultCollapsed:h().optional(),columns:M([I(1),I(2),I(3),I(4)]).optional(),tab:e().optional(),location:S(["settings","top-tab"]).optional(),order:a().optional(),fields:l(Qa())}),Q=t({tabs:l(qs).optional(),sections:l(Os)}),ga=b(e(),f()),ha=t({success:I(!0)}),zs={name:"addon-settings",scope:"system",mode:"singleton",nodeIdMode:"data",methods:{getGlobalSettings:i(t({addonId:e(),nodeId:e().optional(),overlay:b(e(),f()).optional()}),Q.nullable()),updateGlobalSettings:i(t({addonId:e(),nodeId:e().optional(),patch:ga}),ha,{kind:"mutation",auth:"admin"}),getDeviceSettings:i(t({addonId:e(),deviceId:a(),nodeId:e().optional()}),Q.nullable()),updateDeviceSettings:i(t({addonId:e(),deviceId:a(),nodeId:e().optional(),patch:ga}),ha,{kind:"mutation",auth:"admin"})}},Ls=S(["info","success","warning","error"]),_s=S(["active","in-progress","completed","failed","dismissed"]),Us=t({type:e(),id:e()}),He=t({id:e(),category:e(),severity:Ls,title:e(),message:e(),status:_s,progress:a().optional(),read:h(),createdAt:a(),updatedAt:a(),source:Us.optional(),metadata:b(e(),f()).optional()}),Fs={name:"alerts",scope:"system",mode:"singleton",methods:{emit:i(He,m(),{kind:"mutation"}),update:i(t({alertId:e(),patch:He.partial()}),m(),{kind:"mutation"}),list:i(t({unreadOnly:h().optional(),limit:a().optional()}).optional(),l(He).readonly()),getUnreadCount:i(m(),a()),markRead:i(t({alertId:e()}),m(),{kind:"mutation"}),markAllRead:i(m(),m(),{kind:"mutation"}),dismiss:i(t({alertId:e()}),m(),{kind:"mutation"})}},Hs={name:"storage",scope:"system",mode:"singleton",methods:{resolve:i(t({location:L,relativePath:e()}),e()),write:i(t({location:L,relativePath:e(),data:P(Uint8Array)}),m(),{kind:"mutation"}),read:i(t({location:L,relativePath:e()}),P(Uint8Array)),exists:i(t({location:L,relativePath:e()}),h()),list:i(t({location:L,prefix:e().optional()}),l(e()).readonly()),delete:i(t({location:L,relativePath:e()}),m(),{kind:"mutation"}),getAvailableSpace:i(t({location:L}),a().nullable()),beginUpload:i(t({location:L,relativePath:e(),sizeBytes:a().optional()}),t({uploadId:e()}),{kind:"mutation"}),writeChunk:i(t({uploadId:e(),offset:a(),data:P(Uint8Array)}),m(),{kind:"mutation"}),finalizeUpload:i(t({uploadId:e()}),m(),{kind:"mutation"}),abortUpload:i(t({uploadId:e()}),m(),{kind:"mutation"}),beginDownload:i(t({location:L,relativePath:e()}),t({downloadId:e(),sizeBytes:a()}),{kind:"mutation"}),readChunk:i(t({downloadId:e(),offset:a(),length:a()}),P(Uint8Array)),endDownload:i(t({downloadId:e()}),m(),{kind:"mutation"}),listLocations:i(t({type:X.optional()}),l(x).readonly()),getDefaultLocation:i(t({type:X}),x.nullable()),upsertLocation:i(x.omit({createdAt:!0,updatedAt:!0}),x,{kind:"mutation",auth:"admin"}),deleteLocation:i(t({id:e()}),m(),{kind:"mutation",auth:"admin"}),testLocation:i(t({id:e()}),t({ok:h(),error:e().optional()}),{auth:"admin"}),listProviders:i(m(),l(t({providerId:e(),displayName:e(),supportedLocationTypes:l(X).readonly(),configSchema:f()})).readonly()),testConfig:i(t({providerId:e(),config:b(e(),f())}),t({ok:h(),error:e().optional()}),{auth:"admin"})}},Ws=t({providerId:e().min(1),displayName:e().min(1),supportedLocationTypes:l(X).readonly(),configSchema:f()}),$s=t({ok:h(),error:e().optional()}),Ks=t({location:x,relativePath:e(),sizeBytes:a().optional()}),Vs=t({uploadId:e()}),Gs=t({uploadId:e(),offset:a(),data:P(Uint8Array)}),js=t({uploadId:e()}),Zs=t({uploadId:e()}),Ys=t({location:x,relativePath:e()}),Qs=t({downloadId:e(),sizeBytes:a()}),Js=t({downloadId:e(),offset:a(),length:a()}),Xs=t({downloadId:e()}),ei={name:"storage-provider",scope:"system",mode:"collection",internal:!0,methods:{getProviderInfo:i(m(),Ws),testLocation:i(t({config:b(e(),f())}),$s,{auth:"admin"}),resolve:i(t({location:x,relativePath:e()}),e()),write:i(t({location:x,relativePath:e(),data:P(Uint8Array)}),m(),{kind:"mutation"}),read:i(t({location:x,relativePath:e()}),P(Uint8Array)),exists:i(t({location:x,relativePath:e()}),h()),list:i(t({location:x,prefix:e().optional()}),l(e()).readonly()),delete:i(t({location:x,relativePath:e()}),m(),{kind:"mutation"}),getAvailableSpace:i(t({location:x}),a().nullable()),beginUpload:i(Ks,Vs,{kind:"mutation"}),writeChunk:i(Gs,m(),{kind:"mutation"}),finalizeUpload:i(js,m(),{kind:"mutation"}),abortUpload:i(Zs,m(),{kind:"mutation"}),beginDownload:i(Ys,Qs,{kind:"mutation"}),readChunk:i(Js,P(Uint8Array)),endDownload:i(Xs,m(),{kind:"mutation"})}},ti=t({subId:e(),displayName:e(),description:e().optional(),kind:e(),triggerSupported:h(),restoreSupported:h()}),ai=ti.extend({id:e(),addonId:e(),enabled:h(),retentionCount:a(),label:e().optional(),lastSuccessAt:a().optional(),lastSuccessSizeBytes:a().optional(),cron:e().optional(),nextRunAt:a().optional(),lastRunAt:a().optional()}),ni=t({id:e(),filename:e(),createdAt:a(),sizeBytes:a(),label:e().optional(),locations:l(e()).readonly()}),va=t({id:e(),destinationId:e().optional(),label:e().optional(),createdAt:a(),sizeBytes:a(),locations:l(e()).optional()}),oi=t({path:e(),kind:S(["file","dir","symlink"]),sizeBytes:a(),mtime:a()}),si=t({archiveVersion:I(1),createdAt:a(),dataDir:e(),locations:l(e()),entries:l(oi),totalBytes:a(),totalFiles:a()}),ii=t({name:e(),sizeBytes:a(),fileCount:a(),present:h()}),ci={name:"backup",scope:"system",mode:"singleton",methods:{listDestinations:i(m(),l(ai).readonly(),{auth:"admin"}),trigger:i(t({destinations:l(e()).optional(),locations:l(e()).optional(),label:e().optional()}).optional(),l(va).readonly(),{kind:"mutation",auth:"admin"}),list:i(m(),l(va).readonly(),{auth:"admin"}),listLocations:i(m(),l(ii).readonly(),{auth:"admin"}),getEntries:i(t({destinationId:e(),backupId:e()}),si.nullable(),{auth:"admin"}),restore:i(t({destinationId:e(),backupId:e(),locations:l(e()).optional()}),m(),{kind:"mutation",auth:"admin"}),delete:i(t({destinationId:e(),backupId:e()}),m(),{kind:"mutation",auth:"admin"}),listArchives:i(t({destinationId:e()}),l(ni).readonly(),{auth:"admin"}),upsertDestinationPolicy:i(t({locationId:e(),enabled:h(),retentionCount:a().int().min(1).max(1e3),label:e().optional(),cron:e().optional()}),m(),{kind:"mutation",auth:"admin"}),previewSchedule:i(t({cron:e(),count:a().int().min(1).max(20).optional()}),t({ok:h(),error:e().optional(),nextRuns:l(a()).readonly()}))}},ya=t({where:b(e(),f()).optional(),whereIn:b(e(),l(f())).optional(),whereBetween:b(e(),Ya([f(),f()])).optional(),orderBy:t({field:e(),direction:S(["asc","desc"])}).optional(),limit:a().optional(),offset:a().optional()}),Sa=t({id:e(),data:b(e(),f())}),ri=t({name:e(),type:S(["TEXT","INTEGER","REAL","JSON","BOOLEAN"]),primaryKey:h().optional(),notNull:h().optional(),unique:h().optional()}),di=t({name:e(),columns:l(e()).readonly(),unique:h().optional()}),li={name:"settings-store",scope:"system",mode:"singleton",methods:{get:i(t({namespace:e().optional(),collection:e(),key:e()}),f()),set:i(t({namespace:e().optional(),collection:e(),key:e(),value:f()}),m(),{kind:"mutation"}),query:i(t({namespace:e().optional(),collection:e(),filter:ya.optional()}),l(Sa).readonly()),insert:i(t({namespace:e().optional(),collection:e(),record:Sa}),m(),{kind:"mutation"}),update:i(t({namespace:e().optional(),collection:e(),id:e(),data:b(e(),f())}),m(),{kind:"mutation"}),delete:i(t({namespace:e().optional(),collection:e(),key:e()}),m(),{kind:"mutation"}),count:i(t({namespace:e().optional(),collection:e(),filter:ya.optional()}),a()),isEmpty:i(t({namespace:e().optional(),collection:e()}),h()),declareCollection:i(t({namespace:e().optional(),collection:e(),columns:l(ri).readonly(),indexes:l(di).readonly().optional()}),m(),{kind:"mutation"})}},fn=S(["debug","info","warn","error"]),fa=t({timestamp:at(),level:fn,scope:l(e()),message:e(),meta:b(e(),f()).optional(),tags:b(e(),e()).optional()}),pi={name:"log-destination",scope:"system",mode:"collection",internal:!0,methods:{write:i(fa,m(),{kind:"mutation"}),query:i(t({scope:l(e()).optional(),level:fn.optional(),since:at().optional(),until:at().optional(),limit:a().optional(),tags:b(e(),e()).optional()}),l(fa).readonly())}},mi=t({staticDir:e()}),ui=t({version:e()}),gi={name:"admin-ui",scope:"system",mode:"singleton",internal:!0,methods:{getStaticDir:i(m(),mi),getVersion:i(m(),ui)}},ba=t({userId:e(),username:e(),isAdmin:h(),provider:e(),email:e().optional(),displayName:e().optional(),hubUrl:e().optional()}),hi={name:"sso-bridge",scope:"system",mode:"singleton",internal:!0,methods:{signBridgeToken:i(t({claims:ba,ttlSec:a().int().positive().optional()}),t({token:e()})),verifyBridgeToken:i(t({token:e()}),ba.nullable())}},vi=t({credentialId:e(),label:e(),createdAt:a(),lastUsedAt:a().nullable(),transports:l(e()).default([])}),yi={name:"user-passkeys",scope:"system",mode:"collection",internal:!0,methods:{beginRegistration:i(t({userId:e(),username:e()}),t({optionsJSON:b(e(),f())}),{kind:"mutation",auth:"admin",access:"create"}),finishRegistration:i(t({userId:e(),response:b(e(),f()),label:e()}),t({success:I(!0),credentialId:e()}),{kind:"mutation",auth:"admin",access:"create"}),beginAuthentication:i(t({userId:e().optional()}),t({optionsJSON:b(e(),f())}),{kind:"mutation",access:"view"}),finishAuthentication:i(t({userId:e(),response:b(e(),f())}),t({verified:h()}),{kind:"mutation",access:"view"}),listPasskeys:i(t({userId:e()}),l(vi),{auth:"admin"}),removePasskey:i(t({userId:e(),credentialId:e()}),t({success:I(!0)}),{kind:"mutation",auth:"admin",access:"delete"})}},J=jn(),Si=t({to:M([J,l(J).min(1)]),cc:l(J).optional(),bcc:l(J).optional(),from:e().optional(),replyTo:e().optional(),subject:e(),text:e(),html:e().optional()}),fi=t({messageId:e(),accepted:l(J).default([]),rejected:l(J).default([])}),Ia=t({ready:h(),host:e(),error:e().optional(),lastVerifiedAt:a().optional()}),bi={name:"smtp-provider",scope:"system",mode:"collection",internal:!0,providerKind:"email",methods:{sendEmail:i(Si,fi,{kind:"mutation",auth:"admin",access:"create"}),verify:i(m(),Ia,{kind:"mutation",auth:"admin",access:"view"}),getStatus:i(m(),Ia,{auth:"admin"})}},Ii=S(["external","embedded"]),ki=S(["connected","disconnected","auth-failed","unreachable","tls-error"]),wi=t({id:e(),name:e(),url:e(),kind:Ii,status:ki,latencyMs:a().nullable(),error:e().optional(),connectedClients:a().int().nonnegative().optional(),lastCheckedAt:a().optional()}),Ai=t({url:e(),username:e().optional(),password:e().optional(),clientIdPrefix:e().optional()}),Ci=t({name:e().min(1),url:e().regex(/^(mqtt|mqtts|ws|wss):\/\//,"URL must start with mqtt(s):// or ws(s)://"),username:e().optional(),password:e().optional(),clientIdPrefix:e().optional()}),Ni=t({id:e()}),Se=t({id:e()}),Pi=Ct("ok",[t({ok:I(!0),latencyMs:a()}),t({ok:I(!1),error:e()})]),Di=t({port:a().int().min(1).max(65535).default(1883),allowAnonymous:h().default(!1),username:e().optional(),password:e().optional()}),Mi=t({id:e(),url:e()}),ka=t({brokerCount:a(),embeddedRunning:h()}),Ei={name:"mqtt-broker",scope:"system",mode:"collection",providerKind:"broker",status:{schema:ka,kind:"poll"},methods:{listBrokers:i(m(),l(wi)),getBrokerConfig:i(Se,Ai),addBroker:i(Ci,Ni,{kind:"mutation"}),removeBroker:i(Se,m(),{kind:"mutation"}),testConnection:i(Se,Pi,{kind:"mutation"}),startEmbeddedBroker:i(Di,Mi,{kind:"mutation"}),stopEmbeddedBroker:i(Se,m(),{kind:"mutation"}),getStatus:i(m(),ka)}},Ti=S(["unlinked","linked","error"]),xi=t({label:e(),value:e(),secret:h().optional()}),Ri=t({qr:e().optional(),fields:l(xi).readonly().optional(),note:e().optional()}),wa=t({linkState:Ti,exposedDeviceCount:a(),error:e().optional(),setup:Ri.optional()}),Bi=e(),qi=t({deviceId:e(),exposedAs:e().optional(),capabilities:l(e()).optional()}),Oi=t({deviceId:e(),capabilities:l(e()).optional()}),zi=t({deviceId:e()}),Li={name:"device-export",scope:"system",mode:"collection",providerKind:"device-export",status:{schema:wa,kind:"poll"},exposesDeviceSettings:!0,methods:{getStatus:i(m(),wa),listSupportedDeviceKinds:i(m(),l(Bi)),listExposedDevices:i(m(),l(qi)),exposeDevice:i(Oi,m(),{kind:"mutation"}),unexposeDevice:i(zi,m(),{kind:"mutation"})}},_i=t({id:e(),label:e(),icon:e(),path:e(),remoteName:e(),bundle:e()}),Ui=t({addonId:e(),page:_i,bundleUrl:e()}),Fi={name:"addon-pages",scope:"system",mode:"singleton",methods:{listPages:i(m(),l(Ui).readonly())}},Hi=t({id:e(),label:e(),icon:e(),path:e(),remoteName:e(),bundle:e()}),Wi={name:"addon-pages-source",scope:"system",mode:"collection",internal:!0,methods:{listPages:i(m(),l(Hi).readonly())}},$i=S(["device-tab","dashboard","integration-detail"]),Aa=S(["xs","sm","md","lg","xl"]),bn=t({stableId:e(),label:e(),description:e().optional(),icon:e().optional(),remoteName:e(),bundle:e(),hosts:l($i).readonly(),requires:t({deviceContext:h().default(!1),integrationContext:h().default(!1)}),defaultSize:Aa.default("md"),allowedSizes:l(Aa).readonly().default(["sm","md","lg"]),defaultColumns:a().int().min(1).max(12).default(6),defaultRows:a().int().min(1).max(12).default(1)}),Ki={name:"addon-widgets-source",scope:"system",mode:"collection",internal:!0,methods:{listWidgets:i(m(),l(bn).readonly())}},Vi=bn.extend({addonId:e(),bundleUrl:e()}),Gi={name:"addon-widgets",scope:"system",mode:"singleton",methods:{listWidgets:i(m(),l(Vi).readonly())}},ji=t({method:S(["GET","POST","PUT","DELETE","PATCH"]),path:e(),access:S(["public","authenticated","admin"]).optional(),description:e().optional()}),Zi=t({method:e(),path:e(),params:b(e(),e()),query:b(e(),e()),body:f(),headers:b(e(),e()),user:t({id:e(),username:e(),isAdmin:h()}).optional(),scopedToken:f().optional()}),Yi=t({status:a().int(),headers:b(e(),e()),redirectUrl:e().nullable(),body:f().optional(),contentType:e().optional()}),Qi={name:"addon-routes",scope:"system",mode:"collection",internal:!0,methods:{getRoutes:i(m(),l(ji)),invoke:i(Zi,Yi,{kind:"mutation"})}},Rp=[{value:"auto",label:"Auto (defer to probed best)"},{value:"none",label:"Off (software)"},{value:"videotoolbox",label:"VideoToolbox (macOS)"},{value:"cuda",label:"CUDA (NVIDIA)"},{value:"nvdec",label:"NVDEC (NVIDIA legacy)"},{value:"vaapi",label:"VAAPI (Linux Intel/AMD)"},{value:"qsv",label:"QuickSync (Intel)"},{value:"d3d11va",label:"D3D11VA (Windows)"},{value:"dxva2",label:"DXVA2 (Windows legacy)"},{value:"amf",label:"AMF (AMD)"},{value:"vdpau",label:"VDPAU (Linux NVIDIA legacy)"},{value:"drm",label:"DRM (Linux generic)"}],Bp={hwaccel:"auto",probedBestHwaccel:""},Ji={name:"decoder",scope:"system",mode:"singleton",methods:{supportsCodec:i(t({codec:e()}),h()),getInfo:i(m(),t({id:e(),name:e(),isPullMode:h().optional(),priority:a().optional()})),createSession:i(aa,t({sessionId:e(),nodeId:e()})),destroySession:i(t({sessionId:e()}),m()),pushPacket:i(t({sessionId:e(),packet:Po}),m()),openStream:i(t({sessionId:e(),url:e()}),m()),pullFrames:i(t({sessionId:e(),maxCount:a().default(1)}),l(Do)),updateConfig:i(t({sessionId:e(),config:aa.partial()}),m()),getStats:i(t({sessionId:e()}),ro),listActiveSessions:i(m(),l(t({sessionId:e(),codec:e(),outputFormat:e(),createdAtMs:a()})).readonly()),reprobeHwaccel:i(m(),t({backend:e()}),{kind:"mutation",auth:"admin"})}},Xi=t({streamId:e(),label:e().optional(),codec:e(),type:S(["video","audio"]),sourceUrl:e()}),ec=t({streamId:e(),format:e(),value:e()}),tc={name:"restreamer",scope:"system",mode:"collection",internal:!0,methods:{registerDevice:i(t({deviceId:a(),streams:l(Xi).readonly()}),m(),{kind:"mutation"}),unregisterDevice:i(t({deviceId:a()}),m(),{kind:"mutation"}),getExposedResources:i(t({deviceId:a()}),l(ec).readonly())}},In=t({viewportWidth:a().int().positive().optional(),viewportHeight:a().int().positive().optional(),devicePixelRatio:a().positive().optional(),downlinkMbps:a().nonnegative().optional(),prefersTier:e().optional()}).partial(),ac={name:"webrtc",scope:"system",mode:"collection",internal:!0,methods:{handleOffer:i(t({streamId:e(),sdpOffer:e()}),e(),{kind:"mutation"}),supportsStream:i(t({streamId:e()}),h()),registerStream:i(t({streamId:e(),codec:e()}),m(),{kind:"mutation"}),unregisterStream:i(t({streamId:e()}),m(),{kind:"mutation"}),createSession:i(t({streamId:e(),hints:In.optional()}),t({sessionId:e(),sdpOffer:e()}),{kind:"mutation"}),handleAnswer:i(t({sessionId:e(),sdpAnswer:e()}),m(),{kind:"mutation"}),closeSession:i(t({sessionId:e()}),m(),{kind:"mutation"}),hasAdaptiveBitrate:i(t({streamId:e()}),h())}},gt=Ct("kind",[t({kind:I("adaptive")}),t({kind:I("profile"),profile:$}),t({kind:I("cam-stream"),camStreamId:e().min(1)})]),nc=t({id:e(),label:e(),target:gt,codec:e().nullable(),resolution:t({width:a(),height:a()}).nullable(),status:S(["idle","connecting","streaming","error","stopped"]).nullable(),inputFps:a().nullable(),decodeFps:a().nullable(),bitrateKbps:a().nullable()}),oc={name:"webrtc-session",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{listStreams:i(t({deviceId:a().int().nonnegative()}),l(nc)),createSession:i(t({deviceId:a().int().nonnegative(),target:gt,hints:In.optional()}),t({sessionId:e(),sdpOffer:e()}),{kind:"mutation"}),handleOffer:i(t({deviceId:a().int().nonnegative(),target:gt.optional(),sdpOffer:e(),sessionId:e().optional()}),t({sessionId:e(),sdpAnswer:e()}),{kind:"mutation"}),handleAnswer:i(t({deviceId:a().int().nonnegative(),sessionId:e(),sdpAnswer:e()}),m(),{kind:"mutation"}),closeSession:i(t({deviceId:a().int().nonnegative(),sessionId:e()}),m(),{kind:"mutation"}),hasAdaptiveBitrate:i(t({deviceId:a().int().nonnegative(),profile:$}),h())}},Ce=t({engine:D,steps:l(ee).readonly(),audio:t({engine:D,modelId:e(),enabled:h(),settings:b(e(),f()).readonly().optional()}).nullable().optional()}),We=t({id:e(),name:e(),description:e().optional(),config:Ce,createdAt:e(),updatedAt:e()}),kn=t({enabled:h(),modelId:e(),settings:b(e(),f()).readonly()}),Ca=t({addonDefaults:b(e(),kn).readonly()}),wn=t({steps:l(ee).readonly(),audio:t({modelId:e(),enabled:h()}).nullable()}),ht=t({enabled:h().optional(),modelId:e().optional(),settings:b(e(),f()).readonly().optional()}),sc=t({pinnedAgentNodeId:e().optional(),stepToggles:b(e(),h()).optional(),stepOverridesByAgent:b(e(),b(e(),ht)).optional(),pipelineByAgent:b(e(),wn).optional()}),Na=t({deviceId:a(),agentNodeId:e(),pinned:h(),reason:S(["manual","capacity","hardware-affinity","failover","rebalance"]),assignedAt:a()}),Pa=t({deviceId:a(),decoderNodeId:e(),pinned:h(),reason:S(["manual","co-located","capacity","hardware-affinity"])}),ic=t({nodeId:e(),online:h(),load:ln,score:a()}),cc=t({totalAgents:a(),onlineAgents:a(),totalCameras:a(),attachedCameras:a(),activeCameras:a(),avgInferenceTimeMs:a(),queueDepth:a()}),rc=b(e(),e()),dc={name:"pipeline-orchestrator",scope:"system",mode:"singleton",exposesDeviceSettings:!0,methods:{assignPipeline:i(t({deviceId:a(),agentNodeId:e()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),unassignPipeline:i(t({deviceId:a()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),rebalance:i(m(),t({migrated:a()}),{kind:"mutation",auth:"admin"}),getPipelineAssignments:i(m(),l(Na).readonly()),getPipelineAssignment:i(t({deviceId:a()}),Na.nullable()),getAgentLoad:i(m(),l(ic).readonly()),getGlobalMetrics:i(m(),cc),getCameraMetrics:i(t({deviceId:a()}),Tt.nullable()),getCapabilityBindings:i(t({nodeId:e()}),rc),setCapabilityBinding:i(t({nodeId:e(),capName:e(),addonId:e()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),assignDecoder:i(t({deviceId:a(),nodeId:e()}),m(),{kind:"mutation",auth:"admin"}),unassignDecoder:i(t({deviceId:a()}),m(),{kind:"mutation",auth:"admin"}),getDecoderAssignments:i(m(),l(Pa).readonly()),assignAudio:i(t({deviceId:a(),nodeId:e()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),unassignAudio:i(t({deviceId:a()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),getAudioAssignment:i(t({deviceId:a()}),t({nodeId:e(),pinned:h(),assignedAt:a()}).nullable()),getAudioNodeLoad:i(m(),l(t({nodeId:e(),deviceCount:a()}))),getAudioAssignments:i(m(),l(t({deviceId:a(),nodeId:e(),pinned:h(),assignedAt:a()}))),getDecoderAssignment:i(t({deviceId:a(),pipelineNodeId:e().optional()}),Pa),getAgentSettings:i(t({agentNodeId:e()}),Ca.nullable()),listAgentSettings:i(m(),l(t({nodeId:e(),settings:Ca})).readonly()),setAgentAddonDefaults:i(t({agentNodeId:e(),defaults:b(e(),kn)}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),removeAgentSettings:i(t({agentNodeId:e()}),t({success:h(),removed:h()}),{kind:"mutation",auth:"admin"}),getCameraSettings:i(t({deviceId:a()}),sc.nullable()),setCameraStepToggle:i(t({deviceId:a(),addonId:e(),enabled:h().nullable()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),getCameraStepOverrides:i(t({deviceId:a()}),b(e(),b(e(),ht)).nullable()),setCameraStepOverride:i(t({deviceId:a(),agentNodeId:e(),addonId:e(),patch:ht.nullable()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),setCameraPipelineForAgent:i(t({deviceId:a(),agentNodeId:e(),pipeline:wn.nullable()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),resolvePipeline:i(t({deviceId:a(),agentNodeId:e().optional()}),Ce),listTemplates:i(m(),l(We).readonly()),saveTemplate:i(t({name:e(),description:e().optional(),config:Ce}),We,{kind:"mutation",auth:"admin"}),updateTemplate:i(t({id:e(),name:e().optional(),description:e().optional(),config:Ce.optional()}),We,{kind:"mutation",auth:"admin"}),deleteTemplate:i(t({id:e()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"})}},lc=t({level:Vo,classification:t({labels:l(rt).readonly(),inferenceMs:a()}).optional(),timestamp:a()}),pc=t({minConfidence:a().min(0).max(1).default(.3),allowedClasses:l(e()).default([])}),mc=t({labels:l(rt).readonly(),rawLabels:l(rt).readonly().optional(),inferenceMs:a()}),qp=[{value:"auto",label:"Auto (platform default)"},{value:"apple-soundanalysis",label:"Apple SoundAnalysis (macOS 12+)"},{value:"yamnet-onnx",label:"YAMNet ONNX (cross-platform)"}],Op={audioBackend:"auto",probedBestAudioBackend:"",selectedAudioModel:""},uc={name:"audio-analyzer",scope:"system",mode:"singleton",methods:{analyseChunk:i(t({chunk:ra,settings:pc}),lc.nullable(),{kind:"mutation"}),classify:i(ra,mc,{timeoutMs:3e4}),isReady:i(m(),h()),dispose:i(m(),m(),{kind:"mutation"}),reprobeAudioEngine:i(m(),t({backend:e()}),{kind:"mutation",auth:"admin"})}},gc={name:"audio-analysis",scope:"device",mode:"singleton",deviceTypes:[C.Camera],exposesDeviceSettings:!0,methods:{resolveDeviceSettings:i(t({deviceId:a()}),R())},events:{onAudioLevel:G(t({deviceId:a(),rms:a(),dbfs:a()}))}},Re=S(["f32le","s16le"]),hc=t({codec:e(),canDecode:h(),canEncode:h(),label:e().optional()}),vc=t({codec:e(),sourceSampleRate:a().int().positive(),sourceChannels:a().int().positive(),extraData:P(Uint8Array).optional(),targetSampleRate:a().int().positive(),targetChannels:a().int().positive(),targetFormat:Re.optional(),idleMs:a().int().positive().optional(),tag:e().optional()}),yc=t({codec:e(),sourceSampleRate:a().int().positive(),sourceChannels:a().int().positive(),sourceFormat:Re.optional(),targetSampleRate:a().int().positive(),targetChannels:a().int().positive(),bitrateKbps:a().int().positive().optional(),idleMs:a().int().positive().optional(),tag:e().optional()}),Sc=t({data:P(Uint8Array),sampleRate:a().int().positive(),channels:a().int().positive(),format:Re,pts:a()}),Da=t({data:P(Uint8Array),codec:e(),pts:a(),frameComplete:h()}),fc=t({sessionId:e(),kind:S(["decode","encode"]),codec:e(),sourceSampleRate:a(),sourceChannels:a(),targetSampleRate:a(),targetChannels:a(),format:Re,tag:e().optional(),createdAtMs:a(),lastActivityMs:a(),framesIn:a(),framesOut:a()}),bc={name:"audio-codec",scope:"system",mode:"singleton",methods:{listSupportedCodecs:i(m(),l(hc).readonly()),canHandle:i(t({codec:e(),kind:S(["decode","encode"])}),h()),createDecodeSession:i(vc,t({sessionId:e(),nodeId:e()}),{kind:"mutation"}),createEncodeSession:i(yc,t({sessionId:e(),nodeId:e()}),{kind:"mutation"}),closeSession:i(t({sessionId:e(),nodeId:e().optional()}),m(),{kind:"mutation"}),pushEncodedFrame:i(t({sessionId:e(),nodeId:e().optional(),data:P(Uint8Array),pts:a().optional()}),m(),{kind:"mutation"}),pullPcm:i(t({sessionId:e(),nodeId:e().optional(),maxCount:a().int().positive().default(8)}),l(Sc)),pushPcm:i(t({sessionId:e(),nodeId:e().optional(),data:P(Uint8Array),pts:a().optional()}),m(),{kind:"mutation"}),pullEncoded:i(t({sessionId:e(),nodeId:e().optional(),maxCount:a().int().positive().default(8)}),l(Da)),flushEncode:i(t({sessionId:e(),nodeId:e().optional()}),l(Da),{kind:"mutation"}),listActiveSessions:i(m(),l(fc).readonly())}},Ma=t({embedding:l(a()),inferenceMs:a()}),Ic=t({modelId:e(),embeddingDim:a(),ready:h()}),kc={name:"embedding-encoder",scope:"system",mode:"collection",internal:!0,methods:{encode:i(t({crop:P(Uint8Array),width:a(),height:a()}),Ma),encodeText:i(t({text:e()}),Ma),getInfo:i(m(),Ic)}},$e=t({id:a(),stableId:e(),addonId:e(),type:S(C),name:e(),location:e().nullable(),disabled:h(),parentDeviceId:a().nullable(),role:e().nullable().optional(),online:h(),features:l(e()),isCamera:h(),config:b(e(),f()),metadata:b(e(),f()).nullable().optional()}),wc=t({key:e(),value:f(),description:e().optional()}),Ac=t({id:a(),stableId:e(),type:e(),name:e(),location:e().nullable(),disabled:h(),parentDeviceId:a().nullable(),role:e().nullable().optional()}),Cc=t({id:a(),stableId:e(),addonId:e(),type:e(),name:e(),location:e().nullable(),disabled:h(),parentDeviceId:a().nullable(),metadata:b(e(),f()).nullable().optional()}),Nc=f().nullable(),Pc=t({streamId:e(),width:a().optional(),height:a().optional(),codec:e().optional(),fps:a().optional(),bitrateKbps:a().optional()}),Dc=t({addonId:e(),stableId:e(),id:a(),type:e(),name:e(),location:e().nullable().optional(),disabled:h().optional(),parentDeviceId:a().nullable(),role:e().nullable().optional(),features:l(e()).optional(),config:b(e(),f())}),Mc=t({deviceId:a()}),Ec=t({deviceId:a(),data:b(e(),f())}),Tc={name:"device-manager",scope:"system",mode:"singleton",methods:{allocateDeviceId:i(t({addonId:e(),stableId:e()}),t({id:a()}),{kind:"mutation"}),registerDevice:i(Dc,m(),{kind:"mutation"}),removeDevice:i(Mc,m(),{kind:"mutation"}),persistConfig:i(Ec,m(),{kind:"mutation"}),loadConfig:i(t({deviceId:a()}),b(e(),f())),loadRuntimeState:i(t({deviceId:a()}),b(e(),f())),loadMeta:i(t({deviceId:a()}),Cc.nullable()),setName:i(t({deviceId:a(),name:e()}),m(),{kind:"mutation",auth:"admin"}),setLocation:i(t({deviceId:a(),location:e().nullable()}),m(),{kind:"mutation",auth:"admin"}),setMetadata:i(t({deviceId:a(),patch:b(e(),f())}),m(),{kind:"mutation",auth:"admin"}),listLocations:i(m(),l(e())),addLocation:i(t({name:e()}),m(),{kind:"mutation",auth:"admin"}),removeLocation:i(t({name:e(),cascade:h().optional()}),m(),{kind:"mutation",auth:"admin"}),setDisabled:i(t({deviceId:a(),disabled:h()}),m(),{kind:"mutation",auth:"admin"}),listPersistedByAddon:i(t({addonId:e()}),l(Ac)),listAll:i(t({addonId:e().optional()}),l($e)),getDevice:i(t({deviceId:a()}),$e.nullable()),getChildren:i(t({parentDeviceId:a()}),l($e)),getStreamSources:i(t({deviceId:a()}),l(No)),getConfigSchema:i(t({deviceId:a()}),l(wc)),getSettingsSchema:i(t({deviceId:a()}),Nc),updateConfig:i(t({deviceId:a(),values:b(e(),f())}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),enable:i(t({deviceId:a()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),disable:i(t({deviceId:a()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),remove:i(t({deviceId:a()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),getStreamProfileMap:i(t({deviceId:a()}),b(e(),e().nullable())),setStreamProfileMap:i(t({deviceId:a(),profileMap:b(e(),e().nullable())}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),probeStreams:i(t({deviceId:a()}),l(Pc),{kind:"mutation",auth:"admin"}),getBindings:i(t({deviceId:a()}),t({deviceId:a(),entries:l(t({capName:e(),kind:S(["native","wrapped"]),providerAddonId:e(),providerNodeId:e(),nativeAddonId:e()}))})),getAllBindings:i(t({}),l(t({deviceId:a(),entries:l(t({capName:e(),kind:S(["native","wrapped"]),providerAddonId:e(),providerNodeId:e(),nativeAddonId:e()}))}))),setWrapperActive:i(t({deviceId:a(),capName:e(),wrapperAddonId:e(),active:h()}),m(),{kind:"mutation",auth:"admin"}),listWrappersForCap:i(t({capName:e()}),l(e())),listBindableCapsForDeviceType:i(t({deviceType:e()}),l(t({capName:e(),wrappers:l(e())}))),getDeviceSettingsAggregate:i(t({deviceId:a()}),Q.nullable()),getDeviceLiveInfoAggregate:i(t({deviceId:a()}),Q.nullable()),getDeviceAggregate:i(t({deviceId:a()}),t({settings:Q.nullable(),live:Q.nullable()})),updateDeviceField:i(t({deviceId:a(),writerCapName:e(),writerAddonId:e(),key:e(),value:f()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),updateDeviceFieldsBatch:i(t({deviceId:a(),changes:l(t({writerCapName:e(),writerAddonId:e(),key:e(),value:f()}))}),t({success:I(!0),failures:l(t({writerCapName:e(),writerAddonId:e(),error:e()}))}),{kind:"mutation",auth:"admin"}),discoverDevices:i(t({addonId:e()}),l(Ee),{kind:"mutation",auth:"admin"}),adoptDevice:i(t({addonId:e(),candidate:Ee}),Te,{kind:"mutation",auth:"admin"}),getCreationSchema:i(t({addonId:e(),type:S(C)}),f().nullable()),createDevice:i(t({addonId:e(),type:S(C),config:b(e(),f())}),Te,{kind:"mutation",auth:"admin"}),testCreationField:i(t({addonId:e(),type:S(C),key:e(),value:f(),formValues:b(e(),f()).optional()}),ut,{kind:"mutation",auth:"admin"}),testField:i(t({deviceId:a(),key:e(),value:f()}),ut,{kind:"mutation",auth:"admin"}),getDeviceStatusAggregate:i(t({deviceId:a(),caps:l(e()).readonly().optional()}),b(e(),f().nullable()))}},xc={name:"device-state",scope:"system",mode:"singleton",methods:{getSnapshot:i(t({deviceId:a()}),b(e(),b(e(),f()))),getCapSlice:i(t({deviceId:a(),capName:e()}),b(e(),f()).nullable()),getAllSnapshots:i(t({}),b(e(),b(e(),b(e(),f())))),setCapSlice:i(t({deviceId:a(),capName:e(),slice:b(e(),f())}),m(),{kind:"mutation"})},events:{onChanged:G(t({deviceId:a(),capName:e(),slice:b(e(),f())}))}},Ke=t({userId:e(),username:e(),email:e().optional(),displayName:e().optional(),isAdmin:h().default(!1)}),Rc={name:"auth-provider",scope:"system",mode:"collection",internal:!0,methods:{validateCredentials:i(t({username:e(),password:e()}),Ke.nullable(),{kind:"mutation"}),getLoginUrl:i(t({state:e()}),e()),handleCallback:i(b(e(),e()),Ke,{kind:"mutation"}),validateToken:i(t({token:e()}),Ke.nullable())}},xe=t({url:e(),hostname:e(),port:a(),protocol:S(["http","https"])}),Bc=t({connected:h(),endpoint:xe.nullable(),error:e().optional()}),qc=xe.extend({id:e(),label:e(),mode:e().optional(),sourcePort:a().optional()}),Oc={name:"network-access",scope:"system",mode:"collection",providerKind:"ingress",methods:{start:i(m(),xe,{kind:"mutation"}),stop:i(m(),m(),{kind:"mutation"}),getEndpoint:i(m(),xe.nullable()),getStatus:i(m(),Bc),listEndpoints:i(m(),l(qc).readonly())}},zc=t({urls:M([e(),l(e())]),username:e().optional(),credential:e().optional()}),Lc={name:"turn-provider",scope:"system",mode:"collection",methods:{getTurnServers:i(m(),l(zc).readonly())}},An=t({base64:e(),contentType:e()}),_c=t({lastCapturedAt:a().nullable(),cacheAgeMs:a().nullable(),lastBytes:a().nullable(),lastStreamId:e().nullable()}),Uc={name:"snapshot",scope:"device",mode:"singleton",deviceTypes:[C.Camera],exposesDeviceSettings:!0,methods:{getSnapshot:i(t({deviceId:a(),streamId:e().optional(),force:h().optional()}),An.nullable()),invalidateCache:i(t({deviceId:a()}),m(),{kind:"mutation",auth:"admin"})},status:{schema:_c,kind:"poll"}},Fc={name:"snapshot-provider",scope:"system",mode:"collection",methods:{supportsDevice:i(t({deviceId:a()}),h()),getSnapshot:i(t({deviceId:a(),streamId:e().optional()}),An.nullable())}},Hc=t({title:e(),body:e(),imageUrl:e().optional(),deviceId:a().optional(),eventId:e().optional(),priority:S(["low","normal","high","critical"]).default("normal"),metadata:b(e(),f()).optional()}),Wc={name:"notification-output",scope:"system",mode:"collection",methods:{send:i(Hc,m(),{kind:"mutation"}),sendTest:i(m(),t({success:h(),error:e().optional()}),{kind:"mutation"})}},$c=t({deviceIds:l(a()).readonly().optional(),classNames:l(e()).readonly().optional(),zoneIds:l(e()).readonly().optional(),minConfidence:a().optional(),source:S(["pipeline","onboard","any"]).optional(),schedule:t({days:l(a()).readonly(),startHour:a(),endHour:a()}).optional(),cooldownSeconds:a().optional(),minDwellSeconds:a().optional()}),Kc=t({title:e(),body:e(),imageMode:S(["crop","annotated","full","none"])}),Ea=t({id:e(),name:e(),enabled:h(),eventTypes:l(e()).readonly(),conditions:$c,outputs:l(e()).readonly(),template:Kc.optional(),priority:S(["low","normal","high","critical"])}),Vc=t({ruleId:e(),eventId:e(),timestamp:a(),wouldFire:h(),reason:e().optional()}),Gc=t({id:e(),ruleId:e(),ruleName:e(),eventId:e(),timestamp:a(),outputs:l(e()).readonly(),success:h(),error:e().optional(),deviceId:a().optional()}),jc=t({ruleId:e().optional(),deviceId:a().optional(),from:a().optional(),to:a().optional(),limit:a().optional()}),Zc={name:"advanced-notifier",scope:"system",mode:"singleton",internal:!0,methods:{getRules:i(m(),t({rules:l(Ea).readonly()})),upsertRule:i(t({rule:Ea}),t({success:I(!0)}),{kind:"mutation"}),deleteRule:i(t({ruleId:e()}),t({success:I(!0)}),{kind:"mutation"}),testRule:i(t({ruleId:e(),lookbackMinutes:a()}),t({results:l(Vc).readonly()}),{kind:"mutation"}),getHistory:i(t({filter:jc.optional()}),t({entries:l(Gc).readonly()}))}},Cn=S(["continuous","motion","scheduled","composite"]),Yc=t({streamId:e(),mode:S(["always","inherit"])}),Qc=t({days:l(a()).readonly(),startTime:e(),endTime:e(),mode:S(["continuous","motion"])}),ge=t({deviceId:a(),mode:Cn,streams:l(Yc).readonly(),enabled:h(),preBufferSec:a(),postBufferSec:a(),scheduleRules:l(Qc).readonly().optional()}),Nn=S(["recording:main","recording:mid","recording:sub","thumbnail:scrub","thumbnail:event"]),vt=t({deviceId:a(),dataCategory:Nn,storageName:e(),subDirectory:e(),retentionDays:a().nullable(),retentionGb:a().nullable()}),Jc=t({id:e(),deviceId:a(),streamId:e(),startTime:a(),endTime:a(),duration:a(),path:e(),storageName:e(),subDirectory:e(),sizeBytes:a(),codec:S(["h264","h265"]),hasAudio:h()}),Xc=t({deviceId:a(),timestamp:a(),path:e(),storageName:e(),subDirectory:e(),sizeBytes:a(),category:S(["scrub","event"])}),er=t({startTime:a(),endTime:a(),streams:l(e()).readonly()}),tr=t({totalBytes:a(),segmentCount:a()}),ar=t({bitrateKbps:a(),retentionDays:a().nullable(),retentionGb:a().nullable(),estimatedGb:a(),estimatedDaysAtCapacity:a().nullable()}),Ta=t({perStream:b(e(),ar),thumbnails:t({estimatedGb:a()}),totalEstimatedGb:a(),motionEstimate:t({avgEventsPerDay:a(),avgDurationSec:a(),dutyCyclePercent:a()}).optional()}),nr=t({totalEvents:a(),avgDurationSec:a(),avgEventsPerDay:a(),dutyCyclePercent:a()}),fe=t({deviceId:a()}),or=t({deviceId:a(),policy:ge.omit({deviceId:!0}),storageOverrides:l(vt.omit({deviceId:!0})).readonly().optional(),ffmpegOverrides:b(e(),f()).optional()}),xa=t({deviceId:a(),startTime:a(),endTime:a()}),sr=t({deviceId:a(),streamId:e(),startTime:a(),endTime:a()}),ir=t({deviceId:a(),streamId:e(),startTime:a(),endTime:a(),live:h().optional()}),cr=t({deviceId:a(),timestamp:a(),category:e().optional()}),rr=t({deviceId:a(),streamId:e()}),dr=t({deviceId:a(),motionInput:t({avgEventsPerDay:a(),avgDurationSec:a()}).optional()}),lr=t({deviceId:a(),dataCategory:Nn}),pr=t({deviceId:a(),policy:ge.omit({deviceId:!0})}),mr=t({deviceId:a(),policy:ge.omit({deviceId:!0}),ffmpegOverrides:b(e(),f()).optional()}),ur={name:"recording-engine",scope:"system",mode:"singleton",methods:{getStatus:i(m(),t({activeRecordings:a(),totalSegments:a(),totalSizeMB:a()})),enable:i(or,m(),{kind:"mutation",auth:"admin"}),disable:i(fe,m(),{kind:"mutation",auth:"admin"}),getConfig:i(fe,ge.nullable()),updateConfig:i(mr,m(),{kind:"mutation",auth:"admin"}),getPlaylist:i(ir,e()),getThumbnail:i(cr,Xc.nullable()),getSegments:i(sr,l(Jc).readonly()),getAvailability:i(xa,l(er).readonly()),estimateStorage:i(dr,Ta),estimateGlobalStorage:i(m(),Ta),getStorageUsage:i(rr,tr),setPolicy:i(pr,m(),{kind:"mutation",auth:"admin"}),getPolicy:i(fe,ge.nullable()),getPolicyStatus:i(fe,t({deviceId:a(),enabled:h(),mode:Cn,activeStreams:a()}).nullable()),getRetentionConfig:i(lr,vt.nullable()),updateRetentionConfig:i(vt,m(),{kind:"mutation",auth:"admin"}),getMotionStats:i(xa,nr)}},gr={name:"detection-pipeline",scope:"device",mode:"singleton",deviceTypes:[C.Camera],exposesDeviceSettings:!0,methods:{}},Rt=S(["new","entered","left","moving","idle"]),hr=S(["motion","object","audio"]),Pn=t({x:a(),y:a(),timestamp:a(),bbox:te}),vr=t({timestamp:a(),position:Pn,mediaKey:e()}),Ve=t({trackId:e(),deviceId:a(),className:e(),label:e().optional(),firstSeen:a(),lastSeen:a(),positions:l(Pn).readonly(),snapshots:l(vr).readonly(),zonesVisited:l(e()).readonly(),totalDistance:a(),state:Rt,active:h()}),Bt={id:e(),deviceId:a(),timestamp:a()},yr=t({...Bt,kind:I("motion"),regionCount:a(),regions:l(t({bbox:te,pixelCount:a(),intensity:a()})).readonly(),frameWidth:a(),frameHeight:a()}),Sr=t({...Bt,kind:I("object"),trackId:e(),className:e(),label:e().optional(),confidence:a(),bbox:te,zones:l(e()).readonly(),state:Rt,mediaKey:e().optional()}),fr=t({...Bt,kind:I("audio"),rms:a(),dbfs:a(),classification:t({className:e(),originalClass:e().optional(),score:a()}).optional()}),Ra=t({key:e(),kind:S(["crop","thumbnail","snapshot"]),base64:e(),sizeBytes:a(),timestamp:a()}),br=1e3,Ir=5e3,yt=t({deviceId:a(),since:a().optional(),until:a().optional(),limit:a().int().min(1).max(Ir).default(br)}),kr=yt.extend({classFilter:e().optional()}),wr=t({trackId:e(),className:e(),confidence:a(),bbox:te,zones:l(e()).readonly(),state:Rt}),Ar={name:"pipeline-analytics",scope:"device",mode:"singleton",deviceTypes:[C.Camera],exposesDeviceSettings:!0,methods:{getActiveTracks:i(t({deviceId:a()}),l(Ve).readonly()),getTrack:i(t({deviceId:a(),trackId:e()}),Ve.nullable()),listTracks:i(t({deviceId:a(),since:a().optional(),until:a().optional(),limit:a().optional()}),l(Ve).readonly()),clearTracks:i(t({deviceId:a()}),m(),{kind:"mutation",auth:"admin"}),getMotionEvents:i(yt,l(yr).readonly()),getObjectEvents:i(kr,l(Sr).readonly()),getAudioEvents:i(yt,l(fr).readonly()),getEventMedia:i(t({eventId:e()}),l(Ra).readonly()),getTrackMedia:i(t({trackId:e()}),l(Ra).readonly())},events:{onFrameTracked:{data:t({deviceId:a(),timestamp:a(),frameWidth:a(),frameHeight:a(),detections:l(wr).readonly()})},onTrackStarted:{data:t({deviceId:a(),trackId:e(),className:e()})},onTrackEnded:{data:t({deviceId:a(),trackId:e(),className:e(),durationMs:a()})},onDetectionEvent:{data:t({deviceId:a(),kind:hr,eventId:e(),timestamp:a()})}}},Cr=t({total:a(),user:a(),system:a(),irq:a(),nice:a(),loadAvg:Ya([a(),a(),a()]),cores:a()}),Nr=t({percent:a(),totalBytes:a(),usedBytes:a(),availableBytes:a(),swapUsedBytes:a(),swapTotalBytes:a()}),Pr=t({readBytes:a(),writeBytes:a(),readOps:a(),writeOps:a(),timestampMs:a()}),Dr=t({rxBytes:a(),txBytes:a(),rxPackets:a(),txPackets:a(),rxErrors:a(),txErrors:a(),timestampMs:a()}),Dn=t({utilization:a(),model:e(),memoryUsedBytes:a(),memoryTotalBytes:a(),temperature:a().nullable()}),Mr=t({openFds:a(),threadCount:a(),activeHandles:a(),activeRequests:a()}),Ba=t({avg10:a(),avg60:a(),avg300:a()}),Ge=t({some:Ba,full:Ba.nullable()}),qa=t({cpu:Cr,memory:Nr,gpu:Dn.nullable(),network:Dr,disk:Pr,pressure:t({cpu:Ge.nullable(),memory:Ge.nullable(),io:Ge.nullable()}),process:Mr,cpuTemperature:a().nullable(),timestampMs:a()}),Er=t({path:e(),totalBytes:a(),usedBytes:a(),availableBytes:a(),percent:a()}),Oa=t({pid:a(),cpu:a(),memory:a()}),Tr=t({addonId:e(),nodeId:e(),role:S(["hub","worker"]),pid:a(),state:S(["starting","running","stopping","stopped","crashed"]),uptimeSec:a()}),xr=t({pid:a(),ppid:a(),pgid:a(),classification:S(["root","managed","system","ghost"]),addonId:e().nullable(),nodeId:e().nullable(),command:e(),cpuPercent:a(),memoryRssBytes:a(),uptimeSec:a(),orphaned:h()}),Rr=t({pid:a(),force:h().optional()}),Br=t({success:h(),reason:e().optional(),signal:S(["SIGTERM","SIGKILL"]).optional()}),qr=t({cpuPercent:a(),memoryPercent:a(),memoryUsedMB:a(),memoryTotalMB:a(),diskPercent:a().optional(),temperature:a().optional(),gpuPercent:a().optional(),gpuMemoryPercent:a().optional()}),Or={name:"metrics-provider",scope:"system",mode:"singleton",methods:{collectSnapshot:i(m(),qa),getCached:i(m(),qa.nullable()),getCurrent:i(m(),qr),getDiskSpace:i(t({dirPath:e()}),Er),getGpuInfo:i(m(),Dn.nullable()),getCpuTemperature:i(m(),a().nullable()),getProcessStats:i(t({pids:l(a())}),l(Oa)),listAddonInstances:i(m(),l(Tr).readonly()),getAddonStats:i(t({addonId:e()}),Oa.nullable()),listNodeProcesses:i(m(),l(xr).readonly()),killProcess:i(Rr,Br,{kind:"mutation",auth:"admin"})}},zr=t({id:e(),name:e()}),za=t({pan:a(),tilt:a(),zoom:a()}),La=t({pan:a().optional(),tilt:a().optional(),zoom:a().optional(),speed:a().optional()}),Lr={name:"ptz",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{move:i(La.extend({deviceId:a()}),m(),{kind:"mutation"}),continuousMove:i(La.extend({deviceId:a()}),m(),{kind:"mutation"}),stop:i(t({deviceId:a()}),m(),{kind:"mutation"}),getPresets:i(t({deviceId:a()}),l(zr)),goToPreset:i(t({deviceId:a(),presetId:e()}),m(),{kind:"mutation"}),goHome:i(t({deviceId:a()}),m(),{kind:"mutation"}),getPosition:i(t({deviceId:a()}),za)},status:{schema:za,kind:"command-driven"}},_r=t({id:e(),type:e(),timestamp:a(),label:e().optional(),thumbnailUrl:e().optional(),clipUrl:e().optional(),metadata:b(e(),f()).optional()}),Ur={name:"events",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getEvents:i(t({deviceId:a(),from:a().optional(),to:a().optional(),limit:a().optional()}),l(_r)),getEventThumbnail:i(t({deviceId:a(),eventId:e()}),t({base64:e(),contentType:e()}).nullable()),getEventClipUrl:i(t({deviceId:a(),eventId:e()}),e().nullable())}},Fr=t({id:e(),startTs:a(),endTs:a(),durationSec:a(),sizeBytes:a().optional()}),Hr={name:"recording",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getSegments:i(t({deviceId:a(),from:a().optional(),to:a().optional()}),l(Fr)),getPlaybackUrl:i(t({deviceId:a(),segmentId:e()}),e().nullable()),getThumbnailAt:i(t({deviceId:a(),timestamp:a()}),t({base64:e(),contentType:e()}).nullable())}},Wr=t({id:e(),label:e(),protocol:S(["rtsp","rtmp","annexb","http-mjpeg","webrtc","custom"]),url:e().optional(),resolution:t({width:a(),height:a()}).optional(),fps:a().optional(),bitrate:a().optional(),codec:e().optional(),profileHint:S(["high","mid","low"]).optional(),sdp:e().optional()}),$r=t({key:e(),value:f()}),Kr={name:"device-ops",scope:"device",mode:"singleton",methods:{getStreamSources:i(t({deviceId:a()}),l(Wr)),getConfigEntries:i(t({deviceId:a()}),l($r)),setConfig:i(t({deviceId:a(),values:b(e(),f())}),m(),{kind:"mutation"}),removeDevice:i(t({deviceId:a()}),m(),{kind:"mutation"}),getSettingsSchema:i(t({deviceId:a()}),f().nullable())}},Vr=t({host:e(),port:a().int().positive().optional(),onvifPort:a().int().positive().optional(),rtspPort:a().int().positive().optional(),https:h().optional(),username:e().optional(),password:e().optional(),onvifProfile:e().optional()}),Gr=t({host:e(),port:a().int().positive().nullable(),onvifPort:a().int().positive().nullable(),rtspPort:a().int().positive().nullable(),https:h().nullable(),hasUsername:h(),hasPassword:h(),onvifProfile:e().nullable()}),jr={name:"camera-credentials",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getCredentials:i(t({deviceId:a()}),Vr.nullable(),{kind:"query",auth:"admin"})},status:{schema:Gr,kind:"command-driven"}},Zr={name:"reboot",scope:"device",mode:"singleton",deviceTypes:[C.Camera,C.Sensor,C.Switch],methods:{reboot:i(t({deviceId:a().int().nonnegative()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"})}},Yr=S(["text","timestamp","watermark"]),St=S(["top-left","top-center","top-right","bottom-left","bottom-center","bottom-right","custom"]),Qr=t({id:e(),kind:Yr,enabled:h(),text:e().optional(),position:St.optional(),availablePositions:l(St).readonly(),readOnly:h().optional()}),_a=t({overlays:l(Qr).readonly()}),Jr=t({enabled:h().optional(),text:e().optional(),position:St.optional()}).partial(),Xr={name:"osd",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{setOverlay:i(t({deviceId:a(),overlayId:e(),patch:Jr}),m(),{kind:"mutation",auth:"admin"})},events:{onStatusChanged:{data:t({deviceId:a(),status:_a})}},status:{schema:_a,kind:"command-driven"},settings:{bindings:[{kind:"array",statusPath:"overlays",idField:"id",method:"setOverlay",idArg:"overlayId",patchArg:"patch",sectionId:"osd",sectionTitle:"Video overlays",itemFields:{enabled:{label:c=>`${String(c.id)} enabled`,kind:"boolean"},text:{label:c=>`${String(c.id)} text`,kind:"text",when:c=>c.kind!=="timestamp"&&!c.readOnly},position:{label:c=>`${String(c.id)} position`,kind:"select",options:c=>c.availablePositions??[],when:c=>Array.isArray(c.availablePositions)&&c.availablePositions.length>0}}}]}},ed=t({childDeviceIds:l(a()).readonly()}),td={name:"accessories",scope:"device",mode:"singleton",deviceTypes:[C.Camera,C.Hub],methods:{},events:{onAccessoriesChanged:{data:t({deviceId:a(),childDeviceIds:l(a()).readonly()})}},status:{schema:ed,kind:"command-driven"}},ad=t({codecs:l(e()),sampleRate:a(),duplex:S(["half","full"]),maxBacklogMs:a()}),Ua=t({talking:h(),lastSessionAt:a().nullable(),ability:ad.nullable()}),nd={name:"intercom",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{startSession:i(t({deviceId:a()}),t({sessionId:e(),sdpOffer:e()}),{kind:"mutation",auth:"admin"}),handleAnswer:i(t({deviceId:a(),sessionId:e(),sdpAnswer:e()}),m(),{kind:"mutation",auth:"admin"}),stopSession:i(t({deviceId:a(),sessionId:e()}),m(),{kind:"mutation",auth:"admin"}),startTalkSession:i(t({deviceId:a()}),t({sessionId:e()}),{kind:"mutation",auth:"admin"}),pushTalkPcm:i(t({deviceId:a(),pcmBase64:e(),sequenceNumber:a().int()}),t({accepted:h()}),{kind:"mutation",auth:"admin"}),endTalkSession:i(t({deviceId:a()}),m(),{kind:"mutation",auth:"admin"})},events:{onStatusChanged:{data:t({deviceId:a(),status:Ua})}},status:{schema:Ua,kind:"command-driven"}},ft=S(["person","vehicle","animal","face","package","other"]),Mn=t({class:ft,timestamp:a(),confidence:a().min(0).max(1).optional()}),od=t({lastByClass:b(ft,Mn.nullable()),supportedClasses:l(ft).readonly()}),sd={name:"native-object-detection",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{},events:{onDetected:{data:t({deviceId:a(),detection:Mn})}},status:{schema:od,kind:"push"}},id=S(oo),cd=S(["videotoolbox","cuda","nvdec","vaapi","qsv","d3d11va","dxva2","amf","vdpau","drm","coreml","tensorrt","openvino","directml","webgpu","none"]).nullable().optional(),rd=t({preferred:l(e()).readonly()}),bt=S(["h264_videotoolbox","hevc_videotoolbox","h264_vaapi","hevc_vaapi","h264_nvenc","hevc_nvenc","h264_qsv","hevc_qsv","h264_amf","hevc_amf","libx264","libx265"]),dd=t({encoder:bt,codec:S(["H264","H265"]),family:S(["videotoolbox","vaapi","nvenc","qsv","amf","software"]),available:h(),reason:e().optional()}),Fa=t({encoders:l(dd).readonly(),defaultH264:bt,defaultH265:bt,probedAt:a()}),ld=S(["darwin","linux","win32"]),pd=S(["arm64","x64"]),md=t({type:S(["nvidia","amd","intel","apple"]),name:e(),memoryMB:a().optional()}),ud=t({type:S(["apple-ane","intel-npu"])}),En=t({platform:ld,arch:pd,cpuModel:e(),cpuCores:a(),totalRAM_MB:a(),availableRAM_MB:a(),gpu:md.nullable(),npu:ud.nullable()}),Ha=t({runtime:S(["node","python"]),backend:e(),format:S(["onnx","coreml","openvino"]),score:a(),reason:e(),available:h()}),gd=t({hardware:En,scores:l(Ha).readonly(),bestScore:Ha,pythonPath:e().nullable()}),hd=t({modelId:e(),name:e(),minRAM_MB:a(),accuracyScore:a(),formats:l(e()).readonly()}),vd=t({modelId:e(),runtime:S(["node","python"]),backend:e(),format:id,reason:e()}),yd={name:"platform-probe",scope:"system",mode:"singleton",methods:{getCapabilities:i(m(),gd),getHardware:i(m(),En),resolveInferenceConfig:i(t({requirements:l(hd).readonly()}),vd),resolveHwAccel:i(t({prefer:cd,nodeId:e().optional()}),rd),getHardwareEncoders:i(m(),Fa),refreshHardwareEncoders:i(m(),Fa,{kind:"mutation",auth:"admin"})}},Sd=S(["lan","wifi","docker","vpn","loopback","other"]),Tn=t({name:e(),family:S(["IPv4","IPv6"]),address:e(),cidr:e(),netmask:e(),internal:h(),mac:e(),kind:Sd,preferred:h(),plausible:h(),plausibleReason:e()}),fd=t({interfaces:l(Tn).readonly(),probedAt:a()}),bd=Tn.nullable(),Id=t({label:e(),baseUrl:e(),kind:S(["lan-ipv4","lan-ipv6","public","loopback"]),interfaceKind:S(["lan","wifi","docker","vpn","other","loopback","public"]),plausible:h(),plausibleReason:e(),priority:a()}),kd=t({endpoints:l(Id).readonly()}),je=t({addresses:l(e()).readonly()}),wd={name:"local-network",scope:"system",mode:"singleton",methods:{list:i(m(),fd),getPreferred:i(m(),bd),getConnectionEndpoints:i(t({port:a().int().min(1).max(65535),includeLoopback:h().optional(),ipv4Only:h().optional(),scheme:S(["http","https"]).optional()}),kd),getAllowedAddresses:i(m(),je),setAllowedAddresses:i(je,t({success:I(!0)}),{kind:"mutation"}),resetAllowlistToBestMatch:i(m(),je,{kind:"mutation"})}},Ad=t({id:e(),label:e(),scope:S(["mesh","public"]),url:e(),hostname:e(),port:a(),protocol:S(["http","https"])}),Cd=t({id:e(),hostname:e(),magicDns:e(),addresses:l(e()).readonly(),os:e().optional(),online:h(),lastSeenMs:a(),isSelf:h(),connection:S(["direct","relay","idle"]),relay:e().nullable(),lastHandshakeMs:a(),rxBytes:a(),txBytes:a(),tags:l(e()).readonly(),exitNodeOption:h(),advertisedRoutes:l(e()).readonly(),userLogin:e().nullable(),keyExpiry:a().nullable()}),Nd=t({joined:h(),meshIp:e(),magicDnsHostname:e(),peerCount:a(),endpoints:l(Ad).readonly(),error:e().optional(),tenantName:e(),magicDnsSuffix:e(),userLogin:e().nullable(),controlPlaneUrl:e(),keyExpiry:a().nullable(),daemonSocket:e().optional(),daemonCliPath:e().optional()}),Pd={name:"mesh-network",scope:"system",mode:"collection",providerKind:"mesh",methods:{getStatus:i(m(),Nd),join:i(t({authKey:e().min(8),hostname:e().optional()}),t({joined:I(!0)}),{kind:"mutation"}),startLogin:i(t({hostname:e().optional()}),t({loginUrl:e()}),{kind:"mutation"}),leave:i(m(),t({left:I(!0)}),{kind:"mutation"}),logout:i(m(),t({loggedOut:I(!0)}),{kind:"mutation"}),listPeers:i(m(),t({peers:l(Cd).readonly()})),testConnection:i(t({authKey:e().optional()}),t({ok:h(),tenant:e().optional(),daemonVersion:e().optional(),error:e().optional()}),{kind:"mutation"})}},be=S(["view","create","delete"]),xn=M([I("*"),l(e())]),Rn=b(e(),M([I("*"),l(e())])),Dd=S(["device","system"]),H=Ct("type",[t({type:I("category"),target:Dd,access:l(be).min(1)}),t({type:I("capability"),target:e(),access:l(be).min(1)}),t({type:I("addon"),target:e(),access:l(be).min(1)}),t({type:I("device"),targets:l(e()).min(1),access:l(be).min(1)})]),zp=t({id:e(),username:e(),passwordHash:e(),isAdmin:h().default(!1),allowedProviders:xn,allowedDevices:Rn,scopes:l(H).default([]),createdAt:a(),updatedAt:a()}),Lp=t({id:e(),label:e(),isAdmin:h().default(!1),allowedProviders:xn,allowedDevices:Rn,tokenHash:e(),tokenPrefix:e(),createdAt:a(),lastUsedAt:a().optional()}),_p=t({id:e(),userId:e(),name:e(),tokenHash:e(),tokenPrefix:e(),scopes:l(H),expiresAt:a().nullish(),lastUsedAt:a().nullish(),createdAt:a()}),Ze=t({id:e(),username:e(),isAdmin:h().default(!1),allowedProviders:M([l(e()),I("*")]),allowedDevices:b(e(),M([l(e()),I("*")])),scopes:l(H).default([]),totpEnabled:h().default(!1),createdAt:a(),updatedAt:a()}),Md=t({username:e(),password:e().min(6),isAdmin:h().default(!1),allowedProviders:M([l(e()),I("*")]).optional(),allowedDevices:b(e(),M([l(e()),I("*")])).optional(),scopes:l(H).optional()}),Ed=t({id:e(),isAdmin:h().optional(),allowedProviders:M([l(e()),I("*")]).optional(),allowedDevices:b(e(),M([l(e()),I("*")])).optional(),scopes:l(H).optional()}),It=t({id:e(),label:e(),isAdmin:h().default(!1),allowedProviders:M([l(e()),I("*")]).optional(),allowedDevices:b(e(),M([l(e()),I("*")])).optional(),tokenPrefix:e(),createdAt:a(),lastUsedAt:a().optional()}),Td=t({label:e(),isAdmin:h().default(!1),allowedProviders:M([l(e()),I("*")]).optional(),allowedDevices:b(e(),M([l(e()),I("*")])).optional()}),xd=t({token:e(),record:It}),kt=t({id:e(),userId:e(),name:e(),tokenPrefix:e(),scopes:l(H),expiresAt:a().nullish(),lastUsedAt:a().nullish(),createdAt:a()}),Rd=t({userId:e(),name:e(),scopes:l(H),expiresAt:a().optional()}),Bd=t({token:e(),record:kt}),qd=t({secret:e(),otpauthUrl:e()}),Od=t({enabled:h(),confirmedAt:a().nullable()}),zd={name:"user-management",scope:"system",mode:"singleton",methods:{listUsers:i(m(),l(Ze),{auth:"admin"}),createUser:i(Md,Ze,{kind:"mutation",auth:"admin",access:"create"}),updateUser:i(Ed,t({success:I(!0)}),{kind:"mutation",auth:"admin",access:"create"}),deleteUser:i(t({id:e()}),t({success:I(!0)}),{kind:"mutation",auth:"admin",access:"delete"}),resetPassword:i(t({id:e(),newPassword:e().min(6)}),t({success:I(!0)}),{kind:"mutation",auth:"admin",access:"create"}),setUserScopes:i(t({userId:e(),scopes:l(H)}),t({success:I(!0)}),{kind:"mutation",auth:"admin",access:"create"}),validateCredentials:i(t({username:e(),password:e()}),Ze.extend({passwordHash:e()}).nullable(),{kind:"mutation",access:"view"}),listApiKeys:i(m(),l(It),{auth:"admin"}),createApiKey:i(Td,xd,{kind:"mutation",auth:"admin",access:"create"}),revokeApiKey:i(t({id:e()}),t({success:I(!0)}),{kind:"mutation",auth:"admin",access:"delete"}),validateApiKey:i(t({token:e()}),It.nullable(),{kind:"mutation",access:"view"}),createScopedToken:i(Rd,Bd,{kind:"mutation",auth:"admin",access:"create"}),revokeScopedToken:i(t({id:e()}),t({success:I(!0)}),{kind:"mutation",auth:"admin",access:"delete"}),validateScopedToken:i(t({token:e()}),kt.nullable(),{access:"view"}),listScopedTokens:i(t({userId:e()}),l(kt),{auth:"admin"}),setupTotp:i(t({userId:e()}),qd,{kind:"mutation",auth:"admin",access:"create"}),confirmTotp:i(t({userId:e(),code:e()}),t({success:I(!0)}),{kind:"mutation",auth:"admin",access:"create"}),disableTotp:i(t({userId:e()}),t({success:I(!0)}),{kind:"mutation",auth:"admin",access:"delete"}),getTotpStatus:i(t({userId:e()}),Od,{auth:"admin"}),verifyTotp:i(t({userId:e(),code:e()}),t({valid:h()}),{kind:"mutation",access:"view"})}},Wa=t({streaming:h(),notifications:h(),objectDetection:h(),remoteAccess:h(),agentCluster:h(),smartHome:h(),recordings:h(),backup:h(),repl:h()}),Ld=t({status:I("ok"),uptime:a()}),_d=t({name:e(),address:e(),family:e(),internal:h()}),Ud={name:"system",scope:"system",mode:"singleton",methods:{info:i(m(),Wa),health:i(m(),Ld),featureFlags:i(m(),Wa),networkAddresses:i(m(),l(_d).readonly()),getRetentionConfig:i(m(),f().nullable(),{auth:"admin"}),setRetentionConfig:i(b(e(),f()),Zn(),{kind:"mutation",auth:"admin"}),forceRetentionCleanup:i(m(),m(),{kind:"mutation",auth:"admin"})}},Fd=t({nominalBitrateKbps:a(),observedBitrateKbps:a(),peakBitrateKbps:a(),packetLossPercent:a(),lastUpdated:a()}),Hd=t({rttMs:a(),jitterMs:a(),estimatedBandwidthKbps:a(),lastUpdated:a()}),$a=t({deviceId:a(),streams:b(e(),Fd),client:Hd.optional()}),Wd={name:"network-quality",scope:"system",mode:"singleton",methods:{getDeviceStats:i(t({deviceId:a()}),$a.nullable()),getAllStats:i(m(),l($a).readonly()),reportClientStats:i(t({deviceId:a(),rttMs:a().min(0).max(6e4),jitterMs:a().min(0).max(1e4),estimatedBandwidthKbps:a().min(0).max(1e6)}),m(),{kind:"mutation"})}},$d=t({title:e(),message:e(),severity:S(["info","warning","critical"]),duration:a().optional(),action:t({label:e(),url:e()}).optional()}),Kd={name:"toast",scope:"system",mode:"singleton",methods:{onToast:i(m(),$d,{kind:"subscription"})}},Vd=t({addonId:e(),capabilities:l(e()).readonly(),status:e()}),Gd=t({pid:a(),name:e(),state:e(),cpuPercent:a(),memoryRss:a(),uptimeSeconds:a(),services:l(Vd).readonly(),groupId:e().optional()}),jd=t({id:e(),name:e(),hostname:e(),platform:e(),arch:e(),cpuModel:e().nullable(),cpuCores:a(),memoryMB:a(),engines:l(e()).readonly(),isHub:h(),isOnline:h(),cpuPercent:a(),memoryPercent:a(),uptime:a(),lastSeen:e(),localIps:l(e()).readonly(),addons:l(t({id:e(),capabilities:l(e()).readonly(),status:e()})).readonly(),processes:l(Gd).readonly()}),Zd=t({nodeId:e(),name:e(),version:e(),status:e(),synced:h()}),Yd=t({hubVersion:e(),nodes:l(Zd)}),Ye=t({nodeId:e(),addonId:e()}),Qd=t({id:e(),status:e(),version:e().optional(),packageName:e().optional()}),ce=t({success:h()}),Jd=t({success:h(),reason:e().optional()}),Xd=t({restarted:l(e()).readonly(),failed:l(e()).readonly()}),el=t({nodeId:e(),name:e()}),tl={name:"nodes",scope:"system",mode:"singleton",nodeIdMode:"data",methods:{topology:i(m(),l(jd).readonly(),{auth:"admin"}),deployAddon:i(Ye,ce,{kind:"mutation",auth:"admin"}),undeployAddon:i(Ye,ce,{kind:"mutation",auth:"admin"}),restartAddon:i(Ye,ce,{kind:"mutation",auth:"admin"}),restartProcess:i(t({nodeId:e(),processName:e()}),Jd,{kind:"mutation",auth:"admin"}),restartNode:i(t({nodeId:e()}),Xd,{kind:"mutation",auth:"admin"}),shutdownNode:i(t({nodeId:e()}),ce,{kind:"mutation",auth:"admin"}),renameNode:i(t({nodeId:e(),name:e().min(1).max(64)}),el,{kind:"mutation",auth:"admin"}),clusterAddonStatus:i(m(),b(e(),Yd),{auth:"admin"}),getNodeAddons:i(t({nodeId:e()}),l(Qd).readonly(),{auth:"admin"}),setProcessLogLevel:i(t({nodeId:e(),level:e()}),ce,{kind:"mutation",auth:"admin"}),executeQuery:i(t({nodeId:e(),addonId:e(),queryName:e(),params:b(e(),f()).optional()}),f(),{kind:"mutation",auth:"admin"})}},Ka=t({id:e(),addonId:e(),name:e(),enabled:h(),info:b(e(),f()).readonly(),createdAt:a(),updatedAt:a(),processState:e()}),Qe=t({id:e(),addonId:e(),name:e(),enabled:h(),info:b(e(),f()).readonly(),createdAt:a(),updatedAt:a()}),al=t({addonId:e(),name:e(),description:e(),iconUrl:e().nullable(),color:e(),instanceMode:e(),discoveryMode:e(),existingInstances:l(t({id:e(),name:e()})),canAdd:h()}),nl=t({success:h(),error:e().optional()}),ol=t({addonId:e(),name:e(),enabled:h().optional(),info:b(e(),f()).optional(),settings:b(e(),f()).optional(),skipRestart:h().optional()}),sl=t({id:e(),name:e().optional(),enabled:h().optional(),info:b(e(),f()).optional()}),il=t({success:h(),deletedId:e()}),cl={name:"integrations",scope:"system",mode:"singleton",methods:{list:i(m(),l(Ka)),get:i(t({id:e()}),Ka),getByAddonId:i(t({addonId:e()}),Qe.nullable()),create:i(ol,Qe,{kind:"mutation",auth:"admin"}),update:i(sl,Qe,{kind:"mutation",auth:"admin"}),delete:i(t({id:e()}),il,{kind:"mutation",auth:"admin"}),getSettings:i(t({id:e()}),b(e(),f()),{auth:"admin"}),setSettings:i(t({id:e(),settings:b(e(),f())}),t({success:h()}),{kind:"mutation",auth:"admin"}),getAvailableTypes:i(m(),l(al),{auth:"admin"}),testConnection:i(t({addonId:e(),settings:b(e(),f())}),nl,{kind:"mutation",auth:"admin"})}},Va=S(["debug","info","warn","error"]),wt=S(["off","latest","beta"]),Bn=S(["off","latest","beta","inherit"]),rl=t({id:e(),name:e().optional(),version:e().optional(),description:e().optional(),icon:e().optional(),color:e().optional(),capabilities:l(f()).readonly().optional(),packageName:e(),packageVersion:e(),packageDisplayName:e().optional(),bundle:t({displayName:e(),description:e().optional(),icon:e().optional()}).optional(),protected:h().optional(),removable:h().optional()}),dl=t({pid:a().optional(),mode:e(),state:e()}),ll=t({phase:S(["pending","healthy","failed"]),retryCount:a(),firstFailureAt:a().nullable(),lastAttemptAt:a().nullable(),lastError:t({message:e(),stack:e().optional()}).nullable(),nextRetryAt:a().nullable(),alertEmitted:h(),retrying:h(),inGracePeriod:h()}),pl=t({manifest:rl,declaration:f().optional(),source:e(),installSource:e().optional(),process:dl.optional(),hasBackup:h().optional(),health:ll.nullable().optional()}),ml=t({name:e(),version:e(),dir:e(),installSource:e().optional()}),ul=t({name:e(),currentVersion:e(),latestVersion:e(),category:S(["addon","core"]),requiresRestart:h()}),gl=t({version:e(),publishedAt:e(),deprecated:e().optional(),distTags:l(e()).readonly()}),hl=t({name:e(),version:e(),description:e(),keywords:l(e()).readonly(),publishedAt:e(),author:e(),installed:h(),installedVersion:e().optional()}),vl=t({channel:wt,intervalSeconds:a()}),yl=Bn,Sl=f(),Ga=f(),fl=f(),bl=t({packageName:e(),fromVersion:e(),toVersion:e(),restartingAt:a()}),Il=t({packageName:e(),currentVersion:e(),latestVersion:e().nullable(),hasUpdate:h(),description:e().optional()}),kl=t({timestamp:e(),level:e(),message:e(),scope:e().optional()}),wl=f(),Al=t({addonId:e().min(1),action:e().min(1),input:f()}),Cl={name:"addons",scope:"system",mode:"singleton",nodeIdMode:"data",methods:{list:i(m(),l(pl).readonly()),getLogs:i(t({addonId:e(),limit:a().min(1).max(500).default(100),level:Va.optional()}),l(wl)),listPackages:i(m(),l(ml).readonly()),installPackage:i(t({packageName:e(),version:e().optional()}),Ga,{kind:"mutation",auth:"admin"}),installFromWorkspace:i(t({packageName:e()}),Ga,{kind:"mutation",auth:"admin"}),isWorkspaceAvailable:i(m(),h()),listWorkspacePackages:i(m(),l(f()).readonly()),uninstallPackage:i(t({packageName:e()}),f(),{kind:"mutation",auth:"admin"}),reloadPackages:i(m(),fl,{kind:"mutation",auth:"admin"}),searchAvailable:i(t({query:e().optional()}),l(hl)),listUpdates:i(t({nodeId:e().optional()}),l(ul).readonly(),{auth:"admin"}),updatePackage:i(t({name:e().min(1),version:e().optional(),nodeId:e().optional()}),f(),{kind:"mutation",auth:"admin"}),rollbackPackage:i(t({name:e().min(1)}),t({rolledBackTo:e().nullable()}),{kind:"mutation",auth:"admin"}),forceRefresh:i(t({nodeId:e().optional()}),f(),{kind:"mutation",auth:"admin"}),restartServer:i(t({confirm:I(!0)}),f(),{kind:"mutation",auth:"admin"}),getLastRestart:i(m(),t({kind:S(["framework-update","manual","system"]),packageName:e().optional(),fromVersion:e().optional(),toVersion:e().optional(),requestedBy:e().optional(),requestedAt:a()}).nullable(),{auth:"admin"}),listFrameworkPackages:i(m(),l(Il).readonly(),{auth:"admin"}),listCapabilityProviders:i(t({capName:e().min(1)}),l(t({addonId:e(),mode:S(["singleton","collection"]),isActive:h()})).readonly()),setCapabilityProviderEnabled:i(t({capName:e().min(1),addonId:e().min(1),enabled:h()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),updateFrameworkPackage:i(t({packageName:e().min(1),version:e().optional()}),bl,{kind:"mutation",auth:"admin"}),getVersions:i(t({name:e()}),l(gl).readonly()),restartAddon:i(t({addonId:e()}),Sl,{kind:"mutation",auth:"admin"}),retryLoad:i(t({packageName:e()}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),getAutoUpdateSettings:i(m(),vl,{auth:"admin"}),setAutoUpdateSettings:i(t({channel:wt,intervalSeconds:a().min(300).max(86400).optional()}),f(),{kind:"mutation",auth:"admin"}),getAddonAutoUpdate:i(t({addonId:e()}),yl,{auth:"admin"}),setAddonAutoUpdate:i(t({addonId:e(),channel:Bn}),f(),{kind:"mutation",auth:"admin"}),applyAutoUpdateToAll:i(t({channel:wt}),t({success:I(!0)}),{kind:"mutation",auth:"admin"}),custom:i(Al,f(),{kind:"mutation"}),onAddonLogs:i(t({addonId:e(),level:Va.optional()}),kl,{kind:"subscription"})}},Nl=["decoder","motion-detection","pipeline-executor","audio-analyzer","pipeline-analytics","notification-output"],Up=[...Nl,"pipeline-orchestrator","pipeline-runner"];class Fp{disposers=[];disposed=!1;onError;constructor(s={}){this.onError=s.onError??((n,d)=>{console.error(`[DisposerChain] disposer #${d} threw`,n)})}add(s){if(this.disposed){try{const n=s();n&&typeof n.then=="function"&&n.catch(d=>this.onError(d,-1))}catch(n){this.onError(n,-1)}return()=>{}}return this.disposers.push(s),()=>{const n=this.disposers.indexOf(s);n>=0&&this.disposers.splice(n,1)}}get isDisposed(){return this.disposed}get size(){return this.disposers.length}async dispose(){if(this.disposed)return;this.disposed=!0;const s=this.disposers.slice().reverse();this.disposers=[];for(let n=0;n<s.length;n++){const d=s[n];try{const p=d();p&&typeof p.then=="function"&&await p}catch(p){this.onError(p,s.length-1-n)}}}}const Pl="main-group",Dl="hub-only";function Be(c){return{placement:c.execution?.placement??Dl,group:c.execution?.group??Pl}}function Hp(c){const s=Be(c).placement;return s==="any-node"||s==="agent-only"}function Wp(c){return Be(c).placement==="agent-only"}function $p(c){return Be(c).group}function Kp(c){return Be(c).placement}var Ne=(c=>(c.SystemBoot="system.boot",c.SystemAddonsReady="system.addons-ready",c.SystemRestarting="system.restarting",c.SystemRestartCompleted="system.restart-completed",c.SystemReadyState="system.ready-state",c.AddonStarted="addon.started",c.AddonStopped="addon.stopped",c.AddonRestarted="addon.restarted",c.AddonUpdated="addon.updated",c.AddonInstalled="addon.installed",c.AddonUninstalled="addon.uninstalled",c.AddonCrashed="addon.crashed",c.AddonError="addon.error",c.AddonPageReady="addon.page-ready",c.AddonWidgetReady="addon.widget-ready",c.AddonLoadFailed="addon.load-failed",c.AddonLoadRecovered="addon.load-recovered",c.AddonRetryScheduled="addon.retry-scheduled",c.AddonRetryAttempting="addon.retry-attempting",c.DeviceRegistered="device.registered",c.DeviceUnregistered="device.unregistered",c.DeviceEnabled="device.enabled",c.DeviceDisabled="device.disabled",c.DeviceSettingsUpdated="device.settings-updated",c.DeviceBindingsChanged="device.bindings-changed",c.DeviceMetaChanged="device.meta-changed",c.DeviceStreamsRegistered="device.streams-registered",c.IntegrationEnabled="integration.enabled",c.IntegrationDisabled="integration.disabled",c.IntegrationDeleted="integration.deleted",c.ProviderStarted="provider.started",c.ProviderStopped="provider.stopped",c.ProcessCrashed="process.crashed",c.ProcessRestartScheduled="process.restart_scheduled",c.ProcessRestarted="process.restarted",c.RecordingStarted="recording.started",c.RecordingStopped="recording.stopped",c.RecordingError="recording.error",c.RecordingHealthDegraded="recording.health.degraded",c.RecordingStorageCritical="recording.storage.critical",c.RecordingSegmentWritten="recording.segment.written",c.RecordingPolicyFallback="recording.policy.fallback",c.RecordingRetentionCompleted="recording.retention.completed",c.DetectionEvent="detection.event",c.SessionTrackNew="session.track.new",c.SessionTrackExpired="session.track.expired",c.BenchmarkProgress="benchmark.progress",c.PlatformProbePhase="platform-probe.phase",c.PipelineProgress="pipeline.progress",c.PipelineTrace="pipeline.trace",c.PipelineInferenceResult="pipeline.inference-result",c.PipelineCameraAssigned="pipeline.camera-assigned",c.PipelineCameraUnassigned="pipeline.camera-unassigned",c.PipelineCameraUpdated="pipeline.camera-updated",c.PipelineRunnerLoadSnapshot="pipeline.runner-load-snapshot",c.PipelineCameraMetricsSnapshot="pipeline.camera-metrics-snapshot",c.StreamBrokerMetricsSnapshot="stream-broker.metrics-snapshot",c.StreamBrokerOnCamStreamDemand="stream-broker.onCamStreamDemand",c.StreamBrokerOnCamStreamIdle="stream-broker.onCamStreamIdle",c.StreamBrokerOnRequestStreamSourceRefresh="stream-broker.onRequestStreamSourceRefresh",c.DeviceStateChanged="device.state-changed",c.BatteryOnStatusChanged="battery.onStatusChanged",c.DoorbellOnPressed="doorbell.onPressed",c.PipelineEngineMetricsSnapshot="pipeline.engine-metrics-snapshot",c.ClusterTopologySnapshot="cluster.topology-snapshot",c.MetricsNodeResourcesSnapshot="metrics.node-resources-snapshot",c.MetricsNodeProcessesSnapshot="metrics.node-processes-snapshot",c.CapabilityBindingChanged="capability.binding-changed",c.ModelDownloadProgress="model.download.progress",c.AgentRegistered="agent.registered",c.AgentUnregistered="agent.unregistered",c.AgentOnline="agent.online",c.AgentOffline="agent.offline",c.WorkerOnline="worker.online",c.WorkerOffline="worker.offline",c.AgentTaskDispatched="agent.task.dispatched",c.AgentTaskAssigned="agent.task.assigned",c.AgentTrpcConnected="agent.trpc.connected",c.AgentWsConnected="agent.ws.connected",c.AgentWsDisconnected="agent.ws.disconnected",c.AgentBackupActivated="agent.backup.activated",c.OrchestrationSettingsUpdated="orchestration.settings-updated",c.PipelineAgentHwaccelChanged="pipeline.agent-hwaccel-changed",c.MotionAnalysis="detection.motion-analysis",c.MotionZonesRaw="detection.motion-zones-raw",c.MotionOnMotionChanged="motion.on-motion-changed",c.DetectionResult="detection.result",c.DetectionRaw="detection.raw",c.DetectionCameraNative="detection.camera-native",c.PipelineAudioInferenceResult="pipeline.audio-inference-result",c.DetectionPhaseTransition="detection.phase-transition",c.ProviderMotion="provider.motion",c.ProviderDetection="provider.detection",c.EnrichmentEmbeddingStored="enrichment.embedding.stored",c.EnrichmentSceneStateChanged="enrichment.scene.state-changed",c.EnrichmentActivitySummary="enrichment.activity.summary",c.PipelineAnalyticsTrackStarted="pipeline-analytics.track-started",c.PipelineAnalyticsTrackEnded="pipeline-analytics.track-ended",c.PipelineAnalyticsDetectionEvent="pipeline-analytics.detection-event",c.PipelineAnalyticsFrameTracked="pipeline-analytics.frame-tracked",c.FrigateLiveEvent="frigate.live-event",c.CameraStreamsProfileSlotsChanged="camera-streams.onProfileSlotsChanged",c.StreamOnline="stream.online",c.StreamOffline="stream.offline",c.NetworkTunnelStarted="network.tunnel.started",c.NetworkTunnelStopped="network.tunnel.stopped",c.LocalNetworkChanged="network.local.changed",c.BackupCompleted="backup.completed",c.BackupRestored="backup.restored",c.NotificationDispatched="notification.dispatched",c.NotificationFailed="notification.failed",c.DeviceUpdated="device.updated",c.DeviceOnline="device.online",c.DeviceOffline="device.offline",c.DeviceAwake="device.awake",c.DeviceSleeping="device.sleeping",c.RetentionCleanup="retention.cleanup",c))(Ne||{});function Vp(c,s){return c.category===s}function qn(c,s,n){return{id:typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2),timestamp:new Date,source:s,category:c,data:n}}function Ml(c,s){const n=s.ts??Date.now();c.emit(qn("system.ready-state",{type:"capability",id:s.capName,nodeId:s.sourceNodeId},{capName:s.capName,scope:s.scope,state:s.state,generation:s.generation,sourceNodeId:s.sourceNodeId,ts:n}))}class El{_ctx=null;_config;_readinessGeneration=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14);_registeredCapNames=[];defaults;constructor(s){this.defaults=s,this._config={...s}}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(s){this._ctx=s,await this.resolveConfig();const n=await this.onInitialize();this.emitLifecycle(Ne.AddonStarted);const d=Tl(n),p=d&&"providers"in d&&d.providers?d.providers:[];return this._registeredCapNames=p.map(g=>g.capability.name),d}postBrokerStart(){this.autoEmitReadiness&&this._registeredCapNames.length>0&&this.emitReadinessForProviders("ready")}async onHubReachable(){}async shutdown(){this.emitLifecycle(Ne.AddonStopped),this.autoEmitReadiness&&this.emitReadinessForProviders("down"),await this.onShutdown();for(const s of this._subscriptions)s();this._subscriptions=[],this._ctx=null}async onShutdown(){}async onConfigChanged(){}field(s){return s}schema(s){return s}globalSettingsSchema(){return null}deviceSettingsSchema(){return null}async getGlobalSettings(s){const n=this.globalSettingsSchema();if(!n)return{sections:[]};const d=await this._ctx?.settings?.readAddonStore()??{};return ta(n,s?{...d,...s}:d)}async updateGlobalSettings(s){await this._ctx?.settings?.writeAddonStore(s),await this.resolveConfig(),await this.onConfigChanged(),this.emitLifecycle(Ne.AddonUpdated,{level:"global"}),this.maybeAutoRestart(s,this.globalSettingsSchema())}maybeAutoRestart(s,n){if(!n)return;const d=new Set;for(const u of n.sections)for(const v of u.fields)v.type==="separator"||v.type==="info"||v.requiresRestart&&d.add(v.key);if(d.size===0||!Object.keys(s).some(u=>d.has(u)))return;const g=this._ctx;if(!g)return;const y=g.id;setImmediate(()=>{g.api.addons?.restartAddon?.mutate({addonId:y}).then(()=>{g.logger.info("addon auto-restart triggered by restart-required setting change",{meta:{changedFields:Object.keys(s).filter(v=>d.has(v))}})}).catch(v=>{g.logger.error("addon auto-restart failed",{meta:{error:v instanceof Error?v.message:String(v)}})})})}async getDeviceSettings(s){const n=this.deviceSettingsSchema();if(!n)return{sections:[]};const d=await this._ctx?.settings?.readDeviceStore(s)??{};return ta(n,d)}async updateDeviceSettings(s,n){await this._ctx?.settings?.writeDeviceStore(s,n)}_subscriptions=[];watchCapability(s,n){const d=Array.isArray(s)?s:[s],p=new Set(d);this.subscribe({category:"system.ready-state"},g=>{const y=g.data;if(typeof y.capName!="string"||!p.has(y.capName)||y.scope?.type!=="node")return;const u=y.scope.nodeId;if(typeof u!="string"||u.length===0)return;const v=y.capName;y.state==="down"?n.onDown?.(u,v):y.state==="ready"&&n.onReady?.(u,v)})}subscribe(s,n){const d=this.ctx.eventBus.subscribe(s,n);this._subscriptions.push(d)}emitLifecycle(s,n){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:s,data:n??{}})}catch{}}emitReadinessForProviders(s){const n=this._ctx;if(!n||this._registeredCapNames.length===0)return;const d=n.kernel?.localNodeId??"hub",p=d.includes("/")?d.split("/")[0]:d;for(const g of this._registeredCapNames)try{Ml(n.eventBus,{capName:g,scope:{type:"node",nodeId:p},state:s,generation:this._readinessGeneration,sourceNodeId:p})}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 s=await this.readAddonStoreWithRetry(),n={...this.defaults};for(const d of Object.keys(this.defaults)){const p=s[d];if(p!=null){const g=typeof this.defaults[d];typeof p===g&&(n[d]=p)}}this._config=n}async readAddonStoreWithRetry(){const s=this._ctx?.settings;if(!s)return{};const n=[150,350,600,900];let d;for(let p=0;p<=n.length;p++)try{return await s.readAddonStore()??{}}catch(g){d=g;const y=g instanceof Error?g.message:String(g);if(!(y.includes("SqliteSettingsBackend not initialized")||y.includes("provider not available")))throw g;if(p===n.length)break;await new Promise(v=>setTimeout(v,n[p]))}return this._ctx?.logger?.warn?.("readAddonStore: settings-store unavailable after retries — using defaults",{meta:{error:d instanceof Error?d.message:String(d)}}),{}}}function Tl(c){if(c!=null)return Array.isArray(c)?{providers:c}:c}function Gp(c,s){return{id:c,getRoutes:()=>s,invoke:async n=>{const d=xl(s,n.method,n.path);if(!d)return{status:404,headers:{},redirectUrl:null,body:{error:`No route matches ${n.method} ${n.path}`}};const p={status:200,headers:{},redirectUrl:null},g=Bl(p),y={params:{...n.params,...d.params},query:n.query,body:n.body,headers:n.headers,...n.user?{user:n.user}:{},...n.scopedToken!==void 0?{scopedToken:n.scopedToken}:{}};return await d.route.handler(y,g),p}}}function xl(c,s,n){const d=s.toUpperCase();for(const p of c){if(p.method!==d)continue;const g=Rl(p.path,n);if(g!==null)return{route:p,params:g}}return null}function Rl(c,s){const n=c.split("/").filter(Boolean),d=s.split("/").filter(Boolean);if(n.length!==d.length)return null;const p={};for(let g=0;g<n.length;g++){const y=n[g],u=d[g];if(y.startsWith(":"))p[y.slice(1)]=u;else if(y!==u)return null}return p}function Bl(c){const s={status(n){return c.status=n,s},code(n){return c.status=n,s},send(n){c.body=n},redirect(n){c.redirectUrl=n,c.status===200&&(c.status=302)},header(n,d){return c.headers[n.toLowerCase()]=d,s},type(n){return c.contentType=n,s}};return s}class ql extends Error{capName;scope;waitedMs;constructor(s,n,d){super(`Timed out waiting for ${s} (${le(n)}) to become ready after ${d}ms`),this.name="ReadinessTimeoutError",this.capName=s,this.scope=n,this.waitedMs=d}}function Je(c,s){return`${c}|${le(s)}`}function le(c){switch(c.type){case"global":return"global";case"node":return`node:${c.nodeId}`;case"device":return`device:${c.deviceId}`}}function Xe(c,s){return c.type!==s.type?!1:c.type==="global"||s.type==="global"?!0:c.type==="node"&&s.type==="node"?c.nodeId===s.nodeId:c.type==="device"&&s.type==="device"?c.deviceId===s.deviceId:!1}class jp{bus;sourceNodeId;logger;now;generation;snapshot=new Map;subscriptions=new Set;unsubscribeBus;unsubscribeAgentOffline;constructor(s){if(this.bus=s.eventBus,this.sourceNodeId=s.sourceNodeId,this.logger=s.logger,this.now=s.now??(()=>Date.now()),this.generation=s.generation??Ol(),this.unsubscribeBus=this.bus.subscribe({category:"system.ready-state"},n=>this.ingest(n.data)),this.unsubscribeAgentOffline=this.bus.subscribe({category:"agent.offline"},n=>this.synthesizeDownForNode(n.data.agentId)),typeof this.bus.getRecent=="function")try{const n=this.bus.getRecent({category:"system.ready-state"});for(const d of n)this.ingest(d.data)}catch{}}close(){this.unsubscribeBus(),this.unsubscribeAgentOffline(),this.subscriptions.clear()}get(s,n){return this.snapshot.get(Je(s,n))??null}getSnapshotForTransport(){return Array.from(this.snapshot.values())}hydrate(s){const n=this.now();for(const d of s){const p=Je(d.capName,d.scope);if(this.snapshot.has(p))continue;const g={capName:d.capName,scope:d.scope,state:d.state,generation:d.generation,epoch:1,lastChange:n,sourceNodeId:d.sourceNodeId};this.snapshot.set(p,g),this.logger&&this.logger.debug(`readiness: ${d.capName} (${le(d.scope)}) → ${d.state} (hydrated, gen=${d.generation.slice(0,6)})`);const y={capName:d.capName,scope:d.scope,state:d.state,epoch:1,generation:d.generation,sourceNodeId:"hydrated",ts:n,durationInPrevState:0};for(const u of this.subscriptions)if(u.capName===d.capName&&Xe(u.scope,d.scope))try{u.handler(y)}catch(v){this.logger?.warn(`readiness hydrate handler threw for ${d.capName}: ${v.message??String(v)}`)}}}getAll(){return new Map(this.snapshot)}emitReady(s,n){this.emitTransition(s,n,"ready")}emitStarting(s,n){this.emitTransition(s,n,"starting")}emitDown(s,n){this.emitTransition(s,n,"down")}awaitReady(s,n,d={}){const p=d.timeoutMs??Number.POSITIVE_INFINITY,g=this.now();return this.get(s,n)?.state==="ready"?Promise.resolve():d.signal?.aborted?Promise.reject(d.signal.reason??new Error("aborted")):new Promise((u,v)=>{let k=!1;const w=this.onReadyState(s,n,j=>{j.state==="ready"&&(k||(k=!0,q(),u()))}),N=!Number.isFinite(p)?null:setTimeout(()=>{k||(k=!0,q(),v(new ql(s,n,this.now()-g)))},p),E=()=>{k||(k=!0,q(),v(d.signal?.reason??new Error("aborted")))};d.signal?.addEventListener("abort",E,{once:!0});function q(){w(),N!==null&&clearTimeout(N),d.signal?.removeEventListener("abort",E)}})}onReadyState(s,n,d){const p={capName:s,scope:n,handler:d};this.subscriptions.add(p);const g=this.get(s,n);return g!==null&&queueMicrotask(()=>{this.subscriptions.has(p)&&d({capName:s,scope:n,state:g.state,epoch:g.epoch,generation:g.generation,sourceNodeId:this.sourceNodeId,ts:g.lastChange,durationInPrevState:0})}),()=>{this.subscriptions.delete(p)}}emitTransition(s,n,d){const p=this.now();this.bus.emit(qn("system.ready-state",{type:"capability",id:s,nodeId:this.sourceNodeId},{capName:s,scope:n,state:d,generation:this.generation,sourceNodeId:this.sourceNodeId,ts:p}))}ingest(s){if(typeof s?.capName!="string"||s.state!=="ready"&&s.state!=="starting"&&s.state!=="down"||typeof s.generation!="string"||s.scope?.type!=="global"&&s.scope?.type!=="node"&&s.scope?.type!=="device")return;const n=Je(s.capName,s.scope),d=this.snapshot.get(n)??null,p=this.now();let g;if(d===null?g=s.state==="ready"?1:0:d.generation!==s.generation&&s.state==="ready"?g=d.epoch+1:g=d.epoch,d!==null&&d.generation===s.generation&&d.state===s.state)return;const y=d===null?0:Math.max(0,p-d.lastChange),u={capName:s.capName,scope:s.scope,state:s.state,generation:s.generation,epoch:g,lastChange:p,sourceNodeId:s.sourceNodeId};this.snapshot.set(n,u);const v={capName:s.capName,scope:s.scope,state:s.state,epoch:g,generation:s.generation,sourceNodeId:s.sourceNodeId,ts:s.ts,durationInPrevState:y};this.logger&&this.logger.debug(`readiness: ${s.capName} (${le(s.scope)}) → ${s.state} epoch=${g} gen=${s.generation.slice(0,6)} (prev ${y}ms)`);for(const k of this.subscriptions)if(k.capName===s.capName&&Xe(k.scope,s.scope))try{k.handler(v)}catch(w){this.logger?.warn(`readiness handler threw for ${s.capName}: ${w.message??String(w)}`)}}synthesizeDownForNode(s){const n=this.now();for(const[d,p]of this.snapshot){if(p.state==="down"||!(p.scope.type==="node"&&p.scope.nodeId===s||p.scope.type==="device"&&p.sourceNodeId===s))continue;const y=Math.max(0,n-p.lastChange),u={...p,state:"down",lastChange:n};this.snapshot.set(d,u);const v={capName:p.capName,scope:p.scope,state:"down",epoch:p.epoch,generation:p.generation,sourceNodeId:this.sourceNodeId,ts:n,durationInPrevState:y};this.logger&&this.logger.debug(`readiness: ${p.capName} (${le(p.scope)}) → down (synthesized from agent.offline ${s})`);for(const k of this.subscriptions)if(k.capName===p.capName&&Xe(k.scope,p.scope))try{k.handler(v)}catch(w){this.logger?.warn(`readiness handler threw during agent.offline demux for ${p.capName}: ${w.message??String(w)}`)}}}}function Ol(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14)}function Zp(c,s){for(const{capName:n,scope:d}of s)c.emitDown(n,d)}const Yp=["data","media","recordings","recordings-high","recordings-low","recordings-clips","event-images","models","addons-data","cache","logs","backups"],Qp={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"},zl={high:"High",mid:"Mid",low:"Low"};function Jp(c){return zl[c]??c.charAt(0).toUpperCase()+c.slice(1)}function Ll(c){return(c.width??0)*(c.height??0)}function _l(c){if(c.length===0)return[];const s=c.map((d,p)=>({s:d,i:p,px:Ll(d.metadata??{})})).sort((d,p)=>p.px-d.px),n=Array.from({length:c.length});for(let d=0;d<s.length;d++){const{s:p,i:g}=s[d];let y;d===0?y="high":d===s.length-1?y="low":y="mid",n[g]={...p,quality:y}}return n}function Xp(c){const s=c.height??0,n=c.width??0;return s>=1080||n>=1920?"high":s>=480||n>=640?"mid":"low"}function em(c){const s=c.protocols.find(p=>p.type==="rtsp"&&p.url)??c.protocols.find(p=>p.url),n=s?.type,d=n==="rtsp"?"rtsp":n==="http"||n==="flv"?"http-mjpeg":"custom";return{id:c.id,label:c.label??c.id,protocol:d,url:s?.url,profileHint:c.quality}}function B(c){return typeof c=="string"}function Ul(c){return typeof c=="object"&&c!==null&&!Array.isArray(c)}function Fl(c){return B(c)&&c.trim()?{url:c}:Ul(c)&&B(c.url)&&c.url.trim()?{url:c.url,label:B(c.label)?c.label:void 0}:null}function tm(c){const s=B(c.snapshot_url)?c.snapshot_url:void 0;if(Array.isArray(c.streams)){const y=[];for(const u of c.streams){const v=Fl(u);v&&y.push(v)}return{streams:y,snapshot_url:s}}const n=[],d=B(c.main_stream_url)?c.main_stream_url:void 0;d&&n.push({url:d,label:B(c.main_stream_name)?c.main_stream_name:void 0});const p=B(c.sub_stream_url)?c.sub_stream_url:void 0;p&&n.push({url:p,label:B(c.sub_stream_name)?c.sub_stream_name:void 0});const g=B(c.third_stream_url)?c.third_stream_url:void 0;return g&&n.push({url:g,label:B(c.third_stream_name)?c.third_stream_name:void 0}),{streams:n,snapshot_url:s}}function am(c){if(c.length===0)return{};const s=_l(c),n={},d=s.find(u=>u.quality==="high"),p=s.find(u=>u.quality==="mid"),g=s.find(u=>u.quality==="low");d&&(n.high=d.id),p&&(n.mid=p.id),g&&(n.low=g.id);const y=d??p??g??s[0];return y&&(n.high||(n.high=y.id),n.mid||(n.mid=y.id),n.low||(n.low=y.id)),n}const nm={streaming:!0,notifications:!0,objectDetection:!1,remoteAccess:!0,agentCluster:!1,smartHome:!0,recordings:!0,backup:!0,repl:!0},om=["face","plate"],sm=["face","plate","clip","custom"],im={cleanupIntervalMs:3600*1e3,detectionEventsDays:30,audioLevelsDays:7,snapshotsDays:14};var Hl=(c=>(c.Addon="addon",c.Core="core",c.Device="device",c.Provider="provider",c.System="system",c))(Hl||{});const Wl="camstack/camstack-models",cm=`https://huggingface.co/${Wl}/resolve/main`,rm={"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 On(c){return JSON.parse(c)}function $l(c){return c===null||typeof c!="object"||Array.isArray(c)?null:{...c}}function dm(c){return Array.isArray(c)?c:[]}function lm(c,s=""){return typeof c=="string"?c:s}function pm(c,s=0){return typeof c=="number"?c:s}function mm(c,s=!1){return typeof c=="boolean"?c:s}function um(c){try{return $l(On(c))}catch{return null}}function gm(c){try{const s=On(c);return Array.isArray(s)?s:null}catch{return null}}function hm(c,s){return`https://huggingface.co/${c}/resolve/main/${s}`}function vm(c,s){if(c.length!==s.length)return 0;let n=0,d=0,p=0;for(let y=0;y<c.length;y++)n+=c[y]*s[y],d+=c[y]*c[y],p+=s[y]*s[y];const g=Math.sqrt(d)*Math.sqrt(p);return g===0?0:n/g}class ym{constructor(s,n){this.elementId=s,this.getBackend=typeof n=="function"?n:()=>n}cache={};listeners=new Set;loaded=!1;getBackend;async ensureLoaded(){if(this.loaded)return;const s=this.getBackend();if(!s)throw new Error(`ElementConfigStore(${this.elementId}): settings backend not available`);const n=await s.query({collection:"config",filter:{where:{id:this.elementId},limit:1}});n.length>0&&(this.cache=n[0].data??{}),this.loaded=!0}getAll(){return{...this.cache}}get(s){const n=s.split(".");let d=this.cache;for(const p of n){if(d===null||typeof d!="object"||Array.isArray(d))return;d=Reflect.get(d,p)}return d}async set(s,n){await this.ensureLoaded(),Kl(this.cache,s,n),await this.persist(),this.notifyListeners()}async setAll(s){await this.ensureLoaded(),this.cache={...s},await this.persist(),this.notifyListeners()}onChange(s){return this.listeners.add(s),()=>{this.listeners.delete(s)}}async load(){await this.ensureLoaded()}async loadDefaults(s){await this.ensureLoaded(),Object.keys(this.cache).length===0&&(this.cache={...s},await this.persist())}async persist(){const s=this.getBackend();if(!s)throw new Error(`ElementConfigStore(${this.elementId}): settings backend not available — cannot persist config`);await s.set({collection:"config",key:this.elementId,value:this.cache})}notifyListeners(){const s=this.getAll();for(const n of this.listeners)try{n(s)}catch{}}}function Kl(c,s,n){const d=s.split(".");let p=c;for(let g=0;g<d.length-1;g++){const y=d[g],u=p[y];if(u===null||typeof u!="object"||Array.isArray(u)){const v={};p[y]=v,p=v}else p=u}p[d[d.length-1]]=n}const zn={cpu:"onnx",coreml:"onnx",cuda:"onnx",tensorrt:"onnx","onnx-py":"onnx",pytorch:"pt",openvino:"openvino"},Vl={onnx:"onnx",coreml:"coreml",openvino:"openvino",tflite:"tflite",pytorch:"pt"},Gl={coreml:"coreml_inference.py",pytorch:"pytorch_inference.py",openvino:"openvino_inference.py"};function jl(c,s){return c==="node"?"onnx":{coreml:"coreml",openvino:"openvino",pytorch:"pytorch","onnx-py":"onnx",cpu:"onnx"}[s]??s}function Sm(c,s){return c==="node"?zn[s]??"onnx":{coreml:"coreml",openvino:"openvino",pytorch:"pt","onnx-py":"onnx",cpu:"onnx"}[s]??"onnx"}function fm(c,s){return!c||c==="auto"?"auto":jl(c,s??"cpu")}function bm(c){return zn[c]??"onnx"}function Im(c){return Vl[c]}function km(c){return Gl[c]}function wm(c){return c==="coreml"||c==="pytorch"||c==="openvino"}async function Am(c,s){const n=performance.now();try{return{output:s!==void 0?await Zl(c(),s):await c(),durationMs:ja(performance.now()-n),ok:!0}}catch(d){return{output:void 0,durationMs:ja(performance.now()-n),ok:!1,error:lo(d)}}}function ja(c){return Math.round(c*100)/100}function Zl(c,s){return new Promise((n,d)=>{const p=setTimeout(()=>d(new Error(`Inference timeout after ${s}ms`)),s);c.then(g=>{clearTimeout(p),n(g)}).catch(g=>{clearTimeout(p),d(g)})})}const Cm=[{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"}],Nm=[{id:"person",name:"Person"},{id:"vehicle",name:"Vehicle"},{id:"animal",name:"Animal"}],Pm={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},Dm={camera:{type:"camera",label:"Camera",icon:"camera"}};class pe{schema;data;persistFn;constructor(s,n,d){this.schema=s,this.data=n,this.persistFn=d}static fromSchema(s,n,d={},p){const g=s.safeParse(d);if(g.success)return new pe(s,g.data,n);const y=new Set;for(const w of g.error.issues){const A=w.path[0];typeof A=="string"&&y.add(A)}const u={...d};for(const w of y)delete u[w];const v=s.safeParse(u);if(p?.({droppedKeys:[...y],issues:g.error.issues}),v.success)return n(v.data).catch(()=>{}),new pe(s,v.data,n);const k=s.parse({});return new pe(s,k,n)}get values(){return this.data}get(s){return this.data[s]}async set(s,n){const d=this.schema.parse({...this.data,[s]:n});this.data=d,await this.persistFn(this.data)}async setAll(s){const n=this.schema.parse({...this.data,...s});this.data=n,await this.persistFn(this.data)}async deleteKey(s){const{[s]:n,...d}=this.data,p=this.schema.parse(d);this.data=p,await this.persistFn(this.data)}entries(){const s=this.schema.shape;return Object.entries(s).map(([n,d])=>({key:n,schema:d,value:this.data[n],description:d.description}))}}class qt{writer;pendingWrites=new Set;slices;schemas=new Map;listeners=new Set;capListeners=new Map;constructor(s,n){this.writer=n,this.slices=new Map;for(const[d,p]of Object.entries(s))p&&typeof p=="object"&&!Array.isArray(p)&&this.slices.set(d,{...p})}static fromInitial(s,n){return new qt(s,n)}installCapSchema(s,n){const d=this.schemas.get(s);if(d){if(d!==n)throw new Error(`[DeviceRuntimeState] capability "${s}" registered a different runtime-state schema; each cap must declare ONE shape across every provider`);return}this.schemas.set(s,n);const p=this.slices.get(s);if(p){const g=n.safeParse(p);g.success?this.slices.set(s,g.data):this.slices.delete(s)}}getCapState(s){const n=this.slices.get(s);if(n)return Object.freeze({...n})}getCapField(s,n){return this.slices.get(s)?.[n]}setCapState(s,n){this.applyCapWrite(s,n,!1)}patchCapState(s,n){this.applyCapWrite(s,n,!0)}applyCapWrite(s,n,d){const p=this.schemas.get(s);if(!p)throw new Error(`[DeviceRuntimeState] no schema registered for cap "${s}" — did the device register it via ctx.registerNativeCap before writing?`);const g=this.slices.get(s)??{},y=d?{...g,...n}:{...n},u=p.parse(y);if(Yl(g,u))return;this.slices.set(s,u),this.fireListeners([s]);const v=this.writer(s,{...u}).catch(()=>{});this.pendingWrites.add(v),v.finally(()=>{this.pendingWrites.delete(v)})}fireListeners(s){const n=this.snapshot();for(const d of this.listeners)try{d(s,n)}catch{}for(const d of s){const p=this.capListeners.get(d);if(!p)continue;const g=this.getCapState(d);for(const y of p)try{y(g)}catch{}}}subscribe(s){return this.listeners.add(s),()=>{this.listeners.delete(s)}}subscribeCap(s,n){let d=this.capListeners.get(s);d||(d=new Set,this.capListeners.set(s,d));const p=g=>{n(g)};return d.add(p),()=>{const g=this.capListeners.get(s);g&&(g.delete(p),g.size===0&&this.capListeners.delete(s))}}snapshot(){const s={};for(const[n,d]of this.slices)s[n]=Object.freeze({...d});return Object.freeze(s)}async flush(){if(this.pendingWrites.size===0)return;const s=[...this.pendingWrites];await Promise.allSettled(s)}}function Yl(c,s){const n=Object.keys(c),d=Object.keys(s);if(n.length!==d.length)return!1;for(const p of n)if(c[p]!==s[p])return!1;return!0}const et="lastFetchedAt";function Mm(c){const{runtimeState:s,cap:n,ownDeviceId:d,refresh:p,staleMs:g,empty:y}=c,u=async()=>{const w=s.getCapState(n.name),A=typeof w?.[et]=="number"?w[et]:0;(!w||Date.now()-A>g)&&await p()},v=()=>{const w=s.getCapState(n.name);if(!w)return y();const{[et]:A,...N}=w;return N};return{ensureFresh:u,getStatus:async({deviceId:w})=>{if(w!==d)throw new Error(`${n.name}: deviceId mismatch, expected ${d}, got ${w}`);return await u(),v()}}}const Ql={audioMetrics:en,battery:tn,brightness:an,cameraStreams:sn,deviceDiscovery:cn,deviceStatus:Pt,doorbell:rn,featureProbe:Dt,motion:pn,motionTrigger:un,ptzAutotrack:gn,switch:hn,zoneAnalytics:vn,zoneRules:yn,zones:dn};class Em{id;stableId;type;name;parentDeviceId;role;get online(){return this.runtimeState.getCapState("device-status")?.online??!1}set online(s){this.markOnline(s)}get state(){if(!this._stateProxyCache){const s={},n={get:(d,p)=>{const g=p;if(g in s)return s[g];const y=Ql[g];if(!y)return;const u=this.sliceProxy(y);return s[g]=u,u}};this._stateProxyCache=new Proxy(s,n)}return this._stateProxyCache}_stateProxyCache;config;runtimeState;ctx;location;disabled;constructor(s,n,d){if(this.ctx=s,this.id=s.id,this.stableId=s.stableId,this.type=d.type,!s.deviceMeta)throw new Error(`BaseDevice constructor: ctx.deviceMeta is required (id=${s.id} stableId=${s.stableId})`);this.name=s.deviceMeta.name,this.location=s.deviceMeta.location,this.disabled=s.deviceMeta.disabled,this.role=d.role,this.parentDeviceId=s.parentDeviceId;const p=s.persistedConfig??{};this.config=pe.fromSchema(n,w=>s.persistConfig(w),p,({droppedKeys:w,issues:A})=>{s.logger.warn("Device config recovery: dropping invalid persisted fields",{tags:{deviceId:s.id,stableId:s.stableId},meta:{droppedKeys:[...w],firstIssue:A[0]?.message??null}})});let g=null;const y=async(w,A)=>{g||(g=s.fetchDevice(s.id)),await(await g).deviceState.setCapSlice({capName:w,slice:A})},u=s.initialRuntimeState??{};this.runtimeState=qt.fromInitial(u,y),s.bindRuntimeState?.(this.runtimeState),s.registerNativeCap?.(Pt,{});const v={online:!1,lastChangedAt:Date.now()};this.runtimeState.setCapState("device-status",v),s.registerNativeCap?.(Dt,{});const k={flags:{},deviceType:null,model:null,channelCount:null,lastProbedAt:0,lastFetchedAt:0};this.runtimeState.setCapState("feature-probe",k)}async removeDevice(){}markOnline(s){if(this.online===s)return;const n={online:s,lastChangedAt:Date.now()};this.runtimeState.setCapState("device-status",n)}async refreshFeatures(){const n=this.ctx.api?.deviceManager?.registerDevice;if(n)try{await n.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(s){return this.runtimeState.getCapState(s.name)??null}setCapSlice(s,n){this.runtimeState.setCapState(s.name,n)}sliceProxy(s){const n={},d={get:(p,g)=>this.runtimeState.getCapState(s.name)?.[g],set:(p,g,y)=>(this.runtimeState.patchCapState(s.name,{[g]:y}),!0),has:(p,g)=>{const y=this.runtimeState.getCapState(s.name);return y?g in y:!1},ownKeys:()=>{const p=this.runtimeState.getCapState(s.name);return p?Object.keys(p):[]},getOwnPropertyDescriptor:(p,g)=>{const y=this.runtimeState.getCapState(s.name);if(!(!y||!(g in y)))return{configurable:!0,enumerable:!0,value:y[g]}}};return new Proxy(n,d)}getSettingsUISchema(){return{sections:[]}}async applySettingsPatch(s){await this.config.setAll(s)}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 Jl(c,s){const n={};for(const d of c.config.entries())n[d.key]=d.value;return{id:c.id,stableId:c.stableId,addonId:s,type:String(c.type),name:c.name,parentDeviceId:c.parentDeviceId,online:c.online,features:[...c.features],config:n}}class Tm extends El{async onInitialize(){return this.ctx.logger.info(`${this.providerName} Provider initialized`),[{capability:Sn,provider:this}]}async onShutdown(){const s=await this.ctx.kernel.devices?.getAll()??[];for(const n of s)try{await this.ctx.kernel.devices?.decommission(n.id)}catch(d){this.ctx.logger.warn(`${this.providerName}: decommission failed`,{tags:{deviceId:n.id,stableId:n.stableId},meta:{error:d instanceof Error?d.message:String(d)}})}this.ctx.logger.info(`${this.providerName} Provider shut down`,{meta:{decommissionedCount:s.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(n=>({id:n.stableId,name:n.name,type:String(n.type)}))}async supportsDiscovery(){return!1}async discoverDevices(){return[]}async adoptDiscoveredDevice(s){throw new Error(`${this.providerName} provider does not support discovery-based adoption`)}async supportsManualCreation(){return!0}async getChildCreationSchema(s){return this.onGetCreationSchema(s.type)}async createDevice(s){const n=await this.onCreateDevice(s.type,s.config),d=this.deviceClasses[n.meta.type];if(!d)throw new Error(`${this.providerName} provider: no device class registered for type "${n.meta.type}" — add it to the deviceClasses map`);const p=this.generateStableId(n.meta.type,n.config),g=await this.ctx.kernel.devices.create(p,d,n.config,null,n.meta);if(n.onAfterCreate)try{await n.onAfterCreate(g)}catch(y){this.ctx.logger.warn("createDevice: onAfterCreate hook threw — device is already registered",{tags:{deviceId:g.id,stableId:p},meta:{error:y instanceof Error?y.message:String(y)}})}return this.toSummary(g)}generateStableId(s,n){return`${this.addonId}-${Date.now()}`}async testCreationField(s){return{status:"ok",labels:["probe not implemented"]}}async restoreDevices(s){await this.onRestoreDevices(s),s.length>0&&this.ctx.logger.info(`Restored ${s.length} ${this.providerName} device(s)`)}async onRestoreDevices(s){const n=new Set;for(const p of s){if(p.parentDeviceId!==null)continue;const g=this.deviceClasses[p.type];if(!g){this.ctx.logger.warn("No device class registered for restored type — skipping",{tags:{stableId:p.stableId},meta:{type:p.type}});continue}try{await this.ctx.kernel.devices.create(p.stableId,g,{}),n.add(p.id)}catch(y){this.ctx.logger.warn("Failed to restore device",{tags:{stableId:p.stableId},meta:{type:p.type,error:y instanceof Error?y.message:String(y)}})}}const d=s.filter(p=>p.parentDeviceId!==null);for(const p of d){const g=this.deviceClasses[p.type];if(g&&p.parentDeviceId!==null&&n.has(p.parentDeviceId))try{await this.ctx.kernel.devices.create(p.stableId,g,{},p.parentDeviceId),n.add(p.id)}catch(y){this.ctx.logger.warn("Failed to restore hub-adopted child",{tags:{stableId:p.stableId,parentDeviceId:p.parentDeviceId},meta:{type:p.type,error:y instanceof Error?y.message:String(y)}})}}}toSummary(s){return Jl(s,this.addonId)}}function me(c){return c.def}function xm(c,s="Configuration",n="main"){const d=c.map(p=>Xl(p.key,p.schema,p.description));return{sections:[{id:n,title:s,fields:d}]}}function Xl(c,s,n){const d=Pe(s),p=op(s),g=n??Ln(c),y={key:c,label:g,description:n,default:p};return d instanceof Yn?ep(c,y):d instanceof Qn?tp(d,y):d instanceof Jn?{...y,type:"boolean"}:d instanceof Xn?np(d,y):d instanceof eo||d instanceof to?{...y,type:"textarea",rows:6,isJson:!0}:{...y,type:"text"}}function ep(c,s){const n=c.toLowerCase();return n.includes("password")||n.includes("secret")||n.includes("token")||n.includes("apikey")||n.includes("api_key")?{...s,type:"password",showToggle:!0}:{...s,type:"text"}}function tp(c,s){const n=c,d=n.minValue,p=n.maxValue,g=d!=null&&isFinite(d)?d:void 0,y=p!=null&&isFinite(p)?p:void 0,u=ap(c);return{...s,type:"number",...g!==void 0?{min:g}:{},...y!==void 0?{max:y}:{},...u!==void 0?{step:u}:{}}}function ap(c){const n=me(c).checks??[];for(const d of n)if(d._zod?.def?.check==="multiple_of"&&d._zod.def.value!==void 0)return d._zod.def.value}function np(c,s){const n=c.options.map(p=>String(p));return{...s,type:"select",options:n.map(p=>({label:Ln(p),value:p}))}}function Pe(c){return c instanceof Ja||c instanceof ao||c instanceof no?Pe(me(c).innerType):c}function op(c){if(c instanceof Ja)return me(c).defaultValue}function Ln(c){return c.replace(/([A-Z])/g," $1").replace(/[_-]/g," ").replace(/^\w/,s=>s.toUpperCase()).trim()}const sp="device.state-changed";function _n(c){const s=new Map,n=new Map;let d=null;const p=(u,v)=>`${u}:${v}`,g=()=>{d||c.live?.onEvent&&(d=c.live.onEvent.subscribe({category:sp},{onData:u=>{const v=u.data;if(!v||typeof v.deviceId!="number"||typeof v.capName!="string")return;const k=p(v.deviceId,v.capName);s.set(k,v.slice);const w=n.get(k);if(w)for(const A of w)try{A(v.slice)}catch{}}}))},y=()=>{d&&(n.size>0||(d.unsubscribe(),d=null))};return{read(u,v){return s.get(p(u,v))},async refresh(u,v){const k=await c.deviceState.getCapSlice.query({deviceId:u,capName:v}),w=p(u,v);s.set(w,k??void 0);const A=n.get(w);if(A)for(const N of A)try{N(k??void 0)}catch{}},watch(u,v,k){const w=p(u,v);let A=n.get(w);return A||(A=new Set,n.set(w,A)),A.add(k),g(),()=>{A.delete(k),A.size===0&&n.delete(w),y()}},async write(u,v,k){await c.deviceState.setCapSlice.mutate({deviceId:u,capName:v,slice:k})}}}function ip(c,s,n){const d=(p,g)=>`${p}:${g}`;return{read(p,g){return c.get(p)?.get(g)},async refresh(){},watch(p,g,y){const u=d(p,g);let v=s.get(u);return v||(v=new Set,s.set(u,v)),v.add(y),()=>{v.delete(y),v.size===0&&s.delete(u)}},async write(p,g,y){if(!n)throw new Error("createMirrorSource: write requires an api reference — pass it as the third argument when constructing the source");await n.deviceState.setCapSlice.mutate({deviceId:p,capName:g,slice:y})}}}function T(c,s,n){const d=cp(c)?c:_n(c);return{get value(){return d.read(s,n)},refresh(){return d.refresh(s,n)},subscribe(p){const g=d.watch(s,n,y=>{try{p(y)}catch{}});try{p(d.read(s,n))}catch{}return d.read(s,n)===void 0&&d.refresh(s,n).catch(()=>{}),g},async set(p){await d.write(s,n,p)},async patch(p){const y={...d.read(s,n)??{},...p};await d.write(s,n,y)}}}function cp(c){return typeof c.read=="function"&&typeof c.watch=="function"}function rp(c,s,n){const d=c,p=n?.stateSource??_n(c);function g(r,O){const z=typeof r=="object"&&r!==null?r:{};return O!==void 0?{...z,deviceId:s.deviceId,nodeId:O}:{...z,deviceId:s.deviceId}}function y(r,O,z,W,se){const ye=d[r]?.[O];if(!ye)throw new Error(`DeviceProxy: api has no '${r}.${O}'`);const ie=ye;return z==="mutation"?ie.mutate(W):z==="subscription"?ie.subscribe(W,se):ie.query(W)}function u(r,O,z,W,se,ye){const ie=s.entries.find(Gn=>Gn.capName===r);return y(O,z,W,g(se,ie?.providerNodeId),ye)}function v(r,O,z,W,se){return y(r,O,z,g(W,void 0),se)}const k={getStatus:r=>u("accessories","accessories","getStatus","query",r)},w={resolveDeviceSettings:r=>u("audio-analysis","audioAnalysis","resolveDeviceSettings","query",r),getDeviceSettingsContribution:r=>u("audio-analysis","audioAnalysis","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>u("audio-analysis","audioAnalysis","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>u("audio-analysis","audioAnalysis","applyDeviceSettingsPatch","mutation",r)},A={getCurrentSnapshot:r=>u("audio-metrics","audioMetrics","getCurrentSnapshot","query",r),getHistory:r=>u("audio-metrics","audioMetrics","getHistory","query",r)},N={getStatus:r=>u("battery","battery","getStatus","query",r)},E={setBrightness:r=>u("brightness","brightness","setBrightness","mutation",r),getStatus:r=>u("brightness","brightness","getStatus","query",r)},q={getCredentials:r=>u("camera-credentials","cameraCredentials","getCredentials","query",r),getStatus:r=>u("camera-credentials","cameraCredentials","getStatus","query",r)},j={getCameraStreams:r=>u("camera-streams","cameraStreams","getCameraStreams","query",r),getBrokerStreams:r=>u("camera-streams","cameraStreams","getBrokerStreams","query",r),getRtspEntries:r=>u("camera-streams","cameraStreams","getRtspEntries","query",r)},ae={getDeviceSettingsContribution:r=>u("detection-pipeline","detectionPipeline","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>u("detection-pipeline","detectionPipeline","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>u("detection-pipeline","detectionPipeline","applyDeviceSettingsPatch","mutation",r)},Z={listDiscovered:r=>u("device-discovery","deviceDiscovery","listDiscovered","query",r),refreshDiscovery:r=>u("device-discovery","deviceDiscovery","refreshDiscovery","mutation",r),adoptDevice:r=>u("device-discovery","deviceDiscovery","adoptDevice","mutation",r),releaseDevice:r=>u("device-discovery","deviceDiscovery","releaseDevice","mutation",r),getStatus:r=>u("device-discovery","deviceDiscovery","getStatus","query",r)},Ot={getStreamSources:r=>u("device-ops","deviceOps","getStreamSources","query",r),getConfigEntries:r=>u("device-ops","deviceOps","getConfigEntries","query",r),setConfig:r=>u("device-ops","deviceOps","setConfig","mutation",r),removeDevice:r=>u("device-ops","deviceOps","removeDevice","mutation",r),getSettingsSchema:r=>u("device-ops","deviceOps","getSettingsSchema","query",r)},zt={getStatus:r=>u("device-status","deviceStatus","getStatus","query",r)},Lt={getStatus:r=>u("doorbell","doorbell","getStatus","query",r)},_t={getEvents:r=>u("events","events","getEvents","query",r),getEventThumbnail:r=>u("events","events","getEventThumbnail","query",r),getEventClipUrl:r=>u("events","events","getEventClipUrl","query",r)},Ut={getStatus:r=>u("feature-probe","featureProbe","getStatus","query",r)},Ft={startSession:r=>u("intercom","intercom","startSession","mutation",r),handleAnswer:r=>u("intercom","intercom","handleAnswer","mutation",r),stopSession:r=>u("intercom","intercom","stopSession","mutation",r),startTalkSession:r=>u("intercom","intercom","startTalkSession","mutation",r),pushTalkPcm:r=>u("intercom","intercom","pushTalkPcm","mutation",r),endTalkSession:r=>u("intercom","intercom","endTalkSession","mutation",r),getStatus:r=>u("intercom","intercom","getStatus","query",r)},Ht={isDetected:r=>u("motion","motion","isDetected","query",r),getStatus:r=>u("motion","motion","getStatus","query",r)},Wt={analyze:r=>u("motion-detection","motionDetection","analyze","mutation",r),removeCamera:r=>u("motion-detection","motionDetection","removeCamera","mutation",r),reset:r=>u("motion-detection","motionDetection","reset","mutation",r),getDeviceSettingsContribution:r=>u("motion-detection","motionDetection","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>u("motion-detection","motionDetection","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>u("motion-detection","motionDetection","applyDeviceSettingsPatch","mutation",r)},$t={setMotionTrigger:r=>u("motion-trigger","motionTrigger","setMotionTrigger","mutation",r),getStatus:r=>u("motion-trigger","motionTrigger","getStatus","query",r)},Kt={getStatus:r=>u("native-object-detection","nativeObjectDetection","getStatus","query",r)},Vt={setOverlay:r=>u("osd","osd","setOverlay","mutation",r),getStatus:r=>u("osd","osd","getStatus","query",r)},Gt={getActiveTracks:r=>u("pipeline-analytics","pipelineAnalytics","getActiveTracks","query",r),getTrack:r=>u("pipeline-analytics","pipelineAnalytics","getTrack","query",r),listTracks:r=>u("pipeline-analytics","pipelineAnalytics","listTracks","query",r),clearTracks:r=>u("pipeline-analytics","pipelineAnalytics","clearTracks","mutation",r),getMotionEvents:r=>u("pipeline-analytics","pipelineAnalytics","getMotionEvents","query",r),getObjectEvents:r=>u("pipeline-analytics","pipelineAnalytics","getObjectEvents","query",r),getAudioEvents:r=>u("pipeline-analytics","pipelineAnalytics","getAudioEvents","query",r),getEventMedia:r=>u("pipeline-analytics","pipelineAnalytics","getEventMedia","query",r),getTrackMedia:r=>u("pipeline-analytics","pipelineAnalytics","getTrackMedia","query",r),getDeviceSettingsContribution:r=>u("pipeline-analytics","pipelineAnalytics","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>u("pipeline-analytics","pipelineAnalytics","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>u("pipeline-analytics","pipelineAnalytics","applyDeviceSettingsPatch","mutation",r)},jt={move:r=>u("ptz","ptz","move","mutation",r),continuousMove:r=>u("ptz","ptz","continuousMove","mutation",r),stop:r=>u("ptz","ptz","stop","mutation",r),getPresets:r=>u("ptz","ptz","getPresets","query",r),goToPreset:r=>u("ptz","ptz","goToPreset","mutation",r),goHome:r=>u("ptz","ptz","goHome","mutation",r),getPosition:r=>u("ptz","ptz","getPosition","query",r),getStatus:r=>u("ptz","ptz","getStatus","query",r)},Zt={getStatus:r=>u("ptz-autotrack","ptzAutotrack","getStatus","query",r),setEnabled:r=>u("ptz-autotrack","ptzAutotrack","setEnabled","mutation",r),getSettings:r=>u("ptz-autotrack","ptzAutotrack","getSettings","query",r),setSettings:r=>u("ptz-autotrack","ptzAutotrack","setSettings","mutation",r)},Yt={reboot:r=>u("reboot","reboot","reboot","mutation",r)},Qt={getSegments:r=>u("recording","recording","getSegments","query",r),getPlaybackUrl:r=>u("recording","recording","getPlaybackUrl","query",r),getThumbnailAt:r=>u("recording","recording","getThumbnailAt","query",r)},Jt={getSnapshot:r=>u("snapshot","snapshot","getSnapshot","query",r),invalidateCache:r=>u("snapshot","snapshot","invalidateCache","mutation",r),getStatus:r=>u("snapshot","snapshot","getStatus","query",r),getDeviceSettingsContribution:r=>u("snapshot","snapshot","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>u("snapshot","snapshot","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>u("snapshot","snapshot","applyDeviceSettingsPatch","mutation",r)},Xt={setState:r=>u("switch","switch","setState","mutation",r),getStatus:r=>u("switch","switch","getStatus","query",r)},ea={listStreams:r=>u("webrtc-session","webrtcSession","listStreams","query",r),createSession:r=>u("webrtc-session","webrtcSession","createSession","mutation",r),handleOffer:r=>u("webrtc-session","webrtcSession","handleOffer","mutation",r),handleAnswer:r=>u("webrtc-session","webrtcSession","handleAnswer","mutation",r),closeSession:r=>u("webrtc-session","webrtcSession","closeSession","mutation",r),hasAdaptiveBitrate:r=>u("webrtc-session","webrtcSession","hasAdaptiveBitrate","query",r)},o={getCurrentSnapshot:r=>u("zone-analytics","zoneAnalytics","getCurrentSnapshot","query",r),getZoneHistory:r=>u("zone-analytics","zoneAnalytics","getZoneHistory","query",r),getCameraHistory:r=>u("zone-analytics","zoneAnalytics","getCameraHistory","query",r),getUnzonedHistory:r=>u("zone-analytics","zoneAnalytics","getUnzonedHistory","query",r)},U={listRules:r=>u("zone-rules","zoneRules","listRules","query",r),setRules:r=>u("zone-rules","zoneRules","setRules","mutation",r)},he={listZones:r=>u("zones","zones","listZones","query",r),addZone:r=>u("zones","zones","addZone","mutation",r),removeZone:r=>u("zones","zones","removeZone","mutation",r),updateZone:r=>u("zones","zones","updateZone","mutation",r)},ne={getDeviceSettings:r=>v("addonSettings","getDeviceSettings","query",r),updateDeviceSettings:r=>v("addonSettings","updateDeviceSettings","mutation",r)},qe={getDeviceSettingsContribution:r=>v("deviceExport","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>v("deviceExport","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>v("deviceExport","applyDeviceSettingsPatch","mutation",r)},ve={loadConfig:r=>v("deviceManager","loadConfig","query",r),loadRuntimeState:r=>v("deviceManager","loadRuntimeState","query",r),loadMeta:r=>v("deviceManager","loadMeta","query",r),setName:r=>v("deviceManager","setName","mutation",r),setLocation:r=>v("deviceManager","setLocation","mutation",r),setMetadata:r=>v("deviceManager","setMetadata","mutation",r),setDisabled:r=>v("deviceManager","setDisabled","mutation",r),getDevice:r=>v("deviceManager","getDevice","query",r),getStreamSources:r=>v("deviceManager","getStreamSources","query",r),getConfigSchema:r=>v("deviceManager","getConfigSchema","query",r),getSettingsSchema:r=>v("deviceManager","getSettingsSchema","query",r),updateConfig:r=>v("deviceManager","updateConfig","mutation",r),enable:r=>v("deviceManager","enable","mutation",r),disable:r=>v("deviceManager","disable","mutation",r),remove:r=>v("deviceManager","remove","mutation",r),getStreamProfileMap:r=>v("deviceManager","getStreamProfileMap","query",r),setStreamProfileMap:r=>v("deviceManager","setStreamProfileMap","mutation",r),probeStreams:r=>v("deviceManager","probeStreams","mutation",r),getBindings:r=>v("deviceManager","getBindings","query",r),getAllBindings:r=>v("deviceManager","getAllBindings","query",r),setWrapperActive:r=>v("deviceManager","setWrapperActive","mutation",r),getDeviceSettingsAggregate:r=>v("deviceManager","getDeviceSettingsAggregate","query",r),getDeviceLiveInfoAggregate:r=>v("deviceManager","getDeviceLiveInfoAggregate","query",r),getDeviceAggregate:r=>v("deviceManager","getDeviceAggregate","query",r),updateDeviceField:r=>v("deviceManager","updateDeviceField","mutation",r),updateDeviceFieldsBatch:r=>v("deviceManager","updateDeviceFieldsBatch","mutation",r),testField:r=>v("deviceManager","testField","mutation",r),getDeviceStatusAggregate:r=>v("deviceManager","getDeviceStatusAggregate","query",r)},oe={getSnapshot:r=>v("deviceState","getSnapshot","query",r),getCapSlice:r=>v("deviceState","getCapSlice","query",r),setCapSlice:r=>v("deviceState","setCapSlice","mutation",r)},Un={getDeviceStats:r=>v("networkQuality","getDeviceStats","query",r),reportClientStats:r=>v("networkQuality","reportClientStats","mutation",r)},Fn={runPipeline:r=>v("pipelineExecutor","runPipeline","mutation",r),runPipelineBatch:r=>v("pipelineExecutor","runPipelineBatch","mutation",r)},Hn={assignPipeline:r=>v("pipelineOrchestrator","assignPipeline","mutation",r),unassignPipeline:r=>v("pipelineOrchestrator","unassignPipeline","mutation",r),getPipelineAssignment:r=>v("pipelineOrchestrator","getPipelineAssignment","query",r),getCameraMetrics:r=>v("pipelineOrchestrator","getCameraMetrics","query",r),assignDecoder:r=>v("pipelineOrchestrator","assignDecoder","mutation",r),unassignDecoder:r=>v("pipelineOrchestrator","unassignDecoder","mutation",r),assignAudio:r=>v("pipelineOrchestrator","assignAudio","mutation",r),unassignAudio:r=>v("pipelineOrchestrator","unassignAudio","mutation",r),getAudioAssignment:r=>v("pipelineOrchestrator","getAudioAssignment","query",r),getAudioAssignments:r=>v("pipelineOrchestrator","getAudioAssignments","query",r),getDecoderAssignment:r=>v("pipelineOrchestrator","getDecoderAssignment","query",r),getCameraSettings:r=>v("pipelineOrchestrator","getCameraSettings","query",r),setCameraStepToggle:r=>v("pipelineOrchestrator","setCameraStepToggle","mutation",r),getCameraStepOverrides:r=>v("pipelineOrchestrator","getCameraStepOverrides","query",r),setCameraStepOverride:r=>v("pipelineOrchestrator","setCameraStepOverride","mutation",r),setCameraPipelineForAgent:r=>v("pipelineOrchestrator","setCameraPipelineForAgent","mutation",r),resolvePipeline:r=>v("pipelineOrchestrator","resolvePipeline","query",r),getDeviceSettingsContribution:r=>v("pipelineOrchestrator","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>v("pipelineOrchestrator","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>v("pipelineOrchestrator","applyDeviceSettingsPatch","mutation",r)},Wn={detachCamera:r=>v("pipelineRunner","detachCamera","mutation",r),getCameraMetrics:r=>v("pipelineRunner","getCameraMetrics","query",r)},$n={getPolicyStatus:r=>v("recordingEngine","getPolicyStatus","query",r)},Kn={supportsDevice:r=>v("snapshotProvider","supportsDevice","query",r),getSnapshot:r=>v("snapshotProvider","getSnapshot","query",r)},Vn={publishCameraStream:r=>v("streamBroker","publishCameraStream","mutation",r),retractCameraStream:r=>v("streamBroker","retractCameraStream","mutation",r),assignProfile:r=>v("streamBroker","assignProfile","mutation",r),unassignProfile:r=>v("streamBroker","unassignProfile","mutation",r),restartProfile:r=>v("streamBroker","restartProfile","mutation",r),getDeviceSettingsContribution:r=>v("streamBroker","getDeviceSettingsContribution","query",r),getDeviceLiveContribution:r=>v("streamBroker","getDeviceLiveContribution","query",r),applyDeviceSettingsPatch:r=>v("streamBroker","applyDeviceSettingsPatch","mutation",r)};return{deviceId:s.deviceId,binding:s,state:{audioMetrics:T(p,s.deviceId,"audio-metrics"),battery:T(p,s.deviceId,"battery"),brightness:T(p,s.deviceId,"brightness"),cameraStreams:T(p,s.deviceId,"camera-streams"),deviceDiscovery:T(p,s.deviceId,"device-discovery"),deviceStatus:T(p,s.deviceId,"device-status"),doorbell:T(p,s.deviceId,"doorbell"),featureProbe:T(p,s.deviceId,"feature-probe"),motion:T(p,s.deviceId,"motion"),motionTrigger:T(p,s.deviceId,"motion-trigger"),ptzAutotrack:T(p,s.deviceId,"ptz-autotrack"),switch:T(p,s.deviceId,"switch"),zoneAnalytics:T(p,s.deviceId,"zone-analytics"),zoneRules:T(p,s.deviceId,"zone-rules"),zones:T(p,s.deviceId,"zones")},accessories:k,audioAnalysis:w,audioMetrics:A,battery:N,brightness:E,cameraCredentials:q,cameraStreams:j,detectionPipeline:ae,deviceDiscovery:Z,deviceOps:Ot,deviceStatus:zt,doorbell:Lt,events:_t,featureProbe:Ut,intercom:Ft,motion:Ht,motionDetection:Wt,motionTrigger:$t,nativeObjectDetection:Kt,osd:Vt,pipelineAnalytics:Gt,ptz:jt,ptzAutotrack:Zt,reboot:Yt,recording:Qt,snapshot:Jt,switch:Xt,webrtcSession:ea,zoneAnalytics:o,zoneRules:U,zones:he,addonSettings:ne,deviceExport:qe,deviceManager:ve,deviceState:oe,networkQuality:Un,pipelineExecutor:Fn,pipelineOrchestrator:Hn,pipelineRunner:Wn,recordingEngine:$n,snapshotProvider:Kn,streamBroker:Vn}}function Rm(c,s,n,d,p){if(n.length===0||s.length===0)return{passed:c,excluded:[]};const g=n.filter(N=>N.enabled!==!1),y=g.filter(N=>N.mode==="include"),u=g.filter(N=>N.mode==="exclude"),v=y.length>0,k=new Map(s.map(N=>[N.id,N])),w=[],A=[];for(const N of c){const E=d(N),q=p?.(N),j=y.some(Z=>Za(Z,E,q,k)),ae=u.some(Z=>Za(Z,E,q,k));v?j&&!ae?w.push(N):A.push(N):ae?A.push(N):w.push(N)}return{passed:w,excluded:A}}function Za(c,s,n,d){if(c.classFilter&&c.classFilter.length>0&&n!==void 0&&!c.classFilter.includes(n))return!1;for(const p of c.zoneIds){const g=d.get(p);if(g&&dp(s,g.polygon))return!0}return!1}function dp(c,s){if(s.length<3)return!1;let n=!1;const{x:d,y:p}=c;for(let g=0,y=s.length-1;g<s.length;y=g++){const u=s[g],v=s[y];u.y>p!=v.y>p&&d<(v.x-u.x)*(p-u.y)/(v.y-u.y||Number.EPSILON)+u.x&&(n=!n)}return n}function Bm(c){const s=c;function n(o,U,he,ne,qe){const ve=s[o]?.[U];if(!ve)throw new Error(`SystemProxy: api has no '${o}.${U}'`);const oe=ve;return he==="mutation"?oe.mutate(ne):he==="subscription"?oe.subscribe(ne,qe):oe.query(ne)}return{addonPages:{listPages:o=>n("addonPages","listPages","query",o)},addons:{list:o=>n("addons","list","query",o),getLogs:o=>n("addons","getLogs","query",o),listPackages:o=>n("addons","listPackages","query",o),installPackage:o=>n("addons","installPackage","mutation",o),installFromWorkspace:o=>n("addons","installFromWorkspace","mutation",o),isWorkspaceAvailable:o=>n("addons","isWorkspaceAvailable","query",o),listWorkspacePackages:o=>n("addons","listWorkspacePackages","query",o),uninstallPackage:o=>n("addons","uninstallPackage","mutation",o),reloadPackages:o=>n("addons","reloadPackages","mutation",o),searchAvailable:o=>n("addons","searchAvailable","query",o),listUpdates:o=>n("addons","listUpdates","query",o),updatePackage:o=>n("addons","updatePackage","mutation",o),rollbackPackage:o=>n("addons","rollbackPackage","mutation",o),forceRefresh:o=>n("addons","forceRefresh","mutation",o),restartServer:o=>n("addons","restartServer","mutation",o),getLastRestart:o=>n("addons","getLastRestart","query",o),listFrameworkPackages:o=>n("addons","listFrameworkPackages","query",o),listCapabilityProviders:o=>n("addons","listCapabilityProviders","query",o),setCapabilityProviderEnabled:o=>n("addons","setCapabilityProviderEnabled","mutation",o),updateFrameworkPackage:o=>n("addons","updateFrameworkPackage","mutation",o),getVersions:o=>n("addons","getVersions","query",o),restartAddon:o=>n("addons","restartAddon","mutation",o),retryLoad:o=>n("addons","retryLoad","mutation",o),getAutoUpdateSettings:o=>n("addons","getAutoUpdateSettings","query",o),setAutoUpdateSettings:o=>n("addons","setAutoUpdateSettings","mutation",o),getAddonAutoUpdate:o=>n("addons","getAddonAutoUpdate","query",o),setAddonAutoUpdate:o=>n("addons","setAddonAutoUpdate","mutation",o),applyAutoUpdateToAll:o=>n("addons","applyAutoUpdateToAll","mutation",o),custom:o=>n("addons","custom","mutation",o),onAddonLogs:(o,U)=>n("addons","onAddonLogs","subscription",o,U)},addonSettings:{getGlobalSettings:o=>n("addonSettings","getGlobalSettings","query",o),updateGlobalSettings:o=>n("addonSettings","updateGlobalSettings","mutation",o)},addonWidgets:{listWidgets:o=>n("addonWidgets","listWidgets","query",o)},alerts:{emit:o=>n("alerts","emit","mutation",o),update:o=>n("alerts","update","mutation",o),list:o=>n("alerts","list","query",o),getUnreadCount:o=>n("alerts","getUnreadCount","query",o),markRead:o=>n("alerts","markRead","mutation",o),markAllRead:o=>n("alerts","markAllRead","mutation",o),dismiss:o=>n("alerts","dismiss","mutation",o)},audioAnalyzer:{analyseChunk:o=>n("audioAnalyzer","analyseChunk","mutation",o),classify:o=>n("audioAnalyzer","classify","query",o),isReady:o=>n("audioAnalyzer","isReady","query",o),dispose:o=>n("audioAnalyzer","dispose","mutation",o),reprobeAudioEngine:o=>n("audioAnalyzer","reprobeAudioEngine","mutation",o)},audioCodec:{listSupportedCodecs:o=>n("audioCodec","listSupportedCodecs","query",o),canHandle:o=>n("audioCodec","canHandle","query",o),createDecodeSession:o=>n("audioCodec","createDecodeSession","mutation",o),createEncodeSession:o=>n("audioCodec","createEncodeSession","mutation",o),closeSession:o=>n("audioCodec","closeSession","mutation",o),pushEncodedFrame:o=>n("audioCodec","pushEncodedFrame","mutation",o),pullPcm:o=>n("audioCodec","pullPcm","query",o),pushPcm:o=>n("audioCodec","pushPcm","mutation",o),pullEncoded:o=>n("audioCodec","pullEncoded","query",o),flushEncode:o=>n("audioCodec","flushEncode","mutation",o),listActiveSessions:o=>n("audioCodec","listActiveSessions","query",o)},backup:{listDestinations:o=>n("backup","listDestinations","query",o),trigger:o=>n("backup","trigger","mutation",o),list:o=>n("backup","list","query",o),listLocations:o=>n("backup","listLocations","query",o),getEntries:o=>n("backup","getEntries","query",o),restore:o=>n("backup","restore","mutation",o),delete:o=>n("backup","delete","mutation",o),listArchives:o=>n("backup","listArchives","query",o),upsertDestinationPolicy:o=>n("backup","upsertDestinationPolicy","mutation",o),previewSchedule:o=>n("backup","previewSchedule","query",o)},decoder:{supportsCodec:o=>n("decoder","supportsCodec","query",o),getInfo:o=>n("decoder","getInfo","query",o),createSession:o=>n("decoder","createSession","query",o),destroySession:o=>n("decoder","destroySession","query",o),pushPacket:o=>n("decoder","pushPacket","query",o),openStream:o=>n("decoder","openStream","query",o),pullFrames:o=>n("decoder","pullFrames","query",o),updateConfig:o=>n("decoder","updateConfig","query",o),getStats:o=>n("decoder","getStats","query",o),listActiveSessions:o=>n("decoder","listActiveSessions","query",o),reprobeHwaccel:o=>n("decoder","reprobeHwaccel","mutation",o)},deviceExport:{getStatus:o=>n("deviceExport","getStatus","query",o),listSupportedDeviceKinds:o=>n("deviceExport","listSupportedDeviceKinds","query",o),listExposedDevices:o=>n("deviceExport","listExposedDevices","query",o),exposeDevice:o=>n("deviceExport","exposeDevice","mutation",o),unexposeDevice:o=>n("deviceExport","unexposeDevice","mutation",o)},deviceManager:{allocateDeviceId:o=>n("deviceManager","allocateDeviceId","mutation",o),registerDevice:o=>n("deviceManager","registerDevice","mutation",o),removeDevice:o=>n("deviceManager","removeDevice","mutation",o),persistConfig:o=>n("deviceManager","persistConfig","mutation",o),listLocations:o=>n("deviceManager","listLocations","query",o),addLocation:o=>n("deviceManager","addLocation","mutation",o),removeLocation:o=>n("deviceManager","removeLocation","mutation",o),listPersistedByAddon:o=>n("deviceManager","listPersistedByAddon","query",o),listAll:o=>n("deviceManager","listAll","query",o),getChildren:o=>n("deviceManager","getChildren","query",o),listWrappersForCap:o=>n("deviceManager","listWrappersForCap","query",o),listBindableCapsForDeviceType:o=>n("deviceManager","listBindableCapsForDeviceType","query",o),discoverDevices:o=>n("deviceManager","discoverDevices","mutation",o),adoptDevice:o=>n("deviceManager","adoptDevice","mutation",o),getCreationSchema:o=>n("deviceManager","getCreationSchema","query",o),createDevice:o=>n("deviceManager","createDevice","mutation",o),testCreationField:o=>n("deviceManager","testCreationField","mutation",o)},deviceProvider:{start:o=>n("deviceProvider","start","mutation",o),stop:o=>n("deviceProvider","stop","mutation",o),getStatus:o=>n("deviceProvider","getStatus","query",o),getDevices:o=>n("deviceProvider","getDevices","query",o),supportsDiscovery:o=>n("deviceProvider","supportsDiscovery","query",o),discoverDevices:o=>n("deviceProvider","discoverDevices","mutation",o),adoptDiscoveredDevice:o=>n("deviceProvider","adoptDiscoveredDevice","mutation",o),supportsManualCreation:o=>n("deviceProvider","supportsManualCreation","query",o),getChildCreationSchema:o=>n("deviceProvider","getChildCreationSchema","query",o),createDevice:o=>n("deviceProvider","createDevice","mutation",o),testCreationField:o=>n("deviceProvider","testCreationField","mutation",o)},deviceState:{getAllSnapshots:o=>n("deviceState","getAllSnapshots","query",o)},integrations:{list:o=>n("integrations","list","query",o),get:o=>n("integrations","get","query",o),getByAddonId:o=>n("integrations","getByAddonId","query",o),create:o=>n("integrations","create","mutation",o),update:o=>n("integrations","update","mutation",o),delete:o=>n("integrations","delete","mutation",o),getSettings:o=>n("integrations","getSettings","query",o),setSettings:o=>n("integrations","setSettings","mutation",o),getAvailableTypes:o=>n("integrations","getAvailableTypes","query",o),testConnection:o=>n("integrations","testConnection","mutation",o)},localNetwork:{list:o=>n("localNetwork","list","query",o),getPreferred:o=>n("localNetwork","getPreferred","query",o),getConnectionEndpoints:o=>n("localNetwork","getConnectionEndpoints","query",o),getAllowedAddresses:o=>n("localNetwork","getAllowedAddresses","query",o),setAllowedAddresses:o=>n("localNetwork","setAllowedAddresses","mutation",o),resetAllowlistToBestMatch:o=>n("localNetwork","resetAllowlistToBestMatch","mutation",o)},meshNetwork:{getStatus:o=>n("meshNetwork","getStatus","query",o),join:o=>n("meshNetwork","join","mutation",o),startLogin:o=>n("meshNetwork","startLogin","mutation",o),leave:o=>n("meshNetwork","leave","mutation",o),logout:o=>n("meshNetwork","logout","mutation",o),listPeers:o=>n("meshNetwork","listPeers","query",o),testConnection:o=>n("meshNetwork","testConnection","mutation",o)},metricsProvider:{collectSnapshot:o=>n("metricsProvider","collectSnapshot","query",o),getCached:o=>n("metricsProvider","getCached","query",o),getCurrent:o=>n("metricsProvider","getCurrent","query",o),getDiskSpace:o=>n("metricsProvider","getDiskSpace","query",o),getGpuInfo:o=>n("metricsProvider","getGpuInfo","query",o),getCpuTemperature:o=>n("metricsProvider","getCpuTemperature","query",o),getProcessStats:o=>n("metricsProvider","getProcessStats","query",o),listAddonInstances:o=>n("metricsProvider","listAddonInstances","query",o),getAddonStats:o=>n("metricsProvider","getAddonStats","query",o),listNodeProcesses:o=>n("metricsProvider","listNodeProcesses","query",o),killProcess:o=>n("metricsProvider","killProcess","mutation",o)},mqttBroker:{listBrokers:o=>n("mqttBroker","listBrokers","query",o),getBrokerConfig:o=>n("mqttBroker","getBrokerConfig","query",o),addBroker:o=>n("mqttBroker","addBroker","mutation",o),removeBroker:o=>n("mqttBroker","removeBroker","mutation",o),testConnection:o=>n("mqttBroker","testConnection","mutation",o),startEmbeddedBroker:o=>n("mqttBroker","startEmbeddedBroker","mutation",o),stopEmbeddedBroker:o=>n("mqttBroker","stopEmbeddedBroker","mutation",o),getStatus:o=>n("mqttBroker","getStatus","query",o)},networkAccess:{start:o=>n("networkAccess","start","mutation",o),stop:o=>n("networkAccess","stop","mutation",o),getEndpoint:o=>n("networkAccess","getEndpoint","query",o),getStatus:o=>n("networkAccess","getStatus","query",o),listEndpoints:o=>n("networkAccess","listEndpoints","query",o)},networkQuality:{getAllStats:o=>n("networkQuality","getAllStats","query",o)},nodes:{topology:o=>n("nodes","topology","query",o),deployAddon:o=>n("nodes","deployAddon","mutation",o),undeployAddon:o=>n("nodes","undeployAddon","mutation",o),restartAddon:o=>n("nodes","restartAddon","mutation",o),restartProcess:o=>n("nodes","restartProcess","mutation",o),restartNode:o=>n("nodes","restartNode","mutation",o),shutdownNode:o=>n("nodes","shutdownNode","mutation",o),renameNode:o=>n("nodes","renameNode","mutation",o),clusterAddonStatus:o=>n("nodes","clusterAddonStatus","query",o),getNodeAddons:o=>n("nodes","getNodeAddons","query",o),setProcessLogLevel:o=>n("nodes","setProcessLogLevel","mutation",o),executeQuery:o=>n("nodes","executeQuery","mutation",o)},notificationOutput:{send:o=>n("notificationOutput","send","mutation",o),sendTest:o=>n("notificationOutput","sendTest","mutation",o)},pipelineExecutor:{getAvailableEngines:o=>n("pipelineExecutor","getAvailableEngines","query",o),getSelectedEngine:o=>n("pipelineExecutor","getSelectedEngine","query",o),getDefaultSteps:o=>n("pipelineExecutor","getDefaultSteps","query",o),reprobeEngine:o=>n("pipelineExecutor","reprobeEngine","mutation",o),getVideoPipelineSteps:o=>n("pipelineExecutor","getVideoPipelineSteps","query",o),setVideoPipelineSteps:o=>n("pipelineExecutor","setVideoPipelineSteps","mutation",o),getSchema:o=>n("pipelineExecutor","getSchema","query",o),getGlobalSteps:o=>n("pipelineExecutor","getGlobalSteps","query",o),getGlobalPipelineConfig:o=>n("pipelineExecutor","getGlobalPipelineConfig","query",o),getOrchestratorConfigSchema:o=>n("pipelineExecutor","getOrchestratorConfigSchema","query",o),listTemplates:o=>n("pipelineExecutor","listTemplates","query",o),saveTemplate:o=>n("pipelineExecutor","saveTemplate","mutation",o),updateTemplate:o=>n("pipelineExecutor","updateTemplate","mutation",o),deleteTemplate:o=>n("pipelineExecutor","deleteTemplate","mutation",o),getCapabilities:o=>n("pipelineExecutor","getCapabilities","query",o),getAddonModels:o=>n("pipelineExecutor","getAddonModels","query",o),downloadModel:o=>n("pipelineExecutor","downloadModel","mutation",o),deleteModel:o=>n("pipelineExecutor","deleteModel","mutation",o),detect:o=>n("pipelineExecutor","detect","query",o),cacheFrameInPool:o=>n("pipelineExecutor","cacheFrameInPool","mutation",o),inferCached:o=>n("pipelineExecutor","inferCached","mutation",o),uncacheFrame:o=>n("pipelineExecutor","uncacheFrame","mutation",o),getEffectiveTuning:o=>n("pipelineExecutor","getEffectiveTuning","query",o),listLoadedEngines:o=>n("pipelineExecutor","listLoadedEngines","query",o),spinEngine:o=>n("pipelineExecutor","spinEngine","mutation",o),killEngine:o=>n("pipelineExecutor","killEngine","mutation",o),listReferenceImages:o=>n("pipelineExecutor","listReferenceImages","query",o),getReferenceImage:o=>n("pipelineExecutor","getReferenceImage","query",o),getReferenceAudioFiles:o=>n("pipelineExecutor","getReferenceAudioFiles","query",o),getReferenceAudio:o=>n("pipelineExecutor","getReferenceAudio","query",o),getAudioCapabilities:o=>n("pipelineExecutor","getAudioCapabilities","query",o),runAudioTest:o=>n("pipelineExecutor","runAudioTest","mutation",o),getDetectionConfigSchema:o=>n("pipelineExecutor","getDetectionConfigSchema","query",o)},pipelineOrchestrator:{rebalance:o=>n("pipelineOrchestrator","rebalance","mutation",o),getPipelineAssignments:o=>n("pipelineOrchestrator","getPipelineAssignments","query",o),getAgentLoad:o=>n("pipelineOrchestrator","getAgentLoad","query",o),getGlobalMetrics:o=>n("pipelineOrchestrator","getGlobalMetrics","query",o),getCapabilityBindings:o=>n("pipelineOrchestrator","getCapabilityBindings","query",o),setCapabilityBinding:o=>n("pipelineOrchestrator","setCapabilityBinding","mutation",o),getDecoderAssignments:o=>n("pipelineOrchestrator","getDecoderAssignments","query",o),getAudioNodeLoad:o=>n("pipelineOrchestrator","getAudioNodeLoad","query",o),getAgentSettings:o=>n("pipelineOrchestrator","getAgentSettings","query",o),listAgentSettings:o=>n("pipelineOrchestrator","listAgentSettings","query",o),setAgentAddonDefaults:o=>n("pipelineOrchestrator","setAgentAddonDefaults","mutation",o),removeAgentSettings:o=>n("pipelineOrchestrator","removeAgentSettings","mutation",o),listTemplates:o=>n("pipelineOrchestrator","listTemplates","query",o),saveTemplate:o=>n("pipelineOrchestrator","saveTemplate","mutation",o),updateTemplate:o=>n("pipelineOrchestrator","updateTemplate","mutation",o),deleteTemplate:o=>n("pipelineOrchestrator","deleteTemplate","mutation",o)},pipelineRunner:{attachCamera:o=>n("pipelineRunner","attachCamera","mutation",o),reportMotion:o=>n("pipelineRunner","reportMotion","mutation",o),getLocalLoad:o=>n("pipelineRunner","getLocalLoad","query",o),getLocalMetrics:o=>n("pipelineRunner","getLocalMetrics","query",o),getAllCameraMetrics:o=>n("pipelineRunner","getAllCameraMetrics","query",o),getLocalCameras:o=>n("pipelineRunner","getLocalCameras","query",o)},platformProbe:{getCapabilities:o=>n("platformProbe","getCapabilities","query",o),getHardware:o=>n("platformProbe","getHardware","query",o),resolveInferenceConfig:o=>n("platformProbe","resolveInferenceConfig","query",o),resolveHwAccel:o=>n("platformProbe","resolveHwAccel","query",o),getHardwareEncoders:o=>n("platformProbe","getHardwareEncoders","query",o),refreshHardwareEncoders:o=>n("platformProbe","refreshHardwareEncoders","mutation",o)},recordingEngine:{getStatus:o=>n("recordingEngine","getStatus","query",o),enable:o=>n("recordingEngine","enable","mutation",o),disable:o=>n("recordingEngine","disable","mutation",o),getConfig:o=>n("recordingEngine","getConfig","query",o),updateConfig:o=>n("recordingEngine","updateConfig","mutation",o),getPlaylist:o=>n("recordingEngine","getPlaylist","query",o),getThumbnail:o=>n("recordingEngine","getThumbnail","query",o),getSegments:o=>n("recordingEngine","getSegments","query",o),getAvailability:o=>n("recordingEngine","getAvailability","query",o),estimateStorage:o=>n("recordingEngine","estimateStorage","query",o),estimateGlobalStorage:o=>n("recordingEngine","estimateGlobalStorage","query",o),getStorageUsage:o=>n("recordingEngine","getStorageUsage","query",o),setPolicy:o=>n("recordingEngine","setPolicy","mutation",o),getPolicy:o=>n("recordingEngine","getPolicy","query",o),getRetentionConfig:o=>n("recordingEngine","getRetentionConfig","query",o),updateRetentionConfig:o=>n("recordingEngine","updateRetentionConfig","mutation",o),getMotionStats:o=>n("recordingEngine","getMotionStats","query",o)},settingsStore:{get:o=>n("settingsStore","get","query",o),set:o=>n("settingsStore","set","mutation",o),query:o=>n("settingsStore","query","query",o),insert:o=>n("settingsStore","insert","mutation",o),update:o=>n("settingsStore","update","mutation",o),delete:o=>n("settingsStore","delete","mutation",o),count:o=>n("settingsStore","count","query",o),isEmpty:o=>n("settingsStore","isEmpty","query",o),declareCollection:o=>n("settingsStore","declareCollection","mutation",o)},storage:{resolve:o=>n("storage","resolve","query",o),write:o=>n("storage","write","mutation",o),read:o=>n("storage","read","query",o),exists:o=>n("storage","exists","query",o),list:o=>n("storage","list","query",o),delete:o=>n("storage","delete","mutation",o),getAvailableSpace:o=>n("storage","getAvailableSpace","query",o),beginUpload:o=>n("storage","beginUpload","mutation",o),writeChunk:o=>n("storage","writeChunk","mutation",o),finalizeUpload:o=>n("storage","finalizeUpload","mutation",o),abortUpload:o=>n("storage","abortUpload","mutation",o),beginDownload:o=>n("storage","beginDownload","mutation",o),readChunk:o=>n("storage","readChunk","query",o),endDownload:o=>n("storage","endDownload","mutation",o),listLocations:o=>n("storage","listLocations","query",o),getDefaultLocation:o=>n("storage","getDefaultLocation","query",o),upsertLocation:o=>n("storage","upsertLocation","mutation",o),deleteLocation:o=>n("storage","deleteLocation","mutation",o),testLocation:o=>n("storage","testLocation","query",o),listProviders:o=>n("storage","listProviders","query",o),testConfig:o=>n("storage","testConfig","query",o)},streamBroker:{listAllCameraStreams:o=>n("streamBroker","listAllCameraStreams","query",o),listAllProfileSlots:o=>n("streamBroker","listAllProfileSlots","query",o),getBrokerStats:o=>n("streamBroker","getBrokerStats","query",o),listClients:o=>n("streamBroker","listClients","query",o),killClient:o=>n("streamBroker","killClient","mutation",o),getStreamUrl:o=>n("streamBroker","getStreamUrl","query",o),getStreamWithCodec:o=>n("streamBroker","getStreamWithCodec","mutation",o),releaseStreamWithCodec:o=>n("streamBroker","releaseStreamWithCodec","mutation",o),getBroker:o=>n("streamBroker","getBroker","query",o),setPreBufferDuration:o=>n("streamBroker","setPreBufferDuration","mutation",o),getPreBufferInfo:o=>n("streamBroker","getPreBufferInfo","query",o),getRtspPort:o=>n("streamBroker","getRtspPort","query",o),getAllRtspEntries:o=>n("streamBroker","getAllRtspEntries","query",o),getRtspEntry:o=>n("streamBroker","getRtspEntry","query",o),regenerateRtspToken:o=>n("streamBroker","regenerateRtspToken","mutation",o),setRtspEnabled:o=>n("streamBroker","setRtspEnabled","mutation",o),isRtspEnabled:o=>n("streamBroker","isRtspEnabled","query",o)},system:{info:o=>n("system","info","query",o),health:o=>n("system","health","query",o),featureFlags:o=>n("system","featureFlags","query",o),networkAddresses:o=>n("system","networkAddresses","query",o),getRetentionConfig:o=>n("system","getRetentionConfig","query",o),setRetentionConfig:o=>n("system","setRetentionConfig","mutation",o),forceRetentionCleanup:o=>n("system","forceRetentionCleanup","mutation",o)},toast:{onToast:(o,U)=>n("toast","onToast","subscription",o,U)},turnProvider:{getTurnServers:o=>n("turnProvider","getTurnServers","query",o)},userManagement:{listUsers:o=>n("userManagement","listUsers","query",o),createUser:o=>n("userManagement","createUser","mutation",o),updateUser:o=>n("userManagement","updateUser","mutation",o),deleteUser:o=>n("userManagement","deleteUser","mutation",o),resetPassword:o=>n("userManagement","resetPassword","mutation",o),setUserScopes:o=>n("userManagement","setUserScopes","mutation",o),validateCredentials:o=>n("userManagement","validateCredentials","mutation",o),listApiKeys:o=>n("userManagement","listApiKeys","query",o),createApiKey:o=>n("userManagement","createApiKey","mutation",o),revokeApiKey:o=>n("userManagement","revokeApiKey","mutation",o),validateApiKey:o=>n("userManagement","validateApiKey","mutation",o),createScopedToken:o=>n("userManagement","createScopedToken","mutation",o),revokeScopedToken:o=>n("userManagement","revokeScopedToken","mutation",o),validateScopedToken:o=>n("userManagement","validateScopedToken","query",o),listScopedTokens:o=>n("userManagement","listScopedTokens","query",o),setupTotp:o=>n("userManagement","setupTotp","mutation",o),confirmTotp:o=>n("userManagement","confirmTotp","mutation",o),disableTotp:o=>n("userManagement","disableTotp","mutation",o),getTotpStatus:o=>n("userManagement","getTotpStatus","query",o),verifyTotp:o=>n("userManagement","verifyTotp","mutation",o)}}}const lp="device.state-changed",pp="capability.binding-changed",mp="device.registered",up="device.unregistered",gp="device.updated";class qm{constructor(s){this.api=s,this.stateSource=ip(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(s=15e3){if(!this.initialized){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{const n=(y,u)=>Number.isFinite(s)?new Promise((v,k)=>{const w=setTimeout(()=>k(new Error(`SystemMirror.init: '${u}' timed out after ${s}ms`)),s);y.then(A=>{clearTimeout(w),v(A)},A=>{clearTimeout(w),k(A)})}):y,[d,p,g]=await Promise.all([n(this.api.deviceManager.getAllBindings.query({}),"deviceManager.getAllBindings"),n(this.api.deviceState.getAllSnapshots.query({}),"deviceState.getAllSnapshots"),n(this.api.deviceManager.listAll.query({}),"deviceManager.listAll")]);for(const y of d)this.bindings.set(y.deviceId,y);for(const[y,u]of Object.entries(p)){const v=Number(y);if(!Number.isFinite(v))continue;const k=new Map;for(const[w,A]of Object.entries(u))k.set(w,A);this.stateMirror.set(v,k)}for(const y of g)this.devices.set(y.id,y);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 s of this.bridges)try{s.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(s){const n=this.bindings.get(s);return n?rp(this.api,n,{stateSource:this.stateSource}):null}getDeviceByName(s){for(const n of this.devices.values())if(n.name===s)return this.getDeviceById(n.id);return null}getDeviceByStableId(s){for(const n of this.devices.values())if(n.stableId===s)return this.getDeviceById(n.id);return null}getDevicesByAddon(s){return this.query({addonId:s})}getDevicesByType(s){return this.query({type:s})}getDeviceInfo(s){return this.devices.get(s)??null}getAllDevices(){const s=[];for(const n of this.bindings.keys()){const d=this.getDeviceById(n);d&&s.push(d)}return s}filterByCap(s){return this.query({caps:s})}query(s={}){const n=[];for(const[d,p]of this.bindings){const g=this.devices.get(d);if(s.id!==void 0&&!Ie(d,s.id)||s.stableId!==void 0&&(!g||!Ie(g.stableId,s.stableId))||s.addonId!==void 0&&(!g||!Ie(g.addonId,s.addonId))||s.type!==void 0&&(!g||!Ie(g.type,s.type)))continue;if(s.caps!==void 0){const u=tt(s.caps),v=new Set(p.entries.map(k=>k.capName));if(!u.every(k=>v.has(k)))continue}if(s.anyCap!==void 0){const u=tt(s.anyCap),v=new Set(p.entries.map(k=>k.capName));if(!u.some(k=>v.has(k)))continue}if(s.name!==void 0&&(!g||!hp(g.name,s.name))||s.online!==void 0&&(!g||g.online!==s.online))continue;if(s.parentDeviceId!==void 0){if(!g)continue;const u=s.parentDeviceId;if((g.parentDeviceId??null)!==u)continue}if(s.feature!==void 0&&(!g||!tt(s.feature).every(v=>g.features.includes(v)))||s.isCamera!==void 0&&(!g||g.isCamera!==s.isCamera))continue;const y=this.getDeviceById(d);if(y){if(s.where&&g){if(!s.where(g,y))continue}else if(s.where&&!g)continue;n.push(y)}}return n}whereState(s,n){const d=[];for(const[p,g]of this.stateMirror){const y=g.get(s);if(!y||!n(y,p))continue;const u=this.getDeviceById(p);u&&d.push(u)}return d}mapState(s,n){const d=[];for(const[p,g]of this.stateMirror){const y=g.get(s);y&&d.push(n(y,p))}return d}findState(s,n){for(const[d,p]of this.stateMirror){const g=p.get(s);if(g&&n(g,d))return this.getDeviceById(d)}return null}countByCap(s){let n=0;for(const d of this.bindings.values())d.entries.some(p=>p.capName===s)&&n++;return n}countByState(s,n){let d=0;for(const[p,g]of this.stateMirror){const y=g.get(s);y&&n(y,p)&&d++}return d}listen(s){return this.globalStateListeners.add(s),()=>{this.globalStateListeners.delete(s)}}listenCap(s,n){let d=this.capListeners.get(s);return d||(d=new Set,this.capListeners.set(s,d)),d.add(n),()=>{d.delete(n),d.size===0&&this.capListeners.delete(s)}}listenDevice(s,n){let d=this.deviceListeners.get(s);return d||(d=new Set,this.deviceListeners.set(s,d)),d.add(n),()=>{d.delete(n),d.size===0&&this.deviceListeners.delete(s)}}onDeviceAdded(s){return this.addedListeners.add(s),()=>{this.addedListeners.delete(s)}}onDeviceRemoved(s){return this.removedListeners.add(s),()=>{this.removedListeners.delete(s)}}waitForState(s,n,d,p=3e4){return new Promise((g,y)=>{const v=(()=>{const A=this.stateMirror.get(s)?.get(n);return A&&d(A)?A:null})();if(v){g(v);return}let k=null;const w=this.listenDevice(s,(A,N,E)=>{N===n&&E&&d(E)&&(k&&clearTimeout(k),w(),g(E))});Number.isFinite(p)&&(k=setTimeout(()=>{w(),y(new Error(`waitForState timed out after ${p}ms (deviceId=${s}, capName=${n})`))},p))})}waitForDevice(s,n=3e4){return new Promise((d,p)=>{const g=this.getDeviceById(s);if(g){d(g);return}let y=null;const u=this.onDeviceAdded(v=>{if(v!==s)return;const k=this.getDeviceById(v);k&&(y&&clearTimeout(y),u(),d(k))});Number.isFinite(n)&&(y=setTimeout(()=>{u(),p(new Error(`waitForDevice timed out after ${n}ms (deviceId=${s})`))},n))})}async forEachCap(s,n){for(const d of this.filterByCap(s))await n(d)}async invokeCap(s,n,d,p={}){const g=this.filterByCap(s),y=Math.max(1,p.parallelism??g.length),u=[];for(let v=0;v<g.length;v+=y){const k=g.slice(v,v+y),w=await Promise.allSettled(k.map(async A=>{const N=A[s];if(!N||typeof N[n]!="function")throw new Error(`device '${A.deviceId}' does not expose '${s}.${n}'`);return await N[n](d)}));for(let A=0;A<w.length;A++){const N=k[A],E=w[A];E.status==="fulfilled"?u.push({deviceId:N.deviceId,ok:!0,result:E.value}):u.push({deviceId:N.deviceId,ok:!1,error:E.reason})}}return u}summary(){const s={},n={},d={};let p=0,g=0;for(const y of this.bindings.values())for(const u of y.entries)s[u.capName]=(s[u.capName]??0)+1;for(const y of this.devices.values())n[y.addonId]=(n[y.addonId]??0)+1,d[y.type]=(d[y.type]??0)+1,y.online?p++:g++;return{totalDevices:this.bindings.size,online:p,offline:g,byCap:s,byAddon:n,byType:d,statedDevices:this.stateMirror.size}}dump(s){const n=p=>{const g=this.devices.get(p)??null,y=this.bindings.get(p)??null,u={},v=this.stateMirror.get(p);if(v)for(const[k,w]of v)u[k]={...w};return{deviceId:p,info:g,binding:y?{...y,entries:y.entries.map(k=>({...k}))}:null,state:u}};if(s!==void 0)return n(s);const d=[];for(const p of this.bindings.keys())d.push(n(p));return d}getRawMirror(){return this.stateMirror}getSystemState(){const s=new Map;for(const[n,d]of this.stateMirror){const p=new Map;for(const[g,y]of d)p.set(g,{...y});s.set(n,p)}return s}subscribeBus(){if(!this.api.live?.onEvent)return;const s=this.api.live.onEvent;this.bridges.push(s.subscribe({category:lp},{onData:n=>{const d=n.data;!d||typeof d.deviceId!="number"||typeof d.capName!="string"||this.applyStateUpdate(d.deviceId,d.capName,d.slice)}})),this.bridges.push(s.subscribe({category:pp},{onData:n=>{const d=n.data,p=typeof d?.deviceId=="number"?d.deviceId:d?.source?.type==="device"&&typeof d.source.id=="number"?d.source.id:null;p!==null&&this.refreshBinding(p)}})),this.bridges.push(s.subscribe({category:mp},{onData:n=>{const d=n.data;typeof d?.deviceId=="number"&&this.refreshDeviceMetadata(d.deviceId,"added")}})),this.bridges.push(s.subscribe({category:up},{onData:n=>{const d=n.data;typeof d?.deviceId=="number"&&this.applyDeviceRemoval(d.deviceId)}})),this.bridges.push(s.subscribe({category:gp},{onData:n=>{const d=n.data;typeof d?.deviceId=="number"&&this.refreshDeviceMetadata(d.deviceId,"updated")}}))}applyStateUpdate(s,n,d){let p=this.stateMirror.get(s);p||(p=new Map,this.stateMirror.set(s,p)),d===void 0?p.delete(n):p.set(n,d);const g=`${s}:${n}`,y=this.handleListeners.get(g);if(y)for(const k of y)try{k(d)}catch{}for(const k of this.globalStateListeners)try{k(s,n,d)}catch{}const u=this.capListeners.get(n);if(u)for(const k of u)try{k(s,d)}catch{}const v=this.deviceListeners.get(s);if(v)for(const k of v)try{k(s,n,d)}catch{}}applyDeviceRemoval(s){const n=this.devices.get(s)??null;this.bindings.delete(s),this.devices.delete(s),this.stateMirror.delete(s);for(const d of this.removedListeners)try{d(s,n)}catch{}}async refreshBinding(s){try{const d=(await this.api.deviceManager.getAllBindings.query({})).find(p=>p.deviceId===s);d?this.bindings.set(s,d):this.applyDeviceRemoval(s)}catch{}}async refreshDeviceMetadata(s,n){try{const p=(await this.api.deviceManager.listAll.query({})).find(y=>y.id===s);if(!p)return;const g=!this.devices.has(s);if(this.devices.set(s,p),n==="added"&&g){await this.refreshBinding(s);for(const y of this.addedListeners)try{y(s,p)}catch{}}}catch{}}}function Ie(c,s){return Array.isArray(s)?s.includes(c):c===s}function tt(c){return Array.isArray(c)?c:[c]}function hp(c,s){return typeof s=="string"?c===s:s instanceof RegExp?s.test(c):"exact"in s?c===s.exact:"contains"in s?c.toLowerCase().includes(s.contains.toLowerCase()):!1}function Om(c){return c}function zm(c,s,n){return{input:c,output:s,kind:n?.kind??"query",auth:n?.auth??"protected",scope:n?.scope??{kind:"system"}}}const Lm={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",backup:"backup",battery:"battery",brightness:"brightness",cameraCredentials:"camera-credentials",cameraStreams:"camera-streams",decoder:"decoder",detectionPipeline:"detection-pipeline",deviceDiscovery:"device-discovery",deviceExport:"device-export",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",metricsProvider:"metrics-provider",motion:"motion",motionDetection:"motion-detection",motionTrigger:"motion-trigger",mqttBroker:"mqtt-broker",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",restreamer:"restreamer",settingsStore:"settings-store",smtpProvider:"smtp-provider",snapshot:"snapshot",snapshotProvider:"snapshot-provider",ssoBridge:"sso-bridge",storage:"storage",storageProvider:"storage-provider",streamBroker:"stream-broker",streamingEngine:"streaming-engine",switch:"switch",system:"system",toast:"toast",turnProvider:"turn-provider",userManagement:"user-management",userPasskeys:"user-passkeys",webrtc:"webrtc",webrtcSession:"webrtc-session",zoneAnalytics:"zone-analytics",zoneRules:"zone-rules",zones:"zones"},_m=[{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:"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:"deviceExport",name:"device-export"},{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:"metricsProvider",name:"metrics-provider"},{key:"motion",name:"motion"},{key:"motionDetection",name:"motion-detection"},{key:"motionTrigger",name:"motion-trigger"},{key:"mqttBroker",name:"mqtt-broker"},{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:"restreamer",name:"restreamer"},{key:"settingsStore",name:"settings-store"},{key:"smtpProvider",name:"smtp-provider"},{key:"snapshot",name:"snapshot"},{key:"snapshotProvider",name:"snapshot-provider"},{key:"ssoBridge",name:"sso-bridge"},{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:"turnProvider",name:"turn-provider"},{key:"userManagement",name:"user-management"},{key:"userPasskeys",name:"user-passkeys"},{key:"webrtc",name:"webrtc"},{key:"webrtcSession",name:"webrtc-session"},{key:"zoneAnalytics",name:"zone-analytics"},{key:"zoneRules",name:"zone-rules"},{key:"zones",name:"zones"}],Um=[td,Fi,Wi,Qi,zs,Gi,Ki,Cl,gi,Zc,Fs,gc,uc,bc,en,Rc,ci,tn,an,jr,sn,Ji,gr,cn,Li,Tc,Kr,Sn,xc,Pt,rn,kc,Ur,Dt,cl,nd,wd,pi,Pd,Or,pn,jo,un,Ei,sd,Oc,Wd,tl,Wc,Xr,Ar,ys,dc,As,yd,Lr,gn,Zr,Hr,ur,tc,li,bi,Uc,Fc,hi,Hs,ei,Fo,xo,hn,Ud,Kd,Lc,zd,yi,ac,oc,vn,yn,dn],Fm=["accessories","battery","brightness","camera-credentials","device-discovery","device-export","device-status","doorbell","feature-probe","intercom","motion","motion-trigger","mqtt-broker","native-object-detection","osd","ptz","ptz-autotrack","snapshot","switch"],Hm=Object.freeze({"addonPages.listPages":{capName:"addon-pages",capScope:"system",addonId:null,access:"view"},"addonPagesSource.listPages":{capName:"addon-pages-source",capScope:"system",addonId:null,access:"view"},"addonRoutes.getRoutes":{capName:"addon-routes",capScope:"system",addonId:null,access:"view"},"addonRoutes.invoke":{capName:"addon-routes",capScope:"system",addonId:null,access:"create"},"addons.applyAutoUpdateToAll":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.custom":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.forceRefresh":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.getAddonAutoUpdate":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.getAutoUpdateSettings":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.getLastRestart":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.getLogs":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.getVersions":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.installFromWorkspace":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.installPackage":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.isWorkspaceAvailable":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.list":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.listCapabilityProviders":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.listFrameworkPackages":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.listPackages":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.listUpdates":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.listWorkspacePackages":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.onAddonLogs":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.reloadPackages":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.restartAddon":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.restartServer":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.retryLoad":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.rollbackPackage":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.searchAvailable":{capName:"addons",capScope:"system",addonId:null,access:"view"},"addons.setAddonAutoUpdate":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.setAutoUpdateSettings":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.setCapabilityProviderEnabled":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.uninstallPackage":{capName:"addons",capScope:"system",addonId:null,access:"delete"},"addons.updateFrameworkPackage":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addons.updatePackage":{capName:"addons",capScope:"system",addonId:null,access:"create"},"addonSettings.getDeviceSettings":{capName:"addon-settings",capScope:"system",addonId:null,access:"view"},"addonSettings.getGlobalSettings":{capName:"addon-settings",capScope:"system",addonId:null,access:"view"},"addonSettings.updateDeviceSettings":{capName:"addon-settings",capScope:"system",addonId:null,access:"create"},"addonSettings.updateGlobalSettings":{capName:"addon-settings",capScope:"system",addonId:null,access:"create"},"addonWidgets.listWidgets":{capName:"addon-widgets",capScope:"system",addonId:null,access:"view"},"addonWidgetsSource.listWidgets":{capName:"addon-widgets-source",capScope:"system",addonId:null,access:"view"},"adminUi.getStaticDir":{capName:"admin-ui",capScope:"system",addonId:null,access:"view"},"adminUi.getVersion":{capName:"admin-ui",capScope:"system",addonId:null,access:"view"},"advancedNotifier.deleteRule":{capName:"advanced-notifier",capScope:"system",addonId:null,access:"delete"},"advancedNotifier.getHistory":{capName:"advanced-notifier",capScope:"system",addonId:null,access:"view"},"advancedNotifier.getRules":{capName:"advanced-notifier",capScope:"system",addonId:null,access:"view"},"advancedNotifier.testRule":{capName:"advanced-notifier",capScope:"system",addonId:null,access:"create"},"advancedNotifier.upsertRule":{capName:"advanced-notifier",capScope:"system",addonId:null,access:"create"},"alerts.dismiss":{capName:"alerts",capScope:"system",addonId:null,access:"create"},"alerts.emit":{capName:"alerts",capScope:"system",addonId:null,access:"create"},"alerts.getUnreadCount":{capName:"alerts",capScope:"system",addonId:null,access:"view"},"alerts.list":{capName:"alerts",capScope:"system",addonId:null,access:"view"},"alerts.markAllRead":{capName:"alerts",capScope:"system",addonId:null,access:"create"},"alerts.markRead":{capName:"alerts",capScope:"system",addonId:null,access:"create"},"alerts.update":{capName:"alerts",capScope:"system",addonId:null,access:"create"},"audioAnalysis.resolveDeviceSettings":{capName:"audio-analysis",capScope:"device",addonId:null,access:"view"},"audioAnalyzer.analyseChunk":{capName:"audio-analyzer",capScope:"system",addonId:null,access:"create"},"audioAnalyzer.classify":{capName:"audio-analyzer",capScope:"system",addonId:null,access:"view"},"audioAnalyzer.dispose":{capName:"audio-analyzer",capScope:"system",addonId:null,access:"create"},"audioAnalyzer.isReady":{capName:"audio-analyzer",capScope:"system",addonId:null,access:"view"},"audioAnalyzer.reprobeAudioEngine":{capName:"audio-analyzer",capScope:"system",addonId:null,access:"create"},"audioCodec.canHandle":{capName:"audio-codec",capScope:"system",addonId:null,access:"view"},"audioCodec.closeSession":{capName:"audio-codec",capScope:"system",addonId:null,access:"create"},"audioCodec.createDecodeSession":{capName:"audio-codec",capScope:"system",addonId:null,access:"create"},"audioCodec.createEncodeSession":{capName:"audio-codec",capScope:"system",addonId:null,access:"create"},"audioCodec.flushEncode":{capName:"audio-codec",capScope:"system",addonId:null,access:"create"},"audioCodec.listActiveSessions":{capName:"audio-codec",capScope:"system",addonId:null,access:"view"},"audioCodec.listSupportedCodecs":{capName:"audio-codec",capScope:"system",addonId:null,access:"view"},"audioCodec.pullEncoded":{capName:"audio-codec",capScope:"system",addonId:null,access:"view"},"audioCodec.pullPcm":{capName:"audio-codec",capScope:"system",addonId:null,access:"view"},"audioCodec.pushEncodedFrame":{capName:"audio-codec",capScope:"system",addonId:null,access:"create"},"audioCodec.pushPcm":{capName:"audio-codec",capScope:"system",addonId:null,access:"create"},"audioMetrics.getCurrentSnapshot":{capName:"audio-metrics",capScope:"device",addonId:null,access:"view"},"audioMetrics.getHistory":{capName:"audio-metrics",capScope:"device",addonId:null,access:"view"},"authProvider.getLoginUrl":{capName:"auth-provider",capScope:"system",addonId:null,access:"view"},"authProvider.handleCallback":{capName:"auth-provider",capScope:"system",addonId:null,access:"create"},"authProvider.validateCredentials":{capName:"auth-provider",capScope:"system",addonId:null,access:"create"},"authProvider.validateToken":{capName:"auth-provider",capScope:"system",addonId:null,access:"view"},"backup.delete":{capName:"backup",capScope:"system",addonId:null,access:"delete"},"backup.getEntries":{capName:"backup",capScope:"system",addonId:null,access:"view"},"backup.list":{capName:"backup",capScope:"system",addonId:null,access:"view"},"backup.listArchives":{capName:"backup",capScope:"system",addonId:null,access:"view"},"backup.listDestinations":{capName:"backup",capScope:"system",addonId:null,access:"view"},"backup.listLocations":{capName:"backup",capScope:"system",addonId:null,access:"view"},"backup.previewSchedule":{capName:"backup",capScope:"system",addonId:null,access:"view"},"backup.restore":{capName:"backup",capScope:"system",addonId:null,access:"create"},"backup.trigger":{capName:"backup",capScope:"system",addonId:null,access:"create"},"backup.upsertDestinationPolicy":{capName:"backup",capScope:"system",addonId:null,access:"create"},"brightness.setBrightness":{capName:"brightness",capScope:"device",addonId:null,access:"create"},"cameraCredentials.getCredentials":{capName:"camera-credentials",capScope:"device",addonId:null,access:"view"},"cameraStreams.getBrokerStreams":{capName:"camera-streams",capScope:"device",addonId:null,access:"view"},"cameraStreams.getCameraStreams":{capName:"camera-streams",capScope:"device",addonId:null,access:"view"},"cameraStreams.getRtspEntries":{capName:"camera-streams",capScope:"device",addonId:null,access:"view"},"decoder.createSession":{capName:"decoder",capScope:"system",addonId:null,access:"view"},"decoder.destroySession":{capName:"decoder",capScope:"system",addonId:null,access:"delete"},"decoder.getInfo":{capName:"decoder",capScope:"system",addonId:null,access:"view"},"decoder.getStats":{capName:"decoder",capScope:"system",addonId:null,access:"view"},"decoder.listActiveSessions":{capName:"decoder",capScope:"system",addonId:null,access:"view"},"decoder.openStream":{capName:"decoder",capScope:"system",addonId:null,access:"view"},"decoder.pullFrames":{capName:"decoder",capScope:"system",addonId:null,access:"view"},"decoder.pushPacket":{capName:"decoder",capScope:"system",addonId:null,access:"view"},"decoder.reprobeHwaccel":{capName:"decoder",capScope:"system",addonId:null,access:"create"},"decoder.supportsCodec":{capName:"decoder",capScope:"system",addonId:null,access:"view"},"decoder.updateConfig":{capName:"decoder",capScope:"system",addonId:null,access:"view"},"deviceDiscovery.adoptDevice":{capName:"device-discovery",capScope:"device",addonId:null,access:"create"},"deviceDiscovery.listDiscovered":{capName:"device-discovery",capScope:"device",addonId:null,access:"view"},"deviceDiscovery.refreshDiscovery":{capName:"device-discovery",capScope:"device",addonId:null,access:"create"},"deviceDiscovery.releaseDevice":{capName:"device-discovery",capScope:"device",addonId:null,access:"create"},"deviceExport.exposeDevice":{capName:"device-export",capScope:"system",addonId:null,access:"create"},"deviceExport.getStatus":{capName:"device-export",capScope:"system",addonId:null,access:"view"},"deviceExport.listExposedDevices":{capName:"device-export",capScope:"system",addonId:null,access:"view"},"deviceExport.listSupportedDeviceKinds":{capName:"device-export",capScope:"system",addonId:null,access:"view"},"deviceExport.unexposeDevice":{capName:"device-export",capScope:"system",addonId:null,access:"create"},"deviceManager.addLocation":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.adoptDevice":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.allocateDeviceId":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.createDevice":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.disable":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.discoverDevices":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.enable":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.getAllBindings":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.getBindings":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.getChildren":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.getConfigSchema":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.getCreationSchema":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.getDevice":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.getDeviceAggregate":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.getDeviceLiveInfoAggregate":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.getDeviceSettingsAggregate":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.getDeviceStatusAggregate":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.getSettingsSchema":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.getStreamProfileMap":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.getStreamSources":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.listAll":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.listBindableCapsForDeviceType":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.listLocations":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.listPersistedByAddon":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.listWrappersForCap":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.loadConfig":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.loadMeta":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.loadRuntimeState":{capName:"device-manager",capScope:"system",addonId:null,access:"view"},"deviceManager.persistConfig":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.probeStreams":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.registerDevice":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.remove":{capName:"device-manager",capScope:"system",addonId:null,access:"delete"},"deviceManager.removeDevice":{capName:"device-manager",capScope:"system",addonId:null,access:"delete"},"deviceManager.removeLocation":{capName:"device-manager",capScope:"system",addonId:null,access:"delete"},"deviceManager.setDisabled":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.setLocation":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.setMetadata":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.setName":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.setStreamProfileMap":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.setWrapperActive":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.testCreationField":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.testField":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.updateConfig":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.updateDeviceField":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceManager.updateDeviceFieldsBatch":{capName:"device-manager",capScope:"system",addonId:null,access:"create"},"deviceOps.getConfigEntries":{capName:"device-ops",capScope:"device",addonId:null,access:"view"},"deviceOps.getSettingsSchema":{capName:"device-ops",capScope:"device",addonId:null,access:"view"},"deviceOps.getStreamSources":{capName:"device-ops",capScope:"device",addonId:null,access:"view"},"deviceOps.removeDevice":{capName:"device-ops",capScope:"device",addonId:null,access:"delete"},"deviceOps.setConfig":{capName:"device-ops",capScope:"device",addonId:null,access:"create"},"deviceProvider.adoptDiscoveredDevice":{capName:"device-provider",capScope:"system",addonId:null,access:"create"},"deviceProvider.createDevice":{capName:"device-provider",capScope:"system",addonId:null,access:"create"},"deviceProvider.discoverDevices":{capName:"device-provider",capScope:"system",addonId:null,access:"create"},"deviceProvider.getChildCreationSchema":{capName:"device-provider",capScope:"system",addonId:null,access:"view"},"deviceProvider.getDevices":{capName:"device-provider",capScope:"system",addonId:null,access:"view"},"deviceProvider.getStatus":{capName:"device-provider",capScope:"system",addonId:null,access:"view"},"deviceProvider.start":{capName:"device-provider",capScope:"system",addonId:null,access:"create"},"deviceProvider.stop":{capName:"device-provider",capScope:"system",addonId:null,access:"create"},"deviceProvider.supportsDiscovery":{capName:"device-provider",capScope:"system",addonId:null,access:"view"},"deviceProvider.supportsManualCreation":{capName:"device-provider",capScope:"system",addonId:null,access:"view"},"deviceProvider.testCreationField":{capName:"device-provider",capScope:"system",addonId:null,access:"create"},"deviceState.getAllSnapshots":{capName:"device-state",capScope:"system",addonId:null,access:"view"},"deviceState.getCapSlice":{capName:"device-state",capScope:"system",addonId:null,access:"view"},"deviceState.getSnapshot":{capName:"device-state",capScope:"system",addonId:null,access:"view"},"deviceState.setCapSlice":{capName:"device-state",capScope:"system",addonId:null,access:"create"},"embeddingEncoder.encode":{capName:"embedding-encoder",capScope:"system",addonId:null,access:"view"},"embeddingEncoder.encodeText":{capName:"embedding-encoder",capScope:"system",addonId:null,access:"view"},"embeddingEncoder.getInfo":{capName:"embedding-encoder",capScope:"system",addonId:null,access:"view"},"events.getEventClipUrl":{capName:"events",capScope:"device",addonId:null,access:"view"},"events.getEvents":{capName:"events",capScope:"device",addonId:null,access:"view"},"events.getEventThumbnail":{capName:"events",capScope:"device",addonId:null,access:"view"},"integrations.create":{capName:"integrations",capScope:"system",addonId:null,access:"create"},"integrations.delete":{capName:"integrations",capScope:"system",addonId:null,access:"delete"},"integrations.get":{capName:"integrations",capScope:"system",addonId:null,access:"view"},"integrations.getAvailableTypes":{capName:"integrations",capScope:"system",addonId:null,access:"view"},"integrations.getByAddonId":{capName:"integrations",capScope:"system",addonId:null,access:"view"},"integrations.getSettings":{capName:"integrations",capScope:"system",addonId:null,access:"view"},"integrations.list":{capName:"integrations",capScope:"system",addonId:null,access:"view"},"integrations.setSettings":{capName:"integrations",capScope:"system",addonId:null,access:"create"},"integrations.testConnection":{capName:"integrations",capScope:"system",addonId:null,access:"create"},"integrations.update":{capName:"integrations",capScope:"system",addonId:null,access:"create"},"intercom.endTalkSession":{capName:"intercom",capScope:"device",addonId:null,access:"create"},"intercom.handleAnswer":{capName:"intercom",capScope:"device",addonId:null,access:"create"},"intercom.pushTalkPcm":{capName:"intercom",capScope:"device",addonId:null,access:"create"},"intercom.startSession":{capName:"intercom",capScope:"device",addonId:null,access:"create"},"intercom.startTalkSession":{capName:"intercom",capScope:"device",addonId:null,access:"create"},"intercom.stopSession":{capName:"intercom",capScope:"device",addonId:null,access:"create"},"localNetwork.getAllowedAddresses":{capName:"local-network",capScope:"system",addonId:null,access:"view"},"localNetwork.getConnectionEndpoints":{capName:"local-network",capScope:"system",addonId:null,access:"view"},"localNetwork.getPreferred":{capName:"local-network",capScope:"system",addonId:null,access:"view"},"localNetwork.list":{capName:"local-network",capScope:"system",addonId:null,access:"view"},"localNetwork.resetAllowlistToBestMatch":{capName:"local-network",capScope:"system",addonId:null,access:"delete"},"localNetwork.setAllowedAddresses":{capName:"local-network",capScope:"system",addonId:null,access:"create"},"logDestination.query":{capName:"log-destination",capScope:"system",addonId:null,access:"view"},"logDestination.write":{capName:"log-destination",capScope:"system",addonId:null,access:"create"},"meshNetwork.getStatus":{capName:"mesh-network",capScope:"system",addonId:null,access:"view"},"meshNetwork.join":{capName:"mesh-network",capScope:"system",addonId:null,access:"create"},"meshNetwork.leave":{capName:"mesh-network",capScope:"system",addonId:null,access:"create"},"meshNetwork.listPeers":{capName:"mesh-network",capScope:"system",addonId:null,access:"view"},"meshNetwork.logout":{capName:"mesh-network",capScope:"system",addonId:null,access:"create"},"meshNetwork.startLogin":{capName:"mesh-network",capScope:"system",addonId:null,access:"create"},"meshNetwork.testConnection":{capName:"mesh-network",capScope:"system",addonId:null,access:"create"},"metricsProvider.collectSnapshot":{capName:"metrics-provider",capScope:"system",addonId:null,access:"view"},"metricsProvider.getAddonStats":{capName:"metrics-provider",capScope:"system",addonId:null,access:"view"},"metricsProvider.getCached":{capName:"metrics-provider",capScope:"system",addonId:null,access:"view"},"metricsProvider.getCpuTemperature":{capName:"metrics-provider",capScope:"system",addonId:null,access:"view"},"metricsProvider.getCurrent":{capName:"metrics-provider",capScope:"system",addonId:null,access:"view"},"metricsProvider.getDiskSpace":{capName:"metrics-provider",capScope:"system",addonId:null,access:"view"},"metricsProvider.getGpuInfo":{capName:"metrics-provider",capScope:"system",addonId:null,access:"view"},"metricsProvider.getProcessStats":{capName:"metrics-provider",capScope:"system",addonId:null,access:"view"},"metricsProvider.killProcess":{capName:"metrics-provider",capScope:"system",addonId:null,access:"create"},"metricsProvider.listAddonInstances":{capName:"metrics-provider",capScope:"system",addonId:null,access:"view"},"metricsProvider.listNodeProcesses":{capName:"metrics-provider",capScope:"system",addonId:null,access:"view"},"motion.isDetected":{capName:"motion",capScope:"device",addonId:null,access:"view"},"motionDetection.analyze":{capName:"motion-detection",capScope:"device",addonId:null,access:"create"},"motionDetection.removeCamera":{capName:"motion-detection",capScope:"device",addonId:null,access:"delete"},"motionDetection.reset":{capName:"motion-detection",capScope:"device",addonId:null,access:"delete"},"motionTrigger.setMotionTrigger":{capName:"motion-trigger",capScope:"device",addonId:null,access:"create"},"mqttBroker.addBroker":{capName:"mqtt-broker",capScope:"system",addonId:null,access:"create"},"mqttBroker.getBrokerConfig":{capName:"mqtt-broker",capScope:"system",addonId:null,access:"view"},"mqttBroker.getStatus":{capName:"mqtt-broker",capScope:"system",addonId:null,access:"view"},"mqttBroker.listBrokers":{capName:"mqtt-broker",capScope:"system",addonId:null,access:"view"},"mqttBroker.removeBroker":{capName:"mqtt-broker",capScope:"system",addonId:null,access:"delete"},"mqttBroker.startEmbeddedBroker":{capName:"mqtt-broker",capScope:"system",addonId:null,access:"create"},"mqttBroker.stopEmbeddedBroker":{capName:"mqtt-broker",capScope:"system",addonId:null,access:"create"},"mqttBroker.testConnection":{capName:"mqtt-broker",capScope:"system",addonId:null,access:"create"},"networkAccess.getEndpoint":{capName:"network-access",capScope:"system",addonId:null,access:"view"},"networkAccess.getStatus":{capName:"network-access",capScope:"system",addonId:null,access:"view"},"networkAccess.listEndpoints":{capName:"network-access",capScope:"system",addonId:null,access:"view"},"networkAccess.start":{capName:"network-access",capScope:"system",addonId:null,access:"create"},"networkAccess.stop":{capName:"network-access",capScope:"system",addonId:null,access:"create"},"networkQuality.getAllStats":{capName:"network-quality",capScope:"system",addonId:null,access:"view"},"networkQuality.getDeviceStats":{capName:"network-quality",capScope:"system",addonId:null,access:"view"},"networkQuality.reportClientStats":{capName:"network-quality",capScope:"system",addonId:null,access:"create"},"nodes.clusterAddonStatus":{capName:"nodes",capScope:"system",addonId:null,access:"view"},"nodes.deployAddon":{capName:"nodes",capScope:"system",addonId:null,access:"create"},"nodes.executeQuery":{capName:"nodes",capScope:"system",addonId:null,access:"create"},"nodes.getNodeAddons":{capName:"nodes",capScope:"system",addonId:null,access:"view"},"nodes.renameNode":{capName:"nodes",capScope:"system",addonId:null,access:"create"},"nodes.restartAddon":{capName:"nodes",capScope:"system",addonId:null,access:"create"},"nodes.restartNode":{capName:"nodes",capScope:"system",addonId:null,access:"create"},"nodes.restartProcess":{capName:"nodes",capScope:"system",addonId:null,access:"create"},"nodes.setProcessLogLevel":{capName:"nodes",capScope:"system",addonId:null,access:"create"},"nodes.shutdownNode":{capName:"nodes",capScope:"system",addonId:null,access:"create"},"nodes.topology":{capName:"nodes",capScope:"system",addonId:null,access:"view"},"nodes.undeployAddon":{capName:"nodes",capScope:"system",addonId:null,access:"create"},"notificationOutput.send":{capName:"notification-output",capScope:"system",addonId:null,access:"create"},"notificationOutput.sendTest":{capName:"notification-output",capScope:"system",addonId:null,access:"create"},"osd.setOverlay":{capName:"osd",capScope:"device",addonId:null,access:"create"},"pipelineAnalytics.clearTracks":{capName:"pipeline-analytics",capScope:"device",addonId:null,access:"delete"},"pipelineAnalytics.getActiveTracks":{capName:"pipeline-analytics",capScope:"device",addonId:null,access:"view"},"pipelineAnalytics.getAudioEvents":{capName:"pipeline-analytics",capScope:"device",addonId:null,access:"view"},"pipelineAnalytics.getEventMedia":{capName:"pipeline-analytics",capScope:"device",addonId:null,access:"view"},"pipelineAnalytics.getMotionEvents":{capName:"pipeline-analytics",capScope:"device",addonId:null,access:"view"},"pipelineAnalytics.getObjectEvents":{capName:"pipeline-analytics",capScope:"device",addonId:null,access:"view"},"pipelineAnalytics.getTrack":{capName:"pipeline-analytics",capScope:"device",addonId:null,access:"view"},"pipelineAnalytics.getTrackMedia":{capName:"pipeline-analytics",capScope:"device",addonId:null,access:"view"},"pipelineAnalytics.listTracks":{capName:"pipeline-analytics",capScope:"device",addonId:null,access:"view"},"pipelineExecutor.cacheFrameInPool":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"create"},"pipelineExecutor.deleteModel":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"delete"},"pipelineExecutor.deleteTemplate":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"delete"},"pipelineExecutor.detect":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.downloadModel":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"create"},"pipelineExecutor.getAddonModels":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getAudioCapabilities":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getAvailableEngines":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getCapabilities":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getDefaultSteps":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getDetectionConfigSchema":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getEffectiveTuning":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getGlobalPipelineConfig":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getGlobalSteps":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getOrchestratorConfigSchema":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getReferenceAudio":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getReferenceAudioFiles":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getReferenceImage":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getSchema":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getSelectedEngine":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.getVideoPipelineSteps":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.inferCached":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"create"},"pipelineExecutor.killEngine":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"create"},"pipelineExecutor.listLoadedEngines":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.listReferenceImages":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.listTemplates":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"view"},"pipelineExecutor.reprobeEngine":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"create"},"pipelineExecutor.runAudioTest":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"create"},"pipelineExecutor.runPipeline":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"create"},"pipelineExecutor.runPipelineBatch":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"create"},"pipelineExecutor.saveTemplate":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"create"},"pipelineExecutor.setVideoPipelineSteps":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"create"},"pipelineExecutor.spinEngine":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"create"},"pipelineExecutor.uncacheFrame":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"create"},"pipelineExecutor.updateTemplate":{capName:"pipeline-executor",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.assignAudio":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.assignDecoder":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.assignPipeline":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.deleteTemplate":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"delete"},"pipelineOrchestrator.getAgentLoad":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.getAgentSettings":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.getAudioAssignment":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.getAudioAssignments":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.getAudioNodeLoad":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.getCameraMetrics":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.getCameraSettings":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.getCameraStepOverrides":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.getCapabilityBindings":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.getDecoderAssignment":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.getDecoderAssignments":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.getGlobalMetrics":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.getPipelineAssignment":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.getPipelineAssignments":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.listAgentSettings":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.listTemplates":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.rebalance":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.removeAgentSettings":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"delete"},"pipelineOrchestrator.resolvePipeline":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"view"},"pipelineOrchestrator.saveTemplate":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.setAgentAddonDefaults":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.setCameraPipelineForAgent":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.setCameraStepOverride":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.setCameraStepToggle":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.setCapabilityBinding":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.unassignAudio":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.unassignDecoder":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.unassignPipeline":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineOrchestrator.updateTemplate":{capName:"pipeline-orchestrator",capScope:"system",addonId:null,access:"create"},"pipelineRunner.attachCamera":{capName:"pipeline-runner",capScope:"system",addonId:null,access:"create"},"pipelineRunner.detachCamera":{capName:"pipeline-runner",capScope:"system",addonId:null,access:"create"},"pipelineRunner.getAllCameraMetrics":{capName:"pipeline-runner",capScope:"system",addonId:null,access:"view"},"pipelineRunner.getCameraMetrics":{capName:"pipeline-runner",capScope:"system",addonId:null,access:"view"},"pipelineRunner.getLocalCameras":{capName:"pipeline-runner",capScope:"system",addonId:null,access:"view"},"pipelineRunner.getLocalLoad":{capName:"pipeline-runner",capScope:"system",addonId:null,access:"view"},"pipelineRunner.getLocalMetrics":{capName:"pipeline-runner",capScope:"system",addonId:null,access:"view"},"pipelineRunner.reportMotion":{capName:"pipeline-runner",capScope:"system",addonId:null,access:"create"},"platformProbe.getCapabilities":{capName:"platform-probe",capScope:"system",addonId:null,access:"view"},"platformProbe.getHardware":{capName:"platform-probe",capScope:"system",addonId:null,access:"view"},"platformProbe.getHardwareEncoders":{capName:"platform-probe",capScope:"system",addonId:null,access:"view"},"platformProbe.refreshHardwareEncoders":{capName:"platform-probe",capScope:"system",addonId:null,access:"create"},"platformProbe.resolveHwAccel":{capName:"platform-probe",capScope:"system",addonId:null,access:"view"},"platformProbe.resolveInferenceConfig":{capName:"platform-probe",capScope:"system",addonId:null,access:"view"},"ptz.continuousMove":{capName:"ptz",capScope:"device",addonId:null,access:"create"},"ptz.getPosition":{capName:"ptz",capScope:"device",addonId:null,access:"view"},"ptz.getPresets":{capName:"ptz",capScope:"device",addonId:null,access:"view"},"ptz.goHome":{capName:"ptz",capScope:"device",addonId:null,access:"create"},"ptz.goToPreset":{capName:"ptz",capScope:"device",addonId:null,access:"create"},"ptz.move":{capName:"ptz",capScope:"device",addonId:null,access:"create"},"ptz.stop":{capName:"ptz",capScope:"device",addonId:null,access:"create"},"ptzAutotrack.getSettings":{capName:"ptz-autotrack",capScope:"device",addonId:null,access:"view"},"ptzAutotrack.getStatus":{capName:"ptz-autotrack",capScope:"device",addonId:null,access:"view"},"ptzAutotrack.setEnabled":{capName:"ptz-autotrack",capScope:"device",addonId:null,access:"create"},"ptzAutotrack.setSettings":{capName:"ptz-autotrack",capScope:"device",addonId:null,access:"create"},"reboot.reboot":{capName:"reboot",capScope:"device",addonId:null,access:"create"},"recording.getPlaybackUrl":{capName:"recording",capScope:"device",addonId:null,access:"view"},"recording.getSegments":{capName:"recording",capScope:"device",addonId:null,access:"view"},"recording.getThumbnailAt":{capName:"recording",capScope:"device",addonId:null,access:"view"},"recordingEngine.disable":{capName:"recording-engine",capScope:"system",addonId:null,access:"create"},"recordingEngine.enable":{capName:"recording-engine",capScope:"system",addonId:null,access:"create"},"recordingEngine.estimateGlobalStorage":{capName:"recording-engine",capScope:"system",addonId:null,access:"view"},"recordingEngine.estimateStorage":{capName:"recording-engine",capScope:"system",addonId:null,access:"view"},"recordingEngine.getAvailability":{capName:"recording-engine",capScope:"system",addonId:null,access:"view"},"recordingEngine.getConfig":{capName:"recording-engine",capScope:"system",addonId:null,access:"view"},"recordingEngine.getMotionStats":{capName:"recording-engine",capScope:"system",addonId:null,access:"view"},"recordingEngine.getPlaylist":{capName:"recording-engine",capScope:"system",addonId:null,access:"view"},"recordingEngine.getPolicy":{capName:"recording-engine",capScope:"system",addonId:null,access:"view"},"recordingEngine.getPolicyStatus":{capName:"recording-engine",capScope:"system",addonId:null,access:"view"},"recordingEngine.getRetentionConfig":{capName:"recording-engine",capScope:"system",addonId:null,access:"view"},"recordingEngine.getSegments":{capName:"recording-engine",capScope:"system",addonId:null,access:"view"},"recordingEngine.getStatus":{capName:"recording-engine",capScope:"system",addonId:null,access:"view"},"recordingEngine.getStorageUsage":{capName:"recording-engine",capScope:"system",addonId:null,access:"view"},"recordingEngine.getThumbnail":{capName:"recording-engine",capScope:"system",addonId:null,access:"view"},"recordingEngine.setPolicy":{capName:"recording-engine",capScope:"system",addonId:null,access:"create"},"recordingEngine.updateConfig":{capName:"recording-engine",capScope:"system",addonId:null,access:"create"},"recordingEngine.updateRetentionConfig":{capName:"recording-engine",capScope:"system",addonId:null,access:"create"},"restreamer.getExposedResources":{capName:"restreamer",capScope:"system",addonId:null,access:"view"},"restreamer.registerDevice":{capName:"restreamer",capScope:"system",addonId:null,access:"create"},"restreamer.unregisterDevice":{capName:"restreamer",capScope:"system",addonId:null,access:"delete"},"settingsStore.count":{capName:"settings-store",capScope:"system",addonId:null,access:"view"},"settingsStore.declareCollection":{capName:"settings-store",capScope:"system",addonId:null,access:"create"},"settingsStore.delete":{capName:"settings-store",capScope:"system",addonId:null,access:"delete"},"settingsStore.get":{capName:"settings-store",capScope:"system",addonId:null,access:"view"},"settingsStore.insert":{capName:"settings-store",capScope:"system",addonId:null,access:"create"},"settingsStore.isEmpty":{capName:"settings-store",capScope:"system",addonId:null,access:"view"},"settingsStore.query":{capName:"settings-store",capScope:"system",addonId:null,access:"view"},"settingsStore.set":{capName:"settings-store",capScope:"system",addonId:null,access:"create"},"settingsStore.update":{capName:"settings-store",capScope:"system",addonId:null,access:"create"},"smtpProvider.getStatus":{capName:"smtp-provider",capScope:"system",addonId:null,access:"view"},"smtpProvider.sendEmail":{capName:"smtp-provider",capScope:"system",addonId:null,access:"create"},"smtpProvider.verify":{capName:"smtp-provider",capScope:"system",addonId:null,access:"view"},"snapshot.getSnapshot":{capName:"snapshot",capScope:"device",addonId:null,access:"view"},"snapshot.invalidateCache":{capName:"snapshot",capScope:"device",addonId:null,access:"create"},"snapshotProvider.getSnapshot":{capName:"snapshot-provider",capScope:"system",addonId:null,access:"view"},"snapshotProvider.supportsDevice":{capName:"snapshot-provider",capScope:"system",addonId:null,access:"view"},"ssoBridge.signBridgeToken":{capName:"sso-bridge",capScope:"system",addonId:null,access:"view"},"ssoBridge.verifyBridgeToken":{capName:"sso-bridge",capScope:"system",addonId:null,access:"view"},"storage.abortUpload":{capName:"storage",capScope:"system",addonId:null,access:"create"},"storage.beginDownload":{capName:"storage",capScope:"system",addonId:null,access:"create"},"storage.beginUpload":{capName:"storage",capScope:"system",addonId:null,access:"create"},"storage.delete":{capName:"storage",capScope:"system",addonId:null,access:"delete"},"storage.deleteLocation":{capName:"storage",capScope:"system",addonId:null,access:"delete"},"storage.endDownload":{capName:"storage",capScope:"system",addonId:null,access:"create"},"storage.exists":{capName:"storage",capScope:"system",addonId:null,access:"view"},"storage.finalizeUpload":{capName:"storage",capScope:"system",addonId:null,access:"create"},"storage.getAvailableSpace":{capName:"storage",capScope:"system",addonId:null,access:"view"},"storage.getDefaultLocation":{capName:"storage",capScope:"system",addonId:null,access:"view"},"storage.list":{capName:"storage",capScope:"system",addonId:null,access:"view"},"storage.listLocations":{capName:"storage",capScope:"system",addonId:null,access:"view"},"storage.listProviders":{capName:"storage",capScope:"system",addonId:null,access:"view"},"storage.read":{capName:"storage",capScope:"system",addonId:null,access:"view"},"storage.readChunk":{capName:"storage",capScope:"system",addonId:null,access:"view"},"storage.resolve":{capName:"storage",capScope:"system",addonId:null,access:"view"},"storage.testConfig":{capName:"storage",capScope:"system",addonId:null,access:"view"},"storage.testLocation":{capName:"storage",capScope:"system",addonId:null,access:"view"},"storage.upsertLocation":{capName:"storage",capScope:"system",addonId:null,access:"create"},"storage.write":{capName:"storage",capScope:"system",addonId:null,access:"create"},"storage.writeChunk":{capName:"storage",capScope:"system",addonId:null,access:"create"},"storageProvider.abortUpload":{capName:"storage-provider",capScope:"system",addonId:null,access:"create"},"storageProvider.beginDownload":{capName:"storage-provider",capScope:"system",addonId:null,access:"create"},"storageProvider.beginUpload":{capName:"storage-provider",capScope:"system",addonId:null,access:"create"},"storageProvider.delete":{capName:"storage-provider",capScope:"system",addonId:null,access:"delete"},"storageProvider.endDownload":{capName:"storage-provider",capScope:"system",addonId:null,access:"create"},"storageProvider.exists":{capName:"storage-provider",capScope:"system",addonId:null,access:"view"},"storageProvider.finalizeUpload":{capName:"storage-provider",capScope:"system",addonId:null,access:"create"},"storageProvider.getAvailableSpace":{capName:"storage-provider",capScope:"system",addonId:null,access:"view"},"storageProvider.getProviderInfo":{capName:"storage-provider",capScope:"system",addonId:null,access:"view"},"storageProvider.list":{capName:"storage-provider",capScope:"system",addonId:null,access:"view"},"storageProvider.read":{capName:"storage-provider",capScope:"system",addonId:null,access:"view"},"storageProvider.readChunk":{capName:"storage-provider",capScope:"system",addonId:null,access:"view"},"storageProvider.resolve":{capName:"storage-provider",capScope:"system",addonId:null,access:"view"},"storageProvider.testLocation":{capName:"storage-provider",capScope:"system",addonId:null,access:"view"},"storageProvider.write":{capName:"storage-provider",capScope:"system",addonId:null,access:"create"},"storageProvider.writeChunk":{capName:"storage-provider",capScope:"system",addonId:null,access:"create"},"streamBroker.assignProfile":{capName:"stream-broker",capScope:"system",addonId:null,access:"create"},"streamBroker.getAllRtspEntries":{capName:"stream-broker",capScope:"system",addonId:null,access:"view"},"streamBroker.getBroker":{capName:"stream-broker",capScope:"system",addonId:null,access:"view"},"streamBroker.getBrokerStats":{capName:"stream-broker",capScope:"system",addonId:null,access:"view"},"streamBroker.getPreBufferInfo":{capName:"stream-broker",capScope:"system",addonId:null,access:"view"},"streamBroker.getRtspEntry":{capName:"stream-broker",capScope:"system",addonId:null,access:"view"},"streamBroker.getRtspPort":{capName:"stream-broker",capScope:"system",addonId:null,access:"view"},"streamBroker.getStreamUrl":{capName:"stream-broker",capScope:"system",addonId:null,access:"view"},"streamBroker.getStreamWithCodec":{capName:"stream-broker",capScope:"system",addonId:null,access:"create"},"streamBroker.isRtspEnabled":{capName:"stream-broker",capScope:"system",addonId:null,access:"view"},"streamBroker.killClient":{capName:"stream-broker",capScope:"system",addonId:null,access:"create"},"streamBroker.listAllCameraStreams":{capName:"stream-broker",capScope:"system",addonId:null,access:"view"},"streamBroker.listAllProfileSlots":{capName:"stream-broker",capScope:"system",addonId:null,access:"view"},"streamBroker.listClients":{capName:"stream-broker",capScope:"system",addonId:null,access:"view"},"streamBroker.publishCameraStream":{capName:"stream-broker",capScope:"system",addonId:null,access:"create"},"streamBroker.regenerateRtspToken":{capName:"stream-broker",capScope:"system",addonId:null,access:"create"},"streamBroker.releaseStreamWithCodec":{capName:"stream-broker",capScope:"system",addonId:null,access:"create"},"streamBroker.restartProfile":{capName:"stream-broker",capScope:"system",addonId:null,access:"create"},"streamBroker.retractCameraStream":{capName:"stream-broker",capScope:"system",addonId:null,access:"create"},"streamBroker.setPreBufferDuration":{capName:"stream-broker",capScope:"system",addonId:null,access:"create"},"streamBroker.setRtspEnabled":{capName:"stream-broker",capScope:"system",addonId:null,access:"create"},"streamBroker.unassignProfile":{capName:"stream-broker",capScope:"system",addonId:null,access:"create"},"streamingEngine.getStreamUrl":{capName:"streaming-engine",capScope:"system",addonId:null,access:"view"},"streamingEngine.listStreams":{capName:"streaming-engine",capScope:"system",addonId:null,access:"view"},"streamingEngine.registerStream":{capName:"streaming-engine",capScope:"system",addonId:null,access:"create"},"streamingEngine.unregisterStream":{capName:"streaming-engine",capScope:"system",addonId:null,access:"delete"},"switch.setState":{capName:"switch",capScope:"device",addonId:null,access:"create"},"system.featureFlags":{capName:"system",capScope:"system",addonId:null,access:"view"},"system.forceRetentionCleanup":{capName:"system",capScope:"system",addonId:null,access:"create"},"system.getRetentionConfig":{capName:"system",capScope:"system",addonId:null,access:"view"},"system.health":{capName:"system",capScope:"system",addonId:null,access:"view"},"system.info":{capName:"system",capScope:"system",addonId:null,access:"view"},"system.networkAddresses":{capName:"system",capScope:"system",addonId:null,access:"view"},"system.setRetentionConfig":{capName:"system",capScope:"system",addonId:null,access:"create"},"toast.onToast":{capName:"toast",capScope:"system",addonId:null,access:"view"},"turnProvider.getTurnServers":{capName:"turn-provider",capScope:"system",addonId:null,access:"view"},"userManagement.confirmTotp":{capName:"user-management",capScope:"system",addonId:null,access:"create"},"userManagement.createApiKey":{capName:"user-management",capScope:"system",addonId:null,access:"create"},"userManagement.createScopedToken":{capName:"user-management",capScope:"system",addonId:null,access:"create"},"userManagement.createUser":{capName:"user-management",capScope:"system",addonId:null,access:"create"},"userManagement.deleteUser":{capName:"user-management",capScope:"system",addonId:null,access:"delete"},"userManagement.disableTotp":{capName:"user-management",capScope:"system",addonId:null,access:"delete"},"userManagement.getTotpStatus":{capName:"user-management",capScope:"system",addonId:null,access:"view"},"userManagement.listApiKeys":{capName:"user-management",capScope:"system",addonId:null,access:"view"},"userManagement.listScopedTokens":{capName:"user-management",capScope:"system",addonId:null,access:"view"},"userManagement.listUsers":{capName:"user-management",capScope:"system",addonId:null,access:"view"},"userManagement.resetPassword":{capName:"user-management",capScope:"system",addonId:null,access:"create"},"userManagement.revokeApiKey":{capName:"user-management",capScope:"system",addonId:null,access:"delete"},"userManagement.revokeScopedToken":{capName:"user-management",capScope:"system",addonId:null,access:"delete"},"userManagement.setupTotp":{capName:"user-management",capScope:"system",addonId:null,access:"create"},"userManagement.setUserScopes":{capName:"user-management",capScope:"system",addonId:null,access:"create"},"userManagement.updateUser":{capName:"user-management",capScope:"system",addonId:null,access:"create"},"userManagement.validateApiKey":{capName:"user-management",capScope:"system",addonId:null,access:"view"},"userManagement.validateCredentials":{capName:"user-management",capScope:"system",addonId:null,access:"view"},"userManagement.validateScopedToken":{capName:"user-management",capScope:"system",addonId:null,access:"view"},"userManagement.verifyTotp":{capName:"user-management",capScope:"system",addonId:null,access:"view"},"userPasskeys.beginAuthentication":{capName:"user-passkeys",capScope:"system",addonId:null,access:"view"},"userPasskeys.beginRegistration":{capName:"user-passkeys",capScope:"system",addonId:null,access:"create"},"userPasskeys.finishAuthentication":{capName:"user-passkeys",capScope:"system",addonId:null,access:"view"},"userPasskeys.finishRegistration":{capName:"user-passkeys",capScope:"system",addonId:null,access:"create"},"userPasskeys.listPasskeys":{capName:"user-passkeys",capScope:"system",addonId:null,access:"view"},"userPasskeys.removePasskey":{capName:"user-passkeys",capScope:"system",addonId:null,access:"delete"},"webrtc.closeSession":{capName:"webrtc",capScope:"system",addonId:null,access:"create"},"webrtc.createSession":{capName:"webrtc",capScope:"system",addonId:null,access:"create"},"webrtc.handleAnswer":{capName:"webrtc",capScope:"system",addonId:null,access:"create"},"webrtc.handleOffer":{capName:"webrtc",capScope:"system",addonId:null,access:"create"},"webrtc.hasAdaptiveBitrate":{capName:"webrtc",capScope:"system",addonId:null,access:"view"},"webrtc.registerStream":{capName:"webrtc",capScope:"system",addonId:null,access:"create"},"webrtc.supportsStream":{capName:"webrtc",capScope:"system",addonId:null,access:"view"},"webrtc.unregisterStream":{capName:"webrtc",capScope:"system",addonId:null,access:"delete"},"webrtcSession.closeSession":{capName:"webrtc-session",capScope:"device",addonId:null,access:"create"},"webrtcSession.createSession":{capName:"webrtc-session",capScope:"device",addonId:null,access:"create"},"webrtcSession.handleAnswer":{capName:"webrtc-session",capScope:"device",addonId:null,access:"create"},"webrtcSession.handleOffer":{capName:"webrtc-session",capScope:"device",addonId:null,access:"create"},"webrtcSession.hasAdaptiveBitrate":{capName:"webrtc-session",capScope:"device",addonId:null,access:"view"},"webrtcSession.listStreams":{capName:"webrtc-session",capScope:"device",addonId:null,access:"view"},"zoneAnalytics.getCameraHistory":{capName:"zone-analytics",capScope:"device",addonId:null,access:"view"},"zoneAnalytics.getCurrentSnapshot":{capName:"zone-analytics",capScope:"device",addonId:null,access:"view"},"zoneAnalytics.getUnzonedHistory":{capName:"zone-analytics",capScope:"device",addonId:null,access:"view"},"zoneAnalytics.getZoneHistory":{capName:"zone-analytics",capScope:"device",addonId:null,access:"view"},"zoneRules.listRules":{capName:"zone-rules",capScope:"device",addonId:null,access:"view"},"zoneRules.setRules":{capName:"zone-rules",capScope:"device",addonId:null,access:"create"},"zones.addZone":{capName:"zones",capScope:"device",addonId:null,access:"create"},"zones.listZones":{capName:"zones",capScope:"device",addonId:null,access:"view"},"zones.removeZone":{capName:"zones",capScope:"device",addonId:null,access:"delete"},"zones.updateZone":{capName:"zones",capScope:"device",addonId:null,access:"create"}}),Wm=["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","backup","brightness","camera-credentials","camera-streams","decoder","device-discovery","device-export","device-manager","device-ops","device-provider","device-state","embedding-encoder","events","integrations","intercom","local-network","log-destination","mesh-network","metrics-provider","motion","motion-detection","motion-trigger","mqtt-broker","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","restreamer","settings-store","smtp-provider","snapshot","snapshot-provider","sso-bridge","storage","storage-provider","stream-broker","streaming-engine","switch","system","toast","turn-provider","user-management","user-passkeys","webrtc","webrtc-session","zone-analytics","zone-rules","zones"],$m=["audio-analysis","audio-metrics","brightness","camera-credentials","camera-streams","device-discovery","device-ops","events","intercom","motion","motion-detection","motion-trigger","osd","pipeline-analytics","ptz","ptz-autotrack","reboot","recording","snapshot","switch","webrtc-session","zone-analytics","zone-rules","zones"],Km=["addon-pages","addon-pages-source","addon-routes","addon-settings","addon-widgets","addon-widgets-source","addons","admin-ui","advanced-notifier","alerts","audio-analyzer","audio-codec","auth-provider","backup","decoder","device-export","device-manager","device-provider","device-state","embedding-encoder","integrations","local-network","log-destination","mesh-network","metrics-provider","mqtt-broker","network-access","network-quality","nodes","notification-output","pipeline-executor","pipeline-orchestrator","pipeline-runner","platform-probe","recording-engine","restreamer","settings-store","smtp-provider","snapshot-provider","sso-bridge","storage","storage-provider","stream-broker","streaming-engine","system","toast","turn-provider","user-management","user-passkeys","webrtc"],Vm=[{id:"camera-viewer",label:"Camera viewer",description:"Read-only over every device — live streams, recordings, motion events, battery state. Combine with `allowedDevices` to restrict to specific cameras.",rows:[{type:"category",target:"device",access:["view"]}]},{id:"camera-operator",label:"Camera operator",description:"Everything `camera-viewer` does plus PTZ control, intercom, snapshots and recording start/stop. Cannot delete devices or recordings.",rows:[{type:"category",target:"device",access:["view","create"]}]},{id:"cli-deployer",label:"CLI deployer",description:"Push addons to the hub and tail their logs. Used by the `camstack` CLI on dev machines. No delete access — a stolen token cannot uninstall.",rows:[{type:"capability",target:"addons",access:["view","create"]}]},{id:"event-listener",label:"Event listener",description:"Subscribe to motion / audio events. Used by webhook bridges and Home Assistant integrations.",rows:[{type:"capability",target:"events",access:["view"]},{type:"capability",target:"motion-detection",access:["view"]},{type:"capability",target:"audio-analysis",access:["view"]}]}],vp=Object.freeze({"device-export":"device-export","mesh-network":"mesh","mqtt-broker":"broker","network-access":"ingress","smtp-provider":"email"}),Gm=["device-export","mesh-network","mqtt-broker","network-access","smtp-provider"];function jm(c){const s=[];for(const[n,d]of Object.entries(vp))d===c&&s.push(n);return s}function Zm(c){try{const s=new URL(c);return!s.username&&!s.password?c:(s.username="",s.password="",s.toString())}catch{return c}}class Ym{constructor(s){this.capacity=s,this.items=Array.from({length:s})}items;head=0;tail=0;count=0;get size(){return this.count}push(s){this.items[this.tail]=s,this.tail=(this.tail+1)%this.capacity,this.count<this.capacity?this.count++:this.head=(this.head+1)%this.capacity}drain(s){const n=[],d=Math.min(s,this.count);for(let p=0;p<d;p++)n.push(this.items[this.head]),this.items[this.head]=void 0,this.head=(this.head+1)%this.capacity;return this.count-=d,n}}function Qm(c,s,n){const d={};for(const p of Object.keys(n))d[p]=g=>c.addons.custom.mutate({addonId:s,action:p,input:g});return d}export{kp as ACCESSORY_LABEL,Um as ALL_CAPABILITY_DEFINITIONS,uo as APPLE_SA_TO_MACRO,qp as AUDIO_BACKEND_CHOICES,po as AUDIO_MACRO_LABELS,ed as AccessoriesStatusSchema,F as AccessoryKind,Ci as AddBrokerInputSchema,yl as AddonAutoUpdateSchema,pl as AddonListItemSchema,Hi as AddonPageDeclarationSchema,Ui as AddonPageInfoSchema,ic as AgentLoadSummarySchema,He as AlertSchema,Ls as AlertSeveritySchema,Us as AlertSourceSchema,_s as AlertStatusSchema,Lp as ApiKeyRecordSchema,It as ApiKeySummarySchema,oi as ArchiveEntrySchema,si as ArchiveManifestSchema,lc as AudioAnalysisResultSchema,pc as AudioAnalysisSettingsSchema,ra as AudioChunkInputSchema,wo as AudioClassSummarySchema,rt as AudioClassificationLabelSchema,mc as AudioClassificationResultSchema,hc as AudioCodecInfoSchema,vc as AudioDecodeSessionConfigSchema,yc as AudioEncodeSessionConfigSchema,Da as AudioEncodedChunkSchema,fr as AudioEventSchema,Vo as AudioLevelSchema,Ao as AudioMetricsHistoryPointSchema,Co as AudioMetricsHistorySchema,oa as AudioMetricsSnapshotSchema,Sc as AudioPcmChunkSchema,Ke as AuthResultSchema,vl as AutoUpdateSettingsSchema,al as AvailableIntegrationTypeSchema,zn as BACKEND_TO_FORMAT,vo as BATTERY_DEVICE_PROFILE,ai as BackupDestinationInfoSchema,va as BackupEntrySchema,El as BaseAddon,Em as BaseDevice,Tm as BaseDeviceProvider,Le as BatteryStatusSchema,te as BoundingBoxSchema,sa as BrightnessStatusSchema,qo as BrokerAudioClientSchema,Oo as BrokerClientsSchema,Ai as BrokerConnectionDetailsSchema,Bo as BrokerDecodedClientSchema,wi as BrokerInfoSchema,Ro as BrokerRtspClientSchema,Eo as BrokerStatsSchema,Mo as BrokerStatusSchema,Np as CAM_PROFILE_ORDER,Lm as CAPABILITY_NAMES,_m as CAPABILITY_ROUTER_KEYS,Fm as CAP_NAMES_WITH_STATUS,vp as CAP_PROVIDER_KIND_MAP,Cm as COCO_80_LABELS,Pm as COCO_TO_MACRO,$ as CamProfileSchema,nn as CamStreamKindSchema,Mt as CamStreamResolutionSchema,Vr as CameraCredentialsSchema,Gr as CameraCredentialsStatusSchema,Tt as CameraMetricsSchema,Zo as CameraMetricsWithDeviceIdSchema,ot as CameraStreamSchema,Dd as CapScopeSchema,rc as CapabilityBindingsSchema,go as ChargingStatus,Hd as ClientNetworkStatsSchema,Zd as ClusterAddonNodeDeploymentSchema,Yd as ClusterAddonStatusEntrySchema,ri as CollectionColumnSchema,di as CollectionIndexSchema,wc as ConfigEntrySchema,Os as ConfigSectionWithValuesSchema,qs as ConfigTabDeclarationSchema,Td as CreateApiKeyInputSchema,xd as CreateApiKeyResultSchema,ol as CreateIntegrationInputSchema,Rd as CreateScopedTokenInputSchema,Bd as CreateScopedTokenResultSchema,Md as CreateUserInputSchema,Al as CustomActionInputSchema,Pl as DEFAULT_ADDON_GROUP,Dl as DEFAULT_ADDON_PLACEMENT,Op as DEFAULT_AUDIO_ANALYZER_CONFIG,Bp as DEFAULT_DECODER_HWACCEL_CONFIG,nm as DEFAULT_FEATURES,Qp as DEFAULT_LOCATION_SUBDIRS,im as DEFAULT_RETENTION,$m as DEVICE_CAP_NAMES,yo as DEVICE_PROFILES,Io as DEVICE_SETTINGS_CONTRIBUTION_METHODS,ko as DEVICE_STATUS_METHOD,Dm as DEVICE_TYPE_INFO,Do as DecodedFrameSchema,Pa as DecoderAssignmentSchema,aa as DecoderSessionConfigSchema,ro as DecoderStatsSchema,il as DeleteIntegrationResultSchema,ns as DetectorOutputSchema,pe as DeviceConfig,ia as DeviceDiscoveryStatusSchema,Oi as DeviceExportExposeInputSchema,wa as DeviceExportStatusSchema,zi as DeviceExportUnexposeInputSchema,Xa as DeviceFeature,$e as DeviceInfoSchema,$a as DeviceNetworkStatsSchema,_ as DeviceRole,qt as DeviceRuntimeState,Oe as DeviceStatusSchema,C as DeviceType,ct as DiscoveredChildDeviceSchema,Ho as DiscoveredChildStatusSchema,xp as DiscoveredDeviceSchema,Fp as DisposerChain,Wo as DoorbellPressEventSchema,ca as DoorbellStatusSchema,ym as ElementConfigStore,Ic as EmbeddingInfoSchema,Ma as EmbeddingResultSchema,Po as EncodedPacketSchema,Vi as EnrichedWidgetMetadataSchema,Ne as EventCategory,_r as EventItemSchema,hr as EventKindSchema,Hl as EventSourceType,xi as ExportSetupFieldSchema,Ri as ExportSetupSchema,qi as ExposedDeviceSchema,ec as ExposedResourceSchema,Wa as FeatureManifestSchema,ze as FeatureProbeStatusSchema,we as FrameInputSchema,_o as GetStreamWithCodecInputSchema,cc as GlobalMetricsSchema,cm as HF_BASE_URL,Wl as HF_REPO,Rp as HWACCEL_OPTIONS,Ld as HealthStatusSchema,Fe as HistoryPointSchema,Ts as HistoryResolutionEnum,ml as InstalledPackageSchema,Qe as IntegrationLiteSchema,Ka as IntegrationWithStateSchema,ad as IntercomAbilitySchema,Ua as IntercomStatusSchema,Wm as KNOWN_CAP_NAMES,ii as LocationStatSchema,fa as LogEntrySchema,fn as LogLevelSchema,kl as LogStreamEntrySchema,Nm as MACRO_LABELS,Hm as METHOD_ACCESS_MAP,oo as MODEL_FORMATS,Ra as MediaFileSchema,Cd as MeshPeerSchema,Nd as MeshStatusSchema,be as MethodAccessSchema,Go as MotionAnalysisResultSchema,yr as MotionEventSchema,Cs as MotionOnMotionChangedDataSchema,De as MotionRegionSchema,xt as MotionSourceEnum,bs as MotionSourcesSchema,la as MotionStatusSchema,Ns as MotionTriggerRuntimeStateSchema,mn as MotionTriggerStatusSchema,ka as MqttBrokerStatusSchema,Mn as NativeDetectionSchema,ft as NativeObjectClassEnum,od as NativeObjectDetectionStatusSchema,Bc as NetworkAccessStatusSchema,_d as NetworkAddressSchema,xe as NetworkEndpointSchema,Gc as NotificationHistoryEntrySchema,Ea as NotificationRuleSchema,Hc as NotificationSchema,Sr as ObjectEventSchema,Mp as OrchestratorMetricsSchema,Yr as OsdOverlayKindEnum,Jr as OsdOverlayPatchSchema,Qr as OsdOverlaySchema,St as OsdPositionEnum,_a as OsdStatusSchema,Nl as PIPELINE_FLOW_CAPABILITY_NAMES,Up as PIPELINE_OWNER_CAPABILITY_NAMES,Gm as PROVIDER_KIND_CAP_NAMES,Gl as PYTHON_SCRIPT,ul as PackageUpdateSchema,gl as PackageVersionInfoSchema,vi as PasskeySummarySchema,Re as PcmSampleFormatSchema,mt as PerScopeBreakdownSchema,Na as PipelineAssignmentSchema,lt as PipelineDefaultStepSchema,D as PipelineEngineChoiceSchema,da as PipelineRunResultBridge,ee as PipelineStepInputSchema,Dp as PlaceholderReasonSchema,fs as PolygonPointSchema,st as ProfileSlotSchema,ke as ProfileSlotStatusSchema,Rs as ProviderStatusSchema,Ms as PtzAutotrackRuntimeStateSchema,pt as PtzAutotrackSettingsSchema,Ae as PtzAutotrackStatusSchema,Ds as PtzAutotrackTargetOptionSchema,La as PtzMoveCommandSchema,za as PtzPositionSchema,zr as PtzPresetSchema,ya as QueryFilterSchema,sm as RECOGNITION_TYPES,rm as RUNTIME_DEFAULTS,Vl as RUNTIME_TO_FORMAT,jp as ReadinessRegistry,ql as ReadinessTimeoutError,Xi as RegisteredStreamSchema,Is as ReportMotionInputSchema,Ym as RingBuffer,Uo as RtpSourceSchema,it as RtspRestreamEntrySchema,ks as RunnerCameraConfigSchema,Ep as RunnerCameraDeviceUIFields,ln as RunnerLocalLoadSchema,ws as RunnerLocalMetricsSchema,Vm as SCOPE_PRESETS,fp as STORAGE_LOCATION_CARDINALITY,Yp as STORAGE_LOCATION_TYPES,zl as STREAM_QUALITY_LABELS,om as SUB_DETECTION_TYPES,Km as SYSTEM_CAP_NAMES,_p as ScopedTokenSchema,kt as ScopedTokenSummarySchema,hl as SearchResultSchema,Fr as SegmentSchema,Si as SendEmailInputSchema,fi as SendEmailResultSchema,ga as SettingsPatchSchema,Sa as SettingsRecordSchema,Q as SettingsSchemaWithValuesSchema,ha as SettingsUpdateResultSchema,Ia as SmtpStatusSchema,An as SnapshotImageSchema,Ko as SpatialDetectionSchema,ba as SsoBridgeClaimsSchema,Di as StartEmbeddedInputSchema,Zs as StorageAbortUploadInputSchema,Ys as StorageBeginDownloadInputSchema,Qs as StorageBeginDownloadResultSchema,Ks as StorageBeginUploadInputSchema,Vs as StorageBeginUploadResultSchema,Xs as StorageEndDownloadInputSchema,js as StorageFinalizeUploadInputSchema,L as StorageLocationRefSchema,x as StorageLocationSchema,X as StorageLocationTypeSchema,Ws as StorageProviderInfoSchema,Js as StorageReadChunkInputSchema,$s as StorageTestLocationResultSchema,Gs as StorageWriteChunkInputSchema,Et as StreamFormatSchema,To as StreamInfoSchema,Fd as StreamNetworkStatsSchema,No as StreamSourceEntrySchema,Pp as StreamSourceSchema,pa as SwitchStatusSchema,qr as SystemMetricsSchema,qm as SystemMirror,nl as TestConnectionResultSchema,$d as ToastSchema,H as TokenScopeSchema,jd as TopologyNodeSchema,Gd as TopologyProcessSchema,Vd as TopologyServiceSchema,Ve as TrackSchema,Rt as TrackStateSchema,wr as TrackedDetectionSchema,zc as TurnServerSchema,sl as UpdateIntegrationInputSchema,Ed as UpdateUserInputSchema,zp as UserRecordSchema,Ze as UserSummarySchema,so as WELL_KNOWN_TABS,Sp as WELL_KNOWN_TAB_MAP,nc as WebrtcStreamChoiceSchema,gt as WebrtcStreamTargetSchema,$i as WidgetHostEnum,bn as WidgetMetadataSchema,Aa as WidgetSizeEnum,mo as YAMNET_TO_MACRO,Ss as ZoneKindEnum,xs as ZoneRuleModeEnum,de as ZoneRuleSchema,ua as ZoneRuleStageEnum,Tp as ZoneRulesArraySchema,re as ZoneSchema,Es as ZoneScopeBreakdownSchema,td as accessoriesCapability,wp as accessoryStableId,Fi as addonPagesCapability,Wi as addonPagesSourceCapability,Qi as addonRoutesCapability,zs as addonSettingsCapability,Gi as addonWidgetsCapability,Ki as addonWidgetsSourceCapability,Cl as addonsCapability,gi as adminUiCapability,Zc as advancedNotifierCapability,Fs as alertsCapability,mm as asBoolean,dm as asJsonArray,$l as asJsonObject,pm as asNumber,lm as asString,gc as audioAnalysisCapability,uc as audioAnalyzerCapability,bc as audioCodecCapability,en as audioMetricsCapability,Rc as authProviderCapability,am as autoAssignProfiles,ci as backupCapability,tn as batteryCapability,Qm as bindAddonActions,an as brightnessCapability,Gp as buildAddonRouteProvider,jr as cameraCredentialsCapability,sn as cameraStreamsCapability,Xp as classifyStream,_l as classifyStreams,vm as cosineSimilarity,rp as createDeviceProxy,qn as createEvent,_n as createLazyTrpcSource,ip as createMirrorSource,Mm as createRuntimeStateBridge,T as createSliceHandle,Bm as createSystemProxy,zm as customAction,Ji as decoderCapability,Om as defineCustomActions,gr as detectionPipelineCapability,cn as deviceDiscoveryCapability,Li as deviceExportCapability,Tc as deviceManagerCapability,ho as deviceMatchesProfile,Kr as deviceOpsCapability,Sn as deviceProviderCapability,xc as deviceStateCapability,Pt as deviceStatusCapability,rn as doorbellCapability,kc as embeddingEncoderCapability,Zp as emitDownForOwnedCaps,Ml as emitReadiness,lo as errMsg,Rm as evaluateZoneRules,G as event,Ur as eventsCapability,Cp as expandCapMethods,Dt as featureProbeCapability,bm as formatForBackend,Im as formatForRuntime,Ip as getAudioMacroClassIds,jm as getCapsByProviderKind,hm as hfModelUrl,ta as hydrateSchema,cl as integrationsCapability,nd as intercomCapability,Wp as isAgentOnlyPlacement,Hp as isDeployableToAgent,Vp as isEvent,wd as localNetworkCapability,pi as logDestinationCapability,bp as mapAudioLabelToMacro,Zm as maskUrlCredentials,Pd as meshNetworkCapability,i as method,Or as metricsProviderCapability,pn as motionCapability,jo as motionDetectionCapability,un as motionTriggerCapability,Ei as mqttBrokerCapability,sd as nativeObjectDetectionCapability,Oc as networkAccessCapability,Wd as networkQualityCapability,tl as nodesCapability,Tl as normalizeAddonInitResult,Wc as notificationOutputCapability,Xr as osdCapability,tm as parseCameraStreamConfig,gm as parseJsonArray,um as parseJsonObject,On as parseJsonUnknown,Ar as pipelineAnalyticsCapability,ys as pipelineExecutorCapability,dc as pipelineOrchestratorCapability,As as pipelineRunnerCapability,yd as platformProbeCapability,gn as ptzAutotrackCapability,Lr as ptzCapability,km as pythonScriptForBackend,Je as readinessKey,Zr as rebootCapability,Hr as recordingCapability,ur as recordingEngineCapability,wm as requiresPython,Be as resolveAddonExecution,$p as resolveAddonGroup,Kp as resolveAddonPlacement,fm as resolveAddonRuntime,jl as resolveDetectionRuntime,Ap as resolveDeviceProfile,Sm as resolveModelFormat,tc as restreamerCapability,Am as runInferenceStep,le as scopeKey,li as settingsStoreCapability,bi as smtpProviderCapability,Uc as snapshotCapability,Fc as snapshotProviderCapability,hi as ssoBridgeCapability,Hs as storageCapability,ei as storageProviderCapability,Fo as streamBrokerCapability,Ll as streamPixels,Jp as streamQualityLabel,xo as streamingEngineCapability,hn as switchCapability,Ud as systemCapability,Jl as toDeviceSummary,em as toStreamSourceEntry,Kd as toastCapability,Lc as turnProviderCapability,zd as userManagementCapability,yi as userPasskeysCapability,ac as webrtcCapability,In as webrtcClientHintsSchema,oc as webrtcSessionCapability,xm as zodEntriesToConfigUI,vn as zoneAnalyticsCapability,yn as zoneRulesCapability,dn as zonesCapability};
|