@camera.ui/server 2.0.22 → 2.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/interface/assets/404-CRIhzt2J.js +1 -0
- package/dist/interface/assets/About-CvY4xvAU.js +1 -0
- package/dist/interface/assets/Adminpanel-4ilp8plp.js +1 -0
- package/dist/interface/assets/Automation-uaWWTeTZ.js +3 -0
- package/dist/interface/assets/AutomationImport-RNgRv6Uc.js +2 -0
- package/dist/interface/assets/AutomationStore-D8plMzVI.js +2 -0
- package/dist/interface/assets/AutomationStoreDetail-BO-9XCRn.js +2 -0
- package/dist/interface/assets/Automations-PHMVe6wG.js +2 -0
- package/dist/interface/assets/Camera-Akukeq4_.js +2 -0
- package/dist/interface/assets/CameraConsole-BnKiGukm.js +7 -0
- package/dist/interface/assets/Cameras-BuHNAHpD.js +652 -0
- package/dist/interface/assets/{Camview-CaEbdeQZ.css → Camview-Cj10uxGy.css} +1 -1
- package/dist/interface/assets/Camview-dF8o0iy2.js +1 -0
- package/dist/interface/assets/Config-iq-YI9Vg.js +2 -0
- package/dist/interface/assets/{ConfigActionCameraControl-DFdb4xzq.js → ConfigActionCameraControl-C2qva2mT.js} +1 -1
- package/dist/interface/assets/ConfigActionDelay-C02w0yBx.js +1 -0
- package/dist/interface/assets/ConfigActionHttp-DVf26mYG.js +1 -0
- package/dist/interface/assets/ConfigActionImageInput-BTlFV7kK.js +1 -0
- package/dist/interface/assets/ConfigActionMqtt-CD9RW5Lq.js +1 -0
- package/dist/interface/assets/ConfigActionNotification-CjbIPrEb.js +1 -0
- package/dist/interface/assets/ConfigActionNotificationControl-BCdKNvgC.js +1 -0
- package/dist/interface/assets/ConfigActionOutput-wV9RFDQO.js +1 -0
- package/dist/interface/assets/ConfigActionPlugin-DijuNALK.js +1 -0
- package/dist/interface/assets/ConfigActionSensor-C9q3sRuI.js +1 -0
- package/dist/interface/assets/ConfigActionSnapshot-B79IJLFV.js +1 -0
- package/dist/interface/assets/ConfigActionVariable-Do94c7oi.js +1 -0
- package/dist/interface/assets/ConfigConditionIfElse-BtbZhnCM.js +1 -0
- package/dist/interface/assets/ConfigConditionSensorState-D1V_FhNU.js +1 -0
- package/dist/interface/assets/ConfigConditionSwitch-C74dDt3R.js +1 -0
- package/dist/interface/assets/ConfigConditionTime-5IrJQgAV.js +1 -0
- package/dist/interface/assets/ConfigSensorValueInput-BcbzMf0g.js +1 -0
- package/dist/interface/assets/{ConfigTriggerDetection-Cjes6g7x.js → ConfigTriggerDetection-ld9Upgoc.js} +1 -1
- package/dist/interface/assets/ConfigTriggerGeofence-DbfBc1AM.js +1 -0
- package/dist/interface/assets/ConfigTriggerManual-t-J-HbqF.js +1 -0
- package/dist/interface/assets/ConfigTriggerMqtt-i57J8-Nq.js +1 -0
- package/dist/interface/assets/ConfigTriggerSchedule-Dv7wIG3G.js +1 -0
- package/dist/interface/assets/ConfigTriggerSensor-Ba2lCSGc.js +1 -0
- package/dist/interface/assets/{ConfigTriggerSystem-NaaBopYq.js → ConfigTriggerSystem-BWs3rP_W.js} +1 -1
- package/dist/interface/assets/ConfigTriggerWebhook-CpQakeYG.js +1 -0
- package/dist/interface/assets/Console-BTb5Yc32.js +1 -0
- package/dist/interface/assets/CuiAutomationRunsDialog-DX0xpNxx.js +1 -0
- package/dist/interface/assets/CuiBottomSheet-Bu0PtwX-.js +1 -0
- package/dist/interface/assets/CuiBottomSheet-DIg-nl0p.js +1 -0
- package/dist/interface/assets/CuiCameraPipCard-q3yeptLd.js +1 -0
- package/dist/interface/assets/CuiCameraRecordings-BWN8gBl4.js +1 -0
- package/dist/interface/assets/CuiCameraShares-BggG5Ic_.js +1 -0
- package/dist/interface/assets/CuiCameraTable-BCrE4TMJ.js +2 -0
- package/dist/interface/assets/CuiDataTable-Dk8LJl5S.js +1 -0
- package/dist/interface/assets/CuiLightControl-CaIl2eCO.js +1 -0
- package/dist/interface/assets/CuiLightControl-DFrZm_sv.css +1 -0
- package/dist/interface/assets/CuiList-Cjbxtb1E.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-cvZkF8Cz.js +2 -0
- package/dist/interface/assets/{CuiPluginCategoryChip-D9Vi1SEP.js → CuiPluginCategoryChip-DsEuwQrw.js} +1 -1
- package/dist/interface/assets/CuiPluginOAuthButton-Bbwly_xJ.js +2 -0
- package/dist/interface/assets/{CuiPluginTrustBadge-D0rUX2i6.js → CuiPluginTrustBadge-BC6F9f-3.js} +1 -1
- package/dist/interface/assets/CuiQRCode-DKHFwuhr.js +1 -0
- package/dist/interface/assets/CuiRecordingsGrid-DSf7RXci.js +1 -0
- package/dist/interface/assets/CuiSchema-Dda4lNPz.js +1 -0
- package/dist/interface/assets/CuiTopNavbarItem-BZawroJz.js +1 -0
- package/dist/interface/assets/Faces-CvQCD53E.js +1 -0
- package/dist/interface/assets/FirstSteps-Dg0Bvjs2.js +1 -0
- package/dist/interface/assets/Instances-DisNu3zt.js +1 -0
- package/dist/interface/assets/Logs-DSSDjAY-.js +6 -0
- package/dist/interface/assets/Menu-CJ-MMxvd.js +1 -0
- package/dist/interface/assets/OAuthDeviceFlow-CKTokRaq.js +1 -0
- package/dist/interface/assets/Plugin-7daLGUVo.js +1 -0
- package/dist/interface/assets/PluginConsole-CcRMneFa.js +7 -0
- package/dist/interface/assets/PluginDetail-B1-NdurE.js +2 -0
- package/dist/interface/assets/PluginSchema-CP0JWUSD.js +1 -0
- package/dist/interface/assets/PluginSearch-BHN0J_JP.js +2 -0
- package/dist/interface/assets/PluginSearch-Cx_lzDqC.js +1 -0
- package/dist/interface/assets/Plugins-DnMPdcQF.js +1 -0
- package/dist/interface/assets/Recordings-Dxs3srmh.js +1 -0
- package/dist/interface/assets/SensorEdit-Dq2nV1Wf.js +1 -0
- package/dist/interface/assets/SensorHistory-BeCbNWJh.js +1 -0
- package/dist/interface/assets/Sensors-BA9P_Ray.css +1 -0
- package/dist/interface/assets/Sensors-D9DLdMaD.js +2 -0
- package/dist/interface/assets/Settings-DCHoD7r8.js +1 -0
- package/dist/interface/assets/SettingsAccount-BrhnlNuF.js +1 -0
- package/dist/interface/assets/SettingsAccount-djLxmQ9r.js +1 -0
- package/dist/interface/assets/{SettingsAccount-CyNJQSuV.css → SettingsAccount-si-6gWl5.css} +1 -1
- package/dist/interface/assets/SettingsAppearance-Bq-xM16S.js +1 -0
- package/dist/interface/assets/SettingsAppearance-JKbe5xiH.js +1 -0
- package/dist/interface/assets/SettingsBackup-CjlVk3hF.js +1 -0
- package/dist/interface/assets/SettingsList-C4mMOKJh.js +1 -0
- package/dist/interface/assets/SettingsMqtt-DoYFVHoD.js +1 -0
- package/dist/interface/assets/SettingsNotifications-Cmr9Bvy0.js +2 -0
- package/dist/interface/assets/SettingsPermissions-D33G-1kM.js +1 -0
- package/dist/interface/assets/SettingsRecordings-DYiuW0rA.js +1 -0
- package/dist/interface/assets/SettingsRemote-CROA1Oa7.js +1 -0
- package/dist/interface/assets/SettingsSystem-rgucO68X.js +2 -0
- package/dist/interface/assets/SettingsUsers-2uMPOpyC.js +1 -0
- package/dist/interface/assets/Terminal-BMFWoJ_k.js +4 -0
- package/dist/interface/assets/VariableInput-Cx9tgiM4.js +1 -0
- package/dist/interface/assets/VariableSuggestions-DV_QjTtU.js +1 -0
- package/dist/interface/assets/VersionsHandler-v4hH23M_.js +7 -0
- package/dist/interface/assets/VirtualSensorCreate-DhuGE1Mf.js +1 -0
- package/dist/interface/assets/Workers-DyJXudfY.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-BKU9IS3U.js} +1 -1
- package/dist/interface/assets/api-Cc-rMHwl.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-B4latCDR.js} +1 -1
- package/dist/interface/assets/automationBlueprint-D0F9AHk9.js +1 -0
- package/dist/interface/assets/automations-BFkAMu3Y.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-BtaT3B32.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-CPrXpD0L.js +1 -0
- package/dist/interface/assets/{config-C2hgXHyj.js → config-B_lj3Myj.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-CyZseAPD.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-C4qjk6s5.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-CFw_CCq8.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-0_glcRlR.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-ICpmsguj.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-CxUkNgtt.js +1 -0
- package/dist/interface/assets/{search-M4Rt52Co.js → search-miJXZGQz.js} +1 -1
- package/dist/interface/assets/sensors-Bh5GuQ78.js +1 -0
- package/dist/interface/assets/{server-CVSOthzT.js → server-DbpDC3pc.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-DlMdsvGC.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-C1VwkReu.js +1 -0
- package/dist/interface/assets/{types-Bw8H-UB4.js → types-CggzoTPX.js} +1 -1
- package/dist/interface/assets/upload-CNYrnwuV.js +1 -0
- package/dist/interface/assets/{useAppVersion-CDTrwxkp.js → useAppVersion-CCxZnwIP.js} +1 -1
- package/dist/interface/assets/useBackupRestore-DQQc_D6D.js +1 -0
- package/dist/interface/assets/useCameraOptions-DVlhUpbE.js +1 -0
- package/dist/interface/assets/{useCardSelection-CgZ7QTaA.js → useCardSelection-B3B2qPHO.js} +1 -1
- package/dist/interface/assets/{useElectron-CgLWOhcS.js → useElectron-KnqvZz0q.js} +1 -1
- package/dist/interface/assets/useLogsSocket-CUQwZ6wm.js +5 -0
- package/dist/interface/assets/{usePermissions-tzi2t12h.js → usePermissions-C3D3JcPH.js} +1 -1
- package/dist/interface/assets/useServerRestart-CqZRPCpR.js +1 -0
- package/dist/interface/assets/{useStreamStatus-BV_L7pxB.js → useStreamStatus-CVJFHRLZ.js} +1 -1
- package/dist/interface/assets/useUserOptions-drl3-JUC.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-Cgb5z6NJ.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-BJsSXMFQ.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-CyD8V_Ft.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 +26 -7
- 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 +10 -7
- package/dist/server/src/plugins/runtime/node/storage.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/storageController.d.ts +5 -7
- package/dist/server/src/plugins/runtime/node/storageController.js +18 -43
- 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 +26 -5
- 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 +12 -9
- package/dist/server/src/plugins/runtime/python/storage_controller.py +18 -80
- 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 +814 -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
|
@@ -16,6 +16,7 @@ from typing import (
|
|
|
16
16
|
from typing_extensions import TypeVar as ExtTypeVar
|
|
17
17
|
|
|
18
18
|
from ..sensor import ClassifierDetection, Detection, FaceDetection, LicensePlateDetection
|
|
19
|
+
from ..sensor.audio import AudioFrameData
|
|
19
20
|
from ..sensor.clip import ClipEmbedding
|
|
20
21
|
from ..sensor.motion import VideoFrameData
|
|
21
22
|
from .api import PluginAPI
|
|
@@ -23,89 +24,121 @@ from .api import PluginAPI
|
|
|
23
24
|
if TYPE_CHECKING:
|
|
24
25
|
from ..camera import CameraConfig, CameraDevice
|
|
25
26
|
from ..manager import DiscoveredCamera
|
|
27
|
+
from ..sensor.base import SensorLike
|
|
26
28
|
from ..storage import DeviceStorage, JsonSchemaWithoutCallbacks
|
|
27
29
|
from ..types import LoggerService
|
|
28
30
|
|
|
29
31
|
from ..storage import JsonSchema
|
|
30
32
|
|
|
31
|
-
#
|
|
32
|
-
# Using Mapping as bound since TypedDict is compatible with Mapping but not dict
|
|
33
|
+
# bound is Mapping, not dict: TypedDict is compatible with Mapping only
|
|
33
34
|
StorageT = ExtTypeVar("StorageT", bound=Mapping[str, Any], default=dict[str, Any])
|
|
34
|
-
"""
|
|
35
|
+
"""Type of the plugin's storage values. Defaults to dict[str, Any]."""
|
|
35
36
|
|
|
36
37
|
|
|
37
38
|
class ImageMetadata(TypedDict):
|
|
38
|
-
"""Image metadata
|
|
39
|
+
"""Image metadata passed to detector test methods."""
|
|
39
40
|
|
|
40
41
|
width: int
|
|
42
|
+
"""Image width in pixels."""
|
|
43
|
+
|
|
41
44
|
height: int
|
|
45
|
+
"""Image height in pixels."""
|
|
42
46
|
|
|
43
47
|
|
|
44
48
|
class AudioMetadata(TypedDict):
|
|
45
|
-
"""Audio metadata
|
|
49
|
+
"""Audio metadata passed to audio detector test methods."""
|
|
46
50
|
|
|
47
51
|
mimeType: Literal["audio/mpeg", "audio/wav", "audio/ogg"]
|
|
52
|
+
"""Container format of the audio buffer."""
|
|
48
53
|
|
|
49
54
|
|
|
50
55
|
class MotionDetectionPluginResponse(TypedDict):
|
|
51
|
-
"""
|
|
56
|
+
"""Result of a motion detection run."""
|
|
52
57
|
|
|
53
58
|
detected: bool
|
|
59
|
+
"""True when the run produced at least one detection."""
|
|
60
|
+
|
|
54
61
|
detections: list[Detection]
|
|
62
|
+
"""Motion regions found in the input."""
|
|
63
|
+
|
|
55
64
|
videoData: NotRequired[bytes]
|
|
65
|
+
"""Annotated re-encoded clip for the UI test panel, when the plugin renders one."""
|
|
56
66
|
|
|
57
67
|
|
|
58
68
|
class ObjectDetectionPluginResponse(TypedDict):
|
|
59
|
-
"""
|
|
69
|
+
"""Result of an object detection run."""
|
|
60
70
|
|
|
61
71
|
detected: bool
|
|
72
|
+
"""True when the run produced at least one detection."""
|
|
73
|
+
|
|
62
74
|
detections: list[Detection]
|
|
75
|
+
"""Detected objects with label, score and bounding box."""
|
|
63
76
|
|
|
64
77
|
|
|
65
78
|
class AudioDetectionPluginResponse(TypedDict):
|
|
66
|
-
"""
|
|
79
|
+
"""Result of an audio detection run."""
|
|
67
80
|
|
|
68
81
|
detected: bool
|
|
82
|
+
"""True when the run produced at least one detection."""
|
|
83
|
+
|
|
69
84
|
detections: list[Detection]
|
|
85
|
+
"""Detected audio events."""
|
|
86
|
+
|
|
70
87
|
decibels: NotRequired[float]
|
|
88
|
+
"""Loudness of the analysed buffer in dBFS."""
|
|
71
89
|
|
|
72
90
|
|
|
73
91
|
class FaceDetectionPluginResponse(TypedDict):
|
|
74
|
-
"""
|
|
92
|
+
"""Result of a face detection run."""
|
|
75
93
|
|
|
76
94
|
detected: bool
|
|
95
|
+
"""True when the run produced at least one detection."""
|
|
96
|
+
|
|
77
97
|
detections: list[FaceDetection]
|
|
98
|
+
"""Detected faces, each with its embedding."""
|
|
99
|
+
|
|
78
100
|
embeddingModel: NotRequired[str]
|
|
101
|
+
"""Model that produced the embeddings; consumers must not mix models."""
|
|
79
102
|
|
|
80
103
|
|
|
81
104
|
class LicensePlateDetectionPluginResponse(TypedDict):
|
|
82
|
-
"""
|
|
105
|
+
"""Result of a license plate detection run."""
|
|
83
106
|
|
|
84
107
|
detected: bool
|
|
108
|
+
"""True when the run produced at least one detection."""
|
|
109
|
+
|
|
85
110
|
detections: list[LicensePlateDetection]
|
|
111
|
+
"""Detected plates with their OCR text."""
|
|
86
112
|
|
|
87
113
|
|
|
88
114
|
class ClassifierDetectionPluginResponse(TypedDict):
|
|
89
|
-
"""
|
|
115
|
+
"""Result of a classifier detection run."""
|
|
90
116
|
|
|
91
117
|
detected: bool
|
|
118
|
+
"""True when the run produced at least one classification."""
|
|
119
|
+
|
|
92
120
|
detections: list[ClassifierDetection]
|
|
121
|
+
"""Attribute/label pairs the classifier emitted."""
|
|
93
122
|
|
|
94
123
|
|
|
95
124
|
class ClipDetectionPluginResponse(TypedDict):
|
|
96
|
-
"""
|
|
125
|
+
"""Result of a CLIP image embedding run."""
|
|
97
126
|
|
|
98
127
|
embeddings: list[ClipEmbedding]
|
|
128
|
+
"""Embedding vectors generated for the input."""
|
|
129
|
+
|
|
99
130
|
embeddingModel: str
|
|
131
|
+
"""Model that produced the embeddings; consumers must not mix models."""
|
|
100
132
|
|
|
101
133
|
|
|
102
134
|
class ClipTextEmbeddingResult(TypedDict):
|
|
103
|
-
"""Result of
|
|
104
|
-
plus the model name used to produce it, so downstream code can refuse to
|
|
105
|
-
mix embeddings from different models."""
|
|
135
|
+
"""Result of a CLIP text embedding request."""
|
|
106
136
|
|
|
107
137
|
embedding: list[float]
|
|
138
|
+
"""Embedding vector for the query text."""
|
|
139
|
+
|
|
108
140
|
embeddingModel: str
|
|
141
|
+
"""Model that produced the embedding; consumers must not mix models."""
|
|
109
142
|
|
|
110
143
|
|
|
111
144
|
class BasePlugin(ABC, Generic[StorageT]):
|
|
@@ -115,35 +148,25 @@ class BasePlugin(ABC, Generic[StorageT]):
|
|
|
115
148
|
DeviceStorage) and declares the lifecycle methods the host calls on the
|
|
116
149
|
plugin.
|
|
117
150
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
:meth:`
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
The generic type parameter ``StorageT`` types ``storage.values`` so plugin
|
|
124
|
-
code gets autocompletion for its own settings shape.
|
|
151
|
+
The host calls :meth:`configureCameras` once at startup with every camera
|
|
152
|
+
already assigned to this plugin, then :meth:`onCameraAdded` /
|
|
153
|
+
:meth:`onCameraReleased` as the user adds or removes cameras at runtime.
|
|
154
|
+
``StorageT`` types ``storage.values`` so plugin code gets autocompletion
|
|
155
|
+
for its own settings shape.
|
|
125
156
|
|
|
126
157
|
Example:
|
|
127
158
|
```python
|
|
128
|
-
class MyStorageValues(TypedDict):
|
|
129
|
-
model_path: str
|
|
130
|
-
threshold: float
|
|
131
|
-
|
|
132
|
-
|
|
133
159
|
class MyPlugin(BasePlugin[MyStorageValues]):
|
|
134
160
|
async def configureCameras(self, cameras: list[CameraDevice]) -> None:
|
|
135
|
-
|
|
136
|
-
model_path = self.storage.values.get("model_path") # str
|
|
161
|
+
self.model_path = self.storage.values.get("model_path")
|
|
137
162
|
for camera in cameras:
|
|
138
163
|
await self.onCameraAdded(camera)
|
|
139
164
|
|
|
140
165
|
async def onCameraAdded(self, camera: CameraDevice) -> None:
|
|
141
|
-
|
|
142
|
-
pass
|
|
166
|
+
self.state[camera.id] = await self.attach(camera)
|
|
143
167
|
|
|
144
168
|
async def onCameraReleased(self, camera_id: str) -> None:
|
|
145
|
-
|
|
146
|
-
pass
|
|
169
|
+
self.state.pop(camera_id, None)
|
|
147
170
|
```
|
|
148
171
|
"""
|
|
149
172
|
|
|
@@ -154,15 +177,14 @@ class BasePlugin(ABC, Generic[StorageT]):
|
|
|
154
177
|
|
|
155
178
|
@property
|
|
156
179
|
def storage_schema(self) -> list[JsonSchema]:
|
|
157
|
-
"""Override to register a JSON schema for the plugin-level settings
|
|
158
|
-
form rendered in the UI. Default: no schema."""
|
|
180
|
+
"""Override to register a JSON schema for the plugin-level settings form rendered in the UI. Default: no schema."""
|
|
159
181
|
return []
|
|
160
182
|
|
|
161
183
|
@abstractmethod
|
|
162
184
|
async def configureCameras(self, cameras: list[CameraDevice]) -> None:
|
|
163
185
|
"""Called once on startup with every camera already assigned to this
|
|
164
|
-
plugin.
|
|
165
|
-
|
|
186
|
+
plugin. Attach handlers, open vendor sessions, warm up models here.
|
|
187
|
+
Raising aborts plugin startup.
|
|
166
188
|
|
|
167
189
|
Args:
|
|
168
190
|
cameras: Cameras already assigned to this plugin.
|
|
@@ -171,11 +193,10 @@ class BasePlugin(ABC, Generic[StorageT]):
|
|
|
171
193
|
|
|
172
194
|
@abstractmethod
|
|
173
195
|
async def onCameraAdded(self, camera: CameraDevice) -> None:
|
|
174
|
-
"""Called whenever a camera is assigned to this plugin at runtime
|
|
196
|
+
"""Called whenever a camera is assigned to this plugin at runtime,
|
|
175
197
|
after a discovery adoption (:meth:`DiscoveryProvider.onAdoptCamera`)
|
|
176
|
-
or after the user re-assigns an existing camera
|
|
177
|
-
|
|
178
|
-
:meth:`configureCameras`.
|
|
198
|
+
or after the user re-assigns an existing camera. Set up the same
|
|
199
|
+
per-camera state as in :meth:`configureCameras`.
|
|
179
200
|
|
|
180
201
|
Args:
|
|
181
202
|
camera: The camera device that was added.
|
|
@@ -185,14 +206,46 @@ class BasePlugin(ABC, Generic[StorageT]):
|
|
|
185
206
|
@abstractmethod
|
|
186
207
|
async def onCameraReleased(self, cameraId: str) -> None:
|
|
187
208
|
"""Called when a camera is unassigned from this plugin or deleted
|
|
188
|
-
from the system.
|
|
189
|
-
|
|
209
|
+
from the system. Release per-camera resources (sessions, timers,
|
|
210
|
+
decoders) before returning.
|
|
190
211
|
|
|
191
212
|
Args:
|
|
192
213
|
cameraId: ID of the camera that was released.
|
|
193
214
|
"""
|
|
194
215
|
...
|
|
195
216
|
|
|
217
|
+
async def configureSensors(self, sensors: list[SensorLike]) -> None:
|
|
218
|
+
"""Called once on startup with every sensor this plugin may consume:
|
|
219
|
+
sensors whose type is listed in ``contract.consumes`` and that are
|
|
220
|
+
exposed. Each sensor carries ``type``, ``assignedCameraIds`` and
|
|
221
|
+
``connected``, so consumers decide rendering purely from that data.
|
|
222
|
+
Optional, only bridge plugins override it.
|
|
223
|
+
|
|
224
|
+
Args:
|
|
225
|
+
sensors: Consumable sensors known at startup.
|
|
226
|
+
"""
|
|
227
|
+
return None
|
|
228
|
+
|
|
229
|
+
async def onSensorAdded(self, sensor: SensorLike) -> None:
|
|
230
|
+
"""Called when a sensor enters this plugin's consumable view at
|
|
231
|
+
runtime: it was created, became exposed, or its type became
|
|
232
|
+
consumable.
|
|
233
|
+
|
|
234
|
+
Args:
|
|
235
|
+
sensor: The sensor that appeared.
|
|
236
|
+
"""
|
|
237
|
+
return None
|
|
238
|
+
|
|
239
|
+
async def onSensorReleased(self, sensorId: str) -> None:
|
|
240
|
+
"""Called when a sensor permanently leaves the consumable view: it
|
|
241
|
+
was deleted or unexposed. Plugin connectivity does NOT fire this,
|
|
242
|
+
watch ``sensor.onConnectedChanged`` for that.
|
|
243
|
+
|
|
244
|
+
Args:
|
|
245
|
+
sensorId: Persistent id of the sensor that left.
|
|
246
|
+
"""
|
|
247
|
+
return None
|
|
248
|
+
|
|
196
249
|
|
|
197
250
|
@runtime_checkable
|
|
198
251
|
class DiscoveryProvider(Protocol):
|
|
@@ -212,7 +265,7 @@ class DiscoveryProvider(Protocol):
|
|
|
212
265
|
|
|
213
266
|
async def onGetCameraSettings(self, camera: DiscoveredCamera) -> list[JsonSchemaWithoutCallbacks]:
|
|
214
267
|
"""Return a JSON schema describing the form fields (credentials,
|
|
215
|
-
transport options, ...) the user must fill in to adopt this
|
|
268
|
+
transport options, ...) the user must fill in to adopt this
|
|
216
269
|
discovered camera.
|
|
217
270
|
|
|
218
271
|
Args:
|
|
@@ -228,8 +281,7 @@ class DiscoveryProvider(Protocol):
|
|
|
228
281
|
) -> CameraConfig:
|
|
229
282
|
"""Probe the device with the user-provided settings and return the
|
|
230
283
|
camera configuration the host should persist. The host then creates
|
|
231
|
-
the camera and invokes :meth:`BasePlugin.onCameraAdded` on the
|
|
232
|
-
plugin.
|
|
284
|
+
the camera and invokes :meth:`BasePlugin.onCameraAdded` on the plugin.
|
|
233
285
|
|
|
234
286
|
Args:
|
|
235
287
|
camera: The discovered camera being adopted.
|
|
@@ -243,85 +295,80 @@ class DiscoveryProvider(Protocol):
|
|
|
243
295
|
|
|
244
296
|
@runtime_checkable
|
|
245
297
|
class MotionDetectionInterface(Protocol):
|
|
246
|
-
"""
|
|
247
|
-
|
|
248
|
-
|
|
298
|
+
"""Implemented by plugins that perform video-based motion detection. The
|
|
299
|
+
host invokes :meth:`testMotionDetection` from the UI test panel and
|
|
300
|
+
:meth:`detectMotion` from automation / benchmark pipelines."""
|
|
249
301
|
|
|
250
302
|
async def testMotionDetection(
|
|
251
303
|
self, video_data: bytes, config: dict[str, Any]
|
|
252
304
|
) -> MotionDetectionPluginResponse | None:
|
|
253
|
-
"""Run detection on a raw video buffer captured by the UI test panel
|
|
254
|
-
and return the result for preview rendering."""
|
|
305
|
+
"""Run detection on a raw video buffer captured by the UI test panel and return the result for preview rendering."""
|
|
255
306
|
...
|
|
256
307
|
|
|
257
308
|
async def detectMotion(
|
|
258
309
|
self, frames: list[VideoFrameData], config: dict[str, Any] | None = None
|
|
259
310
|
) -> MotionDetectionPluginResponse | None:
|
|
260
|
-
"""Run detection on already-decoded
|
|
261
|
-
from automation / benchmark pipelines that supply pre-decoded frames
|
|
262
|
-
directly to avoid re-encoding."""
|
|
311
|
+
"""Run detection on already-decoded frames, supplied by automation / benchmark pipelines to avoid re-encoding."""
|
|
263
312
|
...
|
|
264
313
|
|
|
265
314
|
async def motionDetectionSettings(self) -> list[JsonSchema] | None:
|
|
266
|
-
"""Return the JSON schema used to render the motion-detection
|
|
267
|
-
settings form in the UI. Return None for no schema."""
|
|
315
|
+
"""Return the JSON schema used to render the motion-detection settings form in the UI, or None for no schema."""
|
|
268
316
|
...
|
|
269
317
|
|
|
270
318
|
|
|
271
319
|
@runtime_checkable
|
|
272
320
|
class ObjectDetectionInterface(Protocol):
|
|
273
|
-
"""
|
|
274
|
-
|
|
321
|
+
"""Implemented by plugins that perform object detection (person, vehicle,
|
|
322
|
+
animal, ...)."""
|
|
275
323
|
|
|
276
324
|
async def testObjectDetection(
|
|
277
325
|
self, image_data: bytes, metadata: ImageMetadata, config: dict[str, Any]
|
|
278
326
|
) -> ObjectDetectionPluginResponse | None:
|
|
279
|
-
"""Run detection on a single image captured by the UI test panel;
|
|
280
|
-
``metadata`` carries the image dimensions."""
|
|
327
|
+
"""Run detection on a single image captured by the UI test panel; ``metadata`` carries the image dimensions."""
|
|
281
328
|
...
|
|
282
329
|
|
|
283
330
|
async def detectObjects(
|
|
284
331
|
self, frame: VideoFrameData, config: dict[str, Any] | None = None
|
|
285
332
|
) -> ObjectDetectionPluginResponse | None:
|
|
286
|
-
"""Run detection on a pre-decoded video frame. Called from
|
|
287
|
-
automation / benchmark pipelines."""
|
|
333
|
+
"""Run detection on a pre-decoded video frame. Called from automation / benchmark pipelines."""
|
|
288
334
|
...
|
|
289
335
|
|
|
290
336
|
async def objectDetectionSettings(self) -> list[JsonSchema] | None:
|
|
291
|
-
"""Return the JSON schema used to render the object-detection
|
|
292
|
-
settings form in the UI. Return None for no schema."""
|
|
337
|
+
"""Return the JSON schema used to render the object-detection settings form in the UI, or None for no schema."""
|
|
293
338
|
...
|
|
294
339
|
|
|
295
340
|
|
|
296
341
|
@runtime_checkable
|
|
297
342
|
class AudioDetectionInterface(Protocol):
|
|
298
|
-
"""
|
|
299
|
-
detection."""
|
|
343
|
+
"""Implemented by plugins that perform audio event or keyword detection."""
|
|
300
344
|
|
|
301
345
|
async def testAudioDetection(
|
|
302
346
|
self, audio_data: bytes, metadata: AudioMetadata, config: dict[str, Any]
|
|
303
347
|
) -> AudioDetectionPluginResponse | None:
|
|
304
|
-
"""Run detection on an audio buffer captured by the UI test panel;
|
|
305
|
-
|
|
348
|
+
"""Run detection on an audio buffer captured by the UI test panel; ``metadata`` carries the input MIME type."""
|
|
349
|
+
...
|
|
350
|
+
|
|
351
|
+
async def detectAudio(
|
|
352
|
+
self, audio: AudioFrameData, config: dict[str, Any] | None = None
|
|
353
|
+
) -> AudioDetectionPluginResponse | None:
|
|
354
|
+
"""Run detection on a pre-decoded audio frame. Called from automation / benchmark pipelines."""
|
|
306
355
|
...
|
|
307
356
|
|
|
308
357
|
async def audioDetectionSettings(self) -> list[JsonSchema] | None:
|
|
309
|
-
"""Return the JSON schema used to render the audio-detection
|
|
310
|
-
settings form in the UI. Return None for no schema."""
|
|
358
|
+
"""Return the JSON schema used to render the audio-detection settings form in the UI, or None for no schema."""
|
|
311
359
|
...
|
|
312
360
|
|
|
313
361
|
|
|
314
362
|
@runtime_checkable
|
|
315
363
|
class FaceDetectionInterface(Protocol):
|
|
316
|
-
"""
|
|
317
|
-
|
|
318
|
-
|
|
364
|
+
"""Implemented by plugins that locate faces and emit per-face embeddings.
|
|
365
|
+
The NVR owns matching against enrolled faces, the plugin only emits raw
|
|
366
|
+
detections and embeddings."""
|
|
319
367
|
|
|
320
368
|
async def testFaceDetection(
|
|
321
369
|
self, image_data: bytes, metadata: ImageMetadata, config: dict[str, Any]
|
|
322
370
|
) -> FaceDetectionPluginResponse | None:
|
|
323
|
-
"""Run face detection on a single image captured by the UI test
|
|
324
|
-
panel and return the result for preview rendering."""
|
|
371
|
+
"""Run face detection on a single image captured by the UI test panel and return the result for preview rendering."""
|
|
325
372
|
...
|
|
326
373
|
|
|
327
374
|
async def detectFaces(
|
|
@@ -331,21 +378,19 @@ class FaceDetectionInterface(Protocol):
|
|
|
331
378
|
...
|
|
332
379
|
|
|
333
380
|
async def faceDetectionSettings(self) -> list[JsonSchema] | None:
|
|
334
|
-
"""Return the JSON schema for the face-detection settings form in
|
|
335
|
-
the UI. Return None for no schema."""
|
|
381
|
+
"""Return the JSON schema for the face-detection settings form in the UI, or None for no schema."""
|
|
336
382
|
...
|
|
337
383
|
|
|
338
384
|
|
|
339
385
|
@runtime_checkable
|
|
340
386
|
class LicensePlateDetectionInterface(Protocol):
|
|
341
|
-
"""
|
|
342
|
-
|
|
387
|
+
"""Implemented by plugins that locate license plates and run OCR on
|
|
388
|
+
them."""
|
|
343
389
|
|
|
344
390
|
async def testLicensePlateDetection(
|
|
345
391
|
self, image_data: bytes, metadata: ImageMetadata, config: dict[str, Any]
|
|
346
392
|
) -> LicensePlateDetectionPluginResponse | None:
|
|
347
|
-
"""Run detection on a single image captured by the UI test panel and
|
|
348
|
-
return the result for preview rendering."""
|
|
393
|
+
"""Run detection on a single image captured by the UI test panel and return the result for preview rendering."""
|
|
349
394
|
...
|
|
350
395
|
|
|
351
396
|
async def detectLicensePlates(
|
|
@@ -355,21 +400,19 @@ class LicensePlateDetectionInterface(Protocol):
|
|
|
355
400
|
...
|
|
356
401
|
|
|
357
402
|
async def licensePlateDetectionSettings(self) -> list[JsonSchema] | None:
|
|
358
|
-
"""Return the JSON schema for the license-plate-detection settings
|
|
359
|
-
form in the UI. Return None for no schema."""
|
|
403
|
+
"""Return the JSON schema for the license-plate-detection settings form in the UI, or None for no schema."""
|
|
360
404
|
...
|
|
361
405
|
|
|
362
406
|
|
|
363
407
|
@runtime_checkable
|
|
364
408
|
class ClassifierDetectionInterface(Protocol):
|
|
365
|
-
"""
|
|
366
|
-
|
|
409
|
+
"""Implemented by plugins that run a generic image classifier and emit
|
|
410
|
+
attribute/label pairs (e.g. weather, scene, activity)."""
|
|
367
411
|
|
|
368
412
|
async def testClassifierDetection(
|
|
369
413
|
self, image_data: bytes, metadata: ImageMetadata, config: dict[str, Any]
|
|
370
414
|
) -> ClassifierDetectionPluginResponse | None:
|
|
371
|
-
"""Run classification on a single image captured by the UI test
|
|
372
|
-
panel and return the result for preview rendering."""
|
|
415
|
+
"""Run classification on a single image captured by the UI test panel and return the result for preview rendering."""
|
|
373
416
|
...
|
|
374
417
|
|
|
375
418
|
async def detectClassifications(
|
|
@@ -379,21 +422,19 @@ class ClassifierDetectionInterface(Protocol):
|
|
|
379
422
|
...
|
|
380
423
|
|
|
381
424
|
async def classifierDetectionSettings(self) -> list[JsonSchema] | None:
|
|
382
|
-
"""Return the JSON schema for the classifier-detection settings
|
|
383
|
-
form in the UI. Return None for no schema."""
|
|
425
|
+
"""Return the JSON schema for the classifier-detection settings form in the UI, or None for no schema."""
|
|
384
426
|
...
|
|
385
427
|
|
|
386
428
|
|
|
387
429
|
@runtime_checkable
|
|
388
430
|
class ClipDetectionInterface(Protocol):
|
|
389
|
-
"""
|
|
390
|
-
|
|
431
|
+
"""Implemented by plugins that generate CLIP image and text embeddings
|
|
432
|
+
used for semantic search over recorded events."""
|
|
391
433
|
|
|
392
434
|
async def testClipEmbedding(
|
|
393
435
|
self, image_data: bytes, metadata: ImageMetadata, config: dict[str, Any]
|
|
394
436
|
) -> ClipDetectionPluginResponse | None:
|
|
395
|
-
"""Run the CLIP image branch on a single image captured by the UI
|
|
396
|
-
test panel."""
|
|
437
|
+
"""Run the CLIP image branch on a single image captured by the UI test panel."""
|
|
397
438
|
...
|
|
398
439
|
|
|
399
440
|
async def detectClipEmbedding(
|
|
@@ -403,18 +444,14 @@ class ClipDetectionInterface(Protocol):
|
|
|
403
444
|
...
|
|
404
445
|
|
|
405
446
|
async def getTextEmbedding(self, text: str) -> ClipTextEmbeddingResult:
|
|
406
|
-
"""Run the CLIP text branch and return a
|
|
407
|
-
usable for semantic-search queries against previously stored image
|
|
408
|
-
embeddings."""
|
|
447
|
+
"""Run the CLIP text branch and return a vector usable for semantic-search queries against stored image embeddings."""
|
|
409
448
|
...
|
|
410
449
|
|
|
411
450
|
async def clipSettings(self) -> list[JsonSchema] | None:
|
|
412
|
-
"""Return the JSON schema for the CLIP settings form in the UI.
|
|
413
|
-
Return None for no schema."""
|
|
451
|
+
"""Return the JSON schema for the CLIP settings form in the UI, or None for no schema."""
|
|
414
452
|
...
|
|
415
453
|
|
|
416
454
|
|
|
417
|
-
# Union of all optional plugin interfaces.
|
|
418
455
|
PluginInterfaces = (
|
|
419
456
|
MotionDetectionInterface
|
|
420
457
|
| ObjectDetectionInterface
|
|
@@ -425,3 +462,4 @@ PluginInterfaces = (
|
|
|
425
462
|
| ClipDetectionInterface
|
|
426
463
|
| DiscoveryProvider
|
|
427
464
|
)
|
|
465
|
+
"""Union of all optional plugin interfaces."""
|