@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.
- package/dist/interface/assets/404-junY0N5P.js +1 -0
- package/dist/interface/assets/About-Dwc0TTLa.js +1 -0
- package/dist/interface/assets/Adminpanel-wZGtsPD-.js +1 -0
- package/dist/interface/assets/Automation-Dj6xmGae.js +3 -0
- package/dist/interface/assets/AutomationImport-Ccnxyslc.js +2 -0
- package/dist/interface/assets/AutomationStore-DmbxA0ml.js +2 -0
- package/dist/interface/assets/AutomationStoreDetail-DcbvD8g5.js +2 -0
- package/dist/interface/assets/Automations-C9JJO6dy.js +2 -0
- package/dist/interface/assets/Camera-D_j0J3kB.js +2 -0
- package/dist/interface/assets/CameraConsole--hGg9Ye6.js +7 -0
- package/dist/interface/assets/Cameras-B2Tizr4Q.js +652 -0
- package/dist/interface/assets/Camview-Bh2UCnGC.js +1 -0
- package/dist/interface/assets/{Camview-CaEbdeQZ.css → Camview-Cj10uxGy.css} +1 -1
- package/dist/interface/assets/Config-Dn_s2M7r.js +2 -0
- package/dist/interface/assets/{ConfigActionCameraControl-DFdb4xzq.js → ConfigActionCameraControl-DQEYHVN5.js} +1 -1
- package/dist/interface/assets/ConfigActionDelay-C0mbjCCj.js +1 -0
- package/dist/interface/assets/ConfigActionHttp-Bf58WHcw.js +1 -0
- package/dist/interface/assets/ConfigActionImageInput-CDXVFrOz.js +1 -0
- package/dist/interface/assets/ConfigActionMqtt-lH7MQqWr.js +1 -0
- package/dist/interface/assets/ConfigActionNotification-CAkr6NJX.js +1 -0
- package/dist/interface/assets/ConfigActionNotificationControl-CiL-4Ytw.js +1 -0
- package/dist/interface/assets/ConfigActionOutput-ILAxBT-r.js +1 -0
- package/dist/interface/assets/ConfigActionPlugin-B2d4mZiK.js +1 -0
- package/dist/interface/assets/ConfigActionSensor-BxMdsmRa.js +1 -0
- package/dist/interface/assets/ConfigActionSnapshot-CXVQBSzv.js +1 -0
- package/dist/interface/assets/ConfigActionVariable-CABnlnMv.js +1 -0
- package/dist/interface/assets/ConfigConditionIfElse-Cxu7TSdJ.js +1 -0
- package/dist/interface/assets/ConfigConditionSensorState-rB7I04Gb.js +1 -0
- package/dist/interface/assets/ConfigConditionSwitch-CU0hLo1h.js +1 -0
- package/dist/interface/assets/ConfigConditionTime-DfeEvxIU.js +1 -0
- package/dist/interface/assets/ConfigSensorValueInput-wXiyU3Sc.js +1 -0
- package/dist/interface/assets/{ConfigTriggerDetection-Cjes6g7x.js → ConfigTriggerDetection-DFJpuWrs.js} +1 -1
- package/dist/interface/assets/ConfigTriggerGeofence-CZwesOD8.js +1 -0
- package/dist/interface/assets/ConfigTriggerManual-aibwYUtf.js +1 -0
- package/dist/interface/assets/ConfigTriggerMqtt-CUNgifGb.js +1 -0
- package/dist/interface/assets/ConfigTriggerSchedule-8Y_OBcB1.js +1 -0
- package/dist/interface/assets/ConfigTriggerSensor-Bu-YtGnX.js +1 -0
- package/dist/interface/assets/{ConfigTriggerSystem-NaaBopYq.js → ConfigTriggerSystem-CXNvmC4S.js} +1 -1
- package/dist/interface/assets/ConfigTriggerWebhook-CkZ-_ABi.js +1 -0
- package/dist/interface/assets/Console-CG8eRDA4.js +1 -0
- package/dist/interface/assets/CuiAutomationRunsDialog-Ux0g-E3w.js +1 -0
- package/dist/interface/assets/CuiBottomSheet-C-ZN_uXE.js +1 -0
- package/dist/interface/assets/CuiBottomSheet-RUyuBxJZ.js +1 -0
- package/dist/interface/assets/CuiCameraPipCard-B-B6Ppsd.js +1 -0
- package/dist/interface/assets/CuiCameraRecordings-DqVdR9uS.js +1 -0
- package/dist/interface/assets/CuiCameraShares-DstoVjf9.js +1 -0
- package/dist/interface/assets/CuiCameraTable-BHaCRB65.js +2 -0
- package/dist/interface/assets/CuiDataTable-CTT9IFeR.js +1 -0
- package/dist/interface/assets/CuiLightControl-B_JIzm9t.js +1 -0
- package/dist/interface/assets/CuiLightControl-DFrZm_sv.css +1 -0
- package/dist/interface/assets/CuiList-CDed3qXV.js +1 -0
- package/dist/interface/assets/CuiMarkdownContent-Bjs3wRnq.js +1 -0
- package/dist/interface/assets/CuiMarkdownContent-Do8-vIl7.js +1 -0
- package/dist/interface/assets/CuiPluginCard-7aXQznrX.js +2 -0
- package/dist/interface/assets/{CuiPluginCategoryChip-D9Vi1SEP.js → CuiPluginCategoryChip-C2Y8x73q.js} +1 -1
- package/dist/interface/assets/CuiPluginOAuthButton-CCzRlZP6.js +2 -0
- package/dist/interface/assets/{CuiPluginTrustBadge-D0rUX2i6.js → CuiPluginTrustBadge-C8qBdLCg.js} +1 -1
- package/dist/interface/assets/CuiQRCode-D52Fcu61.js +1 -0
- package/dist/interface/assets/CuiRecordingsGrid-CfuihmlY.js +1 -0
- package/dist/interface/assets/CuiSchema-DTIuxROi.js +1 -0
- package/dist/interface/assets/CuiTopNavbarItem-CoTQmfY7.js +1 -0
- package/dist/interface/assets/Faces-EtBPS1Ve.js +1 -0
- package/dist/interface/assets/FirstSteps-CC0BPH40.js +1 -0
- package/dist/interface/assets/Instances-dSYERqIc.js +1 -0
- package/dist/interface/assets/Logs-B8d6dEt7.js +6 -0
- package/dist/interface/assets/Menu-CejIVz_7.js +1 -0
- package/dist/interface/assets/OAuthDeviceFlow-YhwV_FSL.js +1 -0
- package/dist/interface/assets/Plugin-Brb6wfq-.js +1 -0
- package/dist/interface/assets/PluginConsole-CfyZQVq5.js +7 -0
- package/dist/interface/assets/PluginDetail-DVRnnauk.js +2 -0
- package/dist/interface/assets/PluginSchema-i6UJfMnh.js +1 -0
- package/dist/interface/assets/PluginSearch-C1YL9q00.js +1 -0
- package/dist/interface/assets/PluginSearch-PDx47aUx.js +2 -0
- package/dist/interface/assets/Plugins-CukJohcb.js +1 -0
- package/dist/interface/assets/Recordings-m6jxYvRI.js +1 -0
- package/dist/interface/assets/SensorEdit-BJAijbmc.js +1 -0
- package/dist/interface/assets/SensorHistory-DW00ZuHR.js +1 -0
- package/dist/interface/assets/Sensors-BA9P_Ray.css +1 -0
- package/dist/interface/assets/Sensors-Lfafn19i.js +2 -0
- package/dist/interface/assets/Settings-DHT8KXi2.js +1 -0
- package/dist/interface/assets/SettingsAccount-DOd4JeGd.js +1 -0
- package/dist/interface/assets/{SettingsAccount-CyNJQSuV.css → SettingsAccount-si-6gWl5.css} +1 -1
- package/dist/interface/assets/SettingsAccount-vrwV9rtP.js +1 -0
- package/dist/interface/assets/SettingsAppearance-11UFhRDY.js +1 -0
- package/dist/interface/assets/SettingsAppearance-BaDwC_h_.js +1 -0
- package/dist/interface/assets/SettingsBackup-CBBZV_nU.js +1 -0
- package/dist/interface/assets/SettingsList-Dx9DHGq9.js +1 -0
- package/dist/interface/assets/SettingsMqtt-BglQ_GeN.js +1 -0
- package/dist/interface/assets/SettingsNotifications-96czeGDD.js +2 -0
- package/dist/interface/assets/SettingsPermissions-CU4OVllA.js +1 -0
- package/dist/interface/assets/SettingsRecordings-BrnU9hrb.js +1 -0
- package/dist/interface/assets/SettingsRemote-CwJw_9HX.js +1 -0
- package/dist/interface/assets/SettingsSystem-B3nne5fS.js +2 -0
- package/dist/interface/assets/SettingsUsers-CoYyAxxn.js +1 -0
- package/dist/interface/assets/Terminal-DMAHgufw.js +4 -0
- package/dist/interface/assets/VariableInput-BzWLKBgd.js +1 -0
- package/dist/interface/assets/VariableSuggestions-BdxcP_dn.js +1 -0
- package/dist/interface/assets/VersionsHandler-Dvy5Lv-E.js +7 -0
- package/dist/interface/assets/VirtualSensorCreate-BXz0lWNm.js +1 -0
- package/dist/interface/assets/Workers-DqeKkdpa.js +2 -0
- package/dist/interface/assets/{account-sFoKqEOV.js → account-C5mHt2Ep.js} +1 -1
- package/dist/interface/assets/ace-BqKKexH4.js +1 -0
- package/dist/interface/assets/{ace.config-C_wgqTLD.js → ace.config-BNjBs7Fe.js} +1 -1
- package/dist/interface/assets/alarm-light-outline-jCTfmz5t.js +1 -0
- package/dist/interface/assets/{alert-circle-BQZQ417w.js → alert-circle-Cu_kjPlA.js} +1 -1
- package/dist/interface/assets/alert-outline-DXHNnhoP.js +1 -0
- package/dist/interface/assets/api-3va2gyB0.css +2 -0
- package/dist/interface/assets/{api-DEaXK1Kq.js → api-DmxTF6VE.js} +1 -1
- package/dist/interface/assets/api-milc5VEE.js +2 -0
- package/dist/interface/assets/arrow-left-DPtWmM6S.js +1 -0
- package/dist/interface/assets/arrow-right-outline-BY1ggGA1.js +1 -0
- package/dist/interface/assets/{auth-XA5zkqwW.js → auth-DwSrX8QL.js} +1 -1
- package/dist/interface/assets/automationBlueprint-D0F9AHk9.js +1 -0
- package/dist/interface/assets/automations-yVPQAmFo.js +1 -0
- package/dist/interface/assets/{back-filled-BdHG6uUx.js → back-filled-r7bN5ObT.js} +1 -1
- package/dist/interface/assets/{bell-ring-Dua4zXf_.js → bell-ring-C470qCAb.js} +1 -1
- package/dist/interface/assets/{cameras.schema-1a2URPGd.js → cameras.schema-JAiaenSf.js} +1 -1
- package/dist/interface/assets/{cctv-DEiPL3U8.js → cctv-BKVOVZCR.js} +1 -1
- package/dist/interface/assets/check-circle-Ce_sbfPZ.js +1 -0
- package/dist/interface/assets/chevron-down-CjSTp091.js +1 -0
- package/dist/interface/assets/chevron-right-B4vB0gm4.js +1 -0
- package/dist/interface/assets/{clock-outline-C_f3Ed8x.js → clock-outline-BgcDXoyp.js} +1 -1
- package/dist/interface/assets/{close-DNgGJYHi.js → close-CQoGQHOF.js} +1 -1
- package/dist/interface/assets/{close-circle-L5juejMg.js → close-circle-DYhkXsRj.js} +1 -1
- package/dist/interface/assets/{cloud-check-DD7oRzmo.js → cloud-check-CVx221dJ.js} +1 -1
- package/dist/interface/assets/cloudHandoff-QtPEpiS4.js +1 -0
- package/dist/interface/assets/{config-C2hgXHyj.js → config-BE0DnCXx.js} +1 -1
- package/dist/interface/assets/copy-yhHCVVOa.js +1 -0
- package/dist/interface/assets/cube-scan-Ccxismvr.js +1 -0
- package/dist/interface/assets/delete-xWUQUP2x.js +1 -0
- package/dist/interface/assets/dist-DVb-CALh.js +1 -0
- package/dist/interface/assets/download-PLxvyB7s.js +1 -0
- package/dist/interface/assets/esm-B4MXP42m.js +1 -0
- package/dist/interface/assets/esm-BW9m3dy4.js +1 -0
- package/dist/interface/assets/esm-BZ3gh7Fj.js +1 -0
- package/dist/interface/assets/esm-Blvz9SsB.js +1 -0
- package/dist/interface/assets/esm-CJXU9jaA.js +1 -0
- package/dist/interface/assets/esm-Cqqu_mer.js +1 -0
- package/dist/interface/assets/esm-CtKbLoV_.js +1 -0
- package/dist/interface/assets/esm-CwzNi2iW.js +1 -0
- package/dist/interface/assets/esm-KnO8wJyB.js +1 -0
- package/dist/interface/assets/esm-Lt6R0RFn.js +1 -0
- package/dist/interface/assets/esm-MvRctfDP.js +1 -0
- package/dist/interface/assets/esm-W4LX4Rpq.js +1 -0
- package/dist/interface/assets/esm-l57LNUWu.js +1 -0
- package/dist/interface/assets/esm-xofhyA8r.js +1 -0
- package/dist/interface/assets/eye-off-C8kzsdYU.js +1 -0
- package/dist/interface/assets/flowSchema-BQp77LdP.js +1 -0
- package/dist/interface/assets/{history-iAZcYg3f.js → history-QBEPNc4X.js} +1 -1
- package/dist/interface/assets/home-af3W_y8U.js +1 -0
- package/dist/interface/assets/{information-outline-CVsB1bl-.js → information-outline-BPCsozSU.js} +1 -1
- package/dist/interface/assets/{lightbulb-outline-nNLyXAIp.js → lightbulb-outline-ccTlGyvW.js} +1 -1
- package/dist/interface/assets/main-CqhwDjRG.js +3 -0
- package/dist/interface/assets/main-aZt-Pooz.css +1 -0
- package/dist/interface/assets/{microphone-CU0mFDMh.js → microphone-5exHwwyq.js} +1 -1
- package/dist/interface/assets/mqtt-D_shY0Ks.js +1 -0
- package/dist/interface/assets/native-Cpj7zrLp.js +1 -0
- package/dist/interface/assets/native-D--k2WN1.js +1 -0
- package/dist/interface/assets/nodeDefinitions-CRrkU6zR.js +1 -0
- package/dist/interface/assets/{notifications-BHQN6WD4.js → notifications-BuSNpaOJ.js} +1 -1
- package/dist/interface/assets/{pencil-outline-BQxLTlZx.js → pencil-outline-M9I4mCJO.js} +1 -1
- package/dist/interface/assets/plugin-D3FpjfF8.js +1 -0
- package/dist/interface/assets/{plugins-C0RtyBHQ.js → plugins-7pWXkYgo.js} +1 -1
- package/dist/interface/assets/plus-CGIx-WV8.js +1 -0
- package/dist/interface/assets/{plus-Ct6WQfM1.js → plus-CrfQUUEC.js} +1 -1
- package/dist/interface/assets/power-VnZM2-0c.js +1 -0
- package/dist/interface/assets/{ring-resize-CZBThoQC.js → ring-resize-CodGa6wQ.js} +1 -1
- package/dist/interface/assets/rolldown-runtime-C0FnF6B9.js +1 -0
- package/dist/interface/assets/{round-alt-arrow-left-bold-BlpNMBxm.js → round-alt-arrow-left-bold-DTrlW4yx.js} +1 -1
- package/dist/interface/assets/round-restart-alt-DKWwojYm.js +1 -0
- package/dist/interface/assets/{search-M4Rt52Co.js → search-miJXZGQz.js} +1 -1
- package/dist/interface/assets/sensors-CLQG1mQt.js +1 -0
- package/dist/interface/assets/{server-CVSOthzT.js → server-Bv5NVJ0G.js} +1 -1
- package/dist/interface/assets/{settings-CgToKrFd.js → settings-DY0TJSAM.js} +1 -1
- package/dist/interface/assets/{source-branch-CoHKTGxb.js → source-branch-nw9fwXin.js} +1 -1
- package/dist/interface/assets/{theme-BZi7VV10.js → theme-DsxRUmCC.js} +1 -1
- package/dist/interface/assets/{trash-2-BKWfq15D.js → trash-2-B-di2M48.js} +1 -1
- package/dist/interface/assets/trash-can-outline-BbZkHoW7.js +1 -0
- package/dist/interface/assets/{trash-fill-yNQsFs0Y.js → trash-fill-Bgen5QTD.js} +1 -1
- package/dist/interface/assets/{trash2-DjTG9rG-.js → trash2-BP__fHgN.js} +1 -1
- package/dist/interface/assets/{types-Bw8H-UB4.js → types-BazOcNe_.js} +1 -1
- package/dist/interface/assets/types-CoXm85So.js +1 -0
- package/dist/interface/assets/upload-CNYrnwuV.js +1 -0
- package/dist/interface/assets/{useAppVersion-CDTrwxkp.js → useAppVersion-oPpW7jcN.js} +1 -1
- package/dist/interface/assets/useBackupRestore-b0Niqql7.js +1 -0
- package/dist/interface/assets/useCameraOptions-uf9Kog6z.js +1 -0
- package/dist/interface/assets/{useCardSelection-CgZ7QTaA.js → useCardSelection-B3B2qPHO.js} +1 -1
- package/dist/interface/assets/{useElectron-CgLWOhcS.js → useElectron-Dg8tFzam.js} +1 -1
- package/dist/interface/assets/useLogsSocket-9jJ-oJIm.js +5 -0
- package/dist/interface/assets/{usePermissions-tzi2t12h.js → usePermissions-xL0VlbyD.js} +1 -1
- package/dist/interface/assets/useServerRestart-3AZOTz7i.js +1 -0
- package/dist/interface/assets/{useStreamStatus-BV_L7pxB.js → useStreamStatus-Dg-Djura.js} +1 -1
- package/dist/interface/assets/useUserOptions-BQnM3gdi.js +1 -0
- package/dist/interface/assets/{variable-Y3IAPnsB.js → variable-CbNySf4s.js} +1 -1
- package/dist/interface/assets/vendor-CSg6_Jfu.js +22 -0
- package/dist/interface/assets/vendor-ace-DIEVbs6L.js +1085 -0
- package/dist/interface/assets/vendor-cameraui-BqkrW4Bb.js +2040 -0
- package/dist/interface/assets/vendor-capacitor-C-8IYzpJ.js +2 -0
- package/dist/interface/assets/vendor-chart-CoQ9HTE3.js +3 -0
- package/dist/interface/assets/vendor-core-BQegq2Q6.js +1 -0
- package/dist/interface/assets/{vendor-dnd-hwiZJHjo.js → vendor-dnd-DQF7Aoap.js} +2 -2
- package/dist/interface/assets/vendor-draggabilly-Cghb3aIb.js +1 -0
- package/dist/interface/assets/vendor-gridstack-qw2ro2uB.js +3 -0
- package/dist/interface/assets/{vendor-leaflet-BMMJO5Nd.js → vendor-leaflet-Bcgd-fkG.js} +1 -1
- package/dist/interface/assets/vendor-markdown-DWwrEE67.js +14 -0
- package/dist/interface/assets/{vendor-primevue-C6wcTjtT.js → vendor-primevue-DYzLjOFZ.js} +85 -85
- package/dist/interface/assets/vendor-vueflow-crUU2mAI.js +26 -0
- package/dist/interface/assets/vendor-xterm-BafMBqaV.js +91 -0
- package/dist/interface/assets/vendor-zod-Dbq0fBXY.js +127 -0
- package/dist/interface/assets/web-BX3axHeB.js +1 -0
- package/dist/interface/assets/web-BcHmbPny.js +1 -0
- package/dist/interface/assets/web-BjKL51lK-BQjyRtns.js +1 -0
- package/dist/interface/assets/web-C8w-z-xR.js +1 -0
- package/dist/interface/assets/web-CHdniv8I.js +1 -0
- package/dist/interface/assets/web-CWBhY0Av.js +1 -0
- package/dist/interface/assets/web-Cf1yYy4u.js +1 -0
- package/dist/interface/assets/web-Ct6Vkr6F.js +1 -0
- package/dist/interface/assets/web-DARDw7d8.js +1 -0
- package/dist/interface/assets/web-DKBMdBSA.js +1 -0
- package/dist/interface/assets/web-Ddzvp-fv.js +1 -0
- package/dist/interface/assets/web-Dymr_MpD.js +1 -0
- package/dist/interface/assets/web-XIuTPdFc.js +1 -0
- package/dist/interface/assets/web-lrnXIJTz.js +1 -0
- package/dist/interface/assets/{webhook-yCryYojY.js → webhook-B7YgiSrF.js} +1 -1
- package/dist/interface/assets/workbox-window.prod.es5-BkFwsIPp.js +1 -0
- package/dist/interface/assets/{zoom-in-Da5uRiQq.js → zoom-in-D7BJNotF.js} +1 -1
- package/dist/interface/index.html +44 -40
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +11 -11
- package/dist/server/requirements.txt +4 -6
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc/client.py +3 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc/types.py +4 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +9 -14
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/__init__.py +0 -4
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +5 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/detection.py +6 -23
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/device.py +60 -100
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/events.py +3 -2
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/frames.py +2 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/__init__.py +2 -20
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/camera_config_internal.py +1 -1
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/camera_enums.py +3 -3
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/event_emitter.py +13 -26
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/manager_rpc.py +2 -5
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/sensor_rpc.py +21 -6
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/shared_utils.py +7 -18
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/manager/__init__.py +91 -29
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/observable/__init__.py +145 -37
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/__init__.py +10 -1
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/api.py +21 -68
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/contract.py +31 -58
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/helper.py +3 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/interfaces.py +137 -99
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/notifier.py +34 -52
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/oauth.py +4 -4
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +3 -4
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/audio.py +45 -39
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +329 -256
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/battery.py +17 -16
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/classifier.py +31 -27
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/clip.py +14 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/contact.py +11 -10
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/detection.py +34 -22
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/doorbell.py +19 -19
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/face.py +34 -28
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/garage.py +29 -20
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/humidity.py +22 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/leak.py +12 -11
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/license_plate.py +35 -31
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/light.py +22 -18
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/lock.py +26 -19
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/motion.py +28 -27
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/object.py +37 -33
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/occupancy.py +11 -10
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/ptz.py +20 -24
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/security_system.py +22 -22
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/siren.py +17 -16
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/smoke.py +11 -10
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/spec.py +26 -22
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/switch.py +13 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/temperature.py +22 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/storage/__init__.py +56 -38
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/types.py +15 -18
- package/dist/server/src/api/controllers/auth.controller.js +2 -1
- package/dist/server/src/api/controllers/auth.controller.js.map +1 -1
- package/dist/server/src/api/controllers/cameras.controller.d.ts +6 -0
- package/dist/server/src/api/controllers/cameras.controller.js +21 -11
- package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
- package/dist/server/src/api/controllers/cast.controller.d.ts +11 -0
- package/dist/server/src/api/controllers/cast.controller.js +29 -0
- package/dist/server/src/api/controllers/cast.controller.js.map +1 -0
- package/dist/server/src/api/controllers/notifications.controller.d.ts +12 -0
- package/dist/server/src/api/controllers/notifications.controller.js +41 -0
- package/dist/server/src/api/controllers/notifications.controller.js.map +1 -1
- package/dist/server/src/api/controllers/nvr.controller.d.ts +14 -0
- package/dist/server/src/api/controllers/nvr.controller.js +61 -0
- package/dist/server/src/api/controllers/nvr.controller.js.map +1 -0
- package/dist/server/src/api/controllers/sensors.controller.d.ts +13 -0
- package/dist/server/src/api/controllers/sensors.controller.js +94 -0
- package/dist/server/src/api/controllers/sensors.controller.js.map +1 -0
- package/dist/server/src/api/controllers/server.controller.d.ts +1 -0
- package/dist/server/src/api/controllers/server.controller.js +11 -0
- package/dist/server/src/api/controllers/server.controller.js.map +1 -1
- package/dist/server/src/api/controllers/tunnel.controller.d.ts +0 -3
- package/dist/server/src/api/controllers/tunnel.controller.js +1 -21
- package/dist/server/src/api/controllers/tunnel.controller.js.map +1 -1
- package/dist/server/src/api/database/constants.d.ts +2 -0
- package/dist/server/src/api/database/constants.js +2 -0
- package/dist/server/src/api/database/constants.js.map +1 -1
- package/dist/server/src/api/database/index.d.ts +5 -2
- package/dist/server/src/api/database/index.js +7 -4
- package/dist/server/src/api/database/index.js.map +1 -1
- package/dist/server/src/api/database/migrations/v2-1-0.d.ts +3 -0
- package/dist/server/src/api/database/migrations/v2-1-0.js +72 -0
- package/dist/server/src/api/database/migrations/v2-1-0.js.map +1 -0
- package/dist/server/src/api/database/record-schemas.d.ts +2 -3
- package/dist/server/src/api/database/record-schemas.js +3 -3
- package/dist/server/src/api/database/record-schemas.js.map +1 -1
- package/dist/server/src/api/database/types.d.ts +27 -3
- package/dist/server/src/api/index.js +3 -0
- package/dist/server/src/api/index.js.map +1 -1
- package/dist/server/src/api/plugins/natsSubFirewall.d.ts +1 -1
- package/dist/server/src/api/plugins/natsSubFirewall.js +5 -2
- package/dist/server/src/api/plugins/natsSubFirewall.js.map +1 -1
- package/dist/server/src/api/plugins/proxy.plugin.js +5 -3
- package/dist/server/src/api/plugins/proxy.plugin.js.map +1 -1
- package/dist/server/src/api/routes/cameras.routes.js +14 -7
- package/dist/server/src/api/routes/cameras.routes.js.map +1 -1
- package/dist/server/src/api/routes/cast.routes.d.ts +2 -0
- package/dist/server/src/api/routes/cast.routes.js +29 -0
- package/dist/server/src/api/routes/cast.routes.js.map +1 -0
- package/dist/server/src/api/routes/index.js +6 -2
- package/dist/server/src/api/routes/index.js.map +1 -1
- package/dist/server/src/api/routes/notifications.routes.js +32 -0
- package/dist/server/src/api/routes/notifications.routes.js.map +1 -1
- package/dist/server/src/api/routes/nvr.routes.d.ts +2 -0
- package/dist/server/src/api/routes/nvr.routes.js +19 -0
- package/dist/server/src/api/routes/nvr.routes.js.map +1 -0
- package/dist/server/src/api/routes/sensors.routes.d.ts +2 -0
- package/dist/server/src/api/routes/sensors.routes.js +89 -0
- package/dist/server/src/api/routes/sensors.routes.js.map +1 -0
- package/dist/server/src/api/routes/server.routes.js +10 -0
- package/dist/server/src/api/routes/server.routes.js.map +1 -1
- package/dist/server/src/api/schemas/cameras.schema.d.ts +103 -45
- package/dist/server/src/api/schemas/cameras.schema.js +7 -10
- package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
- package/dist/server/src/api/schemas/cast.schema.d.ts +7 -0
- package/dist/server/src/api/schemas/cast.schema.js +7 -0
- package/dist/server/src/api/schemas/cast.schema.js.map +1 -0
- package/dist/server/src/api/schemas/nvr.schema.d.ts +10 -0
- package/dist/server/src/api/schemas/nvr.schema.js +13 -0
- package/dist/server/src/api/schemas/nvr.schema.js.map +1 -0
- package/dist/server/src/api/schemas/{virtualsensors.schema.d.ts → sensors.schema.d.ts} +15 -8
- package/dist/server/src/api/schemas/sensors.schema.js +25 -0
- package/dist/server/src/api/schemas/sensors.schema.js.map +1 -0
- package/dist/server/src/api/schemas/users.schema.d.ts +7 -18
- package/dist/server/src/api/schemas/users.schema.js +3 -7
- package/dist/server/src/api/schemas/users.schema.js.map +1 -1
- package/dist/server/src/api/services/cameras.service.js +1 -1
- package/dist/server/src/api/services/cameras.service.js.map +1 -1
- package/dist/server/src/api/services/cast.service.d.ts +7 -0
- package/dist/server/src/api/services/cast.service.js +14 -0
- package/dist/server/src/api/services/cast.service.js.map +1 -0
- package/dist/server/src/api/services/instances.service.js +1 -1
- package/dist/server/src/api/services/notifications.service.d.ts +3 -0
- package/dist/server/src/api/services/notifications.service.js +9 -0
- package/dist/server/src/api/services/notifications.service.js.map +1 -1
- package/dist/server/src/api/services/plugins.service.js +18 -3
- package/dist/server/src/api/services/plugins.service.js.map +1 -1
- package/dist/server/src/api/services/sensors.service.d.ts +41 -0
- package/dist/server/src/api/services/sensors.service.js +106 -0
- package/dist/server/src/api/services/sensors.service.js.map +1 -0
- package/dist/server/src/api/services/server.service.d.ts +4 -0
- package/dist/server/src/api/services/server.service.js +14 -0
- package/dist/server/src/api/services/server.service.js.map +1 -1
- package/dist/server/src/api/services/users.service.js +6 -9
- package/dist/server/src/api/services/users.service.js.map +1 -1
- package/dist/server/src/api/types/index.d.ts +19 -6
- package/dist/server/src/api/websocket/nsp/events.js +38 -15
- package/dist/server/src/api/websocket/nsp/events.js.map +1 -1
- package/dist/server/src/api.d.ts +0 -2
- package/dist/server/src/api.js +0 -12
- package/dist/server/src/api.js.map +1 -1
- package/dist/server/src/automations/actions/sensor.js +4 -7
- package/dist/server/src/automations/actions/sensor.js.map +1 -1
- package/dist/server/src/automations/conditions/sensorState.js +4 -4
- package/dist/server/src/automations/conditions/sensorState.js.map +1 -1
- package/dist/server/src/automations/context.d.ts +2 -1
- package/dist/server/src/automations/context.js +2 -1
- package/dist/server/src/automations/context.js.map +1 -1
- package/dist/server/src/automations/pluginMethodRegistry.d.ts +2 -0
- package/dist/server/src/automations/pluginMethodRegistry.js +14 -0
- package/dist/server/src/automations/pluginMethodRegistry.js.map +1 -1
- package/dist/server/src/automations/triggers/sensor.js +12 -23
- package/dist/server/src/automations/triggers/sensor.js.map +1 -1
- package/dist/server/src/camera/controller.d.ts +0 -1
- package/dist/server/src/camera/controller.js +9 -46
- package/dist/server/src/camera/controller.js.map +1 -1
- package/dist/server/src/camera/decoder/detection-coordinator.js +13 -11
- package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
- package/dist/server/src/camera/decoder/plugin-registry.d.ts +1 -0
- package/dist/server/src/camera/decoder/plugin-registry.js +13 -1
- package/dist/server/src/camera/decoder/plugin-registry.js.map +1 -1
- package/dist/server/src/camera/decoder/ptz/autotracker.js +2 -2
- package/dist/server/src/camera/decoder/ptz/autotracker.js.map +1 -1
- package/dist/server/src/camera/decoder/secondary-stage.js +6 -6
- package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
- package/dist/server/src/camera/decoder/types.d.ts +7 -1
- package/dist/server/src/camera/decoder/types.js +4 -0
- package/dist/server/src/camera/decoder/types.js.map +1 -1
- package/dist/server/src/camera/decoder/worker.d.ts +2 -0
- package/dist/server/src/camera/decoder/worker.js +14 -3
- package/dist/server/src/camera/decoder/worker.js.map +1 -1
- package/dist/server/src/camera/index.d.ts +2 -14
- package/dist/server/src/camera/index.js +1 -32
- package/dist/server/src/camera/index.js.map +1 -1
- package/dist/server/src/camera/sensors/controller.d.ts +17 -77
- package/dist/server/src/camera/sensors/controller.js +60 -445
- package/dist/server/src/camera/sensors/controller.js.map +1 -1
- package/dist/server/src/internal-bus.d.ts +7 -13
- package/dist/server/src/internal-bus.js.map +1 -1
- package/dist/server/src/main.d.ts +1 -0
- package/dist/server/src/main.js +7 -0
- package/dist/server/src/main.js.map +1 -1
- package/dist/server/src/manager/castManager.d.ts +24 -0
- package/dist/server/src/manager/castManager.js +79 -0
- package/dist/server/src/manager/castManager.js.map +1 -0
- package/dist/server/src/manager/downloadManager.d.ts +1 -0
- package/dist/server/src/manager/downloadManager.js +6 -0
- package/dist/server/src/manager/downloadManager.js.map +1 -1
- package/dist/server/src/manager/notificationManager.d.ts +6 -0
- package/dist/server/src/manager/notificationManager.js +70 -3
- package/dist/server/src/manager/notificationManager.js.map +1 -1
- package/dist/server/src/mqtt/bridge.d.ts +7 -0
- package/dist/server/src/mqtt/bridge.js +92 -32
- package/dist/server/src/mqtt/bridge.js.map +1 -1
- package/dist/server/src/mqtt/ha-discovery.d.ts +1 -1
- package/dist/server/src/mqtt/ha-discovery.js +53 -8
- package/dist/server/src/mqtt/ha-discovery.js.map +1 -1
- package/dist/server/src/mqtt/manager.js +1 -1
- package/dist/server/src/mqtt/manager.js.map +1 -1
- package/dist/server/src/mqtt/topics.d.ts +3 -3
- package/dist/server/src/mqtt/topics.js +11 -10
- package/dist/server/src/mqtt/topics.js.map +1 -1
- package/dist/server/src/plugins/config-store.js +1 -1
- package/dist/server/src/plugins/config-store.js.map +1 -1
- package/dist/server/src/plugins/runtime/base.d.ts +1 -0
- package/dist/server/src/plugins/runtime/base.js +29 -6
- package/dist/server/src/plugins/runtime/base.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/child.js +5 -2
- package/dist/server/src/plugins/runtime/node/child.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/pluginApi.d.ts +2 -0
- package/dist/server/src/plugins/runtime/node/pluginApi.js +4 -1
- package/dist/server/src/plugins/runtime/node/pluginApi.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.d.ts +5 -13
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +97 -179
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.d.ts +2 -1
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js +19 -2
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/reconnect.d.ts +2 -0
- package/dist/server/src/plugins/runtime/node/proxy/reconnect.js +27 -0
- package/dist/server/src/plugins/runtime/node/proxy/reconnect.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/proxy/sensor.d.ts +17 -3
- package/dist/server/src/plugins/runtime/node/proxy/sensor.js +61 -20
- package/dist/server/src/plugins/runtime/node/proxy/sensor.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/sensorManager.d.ts +18 -0
- package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js +269 -0
- package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/storage.d.ts +1 -1
- package/dist/server/src/plugins/runtime/node/storage.js +2 -2
- package/dist/server/src/plugins/runtime/node/storage.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/storageController.d.ts +5 -5
- package/dist/server/src/plugins/runtime/node/storageController.js +20 -28
- package/dist/server/src/plugins/runtime/node/storageController.js.map +1 -1
- package/dist/server/src/plugins/runtime/python/child.py +13 -7
- package/dist/server/src/plugins/runtime/python/namespaces.py +13 -19
- package/dist/server/src/plugins/runtime/python/plugin_api.py +10 -1
- package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +130 -280
- package/dist/server/src/plugins/runtime/python/proxy/device_manager.py +18 -0
- package/dist/server/src/plugins/runtime/python/proxy/sensor.py +88 -21
- package/dist/server/src/plugins/runtime/python/proxy/sensor_manager.py +386 -0
- package/dist/server/src/plugins/runtime/python/storage.py +1 -3
- package/dist/server/src/plugins/runtime/python/storage_controller.py +19 -50
- package/dist/server/src/plugins/runtime/python/store.py +19 -95
- package/dist/server/src/plugins/runtime/python/typings.py +32 -9
- package/dist/server/src/plugins/store/layout.d.ts +1 -2
- package/dist/server/src/plugins/store/layout.js +9 -56
- package/dist/server/src/plugins/store/layout.js.map +1 -1
- package/dist/server/src/plugins/store/location.d.ts +2 -3
- package/dist/server/src/plugins/store/location.js +5 -13
- package/dist/server/src/plugins/store/location.js.map +1 -1
- package/dist/server/src/plugins/store/pluginStoreFile.d.ts +1 -2
- package/dist/server/src/plugins/store/pluginStoreFile.js +8 -15
- package/dist/server/src/plugins/store/pluginStoreFile.js.map +1 -1
- package/dist/server/src/plugins/worker.d.ts +2 -0
- package/dist/server/src/plugins/worker.js +26 -7
- package/dist/server/src/plugins/worker.js.map +1 -1
- package/dist/server/src/rpc/index.d.ts +2 -0
- package/dist/server/src/rpc/index.js +5 -0
- package/dist/server/src/rpc/index.js.map +1 -1
- package/dist/server/src/rpc/interfaces/sensor.d.ts +33 -16
- package/dist/server/src/rpc/namespaces.d.ts +17 -8
- package/dist/server/src/rpc/namespaces.js +20 -12
- package/dist/server/src/rpc/namespaces.js.map +1 -1
- package/dist/server/src/rpc/server.js +1 -0
- package/dist/server/src/rpc/server.js.map +1 -1
- package/dist/server/src/sensors/registry.d.ts +96 -0
- package/dist/server/src/sensors/registry.js +808 -0
- package/dist/server/src/sensors/registry.js.map +1 -0
- package/dist/server/src/{camera/sensors → sensors}/semantics.d.ts +1 -1
- package/dist/server/src/{camera/sensors → sensors}/semantics.js +4 -1
- package/dist/server/src/sensors/semantics.js.map +1 -0
- package/dist/server/src/sensors/sensor.d.ts +58 -0
- package/dist/server/src/{camera/sensors → sensors}/sensor.js +43 -32
- package/dist/server/src/sensors/sensor.js.map +1 -0
- package/dist/server/src/{camera/sensors → sensors}/types.d.ts +2 -0
- package/dist/server/src/{camera/sensors → sensors}/types.js +9 -0
- package/dist/server/src/sensors/types.js.map +1 -0
- package/dist/server/src/{camera/sensors → sensors}/virtual.d.ts +4 -6
- package/dist/server/src/{camera/sensors → sensors}/virtual.js +10 -56
- package/dist/server/src/sensors/virtual.js.map +1 -0
- package/dist/server/src/services/mdns/index.js +4 -0
- package/dist/server/src/services/mdns/index.js.map +1 -1
- package/package.json +11 -11
- package/dist/interface/assets/404-0d936klL.js +0 -1
- package/dist/interface/assets/About-BMwYrGrl.js +0 -1
- package/dist/interface/assets/Adminpanel-DBsOmAuo.js +0 -1
- package/dist/interface/assets/Automation-BLndVfqR.js +0 -3
- package/dist/interface/assets/AutomationImport-Ba33juY0.js +0 -2
- package/dist/interface/assets/AutomationStore-Bjf1x7go.js +0 -2
- package/dist/interface/assets/AutomationStoreDetail-Ko3n3U1U.js +0 -2
- package/dist/interface/assets/Automations-BfC8bvkT.js +0 -2
- package/dist/interface/assets/Camera-BYDPeH6d.js +0 -2
- package/dist/interface/assets/CameraConsole-pVCj1xXI.js +0 -7
- package/dist/interface/assets/Cameras-DdokAe_Q.js +0 -652
- package/dist/interface/assets/Camview-DmuGSzal.js +0 -1
- package/dist/interface/assets/Config-DvVqB0_Y.js +0 -2
- package/dist/interface/assets/ConfigActionDelay-B1JjI6bg.js +0 -1
- package/dist/interface/assets/ConfigActionHttp-BzGIbeVo.js +0 -1
- package/dist/interface/assets/ConfigActionImageInput-C6m2-s8z.js +0 -1
- package/dist/interface/assets/ConfigActionMqtt-ByZNQKsg.js +0 -1
- package/dist/interface/assets/ConfigActionNotification-YmdMddoN.js +0 -1
- package/dist/interface/assets/ConfigActionNotificationControl-2hWDRBpq.js +0 -1
- package/dist/interface/assets/ConfigActionOutput-D9k1-jfI.js +0 -1
- package/dist/interface/assets/ConfigActionPlugin-DjD_94EX.js +0 -1
- package/dist/interface/assets/ConfigActionSensor-fak8jYSC.js +0 -1
- package/dist/interface/assets/ConfigActionSnapshot-mwEHXqyk.js +0 -1
- package/dist/interface/assets/ConfigActionVariable-kBxNfyOV.js +0 -1
- package/dist/interface/assets/ConfigConditionIfElse-CkjmImTD.js +0 -1
- package/dist/interface/assets/ConfigConditionSensorState-FE3mFjRe.js +0 -1
- package/dist/interface/assets/ConfigConditionSwitch-msqWizIt.js +0 -1
- package/dist/interface/assets/ConfigConditionTime-ifPV135b.js +0 -1
- package/dist/interface/assets/ConfigSensorValueInput-Bg3SEbSh.js +0 -1
- package/dist/interface/assets/ConfigTriggerGeofence-CemaUwl5.js +0 -1
- package/dist/interface/assets/ConfigTriggerManual-DWuiq7PC.js +0 -1
- package/dist/interface/assets/ConfigTriggerMqtt-DxAoDh2Z.js +0 -1
- package/dist/interface/assets/ConfigTriggerSchedule-DDqgMGvp.js +0 -1
- package/dist/interface/assets/ConfigTriggerSensor-M6bXqz4k.js +0 -1
- package/dist/interface/assets/ConfigTriggerWebhook-CxOXgcJi.js +0 -1
- package/dist/interface/assets/Console-CMuW2_8s.js +0 -1
- package/dist/interface/assets/CuiAutomationRunsDialog-yh1qHzmS.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-BshiVWqw.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-DSNyVg5P.js +0 -1
- package/dist/interface/assets/CuiCameraPipCard-Cmk0jl6M.js +0 -1
- package/dist/interface/assets/CuiCameraRecordings-KU1wIai4.js +0 -1
- package/dist/interface/assets/CuiCameraShares-BoR3YQWj.js +0 -1
- package/dist/interface/assets/CuiCameraTable-BRPBqU8V.js +0 -2
- package/dist/interface/assets/CuiDataTable-BGY4VBtv.js +0 -1
- package/dist/interface/assets/CuiList-BSOMR296.js +0 -1
- package/dist/interface/assets/CuiMarkdownContent-DEMo42iT.js +0 -1
- package/dist/interface/assets/CuiMarkdownContent-Xn_VHwym.js +0 -1
- package/dist/interface/assets/CuiPluginCard-CgJb8B1W.js +0 -2
- package/dist/interface/assets/CuiPluginOAuthButton-XpEyqoRm.js +0 -2
- package/dist/interface/assets/CuiQRCode-QBkbmvRA.js +0 -1
- package/dist/interface/assets/CuiRecordingsGrid-CuEl_hhu.js +0 -1
- package/dist/interface/assets/CuiSchema-D_cg-H5i.js +0 -1
- package/dist/interface/assets/CuiTopNavbarItem-CXijnkK9.js +0 -1
- package/dist/interface/assets/Faces-C95mlWaW.js +0 -1
- package/dist/interface/assets/FirstSteps-Cpbg7fng.js +0 -1
- package/dist/interface/assets/Instances-BgJtM1Xl.js +0 -1
- package/dist/interface/assets/Logs-BWXYqm5T.js +0 -6
- package/dist/interface/assets/Menu-BO9Zjy1w.js +0 -1
- package/dist/interface/assets/OAuthDeviceFlow-NnwqdmBM.js +0 -1
- package/dist/interface/assets/Plugin-DQq3xjhe.js +0 -1
- package/dist/interface/assets/PluginConsole-BTsVAsKf.js +0 -7
- package/dist/interface/assets/PluginDetail-CTyzzZVU.js +0 -2
- package/dist/interface/assets/PluginSchema-Bn3pHjQA.js +0 -1
- package/dist/interface/assets/PluginSearch-DbXCyUF0.js +0 -1
- package/dist/interface/assets/PluginSearch-z0z8Z1gP.js +0 -2
- package/dist/interface/assets/Plugins-Cy7e-ty2.js +0 -1
- package/dist/interface/assets/Recordings-CWBpGEUf.js +0 -1
- package/dist/interface/assets/Settings-CUIORSmm.js +0 -1
- package/dist/interface/assets/SettingsAccount-CeJBKpzp.js +0 -1
- package/dist/interface/assets/SettingsAccount-CnwVrQx1.js +0 -1
- package/dist/interface/assets/SettingsAppearance-BraaC0WF.js +0 -1
- package/dist/interface/assets/SettingsAppearance-CZrOTBki.js +0 -1
- package/dist/interface/assets/SettingsBackup-y9mb8XZZ.js +0 -1
- package/dist/interface/assets/SettingsList-DsKncveQ.js +0 -1
- package/dist/interface/assets/SettingsMqtt-DTyyctmQ.js +0 -1
- package/dist/interface/assets/SettingsNotifications-SFMt4Yuj.js +0 -2
- package/dist/interface/assets/SettingsPermissions-CktJaQzL.js +0 -1
- package/dist/interface/assets/SettingsRecordings-Bqguyt6u.js +0 -1
- package/dist/interface/assets/SettingsRemote-CTv7bb4g.js +0 -1
- package/dist/interface/assets/SettingsSystem-CkCnB34r.js +0 -2
- package/dist/interface/assets/SettingsUsers-D8LAGd6F.js +0 -1
- package/dist/interface/assets/Terminal-DaR9Ur0_.js +0 -4
- package/dist/interface/assets/VariableInput-D0TP_Lmo.js +0 -1
- package/dist/interface/assets/VariableSuggestions--vq7928F.js +0 -1
- package/dist/interface/assets/VersionsHandler-D9GDdcXr.js +0 -7
- package/dist/interface/assets/Workers-CUyRzwJG.js +0 -2
- package/dist/interface/assets/ace-DYqf8ZN7.js +0 -1
- package/dist/interface/assets/alert-outline-BUvdNY2J.js +0 -1
- package/dist/interface/assets/api-DxrxNyIH.js +0 -2
- package/dist/interface/assets/api-VZ_wVUpU.css +0 -2
- package/dist/interface/assets/arrow-left-LdfKbcre.js +0 -1
- package/dist/interface/assets/arrow-right-outline-BbTEhBJq.js +0 -1
- package/dist/interface/assets/automationBlueprint-DMjszOs4.js +0 -1
- package/dist/interface/assets/automations-51-JMUWD.js +0 -1
- package/dist/interface/assets/check-circle-D-utE_P9.js +0 -1
- package/dist/interface/assets/chevron-down-OEjMpuec.js +0 -1
- package/dist/interface/assets/chevron-right-B3nxd9UE.js +0 -1
- package/dist/interface/assets/cloudHandoff-BktPB9rt.js +0 -1
- package/dist/interface/assets/copy-BvSzmsFs.js +0 -1
- package/dist/interface/assets/delete-B9BZTgya.js +0 -1
- package/dist/interface/assets/dist-qdWlJrr0.js +0 -1
- package/dist/interface/assets/download-Dp_ssGIE.js +0 -1
- package/dist/interface/assets/esm-9VMgxuPI.js +0 -1
- package/dist/interface/assets/esm-B69zS8aI.js +0 -1
- package/dist/interface/assets/esm-BF94InGP.js +0 -1
- package/dist/interface/assets/esm-BHdK6hkk.js +0 -1
- package/dist/interface/assets/esm-BYm8JT8N.js +0 -1
- package/dist/interface/assets/esm-BwCmHX2G.js +0 -1
- package/dist/interface/assets/esm-CL6t-XYT.js +0 -1
- package/dist/interface/assets/esm-CXstRMXa.js +0 -1
- package/dist/interface/assets/esm-Ckb9rjlL.js +0 -1
- package/dist/interface/assets/esm-D4insKbc.js +0 -1
- package/dist/interface/assets/esm-DiReJ8YS.js +0 -1
- package/dist/interface/assets/esm-Dt_Neag0.js +0 -1
- package/dist/interface/assets/esm-GspmWlKf.js +0 -1
- package/dist/interface/assets/esm-eezqpB2a.js +0 -1
- package/dist/interface/assets/flowSchema-Ckr7CEbZ.js +0 -1
- package/dist/interface/assets/home-DL94781-.js +0 -1
- package/dist/interface/assets/main-BxM81wMi.css +0 -1
- package/dist/interface/assets/main-DOjghmGX.js +0 -3
- package/dist/interface/assets/mqtt-COazyb4A.js +0 -1
- package/dist/interface/assets/native-WiRjRKUS.js +0 -1
- package/dist/interface/assets/native-hhip9y-E.js +0 -1
- package/dist/interface/assets/nodeDefinitions-CPyyuw1P.js +0 -1
- package/dist/interface/assets/plugin-DIVM640y.js +0 -1
- package/dist/interface/assets/plus-CTzaBaTz.js +0 -1
- package/dist/interface/assets/power-CvKGepBP.js +0 -1
- package/dist/interface/assets/rolldown-runtime-DAXXjFlN.js +0 -1
- package/dist/interface/assets/round-restart-alt-D3iswthu.js +0 -1
- package/dist/interface/assets/trash-can-outline-HvqPHpF7.js +0 -1
- package/dist/interface/assets/types-CDJiWcQ7.js +0 -1
- package/dist/interface/assets/upload-B6yqOWqz.js +0 -1
- package/dist/interface/assets/useBackupRestore-QuXkc5ZG.js +0 -1
- package/dist/interface/assets/useCameraOptions-D5-bI-e6.js +0 -1
- package/dist/interface/assets/useLogsSocket-BlAo-xcw.js +0 -5
- package/dist/interface/assets/useServerRestart-DctcFWWh.js +0 -1
- package/dist/interface/assets/useUserOptions-nuBRgAEk.js +0 -1
- package/dist/interface/assets/vendor-ace-CrklN-bc.js +0 -1085
- package/dist/interface/assets/vendor-cameraui-B_OCKNGw.js +0 -2040
- package/dist/interface/assets/vendor-capacitor-D6T-f6Q_.js +0 -2
- package/dist/interface/assets/vendor-chart-DpsXMlB-.js +0 -3
- package/dist/interface/assets/vendor-core-zLmLhSHM.js +0 -1
- package/dist/interface/assets/vendor-draggabilly-OrLwQbim.js +0 -1
- package/dist/interface/assets/vendor-gridstack-C6VKsm_r.js +0 -3
- package/dist/interface/assets/vendor-markdown-_OBaDsnU.js +0 -15
- package/dist/interface/assets/vendor-nfBMzqgY.js +0 -22
- package/dist/interface/assets/vendor-vueflow-B1MUSE71.js +0 -26
- package/dist/interface/assets/vendor-xterm-IIYDrBG1.js +0 -142
- package/dist/interface/assets/vendor-zod-BaT-dXMv.js +0 -127
- package/dist/interface/assets/web-B-SlpbxK.js +0 -1
- package/dist/interface/assets/web-B6leYIzJ.js +0 -1
- package/dist/interface/assets/web-BLDe3Kn0.js +0 -1
- package/dist/interface/assets/web-BT-51W2W.js +0 -1
- package/dist/interface/assets/web-BjKL51lK-DHLvmMLr.js +0 -1
- package/dist/interface/assets/web-BpRU7MbT.js +0 -1
- package/dist/interface/assets/web-CiaJvmq8.js +0 -1
- package/dist/interface/assets/web-Cnkt61og.js +0 -1
- package/dist/interface/assets/web-CzhM-YH1.js +0 -1
- package/dist/interface/assets/web-Da5rcZ2Q.js +0 -1
- package/dist/interface/assets/web-DdZjFuTb.js +0 -1
- package/dist/interface/assets/web-DnHj9sl9.js +0 -1
- package/dist/interface/assets/web-E4Ew4Xhj.js +0 -1
- package/dist/interface/assets/web-q63OEDhG.js +0 -1
- package/dist/interface/assets/workbox-window.prod.es5-BMiTt6Ad.js +0 -1
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/sensor_triggers.py +0 -4
- package/dist/server/src/api/controllers/virtualsensors.controller.d.ts +0 -11
- package/dist/server/src/api/controllers/virtualsensors.controller.js +0 -61
- package/dist/server/src/api/controllers/virtualsensors.controller.js.map +0 -1
- package/dist/server/src/api/routes/virtualsensors.routes.d.ts +0 -2
- package/dist/server/src/api/routes/virtualsensors.routes.js +0 -63
- package/dist/server/src/api/routes/virtualsensors.routes.js.map +0 -1
- package/dist/server/src/api/schemas/virtualsensors.schema.js +0 -14
- package/dist/server/src/api/schemas/virtualsensors.schema.js.map +0 -1
- package/dist/server/src/api/services/virtualsensors.service.d.ts +0 -20
- package/dist/server/src/api/services/virtualsensors.service.js +0 -151
- package/dist/server/src/api/services/virtualsensors.service.js.map +0 -1
- package/dist/server/src/camera/sensors/semantics.js.map +0 -1
- package/dist/server/src/camera/sensors/sensor.d.ts +0 -34
- package/dist/server/src/camera/sensors/sensor.js.map +0 -1
- package/dist/server/src/camera/sensors/stable-id.d.ts +0 -2
- package/dist/server/src/camera/sensors/stable-id.js +0 -17
- package/dist/server/src/camera/sensors/stable-id.js.map +0 -1
- package/dist/server/src/camera/sensors/types.js.map +0 -1
- package/dist/server/src/camera/sensors/virtual.js.map +0 -1
- package/dist/server/src/plugins/runtime/python/store_migrate.py +0 -59
- package/dist/server/src/plugins/store/migrate.d.ts +0 -1
- package/dist/server/src/plugins/store/migrate.js +0 -22
- package/dist/server/src/plugins/store/migrate.js.map +0 -1
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from collections.abc import Callable
|
|
4
3
|
from typing import TYPE_CHECKING, Any, Protocol, TypeAlias, runtime_checkable
|
|
5
4
|
|
|
6
5
|
if TYPE_CHECKING:
|
|
7
|
-
from ..observable import
|
|
8
|
-
from ..sensor.base import Sensor
|
|
6
|
+
from ..observable import Observable
|
|
7
|
+
from ..sensor.base import Sensor
|
|
9
8
|
from ..storage import DeviceStorage, JsonSchema
|
|
10
9
|
from ..types import LoggerService
|
|
11
10
|
|
|
@@ -15,7 +14,6 @@ from .config import (
|
|
|
15
14
|
CameraPropertyObservableObject,
|
|
16
15
|
CameraPublicProperties,
|
|
17
16
|
CameraUiSettings,
|
|
18
|
-
SensorEventData,
|
|
19
17
|
)
|
|
20
18
|
from .detection import CameraDetectionSettings, DetectionLine, DetectionZone, PtzAutotrackSettings
|
|
21
19
|
from .enums import CameraRole, CameraType
|
|
@@ -247,18 +245,6 @@ class CameraDevice(Protocol):
|
|
|
247
245
|
"""Snapshot source (if available)."""
|
|
248
246
|
...
|
|
249
247
|
|
|
250
|
-
def getSourceById(self, id: str) -> CameraDeviceSource | None:
|
|
251
|
-
"""
|
|
252
|
-
Get a source by its ID.
|
|
253
|
-
|
|
254
|
-
Args:
|
|
255
|
-
id: The source ID.
|
|
256
|
-
|
|
257
|
-
Returns:
|
|
258
|
-
The matching source, or None if not found.
|
|
259
|
-
"""
|
|
260
|
-
...
|
|
261
|
-
|
|
262
248
|
@property
|
|
263
249
|
def connected(self) -> bool:
|
|
264
250
|
"""Whether camera is connected."""
|
|
@@ -280,117 +266,98 @@ class CameraDevice(Protocol):
|
|
|
280
266
|
...
|
|
281
267
|
|
|
282
268
|
@property
|
|
283
|
-
def
|
|
284
|
-
"""Logger service for this camera."""
|
|
285
|
-
...
|
|
286
|
-
|
|
287
|
-
async def connect(self) -> None:
|
|
269
|
+
def onDetectionEvent(self) -> Observable[DetectionEventPayload]:
|
|
288
270
|
"""
|
|
289
|
-
|
|
271
|
+
Observable for detection events.
|
|
290
272
|
|
|
291
|
-
|
|
273
|
+
Emits 'start', 'update', 'end', 'segment-start', 'segment-update' and 'segment-end'.
|
|
274
|
+
Segments ride on the segment-* messages only, thumbnails on 'segment-start'
|
|
275
|
+
and 'segment-end'.
|
|
292
276
|
"""
|
|
293
277
|
...
|
|
294
278
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
Only the plugin that owns this camera (via pluginInfo) may disconnect it.
|
|
300
|
-
"""
|
|
279
|
+
@property
|
|
280
|
+
def logger(self) -> LoggerService:
|
|
281
|
+
"""Logger service for this camera."""
|
|
301
282
|
...
|
|
302
283
|
|
|
303
|
-
def
|
|
304
|
-
self, property: CameraPublicProperties | list[CameraPublicProperties]
|
|
305
|
-
) -> Observable[CameraPropertyObservableObject]:
|
|
284
|
+
def getSourceById(self, id: str) -> CameraDeviceSource | None:
|
|
306
285
|
"""
|
|
307
|
-
|
|
286
|
+
Get a source by its ID.
|
|
308
287
|
|
|
309
288
|
Args:
|
|
310
|
-
|
|
289
|
+
id: The source ID.
|
|
311
290
|
|
|
312
291
|
Returns:
|
|
313
|
-
|
|
292
|
+
The matching source, or None if not found.
|
|
314
293
|
"""
|
|
315
294
|
...
|
|
316
295
|
|
|
317
|
-
def
|
|
318
|
-
"""Get all sensors attached to this camera (owned + foreign)."""
|
|
319
|
-
...
|
|
320
|
-
|
|
321
|
-
def getSensor(self, sensorId: str) -> SensorLike | None:
|
|
322
|
-
"""Get sensor by ID (checks owned and foreign sensors)."""
|
|
323
|
-
...
|
|
324
|
-
|
|
325
|
-
def getSensorsByType(self, sensorType: SensorType) -> list[SensorLike]:
|
|
326
|
-
"""Get all sensors of a specific type (owned + foreign)."""
|
|
327
|
-
...
|
|
328
|
-
|
|
329
|
-
def onSensorProperty(
|
|
330
|
-
self,
|
|
331
|
-
sensor_type: SensorType,
|
|
332
|
-
property: str,
|
|
333
|
-
callback: Callable[[Any, int, SensorLike], None],
|
|
334
|
-
) -> Disposable:
|
|
296
|
+
def createStorage(self, schemas: list[JsonSchema]) -> DeviceStorage:
|
|
335
297
|
"""
|
|
336
|
-
|
|
337
|
-
Automatically subscribes/unsubscribes when sensors of the given type are added/removed.
|
|
298
|
+
Create storage for plugin-specific camera configuration.
|
|
338
299
|
|
|
339
300
|
Args:
|
|
340
|
-
|
|
341
|
-
property: The property name to observe.
|
|
342
|
-
callback: Called with (value, timestamp_ms, sensor) when the property changes.
|
|
301
|
+
schemas: Schema definitions for the storage.
|
|
343
302
|
|
|
344
303
|
Returns:
|
|
345
|
-
|
|
304
|
+
Typed device storage instance.
|
|
346
305
|
"""
|
|
347
306
|
...
|
|
348
307
|
|
|
349
|
-
async def
|
|
308
|
+
async def connect(self) -> None:
|
|
350
309
|
"""
|
|
351
|
-
|
|
310
|
+
Tell the server this camera is online.
|
|
352
311
|
|
|
353
|
-
|
|
354
|
-
sensor: Sensor instance to add.
|
|
312
|
+
Only the plugin that owns this camera (via pluginInfo) may connect it.
|
|
355
313
|
"""
|
|
356
314
|
...
|
|
357
315
|
|
|
358
|
-
async def
|
|
316
|
+
async def disconnect(self) -> None:
|
|
359
317
|
"""
|
|
360
|
-
|
|
318
|
+
Tell the server this camera is offline.
|
|
361
319
|
|
|
362
|
-
|
|
363
|
-
sensorId: ID of sensor to remove.
|
|
320
|
+
Only the plugin that owns this camera (via pluginInfo) may disconnect it.
|
|
364
321
|
"""
|
|
365
322
|
...
|
|
366
323
|
|
|
367
|
-
|
|
368
|
-
|
|
324
|
+
def onPropertyChange(
|
|
325
|
+
self, property: CameraPublicProperties | list[CameraPublicProperties]
|
|
326
|
+
) -> Observable[CameraPropertyObservableObject]:
|
|
369
327
|
"""
|
|
370
|
-
|
|
328
|
+
Observe camera property changes.
|
|
371
329
|
|
|
372
|
-
|
|
373
|
-
|
|
330
|
+
Args:
|
|
331
|
+
property: Property name(s) to observe.
|
|
332
|
+
|
|
333
|
+
Returns:
|
|
334
|
+
Observable emitting old and new values.
|
|
374
335
|
"""
|
|
375
336
|
...
|
|
376
337
|
|
|
377
|
-
|
|
378
|
-
def onSensorRemoved(self) -> Observable[SensorEventData]:
|
|
338
|
+
async def addSensor(self, sensor: Sensor[Any, Any, Any]) -> None:
|
|
379
339
|
"""
|
|
380
|
-
|
|
340
|
+
Register a sensor that belongs to this camera's hardware (spotlight,
|
|
341
|
+
siren, PTZ, battery, ...). The host assigns it to this camera and
|
|
342
|
+
reconciles it across restarts like a standalone sensor.
|
|
343
|
+
|
|
344
|
+
Registering here declares "this sensor belongs to this camera and no
|
|
345
|
+
other": the assignment is locked, users cannot re-assign it. For
|
|
346
|
+
sensors the user should assign freely, register via
|
|
347
|
+
``sensorManager.addSensor()`` instead.
|
|
381
348
|
|
|
382
|
-
|
|
383
|
-
|
|
349
|
+
Args:
|
|
350
|
+
sensor: Sensor instance to register.
|
|
384
351
|
"""
|
|
385
352
|
...
|
|
386
353
|
|
|
387
|
-
|
|
388
|
-
def onDetectionEvent(self) -> Observable[DetectionEventPayload]:
|
|
354
|
+
async def removeSensor(self, sensorId: str) -> None:
|
|
389
355
|
"""
|
|
390
|
-
|
|
356
|
+
Unregister a sensor this plugin registered on this camera. The
|
|
357
|
+
persisted entity stays (shows disconnected) unless the user deletes it.
|
|
391
358
|
|
|
392
|
-
|
|
393
|
-
|
|
359
|
+
Args:
|
|
360
|
+
sensorId: ID of sensor to unregister.
|
|
394
361
|
"""
|
|
395
362
|
...
|
|
396
363
|
|
|
@@ -402,52 +369,45 @@ class CameraDevice(Protocol):
|
|
|
402
369
|
or both.
|
|
403
370
|
|
|
404
371
|
Args:
|
|
405
|
-
impl: Object or class implementing camera interfaces
|
|
406
|
-
"""
|
|
407
|
-
...
|
|
408
|
-
|
|
409
|
-
def createStorage(self, schemas: list[JsonSchema]) -> DeviceStorage:
|
|
410
|
-
"""
|
|
411
|
-
Create storage for plugin-specific camera configuration.
|
|
412
|
-
|
|
413
|
-
Args:
|
|
414
|
-
schemas: Schema definitions for the storage
|
|
415
|
-
|
|
416
|
-
Returns:
|
|
417
|
-
Typed device storage instance
|
|
372
|
+
impl: Object or class implementing camera interfaces.
|
|
418
373
|
"""
|
|
419
374
|
...
|
|
420
375
|
|
|
421
376
|
|
|
422
377
|
@runtime_checkable
|
|
423
378
|
class StreamingInterface(Protocol):
|
|
379
|
+
"""Optional implementation that provides stream URLs."""
|
|
380
|
+
|
|
424
381
|
async def streamUrl(self, source_id: str) -> str:
|
|
425
382
|
"""
|
|
426
383
|
Get the streaming URL for a source.
|
|
427
384
|
|
|
428
385
|
Args:
|
|
429
|
-
source_id: The ID of the source
|
|
386
|
+
source_id: The ID of the source.
|
|
430
387
|
|
|
431
388
|
Returns:
|
|
432
|
-
The streaming URL (e.g
|
|
389
|
+
The streaming URL (e.g. rtsp://, rtmp://, or custom protocol).
|
|
433
390
|
"""
|
|
434
391
|
...
|
|
435
392
|
|
|
436
393
|
|
|
437
394
|
@runtime_checkable
|
|
438
395
|
class SnapshotInterface(Protocol):
|
|
396
|
+
"""Optional implementation that provides snapshots."""
|
|
397
|
+
|
|
439
398
|
async def snapshot(self, source_id: str, force_new: bool = False) -> bytes | None:
|
|
440
399
|
"""
|
|
441
400
|
Get a snapshot image from the camera.
|
|
442
401
|
|
|
443
402
|
Args:
|
|
444
|
-
source_id: The source ID to get the snapshot from
|
|
445
|
-
force_new: If True, bypass cache and get a fresh snapshot
|
|
403
|
+
source_id: The source ID to get the snapshot from.
|
|
404
|
+
force_new: If True, bypass cache and get a fresh snapshot.
|
|
446
405
|
|
|
447
406
|
Returns:
|
|
448
|
-
Image data as bytes, or None if unavailable
|
|
407
|
+
Image data as bytes, or None if unavailable.
|
|
449
408
|
"""
|
|
450
409
|
...
|
|
451
410
|
|
|
452
411
|
|
|
453
412
|
CameraImplementation: TypeAlias = StreamingInterface | SnapshotInterface
|
|
413
|
+
"""Value accepted by CameraDevice.implement: streaming, snapshot, or both."""
|
|
@@ -92,7 +92,8 @@ class EventSegment(TypedDict):
|
|
|
92
92
|
lastSeen: int
|
|
93
93
|
"""Segment end time (Unix ms)."""
|
|
94
94
|
thumbnail: NotRequired[bytes]
|
|
95
|
-
"""Best-selected JPEG scene thumbnail for this segment.
|
|
95
|
+
"""Best-selected JPEG scene thumbnail for this segment. Present on 'segment-start' and
|
|
96
|
+
'segment-end', plus once on a 'segment-update' if the start message had none."""
|
|
96
97
|
detections: list[EventDetection]
|
|
97
98
|
"""Object detections in this segment."""
|
|
98
99
|
attributes: list[EventAttribute]
|
|
@@ -130,7 +131,7 @@ class DetectionEvent(TypedDict):
|
|
|
130
131
|
segmentIndex: NotRequired[int]
|
|
131
132
|
"""Index of the segment in segments[0] for segment-* messages."""
|
|
132
133
|
expectedEndTime: NotRequired[int]
|
|
133
|
-
"""Expected event end time (Unix ms)
|
|
134
|
+
"""Expected event end time (Unix ms): the latest dwell expiry across all
|
|
134
135
|
currently-active triggers. Monotonically non-decreasing during the event
|
|
135
136
|
lifetime. Updated on each `update` / `segment-*` message."""
|
|
136
137
|
thumbnail: NotRequired[bytes]
|
|
@@ -38,6 +38,8 @@ class CameraFrameWorkerSettings(TypedDict):
|
|
|
38
38
|
"""Capture event thumbnails from the highest-resolution source."""
|
|
39
39
|
decoder: NotRequired[FrameWorkerDecoderSettings]
|
|
40
40
|
"""Decoder hardware selection. Applies on the machine that decodes this camera (master or assigned worker); an unusable selection falls back to auto."""
|
|
41
|
+
workerDecoder: NotRequired[FrameWorkerDecoderSettings]
|
|
42
|
+
"""Decoder hardware selection used instead of `decoder` while this camera decodes on its assigned worker. Falls back to `decoder` when omitted."""
|
|
41
43
|
|
|
42
44
|
|
|
43
45
|
class SnapshotSettings(TypedDict):
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
"""Internal SDK symbols.
|
|
2
|
-
|
|
3
|
-
This subpackage exposes symbols used by the camera.ui server runtime and
|
|
4
|
-
SDK internals but NOT part of the public plugin API. Plugin authors should
|
|
5
|
-
not import from ``camera_ui_sdk.internal``; the contents may change without
|
|
6
|
-
deprecation.
|
|
7
|
-
|
|
8
|
-
Symbols are re-exported lazily via ``__getattr__`` to avoid circular imports
|
|
9
|
-
during SDK bootstrap. Consumers can still ``from camera_ui_sdk.internal import X``.
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
1
|
from __future__ import annotations
|
|
13
2
|
|
|
14
3
|
from typing import TYPE_CHECKING, Any
|
|
@@ -22,16 +11,14 @@ if TYPE_CHECKING:
|
|
|
22
11
|
from .sensor_rpc import (
|
|
23
12
|
CapabilityUpdateFn,
|
|
24
13
|
PropertyChangedEvent,
|
|
25
|
-
PropertyChangeListener,
|
|
26
14
|
PropertyUpdateFn,
|
|
27
15
|
SensorJSON,
|
|
28
16
|
)
|
|
29
|
-
from .sensor_triggers import SENSOR_TRIGGER_TYPES
|
|
30
17
|
from .shared_utils import is_equal
|
|
31
18
|
from .streaming_internal import IceServer
|
|
32
19
|
|
|
33
20
|
__all__ = [
|
|
34
|
-
#
|
|
21
|
+
# Events
|
|
35
22
|
"AsyncEventEmitter",
|
|
36
23
|
# Manager
|
|
37
24
|
"ConnectionStatus",
|
|
@@ -39,13 +26,10 @@ __all__ = [
|
|
|
39
26
|
# Sensor wire-format / RPC
|
|
40
27
|
"SensorJSON",
|
|
41
28
|
"PropertyChangedEvent",
|
|
42
|
-
"PropertyChangeListener",
|
|
43
29
|
"PropertyUpdateFn",
|
|
44
30
|
"CapabilityUpdateFn",
|
|
45
31
|
# Camera wire-format
|
|
46
32
|
"DetectionEventMessage",
|
|
47
|
-
# Sensor triggers
|
|
48
|
-
"SENSOR_TRIGGER_TYPES",
|
|
49
33
|
# Streaming
|
|
50
34
|
"IceServer",
|
|
51
35
|
# Camera enums
|
|
@@ -58,18 +42,16 @@ __all__ = [
|
|
|
58
42
|
"is_equal",
|
|
59
43
|
]
|
|
60
44
|
|
|
61
|
-
#
|
|
45
|
+
# public name → (submodule, attribute), resolved lazily to avoid circular imports during SDK bootstrap
|
|
62
46
|
_LAZY: dict[str, tuple[str, str]] = {
|
|
63
47
|
"AsyncEventEmitter": (".event_emitter", "AsyncEventEmitter"),
|
|
64
48
|
"ConnectionStatus": (".manager_rpc", "ConnectionStatus"),
|
|
65
49
|
"DiscoveredCameraWithState": (".manager_rpc", "DiscoveredCameraWithState"),
|
|
66
50
|
"SensorJSON": (".sensor_rpc", "SensorJSON"),
|
|
67
51
|
"PropertyChangedEvent": (".sensor_rpc", "PropertyChangedEvent"),
|
|
68
|
-
"PropertyChangeListener": (".sensor_rpc", "PropertyChangeListener"),
|
|
69
52
|
"PropertyUpdateFn": (".sensor_rpc", "PropertyUpdateFn"),
|
|
70
53
|
"CapabilityUpdateFn": (".sensor_rpc", "CapabilityUpdateFn"),
|
|
71
54
|
"DetectionEventMessage": (".camera_wire", "DetectionEventMessage"),
|
|
72
|
-
"SENSOR_TRIGGER_TYPES": (".sensor_triggers", "SENSOR_TRIGGER_TYPES"),
|
|
73
55
|
"IceServer": (".streaming_internal", "IceServer"),
|
|
74
56
|
"FrameType": (".camera_enums", "FrameType"),
|
|
75
57
|
"CameraFrameWorkerDecoder": (".camera_enums", "CameraFrameWorkerDecoder"),
|
|
@@ -20,7 +20,7 @@ class CameraInputSettings(TypedDict):
|
|
|
20
20
|
hotMode: bool
|
|
21
21
|
"""Keep connection always active."""
|
|
22
22
|
preload: bool
|
|
23
|
-
"""
|
|
23
|
+
"""Keep a keyframe cache for this source, so the view opens faster. Use ``hotMode`` to keep the stream connected."""
|
|
24
24
|
muted: NotRequired[bool]
|
|
25
25
|
"""Strip the audio track from this source (defaults to False)."""
|
|
26
26
|
urls: list[str]
|
|
@@ -2,8 +2,8 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Literal
|
|
4
4
|
|
|
5
|
-
CameraFrameWorkerDecoder = Literal["wasm", "rust"]
|
|
6
|
-
"""Frame worker decoder implementation."""
|
|
7
|
-
|
|
8
5
|
FrameType = Literal["stream", "motion"]
|
|
9
6
|
"""Frame type identifier for frame workers."""
|
|
7
|
+
|
|
8
|
+
CameraFrameWorkerDecoder = Literal["wasm", "rust"]
|
|
9
|
+
"""Frame worker decoder implementation."""
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
"""Generic event-listener registry for camera.ui.
|
|
2
|
-
|
|
3
|
-
Provides :class:`AsyncEventEmitter`, an event-name keyed listener
|
|
4
|
-
registry that supports both sync and async handlers. Handlers are
|
|
5
|
-
registered via :meth:`AsyncEventEmitter.on` /
|
|
6
|
-
:meth:`AsyncEventEmitter.once`, removed via
|
|
7
|
-
:meth:`AsyncEventEmitter.remove_listener` /
|
|
8
|
-
:meth:`AsyncEventEmitter.remove_all_listeners`, and invoked through
|
|
9
|
-
:meth:`AsyncEventEmitter.emit`.
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
1
|
from __future__ import annotations
|
|
13
2
|
|
|
14
3
|
import asyncio
|
|
@@ -18,18 +7,12 @@ from typing import Any
|
|
|
18
7
|
|
|
19
8
|
|
|
20
9
|
class AsyncEventEmitter:
|
|
21
|
-
"""
|
|
10
|
+
"""Event-listener registry that accepts sync and async handlers.
|
|
22
11
|
|
|
23
|
-
Listeners are keyed by event name and invoked in registration order
|
|
24
|
-
|
|
25
|
-
(fire-and-forget) and tracked so they can be cancelled with
|
|
26
|
-
:meth:`cancel`.
|
|
12
|
+
Listeners are keyed by event name and invoked in registration order. Async
|
|
13
|
+
handlers are scheduled fire-and-forget and tracked so :meth:`cancel` can stop them.
|
|
27
14
|
"""
|
|
28
15
|
|
|
29
|
-
@staticmethod
|
|
30
|
-
def _normalize_event(event: Any) -> str:
|
|
31
|
-
return event.value if hasattr(event, "value") else str(event)
|
|
32
|
-
|
|
33
16
|
def __init__(self) -> None:
|
|
34
17
|
self._events: dict[str, OrderedDict[Callable[..., Any], Callable[..., Any]]] = {}
|
|
35
18
|
self._waiting: set[asyncio.Future[Any]] = set()
|
|
@@ -45,7 +28,7 @@ class AsyncEventEmitter:
|
|
|
45
28
|
return f
|
|
46
29
|
|
|
47
30
|
def once(self, event: str, f: Callable[..., Any]) -> Callable[..., Any]:
|
|
48
|
-
"""Register a one-shot listener that
|
|
31
|
+
"""Register a one-shot listener that runs on the next emission of *event*, then removes itself."""
|
|
49
32
|
event = self._normalize_event(event)
|
|
50
33
|
|
|
51
34
|
def wrapper(*args: Any, **kwargs: Any) -> Any:
|
|
@@ -89,11 +72,10 @@ class AsyncEventEmitter:
|
|
|
89
72
|
) -> bool:
|
|
90
73
|
"""Invoke every listener registered for *event* and wait for async handlers to settle.
|
|
91
74
|
|
|
92
|
-
Handler exceptions
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
and remain cancellable via :meth:`cancel`).
|
|
75
|
+
Handler exceptions go to *on_error* instead of propagating, so one failing
|
|
76
|
+
listener never blocks the others. Returns ``False`` if handlers were still
|
|
77
|
+
pending after *timeout* seconds, they keep running and stay cancellable
|
|
78
|
+
via :meth:`cancel`.
|
|
97
79
|
"""
|
|
98
80
|
event = self._normalize_event(event)
|
|
99
81
|
listeners = self._events.get(event)
|
|
@@ -145,3 +127,8 @@ class AsyncEventEmitter:
|
|
|
145
127
|
for future in self._waiting:
|
|
146
128
|
future.cancel()
|
|
147
129
|
self._waiting.clear()
|
|
130
|
+
|
|
131
|
+
@staticmethod
|
|
132
|
+
def _normalize_event(event: Any) -> str:
|
|
133
|
+
"""Accept both plain event names and enum members."""
|
|
134
|
+
return event.value if hasattr(event, "value") else str(event)
|
|
@@ -9,12 +9,9 @@ ConnectionStatus = Literal["idle", "connecting", "connected", "error"]
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class DiscoveredCameraWithState(DiscoveredCamera):
|
|
12
|
-
"""
|
|
13
|
-
Discovered camera with provider and connection state.
|
|
12
|
+
"""Discovered camera plus the provider that found it and its live connection state.
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
adoption list — adds the provider plugin name and a live connection
|
|
17
|
-
status so users see whether the camera is currently reachable.
|
|
14
|
+
Used by the UI to render the adoption list.
|
|
18
15
|
"""
|
|
19
16
|
|
|
20
17
|
provider: str
|
|
@@ -56,34 +56,49 @@ if TYPE_CHECKING:
|
|
|
56
56
|
class PropertyChangedEvent(TypedDict):
|
|
57
57
|
"""Emitted when a sensor property value changes."""
|
|
58
58
|
|
|
59
|
-
cameraId: str
|
|
60
59
|
sensorId: str
|
|
60
|
+
"""Sensor that changed."""
|
|
61
61
|
sensorType: SensorType
|
|
62
|
+
"""Type of the sensor that changed."""
|
|
62
63
|
property: str
|
|
64
|
+
"""Property key that changed."""
|
|
63
65
|
value: object
|
|
66
|
+
"""New value."""
|
|
64
67
|
previousValue: NotRequired[object]
|
|
68
|
+
"""Value before the change, absent on the first write."""
|
|
65
69
|
timestamp: int
|
|
70
|
+
"""Change time in epoch milliseconds."""
|
|
66
71
|
|
|
67
72
|
|
|
68
|
-
# @internal Callback used to propagate property updates to the backend via RPC.
|
|
69
|
-
# Receives a partial-state delta (only properties that actually changed). One callback
|
|
70
|
-
# invocation per `_writeState` call — atomic from the receiver's perspective.
|
|
71
73
|
PropertyUpdateFn = Callable[[dict[str, Any]], None]
|
|
72
|
-
|
|
74
|
+
"""Receives a partial-state delta, one call per ``_write_state``."""
|
|
75
|
+
|
|
73
76
|
CapabilityUpdateFn = Callable[[list[str]], None]
|
|
77
|
+
"""Receives the full capability list whenever it changes."""
|
|
74
78
|
|
|
75
79
|
|
|
76
80
|
class SensorJSON(TypedDict):
|
|
77
81
|
"""JSON-serializable representation of a sensor for RPC transport."""
|
|
78
82
|
|
|
79
83
|
id: str
|
|
84
|
+
"""Sensor ID."""
|
|
80
85
|
type: SensorType
|
|
86
|
+
"""Sensor type."""
|
|
81
87
|
name: str
|
|
88
|
+
"""Internal name."""
|
|
82
89
|
displayName: str
|
|
90
|
+
"""Name shown in the UI."""
|
|
83
91
|
category: SensorCategory
|
|
84
|
-
|
|
92
|
+
"""Category the sensor belongs to."""
|
|
93
|
+
nativeId: NotRequired[str]
|
|
94
|
+
"""Device ID assigned by the plugin."""
|
|
85
95
|
pluginId: NotRequired[str]
|
|
96
|
+
"""Plugin that owns the sensor."""
|
|
86
97
|
properties: dict[str, Any]
|
|
98
|
+
"""Current property values."""
|
|
87
99
|
capabilities: NotRequired[list[str]]
|
|
100
|
+
"""Capability keys the sensor reports."""
|
|
88
101
|
requiresFrames: NotRequired[bool]
|
|
102
|
+
"""Sensor needs a frame feed to work."""
|
|
89
103
|
modelSpec: NotRequired[ModelSpec]
|
|
104
|
+
"""Model the sensor runs, for ML-backed sensors."""
|
|
@@ -4,39 +4,30 @@ from typing import Any
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
def is_equal(first: Any, second: Any, ignore_order: bool = False) -> bool:
|
|
7
|
-
"""
|
|
8
|
-
Deep equality check for arbitrary values.
|
|
9
|
-
|
|
10
|
-
Recursively compares primitives, lists, and dicts. Dict comparison
|
|
11
|
-
ignores key declaration order (only key/value pairs matter). Set
|
|
12
|
-
``ignore_order`` to ``True`` to compare lists as multisets, i.e.
|
|
13
|
-
ignoring element order.
|
|
14
|
-
|
|
15
|
-
Typically used for property-change detection on sensors: a property
|
|
16
|
-
update is only emitted when the new value is not deeply equal to the
|
|
17
|
-
previous value, which avoids redundant events for unchanged data.
|
|
7
|
+
"""Deep equality for primitives, lists, and dicts. Dict key order never matters.
|
|
18
8
|
|
|
19
9
|
Args:
|
|
20
10
|
first: First value to compare.
|
|
21
11
|
second: Second value to compare.
|
|
22
|
-
ignore_order:
|
|
12
|
+
ignore_order: Compare lists as multisets instead of position by position.
|
|
23
13
|
|
|
24
14
|
Returns:
|
|
25
15
|
``True`` if the values are deeply equal.
|
|
16
|
+
|
|
17
|
+
Example:
|
|
18
|
+
```python
|
|
19
|
+
is_equal({"a": 1, "b": 2}, {"b": 2, "a": 1}) # True
|
|
20
|
+
```
|
|
26
21
|
"""
|
|
27
|
-
# Same reference or both primitive and equal
|
|
28
22
|
if first is second:
|
|
29
23
|
return True
|
|
30
24
|
|
|
31
|
-
# Handle None
|
|
32
25
|
if first is None or second is None:
|
|
33
26
|
return first is second
|
|
34
27
|
|
|
35
|
-
# Different types
|
|
36
28
|
if type(first) is not type(second):
|
|
37
29
|
return False
|
|
38
30
|
|
|
39
|
-
# List comparison
|
|
40
31
|
if isinstance(first, list):
|
|
41
32
|
if len(first) != len(second): # pyright: ignore[reportUnknownArgumentType]
|
|
42
33
|
return False
|
|
@@ -58,7 +49,6 @@ def is_equal(first: Any, second: Any, ignore_order: bool = False) -> bool:
|
|
|
58
49
|
for i, item in enumerate(first) # pyright: ignore[reportUnknownArgumentType,reportUnknownVariableType]
|
|
59
50
|
)
|
|
60
51
|
|
|
61
|
-
# Dict comparison
|
|
62
52
|
if isinstance(first, dict):
|
|
63
53
|
if len(first) != len(second): # pyright: ignore[reportUnknownArgumentType]
|
|
64
54
|
return False
|
|
@@ -69,5 +59,4 @@ def is_equal(first: Any, second: Any, ignore_order: bool = False) -> bool:
|
|
|
69
59
|
return False
|
|
70
60
|
return True
|
|
71
61
|
|
|
72
|
-
# Primitive comparison (fallback)
|
|
73
62
|
return bool(first == second)
|