@camera.ui/server 2.2.8 → 2.3.0
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/LICENSE.md +8 -1
- package/dist/interface/assets/{404-BYV0u5qE.js → 404-C0X5UBF4.js} +1 -1
- package/dist/interface/assets/About-Ctp_u5qK.js +1 -0
- package/dist/interface/assets/Assistant-Bj2bAUHD.css +1 -0
- package/dist/interface/assets/Assistant-CDrBV_mg.js +1 -0
- package/dist/interface/assets/Automation-Dp6V80Iz.js +3 -0
- package/dist/interface/assets/{Automation-BSicfOGF.css → Automation-R5o9sXYY.css} +1 -1
- package/dist/interface/assets/{AutomationImport-Iu-K82Os.js → AutomationImport-DKgg7atE.js} +2 -2
- package/dist/interface/assets/AutomationStore-CU-m5VC8.js +2 -0
- package/dist/interface/assets/{AutomationStoreDetail-BbvLRJ5u.js → AutomationStoreDetail-CiyIs8Iu.js} +2 -2
- package/dist/interface/assets/Automations-Dljh-sWu.js +2 -0
- package/dist/interface/assets/Camera-0p0P_mbp.css +1 -0
- package/dist/interface/assets/Camera-Bvovab-8.js +2 -0
- package/dist/interface/assets/{CameraConsole-JBD3ZmJ6.js → CameraConsole-D_Fv-MAi.js} +1 -1
- package/dist/interface/assets/{Cameras-R5mJGMK9.js → Cameras-Cq7Gw-fk.js} +2 -2
- package/dist/interface/assets/{Camview-DH6_8CxH.css → Camview-Bs2VvmUS.css} +1 -1
- package/dist/interface/assets/Camview-CP6PA20C.js +1 -0
- package/dist/interface/assets/{CertificateUpload-B9S4EOQs.js → CertificateUpload-DjzNMFc3.js} +1 -1
- package/dist/interface/assets/{Config-CbFl5Wcp.js → Config-Dl2TlyFe.js} +1 -1
- package/dist/interface/assets/{ConfigActionAssistant-DIOh6-np.js → ConfigActionAssistant-DCkJ_Iqq.js} +1 -1
- package/dist/interface/assets/ConfigActionCameraControl-2pzl59gR.js +1 -0
- package/dist/interface/assets/{ConfigActionDelay-B9i4YZjy.js → ConfigActionDelay-BAp1dr0N.js} +1 -1
- package/dist/interface/assets/{ConfigActionHttp-DFtxAa3U.js → ConfigActionHttp-_kqgEuun.js} +1 -1
- package/dist/interface/assets/{ConfigActionImageInput-CuTH4Nw2.js → ConfigActionImageInput-BgtACnCm.js} +1 -1
- package/dist/interface/assets/{ConfigActionMqtt-B9SfWP-G.js → ConfigActionMqtt-z7UzccW5.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-BGMIByJT.js → ConfigActionNotification-bhbb5AqU.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotificationControl-Cz72szMd.js → ConfigActionNotificationControl-BbvX8MFu.js} +1 -1
- package/dist/interface/assets/{ConfigActionOutput-BG6DoIRe.js → ConfigActionOutput-DdgSg3FU.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-B5oRSE9n.js → ConfigActionPlugin-DGjZd1L0.js} +1 -1
- package/dist/interface/assets/ConfigActionSensor-DmImWFAo.js +1 -0
- package/dist/interface/assets/{ConfigActionSnapshot-Di-uxMrg.js → ConfigActionSnapshot-hVHSfdtS.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-BBpUti5A.js → ConfigActionVariable-BIpruwsx.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-DjOKPXQw.js → ConfigConditionIfElse-DRSpsoR4.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-BzvvZvD0.js → ConfigConditionSensorState-C2SNARH7.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSwitch-DQvdfUxR.js → ConfigConditionSwitch-4SbQcU7N.js} +1 -1
- package/dist/interface/assets/{ConfigConditionTime-BqOElX5C.js → ConfigConditionTime-ESX3shbg.js} +1 -1
- package/dist/interface/assets/{ConfigSensorValueInput-BT-0LhSH.js → ConfigSensorValueInput-CTUdAA-R.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-1OkudUah.js → ConfigTriggerDetection-BRr6ixxQ.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerGeofence-HGatk3C5.js → ConfigTriggerGeofence-D-xRMGrT.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerManual-DpRr_vVq.js → ConfigTriggerManual-aXD6k1qa.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerMqtt-C_MId3BY.js → ConfigTriggerMqtt-pjHW4yOL.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSchedule-BmwDqd6N.js → ConfigTriggerSchedule-CYOt57qg.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-Rgx8q4g8.js → ConfigTriggerSensor-BwJ_cAqd.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-4VsHPmbn.js → ConfigTriggerSystem-DBXIrjzU.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-Bs7zEfY0.js → ConfigTriggerWebhook-CccBmMCb.js} +1 -1
- package/dist/interface/assets/Console-DWAaz1C6.js +1 -0
- package/dist/interface/assets/CuiAssistantConversation-B3xEiNNt.js +5 -0
- package/dist/interface/assets/{CuiAssistantConversation-BmBhwrNh.css → CuiAssistantConversation-C5ca1lgX.css} +1 -1
- package/dist/interface/assets/CuiAutomationRunsDialog-CfylVPLI.js +1 -0
- package/dist/interface/assets/CuiBottomSheet-ACN23VLS.js +1 -0
- package/dist/interface/assets/{CuiBottomSheet-Dd3uOtnC.js → CuiBottomSheet-DEVNeDqa.js} +1 -1
- package/dist/interface/assets/CuiCameraPipCard-rR_FW9zq.js +1 -0
- package/dist/interface/assets/CuiCameraRecordings-CnorhPhf.js +1 -0
- package/dist/interface/assets/CuiCameraShares-BxUgedC_.js +1 -0
- package/dist/interface/assets/{CuiCameraTable-C7WLZ2pA.js → CuiCameraTable-C3GB4Q2y.js} +2 -2
- package/dist/interface/assets/CuiCameraTable-MHfnZSyK.js +1 -0
- package/dist/interface/assets/CuiChartTable-TAzZgetO.js +1 -0
- package/dist/interface/assets/{CuiConsole-CkZML0iY.js → CuiConsole-Cf5lOCE1.js} +2 -2
- package/dist/interface/assets/{CuiDataTable-BFIhx1D3.js → CuiDataTable-DfjXa0C1.js} +1 -1
- package/dist/interface/assets/CuiLightControl-ChK-SvJp.js +1 -0
- package/dist/interface/assets/CuiList-C4fxd9lD.js +1 -0
- package/dist/interface/assets/CuiPluginCard-DMpANIQj.js +2 -0
- package/dist/interface/assets/CuiPluginCategoryChip-BKxJMid7.js +1 -0
- package/dist/interface/assets/{CuiPluginOAuthButton-BQZkTcgo.js → CuiPluginOAuthButton-DnQ838JJ.js} +2 -2
- package/dist/interface/assets/{CuiPluginTrustBadge-DbqdfdaL.js → CuiPluginTrustBadge-DyYDUWV6.js} +1 -1
- package/dist/interface/assets/{CuiQRCode-2WsWJQFi.js → CuiQRCode-S9fPi0_l.js} +1 -1
- package/dist/interface/assets/CuiSchema-DScmDQsh.js +1 -0
- package/dist/interface/assets/CuiTopNavbarItem-CT10aAlO.js +1 -0
- package/dist/interface/assets/Faces-Coy-tUVM.js +1 -0
- package/dist/interface/assets/FirstSteps-CrMJC049.js +1 -0
- package/dist/interface/assets/Floorplan-Bj_mVrxp.js +1 -0
- package/dist/interface/assets/{Floorplan-Ci63Zd8W.css → Floorplan-CT5TrMSD.css} +1 -1
- package/dist/interface/assets/Instances-B_mpKAng.js +1 -0
- package/dist/interface/assets/{Logs-DMehPk0t.js → Logs-fY1dpQk4.js} +2 -2
- package/dist/interface/assets/Menu-Bgi-NLdg.js +1 -0
- package/dist/interface/assets/Metrics-DnMeIrkf.css +1 -0
- package/dist/interface/assets/Metrics-k9KACiwh.js +12 -0
- package/dist/interface/assets/OAuthDeviceFlow-xTh83xmc.js +1 -0
- package/dist/interface/assets/Plugin-BB7x7UHw.css +1 -0
- package/dist/interface/assets/Plugin-VWq7sONB.js +1 -0
- package/dist/interface/assets/{PluginConsole-D1BRQCO9.js → PluginConsole-LnnDOVBL.js} +2 -2
- package/dist/interface/assets/PluginDetail-CKD9sbDx.js +2 -0
- package/dist/interface/assets/{PluginSchema-B9VsBHOU.js → PluginSchema-BnB0_6Sk.js} +1 -1
- package/dist/interface/assets/PluginSearch-BoBZLLbr.js +1 -0
- package/dist/interface/assets/PluginSearch-kGhweU1J.js +2 -0
- package/dist/interface/assets/{PluginUpdateProgress-uj0XPV-_.js → PluginUpdateProgress-DMx0QlgE.js} +1 -1
- package/dist/interface/assets/{Plugins-CPx9Hszm.js → Plugins-Ekmr6aVa.js} +1 -1
- package/dist/interface/assets/RecentEventsFilter-StLJNuks.js +1 -0
- package/dist/interface/assets/Recordings-8PqxJOI3.css +1 -0
- package/dist/interface/assets/Recordings-Bvkuk_TV.js +1 -0
- package/dist/interface/assets/SensorEdit-CAf9Nb01.js +1 -0
- package/dist/interface/assets/SensorHistory-il8bDErX.js +1 -0
- package/dist/interface/assets/Sensors-sxQ6HLKo.js +2 -0
- package/dist/interface/assets/Settings-Bu0G7Ebx.js +1 -0
- package/dist/interface/assets/{Settings-D7495zbV.css → Settings-DtCSaLPb.css} +1 -1
- package/dist/interface/assets/SettingsAccount-8OZJLQi-.js +1 -0
- package/dist/interface/assets/SettingsAccount-bSfFi9YH.js +1 -0
- package/dist/interface/assets/SettingsAppearance-CnvN_Tzr.js +1 -0
- package/dist/interface/assets/SettingsAppearance-EvPWgF4c.js +1 -0
- package/dist/interface/assets/SettingsAssistant-B6s6pHCx.js +1 -0
- package/dist/interface/assets/SettingsBackup-Dd2FaUcN.js +1 -0
- package/dist/interface/assets/SettingsList-SvCO_gfG.js +1 -0
- package/dist/interface/assets/SettingsMqtt-BXBzHX84.js +1 -0
- package/dist/interface/assets/SettingsNotifications-CV-jJwFV.js +1 -0
- package/dist/interface/assets/SettingsPermissions-GchFaWjz.js +1 -0
- package/dist/interface/assets/SettingsRecordings-C4Ch_jmV.js +1 -0
- package/dist/interface/assets/SettingsRemote-OZHDJKSq.js +2 -0
- package/dist/interface/assets/SettingsSystem-BJlHXwVs.js +2 -0
- package/dist/interface/assets/SettingsUsers-RGOkOzx0.js +1 -0
- package/dist/interface/assets/Terminal-DX-ECC91.js +4 -0
- package/dist/interface/assets/Training-B8my7vka.js +1 -0
- package/dist/interface/assets/Training-D1DDjCCD.css +1 -0
- package/dist/interface/assets/Updates-DmavyhAn.js +2 -0
- package/dist/interface/assets/{VariableInput-CcILik4M.js → VariableInput-DQJle67Y.js} +1 -1
- package/dist/interface/assets/{VariableSuggestions-Bj0HdrYW.js → VariableSuggestions-D8V739dF.js} +1 -1
- package/dist/interface/assets/{VersionsHandler-BA8Lcysg.js → VersionsHandler-B41TJhgY.js} +1 -1
- package/dist/interface/assets/{VirtualSensorCreate-DvHyw7I2.js → VirtualSensorCreate-MfLh-LpH.js} +1 -1
- package/dist/interface/assets/Workers-CafDeRhH.js +2 -0
- package/dist/interface/assets/api-By0v6EeA.css +2 -0
- package/dist/interface/assets/api-D1iULsSy.js +4 -0
- package/dist/interface/assets/{api-CKbL5jC7.js → api-DbUdfXO_.js} +1 -1
- package/dist/interface/assets/{assistant-CwmHp5bB.js → assistant-7hqP6OpA.js} +1 -1
- package/dist/interface/assets/{auth-AfZrkJ2f.js → auth-CDxrn7fe.js} +1 -1
- package/dist/interface/assets/{automations-DOCG0q8-.js → automations-CTTQlGCW.js} +1 -1
- package/dist/interface/assets/{cameraSources-mHEz9ROa.js → cameraSources-MOiE_1-W.js} +1 -1
- package/dist/interface/assets/cloudHandoff-CJzFH7CW.js +1 -0
- package/dist/interface/assets/{config-AG0SnOiY.js → config-6EiGxiYm.js} +1 -1
- package/dist/interface/assets/eventLabels-idFWh3Y_.js +1 -0
- package/dist/interface/assets/{flowSchema-B0d3VjU7.js → flowSchema-Dp_-p9WA.js} +1 -1
- package/dist/interface/assets/{intercomService-DG3EeZ6s.js → intercomService-BQYzjnAi.js} +1 -1
- package/dist/interface/assets/main-0oXl_8v7.js +3 -0
- package/dist/interface/assets/main-CdvAniEp.css +1 -0
- package/dist/interface/assets/mqtt-ChvXxMhR.js +1 -0
- package/dist/interface/assets/{notifications-8FH4ApEz.js → notifications-CbL-1oMs.js} +1 -1
- package/dist/interface/assets/{plugins-2JLUEMYc.js → plugins-lsoAntRQ.js} +1 -1
- package/dist/interface/assets/{rooms-DoAfzA8W.js → rooms-P8WrRIco.js} +1 -1
- package/dist/interface/assets/sensorIcons-BRTtoaHX.js +1 -0
- package/dist/interface/assets/{sensorSlots-biaL-O8E.js → sensorSlots-BTj-IM7z.js} +1 -1
- package/dist/interface/assets/{sensors-DyAMdS-H.js → sensors-Dxc7HgjZ.js} +1 -1
- package/dist/interface/assets/{server-BDRUGj61.js → server-DlK8gUoE.js} +1 -1
- package/dist/interface/assets/{theme-CLxrnR60.js → theme-BOppzzar.js} +1 -1
- package/dist/interface/assets/types-CeruGCb8.js +1 -0
- package/dist/interface/assets/{types-8JXzkoC8.js → types-J1Drrxo1.js} +1 -1
- package/dist/interface/assets/types-U4AuTNLR.js +1 -0
- package/dist/interface/assets/ungrouped-ING_JAuK.js +1 -0
- package/dist/interface/assets/{updates-F-veEP1I.js → updates-DtVp84Y0.js} +1 -1
- package/dist/interface/assets/{useAppVersion-BjUQmB7M.js → useAppVersion-BGgCk5GD.js} +1 -1
- package/dist/interface/assets/{useAssistantActions-CNEJol4o.js → useAssistantActions-C13O5EHU.js} +1 -1
- package/dist/interface/assets/useBackupRestore-vrhmc9i-.js +1 -0
- package/dist/interface/assets/{useCameraOptions-D_oduve2.js → useCameraOptions-CI1baRmm.js} +1 -1
- package/dist/interface/assets/{useKeyboardInset-CPWSVYlA.js → useKeyboardInset-CvgJp091.js} +1 -1
- package/dist/interface/assets/{useLogsSocket-B_jXUqv8.js → useLogsSocket-Bf0BI8ET.js} +1 -1
- package/dist/interface/assets/{useNavLayout-DEngIIeU.js → useNavLayout-6zM1Y-7B.js} +1 -1
- package/dist/interface/assets/{usePermissions-DAO92InI.js → usePermissions-DZitFsBQ.js} +1 -1
- package/dist/interface/assets/{usePluginUpdates-CJi8Y_wl.js → usePluginUpdates-VZdpJ_Ax.js} +1 -1
- package/dist/interface/assets/{usePushRegistration-j9WCeFbv.js → usePushRegistration-vcbMrTxZ.js} +1 -1
- package/dist/interface/assets/{useServerRestart-BVks5tuC.js → useServerRestart-DrpuNbIu.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-DQ0NSyU8.js → useStreamStatus-l3Pfk1H4.js} +1 -1
- package/dist/interface/assets/{useTabSwipe-CVq7EcIY.js → useTabSwipe-BSpi25WV.js} +1 -1
- package/dist/interface/assets/{useUpdateChannel-C0fjDvNP.js → useUpdateChannel-kAl-5UNY.js} +1 -1
- package/dist/interface/assets/{useUpdatesSocket-DXKF9hzc.js → useUpdatesSocket-CaFz_fEb.js} +1 -1
- package/dist/interface/assets/{useUserOptions-UjMeAL5n.js → useUserOptions-BKteXnmU.js} +1 -1
- package/dist/interface/assets/vendor-cameraui-K1Nw4PvF.js +2326 -0
- package/dist/interface/assets/vendor-core-CJdfpB0I.js +1 -0
- package/dist/interface/assets/{vendor-primevue-Zx6t06A4.js → vendor-primevue-DoA2Rwcb.js} +871 -871
- package/dist/interface/assets/walk-B8FNhXuj.js +1 -0
- package/dist/interface/ha/{404-D5gfy0Cd.js → 404-RtgPpD9N.js} +1 -1
- package/dist/interface/ha/{About-JzlpCzBN.js → About-0PRv9bU0.js} +4 -4
- package/dist/interface/ha/{Assistant-DgOfGesf.js → Assistant-DbwxVfpl.js} +1021 -1021
- package/dist/interface/ha/{Automation-BDaWYiBu.js → Automation-D3HomdH7.js} +159 -155
- package/dist/interface/ha/{AutomationImport-BNB_PJ9R.js → AutomationImport-nQUUvZcv.js} +6 -6
- package/dist/interface/ha/{AutomationStore-_TeOt1wz.js → AutomationStore-BXDD92wZ.js} +8 -8
- package/dist/interface/ha/{AutomationStoreDetail-jjIEZoRi.js → AutomationStoreDetail-BYeq7FID.js} +19 -19
- package/dist/interface/ha/{Automations-DM6FEVOw.js → Automations-CJlGqmSP.js} +74 -74
- package/dist/interface/ha/Camera-Ai4BxVh_.js +747 -0
- package/dist/interface/ha/{CameraConsole-BoVql05l.js → CameraConsole-UMNOX3dE.js} +4 -4
- package/dist/interface/ha/{Cameras-cQBGvXq7.js → Cameras-BW-AEXYi.js} +266 -266
- package/dist/interface/ha/{Camview-mkG5FXZM.js → Camview-jikpVEE0.js} +195 -194
- package/dist/interface/ha/{Config-BNPDzo_h.js → Config-BOxwBH2D.js} +111 -111
- package/dist/interface/ha/{ConfigActionAssistant-C-8P3DYz.js → ConfigActionAssistant--3iWk9sq.js} +4 -4
- package/dist/interface/ha/{ConfigActionCameraControl-x1ksGL7m.js → ConfigActionCameraControl-DbVXWTeA.js} +3 -3
- package/dist/interface/ha/{ConfigActionHttp-DzCJp85z.js → ConfigActionHttp-Du3n2Yj0.js} +2 -2
- package/dist/interface/ha/{ConfigActionImageInput-C5C5U_2z.js → ConfigActionImageInput-BrJrTZTY.js} +4 -4
- package/dist/interface/ha/{ConfigActionMqtt-T29xb75r.js → ConfigActionMqtt-DZd1BNUt.js} +4 -4
- package/dist/interface/ha/{ConfigActionNotification-BcnyilF9.js → ConfigActionNotification-CJWW10gt.js} +3 -3
- package/dist/interface/ha/{ConfigActionNotificationControl-D3wIVKuU.js → ConfigActionNotificationControl-Bl41AVv1.js} +2 -2
- package/dist/interface/ha/{ConfigActionOutput-hD-yVczw.js → ConfigActionOutput-OTj7Lwgq.js} +1 -1
- package/dist/interface/ha/{ConfigActionPlugin-Bz1O-O4Q.js → ConfigActionPlugin-B790PEk0.js} +8 -8
- package/dist/interface/ha/{ConfigActionSensor-FOz-PYl_.js → ConfigActionSensor-BG3jZxge.js} +5 -5
- package/dist/interface/ha/{ConfigActionSnapshot-CmxEOuK1.js → ConfigActionSnapshot-fGmLl6jb.js} +2 -2
- package/dist/interface/ha/{ConfigActionVariable-BCvkrdCh.js → ConfigActionVariable-CK3vYDsr.js} +1 -1
- package/dist/interface/ha/{ConfigConditionIfElse-icfTG9OA.js → ConfigConditionIfElse-DyFLGg3y.js} +3 -3
- package/dist/interface/ha/{ConfigConditionSensorState-ClUAsm0d.js → ConfigConditionSensorState-BUTfeFO2.js} +7 -7
- package/dist/interface/ha/{ConfigConditionSwitch-C8AMCkn6.js → ConfigConditionSwitch-iDG_ubif.js} +5 -5
- package/dist/interface/ha/{ConfigSensorValueInput-ChvDQzGd.js → ConfigSensorValueInput-BmRIGUKB.js} +5 -5
- package/dist/interface/ha/{ConfigTriggerDetection-aUSyaClu.js → ConfigTriggerDetection-DyPQGt9M.js} +24 -24
- package/dist/interface/ha/{ConfigTriggerGeofence-DsJeJWP4.js → ConfigTriggerGeofence-CGE-bH_t.js} +6 -6
- package/dist/interface/ha/{ConfigTriggerMqtt-CsAxA7QZ.js → ConfigTriggerMqtt-CM3KZqBc.js} +1 -1
- package/dist/interface/ha/{ConfigTriggerSensor-CTxr9cfU.js → ConfigTriggerSensor-DoHMcwP4.js} +1 -1
- package/dist/interface/ha/{ConfigTriggerSystem-C8UEfpfs.js → ConfigTriggerSystem-BYKbW4Zr.js} +2 -2
- package/dist/interface/ha/{ConfigTriggerWebhook-frEE-SCB.js → ConfigTriggerWebhook-5PBAadG8.js} +2 -2
- package/dist/interface/ha/{Console-A3VtbsLg.js → Console-BEXzl4p1.js} +7 -7
- package/dist/interface/ha/{CuiAutomationRunsDialog-BlJvhBiX.js → CuiAutomationRunsDialog-DkK_ar5G.js} +3 -3
- package/dist/interface/ha/{CuiBottomSheet-Cu-t3H0Z.js → CuiBottomSheet-CYNvQV4T.js} +2 -2
- package/dist/interface/ha/{CuiCameraRecordings-R5ArEmqJ.js → CuiCameraRecordings-DYjecmE_.js} +30 -48
- package/dist/interface/ha/{CuiCameraShares-B9pfRkM4.js → CuiCameraShares-C0H60nZS.js} +7 -7
- package/dist/interface/ha/{CuiCameraTable-CKjGKaMC.js → CuiCameraTable-CQNMyBaq.js} +5 -5
- package/dist/interface/ha/{CuiChartTable-BxWjRe-k.js → CuiChartTable-Bhv1p9zj.js} +1161 -1161
- package/dist/interface/ha/{CuiConsole-C5fzsR7t.js → CuiConsole-DtXorGF5.js} +20 -20
- package/dist/interface/ha/{CuiDataTable-BOdQDY8J.js → CuiDataTable-Cy8EjCk9.js} +7 -7
- package/dist/interface/ha/{CuiList-CU2NJ1K6.js → CuiList-DnW6Q5m2.js} +1 -1
- package/dist/interface/ha/{CuiPluginCard-BT71RRAD.js → CuiPluginCard-B4SCUblV.js} +125 -125
- package/dist/interface/ha/{CuiPluginOAuthButton-moh9uS7G.js → CuiPluginOAuthButton-BKg9SftQ.js} +5 -5
- package/dist/interface/ha/{CuiPluginTrustBadge-F_pVWkPJ.js → CuiPluginTrustBadge-CEtUJhCJ.js} +1 -1
- package/dist/interface/ha/{CuiQRCode-BNuj-nJ4.js → CuiQRCode-gp-9hqyk.js} +7 -7
- package/dist/interface/ha/{CuiSchema-Cb_8Ks-I.js → CuiSchema-CYpr_dD7.js} +161 -161
- package/dist/interface/ha/{CuiTopNavbarItem-BGzrrTls.js → CuiTopNavbarItem-CM-1oPxf.js} +1 -1
- package/dist/interface/ha/Faces-pa60ySng.js +1575 -0
- package/dist/interface/ha/{FirstSteps-BFX0-EEi.js → FirstSteps-D42yZm7R.js} +68 -68
- package/dist/interface/ha/{Floorplan-D6MGqSJT.js → Floorplan-BvE546pE.js} +512 -511
- package/dist/interface/ha/{Instances-CHzIUyyA.js → Instances-CAGCyfbB.js} +64 -64
- package/dist/interface/ha/{Logs-DZKM3dWv.js → Logs-RB3Ba8WM.js} +12 -12
- package/dist/interface/ha/{Menu-BQz4dfQi.js → Menu-hAnHu_jq.js} +17 -17
- package/dist/interface/ha/{Metrics-CdpWJ1mm.js → Metrics-ChYTebkX.js} +94 -93
- package/dist/interface/ha/{OAuthDeviceFlow-DUELtx3X.js → OAuthDeviceFlow-C05pH-9o.js} +3 -3
- package/dist/interface/ha/{Plugin-5bbTF0Rv.js → Plugin-D7XwcXkW.js} +647 -439
- package/dist/interface/ha/{PluginConsole-C__0lzsS.js → PluginConsole-DphEIOlL.js} +4 -4
- package/dist/interface/ha/{PluginDetail-Blrktk9W.js → PluginDetail-DfMl-yCl.js} +9 -9
- package/dist/interface/ha/{PluginSearch-BKbdwHQ1.js → PluginSearch-BPN4Opg5.js} +34 -34
- package/dist/interface/ha/{PluginUpdateProgress-IsNiecu3.js → PluginUpdateProgress-ByJ0R5sW.js} +3 -3
- package/dist/interface/ha/{Plugins-CC2Dwlx5.js → Plugins-BhKmjjNn.js} +59 -59
- package/dist/interface/ha/{RecentEventsFilter-9ZkDHD1g.js → RecentEventsFilter-BkLMlGVJ.js} +5 -6
- package/dist/interface/ha/Recordings-BaU7M1OW.js +1836 -0
- package/dist/interface/ha/{SensorEdit-Bi2Yx_ji.js → SensorEdit-DWxcCJ0F.js} +88 -88
- package/dist/interface/ha/{SensorHistory-sqG_6eav.js → SensorHistory-DuA9E9wT.js} +2 -2
- package/dist/interface/ha/{Sensors-DLtOh1p4.js → Sensors-CVpIHcgG.js} +438 -435
- package/dist/interface/ha/{Settings-DI3_zenm.js → Settings-BO2eBGEn.js} +61 -61
- package/dist/interface/ha/{SettingsAccount-pS86Qyr-.js → SettingsAccount-BQZZfoSM.js} +255 -255
- package/dist/interface/ha/{SettingsAppearance-tS3bubKQ.js → SettingsAppearance-B_yGl89u.js} +16 -16
- package/dist/interface/ha/{SettingsAssistant-LejCRXsF.js → SettingsAssistant-kMOixl9g.js} +501 -501
- package/dist/interface/ha/{SettingsBackup-CkhD1Kze.js → SettingsBackup-BpG-W4j-.js} +24 -24
- package/dist/interface/ha/{SettingsList-bibwvPSM.js → SettingsList-Btnkzu94.js} +6 -6
- package/dist/interface/ha/{SettingsMqtt-DSt0B4Qg.js → SettingsMqtt-C4DX9cNC.js} +23 -23
- package/dist/interface/ha/{SettingsNotifications-BF7ajNwE.js → SettingsNotifications-DI6ImggH.js} +6 -6
- package/dist/interface/ha/{SettingsPermissions-Jh0FuIF7.js → SettingsPermissions-BCDyCFcb.js} +2 -2
- package/dist/interface/ha/{SettingsRecordings-BTIdncxg.js → SettingsRecordings-Bq5NkJhd.js} +10 -10
- package/dist/interface/ha/{SettingsRemote-Cba4P1-O.js → SettingsRemote-CtncaPIA.js} +308 -308
- package/dist/interface/ha/{SettingsSystem-_Nnh2ZF5.js → SettingsSystem-BJXuA7xA.js} +11 -11
- package/dist/interface/ha/{SettingsUsers-BfHFoxJi.js → SettingsUsers-BF0rDluv.js} +91 -91
- package/dist/interface/ha/{Terminal-Dv_7oWmS.js → Terminal-kTCe2jP3.js} +11 -11
- package/dist/interface/ha/Training-BM2Xb8Ef.js +1754 -0
- package/dist/interface/ha/{Updates-BHl5H7zE.js → Updates-Cv1EY_T0.js} +6 -6
- package/dist/interface/ha/{VariableInput-DtLo7-Nw.js → VariableInput-BO2zZu4N.js} +1 -1
- package/dist/interface/ha/{VersionsHandler-CF0DSeol.js → VersionsHandler-CRnT9-K7.js} +10 -10
- package/dist/interface/ha/{VirtualSensorCreate-C907EgIz.js → VirtualSensorCreate-6dVRxPjw.js} +8 -8
- package/dist/interface/ha/{Workers-Dz1d9gEQ.js → Workers-MHia86lu.js} +97 -97
- package/dist/interface/ha/{api-DUqpDJ2N.js → api-CH_Y8Hee.js} +17459 -14633
- package/dist/interface/ha/{api-gId1nlMj.js → api-DylRa66V.js} +3 -3
- package/dist/interface/ha/{assistant-BaR65gIY.js → assistant-smRQYA6p.js} +53 -53
- package/dist/interface/ha/{auth-Btsz_KxO.js → auth-BXj5Fm6s.js} +38 -38
- package/dist/interface/ha/{automationBlueprint-CuO3iOiM.js → automationBlueprint-DGjftXFC.js} +4 -4
- package/dist/interface/ha/cameraui-cards.js +1 -1
- package/dist/interface/ha/{cards-DWhezIPP.js → cards-E0zw1UVg.js} +114 -113
- package/dist/interface/ha/{config-BKStpoEQ.js → config-dG_DA6XL.js} +16 -16
- package/dist/interface/ha/{dist-CM7R4_Gj.js → dist-BQf9ANPx.js} +77 -77
- package/dist/interface/ha/{dist-BIngHzHx.js → dist-euRmladF.js} +4 -4
- package/dist/interface/ha/{eventIcons-BFNUgeGr.js → eventLabels-B5GrM5jO.js} +291 -233
- package/dist/interface/ha/{intercomService-B7HkLs6z.js → intercomService-BtJ_zUNd.js} +250 -264
- package/dist/interface/ha/{mqtt-ajcSmTB-.js → mqtt-CP3vVkRJ.js} +12 -12
- package/dist/interface/ha/{notifications-Cf9dXHEO.js → notifications-CZNwSXTg.js} +22 -22
- package/dist/interface/ha/{pinia-DIKO5lnE.js → pinia-CVnHHb-s.js} +533 -501
- package/dist/interface/ha/{plugins-ml823dJV.js → plugins--eatOIaI.js} +66 -66
- package/dist/interface/ha/{protocol-BB4jdtUC-DW3jl2tV.js → protocol-BB4jdtUC-BhEwymva.js} +129 -48
- package/dist/interface/ha/{rooms-C5gUErBi.js → rooms-D5E6K75d.js} +8 -8
- package/dist/interface/ha/{server-dArenpJI.js → server-D1BqEY7i.js} +31 -31
- package/dist/interface/ha/{types-DYymuACA.js → types-CWogEoya.js} +36 -36
- package/dist/interface/ha/ungrouped-Ch4UX4dy.js +58 -0
- package/dist/interface/ha/{updates-D5sFzGtC.js → updates-B48Owi1w.js} +28 -28
- package/dist/interface/ha/{useAppVersion-C5x3Ap4_.js → useAppVersion-D95sKTJR.js} +2 -2
- package/dist/interface/ha/{useAssistantActions-S1FrNe9b.js → useAssistantActions-kDwiO-u5.js} +1 -1
- package/dist/interface/ha/{useKeyboardInset-Cj0T2AFX.js → useKeyboardInset-C2R51vsC.js} +1 -1
- package/dist/interface/ha/{useLogsSocket-DtvfQlPh.js → useLogsSocket-BzNWa2y2.js} +1 -1
- package/dist/interface/ha/{useNavLayout-HSFBA4JV.js → useNavLayout-228cwwqA.js} +19 -19
- package/dist/interface/ha/{usePermissions-DaE_wFch.js → usePermissions-CfA5x7Df.js} +1 -1
- package/dist/interface/ha/{useServerRestart-Ci0SppGW.js → useServerRestart-B0c40zs5.js} +1 -1
- package/dist/interface/ha/{useTabSwipe-CPKkRmaH.js → useTabSwipe-CfZg5hWj.js} +2 -2
- package/dist/interface/ha/{useUpdateChannel-CXHHovK3.js → useUpdateChannel-DQxI7FrD.js} +2 -2
- package/dist/interface/ha/{useUpdatesSocket-DVST2YXV.js → useUpdatesSocket-B8LqBBd3.js} +1 -1
- package/dist/interface/ha/{useUserOptions-BYcYI6QA.js → useUserOptions-dZf6ejlz.js} +1 -1
- package/dist/interface/ha/walk-CsSXaeJw.js +33 -0
- package/dist/interface/index.html +35 -36
- package/dist/interface/sw.js +1 -1
- package/dist/interface/workbox-5f52ac45.js +1 -0
- package/dist/server/package.json +11 -11
- package/dist/server/requirements.txt +2 -2
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +22 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +4 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/__init__.py +10 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/contract.py +6 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/interfaces.py +92 -4
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +16 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +4 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/face_embedder.py +1 -1
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/object.py +3 -3
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/person_embedder.py +65 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/segmenter.py +81 -0
- package/dist/server/src/api/database/index.d.ts +2 -1
- package/dist/server/src/api/database/index.js +31 -7
- package/dist/server/src/api/database/index.js.map +1 -1
- package/dist/server/src/api/database/migrations/v2-2-9.d.ts +3 -0
- package/dist/server/src/api/database/migrations/v2-2-9.js +28 -0
- package/dist/server/src/api/database/migrations/v2-2-9.js.map +1 -0
- package/dist/server/src/api/database/record-schemas.d.ts +1 -1
- package/dist/server/src/api/database/types.d.ts +17 -1
- package/dist/server/src/api/schemas/assistant.schema.d.ts +1 -1
- package/dist/server/src/api/schemas/cameras.schema.d.ts +140 -76
- package/dist/server/src/api/schemas/cameras.schema.js +4 -2
- package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
- package/dist/server/src/api/schemas/training.schema.d.ts +15 -3
- package/dist/server/src/api/schemas/training.schema.js +4 -1
- package/dist/server/src/api/schemas/training.schema.js.map +1 -1
- package/dist/server/src/api/websocket/nsp/worker-perf.js +2 -0
- package/dist/server/src/api/websocket/nsp/worker-perf.js.map +1 -1
- package/dist/server/src/api/websocket/types.d.ts +1 -0
- package/dist/server/src/assistant/search.d.ts +17 -0
- package/dist/server/src/assistant/search.js +10 -2
- package/dist/server/src/assistant/search.js.map +1 -1
- package/dist/server/src/assistant/tools/plugins.js +7 -3
- package/dist/server/src/assistant/tools/plugins.js.map +1 -1
- package/dist/server/src/assistant/types.d.ts +2 -0
- package/dist/server/src/automations/actions/plugin.js +5 -9
- package/dist/server/src/automations/actions/plugin.js.map +1 -1
- package/dist/server/src/automations/pluginMethodRegistry.d.ts +6 -0
- package/dist/server/src/automations/pluginMethodRegistry.js +39 -0
- package/dist/server/src/automations/pluginMethodRegistry.js.map +1 -1
- package/dist/server/src/automations/segment-picture.d.ts +16 -0
- package/dist/server/src/automations/segment-picture.js +152 -0
- package/dist/server/src/automations/segment-picture.js.map +1 -0
- package/dist/server/src/camera/decoder/detection-coordinator.d.ts +5 -2
- package/dist/server/src/camera/decoder/detection-coordinator.js +45 -22
- package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
- package/dist/server/src/camera/decoder/detection-pipeline.d.ts +30 -2
- package/dist/server/src/camera/decoder/detection-pipeline.js +81 -21
- package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
- package/dist/server/src/camera/decoder/event-manager.d.ts +12 -2
- package/dist/server/src/camera/decoder/event-manager.js +77 -75
- package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
- package/dist/server/src/camera/decoder/event-trace.d.ts +41 -1
- package/dist/server/src/camera/decoder/event-trace.js +63 -8
- package/dist/server/src/camera/decoder/event-trace.js.map +1 -1
- package/dist/server/src/camera/decoder/face-tracks.d.ts +26 -0
- package/dist/server/src/camera/decoder/face-tracks.js +199 -0
- package/dist/server/src/camera/decoder/face-tracks.js.map +1 -0
- package/dist/server/src/camera/decoder/frame-scaler.d.ts +3 -1
- package/dist/server/src/camera/decoder/frame-scaler.js +36 -8
- package/dist/server/src/camera/decoder/frame-scaler.js.map +1 -1
- package/dist/server/src/camera/decoder/nvr-sink.d.ts +6 -0
- package/dist/server/src/camera/decoder/nvr-sink.js +1 -1
- package/dist/server/src/camera/decoder/nvr-sink.js.map +1 -1
- package/dist/server/src/camera/decoder/perf-tracker.d.ts +2 -0
- package/dist/server/src/camera/decoder/perf-tracker.js +4 -0
- package/dist/server/src/camera/decoder/perf-tracker.js.map +1 -1
- package/dist/server/src/camera/decoder/ptz/autotracker.d.ts +6 -1
- package/dist/server/src/camera/decoder/ptz/autotracker.js +107 -25
- package/dist/server/src/camera/decoder/ptz/autotracker.js.map +1 -1
- package/dist/server/src/camera/decoder/secondary-stage.d.ts +10 -8
- package/dist/server/src/camera/decoder/secondary-stage.js +145 -125
- package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
- package/dist/server/src/camera/decoder/training-sink.d.ts +5 -2
- package/dist/server/src/camera/decoder/training-sink.js +30 -6
- package/dist/server/src/camera/decoder/training-sink.js.map +1 -1
- package/dist/server/src/camera/decoder/types.d.ts +6 -2
- package/dist/server/src/camera/decoder/types.js +4 -2
- package/dist/server/src/camera/decoder/types.js.map +1 -1
- package/dist/server/src/manager/trainingCandidateManager.d.ts +2 -1
- package/dist/server/src/manager/trainingCandidateManager.js +25 -3
- package/dist/server/src/manager/trainingCandidateManager.js.map +1 -1
- package/dist/server/src/manager/trainingSubmission.d.ts +5 -0
- package/dist/server/src/manager/trainingSubmission.js +73 -0
- package/dist/server/src/manager/trainingSubmission.js.map +1 -0
- package/dist/server/src/manager/types.d.ts +8 -2
- package/dist/server/src/manager/types.js.map +1 -1
- package/dist/server/src/plugins/runtime/python/proxy/sensor.py +2 -0
- package/dist/server/src/remote/api/routes/train.d.ts +44 -3
- package/dist/server/src/remote/api/routes/train.js +2 -2
- package/dist/server/src/remote/api/routes/train.js.map +1 -1
- package/dist/server/src/rpc/interfaces/core.d.ts +6 -2
- package/dist/server/src/rpc/interfaces/detection.d.ts +20 -3
- package/dist/server/src/rpc/server.d.ts +2 -0
- package/dist/server/src/rpc/server.js +8 -5
- package/dist/server/src/rpc/server.js.map +1 -1
- package/dist/server/src/sensors/registry.d.ts +1 -0
- package/dist/server/src/sensors/registry.js +20 -11
- package/dist/server/src/sensors/registry.js.map +1 -1
- package/dist/server/src/sensors/types.d.ts +1 -0
- package/dist/server/src/sensors/types.js +3 -0
- package/dist/server/src/sensors/types.js.map +1 -1
- package/dist/server/src/services/config/index.d.ts +1 -0
- package/dist/server/src/services/config/index.js +2 -0
- package/dist/server/src/services/config/index.js.map +1 -1
- package/dist/server/src/utils/image.d.ts +6 -0
- package/dist/server/src/utils/image.js +58 -22
- package/dist/server/src/utils/image.js.map +1 -1
- package/npm-shrinkwrap.json +115 -74
- package/package.json +11 -11
- package/dist/interface/assets/About-DBOS1rfw.js +0 -1
- package/dist/interface/assets/Assistant-BQ6Ld-bt.css +0 -1
- package/dist/interface/assets/Assistant-BRcHj8hq.js +0 -1
- package/dist/interface/assets/Automation-C0Emde7z.js +0 -3
- package/dist/interface/assets/AutomationStore-C2G0Bk8c.js +0 -2
- package/dist/interface/assets/Automations-D-vfqRnZ.js +0 -2
- package/dist/interface/assets/Camera-BpurrgAr.js +0 -2
- package/dist/interface/assets/Camera-D0B7yyVD.css +0 -1
- package/dist/interface/assets/Camview-IbOVRx20.js +0 -1
- package/dist/interface/assets/ConfigActionCameraControl-Bw_egtpP.js +0 -1
- package/dist/interface/assets/ConfigActionSensor-BErRRYfl.js +0 -1
- package/dist/interface/assets/Console-oCuuVKET.js +0 -1
- package/dist/interface/assets/CuiAssistantConversation-Bsyxau9v.js +0 -5
- package/dist/interface/assets/CuiAutomationRunsDialog-sRh_K6JI.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-DWoSHzC7.js +0 -1
- package/dist/interface/assets/CuiCameraPipCard-D6REm8uT.js +0 -1
- package/dist/interface/assets/CuiCameraRecordings-C2tvrbbw.js +0 -1
- package/dist/interface/assets/CuiCameraShares-jrrUEHoZ.js +0 -1
- package/dist/interface/assets/CuiCameraTable-BOzTWLwd.js +0 -1
- package/dist/interface/assets/CuiChartTable-BYrIX7LV.js +0 -1
- package/dist/interface/assets/CuiLightControl-DitIWqUr.js +0 -1
- package/dist/interface/assets/CuiList-BewTNr2X.js +0 -1
- package/dist/interface/assets/CuiPluginCard-Bd2HFduI.js +0 -2
- package/dist/interface/assets/CuiPluginCategoryChip-DlzOwRgc.js +0 -1
- package/dist/interface/assets/CuiSchema-BL0QZmP2.js +0 -1
- package/dist/interface/assets/CuiTopNavbarItem-Ti2TueU1.js +0 -1
- package/dist/interface/assets/Faces-DARrGLXf.js +0 -1
- package/dist/interface/assets/FirstSteps-DBYPBvGr.js +0 -1
- package/dist/interface/assets/Floorplan-BaZvzoyv.js +0 -1
- package/dist/interface/assets/Instances-r0xReURi.js +0 -1
- package/dist/interface/assets/Menu-C34RRyLd.js +0 -1
- package/dist/interface/assets/Metrics-BjoC71_O.js +0 -12
- package/dist/interface/assets/Metrics-DsHBab6t.css +0 -1
- package/dist/interface/assets/OAuthDeviceFlow-CdZxelf2.js +0 -1
- package/dist/interface/assets/Plugin-Qr_Q_Qfi.css +0 -1
- package/dist/interface/assets/Plugin-npx7CnwV.js +0 -1
- package/dist/interface/assets/PluginDetail-nwTrJmO6.js +0 -2
- package/dist/interface/assets/PluginSearch-CP2kQWKf.js +0 -1
- package/dist/interface/assets/PluginSearch-WEvbKMRs.js +0 -2
- package/dist/interface/assets/RecentEventsFilter-D5VSH2K1.js +0 -1
- package/dist/interface/assets/Recordings-BEKAn6QK.css +0 -1
- package/dist/interface/assets/Recordings-De6Zcv0M.js +0 -1
- package/dist/interface/assets/SensorEdit-SD_oHBRo.js +0 -1
- package/dist/interface/assets/SensorHistory-SxiLOloa.js +0 -1
- package/dist/interface/assets/Sensors-Djl64M-W.js +0 -2
- package/dist/interface/assets/Settings-CAf2reGs.js +0 -1
- package/dist/interface/assets/SettingsAccount-BGj5Ni91.js +0 -1
- package/dist/interface/assets/SettingsAccount-Dy6WC8ql.js +0 -1
- package/dist/interface/assets/SettingsAppearance-BGFhMlRk.js +0 -1
- package/dist/interface/assets/SettingsAppearance-DQzQmVzE.js +0 -1
- package/dist/interface/assets/SettingsAssistant-BwYVyuN3.js +0 -1
- package/dist/interface/assets/SettingsBackup-CVExGnOo.js +0 -1
- package/dist/interface/assets/SettingsList-vo7sz_MY.js +0 -1
- package/dist/interface/assets/SettingsMqtt-B1CuOcML.js +0 -1
- package/dist/interface/assets/SettingsNotifications-CCQ6eiq8.js +0 -1
- package/dist/interface/assets/SettingsPermissions-BlOf6HEy.js +0 -1
- package/dist/interface/assets/SettingsRecordings-7tTBg6m1.js +0 -1
- package/dist/interface/assets/SettingsRemote-DBgKmIdv.js +0 -2
- package/dist/interface/assets/SettingsSystem-DaFMsZpN.js +0 -2
- package/dist/interface/assets/SettingsUsers-DXACwVPi.js +0 -1
- package/dist/interface/assets/Terminal-DtGqlHbk.js +0 -4
- package/dist/interface/assets/Training-C-ToeAl4.css +0 -1
- package/dist/interface/assets/Training-Ca11D1Vj.js +0 -1
- package/dist/interface/assets/Updates-yenwuqnD.js +0 -2
- package/dist/interface/assets/Workers-Dyo44zxe.js +0 -2
- package/dist/interface/assets/api-CHQlxVtZ.css +0 -2
- package/dist/interface/assets/api-CLazgL-g.js +0 -4
- package/dist/interface/assets/cloudHandoff-zJCrDmwk.js +0 -1
- package/dist/interface/assets/eventIcons-C3JWChgS.js +0 -1
- package/dist/interface/assets/eventLabels-BsPoPWS9.js +0 -1
- package/dist/interface/assets/main-CGY9cVyi.css +0 -1
- package/dist/interface/assets/main-DkHV6YgB.js +0 -3
- package/dist/interface/assets/mqtt-DE2VbNdt.js +0 -1
- package/dist/interface/assets/sensorIcons-BntiOPX7.js +0 -1
- package/dist/interface/assets/types-B4LLKzDW.js +0 -1
- package/dist/interface/assets/types-a7Nw-P-m.js +0 -1
- package/dist/interface/assets/ungrouped-BoAbb9w3.js +0 -1
- package/dist/interface/assets/ungrouped-ChmBvcXp.css +0 -1
- package/dist/interface/assets/useBackupRestore-Biqn_lhh.js +0 -1
- package/dist/interface/assets/vendor-cameraui-GmMRyJ2R.js +0 -2326
- package/dist/interface/assets/vendor-core-BeAannbA.js +0 -1
- package/dist/interface/ha/Camera-sH9fRv18.js +0 -670
- package/dist/interface/ha/Faces-CsM5VO8Q.js +0 -1441
- package/dist/interface/ha/Recordings-B1XsJrzs.js +0 -1539
- package/dist/interface/ha/Training-CaSFA5oH.js +0 -1699
- package/dist/interface/ha/eventLabels-B4C1_4vT.js +0 -42
- package/dist/interface/ha/ungrouped-BHLAySWP.js +0 -1312
- package/dist/interface/workbox-778a14ff.js +0 -1
|
@@ -3,6 +3,7 @@ import { boxInsidePolygon, normalizePolygon } from '../utils/filter.js';
|
|
|
3
3
|
import { detectionRecord } from './debug/detection-record.js';
|
|
4
4
|
import { iou } from './detection-window.js';
|
|
5
5
|
import { worldTrace } from './event-trace.js';
|
|
6
|
+
import { MIN_PLATE_LENGTH, normalizePlateText } from './plate-vote.js';
|
|
6
7
|
const NMS_IOU_THRESHOLD = 0.45;
|
|
7
8
|
const NMS_CONFIDENCE_THRESHOLD = 0.25;
|
|
8
9
|
const OBJECT_MERGE_IOU_THRESHOLD = 0.3;
|
|
@@ -10,7 +11,9 @@ const OBJECT_MERGE_CLOSE_THRESHOLD = 0.0;
|
|
|
10
11
|
const PERSON_MERGE_CONTAINMENT = { labels: ['person'], minShare: 0.85 };
|
|
11
12
|
const MOTION_MERGE_IOU_THRESHOLD = 0.01;
|
|
12
13
|
const MOTION_MERGE_CLOSE_THRESHOLD = 0.1;
|
|
13
|
-
const
|
|
14
|
+
const FACE_CONFIDENCE = 0.5;
|
|
15
|
+
const PLATE_CONFIDENCE = 0.3;
|
|
16
|
+
const PLATE_OCR_CONFIDENCE = 0.9;
|
|
14
17
|
const TRAINING_COVERED_IOU = 0.5;
|
|
15
18
|
export const PAN_TO_IMAGE_RATIO = 4.0;
|
|
16
19
|
function toRustDetection(det) {
|
|
@@ -141,7 +144,10 @@ export class DetectionPipeline {
|
|
|
141
144
|
whitelist = null;
|
|
142
145
|
trainingMasks = [];
|
|
143
146
|
stillSince = new Map();
|
|
147
|
+
attested = [];
|
|
148
|
+
settings;
|
|
144
149
|
constructor(zones, settings) {
|
|
150
|
+
this.settings = settings;
|
|
145
151
|
this.world = new CameraWorld();
|
|
146
152
|
const rustZones = toRustZones(zones);
|
|
147
153
|
this.world.setZones(rustZones);
|
|
@@ -180,6 +186,7 @@ export class DetectionPipeline {
|
|
|
180
186
|
}
|
|
181
187
|
attest(label, tMs = Date.now()) {
|
|
182
188
|
this.world.attest(label, tMs);
|
|
189
|
+
this.attested.push({ label, at: tMs });
|
|
183
190
|
}
|
|
184
191
|
process(rawDetections, poseDelta, tMs = Date.now()) {
|
|
185
192
|
// the label whitelist is ours, not rust's: a zone only constrains the
|
|
@@ -214,16 +221,18 @@ export class DetectionPipeline {
|
|
|
214
221
|
if (t.trackId !== undefined)
|
|
215
222
|
boxLookup.set(t.trackId, t.box);
|
|
216
223
|
}
|
|
224
|
+
const training = this.collectTraining(rawDetections, tracked, staticTracks);
|
|
217
225
|
return {
|
|
218
226
|
tracked,
|
|
219
227
|
staticTracks,
|
|
220
|
-
trainingExtras:
|
|
228
|
+
trainingExtras: training.extras,
|
|
229
|
+
trainingSuggestions: training.suggestions,
|
|
221
230
|
crossings: result.crossings.map((c) => fromRustCrossing(c, boxLookup)),
|
|
222
231
|
created: result.created,
|
|
223
232
|
removed: result.removed,
|
|
224
233
|
events: result.events,
|
|
225
234
|
sightings: result.sightings,
|
|
226
|
-
trace: worldTrace(tMs, flat, cameraMotion, result),
|
|
235
|
+
trace: this.traceOf(worldTrace(tMs, flat, cameraMotion, result)),
|
|
227
236
|
};
|
|
228
237
|
}
|
|
229
238
|
runNms(rawDetections) {
|
|
@@ -287,34 +296,85 @@ export class DetectionPipeline {
|
|
|
287
296
|
const lower = label.toLowerCase();
|
|
288
297
|
return lower === 'motion' || this.whitelist.has(lower);
|
|
289
298
|
}
|
|
299
|
+
threshold(label) {
|
|
300
|
+
const lower = label.toLowerCase();
|
|
301
|
+
if (lower === 'face')
|
|
302
|
+
return this.settings.face?.confidence ?? FACE_CONFIDENCE;
|
|
303
|
+
if (lower === 'license_plate')
|
|
304
|
+
return this.settings.licensePlate?.confidence ?? PLATE_CONFIDENCE;
|
|
305
|
+
const confidences = this.settings.object.confidences;
|
|
306
|
+
const values = Object.values(confidences);
|
|
307
|
+
return confidences[lower] ?? (values.length > 0 ? Math.min(...values) : 0.5);
|
|
308
|
+
}
|
|
309
|
+
aboveThreshold(detections) {
|
|
310
|
+
return detections.filter((d) => d.confidence >= this.threshold(d.label));
|
|
311
|
+
}
|
|
312
|
+
splitFaces(faces) {
|
|
313
|
+
const threshold = this.threshold('face');
|
|
314
|
+
return { kept: faces.filter((f) => f.confidence >= threshold), weak: faces.filter((f) => f.confidence < threshold) };
|
|
315
|
+
}
|
|
316
|
+
splitPlates(plates) {
|
|
317
|
+
const kept = [];
|
|
318
|
+
const weak = [];
|
|
319
|
+
for (const plate of plates) {
|
|
320
|
+
const shortfall = this.plateShortfall(plate);
|
|
321
|
+
if (shortfall)
|
|
322
|
+
weak.push({ ...plate, shortfall });
|
|
323
|
+
else
|
|
324
|
+
kept.push(plate);
|
|
325
|
+
}
|
|
326
|
+
return { kept, weak };
|
|
327
|
+
}
|
|
328
|
+
trainingSuggestionsFor(items, label) {
|
|
329
|
+
return items.filter((item) => !this.masked(item.box)).map((item) => ({ label, box: item.box, confidence: item.confidence }));
|
|
330
|
+
}
|
|
331
|
+
traceOf(trace) {
|
|
332
|
+
if (this.attested.length === 0)
|
|
333
|
+
return trace;
|
|
334
|
+
trace.attest = this.attested;
|
|
335
|
+
this.attested = [];
|
|
336
|
+
return trace;
|
|
337
|
+
}
|
|
338
|
+
plateShortfall(plate) {
|
|
339
|
+
if (plate.confidence < this.threshold('license_plate'))
|
|
340
|
+
return 'confidence';
|
|
341
|
+
if (plate.ocrConfidence !== undefined && plate.ocrConfidence < (this.settings.licensePlate?.ocrConfidence ?? PLATE_OCR_CONFIDENCE))
|
|
342
|
+
return 'ocr';
|
|
343
|
+
if (normalizePlateText(plate.plateText ?? '').length < (this.settings.licensePlate?.minLength ?? MIN_PLATE_LENGTH))
|
|
344
|
+
return 'length';
|
|
345
|
+
return undefined;
|
|
346
|
+
}
|
|
290
347
|
applyConfidences(settings) {
|
|
348
|
+
this.settings = settings;
|
|
291
349
|
const values = Object.values(settings.object.confidences);
|
|
292
350
|
this.world.setMinConfidence(values.length > 0 ? Math.min(...values) : 0.5);
|
|
293
|
-
|
|
351
|
+
// faces and plates pass the same zone filter, each at its own threshold
|
|
352
|
+
this.world.setMinConfidences({ ...settings.object.confidences, face: this.threshold('face'), license_plate: this.threshold('license_plate') });
|
|
294
353
|
}
|
|
295
354
|
allowedByWhitelist(detections) {
|
|
296
355
|
if (detections.length === 0 || this.whitelist === null)
|
|
297
356
|
return detections;
|
|
298
357
|
return detections.filter((detection) => this.objectLabelAllowed(detection.label));
|
|
299
358
|
}
|
|
300
|
-
|
|
301
|
-
const
|
|
302
|
-
if (
|
|
303
|
-
return [];
|
|
359
|
+
collectTraining(rawDetections, tracked, staticTracks) {
|
|
360
|
+
const flat = rawDetections.map(toRustDetection).filter((d) => d.confidence >= NMS_CONFIDENCE_THRESHOLD);
|
|
361
|
+
if (flat.length === 0)
|
|
362
|
+
return { extras: [], suggestions: [] };
|
|
363
|
+
const kept = rustNms(flat, NMS_IOU_THRESHOLD);
|
|
364
|
+
const strong = kept.filter((d) => d.confidence >= this.threshold(d.label));
|
|
365
|
+
const weak = kept.filter((d) => d.confidence < this.threshold(d.label));
|
|
366
|
+
const covered = (detection, by) => by.some((t) => t.label === detection.label && iou(t.box, detection.box) >= TRAINING_COVERED_IOU);
|
|
304
367
|
const output = [...tracked, ...staticTracks];
|
|
305
|
-
const
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
extras.push(detection);
|
|
316
|
-
}
|
|
317
|
-
return extras;
|
|
368
|
+
const merged = strong.length === 0 ? [] : rustMerge(strong, OBJECT_MERGE_IOU_THRESHOLD, OBJECT_MERGE_CLOSE_THRESHOLD, PERSON_MERGE_CONTAINMENT);
|
|
369
|
+
const extras = merged.map(fromRustDetection).filter((d) => !this.masked(d.box) && !covered(d, output));
|
|
370
|
+
const suggestions = weak
|
|
371
|
+
.map(fromRustDetection)
|
|
372
|
+
.filter((d) => !this.masked(d.box) && !covered(d, [...output, ...extras]))
|
|
373
|
+
.map((d) => ({ label: d.label, box: d.box, confidence: d.confidence }));
|
|
374
|
+
return { extras, suggestions };
|
|
375
|
+
}
|
|
376
|
+
masked(box) {
|
|
377
|
+
return this.trainingMasks.some((mask) => boxInsidePolygon(box, mask));
|
|
318
378
|
}
|
|
319
379
|
runNmsAndMergeFlat(rawDetections) {
|
|
320
380
|
const flat = rawDetections.map(toRustDetection).filter((d) => d.confidence >= NMS_CONFIDENCE_THRESHOLD);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detection-pipeline.js","sourceRoot":"","sources":["../../../../../src/camera/decoder/detection-pipeline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"detection-pipeline.js","sourceRoot":"","sources":["../../../../../src/camera/decoder/detection-pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { RPCClient } from '@camera.ui/rpc';
|
|
2
2
|
import type { AlertZoneMatch, BoundingBox, ClassifierDetection, ClipEmbedding, Detection, LicensePlateDetection, LoggerService, Point } from '@camera.ui/sdk';
|
|
3
|
-
import type { DetectionThumbnail, ServerFaceDetection } from '../../rpc/interfaces/detection.js';
|
|
3
|
+
import type { DetectionThumbnail, ServerFaceDetection, TrainingSuggestion } from '../../rpc/interfaces/detection.js';
|
|
4
4
|
import type { LineCrossingEvent } from './detection-pipeline.js';
|
|
5
5
|
import type { TraceTick } from './event-trace.js';
|
|
6
6
|
import type { PerfTracker } from './perf-tracker.js';
|
|
@@ -18,6 +18,10 @@ export interface TrackedClassifierDetection extends ClassifierDetection, Tracked
|
|
|
18
18
|
}
|
|
19
19
|
export interface TrackedClipEmbedding extends ClipEmbedding, TrackedSecondary {
|
|
20
20
|
}
|
|
21
|
+
export interface TrackedPersonEmbedding {
|
|
22
|
+
trackId: number;
|
|
23
|
+
embedding: number[];
|
|
24
|
+
}
|
|
21
25
|
export interface NormalizedDetectionZone {
|
|
22
26
|
name: string;
|
|
23
27
|
points: Point[];
|
|
@@ -68,6 +72,8 @@ export interface ProcessedDetectionData {
|
|
|
68
72
|
trainingFrame?: Buffer;
|
|
69
73
|
trainingSubjects?: TrainingSubject[];
|
|
70
74
|
trainingExtras?: Detection[];
|
|
75
|
+
trainingSuggestions?: TrainingSuggestion[];
|
|
76
|
+
trainingDetector?: string;
|
|
71
77
|
staticObjects?: Detection[];
|
|
72
78
|
lineCrossings?: LineCrossingEvent[];
|
|
73
79
|
timestamp: number;
|
|
@@ -86,6 +92,7 @@ export declare class DetectionEventManager {
|
|
|
86
92
|
private static readonly VECTOR_PARK_MS;
|
|
87
93
|
private static readonly CLOSE_RECHECK_MS;
|
|
88
94
|
private static readonly CLOSE_WAIT_MAX_MS;
|
|
95
|
+
private static readonly PERSON_TRACKS_MAX;
|
|
89
96
|
private activeEvent;
|
|
90
97
|
private activeSegment;
|
|
91
98
|
private segmentTrackPaths;
|
|
@@ -113,6 +120,7 @@ export declare class DetectionEventManager {
|
|
|
113
120
|
private plateVotingActive;
|
|
114
121
|
private segmentClassifierTrackIds;
|
|
115
122
|
private segmentClipLabels;
|
|
123
|
+
private trackPersonVectors;
|
|
116
124
|
private readonly eventSubject;
|
|
117
125
|
private readonly nvr;
|
|
118
126
|
private readonly training;
|
|
@@ -130,6 +138,7 @@ export declare class DetectionEventManager {
|
|
|
130
138
|
vectorJobSettled(): void;
|
|
131
139
|
acceptClipVectors(clips: TrackedClipEmbedding[], model: string, capturedAt: number): void;
|
|
132
140
|
acceptFaceVectors(faces: TrackedFaceDetection[], model: string, capturedAt: number): void;
|
|
141
|
+
acceptPersonVectors(persons: TrackedPersonEmbedding[], model: string, capturedAt: number): void;
|
|
133
142
|
hasActiveSegment(): boolean;
|
|
134
143
|
forceEndActiveEvent(): void;
|
|
135
144
|
destroy(): void;
|
|
@@ -152,6 +161,8 @@ export declare class DetectionEventManager {
|
|
|
152
161
|
private attachFace;
|
|
153
162
|
private betterFace;
|
|
154
163
|
private attachClip;
|
|
164
|
+
private attachPerson;
|
|
165
|
+
private segmentPersonEmbeddings;
|
|
155
166
|
private heldFace;
|
|
156
167
|
private pushAttribute;
|
|
157
168
|
private extractTriggers;
|
|
@@ -160,7 +171,6 @@ export declare class DetectionEventManager {
|
|
|
160
171
|
private updateThumbnails;
|
|
161
172
|
private prunePlateThumbnails;
|
|
162
173
|
private updateBestCandidate;
|
|
163
|
-
private static isMoving;
|
|
164
174
|
private segmentAttachments;
|
|
165
175
|
private attributeThumbnailFor;
|
|
166
176
|
private takeMoment;
|
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { NamespaceManager } from '../../rpc/namespaces.js';
|
|
3
|
+
import { jpegSize } from '../../utils/image.js';
|
|
3
4
|
import { boxAnchorInPolygon, boxInsidePolygon, boxIntersectsPolygon } from '../utils/filter.js';
|
|
4
5
|
import { detectionRecord } from './debug/detection-record.js';
|
|
5
6
|
import { EventTraceCollector } from './event-trace.js';
|
|
6
7
|
import { leanEvent, NvrSink } from './nvr-sink.js';
|
|
7
8
|
import { MAX_UNTRACKED_PLATES, normalizePlateText, PlateVoteTracker } from './plate-vote.js';
|
|
8
9
|
import { TrainingSink } from './training-sink.js';
|
|
9
|
-
import { isFullFrameBox } from './types.js';
|
|
10
|
+
import { isFullFrameBox, isMovingTrack } from './types.js';
|
|
10
11
|
export const SECONDARY_FRESH_MS = 1000;
|
|
11
12
|
export const MOMENT_RANK_OBJECT = 0;
|
|
12
13
|
export const MOMENT_RANK_ATTRIBUTE = 1;
|
|
13
14
|
const UPDATE_THROTTLE_MS = 1000;
|
|
14
15
|
const MOMENT_IMPROVEMENT = 1.25;
|
|
15
16
|
const CLIP_ATTRIBUTE = 'clip';
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
function unitVector(values) {
|
|
18
|
+
let norm = 0;
|
|
19
|
+
for (const value of values)
|
|
20
|
+
norm += value * value;
|
|
21
|
+
norm = Math.sqrt(norm) || 1;
|
|
22
|
+
return values.map((value) => value / norm);
|
|
23
|
+
}
|
|
18
24
|
function zoneHit(box, zone) {
|
|
19
25
|
if (zone.match === 'anchor')
|
|
20
26
|
return boxAnchorInPolygon(box, zone.points);
|
|
@@ -34,26 +40,8 @@ function mayAlert(label, box, hits, alertZones) {
|
|
|
34
40
|
return claiming.some((zone) => hits?.has(zone.name));
|
|
35
41
|
}
|
|
36
42
|
function jpegInfo(jpeg) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (jpeg[i] !== 0xff) {
|
|
40
|
-
i++;
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
const marker = jpeg[i + 1];
|
|
44
|
-
if (marker === 0xff) {
|
|
45
|
-
i++;
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
// SOF0-SOF15 carry the frame size, skip DHT (C4), JPG (C8), DAC (CC)
|
|
49
|
-
if (marker >= 0xc0 && marker <= 0xcf && marker !== 0xc4 && marker !== 0xc8 && marker !== 0xcc) {
|
|
50
|
-
const height = jpeg.readUInt16BE(i + 5);
|
|
51
|
-
const width = jpeg.readUInt16BE(i + 7);
|
|
52
|
-
return `${width}x${height}/${Math.round(jpeg.length / 1024)}kb`;
|
|
53
|
-
}
|
|
54
|
-
i += 2 + jpeg.readUInt16BE(i + 2);
|
|
55
|
-
}
|
|
56
|
-
return `?x?/${Math.round(jpeg.length / 1024)}kb`;
|
|
43
|
+
const size = jpegSize(jpeg);
|
|
44
|
+
return `${size ? `${size.width}x${size.height}` : '?x?'}/${Math.round(jpeg.length / 1024)}kb`;
|
|
57
45
|
}
|
|
58
46
|
export class DetectionEventManager {
|
|
59
47
|
cameraId;
|
|
@@ -66,6 +54,7 @@ export class DetectionEventManager {
|
|
|
66
54
|
static VECTOR_PARK_MS = 2_000;
|
|
67
55
|
static CLOSE_RECHECK_MS = 200;
|
|
68
56
|
static CLOSE_WAIT_MAX_MS = 8_000;
|
|
57
|
+
static PERSON_TRACKS_MAX = 256;
|
|
69
58
|
activeEvent = null;
|
|
70
59
|
activeSegment = null;
|
|
71
60
|
segmentTrackPaths = new Map();
|
|
@@ -93,6 +82,7 @@ export class DetectionEventManager {
|
|
|
93
82
|
plateVotingActive = true;
|
|
94
83
|
segmentClassifierTrackIds = new Map();
|
|
95
84
|
segmentClipLabels = new Map();
|
|
85
|
+
trackPersonVectors = new Map();
|
|
96
86
|
eventSubject;
|
|
97
87
|
nvr;
|
|
98
88
|
training;
|
|
@@ -222,6 +212,12 @@ export class DetectionEventManager {
|
|
|
222
212
|
this.acceptVector(capturedAt, () => this.attachFace(face, model));
|
|
223
213
|
}
|
|
224
214
|
}
|
|
215
|
+
acceptPersonVectors(persons, model, capturedAt) {
|
|
216
|
+
for (const person of persons) {
|
|
217
|
+
if (person.embedding.length)
|
|
218
|
+
this.acceptVector(capturedAt, () => this.attachPerson(person, model));
|
|
219
|
+
}
|
|
220
|
+
}
|
|
225
221
|
hasActiveSegment() {
|
|
226
222
|
return this.activeSegment !== null;
|
|
227
223
|
}
|
|
@@ -489,8 +485,7 @@ export class DetectionEventManager {
|
|
|
489
485
|
this.segmentTrackPaths.set(t.trackId, { enterX: cx, enterY: cy, exitX: cx, exitY: cy });
|
|
490
486
|
}
|
|
491
487
|
}
|
|
492
|
-
|
|
493
|
-
const moving = t.trackSpeed !== undefined ? t.trackSpeed >= STATIONARY_SPEED_THRESHOLD && t.stationarySince === undefined : undefined;
|
|
488
|
+
const moving = t.trackSpeed !== undefined ? isMovingTrack(t) : undefined;
|
|
494
489
|
const entry = labelCounts.get(obj.label);
|
|
495
490
|
if (entry) {
|
|
496
491
|
entry.count++;
|
|
@@ -678,8 +673,9 @@ export class DetectionEventManager {
|
|
|
678
673
|
return;
|
|
679
674
|
// one face per track, named or not: two people the recognizer gave the same
|
|
680
675
|
// name stay two faces, each correctable on its own. Without a track there
|
|
681
|
-
// is nothing to tell faces apart by, so they share one slot per name
|
|
682
|
-
//
|
|
676
|
+
// is nothing to tell faces apart by, so they share one slot per name (a busy
|
|
677
|
+
// scene spreads such faces over many image cells), and a name a tracked
|
|
678
|
+
// face already carries is that person
|
|
683
679
|
const tracked = face.parentTrackId !== undefined;
|
|
684
680
|
if (!tracked && face.identity && this.activeSegment.attributes.some((a) => a.type === 'face' && a.label === face.identity))
|
|
685
681
|
return;
|
|
@@ -693,17 +689,23 @@ export class DetectionEventManager {
|
|
|
693
689
|
const existing = this.activeSegment.attributes[index];
|
|
694
690
|
if (!existing)
|
|
695
691
|
return;
|
|
696
|
-
|
|
692
|
+
// a track's slot carries the name the track settled on last, a vector may also take it back
|
|
693
|
+
if (tracked && (face.identity || face.embedding?.length))
|
|
694
|
+
existing.label = face.identity ?? 'unknown';
|
|
695
|
+
else if (face.identity && existing.label === 'unknown')
|
|
697
696
|
existing.label = face.identity;
|
|
698
697
|
if (!this.betterFace(face, existing, this.heldAttributes[index]))
|
|
699
698
|
return;
|
|
700
699
|
existing.confidence = face.confidence;
|
|
701
700
|
this.heldAttributes[index] = this.heldFace(face, model);
|
|
702
701
|
}
|
|
703
|
-
// picture, vector and points travel as one sighting: a face without a vector
|
|
704
|
-
// never replaces one that has it, and the sharpest face wins, not the one the
|
|
705
|
-
// detector was surest about
|
|
706
702
|
betterFace(face, existing, held) {
|
|
703
|
+
// picture, vector and points travel as one sighting: the picture shows a face
|
|
704
|
+
// read as the name the slot carries, a face without a vector never replaces one
|
|
705
|
+
// that has it, and the sharpest face wins, not the one the detector was surest about
|
|
706
|
+
const fits = (matched) => (matched ?? 'unknown') === existing.label;
|
|
707
|
+
if (fits(face.matched) !== fits(held?.matched))
|
|
708
|
+
return fits(face.matched);
|
|
707
709
|
const hasVector = Boolean(face.embedding?.length);
|
|
708
710
|
if (hasVector !== Boolean(held?.embedding?.length))
|
|
709
711
|
return hasVector;
|
|
@@ -724,8 +726,32 @@ export class DetectionEventManager {
|
|
|
724
726
|
this.segmentClipLabels.set(clip.label, stored + 1);
|
|
725
727
|
this.pushAttribute({ type: 'clip', label: clip.label, parentTrackId: clip.parentTrackId }, { clipEmbedding: clip.embedding, clipEmbeddingModel: model });
|
|
726
728
|
}
|
|
729
|
+
attachPerson(person, model) {
|
|
730
|
+
const held = this.trackPersonVectors.get(person.trackId);
|
|
731
|
+
this.trackPersonVectors.delete(person.trackId);
|
|
732
|
+
if (held?.model === model && held.sum.length === person.embedding.length) {
|
|
733
|
+
for (let i = 0; i < held.sum.length; i++)
|
|
734
|
+
held.sum[i] += person.embedding[i];
|
|
735
|
+
this.trackPersonVectors.set(person.trackId, held);
|
|
736
|
+
}
|
|
737
|
+
else {
|
|
738
|
+
this.trackPersonVectors.set(person.trackId, { sum: [...person.embedding], model });
|
|
739
|
+
}
|
|
740
|
+
if (this.trackPersonVectors.size > DetectionEventManager.PERSON_TRACKS_MAX) {
|
|
741
|
+
this.trackPersonVectors.delete(this.trackPersonVectors.keys().next().value);
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
segmentPersonEmbeddings() {
|
|
745
|
+
const embeddings = [];
|
|
746
|
+
for (const trackId of this.segmentTrackPaths.keys()) {
|
|
747
|
+
const held = this.trackPersonVectors.get(trackId);
|
|
748
|
+
if (held)
|
|
749
|
+
embeddings.push({ trackId, embedding: unitVector(held.sum), embeddingModel: held.model });
|
|
750
|
+
}
|
|
751
|
+
return embeddings.length ? embeddings : undefined;
|
|
752
|
+
}
|
|
727
753
|
heldFace(face, embeddingModel) {
|
|
728
|
-
return { thumbnail: face.thumbnail, embedding: face.embedding, embeddingModel, landmarks: face.thumbnailLandmarks, quality: face.quality };
|
|
754
|
+
return { thumbnail: face.thumbnail, embedding: face.embedding, embeddingModel, landmarks: face.thumbnailLandmarks, quality: face.quality, matched: face.matched };
|
|
729
755
|
}
|
|
730
756
|
pushAttribute(attribute, held) {
|
|
731
757
|
if (!this.activeSegment)
|
|
@@ -825,29 +851,15 @@ export class DetectionEventManager {
|
|
|
825
851
|
area: thumb.area,
|
|
826
852
|
onEdge: thumb.onEdge,
|
|
827
853
|
hasAttribute: true,
|
|
828
|
-
trackId: thumb.trackId,
|
|
829
|
-
speed: thumb.speed,
|
|
830
854
|
};
|
|
831
855
|
if (!current) {
|
|
832
856
|
map.set(key, candidate);
|
|
833
857
|
return;
|
|
834
858
|
}
|
|
835
|
-
const cm = DetectionEventManager.isMoving(candidate);
|
|
836
|
-
const currM = DetectionEventManager.isMoving(current);
|
|
837
|
-
if (cm && !currM) {
|
|
838
|
-
this.logger.trace(`Thumbnail ${key}: prefer moving track#${candidate.trackId} (speed=${candidate.speed?.toFixed(4)}) over static track#${current.trackId}`);
|
|
839
|
-
map.set(key, candidate);
|
|
840
|
-
return;
|
|
841
|
-
}
|
|
842
|
-
if (!cm && currM)
|
|
843
|
-
return;
|
|
844
859
|
if (!candidate.onEdge && (candidate.area > current.area || candidate.score > current.score)) {
|
|
845
860
|
map.set(key, candidate);
|
|
846
861
|
}
|
|
847
862
|
}
|
|
848
|
-
static isMoving(c) {
|
|
849
|
-
return (c.speed ?? 0) >= MIN_MOVING_SPEED;
|
|
850
|
-
}
|
|
851
863
|
segmentAttachments(withEmbeddings) {
|
|
852
864
|
const attachments = {};
|
|
853
865
|
const moment = this.segmentMoment;
|
|
@@ -887,6 +899,8 @@ export class DetectionEventManager {
|
|
|
887
899
|
}
|
|
888
900
|
}
|
|
889
901
|
}
|
|
902
|
+
if (withEmbeddings && this.activeSegment)
|
|
903
|
+
this.activeSegment.personEmbeddings = this.segmentPersonEmbeddings();
|
|
890
904
|
if (anyCrop) {
|
|
891
905
|
attachments.attributes = crops;
|
|
892
906
|
if (landmarks.some((points) => points?.length))
|
|
@@ -972,40 +986,28 @@ export class DetectionEventManager {
|
|
|
972
986
|
offerTrainingCandidate(scene, data, capturedAt) {
|
|
973
987
|
if (!this.activeEvent)
|
|
974
988
|
return;
|
|
975
|
-
const boxes =
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
if (face.box && !isFullFrameBox(face.box)) {
|
|
983
|
-
boxes.push({ label: 'face', confidence: face.confidence, x: face.box.x, y: face.box.y, width: face.box.width, height: face.box.height });
|
|
984
|
-
}
|
|
985
|
-
}
|
|
986
|
-
}
|
|
987
|
-
if (platesFresh) {
|
|
988
|
-
for (const plate of data.plates) {
|
|
989
|
-
if (plate.box && !isFullFrameBox(plate.box)) {
|
|
990
|
-
boxes.push({ label: 'license_plate', confidence: plate.confidence, x: plate.box.x, y: plate.box.y, width: plate.box.width, height: plate.box.height });
|
|
991
|
-
}
|
|
989
|
+
const boxes = [];
|
|
990
|
+
const add = (items, source, label) => {
|
|
991
|
+
for (const item of items) {
|
|
992
|
+
if (!item.box || isFullFrameBox(item.box))
|
|
993
|
+
continue;
|
|
994
|
+
const { x, y, width, height } = item.box;
|
|
995
|
+
boxes.push({ label: label ?? item.label, x, y, width, height, source, score: item.confidence });
|
|
992
996
|
}
|
|
993
|
-
}
|
|
997
|
+
};
|
|
998
|
+
add(data.objects, 'object');
|
|
999
|
+
if (data.facesAt !== undefined && capturedAt - data.facesAt <= SECONDARY_FRESH_MS)
|
|
1000
|
+
add(data.faces, 'face', 'face');
|
|
1001
|
+
if (data.platesAt !== undefined && capturedAt - data.platesAt <= SECONDARY_FRESH_MS)
|
|
1002
|
+
add(data.plates, 'plate', 'license_plate');
|
|
994
1003
|
// an unlabeled parked object in a training image teaches "background",
|
|
995
1004
|
// so suppressed static tracks ride along as pre-annotations
|
|
996
|
-
|
|
997
|
-
if (still.box && !isFullFrameBox(still.box)) {
|
|
998
|
-
boxes.push({ label: still.label, confidence: still.confidence, x: still.box.x, y: still.box.y, width: still.box.width, height: still.box.height });
|
|
999
|
-
}
|
|
1000
|
-
}
|
|
1005
|
+
add(data.staticObjects ?? [], 'static');
|
|
1001
1006
|
// same reason for sightings the event pipeline dropped (zones, label
|
|
1002
1007
|
// selection, track birth): visible in the picture all the same
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
}
|
|
1007
|
-
}
|
|
1008
|
-
this.training.consider(this.activeEvent.id, scene, boxes, capturedAt, data.trainingSubjects ?? []);
|
|
1008
|
+
add(data.trainingExtras ?? [], 'extra');
|
|
1009
|
+
add(data.trainingSuggestions ?? [], 'suggestion');
|
|
1010
|
+
this.training.consider(this.activeEvent.id, scene, boxes, capturedAt, data.trainingSubjects ?? [], data.trainingDetector);
|
|
1009
1011
|
}
|
|
1010
1012
|
sceneObservations(data, now) {
|
|
1011
1013
|
const seen = [];
|