@camera.ui/server 2.0.22 → 2.0.23

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-junY0N5P.js +1 -0
  2. package/dist/interface/assets/About-Dwc0TTLa.js +1 -0
  3. package/dist/interface/assets/Adminpanel-wZGtsPD-.js +1 -0
  4. package/dist/interface/assets/Automation-Dj6xmGae.js +3 -0
  5. package/dist/interface/assets/AutomationImport-Ccnxyslc.js +2 -0
  6. package/dist/interface/assets/AutomationStore-DmbxA0ml.js +2 -0
  7. package/dist/interface/assets/AutomationStoreDetail-DcbvD8g5.js +2 -0
  8. package/dist/interface/assets/Automations-C9JJO6dy.js +2 -0
  9. package/dist/interface/assets/Camera-D_j0J3kB.js +2 -0
  10. package/dist/interface/assets/CameraConsole--hGg9Ye6.js +7 -0
  11. package/dist/interface/assets/Cameras-B2Tizr4Q.js +652 -0
  12. package/dist/interface/assets/Camview-Bh2UCnGC.js +1 -0
  13. package/dist/interface/assets/{Camview-CaEbdeQZ.css → Camview-Cj10uxGy.css} +1 -1
  14. package/dist/interface/assets/Config-Dn_s2M7r.js +2 -0
  15. package/dist/interface/assets/{ConfigActionCameraControl-DFdb4xzq.js → ConfigActionCameraControl-DQEYHVN5.js} +1 -1
  16. package/dist/interface/assets/ConfigActionDelay-C0mbjCCj.js +1 -0
  17. package/dist/interface/assets/ConfigActionHttp-Bf58WHcw.js +1 -0
  18. package/dist/interface/assets/ConfigActionImageInput-CDXVFrOz.js +1 -0
  19. package/dist/interface/assets/ConfigActionMqtt-lH7MQqWr.js +1 -0
  20. package/dist/interface/assets/ConfigActionNotification-CAkr6NJX.js +1 -0
  21. package/dist/interface/assets/ConfigActionNotificationControl-CiL-4Ytw.js +1 -0
  22. package/dist/interface/assets/ConfigActionOutput-ILAxBT-r.js +1 -0
  23. package/dist/interface/assets/ConfigActionPlugin-B2d4mZiK.js +1 -0
  24. package/dist/interface/assets/ConfigActionSensor-BxMdsmRa.js +1 -0
  25. package/dist/interface/assets/ConfigActionSnapshot-CXVQBSzv.js +1 -0
  26. package/dist/interface/assets/ConfigActionVariable-CABnlnMv.js +1 -0
  27. package/dist/interface/assets/ConfigConditionIfElse-Cxu7TSdJ.js +1 -0
  28. package/dist/interface/assets/ConfigConditionSensorState-rB7I04Gb.js +1 -0
  29. package/dist/interface/assets/ConfigConditionSwitch-CU0hLo1h.js +1 -0
  30. package/dist/interface/assets/ConfigConditionTime-DfeEvxIU.js +1 -0
  31. package/dist/interface/assets/ConfigSensorValueInput-wXiyU3Sc.js +1 -0
  32. package/dist/interface/assets/{ConfigTriggerDetection-Cjes6g7x.js → ConfigTriggerDetection-DFJpuWrs.js} +1 -1
  33. package/dist/interface/assets/ConfigTriggerGeofence-CZwesOD8.js +1 -0
  34. package/dist/interface/assets/ConfigTriggerManual-aibwYUtf.js +1 -0
  35. package/dist/interface/assets/ConfigTriggerMqtt-CUNgifGb.js +1 -0
  36. package/dist/interface/assets/ConfigTriggerSchedule-8Y_OBcB1.js +1 -0
  37. package/dist/interface/assets/ConfigTriggerSensor-Bu-YtGnX.js +1 -0
  38. package/dist/interface/assets/{ConfigTriggerSystem-NaaBopYq.js → ConfigTriggerSystem-CXNvmC4S.js} +1 -1
  39. package/dist/interface/assets/ConfigTriggerWebhook-CkZ-_ABi.js +1 -0
  40. package/dist/interface/assets/Console-CG8eRDA4.js +1 -0
  41. package/dist/interface/assets/CuiAutomationRunsDialog-Ux0g-E3w.js +1 -0
  42. package/dist/interface/assets/CuiBottomSheet-C-ZN_uXE.js +1 -0
  43. package/dist/interface/assets/CuiBottomSheet-RUyuBxJZ.js +1 -0
  44. package/dist/interface/assets/CuiCameraPipCard-B-B6Ppsd.js +1 -0
  45. package/dist/interface/assets/CuiCameraRecordings-DqVdR9uS.js +1 -0
  46. package/dist/interface/assets/CuiCameraShares-DstoVjf9.js +1 -0
  47. package/dist/interface/assets/CuiCameraTable-BHaCRB65.js +2 -0
  48. package/dist/interface/assets/CuiDataTable-CTT9IFeR.js +1 -0
  49. package/dist/interface/assets/CuiLightControl-B_JIzm9t.js +1 -0
  50. package/dist/interface/assets/CuiLightControl-DFrZm_sv.css +1 -0
  51. package/dist/interface/assets/CuiList-CDed3qXV.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-7aXQznrX.js +2 -0
  55. package/dist/interface/assets/{CuiPluginCategoryChip-D9Vi1SEP.js → CuiPluginCategoryChip-C2Y8x73q.js} +1 -1
  56. package/dist/interface/assets/CuiPluginOAuthButton-CCzRlZP6.js +2 -0
  57. package/dist/interface/assets/{CuiPluginTrustBadge-D0rUX2i6.js → CuiPluginTrustBadge-C8qBdLCg.js} +1 -1
  58. package/dist/interface/assets/CuiQRCode-D52Fcu61.js +1 -0
  59. package/dist/interface/assets/CuiRecordingsGrid-CfuihmlY.js +1 -0
  60. package/dist/interface/assets/CuiSchema-DTIuxROi.js +1 -0
  61. package/dist/interface/assets/CuiTopNavbarItem-CoTQmfY7.js +1 -0
  62. package/dist/interface/assets/Faces-EtBPS1Ve.js +1 -0
  63. package/dist/interface/assets/FirstSteps-CC0BPH40.js +1 -0
  64. package/dist/interface/assets/Instances-dSYERqIc.js +1 -0
  65. package/dist/interface/assets/Logs-B8d6dEt7.js +6 -0
  66. package/dist/interface/assets/Menu-CejIVz_7.js +1 -0
  67. package/dist/interface/assets/OAuthDeviceFlow-YhwV_FSL.js +1 -0
  68. package/dist/interface/assets/Plugin-Brb6wfq-.js +1 -0
  69. package/dist/interface/assets/PluginConsole-CfyZQVq5.js +7 -0
  70. package/dist/interface/assets/PluginDetail-DVRnnauk.js +2 -0
  71. package/dist/interface/assets/PluginSchema-i6UJfMnh.js +1 -0
  72. package/dist/interface/assets/PluginSearch-C1YL9q00.js +1 -0
  73. package/dist/interface/assets/PluginSearch-PDx47aUx.js +2 -0
  74. package/dist/interface/assets/Plugins-CukJohcb.js +1 -0
  75. package/dist/interface/assets/Recordings-m6jxYvRI.js +1 -0
  76. package/dist/interface/assets/SensorEdit-BJAijbmc.js +1 -0
  77. package/dist/interface/assets/SensorHistory-DW00ZuHR.js +1 -0
  78. package/dist/interface/assets/Sensors-BA9P_Ray.css +1 -0
  79. package/dist/interface/assets/Sensors-Lfafn19i.js +2 -0
  80. package/dist/interface/assets/Settings-DHT8KXi2.js +1 -0
  81. package/dist/interface/assets/SettingsAccount-DOd4JeGd.js +1 -0
  82. package/dist/interface/assets/{SettingsAccount-CyNJQSuV.css → SettingsAccount-si-6gWl5.css} +1 -1
  83. package/dist/interface/assets/SettingsAccount-vrwV9rtP.js +1 -0
  84. package/dist/interface/assets/SettingsAppearance-11UFhRDY.js +1 -0
  85. package/dist/interface/assets/SettingsAppearance-BaDwC_h_.js +1 -0
  86. package/dist/interface/assets/SettingsBackup-CBBZV_nU.js +1 -0
  87. package/dist/interface/assets/SettingsList-Dx9DHGq9.js +1 -0
  88. package/dist/interface/assets/SettingsMqtt-BglQ_GeN.js +1 -0
  89. package/dist/interface/assets/SettingsNotifications-96czeGDD.js +2 -0
  90. package/dist/interface/assets/SettingsPermissions-CU4OVllA.js +1 -0
  91. package/dist/interface/assets/SettingsRecordings-BrnU9hrb.js +1 -0
  92. package/dist/interface/assets/SettingsRemote-CwJw_9HX.js +1 -0
  93. package/dist/interface/assets/SettingsSystem-B3nne5fS.js +2 -0
  94. package/dist/interface/assets/SettingsUsers-CoYyAxxn.js +1 -0
  95. package/dist/interface/assets/Terminal-DMAHgufw.js +4 -0
  96. package/dist/interface/assets/VariableInput-BzWLKBgd.js +1 -0
  97. package/dist/interface/assets/VariableSuggestions-BdxcP_dn.js +1 -0
  98. package/dist/interface/assets/VersionsHandler-Dvy5Lv-E.js +7 -0
  99. package/dist/interface/assets/VirtualSensorCreate-BXz0lWNm.js +1 -0
  100. package/dist/interface/assets/Workers-DqeKkdpa.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-DmxTF6VE.js} +1 -1
  109. package/dist/interface/assets/api-milc5VEE.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-DwSrX8QL.js} +1 -1
  113. package/dist/interface/assets/automationBlueprint-D0F9AHk9.js +1 -0
  114. package/dist/interface/assets/automations-yVPQAmFo.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-JAiaenSf.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-QtPEpiS4.js +1 -0
  127. package/dist/interface/assets/{config-C2hgXHyj.js → config-BE0DnCXx.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-BQp77LdP.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-CqhwDjRG.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-D_shY0Ks.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-BuSNpaOJ.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-7pWXkYgo.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-DKWwojYm.js +1 -0
  171. package/dist/interface/assets/{search-M4Rt52Co.js → search-miJXZGQz.js} +1 -1
  172. package/dist/interface/assets/sensors-CLQG1mQt.js +1 -0
  173. package/dist/interface/assets/{server-CVSOthzT.js → server-Bv5NVJ0G.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-DsxRUmCC.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-Bw8H-UB4.js → types-BazOcNe_.js} +1 -1
  182. package/dist/interface/assets/types-CoXm85So.js +1 -0
  183. package/dist/interface/assets/upload-CNYrnwuV.js +1 -0
  184. package/dist/interface/assets/{useAppVersion-CDTrwxkp.js → useAppVersion-oPpW7jcN.js} +1 -1
  185. package/dist/interface/assets/useBackupRestore-b0Niqql7.js +1 -0
  186. package/dist/interface/assets/useCameraOptions-uf9Kog6z.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-Dg8tFzam.js} +1 -1
  189. package/dist/interface/assets/useLogsSocket-9jJ-oJIm.js +5 -0
  190. package/dist/interface/assets/{usePermissions-tzi2t12h.js → usePermissions-xL0VlbyD.js} +1 -1
  191. package/dist/interface/assets/useServerRestart-3AZOTz7i.js +1 -0
  192. package/dist/interface/assets/{useStreamStatus-BV_L7pxB.js → useStreamStatus-Dg-Djura.js} +1 -1
  193. package/dist/interface/assets/useUserOptions-BQnM3gdi.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-BqkrW4Bb.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-BQegq2Q6.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-DYzLjOFZ.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 +19 -2
  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 +2 -2
  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 -5
  474. package/dist/server/src/plugins/runtime/node/storageController.js +20 -28
  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 +18 -0
  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 +1 -3
  484. package/dist/server/src/plugins/runtime/python/storage_controller.py +19 -50
  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 +808 -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
@@ -1,9 +1,3 @@
1
- """Generic notification types — domain-agnostic.
2
-
3
- The NotificationManager and notifier plugins talk over RPC and JSON-encode
4
- these types directly.
5
- """
6
-
7
1
  from __future__ import annotations
8
2
 
9
3
  from enum import StrEnum
@@ -20,17 +14,16 @@ class Severity(StrEnum):
20
14
  """
21
15
 
22
16
  Info = "info"
23
- """Standard notification default delivery (sound + banner)."""
17
+ """Standard notification, default delivery (sound + banner)."""
24
18
 
25
19
  Warn = "warn"
26
- """Heightened attention; notifiers may use a different sound/colour."""
20
+ """Heightened attention; notifiers may use a different sound or colour."""
27
21
 
28
22
  Error = "error"
29
23
  """Failure or action-required notification."""
30
24
 
31
25
  Critical = "critical"
32
- """Highest-priority delivery on supporting notifiers; bypasses
33
- user-configured Quiet Hours on the host."""
26
+ """Highest-priority delivery on supporting notifiers; bypasses Quiet Hours."""
34
27
 
35
28
 
36
29
  class NotifierDevice(TypedDict):
@@ -41,64 +34,63 @@ class NotifierDevice(TypedDict):
41
34
  """
42
35
 
43
36
  id: str
37
+ """Plugin-assigned device id, unique within the notifier."""
38
+
44
39
  ownerUserId: str
40
+ """User the device belongs to."""
41
+
45
42
  name: str
43
+ """Display name shown in the UI."""
44
+
46
45
  active: bool
46
+ """False while the user has muted this device; the manager skips it."""
47
+
47
48
  metadata: NotRequired[dict[str, Any]]
49
+ """Plugin-specific extras (push tokens, chat ids, platform hints)."""
48
50
 
49
51
 
50
52
  class Notification(TypedDict):
51
53
  """Payload published via ``api.notificationManager.publish`` or routed by
52
54
  the host. Plugins fill the user-visible fields; the host stamps the
53
- message id, timestamp and source identifier on receive — plugins do not
54
- set those.
55
+ message id, timestamp and source identifier on receive.
55
56
  """
56
57
 
57
58
  title: str
58
59
  """Headline shown by every notifier."""
59
60
 
60
61
  subtitle: NotRequired[str]
61
- """Optional second bold line between title and body. Honoured natively
62
- on iOS (APNs ``alert.subtitle``); other notifiers may fold it into the
63
- body or ignore it."""
62
+ """Optional second bold line, honoured natively on iOS; other notifiers may fold it into the body."""
64
63
 
65
64
  body: NotRequired[str]
66
65
  """Optional secondary text."""
67
66
 
68
67
  severity: NotRequired[Severity]
69
- """Drives DND / Critical-Alerts behaviour and Quiet-Hours bypass.
70
- Defaults to :attr:`Severity.Info` if omitted."""
68
+ """Drives DND / Critical-Alerts behaviour and Quiet-Hours bypass. Defaults to :attr:`Severity.Info`."""
71
69
 
72
70
  tag: NotRequired[str]
73
- """Collapse-key (e.g. ``motion:cam-1``). The host uses it to replace an older
74
- entry with the same tag in the in-app notification list. Delivery is not
75
- throttled: every publish is sent. Notifiers may map it to a platform
76
- collapse-id."""
71
+ """Collapse-key (e.g. ``motion:cam-1``). The host replaces an older entry
72
+ with the same tag in the in-app list. Delivery is not throttled: every
73
+ publish is sent. Notifiers may map it to a platform collapse-id."""
77
74
 
78
75
  thumbnail: NotRequired[bytes]
79
76
  """Optional inline JPEG attached to the notification."""
80
77
 
81
78
  imageUrl: NotRequired[str]
82
79
  """Publicly-fetchable URL to a rich image (e.g. a detection snapshot).
83
- Notifier-agnostic: FCM/APNs and other notifiers fetch it to render the
84
- image. Preferred over inline ``thumbnail`` bytes when a URL is available;
85
- empty renders text-only."""
80
+ Preferred over inline ``thumbnail`` bytes when a URL is available; empty
81
+ renders text-only."""
86
82
 
87
83
  deepLink: NotRequired[str]
88
- """Router-relative path consumed by mobile / web tap-handlers (e.g.
89
- ``/cameras/cam-1?startTs=...``). No host, no scheme."""
84
+ """Router-relative path for mobile / web tap-handlers (e.g. ``/cameras/cam-1``). No host, no scheme."""
90
85
 
91
86
  data: NotRequired[dict[str, str]]
92
- """Plugin-specific context (cameraId, eventId, plugin-defined keys).
93
- String values keep the wire format predictable across notifier
94
- implementations."""
87
+ """Plugin-specific context (cameraId, eventId, plugin-defined keys), string values only."""
95
88
 
96
89
  adminOnly: NotRequired[bool]
97
90
  """Restricts delivery to users with the master or admin role. Use it for
98
- operational alerts that concern whoever runs the instance camera
99
- offline, disk full, plugin failures so they don't reach guests the
100
- instance is merely shared with. Defaults to ``False`` (every user of the
101
- instance receives it, subject to their own notification settings)."""
91
+ operational alerts (camera offline, disk full, plugin failures) so they
92
+ don't reach guests the instance is merely shared with. Defaults to
93
+ ``False``."""
102
94
 
103
95
 
104
96
  @runtime_checkable
@@ -106,14 +98,13 @@ class NotifierInterface(Protocol):
106
98
  """Implemented by plugins that deliver notifications.
107
99
 
108
100
  The NotificationManager invokes these methods over RPC. Plugins own their
109
- device storage the manager never persists devices itself.
101
+ device storage, the manager never persists devices itself.
110
102
  """
111
103
 
112
104
  async def get_devices(self, owner_user_ids: list[str]) -> list[NotifierDevice]:
113
- """Return every device this notifier knows about for the given users.
114
- Each device carries its ``ownerUserId`` so the caller can map results
115
- back. May return [] when the notifier is unavailable (e.g. license
116
- invalid). Called frequently — keep cheap."""
105
+ """Return the devices this notifier knows for the given users, each
106
+ carrying its ``ownerUserId``. Return [] when the notifier is
107
+ unavailable (e.g. invalid license). Called often, keep it cheap."""
117
108
  ...
118
109
 
119
110
  async def get_device(self, device_id: str) -> NotifierDevice | None:
@@ -121,30 +112,21 @@ class NotifierInterface(Protocol):
121
112
  ...
122
113
 
123
114
  async def send_notification(self, device_ids: list[str], n: Notification) -> None:
124
- """Deliver a notification to the given devices in one call. Errors are
125
- logged; the manager never aborts a fan-out because one notifier
126
- failed."""
115
+ """Deliver a notification to the given devices in one call. Errors are logged, a failing notifier never aborts the fan-out."""
127
116
  ...
128
117
 
129
118
  async def register_device(self, owner_user_id: str, input: dict[str, Any]) -> NotifierDevice:
130
- """Create a new device on this notifier. ``input`` is plugin-specific
131
- JSON whose schema the notifier defines; the NotificationManager
132
- forwards it opaquely."""
119
+ """Create a new device. ``input`` is plugin-specific JSON the manager forwards opaquely."""
133
120
  ...
134
121
 
135
122
  async def revoke_device(self, device_id: str) -> None:
136
- """Permanently remove a device. Called when the user revokes the
137
- device through their notifier-specific UI."""
123
+ """Permanently remove a device. Called when the user revokes it through their notifier-specific UI."""
138
124
  ...
139
125
 
140
126
  async def update_device(self, device_id: str, patch: dict[str, Any]) -> NotifierDevice | None:
141
- """Mutate a subset of fields on an existing device. ``patch`` is
142
- plugin-agnostic (``name``, ``active``); plugins ignore unknown keys.
143
- Returns the updated device, or None if the id isn't ours so the
144
- manager can probe the next plugin."""
127
+ """Mutate ``name`` / ``active`` on an existing device. Return None if the id isn't ours so the manager can probe the next plugin."""
145
128
  ...
146
129
 
147
130
  async def notificationSettings(self) -> list[JsonSchema] | None:
148
- """Return the JSON schema used to render the notifier's settings form
149
- in the UI. Return None for no schema."""
131
+ """Return the JSON schema used to render the notifier's settings form in the UI, or None for no schema."""
150
132
  ...
@@ -22,7 +22,7 @@ class OAuthState(TypedDict):
22
22
  verificationUri: NotRequired[str]
23
23
  """Device-flow verification URI the user opens (set while ``awaiting_user``)."""
24
24
  verificationUriComplete: NotRequired[str]
25
- """Verification URI with the user code embedded rendered as a QR code."""
25
+ """Verification URI with the user code embedded, rendered as a QR code."""
26
26
  authUrl: NotRequired[str]
27
27
  """Authorization-code-flow URL the browser must open (set while ``awaiting_user``)."""
28
28
  userEmail: NotRequired[str]
@@ -84,9 +84,9 @@ class OAuthProviderDeclaration(TypedDict):
84
84
 
85
85
  @runtime_checkable
86
86
  class OAuthCapable(Protocol):
87
- """Base interface every OAuth-capable plugin implements, alongside at least
88
- one flow sub-interface. IdP-agnostic the plugin brings its own endpoint
89
- config and knows nothing about the host's internals.
87
+ """Base interface every OAuth-capable plugin implements, alongside at
88
+ least one flow sub-interface. IdP-agnostic: the plugin brings its own
89
+ endpoint config and knows nothing about the host's internals.
90
90
  """
91
91
 
92
92
  async def getOAuthMetadata(self) -> OAuthMetadata:
@@ -16,10 +16,6 @@ from .base import (
16
16
  SensorPropertyChangeData,
17
17
  SensorType,
18
18
  )
19
-
20
- if TYPE_CHECKING:
21
- from ..internal.sensor_rpc import SensorCapability, SensorPropertyType # noqa: F401
22
-
23
19
  from .battery import (
24
20
  BatteryCapability,
25
21
  BatteryInfo,
@@ -129,6 +125,9 @@ from .temperature import (
129
125
  TemperatureInfo,
130
126
  )
131
127
 
128
+ if TYPE_CHECKING:
129
+ from ..internal.sensor_rpc import SensorCapability, SensorPropertyType # noqa: F401
130
+
132
131
  __all__ = [
133
132
  "Sensor",
134
133
  "SensorLike",
@@ -44,23 +44,25 @@ BaseAudioLabel = Literal[
44
44
  "smoke_alarm",
45
45
  ]
46
46
 
47
- #: Audio label one of the built-in labels or any custom string emitted by an audio detector.
47
+ #: Audio label: one of the built-in labels, or any custom string emitted by an audio detector.
48
48
  AudioLabel = BaseAudioLabel | str
49
49
 
50
50
 
51
51
  class AudioProperty(StrEnum):
52
- """Property names of an audio detection sensor."""
52
+ """Property names of an audio sensor."""
53
53
 
54
- Detected = "detected" # Whether an audio event is currently detected
55
- Detections = "detections" # List of detected audio events (e.g. glass break, scream)
56
- Decibels = "decibels" # Current audio level in decibels
57
- LastTriggered = (
58
- "lastTriggered" # Timestamp in milliseconds of the last detection trigger, set by the backend
59
- )
54
+ Detected = "detected"
55
+ """Whether an audio event is currently detected."""
56
+ Detections = "detections"
57
+ """List of detected audio events (e.g. glass break, scream)."""
58
+ Decibels = "decibels"
59
+ """Current audio level in decibels."""
60
+ LastTriggered = "lastTriggered"
61
+ """Timestamp in milliseconds of the last detection trigger, set by the backend."""
60
62
 
61
63
 
62
64
  class AudioSensorProperties(TypedDict):
63
- """Property shape carried by an AudioSensor."""
65
+ """Property values of an audio sensor."""
64
66
 
65
67
  detected: bool
66
68
  detections: list[Detection]
@@ -70,8 +72,10 @@ class AudioSensorProperties(TypedDict):
70
72
  class AudioPropertyChangeData(TypedDict):
71
73
  """Property change payload emitted on AudioSensorLike.onPropertyChanged."""
72
74
 
73
- property: str # AudioProperty value
75
+ property: str
76
+ """Name of the changed property, an AudioProperty value."""
74
77
  value: bool | list[Detection] | float
78
+ """New value of the property."""
75
79
 
76
80
 
77
81
  TStorage = TypeVar("TStorage", bound=Mapping[str, Any], default=dict[str, Any])
@@ -85,6 +89,9 @@ class AudioSensorLike(SensorLike, Protocol):
85
89
  def type(self) -> SensorType:
86
90
  return SensorType.Audio
87
91
 
92
+ @property
93
+ def onPropertyChanged(self) -> Observable[AudioPropertyChangeData]: ...
94
+
88
95
  @overload
89
96
  def getValue(self, property: Literal[AudioProperty.Detected]) -> bool | None: ...
90
97
  @overload
@@ -94,21 +101,18 @@ class AudioSensorLike(SensorLike, Protocol):
94
101
  @overload
95
102
  def getValue(self, property: str) -> object | None: ...
96
103
 
97
- @property
98
- def onPropertyChanged(self) -> Observable[AudioPropertyChangeData]: ...
99
-
100
104
 
101
105
  class AudioSensor(Sensor[AudioSensorProperties, TStorage, str], Generic[TStorage]):
102
106
  """Audio sensor that reports audio events and decibel levels.
103
107
 
104
- Plugin authors call `reportDetections(list)` to push detected audio events
105
- (auto-derives `detected`) and `setDecibels(value)` to update the audio level.
108
+ Plugin authors call ``reportDetections(list)`` to push detected audio events
109
+ (auto-derives ``detected``) and ``setDecibels(value)`` to update the audio level.
106
110
  """
107
111
 
108
112
  _requires_frames = False
109
113
 
110
- def __init__(self, name: str = "Audio Sensor") -> None:
111
- super().__init__(name)
114
+ def __init__(self, name: str = "Audio Sensor", *, native_id: str | None = None) -> None:
115
+ super().__init__(name, native_id=native_id)
112
116
  self._write_state(
113
117
  {
114
118
  AudioProperty.Detected.value: False,
@@ -127,26 +131,23 @@ class AudioSensor(Sensor[AudioSensorProperties, TStorage, str], Generic[TStorage
127
131
 
128
132
  @property
129
133
  def detected(self) -> bool:
130
- """Whether an audio event is currently detected."""
131
134
  return bool(self.props.detected)
132
135
 
133
136
  @property
134
137
  def detections(self) -> list[Detection]:
135
- """Current detection list."""
136
138
  return self.props.detections or []
137
139
 
138
140
  @property
139
141
  def decibels(self) -> float:
140
- """Current audio level in decibels."""
141
142
  return float(self.props.decibels or 0.0)
142
143
 
143
144
  def reportDetections(self, detected: bool, detections: list[Detection] | None = None) -> None:
144
145
  """Report detected audio events.
145
146
 
146
- - ``reportDetections(True)`` audio detected without specifics. The SDK
147
+ - ``reportDetections(True)``: audio detected without specifics. The SDK
147
148
  synthesizes a single full-frame ``'audio'`` detection.
148
- - ``reportDetections(True, [...])`` audio detected with explicit detections.
149
- - ``reportDetections(False)`` clear.
149
+ - ``reportDetections(True, [...])``: audio detected with explicit detections.
150
+ - ``reportDetections(False)``: clear.
150
151
 
151
152
  Args:
152
153
  detected: Whether an audio event is currently detected.
@@ -194,29 +195,36 @@ class AudioSensor(Sensor[AudioSensorProperties, TStorage, str], Generic[TStorage
194
195
 
195
196
  async def updateValue(self, property: str, value: Any) -> None:
196
197
  """Read-only sensor: external writes are ignored."""
197
- # No-op — audio state is reported by the plugin, not set externally.
198
198
 
199
199
 
200
200
  class AudioFrameData(TypedDict):
201
201
  """Audio frame data delivered to audio detector sensors by the backend pipeline."""
202
202
 
203
- cameraId: NotRequired[str] # Camera the frame originated from
204
- data: bytes # Raw audio sample buffer
205
- sampleRate: int # Sample rate of the buffer in Hz
206
- channels: int # Channel count of the buffer (typically 1 = mono)
207
- format: Literal[
208
- "pcm16", "float32"
209
- ] # Sample format: pcm16=16-bit signed integer PCM, float32=32-bit float
210
- decibels: NotRequired[float] # Pre-computed decibel level for this frame, if available
211
- timestamp: NotRequired[int] # Capture timestamp in milliseconds since epoch
203
+ cameraId: NotRequired[str]
204
+ """Camera the frame originated from."""
205
+ data: bytes
206
+ """Raw audio sample buffer."""
207
+ sampleRate: int
208
+ """Sample rate of the buffer in Hz."""
209
+ channels: int
210
+ """Channel count of the buffer (typically 1 = mono)."""
211
+ format: Literal["pcm16", "float32"]
212
+ """Sample format: pcm16 = 16-bit signed integer PCM, float32 = 32-bit float."""
213
+ decibels: NotRequired[float]
214
+ """Pre-computed decibel level for this frame, if available."""
215
+ timestamp: NotRequired[int]
216
+ """Capture timestamp in milliseconds since epoch."""
212
217
 
213
218
 
214
219
  class AudioResult(TypedDict):
215
220
  """Return type for AudioDetectorSensor.detectAudio()."""
216
221
 
217
- detected: bool # Whether an audio event is detected in this frame
218
- detections: list[Detection] # Detections emitted for this frame
219
- decibels: NotRequired[float] # Optional decibel level computed for this frame
222
+ detected: bool
223
+ """Whether an audio event is detected in this frame."""
224
+ detections: list[Detection]
225
+ """Detections emitted for this frame."""
226
+ decibels: NotRequired[float]
227
+ """Optional decibel level computed for this frame."""
220
228
 
221
229
 
222
230
  class AudioDetectorSensor(AudioSensor[TStorage], Generic[TStorage]):
@@ -231,9 +239,7 @@ class AudioDetectorSensor(AudioSensor[TStorage], Generic[TStorage]):
231
239
 
232
240
  @property
233
241
  @abstractmethod
234
- def modelSpec(self) -> AudioModelSpec:
235
- """Declares the expected audio input format. The backend resamples to match."""
236
- ...
242
+ def modelSpec(self) -> AudioModelSpec: ...
237
243
 
238
244
  @abstractmethod
239
245
  async def detectAudio(self, audio: AudioFrameData) -> AudioResult: