@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{d as y,o as t,n as a,b as l,r as v,u as h,s as e,f as E,a as r,j as qa,l as b,_ as d,c as w,h as R,g as rt,t as Ta,e as Fe,i as Ra,k as ln}from"./schemas-XgIEoUz3.js";const un=["onnx","coreml","openvino","tflite","pt"],mn=[{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}],fd=Object.fromEntries(mn.map(m=>[m.id,m]));function pn(m){return m.type==="separator"||m.type==="info"||m.type==="button"||m.type==="object-array"||m.type==="widget"||m.type==="addon-action-button"}function Id(m,c){return{...m.tabs?{tabs:[...m.tabs]}:{},sections:m.sections.map(o=>({...o,fields:o.fields.map(g=>_e(g,c))}))}}function _e(m,c){if(pn(m))return m;if(m.type==="group"){const p=m.fields.map(P=>_e(P,c));return{...m,fields:p}}if(m.type==="sub-tabs"){const p=m.tabs.map(P=>({...P,fields:P.fields.map(A=>_e(A,c))}));return{...m,tabs:p}}const o=m.key,g=Object.prototype.hasOwnProperty.call(c,o)?c[o]:void 0,S=m.default;if(m.multiple){const p=Array.isArray(g)?g:g!=null?[g]:[],k=m.multiple.itemDefault!==void 0?m.multiple.itemDefault:S!==void 0?S:gn(m)==="string"?"":null,P=Math.max(m.multiple.min,p.length),A=[];for(let D=0;D<P;D++)A.push(D<p.length?p[D]:k);return{...m,value:A}}const f=g!==void 0?g:S!==void 0?S:null,I=m.type==="textarea"&&m.isJson&&f!==null&&typeof f=="object"?JSON.stringify(f,null,2):f;return{...m,value:I}}function gn(m){switch(m.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 Z=y(["data","media","recordings","recordings-high","recordings-low","recordings-clips","event-images","models","cache","logs","addons-data","backups"]),kd={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"},T=t({id:e().regex(/^[a-z][a-z0-9-]*:[a-z0-9-]+$/),type:Z,displayName:e().min(1),providerId:e().min(1),config:v(e(),h()),isDefault:l().default(!1),isSystem:l().default(!1),createdAt:a(),updatedAt:a()}),O=E([Z,e().regex(/^[a-z][a-z0-9-]*:[a-z0-9-]+$/)]),hn=t({inputFps:a(),outputFps:a(),avgDecodeTimeMs:a(),droppedFrames:a()}),Ft=t({codec:e(),maxFps:a().default(0),outputFormat:y(["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()}),vn=[{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:"🤫"}],yn={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},Sn={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},dt=new Map;for(const[m,c]of Object.entries(yn.mapping))dt.set(m.toLowerCase(),c);for(const[m,c]of Object.entries(Sn.mapping))dt.set(m.toLowerCase(),c);function Cd(m){return dt.get(m.toLowerCase())??null}function Ad(){return vn.map(m=>m.id)}var C=(m=>(m.Camera="camera",m.Hub="hub",m.Light="light",m.Siren="siren",m.Switch="switch",m.Sensor="sensor",m.Thermostat="thermostat",m.Button="button",m.Generic="generic",m))(C||{}),Ba=(m=>(m.BatteryOperated="battery-operated",m.Rebootable="rebootable",m.NativeSnapshot="native-snapshot",m.DoorbellButton="doorbell-button",m.TwoWayAudio="two-way-audio",m.PanTiltZoom="pan-tilt-zoom",m.PtzAutotrack="ptz-autotrack",m.MotionTrigger="motion-trigger",m))(Ba||{}),bn=(m=>(m.ChargingDC="charging-dc",m.ChargingSolar="charging-solar",m.NotCharging="not-charging",m))(bn||{}),z=(m=>(m.Siren="siren",m.Floodlight="floodlight",m.Spotlight="spotlight",m.PirSensor="pir-sensor",m.Chime="chime",m.Autotrack="autotrack",m.Nightvision="nightvision",m.PrivacyMask="privacy-mask",m.Doorbell="doorbell",m))(z||{});const U={Siren:z.Siren,Floodlight:z.Floodlight,Spotlight:z.Spotlight,PirSensor:z.PirSensor,Chime:z.Chime,Autotrack:z.Autotrack,Nightvision:z.Nightvision,PrivacyMask:z.PrivacyMask},Pd={[U.Siren]:"Siren",[U.Floodlight]:"Floodlight",[U.Spotlight]:"Spotlight",[U.PirSensor]:"PIR",[U.Chime]:"Chime",[U.Autotrack]:"Autotracking",[U.Nightvision]:"Night Vision",[U.PrivacyMask]:"Privacy Mask"};function wd(m,c,o){const g=`${m}:${c}`;return typeof o=="number"?`${g}:${o}`:g}function fn(m,c){return!m||m.length===0?!1:m.includes(c.when.hasFeature)}const In={id:"battery",label:"Battery-operated camera",when:{hasFeature:Ba.BatteryOperated},defaults:{audioMode:"disabled",detectionMode:"on-motion"},settings:{"snapshot.minRefreshIntervalSec":3600,"streamBroker.preBufferEnabled":!1}},kn=[In];function Dd(m){for(const c of kn)if(fn(m,c))return c;return null}const Ce=t({online:l(),lastChangedAt:a()}),Md={name:"device-status",scope:"device",mode:"singleton",methods:{},events:{onStatusChanged:{data:t({deviceId:a(),status:Ce})}},status:{schema:Ce,kind:"push"},runtimeState:Ce},Ae=t({flags:v(e(),h()),deviceType:e().nullable(),model:e().nullable(),channelCount:a().nullable(),lastProbedAt:a(),lastFetchedAt:a()}),Ed={name:"feature-probe",scope:"device",mode:"singleton",methods:{},events:{onProbeChanged:{data:t({deviceId:a(),status:Ae})}},status:{schema:Ae,kind:"push"},runtimeState:Ae},Cn=t({id:e(),title:e(),description:e().optional(),style:y(["card","accordion"]).optional(),defaultCollapsed:l().optional(),columns:E([b(1),b(2),b(3),b(4)]).optional(),tab:e().optional(),location:y(["settings","top-tab"]).optional(),order:a().optional(),fields:r(qa())}),An=t({id:e(),label:e(),icon:e(),order:a().optional()}),Pn=t({tabs:r(An).optional(),sections:r(Cn)}),_t=Pn.nullable(),wn={getDeviceSettingsContribution:{input:t({deviceId:a()}),output:_t,kind:"query",auth:"protected"},getDeviceLiveContribution:{input:t({deviceId:a()}),output:_t,kind:"query",auth:"protected"},applyDeviceSettingsPatch:{input:t({deviceId:a(),patch:v(e(),h())}),output:t({success:b(!0)}),kind:"mutation",auth:"admin"}},Dn={getStatus:{input:t({deviceId:a()}),output:h().nullable(),kind:"query",auth:"protected"}};function qd(m){let c=m.methods;return m.exposesDeviceSettings&&(c={...wn,...c}),m.status&&(c={...Dn,...c}),c}function i(m,c,o){return{input:m,output:c,kind:o?.kind??"query",auth:o?.auth??"protected",...o?.access!==void 0?{access:o.access}:{},timeoutMs:o?.timeoutMs}}function V(m){return{data:m}}const Mn=t({className:e(),hits:a().int().nonnegative(),avgScore:a().min(0).max(1),peakScore:a().min(0).max(1)}),Ht=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:r(Mn).readonly()}),En=t({ts:a().int(),dbfs:a().nullable(),peakDbfs:a(),avgDbfs:a(),topClass:e().nullable(),topScore:a().min(0).max(1).nullable()}),qn=t({points:r(En).readonly(),effectiveSampleEveryMs:a().int().positive(),windowMsActual:a().int().nonnegative()}),Td={name:"audio-metrics",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getCurrentSnapshot:i(t({deviceId:a()}),Ht.nullable()),getHistory:i(t({deviceId:a(),windowSec:a().int().positive().optional(),sampleEveryMs:a().int().positive().optional()}),qn)},runtimeState:Ht},Pe=t({percentage:a().min(0).max(100),charging:y(["dc","solar","none"]),sleeping:l(),lastUpdated:a()}),Rd={name:"battery",scope:"device",mode:"singleton",deviceTypes:[C.Camera,C.Sensor,C.Button,C.Switch],methods:{},events:{onStatusChanged:{data:t({deviceId:a(),status:Pe})}},status:{schema:Pe,kind:"push"},runtimeState:Pe},Wt=t({percentage:a().min(0).max(100),lastChangedAt:a()}),Bd={name:"brightness",scope:"device",mode:"singleton",deviceTypes:[C.Light],methods:{setBrightness:i(t({deviceId:a().int().nonnegative(),percentage:a().min(0).max(100)}),d(),{kind:"mutation",auth:"admin"})},events:{onBrightnessChanged:{data:t({deviceId:a(),percentage:a().min(0).max(100),lastChangedAt:a()})}},status:{schema:Wt,kind:"command-driven"},runtimeState:Wt},H=y(["high","mid","low"]),xd=["high","mid","low"],xa=y(["pull-rtsp","pull-rtmp","pull-http","pull-rfc4571","push-annexb"]),ct=t({width:a().int().positive(),height:a().int().positive()}),He=t({camStreamId:e().min(1),deviceId:a().int().nonnegative(),kind:xa,url:e().optional(),codec:e().optional(),resolution:ct.optional(),fps:a().positive().optional(),label:e().optional(),deviceFeatures:r(e()).optional(),autoEligible:l().optional(),metadata:v(e(),h()).optional()}),pe=y(["unassigned","idle","connecting","streaming","error"]),We=t({deviceId:a().int().nonnegative(),profile:H,brokerId:e(),sourceCamStreamId:e().nullable(),status:pe,resolution:ct.optional(),codec:e().optional(),preBufferSec:a().nonnegative().optional(),errorMessage:e().optional()}),Tn=t({id:e(),label:e(),protocol:y(["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:y(["high","mid","low"]).optional()}),Ld=t({type:e(),url:e(),videoCodec:e().optional(),audioCodec:e().optional(),metadata:v(e(),h()).readonly().optional()}),Rn=t({type:y(["video","audio"]),data:w(Uint8Array),pts:a(),dts:a(),keyframe:l(),codec:e()}),Bn=t({data:w(Uint8Array),width:a(),height:a(),format:y(["jpeg","rgb","bgr","yuv420","gray"]),timestamp:a()}),xn=y(["idle","connecting","streaming","error","stopped"]),Ln=t({status:xn,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:l()}).nullable().optional()}),lt=y(["webrtc","hls","mjpeg","rtsp"]),On=t({streamId:e(),format:lt,url:e().nullable(),active:l()}),Od={name:"streaming-engine",scope:"system",mode:"singleton",internal:!0,methods:{registerStream:i(t({streamId:e(),sourceUrl:e(),codec:e().optional()}),d(),{kind:"mutation"}),unregisterStream:i(t({streamId:e()}),d(),{kind:"mutation"}),getStreamUrl:i(t({streamId:e(),format:lt}),e().nullable()),listStreams:i(d(),r(On))}},Ge=t({brokerId:e(),url:e(),mutedUrl:e(),enabled:l()}),zn=t({sessionId:e(),remoteAddr:e(),playing:l(),muted:l(),connectedAt:a(),lastRtpAt:a(),bytesSent:a()}),Nn=t({tag:e(),subscribedAt:a(),maxFps:a(),framesDelivered:a(),framesDropped:a()}),Un=t({tag:e(),subscribedAt:a(),chunksDelivered:a()}),Fn=t({rtsp:r(zn).readonly(),decoded:r(Nn).readonly(),audio:r(Un).readonly(),pipeClients:a(),encodedSubscribers:a()}),zd=y(["reconnecting","sleeping","offline","disabled","waking"]),Nd={name:"stream-broker",scope:"system",mode:"singleton",exposesDeviceSettings:!0,methods:{publishCameraStream:i(t({deviceId:a().int().nonnegative(),camStreamId:e().min(1),kind:xa,url:e().optional(),codec:e().optional(),resolution:ct.optional(),fps:a().positive().optional(),label:e().optional(),deviceFeatures:r(e()).optional(),autoEligible:l().optional(),metadata:v(e(),h()).optional()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),retractCameraStream:i(t({deviceId:a().int().nonnegative(),camStreamId:e().min(1)}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),assignProfile:i(t({deviceId:a().int().nonnegative(),profile:H,camStreamId:e().min(1)}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),unassignProfile:i(t({deviceId:a().int().nonnegative(),profile:H}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),listAllCameraStreams:i(d(),r(He).readonly()),listAllProfileSlots:i(d(),r(We).readonly()),getBrokerStats:i(t({brokerId:e()}),Ln),listClients:i(t({brokerId:e()}),Fn),killClient:i(t({brokerId:e(),channel:y(["rtsp","decoded","audio"]),handle:e()}),t({killed:l()}),{kind:"mutation",auth:"admin"}),restartProfile:i(t({deviceId:a().int().nonnegative(),profile:H}),t({success:l()}),{kind:"mutation",auth:"admin"}),getStreamUrl:i(t({streamId:e(),format:lt}),t({url:e()})),getBroker:i(t({brokerId:e()}),R()),setPreBufferDuration:i(t({brokerId:e(),seconds:a().min(0).max(30)}),d(),{kind:"mutation",auth:"admin"}),getPreBufferInfo:i(t({brokerId:e()}),t({configuredSec:a(),bufferedMs:a(),packetCount:a()})),getRtspPort:i(d(),a()),getAllRtspEntries:i(t({hostname:e().optional()}),r(Ge).readonly()),getRtspEntry:i(t({brokerId:e(),hostname:e().optional()}),Ge.nullable()),regenerateRtspToken:i(t({brokerId:e()}),e().nullable(),{kind:"mutation",auth:"admin"}),setRtspEnabled:i(t({brokerId:e(),enabled:l()}),d(),{kind:"mutation",auth:"admin"}),isRtspEnabled:i(t({brokerId:e()}),l())},events:{onCamStreamDemand:V(t({deviceId:a().int().nonnegative(),camStreamId:e(),profile:H})),onCamStreamIdle:V(t({deviceId:a().int().nonnegative(),camStreamId:e()})),onRequestStreamSourceRefresh:V(t({deviceId:a().int().nonnegative(),camStreamId:e(),brokerId:e()}))}},Ud={name:"camera-streams",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getCameraStreams:i(t({deviceId:a().int().nonnegative()}),r(He).readonly()),getBrokerStreams:i(t({deviceId:a().int().nonnegative()}),r(We).readonly()),getRtspEntries:i(t({deviceId:a().int().nonnegative(),hostname:e().optional()}),r(Ge).readonly())},events:{onCamStreamsChanged:V(t({deviceId:a().int().nonnegative(),camStreams:r(He).readonly()})),onProfileSlotsChanged:V(t({deviceId:a().int().nonnegative(),profileSlots:r(We).readonly()}))},runtimeState:t({online:l(),slotStatuses:t({high:pe.optional(),mid:pe.optional(),low:pe.optional()}),slotErrors:t({high:e().optional(),mid:e().optional(),low:e().optional()}),lastChangedAt:a()})},_n=y(["online","sleeping","offline","unknown"]),Ve=t({childNativeId:e(),name:e(),type:y(C),status:_n,metadata:t({model:e().optional(),serialNumber:e().optional(),uid:e().optional(),rtspChannel:a().int().nonnegative().optional(),isBattery:l().optional(),isDoorbell:l().optional(),isMultifocal:l().optional()}).default({}),alreadyAdopted:l(),adoptedDeviceId:a().int().nonnegative().nullable()}),Gt=t({discovered:r(Ve),lastDiscoveryAt:a().int().nonnegative().nullable(),lastError:e().nullable()}),Fd={name:"device-discovery",scope:"device",mode:"singleton",deviceTypes:[C.Hub],status:{schema:Gt,kind:"poll"},runtimeState:Gt.extend({lastFetchedAt:a().int().nonnegative()}),methods:{listDiscovered:i(t({deviceId:a().int().nonnegative()}),r(Ve).readonly()),refreshDiscovery:i(t({deviceId:a().int().nonnegative()}),r(Ve).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()}),d(),{kind:"mutation",auth:"admin"})}},Vt=t({lastPressedAt:a().nullable(),pressCountSinceStart:a()}),Hn=t({deviceId:a(),timestamp:a()}),_d={name:"doorbell",scope:"device",mode:"singleton",deviceTypes:[C.Button],methods:{},events:{onPressed:{data:Hn}},status:{schema:Vt,kind:"push"},runtimeState:Vt},Wn=y(["jpeg","rgb","bgr","yuv420","gray"]),ge=t({data:R(),format:Wn,width:a(),height:a(),timestamp:a()}),Y=t({x:a(),y:a(),w:a(),h:a()}),Gn=t({class:e(),originalClass:e(),score:a(),bbox:Y}),jt=t({data:w(Float32Array),sampleRate:a(),channels:a(),timestamp:a(),deviceId:a().optional()}),Vn=t({rms:a(),dbfs:a()}),je=t({className:e(),originalClass:e().optional(),score:a()}),ye=t({bbox:Y,pixelCount:a(),intensity:a()}),jn=t({detected:l(),regionCount:a(),regions:r(ye).readonly(),rawRegions:r(ye).readonly(),frameWidth:a(),frameHeight:a(),analysisMs:a()}),Hd={name:"motion-detection",scope:"device",mode:"singleton",exposesDeviceSettings:!0,methods:{analyze:i(t({deviceId:a(),frame:ge}),jn,{kind:"mutation"}),removeCamera:i(t({deviceId:a()}),d(),{kind:"mutation"}),reset:i(d(),d(),{kind:"mutation"})},events:{onMotion:{data:t({deviceId:a(),detected:l(),regionCount:a()})}}},Wd=t({activeCameras:a(),throttledCameras:a(),avgInferenceTimeMs:a(),queueDepth:a()}),ut=t({detectionMode:y(["disabled","always-on","on-motion"]),configuredFps:a(),actualFps:a(),queueDepth:a(),avgInferenceTimeMs:a(),droppedFrames:a(),phase:y(["idle","watching","active"])}),Kn=ut.extend({deviceId:a()}),Ke=y(["onnx","coreml","openvino","tflite","pt"]),oe=y(["detector","cropper","classifier","refiner","audio-classifier"]),M=t({runtime:y(["node","python"]),backend:e(),format:Ke,device:e().optional()}),$n=t({id:e(),label:e(),description:e().optional()}),Zn=t({engine:M,devices:r($n).readonly(),defaultDevice:e()}),$e=rt(()=>t({addonId:e(),addonName:e(),slot:oe,inputClasses:r(e()).readonly(),outputClasses:r(e()).readonly(),enabled:l(),modelId:e(),children:r($e).readonly(),engine:M.optional(),group:e().optional(),settings:v(e(),h()).optional()})),Se=rt(()=>t({addonId:e(),enabled:l(),modelId:e(),children:r(Se).readonly(),settings:v(e(),h()).optional()})),we=t({id:e(),name:e(),createdAt:e(),updatedAt:e(),engine:M,steps:r(Se).readonly()}),Qn=t({id:e(),name:e(),formats:v(e(),t({downloaded:l(),sizeMB:a()}))}),Yn=R(),Jn=t({id:e(),name:e(),slot:oe,inputClasses:r(e()).readonly(),outputClasses:r(e()).readonly(),childSlots:r(oe).readonly(),models:r(Qn).readonly(),defaultModelId:e(),defaultModelIdByFormat:v(e(),e()).optional(),enabledByDefault:l().optional(),defaultConfidence:a(),group:e().optional(),configSchema:r(Yn).readonly().optional()}),Xn=t({id:oe,label:e(),priority:a(),parentSlot:oe.nullable(),addons:r(Jn).readonly()}),ei=t({availableEngines:r(Zn).readonly(),selectedEngine:M,slots:r(Xn).readonly()}),ti=t({detections:r(Gn).readonly(),inferenceMs:a(),modelId:e()}),Q=rt(()=>t({addonId:e(),modelId:e(),enabled:l().default(!0),children:r(Q).optional(),settings:v(e(),h()).optional()})),ai=t({filename:e(),stepIds:r(e()).readonly().optional()}),ni=t({base64:e(),filename:e()}),ii=t({filename:e(),sizeKb:a()}),oi=t({base64:e()}),si=t({id:e(),name:e(),description:e(),available:l(),rawLabels:r(e()).readonly().optional()}),ri=t({activeBackend:e(),availableBackends:r(si).readonly(),sampleRate:a(),chunkDurationMs:a()}),di=t({filePath:e(),sizeMB:a(),durationMs:a()}),ci=t({success:l(),error:e().optional(),frame:R().optional()}),li=R(),ui=R(),mi=R(),pi=R(),gi=R(),Kt=R(),Gd={name:"pipeline-executor",scope:"system",mode:"singleton",methods:{getAvailableEngines:i(d(),r(M)),getSelectedEngine:i(d(),M),getDefaultSteps:i(M,r($e)),reprobeEngine:i(d(),M,{kind:"mutation",auth:"admin"}),getVideoPipelineSteps:i(d(),v(e(),t({modelId:e(),settings:v(e(),h()).readonly()}))),setVideoPipelineSteps:i(t({steps:v(e(),t({modelId:e(),settings:v(e(),h()).readonly()}))}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),getSchema:i(d(),ei),getGlobalSteps:i(d(),r($e).readonly().nullable()),getGlobalPipelineConfig:i(d(),li),getOrchestratorConfigSchema:i(d(),ui),listTemplates:i(d(),r(we).readonly()),saveTemplate:i(t({name:e(),steps:r(Se).readonly(),engine:M}),we,{kind:"mutation"}),updateTemplate:i(t({id:e(),name:e().optional(),steps:r(Se).readonly().optional()}),we,{kind:"mutation"}),deleteTemplate:i(t({id:e()}),d(),{kind:"mutation"}),getCapabilities:i(d(),pi),getAddonModels:i(t({addonId:e()}),gi),downloadModel:i(t({addonId:e(),modelId:e(),format:Ke}),di,{kind:"mutation"}),deleteModel:i(t({addonId:e(),modelId:e(),format:Ke}),t({success:b(!0)}),{kind:"mutation"}),detect:i(t({addonId:e(),frame:ge,config:v(e(),h()).optional()}),ti),runPipeline:i(t({engine:M.optional(),steps:r(Q).min(1),frame:ge.optional(),imageBase64:e().optional(),image:w(Uint8Array).optional(),referenceImage:e().optional(),deviceId:a().optional(),sessionId:e().optional()}),Kt,{kind:"mutation"}),runPipelineBatch:i(t({engine:M.optional(),steps:r(Q).min(1),frames:r(ge).min(1).max(255),deviceId:a().optional(),sessionId:e().optional()}),t({results:r(Kt).readonly()}),{kind:"mutation"}),cacheFrameInPool:i(t({data:w(Uint8Array),width:a().int().positive(),height:a().int().positive(),format:y(["rgb","bgr","gray"])}),t({frameId:a(),width:a(),height:a()}),{kind:"mutation"}),inferCached:i(t({stepId:e(),frameId:a().int()}),v(e(),h()),{kind:"mutation"}),uncacheFrame:i(t({frameId:a().int()}),d(),{kind:"mutation"}),getEffectiveTuning:i(d(),t({batchMode:e(),windowMs:a(),maxBatchSize:a(),concurrency:a()})),listLoadedEngines:i(d(),r(t({engineKey:e(),engine:M,modelsLoaded:r(e()).readonly(),inUseByCameras:r(a()).readonly(),kind:y(["runtime","warm-override"]),poolPid:a().nullable(),idleMs:a().nullable(),idleTtlMs:a().nullable()})).readonly()),spinEngine:i(t({engine:M}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),killEngine:i(t({engine:M,force:l().optional()}),t({success:l(),reason:e().optional()}),{kind:"mutation",auth:"admin"}),listReferenceImages:i(d(),r(ai).readonly()),getReferenceImage:i(t({filename:e()}),ni.nullable()),getReferenceAudioFiles:i(d(),r(ii).readonly()),getReferenceAudio:i(t({filename:e()}),oi.nullable()),getAudioCapabilities:i(d(),ri),runAudioTest:i(t({addonId:e(),modelId:e(),filename:e().optional(),settings:v(e(),h()).optional()}),ci,{kind:"mutation"}),getDetectionConfigSchema:i(d(),mi)}},hi=y(["polygon","tripwire"]),vi=t({x:a(),y:a()}),ne=t({id:e(),name:e(),kind:hi.default("polygon"),polygon:r(vi).readonly(),color:e().default("#3b82f6")}),Vd={name:"zones",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{listZones:i(t({deviceId:a()}),r(ne).readonly()),addZone:i(t({deviceId:a(),zone:ne}),d(),{kind:"mutation",auth:"admin"}),removeZone:i(t({deviceId:a(),zoneId:e()}),d(),{kind:"mutation",auth:"admin"}),updateZone:i(t({deviceId:a(),zone:ne}),d(),{kind:"mutation",auth:"admin"})},runtimeState:t({zones:r(ne).readonly()})},j={min:0,max:6e4,default:3e4,step:500},W={min:1,max:30,default:4,step:1},G={min:1,max:30,default:10,step:1},mt=y(["onboard","analyzer"]),yi=r(mt),Si=t({deviceId:a(),detected:l(),source:mt.default("analyzer"),regions:r(ye).readonly().optional()}),bi=t({deviceId:a(),detectionMode:y(["disabled","always-on","on-motion"]).default("on-motion"),audioMode:y(["disabled","always-on","on-motion"]).default("always-on"),motionCooldownMs:a().min(j.min).default(j.default),motionFps:a().min(W.min).max(W.max).default(W.default),detectionFps:a().min(G.min).max(G.max).default(G.default),motionStreamId:e(),detectionStreamId:e(),motionSources:yi.default(["analyzer"]),pipelineEnabled:l().default(!0),engine:M.optional(),steps:r(Q).readonly().optional(),audio:t({engine:M,modelId:e(),enabled:l()}).nullable().optional(),zones:r(ne).readonly().default([])}),jd=[{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:W.min,max:W.max,step:W.step,default:W.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:j.min,max:j.max,step:j.step,default:j.default,showValue:!0,unit:"s",displayScale:1e3}],La=t({nodeId:e(),attachedCameras:a(),activeCameras:a(),avgInferenceFps:a(),avgInferenceTimeMs:a(),queueDepthTotal:a(),hardware:t({hasGpu:l(),inferenceBackend:e().optional(),cpuCores:a().optional()})}),fi=t({nodeId:e(),activeCameras:a(),throttledCameras:a(),avgInferenceTimeMs:a(),queueDepth:a()}),Kd={name:"pipeline-runner",scope:"system",mode:"singleton",methods:{attachCamera:i(bi,t({success:b(!0)}),{kind:"mutation"}),detachCamera:i(t({deviceId:a()}),t({success:b(!0)}),{kind:"mutation"}),reportMotion:i(Si,t({success:b(!0)}),{kind:"mutation"}),getLocalLoad:i(d(),La),getLocalMetrics:i(d(),fi),getCameraMetrics:i(t({deviceId:a()}),ut.nullable()),getAllCameraMetrics:i(d(),r(Kn).readonly()),getLocalCameras:i(d(),r(a()).readonly())}},$t=t({detected:l(),lastDetectedAt:a().nullable(),autoClearAfterMs:a().nullable()}),Ii=t({deviceId:a(),detected:l(),timestamp:a(),source:mt,regions:r(ye).readonly().optional()}),$d={name:"motion",scope:"device",mode:"singleton",deviceTypes:[C.Camera,C.Sensor],methods:{isDetected:i(t({deviceId:a()}),l())},events:{onMotionChanged:{data:Ii}},status:{schema:$t,kind:"push"},runtimeState:$t},Oa=t({enabled:l(),lastChangedAt:a()}),ki=Oa.extend({lastFetchedAt:a()}),Zd={name:"motion-trigger",scope:"device",mode:"singleton",deviceTypes:[C.Light,C.Siren,C.Switch],methods:{setMotionTrigger:i(t({deviceId:a().int().nonnegative(),enabled:l()}),d(),{kind:"mutation",auth:"admin"})},events:{onMotionTriggerChanged:{data:t({deviceId:a(),enabled:l(),lastChangedAt:a()})}},status:{schema:Oa,kind:"command-driven"},runtimeState:ki},Ci=e().describe("Vendor target string (people/vehicle/pet); empty = camera default"),Ze=t({targetType:Ci,stopDelaySeconds:a().int().min(0).max(300),disappearDelaySeconds:a().int().min(0).max(300)}),Ai=t({value:e(),label:e()}),he=t({enabled:l(),lastChangedAt:a(),currentSettings:Ze.nullable(),supportedTargetTypes:r(Ai)}),Pi=he.extend({lastFetchedAt:a()}),Qd={name:"ptz-autotrack",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getStatus:i(t({deviceId:a()}),he),setEnabled:i(t({deviceId:a(),enabled:l()}),d(),{kind:"mutation"}),getSettings:i(t({deviceId:a()}),Ze.nullable()),setSettings:i(t({deviceId:a(),settings:Ze.partial()}),d(),{kind:"mutation"})},events:{onStatusChanged:{data:t({deviceId:a(),status:he})}},status:{schema:he,kind:"command-driven"},runtimeState:Pi},Zt=t({on:l(),lastChangedAt:a()}),Yd={name:"switch",scope:"device",mode:"singleton",deviceTypes:[C.Switch,C.Siren,C.Light],methods:{setState:i(t({deviceId:a(),on:l()}),d(),{kind:"mutation",auth:"admin"})},events:{onStateChanged:{data:t({deviceId:a(),on:l(),lastChangedAt:a()})}},status:{schema:Zt,kind:"command-driven"},runtimeState:Zt,settings:{bindings:[{kind:"scalar",statusPath:"on",method:"setState",valueArg:"on",field:{label:"On",kind:"boolean"}}]}},Qe=t({totalObjects:a().int().nonnegative(),byClass:v(e(),a().int().nonnegative())}),wi=Qe.extend({zoneId:e(),zoneName:e(),trackIds:r(e()).readonly()}),Qt=t({ts:a().int(),frameWidth:a().int().nonnegative(),frameHeight:a().int().nonnegative(),zones:r(wi).readonly(),frame:Qe,unzoned:Qe}),Di=y(["minute","5min","hour"]),De=t({from:a().int(),to:a().int(),resolution:Di}),Me=t({ts:a().int(),count:a().int().nonnegative()}),Jd={name:"zone-analytics",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getCurrentSnapshot:i(t({deviceId:a()}),Qt.nullable()),getZoneHistory:i(t({deviceId:a(),zoneId:e(),className:e().optional()}).extend(De.shape),r(Me).readonly()),getCameraHistory:i(t({deviceId:a(),className:e().optional()}).extend(De.shape),r(Me).readonly()),getUnzonedHistory:i(t({deviceId:a(),className:e().optional()}).extend(De.shape),r(Me).readonly())},runtimeState:Qt},Mi=y(["include","exclude"]),ie=t({id:e(),name:e().optional(),zoneIds:r(e()).min(1).readonly(),mode:Mi,classFilter:r(e()).readonly().optional(),overlapThreshold:a().min(0).max(1).optional(),bboxInclusionPct:a().min(0).max(100).optional(),preferMask:l().optional(),enabled:l().default(!0)}),Xd=r(ie).readonly(),Yt=y(["motion","detection"]),ec={name:"zone-rules",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{listRules:i(t({deviceId:a(),stage:Yt}),r(ie).readonly()),setRules:i(t({deviceId:a(),stage:Yt,rules:r(ie).readonly()}),d(),{kind:"mutation",auth:"admin"})},runtimeState:t({motion:r(ie).readonly(),detection:r(ie).readonly()})},Ei=t({connected:l(),deviceCount:a(),error:e().optional()}),tc=t({externalId:e(),name:e(),type:e(),metadata:v(e(),h()).optional()}),be=t({stableId:e(),type:y(C),suggestedName:e(),prefilledConfig:v(e(),h())}),fe=t({id:a(),stableId:e(),addonId:e(),type:e(),name:e(),parentDeviceId:a().nullable(),online:l(),features:r(e()),config:v(e(),h())}),Ye=t({status:y(["ok","error"]),labels:r(e()).optional(),error:e().optional()}),qi=h(),ac={name:"device-provider",scope:"system",mode:"collection",methods:{start:i(d(),d(),{kind:"mutation"}),stop:i(d(),d(),{kind:"mutation"}),getStatus:i(d(),Ei),getDevices:i(d(),r(t({id:e(),name:e(),type:e()}))),supportsDiscovery:i(t({}),l()),discoverDevices:i(t({}),r(be),{kind:"mutation",auth:"admin"}),adoptDiscoveredDevice:i(t({candidate:be}),fe,{kind:"mutation",auth:"admin"}),supportsManualCreation:i(t({}),l()),getChildCreationSchema:i(t({type:y(C)}),qi),createDevice:i(t({type:y(C),config:v(e(),h())}),fe,{kind:"mutation",auth:"admin"}),testCreationField:i(t({type:y(C),key:e(),value:h(),formValues:v(e(),h()).optional()}),Ye,{kind:"mutation",auth:"admin"})}},Ti="device.state-changed";function za(m){const c=new Map,o=new Map;let g=null;const S=(u,p)=>`${u}:${p}`,f=()=>{g||m.live?.onEvent&&(g=m.live.onEvent.subscribe({category:Ti},{onData:u=>{const p=u.data;if(!p||typeof p.deviceId!="number"||typeof p.capName!="string")return;const k=S(p.deviceId,p.capName);c.set(k,p.slice);const P=o.get(k);if(P)for(const A of P)try{A(p.slice)}catch{}}}))},I=()=>{g&&(o.size>0||(g.unsubscribe(),g=null))};return{read(u,p){return c.get(S(u,p))},async refresh(u,p){const k=await m.deviceState.getCapSlice.query({deviceId:u,capName:p}),P=S(u,p);c.set(P,k??void 0);const A=o.get(P);if(A)for(const D of A)try{D(k??void 0)}catch{}},watch(u,p,k){const P=S(u,p);let A=o.get(P);return A||(A=new Set,o.set(P,A)),A.add(k),f(),()=>{A.delete(k),A.size===0&&o.delete(P),I()}},async write(u,p,k){await m.deviceState.setCapSlice.mutate({deviceId:u,capName:p,slice:k})}}}function Ri(m,c,o){const g=(S,f)=>`${S}:${f}`;return{read(S,f){return m.get(S)?.get(f)},async refresh(){},watch(S,f,I){const u=g(S,f);let p=c.get(u);return p||(p=new Set,c.set(u,p)),p.add(I),()=>{p.delete(I),p.size===0&&c.delete(u)}},async write(S,f,I){if(!o)throw new Error("createMirrorSource: write requires an api reference — pass it as the third argument when constructing the source");await o.deviceState.setCapSlice.mutate({deviceId:S,capName:f,slice:I})}}}function q(m,c,o){const g=Bi(m)?m:za(m);return{get value(){return g.read(c,o)},refresh(){return g.refresh(c,o)},subscribe(S){const f=g.watch(c,o,I=>{try{S(I)}catch{}});try{S(g.read(c,o))}catch{}return g.read(c,o)===void 0&&g.refresh(c,o).catch(()=>{}),f},async set(S){await g.write(c,o,S)},async patch(S){const I={...g.read(c,o)??{},...S};await g.write(c,o,I)}}}function Bi(m){return typeof m.read=="function"&&typeof m.watch=="function"}function xi(m,c,o){const g=m,S=o?.stateSource??za(m);function f(s,x){const L=typeof s=="object"&&s!==null?s:{};return x!==void 0?{...L,deviceId:c.deviceId,nodeId:x}:{...L,deviceId:c.deviceId}}function I(s,x,L,_,ee){const ce=g[s]?.[x];if(!ce)throw new Error(`DeviceProxy: api has no '${s}.${x}'`);const te=ce;return L==="mutation"?te.mutate(_):L==="subscription"?te.subscribe(_,ee):te.query(_)}function u(s,x,L,_,ee,ce){const te=c.entries.find(cn=>cn.capName===s);return I(x,L,_,f(ee,te?.providerNodeId),ce)}function p(s,x,L,_,ee){return I(s,x,L,f(_,void 0),ee)}const k={getStatus:s=>u("accessories","accessories","getStatus","query",s)},P={resolveDeviceSettings:s=>u("audio-analysis","audioAnalysis","resolveDeviceSettings","query",s),getDeviceSettingsContribution:s=>u("audio-analysis","audioAnalysis","getDeviceSettingsContribution","query",s),getDeviceLiveContribution:s=>u("audio-analysis","audioAnalysis","getDeviceLiveContribution","query",s),applyDeviceSettingsPatch:s=>u("audio-analysis","audioAnalysis","applyDeviceSettingsPatch","mutation",s)},A={getCurrentSnapshot:s=>u("audio-metrics","audioMetrics","getCurrentSnapshot","query",s),getHistory:s=>u("audio-metrics","audioMetrics","getHistory","query",s)},D={getStatus:s=>u("battery","battery","getStatus","query",s)},B={setBrightness:s=>u("brightness","brightness","setBrightness","mutation",s),getStatus:s=>u("brightness","brightness","getStatus","query",s)},vt={getCredentials:s=>u("camera-credentials","cameraCredentials","getCredentials","query",s),getStatus:s=>u("camera-credentials","cameraCredentials","getStatus","query",s)},yt={getCameraStreams:s=>u("camera-streams","cameraStreams","getCameraStreams","query",s),getBrokerStreams:s=>u("camera-streams","cameraStreams","getBrokerStreams","query",s),getRtspEntries:s=>u("camera-streams","cameraStreams","getRtspEntries","query",s)},St={getDeviceSettingsContribution:s=>u("detection-pipeline","detectionPipeline","getDeviceSettingsContribution","query",s),getDeviceLiveContribution:s=>u("detection-pipeline","detectionPipeline","getDeviceLiveContribution","query",s),applyDeviceSettingsPatch:s=>u("detection-pipeline","detectionPipeline","applyDeviceSettingsPatch","mutation",s)},bt={listDiscovered:s=>u("device-discovery","deviceDiscovery","listDiscovered","query",s),refreshDiscovery:s=>u("device-discovery","deviceDiscovery","refreshDiscovery","mutation",s),adoptDevice:s=>u("device-discovery","deviceDiscovery","adoptDevice","mutation",s),releaseDevice:s=>u("device-discovery","deviceDiscovery","releaseDevice","mutation",s),getStatus:s=>u("device-discovery","deviceDiscovery","getStatus","query",s)},ft={getStreamSources:s=>u("device-ops","deviceOps","getStreamSources","query",s),getConfigEntries:s=>u("device-ops","deviceOps","getConfigEntries","query",s),setConfig:s=>u("device-ops","deviceOps","setConfig","mutation",s),removeDevice:s=>u("device-ops","deviceOps","removeDevice","mutation",s),getSettingsSchema:s=>u("device-ops","deviceOps","getSettingsSchema","query",s)},It={getStatus:s=>u("device-status","deviceStatus","getStatus","query",s)},kt={getStatus:s=>u("doorbell","doorbell","getStatus","query",s)},Ct={getEvents:s=>u("events","events","getEvents","query",s),getEventThumbnail:s=>u("events","events","getEventThumbnail","query",s),getEventClipUrl:s=>u("events","events","getEventClipUrl","query",s)},At={getStatus:s=>u("feature-probe","featureProbe","getStatus","query",s)},Pt={startSession:s=>u("intercom","intercom","startSession","mutation",s),handleAnswer:s=>u("intercom","intercom","handleAnswer","mutation",s),stopSession:s=>u("intercom","intercom","stopSession","mutation",s),getStatus:s=>u("intercom","intercom","getStatus","query",s)},wt={isDetected:s=>u("motion","motion","isDetected","query",s),getStatus:s=>u("motion","motion","getStatus","query",s)},Dt={analyze:s=>u("motion-detection","motionDetection","analyze","mutation",s),removeCamera:s=>u("motion-detection","motionDetection","removeCamera","mutation",s),reset:s=>u("motion-detection","motionDetection","reset","mutation",s),getDeviceSettingsContribution:s=>u("motion-detection","motionDetection","getDeviceSettingsContribution","query",s),getDeviceLiveContribution:s=>u("motion-detection","motionDetection","getDeviceLiveContribution","query",s),applyDeviceSettingsPatch:s=>u("motion-detection","motionDetection","applyDeviceSettingsPatch","mutation",s)},Mt={setMotionTrigger:s=>u("motion-trigger","motionTrigger","setMotionTrigger","mutation",s),getStatus:s=>u("motion-trigger","motionTrigger","getStatus","query",s)},Et={getStatus:s=>u("native-object-detection","nativeObjectDetection","getStatus","query",s)},qt={setOverlay:s=>u("osd","osd","setOverlay","mutation",s),getStatus:s=>u("osd","osd","getStatus","query",s)},Tt={getActiveTracks:s=>u("pipeline-analytics","pipelineAnalytics","getActiveTracks","query",s),getTrack:s=>u("pipeline-analytics","pipelineAnalytics","getTrack","query",s),listTracks:s=>u("pipeline-analytics","pipelineAnalytics","listTracks","query",s),clearTracks:s=>u("pipeline-analytics","pipelineAnalytics","clearTracks","mutation",s),getMotionEvents:s=>u("pipeline-analytics","pipelineAnalytics","getMotionEvents","query",s),getObjectEvents:s=>u("pipeline-analytics","pipelineAnalytics","getObjectEvents","query",s),getAudioEvents:s=>u("pipeline-analytics","pipelineAnalytics","getAudioEvents","query",s),getEventMedia:s=>u("pipeline-analytics","pipelineAnalytics","getEventMedia","query",s),getTrackMedia:s=>u("pipeline-analytics","pipelineAnalytics","getTrackMedia","query",s),getDeviceSettingsContribution:s=>u("pipeline-analytics","pipelineAnalytics","getDeviceSettingsContribution","query",s),getDeviceLiveContribution:s=>u("pipeline-analytics","pipelineAnalytics","getDeviceLiveContribution","query",s),applyDeviceSettingsPatch:s=>u("pipeline-analytics","pipelineAnalytics","applyDeviceSettingsPatch","mutation",s)},Rt={move:s=>u("ptz","ptz","move","mutation",s),continuousMove:s=>u("ptz","ptz","continuousMove","mutation",s),stop:s=>u("ptz","ptz","stop","mutation",s),getPresets:s=>u("ptz","ptz","getPresets","query",s),goToPreset:s=>u("ptz","ptz","goToPreset","mutation",s),goHome:s=>u("ptz","ptz","goHome","mutation",s),getPosition:s=>u("ptz","ptz","getPosition","query",s),getStatus:s=>u("ptz","ptz","getStatus","query",s)},Bt={getStatus:s=>u("ptz-autotrack","ptzAutotrack","getStatus","query",s),setEnabled:s=>u("ptz-autotrack","ptzAutotrack","setEnabled","mutation",s),getSettings:s=>u("ptz-autotrack","ptzAutotrack","getSettings","query",s),setSettings:s=>u("ptz-autotrack","ptzAutotrack","setSettings","mutation",s)},xt={reboot:s=>u("reboot","reboot","reboot","mutation",s)},Lt={getSegments:s=>u("recording","recording","getSegments","query",s),getPlaybackUrl:s=>u("recording","recording","getPlaybackUrl","query",s),getThumbnailAt:s=>u("recording","recording","getThumbnailAt","query",s)},Ot={getSnapshot:s=>u("snapshot","snapshot","getSnapshot","query",s),invalidateCache:s=>u("snapshot","snapshot","invalidateCache","mutation",s),getStatus:s=>u("snapshot","snapshot","getStatus","query",s),getDeviceSettingsContribution:s=>u("snapshot","snapshot","getDeviceSettingsContribution","query",s),getDeviceLiveContribution:s=>u("snapshot","snapshot","getDeviceLiveContribution","query",s),applyDeviceSettingsPatch:s=>u("snapshot","snapshot","applyDeviceSettingsPatch","mutation",s)},zt={setState:s=>u("switch","switch","setState","mutation",s),getStatus:s=>u("switch","switch","getStatus","query",s)},Nt={listStreams:s=>u("webrtc-session","webrtcSession","listStreams","query",s),createSession:s=>u("webrtc-session","webrtcSession","createSession","mutation",s),handleAnswer:s=>u("webrtc-session","webrtcSession","handleAnswer","mutation",s),closeSession:s=>u("webrtc-session","webrtcSession","closeSession","mutation",s),hasAdaptiveBitrate:s=>u("webrtc-session","webrtcSession","hasAdaptiveBitrate","query",s)},Ut={getCurrentSnapshot:s=>u("zone-analytics","zoneAnalytics","getCurrentSnapshot","query",s),getZoneHistory:s=>u("zone-analytics","zoneAnalytics","getZoneHistory","query",s),getCameraHistory:s=>u("zone-analytics","zoneAnalytics","getCameraHistory","query",s),getUnzonedHistory:s=>u("zone-analytics","zoneAnalytics","getUnzonedHistory","query",s)},n={listRules:s=>u("zone-rules","zoneRules","listRules","query",s),setRules:s=>u("zone-rules","zoneRules","setRules","mutation",s)},N={listZones:s=>u("zones","zones","listZones","query",s),addZone:s=>u("zones","zones","addZone","mutation",s),removeZone:s=>u("zones","zones","removeZone","mutation",s),updateZone:s=>u("zones","zones","updateZone","mutation",s)},re={getDeviceSettings:s=>p("addonSettings","getDeviceSettings","query",s),updateDeviceSettings:s=>p("addonSettings","updateDeviceSettings","mutation",s)},J={loadConfig:s=>p("deviceManager","loadConfig","query",s),loadRuntimeState:s=>p("deviceManager","loadRuntimeState","query",s),loadMeta:s=>p("deviceManager","loadMeta","query",s),setName:s=>p("deviceManager","setName","mutation",s),setLocation:s=>p("deviceManager","setLocation","mutation",s),setMetadata:s=>p("deviceManager","setMetadata","mutation",s),setDisabled:s=>p("deviceManager","setDisabled","mutation",s),getDevice:s=>p("deviceManager","getDevice","query",s),getStreamSources:s=>p("deviceManager","getStreamSources","query",s),getConfigSchema:s=>p("deviceManager","getConfigSchema","query",s),getSettingsSchema:s=>p("deviceManager","getSettingsSchema","query",s),updateConfig:s=>p("deviceManager","updateConfig","mutation",s),enable:s=>p("deviceManager","enable","mutation",s),disable:s=>p("deviceManager","disable","mutation",s),remove:s=>p("deviceManager","remove","mutation",s),getStreamProfileMap:s=>p("deviceManager","getStreamProfileMap","query",s),setStreamProfileMap:s=>p("deviceManager","setStreamProfileMap","mutation",s),probeStreams:s=>p("deviceManager","probeStreams","mutation",s),getBindings:s=>p("deviceManager","getBindings","query",s),getAllBindings:s=>p("deviceManager","getAllBindings","query",s),setWrapperActive:s=>p("deviceManager","setWrapperActive","mutation",s),getDeviceSettingsAggregate:s=>p("deviceManager","getDeviceSettingsAggregate","query",s),getDeviceLiveInfoAggregate:s=>p("deviceManager","getDeviceLiveInfoAggregate","query",s),getDeviceAggregate:s=>p("deviceManager","getDeviceAggregate","query",s),updateDeviceField:s=>p("deviceManager","updateDeviceField","mutation",s),updateDeviceFieldsBatch:s=>p("deviceManager","updateDeviceFieldsBatch","mutation",s),testField:s=>p("deviceManager","testField","mutation",s),getDeviceStatusAggregate:s=>p("deviceManager","getDeviceStatusAggregate","query",s)},ke={getSnapshot:s=>p("deviceState","getSnapshot","query",s),getCapSlice:s=>p("deviceState","getCapSlice","query",s),setCapSlice:s=>p("deviceState","setCapSlice","mutation",s)},de={getDeviceStats:s=>p("networkQuality","getDeviceStats","query",s),reportClientStats:s=>p("networkQuality","reportClientStats","mutation",s)},X={runPipeline:s=>p("pipelineExecutor","runPipeline","mutation",s),runPipelineBatch:s=>p("pipelineExecutor","runPipelineBatch","mutation",s)},nn={assignPipeline:s=>p("pipelineOrchestrator","assignPipeline","mutation",s),unassignPipeline:s=>p("pipelineOrchestrator","unassignPipeline","mutation",s),getPipelineAssignment:s=>p("pipelineOrchestrator","getPipelineAssignment","query",s),getCameraMetrics:s=>p("pipelineOrchestrator","getCameraMetrics","query",s),assignDecoder:s=>p("pipelineOrchestrator","assignDecoder","mutation",s),unassignDecoder:s=>p("pipelineOrchestrator","unassignDecoder","mutation",s),assignAudio:s=>p("pipelineOrchestrator","assignAudio","mutation",s),unassignAudio:s=>p("pipelineOrchestrator","unassignAudio","mutation",s),getAudioAssignment:s=>p("pipelineOrchestrator","getAudioAssignment","query",s),getAudioAssignments:s=>p("pipelineOrchestrator","getAudioAssignments","query",s),getDecoderAssignment:s=>p("pipelineOrchestrator","getDecoderAssignment","query",s),getCameraSettings:s=>p("pipelineOrchestrator","getCameraSettings","query",s),setCameraStepToggle:s=>p("pipelineOrchestrator","setCameraStepToggle","mutation",s),getCameraStepOverrides:s=>p("pipelineOrchestrator","getCameraStepOverrides","query",s),setCameraStepOverride:s=>p("pipelineOrchestrator","setCameraStepOverride","mutation",s),setCameraPipelineForAgent:s=>p("pipelineOrchestrator","setCameraPipelineForAgent","mutation",s),resolvePipeline:s=>p("pipelineOrchestrator","resolvePipeline","query",s),getDeviceSettingsContribution:s=>p("pipelineOrchestrator","getDeviceSettingsContribution","query",s),getDeviceLiveContribution:s=>p("pipelineOrchestrator","getDeviceLiveContribution","query",s),applyDeviceSettingsPatch:s=>p("pipelineOrchestrator","applyDeviceSettingsPatch","mutation",s)},on={detachCamera:s=>p("pipelineRunner","detachCamera","mutation",s),getCameraMetrics:s=>p("pipelineRunner","getCameraMetrics","query",s)},sn={getPolicyStatus:s=>p("recordingEngine","getPolicyStatus","query",s)},rn={supportsDevice:s=>p("snapshotProvider","supportsDevice","query",s),getSnapshot:s=>p("snapshotProvider","getSnapshot","query",s)},dn={publishCameraStream:s=>p("streamBroker","publishCameraStream","mutation",s),retractCameraStream:s=>p("streamBroker","retractCameraStream","mutation",s),assignProfile:s=>p("streamBroker","assignProfile","mutation",s),unassignProfile:s=>p("streamBroker","unassignProfile","mutation",s),restartProfile:s=>p("streamBroker","restartProfile","mutation",s),getDeviceSettingsContribution:s=>p("streamBroker","getDeviceSettingsContribution","query",s),getDeviceLiveContribution:s=>p("streamBroker","getDeviceLiveContribution","query",s),applyDeviceSettingsPatch:s=>p("streamBroker","applyDeviceSettingsPatch","mutation",s)};return{deviceId:c.deviceId,binding:c,state:{audioMetrics:q(S,c.deviceId,"audio-metrics"),battery:q(S,c.deviceId,"battery"),brightness:q(S,c.deviceId,"brightness"),cameraStreams:q(S,c.deviceId,"camera-streams"),deviceDiscovery:q(S,c.deviceId,"device-discovery"),deviceStatus:q(S,c.deviceId,"device-status"),doorbell:q(S,c.deviceId,"doorbell"),featureProbe:q(S,c.deviceId,"feature-probe"),motion:q(S,c.deviceId,"motion"),motionTrigger:q(S,c.deviceId,"motion-trigger"),ptzAutotrack:q(S,c.deviceId,"ptz-autotrack"),switch:q(S,c.deviceId,"switch"),zoneAnalytics:q(S,c.deviceId,"zone-analytics"),zoneRules:q(S,c.deviceId,"zone-rules"),zones:q(S,c.deviceId,"zones")},accessories:k,audioAnalysis:P,audioMetrics:A,battery:D,brightness:B,cameraCredentials:vt,cameraStreams:yt,detectionPipeline:St,deviceDiscovery:bt,deviceOps:ft,deviceStatus:It,doorbell:kt,events:Ct,featureProbe:At,intercom:Pt,motion:wt,motionDetection:Dt,motionTrigger:Mt,nativeObjectDetection:Et,osd:qt,pipelineAnalytics:Tt,ptz:Rt,ptzAutotrack:Bt,reboot:xt,recording:Lt,snapshot:Ot,switch:zt,webrtcSession:Nt,zoneAnalytics:Ut,zoneRules:n,zones:N,addonSettings:re,deviceManager:J,deviceState:ke,networkQuality:de,pipelineExecutor:X,pipelineOrchestrator:nn,pipelineRunner:on,recordingEngine:sn,snapshotProvider:rn,streamBroker:dn}}function nc(m){const c=m;function o(n,N,re,J,ke){const de=c[n]?.[N];if(!de)throw new Error(`SystemProxy: api has no '${n}.${N}'`);const X=de;return re==="mutation"?X.mutate(J):re==="subscription"?X.subscribe(J,ke):X.query(J)}return{addonPages:{listPages:n=>o("addonPages","listPages","query",n)},addons:{list:n=>o("addons","list","query",n),getLogs:n=>o("addons","getLogs","query",n),listPackages:n=>o("addons","listPackages","query",n),installPackage:n=>o("addons","installPackage","mutation",n),installFromWorkspace:n=>o("addons","installFromWorkspace","mutation",n),isWorkspaceAvailable:n=>o("addons","isWorkspaceAvailable","query",n),listWorkspacePackages:n=>o("addons","listWorkspacePackages","query",n),uninstallPackage:n=>o("addons","uninstallPackage","mutation",n),reloadPackages:n=>o("addons","reloadPackages","mutation",n),searchAvailable:n=>o("addons","searchAvailable","query",n),listUpdates:n=>o("addons","listUpdates","query",n),updatePackage:n=>o("addons","updatePackage","mutation",n),rollbackPackage:n=>o("addons","rollbackPackage","mutation",n),forceRefresh:n=>o("addons","forceRefresh","mutation",n),restartServer:n=>o("addons","restartServer","mutation",n),getVersions:n=>o("addons","getVersions","query",n),restartAddon:n=>o("addons","restartAddon","mutation",n),retryLoad:n=>o("addons","retryLoad","mutation",n),getAutoUpdateSettings:n=>o("addons","getAutoUpdateSettings","query",n),setAutoUpdateSettings:n=>o("addons","setAutoUpdateSettings","mutation",n),getAddonAutoUpdate:n=>o("addons","getAddonAutoUpdate","query",n),setAddonAutoUpdate:n=>o("addons","setAddonAutoUpdate","mutation",n),applyAutoUpdateToAll:n=>o("addons","applyAutoUpdateToAll","mutation",n),custom:n=>o("addons","custom","mutation",n),onAddonLogs:(n,N)=>o("addons","onAddonLogs","subscription",n,N)},addonSettings:{getGlobalSettings:n=>o("addonSettings","getGlobalSettings","query",n),updateGlobalSettings:n=>o("addonSettings","updateGlobalSettings","mutation",n)},addonWidgets:{listWidgets:n=>o("addonWidgets","listWidgets","query",n)},alerts:{emit:n=>o("alerts","emit","mutation",n),update:n=>o("alerts","update","mutation",n),list:n=>o("alerts","list","query",n),getUnreadCount:n=>o("alerts","getUnreadCount","query",n),markRead:n=>o("alerts","markRead","mutation",n),markAllRead:n=>o("alerts","markAllRead","mutation",n),dismiss:n=>o("alerts","dismiss","mutation",n)},audioAnalyzer:{analyseChunk:n=>o("audioAnalyzer","analyseChunk","mutation",n),classify:n=>o("audioAnalyzer","classify","query",n),isReady:n=>o("audioAnalyzer","isReady","query",n),dispose:n=>o("audioAnalyzer","dispose","mutation",n),reprobeAudioEngine:n=>o("audioAnalyzer","reprobeAudioEngine","mutation",n)},audioCodec:{listSupportedCodecs:n=>o("audioCodec","listSupportedCodecs","query",n),canHandle:n=>o("audioCodec","canHandle","query",n),createDecodeSession:n=>o("audioCodec","createDecodeSession","mutation",n),createEncodeSession:n=>o("audioCodec","createEncodeSession","mutation",n),closeSession:n=>o("audioCodec","closeSession","mutation",n),pushEncodedFrame:n=>o("audioCodec","pushEncodedFrame","mutation",n),pullPcm:n=>o("audioCodec","pullPcm","query",n),pushPcm:n=>o("audioCodec","pushPcm","mutation",n),pullEncoded:n=>o("audioCodec","pullEncoded","query",n),flushEncode:n=>o("audioCodec","flushEncode","mutation",n),listActiveSessions:n=>o("audioCodec","listActiveSessions","query",n)},authentication:{listProviders:n=>o("authentication","listProviders","query",n),setProviderEnabled:n=>o("authentication","setProviderEnabled","mutation",n)},backup:{listDestinations:n=>o("backup","listDestinations","query",n),trigger:n=>o("backup","trigger","mutation",n),list:n=>o("backup","list","query",n),listLocations:n=>o("backup","listLocations","query",n),getEntries:n=>o("backup","getEntries","query",n),restore:n=>o("backup","restore","mutation",n),delete:n=>o("backup","delete","mutation",n),listArchives:n=>o("backup","listArchives","query",n),upsertDestinationPolicy:n=>o("backup","upsertDestinationPolicy","mutation",n),previewSchedule:n=>o("backup","previewSchedule","query",n)},decoder:{supportsCodec:n=>o("decoder","supportsCodec","query",n),getInfo:n=>o("decoder","getInfo","query",n),createSession:n=>o("decoder","createSession","query",n),destroySession:n=>o("decoder","destroySession","query",n),pushPacket:n=>o("decoder","pushPacket","query",n),openStream:n=>o("decoder","openStream","query",n),pullFrames:n=>o("decoder","pullFrames","query",n),updateConfig:n=>o("decoder","updateConfig","query",n),getStats:n=>o("decoder","getStats","query",n),listActiveSessions:n=>o("decoder","listActiveSessions","query",n),reprobeHwaccel:n=>o("decoder","reprobeHwaccel","mutation",n)},deviceManager:{allocateDeviceId:n=>o("deviceManager","allocateDeviceId","mutation",n),registerDevice:n=>o("deviceManager","registerDevice","mutation",n),removeDevice:n=>o("deviceManager","removeDevice","mutation",n),persistConfig:n=>o("deviceManager","persistConfig","mutation",n),listLocations:n=>o("deviceManager","listLocations","query",n),addLocation:n=>o("deviceManager","addLocation","mutation",n),removeLocation:n=>o("deviceManager","removeLocation","mutation",n),listPersistedByAddon:n=>o("deviceManager","listPersistedByAddon","query",n),listAll:n=>o("deviceManager","listAll","query",n),getChildren:n=>o("deviceManager","getChildren","query",n),listWrappersForCap:n=>o("deviceManager","listWrappersForCap","query",n),listBindableCapsForDeviceType:n=>o("deviceManager","listBindableCapsForDeviceType","query",n),discoverDevices:n=>o("deviceManager","discoverDevices","mutation",n),adoptDevice:n=>o("deviceManager","adoptDevice","mutation",n),getCreationSchema:n=>o("deviceManager","getCreationSchema","query",n),createDevice:n=>o("deviceManager","createDevice","mutation",n),testCreationField:n=>o("deviceManager","testCreationField","mutation",n)},deviceProvider:{start:n=>o("deviceProvider","start","mutation",n),stop:n=>o("deviceProvider","stop","mutation",n),getStatus:n=>o("deviceProvider","getStatus","query",n),getDevices:n=>o("deviceProvider","getDevices","query",n),supportsDiscovery:n=>o("deviceProvider","supportsDiscovery","query",n),discoverDevices:n=>o("deviceProvider","discoverDevices","mutation",n),adoptDiscoveredDevice:n=>o("deviceProvider","adoptDiscoveredDevice","mutation",n),supportsManualCreation:n=>o("deviceProvider","supportsManualCreation","query",n),getChildCreationSchema:n=>o("deviceProvider","getChildCreationSchema","query",n),createDevice:n=>o("deviceProvider","createDevice","mutation",n),testCreationField:n=>o("deviceProvider","testCreationField","mutation",n)},deviceState:{getAllSnapshots:n=>o("deviceState","getAllSnapshots","query",n)},integrations:{list:n=>o("integrations","list","query",n),get:n=>o("integrations","get","query",n),getByAddonId:n=>o("integrations","getByAddonId","query",n),create:n=>o("integrations","create","mutation",n),update:n=>o("integrations","update","mutation",n),delete:n=>o("integrations","delete","mutation",n),getSettings:n=>o("integrations","getSettings","query",n),setSettings:n=>o("integrations","setSettings","mutation",n),getAvailableTypes:n=>o("integrations","getAvailableTypes","query",n),testConnection:n=>o("integrations","testConnection","mutation",n)},localNetwork:{list:n=>o("localNetwork","list","query",n),getPreferred:n=>o("localNetwork","getPreferred","query",n),getConnectionEndpoints:n=>o("localNetwork","getConnectionEndpoints","query",n),getAllowedAddresses:n=>o("localNetwork","getAllowedAddresses","query",n),setAllowedAddresses:n=>o("localNetwork","setAllowedAddresses","mutation",n),resetAllowlistToBestMatch:n=>o("localNetwork","resetAllowlistToBestMatch","mutation",n)},meshNetwork:{getStatus:n=>o("meshNetwork","getStatus","query",n),join:n=>o("meshNetwork","join","mutation",n),leave:n=>o("meshNetwork","leave","mutation",n),listPeers:n=>o("meshNetwork","listPeers","query",n),setPublicIngress:n=>o("meshNetwork","setPublicIngress","mutation",n),setMeshIngress:n=>o("meshNetwork","setMeshIngress","mutation",n),testConnection:n=>o("meshNetwork","testConnection","mutation",n)},meshOrchestrator:{listProviders:n=>o("meshOrchestrator","listProviders","query",n),joinProvider:n=>o("meshOrchestrator","joinProvider","mutation",n),leaveProvider:n=>o("meshOrchestrator","leaveProvider","mutation",n)},metricsProvider:{collectSnapshot:n=>o("metricsProvider","collectSnapshot","query",n),getCached:n=>o("metricsProvider","getCached","query",n),getCurrent:n=>o("metricsProvider","getCurrent","query",n),getDiskSpace:n=>o("metricsProvider","getDiskSpace","query",n),getGpuInfo:n=>o("metricsProvider","getGpuInfo","query",n),getCpuTemperature:n=>o("metricsProvider","getCpuTemperature","query",n),getProcessStats:n=>o("metricsProvider","getProcessStats","query",n),listAddonInstances:n=>o("metricsProvider","listAddonInstances","query",n),getAddonStats:n=>o("metricsProvider","getAddonStats","query",n),listNodeProcesses:n=>o("metricsProvider","listNodeProcesses","query",n),killProcess:n=>o("metricsProvider","killProcess","mutation",n)},networkQuality:{getAllStats:n=>o("networkQuality","getAllStats","query",n)},nodes:{topology:n=>o("nodes","topology","query",n),deployAddon:n=>o("nodes","deployAddon","mutation",n),undeployAddon:n=>o("nodes","undeployAddon","mutation",n),restartAddon:n=>o("nodes","restartAddon","mutation",n),restartProcess:n=>o("nodes","restartProcess","mutation",n),restartNode:n=>o("nodes","restartNode","mutation",n),shutdownNode:n=>o("nodes","shutdownNode","mutation",n),renameNode:n=>o("nodes","renameNode","mutation",n),clusterAddonStatus:n=>o("nodes","clusterAddonStatus","query",n),setProcessLogLevel:n=>o("nodes","setProcessLogLevel","mutation",n),executeQuery:n=>o("nodes","executeQuery","mutation",n)},notificationOutput:{send:n=>o("notificationOutput","send","mutation",n),sendTest:n=>o("notificationOutput","sendTest","mutation",n)},pipelineExecutor:{getAvailableEngines:n=>o("pipelineExecutor","getAvailableEngines","query",n),getSelectedEngine:n=>o("pipelineExecutor","getSelectedEngine","query",n),getDefaultSteps:n=>o("pipelineExecutor","getDefaultSteps","query",n),reprobeEngine:n=>o("pipelineExecutor","reprobeEngine","mutation",n),getVideoPipelineSteps:n=>o("pipelineExecutor","getVideoPipelineSteps","query",n),setVideoPipelineSteps:n=>o("pipelineExecutor","setVideoPipelineSteps","mutation",n),getSchema:n=>o("pipelineExecutor","getSchema","query",n),getGlobalSteps:n=>o("pipelineExecutor","getGlobalSteps","query",n),getGlobalPipelineConfig:n=>o("pipelineExecutor","getGlobalPipelineConfig","query",n),getOrchestratorConfigSchema:n=>o("pipelineExecutor","getOrchestratorConfigSchema","query",n),listTemplates:n=>o("pipelineExecutor","listTemplates","query",n),saveTemplate:n=>o("pipelineExecutor","saveTemplate","mutation",n),updateTemplate:n=>o("pipelineExecutor","updateTemplate","mutation",n),deleteTemplate:n=>o("pipelineExecutor","deleteTemplate","mutation",n),getCapabilities:n=>o("pipelineExecutor","getCapabilities","query",n),getAddonModels:n=>o("pipelineExecutor","getAddonModels","query",n),downloadModel:n=>o("pipelineExecutor","downloadModel","mutation",n),deleteModel:n=>o("pipelineExecutor","deleteModel","mutation",n),detect:n=>o("pipelineExecutor","detect","query",n),cacheFrameInPool:n=>o("pipelineExecutor","cacheFrameInPool","mutation",n),inferCached:n=>o("pipelineExecutor","inferCached","mutation",n),uncacheFrame:n=>o("pipelineExecutor","uncacheFrame","mutation",n),getEffectiveTuning:n=>o("pipelineExecutor","getEffectiveTuning","query",n),listLoadedEngines:n=>o("pipelineExecutor","listLoadedEngines","query",n),spinEngine:n=>o("pipelineExecutor","spinEngine","mutation",n),killEngine:n=>o("pipelineExecutor","killEngine","mutation",n),listReferenceImages:n=>o("pipelineExecutor","listReferenceImages","query",n),getReferenceImage:n=>o("pipelineExecutor","getReferenceImage","query",n),getReferenceAudioFiles:n=>o("pipelineExecutor","getReferenceAudioFiles","query",n),getReferenceAudio:n=>o("pipelineExecutor","getReferenceAudio","query",n),getAudioCapabilities:n=>o("pipelineExecutor","getAudioCapabilities","query",n),runAudioTest:n=>o("pipelineExecutor","runAudioTest","mutation",n),getDetectionConfigSchema:n=>o("pipelineExecutor","getDetectionConfigSchema","query",n)},pipelineOrchestrator:{rebalance:n=>o("pipelineOrchestrator","rebalance","mutation",n),getPipelineAssignments:n=>o("pipelineOrchestrator","getPipelineAssignments","query",n),getAgentLoad:n=>o("pipelineOrchestrator","getAgentLoad","query",n),getGlobalMetrics:n=>o("pipelineOrchestrator","getGlobalMetrics","query",n),getCapabilityBindings:n=>o("pipelineOrchestrator","getCapabilityBindings","query",n),setCapabilityBinding:n=>o("pipelineOrchestrator","setCapabilityBinding","mutation",n),getDecoderAssignments:n=>o("pipelineOrchestrator","getDecoderAssignments","query",n),getAudioNodeLoad:n=>o("pipelineOrchestrator","getAudioNodeLoad","query",n),getAgentSettings:n=>o("pipelineOrchestrator","getAgentSettings","query",n),listAgentSettings:n=>o("pipelineOrchestrator","listAgentSettings","query",n),setAgentAddonDefaults:n=>o("pipelineOrchestrator","setAgentAddonDefaults","mutation",n),removeAgentSettings:n=>o("pipelineOrchestrator","removeAgentSettings","mutation",n),listTemplates:n=>o("pipelineOrchestrator","listTemplates","query",n),saveTemplate:n=>o("pipelineOrchestrator","saveTemplate","mutation",n),updateTemplate:n=>o("pipelineOrchestrator","updateTemplate","mutation",n),deleteTemplate:n=>o("pipelineOrchestrator","deleteTemplate","mutation",n)},pipelineRunner:{attachCamera:n=>o("pipelineRunner","attachCamera","mutation",n),reportMotion:n=>o("pipelineRunner","reportMotion","mutation",n),getLocalLoad:n=>o("pipelineRunner","getLocalLoad","query",n),getLocalMetrics:n=>o("pipelineRunner","getLocalMetrics","query",n),getAllCameraMetrics:n=>o("pipelineRunner","getAllCameraMetrics","query",n),getLocalCameras:n=>o("pipelineRunner","getLocalCameras","query",n)},platformProbe:{getCapabilities:n=>o("platformProbe","getCapabilities","query",n),getHardware:n=>o("platformProbe","getHardware","query",n),resolveInferenceConfig:n=>o("platformProbe","resolveInferenceConfig","query",n),resolveHwAccel:n=>o("platformProbe","resolveHwAccel","query",n)},recordingEngine:{getStatus:n=>o("recordingEngine","getStatus","query",n),enable:n=>o("recordingEngine","enable","mutation",n),disable:n=>o("recordingEngine","disable","mutation",n),getConfig:n=>o("recordingEngine","getConfig","query",n),updateConfig:n=>o("recordingEngine","updateConfig","mutation",n),getPlaylist:n=>o("recordingEngine","getPlaylist","query",n),getThumbnail:n=>o("recordingEngine","getThumbnail","query",n),getSegments:n=>o("recordingEngine","getSegments","query",n),getAvailability:n=>o("recordingEngine","getAvailability","query",n),estimateStorage:n=>o("recordingEngine","estimateStorage","query",n),estimateGlobalStorage:n=>o("recordingEngine","estimateGlobalStorage","query",n),getStorageUsage:n=>o("recordingEngine","getStorageUsage","query",n),setPolicy:n=>o("recordingEngine","setPolicy","mutation",n),getPolicy:n=>o("recordingEngine","getPolicy","query",n),getRetentionConfig:n=>o("recordingEngine","getRetentionConfig","query",n),updateRetentionConfig:n=>o("recordingEngine","updateRetentionConfig","mutation",n),getMotionStats:n=>o("recordingEngine","getMotionStats","query",n)},remoteAccess:{listProviders:n=>o("remoteAccess","listProviders","query",n),startProvider:n=>o("remoteAccess","startProvider","mutation",n),stopProvider:n=>o("remoteAccess","stopProvider","mutation",n)},settingsStore:{get:n=>o("settingsStore","get","query",n),set:n=>o("settingsStore","set","mutation",n),query:n=>o("settingsStore","query","query",n),insert:n=>o("settingsStore","insert","mutation",n),update:n=>o("settingsStore","update","mutation",n),delete:n=>o("settingsStore","delete","mutation",n),count:n=>o("settingsStore","count","query",n),isEmpty:n=>o("settingsStore","isEmpty","query",n),declareCollection:n=>o("settingsStore","declareCollection","mutation",n)},storage:{resolve:n=>o("storage","resolve","query",n),write:n=>o("storage","write","mutation",n),read:n=>o("storage","read","query",n),exists:n=>o("storage","exists","query",n),list:n=>o("storage","list","query",n),delete:n=>o("storage","delete","mutation",n),getAvailableSpace:n=>o("storage","getAvailableSpace","query",n),beginUpload:n=>o("storage","beginUpload","mutation",n),writeChunk:n=>o("storage","writeChunk","mutation",n),finalizeUpload:n=>o("storage","finalizeUpload","mutation",n),abortUpload:n=>o("storage","abortUpload","mutation",n),beginDownload:n=>o("storage","beginDownload","mutation",n),readChunk:n=>o("storage","readChunk","query",n),endDownload:n=>o("storage","endDownload","mutation",n),listLocations:n=>o("storage","listLocations","query",n),getDefaultLocation:n=>o("storage","getDefaultLocation","query",n),upsertLocation:n=>o("storage","upsertLocation","mutation",n),deleteLocation:n=>o("storage","deleteLocation","mutation",n),testLocation:n=>o("storage","testLocation","query",n),listProviders:n=>o("storage","listProviders","query",n),testConfig:n=>o("storage","testConfig","query",n)},streamBroker:{listAllCameraStreams:n=>o("streamBroker","listAllCameraStreams","query",n),listAllProfileSlots:n=>o("streamBroker","listAllProfileSlots","query",n),getBrokerStats:n=>o("streamBroker","getBrokerStats","query",n),listClients:n=>o("streamBroker","listClients","query",n),killClient:n=>o("streamBroker","killClient","mutation",n),getStreamUrl:n=>o("streamBroker","getStreamUrl","query",n),getBroker:n=>o("streamBroker","getBroker","query",n),setPreBufferDuration:n=>o("streamBroker","setPreBufferDuration","mutation",n),getPreBufferInfo:n=>o("streamBroker","getPreBufferInfo","query",n),getRtspPort:n=>o("streamBroker","getRtspPort","query",n),getAllRtspEntries:n=>o("streamBroker","getAllRtspEntries","query",n),getRtspEntry:n=>o("streamBroker","getRtspEntry","query",n),regenerateRtspToken:n=>o("streamBroker","regenerateRtspToken","mutation",n),setRtspEnabled:n=>o("streamBroker","setRtspEnabled","mutation",n),isRtspEnabled:n=>o("streamBroker","isRtspEnabled","query",n)},system:{info:n=>o("system","info","query",n),health:n=>o("system","health","query",n),featureFlags:n=>o("system","featureFlags","query",n),networkAddresses:n=>o("system","networkAddresses","query",n),getRetentionConfig:n=>o("system","getRetentionConfig","query",n),setRetentionConfig:n=>o("system","setRetentionConfig","mutation",n),forceRetentionCleanup:n=>o("system","forceRetentionCleanup","mutation",n)},toast:{onToast:(n,N)=>o("toast","onToast","subscription",n,N)},turnOrchestrator:{listProviders:n=>o("turnOrchestrator","listProviders","query",n),getAllServers:n=>o("turnOrchestrator","getAllServers","query",n),setProviderEnabled:n=>o("turnOrchestrator","setProviderEnabled","mutation",n)},turnProvider:{getTurnServers:n=>o("turnProvider","getTurnServers","query",n)},userManagement:{listUsers:n=>o("userManagement","listUsers","query",n),createUser:n=>o("userManagement","createUser","mutation",n),updateUser:n=>o("userManagement","updateUser","mutation",n),deleteUser:n=>o("userManagement","deleteUser","mutation",n),resetPassword:n=>o("userManagement","resetPassword","mutation",n),setUserScopes:n=>o("userManagement","setUserScopes","mutation",n),validateCredentials:n=>o("userManagement","validateCredentials","mutation",n),listApiKeys:n=>o("userManagement","listApiKeys","query",n),createApiKey:n=>o("userManagement","createApiKey","mutation",n),revokeApiKey:n=>o("userManagement","revokeApiKey","mutation",n),validateApiKey:n=>o("userManagement","validateApiKey","mutation",n),createScopedToken:n=>o("userManagement","createScopedToken","mutation",n),revokeScopedToken:n=>o("userManagement","revokeScopedToken","mutation",n),validateScopedToken:n=>o("userManagement","validateScopedToken","query",n),listScopedTokens:n=>o("userManagement","listScopedTokens","query",n),setupTotp:n=>o("userManagement","setupTotp","mutation",n),confirmTotp:n=>o("userManagement","confirmTotp","mutation",n),disableTotp:n=>o("userManagement","disableTotp","mutation",n),getTotpStatus:n=>o("userManagement","getTotpStatus","query",n),verifyTotp:n=>o("userManagement","verifyTotp","mutation",n)}}}const Li="device.state-changed",Oi="capability.binding-changed",zi="device.registered",Ni="device.unregistered",Ui="device.updated";class ic{constructor(c){this.api=c,this.stateSource=Ri(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(c=15e3){if(!this.initialized){if(this.initPromise)return this.initPromise;this.initPromise=(async()=>{const o=(I,u)=>Number.isFinite(c)?new Promise((p,k)=>{const P=setTimeout(()=>k(new Error(`SystemMirror.init: '${u}' timed out after ${c}ms`)),c);I.then(A=>{clearTimeout(P),p(A)},A=>{clearTimeout(P),k(A)})}):I,[g,S,f]=await Promise.all([o(this.api.deviceManager.getAllBindings.query({}),"deviceManager.getAllBindings"),o(this.api.deviceState.getAllSnapshots.query({}),"deviceState.getAllSnapshots"),o(this.api.deviceManager.listAll.query({}),"deviceManager.listAll")]);for(const I of g)this.bindings.set(I.deviceId,I);for(const[I,u]of Object.entries(S)){const p=Number(I);if(!Number.isFinite(p))continue;const k=new Map;for(const[P,A]of Object.entries(u))k.set(P,A);this.stateMirror.set(p,k)}for(const I of f)this.devices.set(I.id,I);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 c of this.bridges)try{c.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(c){const o=this.bindings.get(c);return o?xi(this.api,o,{stateSource:this.stateSource}):null}getDeviceByName(c){for(const o of this.devices.values())if(o.name===c)return this.getDeviceById(o.id);return null}getDeviceByStableId(c){for(const o of this.devices.values())if(o.stableId===c)return this.getDeviceById(o.id);return null}getDevicesByAddon(c){return this.query({addonId:c})}getDevicesByType(c){return this.query({type:c})}getDeviceInfo(c){return this.devices.get(c)??null}getAllDevices(){const c=[];for(const o of this.bindings.keys()){const g=this.getDeviceById(o);g&&c.push(g)}return c}filterByCap(c){return this.query({caps:c})}query(c={}){const o=[];for(const[g,S]of this.bindings){const f=this.devices.get(g);if(c.id!==void 0&&!le(g,c.id)||c.stableId!==void 0&&(!f||!le(f.stableId,c.stableId))||c.addonId!==void 0&&(!f||!le(f.addonId,c.addonId))||c.type!==void 0&&(!f||!le(f.type,c.type)))continue;if(c.caps!==void 0){const u=Ee(c.caps),p=new Set(S.entries.map(k=>k.capName));if(!u.every(k=>p.has(k)))continue}if(c.anyCap!==void 0){const u=Ee(c.anyCap),p=new Set(S.entries.map(k=>k.capName));if(!u.some(k=>p.has(k)))continue}if(c.name!==void 0&&(!f||!Fi(f.name,c.name))||c.online!==void 0&&(!f||f.online!==c.online))continue;if(c.parentDeviceId!==void 0){if(!f)continue;const u=c.parentDeviceId;if((f.parentDeviceId??null)!==u)continue}if(c.feature!==void 0&&(!f||!Ee(c.feature).every(p=>f.features.includes(p)))||c.isCamera!==void 0&&(!f||f.isCamera!==c.isCamera))continue;const I=this.getDeviceById(g);if(I){if(c.where&&f){if(!c.where(f,I))continue}else if(c.where&&!f)continue;o.push(I)}}return o}whereState(c,o){const g=[];for(const[S,f]of this.stateMirror){const I=f.get(c);if(!I||!o(I,S))continue;const u=this.getDeviceById(S);u&&g.push(u)}return g}mapState(c,o){const g=[];for(const[S,f]of this.stateMirror){const I=f.get(c);I&&g.push(o(I,S))}return g}findState(c,o){for(const[g,S]of this.stateMirror){const f=S.get(c);if(f&&o(f,g))return this.getDeviceById(g)}return null}countByCap(c){let o=0;for(const g of this.bindings.values())g.entries.some(S=>S.capName===c)&&o++;return o}countByState(c,o){let g=0;for(const[S,f]of this.stateMirror){const I=f.get(c);I&&o(I,S)&&g++}return g}listen(c){return this.globalStateListeners.add(c),()=>{this.globalStateListeners.delete(c)}}listenCap(c,o){let g=this.capListeners.get(c);return g||(g=new Set,this.capListeners.set(c,g)),g.add(o),()=>{g.delete(o),g.size===0&&this.capListeners.delete(c)}}listenDevice(c,o){let g=this.deviceListeners.get(c);return g||(g=new Set,this.deviceListeners.set(c,g)),g.add(o),()=>{g.delete(o),g.size===0&&this.deviceListeners.delete(c)}}onDeviceAdded(c){return this.addedListeners.add(c),()=>{this.addedListeners.delete(c)}}onDeviceRemoved(c){return this.removedListeners.add(c),()=>{this.removedListeners.delete(c)}}waitForState(c,o,g,S=3e4){return new Promise((f,I)=>{const p=(()=>{const A=this.stateMirror.get(c)?.get(o);return A&&g(A)?A:null})();if(p){f(p);return}let k=null;const P=this.listenDevice(c,(A,D,B)=>{D===o&&B&&g(B)&&(k&&clearTimeout(k),P(),f(B))});Number.isFinite(S)&&(k=setTimeout(()=>{P(),I(new Error(`waitForState timed out after ${S}ms (deviceId=${c}, capName=${o})`))},S))})}waitForDevice(c,o=3e4){return new Promise((g,S)=>{const f=this.getDeviceById(c);if(f){g(f);return}let I=null;const u=this.onDeviceAdded(p=>{if(p!==c)return;const k=this.getDeviceById(p);k&&(I&&clearTimeout(I),u(),g(k))});Number.isFinite(o)&&(I=setTimeout(()=>{u(),S(new Error(`waitForDevice timed out after ${o}ms (deviceId=${c})`))},o))})}async forEachCap(c,o){for(const g of this.filterByCap(c))await o(g)}async invokeCap(c,o,g,S={}){const f=this.filterByCap(c),I=Math.max(1,S.parallelism??f.length),u=[];for(let p=0;p<f.length;p+=I){const k=f.slice(p,p+I),P=await Promise.allSettled(k.map(async A=>{const D=A[c];if(!D||typeof D[o]!="function")throw new Error(`device '${A.deviceId}' does not expose '${c}.${o}'`);return await D[o](g)}));for(let A=0;A<P.length;A++){const D=k[A],B=P[A];B.status==="fulfilled"?u.push({deviceId:D.deviceId,ok:!0,result:B.value}):u.push({deviceId:D.deviceId,ok:!1,error:B.reason})}}return u}summary(){const c={},o={},g={};let S=0,f=0;for(const I of this.bindings.values())for(const u of I.entries)c[u.capName]=(c[u.capName]??0)+1;for(const I of this.devices.values())o[I.addonId]=(o[I.addonId]??0)+1,g[I.type]=(g[I.type]??0)+1,I.online?S++:f++;return{totalDevices:this.bindings.size,online:S,offline:f,byCap:c,byAddon:o,byType:g,statedDevices:this.stateMirror.size}}dump(c){const o=S=>{const f=this.devices.get(S)??null,I=this.bindings.get(S)??null,u={},p=this.stateMirror.get(S);if(p)for(const[k,P]of p)u[k]={...P};return{deviceId:S,info:f,binding:I?{...I,entries:I.entries.map(k=>({...k}))}:null,state:u}};if(c!==void 0)return o(c);const g=[];for(const S of this.bindings.keys())g.push(o(S));return g}getRawMirror(){return this.stateMirror}getSystemState(){const c=new Map;for(const[o,g]of this.stateMirror){const S=new Map;for(const[f,I]of g)S.set(f,{...I});c.set(o,S)}return c}subscribeBus(){if(!this.api.live?.onEvent)return;const c=this.api.live.onEvent;this.bridges.push(c.subscribe({category:Li},{onData:o=>{const g=o.data;!g||typeof g.deviceId!="number"||typeof g.capName!="string"||this.applyStateUpdate(g.deviceId,g.capName,g.slice)}})),this.bridges.push(c.subscribe({category:Oi},{onData:o=>{const g=o.data,S=typeof g?.deviceId=="number"?g.deviceId:g?.source?.type==="device"&&typeof g.source.id=="number"?g.source.id:null;S!==null&&this.refreshBinding(S)}})),this.bridges.push(c.subscribe({category:zi},{onData:o=>{const g=o.data;typeof g?.deviceId=="number"&&this.refreshDeviceMetadata(g.deviceId,"added")}})),this.bridges.push(c.subscribe({category:Ni},{onData:o=>{const g=o.data;typeof g?.deviceId=="number"&&this.applyDeviceRemoval(g.deviceId)}})),this.bridges.push(c.subscribe({category:Ui},{onData:o=>{const g=o.data;typeof g?.deviceId=="number"&&this.refreshDeviceMetadata(g.deviceId,"updated")}}))}applyStateUpdate(c,o,g){let S=this.stateMirror.get(c);S||(S=new Map,this.stateMirror.set(c,S)),g===void 0?S.delete(o):S.set(o,g);const f=`${c}:${o}`,I=this.handleListeners.get(f);if(I)for(const k of I)try{k(g)}catch{}for(const k of this.globalStateListeners)try{k(c,o,g)}catch{}const u=this.capListeners.get(o);if(u)for(const k of u)try{k(c,g)}catch{}const p=this.deviceListeners.get(c);if(p)for(const k of p)try{k(c,o,g)}catch{}}applyDeviceRemoval(c){const o=this.devices.get(c)??null;this.bindings.delete(c),this.devices.delete(c),this.stateMirror.delete(c);for(const g of this.removedListeners)try{g(c,o)}catch{}}async refreshBinding(c){try{const g=(await this.api.deviceManager.getAllBindings.query({})).find(S=>S.deviceId===c);g?this.bindings.set(c,g):this.applyDeviceRemoval(c)}catch{}}async refreshDeviceMetadata(c,o){try{const S=(await this.api.deviceManager.listAll.query({})).find(I=>I.id===c);if(!S)return;const f=!this.devices.has(c);if(this.devices.set(c,S),o==="added"&&f){await this.refreshBinding(c);for(const I of this.addedListeners)try{I(c,S)}catch{}}}catch{}}}function le(m,c){return Array.isArray(c)?c.includes(m):m===c}function Ee(m){return Array.isArray(m)?m:[m]}function Fi(m,c){return typeof c=="string"?m===c:c instanceof RegExp?c.test(m):"exact"in c?m===c.exact:"contains"in c?m.toLowerCase().includes(c.contains.toLowerCase()):!1}const _i=t({id:e(),label:e(),icon:e(),order:a().optional()}),Hi=t({id:e(),title:e(),description:e().optional(),style:y(["card","accordion"]).optional(),defaultCollapsed:l().optional(),columns:E([b(1),b(2),b(3),b(4)]).optional(),tab:e().optional(),location:y(["settings","top-tab"]).optional(),order:a().optional(),fields:r(qa())}),K=t({tabs:r(_i).optional(),sections:r(Hi)}),Jt=v(e(),h()),Xt=t({success:b(!0)}),oc={name:"addon-settings",scope:"system",mode:"singleton",nodeIdMode:"data",methods:{getGlobalSettings:i(t({addonId:e(),nodeId:e().optional(),overlay:v(e(),h()).optional()}),K.nullable()),updateGlobalSettings:i(t({addonId:e(),nodeId:e().optional(),patch:Jt}),Xt,{kind:"mutation",auth:"admin"}),getDeviceSettings:i(t({addonId:e(),deviceId:a(),nodeId:e().optional()}),K.nullable()),updateDeviceSettings:i(t({addonId:e(),deviceId:a(),nodeId:e().optional(),patch:Jt}),Xt,{kind:"mutation",auth:"admin"})}},Wi=y(["info","success","warning","error"]),Gi=y(["active","in-progress","completed","failed","dismissed"]),Vi=t({type:e(),id:e()}),qe=t({id:e(),category:e(),severity:Wi,title:e(),message:e(),status:Gi,progress:a().optional(),read:l(),createdAt:a(),updatedAt:a(),source:Vi.optional(),metadata:v(e(),h()).optional()}),sc={name:"alerts",scope:"system",mode:"singleton",methods:{emit:i(qe,d(),{kind:"mutation"}),update:i(t({alertId:e(),patch:qe.partial()}),d(),{kind:"mutation"}),list:i(t({unreadOnly:l().optional(),limit:a().optional()}).optional(),r(qe).readonly()),getUnreadCount:i(d(),a()),markRead:i(t({alertId:e()}),d(),{kind:"mutation"}),markAllRead:i(d(),d(),{kind:"mutation"}),dismiss:i(t({alertId:e()}),d(),{kind:"mutation"})}},rc={name:"storage",scope:"system",mode:"singleton",methods:{resolve:i(t({location:O,relativePath:e()}),e()),write:i(t({location:O,relativePath:e(),data:w(Uint8Array)}),d(),{kind:"mutation"}),read:i(t({location:O,relativePath:e()}),w(Uint8Array)),exists:i(t({location:O,relativePath:e()}),l()),list:i(t({location:O,prefix:e().optional()}),r(e()).readonly()),delete:i(t({location:O,relativePath:e()}),d(),{kind:"mutation"}),getAvailableSpace:i(t({location:O}),a().nullable()),beginUpload:i(t({location:O,relativePath:e(),sizeBytes:a().optional()}),t({uploadId:e()}),{kind:"mutation"}),writeChunk:i(t({uploadId:e(),offset:a(),data:w(Uint8Array)}),d(),{kind:"mutation"}),finalizeUpload:i(t({uploadId:e()}),d(),{kind:"mutation"}),abortUpload:i(t({uploadId:e()}),d(),{kind:"mutation"}),beginDownload:i(t({location:O,relativePath:e()}),t({downloadId:e(),sizeBytes:a()}),{kind:"mutation"}),readChunk:i(t({downloadId:e(),offset:a(),length:a()}),w(Uint8Array)),endDownload:i(t({downloadId:e()}),d(),{kind:"mutation"}),listLocations:i(t({type:Z.optional()}),r(T).readonly()),getDefaultLocation:i(t({type:Z}),T.nullable()),upsertLocation:i(T.omit({createdAt:!0,updatedAt:!0}),T,{kind:"mutation",auth:"admin"}),deleteLocation:i(t({id:e()}),d(),{kind:"mutation",auth:"admin"}),testLocation:i(t({id:e()}),t({ok:l(),error:e().optional()}),{auth:"admin"}),listProviders:i(d(),r(t({providerId:e(),displayName:e(),supportedLocationTypes:r(Z).readonly(),configSchema:h()})).readonly()),testConfig:i(t({providerId:e(),config:v(e(),h())}),t({ok:l(),error:e().optional()}),{auth:"admin"})}},ji=t({providerId:e().min(1),displayName:e().min(1),supportedLocationTypes:r(Z).readonly(),configSchema:h()}),Ki=t({ok:l(),error:e().optional()}),$i=t({location:T,relativePath:e(),sizeBytes:a().optional()}),Zi=t({uploadId:e()}),Qi=t({uploadId:e(),offset:a(),data:w(Uint8Array)}),Yi=t({uploadId:e()}),Ji=t({uploadId:e()}),Xi=t({location:T,relativePath:e()}),eo=t({downloadId:e(),sizeBytes:a()}),to=t({downloadId:e(),offset:a(),length:a()}),ao=t({downloadId:e()}),dc={name:"storage-provider",scope:"system",mode:"collection",internal:!0,methods:{getProviderInfo:i(d(),ji),testLocation:i(t({config:v(e(),h())}),Ki,{auth:"admin"}),resolve:i(t({location:T,relativePath:e()}),e()),write:i(t({location:T,relativePath:e(),data:w(Uint8Array)}),d(),{kind:"mutation"}),read:i(t({location:T,relativePath:e()}),w(Uint8Array)),exists:i(t({location:T,relativePath:e()}),l()),list:i(t({location:T,prefix:e().optional()}),r(e()).readonly()),delete:i(t({location:T,relativePath:e()}),d(),{kind:"mutation"}),getAvailableSpace:i(t({location:T}),a().nullable()),beginUpload:i($i,Zi,{kind:"mutation"}),writeChunk:i(Qi,d(),{kind:"mutation"}),finalizeUpload:i(Yi,d(),{kind:"mutation"}),abortUpload:i(Ji,d(),{kind:"mutation"}),beginDownload:i(Xi,eo,{kind:"mutation"}),readChunk:i(to,w(Uint8Array)),endDownload:i(ao,d(),{kind:"mutation"})}},no=t({subId:e(),displayName:e(),description:e().optional(),kind:e(),triggerSupported:l(),restoreSupported:l()}),io=no.extend({id:e(),addonId:e(),enabled:l(),retentionCount:a(),label:e().optional(),lastSuccessAt:a().optional(),lastSuccessSizeBytes:a().optional(),cron:e().optional(),nextRunAt:a().optional(),lastRunAt:a().optional()}),oo=t({id:e(),filename:e(),createdAt:a(),sizeBytes:a(),label:e().optional(),locations:r(e()).readonly()}),ea=t({id:e(),destinationId:e().optional(),label:e().optional(),createdAt:a(),sizeBytes:a(),locations:r(e()).optional()}),so=t({path:e(),kind:y(["file","dir","symlink"]),sizeBytes:a(),mtime:a()}),ro=t({archiveVersion:b(1),createdAt:a(),dataDir:e(),locations:r(e()),entries:r(so),totalBytes:a(),totalFiles:a()}),co=t({name:e(),sizeBytes:a(),fileCount:a(),present:l()}),cc={name:"backup",scope:"system",mode:"singleton",methods:{listDestinations:i(d(),r(io).readonly(),{auth:"admin"}),trigger:i(t({destinations:r(e()).optional(),locations:r(e()).optional(),label:e().optional()}).optional(),r(ea).readonly(),{kind:"mutation",auth:"admin"}),list:i(d(),r(ea).readonly(),{auth:"admin"}),listLocations:i(d(),r(co).readonly(),{auth:"admin"}),getEntries:i(t({destinationId:e(),backupId:e()}),ro.nullable(),{auth:"admin"}),restore:i(t({destinationId:e(),backupId:e(),locations:r(e()).optional()}),d(),{kind:"mutation",auth:"admin"}),delete:i(t({destinationId:e(),backupId:e()}),d(),{kind:"mutation",auth:"admin"}),listArchives:i(t({destinationId:e()}),r(oo).readonly(),{auth:"admin"}),upsertDestinationPolicy:i(t({locationId:e(),enabled:l(),retentionCount:a().int().min(1).max(1e3),label:e().optional(),cron:e().optional()}),d(),{kind:"mutation",auth:"admin"}),previewSchedule:i(t({cron:e(),count:a().int().min(1).max(20).optional()}),t({ok:l(),error:e().optional(),nextRuns:r(a()).readonly()}))}},ta=t({where:v(e(),h()).optional(),whereIn:v(e(),r(h())).optional(),whereBetween:v(e(),Ta([h(),h()])).optional(),orderBy:t({field:e(),direction:y(["asc","desc"])}).optional(),limit:a().optional(),offset:a().optional()}),aa=t({id:e(),data:v(e(),h())}),lo=t({name:e(),type:y(["TEXT","INTEGER","REAL","JSON","BOOLEAN"]),primaryKey:l().optional(),notNull:l().optional(),unique:l().optional()}),uo=t({name:e(),columns:r(e()).readonly(),unique:l().optional()}),lc={name:"settings-store",scope:"system",mode:"singleton",methods:{get:i(t({namespace:e().optional(),collection:e(),key:e()}),h()),set:i(t({namespace:e().optional(),collection:e(),key:e(),value:h()}),d(),{kind:"mutation"}),query:i(t({namespace:e().optional(),collection:e(),filter:ta.optional()}),r(aa).readonly()),insert:i(t({namespace:e().optional(),collection:e(),record:aa}),d(),{kind:"mutation"}),update:i(t({namespace:e().optional(),collection:e(),id:e(),data:v(e(),h())}),d(),{kind:"mutation"}),delete:i(t({namespace:e().optional(),collection:e(),key:e()}),d(),{kind:"mutation"}),count:i(t({namespace:e().optional(),collection:e(),filter:ta.optional()}),a()),isEmpty:i(t({namespace:e().optional(),collection:e()}),l()),declareCollection:i(t({namespace:e().optional(),collection:e(),columns:r(lo).readonly(),indexes:r(uo).readonly().optional()}),d(),{kind:"mutation"})}},Na=y(["debug","info","warn","error"]),na=t({timestamp:Fe(),level:Na,scope:r(e()),message:e(),meta:v(e(),h()).optional(),tags:v(e(),e()).optional()}),uc={name:"log-destination",scope:"system",mode:"collection",internal:!0,methods:{write:i(na,d(),{kind:"mutation"}),query:i(t({scope:r(e()).optional(),level:Na.optional(),since:Fe().optional(),until:Fe().optional(),limit:a().optional(),tags:v(e(),e()).optional()}),r(na).readonly())}},mc={name:"admin-ui",scope:"system",mode:"singleton",internal:!0,methods:{getStaticDir:i(d(),e()),getVersion:i(d(),e())}},ia=t({userId:e(),username:e(),isAdmin:l(),provider:e(),email:e().optional(),displayName:e().optional()}),pc={name:"sso-bridge",scope:"system",mode:"singleton",internal:!0,methods:{signBridgeToken:i(t({claims:ia,ttlSec:a().int().positive().optional()}),t({token:e()})),verifyBridgeToken:i(t({token:e()}),ia.nullable())}},mo=t({credentialId:e(),label:e(),createdAt:a(),lastUsedAt:a().nullable(),transports:r(e()).default([])}),gc={name:"user-passkeys",scope:"system",mode:"collection",internal:!0,methods:{beginRegistration:i(t({userId:e(),username:e()}),t({optionsJSON:v(e(),h())}),{kind:"mutation",auth:"admin",access:"create"}),finishRegistration:i(t({userId:e(),response:v(e(),h()),label:e()}),t({success:b(!0),credentialId:e()}),{kind:"mutation",auth:"admin",access:"create"}),beginAuthentication:i(t({userId:e().optional()}),t({optionsJSON:v(e(),h())}),{kind:"mutation",access:"view"}),finishAuthentication:i(t({userId:e(),response:v(e(),h())}),t({verified:l()}),{kind:"mutation",access:"view"}),listPasskeys:i(t({userId:e()}),r(mo),{auth:"admin"}),removePasskey:i(t({userId:e(),credentialId:e()}),t({success:b(!0)}),{kind:"mutation",auth:"admin",access:"delete"})}},$=e().email(),po=t({to:E([$,r($).min(1)]),cc:r($).optional(),bcc:r($).optional(),from:e().optional(),replyTo:e().optional(),subject:e(),text:e(),html:e().optional()}),go=t({messageId:e(),accepted:r($).default([]),rejected:r($).default([])}),oa=t({ready:l(),host:e(),error:e().optional(),lastVerifiedAt:a().optional()}),hc={name:"smtp-provider",scope:"system",mode:"collection",internal:!0,methods:{sendEmail:i(po,go,{kind:"mutation",auth:"admin",access:"create"}),verify:i(d(),oa,{kind:"mutation",auth:"admin",access:"view"}),getStatus:i(d(),oa,{auth:"admin"})}},pt=E([b(0),b(1),b(2)]),ho=t({topic:e(),payload:e(),qos:pt.default(0),retain:l().default(!1)}),vo=t({topic:e(),qos:pt.default(0),owner:e().optional()}),yo=t({success:b(!0),subscriptionId:e()}),So=t({subscriptionId:e()}),bo=t({connected:l(),brokerUrl:e(),subscriptionCount:a().int(),error:e().optional(),connectedAt:a().optional()}),fo=t({subscriptionId:e(),topic:e(),qos:pt,owner:e(),createdAt:a()}),vc={name:"mqtt-provider",scope:"system",mode:"collection",internal:!0,methods:{publish:i(ho,t({success:b(!0)}),{kind:"mutation",auth:"admin",access:"create"}),subscribe:i(vo,yo,{kind:"mutation",auth:"admin",access:"create"}),unsubscribe:i(So,t({success:b(!0)}),{kind:"mutation",auth:"admin",access:"delete"}),listSubscriptions:i(d(),r(fo),{auth:"admin"}),getStatus:i(d(),bo,{auth:"admin"})}},Io=t({domain:e(),service:e(),serviceData:v(e(),h()).optional(),target:v(e(),h()).optional()}),sa=t({entity_id:e(),state:e(),attributes:v(e(),h()).default({}),last_changed:e().optional(),last_updated:e().optional()}),ko=t({connected:l(),host:e(),subscriptionCount:a().int(),error:e().optional(),haVersion:e().optional(),connectedAt:a().optional()}),Co=t({eventType:e().optional(),owner:e().optional()}),Ao=t({success:b(!0),subscriptionId:e()}),Po=t({subscriptionId:e()}),wo=t({subscriptionId:e(),eventType:e(),owner:e(),createdAt:a()}),yc={name:"home-assistant",scope:"system",mode:"collection",internal:!0,methods:{subscribeEvents:i(Co,Ao,{kind:"mutation",auth:"admin",access:"create"}),unsubscribeEvents:i(Po,t({success:b(!0)}),{kind:"mutation",auth:"admin",access:"delete"}),callService:i(Io,t({result:h()}),{kind:"mutation",auth:"admin",access:"create"}),getStates:i(d(),r(sa).readonly(),{auth:"admin"}),getState:i(t({entityId:e()}),sa.nullable(),{auth:"admin"}),listSubscriptions:i(d(),r(wo).readonly(),{auth:"admin"}),getStatus:i(d(),ko,{auth:"admin"})}},Do=t({id:e(),label:e(),icon:e(),path:e(),remoteName:e(),bundle:e()}),Mo=t({addonId:e(),page:Do,bundleUrl:e()}),Sc={name:"addon-pages",scope:"system",mode:"singleton",methods:{listPages:i(d(),r(Mo).readonly())}},Eo=t({id:e(),label:e(),icon:e(),path:e(),remoteName:e(),bundle:e()}),bc={name:"addon-pages-source",scope:"system",mode:"collection",internal:!0,methods:{listPages:i(d(),r(Eo).readonly())}},qo=y(["device-tab","dashboard","integration-detail"]),ra=y(["xs","sm","md","lg","xl"]),Ua=t({stableId:e(),label:e(),description:e().optional(),icon:e().optional(),remoteName:e(),bundle:e(),hosts:r(qo).readonly(),requires:t({deviceContext:l().default(!1),integrationContext:l().default(!1)}),defaultSize:ra.default("md"),allowedSizes:r(ra).readonly().default(["sm","md","lg"]),defaultColumns:a().int().min(1).max(12).default(6),defaultRows:a().int().min(1).max(12).default(1)}),fc={name:"addon-widgets-source",scope:"system",mode:"collection",internal:!0,methods:{listWidgets:i(d(),r(Ua).readonly())}},To=Ua.extend({addonId:e(),bundleUrl:e()}),Ic={name:"addon-widgets",scope:"system",mode:"singleton",methods:{listWidgets:i(d(),r(To).readonly())}},Ro=t({method:y(["GET","POST","PUT","DELETE","PATCH"]),path:e(),access:y(["public","authenticated","admin"]).optional(),description:e().optional()}),Bo=t({method:e(),path:e(),params:v(e(),e()),query:v(e(),e()),body:h(),headers:v(e(),e()),user:t({id:e(),username:e(),isAdmin:l()}).optional(),scopedToken:h().optional()}),xo=t({status:a().int(),headers:v(e(),e()),redirectUrl:e().nullable(),body:h().optional(),contentType:e().optional()}),kc={name:"addon-routes",scope:"system",mode:"collection",internal:!0,methods:{getRoutes:i(d(),r(Ro)),invoke:i(Bo,xo,{kind:"mutation"})}},Cc=[{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)"}],Ac={hwaccel:"auto",probedBestHwaccel:""},Pc={name:"decoder",scope:"system",mode:"singleton",methods:{supportsCodec:i(t({codec:e()}),l()),getInfo:i(d(),t({id:e(),name:e(),isPullMode:l().optional(),priority:a().optional()})),createSession:i(Ft,t({sessionId:e(),nodeId:e()})),destroySession:i(t({sessionId:e()}),d()),pushPacket:i(t({sessionId:e(),packet:Rn}),d()),openStream:i(t({sessionId:e(),url:e()}),d()),pullFrames:i(t({sessionId:e(),maxCount:a().default(1)}),r(Bn)),updateConfig:i(t({sessionId:e(),config:Ft.partial()}),d()),getStats:i(t({sessionId:e()}),hn),listActiveSessions:i(d(),r(t({sessionId:e(),codec:e(),outputFormat:e(),createdAtMs:a()})).readonly()),reprobeHwaccel:i(d(),t({backend:e()}),{kind:"mutation",auth:"admin"})}},Lo=t({streamId:e(),label:e().optional(),codec:e(),type:y(["video","audio"]),sourceUrl:e()}),Oo=t({streamId:e(),format:e(),value:e()}),wc={name:"restreamer",scope:"system",mode:"collection",internal:!0,methods:{registerDevice:i(t({deviceId:a(),streams:r(Lo).readonly()}),d(),{kind:"mutation"}),unregisterDevice:i(t({deviceId:a()}),d(),{kind:"mutation"}),getExposedResources:i(t({deviceId:a()}),r(Oo).readonly())}},Fa=t({viewportWidth:a().int().positive().optional(),viewportHeight:a().int().positive().optional(),devicePixelRatio:a().positive().optional(),downlinkMbps:a().nonnegative().optional(),prefersTier:e().optional()}).partial(),Dc={name:"webrtc",scope:"system",mode:"collection",internal:!0,methods:{handleOffer:i(t({streamId:e(),sdpOffer:e()}),e(),{kind:"mutation"}),supportsStream:i(t({streamId:e()}),l()),registerStream:i(t({streamId:e(),codec:e()}),d(),{kind:"mutation"}),unregisterStream:i(t({streamId:e()}),d(),{kind:"mutation"}),createSession:i(t({streamId:e(),hints:Fa.optional()}),t({sessionId:e(),sdpOffer:e()}),{kind:"mutation"}),handleAnswer:i(t({sessionId:e(),sdpAnswer:e()}),d(),{kind:"mutation"}),closeSession:i(t({sessionId:e()}),d(),{kind:"mutation"}),hasAdaptiveBitrate:i(t({streamId:e()}),l())}},_a=Ra("kind",[t({kind:b("adaptive")}),t({kind:b("profile"),profile:H}),t({kind:b("cam-stream"),camStreamId:e().min(1)})]),zo=t({id:e(),label:e(),target:_a,codec:e().nullable(),resolution:t({width:a(),height:a()}).nullable(),status:y(["idle","connecting","streaming","error","stopped"]).nullable(),inputFps:a().nullable(),decodeFps:a().nullable(),bitrateKbps:a().nullable()}),Mc={name:"webrtc-session",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{listStreams:i(t({deviceId:a().int().nonnegative()}),r(zo)),createSession:i(t({deviceId:a().int().nonnegative(),target:_a,hints:Fa.optional()}),t({sessionId:e(),sdpOffer:e()}),{kind:"mutation"}),handleAnswer:i(t({deviceId:a().int().nonnegative(),sessionId:e(),sdpAnswer:e()}),d(),{kind:"mutation"}),closeSession:i(t({deviceId:a().int().nonnegative(),sessionId:e()}),d(),{kind:"mutation"}),hasAdaptiveBitrate:i(t({deviceId:a().int().nonnegative(),profile:H}),l())}},ve=t({engine:M,steps:r(Q).readonly(),audio:t({engine:M,modelId:e(),enabled:l(),settings:v(e(),h()).readonly().optional()}).nullable().optional()}),Te=t({id:e(),name:e(),description:e().optional(),config:ve,createdAt:e(),updatedAt:e()}),Ha=t({enabled:l(),modelId:e(),settings:v(e(),h()).readonly()}),da=t({addonDefaults:v(e(),Ha).readonly()}),Wa=t({steps:r(Q).readonly(),audio:t({modelId:e(),enabled:l()}).nullable()}),Je=t({enabled:l().optional(),modelId:e().optional(),settings:v(e(),h()).readonly().optional()}),No=t({pinnedAgentNodeId:e().optional(),stepToggles:v(e(),l()).optional(),stepOverridesByAgent:v(e(),v(e(),Je)).optional(),pipelineByAgent:v(e(),Wa).optional()}),ca=t({deviceId:a(),agentNodeId:e(),pinned:l(),reason:y(["manual","capacity","hardware-affinity","failover","rebalance"]),assignedAt:a()}),la=t({deviceId:a(),decoderNodeId:e(),pinned:l(),reason:y(["manual","co-located","capacity","hardware-affinity"])}),Uo=t({nodeId:e(),online:l(),load:La,score:a()}),Fo=t({totalAgents:a(),onlineAgents:a(),totalCameras:a(),attachedCameras:a(),activeCameras:a(),avgInferenceTimeMs:a(),queueDepth:a()}),_o=v(e(),e()),Ec={name:"pipeline-orchestrator",scope:"system",mode:"singleton",exposesDeviceSettings:!0,methods:{assignPipeline:i(t({deviceId:a(),agentNodeId:e()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),unassignPipeline:i(t({deviceId:a()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),rebalance:i(d(),t({migrated:a()}),{kind:"mutation",auth:"admin"}),getPipelineAssignments:i(d(),r(ca).readonly()),getPipelineAssignment:i(t({deviceId:a()}),ca.nullable()),getAgentLoad:i(d(),r(Uo).readonly()),getGlobalMetrics:i(d(),Fo),getCameraMetrics:i(t({deviceId:a()}),ut.nullable()),getCapabilityBindings:i(t({nodeId:e()}),_o),setCapabilityBinding:i(t({nodeId:e(),capName:e(),addonId:e()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),assignDecoder:i(t({deviceId:a(),nodeId:e()}),d(),{kind:"mutation",auth:"admin"}),unassignDecoder:i(t({deviceId:a()}),d(),{kind:"mutation",auth:"admin"}),getDecoderAssignments:i(d(),r(la).readonly()),assignAudio:i(t({deviceId:a(),nodeId:e()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),unassignAudio:i(t({deviceId:a()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),getAudioAssignment:i(t({deviceId:a()}),t({nodeId:e(),pinned:l(),assignedAt:a()}).nullable()),getAudioNodeLoad:i(d(),r(t({nodeId:e(),deviceCount:a()}))),getAudioAssignments:i(d(),r(t({deviceId:a(),nodeId:e(),pinned:l(),assignedAt:a()}))),getDecoderAssignment:i(t({deviceId:a(),pipelineNodeId:e().optional()}),la),getAgentSettings:i(t({agentNodeId:e()}),da.nullable()),listAgentSettings:i(d(),r(t({nodeId:e(),settings:da})).readonly()),setAgentAddonDefaults:i(t({agentNodeId:e(),defaults:v(e(),Ha)}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),removeAgentSettings:i(t({agentNodeId:e()}),t({success:l(),removed:l()}),{kind:"mutation",auth:"admin"}),getCameraSettings:i(t({deviceId:a()}),No.nullable()),setCameraStepToggle:i(t({deviceId:a(),addonId:e(),enabled:l().nullable()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),getCameraStepOverrides:i(t({deviceId:a()}),v(e(),v(e(),Je)).nullable()),setCameraStepOverride:i(t({deviceId:a(),agentNodeId:e(),addonId:e(),patch:Je.nullable()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),setCameraPipelineForAgent:i(t({deviceId:a(),agentNodeId:e(),pipeline:Wa.nullable()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),resolvePipeline:i(t({deviceId:a(),agentNodeId:e().optional()}),ve),listTemplates:i(d(),r(Te).readonly()),saveTemplate:i(t({name:e(),description:e().optional(),config:ve}),Te,{kind:"mutation",auth:"admin"}),updateTemplate:i(t({id:e(),name:e().optional(),description:e().optional(),config:ve.optional()}),Te,{kind:"mutation",auth:"admin"}),deleteTemplate:i(t({id:e()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"})}},Ho=t({level:Vn,classification:t({labels:r(je).readonly(),inferenceMs:a()}).optional(),timestamp:a()}),Wo=t({minConfidence:a().min(0).max(1).default(.3),allowedClasses:r(e()).default([])}),Go=t({labels:r(je).readonly(),rawLabels:r(je).readonly().optional(),inferenceMs:a()}),qc=[{value:"auto",label:"Auto (platform default)"},{value:"apple-soundanalysis",label:"Apple SoundAnalysis (macOS 12+)"},{value:"yamnet-onnx",label:"YAMNet ONNX (cross-platform)"}],Tc={audioBackend:"auto",probedBestAudioBackend:"",selectedAudioModel:""},Rc={name:"audio-analyzer",scope:"system",mode:"singleton",methods:{analyseChunk:i(t({chunk:jt,settings:Wo}),Ho.nullable(),{kind:"mutation"}),classify:i(jt,Go,{timeoutMs:3e4}),isReady:i(d(),l()),dispose:i(d(),d(),{kind:"mutation"}),reprobeAudioEngine:i(d(),t({backend:e()}),{kind:"mutation",auth:"admin"})}},Bc={name:"audio-analysis",scope:"device",mode:"singleton",deviceTypes:[C.Camera],exposesDeviceSettings:!0,methods:{resolveDeviceSettings:i(t({deviceId:a()}),R())},events:{onAudioLevel:V(t({deviceId:a(),rms:a(),dbfs:a()}))}},Ie=y(["f32le","s16le"]),Vo=t({codec:e(),canDecode:l(),canEncode:l(),label:e().optional()}),jo=t({codec:e(),sourceSampleRate:a().int().positive(),sourceChannels:a().int().positive(),extraData:w(Uint8Array).optional(),targetSampleRate:a().int().positive(),targetChannels:a().int().positive(),targetFormat:Ie.optional(),idleMs:a().int().positive().optional(),tag:e().optional()}),Ko=t({codec:e(),sourceSampleRate:a().int().positive(),sourceChannels:a().int().positive(),sourceFormat:Ie.optional(),targetSampleRate:a().int().positive(),targetChannels:a().int().positive(),bitrateKbps:a().int().positive().optional(),idleMs:a().int().positive().optional(),tag:e().optional()}),$o=t({data:w(Uint8Array),sampleRate:a().int().positive(),channels:a().int().positive(),format:Ie,pts:a()}),ua=t({data:w(Uint8Array),codec:e(),pts:a(),frameComplete:l()}),Zo=t({sessionId:e(),kind:y(["decode","encode"]),codec:e(),sourceSampleRate:a(),sourceChannels:a(),targetSampleRate:a(),targetChannels:a(),format:Ie,tag:e().optional(),createdAtMs:a(),lastActivityMs:a(),framesIn:a(),framesOut:a()}),xc={name:"audio-codec",scope:"system",mode:"singleton",methods:{listSupportedCodecs:i(d(),r(Vo).readonly()),canHandle:i(t({codec:e(),kind:y(["decode","encode"])}),l()),createDecodeSession:i(jo,t({sessionId:e(),nodeId:e()}),{kind:"mutation"}),createEncodeSession:i(Ko,t({sessionId:e(),nodeId:e()}),{kind:"mutation"}),closeSession:i(t({sessionId:e(),nodeId:e().optional()}),d(),{kind:"mutation"}),pushEncodedFrame:i(t({sessionId:e(),nodeId:e().optional(),data:w(Uint8Array),pts:a().optional()}),d(),{kind:"mutation"}),pullPcm:i(t({sessionId:e(),nodeId:e().optional(),maxCount:a().int().positive().default(8)}),r($o)),pushPcm:i(t({sessionId:e(),nodeId:e().optional(),data:w(Uint8Array),pts:a().optional()}),d(),{kind:"mutation"}),pullEncoded:i(t({sessionId:e(),nodeId:e().optional(),maxCount:a().int().positive().default(8)}),r(ua)),flushEncode:i(t({sessionId:e(),nodeId:e().optional()}),r(ua),{kind:"mutation"}),listActiveSessions:i(d(),r(Zo).readonly())}},ma=t({embedding:r(a()),dimensions:a()}),Qo=t({modelId:e(),dimensions:a(),inputSize:a()}),Lc={name:"embedding-encoder",scope:"system",mode:"collection",internal:!0,methods:{encode:i(t({crop:w(Uint8Array),width:a(),height:a()}),ma),encodeText:i(t({text:e()}),ma),getInfo:i(d(),Qo)}},Re=t({id:a(),stableId:e(),addonId:e(),type:y(C),name:e(),location:e().nullable(),disabled:l(),parentDeviceId:a().nullable(),role:e().nullable().optional(),online:l(),features:r(e()),isCamera:l(),config:v(e(),h()),metadata:v(e(),h()).nullable().optional()}),Yo=t({key:e(),value:h(),description:e().optional()}),Jo=t({id:a(),stableId:e(),type:e(),name:e(),location:e().nullable(),disabled:l(),parentDeviceId:a().nullable(),role:e().nullable().optional()}),Xo=t({id:a(),stableId:e(),addonId:e(),type:e(),name:e(),location:e().nullable(),disabled:l(),parentDeviceId:a().nullable(),metadata:v(e(),h()).nullable().optional()}),es=h().nullable(),ts=t({streamId:e(),width:a().optional(),height:a().optional(),codec:e().optional(),fps:a().optional(),bitrateKbps:a().optional()}),as=t({addonId:e(),stableId:e(),id:a(),type:e(),name:e(),location:e().nullable().optional(),disabled:l().optional(),parentDeviceId:a().nullable(),role:e().nullable().optional(),features:r(e()).optional(),config:v(e(),h())}),ns=t({deviceId:a()}),is=t({deviceId:a(),data:v(e(),h())}),Oc={name:"device-manager",scope:"system",mode:"singleton",methods:{allocateDeviceId:i(t({addonId:e(),stableId:e()}),t({id:a()}),{kind:"mutation"}),registerDevice:i(as,d(),{kind:"mutation"}),removeDevice:i(ns,d(),{kind:"mutation"}),persistConfig:i(is,d(),{kind:"mutation"}),loadConfig:i(t({deviceId:a()}),v(e(),h())),loadRuntimeState:i(t({deviceId:a()}),v(e(),h())),loadMeta:i(t({deviceId:a()}),Xo.nullable()),setName:i(t({deviceId:a(),name:e()}),d(),{kind:"mutation",auth:"admin"}),setLocation:i(t({deviceId:a(),location:e().nullable()}),d(),{kind:"mutation",auth:"admin"}),setMetadata:i(t({deviceId:a(),patch:v(e(),h())}),d(),{kind:"mutation",auth:"admin"}),listLocations:i(d(),r(e())),addLocation:i(t({name:e()}),d(),{kind:"mutation",auth:"admin"}),removeLocation:i(t({name:e(),cascade:l().optional()}),d(),{kind:"mutation",auth:"admin"}),setDisabled:i(t({deviceId:a(),disabled:l()}),d(),{kind:"mutation",auth:"admin"}),listPersistedByAddon:i(t({addonId:e()}),r(Jo)),listAll:i(t({addonId:e().optional()}),r(Re)),getDevice:i(t({deviceId:a()}),Re.nullable()),getChildren:i(t({parentDeviceId:a()}),r(Re)),getStreamSources:i(t({deviceId:a()}),r(Tn)),getConfigSchema:i(t({deviceId:a()}),r(Yo)),getSettingsSchema:i(t({deviceId:a()}),es),updateConfig:i(t({deviceId:a(),values:v(e(),h())}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),enable:i(t({deviceId:a()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),disable:i(t({deviceId:a()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),remove:i(t({deviceId:a()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),getStreamProfileMap:i(t({deviceId:a()}),v(e(),e().nullable())),setStreamProfileMap:i(t({deviceId:a(),profileMap:v(e(),e().nullable())}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),probeStreams:i(t({deviceId:a()}),r(ts),{kind:"mutation",auth:"admin"}),getBindings:i(t({deviceId:a()}),t({deviceId:a(),entries:r(t({capName:e(),kind:y(["native","wrapped"]),providerAddonId:e(),providerNodeId:e(),nativeAddonId:e()}))})),getAllBindings:i(t({}),r(t({deviceId:a(),entries:r(t({capName:e(),kind:y(["native","wrapped"]),providerAddonId:e(),providerNodeId:e(),nativeAddonId:e()}))}))),setWrapperActive:i(t({deviceId:a(),capName:e(),wrapperAddonId:e(),active:l()}),d(),{kind:"mutation",auth:"admin"}),listWrappersForCap:i(t({capName:e()}),r(e())),listBindableCapsForDeviceType:i(t({deviceType:e()}),r(t({capName:e(),wrappers:r(e())}))),getDeviceSettingsAggregate:i(t({deviceId:a()}),K.nullable()),getDeviceLiveInfoAggregate:i(t({deviceId:a()}),K.nullable()),getDeviceAggregate:i(t({deviceId:a()}),t({settings:K.nullable(),live:K.nullable()})),updateDeviceField:i(t({deviceId:a(),writerCapName:e(),writerAddonId:e(),key:e(),value:h()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),updateDeviceFieldsBatch:i(t({deviceId:a(),changes:r(t({writerCapName:e(),writerAddonId:e(),key:e(),value:h()}))}),t({success:b(!0),failures:r(t({writerCapName:e(),writerAddonId:e(),error:e()}))}),{kind:"mutation",auth:"admin"}),discoverDevices:i(t({addonId:e()}),r(be),{kind:"mutation",auth:"admin"}),adoptDevice:i(t({addonId:e(),candidate:be}),fe,{kind:"mutation",auth:"admin"}),getCreationSchema:i(t({addonId:e(),type:y(C)}),h().nullable()),createDevice:i(t({addonId:e(),type:y(C),config:v(e(),h())}),fe,{kind:"mutation",auth:"admin"}),testCreationField:i(t({addonId:e(),type:y(C),key:e(),value:h(),formValues:v(e(),h()).optional()}),Ye,{kind:"mutation",auth:"admin"}),testField:i(t({deviceId:a(),key:e(),value:h()}),Ye,{kind:"mutation",auth:"admin"}),getDeviceStatusAggregate:i(t({deviceId:a(),caps:r(e()).readonly().optional()}),v(e(),h().nullable()))}},zc={name:"device-state",scope:"system",mode:"singleton",methods:{getSnapshot:i(t({deviceId:a()}),v(e(),v(e(),h()))),getCapSlice:i(t({deviceId:a(),capName:e()}),v(e(),h()).nullable()),getAllSnapshots:i(t({}),v(e(),v(e(),v(e(),h())))),setCapSlice:i(t({deviceId:a(),capName:e(),slice:v(e(),h())}),d(),{kind:"mutation"})},events:{onChanged:V(t({deviceId:a(),capName:e(),slice:v(e(),h())}))}},Be=t({userId:e(),username:e(),email:e().optional(),displayName:e().optional(),isAdmin:l().default(!1)}),Nc={name:"auth-provider",scope:"system",mode:"collection",internal:!0,methods:{validateCredentials:i(t({username:e(),password:e()}),Be.nullable(),{kind:"mutation"}),getLoginUrl:i(t({state:e()}),e()),handleCallback:i(v(e(),e()),Be,{kind:"mutation"}),validateToken:i(t({token:e()}),Be.nullable())}},os=t({addonId:e(),instanceId:e().optional(),displayName:e(),icon:e().optional(),hasRedirectFlow:l(),hasCredentialFlow:l(),kind:e().optional(),status:e().optional(),enabled:l()}),Uc={name:"authentication",scope:"system",mode:"singleton",methods:{listProviders:i(d(),r(os).readonly()),setProviderEnabled:i(t({addonId:e(),enabled:l()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"})}},Xe=t({url:e(),hostname:e(),port:a(),protocol:y(["http","https"])}),ss=t({connected:l(),endpoint:Xe.nullable(),error:e().optional()}),Fc={name:"network-access",scope:"system",mode:"collection",internal:!0,methods:{start:i(d(),Xe,{kind:"mutation"}),stop:i(d(),d(),{kind:"mutation"}),getEndpoint:i(d(),Xe.nullable()),getStatus:i(d(),ss)}},Ga=t({url:e(),hostname:e(),port:a(),protocol:y(["http","https"])}),rs=t({addonId:e(),displayName:e(),enabled:l(),connected:l(),endpoint:Ga.nullable(),error:e().optional()}),_c={name:"remote-access",scope:"system",mode:"singleton",methods:{listProviders:i(d(),r(rs).readonly()),startProvider:i(t({addonId:e()}),Ga,{kind:"mutation",auth:"admin"}),stopProvider:i(t({addonId:e()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"})}},Va=t({urls:E([e(),r(e())]),username:e().optional(),credential:e().optional()}),Hc={name:"turn-provider",scope:"system",mode:"collection",methods:{getTurnServers:i(d(),r(Va).readonly())}},ds=t({addonId:e(),displayName:e(),enabled:l(),serverCount:a(),urls:r(e()).readonly(),error:e().optional()}),Wc={name:"turn-orchestrator",scope:"system",mode:"singleton",methods:{listProviders:i(d(),r(ds).readonly()),getAllServers:i(d(),r(Va).readonly()),setProviderEnabled:i(t({addonId:e(),enabled:l()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"})}},ja=t({base64:e(),contentType:e()}),cs=t({lastCapturedAt:a().nullable(),cacheAgeMs:a().nullable(),lastBytes:a().nullable(),lastStreamId:e().nullable()}),Gc={name:"snapshot",scope:"device",mode:"singleton",deviceTypes:[C.Camera],exposesDeviceSettings:!0,methods:{getSnapshot:i(t({deviceId:a(),streamId:e().optional(),force:l().optional()}),ja.nullable()),invalidateCache:i(t({deviceId:a()}),d(),{kind:"mutation",auth:"admin"})},status:{schema:cs,kind:"poll"}},Vc={name:"snapshot-provider",scope:"system",mode:"collection",methods:{supportsDevice:i(t({deviceId:a()}),l()),getSnapshot:i(t({deviceId:a(),streamId:e().optional()}),ja.nullable())}},ls=t({title:e(),body:e(),imageUrl:e().optional(),deviceId:a().optional(),eventId:e().optional(),priority:y(["low","normal","high","critical"]).default("normal"),metadata:v(e(),h()).optional()}),jc={name:"notification-output",scope:"system",mode:"collection",methods:{send:i(ls,d(),{kind:"mutation"}),sendTest:i(d(),t({success:l(),error:e().optional()}),{kind:"mutation"})}},pa=t({id:e(),name:e(),enabled:l(),conditions:v(e(),h()),actions:r(v(e(),h()))}),us=t({id:e(),ruleId:e(),timestamp:a(),deviceId:a().optional(),success:l(),error:e().optional()}),Kc={name:"advanced-notifier",scope:"system",mode:"singleton",internal:!0,methods:{getRules:i(d(),r(pa).readonly()),upsertRule:i(pa,d(),{kind:"mutation"}),deleteRule:i(t({ruleId:e()}),d(),{kind:"mutation"}),testRule:i(t({ruleId:e(),lookbackMinutes:a()}),r(v(e(),h())),{kind:"mutation"}),getHistory:i(t({ruleId:e().optional(),limit:a().optional()}),r(us))}},Ka=y(["continuous","motion","scheduled","composite"]),ms=t({streamId:e(),mode:y(["always","inherit"])}),ps=t({days:r(a()).readonly(),startTime:e(),endTime:e(),mode:y(["continuous","motion"])}),se=t({deviceId:a(),mode:Ka,streams:r(ms).readonly(),enabled:l(),preBufferSec:a(),postBufferSec:a(),scheduleRules:r(ps).readonly().optional()}),$a=y(["recording:main","recording:mid","recording:sub","thumbnail:scrub","thumbnail:event"]),et=t({deviceId:a(),dataCategory:$a,storageName:e(),subDirectory:e(),retentionDays:a().nullable(),retentionGb:a().nullable()}),gs=t({id:e(),deviceId:a(),streamId:e(),startTime:a(),endTime:a(),duration:a(),path:e(),storageName:e(),subDirectory:e(),sizeBytes:a(),codec:y(["h264","h265"]),hasAudio:l()}),hs=t({deviceId:a(),timestamp:a(),path:e(),storageName:e(),subDirectory:e(),sizeBytes:a(),category:y(["scrub","event"])}),vs=t({startTime:a(),endTime:a(),streams:r(e()).readonly()}),ys=t({totalBytes:a(),segmentCount:a()}),Ss=t({bitrateKbps:a(),retentionDays:a().nullable(),retentionGb:a().nullable(),estimatedGb:a(),estimatedDaysAtCapacity:a().nullable()}),ga=t({perStream:v(e(),Ss),thumbnails:t({estimatedGb:a()}),totalEstimatedGb:a(),motionEstimate:t({avgEventsPerDay:a(),avgDurationSec:a(),dutyCyclePercent:a()}).optional()}),bs=t({totalEvents:a(),avgDurationSec:a(),avgEventsPerDay:a(),dutyCyclePercent:a()}),ue=t({deviceId:a()}),fs=t({deviceId:a(),policy:se.omit({deviceId:!0}),storageOverrides:r(et.omit({deviceId:!0})).readonly().optional(),ffmpegOverrides:v(e(),h()).optional()}),ha=t({deviceId:a(),startTime:a(),endTime:a()}),Is=t({deviceId:a(),streamId:e(),startTime:a(),endTime:a()}),ks=t({deviceId:a(),streamId:e(),startTime:a(),endTime:a(),live:l().optional()}),Cs=t({deviceId:a(),timestamp:a(),category:e().optional()}),As=t({deviceId:a(),streamId:e()}),Ps=t({deviceId:a(),motionInput:t({avgEventsPerDay:a(),avgDurationSec:a()}).optional()}),ws=t({deviceId:a(),dataCategory:$a}),Ds=t({deviceId:a(),policy:se.omit({deviceId:!0})}),Ms=t({deviceId:a(),policy:se.omit({deviceId:!0}),ffmpegOverrides:v(e(),h()).optional()}),$c={name:"recording-engine",scope:"system",mode:"singleton",methods:{getStatus:i(d(),t({activeRecordings:a(),totalSegments:a(),totalSizeMB:a()})),enable:i(fs,d(),{kind:"mutation",auth:"admin"}),disable:i(ue,d(),{kind:"mutation",auth:"admin"}),getConfig:i(ue,se.nullable()),updateConfig:i(Ms,d(),{kind:"mutation",auth:"admin"}),getPlaylist:i(ks,e()),getThumbnail:i(Cs,hs.nullable()),getSegments:i(Is,r(gs).readonly()),getAvailability:i(ha,r(vs).readonly()),estimateStorage:i(Ps,ga),estimateGlobalStorage:i(d(),ga),getStorageUsage:i(As,ys),setPolicy:i(Ds,d(),{kind:"mutation",auth:"admin"}),getPolicy:i(ue,se.nullable()),getPolicyStatus:i(ue,t({deviceId:a(),enabled:l(),mode:Ka,activeStreams:a()}).nullable()),getRetentionConfig:i(ws,et.nullable()),updateRetentionConfig:i(et,d(),{kind:"mutation",auth:"admin"}),getMotionStats:i(ha,bs)}},Zc={name:"detection-pipeline",scope:"device",mode:"singleton",deviceTypes:[C.Camera],exposesDeviceSettings:!0,methods:{}},gt=y(["new","entered","left","moving","idle"]),Es=y(["motion","object","audio"]),Za=t({x:a(),y:a(),timestamp:a(),bbox:Y}),qs=t({timestamp:a(),position:Za,mediaKey:e()}),xe=t({trackId:e(),deviceId:a(),className:e(),label:e().optional(),firstSeen:a(),lastSeen:a(),positions:r(Za).readonly(),snapshots:r(qs).readonly(),zonesVisited:r(e()).readonly(),totalDistance:a(),state:gt,active:l()}),ht={id:e(),deviceId:a(),timestamp:a()},Ts=t({...ht,kind:b("motion"),regionCount:a(),regions:r(t({bbox:Y,pixelCount:a(),intensity:a()})).readonly(),frameWidth:a(),frameHeight:a()}),Rs=t({...ht,kind:b("object"),trackId:e(),className:e(),label:e().optional(),confidence:a(),bbox:Y,zones:r(e()).readonly(),state:gt,mediaKey:e().optional()}),Bs=t({...ht,kind:b("audio"),rms:a(),dbfs:a(),classification:t({className:e(),originalClass:e().optional(),score:a()}).optional()}),va=t({key:e(),kind:y(["crop","thumbnail","snapshot"]),base64:e(),sizeBytes:a(),timestamp:a()}),xs=1e3,Ls=5e3,tt=t({deviceId:a(),since:a().optional(),until:a().optional(),limit:a().int().min(1).max(Ls).default(xs)}),Os=tt.extend({classFilter:e().optional()}),zs=t({trackId:e(),className:e(),confidence:a(),bbox:Y,zones:r(e()).readonly(),state:gt}),Qc={name:"pipeline-analytics",scope:"device",mode:"singleton",deviceTypes:[C.Camera],exposesDeviceSettings:!0,methods:{getActiveTracks:i(t({deviceId:a()}),r(xe).readonly()),getTrack:i(t({deviceId:a(),trackId:e()}),xe.nullable()),listTracks:i(t({deviceId:a(),since:a().optional(),until:a().optional(),limit:a().optional()}),r(xe).readonly()),clearTracks:i(t({deviceId:a()}),d(),{kind:"mutation",auth:"admin"}),getMotionEvents:i(tt,r(Ts).readonly()),getObjectEvents:i(Os,r(Rs).readonly()),getAudioEvents:i(tt,r(Bs).readonly()),getEventMedia:i(t({eventId:e()}),r(va).readonly()),getTrackMedia:i(t({trackId:e()}),r(va).readonly())},events:{onFrameTracked:{data:t({deviceId:a(),timestamp:a(),frameWidth:a(),frameHeight:a(),detections:r(zs).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:Es,eventId:e(),timestamp:a()})}}},Ns=t({total:a(),user:a(),system:a(),irq:a(),nice:a(),loadAvg:Ta([a(),a(),a()]),cores:a()}),Us=t({percent:a(),totalBytes:a(),usedBytes:a(),availableBytes:a(),swapUsedBytes:a(),swapTotalBytes:a()}),Fs=t({readBytes:a(),writeBytes:a(),readOps:a(),writeOps:a(),timestampMs:a()}),_s=t({rxBytes:a(),txBytes:a(),rxPackets:a(),txPackets:a(),rxErrors:a(),txErrors:a(),timestampMs:a()}),Qa=t({utilization:a(),model:e(),memoryUsedBytes:a(),memoryTotalBytes:a(),temperature:a().nullable()}),Hs=t({openFds:a(),threadCount:a(),activeHandles:a(),activeRequests:a()}),ya=t({avg10:a(),avg60:a(),avg300:a()}),Le=t({some:ya,full:ya.nullable()}),Sa=t({cpu:Ns,memory:Us,gpu:Qa.nullable(),network:_s,disk:Fs,pressure:t({cpu:Le.nullable(),memory:Le.nullable(),io:Le.nullable()}),process:Hs,cpuTemperature:a().nullable(),timestampMs:a()}),Ws=t({path:e(),totalBytes:a(),usedBytes:a(),availableBytes:a(),percent:a()}),ba=t({pid:a(),cpu:a(),memory:a()}),Gs=t({addonId:e(),nodeId:e(),role:y(["hub","worker"]),pid:a(),state:y(["starting","running","stopping","stopped","crashed"]),uptimeSec:a()}),Vs=t({pid:a(),ppid:a(),pgid:a(),classification:y(["root","managed","system","ghost"]),addonId:e().nullable(),nodeId:e().nullable(),command:e(),cpuPercent:a(),memoryRssBytes:a(),uptimeSec:a(),orphaned:l()}),js=t({pid:a(),force:l().optional()}),Ks=t({success:l(),reason:e().optional(),signal:y(["SIGTERM","SIGKILL"]).optional()}),$s=t({cpuPercent:a(),memoryPercent:a(),memoryUsedMB:a(),memoryTotalMB:a(),diskPercent:a().optional(),temperature:a().optional(),gpuPercent:a().optional(),gpuMemoryPercent:a().optional()}),Yc={name:"metrics-provider",scope:"system",mode:"singleton",methods:{collectSnapshot:i(d(),Sa),getCached:i(d(),Sa.nullable()),getCurrent:i(d(),$s),getDiskSpace:i(t({dirPath:e()}),Ws),getGpuInfo:i(d(),Qa.nullable()),getCpuTemperature:i(d(),a().nullable()),getProcessStats:i(t({pids:r(a())}),r(ba)),listAddonInstances:i(d(),r(Gs).readonly()),getAddonStats:i(t({addonId:e()}),ba.nullable()),listNodeProcesses:i(d(),r(Vs).readonly()),killProcess:i(js,Ks,{kind:"mutation",auth:"admin"})}},Zs=t({id:e(),name:e()}),fa=t({pan:a(),tilt:a(),zoom:a()}),Ia=t({pan:a().optional(),tilt:a().optional(),zoom:a().optional(),speed:a().optional()}),Jc={name:"ptz",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{move:i(Ia.extend({deviceId:a()}),d(),{kind:"mutation"}),continuousMove:i(Ia.extend({deviceId:a()}),d(),{kind:"mutation"}),stop:i(t({deviceId:a()}),d(),{kind:"mutation"}),getPresets:i(t({deviceId:a()}),r(Zs)),goToPreset:i(t({deviceId:a(),presetId:e()}),d(),{kind:"mutation"}),goHome:i(t({deviceId:a()}),d(),{kind:"mutation"}),getPosition:i(t({deviceId:a()}),fa)},status:{schema:fa,kind:"command-driven"}},Qs=t({id:e(),type:e(),timestamp:a(),label:e().optional(),thumbnailUrl:e().optional(),clipUrl:e().optional(),metadata:v(e(),h()).optional()}),Xc={name:"events",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getEvents:i(t({deviceId:a(),from:a().optional(),to:a().optional(),limit:a().optional()}),r(Qs)),getEventThumbnail:i(t({deviceId:a(),eventId:e()}),t({base64:e(),contentType:e()}).nullable()),getEventClipUrl:i(t({deviceId:a(),eventId:e()}),e().nullable())}},Ys=t({id:e(),startTs:a(),endTs:a(),durationSec:a(),sizeBytes:a().optional()}),el={name:"recording",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getSegments:i(t({deviceId:a(),from:a().optional(),to:a().optional()}),r(Ys)),getPlaybackUrl:i(t({deviceId:a(),segmentId:e()}),e().nullable()),getThumbnailAt:i(t({deviceId:a(),timestamp:a()}),t({base64:e(),contentType:e()}).nullable())}},Js=t({id:e(),label:e(),protocol:y(["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:y(["high","mid","low"]).optional(),sdp:e().optional()}),Xs=t({key:e(),value:h()}),tl={name:"device-ops",scope:"device",mode:"singleton",methods:{getStreamSources:i(t({deviceId:a()}),r(Js)),getConfigEntries:i(t({deviceId:a()}),r(Xs)),setConfig:i(t({deviceId:a(),values:v(e(),h())}),d(),{kind:"mutation"}),removeDevice:i(t({deviceId:a()}),d(),{kind:"mutation"}),getSettingsSchema:i(t({deviceId:a()}),h().nullable())}},er=t({host:e(),port:a().int().positive().optional(),onvifPort:a().int().positive().optional(),rtspPort:a().int().positive().optional(),https:l().optional(),username:e().optional(),password:e().optional(),onvifProfile:e().optional()}),tr=t({host:e(),port:a().int().positive().nullable(),onvifPort:a().int().positive().nullable(),rtspPort:a().int().positive().nullable(),https:l().nullable(),hasUsername:l(),hasPassword:l(),onvifProfile:e().nullable()}),al={name:"camera-credentials",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{getCredentials:i(t({deviceId:a()}),er.nullable(),{kind:"query",auth:"admin"})},status:{schema:tr,kind:"command-driven"}},nl={name:"reboot",scope:"device",mode:"singleton",deviceTypes:[C.Camera,C.Sensor,C.Switch],methods:{reboot:i(t({deviceId:a().int().nonnegative()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"})}},ar=y(["text","timestamp","watermark"]),at=y(["top-left","top-center","top-right","bottom-left","bottom-center","bottom-right","custom"]),nr=t({id:e(),kind:ar,enabled:l(),text:e().optional(),position:at.optional(),availablePositions:r(at).readonly(),readOnly:l().optional()}),ka=t({overlays:r(nr).readonly()}),ir=t({enabled:l().optional(),text:e().optional(),position:at.optional()}).partial(),il={name:"osd",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{setOverlay:i(t({deviceId:a(),overlayId:e(),patch:ir}),d(),{kind:"mutation",auth:"admin"})},events:{onStatusChanged:{data:t({deviceId:a(),status:ka})}},status:{schema:ka,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:m=>`${String(m.id)} enabled`,kind:"boolean"},text:{label:m=>`${String(m.id)} text`,kind:"text",when:m=>m.kind!=="timestamp"&&!m.readOnly},position:{label:m=>`${String(m.id)} position`,kind:"select",options:m=>m.availablePositions??[],when:m=>Array.isArray(m.availablePositions)&&m.availablePositions.length>0}}}]}},or=t({childDeviceIds:r(a()).readonly()}),ol={name:"accessories",scope:"device",mode:"singleton",deviceTypes:[C.Camera,C.Hub],methods:{},events:{onAccessoriesChanged:{data:t({deviceId:a(),childDeviceIds:r(a()).readonly()})}},status:{schema:or,kind:"command-driven"}},sr=t({codecs:r(e()),sampleRate:a(),duplex:y(["half","full"]),maxBacklogMs:a()}),Ca=t({talking:l(),lastSessionAt:a().nullable(),ability:sr.nullable()}),sl={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()}),d(),{kind:"mutation",auth:"admin"}),stopSession:i(t({deviceId:a(),sessionId:e()}),d(),{kind:"mutation",auth:"admin"})},events:{onStatusChanged:{data:t({deviceId:a(),status:Ca})}},status:{schema:Ca,kind:"command-driven"}},nt=y(["person","vehicle","animal","face","package","other"]),Ya=t({class:nt,timestamp:a(),confidence:a().min(0).max(1).optional()}),rr=t({lastByClass:v(nt,Ya.nullable()),supportedClasses:r(nt).readonly()}),rl={name:"native-object-detection",scope:"device",mode:"singleton",deviceTypes:[C.Camera],methods:{},events:{onDetected:{data:t({deviceId:a(),detection:Ya})}},status:{schema:rr,kind:"push"}},dr=y(un),cr=y(["videotoolbox","cuda","nvdec","vaapi","qsv","d3d11va","dxva2","amf","vdpau","drm","coreml","tensorrt","openvino","directml","webgpu","none"]).nullable().optional(),lr=t({preferred:r(e()).readonly()}),ur=y(["darwin","linux","win32"]),mr=y(["arm64","x64"]),pr=t({type:y(["nvidia","amd","intel","apple"]),name:e(),memoryMB:a().optional()}),gr=t({type:y(["apple-ane","intel-npu"])}),Ja=t({platform:ur,arch:mr,cpuModel:e(),cpuCores:a(),totalRAM_MB:a(),availableRAM_MB:a(),gpu:pr.nullable(),npu:gr.nullable()}),Aa=t({runtime:y(["node","python"]),backend:e(),format:y(["onnx","coreml","openvino"]),score:a(),reason:e(),available:l()}),hr=t({hardware:Ja,scores:r(Aa).readonly(),bestScore:Aa,pythonPath:e().nullable()}),vr=t({modelId:e(),name:e(),minRAM_MB:a(),accuracyScore:a(),formats:r(e()).readonly()}),yr=t({modelId:e(),runtime:y(["node","python"]),backend:e(),format:dr,reason:e()}),dl={name:"platform-probe",scope:"system",mode:"singleton",methods:{getCapabilities:i(d(),hr),getHardware:i(d(),Ja),resolveInferenceConfig:i(t({requirements:r(vr).readonly()}),yr),resolveHwAccel:i(t({prefer:cr,nodeId:e().optional()}),lr)}},Sr=y(["lan","wifi","docker","vpn","loopback","other"]),Xa=t({name:e(),family:y(["IPv4","IPv6"]),address:e(),cidr:e(),netmask:e(),internal:l(),mac:e(),kind:Sr,preferred:l(),plausible:l(),plausibleReason:e()}),br=t({interfaces:r(Xa).readonly(),probedAt:a()}),fr=Xa.nullable(),Ir=t({label:e(),baseUrl:e(),kind:y(["lan-ipv4","lan-ipv6","public","loopback"]),interfaceKind:y(["lan","wifi","docker","vpn","other","loopback","public"]),plausible:l(),plausibleReason:e(),priority:a()}),kr=t({endpoints:r(Ir).readonly()}),Oe=t({addresses:r(e()).readonly()}),cl={name:"local-network",scope:"system",mode:"singleton",methods:{list:i(d(),br),getPreferred:i(d(),fr),getConnectionEndpoints:i(t({port:a().int().min(1).max(65535),includeLoopback:l().optional(),ipv4Only:l().optional(),scheme:y(["http","https"]).optional()}),kr),getAllowedAddresses:i(d(),Oe),setAllowedAddresses:i(Oe,t({success:b(!0)}),{kind:"mutation"}),resetAllowlistToBestMatch:i(d(),Oe,{kind:"mutation"})}},Cr=t({id:e(),label:e(),scope:y(["mesh","public"]),url:e(),hostname:e(),port:a(),protocol:y(["http","https"])}),Ar=t({id:e(),hostname:e(),addresses:r(e()).readonly(),os:e().optional(),online:l(),lastSeenMs:a(),isSelf:l()}),Pr=t({joined:l(),meshIp:e(),magicDnsHostname:e(),peerCount:a(),endpoints:r(Cr).readonly(),error:e().optional()}),wr=t({enabled:l(),port:a().int().min(1).max(65535).optional()}),Dr=t({enabled:l(),port:a().int().min(1).max(65535).optional()}),ll={name:"mesh-network",scope:"system",mode:"collection",methods:{getStatus:i(d(),Pr),join:i(t({authKey:e().min(8),hostname:e().optional()}),t({joined:b(!0)}),{kind:"mutation"}),leave:i(d(),t({left:b(!0)}),{kind:"mutation"}),listPeers:i(d(),t({peers:r(Ar).readonly()})),setPublicIngress:i(wr,t({success:b(!0)}),{kind:"mutation"}),setMeshIngress:i(Dr,t({success:b(!0)}),{kind:"mutation"}),testConnection:i(t({authKey:e().optional()}),t({ok:l(),tenant:e().optional(),daemonVersion:e().optional(),error:e().optional()}),{kind:"mutation"})}},Mr=t({id:e(),label:e(),scope:y(["mesh","public"]),url:e(),hostname:e(),port:a(),protocol:y(["http","https"])}),Er=t({addonId:e(),displayName:e(),joined:l(),meshIp:e(),magicDnsHostname:e(),peerCount:a(),endpoints:r(Mr).readonly(),error:e().optional()}),ul={name:"mesh-orchestrator",scope:"system",mode:"singleton",methods:{listProviders:i(d(),r(Er).readonly()),joinProvider:i(t({addonId:e(),authKey:e().min(8),hostname:e().optional()}),t({joined:b(!0)}),{kind:"mutation"}),leaveProvider:i(t({addonId:e()}),t({success:b(!0)}),{kind:"mutation"})}},me=y(["view","create","delete"]),en=E([b("*"),r(e())]),tn=v(e(),E([b("*"),r(e())])),qr=y(["device","system"]),F=Ra("type",[t({type:b("category"),target:qr,access:r(me).min(1)}),t({type:b("capability"),target:e(),access:r(me).min(1)}),t({type:b("addon"),target:e(),access:r(me).min(1)}),t({type:b("device"),targets:r(e()).min(1),access:r(me).min(1)})]),ml=t({id:e(),username:e(),passwordHash:e(),isAdmin:l().default(!1),allowedProviders:en,allowedDevices:tn,scopes:r(F).default([]),createdAt:a(),updatedAt:a()}),pl=t({id:e(),label:e(),isAdmin:l().default(!1),allowedProviders:en,allowedDevices:tn,tokenHash:e(),tokenPrefix:e(),createdAt:a(),lastUsedAt:a().optional()}),gl=t({id:e(),userId:e(),name:e(),tokenHash:e(),tokenPrefix:e(),scopes:r(F),expiresAt:a().nullish(),lastUsedAt:a().nullish(),createdAt:a()}),ze=t({id:e(),username:e(),isAdmin:l().default(!1),allowedProviders:E([r(e()),b("*")]),allowedDevices:v(e(),E([r(e()),b("*")])),scopes:r(F).default([]),createdAt:a(),updatedAt:a()}),Tr=t({username:e(),password:e().min(6),isAdmin:l().default(!1),allowedProviders:E([r(e()),b("*")]).optional(),allowedDevices:v(e(),E([r(e()),b("*")])).optional(),scopes:r(F).optional()}),Rr=t({id:e(),isAdmin:l().optional(),allowedProviders:E([r(e()),b("*")]).optional(),allowedDevices:v(e(),E([r(e()),b("*")])).optional(),scopes:r(F).optional()}),it=t({id:e(),label:e(),isAdmin:l().default(!1),allowedProviders:E([r(e()),b("*")]).optional(),allowedDevices:v(e(),E([r(e()),b("*")])).optional(),tokenPrefix:e(),createdAt:a(),lastUsedAt:a().optional()}),Br=t({label:e(),isAdmin:l().default(!1),allowedProviders:E([r(e()),b("*")]).optional(),allowedDevices:v(e(),E([r(e()),b("*")])).optional()}),xr=t({token:e(),record:it}),ot=t({id:e(),userId:e(),name:e(),tokenPrefix:e(),scopes:r(F),expiresAt:a().nullish(),lastUsedAt:a().nullish(),createdAt:a()}),Lr=t({userId:e(),name:e(),scopes:r(F),expiresAt:a().optional()}),Or=t({token:e(),record:ot}),zr=t({secret:e(),otpauthUrl:e()}),Nr=t({enabled:l(),confirmedAt:a().nullable()}),hl={name:"user-management",scope:"system",mode:"singleton",methods:{listUsers:i(d(),r(ze),{auth:"admin"}),createUser:i(Tr,ze,{kind:"mutation",auth:"admin",access:"create"}),updateUser:i(Rr,t({success:b(!0)}),{kind:"mutation",auth:"admin",access:"create"}),deleteUser:i(t({id:e()}),t({success:b(!0)}),{kind:"mutation",auth:"admin",access:"delete"}),resetPassword:i(t({id:e(),newPassword:e().min(6)}),t({success:b(!0)}),{kind:"mutation",auth:"admin",access:"create"}),setUserScopes:i(t({userId:e(),scopes:r(F)}),t({success:b(!0)}),{kind:"mutation",auth:"admin",access:"create"}),validateCredentials:i(t({username:e(),password:e()}),ze.extend({passwordHash:e()}).nullable(),{kind:"mutation",access:"view"}),listApiKeys:i(d(),r(it),{auth:"admin"}),createApiKey:i(Br,xr,{kind:"mutation",auth:"admin",access:"create"}),revokeApiKey:i(t({id:e()}),t({success:b(!0)}),{kind:"mutation",auth:"admin",access:"delete"}),validateApiKey:i(t({token:e()}),it.nullable(),{kind:"mutation",access:"view"}),createScopedToken:i(Lr,Or,{kind:"mutation",auth:"admin",access:"create"}),revokeScopedToken:i(t({id:e()}),t({success:b(!0)}),{kind:"mutation",auth:"admin",access:"delete"}),validateScopedToken:i(t({token:e()}),ot.nullable(),{access:"view"}),listScopedTokens:i(t({userId:e()}),r(ot),{auth:"admin"}),setupTotp:i(t({userId:e()}),zr,{kind:"mutation",auth:"admin",access:"create"}),confirmTotp:i(t({userId:e(),code:e()}),t({success:b(!0)}),{kind:"mutation",auth:"admin",access:"create"}),disableTotp:i(t({userId:e()}),t({success:b(!0)}),{kind:"mutation",auth:"admin",access:"delete"}),getTotpStatus:i(t({userId:e()}),Nr,{auth:"admin"}),verifyTotp:i(t({userId:e(),code:e()}),t({valid:l()}),{kind:"mutation",access:"view"})}},Pa=t({streaming:l(),notifications:l(),objectDetection:l(),remoteAccess:l(),agentCluster:l(),smartHome:l(),recordings:l(),backup:l(),repl:l()}),Ur=t({status:b("ok"),uptime:a()}),Fr=t({name:e(),address:e(),family:e(),internal:l()}),vl={name:"system",scope:"system",mode:"singleton",methods:{info:i(d(),Pa),health:i(d(),Ur),featureFlags:i(d(),Pa),networkAddresses:i(d(),r(Fr).readonly()),getRetentionConfig:i(d(),h().nullable(),{auth:"admin"}),setRetentionConfig:i(v(e(),h()),ln(),{kind:"mutation",auth:"admin"}),forceRetentionCleanup:i(d(),d(),{kind:"mutation",auth:"admin"})}},_r=t({nominalBitrateKbps:a(),observedBitrateKbps:a(),peakBitrateKbps:a(),packetLossPercent:a(),lastUpdated:a()}),Hr=t({rttMs:a(),jitterMs:a(),estimatedBandwidthKbps:a(),lastUpdated:a()}),wa=t({deviceId:a(),streams:v(e(),_r),client:Hr.optional()}),yl={name:"network-quality",scope:"system",mode:"singleton",methods:{getDeviceStats:i(t({deviceId:a()}),wa.nullable()),getAllStats:i(d(),r(wa).readonly()),reportClientStats:i(t({deviceId:a(),rttMs:a().min(0).max(6e4),jitterMs:a().min(0).max(1e4),estimatedBandwidthKbps:a().min(0).max(1e6)}),d(),{kind:"mutation"})}},Wr=t({title:e(),message:e(),severity:y(["info","warning","critical"]),duration:a().optional(),action:t({label:e(),url:e()}).optional()}),Sl={name:"toast",scope:"system",mode:"singleton",methods:{onToast:i(d(),Wr,{kind:"subscription"})}},Gr=t({addonId:e(),capabilities:r(e()).readonly(),status:e()}),Vr=t({pid:a(),name:e(),state:e(),cpuPercent:a(),memoryRss:a(),uptimeSeconds:a(),services:r(Gr).readonly(),groupId:e().optional()}),jr=t({id:e(),name:e(),hostname:e(),platform:e(),arch:e(),cpuModel:e().nullable(),cpuCores:a(),memoryMB:a(),engines:r(e()).readonly(),isHub:l(),isOnline:l(),cpuPercent:a(),memoryPercent:a(),uptime:a(),lastSeen:e(),localIps:r(e()).readonly(),addons:r(t({id:e(),capabilities:r(e()).readonly(),status:e()})).readonly(),processes:r(Vr).readonly()}),Kr=t({nodeId:e(),name:e(),version:e(),status:e(),synced:l()}),$r=t({hubVersion:e(),nodes:r(Kr)}),Ne=t({nodeId:e(),addonId:e()}),ae=t({success:l()}),Zr=t({success:l(),reason:e().optional()}),Qr=t({restarted:r(e()).readonly(),failed:r(e()).readonly()}),Yr=t({nodeId:e(),name:e()}),bl={name:"nodes",scope:"system",mode:"singleton",methods:{topology:i(d(),r(jr).readonly(),{auth:"admin"}),deployAddon:i(Ne,ae,{kind:"mutation",auth:"admin"}),undeployAddon:i(Ne,ae,{kind:"mutation",auth:"admin"}),restartAddon:i(Ne,ae,{kind:"mutation",auth:"admin"}),restartProcess:i(t({nodeId:e(),processName:e()}),Zr,{kind:"mutation",auth:"admin"}),restartNode:i(t({nodeId:e()}),Qr,{kind:"mutation",auth:"admin"}),shutdownNode:i(t({nodeId:e()}),ae,{kind:"mutation",auth:"admin"}),renameNode:i(t({nodeId:e(),name:e().min(1).max(64)}),Yr,{kind:"mutation",auth:"admin"}),clusterAddonStatus:i(d(),v(e(),$r),{auth:"admin"}),setProcessLogLevel:i(t({nodeId:e(),level:e()}),ae,{kind:"mutation",auth:"admin"}),executeQuery:i(t({nodeId:e(),addonId:e(),queryName:e(),params:v(e(),h()).optional()}),h(),{kind:"mutation",auth:"admin"})}},Da=t({id:e(),addonId:e(),name:e(),enabled:l(),info:v(e(),h()).readonly(),createdAt:a(),updatedAt:a(),processState:e()}),Ue=t({id:e(),addonId:e(),name:e(),enabled:l(),info:v(e(),h()).readonly(),createdAt:a(),updatedAt:a()}),Jr=t({addonId:e(),name:e(),description:e(),iconUrl:e().nullable(),color:e(),instanceMode:e(),discoveryMode:e(),existingInstances:r(t({id:e(),name:e()})),canAdd:l()}),Xr=t({success:l(),error:e().optional()}),ed=t({addonId:e(),name:e(),enabled:l().optional(),info:v(e(),h()).optional(),settings:v(e(),h()).optional(),skipRestart:l().optional()}),td=t({id:e(),name:e().optional(),enabled:l().optional(),info:v(e(),h()).optional()}),ad=t({success:l(),deletedId:e()}),fl={name:"integrations",scope:"system",mode:"singleton",methods:{list:i(d(),r(Da)),get:i(t({id:e()}),Da),getByAddonId:i(t({addonId:e()}),Ue.nullable()),create:i(ed,Ue,{kind:"mutation",auth:"admin"}),update:i(td,Ue,{kind:"mutation",auth:"admin"}),delete:i(t({id:e()}),ad,{kind:"mutation",auth:"admin"}),getSettings:i(t({id:e()}),v(e(),h()),{auth:"admin"}),setSettings:i(t({id:e(),settings:v(e(),h())}),t({success:l()}),{kind:"mutation",auth:"admin"}),getAvailableTypes:i(d(),r(Jr),{auth:"admin"}),testConnection:i(t({addonId:e(),settings:v(e(),h())}),Xr,{kind:"mutation",auth:"admin"})}},Ma=y(["debug","info","warn","error"]),st=y(["off","latest","beta"]),an=y(["off","latest","beta","inherit"]),nd=t({id:e(),name:e().optional(),version:e().optional(),description:e().optional(),icon:e().optional(),color:e().optional(),capabilities:r(h()).readonly().optional(),packageName:e(),packageVersion:e(),packageDisplayName:e().optional(),bundle:t({displayName:e(),description:e().optional(),icon:e().optional()}).optional(),protected:l().optional(),removable:l().optional()}),id=t({pid:a().optional(),mode:e(),state:e()}),od=t({phase:y(["pending","healthy","failed"]),retryCount:a(),firstFailureAt:a().nullable(),lastAttemptAt:a().nullable(),lastError:t({message:e(),stack:e().optional()}).nullable(),nextRetryAt:a().nullable(),alertEmitted:l(),retrying:l(),inGracePeriod:l()}),sd=t({manifest:nd,declaration:h().optional(),source:e(),installSource:e().optional(),process:id.optional(),hasBackup:l().optional(),health:od.nullable().optional()}),rd=t({name:e(),version:e(),dir:e(),installSource:e().optional()}),dd=t({name:e(),currentVersion:e(),latestVersion:e(),category:y(["addon","core"]),requiresRestart:l()}),cd=t({version:e(),publishedAt:e(),deprecated:e().optional(),distTags:r(e()).readonly()}),ld=t({name:e(),version:e(),description:e(),keywords:r(e()).readonly(),publishedAt:e(),author:e(),installed:l(),installedVersion:e().optional()}),ud=t({channel:st,intervalSeconds:a()}),md=an,pd=h(),Ea=h(),gd=h(),hd=t({timestamp:e(),level:e(),message:e(),scope:e().optional()}),vd=h(),yd=t({addonId:e().min(1),action:e().min(1),input:h()}),Il={name:"addons",scope:"system",mode:"singleton",methods:{list:i(d(),r(sd).readonly()),getLogs:i(t({addonId:e(),limit:a().min(1).max(500).default(100),level:Ma.optional()}),r(vd)),listPackages:i(d(),r(rd).readonly()),installPackage:i(t({packageName:e(),version:e().optional()}),Ea,{kind:"mutation",auth:"admin"}),installFromWorkspace:i(t({packageName:e()}),Ea,{kind:"mutation",auth:"admin"}),isWorkspaceAvailable:i(d(),l()),listWorkspacePackages:i(d(),r(h()).readonly()),uninstallPackage:i(t({packageName:e()}),h(),{kind:"mutation",auth:"admin"}),reloadPackages:i(d(),gd,{kind:"mutation",auth:"admin"}),searchAvailable:i(t({query:e().optional()}),r(ld)),listUpdates:i(d(),r(dd).readonly(),{auth:"admin"}),updatePackage:i(t({name:e().min(1),version:e().optional()}),h(),{kind:"mutation",auth:"admin"}),rollbackPackage:i(t({name:e().min(1)}),t({rolledBackTo:e().nullable()}),{kind:"mutation",auth:"admin"}),forceRefresh:i(d(),h(),{kind:"mutation",auth:"admin"}),restartServer:i(t({confirm:b(!0)}),h(),{kind:"mutation",auth:"admin"}),getVersions:i(t({name:e()}),r(cd).readonly()),restartAddon:i(t({addonId:e()}),pd,{kind:"mutation",auth:"admin"}),retryLoad:i(t({packageName:e()}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),getAutoUpdateSettings:i(d(),ud,{auth:"admin"}),setAutoUpdateSettings:i(t({channel:st,intervalSeconds:a().min(300).max(86400).optional()}),h(),{kind:"mutation",auth:"admin"}),getAddonAutoUpdate:i(t({addonId:e()}),md,{auth:"admin"}),setAddonAutoUpdate:i(t({addonId:e(),channel:an}),h(),{kind:"mutation",auth:"admin"}),applyAutoUpdateToAll:i(t({channel:st}),t({success:b(!0)}),{kind:"mutation",auth:"admin"}),custom:i(yd,h(),{kind:"mutation"}),onAddonLogs:i(t({addonId:e(),level:Ma.optional()}),hd,{kind:"subscription"})}},Sd=["decoder","motion-detection","pipeline-executor","audio-analyzer","pipeline-analytics","notification-output"],kl=[...Sd,"pipeline-orchestrator","pipeline-runner"];export{ua as $,Pd as A,md as B,sd as C,Ba as D,Eo as E,Mo as F,Uo as G,qe as H,Wi as I,Vi as J,Gi as K,pl as L,un as M,it as N,so as O,ro as P,Ho as Q,Wo as R,kd as S,jt as T,Mn as U,je as V,fd as W,Go as X,Vo as Y,jo as Z,Ko as _,C as a,z as a$,Bs as a0,Vn as a1,En as a2,qn as a3,Ht as a4,$o as a5,os as a6,Be as a7,ud as a8,Jr as a9,$r as aA,lo as aB,uo as aC,Yo as aD,Hi as aE,_i as aF,Br as aG,xr as aH,ed as aI,Lr as aJ,Or as aK,Tr as aL,yd as aM,Tc as aN,Ac as aO,kn as aP,wn as aQ,Dn as aR,Bn as aS,la as aT,Ft as aU,hn as aV,ad as aW,ti as aX,Gt as aY,Re as aZ,wa as a_,In as aa,io as ab,ea as ac,Pe as ad,Y as ae,Wt as af,Un as ag,Fn as ah,Nn as ai,zn as aj,Ln as ak,xn as al,xd as am,H as an,xa as ao,ct as ap,er as aq,tr as ar,ut as as,Kn as at,He as au,qr as av,_o as aw,bn as ax,Hr as ay,Kr as az,nc as b,dd as b$,Ce as b0,Ve as b1,_n as b2,tc as b3,Hn as b4,Vt as b5,Qo as b6,ma as b7,Rn as b8,To as b9,Ts as bA,Ii as bB,ye as bC,mt as bD,yi as bE,$t as bF,ki as bG,Oa as bH,bo as bI,Ya as bJ,nt as bK,rr as bL,ss as bM,Fr as bN,Xe as bO,us as bP,pa as bQ,ls as bR,Rs as bS,Wd as bT,ar as bU,ir as bV,nr as bW,at as bX,ka as bY,Sd as bZ,kl as b_,Qs as ba,Es as bb,Oo as bc,Pa as bd,Ae as be,ge as bf,Fo as bg,Cc as bh,Io as bi,sa as bj,ko as bk,Ur as bl,Me as bm,Di as bn,rd as bo,Ue as bp,Da as bq,sr as br,Ca as bs,co as bt,na as bu,Na as bv,hd as bw,va as bx,me as by,jn as bz,xi as c,Tn as c$,cd as c0,mo as c1,Ie as c2,Qe as c3,ca as c4,$e as c5,M as c6,Kt as c7,Q as c8,zd as c9,po as cA,go as cB,Jt as cC,aa as cD,K as cE,Xt as cF,oa as cG,ja as cH,Gn as cI,ia as cJ,Ji as cK,Xi as cL,eo as cM,$i as cN,Zi as cO,ao as cP,Yi as cQ,O as cR,T as cS,Z as cT,ji as cU,to as cV,Ki as cW,Qi as cX,lt as cY,On as cZ,_r as c_,vi as ca,We as cb,pe as cc,Ei as cd,Pi as ce,Ze as cf,he as cg,Ai as ch,Ia as ci,fa as cj,Zs as ck,ho as cl,ta as cm,Lo as cn,Ga as co,rs as cp,Si as cq,Ge as cr,bi as cs,jd as ct,La as cu,fi as cv,gl as cw,ot as cx,ld as cy,Ys as cz,ic as d,Lc as d$,Ld as d0,vo as d1,fo as d2,Zt as d3,$s as d4,Xr as d5,Wr as d6,F as d7,jr as d8,Vr as d9,wd as dA,Sc as dB,bc as dC,kc as dD,oc as dE,Ic as dF,fc as dG,Il as dH,mc as dI,Kc as dJ,sc as dK,Bc as dL,Rc as dM,xc as dN,Nc as dO,Uc as dP,cc as dQ,al as dR,za as dS,Ri as dT,q as dU,Pc as dV,Zc as dW,Oc as dX,fn as dY,tl as dZ,zc as d_,Gr as da,xe as db,gt as dc,zs as dd,ds as de,Va as df,td as dg,Rr as dh,ml as di,ze as dj,mn as dk,zo as dl,_a as dm,qo as dn,Ua as dp,ra as dq,yn as dr,hi as ds,Mi as dt,ie as du,Yt as dv,Xd as dw,ne as dx,wi as dy,ol as dz,ec as e,V as e0,Xc as e1,qd as e2,Ad as e3,yc as e4,fl as e5,sl as e6,cl as e7,uc as e8,Cd as e9,Gc as eA,Vc as eB,pc as eC,rc as eD,dc as eE,Nd as eF,Od as eG,vl as eH,Sl as eI,Wc as eJ,Hc as eK,hl as eL,gc as eM,Dc as eN,Fa as eO,Mc as eP,ll as ea,ul as eb,i as ec,Yc as ed,Hd as ee,vc as ef,rl as eg,Fc as eh,yl as ei,bl as ej,jc as ek,il as el,Qc as em,Gd as en,Ec as eo,Kd as ep,dl as eq,Jc as er,nl as es,el as et,$c as eu,_c as ev,Dd as ew,wc as ex,lc as ey,hc as ez,Jd as f,$d as g,Id as h,Ed as i,_d as j,Md as k,Fd as l,Zd as m,Ud as n,Bd as o,Qd as p,Rd as q,Td as r,Yd as s,ac as t,Sn as u,qc as v,vn as w,or as x,U as y,Vd as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as k,z as B,e as F,f as U,s as z,p as $,m as W,g as H,i as P,j,k as R,l as K,n as q,o as Z,q as V,r as G,t as Y,A as ge,u as Se,v as ye,w as be,x as Ce,y as ve,B as we,C as Ae,E as Ie,F as Ee,G as _e,H as De,I as ke,J as Pe,K as Re,L as Te,N as Ne,O as Oe,P as Me,Q as xe,R as Le,T as Be,U as Fe,V as Ue,X as ze,Y as $e,Z as We,_ as He,$ as je,a0 as Ke,a1 as qe,a2 as Ze,a3 as Ve,a4 as Ge,a5 as Ye,a6 as Je,a7 as Qe,a8 as Xe,a9 as et,aa as tt,ab as at,ac as st,ad as it,ae as nt,af as rt,ag as ot,ah as ct,ai as dt,aj as lt,ak as ut,al as ht,am as mt,an as pt,ao as ft,ap as gt,aq as St,ar as yt,as as bt,at as Ct,au as vt,av as wt,aw as At,ax as It,ay as Et,az as _t,aA as Dt,aB as kt,aC as Pt,aD as Rt,aE as Tt,aF as Nt,aG as Ot,aH as Mt,aI as xt,aJ as Lt,aK as Bt,aL as Ft,aM as Ut,aN as zt,aO as $t,aP as Wt,aQ as Ht,aR as jt,aS as Kt,aT as qt,aU as Zt,aV as Vt,aW as Gt,aX as Yt,aY as Jt,D as Qt,aZ as Xt,a_ as ea,a$ as ta,b0 as aa,a as sa,b1 as ia,b2 as na,b3 as ra,b4 as oa,b5 as ca,b6 as da,b7 as la,b8 as ua,b9 as ha,ba as ma,bb as pa,bc as fa,bd as ga,be as Sa,bf as ya,bg as ba,bh as Ca,bi as va,bj as wa,bk as Aa,bl as Ia,bm as Ea,bn as _a,bo as Da,bp as ka,bq as Pa,br as Ra,bs as Ta,bt as Na,bu as Oa,bv as Ma,bw as xa,M as La,bx as Ba,by as Fa,bz as Ua,bA as za,bB as $a,bC as Wa,bD as Ha,bE as ja,bF as Ka,bG as qa,bH as Za,bI as Va,bJ as Ga,bK as Ya,bL as Ja,bM as Qa,bN as Xa,bO as es,bP as ts,bQ as as,bR as ss,bS as is,bT as ns,bU as rs,bV as os,bW as cs,bX as ds,bY as ls,bZ as us,b_ as hs,b$ as ms,c0 as ps,c1 as fs,c2 as gs,c3 as Ss,c4 as ys,c5 as bs,c6 as Cs,c7 as vs,c8 as ws,c9 as As,ca as Is,cb as Es,cc as _s,cd as Ds,ce as ks,cf as Ps,cg as Rs,ch as Ts,ci as Ns,cj as Os,ck as Ms,cl as xs,cm as Ls,cn as Bs,co as Fs,cp as Us,cq as zs,cr as $s,cs as Ws,ct as Hs,cu as js,cv as Ks,S as qs,cw as Zs,cx as Vs,cy as Gs,cz as Ys,cA as Js,cB as Qs,cC as Xs,cD as ei,cE as ti,cF as ai,cG as si,cH as ii,cI as ni,cJ as ri,cK as oi,cL as ci,cM as di,cN as li,cO as ui,cP as hi,cQ as mi,cR as pi,cS as fi,cT as gi,cU as Si,cV as yi,cW as bi,cX as Ci,cY as vi,cZ as wi,c_ as Ai,c$ as Ii,d0 as Ei,d1 as _i,d2 as Di,d3 as ki,d4 as Pi,d as Ri,d5 as Ti,d6 as Ni,d7 as Oi,d8 as Mi,d9 as xi,da as Li,db as Bi,dc as Fi,dd as Ui,de as zi,df as $i,dg as Wi,dh as Hi,di as ji,dj as Ki,dk as qi,W as Zi,dl as Vi,dm as Gi,dn as Yi,dp as Ji,dq as Qi,dr as Xi,ds as en,dt as tn,du as an,dv as sn,dw as nn,dx as rn,dy as on,dz as cn,dA as dn,dB as ln,dC as un,dD as hn,dE as mn,dF as pn,dG as fn,dH as gn,dI as Sn,dJ as yn,dK as bn,dL as Cn,dM as vn,dN as wn,dO as An,dP as In,dQ as En,dR as _n,c as Dn,dS as kn,dT as Pn,dU as Rn,b as Tn,dV as Nn,dW as On,dX as Mn,dY as xn,dZ as Ln,d_ as Bn,d$ as Fn,e0 as Un,e1 as zn,e2 as $n,e3 as Wn,e4 as Hn,e5 as jn,e6 as Kn,e7 as qn,e8 as Zn,e9 as Vn,ea as Gn,eb as Yn,ec as Jn,ed as Qn,ee as Xn,ef as er,eg as tr,eh as ar,ei as sr,ej as ir,ek as nr,el as rr,em as or,en as cr,eo as dr,ep as lr,eq as ur,er as hr,es as mr,et as pr,eu as fr,ev as gr,ew as Sr,ex as yr,ey as br,ez as Cr,eA as vr,eB as wr,eC as Ar,eD as Ir,eE as Er,eF as _r,eG as Dr,eH as kr,eI as Pr,eJ as Rr,eK as Tr,eL as Nr,eM as Or,eN as Mr,eO as xr,eP as Lr}from"./index-DJIpFuqj.js";import{E as C,A as Br,C as Fr,a as Ur,D as zr,K as $r,M as Wr,S as Hr}from"./method-access-map-D3ooxuVS.js";import{Z as jr,m as Kr,p as qr,q as Zr,v as Vr,w as Gr,x as J,y as Yr,z as Jr}from"./schemas-XgIEoUz3.js";class Qr{disposers=[];disposed=!1;onError;constructor(e={}){this.onError=e.onError??((t,s)=>{console.error(`[DisposerChain] disposer #${s} threw`,t)})}add(e){if(this.disposed){try{const t=e();t&&typeof t.then=="function"&&t.catch(s=>this.onError(s,-1))}catch(t){this.onError(t,-1)}return()=>{}}return this.disposers.push(e),()=>{const t=this.disposers.indexOf(e);t>=0&&this.disposers.splice(t,1)}}get isDisposed(){return this.disposed}get size(){return this.disposers.length}async dispose(){if(this.disposed)return;this.disposed=!0;const e=this.disposers.slice().reverse();this.disposers=[];for(let t=0;t<e.length;t++){const s=e[t];try{const i=s();i&&typeof i.then=="function"&&await i}catch(i){this.onError(i,e.length-1-t)}}}}const Q="main-group",X="hub-only";function b(a){return{placement:a.execution?.placement??X,group:a.execution?.group??Q}}function Xr(a){const e=b(a).placement;return e==="any-node"||e==="agent-only"}function eo(a){return b(a).placement==="agent-only"}function to(a){return b(a).group}function ao(a){return b(a).placement}function so(a,e){return a.category===e}function T(a,e,t){return{id:typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2),timestamp:new Date,source:e,category:a,data:t}}function ee(a,e){const t=e.ts??Date.now();a.emit(T("system.ready-state",{type:"capability",id:e.capName,nodeId:e.sourceNodeId},{capName:e.capName,scope:e.scope,state:e.state,generation:e.generation,sourceNodeId:e.sourceNodeId,ts:t}))}class te{_ctx=null;_config;_readinessGeneration=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14);_registeredCapNames=[];defaults;constructor(e){this.defaults=e,this._config={...e}}get autoEmitReadiness(){return!0}get ctx(){if(!this._ctx)throw new Error(`${this.constructor.name}: ctx accessed before initialize()`);return this._ctx}get ctxIfReady(){return this._ctx}get config(){return this._config}async initialize(e){this._ctx=e,await this.resolveConfig();const t=await this.onInitialize();this.emitLifecycle(C.AddonStarted);const s=ae(t),i=s&&"providers"in s&&s.providers?s.providers:[];return this._registeredCapNames=i.map(n=>n.capability.name),s}postBrokerStart(){this.autoEmitReadiness&&this._registeredCapNames.length>0&&this.emitReadinessForProviders("ready")}async onHubReachable(){}async shutdown(){this.emitLifecycle(C.AddonStopped),this.autoEmitReadiness&&this.emitReadinessForProviders("down"),await this.onShutdown();for(const e of this._subscriptions)e();this._subscriptions=[],this._ctx=null}async onShutdown(){}async onConfigChanged(){}field(e){return e}schema(e){return e}globalSettingsSchema(){return null}deviceSettingsSchema(){return null}async getGlobalSettings(e){const t=this.globalSettingsSchema();if(!t)return{sections:[]};const s=await this._ctx?.settings?.readAddonStore()??{};return k(t,e?{...s,...e}:s)}async updateGlobalSettings(e){await this._ctx?.settings?.writeAddonStore(e),await this.resolveConfig(),await this.onConfigChanged(),this.emitLifecycle(C.AddonUpdated,{level:"global"}),this.maybeAutoRestart(e,this.globalSettingsSchema())}maybeAutoRestart(e,t){if(!t)return;const s=new Set;for(const o of t.sections)for(const c of o.fields)c.type==="separator"||c.type==="info"||c.requiresRestart&&s.add(c.key);if(s.size===0||!Object.keys(e).some(o=>s.has(o)))return;const n=this._ctx;if(!n)return;const r=n.id;setImmediate(()=>{n.api.addons?.restartAddon?.mutate({addonId:r}).then(()=>{n.logger.info("addon auto-restart triggered by restart-required setting change",{meta:{changedFields:Object.keys(e).filter(c=>s.has(c))}})}).catch(c=>{n.logger.error("addon auto-restart failed",{meta:{error:c instanceof Error?c.message:String(c)}})})})}async getDeviceSettings(e){const t=this.deviceSettingsSchema();if(!t)return{sections:[]};const s=await this._ctx?.settings?.readDeviceStore(e)??{};return k(t,s)}async updateDeviceSettings(e,t){await this._ctx?.settings?.writeDeviceStore(e,t)}_subscriptions=[];watchCapability(e,t){const s=Array.isArray(e)?e:[e],i=new Set(s);this.subscribe({category:"system.ready-state"},n=>{const r=n.data;if(typeof r.capName!="string"||!i.has(r.capName)||r.scope?.type!=="node")return;const o=r.scope.nodeId;if(typeof o!="string"||o.length===0)return;const c=r.capName;r.state==="down"?t.onDown?.(o,c):r.state==="ready"&&t.onReady?.(o,c)})}subscribe(e,t){const s=this.ctx.eventBus.subscribe(e,t);this._subscriptions.push(s)}emitLifecycle(e,t){try{this._ctx?.eventBus.emit({id:`${this._ctx.id}-${Date.now()}`,timestamp:new Date,source:{type:"addon",id:this._ctx.id,nodeId:this._ctx.kernel.localNodeId??"hub"},category:e,data:t??{}})}catch{}}emitReadinessForProviders(e){const t=this._ctx;if(!t||this._registeredCapNames.length===0)return;const s=t.kernel?.localNodeId??"hub",i=s.includes("/")?s.split("/")[0]:s;for(const n of this._registeredCapNames)try{ee(t.eventBus,{capName:n,scope:{type:"node",nodeId:i},state:e,generation:this._readinessGeneration,sourceNodeId:i})}catch{}}async resolveModelsDir(){return this.ctx.api.storage.resolve.query({location:"models",relativePath:""}).catch(()=>"camstack-data/models")}get capabilities(){return this.ctx.capabilities??null}async resolveConfig(){const e=await this.readAddonStoreWithRetry(),t={...this.defaults};for(const s of Object.keys(this.defaults)){const i=e[s];if(i!=null){const n=typeof this.defaults[s];typeof i===n&&(t[s]=i)}}this._config=t}async readAddonStoreWithRetry(){const e=this._ctx?.settings;if(!e)return{};const t=[150,350,600,900];let s;for(let i=0;i<=t.length;i++)try{return await e.readAddonStore()??{}}catch(n){s=n;const r=n instanceof Error?n.message:String(n);if(!(r.includes("SqliteSettingsBackend not initialized")||r.includes("provider not available")))throw n;if(i===t.length)break;await new Promise(c=>setTimeout(c,t[i]))}return this._ctx?.logger?.warn?.("readAddonStore: settings-store unavailable after retries — using defaults",{meta:{error:s instanceof Error?s.message:String(s)}}),{}}}function ae(a){if(a!=null)return Array.isArray(a)?{providers:a}:a}function io(a,e){return{id:a,getRoutes:()=>e,invoke:async t=>{const s=no(e,t.method,t.path);if(!s)return{status:404,headers:{},redirectUrl:null,body:{error:`No route matches ${t.method} ${t.path}`}};const i={status:200,headers:{},redirectUrl:null},n=oo(i),r={params:{...t.params,...s.params},query:t.query,body:t.body,headers:t.headers,...t.user?{user:t.user}:{},...t.scopedToken!==void 0?{scopedToken:t.scopedToken}:{}};return await s.route.handler(r,n),i}}}function no(a,e,t){const s=e.toUpperCase();for(const i of a){if(i.method!==s)continue;const n=ro(i.path,t);if(n!==null)return{route:i,params:n}}return null}function ro(a,e){const t=a.split("/").filter(Boolean),s=e.split("/").filter(Boolean);if(t.length!==s.length)return null;const i={};for(let n=0;n<t.length;n++){const r=t[n],o=s[n];if(r.startsWith(":"))i[r.slice(1)]=o;else if(r!==o)return null}return i}function oo(a){const e={status(t){return a.status=t,e},code(t){return a.status=t,e},send(t){a.body=t},redirect(t){a.redirectUrl=t,a.status===200&&(a.status=302)},header(t,s){return a.headers[t.toLowerCase()]=s,e},type(t){return a.contentType=t,e}};return e}class se extends Error{capName;scope;waitedMs;constructor(e,t,s){super(`Timed out waiting for ${e} (${f(t)}) to become ready after ${s}ms`),this.name="ReadinessTimeoutError",this.capName=e,this.scope=t,this.waitedMs=s}}function v(a,e){return`${a}|${f(e)}`}function f(a){switch(a.type){case"global":return"global";case"node":return`node:${a.nodeId}`;case"device":return`device:${a.deviceId}`}}function _(a,e){return a.type!==e.type?!1:a.type==="global"||e.type==="global"?!0:a.type==="node"&&e.type==="node"?a.nodeId===e.nodeId:a.type==="device"&&e.type==="device"?a.deviceId===e.deviceId:!1}class co{bus;sourceNodeId;logger;now;generation;snapshot=new Map;subscriptions=new Set;unsubscribeBus;unsubscribeAgentOffline;constructor(e){if(this.bus=e.eventBus,this.sourceNodeId=e.sourceNodeId,this.logger=e.logger,this.now=e.now??(()=>Date.now()),this.generation=e.generation??lo(),this.unsubscribeBus=this.bus.subscribe({category:"system.ready-state"},t=>this.ingest(t.data)),this.unsubscribeAgentOffline=this.bus.subscribe({category:"agent.offline"},t=>this.synthesizeDownForNode(t.data.agentId)),typeof this.bus.getRecent=="function")try{const t=this.bus.getRecent({category:"system.ready-state"});for(const s of t)this.ingest(s.data)}catch{}}close(){this.unsubscribeBus(),this.unsubscribeAgentOffline(),this.subscriptions.clear()}get(e,t){return this.snapshot.get(v(e,t))??null}getSnapshotForTransport(){return Array.from(this.snapshot.values())}hydrate(e){const t=this.now();for(const s of e){const i=v(s.capName,s.scope);if(this.snapshot.has(i))continue;const n={capName:s.capName,scope:s.scope,state:s.state,generation:s.generation,epoch:1,lastChange:t,sourceNodeId:s.sourceNodeId};this.snapshot.set(i,n),this.logger&&this.logger.debug(`readiness: ${s.capName} (${f(s.scope)}) → ${s.state} (hydrated, gen=${s.generation.slice(0,6)})`);const r={capName:s.capName,scope:s.scope,state:s.state,epoch:1,generation:s.generation,sourceNodeId:"hydrated",ts:t,durationInPrevState:0};for(const o of this.subscriptions)if(o.capName===s.capName&&_(o.scope,s.scope))try{o.handler(r)}catch(c){this.logger?.warn(`readiness hydrate handler threw for ${s.capName}: ${c.message??String(c)}`)}}}getAll(){return new Map(this.snapshot)}emitReady(e,t){this.emitTransition(e,t,"ready")}emitStarting(e,t){this.emitTransition(e,t,"starting")}emitDown(e,t){this.emitTransition(e,t,"down")}awaitReady(e,t,s={}){const i=s.timeoutMs??Number.POSITIVE_INFINITY,n=this.now();return this.get(e,t)?.state==="ready"?Promise.resolve():s.signal?.aborted?Promise.reject(s.signal.reason??new Error("aborted")):new Promise((o,c)=>{let l=!1;const d=this.onReadyState(e,t,I=>{I.state==="ready"&&(l||(l=!0,p(),o()))}),u=!Number.isFinite(i)?null:setTimeout(()=>{l||(l=!0,p(),c(new se(e,t,this.now()-n)))},i),S=()=>{l||(l=!0,p(),c(s.signal?.reason??new Error("aborted")))};s.signal?.addEventListener("abort",S,{once:!0});function p(){d(),u!==null&&clearTimeout(u),s.signal?.removeEventListener("abort",S)}})}onReadyState(e,t,s){const i={capName:e,scope:t,handler:s};this.subscriptions.add(i);const n=this.get(e,t);return n!==null&&queueMicrotask(()=>{this.subscriptions.has(i)&&s({capName:e,scope:t,state:n.state,epoch:n.epoch,generation:n.generation,sourceNodeId:this.sourceNodeId,ts:n.lastChange,durationInPrevState:0})}),()=>{this.subscriptions.delete(i)}}emitTransition(e,t,s){const i=this.now();this.bus.emit(T("system.ready-state",{type:"capability",id:e,nodeId:this.sourceNodeId},{capName:e,scope:t,state:s,generation:this.generation,sourceNodeId:this.sourceNodeId,ts:i}))}ingest(e){if(typeof e?.capName!="string"||e.state!=="ready"&&e.state!=="starting"&&e.state!=="down"||typeof e.generation!="string"||e.scope?.type!=="global"&&e.scope?.type!=="node"&&e.scope?.type!=="device")return;const t=v(e.capName,e.scope),s=this.snapshot.get(t)??null,i=this.now();let n;if(s===null?n=e.state==="ready"?1:0:s.generation!==e.generation&&e.state==="ready"?n=s.epoch+1:n=s.epoch,s!==null&&s.generation===e.generation&&s.state===e.state)return;const r=s===null?0:Math.max(0,i-s.lastChange),o={capName:e.capName,scope:e.scope,state:e.state,generation:e.generation,epoch:n,lastChange:i,sourceNodeId:e.sourceNodeId};this.snapshot.set(t,o);const c={capName:e.capName,scope:e.scope,state:e.state,epoch:n,generation:e.generation,sourceNodeId:e.sourceNodeId,ts:e.ts,durationInPrevState:r};this.logger&&this.logger.debug(`readiness: ${e.capName} (${f(e.scope)}) → ${e.state} epoch=${n} gen=${e.generation.slice(0,6)} (prev ${r}ms)`);for(const l of this.subscriptions)if(l.capName===e.capName&&_(l.scope,e.scope))try{l.handler(c)}catch(d){this.logger?.warn(`readiness handler threw for ${e.capName}: ${d.message??String(d)}`)}}synthesizeDownForNode(e){const t=this.now();for(const[s,i]of this.snapshot){if(i.state==="down"||!(i.scope.type==="node"&&i.scope.nodeId===e||i.scope.type==="device"&&i.sourceNodeId===e))continue;const r=Math.max(0,t-i.lastChange),o={...i,state:"down",lastChange:t};this.snapshot.set(s,o);const c={capName:i.capName,scope:i.scope,state:"down",epoch:i.epoch,generation:i.generation,sourceNodeId:this.sourceNodeId,ts:t,durationInPrevState:r};this.logger&&this.logger.debug(`readiness: ${i.capName} (${f(i.scope)}) → down (synthesized from agent.offline ${e})`);for(const l of this.subscriptions)if(l.capName===i.capName&&_(l.scope,i.scope))try{l.handler(c)}catch(d){this.logger?.warn(`readiness handler threw during agent.offline demux for ${i.capName}: ${d.message??String(d)}`)}}}}function lo(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14)}function uo(a,e){for(const{capName:t,scope:s}of e)a.emitDown(t,s)}const ho=["data","media","recordings","recordings-high","recordings-low","recordings-clips","event-images","models","addons-data","cache","logs","backups"],mo={data:"db",media:"media",recordings:"recordings","recordings-high":"recordings-high","recordings-low":"recordings-low","recordings-clips":"recordings-clips","event-images":"event-images",models:"models","addons-data":"addons-data",cache:"/tmp/camstack-cache",logs:"logs",backups:"backups"},ie={high:"High",mid:"Mid",low:"Low"};function po(a){return ie[a]??a.charAt(0).toUpperCase()+a.slice(1)}function ne(a){return(a.width??0)*(a.height??0)}function re(a){if(a.length===0)return[];const e=a.map((s,i)=>({s,i,px:ne(s.metadata??{})})).sort((s,i)=>i.px-s.px),t=Array.from({length:a.length});for(let s=0;s<e.length;s++){const{s:i,i:n}=e[s];let r;s===0?r="high":s===e.length-1?r="low":r="mid",t[n]={...i,quality:r}}return t}function fo(a){const e=a.height??0,t=a.width??0;return e>=1080||t>=1920?"high":e>=480||t>=640?"mid":"low"}function go(a){const e=a.protocols.find(i=>i.type==="rtsp"&&i.url)??a.protocols.find(i=>i.url),t=e?.type,s=t==="rtsp"?"rtsp":t==="http"||t==="flv"?"http-mjpeg":"custom";return{id:a.id,label:a.label??a.id,protocol:s,url:e?.url,profileHint:a.quality}}function m(a){return typeof a=="string"}function So(a){return typeof a=="object"&&a!==null&&!Array.isArray(a)}function yo(a){return m(a)&&a.trim()?{url:a}:So(a)&&m(a.url)&&a.url.trim()?{url:a.url,label:m(a.label)?a.label:void 0}:null}function bo(a){const e=m(a.snapshot_url)?a.snapshot_url:void 0;if(Array.isArray(a.streams)){const r=[];for(const o of a.streams){const c=yo(o);c&&r.push(c)}return{streams:r,snapshot_url:e}}const t=[],s=m(a.main_stream_url)?a.main_stream_url:void 0;s&&t.push({url:s,label:m(a.main_stream_name)?a.main_stream_name:void 0});const i=m(a.sub_stream_url)?a.sub_stream_url:void 0;i&&t.push({url:i,label:m(a.sub_stream_name)?a.sub_stream_name:void 0});const n=m(a.third_stream_url)?a.third_stream_url:void 0;return n&&t.push({url:n,label:m(a.third_stream_name)?a.third_stream_name:void 0}),{streams:t,snapshot_url:e}}function Co(a){if(a.length===0)return{};const e=re(a),t={},s=e.find(o=>o.quality==="high"),i=e.find(o=>o.quality==="mid"),n=e.find(o=>o.quality==="low");s&&(t.high=s.id),i&&(t.mid=i.id),n&&(t.low=n.id);const r=s??i??n??e[0];return r&&(t.high||(t.high=r.id),t.mid||(t.mid=r.id),t.low||(t.low=r.id)),t}const vo={streaming:!0,notifications:!0,objectDetection:!1,remoteAccess:!0,agentCluster:!1,smartHome:!0,recordings:!0,backup:!0,repl:!0},wo=["face","plate"],Ao=["face","plate","clip","custom"],Io={cleanupIntervalMs:3600*1e3,detectionEventsDays:30,audioLevelsDays:7,snapshotsDays:14};var oe=(a=>(a.Addon="addon",a.Core="core",a.Device="device",a.Provider="provider",a.System="system",a))(oe||{});const ce="camstack/camstack-models",Eo=`https://huggingface.co/${ce}/resolve/main`,_o={"features.streaming":!0,"features.notifications":!0,"features.objectDetection":!1,"features.remoteAccess":!0,"features.agentCluster":!1,"features.smartHome":!0,"features.recordings":!0,"features.backup":!0,"features.repl":!0,"retention.detectionEventsDays":30,"retention.audioLevelsDays":7,"logging.level":"info","logging.retentionDays":30,"eventBus.ringBufferSize":1e4,"storage.provider":"sqlite-storage","storage.locations":{data:"camstack-data/data",media:"camstack-data/media",recordings:"camstack-data/recordings",cache:"/tmp/camstack-cache",logs:"camstack-data/logs",models:"camstack-data/models"},providers:[],"recording.segmentDurationSeconds":4,"recording.defaultRetentionDays":30,"ffmpeg.binaryPath":"ffmpeg","ffmpeg.hwAccel":"auto","ffmpeg.threadCount":0,"auth.tokenExpiry":"24h"};function N(a){return JSON.parse(a)}function de(a){return a===null||typeof a!="object"||Array.isArray(a)?null:{...a}}function Do(a){return Array.isArray(a)?a:[]}function ko(a,e=""){return typeof a=="string"?a:e}function Po(a,e=0){return typeof a=="number"?a:e}function Ro(a,e=!1){return typeof a=="boolean"?a:e}function To(a){try{return de(N(a))}catch{return null}}function No(a){try{const e=N(a);return Array.isArray(e)?e:null}catch{return null}}function Oo(a,e){return`https://huggingface.co/${a}/resolve/main/${e}`}function Mo(a,e){if(a.length!==e.length)return 0;let t=0,s=0,i=0;for(let r=0;r<a.length;r++)t+=a[r]*e[r],s+=a[r]*a[r],i+=e[r]*e[r];const n=Math.sqrt(s)*Math.sqrt(i);return n===0?0:t/n}class xo{constructor(e,t){this.elementId=e,this.getBackend=typeof t=="function"?t:()=>t}cache={};listeners=new Set;loaded=!1;getBackend;async ensureLoaded(){if(this.loaded)return;const e=this.getBackend();if(!e)throw new Error(`ElementConfigStore(${this.elementId}): settings backend not available`);const t=await e.query({collection:"config",filter:{where:{id:this.elementId},limit:1}});t.length>0&&(this.cache=t[0].data??{}),this.loaded=!0}getAll(){return{...this.cache}}get(e){const t=e.split(".");let s=this.cache;for(const i of t){if(s===null||typeof s!="object"||Array.isArray(s))return;s=Reflect.get(s,i)}return s}async set(e,t){await this.ensureLoaded(),Lo(this.cache,e,t),await this.persist(),this.notifyListeners()}async setAll(e){await this.ensureLoaded(),this.cache={...e},await this.persist(),this.notifyListeners()}onChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async load(){await this.ensureLoaded()}async loadDefaults(e){await this.ensureLoaded(),Object.keys(this.cache).length===0&&(this.cache={...e},await this.persist())}async persist(){const e=this.getBackend();if(!e)throw new Error(`ElementConfigStore(${this.elementId}): settings backend not available — cannot persist config`);await e.set({collection:"config",key:this.elementId,value:this.cache})}notifyListeners(){const e=this.getAll();for(const t of this.listeners)try{t(e)}catch{}}}function Lo(a,e,t){const s=e.split(".");let i=a;for(let n=0;n<s.length-1;n++){const r=s[n],o=i[r];if(o===null||typeof o!="object"||Array.isArray(o)){const c={};i[r]=c,i=c}else i=o}i[s[s.length-1]]=t}const O={cpu:"onnx",coreml:"onnx",cuda:"onnx",tensorrt:"onnx","onnx-py":"onnx",pytorch:"pt",openvino:"openvino"},le={onnx:"onnx",coreml:"coreml",openvino:"openvino",tflite:"tflite",pytorch:"pt"},ue={coreml:"coreml_inference.py",pytorch:"pytorch_inference.py",openvino:"openvino_inference.py"};function he(a,e){return a==="node"?"onnx":{coreml:"coreml",openvino:"openvino",pytorch:"pytorch","onnx-py":"onnx",cpu:"onnx"}[e]??e}function Bo(a,e){return a==="node"?O[e]??"onnx":{coreml:"coreml",openvino:"openvino",pytorch:"pt","onnx-py":"onnx",cpu:"onnx"}[e]??"onnx"}function Fo(a,e){return!a||a==="auto"?"auto":he(a,e??"cpu")}function Uo(a){return O[a]??"onnx"}function zo(a){return le[a]}function $o(a){return ue[a]}function Wo(a){return a==="coreml"||a==="pytorch"||a==="openvino"}function me(a){return a instanceof Error?a.message:typeof a=="string"?a:String(a)}async function Ho(a,e){const t=performance.now();try{return{output:e!==void 0?await jo(a(),e):await a(),durationMs:x(performance.now()-t),ok:!0}}catch(s){return{output:void 0,durationMs:x(performance.now()-t),ok:!1,error:me(s)}}}function x(a){return Math.round(a*100)/100}function jo(a,e){return new Promise((t,s)=>{const i=setTimeout(()=>s(new Error(`Inference timeout after ${e}ms`)),e);a.then(n=>{clearTimeout(i),t(n)}).catch(n=>{clearTimeout(i),s(n)})})}const Ko=[{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"}],qo=[{id:"person",name:"Person"},{id:"vehicle",name:"Vehicle"},{id:"animal",name:"Animal"}],Zo={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},Vo={camera:{type:"camera",label:"Camera",icon:"camera"}};class g{schema;data;persistFn;constructor(e,t,s){this.schema=e,this.data=t,this.persistFn=s}static fromSchema(e,t,s={},i){const n=e.safeParse(s);if(n.success)return new g(e,n.data,t);const r=new Set;for(const d of n.error.issues){const h=d.path[0];typeof h=="string"&&r.add(h)}const o={...s};for(const d of r)delete o[d];const c=e.safeParse(o);if(i?.({droppedKeys:[...r],issues:n.error.issues}),c.success)return t(c.data).catch(()=>{}),new g(e,c.data,t);const l=e.parse({});return new g(e,l,t)}get values(){return this.data}get(e){return this.data[e]}async set(e,t){const s=this.schema.parse({...this.data,[e]:t});this.data=s,await this.persistFn(this.data)}async setAll(e){const t=this.schema.parse({...this.data,...e});this.data=t,await this.persistFn(this.data)}async deleteKey(e){const{[e]:t,...s}=this.data,i=this.schema.parse(s);this.data=i,await this.persistFn(this.data)}entries(){const e=this.schema.shape;return Object.entries(e).map(([t,s])=>({key:t,schema:s,value:this.data[t],description:s.description}))}}class A{writer;pendingWrites=new Set;slices;schemas=new Map;listeners=new Set;capListeners=new Map;constructor(e,t){this.writer=t,this.slices=new Map;for(const[s,i]of Object.entries(e))i&&typeof i=="object"&&!Array.isArray(i)&&this.slices.set(s,{...i})}static fromInitial(e,t){return new A(e,t)}installCapSchema(e,t){const s=this.schemas.get(e);if(s){if(s!==t)throw new Error(`[DeviceRuntimeState] capability "${e}" registered a different runtime-state schema; each cap must declare ONE shape across every provider`);return}this.schemas.set(e,t);const i=this.slices.get(e);if(i){const n=t.safeParse(i);n.success?this.slices.set(e,n.data):this.slices.delete(e)}}getCapState(e){const t=this.slices.get(e);if(t)return Object.freeze({...t})}getCapField(e,t){return this.slices.get(e)?.[t]}setCapState(e,t){this.applyCapWrite(e,t,!1)}patchCapState(e,t){this.applyCapWrite(e,t,!0)}applyCapWrite(e,t,s){const i=this.schemas.get(e);if(!i)throw new Error(`[DeviceRuntimeState] no schema registered for cap "${e}" — did the device register it via ctx.registerNativeCap before writing?`);const n=this.slices.get(e)??{},r=s?{...n,...t}:{...t},o=i.parse(r);if(Go(n,o))return;this.slices.set(e,o),this.fireListeners([e]);const c=this.writer(e,{...o}).catch(()=>{});this.pendingWrites.add(c),c.finally(()=>{this.pendingWrites.delete(c)})}fireListeners(e){const t=this.snapshot();for(const s of this.listeners)try{s(e,t)}catch{}for(const s of e){const i=this.capListeners.get(s);if(!i)continue;const n=this.getCapState(s);for(const r of i)try{r(n)}catch{}}}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}subscribeCap(e,t){let s=this.capListeners.get(e);s||(s=new Set,this.capListeners.set(e,s));const i=n=>{t(n)};return s.add(i),()=>{const n=this.capListeners.get(e);n&&(n.delete(i),n.size===0&&this.capListeners.delete(e))}}snapshot(){const e={};for(const[t,s]of this.slices)e[t]=Object.freeze({...s});return Object.freeze(e)}async flush(){if(this.pendingWrites.size===0)return;const e=[...this.pendingWrites];await Promise.allSettled(e)}}function Go(a,e){const t=Object.keys(a),s=Object.keys(e);if(t.length!==s.length)return!1;for(const i of t)if(a[i]!==e[i])return!1;return!0}const D="lastFetchedAt";function Yo(a){const{runtimeState:e,cap:t,ownDeviceId:s,refresh:i,staleMs:n,empty:r}=a,o=async()=>{const d=e.getCapState(t.name),h=typeof d?.[D]=="number"?d[D]:0;(!d||Date.now()-h>n)&&await i()},c=()=>{const d=e.getCapState(t.name);if(!d)return r();const{[D]:h,...u}=d;return u};return{ensureFresh:o,getStatus:async({deviceId:d})=>{if(d!==s)throw new Error(`${t.name}: deviceId mismatch, expected ${s}, got ${d}`);return await o(),c()}}}const Jo={audioMetrics:G,battery:V,brightness:Z,cameraStreams:q,deviceDiscovery:K,deviceStatus:R,doorbell:j,featureProbe:P,motion:H,motionTrigger:W,ptzAutotrack:$,switch:z,zoneAnalytics:U,zoneRules:F,zones:B};class Qo{id;stableId;type;name;parentDeviceId;role;get online(){return this.runtimeState.getCapState("device-status")?.online??!1}set online(e){this.markOnline(e)}get state(){if(!this._stateProxyCache){const e={},t={get:(s,i)=>{const n=i;if(n in e)return e[n];const r=Jo[n];if(!r)return;const o=this.sliceProxy(r);return e[n]=o,o}};this._stateProxyCache=new Proxy(e,t)}return this._stateProxyCache}_stateProxyCache;config;runtimeState;ctx;location;disabled;constructor(e,t,s){if(this.ctx=e,this.id=e.id,this.stableId=e.stableId,this.type=s.type,!e.deviceMeta)throw new Error(`BaseDevice constructor: ctx.deviceMeta is required (id=${e.id} stableId=${e.stableId})`);this.name=e.deviceMeta.name,this.location=e.deviceMeta.location,this.disabled=e.deviceMeta.disabled,this.role=s.role,this.parentDeviceId=e.parentDeviceId;const i=e.persistedConfig??{};this.config=g.fromSchema(t,d=>e.persistConfig(d),i,({droppedKeys:d,issues:h})=>{e.logger.warn("Device config recovery: dropping invalid persisted fields",{tags:{deviceId:e.id,stableId:e.stableId},meta:{droppedKeys:[...d],firstIssue:h[0]?.message??null}})});let n=null;const r=async(d,h)=>{n||(n=e.fetchDevice(e.id)),await(await n).deviceState.setCapSlice({capName:d,slice:h})},o=e.initialRuntimeState??{};this.runtimeState=A.fromInitial(o,r),e.bindRuntimeState?.(this.runtimeState),e.registerNativeCap?.(R,{});const c={online:!1,lastChangedAt:Date.now()};this.runtimeState.setCapState("device-status",c),e.registerNativeCap?.(P,{});const l={flags:{},deviceType:null,model:null,channelCount:null,lastProbedAt:0,lastFetchedAt:0};this.runtimeState.setCapState("feature-probe",l)}async removeDevice(){}markOnline(e){if(this.online===e)return;const t={online:e,lastChangedAt:Date.now()};this.runtimeState.setCapState("device-status",t)}async refreshFeatures(){const t=this.ctx.api?.deviceManager?.registerDevice;if(t)try{await t.mutate({addonId:this.ctx.deviceMeta.addonId,stableId:this.stableId,id:this.id,type:this.type,name:this.name,parentDeviceId:this.parentDeviceId,features:[...this.features],config:{}})}catch{}}getCapSlice(e){return this.runtimeState.getCapState(e.name)??null}setCapSlice(e,t){this.runtimeState.setCapState(e.name,t)}sliceProxy(e){const t={},s={get:(i,n)=>this.runtimeState.getCapState(e.name)?.[n],set:(i,n,r)=>(this.runtimeState.patchCapState(e.name,{[n]:r}),!0),has:(i,n)=>{const r=this.runtimeState.getCapState(e.name);return r?n in r:!1},ownKeys:()=>{const i=this.runtimeState.getCapState(e.name);return i?Object.keys(i):[]},getOwnPropertyDescriptor:(i,n)=>{const r=this.runtimeState.getCapState(e.name);if(!(!r||!(n in r)))return{configurable:!0,enumerable:!0,value:r[n]}}};return new Proxy(t,s)}getSettingsUISchema(){return{sections:[]}}async applySettingsPatch(e){await this.config.setAll(e)}async onProbe(){}async onActivate(){}async reprobe(){this._kernelReprobe?await this._kernelReprobe():await this.onProbe()}_kernelReprobe;getAccessoryChildren(){return[]}getProbeFlags(){return this.runtimeState.getCapState("feature-probe")?.flags??{}}hasProbed(){return(this.runtimeState.getCapState("feature-probe")?.lastProbedAt??0)>0}}function pe(a,e){const t={};for(const s of a.config.entries())t[s.key]=s.value;return{id:a.id,stableId:a.stableId,addonId:e,type:String(a.type),name:a.name,parentDeviceId:a.parentDeviceId,online:a.online,features:[...a.features],config:t}}class Xo extends te{async onInitialize(){return this.ctx.logger.info(`${this.providerName} Provider initialized`),[{capability:Y,provider:this}]}async onShutdown(){const e=await this.ctx.kernel.devices?.getAll()??[];for(const t of e)try{await this.ctx.kernel.devices?.decommission(t.id)}catch(s){this.ctx.logger.warn(`${this.providerName}: decommission failed`,{tags:{deviceId:t.id,stableId:t.stableId},meta:{error:s instanceof Error?s.message:String(s)}})}this.ctx.logger.info(`${this.providerName} Provider shut down`,{meta:{decommissionedCount:e.length}})}async start(){}async stop(){}async getStatus(){return{connected:!0,deviceCount:(await this.ctx.kernel.devices?.getAll()??[]).length}}async getDevices(){return(await this.ctx.kernel.devices?.getAll()??[]).map(t=>({id:t.stableId,name:t.name,type:String(t.type)}))}async supportsDiscovery(){return!1}async discoverDevices(){return[]}async adoptDiscoveredDevice(e){throw new Error(`${this.providerName} provider does not support discovery-based adoption`)}async supportsManualCreation(){return!0}async getChildCreationSchema(e){return this.onGetCreationSchema(e.type)}async createDevice(e){const t=await this.onCreateDevice(e.type,e.config),s=this.deviceClasses[t.meta.type];if(!s)throw new Error(`${this.providerName} provider: no device class registered for type "${t.meta.type}" — add it to the deviceClasses map`);const i=this.generateStableId(t.meta.type,t.config),n=await this.ctx.kernel.devices.create(i,s,t.config,null,t.meta);if(t.onAfterCreate)try{await t.onAfterCreate(n)}catch(r){this.ctx.logger.warn("createDevice: onAfterCreate hook threw — device is already registered",{tags:{deviceId:n.id,stableId:i},meta:{error:r instanceof Error?r.message:String(r)}})}return this.toSummary(n)}generateStableId(e,t){return`${this.addonId}-${Date.now()}`}async testCreationField(e){return{status:"ok",labels:["probe not implemented"]}}async restoreDevices(e){await this.onRestoreDevices(e),e.length>0&&this.ctx.logger.info(`Restored ${e.length} ${this.providerName} device(s)`)}async onRestoreDevices(e){const t=new Set;for(const i of e){if(i.parentDeviceId!==null)continue;const n=this.deviceClasses[i.type];if(!n){this.ctx.logger.warn("No device class registered for restored type — skipping",{tags:{stableId:i.stableId},meta:{type:i.type}});continue}try{await this.ctx.kernel.devices.create(i.stableId,n,{}),t.add(i.id)}catch(r){this.ctx.logger.warn("Failed to restore device",{tags:{stableId:i.stableId},meta:{type:i.type,error:r instanceof Error?r.message:String(r)}})}}const s=e.filter(i=>i.parentDeviceId!==null);for(const i of s){const n=this.deviceClasses[i.type];if(n&&i.parentDeviceId!==null&&t.has(i.parentDeviceId))try{await this.ctx.kernel.devices.create(i.stableId,n,{},i.parentDeviceId),t.add(i.id)}catch(r){this.ctx.logger.warn("Failed to restore hub-adopted child",{tags:{stableId:i.stableId,parentDeviceId:i.parentDeviceId},meta:{type:i.type,error:r instanceof Error?r.message:String(r)}})}}}toSummary(e){return pe(e,this.addonId)}}function y(a){return a.def}function ec(a,e="Configuration",t="main"){const s=a.map(i=>tc(i.key,i.schema,i.description));return{sections:[{id:t,title:e,fields:s}]}}function tc(a,e,t){const s=w(e),i=rc(e),n=t??fe(a),r={key:a,label:n,description:t,default:i};return s instanceof jr?ac(a,r):s instanceof Kr?sc(s,r):s instanceof qr?{...r,type:"boolean"}:s instanceof Zr?nc(s,r):s instanceof Vr||s instanceof Gr?{...r,type:"textarea",rows:6,isJson:!0}:{...r,type:"text"}}function ac(a,e){const t=a.toLowerCase();return t.includes("password")||t.includes("secret")||t.includes("token")||t.includes("apikey")||t.includes("api_key")?{...e,type:"password",showToggle:!0}:{...e,type:"text"}}function sc(a,e){const t=a,s=t.minValue,i=t.maxValue,n=s!=null&&isFinite(s)?s:void 0,r=i!=null&&isFinite(i)?i:void 0,o=ic(a);return{...e,type:"number",...n!==void 0?{min:n}:{},...r!==void 0?{max:r}:{},...o!==void 0?{step:o}:{}}}function ic(a){const t=y(a).checks??[];for(const s of t)if(s._zod?.def?.check==="multiple_of"&&s._zod.def.value!==void 0)return s._zod.def.value}function nc(a,e){const t=a.options.map(i=>String(i));return{...e,type:"select",options:t.map(i=>({label:fe(i),value:i}))}}function w(a){return a instanceof J||a instanceof Yr||a instanceof Jr?w(y(a).innerType):a}function rc(a){if(a instanceof J)return y(a).defaultValue}function fe(a){return a.replace(/([A-Z])/g," $1").replace(/[_-]/g," ").replace(/^\w/,e=>e.toUpperCase()).trim()}function oc(a,e,t,s,i){if(t.length===0||e.length===0)return{passed:a,excluded:[]};const n=t.filter(u=>u.enabled!==!1),r=n.filter(u=>u.mode==="include"),o=n.filter(u=>u.mode==="exclude"),c=r.length>0,l=new Map(e.map(u=>[u.id,u])),d=[],h=[];for(const u of a){const S=s(u),p=i?.(u),I=r.some(E=>L(E,S,p,l)),M=o.some(E=>L(E,S,p,l));c?I&&!M?d.push(u):h.push(u):M?h.push(u):d.push(u)}return{passed:d,excluded:h}}function L(a,e,t,s){if(a.classFilter&&a.classFilter.length>0&&t!==void 0&&!a.classFilter.includes(t))return!1;for(const i of a.zoneIds){const n=s.get(i);if(n&&cc(e,n.polygon))return!0}return!1}function cc(a,e){if(e.length<3)return!1;let t=!1;const{x:s,y:i}=a;for(let n=0,r=e.length-1;n<e.length;r=n++){const o=e[n],c=e[r];o.y>i!=c.y>i&&s<(c.x-o.x)*(i-o.y)/(c.y-o.y||Number.EPSILON)+o.x&&(t=!t)}return t}function dc(a){return a}function lc(a,e,t){return{input:a,output:e,kind:t?.kind??"query",auth:t?.auth??"protected",scope:t?.scope??{kind:"system"}}}const uc=["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"],hc=[{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 mc(a){try{const e=new URL(a);return!e.username&&!e.password?a:(e.username="",e.password="",e.toString())}catch{return a}}class pc{constructor(e){this.capacity=e,this.items=Array.from({length:e})}items;head=0;tail=0;count=0;get size(){return this.count}push(e){this.items[this.tail]=e,this.tail=(this.tail+1)%this.capacity,this.count<this.capacity?this.count++:this.head=(this.head+1)%this.capacity}drain(e){const t=[],s=Math.min(e,this.count);for(let i=0;i<s;i++)t.push(this.items[this.head]),this.items[this.head]=void 0,this.head=(this.head+1)%this.capacity;return this.count-=s,t}}function fc(a,e,t){const s={};for(const i of Object.keys(t))s[i]=n=>a.addons.custom.mutate({addonId:e,action:i,input:n});return s}const bc=Object.freeze(Object.defineProperty({__proto__:null,ACCESSORY_LABEL:ge,ALL_CAPABILITY_DEFINITIONS:Br,APPLE_SA_TO_MACRO:Se,AUDIO_BACKEND_CHOICES:ye,AUDIO_MACRO_LABELS:be,AccessoriesStatusSchema:Ce,AccessoryKind:ve,AddonAutoUpdateSchema:we,AddonListItemSchema:Ae,AddonPageDeclarationSchema:Ie,AddonPageInfoSchema:Ee,AgentLoadSummarySchema:_e,AlertSchema:De,AlertSeveritySchema:ke,AlertSourceSchema:Pe,AlertStatusSchema:Re,ApiKeyRecordSchema:Te,ApiKeySummarySchema:Ne,ArchiveEntrySchema:Oe,ArchiveManifestSchema:Me,AudioAnalysisResultSchema:xe,AudioAnalysisSettingsSchema:Le,AudioChunkInputSchema:Be,AudioClassSummarySchema:Fe,AudioClassificationLabelSchema:Ue,AudioClassificationResultSchema:ze,AudioCodecInfoSchema:$e,AudioDecodeSessionConfigSchema:We,AudioEncodeSessionConfigSchema:He,AudioEncodedChunkSchema:je,AudioEventSchema:Ke,AudioLevelSchema:qe,AudioMetricsHistoryPointSchema:Ze,AudioMetricsHistorySchema:Ve,AudioMetricsSnapshotSchema:Ge,AudioPcmChunkSchema:Ye,AuthProviderInfoSchema:Je,AuthResultSchema:Qe,AutoUpdateSettingsSchema:Xe,AvailableIntegrationTypeSchema:et,BACKEND_TO_FORMAT:O,BATTERY_DEVICE_PROFILE:tt,BackupDestinationInfoSchema:at,BackupEntrySchema:st,BaseAddon:te,BaseDevice:Qo,BaseDeviceProvider:Xo,BatteryStatusSchema:it,BoundingBoxSchema:nt,BrightnessStatusSchema:rt,BrokerAudioClientSchema:ot,BrokerClientsSchema:ct,BrokerDecodedClientSchema:dt,BrokerRtspClientSchema:lt,BrokerStatsSchema:ut,BrokerStatusSchema:ht,CAM_PROFILE_ORDER:mt,CAPABILITY_NAMES:Fr,CAPABILITY_ROUTER_KEYS:Ur,CAP_NAMES_WITH_STATUS:uc,COCO_80_LABELS:Ko,COCO_TO_MACRO:Zo,CamProfileSchema:pt,CamStreamKindSchema:ft,CamStreamResolutionSchema:gt,CameraCredentialsSchema:St,CameraCredentialsStatusSchema:yt,CameraMetricsSchema:bt,CameraMetricsWithDeviceIdSchema:Ct,CameraStreamSchema:vt,CapScopeSchema:wt,CapabilityBindingsSchema:At,ChargingStatus:It,ClientNetworkStatsSchema:Et,ClusterAddonNodeDeploymentSchema:_t,ClusterAddonStatusEntrySchema:Dt,CollectionColumnSchema:kt,CollectionIndexSchema:Pt,ConfigEntrySchema:Rt,ConfigSectionWithValuesSchema:Tt,ConfigTabDeclarationSchema:Nt,CreateApiKeyInputSchema:Ot,CreateApiKeyResultSchema:Mt,CreateIntegrationInputSchema:xt,CreateScopedTokenInputSchema:Lt,CreateScopedTokenResultSchema:Bt,CreateUserInputSchema:Ft,CustomActionInputSchema:Ut,DEFAULT_ADDON_GROUP:Q,DEFAULT_ADDON_PLACEMENT:X,DEFAULT_AUDIO_ANALYZER_CONFIG:zt,DEFAULT_DECODER_HWACCEL_CONFIG:$t,DEFAULT_FEATURES:vo,DEFAULT_LOCATION_SUBDIRS:mo,DEFAULT_RETENTION:Io,DEVICE_CAP_NAMES:zr,DEVICE_PROFILES:Wt,DEVICE_SETTINGS_CONTRIBUTION_METHODS:Ht,DEVICE_STATUS_METHOD:jt,DEVICE_TYPE_INFO:Vo,DecodedFrameSchema:Kt,DecoderAssignmentSchema:qt,DecoderSessionConfigSchema:Zt,DecoderStatsSchema:Vt,DeleteIntegrationResultSchema:Gt,DetectorOutputSchema:Yt,DeviceConfig:g,DeviceDiscoveryStatusSchema:Jt,DeviceFeature:Qt,DeviceInfoSchema:Xt,DeviceNetworkStatsSchema:ea,DeviceRole:ta,DeviceRuntimeState:A,DeviceStatusSchema:aa,DeviceType:sa,DiscoveredChildDeviceSchema:ia,DiscoveredChildStatusSchema:na,DiscoveredDeviceSchema:ra,DisposerChain:Qr,DoorbellPressEventSchema:oa,DoorbellStatusSchema:ca,ElementConfigStore:xo,EmbeddingInfoSchema:da,EmbeddingResultSchema:la,EncodedPacketSchema:ua,EnrichedWidgetMetadataSchema:ha,EventCategory:C,EventItemSchema:ma,EventKindSchema:pa,EventSourceType:oe,ExposedResourceSchema:fa,FeatureManifestSchema:ga,FeatureProbeStatusSchema:Sa,FrameInputSchema:ya,GlobalMetricsSchema:ba,HF_BASE_URL:Eo,HF_REPO:ce,HWACCEL_OPTIONS:Ca,HaServiceCallSchema:va,HaStateSchema:wa,HaStatusSchema:Aa,HealthStatusSchema:Ia,HistoryPointSchema:Ea,HistoryResolutionEnum:_a,InstalledPackageSchema:Da,IntegrationLiteSchema:ka,IntegrationWithStateSchema:Pa,IntercomAbilitySchema:Ra,IntercomStatusSchema:Ta,KNOWN_CAP_NAMES:$r,LocationStatSchema:Na,LogEntrySchema:Oa,LogLevelSchema:Ma,LogStreamEntrySchema:xa,MACRO_LABELS:qo,METHOD_ACCESS_MAP:Wr,MODEL_FORMATS:La,MediaFileSchema:Ba,MethodAccessSchema:Fa,MotionAnalysisResultSchema:Ua,MotionEventSchema:za,MotionOnMotionChangedDataSchema:$a,MotionRegionSchema:Wa,MotionSourceEnum:Ha,MotionSourcesSchema:ja,MotionStatusSchema:Ka,MotionTriggerRuntimeStateSchema:qa,MotionTriggerStatusSchema:Za,MqttStatusSchema:Va,NativeDetectionSchema:Ga,NativeObjectClassEnum:Ya,NativeObjectDetectionStatusSchema:Ja,NetworkAccessStatusSchema:Qa,NetworkAddressSchema:Xa,NetworkEndpointSchema:es,NotificationHistoryEntrySchema:ts,NotificationRuleSchema:as,NotificationSchema:ss,ObjectEventSchema:is,OrchestratorMetricsSchema:ns,OsdOverlayKindEnum:rs,OsdOverlayPatchSchema:os,OsdOverlaySchema:cs,OsdPositionEnum:ds,OsdStatusSchema:ls,PIPELINE_FLOW_CAPABILITY_NAMES:us,PIPELINE_OWNER_CAPABILITY_NAMES:hs,PYTHON_SCRIPT:ue,PackageUpdateSchema:ms,PackageVersionInfoSchema:ps,PasskeySummarySchema:fs,PcmSampleFormatSchema:gs,PerScopeBreakdownSchema:Ss,PipelineAssignmentSchema:ys,PipelineDefaultStepSchema:bs,PipelineEngineChoiceSchema:Cs,PipelineRunResultBridge:vs,PipelineStepInputSchema:ws,PlaceholderReasonSchema:As,PolygonPointSchema:Is,ProfileSlotSchema:Es,ProfileSlotStatusSchema:_s,ProviderStatusSchema:Ds,PtzAutotrackRuntimeStateSchema:ks,PtzAutotrackSettingsSchema:Ps,PtzAutotrackStatusSchema:Rs,PtzAutotrackTargetOptionSchema:Ts,PtzMoveCommandSchema:Ns,PtzPositionSchema:Os,PtzPresetSchema:Ms,PublishInputSchema:xs,QueryFilterSchema:Ls,RECOGNITION_TYPES:Ao,RUNTIME_DEFAULTS:_o,RUNTIME_TO_FORMAT:le,ReadinessRegistry:co,ReadinessTimeoutError:se,RegisteredStreamSchema:Bs,RemoteAccessEndpointSchema:Fs,RemoteAccessProviderInfoSchema:Us,ReportMotionInputSchema:zs,RingBuffer:pc,RtspRestreamEntrySchema:$s,RunnerCameraConfigSchema:Ws,RunnerCameraDeviceUIFields:Hs,RunnerLocalLoadSchema:js,RunnerLocalMetricsSchema:Ks,SCOPE_PRESETS:hc,STORAGE_LOCATION_CARDINALITY:qs,STORAGE_LOCATION_TYPES:ho,STREAM_QUALITY_LABELS:ie,SUB_DETECTION_TYPES:wo,SYSTEM_CAP_NAMES:Hr,ScopedTokenSchema:Zs,ScopedTokenSummarySchema:Vs,SearchResultSchema:Gs,SegmentSchema:Ys,SendEmailInputSchema:Js,SendEmailResultSchema:Qs,SettingsPatchSchema:Xs,SettingsRecordSchema:ei,SettingsSchemaWithValuesSchema:ti,SettingsUpdateResultSchema:ai,SmtpStatusSchema:si,SnapshotImageSchema:ii,SpatialDetectionSchema:ni,SsoBridgeClaimsSchema:ri,StorageAbortUploadInputSchema:oi,StorageBeginDownloadInputSchema:ci,StorageBeginDownloadResultSchema:di,StorageBeginUploadInputSchema:li,StorageBeginUploadResultSchema:ui,StorageEndDownloadInputSchema:hi,StorageFinalizeUploadInputSchema:mi,StorageLocationRefSchema:pi,StorageLocationSchema:fi,StorageLocationTypeSchema:gi,StorageProviderInfoSchema:Si,StorageReadChunkInputSchema:yi,StorageTestLocationResultSchema:bi,StorageWriteChunkInputSchema:Ci,StreamFormatSchema:vi,StreamInfoSchema:wi,StreamNetworkStatsSchema:Ai,StreamSourceEntrySchema:Ii,StreamSourceSchema:Ei,SubscribeInputSchema:_i,SubscriptionInfoSchema:Di,SwitchStatusSchema:ki,SystemMetricsSchema:Pi,SystemMirror:Ri,TestConnectionResultSchema:Ti,ToastSchema:Ni,TokenScopeSchema:Oi,TopologyNodeSchema:Mi,TopologyProcessSchema:xi,TopologyServiceSchema:Li,TrackSchema:Bi,TrackStateSchema:Fi,TrackedDetectionSchema:Ui,TurnProviderInfoSchema:zi,TurnServerSchema:$i,UpdateIntegrationInputSchema:Wi,UpdateUserInputSchema:Hi,UserRecordSchema:ji,UserSummarySchema:Ki,WELL_KNOWN_TABS:qi,WELL_KNOWN_TAB_MAP:Zi,WebrtcStreamChoiceSchema:Vi,WebrtcStreamTargetSchema:Gi,WidgetHostEnum:Yi,WidgetMetadataSchema:Ji,WidgetSizeEnum:Qi,YAMNET_TO_MACRO:Xi,ZoneKindEnum:en,ZoneRuleModeEnum:tn,ZoneRuleSchema:an,ZoneRuleStageEnum:sn,ZoneRulesArraySchema:nn,ZoneSchema:rn,ZoneScopeBreakdownSchema:on,accessoriesCapability:cn,accessoryStableId:dn,addonPagesCapability:ln,addonPagesSourceCapability:un,addonRoutesCapability:hn,addonSettingsCapability:mn,addonWidgetsCapability:pn,addonWidgetsSourceCapability:fn,addonsCapability:gn,adminUiCapability:Sn,advancedNotifierCapability:yn,alertsCapability:bn,asBoolean:Ro,asJsonArray:Do,asJsonObject:de,asNumber:Po,asString:ko,audioAnalysisCapability:Cn,audioAnalyzerCapability:vn,audioCodecCapability:wn,audioMetricsCapability:G,authProviderCapability:An,authenticationCapability:In,autoAssignProfiles:Co,backupCapability:En,batteryCapability:V,bindAddonActions:fc,brightnessCapability:Z,buildAddonRouteProvider:io,cameraCredentialsCapability:_n,cameraStreamsCapability:q,classifyStream:fo,classifyStreams:re,cosineSimilarity:Mo,createDeviceProxy:Dn,createEvent:T,createLazyTrpcSource:kn,createMirrorSource:Pn,createRuntimeStateBridge:Yo,createSliceHandle:Rn,createSystemProxy:Tn,customAction:lc,decoderCapability:Nn,defineCustomActions:dc,detectionPipelineCapability:On,deviceDiscoveryCapability:K,deviceManagerCapability:Mn,deviceMatchesProfile:xn,deviceOpsCapability:Ln,deviceProviderCapability:Y,deviceStateCapability:Bn,deviceStatusCapability:R,doorbellCapability:j,embeddingEncoderCapability:Fn,emitDownForOwnedCaps:uo,emitReadiness:ee,errMsg:me,evaluateZoneRules:oc,event:Un,eventsCapability:zn,expandCapMethods:$n,featureProbeCapability:P,formatForBackend:Uo,formatForRuntime:zo,getAudioMacroClassIds:Wn,hfModelUrl:Oo,homeAssistantCapability:Hn,hydrateSchema:k,integrationsCapability:jn,intercomCapability:Kn,isAgentOnlyPlacement:eo,isDeployableToAgent:Xr,isEvent:so,localNetworkCapability:qn,logDestinationCapability:Zn,mapAudioLabelToMacro:Vn,maskUrlCredentials:mc,meshNetworkCapability:Gn,meshOrchestratorCapability:Yn,method:Jn,metricsProviderCapability:Qn,motionCapability:H,motionDetectionCapability:Xn,motionTriggerCapability:W,mqttProviderCapability:er,nativeObjectDetectionCapability:tr,networkAccessCapability:ar,networkQualityCapability:sr,nodesCapability:ir,normalizeAddonInitResult:ae,notificationOutputCapability:nr,osdCapability:rr,parseCameraStreamConfig:bo,parseJsonArray:No,parseJsonObject:To,parseJsonUnknown:N,pipelineAnalyticsCapability:or,pipelineExecutorCapability:cr,pipelineOrchestratorCapability:dr,pipelineRunnerCapability:lr,platformProbeCapability:ur,ptzAutotrackCapability:$,ptzCapability:hr,pythonScriptForBackend:$o,readinessKey:v,rebootCapability:mr,recordingCapability:pr,recordingEngineCapability:fr,remoteAccessCapability:gr,requiresPython:Wo,resolveAddonExecution:b,resolveAddonGroup:to,resolveAddonPlacement:ao,resolveAddonRuntime:Fo,resolveDetectionRuntime:he,resolveDeviceProfile:Sr,resolveModelFormat:Bo,restreamerCapability:yr,runInferenceStep:Ho,scopeKey:f,settingsStoreCapability:br,smtpProviderCapability:Cr,snapshotCapability:vr,snapshotProviderCapability:wr,ssoBridgeCapability:Ar,storageCapability:Ir,storageProviderCapability:Er,streamBrokerCapability:_r,streamPixels:ne,streamQualityLabel:po,streamingEngineCapability:Dr,switchCapability:z,systemCapability:kr,toDeviceSummary:pe,toStreamSourceEntry:go,toastCapability:Pr,turnOrchestratorCapability:Rr,turnProviderCapability:Tr,userManagementCapability:Nr,userPasskeysCapability:Or,webrtcCapability:Mr,webrtcClientHintsSchema:xr,webrtcSessionCapability:Lr,zodEntriesToConfigUI:ec,zoneAnalyticsCapability:U,zoneRulesCapability:F,zonesCapability:B},Symbol.toStringTag,{value:"Module"}));export{ho as S,de as a,bc as s};
|