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