@camera.ui/server 2.0.22 → 2.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (713) hide show
  1. package/dist/interface/assets/404-CRIhzt2J.js +1 -0
  2. package/dist/interface/assets/About-CvY4xvAU.js +1 -0
  3. package/dist/interface/assets/Adminpanel-4ilp8plp.js +1 -0
  4. package/dist/interface/assets/Automation-uaWWTeTZ.js +3 -0
  5. package/dist/interface/assets/AutomationImport-RNgRv6Uc.js +2 -0
  6. package/dist/interface/assets/AutomationStore-D8plMzVI.js +2 -0
  7. package/dist/interface/assets/AutomationStoreDetail-BO-9XCRn.js +2 -0
  8. package/dist/interface/assets/Automations-PHMVe6wG.js +2 -0
  9. package/dist/interface/assets/Camera-Akukeq4_.js +2 -0
  10. package/dist/interface/assets/CameraConsole-BnKiGukm.js +7 -0
  11. package/dist/interface/assets/Cameras-BuHNAHpD.js +652 -0
  12. package/dist/interface/assets/{Camview-CaEbdeQZ.css → Camview-Cj10uxGy.css} +1 -1
  13. package/dist/interface/assets/Camview-dF8o0iy2.js +1 -0
  14. package/dist/interface/assets/Config-iq-YI9Vg.js +2 -0
  15. package/dist/interface/assets/{ConfigActionCameraControl-DFdb4xzq.js → ConfigActionCameraControl-C2qva2mT.js} +1 -1
  16. package/dist/interface/assets/ConfigActionDelay-C02w0yBx.js +1 -0
  17. package/dist/interface/assets/ConfigActionHttp-DVf26mYG.js +1 -0
  18. package/dist/interface/assets/ConfigActionImageInput-BTlFV7kK.js +1 -0
  19. package/dist/interface/assets/ConfigActionMqtt-CD9RW5Lq.js +1 -0
  20. package/dist/interface/assets/ConfigActionNotification-CjbIPrEb.js +1 -0
  21. package/dist/interface/assets/ConfigActionNotificationControl-BCdKNvgC.js +1 -0
  22. package/dist/interface/assets/ConfigActionOutput-wV9RFDQO.js +1 -0
  23. package/dist/interface/assets/ConfigActionPlugin-DijuNALK.js +1 -0
  24. package/dist/interface/assets/ConfigActionSensor-C9q3sRuI.js +1 -0
  25. package/dist/interface/assets/ConfigActionSnapshot-B79IJLFV.js +1 -0
  26. package/dist/interface/assets/ConfigActionVariable-Do94c7oi.js +1 -0
  27. package/dist/interface/assets/ConfigConditionIfElse-BtbZhnCM.js +1 -0
  28. package/dist/interface/assets/ConfigConditionSensorState-D1V_FhNU.js +1 -0
  29. package/dist/interface/assets/ConfigConditionSwitch-C74dDt3R.js +1 -0
  30. package/dist/interface/assets/ConfigConditionTime-5IrJQgAV.js +1 -0
  31. package/dist/interface/assets/ConfigSensorValueInput-BcbzMf0g.js +1 -0
  32. package/dist/interface/assets/{ConfigTriggerDetection-Cjes6g7x.js → ConfigTriggerDetection-ld9Upgoc.js} +1 -1
  33. package/dist/interface/assets/ConfigTriggerGeofence-DbfBc1AM.js +1 -0
  34. package/dist/interface/assets/ConfigTriggerManual-t-J-HbqF.js +1 -0
  35. package/dist/interface/assets/ConfigTriggerMqtt-i57J8-Nq.js +1 -0
  36. package/dist/interface/assets/ConfigTriggerSchedule-Dv7wIG3G.js +1 -0
  37. package/dist/interface/assets/ConfigTriggerSensor-Ba2lCSGc.js +1 -0
  38. package/dist/interface/assets/{ConfigTriggerSystem-NaaBopYq.js → ConfigTriggerSystem-BWs3rP_W.js} +1 -1
  39. package/dist/interface/assets/ConfigTriggerWebhook-CpQakeYG.js +1 -0
  40. package/dist/interface/assets/Console-BTb5Yc32.js +1 -0
  41. package/dist/interface/assets/CuiAutomationRunsDialog-DX0xpNxx.js +1 -0
  42. package/dist/interface/assets/CuiBottomSheet-Bu0PtwX-.js +1 -0
  43. package/dist/interface/assets/CuiBottomSheet-DIg-nl0p.js +1 -0
  44. package/dist/interface/assets/CuiCameraPipCard-q3yeptLd.js +1 -0
  45. package/dist/interface/assets/CuiCameraRecordings-BWN8gBl4.js +1 -0
  46. package/dist/interface/assets/CuiCameraShares-BggG5Ic_.js +1 -0
  47. package/dist/interface/assets/CuiCameraTable-BCrE4TMJ.js +2 -0
  48. package/dist/interface/assets/CuiDataTable-Dk8LJl5S.js +1 -0
  49. package/dist/interface/assets/CuiLightControl-CaIl2eCO.js +1 -0
  50. package/dist/interface/assets/CuiLightControl-DFrZm_sv.css +1 -0
  51. package/dist/interface/assets/CuiList-Cjbxtb1E.js +1 -0
  52. package/dist/interface/assets/CuiMarkdownContent-Bjs3wRnq.js +1 -0
  53. package/dist/interface/assets/CuiMarkdownContent-Do8-vIl7.js +1 -0
  54. package/dist/interface/assets/CuiPluginCard-cvZkF8Cz.js +2 -0
  55. package/dist/interface/assets/{CuiPluginCategoryChip-D9Vi1SEP.js → CuiPluginCategoryChip-DsEuwQrw.js} +1 -1
  56. package/dist/interface/assets/CuiPluginOAuthButton-Bbwly_xJ.js +2 -0
  57. package/dist/interface/assets/{CuiPluginTrustBadge-D0rUX2i6.js → CuiPluginTrustBadge-BC6F9f-3.js} +1 -1
  58. package/dist/interface/assets/CuiQRCode-DKHFwuhr.js +1 -0
  59. package/dist/interface/assets/CuiRecordingsGrid-DSf7RXci.js +1 -0
  60. package/dist/interface/assets/CuiSchema-Dda4lNPz.js +1 -0
  61. package/dist/interface/assets/CuiTopNavbarItem-BZawroJz.js +1 -0
  62. package/dist/interface/assets/Faces-CvQCD53E.js +1 -0
  63. package/dist/interface/assets/FirstSteps-Dg0Bvjs2.js +1 -0
  64. package/dist/interface/assets/Instances-DisNu3zt.js +1 -0
  65. package/dist/interface/assets/Logs-DSSDjAY-.js +6 -0
  66. package/dist/interface/assets/Menu-CJ-MMxvd.js +1 -0
  67. package/dist/interface/assets/OAuthDeviceFlow-CKTokRaq.js +1 -0
  68. package/dist/interface/assets/Plugin-7daLGUVo.js +1 -0
  69. package/dist/interface/assets/PluginConsole-CcRMneFa.js +7 -0
  70. package/dist/interface/assets/PluginDetail-B1-NdurE.js +2 -0
  71. package/dist/interface/assets/PluginSchema-CP0JWUSD.js +1 -0
  72. package/dist/interface/assets/PluginSearch-BHN0J_JP.js +2 -0
  73. package/dist/interface/assets/PluginSearch-Cx_lzDqC.js +1 -0
  74. package/dist/interface/assets/Plugins-DnMPdcQF.js +1 -0
  75. package/dist/interface/assets/Recordings-Dxs3srmh.js +1 -0
  76. package/dist/interface/assets/SensorEdit-Dq2nV1Wf.js +1 -0
  77. package/dist/interface/assets/SensorHistory-BeCbNWJh.js +1 -0
  78. package/dist/interface/assets/Sensors-BA9P_Ray.css +1 -0
  79. package/dist/interface/assets/Sensors-D9DLdMaD.js +2 -0
  80. package/dist/interface/assets/Settings-DCHoD7r8.js +1 -0
  81. package/dist/interface/assets/SettingsAccount-BrhnlNuF.js +1 -0
  82. package/dist/interface/assets/SettingsAccount-djLxmQ9r.js +1 -0
  83. package/dist/interface/assets/{SettingsAccount-CyNJQSuV.css → SettingsAccount-si-6gWl5.css} +1 -1
  84. package/dist/interface/assets/SettingsAppearance-Bq-xM16S.js +1 -0
  85. package/dist/interface/assets/SettingsAppearance-JKbe5xiH.js +1 -0
  86. package/dist/interface/assets/SettingsBackup-CjlVk3hF.js +1 -0
  87. package/dist/interface/assets/SettingsList-C4mMOKJh.js +1 -0
  88. package/dist/interface/assets/SettingsMqtt-DoYFVHoD.js +1 -0
  89. package/dist/interface/assets/SettingsNotifications-Cmr9Bvy0.js +2 -0
  90. package/dist/interface/assets/SettingsPermissions-D33G-1kM.js +1 -0
  91. package/dist/interface/assets/SettingsRecordings-DYiuW0rA.js +1 -0
  92. package/dist/interface/assets/SettingsRemote-CROA1Oa7.js +1 -0
  93. package/dist/interface/assets/SettingsSystem-rgucO68X.js +2 -0
  94. package/dist/interface/assets/SettingsUsers-2uMPOpyC.js +1 -0
  95. package/dist/interface/assets/Terminal-BMFWoJ_k.js +4 -0
  96. package/dist/interface/assets/VariableInput-Cx9tgiM4.js +1 -0
  97. package/dist/interface/assets/VariableSuggestions-DV_QjTtU.js +1 -0
  98. package/dist/interface/assets/VersionsHandler-v4hH23M_.js +7 -0
  99. package/dist/interface/assets/VirtualSensorCreate-DhuGE1Mf.js +1 -0
  100. package/dist/interface/assets/Workers-DyJXudfY.js +2 -0
  101. package/dist/interface/assets/{account-sFoKqEOV.js → account-C5mHt2Ep.js} +1 -1
  102. package/dist/interface/assets/ace-BqKKexH4.js +1 -0
  103. package/dist/interface/assets/{ace.config-C_wgqTLD.js → ace.config-BNjBs7Fe.js} +1 -1
  104. package/dist/interface/assets/alarm-light-outline-jCTfmz5t.js +1 -0
  105. package/dist/interface/assets/{alert-circle-BQZQ417w.js → alert-circle-Cu_kjPlA.js} +1 -1
  106. package/dist/interface/assets/alert-outline-DXHNnhoP.js +1 -0
  107. package/dist/interface/assets/api-3va2gyB0.css +2 -0
  108. package/dist/interface/assets/{api-DEaXK1Kq.js → api-BKU9IS3U.js} +1 -1
  109. package/dist/interface/assets/api-Cc-rMHwl.js +2 -0
  110. package/dist/interface/assets/arrow-left-DPtWmM6S.js +1 -0
  111. package/dist/interface/assets/arrow-right-outline-BY1ggGA1.js +1 -0
  112. package/dist/interface/assets/{auth-XA5zkqwW.js → auth-B4latCDR.js} +1 -1
  113. package/dist/interface/assets/automationBlueprint-D0F9AHk9.js +1 -0
  114. package/dist/interface/assets/automations-BFkAMu3Y.js +1 -0
  115. package/dist/interface/assets/{back-filled-BdHG6uUx.js → back-filled-r7bN5ObT.js} +1 -1
  116. package/dist/interface/assets/{bell-ring-Dua4zXf_.js → bell-ring-C470qCAb.js} +1 -1
  117. package/dist/interface/assets/{cameras.schema-1a2URPGd.js → cameras.schema-BtaT3B32.js} +1 -1
  118. package/dist/interface/assets/{cctv-DEiPL3U8.js → cctv-BKVOVZCR.js} +1 -1
  119. package/dist/interface/assets/check-circle-Ce_sbfPZ.js +1 -0
  120. package/dist/interface/assets/chevron-down-CjSTp091.js +1 -0
  121. package/dist/interface/assets/chevron-right-B4vB0gm4.js +1 -0
  122. package/dist/interface/assets/{clock-outline-C_f3Ed8x.js → clock-outline-BgcDXoyp.js} +1 -1
  123. package/dist/interface/assets/{close-DNgGJYHi.js → close-CQoGQHOF.js} +1 -1
  124. package/dist/interface/assets/{close-circle-L5juejMg.js → close-circle-DYhkXsRj.js} +1 -1
  125. package/dist/interface/assets/{cloud-check-DD7oRzmo.js → cloud-check-CVx221dJ.js} +1 -1
  126. package/dist/interface/assets/cloudHandoff-CPrXpD0L.js +1 -0
  127. package/dist/interface/assets/{config-C2hgXHyj.js → config-B_lj3Myj.js} +1 -1
  128. package/dist/interface/assets/copy-yhHCVVOa.js +1 -0
  129. package/dist/interface/assets/cube-scan-Ccxismvr.js +1 -0
  130. package/dist/interface/assets/delete-xWUQUP2x.js +1 -0
  131. package/dist/interface/assets/dist-DVb-CALh.js +1 -0
  132. package/dist/interface/assets/download-PLxvyB7s.js +1 -0
  133. package/dist/interface/assets/esm-B4MXP42m.js +1 -0
  134. package/dist/interface/assets/esm-BW9m3dy4.js +1 -0
  135. package/dist/interface/assets/esm-BZ3gh7Fj.js +1 -0
  136. package/dist/interface/assets/esm-Blvz9SsB.js +1 -0
  137. package/dist/interface/assets/esm-CJXU9jaA.js +1 -0
  138. package/dist/interface/assets/esm-Cqqu_mer.js +1 -0
  139. package/dist/interface/assets/esm-CtKbLoV_.js +1 -0
  140. package/dist/interface/assets/esm-CwzNi2iW.js +1 -0
  141. package/dist/interface/assets/esm-KnO8wJyB.js +1 -0
  142. package/dist/interface/assets/esm-Lt6R0RFn.js +1 -0
  143. package/dist/interface/assets/esm-MvRctfDP.js +1 -0
  144. package/dist/interface/assets/esm-W4LX4Rpq.js +1 -0
  145. package/dist/interface/assets/esm-l57LNUWu.js +1 -0
  146. package/dist/interface/assets/esm-xofhyA8r.js +1 -0
  147. package/dist/interface/assets/eye-off-C8kzsdYU.js +1 -0
  148. package/dist/interface/assets/flowSchema-CyZseAPD.js +1 -0
  149. package/dist/interface/assets/{history-iAZcYg3f.js → history-QBEPNc4X.js} +1 -1
  150. package/dist/interface/assets/home-af3W_y8U.js +1 -0
  151. package/dist/interface/assets/{information-outline-CVsB1bl-.js → information-outline-BPCsozSU.js} +1 -1
  152. package/dist/interface/assets/{lightbulb-outline-nNLyXAIp.js → lightbulb-outline-ccTlGyvW.js} +1 -1
  153. package/dist/interface/assets/main-C4qjk6s5.js +3 -0
  154. package/dist/interface/assets/main-aZt-Pooz.css +1 -0
  155. package/dist/interface/assets/{microphone-CU0mFDMh.js → microphone-5exHwwyq.js} +1 -1
  156. package/dist/interface/assets/mqtt-CFw_CCq8.js +1 -0
  157. package/dist/interface/assets/native-Cpj7zrLp.js +1 -0
  158. package/dist/interface/assets/native-D--k2WN1.js +1 -0
  159. package/dist/interface/assets/nodeDefinitions-CRrkU6zR.js +1 -0
  160. package/dist/interface/assets/{notifications-BHQN6WD4.js → notifications-0_glcRlR.js} +1 -1
  161. package/dist/interface/assets/{pencil-outline-BQxLTlZx.js → pencil-outline-M9I4mCJO.js} +1 -1
  162. package/dist/interface/assets/plugin-D3FpjfF8.js +1 -0
  163. package/dist/interface/assets/{plugins-C0RtyBHQ.js → plugins-ICpmsguj.js} +1 -1
  164. package/dist/interface/assets/plus-CGIx-WV8.js +1 -0
  165. package/dist/interface/assets/{plus-Ct6WQfM1.js → plus-CrfQUUEC.js} +1 -1
  166. package/dist/interface/assets/power-VnZM2-0c.js +1 -0
  167. package/dist/interface/assets/{ring-resize-CZBThoQC.js → ring-resize-CodGa6wQ.js} +1 -1
  168. package/dist/interface/assets/rolldown-runtime-C0FnF6B9.js +1 -0
  169. package/dist/interface/assets/{round-alt-arrow-left-bold-BlpNMBxm.js → round-alt-arrow-left-bold-DTrlW4yx.js} +1 -1
  170. package/dist/interface/assets/round-restart-alt-CxUkNgtt.js +1 -0
  171. package/dist/interface/assets/{search-M4Rt52Co.js → search-miJXZGQz.js} +1 -1
  172. package/dist/interface/assets/sensors-Bh5GuQ78.js +1 -0
  173. package/dist/interface/assets/{server-CVSOthzT.js → server-DbpDC3pc.js} +1 -1
  174. package/dist/interface/assets/{settings-CgToKrFd.js → settings-DY0TJSAM.js} +1 -1
  175. package/dist/interface/assets/{source-branch-CoHKTGxb.js → source-branch-nw9fwXin.js} +1 -1
  176. package/dist/interface/assets/{theme-BZi7VV10.js → theme-DlMdsvGC.js} +1 -1
  177. package/dist/interface/assets/{trash-2-BKWfq15D.js → trash-2-B-di2M48.js} +1 -1
  178. package/dist/interface/assets/trash-can-outline-BbZkHoW7.js +1 -0
  179. package/dist/interface/assets/{trash-fill-yNQsFs0Y.js → trash-fill-Bgen5QTD.js} +1 -1
  180. package/dist/interface/assets/{trash2-DjTG9rG-.js → trash2-BP__fHgN.js} +1 -1
  181. package/dist/interface/assets/types-C1VwkReu.js +1 -0
  182. package/dist/interface/assets/{types-Bw8H-UB4.js → types-CggzoTPX.js} +1 -1
  183. package/dist/interface/assets/upload-CNYrnwuV.js +1 -0
  184. package/dist/interface/assets/{useAppVersion-CDTrwxkp.js → useAppVersion-CCxZnwIP.js} +1 -1
  185. package/dist/interface/assets/useBackupRestore-DQQc_D6D.js +1 -0
  186. package/dist/interface/assets/useCameraOptions-DVlhUpbE.js +1 -0
  187. package/dist/interface/assets/{useCardSelection-CgZ7QTaA.js → useCardSelection-B3B2qPHO.js} +1 -1
  188. package/dist/interface/assets/{useElectron-CgLWOhcS.js → useElectron-KnqvZz0q.js} +1 -1
  189. package/dist/interface/assets/useLogsSocket-CUQwZ6wm.js +5 -0
  190. package/dist/interface/assets/{usePermissions-tzi2t12h.js → usePermissions-C3D3JcPH.js} +1 -1
  191. package/dist/interface/assets/useServerRestart-CqZRPCpR.js +1 -0
  192. package/dist/interface/assets/{useStreamStatus-BV_L7pxB.js → useStreamStatus-CVJFHRLZ.js} +1 -1
  193. package/dist/interface/assets/useUserOptions-drl3-JUC.js +1 -0
  194. package/dist/interface/assets/{variable-Y3IAPnsB.js → variable-CbNySf4s.js} +1 -1
  195. package/dist/interface/assets/vendor-CSg6_Jfu.js +22 -0
  196. package/dist/interface/assets/vendor-ace-DIEVbs6L.js +1085 -0
  197. package/dist/interface/assets/vendor-cameraui-Cgb5z6NJ.js +2040 -0
  198. package/dist/interface/assets/vendor-capacitor-C-8IYzpJ.js +2 -0
  199. package/dist/interface/assets/vendor-chart-CoQ9HTE3.js +3 -0
  200. package/dist/interface/assets/vendor-core-BJsSXMFQ.js +1 -0
  201. package/dist/interface/assets/{vendor-dnd-hwiZJHjo.js → vendor-dnd-DQF7Aoap.js} +2 -2
  202. package/dist/interface/assets/vendor-draggabilly-Cghb3aIb.js +1 -0
  203. package/dist/interface/assets/vendor-gridstack-qw2ro2uB.js +3 -0
  204. package/dist/interface/assets/{vendor-leaflet-BMMJO5Nd.js → vendor-leaflet-Bcgd-fkG.js} +1 -1
  205. package/dist/interface/assets/vendor-markdown-DWwrEE67.js +14 -0
  206. package/dist/interface/assets/{vendor-primevue-C6wcTjtT.js → vendor-primevue-CyD8V_Ft.js} +85 -85
  207. package/dist/interface/assets/vendor-vueflow-crUU2mAI.js +26 -0
  208. package/dist/interface/assets/vendor-xterm-BafMBqaV.js +91 -0
  209. package/dist/interface/assets/vendor-zod-Dbq0fBXY.js +127 -0
  210. package/dist/interface/assets/web-BX3axHeB.js +1 -0
  211. package/dist/interface/assets/web-BcHmbPny.js +1 -0
  212. package/dist/interface/assets/web-BjKL51lK-BQjyRtns.js +1 -0
  213. package/dist/interface/assets/web-C8w-z-xR.js +1 -0
  214. package/dist/interface/assets/web-CHdniv8I.js +1 -0
  215. package/dist/interface/assets/web-CWBhY0Av.js +1 -0
  216. package/dist/interface/assets/web-Cf1yYy4u.js +1 -0
  217. package/dist/interface/assets/web-Ct6Vkr6F.js +1 -0
  218. package/dist/interface/assets/web-DARDw7d8.js +1 -0
  219. package/dist/interface/assets/web-DKBMdBSA.js +1 -0
  220. package/dist/interface/assets/web-Ddzvp-fv.js +1 -0
  221. package/dist/interface/assets/web-Dymr_MpD.js +1 -0
  222. package/dist/interface/assets/web-XIuTPdFc.js +1 -0
  223. package/dist/interface/assets/web-lrnXIJTz.js +1 -0
  224. package/dist/interface/assets/{webhook-yCryYojY.js → webhook-B7YgiSrF.js} +1 -1
  225. package/dist/interface/assets/workbox-window.prod.es5-BkFwsIPp.js +1 -0
  226. package/dist/interface/assets/{zoom-in-Da5uRiQq.js → zoom-in-D7BJNotF.js} +1 -1
  227. package/dist/interface/index.html +44 -40
  228. package/dist/interface/sw.js +1 -1
  229. package/dist/server/package.json +11 -11
  230. package/dist/server/requirements.txt +4 -6
  231. package/dist/server/src/_camera_ui_tools/camera_ui_rpc/client.py +3 -0
  232. package/dist/server/src/_camera_ui_tools/camera_ui_rpc/types.py +4 -0
  233. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +9 -14
  234. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/__init__.py +0 -4
  235. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +5 -12
  236. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/detection.py +6 -23
  237. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/device.py +60 -100
  238. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/events.py +3 -2
  239. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/frames.py +2 -0
  240. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/__init__.py +2 -20
  241. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/camera_config_internal.py +1 -1
  242. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/camera_enums.py +3 -3
  243. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/event_emitter.py +13 -26
  244. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/manager_rpc.py +2 -5
  245. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/sensor_rpc.py +21 -6
  246. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/shared_utils.py +7 -18
  247. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/manager/__init__.py +91 -29
  248. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/observable/__init__.py +145 -37
  249. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/__init__.py +10 -1
  250. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/api.py +21 -68
  251. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/contract.py +31 -58
  252. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/helper.py +3 -12
  253. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/interfaces.py +137 -99
  254. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/notifier.py +34 -52
  255. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/oauth.py +4 -4
  256. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +3 -4
  257. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/audio.py +45 -39
  258. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +329 -256
  259. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/battery.py +17 -16
  260. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/classifier.py +31 -27
  261. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/clip.py +14 -12
  262. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/contact.py +11 -10
  263. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/detection.py +34 -22
  264. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/doorbell.py +19 -19
  265. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/face.py +34 -28
  266. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/garage.py +29 -20
  267. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/humidity.py +22 -12
  268. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/leak.py +12 -11
  269. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/license_plate.py +35 -31
  270. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/light.py +22 -18
  271. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/lock.py +26 -19
  272. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/motion.py +28 -27
  273. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/object.py +37 -33
  274. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/occupancy.py +11 -10
  275. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/ptz.py +20 -24
  276. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/security_system.py +22 -22
  277. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/siren.py +17 -16
  278. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/smoke.py +11 -10
  279. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/spec.py +26 -22
  280. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/switch.py +13 -12
  281. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/temperature.py +22 -12
  282. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/storage/__init__.py +56 -38
  283. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/types.py +15 -18
  284. package/dist/server/src/api/controllers/auth.controller.js +2 -1
  285. package/dist/server/src/api/controllers/auth.controller.js.map +1 -1
  286. package/dist/server/src/api/controllers/cameras.controller.d.ts +6 -0
  287. package/dist/server/src/api/controllers/cameras.controller.js +21 -11
  288. package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
  289. package/dist/server/src/api/controllers/cast.controller.d.ts +11 -0
  290. package/dist/server/src/api/controllers/cast.controller.js +29 -0
  291. package/dist/server/src/api/controllers/cast.controller.js.map +1 -0
  292. package/dist/server/src/api/controllers/notifications.controller.d.ts +12 -0
  293. package/dist/server/src/api/controllers/notifications.controller.js +41 -0
  294. package/dist/server/src/api/controllers/notifications.controller.js.map +1 -1
  295. package/dist/server/src/api/controllers/nvr.controller.d.ts +14 -0
  296. package/dist/server/src/api/controllers/nvr.controller.js +61 -0
  297. package/dist/server/src/api/controllers/nvr.controller.js.map +1 -0
  298. package/dist/server/src/api/controllers/sensors.controller.d.ts +13 -0
  299. package/dist/server/src/api/controllers/sensors.controller.js +94 -0
  300. package/dist/server/src/api/controllers/sensors.controller.js.map +1 -0
  301. package/dist/server/src/api/controllers/server.controller.d.ts +1 -0
  302. package/dist/server/src/api/controllers/server.controller.js +11 -0
  303. package/dist/server/src/api/controllers/server.controller.js.map +1 -1
  304. package/dist/server/src/api/controllers/tunnel.controller.d.ts +0 -3
  305. package/dist/server/src/api/controllers/tunnel.controller.js +1 -21
  306. package/dist/server/src/api/controllers/tunnel.controller.js.map +1 -1
  307. package/dist/server/src/api/database/constants.d.ts +2 -0
  308. package/dist/server/src/api/database/constants.js +2 -0
  309. package/dist/server/src/api/database/constants.js.map +1 -1
  310. package/dist/server/src/api/database/index.d.ts +5 -2
  311. package/dist/server/src/api/database/index.js +7 -4
  312. package/dist/server/src/api/database/index.js.map +1 -1
  313. package/dist/server/src/api/database/migrations/v2-1-0.d.ts +3 -0
  314. package/dist/server/src/api/database/migrations/v2-1-0.js +72 -0
  315. package/dist/server/src/api/database/migrations/v2-1-0.js.map +1 -0
  316. package/dist/server/src/api/database/record-schemas.d.ts +2 -3
  317. package/dist/server/src/api/database/record-schemas.js +3 -3
  318. package/dist/server/src/api/database/record-schemas.js.map +1 -1
  319. package/dist/server/src/api/database/types.d.ts +27 -3
  320. package/dist/server/src/api/index.js +3 -0
  321. package/dist/server/src/api/index.js.map +1 -1
  322. package/dist/server/src/api/plugins/natsSubFirewall.d.ts +1 -1
  323. package/dist/server/src/api/plugins/natsSubFirewall.js +5 -2
  324. package/dist/server/src/api/plugins/natsSubFirewall.js.map +1 -1
  325. package/dist/server/src/api/plugins/proxy.plugin.js +5 -3
  326. package/dist/server/src/api/plugins/proxy.plugin.js.map +1 -1
  327. package/dist/server/src/api/routes/cameras.routes.js +14 -7
  328. package/dist/server/src/api/routes/cameras.routes.js.map +1 -1
  329. package/dist/server/src/api/routes/cast.routes.d.ts +2 -0
  330. package/dist/server/src/api/routes/cast.routes.js +29 -0
  331. package/dist/server/src/api/routes/cast.routes.js.map +1 -0
  332. package/dist/server/src/api/routes/index.js +6 -2
  333. package/dist/server/src/api/routes/index.js.map +1 -1
  334. package/dist/server/src/api/routes/notifications.routes.js +32 -0
  335. package/dist/server/src/api/routes/notifications.routes.js.map +1 -1
  336. package/dist/server/src/api/routes/nvr.routes.d.ts +2 -0
  337. package/dist/server/src/api/routes/nvr.routes.js +19 -0
  338. package/dist/server/src/api/routes/nvr.routes.js.map +1 -0
  339. package/dist/server/src/api/routes/sensors.routes.d.ts +2 -0
  340. package/dist/server/src/api/routes/sensors.routes.js +89 -0
  341. package/dist/server/src/api/routes/sensors.routes.js.map +1 -0
  342. package/dist/server/src/api/routes/server.routes.js +10 -0
  343. package/dist/server/src/api/routes/server.routes.js.map +1 -1
  344. package/dist/server/src/api/schemas/cameras.schema.d.ts +103 -45
  345. package/dist/server/src/api/schemas/cameras.schema.js +7 -10
  346. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  347. package/dist/server/src/api/schemas/cast.schema.d.ts +7 -0
  348. package/dist/server/src/api/schemas/cast.schema.js +7 -0
  349. package/dist/server/src/api/schemas/cast.schema.js.map +1 -0
  350. package/dist/server/src/api/schemas/nvr.schema.d.ts +10 -0
  351. package/dist/server/src/api/schemas/nvr.schema.js +13 -0
  352. package/dist/server/src/api/schemas/nvr.schema.js.map +1 -0
  353. package/dist/server/src/api/schemas/{virtualsensors.schema.d.ts → sensors.schema.d.ts} +15 -8
  354. package/dist/server/src/api/schemas/sensors.schema.js +25 -0
  355. package/dist/server/src/api/schemas/sensors.schema.js.map +1 -0
  356. package/dist/server/src/api/schemas/users.schema.d.ts +7 -18
  357. package/dist/server/src/api/schemas/users.schema.js +3 -7
  358. package/dist/server/src/api/schemas/users.schema.js.map +1 -1
  359. package/dist/server/src/api/services/cameras.service.js +1 -1
  360. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  361. package/dist/server/src/api/services/cast.service.d.ts +7 -0
  362. package/dist/server/src/api/services/cast.service.js +14 -0
  363. package/dist/server/src/api/services/cast.service.js.map +1 -0
  364. package/dist/server/src/api/services/instances.service.js +1 -1
  365. package/dist/server/src/api/services/notifications.service.d.ts +3 -0
  366. package/dist/server/src/api/services/notifications.service.js +9 -0
  367. package/dist/server/src/api/services/notifications.service.js.map +1 -1
  368. package/dist/server/src/api/services/plugins.service.js +18 -3
  369. package/dist/server/src/api/services/plugins.service.js.map +1 -1
  370. package/dist/server/src/api/services/sensors.service.d.ts +41 -0
  371. package/dist/server/src/api/services/sensors.service.js +106 -0
  372. package/dist/server/src/api/services/sensors.service.js.map +1 -0
  373. package/dist/server/src/api/services/server.service.d.ts +4 -0
  374. package/dist/server/src/api/services/server.service.js +14 -0
  375. package/dist/server/src/api/services/server.service.js.map +1 -1
  376. package/dist/server/src/api/services/users.service.js +6 -9
  377. package/dist/server/src/api/services/users.service.js.map +1 -1
  378. package/dist/server/src/api/types/index.d.ts +19 -6
  379. package/dist/server/src/api/websocket/nsp/events.js +38 -15
  380. package/dist/server/src/api/websocket/nsp/events.js.map +1 -1
  381. package/dist/server/src/api.d.ts +0 -2
  382. package/dist/server/src/api.js +0 -12
  383. package/dist/server/src/api.js.map +1 -1
  384. package/dist/server/src/automations/actions/sensor.js +4 -7
  385. package/dist/server/src/automations/actions/sensor.js.map +1 -1
  386. package/dist/server/src/automations/conditions/sensorState.js +4 -4
  387. package/dist/server/src/automations/conditions/sensorState.js.map +1 -1
  388. package/dist/server/src/automations/context.d.ts +2 -1
  389. package/dist/server/src/automations/context.js +2 -1
  390. package/dist/server/src/automations/context.js.map +1 -1
  391. package/dist/server/src/automations/pluginMethodRegistry.d.ts +2 -0
  392. package/dist/server/src/automations/pluginMethodRegistry.js +14 -0
  393. package/dist/server/src/automations/pluginMethodRegistry.js.map +1 -1
  394. package/dist/server/src/automations/triggers/sensor.js +12 -23
  395. package/dist/server/src/automations/triggers/sensor.js.map +1 -1
  396. package/dist/server/src/camera/controller.d.ts +0 -1
  397. package/dist/server/src/camera/controller.js +9 -46
  398. package/dist/server/src/camera/controller.js.map +1 -1
  399. package/dist/server/src/camera/decoder/detection-coordinator.js +13 -11
  400. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  401. package/dist/server/src/camera/decoder/plugin-registry.d.ts +1 -0
  402. package/dist/server/src/camera/decoder/plugin-registry.js +13 -1
  403. package/dist/server/src/camera/decoder/plugin-registry.js.map +1 -1
  404. package/dist/server/src/camera/decoder/ptz/autotracker.js +2 -2
  405. package/dist/server/src/camera/decoder/ptz/autotracker.js.map +1 -1
  406. package/dist/server/src/camera/decoder/secondary-stage.js +6 -6
  407. package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
  408. package/dist/server/src/camera/decoder/types.d.ts +7 -1
  409. package/dist/server/src/camera/decoder/types.js +4 -0
  410. package/dist/server/src/camera/decoder/types.js.map +1 -1
  411. package/dist/server/src/camera/decoder/worker.d.ts +2 -0
  412. package/dist/server/src/camera/decoder/worker.js +14 -3
  413. package/dist/server/src/camera/decoder/worker.js.map +1 -1
  414. package/dist/server/src/camera/index.d.ts +2 -14
  415. package/dist/server/src/camera/index.js +1 -32
  416. package/dist/server/src/camera/index.js.map +1 -1
  417. package/dist/server/src/camera/sensors/controller.d.ts +17 -77
  418. package/dist/server/src/camera/sensors/controller.js +60 -445
  419. package/dist/server/src/camera/sensors/controller.js.map +1 -1
  420. package/dist/server/src/internal-bus.d.ts +7 -13
  421. package/dist/server/src/internal-bus.js.map +1 -1
  422. package/dist/server/src/main.d.ts +1 -0
  423. package/dist/server/src/main.js +7 -0
  424. package/dist/server/src/main.js.map +1 -1
  425. package/dist/server/src/manager/castManager.d.ts +24 -0
  426. package/dist/server/src/manager/castManager.js +79 -0
  427. package/dist/server/src/manager/castManager.js.map +1 -0
  428. package/dist/server/src/manager/downloadManager.d.ts +1 -0
  429. package/dist/server/src/manager/downloadManager.js +6 -0
  430. package/dist/server/src/manager/downloadManager.js.map +1 -1
  431. package/dist/server/src/manager/notificationManager.d.ts +6 -0
  432. package/dist/server/src/manager/notificationManager.js +70 -3
  433. package/dist/server/src/manager/notificationManager.js.map +1 -1
  434. package/dist/server/src/mqtt/bridge.d.ts +7 -0
  435. package/dist/server/src/mqtt/bridge.js +92 -32
  436. package/dist/server/src/mqtt/bridge.js.map +1 -1
  437. package/dist/server/src/mqtt/ha-discovery.d.ts +1 -1
  438. package/dist/server/src/mqtt/ha-discovery.js +53 -8
  439. package/dist/server/src/mqtt/ha-discovery.js.map +1 -1
  440. package/dist/server/src/mqtt/manager.js +1 -1
  441. package/dist/server/src/mqtt/manager.js.map +1 -1
  442. package/dist/server/src/mqtt/topics.d.ts +3 -3
  443. package/dist/server/src/mqtt/topics.js +11 -10
  444. package/dist/server/src/mqtt/topics.js.map +1 -1
  445. package/dist/server/src/plugins/config-store.js +1 -1
  446. package/dist/server/src/plugins/config-store.js.map +1 -1
  447. package/dist/server/src/plugins/runtime/base.d.ts +1 -0
  448. package/dist/server/src/plugins/runtime/base.js +29 -6
  449. package/dist/server/src/plugins/runtime/base.js.map +1 -1
  450. package/dist/server/src/plugins/runtime/node/child.js +5 -2
  451. package/dist/server/src/plugins/runtime/node/child.js.map +1 -1
  452. package/dist/server/src/plugins/runtime/node/pluginApi.d.ts +2 -0
  453. package/dist/server/src/plugins/runtime/node/pluginApi.js +4 -1
  454. package/dist/server/src/plugins/runtime/node/pluginApi.js.map +1 -1
  455. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.d.ts +5 -13
  456. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +97 -179
  457. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -1
  458. package/dist/server/src/plugins/runtime/node/proxy/deviceManager.d.ts +2 -1
  459. package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js +26 -7
  460. package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js.map +1 -1
  461. package/dist/server/src/plugins/runtime/node/proxy/reconnect.d.ts +2 -0
  462. package/dist/server/src/plugins/runtime/node/proxy/reconnect.js +27 -0
  463. package/dist/server/src/plugins/runtime/node/proxy/reconnect.js.map +1 -0
  464. package/dist/server/src/plugins/runtime/node/proxy/sensor.d.ts +17 -3
  465. package/dist/server/src/plugins/runtime/node/proxy/sensor.js +61 -20
  466. package/dist/server/src/plugins/runtime/node/proxy/sensor.js.map +1 -1
  467. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.d.ts +18 -0
  468. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js +269 -0
  469. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js.map +1 -0
  470. package/dist/server/src/plugins/runtime/node/storage.d.ts +1 -1
  471. package/dist/server/src/plugins/runtime/node/storage.js +10 -7
  472. package/dist/server/src/plugins/runtime/node/storage.js.map +1 -1
  473. package/dist/server/src/plugins/runtime/node/storageController.d.ts +5 -7
  474. package/dist/server/src/plugins/runtime/node/storageController.js +18 -43
  475. package/dist/server/src/plugins/runtime/node/storageController.js.map +1 -1
  476. package/dist/server/src/plugins/runtime/python/child.py +13 -7
  477. package/dist/server/src/plugins/runtime/python/namespaces.py +13 -19
  478. package/dist/server/src/plugins/runtime/python/plugin_api.py +10 -1
  479. package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +130 -280
  480. package/dist/server/src/plugins/runtime/python/proxy/device_manager.py +26 -5
  481. package/dist/server/src/plugins/runtime/python/proxy/sensor.py +88 -21
  482. package/dist/server/src/plugins/runtime/python/proxy/sensor_manager.py +386 -0
  483. package/dist/server/src/plugins/runtime/python/storage.py +12 -9
  484. package/dist/server/src/plugins/runtime/python/storage_controller.py +18 -80
  485. package/dist/server/src/plugins/runtime/python/store.py +19 -95
  486. package/dist/server/src/plugins/runtime/python/typings.py +32 -9
  487. package/dist/server/src/plugins/store/layout.d.ts +1 -2
  488. package/dist/server/src/plugins/store/layout.js +9 -56
  489. package/dist/server/src/plugins/store/layout.js.map +1 -1
  490. package/dist/server/src/plugins/store/location.d.ts +2 -3
  491. package/dist/server/src/plugins/store/location.js +5 -13
  492. package/dist/server/src/plugins/store/location.js.map +1 -1
  493. package/dist/server/src/plugins/store/pluginStoreFile.d.ts +1 -2
  494. package/dist/server/src/plugins/store/pluginStoreFile.js +8 -15
  495. package/dist/server/src/plugins/store/pluginStoreFile.js.map +1 -1
  496. package/dist/server/src/plugins/worker.d.ts +2 -0
  497. package/dist/server/src/plugins/worker.js +26 -7
  498. package/dist/server/src/plugins/worker.js.map +1 -1
  499. package/dist/server/src/rpc/index.d.ts +2 -0
  500. package/dist/server/src/rpc/index.js +5 -0
  501. package/dist/server/src/rpc/index.js.map +1 -1
  502. package/dist/server/src/rpc/interfaces/sensor.d.ts +33 -16
  503. package/dist/server/src/rpc/namespaces.d.ts +17 -8
  504. package/dist/server/src/rpc/namespaces.js +20 -12
  505. package/dist/server/src/rpc/namespaces.js.map +1 -1
  506. package/dist/server/src/rpc/server.js +1 -0
  507. package/dist/server/src/rpc/server.js.map +1 -1
  508. package/dist/server/src/sensors/registry.d.ts +96 -0
  509. package/dist/server/src/sensors/registry.js +814 -0
  510. package/dist/server/src/sensors/registry.js.map +1 -0
  511. package/dist/server/src/{camera/sensors → sensors}/semantics.d.ts +1 -1
  512. package/dist/server/src/{camera/sensors → sensors}/semantics.js +4 -1
  513. package/dist/server/src/sensors/semantics.js.map +1 -0
  514. package/dist/server/src/sensors/sensor.d.ts +58 -0
  515. package/dist/server/src/{camera/sensors → sensors}/sensor.js +43 -32
  516. package/dist/server/src/sensors/sensor.js.map +1 -0
  517. package/dist/server/src/{camera/sensors → sensors}/types.d.ts +2 -0
  518. package/dist/server/src/{camera/sensors → sensors}/types.js +9 -0
  519. package/dist/server/src/sensors/types.js.map +1 -0
  520. package/dist/server/src/{camera/sensors → sensors}/virtual.d.ts +4 -6
  521. package/dist/server/src/{camera/sensors → sensors}/virtual.js +10 -56
  522. package/dist/server/src/sensors/virtual.js.map +1 -0
  523. package/dist/server/src/services/mdns/index.js +4 -0
  524. package/dist/server/src/services/mdns/index.js.map +1 -1
  525. package/package.json +11 -11
  526. package/dist/interface/assets/404-0d936klL.js +0 -1
  527. package/dist/interface/assets/About-BMwYrGrl.js +0 -1
  528. package/dist/interface/assets/Adminpanel-DBsOmAuo.js +0 -1
  529. package/dist/interface/assets/Automation-BLndVfqR.js +0 -3
  530. package/dist/interface/assets/AutomationImport-Ba33juY0.js +0 -2
  531. package/dist/interface/assets/AutomationStore-Bjf1x7go.js +0 -2
  532. package/dist/interface/assets/AutomationStoreDetail-Ko3n3U1U.js +0 -2
  533. package/dist/interface/assets/Automations-BfC8bvkT.js +0 -2
  534. package/dist/interface/assets/Camera-BYDPeH6d.js +0 -2
  535. package/dist/interface/assets/CameraConsole-pVCj1xXI.js +0 -7
  536. package/dist/interface/assets/Cameras-DdokAe_Q.js +0 -652
  537. package/dist/interface/assets/Camview-DmuGSzal.js +0 -1
  538. package/dist/interface/assets/Config-DvVqB0_Y.js +0 -2
  539. package/dist/interface/assets/ConfigActionDelay-B1JjI6bg.js +0 -1
  540. package/dist/interface/assets/ConfigActionHttp-BzGIbeVo.js +0 -1
  541. package/dist/interface/assets/ConfigActionImageInput-C6m2-s8z.js +0 -1
  542. package/dist/interface/assets/ConfigActionMqtt-ByZNQKsg.js +0 -1
  543. package/dist/interface/assets/ConfigActionNotification-YmdMddoN.js +0 -1
  544. package/dist/interface/assets/ConfigActionNotificationControl-2hWDRBpq.js +0 -1
  545. package/dist/interface/assets/ConfigActionOutput-D9k1-jfI.js +0 -1
  546. package/dist/interface/assets/ConfigActionPlugin-DjD_94EX.js +0 -1
  547. package/dist/interface/assets/ConfigActionSensor-fak8jYSC.js +0 -1
  548. package/dist/interface/assets/ConfigActionSnapshot-mwEHXqyk.js +0 -1
  549. package/dist/interface/assets/ConfigActionVariable-kBxNfyOV.js +0 -1
  550. package/dist/interface/assets/ConfigConditionIfElse-CkjmImTD.js +0 -1
  551. package/dist/interface/assets/ConfigConditionSensorState-FE3mFjRe.js +0 -1
  552. package/dist/interface/assets/ConfigConditionSwitch-msqWizIt.js +0 -1
  553. package/dist/interface/assets/ConfigConditionTime-ifPV135b.js +0 -1
  554. package/dist/interface/assets/ConfigSensorValueInput-Bg3SEbSh.js +0 -1
  555. package/dist/interface/assets/ConfigTriggerGeofence-CemaUwl5.js +0 -1
  556. package/dist/interface/assets/ConfigTriggerManual-DWuiq7PC.js +0 -1
  557. package/dist/interface/assets/ConfigTriggerMqtt-DxAoDh2Z.js +0 -1
  558. package/dist/interface/assets/ConfigTriggerSchedule-DDqgMGvp.js +0 -1
  559. package/dist/interface/assets/ConfigTriggerSensor-M6bXqz4k.js +0 -1
  560. package/dist/interface/assets/ConfigTriggerWebhook-CxOXgcJi.js +0 -1
  561. package/dist/interface/assets/Console-CMuW2_8s.js +0 -1
  562. package/dist/interface/assets/CuiAutomationRunsDialog-yh1qHzmS.js +0 -1
  563. package/dist/interface/assets/CuiBottomSheet-BshiVWqw.js +0 -1
  564. package/dist/interface/assets/CuiBottomSheet-DSNyVg5P.js +0 -1
  565. package/dist/interface/assets/CuiCameraPipCard-Cmk0jl6M.js +0 -1
  566. package/dist/interface/assets/CuiCameraRecordings-KU1wIai4.js +0 -1
  567. package/dist/interface/assets/CuiCameraShares-BoR3YQWj.js +0 -1
  568. package/dist/interface/assets/CuiCameraTable-BRPBqU8V.js +0 -2
  569. package/dist/interface/assets/CuiDataTable-BGY4VBtv.js +0 -1
  570. package/dist/interface/assets/CuiList-BSOMR296.js +0 -1
  571. package/dist/interface/assets/CuiMarkdownContent-DEMo42iT.js +0 -1
  572. package/dist/interface/assets/CuiMarkdownContent-Xn_VHwym.js +0 -1
  573. package/dist/interface/assets/CuiPluginCard-CgJb8B1W.js +0 -2
  574. package/dist/interface/assets/CuiPluginOAuthButton-XpEyqoRm.js +0 -2
  575. package/dist/interface/assets/CuiQRCode-QBkbmvRA.js +0 -1
  576. package/dist/interface/assets/CuiRecordingsGrid-CuEl_hhu.js +0 -1
  577. package/dist/interface/assets/CuiSchema-D_cg-H5i.js +0 -1
  578. package/dist/interface/assets/CuiTopNavbarItem-CXijnkK9.js +0 -1
  579. package/dist/interface/assets/Faces-C95mlWaW.js +0 -1
  580. package/dist/interface/assets/FirstSteps-Cpbg7fng.js +0 -1
  581. package/dist/interface/assets/Instances-BgJtM1Xl.js +0 -1
  582. package/dist/interface/assets/Logs-BWXYqm5T.js +0 -6
  583. package/dist/interface/assets/Menu-BO9Zjy1w.js +0 -1
  584. package/dist/interface/assets/OAuthDeviceFlow-NnwqdmBM.js +0 -1
  585. package/dist/interface/assets/Plugin-DQq3xjhe.js +0 -1
  586. package/dist/interface/assets/PluginConsole-BTsVAsKf.js +0 -7
  587. package/dist/interface/assets/PluginDetail-CTyzzZVU.js +0 -2
  588. package/dist/interface/assets/PluginSchema-Bn3pHjQA.js +0 -1
  589. package/dist/interface/assets/PluginSearch-DbXCyUF0.js +0 -1
  590. package/dist/interface/assets/PluginSearch-z0z8Z1gP.js +0 -2
  591. package/dist/interface/assets/Plugins-Cy7e-ty2.js +0 -1
  592. package/dist/interface/assets/Recordings-CWBpGEUf.js +0 -1
  593. package/dist/interface/assets/Settings-CUIORSmm.js +0 -1
  594. package/dist/interface/assets/SettingsAccount-CeJBKpzp.js +0 -1
  595. package/dist/interface/assets/SettingsAccount-CnwVrQx1.js +0 -1
  596. package/dist/interface/assets/SettingsAppearance-BraaC0WF.js +0 -1
  597. package/dist/interface/assets/SettingsAppearance-CZrOTBki.js +0 -1
  598. package/dist/interface/assets/SettingsBackup-y9mb8XZZ.js +0 -1
  599. package/dist/interface/assets/SettingsList-DsKncveQ.js +0 -1
  600. package/dist/interface/assets/SettingsMqtt-DTyyctmQ.js +0 -1
  601. package/dist/interface/assets/SettingsNotifications-SFMt4Yuj.js +0 -2
  602. package/dist/interface/assets/SettingsPermissions-CktJaQzL.js +0 -1
  603. package/dist/interface/assets/SettingsRecordings-Bqguyt6u.js +0 -1
  604. package/dist/interface/assets/SettingsRemote-CTv7bb4g.js +0 -1
  605. package/dist/interface/assets/SettingsSystem-CkCnB34r.js +0 -2
  606. package/dist/interface/assets/SettingsUsers-D8LAGd6F.js +0 -1
  607. package/dist/interface/assets/Terminal-DaR9Ur0_.js +0 -4
  608. package/dist/interface/assets/VariableInput-D0TP_Lmo.js +0 -1
  609. package/dist/interface/assets/VariableSuggestions--vq7928F.js +0 -1
  610. package/dist/interface/assets/VersionsHandler-D9GDdcXr.js +0 -7
  611. package/dist/interface/assets/Workers-CUyRzwJG.js +0 -2
  612. package/dist/interface/assets/ace-DYqf8ZN7.js +0 -1
  613. package/dist/interface/assets/alert-outline-BUvdNY2J.js +0 -1
  614. package/dist/interface/assets/api-DxrxNyIH.js +0 -2
  615. package/dist/interface/assets/api-VZ_wVUpU.css +0 -2
  616. package/dist/interface/assets/arrow-left-LdfKbcre.js +0 -1
  617. package/dist/interface/assets/arrow-right-outline-BbTEhBJq.js +0 -1
  618. package/dist/interface/assets/automationBlueprint-DMjszOs4.js +0 -1
  619. package/dist/interface/assets/automations-51-JMUWD.js +0 -1
  620. package/dist/interface/assets/check-circle-D-utE_P9.js +0 -1
  621. package/dist/interface/assets/chevron-down-OEjMpuec.js +0 -1
  622. package/dist/interface/assets/chevron-right-B3nxd9UE.js +0 -1
  623. package/dist/interface/assets/cloudHandoff-BktPB9rt.js +0 -1
  624. package/dist/interface/assets/copy-BvSzmsFs.js +0 -1
  625. package/dist/interface/assets/delete-B9BZTgya.js +0 -1
  626. package/dist/interface/assets/dist-qdWlJrr0.js +0 -1
  627. package/dist/interface/assets/download-Dp_ssGIE.js +0 -1
  628. package/dist/interface/assets/esm-9VMgxuPI.js +0 -1
  629. package/dist/interface/assets/esm-B69zS8aI.js +0 -1
  630. package/dist/interface/assets/esm-BF94InGP.js +0 -1
  631. package/dist/interface/assets/esm-BHdK6hkk.js +0 -1
  632. package/dist/interface/assets/esm-BYm8JT8N.js +0 -1
  633. package/dist/interface/assets/esm-BwCmHX2G.js +0 -1
  634. package/dist/interface/assets/esm-CL6t-XYT.js +0 -1
  635. package/dist/interface/assets/esm-CXstRMXa.js +0 -1
  636. package/dist/interface/assets/esm-Ckb9rjlL.js +0 -1
  637. package/dist/interface/assets/esm-D4insKbc.js +0 -1
  638. package/dist/interface/assets/esm-DiReJ8YS.js +0 -1
  639. package/dist/interface/assets/esm-Dt_Neag0.js +0 -1
  640. package/dist/interface/assets/esm-GspmWlKf.js +0 -1
  641. package/dist/interface/assets/esm-eezqpB2a.js +0 -1
  642. package/dist/interface/assets/flowSchema-Ckr7CEbZ.js +0 -1
  643. package/dist/interface/assets/home-DL94781-.js +0 -1
  644. package/dist/interface/assets/main-BxM81wMi.css +0 -1
  645. package/dist/interface/assets/main-DOjghmGX.js +0 -3
  646. package/dist/interface/assets/mqtt-COazyb4A.js +0 -1
  647. package/dist/interface/assets/native-WiRjRKUS.js +0 -1
  648. package/dist/interface/assets/native-hhip9y-E.js +0 -1
  649. package/dist/interface/assets/nodeDefinitions-CPyyuw1P.js +0 -1
  650. package/dist/interface/assets/plugin-DIVM640y.js +0 -1
  651. package/dist/interface/assets/plus-CTzaBaTz.js +0 -1
  652. package/dist/interface/assets/power-CvKGepBP.js +0 -1
  653. package/dist/interface/assets/rolldown-runtime-DAXXjFlN.js +0 -1
  654. package/dist/interface/assets/round-restart-alt-D3iswthu.js +0 -1
  655. package/dist/interface/assets/trash-can-outline-HvqPHpF7.js +0 -1
  656. package/dist/interface/assets/types-CDJiWcQ7.js +0 -1
  657. package/dist/interface/assets/upload-B6yqOWqz.js +0 -1
  658. package/dist/interface/assets/useBackupRestore-QuXkc5ZG.js +0 -1
  659. package/dist/interface/assets/useCameraOptions-D5-bI-e6.js +0 -1
  660. package/dist/interface/assets/useLogsSocket-BlAo-xcw.js +0 -5
  661. package/dist/interface/assets/useServerRestart-DctcFWWh.js +0 -1
  662. package/dist/interface/assets/useUserOptions-nuBRgAEk.js +0 -1
  663. package/dist/interface/assets/vendor-ace-CrklN-bc.js +0 -1085
  664. package/dist/interface/assets/vendor-cameraui-B_OCKNGw.js +0 -2040
  665. package/dist/interface/assets/vendor-capacitor-D6T-f6Q_.js +0 -2
  666. package/dist/interface/assets/vendor-chart-DpsXMlB-.js +0 -3
  667. package/dist/interface/assets/vendor-core-zLmLhSHM.js +0 -1
  668. package/dist/interface/assets/vendor-draggabilly-OrLwQbim.js +0 -1
  669. package/dist/interface/assets/vendor-gridstack-C6VKsm_r.js +0 -3
  670. package/dist/interface/assets/vendor-markdown-_OBaDsnU.js +0 -15
  671. package/dist/interface/assets/vendor-nfBMzqgY.js +0 -22
  672. package/dist/interface/assets/vendor-vueflow-B1MUSE71.js +0 -26
  673. package/dist/interface/assets/vendor-xterm-IIYDrBG1.js +0 -142
  674. package/dist/interface/assets/vendor-zod-BaT-dXMv.js +0 -127
  675. package/dist/interface/assets/web-B-SlpbxK.js +0 -1
  676. package/dist/interface/assets/web-B6leYIzJ.js +0 -1
  677. package/dist/interface/assets/web-BLDe3Kn0.js +0 -1
  678. package/dist/interface/assets/web-BT-51W2W.js +0 -1
  679. package/dist/interface/assets/web-BjKL51lK-DHLvmMLr.js +0 -1
  680. package/dist/interface/assets/web-BpRU7MbT.js +0 -1
  681. package/dist/interface/assets/web-CiaJvmq8.js +0 -1
  682. package/dist/interface/assets/web-Cnkt61og.js +0 -1
  683. package/dist/interface/assets/web-CzhM-YH1.js +0 -1
  684. package/dist/interface/assets/web-Da5rcZ2Q.js +0 -1
  685. package/dist/interface/assets/web-DdZjFuTb.js +0 -1
  686. package/dist/interface/assets/web-DnHj9sl9.js +0 -1
  687. package/dist/interface/assets/web-E4Ew4Xhj.js +0 -1
  688. package/dist/interface/assets/web-q63OEDhG.js +0 -1
  689. package/dist/interface/assets/workbox-window.prod.es5-BMiTt6Ad.js +0 -1
  690. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/sensor_triggers.py +0 -4
  691. package/dist/server/src/api/controllers/virtualsensors.controller.d.ts +0 -11
  692. package/dist/server/src/api/controllers/virtualsensors.controller.js +0 -61
  693. package/dist/server/src/api/controllers/virtualsensors.controller.js.map +0 -1
  694. package/dist/server/src/api/routes/virtualsensors.routes.d.ts +0 -2
  695. package/dist/server/src/api/routes/virtualsensors.routes.js +0 -63
  696. package/dist/server/src/api/routes/virtualsensors.routes.js.map +0 -1
  697. package/dist/server/src/api/schemas/virtualsensors.schema.js +0 -14
  698. package/dist/server/src/api/schemas/virtualsensors.schema.js.map +0 -1
  699. package/dist/server/src/api/services/virtualsensors.service.d.ts +0 -20
  700. package/dist/server/src/api/services/virtualsensors.service.js +0 -151
  701. package/dist/server/src/api/services/virtualsensors.service.js.map +0 -1
  702. package/dist/server/src/camera/sensors/semantics.js.map +0 -1
  703. package/dist/server/src/camera/sensors/sensor.d.ts +0 -34
  704. package/dist/server/src/camera/sensors/sensor.js.map +0 -1
  705. package/dist/server/src/camera/sensors/stable-id.d.ts +0 -2
  706. package/dist/server/src/camera/sensors/stable-id.js +0 -17
  707. package/dist/server/src/camera/sensors/stable-id.js.map +0 -1
  708. package/dist/server/src/camera/sensors/types.js.map +0 -1
  709. package/dist/server/src/camera/sensors/virtual.js.map +0 -1
  710. package/dist/server/src/plugins/runtime/python/store_migrate.py +0 -59
  711. package/dist/server/src/plugins/store/migrate.d.ts +0 -1
  712. package/dist/server/src/plugins/store/migrate.js +0 -22
  713. package/dist/server/src/plugins/store/migrate.js.map +0 -1
@@ -11,7 +11,7 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
11
11
 
12
12
 
13
13
  class PTZCapability(StrEnum):
14
- """Optional capabilities for PTZ controls."""
14
+ """Optional capabilities of a PTZ control."""
15
15
 
16
16
  Pan = "pan"
17
17
  """Camera supports panning (horizontal movement)."""
@@ -32,18 +32,18 @@ class PTZCapability(StrEnum):
32
32
 
33
33
 
34
34
  class PTZProperty(StrEnum):
35
- """Properties for PTZ controls."""
35
+ """Property names of a PTZ control."""
36
36
 
37
37
  Position = "position"
38
38
  """Current pan/tilt/zoom position."""
39
39
  Moving = "moving"
40
40
  """Whether the camera is currently moving."""
41
41
  Presets = "presets"
42
- """List of available preset names."""
42
+ """List of available preset names, empty until `setPresets()` runs."""
43
43
  Velocity = "velocity"
44
- """Current movement velocity (continuous move)."""
44
+ """Current movement velocity (continuous move), None until one was issued."""
45
45
  TargetPreset = "targetPreset"
46
- """Target preset to move to."""
46
+ """Target preset to move to, None until a preset was requested."""
47
47
  RelativeMove = "relativeMove"
48
48
  """Relative displacement move command (write-only)."""
49
49
  Home = "home"
@@ -93,7 +93,7 @@ class PTZRelativeMove(TypedDict):
93
93
 
94
94
 
95
95
  class PTZControlProperties(TypedDict):
96
- """Property value map for PTZ controls."""
96
+ """Property values of a PTZ control."""
97
97
 
98
98
  position: PTZPosition
99
99
  moving: bool
@@ -104,10 +104,12 @@ class PTZControlProperties(TypedDict):
104
104
 
105
105
 
106
106
  class PTZPropertyChangeData(TypedDict):
107
- """Emitted on PTZControlLike.onPropertyChanged."""
107
+ """Property change payload emitted on PTZControlLike.onPropertyChanged."""
108
108
 
109
- property: str # PTZProperty value
109
+ property: str
110
+ """Name of the changed property, a PTZProperty value."""
110
111
  value: PTZPosition | bool | list[str] | PTZDirection | PTZRelativeMove | str | None
112
+ """New value of the property."""
111
113
 
112
114
 
113
115
  TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
@@ -121,6 +123,12 @@ class PTZControlLike(SensorLike, Protocol):
121
123
  def type(self) -> SensorType:
122
124
  return SensorType.PTZ
123
125
 
126
+ @property
127
+ def onPropertyChanged(self) -> Observable[PTZPropertyChangeData]: ...
128
+
129
+ @property
130
+ def onCapabilitiesChanged(self) -> Observable[list[PTZCapability]]: ...
131
+
124
132
  @overload
125
133
  def getValue(self, property: Literal[PTZProperty.Position]) -> PTZPosition | None: ...
126
134
  @overload
@@ -136,12 +144,6 @@ class PTZControlLike(SensorLike, Protocol):
136
144
  @overload
137
145
  def getValue(self, property: str) -> object | None: ...
138
146
 
139
- @property
140
- def onPropertyChanged(self) -> Observable[PTZPropertyChangeData]: ...
141
-
142
- @property
143
- def onCapabilitiesChanged(self) -> Observable[list[PTZCapability]]: ...
144
-
145
147
 
146
148
  class PTZControl(Sensor[PTZControlProperties, TStorage, PTZCapability], Generic[TStorage]):
147
149
  """Pan-tilt-zoom camera control.
@@ -149,7 +151,7 @@ class PTZControl(Sensor[PTZControlProperties, TStorage, PTZCapability], Generic[
149
151
  Override `setPosition()` / `setVelocity()` / `setTargetPreset()` to drive
150
152
  hardware, then call the corresponding `super().X()` method after success to
151
153
  sync the SDK state. For hardware-pushed state updates (e.g. PTZ position
152
- change events), call the super methods from your event handler — that
154
+ change events), call the super methods from your event handler. That
153
155
  bypasses any plugin override and only syncs state.
154
156
 
155
157
  Set `capabilities` to advertise supported axes and features. Use
@@ -159,8 +161,8 @@ class PTZControl(Sensor[PTZControlProperties, TStorage, PTZCapability], Generic[
159
161
 
160
162
  _requires_frames = False
161
163
 
162
- def __init__(self, name: str = "PTZ") -> None:
163
- super().__init__(name)
164
+ def __init__(self, name: str = "PTZ", *, native_id: str | None = None) -> None:
165
+ super().__init__(name, native_id=native_id)
164
166
  self._write_state(
165
167
  {
166
168
  PTZProperty.Position.value: {"pan": 0, "tilt": 0, "zoom": 0},
@@ -297,12 +299,7 @@ class PTZControl(Sensor[PTZControlProperties, TStorage, PTZCapability], Generic[
297
299
  await self.setPosition({"pan": 0, "tilt": 0, "zoom": 0})
298
300
 
299
301
  async def updateValue(self, property: str, value: Any) -> None:
300
- """Routes generic property writes to semantic methods.
301
-
302
- `moving` and `presets` are observed/discovered state and not externally
303
- writable; only `Position`, `Velocity`, `TargetPreset`, `RelativeMove`
304
- and `Home` may be set.
305
- """
302
+ """Routes generic property writes to the semantic setters."""
306
303
  if property == PTZProperty.Position.value:
307
304
  await self.setPosition(value)
308
305
  return
@@ -318,4 +315,3 @@ class PTZControl(Sensor[PTZControlProperties, TStorage, PTZCapability], Generic[
318
315
  if property == PTZProperty.Home.value:
319
316
  await self.goHome()
320
317
  return
321
- # Unknown / non-writable property (incl. moving, presets) — ignored.
@@ -11,7 +11,7 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
11
11
 
12
12
 
13
13
  class SecuritySystemState(IntEnum):
14
- """Security system arm/disarm states (HomeKit-compatible values)."""
14
+ """Security system arm/disarm states."""
15
15
 
16
16
  StayArm = 0
17
17
  """Armed, occupants home."""
@@ -26,26 +26,28 @@ class SecuritySystemState(IntEnum):
26
26
 
27
27
 
28
28
  class SecuritySystemProperty(StrEnum):
29
- """Properties for security system controls."""
29
+ """Property names of a security system control."""
30
30
 
31
31
  CurrentState = "currentState"
32
32
  """The actual current state of the security system."""
33
33
  TargetState = "targetState"
34
- """The desired target state (set by user, transitions to currentState)."""
34
+ """The desired target state (set by user, transitions to currentState), never AlarmTriggered."""
35
35
 
36
36
 
37
37
  class SecuritySystemProperties(TypedDict):
38
- """Property value map for security system controls."""
38
+ """Property values of a security system control."""
39
39
 
40
- currentState: int
41
- targetState: int
40
+ currentState: SecuritySystemState
41
+ targetState: SecuritySystemState
42
42
 
43
43
 
44
44
  class SecuritySystemPropertyChangeData(TypedDict):
45
- """Emitted on SecuritySystemLike.onPropertyChanged."""
45
+ """Property change payload emitted on SecuritySystemLike.onPropertyChanged."""
46
46
 
47
- property: str # SecuritySystemProperty value
47
+ property: str
48
+ """Name of the changed property, a SecuritySystemProperty value."""
48
49
  value: SecuritySystemState
50
+ """New value of the property."""
49
51
 
50
52
 
51
53
  TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
@@ -59,6 +61,9 @@ class SecuritySystemLike(SensorLike, Protocol):
59
61
  def type(self) -> SensorType:
60
62
  return SensorType.SecuritySystem
61
63
 
64
+ @property
65
+ def onPropertyChanged(self) -> Observable[SecuritySystemPropertyChangeData]: ...
66
+
62
67
  @overload
63
68
  def getValue(
64
69
  self, property: Literal[SecuritySystemProperty.CurrentState]
@@ -70,22 +75,19 @@ class SecuritySystemLike(SensorLike, Protocol):
70
75
  @overload
71
76
  def getValue(self, property: str) -> object | None: ...
72
77
 
73
- @property
74
- def onPropertyChanged(self) -> Observable[SecuritySystemPropertyChangeData]: ...
75
-
76
78
 
77
79
  class SecuritySystem(Sensor[SecuritySystemProperties, TStorage, str], Generic[TStorage]):
78
80
  """Security system control.
79
81
 
80
82
  Override `setTargetState()` to drive hardware and call
81
- `await super().setTargetState(value)` once the hardware confirms the base
83
+ `await super().setTargetState(value)` once the hardware confirms. The base
82
84
  implementation updates both `targetState` and `currentState`.
83
85
  """
84
86
 
85
87
  _requires_frames = False
86
88
 
87
- def __init__(self, name: str = "Security System") -> None:
88
- super().__init__(name)
89
+ def __init__(self, name: str = "Security System", *, native_id: str | None = None) -> None:
90
+ super().__init__(name, native_id=native_id)
89
91
  self._write_state(
90
92
  {
91
93
  SecuritySystemProperty.CurrentState.value: int(SecuritySystemState.Disarmed),
@@ -113,7 +115,7 @@ class SecuritySystem(Sensor[SecuritySystemProperties, TStorage, str], Generic[TS
113
115
 
114
116
  async def setTargetState(self, value: SecuritySystemState) -> None:
115
117
  """Set the target state. Override to drive hardware and call
116
- `await super().setTargetState(value)` after success the base implementation
118
+ `await super().setTargetState(value)` after success. The base implementation
117
119
  syncs both `targetState` and `currentState` to the new value.
118
120
 
119
121
  Args:
@@ -134,11 +136,10 @@ class SecuritySystem(Sensor[SecuritySystemProperties, TStorage, str], Generic[TS
134
136
  )
135
137
 
136
138
  def setCurrentState(self, value: SecuritySystemState) -> None:
137
- """Publish the actual security system state. Use this to drive
138
- transitions that diverge from the user-requested target most notably
139
- the ``AlarmTriggered`` state when an intruder is detected, or
140
- arming-delay intermediate states. Read-only from cross-process
141
- consumers (``updateValue`` ignores it).
139
+ """Publish the actual security system state. Use this for transitions
140
+ that diverge from the user-requested target: ``AlarmTriggered`` when an
141
+ intruder is detected, or arming-delay intermediate states. Read-only
142
+ from cross-process consumers (``updateValue`` ignores it).
142
143
 
143
144
  Args:
144
145
  value: Current security system state from ``SecuritySystemState``.
@@ -153,7 +154,6 @@ class SecuritySystem(Sensor[SecuritySystemProperties, TStorage, str], Generic[TS
153
154
  self._write_state({SecuritySystemProperty.CurrentState.value: int(value)})
154
155
 
155
156
  async def updateValue(self, property: str, value: Any) -> None:
156
- """Routes generic property writes to semantic methods."""
157
+ """Routes generic property writes to the semantic setters."""
157
158
  if property == SecuritySystemProperty.TargetState.value:
158
159
  await self.setTargetState(SecuritySystemState(value))
159
- # Unknown / non-writable property (incl. currentState) — ignored.
@@ -11,14 +11,14 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
11
11
 
12
12
 
13
13
  class SirenCapability(StrEnum):
14
- """Optional capabilities for siren controls."""
14
+ """Optional capabilities of a siren control."""
15
15
 
16
16
  Volume = "volume"
17
17
  """Siren supports volume adjustment (0-100)."""
18
18
 
19
19
 
20
20
  class SirenProperty(StrEnum):
21
- """Properties for siren controls."""
21
+ """Property names of a siren control."""
22
22
 
23
23
  Active = "active"
24
24
  """Whether the siren is currently active."""
@@ -27,17 +27,19 @@ class SirenProperty(StrEnum):
27
27
 
28
28
 
29
29
  class SirenControlProperties(TypedDict):
30
- """Property value map for siren controls."""
30
+ """Property values of a siren control."""
31
31
 
32
32
  active: bool
33
33
  volume: int
34
34
 
35
35
 
36
36
  class SirenPropertyChangeData(TypedDict):
37
- """Emitted on SirenControlLike.onPropertyChanged."""
37
+ """Property change payload emitted on SirenControlLike.onPropertyChanged."""
38
38
 
39
- property: str # SirenProperty value
39
+ property: str
40
+ """Name of the changed property, a SirenProperty value."""
40
41
  value: bool | int
42
+ """New value of the property."""
41
43
 
42
44
 
43
45
  TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
@@ -51,6 +53,12 @@ class SirenControlLike(SensorLike, Protocol):
51
53
  def type(self) -> SensorType:
52
54
  return SensorType.Siren
53
55
 
56
+ @property
57
+ def onPropertyChanged(self) -> Observable[SirenPropertyChangeData]: ...
58
+
59
+ @property
60
+ def onCapabilitiesChanged(self) -> Observable[list[SirenCapability]]: ...
61
+
54
62
  @overload
55
63
  def getValue(self, property: Literal[SirenProperty.Active]) -> bool | None: ...
56
64
  @overload
@@ -58,25 +66,19 @@ class SirenControlLike(SensorLike, Protocol):
58
66
  @overload
59
67
  def getValue(self, property: str) -> object | None: ...
60
68
 
61
- @property
62
- def onPropertyChanged(self) -> Observable[SirenPropertyChangeData]: ...
63
-
64
- @property
65
- def onCapabilitiesChanged(self) -> Observable[list[SirenCapability]]: ...
66
-
67
69
 
68
70
  class SirenControl(Sensor[SirenControlProperties, TStorage, SirenCapability], Generic[TStorage]):
69
71
  """Siren control sensor. Override `setActive()`/`setInactive()` to drive
70
72
  your hardware, then `await super().setActive()` / `await super().setInactive()`
71
73
  to sync the SDK state. For hardware-pushed updates, call the super methods
72
- from your event handler that bypasses any plugin override and only syncs
74
+ from your event handler. That bypasses any plugin override and only syncs
73
75
  state.
74
76
  """
75
77
 
76
78
  _requires_frames = False
77
79
 
78
- def __init__(self, name: str = "Siren") -> None:
79
- super().__init__(name)
80
+ def __init__(self, name: str = "Siren", *, native_id: str | None = None) -> None:
81
+ super().__init__(name, native_id=native_id)
80
82
  self._write_state(
81
83
  {
82
84
  SirenProperty.Active.value: False,
@@ -139,7 +141,7 @@ class SirenControl(Sensor[SirenControlProperties, TStorage, SirenCapability], Ge
139
141
  self._write_state({SirenProperty.Volume.value: max(0, min(100, value))})
140
142
 
141
143
  async def updateValue(self, property: str, value: Any) -> None:
142
- """Routes generic property writes to semantic methods."""
144
+ """Routes generic property writes to the semantic setters."""
143
145
  if property == SirenProperty.Active.value:
144
146
  if value:
145
147
  await self.setActive()
@@ -149,4 +151,3 @@ class SirenControl(Sensor[SirenControlProperties, TStorage, SirenCapability], Ge
149
151
  if property == SirenProperty.Volume.value:
150
152
  await self.setVolume(int(value))
151
153
  return
152
- # Unknown / non-writable property — ignored.
@@ -11,23 +11,25 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
11
11
 
12
12
 
13
13
  class SmokeProperty(StrEnum):
14
- """Properties for smoke sensors."""
14
+ """Property names of a smoke sensor."""
15
15
 
16
16
  Detected = "detected"
17
17
  """Whether smoke is detected."""
18
18
 
19
19
 
20
20
  class SmokeSensorProperties(TypedDict):
21
- """Property value map for smoke sensors."""
21
+ """Property values of a smoke sensor."""
22
22
 
23
23
  detected: bool
24
24
 
25
25
 
26
26
  class SmokePropertyChangeData(TypedDict):
27
- """Emitted on SmokeSensorLike.onPropertyChanged."""
27
+ """Property change payload emitted on SmokeSensorLike.onPropertyChanged."""
28
28
 
29
- property: str # SmokeProperty value
29
+ property: str
30
+ """Name of the changed property, a SmokeProperty value."""
30
31
  value: bool
32
+ """New value of the property."""
31
33
 
32
34
 
33
35
  TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
@@ -41,22 +43,22 @@ class SmokeSensorLike(SensorLike, Protocol):
41
43
  def type(self) -> SensorType:
42
44
  return SensorType.Smoke
43
45
 
46
+ @property
47
+ def onPropertyChanged(self) -> Observable[SmokePropertyChangeData]: ...
48
+
44
49
  @overload
45
50
  def getValue(self, property: Literal[SmokeProperty.Detected]) -> bool | None: ...
46
51
  @overload
47
52
  def getValue(self, property: str) -> object | None: ...
48
53
 
49
- @property
50
- def onPropertyChanged(self) -> Observable[SmokePropertyChangeData]: ...
51
-
52
54
 
53
55
  class SmokeSensor(Sensor[SmokeSensorProperties, TStorage, str], Generic[TStorage]):
54
56
  """Smoke detector sensor."""
55
57
 
56
58
  _requires_frames = False
57
59
 
58
- def __init__(self, name: str = "Smoke Sensor") -> None:
59
- super().__init__(name)
60
+ def __init__(self, name: str = "Smoke Sensor", *, native_id: str | None = None) -> None:
61
+ super().__init__(name, native_id=native_id)
60
62
  self._write_state({SmokeProperty.Detected.value: False})
61
63
 
62
64
  @property
@@ -86,4 +88,3 @@ class SmokeSensor(Sensor[SmokeSensorProperties, TStorage, str], Generic[TStorage
86
88
 
87
89
  async def updateValue(self, property: str, value: Any) -> None:
88
90
  """Read-only sensor: external writes are ignored."""
89
- # No-op — smoke state is reported by the plugin, not set externally.
@@ -8,21 +8,23 @@ from typing_extensions import TypedDict
8
8
  class VideoInputSpec(TypedDict):
9
9
  """Expected video input dimensions and pixel format for a detector model."""
10
10
 
11
- width: int # Expected frame width in pixels
12
- height: int # Expected frame height in pixels
13
- format: Literal[
14
- "rgb", "nv12", "gray"
15
- ] # Pixel format: rgb=3 bytes/pixel, gray=1 byte/pixel, nv12=YUV semi-planar
11
+ width: int
12
+ """Expected frame width in pixels."""
13
+ height: int
14
+ """Expected frame height in pixels."""
15
+ format: Literal["rgb", "nv12", "gray"]
16
+ """Pixel format: rgb=3 bytes/pixel, gray=1 byte/pixel, nv12=YUV semi-planar."""
16
17
 
17
18
 
18
19
  class ObjectModelSpec(TypedDict):
19
20
  """Model spec for object detectors.
20
21
 
21
- Only declares input dimensions the output label set is dynamic and
22
- comes from the model itself.
22
+ Only declares input dimensions, the output label set is dynamic and comes
23
+ from the model itself.
23
24
  """
24
25
 
25
- input: VideoInputSpec # Required input frame dimensions and pixel format
26
+ input: VideoInputSpec
27
+ """Required input frame dimensions and pixel format."""
26
28
 
27
29
 
28
30
  class ModelSpec(TypedDict):
@@ -32,27 +34,29 @@ class ModelSpec(TypedDict):
32
34
  labels that should activate this detector.
33
35
  """
34
36
 
35
- input: VideoInputSpec # Required input frame dimensions and pixel format
36
- triggerLabels: list[str] # Labels emitted by an upstream object detector that activate this detector
37
- embeddingModel: NotRequired[
38
- str
39
- ] # Embedding model identifier. Required for face recognition and for CLIP: embeddings are stored and matched under this id
37
+ input: VideoInputSpec
38
+ """Required input frame dimensions and pixel format."""
39
+ triggerLabels: list[str]
40
+ """Labels emitted by an upstream object detector that activate this detector."""
41
+ embeddingModel: NotRequired[str]
42
+ """Embedding model identifier. Required for face recognition and for CLIP: embeddings are stored and matched under this id."""
40
43
 
41
44
 
42
45
  class AudioInputSpec(TypedDict):
43
46
  """Expected audio input format for an audio detector model."""
44
47
 
45
- sampleRate: int # Sample rate in Hz the model expects
46
- channels: int # Channel count the model expects (typically 1 = mono)
47
- format: Literal[
48
- "pcm16", "float32"
49
- ] # Sample format: pcm16=16-bit signed integer PCM, float32=32-bit float
50
- samplesPerFrame: NotRequired[
51
- int
52
- ] # Number of samples per audio frame the detector expects; the backend buffers audio to deliver exactly this many samples per call
48
+ sampleRate: int
49
+ """Sample rate in Hz the model expects."""
50
+ channels: int
51
+ """Channel count the model expects (typically 1 = mono)."""
52
+ format: Literal["pcm16", "float32"]
53
+ """Sample format: pcm16=16-bit signed integer PCM, float32=32-bit float."""
54
+ samplesPerFrame: NotRequired[int]
55
+ """Number of samples per audio frame the detector expects; the backend buffers audio to deliver exactly this many samples per call."""
53
56
 
54
57
 
55
58
  class AudioModelSpec(TypedDict):
56
59
  """Model spec for audio detectors."""
57
60
 
58
- input: AudioInputSpec # Required input audio format
61
+ input: AudioInputSpec
62
+ """Required input audio format."""
@@ -11,23 +11,25 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
11
11
 
12
12
 
13
13
  class SwitchProperty(StrEnum):
14
- """Properties for switch controls."""
14
+ """Property names of a switch control."""
15
15
 
16
16
  On = "on"
17
17
  """Whether the switch is on."""
18
18
 
19
19
 
20
20
  class SwitchControlProperties(TypedDict):
21
- """Property value map for switch controls."""
21
+ """Property values of a switch control."""
22
22
 
23
23
  on: bool
24
24
 
25
25
 
26
26
  class SwitchPropertyChangeData(TypedDict):
27
- """Emitted on SwitchControlLike.onPropertyChanged."""
27
+ """Property change payload emitted on SwitchControlLike.onPropertyChanged."""
28
28
 
29
- property: str # SwitchProperty value
29
+ property: str
30
+ """Name of the changed property, a SwitchProperty value."""
30
31
  value: bool
32
+ """New value of the property."""
31
33
 
32
34
 
33
35
  TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
@@ -41,27 +43,27 @@ class SwitchControlLike(SensorLike, Protocol):
41
43
  def type(self) -> SensorType:
42
44
  return SensorType.Switch
43
45
 
46
+ @property
47
+ def onPropertyChanged(self) -> Observable[SwitchPropertyChangeData]: ...
48
+
44
49
  @overload
45
50
  def getValue(self, property: Literal[SwitchProperty.On]) -> bool | None: ...
46
51
  @overload
47
52
  def getValue(self, property: str) -> object | None: ...
48
53
 
49
- @property
50
- def onPropertyChanged(self) -> Observable[SwitchPropertyChangeData]: ...
51
-
52
54
 
53
55
  class SwitchControl(Sensor[SwitchControlProperties, TStorage, str], Generic[TStorage]):
54
56
  """Generic on/off switch control. Override `setOn()` / `setOff()` to drive
55
57
  hardware and call `await super().setOn()` / `await super().setOff()` after
56
58
  success to sync the SDK state. For hardware-pushed updates, call the super
57
- methods from your event handler that bypasses any plugin override and only
59
+ methods from your event handler. That bypasses any plugin override and only
58
60
  syncs state.
59
61
  """
60
62
 
61
63
  _requires_frames = False
62
64
 
63
- def __init__(self, name: str = "Switch") -> None:
64
- super().__init__(name)
65
+ def __init__(self, name: str = "Switch", *, native_id: str | None = None) -> None:
66
+ super().__init__(name, native_id=native_id)
65
67
  self._write_state({SwitchProperty.On.value: False})
66
68
 
67
69
  @property
@@ -99,10 +101,9 @@ class SwitchControl(Sensor[SwitchControlProperties, TStorage, str], Generic[TSto
99
101
  self._write_state({SwitchProperty.On.value: False})
100
102
 
101
103
  async def updateValue(self, property: str, value: Any) -> None:
102
- """Routes generic property writes to semantic methods."""
104
+ """Routes generic property writes to the semantic setters."""
103
105
  if property == SwitchProperty.On.value:
104
106
  if value:
105
107
  await self.setOn()
106
108
  else:
107
109
  await self.setOff()
108
- # Unknown / non-writable property — ignored.
@@ -11,23 +11,25 @@ from .base import Sensor, SensorCategory, SensorLike, SensorType
11
11
 
12
12
 
13
13
  class TemperatureProperty(StrEnum):
14
- """Properties for temperature info sensors."""
14
+ """Property names of a temperature sensor."""
15
15
 
16
16
  Current = "current"
17
17
  """Current temperature in degrees Celsius."""
18
18
 
19
19
 
20
20
  class TemperatureInfoProperties(TypedDict):
21
- """Property value map for temperature info sensors."""
21
+ """Property values of a temperature sensor."""
22
22
 
23
23
  current: float
24
24
 
25
25
 
26
26
  class TemperaturePropertyChangeData(TypedDict):
27
- """Emitted on TemperatureInfoLike.onPropertyChanged."""
27
+ """Property change payload emitted on TemperatureInfoLike.onPropertyChanged."""
28
28
 
29
- property: str # TemperatureProperty value
29
+ property: str
30
+ """Name of the changed property, a TemperatureProperty value."""
30
31
  value: float
32
+ """New value of the property."""
31
33
 
32
34
 
33
35
  TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
@@ -35,28 +37,28 @@ TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
35
37
 
36
38
  @runtime_checkable
37
39
  class TemperatureInfoLike(SensorLike, Protocol):
38
- """Read-only proxy interface for a temperature info sensor."""
40
+ """Read-only proxy interface for a temperature sensor."""
39
41
 
40
42
  @property
41
43
  def type(self) -> SensorType:
42
44
  return SensorType.Temperature
43
45
 
46
+ @property
47
+ def onPropertyChanged(self) -> Observable[TemperaturePropertyChangeData]: ...
48
+
44
49
  @overload
45
50
  def getValue(self, property: Literal[TemperatureProperty.Current]) -> float | None: ...
46
51
  @overload
47
52
  def getValue(self, property: str) -> object | None: ...
48
53
 
49
- @property
50
- def onPropertyChanged(self) -> Observable[TemperaturePropertyChangeData]: ...
51
-
52
54
 
53
55
  class TemperatureInfo(Sensor[TemperatureInfoProperties, TStorage, str], Generic[TStorage]):
54
56
  """Temperature info sensor. Reports current temperature in degrees Celsius."""
55
57
 
56
58
  _requires_frames = False
57
59
 
58
- def __init__(self, name: str = "Temperature") -> None:
59
- super().__init__(name)
60
+ def __init__(self, name: str = "Temperature", *, native_id: str | None = None) -> None:
61
+ super().__init__(name, native_id=native_id)
60
62
  self._write_state({TemperatureProperty.Current.value: 20})
61
63
 
62
64
  @property
@@ -73,9 +75,17 @@ class TemperatureInfo(Sensor[TemperatureInfoProperties, TStorage, str], Generic[
73
75
  return float(value) if value is not None else 0.0
74
76
 
75
77
  def setCurrent(self, value: float) -> None:
76
- """Report a new temperature reading. Clamped to [-270, 100] degrees Celsius."""
78
+ """Report a new temperature reading. Clamped to [-270, 100] degrees Celsius.
79
+
80
+ Args:
81
+ value: Temperature reading in degrees Celsius.
82
+
83
+ Example:
84
+ ```python
85
+ temperature.setCurrent(21.5)
86
+ ```
87
+ """
77
88
  self._write_state({TemperatureProperty.Current.value: max(-270, min(100, value))})
78
89
 
79
90
  async def updateValue(self, property: str, value: Any) -> None:
80
91
  """Read-only sensor: external writes are ignored."""
81
- # No-op — temperature is reported by the plugin, not set externally.