@camstack/addon-admin-ui 0.1.24 → 0.1.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-CV-R_rHB.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-DlcNv4jc.js} +1 -1
  2. package/dist/assets/devices-Ccad-MYH.js +1 -0
  3. package/dist/assets/{hostInit-DcknmeNu.js → hostInit-BpDp2mzG.js} +1 -1
  4. package/dist/assets/index-CAlT1MNc.css +1 -0
  5. package/dist/assets/index-CO8Odo2q.js +1103 -0
  6. package/dist/assets/index-CaiMG86U.js +80 -0
  7. package/dist/assets/{index-F3MAsf-9.js → index-D9kg0e9y.js} +1 -1
  8. package/dist/assets/index-DDPTeM3J.js +80 -0
  9. package/dist/assets/index-DMrjJViX.js +1 -0
  10. package/dist/assets/{index-CvVlJEP5.js → index-DOXiszQ-.js} +1 -1
  11. package/dist/assets/{index-Dq_5fsAQ.js → index-DV9irWJe.js} +1 -1
  12. package/dist/assets/index-bCeHA7pg.js +1 -0
  13. package/dist/assets/index-ihiza8WC.js +1 -0
  14. package/dist/assets/index-vWF3glDx.js +1 -0
  15. package/dist/assets/index-zk-hwOKE.js +1 -0
  16. package/dist/assets/method-access-map-DAzkqn3U.js +1 -0
  17. package/dist/assets/{remoteEntry-D1zRuKvw.js → remoteEntry-DcLH2pUv.js} +1 -1
  18. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DItyrftX.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-CJWQPV3f.js} +2 -2
  19. package/dist/index.html +6 -6
  20. package/dist/mf-entry-bootstrap-0.js +2 -2
  21. package/dist/sw.js +1 -1
  22. package/package.json +1 -1
  23. package/dist/assets/auth-records-DLqosdE2.js +0 -1
  24. package/dist/assets/capability-router-map-UNVkwZU9.js +0 -1
  25. package/dist/assets/devices-BUM64diU.js +0 -1
  26. package/dist/assets/index-B95gHp6V.js +0 -1
  27. package/dist/assets/index-DVf1U7c4.js +0 -1
  28. package/dist/assets/index-De6hr8eY.js +0 -1
  29. package/dist/assets/index-DvrBfik_.js +0 -1
  30. package/dist/assets/index-agmLjvC2.js +0 -80
  31. package/dist/assets/index-bZcruxoE.js +0 -80
  32. package/dist/assets/index-k_vr1qwb.js +0 -1098
  33. package/dist/assets/index-uOUrSD7R.css +0 -1
@@ -0,0 +1 @@
1
+ import{o as t,a as l,_ as p,s as e,r as b,l as k,n as a,b as v,c as P,d as f,u as S,e as Xe,f as E,g as bt,h as x,t as Fa,i as _n,j as Ha,k as Un,Z as Fn,m as Hn,p as Wn,q as $n,v as jn,w as Gn,x as Wa,y as Vn,z as Kn}from"./schemas-XgIEoUz3.js";const Zn=["onnx","coreml","openvino","tflite","pt"],Yn=[{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}],Nl=Object.fromEntries(Yn.map(s=>[s.id,s]));function Qn(s){return s.type==="separator"||s.type==="info"||s.type==="button"||s.type==="object-array"||s.type==="widget"||s.type==="addon-action-button"}function Qt(s,o){return{...s.tabs?{tabs:[...s.tabs]}:{},sections:s.sections.map(n=>({...n,fields:n.fields.map(d=>et(d,o))}))}}function et(s,o){if(Qn(s))return s;if(s.type==="group"){const h=s.fields.map(w=>et(w,o));return{...s,fields:h}}if(s.type==="sub-tabs"){const h=s.tabs.map(w=>({...w,fields:w.fields.map(A=>et(A,o))}));return{...s,tabs:h}}const n=s.key,d=Object.prototype.hasOwnProperty.call(o,n)?o[n]:void 0,u=s.default;if(s.multiple){const h=Array.isArray(d)?d:d!=null?[d]:[],I=s.multiple.itemDefault!==void 0?s.multiple.itemDefault:u!==void 0?u:Jn(s)==="string"?"":null,w=Math.max(s.multiple.min,h.length),A=[];for(let N=0;N<w;N++)A.push(N<h.length?h[N]:I);return{...s,value:A}}const g=d!==void 0?d:u!==void 0?u:null,y=s.type==="textarea"&&s.isJson&&g!==null&&typeof g=="object"?JSON.stringify(g,null,2):g;return{...s,value:y}}function Jn(s){switch(s.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=f(["data","media","recordings","recordings-high","recordings-low","recordings-clips","event-images","models","cache","logs","addons-data","backups"]),Pl={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"},R=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(),S()),isDefault:v().default(!1),isSystem:v().default(!1),createdAt:a(),updatedAt:a()}),L=E([X,e().regex(/^[a-z][a-z0-9-]*:[a-z0-9-]+$/)]),Xn=t({inputFps:a(),outputFps:a(),avgDecodeTimeMs:a(),droppedFrames:a()}),Jt=t({codec:e(),maxFps:a().default(0),outputFormat:f(["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 ei(s){return s instanceof Error?s.message:typeof s=="string"?s:String(s)}const ti=[{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:"🤫"}],ai={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},ni={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},It=new Map;for(const[s,o]of Object.entries(ai.mapping))It.set(s.toLowerCase(),o);for(const[s,o]of Object.entries(ni.mapping))It.set(s.toLowerCase(),o);function Dl(s){return It.get(s.toLowerCase())??null}function Ml(){return ti.map(s=>s.id)}var C=(s=>(s.Camera="camera",s.Hub="hub",s.Light="light",s.Siren="siren",s.Switch="switch",s.Sensor="sensor",s.Thermostat="thermostat",s.Button="button",s.Generic="generic",s))(C||{}),$a=(s=>(s.BatteryOperated="battery-operated",s.Rebootable="rebootable",s.NativeSnapshot="native-snapshot",s.DoorbellButton="doorbell-button",s.TwoWayAudio="two-way-audio",s.PanTiltZoom="pan-tilt-zoom",s.PtzAutotrack="ptz-autotrack",s.MotionTrigger="motion-trigger",s))($a||{}),ii=(s=>(s.ChargingDC="charging-dc",s.ChargingSolar="charging-solar",s.NotCharging="not-charging",s))(ii||{}),_=(s=>(s.Siren="siren",s.Floodlight="floodlight",s.Spotlight="spotlight",s.PirSensor="pir-sensor",s.Chime="chime",s.Autotrack="autotrack",s.Nightvision="nightvision",s.PrivacyMask="privacy-mask",s.Doorbell="doorbell",s))(_||{});const F={Siren:_.Siren,Floodlight:_.Floodlight,Spotlight:_.Spotlight,PirSensor:_.PirSensor,Chime:_.Chime,Autotrack:_.Autotrack,Nightvision:_.Nightvision,PrivacyMask:_.PrivacyMask},El={[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 Tl(s,o,n){const d=`${s}:${o}`;return typeof n=="number"?`${d}:${n}`:d}function oi(s,o){return!s||s.length===0?!1:s.includes(o.when.hasFeature)}const si={id:"battery",label:"Battery-operated camera",when:{hasFeature:$a.BatteryOperated},defaults:{audioMode:"disabled",detectionMode:"on-motion"},settings:{"snapshot.minRefreshIntervalSec":3600,"streamBroker.preBufferEnabled":!1}},ri=[si];function Rl(s){for(const o of ri)if(oi(s,o))return o;return null}const xe=t({online:v(),lastChangedAt:a()}),kt={name:"device-status",scope:"device",mode:"singleton",methods:{},events:{onStatusChanged:{data:t({deviceId:a(),status:xe})}},status:{schema:xe,kind:"push"},runtimeState:xe},Be=t({flags:b(e(),S()),deviceType:e().nullable(),model:e().nullable(),channelCount:a().nullable(),lastProbedAt:a(),lastFetchedAt:a()}),wt={name:"feature-probe",scope:"device",mode:"singleton",methods:{},events:{onProbeChanged:{data:t({deviceId:a(),status:Be})}},status:{schema:Be,kind:"push"},runtimeState:Be},ci=t({id:e(),title:e(),description:e().optional(),style:f(["card","accordion"]).optional(),defaultCollapsed:v().optional(),columns:E([k(1),k(2),k(3),k(4)]).optional(),tab:e().optional(),location:f(["settings","top-tab"]).optional(),order:a().optional(),fields:l(Ha())}),di=t({id:e(),label:e(),icon:e(),order:a().optional()}),li=t({tabs:l(di).optional(),sections:l(ci)}),Xt=li.nullable(),ui={getDeviceSettingsContribution:{input:t({deviceId:a()}),output:Xt,kind:"query",auth:"protected"},getDeviceLiveContribution:{input:t({deviceId:a()}),output:Xt,kind:"query",auth:"protected"},applyDeviceSettingsPatch:{input:t({deviceId:a(),patch:b(e(),S())}),output:t({success:k(!0)}),kind:"mutation",auth:"admin"}},mi={getStatus:{input:t({deviceId:a()}),output:S().nullable(),kind:"query",auth:"protected"}};function xl(s){let o=s.methods;return s.exposesDeviceSettings&&(o={...ui,...o}),s.status&&(o={...mi,...o}),o}function r(s,o,n){return{input:s,output:o,kind:n?.kind??"query",auth:n?.auth??"protected",...n?.access!==void 0?{access:n.access}:{},timeoutMs:n?.timeoutMs}}function V(s){return{data:s}}const pi=t({className:e(),hits:a().int().nonnegative(),avgScore:a().min(0).max(1),peakScore:a().min(0).max(1)}),ea=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(pi).readonly()}),gi=t({ts:a().int(),dbfs:a().nullable(),peakDbfs:a(),avgDbfs:a(),topClass:e().nullable(),topScore:a().min(0).max(1).nullable()}),hi=t({points:l(gi).readonly(),effectiveSampleEveryMs:a().int().positive(),windowMsActual:a().int().nonnegative()}),ja={name:"audio-metrics",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getCurrentSnapshot:r(t({deviceId:a()}),ea.nullable()),getHistory:r(t({deviceId:a(),windowSec:a().int().positive().optional(),sampleEveryMs:a().int().positive().optional()}),hi)},runtimeState:ea},Oe=t({percentage:a().min(0).max(100),charging:f(["dc","solar","none"]),sleeping:v(),lastUpdated:a()}),Ga={name:"battery",scope:"device",mode:"singleton",deviceTypes:[C.Camera,C.Sensor,C.Button,C.Switch],methods:{},events:{onStatusChanged:{data:t({deviceId:a(),status:Oe})}},status:{schema:Oe,kind:"push"},runtimeState:Oe},ta=t({percentage:a().min(0).max(100),lastChangedAt:a()}),Va={name:"brightness",scope:"device",mode:"singleton",deviceTypes:[C.Light],methods:{setBrightness:r(t({deviceId:a().int().nonnegative(),percentage:a().min(0).max(100)}),p(),{kind:"mutation",auth:"admin"})},events:{onBrightnessChanged:{data:t({deviceId:a(),percentage:a().min(0).max(100),lastChangedAt:a()})}},status:{schema:ta,kind:"command-driven"},runtimeState:ta},$=f(["high","mid","low"]),Bl=["high","mid","low"],Ka=f(["pull-rtsp","pull-rtmp","pull-http","pull-rfc4571","push-annexb"]),At=t({width:a().int().positive(),height:a().int().positive()}),tt=t({camStreamId:e().min(1),deviceId:a().int().nonnegative(),kind:Ka,url:e().optional(),codec:e().optional(),resolution:At.optional(),fps:a().positive().optional(),label:e().optional(),deviceFeatures:l(e()).optional(),autoEligible:v().optional(),metadata:b(e(),S()).optional()}),be=f(["unassigned","idle","connecting","streaming","error"]),at=t({deviceId:a().int().nonnegative(),profile:$,brokerId:e(),sourceCamStreamId:e().nullable(),status:be,resolution:At.optional(),codec:e().optional(),preBufferSec:a().nonnegative().optional(),errorMessage:e().optional()}),vi=t({id:e(),label:e(),protocol:f(["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:f(["high","mid","low"]).optional()}),Ol=t({type:e(),url:e(),videoCodec:e().optional(),audioCodec:e().optional(),metadata:b(e(),S()).readonly().optional()}),yi=t({type:f(["video","audio"]),data:P(Uint8Array),pts:a(),dts:a(),keyframe:v(),codec:e()}),fi=t({data:P(Uint8Array),width:a(),height:a(),format:f(["jpeg","rgb","bgr","yuv420","gray"]),timestamp:a()}),Si=f(["idle","connecting","streaming","error","stopped"]),bi=t({status:Si,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:v()}).nullable().optional()}),Ct=f(["webrtc","hls","mjpeg","rtsp"]),Ii=t({streamId:e(),format:Ct,url:e().nullable(),active:v()}),ki={name:"streaming-engine",scope:"system",mode:"singleton",internal:!0,methods:{registerStream:r(t({streamId:e(),sourceUrl:e(),codec:e().optional()}),p(),{kind:"mutation"}),unregisterStream:r(t({streamId:e()}),p(),{kind:"mutation"}),getStreamUrl:r(t({streamId:e(),format:Ct}),e().nullable()),listStreams:r(p(),l(Ii))}},nt=t({brokerId:e(),url:e(),mutedUrl:e(),enabled:v()}),wi=t({sessionId:e(),remoteAddr:e(),playing:v(),muted:v(),connectedAt:a(),lastRtpAt:a(),bytesSent:a()}),Ai=t({tag:e(),subscribedAt:a(),maxFps:a(),framesDelivered:a(),framesDropped:a()}),Ci=t({tag:e(),subscribedAt:a(),chunksDelivered:a()}),Ni=t({rtsp:l(wi).readonly(),decoded:l(Ai).readonly(),audio:l(Ci).readonly(),pipeClients:a(),encodedSubscribers:a()}),ql=f(["reconnecting","sleeping","offline","disabled","waking"]),Pi={name:"stream-broker",scope:"system",mode:"singleton",exposesDeviceSettings:!0,methods:{publishCameraStream:r(t({deviceId:a().int().nonnegative(),camStreamId:e().min(1),kind:Ka,url:e().optional(),codec:e().optional(),resolution:At.optional(),fps:a().positive().optional(),label:e().optional(),deviceFeatures:l(e()).optional(),autoEligible:v().optional(),metadata:b(e(),S()).optional()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),retractCameraStream:r(t({deviceId:a().int().nonnegative(),camStreamId:e().min(1)}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),assignProfile:r(t({deviceId:a().int().nonnegative(),profile:$,camStreamId:e().min(1)}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),unassignProfile:r(t({deviceId:a().int().nonnegative(),profile:$}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),listAllCameraStreams:r(p(),l(tt).readonly()),listAllProfileSlots:r(p(),l(at).readonly()),getBrokerStats:r(t({brokerId:e()}),bi),listClients:r(t({brokerId:e()}),Ni),killClient:r(t({brokerId:e(),channel:f(["rtsp","decoded","audio"]),handle:e()}),t({killed:v()}),{kind:"mutation",auth:"admin"}),restartProfile:r(t({deviceId:a().int().nonnegative(),profile:$}),t({success:v()}),{kind:"mutation",auth:"admin"}),getStreamUrl:r(t({streamId:e(),format:Ct}),t({url:e()})),getBroker:r(t({brokerId:e()}),x()),setPreBufferDuration:r(t({brokerId:e(),seconds:a().min(0).max(30)}),p(),{kind:"mutation",auth:"admin"}),getPreBufferInfo:r(t({brokerId:e()}),t({configuredSec:a(),bufferedMs:a(),packetCount:a()})),getRtspPort:r(p(),a()),getAllRtspEntries:r(t({hostname:e().optional()}),l(nt).readonly()),getRtspEntry:r(t({brokerId:e(),hostname:e().optional()}),nt.nullable()),regenerateRtspToken:r(t({brokerId:e()}),e().nullable(),{kind:"mutation",auth:"admin"}),setRtspEnabled:r(t({brokerId:e(),enabled:v()}),p(),{kind:"mutation",auth:"admin"}),isRtspEnabled:r(t({brokerId:e()}),v())},events:{onCamStreamDemand:V(t({deviceId:a().int().nonnegative(),camStreamId:e(),profile:$})),onCamStreamIdle:V(t({deviceId:a().int().nonnegative(),camStreamId:e()})),onRequestStreamSourceRefresh:V(t({deviceId:a().int().nonnegative(),camStreamId:e(),brokerId:e()}))}},Za={name:"camera-streams",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getCameraStreams:r(t({deviceId:a().int().nonnegative()}),l(tt).readonly()),getBrokerStreams:r(t({deviceId:a().int().nonnegative()}),l(at).readonly()),getRtspEntries:r(t({deviceId:a().int().nonnegative(),hostname:e().optional()}),l(nt).readonly())},events:{onCamStreamsChanged:V(t({deviceId:a().int().nonnegative(),camStreams:l(tt).readonly()})),onProfileSlotsChanged:V(t({deviceId:a().int().nonnegative(),profileSlots:l(at).readonly()}))},runtimeState:t({online:v(),slotStatuses:t({high:be.optional(),mid:be.optional(),low:be.optional()}),slotErrors:t({high:e().optional(),mid:e().optional(),low:e().optional()}),lastChangedAt:a()})},Di=f(["online","sleeping","offline","unknown"]),it=t({childNativeId:e(),name:e(),type:f(C),status:Di,metadata:t({model:e().optional(),serialNumber:e().optional(),uid:e().optional(),rtspChannel:a().int().nonnegative().optional(),isBattery:v().optional(),isDoorbell:v().optional(),isMultifocal:v().optional()}).default({}),alreadyAdopted:v(),adoptedDeviceId:a().int().nonnegative().nullable()}),aa=t({discovered:l(it),lastDiscoveryAt:a().int().nonnegative().nullable(),lastError:e().nullable()}),Ya={name:"device-discovery",scope:"device",mode:"singleton",deviceTypes:[C.Hub],status:{schema:aa,kind:"poll"},runtimeState:aa.extend({lastFetchedAt:a().int().nonnegative()}),methods:{listDiscovered:r(t({deviceId:a().int().nonnegative()}),l(it).readonly()),refreshDiscovery:r(t({deviceId:a().int().nonnegative()}),l(it).readonly(),{kind:"mutation",auth:"admin"}),adoptDevice:r(t({deviceId:a().int().nonnegative(),childNativeId:e(),name:e().optional()}),t({deviceId:a().int().nonnegative(),stableId:e()}),{kind:"mutation",auth:"admin"}),releaseDevice:r(t({deviceId:a().int().nonnegative(),childDeviceId:a().int().nonnegative()}),p(),{kind:"mutation",auth:"admin"})}},na=t({lastPressedAt:a().nullable(),pressCountSinceStart:a()}),Mi=t({deviceId:a(),timestamp:a()}),Qa={name:"doorbell",scope:"device",mode:"singleton",deviceTypes:[C.Button],methods:{},events:{onPressed:{data:Mi}},status:{schema:na,kind:"push"},runtimeState:na},Ei=f(["jpeg","rgb","bgr","yuv420","gray"]),Ie=t({data:x(),format:Ei,width:a(),height:a(),timestamp:a()}),te=t({x:a(),y:a(),w:a(),h:a()}),Ti=t({class:e(),originalClass:e(),score:a(),bbox:te}),ia=t({data:P(Float32Array),sampleRate:a(),channels:a(),timestamp:a(),deviceId:a().optional()}),Ri=t({rms:a(),dbfs:a()}),ot=t({className:e(),originalClass:e().optional(),score:a()}),Ne=t({bbox:te,pixelCount:a(),intensity:a()}),xi=t({detected:v(),regionCount:a(),regions:l(Ne).readonly(),rawRegions:l(Ne).readonly(),frameWidth:a(),frameHeight:a(),analysisMs:a()}),Bi={name:"motion-detection",scope:"device",mode:"singleton",exposesDeviceSettings:!0,methods:{analyze:r(t({deviceId:a(),frame:Ie}),xi,{kind:"mutation"}),removeCamera:r(t({deviceId:a()}),p(),{kind:"mutation"}),reset:r(p(),p(),{kind:"mutation"})},events:{onMotion:{data:t({deviceId:a(),detected:v(),regionCount:a()})}}},zl=t({activeCameras:a(),throttledCameras:a(),avgInferenceTimeMs:a(),queueDepth:a()}),Nt=t({detectionMode:f(["disabled","always-on","on-motion"]),configuredFps:a(),actualFps:a(),queueDepth:a(),avgInferenceTimeMs:a(),droppedFrames:a(),phase:f(["idle","watching","active"])}),Oi=Nt.extend({deviceId:a()}),st=f(["onnx","coreml","openvino","tflite","pt"]),pe=f(["detector","cropper","classifier","refiner","audio-classifier"]),D=t({runtime:f(["node","python"]),backend:e(),format:st,device:e().optional()}),qi=t({id:e(),label:e(),description:e().optional()}),zi=t({engine:D,devices:l(qi).readonly(),defaultDevice:e()}),rt=bt(()=>t({addonId:e(),addonName:e(),slot:pe,inputClasses:l(e()).readonly(),outputClasses:l(e()).readonly(),enabled:v(),modelId:e(),children:l(rt).readonly(),engine:D.optional(),group:e().optional(),settings:b(e(),S()).optional()})),Pe=bt(()=>t({addonId:e(),enabled:v(),modelId:e(),children:l(Pe).readonly(),settings:b(e(),S()).optional()})),qe=t({id:e(),name:e(),createdAt:e(),updatedAt:e(),engine:D,steps:l(Pe).readonly()}),Li=t({id:e(),name:e(),formats:b(e(),t({downloaded:v(),sizeMB:a()}))}),_i=x(),Ui=t({id:e(),name:e(),slot:pe,inputClasses:l(e()).readonly(),outputClasses:l(e()).readonly(),childSlots:l(pe).readonly(),models:l(Li).readonly(),defaultModelId:e(),defaultModelIdByFormat:b(e(),e()).optional(),enabledByDefault:v().optional(),defaultConfidence:a(),group:e().optional(),configSchema:l(_i).readonly().optional()}),Fi=t({id:pe,label:e(),priority:a(),parentSlot:pe.nullable(),addons:l(Ui).readonly()}),Hi=t({availableEngines:l(zi).readonly(),selectedEngine:D,slots:l(Fi).readonly()}),Wi=t({detections:l(Ti).readonly(),inferenceMs:a(),modelId:e()}),ee=bt(()=>t({addonId:e(),modelId:e(),enabled:v().default(!0),children:l(ee).optional(),settings:b(e(),S()).optional()})),$i=t({filename:e(),stepIds:l(e()).readonly().optional()}),ji=t({base64:e(),filename:e()}),Gi=t({filename:e(),sizeKb:a()}),Vi=t({base64:e()}),Ki=t({id:e(),name:e(),description:e(),available:v(),rawLabels:l(e()).readonly().optional()}),Zi=t({activeBackend:e(),availableBackends:l(Ki).readonly(),sampleRate:a(),chunkDurationMs:a()}),Yi=t({filePath:e(),sizeMB:a(),durationMs:a()}),Qi=t({success:v(),error:e().optional(),frame:x().optional()}),Ji=x(),Xi=x(),eo=x(),to=x(),ao=x(),oa=x(),no={name:"pipeline-executor",scope:"system",mode:"singleton",methods:{getAvailableEngines:r(p(),l(D)),getSelectedEngine:r(p(),D),getDefaultSteps:r(D,l(rt)),reprobeEngine:r(p(),D,{kind:"mutation",auth:"admin"}),getVideoPipelineSteps:r(p(),b(e(),t({modelId:e(),settings:b(e(),S()).readonly()}))),setVideoPipelineSteps:r(t({steps:b(e(),t({modelId:e(),settings:b(e(),S()).readonly()}))}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),getSchema:r(p(),Hi),getGlobalSteps:r(p(),l(rt).readonly().nullable()),getGlobalPipelineConfig:r(p(),Ji),getOrchestratorConfigSchema:r(p(),Xi),listTemplates:r(p(),l(qe).readonly()),saveTemplate:r(t({name:e(),steps:l(Pe).readonly(),engine:D}),qe,{kind:"mutation"}),updateTemplate:r(t({id:e(),name:e().optional(),steps:l(Pe).readonly().optional()}),qe,{kind:"mutation"}),deleteTemplate:r(t({id:e()}),p(),{kind:"mutation"}),getCapabilities:r(p(),to),getAddonModels:r(t({addonId:e()}),ao),downloadModel:r(t({addonId:e(),modelId:e(),format:st}),Yi,{kind:"mutation"}),deleteModel:r(t({addonId:e(),modelId:e(),format:st}),t({success:k(!0)}),{kind:"mutation"}),detect:r(t({addonId:e(),frame:Ie,config:b(e(),S()).optional()}),Wi),runPipeline:r(t({engine:D.optional(),steps:l(ee).min(1),frame:Ie.optional(),imageBase64:e().optional(),image:P(Uint8Array).optional(),referenceImage:e().optional(),deviceId:a().optional(),sessionId:e().optional()}),oa,{kind:"mutation"}),runPipelineBatch:r(t({engine:D.optional(),steps:l(ee).min(1),frames:l(Ie).min(1).max(255),deviceId:a().optional(),sessionId:e().optional()}),t({results:l(oa).readonly()}),{kind:"mutation"}),cacheFrameInPool:r(t({data:P(Uint8Array),width:a().int().positive(),height:a().int().positive(),format:f(["rgb","bgr","gray"])}),t({frameId:a(),width:a(),height:a()}),{kind:"mutation"}),inferCached:r(t({stepId:e(),frameId:a().int()}),b(e(),S()),{kind:"mutation"}),uncacheFrame:r(t({frameId:a().int()}),p(),{kind:"mutation"}),getEffectiveTuning:r(p(),t({batchMode:e(),windowMs:a(),maxBatchSize:a(),concurrency:a()})),listLoadedEngines:r(p(),l(t({engineKey:e(),engine:D,modelsLoaded:l(e()).readonly(),inUseByCameras:l(a()).readonly(),kind:f(["runtime","warm-override"]),poolPid:a().nullable(),idleMs:a().nullable(),idleTtlMs:a().nullable()})).readonly()),spinEngine:r(t({engine:D}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),killEngine:r(t({engine:D,force:v().optional()}),t({success:v(),reason:e().optional()}),{kind:"mutation",auth:"admin"}),listReferenceImages:r(p(),l($i).readonly()),getReferenceImage:r(t({filename:e()}),ji.nullable()),getReferenceAudioFiles:r(p(),l(Gi).readonly()),getReferenceAudio:r(t({filename:e()}),Vi.nullable()),getAudioCapabilities:r(p(),Zi),runAudioTest:r(t({addonId:e(),modelId:e(),filename:e().optional(),settings:b(e(),S()).optional()}),Qi,{kind:"mutation"}),getDetectionConfigSchema:r(p(),eo)}},io=f(["polygon","tripwire"]),oo=t({x:a(),y:a()}),ce=t({id:e(),name:e(),kind:io.default("polygon"),polygon:l(oo).readonly(),color:e().default("#3b82f6")}),Ja={name:"zones",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{listZones:r(t({deviceId:a()}),l(ce).readonly()),addZone:r(t({deviceId:a(),zone:ce}),p(),{kind:"mutation",auth:"admin"}),removeZone:r(t({deviceId:a(),zoneId:e()}),p(),{kind:"mutation",auth:"admin"}),updateZone:r(t({deviceId:a(),zone:ce}),p(),{kind:"mutation",auth:"admin"})},runtimeState:t({zones:l(ce).readonly()})},Q={min:0,max:6e4,default:3e4,step:500},j={min:1,max:30,default:4,step:1},G={min:1,max:30,default:10,step:1},Pt=f(["onboard","analyzer"]),so=l(Pt),ro=t({deviceId:a(),detected:v(),source:Pt.default("analyzer"),regions:l(Ne).readonly().optional()}),co=t({deviceId:a(),detectionMode:f(["disabled","always-on","on-motion"]).default("on-motion"),audioMode:f(["disabled","always-on","on-motion"]).default("always-on"),motionCooldownMs:a().min(Q.min).default(Q.default),motionFps:a().min(j.min).max(j.max).default(j.default),detectionFps:a().min(G.min).max(G.max).default(G.default),motionStreamId:e(),detectionStreamId:e(),motionSources:so.default(["analyzer"]),pipelineEnabled:v().default(!0),engine:D.optional(),steps:l(ee).readonly().optional(),audio:t({engine:D,modelId:e(),enabled:v()}).nullable().optional(),zones:l(ce).readonly().default([])}),Ll=[{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:j.min,max:j.max,step:j.step,default:j.default,showValue:!0,unit:"fps",showWhen:{field:"motionSources",includes:"analyzer"}},{key:"detectionFps",type:"slider",label:"Detection FPS",min:G.min,max:G.max,step:G.step,default:G.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:Q.min,max:Q.max,step:Q.step,default:Q.default,showValue:!0,unit:"s",displayScale:1e3}],Xa=t({nodeId:e(),attachedCameras:a(),activeCameras:a(),avgInferenceFps:a(),avgInferenceTimeMs:a(),queueDepthTotal:a(),hardware:t({hasGpu:v(),inferenceBackend:e().optional(),cpuCores:a().optional()})}),lo=t({nodeId:e(),activeCameras:a(),throttledCameras:a(),avgInferenceTimeMs:a(),queueDepth:a()}),uo={name:"pipeline-runner",scope:"system",mode:"singleton",methods:{attachCamera:r(co,t({success:k(!0)}),{kind:"mutation"}),detachCamera:r(t({deviceId:a()}),t({success:k(!0)}),{kind:"mutation"}),reportMotion:r(ro,t({success:k(!0)}),{kind:"mutation"}),getLocalLoad:r(p(),Xa),getLocalMetrics:r(p(),lo),getCameraMetrics:r(t({deviceId:a()}),Nt.nullable()),getAllCameraMetrics:r(p(),l(Oi).readonly()),getLocalCameras:r(p(),l(a()).readonly())}},sa=t({detected:v(),lastDetectedAt:a().nullable(),autoClearAfterMs:a().nullable()}),mo=t({deviceId:a(),detected:v(),timestamp:a(),source:Pt,regions:l(Ne).readonly().optional()}),en={name:"motion",scope:"device",mode:"singleton",deviceTypes:[C.Camera,C.Sensor],methods:{isDetected:r(t({deviceId:a()}),v())},events:{onMotionChanged:{data:mo}},status:{schema:sa,kind:"push"},runtimeState:sa},tn=t({enabled:v(),lastChangedAt:a()}),po=tn.extend({lastFetchedAt:a()}),an={name:"motion-trigger",scope:"device",mode:"singleton",deviceTypes:[C.Light,C.Siren,C.Switch],methods:{setMotionTrigger:r(t({deviceId:a().int().nonnegative(),enabled:v()}),p(),{kind:"mutation",auth:"admin"})},events:{onMotionTriggerChanged:{data:t({deviceId:a(),enabled:v(),lastChangedAt:a()})}},status:{schema:tn,kind:"command-driven"},runtimeState:po},go=e().describe("Vendor target string (people/vehicle/pet); empty = camera default"),ct=t({targetType:go,stopDelaySeconds:a().int().min(0).max(300),disappearDelaySeconds:a().int().min(0).max(300)}),ho=t({value:e(),label:e()}),ke=t({enabled:v(),lastChangedAt:a(),currentSettings:ct.nullable(),supportedTargetTypes:l(ho)}),vo=ke.extend({lastFetchedAt:a()}),nn={name:"ptz-autotrack",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getStatus:r(t({deviceId:a()}),ke),setEnabled:r(t({deviceId:a(),enabled:v()}),p(),{kind:"mutation"}),getSettings:r(t({deviceId:a()}),ct.nullable()),setSettings:r(t({deviceId:a(),settings:ct.partial()}),p(),{kind:"mutation"})},events:{onStatusChanged:{data:t({deviceId:a(),status:ke})}},status:{schema:ke,kind:"command-driven"},runtimeState:vo},ra=t({on:v(),lastChangedAt:a()}),on={name:"switch",scope:"device",mode:"singleton",deviceTypes:[C.Switch,C.Siren,C.Light],methods:{setState:r(t({deviceId:a(),on:v()}),p(),{kind:"mutation",auth:"admin"})},events:{onStateChanged:{data:t({deviceId:a(),on:v(),lastChangedAt:a()})}},status:{schema:ra,kind:"command-driven"},runtimeState:ra,settings:{bindings:[{kind:"scalar",statusPath:"on",method:"setState",valueArg:"on",field:{label:"On",kind:"boolean"}}]}},dt=t({totalObjects:a().int().nonnegative(),byClass:b(e(),a().int().nonnegative())}),yo=dt.extend({zoneId:e(),zoneName:e(),trackIds:l(e()).readonly()}),ca=t({ts:a().int(),frameWidth:a().int().nonnegative(),frameHeight:a().int().nonnegative(),zones:l(yo).readonly(),frame:dt,unzoned:dt}),fo=f(["minute","5min","hour"]),ze=t({from:a().int(),to:a().int(),resolution:fo}),Le=t({ts:a().int(),count:a().int().nonnegative()}),sn={name:"zone-analytics",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getCurrentSnapshot:r(t({deviceId:a()}),ca.nullable()),getZoneHistory:r(t({deviceId:a(),zoneId:e(),className:e().optional()}).extend(ze.shape),l(Le).readonly()),getCameraHistory:r(t({deviceId:a(),className:e().optional()}).extend(ze.shape),l(Le).readonly()),getUnzonedHistory:r(t({deviceId:a(),className:e().optional()}).extend(ze.shape),l(Le).readonly())},runtimeState:ca},So=f(["include","exclude"]),de=t({id:e(),name:e().optional(),zoneIds:l(e()).min(1).readonly(),mode:So,classFilter:l(e()).readonly().optional(),overlapThreshold:a().min(0).max(1).optional(),bboxInclusionPct:a().min(0).max(100).optional(),preferMask:v().optional(),enabled:v().default(!0)}),_l=l(de).readonly(),da=f(["motion","detection"]),rn={name:"zone-rules",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{listRules:r(t({deviceId:a(),stage:da}),l(de).readonly()),setRules:r(t({deviceId:a(),stage:da,rules:l(de).readonly()}),p(),{kind:"mutation",auth:"admin"})},runtimeState:t({motion:l(de).readonly(),detection:l(de).readonly()})},bo=t({connected:v(),deviceCount:a(),error:e().optional()}),Ul=t({externalId:e(),name:e(),type:e(),metadata:b(e(),S()).optional()}),De=t({stableId:e(),type:f(C),suggestedName:e(),prefilledConfig:b(e(),S())}),Me=t({id:a(),stableId:e(),addonId:e(),type:e(),name:e(),parentDeviceId:a().nullable(),online:v(),features:l(e()),config:b(e(),S())}),lt=t({status:f(["ok","error"]),labels:l(e()).optional(),error:e().optional()}),Io=S(),cn={name:"device-provider",scope:"system",mode:"collection",methods:{start:r(p(),p(),{kind:"mutation"}),stop:r(p(),p(),{kind:"mutation"}),getStatus:r(p(),bo),getDevices:r(p(),l(t({id:e(),name:e(),type:e()}))),supportsDiscovery:r(t({}),v()),discoverDevices:r(t({}),l(De),{kind:"mutation",auth:"admin"}),adoptDiscoveredDevice:r(t({candidate:De}),Me,{kind:"mutation",auth:"admin"}),supportsManualCreation:r(t({}),v()),getChildCreationSchema:r(t({type:f(C)}),Io),createDevice:r(t({type:f(C),config:b(e(),S())}),Me,{kind:"mutation",auth:"admin"}),testCreationField:r(t({type:f(C),key:e(),value:S(),formValues:b(e(),S()).optional()}),lt,{kind:"mutation",auth:"admin"})}},ko=t({id:e(),label:e(),icon:e(),order:a().optional()}),wo=t({id:e(),title:e(),description:e().optional(),style:f(["card","accordion"]).optional(),defaultCollapsed:v().optional(),columns:E([k(1),k(2),k(3),k(4)]).optional(),tab:e().optional(),location:f(["settings","top-tab"]).optional(),order:a().optional(),fields:l(Ha())}),J=t({tabs:l(ko).optional(),sections:l(wo)}),la=b(e(),S()),ua=t({success:k(!0)}),Ao={name:"addon-settings",scope:"system",mode:"singleton",nodeIdMode:"data",methods:{getGlobalSettings:r(t({addonId:e(),nodeId:e().optional(),overlay:b(e(),S()).optional()}),J.nullable()),updateGlobalSettings:r(t({addonId:e(),nodeId:e().optional(),patch:la}),ua,{kind:"mutation",auth:"admin"}),getDeviceSettings:r(t({addonId:e(),deviceId:a(),nodeId:e().optional()}),J.nullable()),updateDeviceSettings:r(t({addonId:e(),deviceId:a(),nodeId:e().optional(),patch:la}),ua,{kind:"mutation",auth:"admin"})}},Co=f(["info","success","warning","error"]),No=f(["active","in-progress","completed","failed","dismissed"]),Po=t({type:e(),id:e()}),_e=t({id:e(),category:e(),severity:Co,title:e(),message:e(),status:No,progress:a().optional(),read:v(),createdAt:a(),updatedAt:a(),source:Po.optional(),metadata:b(e(),S()).optional()}),Do={name:"alerts",scope:"system",mode:"singleton",methods:{emit:r(_e,p(),{kind:"mutation"}),update:r(t({alertId:e(),patch:_e.partial()}),p(),{kind:"mutation"}),list:r(t({unreadOnly:v().optional(),limit:a().optional()}).optional(),l(_e).readonly()),getUnreadCount:r(p(),a()),markRead:r(t({alertId:e()}),p(),{kind:"mutation"}),markAllRead:r(p(),p(),{kind:"mutation"}),dismiss:r(t({alertId:e()}),p(),{kind:"mutation"})}},Mo={name:"storage",scope:"system",mode:"singleton",methods:{resolve:r(t({location:L,relativePath:e()}),e()),write:r(t({location:L,relativePath:e(),data:P(Uint8Array)}),p(),{kind:"mutation"}),read:r(t({location:L,relativePath:e()}),P(Uint8Array)),exists:r(t({location:L,relativePath:e()}),v()),list:r(t({location:L,prefix:e().optional()}),l(e()).readonly()),delete:r(t({location:L,relativePath:e()}),p(),{kind:"mutation"}),getAvailableSpace:r(t({location:L}),a().nullable()),beginUpload:r(t({location:L,relativePath:e(),sizeBytes:a().optional()}),t({uploadId:e()}),{kind:"mutation"}),writeChunk:r(t({uploadId:e(),offset:a(),data:P(Uint8Array)}),p(),{kind:"mutation"}),finalizeUpload:r(t({uploadId:e()}),p(),{kind:"mutation"}),abortUpload:r(t({uploadId:e()}),p(),{kind:"mutation"}),beginDownload:r(t({location:L,relativePath:e()}),t({downloadId:e(),sizeBytes:a()}),{kind:"mutation"}),readChunk:r(t({downloadId:e(),offset:a(),length:a()}),P(Uint8Array)),endDownload:r(t({downloadId:e()}),p(),{kind:"mutation"}),listLocations:r(t({type:X.optional()}),l(R).readonly()),getDefaultLocation:r(t({type:X}),R.nullable()),upsertLocation:r(R.omit({createdAt:!0,updatedAt:!0}),R,{kind:"mutation",auth:"admin"}),deleteLocation:r(t({id:e()}),p(),{kind:"mutation",auth:"admin"}),testLocation:r(t({id:e()}),t({ok:v(),error:e().optional()}),{auth:"admin"}),listProviders:r(p(),l(t({providerId:e(),displayName:e(),supportedLocationTypes:l(X).readonly(),configSchema:S()})).readonly()),testConfig:r(t({providerId:e(),config:b(e(),S())}),t({ok:v(),error:e().optional()}),{auth:"admin"})}},Eo=t({providerId:e().min(1),displayName:e().min(1),supportedLocationTypes:l(X).readonly(),configSchema:S()}),To=t({ok:v(),error:e().optional()}),Ro=t({location:R,relativePath:e(),sizeBytes:a().optional()}),xo=t({uploadId:e()}),Bo=t({uploadId:e(),offset:a(),data:P(Uint8Array)}),Oo=t({uploadId:e()}),qo=t({uploadId:e()}),zo=t({location:R,relativePath:e()}),Lo=t({downloadId:e(),sizeBytes:a()}),_o=t({downloadId:e(),offset:a(),length:a()}),Uo=t({downloadId:e()}),Fo={name:"storage-provider",scope:"system",mode:"collection",internal:!0,methods:{getProviderInfo:r(p(),Eo),testLocation:r(t({config:b(e(),S())}),To,{auth:"admin"}),resolve:r(t({location:R,relativePath:e()}),e()),write:r(t({location:R,relativePath:e(),data:P(Uint8Array)}),p(),{kind:"mutation"}),read:r(t({location:R,relativePath:e()}),P(Uint8Array)),exists:r(t({location:R,relativePath:e()}),v()),list:r(t({location:R,prefix:e().optional()}),l(e()).readonly()),delete:r(t({location:R,relativePath:e()}),p(),{kind:"mutation"}),getAvailableSpace:r(t({location:R}),a().nullable()),beginUpload:r(Ro,xo,{kind:"mutation"}),writeChunk:r(Bo,p(),{kind:"mutation"}),finalizeUpload:r(Oo,p(),{kind:"mutation"}),abortUpload:r(qo,p(),{kind:"mutation"}),beginDownload:r(zo,Lo,{kind:"mutation"}),readChunk:r(_o,P(Uint8Array)),endDownload:r(Uo,p(),{kind:"mutation"})}},Ho=t({subId:e(),displayName:e(),description:e().optional(),kind:e(),triggerSupported:v(),restoreSupported:v()}),Wo=Ho.extend({id:e(),addonId:e(),enabled:v(),retentionCount:a(),label:e().optional(),lastSuccessAt:a().optional(),lastSuccessSizeBytes:a().optional(),cron:e().optional(),nextRunAt:a().optional(),lastRunAt:a().optional()}),$o=t({id:e(),filename:e(),createdAt:a(),sizeBytes:a(),label:e().optional(),locations:l(e()).readonly()}),ma=t({id:e(),destinationId:e().optional(),label:e().optional(),createdAt:a(),sizeBytes:a(),locations:l(e()).optional()}),jo=t({path:e(),kind:f(["file","dir","symlink"]),sizeBytes:a(),mtime:a()}),Go=t({archiveVersion:k(1),createdAt:a(),dataDir:e(),locations:l(e()),entries:l(jo),totalBytes:a(),totalFiles:a()}),Vo=t({name:e(),sizeBytes:a(),fileCount:a(),present:v()}),Ko={name:"backup",scope:"system",mode:"singleton",methods:{listDestinations:r(p(),l(Wo).readonly(),{auth:"admin"}),trigger:r(t({destinations:l(e()).optional(),locations:l(e()).optional(),label:e().optional()}).optional(),l(ma).readonly(),{kind:"mutation",auth:"admin"}),list:r(p(),l(ma).readonly(),{auth:"admin"}),listLocations:r(p(),l(Vo).readonly(),{auth:"admin"}),getEntries:r(t({destinationId:e(),backupId:e()}),Go.nullable(),{auth:"admin"}),restore:r(t({destinationId:e(),backupId:e(),locations:l(e()).optional()}),p(),{kind:"mutation",auth:"admin"}),delete:r(t({destinationId:e(),backupId:e()}),p(),{kind:"mutation",auth:"admin"}),listArchives:r(t({destinationId:e()}),l($o).readonly(),{auth:"admin"}),upsertDestinationPolicy:r(t({locationId:e(),enabled:v(),retentionCount:a().int().min(1).max(1e3),label:e().optional(),cron:e().optional()}),p(),{kind:"mutation",auth:"admin"}),previewSchedule:r(t({cron:e(),count:a().int().min(1).max(20).optional()}),t({ok:v(),error:e().optional(),nextRuns:l(a()).readonly()}))}},pa=t({where:b(e(),S()).optional(),whereIn:b(e(),l(S())).optional(),whereBetween:b(e(),Fa([S(),S()])).optional(),orderBy:t({field:e(),direction:f(["asc","desc"])}).optional(),limit:a().optional(),offset:a().optional()}),ga=t({id:e(),data:b(e(),S())}),Zo=t({name:e(),type:f(["TEXT","INTEGER","REAL","JSON"]),primaryKey:v().optional(),notNull:v().optional(),unique:v().optional()}),Yo=t({name:e(),columns:l(e()).readonly(),unique:v().optional()}),Qo={name:"settings-store",scope:"system",mode:"singleton",methods:{get:r(t({namespace:e().optional(),collection:e(),key:e()}),S()),set:r(t({namespace:e().optional(),collection:e(),key:e(),value:S()}),p(),{kind:"mutation"}),query:r(t({namespace:e().optional(),collection:e(),filter:pa.optional()}),l(ga).readonly()),insert:r(t({namespace:e().optional(),collection:e(),record:ga}),p(),{kind:"mutation"}),update:r(t({namespace:e().optional(),collection:e(),id:e(),data:b(e(),S())}),p(),{kind:"mutation"}),delete:r(t({namespace:e().optional(),collection:e(),key:e()}),p(),{kind:"mutation"}),count:r(t({namespace:e().optional(),collection:e(),filter:pa.optional()}),a()),isEmpty:r(t({namespace:e().optional(),collection:e()}),v()),declareCollection:r(t({namespace:e().optional(),collection:e(),columns:l(Zo).readonly(),indexes:l(Yo).readonly().optional()}),p(),{kind:"mutation"})}},dn=f(["debug","info","warn","error"]),ha=t({timestamp:Xe(),level:dn,scope:l(e()),message:e(),meta:b(e(),S()).optional(),tags:b(e(),e()).optional()}),Jo={name:"log-destination",scope:"system",mode:"collection",internal:!0,methods:{write:r(ha,p(),{kind:"mutation"}),query:r(t({scope:l(e()).optional(),level:dn.optional(),since:Xe().optional(),until:Xe().optional(),limit:a().optional(),tags:b(e(),e()).optional()}),l(ha).readonly())}},Xo={name:"admin-ui",scope:"system",mode:"singleton",internal:!0,methods:{getStaticDir:r(p(),e()),getVersion:r(p(),e())}},es=t({id:e(),label:e(),icon:e(),path:e(),remoteName:e(),bundle:e()}),ts=t({addonId:e(),page:es,bundleUrl:e()}),as={name:"addon-pages",scope:"system",mode:"singleton",methods:{listPages:r(p(),l(ts).readonly())}},ns=t({id:e(),label:e(),icon:e(),path:e(),remoteName:e(),bundle:e()}),is={name:"addon-pages-source",scope:"system",mode:"collection",internal:!0,methods:{listPages:r(p(),l(ns).readonly())}},os=f(["device-tab","dashboard","integration-detail"]),va=f(["xs","sm","md","lg","xl"]),ln=t({stableId:e(),label:e(),description:e().optional(),icon:e().optional(),remoteName:e(),bundle:e(),hosts:l(os).readonly(),requires:t({deviceContext:v().default(!1),integrationContext:v().default(!1)}),defaultSize:va.default("md"),allowedSizes:l(va).readonly().default(["sm","md","lg"]),defaultColumns:a().int().min(1).max(12).default(6),defaultRows:a().int().min(1).max(12).default(1)}),ss={name:"addon-widgets-source",scope:"system",mode:"collection",internal:!0,methods:{listWidgets:r(p(),l(ln).readonly())}},rs=ln.extend({addonId:e(),bundleUrl:e()}),cs={name:"addon-widgets",scope:"system",mode:"singleton",methods:{listWidgets:r(p(),l(rs).readonly())}},ds=t({method:f(["GET","POST","PUT","DELETE","PATCH"]),path:e()}),ls={name:"addon-routes",scope:"system",mode:"collection",internal:!0,methods:{getRoutes:r(p(),l(ds))}},Fl=[{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)"}],Hl={hwaccel:"auto",probedBestHwaccel:""},us={name:"decoder",scope:"system",mode:"singleton",methods:{supportsCodec:r(t({codec:e()}),v()),getInfo:r(p(),t({id:e(),name:e(),isPullMode:v().optional(),priority:a().optional()})),createSession:r(Jt,t({sessionId:e(),nodeId:e()})),destroySession:r(t({sessionId:e()}),p()),pushPacket:r(t({sessionId:e(),packet:yi}),p()),openStream:r(t({sessionId:e(),url:e()}),p()),pullFrames:r(t({sessionId:e(),maxCount:a().default(1)}),l(fi)),updateConfig:r(t({sessionId:e(),config:Jt.partial()}),p()),getStats:r(t({sessionId:e()}),Xn),listActiveSessions:r(p(),l(t({sessionId:e(),codec:e(),outputFormat:e(),createdAtMs:a()})).readonly()),reprobeHwaccel:r(p(),t({backend:e()}),{kind:"mutation",auth:"admin"})}},ms=t({streamId:e(),label:e().optional(),codec:e(),type:f(["video","audio"]),sourceUrl:e()}),ps=t({streamId:e(),format:e(),value:e()}),gs={name:"restreamer",scope:"system",mode:"collection",internal:!0,methods:{registerDevice:r(t({deviceId:a(),streams:l(ms).readonly()}),p(),{kind:"mutation"}),unregisterDevice:r(t({deviceId:a()}),p(),{kind:"mutation"}),getExposedResources:r(t({deviceId:a()}),l(ps).readonly())}},un=t({viewportWidth:a().int().positive().optional(),viewportHeight:a().int().positive().optional(),devicePixelRatio:a().positive().optional(),downlinkMbps:a().nonnegative().optional(),prefersTier:e().optional()}).partial(),hs={name:"webrtc",scope:"system",mode:"collection",internal:!0,methods:{handleOffer:r(t({streamId:e(),sdpOffer:e()}),e(),{kind:"mutation"}),supportsStream:r(t({streamId:e()}),v()),registerStream:r(t({streamId:e(),codec:e()}),p(),{kind:"mutation"}),unregisterStream:r(t({streamId:e()}),p(),{kind:"mutation"}),createSession:r(t({streamId:e(),hints:un.optional()}),t({sessionId:e(),sdpOffer:e()}),{kind:"mutation"}),handleAnswer:r(t({sessionId:e(),sdpAnswer:e()}),p(),{kind:"mutation"}),closeSession:r(t({sessionId:e()}),p(),{kind:"mutation"}),hasAdaptiveBitrate:r(t({streamId:e()}),v())}},mn=_n("kind",[t({kind:k("adaptive")}),t({kind:k("profile"),profile:$}),t({kind:k("cam-stream"),camStreamId:e().min(1)})]),vs=t({id:e(),label:e(),target:mn,codec:e().nullable(),resolution:t({width:a(),height:a()}).nullable(),status:f(["idle","connecting","streaming","error","stopped"]).nullable(),inputFps:a().nullable(),decodeFps:a().nullable(),bitrateKbps:a().nullable()}),ys={name:"webrtc-session",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{listStreams:r(t({deviceId:a().int().nonnegative()}),l(vs)),createSession:r(t({deviceId:a().int().nonnegative(),target:mn,hints:un.optional()}),t({sessionId:e(),sdpOffer:e()}),{kind:"mutation"}),handleAnswer:r(t({deviceId:a().int().nonnegative(),sessionId:e(),sdpAnswer:e()}),p(),{kind:"mutation"}),closeSession:r(t({deviceId:a().int().nonnegative(),sessionId:e()}),p(),{kind:"mutation"}),hasAdaptiveBitrate:r(t({deviceId:a().int().nonnegative(),profile:$}),v())}},we=t({engine:D,steps:l(ee).readonly(),audio:t({engine:D,modelId:e(),enabled:v(),settings:b(e(),S()).readonly().optional()}).nullable().optional()}),Ue=t({id:e(),name:e(),description:e().optional(),config:we,createdAt:e(),updatedAt:e()}),pn=t({enabled:v(),modelId:e(),settings:b(e(),S()).readonly()}),ya=t({addonDefaults:b(e(),pn).readonly()}),gn=t({steps:l(ee).readonly(),audio:t({modelId:e(),enabled:v()}).nullable()}),ut=t({enabled:v().optional(),modelId:e().optional(),settings:b(e(),S()).readonly().optional()}),fs=t({pinnedAgentNodeId:e().optional(),stepToggles:b(e(),v()).optional(),stepOverridesByAgent:b(e(),b(e(),ut)).optional(),pipelineByAgent:b(e(),gn).optional()}),fa=t({deviceId:a(),agentNodeId:e(),pinned:v(),reason:f(["manual","capacity","hardware-affinity","failover","rebalance"]),assignedAt:a()}),Sa=t({deviceId:a(),decoderNodeId:e(),pinned:v(),reason:f(["manual","co-located","capacity","hardware-affinity"])}),Ss=t({nodeId:e(),online:v(),load:Xa,score:a()}),bs=t({totalAgents:a(),onlineAgents:a(),totalCameras:a(),attachedCameras:a(),activeCameras:a(),avgInferenceTimeMs:a(),queueDepth:a()}),Is=b(e(),e()),ks={name:"pipeline-orchestrator",scope:"system",mode:"singleton",exposesDeviceSettings:!0,methods:{assignPipeline:r(t({deviceId:a(),agentNodeId:e()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),unassignPipeline:r(t({deviceId:a()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),rebalance:r(p(),t({migrated:a()}),{kind:"mutation",auth:"admin"}),getPipelineAssignments:r(p(),l(fa).readonly()),getPipelineAssignment:r(t({deviceId:a()}),fa.nullable()),getAgentLoad:r(p(),l(Ss).readonly()),getGlobalMetrics:r(p(),bs),getCameraMetrics:r(t({deviceId:a()}),Nt.nullable()),getCapabilityBindings:r(t({nodeId:e()}),Is),setCapabilityBinding:r(t({nodeId:e(),capName:e(),addonId:e()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),assignDecoder:r(t({deviceId:a(),nodeId:e()}),p(),{kind:"mutation",auth:"admin"}),unassignDecoder:r(t({deviceId:a()}),p(),{kind:"mutation",auth:"admin"}),getDecoderAssignments:r(p(),l(Sa).readonly()),assignAudio:r(t({deviceId:a(),nodeId:e()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),unassignAudio:r(t({deviceId:a()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),getAudioAssignment:r(t({deviceId:a()}),t({nodeId:e(),pinned:v(),assignedAt:a()}).nullable()),getAudioNodeLoad:r(p(),l(t({nodeId:e(),deviceCount:a()}))),getAudioAssignments:r(p(),l(t({deviceId:a(),nodeId:e(),pinned:v(),assignedAt:a()}))),getDecoderAssignment:r(t({deviceId:a(),pipelineNodeId:e().optional()}),Sa),getAgentSettings:r(t({agentNodeId:e()}),ya.nullable()),listAgentSettings:r(p(),l(t({nodeId:e(),settings:ya})).readonly()),setAgentAddonDefaults:r(t({agentNodeId:e(),defaults:b(e(),pn)}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),removeAgentSettings:r(t({agentNodeId:e()}),t({success:v(),removed:v()}),{kind:"mutation",auth:"admin"}),getCameraSettings:r(t({deviceId:a()}),fs.nullable()),setCameraStepToggle:r(t({deviceId:a(),addonId:e(),enabled:v().nullable()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),getCameraStepOverrides:r(t({deviceId:a()}),b(e(),b(e(),ut)).nullable()),setCameraStepOverride:r(t({deviceId:a(),agentNodeId:e(),addonId:e(),patch:ut.nullable()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),setCameraPipelineForAgent:r(t({deviceId:a(),agentNodeId:e(),pipeline:gn.nullable()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),resolvePipeline:r(t({deviceId:a(),agentNodeId:e().optional()}),we),listTemplates:r(p(),l(Ue).readonly()),saveTemplate:r(t({name:e(),description:e().optional(),config:we}),Ue,{kind:"mutation",auth:"admin"}),updateTemplate:r(t({id:e(),name:e().optional(),description:e().optional(),config:we.optional()}),Ue,{kind:"mutation",auth:"admin"}),deleteTemplate:r(t({id:e()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"})}},ws=t({level:Ri,classification:t({labels:l(ot).readonly(),inferenceMs:a()}).optional(),timestamp:a()}),As=t({minConfidence:a().min(0).max(1).default(.3),allowedClasses:l(e()).default([])}),Cs=t({labels:l(ot).readonly(),rawLabels:l(ot).readonly().optional(),inferenceMs:a()}),Wl=[{value:"auto",label:"Auto (platform default)"},{value:"apple-soundanalysis",label:"Apple SoundAnalysis (macOS 12+)"},{value:"yamnet-onnx",label:"YAMNet ONNX (cross-platform)"}],$l={audioBackend:"auto",probedBestAudioBackend:"",selectedAudioModel:""},Ns={name:"audio-analyzer",scope:"system",mode:"singleton",methods:{analyseChunk:r(t({chunk:ia,settings:As}),ws.nullable(),{kind:"mutation"}),classify:r(ia,Cs,{timeoutMs:3e4}),isReady:r(p(),v()),dispose:r(p(),p(),{kind:"mutation"}),reprobeAudioEngine:r(p(),t({backend:e()}),{kind:"mutation",auth:"admin"})}},Ps={name:"audio-analysis",scope:"device",mode:"singleton",deviceTypes:[C.Camera],exposesDeviceSettings:!0,methods:{resolveDeviceSettings:r(t({deviceId:a()}),x())},events:{onAudioLevel:V(t({deviceId:a(),rms:a(),dbfs:a()}))}},Ee=f(["f32le","s16le"]),Ds=t({codec:e(),canDecode:v(),canEncode:v(),label:e().optional()}),Ms=t({codec:e(),sourceSampleRate:a().int().positive(),sourceChannels:a().int().positive(),extraData:P(Uint8Array).optional(),targetSampleRate:a().int().positive(),targetChannels:a().int().positive(),targetFormat:Ee.optional(),idleMs:a().int().positive().optional(),tag:e().optional()}),Es=t({codec:e(),sourceSampleRate:a().int().positive(),sourceChannels:a().int().positive(),sourceFormat:Ee.optional(),targetSampleRate:a().int().positive(),targetChannels:a().int().positive(),bitrateKbps:a().int().positive().optional(),idleMs:a().int().positive().optional(),tag:e().optional()}),Ts=t({data:P(Uint8Array),sampleRate:a().int().positive(),channels:a().int().positive(),format:Ee,pts:a()}),ba=t({data:P(Uint8Array),codec:e(),pts:a(),frameComplete:v()}),Rs=t({sessionId:e(),kind:f(["decode","encode"]),codec:e(),sourceSampleRate:a(),sourceChannels:a(),targetSampleRate:a(),targetChannels:a(),format:Ee,tag:e().optional(),createdAtMs:a(),lastActivityMs:a(),framesIn:a(),framesOut:a()}),xs={name:"audio-codec",scope:"system",mode:"singleton",methods:{listSupportedCodecs:r(p(),l(Ds).readonly()),canHandle:r(t({codec:e(),kind:f(["decode","encode"])}),v()),createDecodeSession:r(Ms,t({sessionId:e(),nodeId:e()}),{kind:"mutation"}),createEncodeSession:r(Es,t({sessionId:e(),nodeId:e()}),{kind:"mutation"}),closeSession:r(t({sessionId:e(),nodeId:e().optional()}),p(),{kind:"mutation"}),pushEncodedFrame:r(t({sessionId:e(),nodeId:e().optional(),data:P(Uint8Array),pts:a().optional()}),p(),{kind:"mutation"}),pullPcm:r(t({sessionId:e(),nodeId:e().optional(),maxCount:a().int().positive().default(8)}),l(Ts)),pushPcm:r(t({sessionId:e(),nodeId:e().optional(),data:P(Uint8Array),pts:a().optional()}),p(),{kind:"mutation"}),pullEncoded:r(t({sessionId:e(),nodeId:e().optional(),maxCount:a().int().positive().default(8)}),l(ba)),flushEncode:r(t({sessionId:e(),nodeId:e().optional()}),l(ba),{kind:"mutation"}),listActiveSessions:r(p(),l(Rs).readonly())}},Ia=t({embedding:l(a()),dimensions:a()}),Bs=t({modelId:e(),dimensions:a(),inputSize:a()}),Os={name:"embedding-encoder",scope:"system",mode:"collection",internal:!0,methods:{encode:r(t({crop:P(Uint8Array),width:a(),height:a()}),Ia),encodeText:r(t({text:e()}),Ia),getInfo:r(p(),Bs)}},Fe=t({id:a(),stableId:e(),addonId:e(),type:f(C),name:e(),location:e().nullable(),disabled:v(),parentDeviceId:a().nullable(),role:e().nullable().optional(),online:v(),features:l(e()),isCamera:v(),config:b(e(),S()),metadata:b(e(),S()).nullable().optional()}),qs=t({key:e(),value:S(),description:e().optional()}),zs=t({id:a(),stableId:e(),type:e(),name:e(),location:e().nullable(),disabled:v(),parentDeviceId:a().nullable(),role:e().nullable().optional()}),Ls=t({id:a(),stableId:e(),addonId:e(),type:e(),name:e(),location:e().nullable(),disabled:v(),parentDeviceId:a().nullable(),metadata:b(e(),S()).nullable().optional()}),_s=S().nullable(),Us=t({streamId:e(),width:a().optional(),height:a().optional(),codec:e().optional(),fps:a().optional(),bitrateKbps:a().optional()}),Fs=t({addonId:e(),stableId:e(),id:a(),type:e(),name:e(),location:e().nullable().optional(),disabled:v().optional(),parentDeviceId:a().nullable(),role:e().nullable().optional(),features:l(e()).optional(),config:b(e(),S())}),Hs=t({deviceId:a()}),Ws=t({deviceId:a(),data:b(e(),S())}),$s={name:"device-manager",scope:"system",mode:"singleton",methods:{allocateDeviceId:r(t({addonId:e(),stableId:e()}),t({id:a()}),{kind:"mutation"}),registerDevice:r(Fs,p(),{kind:"mutation"}),removeDevice:r(Hs,p(),{kind:"mutation"}),persistConfig:r(Ws,p(),{kind:"mutation"}),loadConfig:r(t({deviceId:a()}),b(e(),S())),loadRuntimeState:r(t({deviceId:a()}),b(e(),S())),loadMeta:r(t({deviceId:a()}),Ls.nullable()),setName:r(t({deviceId:a(),name:e()}),p(),{kind:"mutation",auth:"admin"}),setLocation:r(t({deviceId:a(),location:e().nullable()}),p(),{kind:"mutation",auth:"admin"}),setMetadata:r(t({deviceId:a(),patch:b(e(),S())}),p(),{kind:"mutation",auth:"admin"}),listLocations:r(p(),l(e())),addLocation:r(t({name:e()}),p(),{kind:"mutation",auth:"admin"}),removeLocation:r(t({name:e(),cascade:v().optional()}),p(),{kind:"mutation",auth:"admin"}),setDisabled:r(t({deviceId:a(),disabled:v()}),p(),{kind:"mutation",auth:"admin"}),listPersistedByAddon:r(t({addonId:e()}),l(zs)),listAll:r(t({addonId:e().optional()}),l(Fe)),getDevice:r(t({deviceId:a()}),Fe.nullable()),getChildren:r(t({parentDeviceId:a()}),l(Fe)),getStreamSources:r(t({deviceId:a()}),l(vi)),getConfigSchema:r(t({deviceId:a()}),l(qs)),getSettingsSchema:r(t({deviceId:a()}),_s),updateConfig:r(t({deviceId:a(),values:b(e(),S())}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),enable:r(t({deviceId:a()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),disable:r(t({deviceId:a()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),remove:r(t({deviceId:a()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),getStreamProfileMap:r(t({deviceId:a()}),b(e(),e().nullable())),setStreamProfileMap:r(t({deviceId:a(),profileMap:b(e(),e().nullable())}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),probeStreams:r(t({deviceId:a()}),l(Us),{kind:"mutation",auth:"admin"}),getBindings:r(t({deviceId:a()}),t({deviceId:a(),entries:l(t({capName:e(),kind:f(["native","wrapped"]),providerAddonId:e(),providerNodeId:e(),nativeAddonId:e()}))})),getAllBindings:r(t({}),l(t({deviceId:a(),entries:l(t({capName:e(),kind:f(["native","wrapped"]),providerAddonId:e(),providerNodeId:e(),nativeAddonId:e()}))}))),setWrapperActive:r(t({deviceId:a(),capName:e(),wrapperAddonId:e(),active:v()}),p(),{kind:"mutation",auth:"admin"}),listWrappersForCap:r(t({capName:e()}),l(e())),listBindableCapsForDeviceType:r(t({deviceType:e()}),l(t({capName:e(),wrappers:l(e())}))),getDeviceSettingsAggregate:r(t({deviceId:a()}),J.nullable()),getDeviceLiveInfoAggregate:r(t({deviceId:a()}),J.nullable()),getDeviceAggregate:r(t({deviceId:a()}),t({settings:J.nullable(),live:J.nullable()})),updateDeviceField:r(t({deviceId:a(),writerCapName:e(),writerAddonId:e(),key:e(),value:S()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),updateDeviceFieldsBatch:r(t({deviceId:a(),changes:l(t({writerCapName:e(),writerAddonId:e(),key:e(),value:S()}))}),t({success:k(!0),failures:l(t({writerCapName:e(),writerAddonId:e(),error:e()}))}),{kind:"mutation",auth:"admin"}),discoverDevices:r(t({addonId:e()}),l(De),{kind:"mutation",auth:"admin"}),adoptDevice:r(t({addonId:e(),candidate:De}),Me,{kind:"mutation",auth:"admin"}),getCreationSchema:r(t({addonId:e(),type:f(C)}),S().nullable()),createDevice:r(t({addonId:e(),type:f(C),config:b(e(),S())}),Me,{kind:"mutation",auth:"admin"}),testCreationField:r(t({addonId:e(),type:f(C),key:e(),value:S(),formValues:b(e(),S()).optional()}),lt,{kind:"mutation",auth:"admin"}),testField:r(t({deviceId:a(),key:e(),value:S()}),lt,{kind:"mutation",auth:"admin"}),getDeviceStatusAggregate:r(t({deviceId:a(),caps:l(e()).readonly().optional()}),b(e(),S().nullable()))}},js={name:"device-state",scope:"system",mode:"singleton",methods:{getSnapshot:r(t({deviceId:a()}),b(e(),b(e(),S()))),getCapSlice:r(t({deviceId:a(),capName:e()}),b(e(),S()).nullable()),getAllSnapshots:r(t({}),b(e(),b(e(),b(e(),S())))),setCapSlice:r(t({deviceId:a(),capName:e(),slice:b(e(),S())}),p(),{kind:"mutation"})},events:{onChanged:V(t({deviceId:a(),capName:e(),slice:b(e(),S())}))}},He=t({userId:e(),username:e(),email:e().optional(),displayName:e().optional(),roles:l(e()).optional()}),Gs={name:"auth-provider",scope:"system",mode:"collection",internal:!0,methods:{validateCredentials:r(t({username:e(),password:e()}),He.nullable(),{kind:"mutation"}),getLoginUrl:r(t({state:e()}),e()),handleCallback:r(b(e(),e()),He,{kind:"mutation"}),validateToken:r(t({token:e()}),He.nullable())}},Vs=t({addonId:e(),displayName:e(),icon:e().optional(),hasRedirectFlow:v(),hasCredentialFlow:v(),status:e().optional(),enabled:v()}),Ks={name:"authentication",scope:"system",mode:"singleton",methods:{listProviders:r(p(),l(Vs).readonly()),setProviderEnabled:r(t({addonId:e(),enabled:v()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"})}},mt=t({url:e(),hostname:e(),port:a(),protocol:f(["http","https"])}),Zs=t({connected:v(),endpoint:mt.nullable(),error:e().optional()}),Ys={name:"network-access",scope:"system",mode:"collection",internal:!0,methods:{start:r(p(),mt,{kind:"mutation"}),stop:r(p(),p(),{kind:"mutation"}),getEndpoint:r(p(),mt.nullable()),getStatus:r(p(),Zs)}},hn=t({url:e(),hostname:e(),port:a(),protocol:f(["http","https"])}),Qs=t({addonId:e(),displayName:e(),enabled:v(),connected:v(),endpoint:hn.nullable(),error:e().optional()}),Js={name:"remote-access",scope:"system",mode:"singleton",methods:{listProviders:r(p(),l(Qs).readonly()),startProvider:r(t({addonId:e()}),hn,{kind:"mutation",auth:"admin"}),stopProvider:r(t({addonId:e()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"})}},vn=t({urls:E([e(),l(e())]),username:e().optional(),credential:e().optional()}),Xs={name:"turn-provider",scope:"system",mode:"collection",methods:{getTurnServers:r(p(),l(vn).readonly())}},er=t({addonId:e(),displayName:e(),enabled:v(),serverCount:a(),urls:l(e()).readonly(),error:e().optional()}),tr={name:"turn-orchestrator",scope:"system",mode:"singleton",methods:{listProviders:r(p(),l(er).readonly()),getAllServers:r(p(),l(vn).readonly()),setProviderEnabled:r(t({addonId:e(),enabled:v()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"})}},yn=t({base64:e(),contentType:e()}),ar=t({lastCapturedAt:a().nullable(),cacheAgeMs:a().nullable(),lastBytes:a().nullable(),lastStreamId:e().nullable()}),nr={name:"snapshot",scope:"device",mode:"singleton",deviceTypes:[C.Camera],exposesDeviceSettings:!0,methods:{getSnapshot:r(t({deviceId:a(),streamId:e().optional(),force:v().optional()}),yn.nullable()),invalidateCache:r(t({deviceId:a()}),p(),{kind:"mutation",auth:"admin"})},status:{schema:ar,kind:"poll"}},ir={name:"snapshot-provider",scope:"system",mode:"collection",methods:{supportsDevice:r(t({deviceId:a()}),v()),getSnapshot:r(t({deviceId:a(),streamId:e().optional()}),yn.nullable())}},or=t({title:e(),body:e(),imageUrl:e().optional(),deviceId:a().optional(),eventId:e().optional(),priority:f(["low","normal","high","critical"]).default("normal"),metadata:b(e(),S()).optional()}),sr={name:"notification-output",scope:"system",mode:"collection",methods:{send:r(or,p(),{kind:"mutation"}),sendTest:r(p(),t({success:v(),error:e().optional()}),{kind:"mutation"})}},ka=t({id:e(),name:e(),enabled:v(),conditions:b(e(),S()),actions:l(b(e(),S()))}),rr=t({id:e(),ruleId:e(),timestamp:a(),deviceId:a().optional(),success:v(),error:e().optional()}),cr={name:"advanced-notifier",scope:"system",mode:"singleton",internal:!0,methods:{getRules:r(p(),l(ka).readonly()),upsertRule:r(ka,p(),{kind:"mutation"}),deleteRule:r(t({ruleId:e()}),p(),{kind:"mutation"}),testRule:r(t({ruleId:e(),lookbackMinutes:a()}),l(b(e(),S())),{kind:"mutation"}),getHistory:r(t({ruleId:e().optional(),limit:a().optional()}),l(rr))}},fn=f(["continuous","motion","scheduled","composite"]),dr=t({streamId:e(),mode:f(["always","inherit"])}),lr=t({days:l(a()).readonly(),startTime:e(),endTime:e(),mode:f(["continuous","motion"])}),ge=t({deviceId:a(),mode:fn,streams:l(dr).readonly(),enabled:v(),preBufferSec:a(),postBufferSec:a(),scheduleRules:l(lr).readonly().optional()}),Sn=f(["recording:main","recording:mid","recording:sub","thumbnail:scrub","thumbnail:event"]),pt=t({deviceId:a(),dataCategory:Sn,storageName:e(),subDirectory:e(),retentionDays:a().nullable(),retentionGb:a().nullable()}),ur=t({id:e(),deviceId:a(),streamId:e(),startTime:a(),endTime:a(),duration:a(),path:e(),storageName:e(),subDirectory:e(),sizeBytes:a(),codec:f(["h264","h265"]),hasAudio:v()}),mr=t({deviceId:a(),timestamp:a(),path:e(),storageName:e(),subDirectory:e(),sizeBytes:a(),category:f(["scrub","event"])}),pr=t({startTime:a(),endTime:a(),streams:l(e()).readonly()}),gr=t({totalBytes:a(),segmentCount:a()}),hr=t({bitrateKbps:a(),retentionDays:a().nullable(),retentionGb:a().nullable(),estimatedGb:a(),estimatedDaysAtCapacity:a().nullable()}),wa=t({perStream:b(e(),hr),thumbnails:t({estimatedGb:a()}),totalEstimatedGb:a(),motionEstimate:t({avgEventsPerDay:a(),avgDurationSec:a(),dutyCyclePercent:a()}).optional()}),vr=t({totalEvents:a(),avgDurationSec:a(),avgEventsPerDay:a(),dutyCyclePercent:a()}),fe=t({deviceId:a()}),yr=t({deviceId:a(),policy:ge.omit({deviceId:!0}),storageOverrides:l(pt.omit({deviceId:!0})).readonly().optional(),ffmpegOverrides:b(e(),S()).optional()}),Aa=t({deviceId:a(),startTime:a(),endTime:a()}),fr=t({deviceId:a(),streamId:e(),startTime:a(),endTime:a()}),Sr=t({deviceId:a(),streamId:e(),startTime:a(),endTime:a(),live:v().optional()}),br=t({deviceId:a(),timestamp:a(),category:e().optional()}),Ir=t({deviceId:a(),streamId:e()}),kr=t({deviceId:a(),motionInput:t({avgEventsPerDay:a(),avgDurationSec:a()}).optional()}),wr=t({deviceId:a(),dataCategory:Sn}),Ar=t({deviceId:a(),policy:ge.omit({deviceId:!0})}),Cr=t({deviceId:a(),policy:ge.omit({deviceId:!0}),ffmpegOverrides:b(e(),S()).optional()}),Nr={name:"recording-engine",scope:"system",mode:"singleton",methods:{getStatus:r(p(),t({activeRecordings:a(),totalSegments:a(),totalSizeMB:a()})),enable:r(yr,p(),{kind:"mutation",auth:"admin"}),disable:r(fe,p(),{kind:"mutation",auth:"admin"}),getConfig:r(fe,ge.nullable()),updateConfig:r(Cr,p(),{kind:"mutation",auth:"admin"}),getPlaylist:r(Sr,e()),getThumbnail:r(br,mr.nullable()),getSegments:r(fr,l(ur).readonly()),getAvailability:r(Aa,l(pr).readonly()),estimateStorage:r(kr,wa),estimateGlobalStorage:r(p(),wa),getStorageUsage:r(Ir,gr),setPolicy:r(Ar,p(),{kind:"mutation",auth:"admin"}),getPolicy:r(fe,ge.nullable()),getPolicyStatus:r(fe,t({deviceId:a(),enabled:v(),mode:fn,activeStreams:a()}).nullable()),getRetentionConfig:r(wr,pt.nullable()),updateRetentionConfig:r(pt,p(),{kind:"mutation",auth:"admin"}),getMotionStats:r(Aa,vr)}},Pr={name:"detection-pipeline",scope:"device",mode:"singleton",deviceTypes:[C.Camera],exposesDeviceSettings:!0,methods:{}},Dt=f(["new","entered","left","moving","idle"]),Dr=f(["motion","object","audio"]),bn=t({x:a(),y:a(),timestamp:a(),bbox:te}),Mr=t({timestamp:a(),position:bn,mediaKey:e()}),We=t({trackId:e(),deviceId:a(),className:e(),label:e().optional(),firstSeen:a(),lastSeen:a(),positions:l(bn).readonly(),snapshots:l(Mr).readonly(),zonesVisited:l(e()).readonly(),totalDistance:a(),state:Dt,active:v()}),Mt={id:e(),deviceId:a(),timestamp:a()},Er=t({...Mt,kind:k("motion"),regionCount:a(),regions:l(t({bbox:te,pixelCount:a(),intensity:a()})).readonly(),frameWidth:a(),frameHeight:a()}),Tr=t({...Mt,kind:k("object"),trackId:e(),className:e(),label:e().optional(),confidence:a(),bbox:te,zones:l(e()).readonly(),state:Dt,mediaKey:e().optional()}),Rr=t({...Mt,kind:k("audio"),rms:a(),dbfs:a(),classification:t({className:e(),originalClass:e().optional(),score:a()}).optional()}),Ca=t({key:e(),kind:f(["crop","thumbnail","snapshot"]),base64:e(),sizeBytes:a(),timestamp:a()}),xr=1e3,Br=5e3,gt=t({deviceId:a(),since:a().optional(),until:a().optional(),limit:a().int().min(1).max(Br).default(xr)}),Or=gt.extend({classFilter:e().optional()}),qr=t({trackId:e(),className:e(),confidence:a(),bbox:te,zones:l(e()).readonly(),state:Dt}),zr={name:"pipeline-analytics",scope:"device",mode:"singleton",deviceTypes:[C.Camera],exposesDeviceSettings:!0,methods:{getActiveTracks:r(t({deviceId:a()}),l(We).readonly()),getTrack:r(t({deviceId:a(),trackId:e()}),We.nullable()),listTracks:r(t({deviceId:a(),since:a().optional(),until:a().optional(),limit:a().optional()}),l(We).readonly()),clearTracks:r(t({deviceId:a()}),p(),{kind:"mutation",auth:"admin"}),getMotionEvents:r(gt,l(Er).readonly()),getObjectEvents:r(Or,l(Tr).readonly()),getAudioEvents:r(gt,l(Rr).readonly()),getEventMedia:r(t({eventId:e()}),l(Ca).readonly()),getTrackMedia:r(t({trackId:e()}),l(Ca).readonly())},events:{onFrameTracked:{data:t({deviceId:a(),timestamp:a(),frameWidth:a(),frameHeight:a(),detections:l(qr).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:Dr,eventId:e(),timestamp:a()})}}},Lr=t({total:a(),user:a(),system:a(),irq:a(),nice:a(),loadAvg:Fa([a(),a(),a()]),cores:a()}),_r=t({percent:a(),totalBytes:a(),usedBytes:a(),availableBytes:a(),swapUsedBytes:a(),swapTotalBytes:a()}),Ur=t({readBytes:a(),writeBytes:a(),readOps:a(),writeOps:a(),timestampMs:a()}),Fr=t({rxBytes:a(),txBytes:a(),rxPackets:a(),txPackets:a(),rxErrors:a(),txErrors:a(),timestampMs:a()}),In=t({utilization:a(),model:e(),memoryUsedBytes:a(),memoryTotalBytes:a(),temperature:a().nullable()}),Hr=t({openFds:a(),threadCount:a(),activeHandles:a(),activeRequests:a()}),Na=t({avg10:a(),avg60:a(),avg300:a()}),$e=t({some:Na,full:Na.nullable()}),Pa=t({cpu:Lr,memory:_r,gpu:In.nullable(),network:Fr,disk:Ur,pressure:t({cpu:$e.nullable(),memory:$e.nullable(),io:$e.nullable()}),process:Hr,cpuTemperature:a().nullable(),timestampMs:a()}),Wr=t({path:e(),totalBytes:a(),usedBytes:a(),availableBytes:a(),percent:a()}),Da=t({pid:a(),cpu:a(),memory:a()}),$r=t({addonId:e(),nodeId:e(),role:f(["hub","worker"]),pid:a(),state:f(["starting","running","stopping","stopped","crashed"]),uptimeSec:a()}),jr=t({pid:a(),ppid:a(),pgid:a(),classification:f(["root","managed","system","ghost"]),addonId:e().nullable(),nodeId:e().nullable(),command:e(),cpuPercent:a(),memoryRssBytes:a(),uptimeSec:a(),orphaned:v()}),Gr=t({pid:a(),force:v().optional()}),Vr=t({success:v(),reason:e().optional(),signal:f(["SIGTERM","SIGKILL"]).optional()}),Kr=t({cpuPercent:a(),memoryPercent:a(),memoryUsedMB:a(),memoryTotalMB:a(),diskPercent:a().optional(),temperature:a().optional(),gpuPercent:a().optional(),gpuMemoryPercent:a().optional()}),Zr={name:"metrics-provider",scope:"system",mode:"singleton",methods:{collectSnapshot:r(p(),Pa),getCached:r(p(),Pa.nullable()),getCurrent:r(p(),Kr),getDiskSpace:r(t({dirPath:e()}),Wr),getGpuInfo:r(p(),In.nullable()),getCpuTemperature:r(p(),a().nullable()),getProcessStats:r(t({pids:l(a())}),l(Da)),listAddonInstances:r(p(),l($r).readonly()),getAddonStats:r(t({addonId:e()}),Da.nullable()),listNodeProcesses:r(p(),l(jr).readonly()),killProcess:r(Gr,Vr,{kind:"mutation",auth:"admin"})}},Yr=t({id:e(),name:e()}),Ma=t({pan:a(),tilt:a(),zoom:a()}),Ea=t({pan:a().optional(),tilt:a().optional(),zoom:a().optional(),speed:a().optional()}),Qr={name:"ptz",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{move:r(Ea.extend({deviceId:a()}),p(),{kind:"mutation"}),continuousMove:r(Ea.extend({deviceId:a()}),p(),{kind:"mutation"}),stop:r(t({deviceId:a()}),p(),{kind:"mutation"}),getPresets:r(t({deviceId:a()}),l(Yr)),goToPreset:r(t({deviceId:a(),presetId:e()}),p(),{kind:"mutation"}),goHome:r(t({deviceId:a()}),p(),{kind:"mutation"}),getPosition:r(t({deviceId:a()}),Ma)},status:{schema:Ma,kind:"command-driven"}},Jr=t({id:e(),type:e(),timestamp:a(),label:e().optional(),thumbnailUrl:e().optional(),clipUrl:e().optional(),metadata:b(e(),S()).optional()}),Xr={name:"events",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getEvents:r(t({deviceId:a(),from:a().optional(),to:a().optional(),limit:a().optional()}),l(Jr)),getEventThumbnail:r(t({deviceId:a(),eventId:e()}),t({base64:e(),contentType:e()}).nullable()),getEventClipUrl:r(t({deviceId:a(),eventId:e()}),e().nullable())}},ec=t({id:e(),startTs:a(),endTs:a(),durationSec:a(),sizeBytes:a().optional()}),tc={name:"recording",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getSegments:r(t({deviceId:a(),from:a().optional(),to:a().optional()}),l(ec)),getPlaybackUrl:r(t({deviceId:a(),segmentId:e()}),e().nullable()),getThumbnailAt:r(t({deviceId:a(),timestamp:a()}),t({base64:e(),contentType:e()}).nullable())}},ac=t({id:e(),label:e(),protocol:f(["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:f(["high","mid","low"]).optional(),sdp:e().optional()}),nc=t({key:e(),value:S()}),ic={name:"device-ops",scope:"device",mode:"singleton",methods:{getStreamSources:r(t({deviceId:a()}),l(ac)),getConfigEntries:r(t({deviceId:a()}),l(nc)),setConfig:r(t({deviceId:a(),values:b(e(),S())}),p(),{kind:"mutation"}),removeDevice:r(t({deviceId:a()}),p(),{kind:"mutation"}),getSettingsSchema:r(t({deviceId:a()}),S().nullable())}},oc=t({host:e(),port:a().int().positive().optional(),onvifPort:a().int().positive().optional(),rtspPort:a().int().positive().optional(),https:v().optional(),username:e().optional(),password:e().optional(),onvifProfile:e().optional()}),sc=t({host:e(),port:a().int().positive().nullable(),onvifPort:a().int().positive().nullable(),rtspPort:a().int().positive().nullable(),https:v().nullable(),hasUsername:v(),hasPassword:v(),onvifProfile:e().nullable()}),rc={name:"camera-credentials",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getCredentials:r(t({deviceId:a()}),oc.nullable(),{kind:"query",auth:"admin"})},status:{schema:sc,kind:"command-driven"}},cc={name:"reboot",scope:"device",mode:"singleton",deviceTypes:[C.Camera,C.Sensor,C.Switch],methods:{reboot:r(t({deviceId:a().int().nonnegative()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"})}},dc=f(["text","timestamp","watermark"]),ht=f(["top-left","top-center","top-right","bottom-left","bottom-center","bottom-right","custom"]),lc=t({id:e(),kind:dc,enabled:v(),text:e().optional(),position:ht.optional(),availablePositions:l(ht).readonly(),readOnly:v().optional()}),Ta=t({overlays:l(lc).readonly()}),uc=t({enabled:v().optional(),text:e().optional(),position:ht.optional()}).partial(),mc={name:"osd",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{setOverlay:r(t({deviceId:a(),overlayId:e(),patch:uc}),p(),{kind:"mutation",auth:"admin"})},events:{onStatusChanged:{data:t({deviceId:a(),status:Ta})}},status:{schema:Ta,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:s=>`${String(s.id)} enabled`,kind:"boolean"},text:{label:s=>`${String(s.id)} text`,kind:"text",when:s=>s.kind!=="timestamp"&&!s.readOnly},position:{label:s=>`${String(s.id)} position`,kind:"select",options:s=>s.availablePositions??[],when:s=>Array.isArray(s.availablePositions)&&s.availablePositions.length>0}}}]}},pc=t({childDeviceIds:l(a()).readonly()}),gc={name:"accessories",scope:"device",mode:"singleton",deviceTypes:[C.Camera,C.Hub],methods:{},events:{onAccessoriesChanged:{data:t({deviceId:a(),childDeviceIds:l(a()).readonly()})}},status:{schema:pc,kind:"command-driven"}},hc=t({codecs:l(e()),sampleRate:a(),duplex:f(["half","full"]),maxBacklogMs:a()}),Ra=t({talking:v(),lastSessionAt:a().nullable(),ability:hc.nullable()}),vc={name:"intercom",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{startSession:r(t({deviceId:a()}),t({sessionId:e(),sdpOffer:e()}),{kind:"mutation",auth:"admin"}),handleAnswer:r(t({deviceId:a(),sessionId:e(),sdpAnswer:e()}),p(),{kind:"mutation",auth:"admin"}),stopSession:r(t({deviceId:a(),sessionId:e()}),p(),{kind:"mutation",auth:"admin"})},events:{onStatusChanged:{data:t({deviceId:a(),status:Ra})}},status:{schema:Ra,kind:"command-driven"}},vt=f(["person","vehicle","animal","face","package","other"]),kn=t({class:vt,timestamp:a(),confidence:a().min(0).max(1).optional()}),yc=t({lastByClass:b(vt,kn.nullable()),supportedClasses:l(vt).readonly()}),fc={name:"native-object-detection",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{},events:{onDetected:{data:t({deviceId:a(),detection:kn})}},status:{schema:yc,kind:"push"}},Sc=f(Zn),bc=f(["videotoolbox","cuda","nvdec","vaapi","qsv","d3d11va","dxva2","amf","vdpau","drm","coreml","tensorrt","openvino","directml","webgpu","none"]).nullable().optional(),Ic=t({preferred:l(e()).readonly()}),kc=f(["darwin","linux","win32"]),wc=f(["arm64","x64"]),Ac=t({type:f(["nvidia","amd","intel","apple"]),name:e(),memoryMB:a().optional()}),Cc=t({type:f(["apple-ane","intel-npu"])}),wn=t({platform:kc,arch:wc,cpuModel:e(),cpuCores:a(),totalRAM_MB:a(),availableRAM_MB:a(),gpu:Ac.nullable(),npu:Cc.nullable()}),xa=t({runtime:f(["node","python"]),backend:e(),format:f(["onnx","coreml","openvino"]),score:a(),reason:e(),available:v()}),Nc=t({hardware:wn,scores:l(xa).readonly(),bestScore:xa,pythonPath:e().nullable()}),Pc=t({modelId:e(),name:e(),minRAM_MB:a(),accuracyScore:a(),formats:l(e()).readonly()}),Dc=t({modelId:e(),runtime:f(["node","python"]),backend:e(),format:Sc,reason:e()}),Mc={name:"platform-probe",scope:"system",mode:"singleton",methods:{getCapabilities:r(p(),Nc),getHardware:r(p(),wn),resolveInferenceConfig:r(t({requirements:l(Pc).readonly()}),Dc),resolveHwAccel:r(t({prefer:bc,nodeId:e().optional()}),Ic)}},Ec=f(["lan","wifi","docker","vpn","loopback","other"]),An=t({name:e(),family:f(["IPv4","IPv6"]),address:e(),cidr:e(),netmask:e(),internal:v(),mac:e(),kind:Ec,preferred:v(),plausible:v(),plausibleReason:e()}),Tc=t({interfaces:l(An).readonly(),probedAt:a()}),Rc=An.nullable(),xc=t({label:e(),baseUrl:e(),kind:f(["lan-ipv4","lan-ipv6","public","loopback"]),interfaceKind:f(["lan","wifi","docker","vpn","other","loopback","public"]),plausible:v(),plausibleReason:e(),priority:a()}),Bc=t({endpoints:l(xc).readonly()}),je=t({addresses:l(e()).readonly()}),Oc={name:"local-network",scope:"system",mode:"singleton",methods:{list:r(p(),Tc),getPreferred:r(p(),Rc),getConnectionEndpoints:r(t({port:a().int().min(1).max(65535),includeLoopback:v().optional(),ipv4Only:v().optional(),scheme:f(["http","https"]).optional()}),Bc),getAllowedAddresses:r(p(),je),setAllowedAddresses:r(je,t({success:k(!0)}),{kind:"mutation"}),resetAllowlistToBestMatch:r(p(),je,{kind:"mutation"})}},qc=t({id:e(),label:e(),scope:f(["mesh","public"]),url:e(),hostname:e(),port:a(),protocol:f(["http","https"])}),zc=t({id:e(),hostname:e(),addresses:l(e()).readonly(),os:e().optional(),online:v(),lastSeenMs:a(),isSelf:v()}),Lc=t({joined:v(),meshIp:e(),magicDnsHostname:e(),peerCount:a(),endpoints:l(qc).readonly(),error:e().optional()}),_c=t({enabled:v(),port:a().int().min(1).max(65535).optional()}),Uc=t({enabled:v(),port:a().int().min(1).max(65535).optional()}),Fc={name:"mesh-network",scope:"system",mode:"collection",methods:{getStatus:r(p(),Lc),join:r(t({authKey:e().min(8),hostname:e().optional()}),t({joined:k(!0)}),{kind:"mutation"}),leave:r(p(),t({left:k(!0)}),{kind:"mutation"}),listPeers:r(p(),t({peers:l(zc).readonly()})),setPublicIngress:r(_c,t({success:k(!0)}),{kind:"mutation"}),setMeshIngress:r(Uc,t({success:k(!0)}),{kind:"mutation"})}},Hc=t({id:e(),label:e(),scope:f(["mesh","public"]),url:e(),hostname:e(),port:a(),protocol:f(["http","https"])}),Wc=t({addonId:e(),displayName:e(),joined:v(),meshIp:e(),magicDnsHostname:e(),peerCount:a(),endpoints:l(Hc).readonly(),error:e().optional()}),$c={name:"mesh-orchestrator",scope:"system",mode:"singleton",methods:{listProviders:r(p(),l(Wc).readonly()),joinProvider:r(t({addonId:e(),authKey:e().min(8),hostname:e().optional()}),t({joined:k(!0)}),{kind:"mutation"}),leaveProvider:r(t({addonId:e()}),t({success:k(!0)}),{kind:"mutation"})}},K=f(["admin","viewer","agent","scoped"]),Cn=E([k("*"),l(e())]),Nn=b(e(),E([k("*"),l(e())])),jc=f(["view","create","delete"]),H=t({type:f(["addon","capability"]),target:e(),access:l(jc).min(1)}),jl=t({id:e(),username:e(),passwordHash:e(),role:K,allowedProviders:Cn,allowedDevices:Nn,scopes:l(H).default([]),createdAt:a(),updatedAt:a()}),Gl=t({id:e(),label:e(),role:K,allowedProviders:Cn,allowedDevices:Nn,tokenHash:e(),tokenPrefix:e(),createdAt:a(),lastUsedAt:a().optional()}),Vl=t({id:e(),userId:e(),name:e(),tokenHash:e(),tokenPrefix:e(),scopes:l(H),expiresAt:a().nullish(),lastUsedAt:a().nullish(),createdAt:a()}),Ge=t({id:e(),username:e(),role:K,allowedProviders:E([l(e()),k("*")]),allowedDevices:b(e(),E([l(e()),k("*")])),scopes:l(H).default([]),createdAt:a(),updatedAt:a()}),Gc=t({username:e(),password:e().min(6),role:K,allowedProviders:E([l(e()),k("*")]).optional(),allowedDevices:b(e(),E([l(e()),k("*")])).optional(),scopes:l(H).optional()}),Vc=t({id:e(),role:K.optional(),allowedProviders:E([l(e()),k("*")]).optional(),allowedDevices:b(e(),E([l(e()),k("*")])).optional(),scopes:l(H).optional()}),yt=t({id:e(),label:e(),role:K,allowedProviders:E([l(e()),k("*")]).optional(),allowedDevices:b(e(),E([l(e()),k("*")])).optional(),tokenPrefix:e(),createdAt:a(),lastUsedAt:a().optional()}),Kc=t({label:e(),role:K,allowedProviders:E([l(e()),k("*")]).optional(),allowedDevices:b(e(),E([l(e()),k("*")])).optional()}),Zc=t({token:e(),record:yt}),ft=t({id:e(),userId:e(),name:e(),tokenPrefix:e(),scopes:l(H),expiresAt:a().nullish(),lastUsedAt:a().nullish(),createdAt:a()}),Yc=t({userId:e(),name:e(),scopes:l(H),expiresAt:a().optional()}),Qc=t({token:e(),record:ft}),Jc={name:"user-management",scope:"system",mode:"singleton",methods:{listUsers:r(p(),l(Ge),{auth:"admin"}),createUser:r(Gc,Ge,{kind:"mutation",auth:"admin"}),updateUser:r(Vc,t({success:k(!0)}),{kind:"mutation",auth:"admin"}),deleteUser:r(t({id:e()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),resetPassword:r(t({id:e(),newPassword:e().min(6)}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),setUserScopes:r(t({userId:e(),scopes:l(H)}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),validateCredentials:r(t({username:e(),password:e()}),Ge.extend({passwordHash:e()}).nullable(),{kind:"mutation"}),listApiKeys:r(p(),l(yt),{auth:"admin"}),createApiKey:r(Kc,Zc,{kind:"mutation",auth:"admin"}),revokeApiKey:r(t({id:e()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),validateApiKey:r(t({token:e()}),yt.nullable(),{kind:"mutation"}),createScopedToken:r(Yc,Qc,{kind:"mutation",auth:"admin"}),revokeScopedToken:r(t({id:e()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),validateScopedToken:r(t({token:e()}),ft.nullable()),listScopedTokens:r(t({userId:e()}),l(ft),{auth:"admin"})}},Ba=t({streaming:v(),notifications:v(),objectDetection:v(),remoteAccess:v(),agentCluster:v(),smartHome:v(),recordings:v(),backup:v(),repl:v()}),Xc=t({status:k("ok"),uptime:a()}),ed=t({name:e(),address:e(),family:e(),internal:v()}),td={name:"system",scope:"system",mode:"singleton",methods:{info:r(p(),Ba),health:r(p(),Xc),featureFlags:r(p(),Ba),networkAddresses:r(p(),l(ed).readonly()),getRetentionConfig:r(p(),S().nullable(),{auth:"admin"}),setRetentionConfig:r(b(e(),S()),Un(),{kind:"mutation",auth:"admin"}),forceRetentionCleanup:r(p(),p(),{kind:"mutation",auth:"admin"})}},ad=t({nominalBitrateKbps:a(),observedBitrateKbps:a(),peakBitrateKbps:a(),packetLossPercent:a(),lastUpdated:a()}),nd=t({rttMs:a(),jitterMs:a(),estimatedBandwidthKbps:a(),lastUpdated:a()}),Oa=t({deviceId:a(),streams:b(e(),ad),client:nd.optional()}),id={name:"network-quality",scope:"system",mode:"singleton",methods:{getDeviceStats:r(t({deviceId:a()}),Oa.nullable()),getAllStats:r(p(),l(Oa).readonly()),reportClientStats:r(t({deviceId:a(),rttMs:a().min(0).max(6e4),jitterMs:a().min(0).max(1e4),estimatedBandwidthKbps:a().min(0).max(1e6)}),p(),{kind:"mutation"})}},od=t({title:e(),message:e(),severity:f(["info","warning","critical"]),duration:a().optional(),action:t({label:e(),url:e()}).optional()}),sd={name:"toast",scope:"system",mode:"singleton",methods:{onToast:r(p(),od,{kind:"subscription"})}},rd=t({addonId:e(),capabilities:l(e()).readonly(),status:e()}),cd=t({pid:a(),name:e(),state:e(),cpuPercent:a(),memoryRss:a(),uptimeSeconds:a(),services:l(rd).readonly(),groupId:e().optional()}),dd=t({id:e(),name:e(),hostname:e(),platform:e(),arch:e(),cpuModel:e().nullable(),cpuCores:a(),memoryMB:a(),engines:l(e()).readonly(),isHub:v(),isOnline:v(),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(cd).readonly()}),ld=t({nodeId:e(),name:e(),version:e(),status:e(),synced:v()}),ud=t({hubVersion:e(),nodes:l(ld)}),Ve=t({nodeId:e(),addonId:e()}),re=t({success:v()}),md=t({success:v(),reason:e().optional()}),pd=t({restarted:l(e()).readonly(),failed:l(e()).readonly()}),gd=t({nodeId:e(),name:e()}),hd={name:"nodes",scope:"system",mode:"singleton",methods:{topology:r(p(),l(dd).readonly(),{auth:"admin"}),deployAddon:r(Ve,re,{kind:"mutation",auth:"admin"}),undeployAddon:r(Ve,re,{kind:"mutation",auth:"admin"}),restartAddon:r(Ve,re,{kind:"mutation",auth:"admin"}),restartProcess:r(t({nodeId:e(),processName:e()}),md,{kind:"mutation",auth:"admin"}),restartNode:r(t({nodeId:e()}),pd,{kind:"mutation",auth:"admin"}),shutdownNode:r(t({nodeId:e()}),re,{kind:"mutation",auth:"admin"}),renameNode:r(t({nodeId:e(),name:e().min(1).max(64)}),gd,{kind:"mutation",auth:"admin"}),clusterAddonStatus:r(p(),b(e(),ud),{auth:"admin"}),setProcessLogLevel:r(t({nodeId:e(),level:e()}),re,{kind:"mutation",auth:"admin"}),executeQuery:r(t({nodeId:e(),addonId:e(),queryName:e(),params:b(e(),S()).optional()}),S(),{kind:"mutation",auth:"admin"})}},qa=t({id:e(),addonId:e(),name:e(),enabled:v(),info:b(e(),S()).readonly(),createdAt:a(),updatedAt:a(),processState:e()}),Ke=t({id:e(),addonId:e(),name:e(),enabled:v(),info:b(e(),S()).readonly(),createdAt:a(),updatedAt:a()}),vd=t({addonId:e(),name:e(),description:e(),iconUrl:e().nullable(),color:e(),instanceMode:e(),discoveryMode:e(),existingInstances:l(t({id:e(),name:e()})),canAdd:v()}),yd=t({success:v(),error:e().optional()}),fd=t({addonId:e(),name:e(),enabled:v().optional(),info:b(e(),S()).optional(),settings:b(e(),S()).optional(),skipRestart:v().optional()}),Sd=t({id:e(),name:e().optional(),enabled:v().optional(),info:b(e(),S()).optional()}),bd=t({success:v(),deletedId:e()}),Id={name:"integrations",scope:"system",mode:"singleton",methods:{list:r(p(),l(qa)),get:r(t({id:e()}),qa),getByAddonId:r(t({addonId:e()}),Ke.nullable()),create:r(fd,Ke,{kind:"mutation",auth:"admin"}),update:r(Sd,Ke,{kind:"mutation",auth:"admin"}),delete:r(t({id:e()}),bd,{kind:"mutation",auth:"admin"}),getSettings:r(t({id:e()}),b(e(),S()),{auth:"admin"}),setSettings:r(t({id:e(),settings:b(e(),S())}),t({success:v()}),{kind:"mutation",auth:"admin"}),getAvailableTypes:r(p(),l(vd),{auth:"admin"}),testConnection:r(t({addonId:e(),settings:b(e(),S())}),yd,{kind:"mutation",auth:"admin"})}},za=f(["debug","info","warn","error"]),St=f(["off","latest","beta"]),Pn=f(["off","latest","beta","inherit"]),kd=t({id:e(),name:e().optional(),version:e().optional(),description:e().optional(),icon:e().optional(),color:e().optional(),capabilities:l(S()).readonly().optional(),packageName:e(),packageVersion:e(),packageDisplayName:e().optional(),bundle:t({displayName:e(),description:e().optional(),icon:e().optional()}).optional(),protected:v().optional(),removable:v().optional()}),wd=t({pid:a().optional(),mode:e(),state:e()}),Ad=t({phase:f(["pending","healthy","failed"]),retryCount:a(),firstFailureAt:a().nullable(),lastAttemptAt:a().nullable(),lastError:t({message:e(),stack:e().optional()}).nullable(),nextRetryAt:a().nullable(),alertEmitted:v(),retrying:v(),inGracePeriod:v()}),Cd=t({manifest:kd,declaration:S().optional(),source:e(),installSource:e().optional(),process:wd.optional(),hasBackup:v().optional(),health:Ad.nullable().optional()}),Nd=t({name:e(),version:e(),dir:e(),installSource:e().optional()}),Pd=t({name:e(),currentVersion:e(),latestVersion:e(),category:f(["addon","core"]),requiresRestart:v()}),Dd=t({version:e(),publishedAt:e(),deprecated:e().optional(),distTags:l(e()).readonly()}),Md=t({name:e(),version:e(),description:e(),keywords:l(e()).readonly(),publishedAt:e(),author:e(),installed:v(),installedVersion:e().optional()}),Ed=t({channel:St,intervalSeconds:a()}),Td=Pn,Rd=S(),La=S(),xd=S(),Bd=t({timestamp:e(),level:e(),message:e(),scope:e().optional()}),Od=S(),qd=t({addonId:e().min(1),action:e().min(1),input:S()}),zd={name:"addons",scope:"system",mode:"singleton",methods:{list:r(p(),l(Cd).readonly()),getLogs:r(t({addonId:e(),limit:a().min(1).max(500).default(100),level:za.optional()}),l(Od)),listPackages:r(p(),l(Nd).readonly()),installPackage:r(t({packageName:e(),version:e().optional()}),La,{kind:"mutation",auth:"admin"}),installFromWorkspace:r(t({packageName:e()}),La,{kind:"mutation",auth:"admin"}),isWorkspaceAvailable:r(p(),v()),listWorkspacePackages:r(p(),l(S()).readonly()),uninstallPackage:r(t({packageName:e()}),S(),{kind:"mutation",auth:"admin"}),reloadPackages:r(p(),xd,{kind:"mutation",auth:"admin"}),searchAvailable:r(t({query:e().optional()}),l(Md)),listUpdates:r(p(),l(Pd).readonly(),{auth:"admin"}),updatePackage:r(t({name:e().min(1),version:e().optional()}),S(),{kind:"mutation",auth:"admin"}),rollbackPackage:r(t({name:e().min(1)}),t({rolledBackTo:e().nullable()}),{kind:"mutation",auth:"admin"}),forceRefresh:r(p(),S(),{kind:"mutation",auth:"admin"}),restartServer:r(t({confirm:k(!0)}),S(),{kind:"mutation",auth:"admin"}),getVersions:r(t({name:e()}),l(Dd).readonly()),restartAddon:r(t({addonId:e()}),Rd,{kind:"mutation",auth:"admin"}),retryLoad:r(t({packageName:e()}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),getAutoUpdateSettings:r(p(),Ed,{auth:"admin"}),setAutoUpdateSettings:r(t({channel:St,intervalSeconds:a().min(300).max(86400).optional()}),S(),{kind:"mutation",auth:"admin"}),getAddonAutoUpdate:r(t({addonId:e()}),Td,{auth:"admin"}),setAddonAutoUpdate:r(t({addonId:e(),channel:Pn}),S(),{kind:"mutation",auth:"admin"}),applyAutoUpdateToAll:r(t({channel:St}),t({success:k(!0)}),{kind:"mutation",auth:"admin"}),custom:r(qd,S(),{kind:"mutation"}),onAddonLogs:r(t({addonId:e(),level:za.optional()}),Bd,{kind:"subscription"})}},Ld=["decoder","motion-detection","pipeline-executor","audio-analyzer","pipeline-analytics","notification-output"],Kl=[...Ld,"pipeline-orchestrator","pipeline-runner"];class Zl{disposers=[];disposed=!1;onError;constructor(o={}){this.onError=o.onError??((n,d)=>{console.error(`[DisposerChain] disposer #${d} threw`,n)})}add(o){if(this.disposed){try{const n=o();n&&typeof n.then=="function"&&n.catch(d=>this.onError(d,-1))}catch(n){this.onError(n,-1)}return()=>{}}return this.disposers.push(o),()=>{const n=this.disposers.indexOf(o);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 o=this.disposers.slice().reverse();this.disposers=[];for(let n=0;n<o.length;n++){const d=o[n];try{const u=d();u&&typeof u.then=="function"&&await u}catch(u){this.onError(u,o.length-1-n)}}}}const _d="main-group",Ud="hub-only";function Te(s){return{placement:s.execution?.placement??Ud,group:s.execution?.group??_d}}function Yl(s){const o=Te(s).placement;return o==="any-node"||o==="agent-only"}function Ql(s){return Te(s).placement==="agent-only"}function Jl(s){return Te(s).group}function Xl(s){return Te(s).placement}var Ae=(s=>(s.SystemBoot="system.boot",s.SystemAddonsReady="system.addons-ready",s.SystemRestarting="system.restarting",s.SystemReadyState="system.ready-state",s.AddonStarted="addon.started",s.AddonStopped="addon.stopped",s.AddonRestarted="addon.restarted",s.AddonUpdated="addon.updated",s.AddonInstalled="addon.installed",s.AddonUninstalled="addon.uninstalled",s.AddonCrashed="addon.crashed",s.AddonError="addon.error",s.AddonPageReady="addon.page-ready",s.AddonWidgetReady="addon.widget-ready",s.AddonLoadFailed="addon.load-failed",s.AddonLoadRecovered="addon.load-recovered",s.AddonRetryScheduled="addon.retry-scheduled",s.AddonRetryAttempting="addon.retry-attempting",s.DeviceRegistered="device.registered",s.DeviceUnregistered="device.unregistered",s.DeviceEnabled="device.enabled",s.DeviceDisabled="device.disabled",s.DeviceSettingsUpdated="device.settings-updated",s.DeviceBindingsChanged="device.bindings-changed",s.DeviceMetaChanged="device.meta-changed",s.DeviceStreamsRegistered="device.streams-registered",s.IntegrationEnabled="integration.enabled",s.IntegrationDisabled="integration.disabled",s.IntegrationDeleted="integration.deleted",s.ProviderStarted="provider.started",s.ProviderStopped="provider.stopped",s.ProcessCrashed="process.crashed",s.ProcessRestartScheduled="process.restart_scheduled",s.ProcessRestarted="process.restarted",s.RecordingStarted="recording.started",s.RecordingStopped="recording.stopped",s.RecordingError="recording.error",s.RecordingHealthDegraded="recording.health.degraded",s.RecordingStorageCritical="recording.storage.critical",s.RecordingSegmentWritten="recording.segment.written",s.RecordingPolicyFallback="recording.policy.fallback",s.RecordingRetentionCompleted="recording.retention.completed",s.DetectionEvent="detection.event",s.SessionTrackNew="session.track.new",s.SessionTrackExpired="session.track.expired",s.BenchmarkProgress="benchmark.progress",s.PlatformProbePhase="platform-probe.phase",s.PipelineProgress="pipeline.progress",s.PipelineTrace="pipeline.trace",s.PipelineInferenceResult="pipeline.inference-result",s.PipelineCameraAssigned="pipeline.camera-assigned",s.PipelineCameraUnassigned="pipeline.camera-unassigned",s.PipelineCameraUpdated="pipeline.camera-updated",s.PipelineRunnerLoadSnapshot="pipeline.runner-load-snapshot",s.PipelineCameraMetricsSnapshot="pipeline.camera-metrics-snapshot",s.StreamBrokerMetricsSnapshot="stream-broker.metrics-snapshot",s.StreamBrokerOnCamStreamDemand="stream-broker.onCamStreamDemand",s.StreamBrokerOnCamStreamIdle="stream-broker.onCamStreamIdle",s.StreamBrokerOnRequestStreamSourceRefresh="stream-broker.onRequestStreamSourceRefresh",s.DeviceStateChanged="device.state-changed",s.BatteryOnStatusChanged="battery.onStatusChanged",s.DoorbellOnPressed="doorbell.onPressed",s.PipelineEngineMetricsSnapshot="pipeline.engine-metrics-snapshot",s.ClusterTopologySnapshot="cluster.topology-snapshot",s.MetricsNodeResourcesSnapshot="metrics.node-resources-snapshot",s.MetricsNodeProcessesSnapshot="metrics.node-processes-snapshot",s.CapabilityBindingChanged="capability.binding-changed",s.ModelDownloadProgress="model.download.progress",s.AgentRegistered="agent.registered",s.AgentUnregistered="agent.unregistered",s.AgentOnline="agent.online",s.AgentOffline="agent.offline",s.WorkerOnline="worker.online",s.WorkerOffline="worker.offline",s.AgentTaskDispatched="agent.task.dispatched",s.AgentTaskAssigned="agent.task.assigned",s.AgentTrpcConnected="agent.trpc.connected",s.AgentWsConnected="agent.ws.connected",s.AgentWsDisconnected="agent.ws.disconnected",s.AgentBackupActivated="agent.backup.activated",s.OrchestrationSettingsUpdated="orchestration.settings-updated",s.PipelineAgentHwaccelChanged="pipeline.agent-hwaccel-changed",s.MotionAnalysis="detection.motion-analysis",s.MotionZonesRaw="detection.motion-zones-raw",s.MotionOnMotionChanged="motion.on-motion-changed",s.DetectionResult="detection.result",s.DetectionRaw="detection.raw",s.DetectionCameraNative="detection.camera-native",s.PipelineAudioInferenceResult="pipeline.audio-inference-result",s.DetectionPhaseTransition="detection.phase-transition",s.ProviderMotion="provider.motion",s.ProviderDetection="provider.detection",s.EnrichmentEmbeddingStored="enrichment.embedding.stored",s.EnrichmentSceneStateChanged="enrichment.scene.state-changed",s.EnrichmentActivitySummary="enrichment.activity.summary",s.PipelineAnalyticsTrackStarted="pipeline-analytics.track-started",s.PipelineAnalyticsTrackEnded="pipeline-analytics.track-ended",s.PipelineAnalyticsDetectionEvent="pipeline-analytics.detection-event",s.PipelineAnalyticsFrameTracked="pipeline-analytics.frame-tracked",s.FrigateLiveEvent="frigate.live-event",s.CameraStreamsProfileSlotsChanged="camera-streams.onProfileSlotsChanged",s.StreamOnline="stream.online",s.StreamOffline="stream.offline",s.NetworkTunnelStarted="network.tunnel.started",s.NetworkTunnelStopped="network.tunnel.stopped",s.LocalNetworkChanged="network.local.changed",s.BackupCompleted="backup.completed",s.BackupRestored="backup.restored",s.NotificationDispatched="notification.dispatched",s.NotificationFailed="notification.failed",s.DeviceUpdated="device.updated",s.DeviceOnline="device.online",s.DeviceOffline="device.offline",s.DeviceAwake="device.awake",s.DeviceSleeping="device.sleeping",s.RetentionCleanup="retention.cleanup",s))(Ae||{});function eu(s,o){return s.category===o}function Dn(s,o,n){return{id:typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2),timestamp:new Date,source:o,category:s,data:n}}function Fd(s,o){const n=o.ts??Date.now();s.emit(Dn("system.ready-state",{type:"capability",id:o.capName,nodeId:o.sourceNodeId},{capName:o.capName,scope:o.scope,state:o.state,generation:o.generation,sourceNodeId:o.sourceNodeId,ts:n}))}class Hd{_ctx=null;_config;_readinessGeneration=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14);_registeredCapNames=[];defaults;constructor(o){this.defaults=o,this._config={...o}}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(o){this._ctx=o,await this.resolveConfig();const n=await this.onInitialize();this.emitLifecycle(Ae.AddonStarted);const d=Wd(n),u=d&&"providers"in d&&d.providers?d.providers:[];return this._registeredCapNames=u.map(g=>g.capability.name),d}postBrokerStart(){this.autoEmitReadiness&&this._registeredCapNames.length>0&&this.emitReadinessForProviders("ready")}async onHubReachable(){}async shutdown(){this.emitLifecycle(Ae.AddonStopped),this.autoEmitReadiness&&this.emitReadinessForProviders("down"),await this.onShutdown();for(const o of this._subscriptions)o();this._subscriptions=[],this._ctx=null}async onShutdown(){}async onConfigChanged(){}field(o){return o}schema(o){return o}globalSettingsSchema(){return null}deviceSettingsSchema(){return null}async getGlobalSettings(o){const n=this.globalSettingsSchema();if(!n)return{sections:[]};const d=await this._ctx?.settings?.readAddonStore()??{};return Qt(n,o?{...d,...o}:d)}async updateGlobalSettings(o){await this._ctx?.settings?.writeAddonStore(o),await this.resolveConfig(),await this.onConfigChanged(),this.emitLifecycle(Ae.AddonUpdated,{level:"global"}),this.maybeAutoRestart(o,this.globalSettingsSchema())}maybeAutoRestart(o,n){if(!n)return;const d=new Set;for(const m of n.sections)for(const h of m.fields)h.type==="separator"||h.type==="info"||h.requiresRestart&&d.add(h.key);if(d.size===0||!Object.keys(o).some(m=>d.has(m)))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(o).filter(h=>d.has(h))}})}).catch(h=>{g.logger.error("addon auto-restart failed",{meta:{error:h instanceof Error?h.message:String(h)}})})})}async getDeviceSettings(o){const n=this.deviceSettingsSchema();if(!n)return{sections:[]};const d=await this._ctx?.settings?.readDeviceStore(o)??{};return Qt(n,d)}async updateDeviceSettings(o,n){await this._ctx?.settings?.writeDeviceStore(o,n)}_subscriptions=[];watchCapability(o,n){const d=Array.isArray(o)?o:[o],u=new Set(d);this.subscribe({category:"system.ready-state"},g=>{const y=g.data;if(typeof y.capName!="string"||!u.has(y.capName)||y.scope?.type!=="node")return;const m=y.scope.nodeId;if(typeof m!="string"||m.length===0)return;const h=y.capName;y.state==="down"?n.onDown?.(m,h):y.state==="ready"&&n.onReady?.(m,h)})}subscribe(o,n){const d=this.ctx.eventBus.subscribe(o,n);this._subscriptions.push(d)}emitLifecycle(o,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:o,data:n??{}})}catch{}}emitReadinessForProviders(o){const n=this._ctx;if(!n||this._registeredCapNames.length===0)return;const d=n.kernel?.localNodeId??"hub",u=d.includes("/")?d.split("/")[0]:d;for(const g of this._registeredCapNames)try{Fd(n.eventBus,{capName:g,scope:{type:"node",nodeId:u},state:o,generation:this._readinessGeneration,sourceNodeId:u})}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 o=await this.readAddonStoreWithRetry(),n={...this.defaults};for(const d of Object.keys(this.defaults)){const u=o[d];if(u!=null){const g=typeof this.defaults[d];typeof u===g&&(n[d]=u)}}this._config=n}async readAddonStoreWithRetry(){const o=this._ctx?.settings;if(!o)return{};const n=[150,350,600,900];let d;for(let u=0;u<=n.length;u++)try{return await o.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(u===n.length)break;await new Promise(h=>setTimeout(h,n[u]))}return this._ctx?.logger?.warn?.("readAddonStore: settings-store unavailable after retries — using defaults",{meta:{error:d instanceof Error?d.message:String(d)}}),{}}}function Wd(s){if(s!=null)return Array.isArray(s)?{providers:s}:s}class $d extends Error{capName;scope;waitedMs;constructor(o,n,d){super(`Timed out waiting for ${o} (${le(n)}) to become ready after ${d}ms`),this.name="ReadinessTimeoutError",this.capName=o,this.scope=n,this.waitedMs=d}}function Ze(s,o){return`${s}|${le(o)}`}function le(s){switch(s.type){case"global":return"global";case"node":return`node:${s.nodeId}`;case"device":return`device:${s.deviceId}`}}function Ye(s,o){return s.type!==o.type?!1:s.type==="global"||o.type==="global"?!0:s.type==="node"&&o.type==="node"?s.nodeId===o.nodeId:s.type==="device"&&o.type==="device"?s.deviceId===o.deviceId:!1}class tu{bus;sourceNodeId;logger;now;generation;snapshot=new Map;subscriptions=new Set;unsubscribeBus;unsubscribeAgentOffline;constructor(o){if(this.bus=o.eventBus,this.sourceNodeId=o.sourceNodeId,this.logger=o.logger,this.now=o.now??(()=>Date.now()),this.generation=o.generation??jd(),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(o,n){return this.snapshot.get(Ze(o,n))??null}getSnapshotForTransport(){return Array.from(this.snapshot.values())}hydrate(o){const n=this.now();for(const d of o){const u=Ze(d.capName,d.scope);if(this.snapshot.has(u))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(u,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 m of this.subscriptions)if(m.capName===d.capName&&Ye(m.scope,d.scope))try{m.handler(y)}catch(h){this.logger?.warn(`readiness hydrate handler threw for ${d.capName}: ${h.message??String(h)}`)}}}getAll(){return new Map(this.snapshot)}emitReady(o,n){this.emitTransition(o,n,"ready")}emitStarting(o,n){this.emitTransition(o,n,"starting")}emitDown(o,n){this.emitTransition(o,n,"down")}awaitReady(o,n,d={}){const u=d.timeoutMs??Number.POSITIVE_INFINITY,g=this.now();return this.get(o,n)?.state==="ready"?Promise.resolve():d.signal?.aborted?Promise.reject(d.signal.reason??new Error("aborted")):new Promise((m,h)=>{let I=!1;const w=this.onReadyState(o,n,Z=>{Z.state==="ready"&&(I||(I=!0,O(),m()))}),N=!Number.isFinite(u)?null:setTimeout(()=>{I||(I=!0,O(),h(new $d(o,n,this.now()-g)))},u),M=()=>{I||(I=!0,O(),h(d.signal?.reason??new Error("aborted")))};d.signal?.addEventListener("abort",M,{once:!0});function O(){w(),N!==null&&clearTimeout(N),d.signal?.removeEventListener("abort",M)}})}onReadyState(o,n,d){const u={capName:o,scope:n,handler:d};this.subscriptions.add(u);const g=this.get(o,n);return g!==null&&queueMicrotask(()=>{this.subscriptions.has(u)&&d({capName:o,scope:n,state:g.state,epoch:g.epoch,generation:g.generation,sourceNodeId:this.sourceNodeId,ts:g.lastChange,durationInPrevState:0})}),()=>{this.subscriptions.delete(u)}}emitTransition(o,n,d){const u=this.now();this.bus.emit(Dn("system.ready-state",{type:"capability",id:o,nodeId:this.sourceNodeId},{capName:o,scope:n,state:d,generation:this.generation,sourceNodeId:this.sourceNodeId,ts:u}))}ingest(o){if(typeof o?.capName!="string"||o.state!=="ready"&&o.state!=="starting"&&o.state!=="down"||typeof o.generation!="string"||o.scope?.type!=="global"&&o.scope?.type!=="node"&&o.scope?.type!=="device")return;const n=Ze(o.capName,o.scope),d=this.snapshot.get(n)??null,u=this.now();let g;if(d===null?g=o.state==="ready"?1:0:d.generation!==o.generation&&o.state==="ready"?g=d.epoch+1:g=d.epoch,d!==null&&d.generation===o.generation&&d.state===o.state)return;const y=d===null?0:Math.max(0,u-d.lastChange),m={capName:o.capName,scope:o.scope,state:o.state,generation:o.generation,epoch:g,lastChange:u,sourceNodeId:o.sourceNodeId};this.snapshot.set(n,m);const h={capName:o.capName,scope:o.scope,state:o.state,epoch:g,generation:o.generation,sourceNodeId:o.sourceNodeId,ts:o.ts,durationInPrevState:y};this.logger&&this.logger.debug(`readiness: ${o.capName} (${le(o.scope)}) → ${o.state} epoch=${g} gen=${o.generation.slice(0,6)} (prev ${y}ms)`);for(const I of this.subscriptions)if(I.capName===o.capName&&Ye(I.scope,o.scope))try{I.handler(h)}catch(w){this.logger?.warn(`readiness handler threw for ${o.capName}: ${w.message??String(w)}`)}}synthesizeDownForNode(o){const n=this.now();for(const[d,u]of this.snapshot){if(u.state==="down"||!(u.scope.type==="node"&&u.scope.nodeId===o||u.scope.type==="device"&&u.sourceNodeId===o))continue;const y=Math.max(0,n-u.lastChange),m={...u,state:"down",lastChange:n};this.snapshot.set(d,m);const h={capName:u.capName,scope:u.scope,state:"down",epoch:u.epoch,generation:u.generation,sourceNodeId:this.sourceNodeId,ts:n,durationInPrevState:y};this.logger&&this.logger.debug(`readiness: ${u.capName} (${le(u.scope)}) → down (synthesized from agent.offline ${o})`);for(const I of this.subscriptions)if(I.capName===u.capName&&Ye(I.scope,u.scope))try{I.handler(h)}catch(w){this.logger?.warn(`readiness handler threw during agent.offline demux for ${u.capName}: ${w.message??String(w)}`)}}}}function jd(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14)}function au(s,o){for(const{capName:n,scope:d}of o)s.emitDown(n,d)}const nu=["data","media","recordings","recordings-high","recordings-low","recordings-clips","event-images","models","addons-data","cache","logs","backups"],iu={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"},Gd={high:"High",mid:"Mid",low:"Low"};function ou(s){return Gd[s]??s.charAt(0).toUpperCase()+s.slice(1)}function Vd(s){return(s.width??0)*(s.height??0)}function Kd(s){if(s.length===0)return[];const o=s.map((d,u)=>({s:d,i:u,px:Vd(d.metadata??{})})).sort((d,u)=>u.px-d.px),n=Array.from({length:s.length});for(let d=0;d<o.length;d++){const{s:u,i:g}=o[d];let y;d===0?y="high":d===o.length-1?y="low":y="mid",n[g]={...u,quality:y}}return n}function su(s){const o=s.height??0,n=s.width??0;return o>=1080||n>=1920?"high":o>=480||n>=640?"mid":"low"}function ru(s){const o=s.protocols.find(u=>u.type==="rtsp"&&u.url)??s.protocols.find(u=>u.url),n=o?.type,d=n==="rtsp"?"rtsp":n==="http"||n==="flv"?"http-mjpeg":"custom";return{id:s.id,label:s.label??s.id,protocol:d,url:o?.url,profileHint:s.quality}}function B(s){return typeof s=="string"}function Zd(s){return typeof s=="object"&&s!==null&&!Array.isArray(s)}function Yd(s){return B(s)&&s.trim()?{url:s}:Zd(s)&&B(s.url)&&s.url.trim()?{url:s.url,label:B(s.label)?s.label:void 0}:null}function cu(s){const o=B(s.snapshot_url)?s.snapshot_url:void 0;if(Array.isArray(s.streams)){const y=[];for(const m of s.streams){const h=Yd(m);h&&y.push(h)}return{streams:y,snapshot_url:o}}const n=[],d=B(s.main_stream_url)?s.main_stream_url:void 0;d&&n.push({url:d,label:B(s.main_stream_name)?s.main_stream_name:void 0});const u=B(s.sub_stream_url)?s.sub_stream_url:void 0;u&&n.push({url:u,label:B(s.sub_stream_name)?s.sub_stream_name:void 0});const g=B(s.third_stream_url)?s.third_stream_url:void 0;return g&&n.push({url:g,label:B(s.third_stream_name)?s.third_stream_name:void 0}),{streams:n,snapshot_url:o}}function du(s){if(s.length===0)return{};const o=Kd(s),n={},d=o.find(m=>m.quality==="high"),u=o.find(m=>m.quality==="mid"),g=o.find(m=>m.quality==="low");d&&(n.high=d.id),u&&(n.mid=u.id),g&&(n.low=g.id);const y=d??u??g??o[0];return y&&(n.high||(n.high=y.id),n.mid||(n.mid=y.id),n.low||(n.low=y.id)),n}const lu={streaming:!0,notifications:!0,objectDetection:!1,remoteAccess:!0,agentCluster:!1,smartHome:!0,recordings:!0,backup:!0,repl:!0},uu=["face","plate"],mu=["face","plate","clip","custom"],pu={cleanupIntervalMs:3600*1e3,detectionEventsDays:30,audioLevelsDays:7,snapshotsDays:14};var Qd=(s=>(s.Addon="addon",s.Core="core",s.Device="device",s.Provider="provider",s.System="system",s))(Qd||{});const Jd="camstack/camstack-models",gu=`https://huggingface.co/${Jd}/resolve/main`,hu={"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 Mn(s){return JSON.parse(s)}function Xd(s){return s===null||typeof s!="object"||Array.isArray(s)?null:{...s}}function vu(s){return Array.isArray(s)?s:[]}function yu(s,o=""){return typeof s=="string"?s:o}function fu(s,o=0){return typeof s=="number"?s:o}function Su(s,o=!1){return typeof s=="boolean"?s:o}function bu(s){try{return Xd(Mn(s))}catch{return null}}function Iu(s){try{const o=Mn(s);return Array.isArray(o)?o:null}catch{return null}}function ku(s,o){return`https://huggingface.co/${s}/resolve/main/${o}`}function wu(s,o){if(s.length!==o.length)return 0;let n=0,d=0,u=0;for(let y=0;y<s.length;y++)n+=s[y]*o[y],d+=s[y]*s[y],u+=o[y]*o[y];const g=Math.sqrt(d)*Math.sqrt(u);return g===0?0:n/g}class Au{constructor(o,n){this.elementId=o,this.getBackend=typeof n=="function"?n:()=>n}cache={};listeners=new Set;loaded=!1;getBackend;async ensureLoaded(){if(this.loaded)return;const o=this.getBackend();if(!o)throw new Error(`ElementConfigStore(${this.elementId}): settings backend not available`);const n=await o.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(o){const n=o.split(".");let d=this.cache;for(const u of n){if(d===null||typeof d!="object"||Array.isArray(d))return;d=Reflect.get(d,u)}return d}async set(o,n){await this.ensureLoaded(),el(this.cache,o,n),await this.persist(),this.notifyListeners()}async setAll(o){await this.ensureLoaded(),this.cache={...o},await this.persist(),this.notifyListeners()}onChange(o){return this.listeners.add(o),()=>{this.listeners.delete(o)}}async load(){await this.ensureLoaded()}async loadDefaults(o){await this.ensureLoaded(),Object.keys(this.cache).length===0&&(this.cache={...o},await this.persist())}async persist(){const o=this.getBackend();if(!o)throw new Error(`ElementConfigStore(${this.elementId}): settings backend not available — cannot persist config`);await o.set({collection:"config",key:this.elementId,value:this.cache})}notifyListeners(){const o=this.getAll();for(const n of this.listeners)try{n(o)}catch{}}}function el(s,o,n){const d=o.split(".");let u=s;for(let g=0;g<d.length-1;g++){const y=d[g],m=u[y];if(m===null||typeof m!="object"||Array.isArray(m)){const h={};u[y]=h,u=h}else u=m}u[d[d.length-1]]=n}const En={cpu:"onnx",coreml:"onnx",cuda:"onnx",tensorrt:"onnx","onnx-py":"onnx",pytorch:"pt",openvino:"openvino"},tl={onnx:"onnx",coreml:"coreml",openvino:"openvino",tflite:"tflite",pytorch:"pt"},al={coreml:"coreml_inference.py",pytorch:"pytorch_inference.py",openvino:"openvino_inference.py"};function nl(s,o){return s==="node"?"onnx":{coreml:"coreml",openvino:"openvino",pytorch:"pytorch","onnx-py":"onnx",cpu:"onnx"}[o]??o}function Cu(s,o){return s==="node"?En[o]??"onnx":{coreml:"coreml",openvino:"openvino",pytorch:"pt","onnx-py":"onnx",cpu:"onnx"}[o]??"onnx"}function Nu(s,o){return!s||s==="auto"?"auto":nl(s,o??"cpu")}function Pu(s){return En[s]??"onnx"}function Du(s){return tl[s]}function Mu(s){return al[s]}function Eu(s){return s==="coreml"||s==="pytorch"||s==="openvino"}async function Tu(s,o){const n=performance.now();try{return{output:o!==void 0?await il(s(),o):await s(),durationMs:_a(performance.now()-n),ok:!0}}catch(d){return{output:void 0,durationMs:_a(performance.now()-n),ok:!1,error:ei(d)}}}function _a(s){return Math.round(s*100)/100}function il(s,o){return new Promise((n,d)=>{const u=setTimeout(()=>d(new Error(`Inference timeout after ${o}ms`)),o);s.then(g=>{clearTimeout(u),n(g)}).catch(g=>{clearTimeout(u),d(g)})})}const Ru=[{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"}],xu=[{id:"person",name:"Person"},{id:"vehicle",name:"Vehicle"},{id:"animal",name:"Animal"}],Bu={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},Ou={camera:{type:"camera",label:"Camera",icon:"camera"}};class ue{schema;data;persistFn;constructor(o,n,d){this.schema=o,this.data=n,this.persistFn=d}static fromSchema(o,n,d={},u){const g=o.safeParse(d);if(g.success)return new ue(o,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 m={...d};for(const w of y)delete m[w];const h=o.safeParse(m);if(u?.({droppedKeys:[...y],issues:g.error.issues}),h.success)return n(h.data).catch(()=>{}),new ue(o,h.data,n);const I=o.parse({});return new ue(o,I,n)}get values(){return this.data}get(o){return this.data[o]}async set(o,n){const d=this.schema.parse({...this.data,[o]:n});this.data=d,await this.persistFn(this.data)}async setAll(o){const n=this.schema.parse({...this.data,...o});this.data=n,await this.persistFn(this.data)}async deleteKey(o){const{[o]:n,...d}=this.data,u=this.schema.parse(d);this.data=u,await this.persistFn(this.data)}entries(){const o=this.schema.shape;return Object.entries(o).map(([n,d])=>({key:n,schema:d,value:this.data[n],description:d.description}))}}class Et{writer;pendingWrites=new Set;slices;schemas=new Map;listeners=new Set;capListeners=new Map;constructor(o,n){this.writer=n,this.slices=new Map;for(const[d,u]of Object.entries(o))u&&typeof u=="object"&&!Array.isArray(u)&&this.slices.set(d,{...u})}static fromInitial(o,n){return new Et(o,n)}installCapSchema(o,n){const d=this.schemas.get(o);if(d){if(d!==n)throw new Error(`[DeviceRuntimeState] capability "${o}" registered a different runtime-state schema; each cap must declare ONE shape across every provider`);return}this.schemas.set(o,n);const u=this.slices.get(o);if(u){const g=n.safeParse(u);g.success?this.slices.set(o,g.data):this.slices.delete(o)}}getCapState(o){const n=this.slices.get(o);if(n)return Object.freeze({...n})}getCapField(o,n){return this.slices.get(o)?.[n]}setCapState(o,n){this.applyCapWrite(o,n,!1)}patchCapState(o,n){this.applyCapWrite(o,n,!0)}applyCapWrite(o,n,d){const u=this.schemas.get(o);if(!u)throw new Error(`[DeviceRuntimeState] no schema registered for cap "${o}" — did the device register it via ctx.registerNativeCap before writing?`);const g=this.slices.get(o)??{},y=d?{...g,...n}:{...n},m=u.parse(y);if(ol(g,m))return;this.slices.set(o,m),this.fireListeners([o]);const h=this.writer(o,{...m}).catch(()=>{});this.pendingWrites.add(h),h.finally(()=>{this.pendingWrites.delete(h)})}fireListeners(o){const n=this.snapshot();for(const d of this.listeners)try{d(o,n)}catch{}for(const d of o){const u=this.capListeners.get(d);if(!u)continue;const g=this.getCapState(d);for(const y of u)try{y(g)}catch{}}}subscribe(o){return this.listeners.add(o),()=>{this.listeners.delete(o)}}subscribeCap(o,n){let d=this.capListeners.get(o);d||(d=new Set,this.capListeners.set(o,d));const u=g=>{n(g)};return d.add(u),()=>{const g=this.capListeners.get(o);g&&(g.delete(u),g.size===0&&this.capListeners.delete(o))}}snapshot(){const o={};for(const[n,d]of this.slices)o[n]=Object.freeze({...d});return Object.freeze(o)}async flush(){if(this.pendingWrites.size===0)return;const o=[...this.pendingWrites];await Promise.allSettled(o)}}function ol(s,o){const n=Object.keys(s),d=Object.keys(o);if(n.length!==d.length)return!1;for(const u of n)if(s[u]!==o[u])return!1;return!0}const Qe="lastFetchedAt";function qu(s){const{runtimeState:o,cap:n,ownDeviceId:d,refresh:u,staleMs:g,empty:y}=s,m=async()=>{const w=o.getCapState(n.name),A=typeof w?.[Qe]=="number"?w[Qe]:0;(!w||Date.now()-A>g)&&await u()},h=()=>{const w=o.getCapState(n.name);if(!w)return y();const{[Qe]:A,...N}=w;return N};return{ensureFresh:m,getStatus:async({deviceId:w})=>{if(w!==d)throw new Error(`${n.name}: deviceId mismatch, expected ${d}, got ${w}`);return await m(),h()}}}const sl={audioMetrics:ja,battery:Ga,brightness:Va,cameraStreams:Za,deviceDiscovery:Ya,deviceStatus:kt,doorbell:Qa,featureProbe:wt,motion:en,motionTrigger:an,ptzAutotrack:nn,switch:on,zoneAnalytics:sn,zoneRules:rn,zones:Ja};class zu{id;stableId;type;name;parentDeviceId;role;get online(){return this.runtimeState.getCapState("device-status")?.online??!1}set online(o){this.markOnline(o)}get state(){if(!this._stateProxyCache){const o={},n={get:(d,u)=>{const g=u;if(g in o)return o[g];const y=sl[g];if(!y)return;const m=this.sliceProxy(y);return o[g]=m,m}};this._stateProxyCache=new Proxy(o,n)}return this._stateProxyCache}_stateProxyCache;config;runtimeState;ctx;location;disabled;constructor(o,n,d){if(this.ctx=o,this.id=o.id,this.stableId=o.stableId,this.type=d.type,!o.deviceMeta)throw new Error(`BaseDevice constructor: ctx.deviceMeta is required (id=${o.id} stableId=${o.stableId})`);this.name=o.deviceMeta.name,this.location=o.deviceMeta.location,this.disabled=o.deviceMeta.disabled,this.role=d.role,this.parentDeviceId=o.parentDeviceId;const u=o.persistedConfig??{};this.config=ue.fromSchema(n,w=>o.persistConfig(w),u,({droppedKeys:w,issues:A})=>{o.logger.warn("Device config recovery: dropping invalid persisted fields",{tags:{deviceId:o.id,stableId:o.stableId},meta:{droppedKeys:[...w],firstIssue:A[0]?.message??null}})});let g=null;const y=async(w,A)=>{g||(g=o.fetchDevice(o.id)),await(await g).deviceState.setCapSlice({capName:w,slice:A})},m=o.initialRuntimeState??{};this.runtimeState=Et.fromInitial(m,y),o.bindRuntimeState?.(this.runtimeState),o.registerNativeCap?.(kt,{});const h={online:!1,lastChangedAt:Date.now()};this.runtimeState.setCapState("device-status",h),o.registerNativeCap?.(wt,{});const I={flags:{},deviceType:null,model:null,channelCount:null,lastProbedAt:0,lastFetchedAt:0};this.runtimeState.setCapState("feature-probe",I)}async removeDevice(){}markOnline(o){if(this.online===o)return;const n={online:o,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(o){return this.runtimeState.getCapState(o.name)??null}setCapSlice(o,n){this.runtimeState.setCapState(o.name,n)}sliceProxy(o){const n={},d={get:(u,g)=>this.runtimeState.getCapState(o.name)?.[g],set:(u,g,y)=>(this.runtimeState.patchCapState(o.name,{[g]:y}),!0),has:(u,g)=>{const y=this.runtimeState.getCapState(o.name);return y?g in y:!1},ownKeys:()=>{const u=this.runtimeState.getCapState(o.name);return u?Object.keys(u):[]},getOwnPropertyDescriptor:(u,g)=>{const y=this.runtimeState.getCapState(o.name);if(!(!y||!(g in y)))return{configurable:!0,enumerable:!0,value:y[g]}}};return new Proxy(n,d)}getSettingsUISchema(){return{sections:[]}}async applySettingsPatch(o){await this.config.setAll(o)}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 rl(s,o){const n={};for(const d of s.config.entries())n[d.key]=d.value;return{id:s.id,stableId:s.stableId,addonId:o,type:String(s.type),name:s.name,parentDeviceId:s.parentDeviceId,online:s.online,features:[...s.features],config:n}}class Lu extends Hd{async onInitialize(){return this.ctx.logger.info(`${this.providerName} Provider initialized`),[{capability:cn,provider:this}]}async onShutdown(){const o=await this.ctx.kernel.devices?.getAll()??[];for(const n of o)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:o.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(o){throw new Error(`${this.providerName} provider does not support discovery-based adoption`)}async supportsManualCreation(){return!0}async getChildCreationSchema(o){return this.onGetCreationSchema(o.type)}async createDevice(o){const n=await this.onCreateDevice(o.type,o.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 u=this.generateStableId(n.meta.type,n.config),g=await this.ctx.kernel.devices.create(u,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:u},meta:{error:y instanceof Error?y.message:String(y)}})}return this.toSummary(g)}generateStableId(o,n){return`${this.addonId}-${Date.now()}`}async testCreationField(o){return{status:"ok",labels:["probe not implemented"]}}async restoreDevices(o){await this.onRestoreDevices(o),o.length>0&&this.ctx.logger.info(`Restored ${o.length} ${this.providerName} device(s)`)}async onRestoreDevices(o){const n=new Set;for(const u of o){if(u.parentDeviceId!==null)continue;const g=this.deviceClasses[u.type];if(!g){this.ctx.logger.warn("No device class registered for restored type — skipping",{tags:{stableId:u.stableId},meta:{type:u.type}});continue}try{await this.ctx.kernel.devices.create(u.stableId,g,{}),n.add(u.id)}catch(y){this.ctx.logger.warn("Failed to restore device",{tags:{stableId:u.stableId},meta:{type:u.type,error:y instanceof Error?y.message:String(y)}})}}const d=o.filter(u=>u.parentDeviceId!==null);for(const u of d){const g=this.deviceClasses[u.type];if(g&&u.parentDeviceId!==null&&n.has(u.parentDeviceId))try{await this.ctx.kernel.devices.create(u.stableId,g,{},u.parentDeviceId),n.add(u.id)}catch(y){this.ctx.logger.warn("Failed to restore hub-adopted child",{tags:{stableId:u.stableId,parentDeviceId:u.parentDeviceId},meta:{type:u.type,error:y instanceof Error?y.message:String(y)}})}}}toSummary(o){return rl(o,this.addonId)}}function me(s){return s.def}function _u(s,o="Configuration",n="main"){const d=s.map(u=>cl(u.key,u.schema,u.description));return{sections:[{id:n,title:o,fields:d}]}}function cl(s,o,n){const d=Ce(o),u=pl(o),g=n??Tn(s),y={key:s,label:g,description:n,default:u};return d instanceof Fn?dl(s,y):d instanceof Hn?ll(d,y):d instanceof Wn?{...y,type:"boolean"}:d instanceof $n?ml(d,y):d instanceof jn||d instanceof Gn?{...y,type:"textarea",rows:6,isJson:!0}:{...y,type:"text"}}function dl(s,o){const n=s.toLowerCase();return n.includes("password")||n.includes("secret")||n.includes("token")||n.includes("apikey")||n.includes("api_key")?{...o,type:"password",showToggle:!0}:{...o,type:"text"}}function ll(s,o){const n=s,d=n.minValue,u=n.maxValue,g=d!=null&&isFinite(d)?d:void 0,y=u!=null&&isFinite(u)?u:void 0,m=ul(s);return{...o,type:"number",...g!==void 0?{min:g}:{},...y!==void 0?{max:y}:{},...m!==void 0?{step:m}:{}}}function ul(s){const n=me(s).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 ml(s,o){const n=s.options.map(u=>String(u));return{...o,type:"select",options:n.map(u=>({label:Tn(u),value:u}))}}function Ce(s){return s instanceof Wa||s instanceof Vn||s instanceof Kn?Ce(me(s).innerType):s}function pl(s){if(s instanceof Wa)return me(s).defaultValue}function Tn(s){return s.replace(/([A-Z])/g," $1").replace(/[_-]/g," ").replace(/^\w/,o=>o.toUpperCase()).trim()}const gl="device.state-changed";function Rn(s){const o=new Map,n=new Map;let d=null;const u=(m,h)=>`${m}:${h}`,g=()=>{d||s.live?.onEvent&&(d=s.live.onEvent.subscribe({category:gl},{onData:m=>{const h=m.data;if(!h||typeof h.deviceId!="number"||typeof h.capName!="string")return;const I=u(h.deviceId,h.capName);o.set(I,h.slice);const w=n.get(I);if(w)for(const A of w)try{A(h.slice)}catch{}}}))},y=()=>{d&&(n.size>0||(d.unsubscribe(),d=null))};return{read(m,h){return o.get(u(m,h))},async refresh(m,h){const I=await s.deviceState.getCapSlice.query({deviceId:m,capName:h}),w=u(m,h);o.set(w,I??void 0);const A=n.get(w);if(A)for(const N of A)try{N(I??void 0)}catch{}},watch(m,h,I){const w=u(m,h);let A=n.get(w);return A||(A=new Set,n.set(w,A)),A.add(I),g(),()=>{A.delete(I),A.size===0&&n.delete(w),y()}},async write(m,h,I){await s.deviceState.setCapSlice.mutate({deviceId:m,capName:h,slice:I})}}}function hl(s,o,n){const d=(u,g)=>`${u}:${g}`;return{read(u,g){return s.get(u)?.get(g)},async refresh(){},watch(u,g,y){const m=d(u,g);let h=o.get(m);return h||(h=new Set,o.set(m,h)),h.add(y),()=>{h.delete(y),h.size===0&&o.delete(m)}},async write(u,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:u,capName:g,slice:y})}}}function T(s,o,n){const d=vl(s)?s:Rn(s);return{get value(){return d.read(o,n)},refresh(){return d.refresh(o,n)},subscribe(u){const g=d.watch(o,n,y=>{try{u(y)}catch{}});try{u(d.read(o,n))}catch{}return d.read(o,n)===void 0&&d.refresh(o,n).catch(()=>{}),g},async set(u){await d.write(o,n,u)},async patch(u){const y={...d.read(o,n)??{},...u};await d.write(o,n,y)}}}function vl(s){return typeof s.read=="function"&&typeof s.watch=="function"}function yl(s,o,n){const d=s,u=n?.stateSource??Rn(s);function g(c,q){const z=typeof c=="object"&&c!==null?c:{};return q!==void 0?{...z,deviceId:o.deviceId,nodeId:q}:{...z,deviceId:o.deviceId}}function y(c,q,z,W,oe){const ye=d[c]?.[q];if(!ye)throw new Error(`DeviceProxy: api has no '${c}.${q}'`);const se=ye;return z==="mutation"?se.mutate(W):z==="subscription"?se.subscribe(W,oe):se.query(W)}function m(c,q,z,W,oe,ye){const se=o.entries.find(Ln=>Ln.capName===c);return y(q,z,W,g(oe,se?.providerNodeId),ye)}function h(c,q,z,W,oe){return y(c,q,z,g(W,void 0),oe)}const I={getStatus:c=>m("accessories","accessories","getStatus","query",c)},w={resolveDeviceSettings:c=>m("audio-analysis","audioAnalysis","resolveDeviceSettings","query",c),getDeviceSettingsContribution:c=>m("audio-analysis","audioAnalysis","getDeviceSettingsContribution","query",c),getDeviceLiveContribution:c=>m("audio-analysis","audioAnalysis","getDeviceLiveContribution","query",c),applyDeviceSettingsPatch:c=>m("audio-analysis","audioAnalysis","applyDeviceSettingsPatch","mutation",c)},A={getCurrentSnapshot:c=>m("audio-metrics","audioMetrics","getCurrentSnapshot","query",c),getHistory:c=>m("audio-metrics","audioMetrics","getHistory","query",c)},N={getStatus:c=>m("battery","battery","getStatus","query",c)},M={setBrightness:c=>m("brightness","brightness","setBrightness","mutation",c),getStatus:c=>m("brightness","brightness","getStatus","query",c)},O={getCredentials:c=>m("camera-credentials","cameraCredentials","getCredentials","query",c),getStatus:c=>m("camera-credentials","cameraCredentials","getStatus","query",c)},Z={getCameraStreams:c=>m("camera-streams","cameraStreams","getCameraStreams","query",c),getBrokerStreams:c=>m("camera-streams","cameraStreams","getBrokerStreams","query",c),getRtspEntries:c=>m("camera-streams","cameraStreams","getRtspEntries","query",c)},ae={getDeviceSettingsContribution:c=>m("detection-pipeline","detectionPipeline","getDeviceSettingsContribution","query",c),getDeviceLiveContribution:c=>m("detection-pipeline","detectionPipeline","getDeviceLiveContribution","query",c),applyDeviceSettingsPatch:c=>m("detection-pipeline","detectionPipeline","applyDeviceSettingsPatch","mutation",c)},Y={listDiscovered:c=>m("device-discovery","deviceDiscovery","listDiscovered","query",c),refreshDiscovery:c=>m("device-discovery","deviceDiscovery","refreshDiscovery","mutation",c),adoptDevice:c=>m("device-discovery","deviceDiscovery","adoptDevice","mutation",c),releaseDevice:c=>m("device-discovery","deviceDiscovery","releaseDevice","mutation",c),getStatus:c=>m("device-discovery","deviceDiscovery","getStatus","query",c)},Tt={getStreamSources:c=>m("device-ops","deviceOps","getStreamSources","query",c),getConfigEntries:c=>m("device-ops","deviceOps","getConfigEntries","query",c),setConfig:c=>m("device-ops","deviceOps","setConfig","mutation",c),removeDevice:c=>m("device-ops","deviceOps","removeDevice","mutation",c),getSettingsSchema:c=>m("device-ops","deviceOps","getSettingsSchema","query",c)},Rt={getStatus:c=>m("device-status","deviceStatus","getStatus","query",c)},xt={getStatus:c=>m("doorbell","doorbell","getStatus","query",c)},Bt={getEvents:c=>m("events","events","getEvents","query",c),getEventThumbnail:c=>m("events","events","getEventThumbnail","query",c),getEventClipUrl:c=>m("events","events","getEventClipUrl","query",c)},Ot={getStatus:c=>m("feature-probe","featureProbe","getStatus","query",c)},qt={startSession:c=>m("intercom","intercom","startSession","mutation",c),handleAnswer:c=>m("intercom","intercom","handleAnswer","mutation",c),stopSession:c=>m("intercom","intercom","stopSession","mutation",c),getStatus:c=>m("intercom","intercom","getStatus","query",c)},zt={isDetected:c=>m("motion","motion","isDetected","query",c),getStatus:c=>m("motion","motion","getStatus","query",c)},Lt={analyze:c=>m("motion-detection","motionDetection","analyze","mutation",c),removeCamera:c=>m("motion-detection","motionDetection","removeCamera","mutation",c),reset:c=>m("motion-detection","motionDetection","reset","mutation",c),getDeviceSettingsContribution:c=>m("motion-detection","motionDetection","getDeviceSettingsContribution","query",c),getDeviceLiveContribution:c=>m("motion-detection","motionDetection","getDeviceLiveContribution","query",c),applyDeviceSettingsPatch:c=>m("motion-detection","motionDetection","applyDeviceSettingsPatch","mutation",c)},_t={setMotionTrigger:c=>m("motion-trigger","motionTrigger","setMotionTrigger","mutation",c),getStatus:c=>m("motion-trigger","motionTrigger","getStatus","query",c)},Ut={getStatus:c=>m("native-object-detection","nativeObjectDetection","getStatus","query",c)},Ft={setOverlay:c=>m("osd","osd","setOverlay","mutation",c),getStatus:c=>m("osd","osd","getStatus","query",c)},Ht={getActiveTracks:c=>m("pipeline-analytics","pipelineAnalytics","getActiveTracks","query",c),getTrack:c=>m("pipeline-analytics","pipelineAnalytics","getTrack","query",c),listTracks:c=>m("pipeline-analytics","pipelineAnalytics","listTracks","query",c),clearTracks:c=>m("pipeline-analytics","pipelineAnalytics","clearTracks","mutation",c),getMotionEvents:c=>m("pipeline-analytics","pipelineAnalytics","getMotionEvents","query",c),getObjectEvents:c=>m("pipeline-analytics","pipelineAnalytics","getObjectEvents","query",c),getAudioEvents:c=>m("pipeline-analytics","pipelineAnalytics","getAudioEvents","query",c),getEventMedia:c=>m("pipeline-analytics","pipelineAnalytics","getEventMedia","query",c),getTrackMedia:c=>m("pipeline-analytics","pipelineAnalytics","getTrackMedia","query",c),getDeviceSettingsContribution:c=>m("pipeline-analytics","pipelineAnalytics","getDeviceSettingsContribution","query",c),getDeviceLiveContribution:c=>m("pipeline-analytics","pipelineAnalytics","getDeviceLiveContribution","query",c),applyDeviceSettingsPatch:c=>m("pipeline-analytics","pipelineAnalytics","applyDeviceSettingsPatch","mutation",c)},Wt={move:c=>m("ptz","ptz","move","mutation",c),continuousMove:c=>m("ptz","ptz","continuousMove","mutation",c),stop:c=>m("ptz","ptz","stop","mutation",c),getPresets:c=>m("ptz","ptz","getPresets","query",c),goToPreset:c=>m("ptz","ptz","goToPreset","mutation",c),goHome:c=>m("ptz","ptz","goHome","mutation",c),getPosition:c=>m("ptz","ptz","getPosition","query",c),getStatus:c=>m("ptz","ptz","getStatus","query",c)},$t={getStatus:c=>m("ptz-autotrack","ptzAutotrack","getStatus","query",c),setEnabled:c=>m("ptz-autotrack","ptzAutotrack","setEnabled","mutation",c),getSettings:c=>m("ptz-autotrack","ptzAutotrack","getSettings","query",c),setSettings:c=>m("ptz-autotrack","ptzAutotrack","setSettings","mutation",c)},jt={reboot:c=>m("reboot","reboot","reboot","mutation",c)},Gt={getSegments:c=>m("recording","recording","getSegments","query",c),getPlaybackUrl:c=>m("recording","recording","getPlaybackUrl","query",c),getThumbnailAt:c=>m("recording","recording","getThumbnailAt","query",c)},Vt={getSnapshot:c=>m("snapshot","snapshot","getSnapshot","query",c),invalidateCache:c=>m("snapshot","snapshot","invalidateCache","mutation",c),getStatus:c=>m("snapshot","snapshot","getStatus","query",c),getDeviceSettingsContribution:c=>m("snapshot","snapshot","getDeviceSettingsContribution","query",c),getDeviceLiveContribution:c=>m("snapshot","snapshot","getDeviceLiveContribution","query",c),applyDeviceSettingsPatch:c=>m("snapshot","snapshot","applyDeviceSettingsPatch","mutation",c)},Kt={setState:c=>m("switch","switch","setState","mutation",c),getStatus:c=>m("switch","switch","getStatus","query",c)},Zt={listStreams:c=>m("webrtc-session","webrtcSession","listStreams","query",c),createSession:c=>m("webrtc-session","webrtcSession","createSession","mutation",c),handleAnswer:c=>m("webrtc-session","webrtcSession","handleAnswer","mutation",c),closeSession:c=>m("webrtc-session","webrtcSession","closeSession","mutation",c),hasAdaptiveBitrate:c=>m("webrtc-session","webrtcSession","hasAdaptiveBitrate","query",c)},Yt={getCurrentSnapshot:c=>m("zone-analytics","zoneAnalytics","getCurrentSnapshot","query",c),getZoneHistory:c=>m("zone-analytics","zoneAnalytics","getZoneHistory","query",c),getCameraHistory:c=>m("zone-analytics","zoneAnalytics","getCameraHistory","query",c),getUnzonedHistory:c=>m("zone-analytics","zoneAnalytics","getUnzonedHistory","query",c)},i={listRules:c=>m("zone-rules","zoneRules","listRules","query",c),setRules:c=>m("zone-rules","zoneRules","setRules","mutation",c)},U={listZones:c=>m("zones","zones","listZones","query",c),addZone:c=>m("zones","zones","addZone","mutation",c),removeZone:c=>m("zones","zones","removeZone","mutation",c),updateZone:c=>m("zones","zones","updateZone","mutation",c)},he={getDeviceSettings:c=>h("addonSettings","getDeviceSettings","query",c),updateDeviceSettings:c=>h("addonSettings","updateDeviceSettings","mutation",c)},ne={loadConfig:c=>h("deviceManager","loadConfig","query",c),loadRuntimeState:c=>h("deviceManager","loadRuntimeState","query",c),loadMeta:c=>h("deviceManager","loadMeta","query",c),setName:c=>h("deviceManager","setName","mutation",c),setLocation:c=>h("deviceManager","setLocation","mutation",c),setMetadata:c=>h("deviceManager","setMetadata","mutation",c),setDisabled:c=>h("deviceManager","setDisabled","mutation",c),getDevice:c=>h("deviceManager","getDevice","query",c),getStreamSources:c=>h("deviceManager","getStreamSources","query",c),getConfigSchema:c=>h("deviceManager","getConfigSchema","query",c),getSettingsSchema:c=>h("deviceManager","getSettingsSchema","query",c),updateConfig:c=>h("deviceManager","updateConfig","mutation",c),enable:c=>h("deviceManager","enable","mutation",c),disable:c=>h("deviceManager","disable","mutation",c),remove:c=>h("deviceManager","remove","mutation",c),getStreamProfileMap:c=>h("deviceManager","getStreamProfileMap","query",c),setStreamProfileMap:c=>h("deviceManager","setStreamProfileMap","mutation",c),probeStreams:c=>h("deviceManager","probeStreams","mutation",c),getBindings:c=>h("deviceManager","getBindings","query",c),getAllBindings:c=>h("deviceManager","getAllBindings","query",c),setWrapperActive:c=>h("deviceManager","setWrapperActive","mutation",c),getDeviceSettingsAggregate:c=>h("deviceManager","getDeviceSettingsAggregate","query",c),getDeviceLiveInfoAggregate:c=>h("deviceManager","getDeviceLiveInfoAggregate","query",c),getDeviceAggregate:c=>h("deviceManager","getDeviceAggregate","query",c),updateDeviceField:c=>h("deviceManager","updateDeviceField","mutation",c),updateDeviceFieldsBatch:c=>h("deviceManager","updateDeviceFieldsBatch","mutation",c),testField:c=>h("deviceManager","testField","mutation",c),getDeviceStatusAggregate:c=>h("deviceManager","getDeviceStatusAggregate","query",c)},Re={getSnapshot:c=>h("deviceState","getSnapshot","query",c),getCapSlice:c=>h("deviceState","getCapSlice","query",c),setCapSlice:c=>h("deviceState","setCapSlice","mutation",c)},ve={getDeviceStats:c=>h("networkQuality","getDeviceStats","query",c),reportClientStats:c=>h("networkQuality","reportClientStats","mutation",c)},ie={runPipeline:c=>h("pipelineExecutor","runPipeline","mutation",c),runPipelineBatch:c=>h("pipelineExecutor","runPipelineBatch","mutation",c)},xn={assignPipeline:c=>h("pipelineOrchestrator","assignPipeline","mutation",c),unassignPipeline:c=>h("pipelineOrchestrator","unassignPipeline","mutation",c),getPipelineAssignment:c=>h("pipelineOrchestrator","getPipelineAssignment","query",c),getCameraMetrics:c=>h("pipelineOrchestrator","getCameraMetrics","query",c),assignDecoder:c=>h("pipelineOrchestrator","assignDecoder","mutation",c),unassignDecoder:c=>h("pipelineOrchestrator","unassignDecoder","mutation",c),assignAudio:c=>h("pipelineOrchestrator","assignAudio","mutation",c),unassignAudio:c=>h("pipelineOrchestrator","unassignAudio","mutation",c),getAudioAssignment:c=>h("pipelineOrchestrator","getAudioAssignment","query",c),getAudioAssignments:c=>h("pipelineOrchestrator","getAudioAssignments","query",c),getDecoderAssignment:c=>h("pipelineOrchestrator","getDecoderAssignment","query",c),getCameraSettings:c=>h("pipelineOrchestrator","getCameraSettings","query",c),setCameraStepToggle:c=>h("pipelineOrchestrator","setCameraStepToggle","mutation",c),getCameraStepOverrides:c=>h("pipelineOrchestrator","getCameraStepOverrides","query",c),setCameraStepOverride:c=>h("pipelineOrchestrator","setCameraStepOverride","mutation",c),setCameraPipelineForAgent:c=>h("pipelineOrchestrator","setCameraPipelineForAgent","mutation",c),resolvePipeline:c=>h("pipelineOrchestrator","resolvePipeline","query",c),getDeviceSettingsContribution:c=>h("pipelineOrchestrator","getDeviceSettingsContribution","query",c),getDeviceLiveContribution:c=>h("pipelineOrchestrator","getDeviceLiveContribution","query",c),applyDeviceSettingsPatch:c=>h("pipelineOrchestrator","applyDeviceSettingsPatch","mutation",c)},Bn={detachCamera:c=>h("pipelineRunner","detachCamera","mutation",c),getCameraMetrics:c=>h("pipelineRunner","getCameraMetrics","query",c)},On={getPolicyStatus:c=>h("recordingEngine","getPolicyStatus","query",c)},qn={supportsDevice:c=>h("snapshotProvider","supportsDevice","query",c),getSnapshot:c=>h("snapshotProvider","getSnapshot","query",c)},zn={publishCameraStream:c=>h("streamBroker","publishCameraStream","mutation",c),retractCameraStream:c=>h("streamBroker","retractCameraStream","mutation",c),assignProfile:c=>h("streamBroker","assignProfile","mutation",c),unassignProfile:c=>h("streamBroker","unassignProfile","mutation",c),restartProfile:c=>h("streamBroker","restartProfile","mutation",c),getDeviceSettingsContribution:c=>h("streamBroker","getDeviceSettingsContribution","query",c),getDeviceLiveContribution:c=>h("streamBroker","getDeviceLiveContribution","query",c),applyDeviceSettingsPatch:c=>h("streamBroker","applyDeviceSettingsPatch","mutation",c)};return{deviceId:o.deviceId,binding:o,state:{audioMetrics:T(u,o.deviceId,"audio-metrics"),battery:T(u,o.deviceId,"battery"),brightness:T(u,o.deviceId,"brightness"),cameraStreams:T(u,o.deviceId,"camera-streams"),deviceDiscovery:T(u,o.deviceId,"device-discovery"),deviceStatus:T(u,o.deviceId,"device-status"),doorbell:T(u,o.deviceId,"doorbell"),featureProbe:T(u,o.deviceId,"feature-probe"),motion:T(u,o.deviceId,"motion"),motionTrigger:T(u,o.deviceId,"motion-trigger"),ptzAutotrack:T(u,o.deviceId,"ptz-autotrack"),switch:T(u,o.deviceId,"switch"),zoneAnalytics:T(u,o.deviceId,"zone-analytics"),zoneRules:T(u,o.deviceId,"zone-rules"),zones:T(u,o.deviceId,"zones")},accessories:I,audioAnalysis:w,audioMetrics:A,battery:N,brightness:M,cameraCredentials:O,cameraStreams:Z,detectionPipeline:ae,deviceDiscovery:Y,deviceOps:Tt,deviceStatus:Rt,doorbell:xt,events:Bt,featureProbe:Ot,intercom:qt,motion:zt,motionDetection:Lt,motionTrigger:_t,nativeObjectDetection:Ut,osd:Ft,pipelineAnalytics:Ht,ptz:Wt,ptzAutotrack:$t,reboot:jt,recording:Gt,snapshot:Vt,switch:Kt,webrtcSession:Zt,zoneAnalytics:Yt,zoneRules:i,zones:U,addonSettings:he,deviceManager:ne,deviceState:Re,networkQuality:ve,pipelineExecutor:ie,pipelineOrchestrator:xn,pipelineRunner:Bn,recordingEngine:On,snapshotProvider:qn,streamBroker:zn}}function Uu(s,o,n,d,u){if(n.length===0||o.length===0)return{passed:s,excluded:[]};const g=n.filter(N=>N.enabled!==!1),y=g.filter(N=>N.mode==="include"),m=g.filter(N=>N.mode==="exclude"),h=y.length>0,I=new Map(o.map(N=>[N.id,N])),w=[],A=[];for(const N of s){const M=d(N),O=u?.(N),Z=y.some(Y=>Ua(Y,M,O,I)),ae=m.some(Y=>Ua(Y,M,O,I));h?Z&&!ae?w.push(N):A.push(N):ae?A.push(N):w.push(N)}return{passed:w,excluded:A}}function Ua(s,o,n,d){if(s.classFilter&&s.classFilter.length>0&&n!==void 0&&!s.classFilter.includes(n))return!1;for(const u of s.zoneIds){const g=d.get(u);if(g&&fl(o,g.polygon))return!0}return!1}function fl(s,o){if(o.length<3)return!1;let n=!1;const{x:d,y:u}=s;for(let g=0,y=o.length-1;g<o.length;y=g++){const m=o[g],h=o[y];m.y>u!=h.y>u&&d<(h.x-m.x)*(u-m.y)/(h.y-m.y||Number.EPSILON)+m.x&&(n=!n)}return n}function Fu(s){const o=s;function n(i,U,he,ne,Re){const ve=o[i]?.[U];if(!ve)throw new Error(`SystemProxy: api has no '${i}.${U}'`);const ie=ve;return he==="mutation"?ie.mutate(ne):he==="subscription"?ie.subscribe(ne,Re):ie.query(ne)}return{addonPages:{listPages:i=>n("addonPages","listPages","query",i)},addons:{list:i=>n("addons","list","query",i),getLogs:i=>n("addons","getLogs","query",i),listPackages:i=>n("addons","listPackages","query",i),installPackage:i=>n("addons","installPackage","mutation",i),installFromWorkspace:i=>n("addons","installFromWorkspace","mutation",i),isWorkspaceAvailable:i=>n("addons","isWorkspaceAvailable","query",i),listWorkspacePackages:i=>n("addons","listWorkspacePackages","query",i),uninstallPackage:i=>n("addons","uninstallPackage","mutation",i),reloadPackages:i=>n("addons","reloadPackages","mutation",i),searchAvailable:i=>n("addons","searchAvailable","query",i),listUpdates:i=>n("addons","listUpdates","query",i),updatePackage:i=>n("addons","updatePackage","mutation",i),rollbackPackage:i=>n("addons","rollbackPackage","mutation",i),forceRefresh:i=>n("addons","forceRefresh","mutation",i),restartServer:i=>n("addons","restartServer","mutation",i),getVersions:i=>n("addons","getVersions","query",i),restartAddon:i=>n("addons","restartAddon","mutation",i),retryLoad:i=>n("addons","retryLoad","mutation",i),getAutoUpdateSettings:i=>n("addons","getAutoUpdateSettings","query",i),setAutoUpdateSettings:i=>n("addons","setAutoUpdateSettings","mutation",i),getAddonAutoUpdate:i=>n("addons","getAddonAutoUpdate","query",i),setAddonAutoUpdate:i=>n("addons","setAddonAutoUpdate","mutation",i),applyAutoUpdateToAll:i=>n("addons","applyAutoUpdateToAll","mutation",i),custom:i=>n("addons","custom","mutation",i),onAddonLogs:(i,U)=>n("addons","onAddonLogs","subscription",i,U)},addonSettings:{getGlobalSettings:i=>n("addonSettings","getGlobalSettings","query",i),updateGlobalSettings:i=>n("addonSettings","updateGlobalSettings","mutation",i)},addonWidgets:{listWidgets:i=>n("addonWidgets","listWidgets","query",i)},alerts:{emit:i=>n("alerts","emit","mutation",i),update:i=>n("alerts","update","mutation",i),list:i=>n("alerts","list","query",i),getUnreadCount:i=>n("alerts","getUnreadCount","query",i),markRead:i=>n("alerts","markRead","mutation",i),markAllRead:i=>n("alerts","markAllRead","mutation",i),dismiss:i=>n("alerts","dismiss","mutation",i)},audioAnalyzer:{analyseChunk:i=>n("audioAnalyzer","analyseChunk","mutation",i),classify:i=>n("audioAnalyzer","classify","query",i),isReady:i=>n("audioAnalyzer","isReady","query",i),dispose:i=>n("audioAnalyzer","dispose","mutation",i),reprobeAudioEngine:i=>n("audioAnalyzer","reprobeAudioEngine","mutation",i)},audioCodec:{listSupportedCodecs:i=>n("audioCodec","listSupportedCodecs","query",i),canHandle:i=>n("audioCodec","canHandle","query",i),createDecodeSession:i=>n("audioCodec","createDecodeSession","mutation",i),createEncodeSession:i=>n("audioCodec","createEncodeSession","mutation",i),closeSession:i=>n("audioCodec","closeSession","mutation",i),pushEncodedFrame:i=>n("audioCodec","pushEncodedFrame","mutation",i),pullPcm:i=>n("audioCodec","pullPcm","query",i),pushPcm:i=>n("audioCodec","pushPcm","mutation",i),pullEncoded:i=>n("audioCodec","pullEncoded","query",i),flushEncode:i=>n("audioCodec","flushEncode","mutation",i),listActiveSessions:i=>n("audioCodec","listActiveSessions","query",i)},authentication:{listProviders:i=>n("authentication","listProviders","query",i),setProviderEnabled:i=>n("authentication","setProviderEnabled","mutation",i)},backup:{listDestinations:i=>n("backup","listDestinations","query",i),trigger:i=>n("backup","trigger","mutation",i),list:i=>n("backup","list","query",i),listLocations:i=>n("backup","listLocations","query",i),getEntries:i=>n("backup","getEntries","query",i),restore:i=>n("backup","restore","mutation",i),delete:i=>n("backup","delete","mutation",i),listArchives:i=>n("backup","listArchives","query",i),upsertDestinationPolicy:i=>n("backup","upsertDestinationPolicy","mutation",i),previewSchedule:i=>n("backup","previewSchedule","query",i)},decoder:{supportsCodec:i=>n("decoder","supportsCodec","query",i),getInfo:i=>n("decoder","getInfo","query",i),createSession:i=>n("decoder","createSession","query",i),destroySession:i=>n("decoder","destroySession","query",i),pushPacket:i=>n("decoder","pushPacket","query",i),openStream:i=>n("decoder","openStream","query",i),pullFrames:i=>n("decoder","pullFrames","query",i),updateConfig:i=>n("decoder","updateConfig","query",i),getStats:i=>n("decoder","getStats","query",i),listActiveSessions:i=>n("decoder","listActiveSessions","query",i),reprobeHwaccel:i=>n("decoder","reprobeHwaccel","mutation",i)},deviceManager:{allocateDeviceId:i=>n("deviceManager","allocateDeviceId","mutation",i),registerDevice:i=>n("deviceManager","registerDevice","mutation",i),removeDevice:i=>n("deviceManager","removeDevice","mutation",i),persistConfig:i=>n("deviceManager","persistConfig","mutation",i),listLocations:i=>n("deviceManager","listLocations","query",i),addLocation:i=>n("deviceManager","addLocation","mutation",i),removeLocation:i=>n("deviceManager","removeLocation","mutation",i),listPersistedByAddon:i=>n("deviceManager","listPersistedByAddon","query",i),listAll:i=>n("deviceManager","listAll","query",i),getChildren:i=>n("deviceManager","getChildren","query",i),listWrappersForCap:i=>n("deviceManager","listWrappersForCap","query",i),listBindableCapsForDeviceType:i=>n("deviceManager","listBindableCapsForDeviceType","query",i),discoverDevices:i=>n("deviceManager","discoverDevices","mutation",i),adoptDevice:i=>n("deviceManager","adoptDevice","mutation",i),getCreationSchema:i=>n("deviceManager","getCreationSchema","query",i),createDevice:i=>n("deviceManager","createDevice","mutation",i),testCreationField:i=>n("deviceManager","testCreationField","mutation",i)},deviceProvider:{start:i=>n("deviceProvider","start","mutation",i),stop:i=>n("deviceProvider","stop","mutation",i),getStatus:i=>n("deviceProvider","getStatus","query",i),getDevices:i=>n("deviceProvider","getDevices","query",i),supportsDiscovery:i=>n("deviceProvider","supportsDiscovery","query",i),discoverDevices:i=>n("deviceProvider","discoverDevices","mutation",i),adoptDiscoveredDevice:i=>n("deviceProvider","adoptDiscoveredDevice","mutation",i),supportsManualCreation:i=>n("deviceProvider","supportsManualCreation","query",i),getChildCreationSchema:i=>n("deviceProvider","getChildCreationSchema","query",i),createDevice:i=>n("deviceProvider","createDevice","mutation",i),testCreationField:i=>n("deviceProvider","testCreationField","mutation",i)},deviceState:{getAllSnapshots:i=>n("deviceState","getAllSnapshots","query",i)},integrations:{list:i=>n("integrations","list","query",i),get:i=>n("integrations","get","query",i),getByAddonId:i=>n("integrations","getByAddonId","query",i),create:i=>n("integrations","create","mutation",i),update:i=>n("integrations","update","mutation",i),delete:i=>n("integrations","delete","mutation",i),getSettings:i=>n("integrations","getSettings","query",i),setSettings:i=>n("integrations","setSettings","mutation",i),getAvailableTypes:i=>n("integrations","getAvailableTypes","query",i),testConnection:i=>n("integrations","testConnection","mutation",i)},localNetwork:{list:i=>n("localNetwork","list","query",i),getPreferred:i=>n("localNetwork","getPreferred","query",i),getConnectionEndpoints:i=>n("localNetwork","getConnectionEndpoints","query",i),getAllowedAddresses:i=>n("localNetwork","getAllowedAddresses","query",i),setAllowedAddresses:i=>n("localNetwork","setAllowedAddresses","mutation",i),resetAllowlistToBestMatch:i=>n("localNetwork","resetAllowlistToBestMatch","mutation",i)},meshNetwork:{getStatus:i=>n("meshNetwork","getStatus","query",i),join:i=>n("meshNetwork","join","mutation",i),leave:i=>n("meshNetwork","leave","mutation",i),listPeers:i=>n("meshNetwork","listPeers","query",i),setPublicIngress:i=>n("meshNetwork","setPublicIngress","mutation",i),setMeshIngress:i=>n("meshNetwork","setMeshIngress","mutation",i)},meshOrchestrator:{listProviders:i=>n("meshOrchestrator","listProviders","query",i),joinProvider:i=>n("meshOrchestrator","joinProvider","mutation",i),leaveProvider:i=>n("meshOrchestrator","leaveProvider","mutation",i)},metricsProvider:{collectSnapshot:i=>n("metricsProvider","collectSnapshot","query",i),getCached:i=>n("metricsProvider","getCached","query",i),getCurrent:i=>n("metricsProvider","getCurrent","query",i),getDiskSpace:i=>n("metricsProvider","getDiskSpace","query",i),getGpuInfo:i=>n("metricsProvider","getGpuInfo","query",i),getCpuTemperature:i=>n("metricsProvider","getCpuTemperature","query",i),getProcessStats:i=>n("metricsProvider","getProcessStats","query",i),listAddonInstances:i=>n("metricsProvider","listAddonInstances","query",i),getAddonStats:i=>n("metricsProvider","getAddonStats","query",i),listNodeProcesses:i=>n("metricsProvider","listNodeProcesses","query",i),killProcess:i=>n("metricsProvider","killProcess","mutation",i)},networkQuality:{getAllStats:i=>n("networkQuality","getAllStats","query",i)},nodes:{topology:i=>n("nodes","topology","query",i),deployAddon:i=>n("nodes","deployAddon","mutation",i),undeployAddon:i=>n("nodes","undeployAddon","mutation",i),restartAddon:i=>n("nodes","restartAddon","mutation",i),restartProcess:i=>n("nodes","restartProcess","mutation",i),restartNode:i=>n("nodes","restartNode","mutation",i),shutdownNode:i=>n("nodes","shutdownNode","mutation",i),renameNode:i=>n("nodes","renameNode","mutation",i),clusterAddonStatus:i=>n("nodes","clusterAddonStatus","query",i),setProcessLogLevel:i=>n("nodes","setProcessLogLevel","mutation",i),executeQuery:i=>n("nodes","executeQuery","mutation",i)},notificationOutput:{send:i=>n("notificationOutput","send","mutation",i),sendTest:i=>n("notificationOutput","sendTest","mutation",i)},pipelineExecutor:{getAvailableEngines:i=>n("pipelineExecutor","getAvailableEngines","query",i),getSelectedEngine:i=>n("pipelineExecutor","getSelectedEngine","query",i),getDefaultSteps:i=>n("pipelineExecutor","getDefaultSteps","query",i),reprobeEngine:i=>n("pipelineExecutor","reprobeEngine","mutation",i),getVideoPipelineSteps:i=>n("pipelineExecutor","getVideoPipelineSteps","query",i),setVideoPipelineSteps:i=>n("pipelineExecutor","setVideoPipelineSteps","mutation",i),getSchema:i=>n("pipelineExecutor","getSchema","query",i),getGlobalSteps:i=>n("pipelineExecutor","getGlobalSteps","query",i),getGlobalPipelineConfig:i=>n("pipelineExecutor","getGlobalPipelineConfig","query",i),getOrchestratorConfigSchema:i=>n("pipelineExecutor","getOrchestratorConfigSchema","query",i),listTemplates:i=>n("pipelineExecutor","listTemplates","query",i),saveTemplate:i=>n("pipelineExecutor","saveTemplate","mutation",i),updateTemplate:i=>n("pipelineExecutor","updateTemplate","mutation",i),deleteTemplate:i=>n("pipelineExecutor","deleteTemplate","mutation",i),getCapabilities:i=>n("pipelineExecutor","getCapabilities","query",i),getAddonModels:i=>n("pipelineExecutor","getAddonModels","query",i),downloadModel:i=>n("pipelineExecutor","downloadModel","mutation",i),deleteModel:i=>n("pipelineExecutor","deleteModel","mutation",i),detect:i=>n("pipelineExecutor","detect","query",i),cacheFrameInPool:i=>n("pipelineExecutor","cacheFrameInPool","mutation",i),inferCached:i=>n("pipelineExecutor","inferCached","mutation",i),uncacheFrame:i=>n("pipelineExecutor","uncacheFrame","mutation",i),getEffectiveTuning:i=>n("pipelineExecutor","getEffectiveTuning","query",i),listLoadedEngines:i=>n("pipelineExecutor","listLoadedEngines","query",i),spinEngine:i=>n("pipelineExecutor","spinEngine","mutation",i),killEngine:i=>n("pipelineExecutor","killEngine","mutation",i),listReferenceImages:i=>n("pipelineExecutor","listReferenceImages","query",i),getReferenceImage:i=>n("pipelineExecutor","getReferenceImage","query",i),getReferenceAudioFiles:i=>n("pipelineExecutor","getReferenceAudioFiles","query",i),getReferenceAudio:i=>n("pipelineExecutor","getReferenceAudio","query",i),getAudioCapabilities:i=>n("pipelineExecutor","getAudioCapabilities","query",i),runAudioTest:i=>n("pipelineExecutor","runAudioTest","mutation",i),getDetectionConfigSchema:i=>n("pipelineExecutor","getDetectionConfigSchema","query",i)},pipelineOrchestrator:{rebalance:i=>n("pipelineOrchestrator","rebalance","mutation",i),getPipelineAssignments:i=>n("pipelineOrchestrator","getPipelineAssignments","query",i),getAgentLoad:i=>n("pipelineOrchestrator","getAgentLoad","query",i),getGlobalMetrics:i=>n("pipelineOrchestrator","getGlobalMetrics","query",i),getCapabilityBindings:i=>n("pipelineOrchestrator","getCapabilityBindings","query",i),setCapabilityBinding:i=>n("pipelineOrchestrator","setCapabilityBinding","mutation",i),getDecoderAssignments:i=>n("pipelineOrchestrator","getDecoderAssignments","query",i),getAudioNodeLoad:i=>n("pipelineOrchestrator","getAudioNodeLoad","query",i),getAgentSettings:i=>n("pipelineOrchestrator","getAgentSettings","query",i),listAgentSettings:i=>n("pipelineOrchestrator","listAgentSettings","query",i),setAgentAddonDefaults:i=>n("pipelineOrchestrator","setAgentAddonDefaults","mutation",i),removeAgentSettings:i=>n("pipelineOrchestrator","removeAgentSettings","mutation",i),listTemplates:i=>n("pipelineOrchestrator","listTemplates","query",i),saveTemplate:i=>n("pipelineOrchestrator","saveTemplate","mutation",i),updateTemplate:i=>n("pipelineOrchestrator","updateTemplate","mutation",i),deleteTemplate:i=>n("pipelineOrchestrator","deleteTemplate","mutation",i)},pipelineRunner:{attachCamera:i=>n("pipelineRunner","attachCamera","mutation",i),reportMotion:i=>n("pipelineRunner","reportMotion","mutation",i),getLocalLoad:i=>n("pipelineRunner","getLocalLoad","query",i),getLocalMetrics:i=>n("pipelineRunner","getLocalMetrics","query",i),getAllCameraMetrics:i=>n("pipelineRunner","getAllCameraMetrics","query",i),getLocalCameras:i=>n("pipelineRunner","getLocalCameras","query",i)},platformProbe:{getCapabilities:i=>n("platformProbe","getCapabilities","query",i),getHardware:i=>n("platformProbe","getHardware","query",i),resolveInferenceConfig:i=>n("platformProbe","resolveInferenceConfig","query",i),resolveHwAccel:i=>n("platformProbe","resolveHwAccel","query",i)},recordingEngine:{getStatus:i=>n("recordingEngine","getStatus","query",i),enable:i=>n("recordingEngine","enable","mutation",i),disable:i=>n("recordingEngine","disable","mutation",i),getConfig:i=>n("recordingEngine","getConfig","query",i),updateConfig:i=>n("recordingEngine","updateConfig","mutation",i),getPlaylist:i=>n("recordingEngine","getPlaylist","query",i),getThumbnail:i=>n("recordingEngine","getThumbnail","query",i),getSegments:i=>n("recordingEngine","getSegments","query",i),getAvailability:i=>n("recordingEngine","getAvailability","query",i),estimateStorage:i=>n("recordingEngine","estimateStorage","query",i),estimateGlobalStorage:i=>n("recordingEngine","estimateGlobalStorage","query",i),getStorageUsage:i=>n("recordingEngine","getStorageUsage","query",i),setPolicy:i=>n("recordingEngine","setPolicy","mutation",i),getPolicy:i=>n("recordingEngine","getPolicy","query",i),getRetentionConfig:i=>n("recordingEngine","getRetentionConfig","query",i),updateRetentionConfig:i=>n("recordingEngine","updateRetentionConfig","mutation",i),getMotionStats:i=>n("recordingEngine","getMotionStats","query",i)},remoteAccess:{listProviders:i=>n("remoteAccess","listProviders","query",i),startProvider:i=>n("remoteAccess","startProvider","mutation",i),stopProvider:i=>n("remoteAccess","stopProvider","mutation",i)},settingsStore:{get:i=>n("settingsStore","get","query",i),set:i=>n("settingsStore","set","mutation",i),query:i=>n("settingsStore","query","query",i),insert:i=>n("settingsStore","insert","mutation",i),update:i=>n("settingsStore","update","mutation",i),delete:i=>n("settingsStore","delete","mutation",i),count:i=>n("settingsStore","count","query",i),isEmpty:i=>n("settingsStore","isEmpty","query",i),declareCollection:i=>n("settingsStore","declareCollection","mutation",i)},storage:{resolve:i=>n("storage","resolve","query",i),write:i=>n("storage","write","mutation",i),read:i=>n("storage","read","query",i),exists:i=>n("storage","exists","query",i),list:i=>n("storage","list","query",i),delete:i=>n("storage","delete","mutation",i),getAvailableSpace:i=>n("storage","getAvailableSpace","query",i),beginUpload:i=>n("storage","beginUpload","mutation",i),writeChunk:i=>n("storage","writeChunk","mutation",i),finalizeUpload:i=>n("storage","finalizeUpload","mutation",i),abortUpload:i=>n("storage","abortUpload","mutation",i),beginDownload:i=>n("storage","beginDownload","mutation",i),readChunk:i=>n("storage","readChunk","query",i),endDownload:i=>n("storage","endDownload","mutation",i),listLocations:i=>n("storage","listLocations","query",i),getDefaultLocation:i=>n("storage","getDefaultLocation","query",i),upsertLocation:i=>n("storage","upsertLocation","mutation",i),deleteLocation:i=>n("storage","deleteLocation","mutation",i),testLocation:i=>n("storage","testLocation","query",i),listProviders:i=>n("storage","listProviders","query",i),testConfig:i=>n("storage","testConfig","query",i)},streamBroker:{listAllCameraStreams:i=>n("streamBroker","listAllCameraStreams","query",i),listAllProfileSlots:i=>n("streamBroker","listAllProfileSlots","query",i),getBrokerStats:i=>n("streamBroker","getBrokerStats","query",i),listClients:i=>n("streamBroker","listClients","query",i),killClient:i=>n("streamBroker","killClient","mutation",i),getStreamUrl:i=>n("streamBroker","getStreamUrl","query",i),getBroker:i=>n("streamBroker","getBroker","query",i),setPreBufferDuration:i=>n("streamBroker","setPreBufferDuration","mutation",i),getPreBufferInfo:i=>n("streamBroker","getPreBufferInfo","query",i),getRtspPort:i=>n("streamBroker","getRtspPort","query",i),getAllRtspEntries:i=>n("streamBroker","getAllRtspEntries","query",i),getRtspEntry:i=>n("streamBroker","getRtspEntry","query",i),regenerateRtspToken:i=>n("streamBroker","regenerateRtspToken","mutation",i),setRtspEnabled:i=>n("streamBroker","setRtspEnabled","mutation",i),isRtspEnabled:i=>n("streamBroker","isRtspEnabled","query",i)},system:{info:i=>n("system","info","query",i),health:i=>n("system","health","query",i),featureFlags:i=>n("system","featureFlags","query",i),networkAddresses:i=>n("system","networkAddresses","query",i),getRetentionConfig:i=>n("system","getRetentionConfig","query",i),setRetentionConfig:i=>n("system","setRetentionConfig","mutation",i),forceRetentionCleanup:i=>n("system","forceRetentionCleanup","mutation",i)},toast:{onToast:(i,U)=>n("toast","onToast","subscription",i,U)},turnOrchestrator:{listProviders:i=>n("turnOrchestrator","listProviders","query",i),getAllServers:i=>n("turnOrchestrator","getAllServers","query",i),setProviderEnabled:i=>n("turnOrchestrator","setProviderEnabled","mutation",i)},turnProvider:{getTurnServers:i=>n("turnProvider","getTurnServers","query",i)},userManagement:{listUsers:i=>n("userManagement","listUsers","query",i),createUser:i=>n("userManagement","createUser","mutation",i),updateUser:i=>n("userManagement","updateUser","mutation",i),deleteUser:i=>n("userManagement","deleteUser","mutation",i),resetPassword:i=>n("userManagement","resetPassword","mutation",i),setUserScopes:i=>n("userManagement","setUserScopes","mutation",i),validateCredentials:i=>n("userManagement","validateCredentials","mutation",i),listApiKeys:i=>n("userManagement","listApiKeys","query",i),createApiKey:i=>n("userManagement","createApiKey","mutation",i),revokeApiKey:i=>n("userManagement","revokeApiKey","mutation",i),validateApiKey:i=>n("userManagement","validateApiKey","mutation",i),createScopedToken:i=>n("userManagement","createScopedToken","mutation",i),revokeScopedToken:i=>n("userManagement","revokeScopedToken","mutation",i),validateScopedToken:i=>n("userManagement","validateScopedToken","query",i),listScopedTokens:i=>n("userManagement","listScopedTokens","query",i)}}}const Sl="device.state-changed",bl="capability.binding-changed",Il="device.registered",kl="device.unregistered",wl="device.updated";class Hu{constructor(o){this.api=o,this.stateSource=hl(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(o=15e3){if(!this.initialized){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{const n=(y,m)=>Number.isFinite(o)?new Promise((h,I)=>{const w=setTimeout(()=>I(new Error(`SystemMirror.init: '${m}' timed out after ${o}ms`)),o);y.then(A=>{clearTimeout(w),h(A)},A=>{clearTimeout(w),I(A)})}):y,[d,u,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,m]of Object.entries(u)){const h=Number(y);if(!Number.isFinite(h))continue;const I=new Map;for(const[w,A]of Object.entries(m))I.set(w,A);this.stateMirror.set(h,I)}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 o of this.bridges)try{o.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(o){const n=this.bindings.get(o);return n?yl(this.api,n,{stateSource:this.stateSource}):null}getDeviceByName(o){for(const n of this.devices.values())if(n.name===o)return this.getDeviceById(n.id);return null}getDeviceByStableId(o){for(const n of this.devices.values())if(n.stableId===o)return this.getDeviceById(n.id);return null}getDevicesByAddon(o){return this.query({addonId:o})}getDevicesByType(o){return this.query({type:o})}getDeviceInfo(o){return this.devices.get(o)??null}getAllDevices(){const o=[];for(const n of this.bindings.keys()){const d=this.getDeviceById(n);d&&o.push(d)}return o}filterByCap(o){return this.query({caps:o})}query(o={}){const n=[];for(const[d,u]of this.bindings){const g=this.devices.get(d);if(o.id!==void 0&&!Se(d,o.id)||o.stableId!==void 0&&(!g||!Se(g.stableId,o.stableId))||o.addonId!==void 0&&(!g||!Se(g.addonId,o.addonId))||o.type!==void 0&&(!g||!Se(g.type,o.type)))continue;if(o.caps!==void 0){const m=Je(o.caps),h=new Set(u.entries.map(I=>I.capName));if(!m.every(I=>h.has(I)))continue}if(o.anyCap!==void 0){const m=Je(o.anyCap),h=new Set(u.entries.map(I=>I.capName));if(!m.some(I=>h.has(I)))continue}if(o.name!==void 0&&(!g||!Al(g.name,o.name))||o.online!==void 0&&(!g||g.online!==o.online))continue;if(o.parentDeviceId!==void 0){if(!g)continue;const m=o.parentDeviceId;if((g.parentDeviceId??null)!==m)continue}if(o.feature!==void 0&&(!g||!Je(o.feature).every(h=>g.features.includes(h)))||o.isCamera!==void 0&&(!g||g.isCamera!==o.isCamera))continue;const y=this.getDeviceById(d);if(y){if(o.where&&g){if(!o.where(g,y))continue}else if(o.where&&!g)continue;n.push(y)}}return n}whereState(o,n){const d=[];for(const[u,g]of this.stateMirror){const y=g.get(o);if(!y||!n(y,u))continue;const m=this.getDeviceById(u);m&&d.push(m)}return d}mapState(o,n){const d=[];for(const[u,g]of this.stateMirror){const y=g.get(o);y&&d.push(n(y,u))}return d}findState(o,n){for(const[d,u]of this.stateMirror){const g=u.get(o);if(g&&n(g,d))return this.getDeviceById(d)}return null}countByCap(o){let n=0;for(const d of this.bindings.values())d.entries.some(u=>u.capName===o)&&n++;return n}countByState(o,n){let d=0;for(const[u,g]of this.stateMirror){const y=g.get(o);y&&n(y,u)&&d++}return d}listen(o){return this.globalStateListeners.add(o),()=>{this.globalStateListeners.delete(o)}}listenCap(o,n){let d=this.capListeners.get(o);return d||(d=new Set,this.capListeners.set(o,d)),d.add(n),()=>{d.delete(n),d.size===0&&this.capListeners.delete(o)}}listenDevice(o,n){let d=this.deviceListeners.get(o);return d||(d=new Set,this.deviceListeners.set(o,d)),d.add(n),()=>{d.delete(n),d.size===0&&this.deviceListeners.delete(o)}}onDeviceAdded(o){return this.addedListeners.add(o),()=>{this.addedListeners.delete(o)}}onDeviceRemoved(o){return this.removedListeners.add(o),()=>{this.removedListeners.delete(o)}}waitForState(o,n,d,u=3e4){return new Promise((g,y)=>{const h=(()=>{const A=this.stateMirror.get(o)?.get(n);return A&&d(A)?A:null})();if(h){g(h);return}let I=null;const w=this.listenDevice(o,(A,N,M)=>{N===n&&M&&d(M)&&(I&&clearTimeout(I),w(),g(M))});Number.isFinite(u)&&(I=setTimeout(()=>{w(),y(new Error(`waitForState timed out after ${u}ms (deviceId=${o}, capName=${n})`))},u))})}waitForDevice(o,n=3e4){return new Promise((d,u)=>{const g=this.getDeviceById(o);if(g){d(g);return}let y=null;const m=this.onDeviceAdded(h=>{if(h!==o)return;const I=this.getDeviceById(h);I&&(y&&clearTimeout(y),m(),d(I))});Number.isFinite(n)&&(y=setTimeout(()=>{m(),u(new Error(`waitForDevice timed out after ${n}ms (deviceId=${o})`))},n))})}async forEachCap(o,n){for(const d of this.filterByCap(o))await n(d)}async invokeCap(o,n,d,u={}){const g=this.filterByCap(o),y=Math.max(1,u.parallelism??g.length),m=[];for(let h=0;h<g.length;h+=y){const I=g.slice(h,h+y),w=await Promise.allSettled(I.map(async A=>{const N=A[o];if(!N||typeof N[n]!="function")throw new Error(`device '${A.deviceId}' does not expose '${o}.${n}'`);return await N[n](d)}));for(let A=0;A<w.length;A++){const N=I[A],M=w[A];M.status==="fulfilled"?m.push({deviceId:N.deviceId,ok:!0,result:M.value}):m.push({deviceId:N.deviceId,ok:!1,error:M.reason})}}return m}summary(){const o={},n={},d={};let u=0,g=0;for(const y of this.bindings.values())for(const m of y.entries)o[m.capName]=(o[m.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?u++:g++;return{totalDevices:this.bindings.size,online:u,offline:g,byCap:o,byAddon:n,byType:d,statedDevices:this.stateMirror.size}}dump(o){const n=u=>{const g=this.devices.get(u)??null,y=this.bindings.get(u)??null,m={},h=this.stateMirror.get(u);if(h)for(const[I,w]of h)m[I]={...w};return{deviceId:u,info:g,binding:y?{...y,entries:y.entries.map(I=>({...I}))}:null,state:m}};if(o!==void 0)return n(o);const d=[];for(const u of this.bindings.keys())d.push(n(u));return d}getRawMirror(){return this.stateMirror}getSystemState(){const o=new Map;for(const[n,d]of this.stateMirror){const u=new Map;for(const[g,y]of d)u.set(g,{...y});o.set(n,u)}return o}subscribeBus(){if(!this.api.live?.onEvent)return;const o=this.api.live.onEvent;this.bridges.push(o.subscribe({category:Sl},{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(o.subscribe({category:bl},{onData:n=>{const d=n.data,u=typeof d?.deviceId=="number"?d.deviceId:d?.source?.type==="device"&&typeof d.source.id=="number"?d.source.id:null;u!==null&&this.refreshBinding(u)}})),this.bridges.push(o.subscribe({category:Il},{onData:n=>{const d=n.data;typeof d?.deviceId=="number"&&this.refreshDeviceMetadata(d.deviceId,"added")}})),this.bridges.push(o.subscribe({category:kl},{onData:n=>{const d=n.data;typeof d?.deviceId=="number"&&this.applyDeviceRemoval(d.deviceId)}})),this.bridges.push(o.subscribe({category:wl},{onData:n=>{const d=n.data;typeof d?.deviceId=="number"&&this.refreshDeviceMetadata(d.deviceId,"updated")}}))}applyStateUpdate(o,n,d){let u=this.stateMirror.get(o);u||(u=new Map,this.stateMirror.set(o,u)),d===void 0?u.delete(n):u.set(n,d);const g=`${o}:${n}`,y=this.handleListeners.get(g);if(y)for(const I of y)try{I(d)}catch{}for(const I of this.globalStateListeners)try{I(o,n,d)}catch{}const m=this.capListeners.get(n);if(m)for(const I of m)try{I(o,d)}catch{}const h=this.deviceListeners.get(o);if(h)for(const I of h)try{I(o,n,d)}catch{}}applyDeviceRemoval(o){const n=this.devices.get(o)??null;this.bindings.delete(o),this.devices.delete(o),this.stateMirror.delete(o);for(const d of this.removedListeners)try{d(o,n)}catch{}}async refreshBinding(o){try{const d=(await this.api.deviceManager.getAllBindings.query({})).find(u=>u.deviceId===o);d?this.bindings.set(o,d):this.applyDeviceRemoval(o)}catch{}}async refreshDeviceMetadata(o,n){try{const u=(await this.api.deviceManager.listAll.query({})).find(y=>y.id===o);if(!u)return;const g=!this.devices.has(o);if(this.devices.set(o,u),n==="added"&&g){await this.refreshBinding(o);for(const y of this.addedListeners)try{y(o,u)}catch{}}}catch{}}}function Se(s,o){return Array.isArray(o)?o.includes(s):s===o}function Je(s){return Array.isArray(s)?s:[s]}function Al(s,o){return typeof o=="string"?s===o:o instanceof RegExp?o.test(s):"exact"in o?s===o.exact:"contains"in o?s.toLowerCase().includes(o.contains.toLowerCase()):!1}function Wu(s){return s}function $u(s,o,n){return{input:s,output:o,kind:n?.kind??"query",auth:n?.auth??"protected",scope:n?.scope??{kind:"system"}}}const ju={accessories:"accessories",addonPages:"addon-pages",addonPagesSource:"addon-pages-source",addonRoutes:"addon-routes",addonSettings:"addon-settings",addonWidgets:"addon-widgets",addonWidgetsSource:"addon-widgets-source",addons:"addons",adminUi:"admin-ui",advancedNotifier:"advanced-notifier",alerts:"alerts",audioAnalysis:"audio-analysis",audioAnalyzer:"audio-analyzer",audioCodec:"audio-codec",audioMetrics:"audio-metrics",authProvider:"auth-provider",authentication:"authentication",backup:"backup",battery:"battery",brightness:"brightness",cameraCredentials:"camera-credentials",cameraStreams:"camera-streams",decoder:"decoder",detectionPipeline:"detection-pipeline",deviceDiscovery:"device-discovery",deviceManager:"device-manager",deviceOps:"device-ops",deviceProvider:"device-provider",deviceState:"device-state",deviceStatus:"device-status",doorbell:"doorbell",embeddingEncoder:"embedding-encoder",events:"events",featureProbe:"feature-probe",integrations:"integrations",intercom:"intercom",localNetwork:"local-network",logDestination:"log-destination",meshNetwork:"mesh-network",meshOrchestrator:"mesh-orchestrator",metricsProvider:"metrics-provider",motion:"motion",motionDetection:"motion-detection",motionTrigger:"motion-trigger",nativeObjectDetection:"native-object-detection",networkAccess:"network-access",networkQuality:"network-quality",nodes:"nodes",notificationOutput:"notification-output",osd:"osd",pipelineAnalytics:"pipeline-analytics",pipelineExecutor:"pipeline-executor",pipelineOrchestrator:"pipeline-orchestrator",pipelineRunner:"pipeline-runner",platformProbe:"platform-probe",ptz:"ptz",ptzAutotrack:"ptz-autotrack",reboot:"reboot",recording:"recording",recordingEngine:"recording-engine",remoteAccess:"remote-access",restreamer:"restreamer",settingsStore:"settings-store",snapshot:"snapshot",snapshotProvider:"snapshot-provider",storage:"storage",storageProvider:"storage-provider",streamBroker:"stream-broker",streamingEngine:"streaming-engine",switch:"switch",system:"system",toast:"toast",turnOrchestrator:"turn-orchestrator",turnProvider:"turn-provider",userManagement:"user-management",webrtc:"webrtc",webrtcSession:"webrtc-session",zoneAnalytics:"zone-analytics",zoneRules:"zone-rules",zones:"zones"},Gu=[{key:"accessories",name:"accessories"},{key:"addonPages",name:"addon-pages"},{key:"addonPagesSource",name:"addon-pages-source"},{key:"addonRoutes",name:"addon-routes"},{key:"addonSettings",name:"addon-settings"},{key:"addonWidgets",name:"addon-widgets"},{key:"addonWidgetsSource",name:"addon-widgets-source"},{key:"addons",name:"addons"},{key:"adminUi",name:"admin-ui"},{key:"advancedNotifier",name:"advanced-notifier"},{key:"alerts",name:"alerts"},{key:"audioAnalysis",name:"audio-analysis"},{key:"audioAnalyzer",name:"audio-analyzer"},{key:"audioCodec",name:"audio-codec"},{key:"audioMetrics",name:"audio-metrics"},{key:"authProvider",name:"auth-provider"},{key:"authentication",name:"authentication"},{key:"backup",name:"backup"},{key:"battery",name:"battery"},{key:"brightness",name:"brightness"},{key:"cameraCredentials",name:"camera-credentials"},{key:"cameraStreams",name:"camera-streams"},{key:"decoder",name:"decoder"},{key:"detectionPipeline",name:"detection-pipeline"},{key:"deviceDiscovery",name:"device-discovery"},{key:"deviceManager",name:"device-manager"},{key:"deviceOps",name:"device-ops"},{key:"deviceProvider",name:"device-provider"},{key:"deviceState",name:"device-state"},{key:"deviceStatus",name:"device-status"},{key:"doorbell",name:"doorbell"},{key:"embeddingEncoder",name:"embedding-encoder"},{key:"events",name:"events"},{key:"featureProbe",name:"feature-probe"},{key:"integrations",name:"integrations"},{key:"intercom",name:"intercom"},{key:"localNetwork",name:"local-network"},{key:"logDestination",name:"log-destination"},{key:"meshNetwork",name:"mesh-network"},{key:"meshOrchestrator",name:"mesh-orchestrator"},{key:"metricsProvider",name:"metrics-provider"},{key:"motion",name:"motion"},{key:"motionDetection",name:"motion-detection"},{key:"motionTrigger",name:"motion-trigger"},{key:"nativeObjectDetection",name:"native-object-detection"},{key:"networkAccess",name:"network-access"},{key:"networkQuality",name:"network-quality"},{key:"nodes",name:"nodes"},{key:"notificationOutput",name:"notification-output"},{key:"osd",name:"osd"},{key:"pipelineAnalytics",name:"pipeline-analytics"},{key:"pipelineExecutor",name:"pipeline-executor"},{key:"pipelineOrchestrator",name:"pipeline-orchestrator"},{key:"pipelineRunner",name:"pipeline-runner"},{key:"platformProbe",name:"platform-probe"},{key:"ptz",name:"ptz"},{key:"ptzAutotrack",name:"ptz-autotrack"},{key:"reboot",name:"reboot"},{key:"recording",name:"recording"},{key:"recordingEngine",name:"recording-engine"},{key:"remoteAccess",name:"remote-access"},{key:"restreamer",name:"restreamer"},{key:"settingsStore",name:"settings-store"},{key:"snapshot",name:"snapshot"},{key:"snapshotProvider",name:"snapshot-provider"},{key:"storage",name:"storage"},{key:"storageProvider",name:"storage-provider"},{key:"streamBroker",name:"stream-broker"},{key:"streamingEngine",name:"streaming-engine"},{key:"switch",name:"switch"},{key:"system",name:"system"},{key:"toast",name:"toast"},{key:"turnOrchestrator",name:"turn-orchestrator"},{key:"turnProvider",name:"turn-provider"},{key:"userManagement",name:"user-management"},{key:"webrtc",name:"webrtc"},{key:"webrtcSession",name:"webrtc-session"},{key:"zoneAnalytics",name:"zone-analytics"},{key:"zoneRules",name:"zone-rules"},{key:"zones",name:"zones"}],Vu=[gc,as,is,ls,Ao,cs,ss,zd,Xo,cr,Do,Ps,Ns,xs,ja,Gs,Ks,Ko,Ga,Va,rc,Za,us,Pr,Ya,$s,ic,cn,js,kt,Qa,Os,Xr,wt,Id,vc,Oc,Jo,Fc,$c,Zr,en,Bi,an,fc,Ys,id,hd,sr,mc,zr,no,ks,uo,Mc,Qr,nn,cc,tc,Nr,Js,gs,Qo,nr,ir,Mo,Fo,Pi,ki,on,td,sd,tr,Xs,Jc,hs,ys,sn,rn,Ja],Ku=["accessories","battery","brightness","camera-credentials","device-discovery","device-status","doorbell","feature-probe","intercom","motion","motion-trigger","native-object-detection","osd","ptz","ptz-autotrack","snapshot","switch"],Zu=Object.freeze({"addonPages.listPages":{capName:"addon-pages",addonId:null,access:"view"},"addonPagesSource.listPages":{capName:"addon-pages-source",addonId:null,access:"view"},"addonRoutes.getRoutes":{capName:"addon-routes",addonId:null,access:"view"},"addons.applyAutoUpdateToAll":{capName:"addons",addonId:null,access:"create"},"addons.custom":{capName:"addons",addonId:null,access:"create"},"addons.forceRefresh":{capName:"addons",addonId:null,access:"create"},"addons.getAddonAutoUpdate":{capName:"addons",addonId:null,access:"view"},"addons.getAutoUpdateSettings":{capName:"addons",addonId:null,access:"view"},"addons.getLogs":{capName:"addons",addonId:null,access:"view"},"addons.getVersions":{capName:"addons",addonId:null,access:"view"},"addons.installFromWorkspace":{capName:"addons",addonId:null,access:"create"},"addons.installPackage":{capName:"addons",addonId:null,access:"create"},"addons.isWorkspaceAvailable":{capName:"addons",addonId:null,access:"view"},"addons.list":{capName:"addons",addonId:null,access:"view"},"addons.listPackages":{capName:"addons",addonId:null,access:"view"},"addons.listUpdates":{capName:"addons",addonId:null,access:"view"},"addons.listWorkspacePackages":{capName:"addons",addonId:null,access:"view"},"addons.onAddonLogs":{capName:"addons",addonId:null,access:"view"},"addons.reloadPackages":{capName:"addons",addonId:null,access:"create"},"addons.restartAddon":{capName:"addons",addonId:null,access:"create"},"addons.restartServer":{capName:"addons",addonId:null,access:"create"},"addons.retryLoad":{capName:"addons",addonId:null,access:"create"},"addons.rollbackPackage":{capName:"addons",addonId:null,access:"create"},"addons.searchAvailable":{capName:"addons",addonId:null,access:"view"},"addons.setAddonAutoUpdate":{capName:"addons",addonId:null,access:"create"},"addons.setAutoUpdateSettings":{capName:"addons",addonId:null,access:"create"},"addons.uninstallPackage":{capName:"addons",addonId:null,access:"delete"},"addons.updatePackage":{capName:"addons",addonId:null,access:"create"},"addonSettings.getDeviceSettings":{capName:"addon-settings",addonId:null,access:"view"},"addonSettings.getGlobalSettings":{capName:"addon-settings",addonId:null,access:"view"},"addonSettings.updateDeviceSettings":{capName:"addon-settings",addonId:null,access:"create"},"addonSettings.updateGlobalSettings":{capName:"addon-settings",addonId:null,access:"create"},"addonWidgets.listWidgets":{capName:"addon-widgets",addonId:null,access:"view"},"addonWidgetsSource.listWidgets":{capName:"addon-widgets-source",addonId:null,access:"view"},"adminUi.getStaticDir":{capName:"admin-ui",addonId:null,access:"view"},"adminUi.getVersion":{capName:"admin-ui",addonId:null,access:"view"},"advancedNotifier.deleteRule":{capName:"advanced-notifier",addonId:null,access:"delete"},"advancedNotifier.getHistory":{capName:"advanced-notifier",addonId:null,access:"view"},"advancedNotifier.getRules":{capName:"advanced-notifier",addonId:null,access:"view"},"advancedNotifier.testRule":{capName:"advanced-notifier",addonId:null,access:"create"},"advancedNotifier.upsertRule":{capName:"advanced-notifier",addonId:null,access:"create"},"alerts.dismiss":{capName:"alerts",addonId:null,access:"create"},"alerts.emit":{capName:"alerts",addonId:null,access:"create"},"alerts.getUnreadCount":{capName:"alerts",addonId:null,access:"view"},"alerts.list":{capName:"alerts",addonId:null,access:"view"},"alerts.markAllRead":{capName:"alerts",addonId:null,access:"create"},"alerts.markRead":{capName:"alerts",addonId:null,access:"create"},"alerts.update":{capName:"alerts",addonId:null,access:"create"},"audioAnalysis.resolveDeviceSettings":{capName:"audio-analysis",addonId:null,access:"view"},"audioAnalyzer.analyseChunk":{capName:"audio-analyzer",addonId:null,access:"create"},"audioAnalyzer.classify":{capName:"audio-analyzer",addonId:null,access:"view"},"audioAnalyzer.dispose":{capName:"audio-analyzer",addonId:null,access:"create"},"audioAnalyzer.isReady":{capName:"audio-analyzer",addonId:null,access:"view"},"audioAnalyzer.reprobeAudioEngine":{capName:"audio-analyzer",addonId:null,access:"create"},"audioCodec.canHandle":{capName:"audio-codec",addonId:null,access:"view"},"audioCodec.closeSession":{capName:"audio-codec",addonId:null,access:"create"},"audioCodec.createDecodeSession":{capName:"audio-codec",addonId:null,access:"create"},"audioCodec.createEncodeSession":{capName:"audio-codec",addonId:null,access:"create"},"audioCodec.flushEncode":{capName:"audio-codec",addonId:null,access:"create"},"audioCodec.listActiveSessions":{capName:"audio-codec",addonId:null,access:"view"},"audioCodec.listSupportedCodecs":{capName:"audio-codec",addonId:null,access:"view"},"audioCodec.pullEncoded":{capName:"audio-codec",addonId:null,access:"view"},"audioCodec.pullPcm":{capName:"audio-codec",addonId:null,access:"view"},"audioCodec.pushEncodedFrame":{capName:"audio-codec",addonId:null,access:"create"},"audioCodec.pushPcm":{capName:"audio-codec",addonId:null,access:"create"},"audioMetrics.getCurrentSnapshot":{capName:"audio-metrics",addonId:null,access:"view"},"audioMetrics.getHistory":{capName:"audio-metrics",addonId:null,access:"view"},"authentication.listProviders":{capName:"authentication",addonId:null,access:"view"},"authentication.setProviderEnabled":{capName:"authentication",addonId:null,access:"create"},"authProvider.getLoginUrl":{capName:"auth-provider",addonId:null,access:"view"},"authProvider.handleCallback":{capName:"auth-provider",addonId:null,access:"create"},"authProvider.validateCredentials":{capName:"auth-provider",addonId:null,access:"create"},"authProvider.validateToken":{capName:"auth-provider",addonId:null,access:"view"},"backup.delete":{capName:"backup",addonId:null,access:"delete"},"backup.getEntries":{capName:"backup",addonId:null,access:"view"},"backup.list":{capName:"backup",addonId:null,access:"view"},"backup.listArchives":{capName:"backup",addonId:null,access:"view"},"backup.listDestinations":{capName:"backup",addonId:null,access:"view"},"backup.listLocations":{capName:"backup",addonId:null,access:"view"},"backup.previewSchedule":{capName:"backup",addonId:null,access:"view"},"backup.restore":{capName:"backup",addonId:null,access:"create"},"backup.trigger":{capName:"backup",addonId:null,access:"create"},"backup.upsertDestinationPolicy":{capName:"backup",addonId:null,access:"create"},"brightness.setBrightness":{capName:"brightness",addonId:null,access:"create"},"cameraCredentials.getCredentials":{capName:"camera-credentials",addonId:null,access:"view"},"cameraStreams.getBrokerStreams":{capName:"camera-streams",addonId:null,access:"view"},"cameraStreams.getCameraStreams":{capName:"camera-streams",addonId:null,access:"view"},"cameraStreams.getRtspEntries":{capName:"camera-streams",addonId:null,access:"view"},"decoder.createSession":{capName:"decoder",addonId:null,access:"view"},"decoder.destroySession":{capName:"decoder",addonId:null,access:"delete"},"decoder.getInfo":{capName:"decoder",addonId:null,access:"view"},"decoder.getStats":{capName:"decoder",addonId:null,access:"view"},"decoder.listActiveSessions":{capName:"decoder",addonId:null,access:"view"},"decoder.openStream":{capName:"decoder",addonId:null,access:"view"},"decoder.pullFrames":{capName:"decoder",addonId:null,access:"view"},"decoder.pushPacket":{capName:"decoder",addonId:null,access:"view"},"decoder.reprobeHwaccel":{capName:"decoder",addonId:null,access:"create"},"decoder.supportsCodec":{capName:"decoder",addonId:null,access:"view"},"decoder.updateConfig":{capName:"decoder",addonId:null,access:"view"},"deviceDiscovery.adoptDevice":{capName:"device-discovery",addonId:null,access:"create"},"deviceDiscovery.listDiscovered":{capName:"device-discovery",addonId:null,access:"view"},"deviceDiscovery.refreshDiscovery":{capName:"device-discovery",addonId:null,access:"create"},"deviceDiscovery.releaseDevice":{capName:"device-discovery",addonId:null,access:"create"},"deviceManager.addLocation":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.adoptDevice":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.allocateDeviceId":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.createDevice":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.disable":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.discoverDevices":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.enable":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.getAllBindings":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getBindings":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getChildren":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getConfigSchema":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getCreationSchema":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getDevice":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getDeviceAggregate":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getDeviceLiveInfoAggregate":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getDeviceSettingsAggregate":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getDeviceStatusAggregate":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getSettingsSchema":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getStreamProfileMap":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.getStreamSources":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.listAll":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.listBindableCapsForDeviceType":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.listLocations":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.listPersistedByAddon":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.listWrappersForCap":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.loadConfig":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.loadMeta":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.loadRuntimeState":{capName:"device-manager",addonId:null,access:"view"},"deviceManager.persistConfig":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.probeStreams":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.registerDevice":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.remove":{capName:"device-manager",addonId:null,access:"delete"},"deviceManager.removeDevice":{capName:"device-manager",addonId:null,access:"delete"},"deviceManager.removeLocation":{capName:"device-manager",addonId:null,access:"delete"},"deviceManager.setDisabled":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.setLocation":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.setMetadata":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.setName":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.setStreamProfileMap":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.setWrapperActive":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.testCreationField":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.testField":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.updateConfig":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.updateDeviceField":{capName:"device-manager",addonId:null,access:"create"},"deviceManager.updateDeviceFieldsBatch":{capName:"device-manager",addonId:null,access:"create"},"deviceOps.getConfigEntries":{capName:"device-ops",addonId:null,access:"view"},"deviceOps.getSettingsSchema":{capName:"device-ops",addonId:null,access:"view"},"deviceOps.getStreamSources":{capName:"device-ops",addonId:null,access:"view"},"deviceOps.removeDevice":{capName:"device-ops",addonId:null,access:"delete"},"deviceOps.setConfig":{capName:"device-ops",addonId:null,access:"create"},"deviceProvider.adoptDiscoveredDevice":{capName:"device-provider",addonId:null,access:"create"},"deviceProvider.createDevice":{capName:"device-provider",addonId:null,access:"create"},"deviceProvider.discoverDevices":{capName:"device-provider",addonId:null,access:"create"},"deviceProvider.getChildCreationSchema":{capName:"device-provider",addonId:null,access:"view"},"deviceProvider.getDevices":{capName:"device-provider",addonId:null,access:"view"},"deviceProvider.getStatus":{capName:"device-provider",addonId:null,access:"view"},"deviceProvider.start":{capName:"device-provider",addonId:null,access:"create"},"deviceProvider.stop":{capName:"device-provider",addonId:null,access:"create"},"deviceProvider.supportsDiscovery":{capName:"device-provider",addonId:null,access:"view"},"deviceProvider.supportsManualCreation":{capName:"device-provider",addonId:null,access:"view"},"deviceProvider.testCreationField":{capName:"device-provider",addonId:null,access:"create"},"deviceState.getAllSnapshots":{capName:"device-state",addonId:null,access:"view"},"deviceState.getCapSlice":{capName:"device-state",addonId:null,access:"view"},"deviceState.getSnapshot":{capName:"device-state",addonId:null,access:"view"},"deviceState.setCapSlice":{capName:"device-state",addonId:null,access:"create"},"embeddingEncoder.encode":{capName:"embedding-encoder",addonId:null,access:"view"},"embeddingEncoder.encodeText":{capName:"embedding-encoder",addonId:null,access:"view"},"embeddingEncoder.getInfo":{capName:"embedding-encoder",addonId:null,access:"view"},"events.getEventClipUrl":{capName:"events",addonId:null,access:"view"},"events.getEvents":{capName:"events",addonId:null,access:"view"},"events.getEventThumbnail":{capName:"events",addonId:null,access:"view"},"integrations.create":{capName:"integrations",addonId:null,access:"create"},"integrations.delete":{capName:"integrations",addonId:null,access:"delete"},"integrations.get":{capName:"integrations",addonId:null,access:"view"},"integrations.getAvailableTypes":{capName:"integrations",addonId:null,access:"view"},"integrations.getByAddonId":{capName:"integrations",addonId:null,access:"view"},"integrations.getSettings":{capName:"integrations",addonId:null,access:"view"},"integrations.list":{capName:"integrations",addonId:null,access:"view"},"integrations.setSettings":{capName:"integrations",addonId:null,access:"create"},"integrations.testConnection":{capName:"integrations",addonId:null,access:"create"},"integrations.update":{capName:"integrations",addonId:null,access:"create"},"intercom.handleAnswer":{capName:"intercom",addonId:null,access:"create"},"intercom.startSession":{capName:"intercom",addonId:null,access:"create"},"intercom.stopSession":{capName:"intercom",addonId:null,access:"create"},"localNetwork.getAllowedAddresses":{capName:"local-network",addonId:null,access:"view"},"localNetwork.getConnectionEndpoints":{capName:"local-network",addonId:null,access:"view"},"localNetwork.getPreferred":{capName:"local-network",addonId:null,access:"view"},"localNetwork.list":{capName:"local-network",addonId:null,access:"view"},"localNetwork.resetAllowlistToBestMatch":{capName:"local-network",addonId:null,access:"delete"},"localNetwork.setAllowedAddresses":{capName:"local-network",addonId:null,access:"create"},"logDestination.query":{capName:"log-destination",addonId:null,access:"view"},"logDestination.write":{capName:"log-destination",addonId:null,access:"create"},"meshNetwork.getStatus":{capName:"mesh-network",addonId:null,access:"view"},"meshNetwork.join":{capName:"mesh-network",addonId:null,access:"create"},"meshNetwork.leave":{capName:"mesh-network",addonId:null,access:"create"},"meshNetwork.listPeers":{capName:"mesh-network",addonId:null,access:"view"},"meshNetwork.setMeshIngress":{capName:"mesh-network",addonId:null,access:"create"},"meshNetwork.setPublicIngress":{capName:"mesh-network",addonId:null,access:"create"},"meshOrchestrator.joinProvider":{capName:"mesh-orchestrator",addonId:null,access:"create"},"meshOrchestrator.leaveProvider":{capName:"mesh-orchestrator",addonId:null,access:"create"},"meshOrchestrator.listProviders":{capName:"mesh-orchestrator",addonId:null,access:"view"},"metricsProvider.collectSnapshot":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getAddonStats":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getCached":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getCpuTemperature":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getCurrent":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getDiskSpace":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getGpuInfo":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.getProcessStats":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.killProcess":{capName:"metrics-provider",addonId:null,access:"create"},"metricsProvider.listAddonInstances":{capName:"metrics-provider",addonId:null,access:"view"},"metricsProvider.listNodeProcesses":{capName:"metrics-provider",addonId:null,access:"view"},"motion.isDetected":{capName:"motion",addonId:null,access:"view"},"motionDetection.analyze":{capName:"motion-detection",addonId:null,access:"create"},"motionDetection.removeCamera":{capName:"motion-detection",addonId:null,access:"delete"},"motionDetection.reset":{capName:"motion-detection",addonId:null,access:"delete"},"motionTrigger.setMotionTrigger":{capName:"motion-trigger",addonId:null,access:"create"},"networkAccess.getEndpoint":{capName:"network-access",addonId:null,access:"view"},"networkAccess.getStatus":{capName:"network-access",addonId:null,access:"view"},"networkAccess.start":{capName:"network-access",addonId:null,access:"create"},"networkAccess.stop":{capName:"network-access",addonId:null,access:"create"},"networkQuality.getAllStats":{capName:"network-quality",addonId:null,access:"view"},"networkQuality.getDeviceStats":{capName:"network-quality",addonId:null,access:"view"},"networkQuality.reportClientStats":{capName:"network-quality",addonId:null,access:"create"},"nodes.clusterAddonStatus":{capName:"nodes",addonId:null,access:"view"},"nodes.deployAddon":{capName:"nodes",addonId:null,access:"create"},"nodes.executeQuery":{capName:"nodes",addonId:null,access:"create"},"nodes.renameNode":{capName:"nodes",addonId:null,access:"create"},"nodes.restartAddon":{capName:"nodes",addonId:null,access:"create"},"nodes.restartNode":{capName:"nodes",addonId:null,access:"create"},"nodes.restartProcess":{capName:"nodes",addonId:null,access:"create"},"nodes.setProcessLogLevel":{capName:"nodes",addonId:null,access:"create"},"nodes.shutdownNode":{capName:"nodes",addonId:null,access:"create"},"nodes.topology":{capName:"nodes",addonId:null,access:"view"},"nodes.undeployAddon":{capName:"nodes",addonId:null,access:"create"},"notificationOutput.send":{capName:"notification-output",addonId:null,access:"create"},"notificationOutput.sendTest":{capName:"notification-output",addonId:null,access:"create"},"osd.setOverlay":{capName:"osd",addonId:null,access:"create"},"pipelineAnalytics.clearTracks":{capName:"pipeline-analytics",addonId:null,access:"delete"},"pipelineAnalytics.getActiveTracks":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.getAudioEvents":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.getEventMedia":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.getMotionEvents":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.getObjectEvents":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.getTrack":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.getTrackMedia":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineAnalytics.listTracks":{capName:"pipeline-analytics",addonId:null,access:"view"},"pipelineExecutor.cacheFrameInPool":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.deleteModel":{capName:"pipeline-executor",addonId:null,access:"delete"},"pipelineExecutor.deleteTemplate":{capName:"pipeline-executor",addonId:null,access:"delete"},"pipelineExecutor.detect":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.downloadModel":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.getAddonModels":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getAudioCapabilities":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getAvailableEngines":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getCapabilities":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getDefaultSteps":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getDetectionConfigSchema":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getEffectiveTuning":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getGlobalPipelineConfig":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getGlobalSteps":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getOrchestratorConfigSchema":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getReferenceAudio":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getReferenceAudioFiles":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getReferenceImage":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getSchema":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getSelectedEngine":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.getVideoPipelineSteps":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.inferCached":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.killEngine":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.listLoadedEngines":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.listReferenceImages":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.listTemplates":{capName:"pipeline-executor",addonId:null,access:"view"},"pipelineExecutor.reprobeEngine":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.runAudioTest":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.runPipeline":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.runPipelineBatch":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.saveTemplate":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.setVideoPipelineSteps":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.spinEngine":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.uncacheFrame":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineExecutor.updateTemplate":{capName:"pipeline-executor",addonId:null,access:"create"},"pipelineOrchestrator.assignAudio":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.assignDecoder":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.assignPipeline":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.deleteTemplate":{capName:"pipeline-orchestrator",addonId:null,access:"delete"},"pipelineOrchestrator.getAgentLoad":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getAgentSettings":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getAudioAssignment":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getAudioAssignments":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getAudioNodeLoad":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getCameraMetrics":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getCameraSettings":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getCameraStepOverrides":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getCapabilityBindings":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getDecoderAssignment":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getDecoderAssignments":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getGlobalMetrics":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getPipelineAssignment":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.getPipelineAssignments":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.listAgentSettings":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.listTemplates":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.rebalance":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.removeAgentSettings":{capName:"pipeline-orchestrator",addonId:null,access:"delete"},"pipelineOrchestrator.resolvePipeline":{capName:"pipeline-orchestrator",addonId:null,access:"view"},"pipelineOrchestrator.saveTemplate":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.setAgentAddonDefaults":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.setCameraPipelineForAgent":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.setCameraStepOverride":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.setCameraStepToggle":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.setCapabilityBinding":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.unassignAudio":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.unassignDecoder":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.unassignPipeline":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineOrchestrator.updateTemplate":{capName:"pipeline-orchestrator",addonId:null,access:"create"},"pipelineRunner.attachCamera":{capName:"pipeline-runner",addonId:null,access:"create"},"pipelineRunner.detachCamera":{capName:"pipeline-runner",addonId:null,access:"create"},"pipelineRunner.getAllCameraMetrics":{capName:"pipeline-runner",addonId:null,access:"view"},"pipelineRunner.getCameraMetrics":{capName:"pipeline-runner",addonId:null,access:"view"},"pipelineRunner.getLocalCameras":{capName:"pipeline-runner",addonId:null,access:"view"},"pipelineRunner.getLocalLoad":{capName:"pipeline-runner",addonId:null,access:"view"},"pipelineRunner.getLocalMetrics":{capName:"pipeline-runner",addonId:null,access:"view"},"pipelineRunner.reportMotion":{capName:"pipeline-runner",addonId:null,access:"create"},"platformProbe.getCapabilities":{capName:"platform-probe",addonId:null,access:"view"},"platformProbe.getHardware":{capName:"platform-probe",addonId:null,access:"view"},"platformProbe.resolveHwAccel":{capName:"platform-probe",addonId:null,access:"view"},"platformProbe.resolveInferenceConfig":{capName:"platform-probe",addonId:null,access:"view"},"ptz.continuousMove":{capName:"ptz",addonId:null,access:"create"},"ptz.getPosition":{capName:"ptz",addonId:null,access:"view"},"ptz.getPresets":{capName:"ptz",addonId:null,access:"view"},"ptz.goHome":{capName:"ptz",addonId:null,access:"create"},"ptz.goToPreset":{capName:"ptz",addonId:null,access:"create"},"ptz.move":{capName:"ptz",addonId:null,access:"create"},"ptz.stop":{capName:"ptz",addonId:null,access:"create"},"ptzAutotrack.getSettings":{capName:"ptz-autotrack",addonId:null,access:"view"},"ptzAutotrack.getStatus":{capName:"ptz-autotrack",addonId:null,access:"view"},"ptzAutotrack.setEnabled":{capName:"ptz-autotrack",addonId:null,access:"create"},"ptzAutotrack.setSettings":{capName:"ptz-autotrack",addonId:null,access:"create"},"reboot.reboot":{capName:"reboot",addonId:null,access:"create"},"recording.getPlaybackUrl":{capName:"recording",addonId:null,access:"view"},"recording.getSegments":{capName:"recording",addonId:null,access:"view"},"recording.getThumbnailAt":{capName:"recording",addonId:null,access:"view"},"recordingEngine.disable":{capName:"recording-engine",addonId:null,access:"create"},"recordingEngine.enable":{capName:"recording-engine",addonId:null,access:"create"},"recordingEngine.estimateGlobalStorage":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.estimateStorage":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getAvailability":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getConfig":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getMotionStats":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getPlaylist":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getPolicy":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getPolicyStatus":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getRetentionConfig":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getSegments":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getStatus":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getStorageUsage":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.getThumbnail":{capName:"recording-engine",addonId:null,access:"view"},"recordingEngine.setPolicy":{capName:"recording-engine",addonId:null,access:"create"},"recordingEngine.updateConfig":{capName:"recording-engine",addonId:null,access:"create"},"recordingEngine.updateRetentionConfig":{capName:"recording-engine",addonId:null,access:"create"},"remoteAccess.listProviders":{capName:"remote-access",addonId:null,access:"view"},"remoteAccess.startProvider":{capName:"remote-access",addonId:null,access:"create"},"remoteAccess.stopProvider":{capName:"remote-access",addonId:null,access:"create"},"restreamer.getExposedResources":{capName:"restreamer",addonId:null,access:"view"},"restreamer.registerDevice":{capName:"restreamer",addonId:null,access:"create"},"restreamer.unregisterDevice":{capName:"restreamer",addonId:null,access:"delete"},"settingsStore.count":{capName:"settings-store",addonId:null,access:"view"},"settingsStore.declareCollection":{capName:"settings-store",addonId:null,access:"create"},"settingsStore.delete":{capName:"settings-store",addonId:null,access:"delete"},"settingsStore.get":{capName:"settings-store",addonId:null,access:"view"},"settingsStore.insert":{capName:"settings-store",addonId:null,access:"create"},"settingsStore.isEmpty":{capName:"settings-store",addonId:null,access:"view"},"settingsStore.query":{capName:"settings-store",addonId:null,access:"view"},"settingsStore.set":{capName:"settings-store",addonId:null,access:"create"},"settingsStore.update":{capName:"settings-store",addonId:null,access:"create"},"snapshot.getSnapshot":{capName:"snapshot",addonId:null,access:"view"},"snapshot.invalidateCache":{capName:"snapshot",addonId:null,access:"create"},"snapshotProvider.getSnapshot":{capName:"snapshot-provider",addonId:null,access:"view"},"snapshotProvider.supportsDevice":{capName:"snapshot-provider",addonId:null,access:"view"},"storage.abortUpload":{capName:"storage",addonId:null,access:"create"},"storage.beginDownload":{capName:"storage",addonId:null,access:"create"},"storage.beginUpload":{capName:"storage",addonId:null,access:"create"},"storage.delete":{capName:"storage",addonId:null,access:"delete"},"storage.deleteLocation":{capName:"storage",addonId:null,access:"delete"},"storage.endDownload":{capName:"storage",addonId:null,access:"create"},"storage.exists":{capName:"storage",addonId:null,access:"view"},"storage.finalizeUpload":{capName:"storage",addonId:null,access:"create"},"storage.getAvailableSpace":{capName:"storage",addonId:null,access:"view"},"storage.getDefaultLocation":{capName:"storage",addonId:null,access:"view"},"storage.list":{capName:"storage",addonId:null,access:"view"},"storage.listLocations":{capName:"storage",addonId:null,access:"view"},"storage.listProviders":{capName:"storage",addonId:null,access:"view"},"storage.read":{capName:"storage",addonId:null,access:"view"},"storage.readChunk":{capName:"storage",addonId:null,access:"view"},"storage.resolve":{capName:"storage",addonId:null,access:"view"},"storage.testConfig":{capName:"storage",addonId:null,access:"view"},"storage.testLocation":{capName:"storage",addonId:null,access:"view"},"storage.upsertLocation":{capName:"storage",addonId:null,access:"create"},"storage.write":{capName:"storage",addonId:null,access:"create"},"storage.writeChunk":{capName:"storage",addonId:null,access:"create"},"storageProvider.abortUpload":{capName:"storage-provider",addonId:null,access:"create"},"storageProvider.beginDownload":{capName:"storage-provider",addonId:null,access:"create"},"storageProvider.beginUpload":{capName:"storage-provider",addonId:null,access:"create"},"storageProvider.delete":{capName:"storage-provider",addonId:null,access:"delete"},"storageProvider.endDownload":{capName:"storage-provider",addonId:null,access:"create"},"storageProvider.exists":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.finalizeUpload":{capName:"storage-provider",addonId:null,access:"create"},"storageProvider.getAvailableSpace":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.getProviderInfo":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.list":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.read":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.readChunk":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.resolve":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.testLocation":{capName:"storage-provider",addonId:null,access:"view"},"storageProvider.write":{capName:"storage-provider",addonId:null,access:"create"},"storageProvider.writeChunk":{capName:"storage-provider",addonId:null,access:"create"},"streamBroker.assignProfile":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.getAllRtspEntries":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.getBroker":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.getBrokerStats":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.getPreBufferInfo":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.getRtspEntry":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.getRtspPort":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.getStreamUrl":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.isRtspEnabled":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.killClient":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.listAllCameraStreams":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.listAllProfileSlots":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.listClients":{capName:"stream-broker",addonId:null,access:"view"},"streamBroker.publishCameraStream":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.regenerateRtspToken":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.restartProfile":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.retractCameraStream":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.setPreBufferDuration":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.setRtspEnabled":{capName:"stream-broker",addonId:null,access:"create"},"streamBroker.unassignProfile":{capName:"stream-broker",addonId:null,access:"create"},"streamingEngine.getStreamUrl":{capName:"streaming-engine",addonId:null,access:"view"},"streamingEngine.listStreams":{capName:"streaming-engine",addonId:null,access:"view"},"streamingEngine.registerStream":{capName:"streaming-engine",addonId:null,access:"create"},"streamingEngine.unregisterStream":{capName:"streaming-engine",addonId:null,access:"delete"},"switch.setState":{capName:"switch",addonId:null,access:"create"},"system.featureFlags":{capName:"system",addonId:null,access:"view"},"system.forceRetentionCleanup":{capName:"system",addonId:null,access:"create"},"system.getRetentionConfig":{capName:"system",addonId:null,access:"view"},"system.health":{capName:"system",addonId:null,access:"view"},"system.info":{capName:"system",addonId:null,access:"view"},"system.networkAddresses":{capName:"system",addonId:null,access:"view"},"system.setRetentionConfig":{capName:"system",addonId:null,access:"create"},"toast.onToast":{capName:"toast",addonId:null,access:"view"},"turnOrchestrator.getAllServers":{capName:"turn-orchestrator",addonId:null,access:"view"},"turnOrchestrator.listProviders":{capName:"turn-orchestrator",addonId:null,access:"view"},"turnOrchestrator.setProviderEnabled":{capName:"turn-orchestrator",addonId:null,access:"create"},"turnProvider.getTurnServers":{capName:"turn-provider",addonId:null,access:"view"},"userManagement.createApiKey":{capName:"user-management",addonId:null,access:"create"},"userManagement.createScopedToken":{capName:"user-management",addonId:null,access:"create"},"userManagement.createUser":{capName:"user-management",addonId:null,access:"create"},"userManagement.deleteUser":{capName:"user-management",addonId:null,access:"delete"},"userManagement.listApiKeys":{capName:"user-management",addonId:null,access:"view"},"userManagement.listScopedTokens":{capName:"user-management",addonId:null,access:"view"},"userManagement.listUsers":{capName:"user-management",addonId:null,access:"view"},"userManagement.resetPassword":{capName:"user-management",addonId:null,access:"delete"},"userManagement.revokeApiKey":{capName:"user-management",addonId:null,access:"delete"},"userManagement.revokeScopedToken":{capName:"user-management",addonId:null,access:"delete"},"userManagement.setUserScopes":{capName:"user-management",addonId:null,access:"create"},"userManagement.updateUser":{capName:"user-management",addonId:null,access:"create"},"userManagement.validateApiKey":{capName:"user-management",addonId:null,access:"create"},"userManagement.validateCredentials":{capName:"user-management",addonId:null,access:"create"},"userManagement.validateScopedToken":{capName:"user-management",addonId:null,access:"view"},"webrtc.closeSession":{capName:"webrtc",addonId:null,access:"create"},"webrtc.createSession":{capName:"webrtc",addonId:null,access:"create"},"webrtc.handleAnswer":{capName:"webrtc",addonId:null,access:"create"},"webrtc.handleOffer":{capName:"webrtc",addonId:null,access:"create"},"webrtc.hasAdaptiveBitrate":{capName:"webrtc",addonId:null,access:"view"},"webrtc.registerStream":{capName:"webrtc",addonId:null,access:"create"},"webrtc.supportsStream":{capName:"webrtc",addonId:null,access:"view"},"webrtc.unregisterStream":{capName:"webrtc",addonId:null,access:"delete"},"webrtcSession.closeSession":{capName:"webrtc-session",addonId:null,access:"create"},"webrtcSession.createSession":{capName:"webrtc-session",addonId:null,access:"create"},"webrtcSession.handleAnswer":{capName:"webrtc-session",addonId:null,access:"create"},"webrtcSession.hasAdaptiveBitrate":{capName:"webrtc-session",addonId:null,access:"view"},"webrtcSession.listStreams":{capName:"webrtc-session",addonId:null,access:"view"},"zoneAnalytics.getCameraHistory":{capName:"zone-analytics",addonId:null,access:"view"},"zoneAnalytics.getCurrentSnapshot":{capName:"zone-analytics",addonId:null,access:"view"},"zoneAnalytics.getUnzonedHistory":{capName:"zone-analytics",addonId:null,access:"view"},"zoneAnalytics.getZoneHistory":{capName:"zone-analytics",addonId:null,access:"view"},"zoneRules.listRules":{capName:"zone-rules",addonId:null,access:"view"},"zoneRules.setRules":{capName:"zone-rules",addonId:null,access:"create"},"zones.addZone":{capName:"zones",addonId:null,access:"create"},"zones.listZones":{capName:"zones",addonId:null,access:"view"},"zones.removeZone":{capName:"zones",addonId:null,access:"delete"},"zones.updateZone":{capName:"zones",addonId:null,access:"create"}}),Yu=["addon-pages","addon-pages-source","addon-routes","addon-settings","addon-widgets","addon-widgets-source","addons","admin-ui","advanced-notifier","alerts","audio-analysis","audio-analyzer","audio-codec","audio-metrics","auth-provider","authentication","backup","brightness","camera-credentials","camera-streams","decoder","device-discovery","device-manager","device-ops","device-provider","device-state","embedding-encoder","events","integrations","intercom","local-network","log-destination","mesh-network","mesh-orchestrator","metrics-provider","motion","motion-detection","motion-trigger","network-access","network-quality","nodes","notification-output","osd","pipeline-analytics","pipeline-executor","pipeline-orchestrator","pipeline-runner","platform-probe","ptz","ptz-autotrack","reboot","recording","recording-engine","remote-access","restreamer","settings-store","snapshot","snapshot-provider","storage","storage-provider","stream-broker","streaming-engine","switch","system","toast","turn-orchestrator","turn-provider","user-management","webrtc","webrtc-session","zone-analytics","zone-rules","zones"];function Qu(s){try{const o=new URL(s);return!o.username&&!o.password?s:(o.username="",o.password="",o.toString())}catch{return s}}class Ju{constructor(o){this.capacity=o,this.items=Array.from({length:o})}items;head=0;tail=0;count=0;get size(){return this.count}push(o){this.items[this.tail]=o,this.tail=(this.tail+1)%this.capacity,this.count<this.capacity?this.count++:this.head=(this.head+1)%this.capacity}drain(o){const n=[],d=Math.min(o,this.count);for(let u=0;u<d;u++)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 Xu(s,o,n){const d={};for(const u of Object.keys(n))d[u]=g=>s.addons.custom.mutate({addonId:o,action:u,input:g});return d}export{El as ACCESSORY_LABEL,Vu as ALL_CAPABILITY_DEFINITIONS,ni as APPLE_SA_TO_MACRO,Wl as AUDIO_BACKEND_CHOICES,ti as AUDIO_MACRO_LABELS,pc as AccessoriesStatusSchema,F as AccessoryKind,Td as AddonAutoUpdateSchema,Cd as AddonListItemSchema,ns as AddonPageDeclarationSchema,ts as AddonPageInfoSchema,Ss as AgentLoadSummarySchema,_e as AlertSchema,Co as AlertSeveritySchema,Po as AlertSourceSchema,No as AlertStatusSchema,Gl as ApiKeyRecordSchema,yt as ApiKeySummarySchema,jo as ArchiveEntrySchema,Go as ArchiveManifestSchema,ws as AudioAnalysisResultSchema,As as AudioAnalysisSettingsSchema,ia as AudioChunkInputSchema,pi as AudioClassSummarySchema,ot as AudioClassificationLabelSchema,Cs as AudioClassificationResultSchema,Ds as AudioCodecInfoSchema,Ms as AudioDecodeSessionConfigSchema,Es as AudioEncodeSessionConfigSchema,ba as AudioEncodedChunkSchema,Rr as AudioEventSchema,Ri as AudioLevelSchema,gi as AudioMetricsHistoryPointSchema,hi as AudioMetricsHistorySchema,ea as AudioMetricsSnapshotSchema,Ts as AudioPcmChunkSchema,Vs as AuthProviderInfoSchema,He as AuthResultSchema,Ed as AutoUpdateSettingsSchema,vd as AvailableIntegrationTypeSchema,En as BACKEND_TO_FORMAT,si as BATTERY_DEVICE_PROFILE,Wo as BackupDestinationInfoSchema,ma as BackupEntrySchema,Hd as BaseAddon,zu as BaseDevice,Lu as BaseDeviceProvider,Oe as BatteryStatusSchema,te as BoundingBoxSchema,ta as BrightnessStatusSchema,Ci as BrokerAudioClientSchema,Ni as BrokerClientsSchema,Ai as BrokerDecodedClientSchema,wi as BrokerRtspClientSchema,bi as BrokerStatsSchema,Si as BrokerStatusSchema,Bl as CAM_PROFILE_ORDER,ju as CAPABILITY_NAMES,Gu as CAPABILITY_ROUTER_KEYS,Ku as CAP_NAMES_WITH_STATUS,Ru as COCO_80_LABELS,Bu as COCO_TO_MACRO,$ as CamProfileSchema,Ka as CamStreamKindSchema,At as CamStreamResolutionSchema,oc as CameraCredentialsSchema,sc as CameraCredentialsStatusSchema,Nt as CameraMetricsSchema,Oi as CameraMetricsWithDeviceIdSchema,tt as CameraStreamSchema,Is as CapabilityBindingsSchema,ii as ChargingStatus,nd as ClientNetworkStatsSchema,ld as ClusterAddonNodeDeploymentSchema,ud as ClusterAddonStatusEntrySchema,Zo as CollectionColumnSchema,Yo as CollectionIndexSchema,qs as ConfigEntrySchema,wo as ConfigSectionWithValuesSchema,ko as ConfigTabDeclarationSchema,Kc as CreateApiKeyInputSchema,Zc as CreateApiKeyResultSchema,fd as CreateIntegrationInputSchema,Yc as CreateScopedTokenInputSchema,Qc as CreateScopedTokenResultSchema,Gc as CreateUserInputSchema,qd as CustomActionInputSchema,_d as DEFAULT_ADDON_GROUP,Ud as DEFAULT_ADDON_PLACEMENT,$l as DEFAULT_AUDIO_ANALYZER_CONFIG,Hl as DEFAULT_DECODER_HWACCEL_CONFIG,lu as DEFAULT_FEATURES,iu as DEFAULT_LOCATION_SUBDIRS,pu as DEFAULT_RETENTION,ri as DEVICE_PROFILES,ui as DEVICE_SETTINGS_CONTRIBUTION_METHODS,mi as DEVICE_STATUS_METHOD,Ou as DEVICE_TYPE_INFO,fi as DecodedFrameSchema,Sa as DecoderAssignmentSchema,Jt as DecoderSessionConfigSchema,Xn as DecoderStatsSchema,bd as DeleteIntegrationResultSchema,Wi as DetectorOutputSchema,ue as DeviceConfig,aa as DeviceDiscoveryStatusSchema,$a as DeviceFeature,Fe as DeviceInfoSchema,Oa as DeviceNetworkStatsSchema,_ as DeviceRole,Et as DeviceRuntimeState,xe as DeviceStatusSchema,C as DeviceType,it as DiscoveredChildDeviceSchema,Di as DiscoveredChildStatusSchema,Ul as DiscoveredDeviceSchema,Zl as DisposerChain,Mi as DoorbellPressEventSchema,na as DoorbellStatusSchema,Au as ElementConfigStore,Bs as EmbeddingInfoSchema,Ia as EmbeddingResultSchema,yi as EncodedPacketSchema,rs as EnrichedWidgetMetadataSchema,Ae as EventCategory,Jr as EventItemSchema,Dr as EventKindSchema,Qd as EventSourceType,ps as ExposedResourceSchema,Ba as FeatureManifestSchema,Be as FeatureProbeStatusSchema,Ie as FrameInputSchema,bs as GlobalMetricsSchema,gu as HF_BASE_URL,Jd as HF_REPO,Fl as HWACCEL_OPTIONS,Xc as HealthStatusSchema,Le as HistoryPointSchema,fo as HistoryResolutionEnum,Nd as InstalledPackageSchema,Ke as IntegrationLiteSchema,qa as IntegrationWithStateSchema,hc as IntercomAbilitySchema,Ra as IntercomStatusSchema,Yu as KNOWN_CAP_NAMES,Vo as LocationStatSchema,ha as LogEntrySchema,dn as LogLevelSchema,Bd as LogStreamEntrySchema,xu as MACRO_LABELS,Zu as METHOD_ACCESS_MAP,Zn as MODEL_FORMATS,Ca as MediaFileSchema,jc as MethodAccessSchema,xi as MotionAnalysisResultSchema,Er as MotionEventSchema,mo as MotionOnMotionChangedDataSchema,Ne as MotionRegionSchema,Pt as MotionSourceEnum,so as MotionSourcesSchema,sa as MotionStatusSchema,po as MotionTriggerRuntimeStateSchema,tn as MotionTriggerStatusSchema,kn as NativeDetectionSchema,vt as NativeObjectClassEnum,yc as NativeObjectDetectionStatusSchema,Zs as NetworkAccessStatusSchema,ed as NetworkAddressSchema,mt as NetworkEndpointSchema,rr as NotificationHistoryEntrySchema,ka as NotificationRuleSchema,or as NotificationSchema,Tr as ObjectEventSchema,zl as OrchestratorMetricsSchema,dc as OsdOverlayKindEnum,uc as OsdOverlayPatchSchema,lc as OsdOverlaySchema,ht as OsdPositionEnum,Ta as OsdStatusSchema,Ld as PIPELINE_FLOW_CAPABILITY_NAMES,Kl as PIPELINE_OWNER_CAPABILITY_NAMES,al as PYTHON_SCRIPT,Pd as PackageUpdateSchema,Dd as PackageVersionInfoSchema,Ee as PcmSampleFormatSchema,dt as PerScopeBreakdownSchema,fa as PipelineAssignmentSchema,rt as PipelineDefaultStepSchema,D as PipelineEngineChoiceSchema,oa as PipelineRunResultBridge,ee as PipelineStepInputSchema,ql as PlaceholderReasonSchema,oo as PolygonPointSchema,at as ProfileSlotSchema,be as ProfileSlotStatusSchema,bo as ProviderStatusSchema,vo as PtzAutotrackRuntimeStateSchema,ct as PtzAutotrackSettingsSchema,ke as PtzAutotrackStatusSchema,ho as PtzAutotrackTargetOptionSchema,Ea as PtzMoveCommandSchema,Ma as PtzPositionSchema,Yr as PtzPresetSchema,pa as QueryFilterSchema,mu as RECOGNITION_TYPES,hu as RUNTIME_DEFAULTS,tl as RUNTIME_TO_FORMAT,tu as ReadinessRegistry,$d as ReadinessTimeoutError,ms as RegisteredStreamSchema,hn as RemoteAccessEndpointSchema,Qs as RemoteAccessProviderInfoSchema,ro as ReportMotionInputSchema,Ju as RingBuffer,nt as RtspRestreamEntrySchema,co as RunnerCameraConfigSchema,Ll as RunnerCameraDeviceUIFields,Xa as RunnerLocalLoadSchema,lo as RunnerLocalMetricsSchema,Pl as STORAGE_LOCATION_CARDINALITY,nu as STORAGE_LOCATION_TYPES,Gd as STREAM_QUALITY_LABELS,uu as SUB_DETECTION_TYPES,Vl as ScopedTokenSchema,ft as ScopedTokenSummarySchema,Md as SearchResultSchema,ec as SegmentSchema,la as SettingsPatchSchema,ga as SettingsRecordSchema,J as SettingsSchemaWithValuesSchema,ua as SettingsUpdateResultSchema,yn as SnapshotImageSchema,Ti as SpatialDetectionSchema,qo as StorageAbortUploadInputSchema,zo as StorageBeginDownloadInputSchema,Lo as StorageBeginDownloadResultSchema,Ro as StorageBeginUploadInputSchema,xo as StorageBeginUploadResultSchema,Uo as StorageEndDownloadInputSchema,Oo as StorageFinalizeUploadInputSchema,L as StorageLocationRefSchema,R as StorageLocationSchema,X as StorageLocationTypeSchema,Eo as StorageProviderInfoSchema,_o as StorageReadChunkInputSchema,To as StorageTestLocationResultSchema,Bo as StorageWriteChunkInputSchema,Ct as StreamFormatSchema,Ii as StreamInfoSchema,ad as StreamNetworkStatsSchema,vi as StreamSourceEntrySchema,Ol as StreamSourceSchema,ra as SwitchStatusSchema,Kr as SystemMetricsSchema,Hu as SystemMirror,yd as TestConnectionResultSchema,od as ToastSchema,H as TokenScopeSchema,dd as TopologyNodeSchema,cd as TopologyProcessSchema,rd as TopologyServiceSchema,We as TrackSchema,Dt as TrackStateSchema,qr as TrackedDetectionSchema,er as TurnProviderInfoSchema,vn as TurnServerSchema,Sd as UpdateIntegrationInputSchema,Vc as UpdateUserInputSchema,jl as UserRecordSchema,K as UserRoleSchema,Ge as UserSummarySchema,Yn as WELL_KNOWN_TABS,Nl as WELL_KNOWN_TAB_MAP,vs as WebrtcStreamChoiceSchema,mn as WebrtcStreamTargetSchema,os as WidgetHostEnum,ln as WidgetMetadataSchema,va as WidgetSizeEnum,ai as YAMNET_TO_MACRO,io as ZoneKindEnum,So as ZoneRuleModeEnum,de as ZoneRuleSchema,da as ZoneRuleStageEnum,_l as ZoneRulesArraySchema,ce as ZoneSchema,yo as ZoneScopeBreakdownSchema,gc as accessoriesCapability,Tl as accessoryStableId,as as addonPagesCapability,is as addonPagesSourceCapability,ls as addonRoutesCapability,Ao as addonSettingsCapability,cs as addonWidgetsCapability,ss as addonWidgetsSourceCapability,zd as addonsCapability,Xo as adminUiCapability,cr as advancedNotifierCapability,Do as alertsCapability,Su as asBoolean,vu as asJsonArray,Xd as asJsonObject,fu as asNumber,yu as asString,Ps as audioAnalysisCapability,Ns as audioAnalyzerCapability,xs as audioCodecCapability,ja as audioMetricsCapability,Gs as authProviderCapability,Ks as authenticationCapability,du as autoAssignProfiles,Ko as backupCapability,Ga as batteryCapability,Xu as bindAddonActions,Va as brightnessCapability,rc as cameraCredentialsCapability,Za as cameraStreamsCapability,su as classifyStream,Kd as classifyStreams,wu as cosineSimilarity,yl as createDeviceProxy,Dn as createEvent,Rn as createLazyTrpcSource,hl as createMirrorSource,qu as createRuntimeStateBridge,T as createSliceHandle,Fu as createSystemProxy,$u as customAction,us as decoderCapability,Wu as defineCustomActions,Pr as detectionPipelineCapability,Ya as deviceDiscoveryCapability,$s as deviceManagerCapability,oi as deviceMatchesProfile,ic as deviceOpsCapability,cn as deviceProviderCapability,js as deviceStateCapability,kt as deviceStatusCapability,Qa as doorbellCapability,Os as embeddingEncoderCapability,au as emitDownForOwnedCaps,Fd as emitReadiness,ei as errMsg,Uu as evaluateZoneRules,V as event,Xr as eventsCapability,xl as expandCapMethods,wt as featureProbeCapability,Pu as formatForBackend,Du as formatForRuntime,Ml as getAudioMacroClassIds,ku as hfModelUrl,Qt as hydrateSchema,Id as integrationsCapability,vc as intercomCapability,Ql as isAgentOnlyPlacement,Yl as isDeployableToAgent,eu as isEvent,Oc as localNetworkCapability,Jo as logDestinationCapability,Dl as mapAudioLabelToMacro,Qu as maskUrlCredentials,Fc as meshNetworkCapability,$c as meshOrchestratorCapability,r as method,Zr as metricsProviderCapability,en as motionCapability,Bi as motionDetectionCapability,an as motionTriggerCapability,fc as nativeObjectDetectionCapability,Ys as networkAccessCapability,id as networkQualityCapability,hd as nodesCapability,Wd as normalizeAddonInitResult,sr as notificationOutputCapability,mc as osdCapability,cu as parseCameraStreamConfig,Iu as parseJsonArray,bu as parseJsonObject,Mn as parseJsonUnknown,zr as pipelineAnalyticsCapability,no as pipelineExecutorCapability,ks as pipelineOrchestratorCapability,uo as pipelineRunnerCapability,Mc as platformProbeCapability,nn as ptzAutotrackCapability,Qr as ptzCapability,Mu as pythonScriptForBackend,Ze as readinessKey,cc as rebootCapability,tc as recordingCapability,Nr as recordingEngineCapability,Js as remoteAccessCapability,Eu as requiresPython,Te as resolveAddonExecution,Jl as resolveAddonGroup,Xl as resolveAddonPlacement,Nu as resolveAddonRuntime,nl as resolveDetectionRuntime,Rl as resolveDeviceProfile,Cu as resolveModelFormat,gs as restreamerCapability,Tu as runInferenceStep,le as scopeKey,Qo as settingsStoreCapability,nr as snapshotCapability,ir as snapshotProviderCapability,Mo as storageCapability,Fo as storageProviderCapability,Pi as streamBrokerCapability,Vd as streamPixels,ou as streamQualityLabel,ki as streamingEngineCapability,on as switchCapability,td as systemCapability,rl as toDeviceSummary,ru as toStreamSourceEntry,sd as toastCapability,tr as turnOrchestratorCapability,Xs as turnProviderCapability,Jc as userManagementCapability,hs as webrtcCapability,un as webrtcClientHintsSchema,ys as webrtcSessionCapability,_u as zodEntriesToConfigUI,sn as zoneAnalyticsCapability,rn as zoneRulesCapability,Ja as zonesCapability};