@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.
Files changed (493) hide show
  1. package/LICENSE.md +8 -1
  2. package/dist/interface/assets/{404-BYV0u5qE.js → 404-C0X5UBF4.js} +1 -1
  3. package/dist/interface/assets/About-Ctp_u5qK.js +1 -0
  4. package/dist/interface/assets/Assistant-Bj2bAUHD.css +1 -0
  5. package/dist/interface/assets/Assistant-CDrBV_mg.js +1 -0
  6. package/dist/interface/assets/Automation-Dp6V80Iz.js +3 -0
  7. package/dist/interface/assets/{Automation-BSicfOGF.css → Automation-R5o9sXYY.css} +1 -1
  8. package/dist/interface/assets/{AutomationImport-Iu-K82Os.js → AutomationImport-DKgg7atE.js} +2 -2
  9. package/dist/interface/assets/AutomationStore-CU-m5VC8.js +2 -0
  10. package/dist/interface/assets/{AutomationStoreDetail-BbvLRJ5u.js → AutomationStoreDetail-CiyIs8Iu.js} +2 -2
  11. package/dist/interface/assets/Automations-Dljh-sWu.js +2 -0
  12. package/dist/interface/assets/Camera-0p0P_mbp.css +1 -0
  13. package/dist/interface/assets/Camera-Bvovab-8.js +2 -0
  14. package/dist/interface/assets/{CameraConsole-JBD3ZmJ6.js → CameraConsole-D_Fv-MAi.js} +1 -1
  15. package/dist/interface/assets/{Cameras-R5mJGMK9.js → Cameras-Cq7Gw-fk.js} +2 -2
  16. package/dist/interface/assets/{Camview-DH6_8CxH.css → Camview-Bs2VvmUS.css} +1 -1
  17. package/dist/interface/assets/Camview-CP6PA20C.js +1 -0
  18. package/dist/interface/assets/{CertificateUpload-B9S4EOQs.js → CertificateUpload-DjzNMFc3.js} +1 -1
  19. package/dist/interface/assets/{Config-CbFl5Wcp.js → Config-Dl2TlyFe.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionAssistant-DIOh6-np.js → ConfigActionAssistant-DCkJ_Iqq.js} +1 -1
  21. package/dist/interface/assets/ConfigActionCameraControl-2pzl59gR.js +1 -0
  22. package/dist/interface/assets/{ConfigActionDelay-B9i4YZjy.js → ConfigActionDelay-BAp1dr0N.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionHttp-DFtxAa3U.js → ConfigActionHttp-_kqgEuun.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionImageInput-CuTH4Nw2.js → ConfigActionImageInput-BgtACnCm.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionMqtt-B9SfWP-G.js → ConfigActionMqtt-z7UzccW5.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionNotification-BGMIByJT.js → ConfigActionNotification-bhbb5AqU.js} +1 -1
  27. package/dist/interface/assets/{ConfigActionNotificationControl-Cz72szMd.js → ConfigActionNotificationControl-BbvX8MFu.js} +1 -1
  28. package/dist/interface/assets/{ConfigActionOutput-BG6DoIRe.js → ConfigActionOutput-DdgSg3FU.js} +1 -1
  29. package/dist/interface/assets/{ConfigActionPlugin-B5oRSE9n.js → ConfigActionPlugin-DGjZd1L0.js} +1 -1
  30. package/dist/interface/assets/ConfigActionSensor-DmImWFAo.js +1 -0
  31. package/dist/interface/assets/{ConfigActionSnapshot-Di-uxMrg.js → ConfigActionSnapshot-hVHSfdtS.js} +1 -1
  32. package/dist/interface/assets/{ConfigActionVariable-BBpUti5A.js → ConfigActionVariable-BIpruwsx.js} +1 -1
  33. package/dist/interface/assets/{ConfigConditionIfElse-DjOKPXQw.js → ConfigConditionIfElse-DRSpsoR4.js} +1 -1
  34. package/dist/interface/assets/{ConfigConditionSensorState-BzvvZvD0.js → ConfigConditionSensorState-C2SNARH7.js} +1 -1
  35. package/dist/interface/assets/{ConfigConditionSwitch-DQvdfUxR.js → ConfigConditionSwitch-4SbQcU7N.js} +1 -1
  36. package/dist/interface/assets/{ConfigConditionTime-BqOElX5C.js → ConfigConditionTime-ESX3shbg.js} +1 -1
  37. package/dist/interface/assets/{ConfigSensorValueInput-BT-0LhSH.js → ConfigSensorValueInput-CTUdAA-R.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerDetection-1OkudUah.js → ConfigTriggerDetection-BRr6ixxQ.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerGeofence-HGatk3C5.js → ConfigTriggerGeofence-D-xRMGrT.js} +1 -1
  40. package/dist/interface/assets/{ConfigTriggerManual-DpRr_vVq.js → ConfigTriggerManual-aXD6k1qa.js} +1 -1
  41. package/dist/interface/assets/{ConfigTriggerMqtt-C_MId3BY.js → ConfigTriggerMqtt-pjHW4yOL.js} +1 -1
  42. package/dist/interface/assets/{ConfigTriggerSchedule-BmwDqd6N.js → ConfigTriggerSchedule-CYOt57qg.js} +1 -1
  43. package/dist/interface/assets/{ConfigTriggerSensor-Rgx8q4g8.js → ConfigTriggerSensor-BwJ_cAqd.js} +1 -1
  44. package/dist/interface/assets/{ConfigTriggerSystem-4VsHPmbn.js → ConfigTriggerSystem-DBXIrjzU.js} +1 -1
  45. package/dist/interface/assets/{ConfigTriggerWebhook-Bs7zEfY0.js → ConfigTriggerWebhook-CccBmMCb.js} +1 -1
  46. package/dist/interface/assets/Console-DWAaz1C6.js +1 -0
  47. package/dist/interface/assets/CuiAssistantConversation-B3xEiNNt.js +5 -0
  48. package/dist/interface/assets/{CuiAssistantConversation-BmBhwrNh.css → CuiAssistantConversation-C5ca1lgX.css} +1 -1
  49. package/dist/interface/assets/CuiAutomationRunsDialog-CfylVPLI.js +1 -0
  50. package/dist/interface/assets/CuiBottomSheet-ACN23VLS.js +1 -0
  51. package/dist/interface/assets/{CuiBottomSheet-Dd3uOtnC.js → CuiBottomSheet-DEVNeDqa.js} +1 -1
  52. package/dist/interface/assets/CuiCameraPipCard-rR_FW9zq.js +1 -0
  53. package/dist/interface/assets/CuiCameraRecordings-CnorhPhf.js +1 -0
  54. package/dist/interface/assets/CuiCameraShares-BxUgedC_.js +1 -0
  55. package/dist/interface/assets/{CuiCameraTable-C7WLZ2pA.js → CuiCameraTable-C3GB4Q2y.js} +2 -2
  56. package/dist/interface/assets/CuiCameraTable-MHfnZSyK.js +1 -0
  57. package/dist/interface/assets/CuiChartTable-TAzZgetO.js +1 -0
  58. package/dist/interface/assets/{CuiConsole-CkZML0iY.js → CuiConsole-Cf5lOCE1.js} +2 -2
  59. package/dist/interface/assets/{CuiDataTable-BFIhx1D3.js → CuiDataTable-DfjXa0C1.js} +1 -1
  60. package/dist/interface/assets/CuiLightControl-ChK-SvJp.js +1 -0
  61. package/dist/interface/assets/CuiList-C4fxd9lD.js +1 -0
  62. package/dist/interface/assets/CuiPluginCard-DMpANIQj.js +2 -0
  63. package/dist/interface/assets/CuiPluginCategoryChip-BKxJMid7.js +1 -0
  64. package/dist/interface/assets/{CuiPluginOAuthButton-BQZkTcgo.js → CuiPluginOAuthButton-DnQ838JJ.js} +2 -2
  65. package/dist/interface/assets/{CuiPluginTrustBadge-DbqdfdaL.js → CuiPluginTrustBadge-DyYDUWV6.js} +1 -1
  66. package/dist/interface/assets/{CuiQRCode-2WsWJQFi.js → CuiQRCode-S9fPi0_l.js} +1 -1
  67. package/dist/interface/assets/CuiSchema-DScmDQsh.js +1 -0
  68. package/dist/interface/assets/CuiTopNavbarItem-CT10aAlO.js +1 -0
  69. package/dist/interface/assets/Faces-Coy-tUVM.js +1 -0
  70. package/dist/interface/assets/FirstSteps-CrMJC049.js +1 -0
  71. package/dist/interface/assets/Floorplan-Bj_mVrxp.js +1 -0
  72. package/dist/interface/assets/{Floorplan-Ci63Zd8W.css → Floorplan-CT5TrMSD.css} +1 -1
  73. package/dist/interface/assets/Instances-B_mpKAng.js +1 -0
  74. package/dist/interface/assets/{Logs-DMehPk0t.js → Logs-fY1dpQk4.js} +2 -2
  75. package/dist/interface/assets/Menu-Bgi-NLdg.js +1 -0
  76. package/dist/interface/assets/Metrics-DnMeIrkf.css +1 -0
  77. package/dist/interface/assets/Metrics-k9KACiwh.js +12 -0
  78. package/dist/interface/assets/OAuthDeviceFlow-xTh83xmc.js +1 -0
  79. package/dist/interface/assets/Plugin-BB7x7UHw.css +1 -0
  80. package/dist/interface/assets/Plugin-VWq7sONB.js +1 -0
  81. package/dist/interface/assets/{PluginConsole-D1BRQCO9.js → PluginConsole-LnnDOVBL.js} +2 -2
  82. package/dist/interface/assets/PluginDetail-CKD9sbDx.js +2 -0
  83. package/dist/interface/assets/{PluginSchema-B9VsBHOU.js → PluginSchema-BnB0_6Sk.js} +1 -1
  84. package/dist/interface/assets/PluginSearch-BoBZLLbr.js +1 -0
  85. package/dist/interface/assets/PluginSearch-kGhweU1J.js +2 -0
  86. package/dist/interface/assets/{PluginUpdateProgress-uj0XPV-_.js → PluginUpdateProgress-DMx0QlgE.js} +1 -1
  87. package/dist/interface/assets/{Plugins-CPx9Hszm.js → Plugins-Ekmr6aVa.js} +1 -1
  88. package/dist/interface/assets/RecentEventsFilter-StLJNuks.js +1 -0
  89. package/dist/interface/assets/Recordings-8PqxJOI3.css +1 -0
  90. package/dist/interface/assets/Recordings-Bvkuk_TV.js +1 -0
  91. package/dist/interface/assets/SensorEdit-CAf9Nb01.js +1 -0
  92. package/dist/interface/assets/SensorHistory-il8bDErX.js +1 -0
  93. package/dist/interface/assets/Sensors-sxQ6HLKo.js +2 -0
  94. package/dist/interface/assets/Settings-Bu0G7Ebx.js +1 -0
  95. package/dist/interface/assets/{Settings-D7495zbV.css → Settings-DtCSaLPb.css} +1 -1
  96. package/dist/interface/assets/SettingsAccount-8OZJLQi-.js +1 -0
  97. package/dist/interface/assets/SettingsAccount-bSfFi9YH.js +1 -0
  98. package/dist/interface/assets/SettingsAppearance-CnvN_Tzr.js +1 -0
  99. package/dist/interface/assets/SettingsAppearance-EvPWgF4c.js +1 -0
  100. package/dist/interface/assets/SettingsAssistant-B6s6pHCx.js +1 -0
  101. package/dist/interface/assets/SettingsBackup-Dd2FaUcN.js +1 -0
  102. package/dist/interface/assets/SettingsList-SvCO_gfG.js +1 -0
  103. package/dist/interface/assets/SettingsMqtt-BXBzHX84.js +1 -0
  104. package/dist/interface/assets/SettingsNotifications-CV-jJwFV.js +1 -0
  105. package/dist/interface/assets/SettingsPermissions-GchFaWjz.js +1 -0
  106. package/dist/interface/assets/SettingsRecordings-C4Ch_jmV.js +1 -0
  107. package/dist/interface/assets/SettingsRemote-OZHDJKSq.js +2 -0
  108. package/dist/interface/assets/SettingsSystem-BJlHXwVs.js +2 -0
  109. package/dist/interface/assets/SettingsUsers-RGOkOzx0.js +1 -0
  110. package/dist/interface/assets/Terminal-DX-ECC91.js +4 -0
  111. package/dist/interface/assets/Training-B8my7vka.js +1 -0
  112. package/dist/interface/assets/Training-D1DDjCCD.css +1 -0
  113. package/dist/interface/assets/Updates-DmavyhAn.js +2 -0
  114. package/dist/interface/assets/{VariableInput-CcILik4M.js → VariableInput-DQJle67Y.js} +1 -1
  115. package/dist/interface/assets/{VariableSuggestions-Bj0HdrYW.js → VariableSuggestions-D8V739dF.js} +1 -1
  116. package/dist/interface/assets/{VersionsHandler-BA8Lcysg.js → VersionsHandler-B41TJhgY.js} +1 -1
  117. package/dist/interface/assets/{VirtualSensorCreate-DvHyw7I2.js → VirtualSensorCreate-MfLh-LpH.js} +1 -1
  118. package/dist/interface/assets/Workers-CafDeRhH.js +2 -0
  119. package/dist/interface/assets/api-By0v6EeA.css +2 -0
  120. package/dist/interface/assets/api-D1iULsSy.js +4 -0
  121. package/dist/interface/assets/{api-CKbL5jC7.js → api-DbUdfXO_.js} +1 -1
  122. package/dist/interface/assets/{assistant-CwmHp5bB.js → assistant-7hqP6OpA.js} +1 -1
  123. package/dist/interface/assets/{auth-AfZrkJ2f.js → auth-CDxrn7fe.js} +1 -1
  124. package/dist/interface/assets/{automations-DOCG0q8-.js → automations-CTTQlGCW.js} +1 -1
  125. package/dist/interface/assets/{cameraSources-mHEz9ROa.js → cameraSources-MOiE_1-W.js} +1 -1
  126. package/dist/interface/assets/cloudHandoff-CJzFH7CW.js +1 -0
  127. package/dist/interface/assets/{config-AG0SnOiY.js → config-6EiGxiYm.js} +1 -1
  128. package/dist/interface/assets/eventLabels-idFWh3Y_.js +1 -0
  129. package/dist/interface/assets/{flowSchema-B0d3VjU7.js → flowSchema-Dp_-p9WA.js} +1 -1
  130. package/dist/interface/assets/{intercomService-DG3EeZ6s.js → intercomService-BQYzjnAi.js} +1 -1
  131. package/dist/interface/assets/main-0oXl_8v7.js +3 -0
  132. package/dist/interface/assets/main-CdvAniEp.css +1 -0
  133. package/dist/interface/assets/mqtt-ChvXxMhR.js +1 -0
  134. package/dist/interface/assets/{notifications-8FH4ApEz.js → notifications-CbL-1oMs.js} +1 -1
  135. package/dist/interface/assets/{plugins-2JLUEMYc.js → plugins-lsoAntRQ.js} +1 -1
  136. package/dist/interface/assets/{rooms-DoAfzA8W.js → rooms-P8WrRIco.js} +1 -1
  137. package/dist/interface/assets/sensorIcons-BRTtoaHX.js +1 -0
  138. package/dist/interface/assets/{sensorSlots-biaL-O8E.js → sensorSlots-BTj-IM7z.js} +1 -1
  139. package/dist/interface/assets/{sensors-DyAMdS-H.js → sensors-Dxc7HgjZ.js} +1 -1
  140. package/dist/interface/assets/{server-BDRUGj61.js → server-DlK8gUoE.js} +1 -1
  141. package/dist/interface/assets/{theme-CLxrnR60.js → theme-BOppzzar.js} +1 -1
  142. package/dist/interface/assets/types-CeruGCb8.js +1 -0
  143. package/dist/interface/assets/{types-8JXzkoC8.js → types-J1Drrxo1.js} +1 -1
  144. package/dist/interface/assets/types-U4AuTNLR.js +1 -0
  145. package/dist/interface/assets/ungrouped-ING_JAuK.js +1 -0
  146. package/dist/interface/assets/{updates-F-veEP1I.js → updates-DtVp84Y0.js} +1 -1
  147. package/dist/interface/assets/{useAppVersion-BjUQmB7M.js → useAppVersion-BGgCk5GD.js} +1 -1
  148. package/dist/interface/assets/{useAssistantActions-CNEJol4o.js → useAssistantActions-C13O5EHU.js} +1 -1
  149. package/dist/interface/assets/useBackupRestore-vrhmc9i-.js +1 -0
  150. package/dist/interface/assets/{useCameraOptions-D_oduve2.js → useCameraOptions-CI1baRmm.js} +1 -1
  151. package/dist/interface/assets/{useKeyboardInset-CPWSVYlA.js → useKeyboardInset-CvgJp091.js} +1 -1
  152. package/dist/interface/assets/{useLogsSocket-B_jXUqv8.js → useLogsSocket-Bf0BI8ET.js} +1 -1
  153. package/dist/interface/assets/{useNavLayout-DEngIIeU.js → useNavLayout-6zM1Y-7B.js} +1 -1
  154. package/dist/interface/assets/{usePermissions-DAO92InI.js → usePermissions-DZitFsBQ.js} +1 -1
  155. package/dist/interface/assets/{usePluginUpdates-CJi8Y_wl.js → usePluginUpdates-VZdpJ_Ax.js} +1 -1
  156. package/dist/interface/assets/{usePushRegistration-j9WCeFbv.js → usePushRegistration-vcbMrTxZ.js} +1 -1
  157. package/dist/interface/assets/{useServerRestart-BVks5tuC.js → useServerRestart-DrpuNbIu.js} +1 -1
  158. package/dist/interface/assets/{useStreamStatus-DQ0NSyU8.js → useStreamStatus-l3Pfk1H4.js} +1 -1
  159. package/dist/interface/assets/{useTabSwipe-CVq7EcIY.js → useTabSwipe-BSpi25WV.js} +1 -1
  160. package/dist/interface/assets/{useUpdateChannel-C0fjDvNP.js → useUpdateChannel-kAl-5UNY.js} +1 -1
  161. package/dist/interface/assets/{useUpdatesSocket-DXKF9hzc.js → useUpdatesSocket-CaFz_fEb.js} +1 -1
  162. package/dist/interface/assets/{useUserOptions-UjMeAL5n.js → useUserOptions-BKteXnmU.js} +1 -1
  163. package/dist/interface/assets/vendor-cameraui-K1Nw4PvF.js +2326 -0
  164. package/dist/interface/assets/vendor-core-CJdfpB0I.js +1 -0
  165. package/dist/interface/assets/{vendor-primevue-Zx6t06A4.js → vendor-primevue-DoA2Rwcb.js} +871 -871
  166. package/dist/interface/assets/walk-B8FNhXuj.js +1 -0
  167. package/dist/interface/ha/{404-D5gfy0Cd.js → 404-RtgPpD9N.js} +1 -1
  168. package/dist/interface/ha/{About-JzlpCzBN.js → About-0PRv9bU0.js} +4 -4
  169. package/dist/interface/ha/{Assistant-DgOfGesf.js → Assistant-DbwxVfpl.js} +1021 -1021
  170. package/dist/interface/ha/{Automation-BDaWYiBu.js → Automation-D3HomdH7.js} +159 -155
  171. package/dist/interface/ha/{AutomationImport-BNB_PJ9R.js → AutomationImport-nQUUvZcv.js} +6 -6
  172. package/dist/interface/ha/{AutomationStore-_TeOt1wz.js → AutomationStore-BXDD92wZ.js} +8 -8
  173. package/dist/interface/ha/{AutomationStoreDetail-jjIEZoRi.js → AutomationStoreDetail-BYeq7FID.js} +19 -19
  174. package/dist/interface/ha/{Automations-DM6FEVOw.js → Automations-CJlGqmSP.js} +74 -74
  175. package/dist/interface/ha/Camera-Ai4BxVh_.js +747 -0
  176. package/dist/interface/ha/{CameraConsole-BoVql05l.js → CameraConsole-UMNOX3dE.js} +4 -4
  177. package/dist/interface/ha/{Cameras-cQBGvXq7.js → Cameras-BW-AEXYi.js} +266 -266
  178. package/dist/interface/ha/{Camview-mkG5FXZM.js → Camview-jikpVEE0.js} +195 -194
  179. package/dist/interface/ha/{Config-BNPDzo_h.js → Config-BOxwBH2D.js} +111 -111
  180. package/dist/interface/ha/{ConfigActionAssistant-C-8P3DYz.js → ConfigActionAssistant--3iWk9sq.js} +4 -4
  181. package/dist/interface/ha/{ConfigActionCameraControl-x1ksGL7m.js → ConfigActionCameraControl-DbVXWTeA.js} +3 -3
  182. package/dist/interface/ha/{ConfigActionHttp-DzCJp85z.js → ConfigActionHttp-Du3n2Yj0.js} +2 -2
  183. package/dist/interface/ha/{ConfigActionImageInput-C5C5U_2z.js → ConfigActionImageInput-BrJrTZTY.js} +4 -4
  184. package/dist/interface/ha/{ConfigActionMqtt-T29xb75r.js → ConfigActionMqtt-DZd1BNUt.js} +4 -4
  185. package/dist/interface/ha/{ConfigActionNotification-BcnyilF9.js → ConfigActionNotification-CJWW10gt.js} +3 -3
  186. package/dist/interface/ha/{ConfigActionNotificationControl-D3wIVKuU.js → ConfigActionNotificationControl-Bl41AVv1.js} +2 -2
  187. package/dist/interface/ha/{ConfigActionOutput-hD-yVczw.js → ConfigActionOutput-OTj7Lwgq.js} +1 -1
  188. package/dist/interface/ha/{ConfigActionPlugin-Bz1O-O4Q.js → ConfigActionPlugin-B790PEk0.js} +8 -8
  189. package/dist/interface/ha/{ConfigActionSensor-FOz-PYl_.js → ConfigActionSensor-BG3jZxge.js} +5 -5
  190. package/dist/interface/ha/{ConfigActionSnapshot-CmxEOuK1.js → ConfigActionSnapshot-fGmLl6jb.js} +2 -2
  191. package/dist/interface/ha/{ConfigActionVariable-BCvkrdCh.js → ConfigActionVariable-CK3vYDsr.js} +1 -1
  192. package/dist/interface/ha/{ConfigConditionIfElse-icfTG9OA.js → ConfigConditionIfElse-DyFLGg3y.js} +3 -3
  193. package/dist/interface/ha/{ConfigConditionSensorState-ClUAsm0d.js → ConfigConditionSensorState-BUTfeFO2.js} +7 -7
  194. package/dist/interface/ha/{ConfigConditionSwitch-C8AMCkn6.js → ConfigConditionSwitch-iDG_ubif.js} +5 -5
  195. package/dist/interface/ha/{ConfigSensorValueInput-ChvDQzGd.js → ConfigSensorValueInput-BmRIGUKB.js} +5 -5
  196. package/dist/interface/ha/{ConfigTriggerDetection-aUSyaClu.js → ConfigTriggerDetection-DyPQGt9M.js} +24 -24
  197. package/dist/interface/ha/{ConfigTriggerGeofence-DsJeJWP4.js → ConfigTriggerGeofence-CGE-bH_t.js} +6 -6
  198. package/dist/interface/ha/{ConfigTriggerMqtt-CsAxA7QZ.js → ConfigTriggerMqtt-CM3KZqBc.js} +1 -1
  199. package/dist/interface/ha/{ConfigTriggerSensor-CTxr9cfU.js → ConfigTriggerSensor-DoHMcwP4.js} +1 -1
  200. package/dist/interface/ha/{ConfigTriggerSystem-C8UEfpfs.js → ConfigTriggerSystem-BYKbW4Zr.js} +2 -2
  201. package/dist/interface/ha/{ConfigTriggerWebhook-frEE-SCB.js → ConfigTriggerWebhook-5PBAadG8.js} +2 -2
  202. package/dist/interface/ha/{Console-A3VtbsLg.js → Console-BEXzl4p1.js} +7 -7
  203. package/dist/interface/ha/{CuiAutomationRunsDialog-BlJvhBiX.js → CuiAutomationRunsDialog-DkK_ar5G.js} +3 -3
  204. package/dist/interface/ha/{CuiBottomSheet-Cu-t3H0Z.js → CuiBottomSheet-CYNvQV4T.js} +2 -2
  205. package/dist/interface/ha/{CuiCameraRecordings-R5ArEmqJ.js → CuiCameraRecordings-DYjecmE_.js} +30 -48
  206. package/dist/interface/ha/{CuiCameraShares-B9pfRkM4.js → CuiCameraShares-C0H60nZS.js} +7 -7
  207. package/dist/interface/ha/{CuiCameraTable-CKjGKaMC.js → CuiCameraTable-CQNMyBaq.js} +5 -5
  208. package/dist/interface/ha/{CuiChartTable-BxWjRe-k.js → CuiChartTable-Bhv1p9zj.js} +1161 -1161
  209. package/dist/interface/ha/{CuiConsole-C5fzsR7t.js → CuiConsole-DtXorGF5.js} +20 -20
  210. package/dist/interface/ha/{CuiDataTable-BOdQDY8J.js → CuiDataTable-Cy8EjCk9.js} +7 -7
  211. package/dist/interface/ha/{CuiList-CU2NJ1K6.js → CuiList-DnW6Q5m2.js} +1 -1
  212. package/dist/interface/ha/{CuiPluginCard-BT71RRAD.js → CuiPluginCard-B4SCUblV.js} +125 -125
  213. package/dist/interface/ha/{CuiPluginOAuthButton-moh9uS7G.js → CuiPluginOAuthButton-BKg9SftQ.js} +5 -5
  214. package/dist/interface/ha/{CuiPluginTrustBadge-F_pVWkPJ.js → CuiPluginTrustBadge-CEtUJhCJ.js} +1 -1
  215. package/dist/interface/ha/{CuiQRCode-BNuj-nJ4.js → CuiQRCode-gp-9hqyk.js} +7 -7
  216. package/dist/interface/ha/{CuiSchema-Cb_8Ks-I.js → CuiSchema-CYpr_dD7.js} +161 -161
  217. package/dist/interface/ha/{CuiTopNavbarItem-BGzrrTls.js → CuiTopNavbarItem-CM-1oPxf.js} +1 -1
  218. package/dist/interface/ha/Faces-pa60ySng.js +1575 -0
  219. package/dist/interface/ha/{FirstSteps-BFX0-EEi.js → FirstSteps-D42yZm7R.js} +68 -68
  220. package/dist/interface/ha/{Floorplan-D6MGqSJT.js → Floorplan-BvE546pE.js} +512 -511
  221. package/dist/interface/ha/{Instances-CHzIUyyA.js → Instances-CAGCyfbB.js} +64 -64
  222. package/dist/interface/ha/{Logs-DZKM3dWv.js → Logs-RB3Ba8WM.js} +12 -12
  223. package/dist/interface/ha/{Menu-BQz4dfQi.js → Menu-hAnHu_jq.js} +17 -17
  224. package/dist/interface/ha/{Metrics-CdpWJ1mm.js → Metrics-ChYTebkX.js} +94 -93
  225. package/dist/interface/ha/{OAuthDeviceFlow-DUELtx3X.js → OAuthDeviceFlow-C05pH-9o.js} +3 -3
  226. package/dist/interface/ha/{Plugin-5bbTF0Rv.js → Plugin-D7XwcXkW.js} +647 -439
  227. package/dist/interface/ha/{PluginConsole-C__0lzsS.js → PluginConsole-DphEIOlL.js} +4 -4
  228. package/dist/interface/ha/{PluginDetail-Blrktk9W.js → PluginDetail-DfMl-yCl.js} +9 -9
  229. package/dist/interface/ha/{PluginSearch-BKbdwHQ1.js → PluginSearch-BPN4Opg5.js} +34 -34
  230. package/dist/interface/ha/{PluginUpdateProgress-IsNiecu3.js → PluginUpdateProgress-ByJ0R5sW.js} +3 -3
  231. package/dist/interface/ha/{Plugins-CC2Dwlx5.js → Plugins-BhKmjjNn.js} +59 -59
  232. package/dist/interface/ha/{RecentEventsFilter-9ZkDHD1g.js → RecentEventsFilter-BkLMlGVJ.js} +5 -6
  233. package/dist/interface/ha/Recordings-BaU7M1OW.js +1836 -0
  234. package/dist/interface/ha/{SensorEdit-Bi2Yx_ji.js → SensorEdit-DWxcCJ0F.js} +88 -88
  235. package/dist/interface/ha/{SensorHistory-sqG_6eav.js → SensorHistory-DuA9E9wT.js} +2 -2
  236. package/dist/interface/ha/{Sensors-DLtOh1p4.js → Sensors-CVpIHcgG.js} +438 -435
  237. package/dist/interface/ha/{Settings-DI3_zenm.js → Settings-BO2eBGEn.js} +61 -61
  238. package/dist/interface/ha/{SettingsAccount-pS86Qyr-.js → SettingsAccount-BQZZfoSM.js} +255 -255
  239. package/dist/interface/ha/{SettingsAppearance-tS3bubKQ.js → SettingsAppearance-B_yGl89u.js} +16 -16
  240. package/dist/interface/ha/{SettingsAssistant-LejCRXsF.js → SettingsAssistant-kMOixl9g.js} +501 -501
  241. package/dist/interface/ha/{SettingsBackup-CkhD1Kze.js → SettingsBackup-BpG-W4j-.js} +24 -24
  242. package/dist/interface/ha/{SettingsList-bibwvPSM.js → SettingsList-Btnkzu94.js} +6 -6
  243. package/dist/interface/ha/{SettingsMqtt-DSt0B4Qg.js → SettingsMqtt-C4DX9cNC.js} +23 -23
  244. package/dist/interface/ha/{SettingsNotifications-BF7ajNwE.js → SettingsNotifications-DI6ImggH.js} +6 -6
  245. package/dist/interface/ha/{SettingsPermissions-Jh0FuIF7.js → SettingsPermissions-BCDyCFcb.js} +2 -2
  246. package/dist/interface/ha/{SettingsRecordings-BTIdncxg.js → SettingsRecordings-Bq5NkJhd.js} +10 -10
  247. package/dist/interface/ha/{SettingsRemote-Cba4P1-O.js → SettingsRemote-CtncaPIA.js} +308 -308
  248. package/dist/interface/ha/{SettingsSystem-_Nnh2ZF5.js → SettingsSystem-BJXuA7xA.js} +11 -11
  249. package/dist/interface/ha/{SettingsUsers-BfHFoxJi.js → SettingsUsers-BF0rDluv.js} +91 -91
  250. package/dist/interface/ha/{Terminal-Dv_7oWmS.js → Terminal-kTCe2jP3.js} +11 -11
  251. package/dist/interface/ha/Training-BM2Xb8Ef.js +1754 -0
  252. package/dist/interface/ha/{Updates-BHl5H7zE.js → Updates-Cv1EY_T0.js} +6 -6
  253. package/dist/interface/ha/{VariableInput-DtLo7-Nw.js → VariableInput-BO2zZu4N.js} +1 -1
  254. package/dist/interface/ha/{VersionsHandler-CF0DSeol.js → VersionsHandler-CRnT9-K7.js} +10 -10
  255. package/dist/interface/ha/{VirtualSensorCreate-C907EgIz.js → VirtualSensorCreate-6dVRxPjw.js} +8 -8
  256. package/dist/interface/ha/{Workers-Dz1d9gEQ.js → Workers-MHia86lu.js} +97 -97
  257. package/dist/interface/ha/{api-DUqpDJ2N.js → api-CH_Y8Hee.js} +17459 -14633
  258. package/dist/interface/ha/{api-gId1nlMj.js → api-DylRa66V.js} +3 -3
  259. package/dist/interface/ha/{assistant-BaR65gIY.js → assistant-smRQYA6p.js} +53 -53
  260. package/dist/interface/ha/{auth-Btsz_KxO.js → auth-BXj5Fm6s.js} +38 -38
  261. package/dist/interface/ha/{automationBlueprint-CuO3iOiM.js → automationBlueprint-DGjftXFC.js} +4 -4
  262. package/dist/interface/ha/cameraui-cards.js +1 -1
  263. package/dist/interface/ha/{cards-DWhezIPP.js → cards-E0zw1UVg.js} +114 -113
  264. package/dist/interface/ha/{config-BKStpoEQ.js → config-dG_DA6XL.js} +16 -16
  265. package/dist/interface/ha/{dist-CM7R4_Gj.js → dist-BQf9ANPx.js} +77 -77
  266. package/dist/interface/ha/{dist-BIngHzHx.js → dist-euRmladF.js} +4 -4
  267. package/dist/interface/ha/{eventIcons-BFNUgeGr.js → eventLabels-B5GrM5jO.js} +291 -233
  268. package/dist/interface/ha/{intercomService-B7HkLs6z.js → intercomService-BtJ_zUNd.js} +250 -264
  269. package/dist/interface/ha/{mqtt-ajcSmTB-.js → mqtt-CP3vVkRJ.js} +12 -12
  270. package/dist/interface/ha/{notifications-Cf9dXHEO.js → notifications-CZNwSXTg.js} +22 -22
  271. package/dist/interface/ha/{pinia-DIKO5lnE.js → pinia-CVnHHb-s.js} +533 -501
  272. package/dist/interface/ha/{plugins-ml823dJV.js → plugins--eatOIaI.js} +66 -66
  273. package/dist/interface/ha/{protocol-BB4jdtUC-DW3jl2tV.js → protocol-BB4jdtUC-BhEwymva.js} +129 -48
  274. package/dist/interface/ha/{rooms-C5gUErBi.js → rooms-D5E6K75d.js} +8 -8
  275. package/dist/interface/ha/{server-dArenpJI.js → server-D1BqEY7i.js} +31 -31
  276. package/dist/interface/ha/{types-DYymuACA.js → types-CWogEoya.js} +36 -36
  277. package/dist/interface/ha/ungrouped-Ch4UX4dy.js +58 -0
  278. package/dist/interface/ha/{updates-D5sFzGtC.js → updates-B48Owi1w.js} +28 -28
  279. package/dist/interface/ha/{useAppVersion-C5x3Ap4_.js → useAppVersion-D95sKTJR.js} +2 -2
  280. package/dist/interface/ha/{useAssistantActions-S1FrNe9b.js → useAssistantActions-kDwiO-u5.js} +1 -1
  281. package/dist/interface/ha/{useKeyboardInset-Cj0T2AFX.js → useKeyboardInset-C2R51vsC.js} +1 -1
  282. package/dist/interface/ha/{useLogsSocket-DtvfQlPh.js → useLogsSocket-BzNWa2y2.js} +1 -1
  283. package/dist/interface/ha/{useNavLayout-HSFBA4JV.js → useNavLayout-228cwwqA.js} +19 -19
  284. package/dist/interface/ha/{usePermissions-DaE_wFch.js → usePermissions-CfA5x7Df.js} +1 -1
  285. package/dist/interface/ha/{useServerRestart-Ci0SppGW.js → useServerRestart-B0c40zs5.js} +1 -1
  286. package/dist/interface/ha/{useTabSwipe-CPKkRmaH.js → useTabSwipe-CfZg5hWj.js} +2 -2
  287. package/dist/interface/ha/{useUpdateChannel-CXHHovK3.js → useUpdateChannel-DQxI7FrD.js} +2 -2
  288. package/dist/interface/ha/{useUpdatesSocket-DVST2YXV.js → useUpdatesSocket-B8LqBBd3.js} +1 -1
  289. package/dist/interface/ha/{useUserOptions-BYcYI6QA.js → useUserOptions-dZf6ejlz.js} +1 -1
  290. package/dist/interface/ha/walk-CsSXaeJw.js +33 -0
  291. package/dist/interface/index.html +35 -36
  292. package/dist/interface/sw.js +1 -1
  293. package/dist/interface/workbox-5f52ac45.js +1 -0
  294. package/dist/server/package.json +11 -11
  295. package/dist/server/requirements.txt +2 -2
  296. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +22 -0
  297. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +4 -0
  298. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/__init__.py +10 -0
  299. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/contract.py +6 -0
  300. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/interfaces.py +92 -4
  301. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +16 -0
  302. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +4 -0
  303. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/face_embedder.py +1 -1
  304. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/object.py +3 -3
  305. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/person_embedder.py +65 -0
  306. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/segmenter.py +81 -0
  307. package/dist/server/src/api/database/index.d.ts +2 -1
  308. package/dist/server/src/api/database/index.js +31 -7
  309. package/dist/server/src/api/database/index.js.map +1 -1
  310. package/dist/server/src/api/database/migrations/v2-2-9.d.ts +3 -0
  311. package/dist/server/src/api/database/migrations/v2-2-9.js +28 -0
  312. package/dist/server/src/api/database/migrations/v2-2-9.js.map +1 -0
  313. package/dist/server/src/api/database/record-schemas.d.ts +1 -1
  314. package/dist/server/src/api/database/types.d.ts +17 -1
  315. package/dist/server/src/api/schemas/assistant.schema.d.ts +1 -1
  316. package/dist/server/src/api/schemas/cameras.schema.d.ts +140 -76
  317. package/dist/server/src/api/schemas/cameras.schema.js +4 -2
  318. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  319. package/dist/server/src/api/schemas/training.schema.d.ts +15 -3
  320. package/dist/server/src/api/schemas/training.schema.js +4 -1
  321. package/dist/server/src/api/schemas/training.schema.js.map +1 -1
  322. package/dist/server/src/api/websocket/nsp/worker-perf.js +2 -0
  323. package/dist/server/src/api/websocket/nsp/worker-perf.js.map +1 -1
  324. package/dist/server/src/api/websocket/types.d.ts +1 -0
  325. package/dist/server/src/assistant/search.d.ts +17 -0
  326. package/dist/server/src/assistant/search.js +10 -2
  327. package/dist/server/src/assistant/search.js.map +1 -1
  328. package/dist/server/src/assistant/tools/plugins.js +7 -3
  329. package/dist/server/src/assistant/tools/plugins.js.map +1 -1
  330. package/dist/server/src/assistant/types.d.ts +2 -0
  331. package/dist/server/src/automations/actions/plugin.js +5 -9
  332. package/dist/server/src/automations/actions/plugin.js.map +1 -1
  333. package/dist/server/src/automations/pluginMethodRegistry.d.ts +6 -0
  334. package/dist/server/src/automations/pluginMethodRegistry.js +39 -0
  335. package/dist/server/src/automations/pluginMethodRegistry.js.map +1 -1
  336. package/dist/server/src/automations/segment-picture.d.ts +16 -0
  337. package/dist/server/src/automations/segment-picture.js +152 -0
  338. package/dist/server/src/automations/segment-picture.js.map +1 -0
  339. package/dist/server/src/camera/decoder/detection-coordinator.d.ts +5 -2
  340. package/dist/server/src/camera/decoder/detection-coordinator.js +45 -22
  341. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  342. package/dist/server/src/camera/decoder/detection-pipeline.d.ts +30 -2
  343. package/dist/server/src/camera/decoder/detection-pipeline.js +81 -21
  344. package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
  345. package/dist/server/src/camera/decoder/event-manager.d.ts +12 -2
  346. package/dist/server/src/camera/decoder/event-manager.js +77 -75
  347. package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
  348. package/dist/server/src/camera/decoder/event-trace.d.ts +41 -1
  349. package/dist/server/src/camera/decoder/event-trace.js +63 -8
  350. package/dist/server/src/camera/decoder/event-trace.js.map +1 -1
  351. package/dist/server/src/camera/decoder/face-tracks.d.ts +26 -0
  352. package/dist/server/src/camera/decoder/face-tracks.js +199 -0
  353. package/dist/server/src/camera/decoder/face-tracks.js.map +1 -0
  354. package/dist/server/src/camera/decoder/frame-scaler.d.ts +3 -1
  355. package/dist/server/src/camera/decoder/frame-scaler.js +36 -8
  356. package/dist/server/src/camera/decoder/frame-scaler.js.map +1 -1
  357. package/dist/server/src/camera/decoder/nvr-sink.d.ts +6 -0
  358. package/dist/server/src/camera/decoder/nvr-sink.js +1 -1
  359. package/dist/server/src/camera/decoder/nvr-sink.js.map +1 -1
  360. package/dist/server/src/camera/decoder/perf-tracker.d.ts +2 -0
  361. package/dist/server/src/camera/decoder/perf-tracker.js +4 -0
  362. package/dist/server/src/camera/decoder/perf-tracker.js.map +1 -1
  363. package/dist/server/src/camera/decoder/ptz/autotracker.d.ts +6 -1
  364. package/dist/server/src/camera/decoder/ptz/autotracker.js +107 -25
  365. package/dist/server/src/camera/decoder/ptz/autotracker.js.map +1 -1
  366. package/dist/server/src/camera/decoder/secondary-stage.d.ts +10 -8
  367. package/dist/server/src/camera/decoder/secondary-stage.js +145 -125
  368. package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
  369. package/dist/server/src/camera/decoder/training-sink.d.ts +5 -2
  370. package/dist/server/src/camera/decoder/training-sink.js +30 -6
  371. package/dist/server/src/camera/decoder/training-sink.js.map +1 -1
  372. package/dist/server/src/camera/decoder/types.d.ts +6 -2
  373. package/dist/server/src/camera/decoder/types.js +4 -2
  374. package/dist/server/src/camera/decoder/types.js.map +1 -1
  375. package/dist/server/src/manager/trainingCandidateManager.d.ts +2 -1
  376. package/dist/server/src/manager/trainingCandidateManager.js +25 -3
  377. package/dist/server/src/manager/trainingCandidateManager.js.map +1 -1
  378. package/dist/server/src/manager/trainingSubmission.d.ts +5 -0
  379. package/dist/server/src/manager/trainingSubmission.js +73 -0
  380. package/dist/server/src/manager/trainingSubmission.js.map +1 -0
  381. package/dist/server/src/manager/types.d.ts +8 -2
  382. package/dist/server/src/manager/types.js.map +1 -1
  383. package/dist/server/src/plugins/runtime/python/proxy/sensor.py +2 -0
  384. package/dist/server/src/remote/api/routes/train.d.ts +44 -3
  385. package/dist/server/src/remote/api/routes/train.js +2 -2
  386. package/dist/server/src/remote/api/routes/train.js.map +1 -1
  387. package/dist/server/src/rpc/interfaces/core.d.ts +6 -2
  388. package/dist/server/src/rpc/interfaces/detection.d.ts +20 -3
  389. package/dist/server/src/rpc/server.d.ts +2 -0
  390. package/dist/server/src/rpc/server.js +8 -5
  391. package/dist/server/src/rpc/server.js.map +1 -1
  392. package/dist/server/src/sensors/registry.d.ts +1 -0
  393. package/dist/server/src/sensors/registry.js +20 -11
  394. package/dist/server/src/sensors/registry.js.map +1 -1
  395. package/dist/server/src/sensors/types.d.ts +1 -0
  396. package/dist/server/src/sensors/types.js +3 -0
  397. package/dist/server/src/sensors/types.js.map +1 -1
  398. package/dist/server/src/services/config/index.d.ts +1 -0
  399. package/dist/server/src/services/config/index.js +2 -0
  400. package/dist/server/src/services/config/index.js.map +1 -1
  401. package/dist/server/src/utils/image.d.ts +6 -0
  402. package/dist/server/src/utils/image.js +58 -22
  403. package/dist/server/src/utils/image.js.map +1 -1
  404. package/npm-shrinkwrap.json +115 -74
  405. package/package.json +11 -11
  406. package/dist/interface/assets/About-DBOS1rfw.js +0 -1
  407. package/dist/interface/assets/Assistant-BQ6Ld-bt.css +0 -1
  408. package/dist/interface/assets/Assistant-BRcHj8hq.js +0 -1
  409. package/dist/interface/assets/Automation-C0Emde7z.js +0 -3
  410. package/dist/interface/assets/AutomationStore-C2G0Bk8c.js +0 -2
  411. package/dist/interface/assets/Automations-D-vfqRnZ.js +0 -2
  412. package/dist/interface/assets/Camera-BpurrgAr.js +0 -2
  413. package/dist/interface/assets/Camera-D0B7yyVD.css +0 -1
  414. package/dist/interface/assets/Camview-IbOVRx20.js +0 -1
  415. package/dist/interface/assets/ConfigActionCameraControl-Bw_egtpP.js +0 -1
  416. package/dist/interface/assets/ConfigActionSensor-BErRRYfl.js +0 -1
  417. package/dist/interface/assets/Console-oCuuVKET.js +0 -1
  418. package/dist/interface/assets/CuiAssistantConversation-Bsyxau9v.js +0 -5
  419. package/dist/interface/assets/CuiAutomationRunsDialog-sRh_K6JI.js +0 -1
  420. package/dist/interface/assets/CuiBottomSheet-DWoSHzC7.js +0 -1
  421. package/dist/interface/assets/CuiCameraPipCard-D6REm8uT.js +0 -1
  422. package/dist/interface/assets/CuiCameraRecordings-C2tvrbbw.js +0 -1
  423. package/dist/interface/assets/CuiCameraShares-jrrUEHoZ.js +0 -1
  424. package/dist/interface/assets/CuiCameraTable-BOzTWLwd.js +0 -1
  425. package/dist/interface/assets/CuiChartTable-BYrIX7LV.js +0 -1
  426. package/dist/interface/assets/CuiLightControl-DitIWqUr.js +0 -1
  427. package/dist/interface/assets/CuiList-BewTNr2X.js +0 -1
  428. package/dist/interface/assets/CuiPluginCard-Bd2HFduI.js +0 -2
  429. package/dist/interface/assets/CuiPluginCategoryChip-DlzOwRgc.js +0 -1
  430. package/dist/interface/assets/CuiSchema-BL0QZmP2.js +0 -1
  431. package/dist/interface/assets/CuiTopNavbarItem-Ti2TueU1.js +0 -1
  432. package/dist/interface/assets/Faces-DARrGLXf.js +0 -1
  433. package/dist/interface/assets/FirstSteps-DBYPBvGr.js +0 -1
  434. package/dist/interface/assets/Floorplan-BaZvzoyv.js +0 -1
  435. package/dist/interface/assets/Instances-r0xReURi.js +0 -1
  436. package/dist/interface/assets/Menu-C34RRyLd.js +0 -1
  437. package/dist/interface/assets/Metrics-BjoC71_O.js +0 -12
  438. package/dist/interface/assets/Metrics-DsHBab6t.css +0 -1
  439. package/dist/interface/assets/OAuthDeviceFlow-CdZxelf2.js +0 -1
  440. package/dist/interface/assets/Plugin-Qr_Q_Qfi.css +0 -1
  441. package/dist/interface/assets/Plugin-npx7CnwV.js +0 -1
  442. package/dist/interface/assets/PluginDetail-nwTrJmO6.js +0 -2
  443. package/dist/interface/assets/PluginSearch-CP2kQWKf.js +0 -1
  444. package/dist/interface/assets/PluginSearch-WEvbKMRs.js +0 -2
  445. package/dist/interface/assets/RecentEventsFilter-D5VSH2K1.js +0 -1
  446. package/dist/interface/assets/Recordings-BEKAn6QK.css +0 -1
  447. package/dist/interface/assets/Recordings-De6Zcv0M.js +0 -1
  448. package/dist/interface/assets/SensorEdit-SD_oHBRo.js +0 -1
  449. package/dist/interface/assets/SensorHistory-SxiLOloa.js +0 -1
  450. package/dist/interface/assets/Sensors-Djl64M-W.js +0 -2
  451. package/dist/interface/assets/Settings-CAf2reGs.js +0 -1
  452. package/dist/interface/assets/SettingsAccount-BGj5Ni91.js +0 -1
  453. package/dist/interface/assets/SettingsAccount-Dy6WC8ql.js +0 -1
  454. package/dist/interface/assets/SettingsAppearance-BGFhMlRk.js +0 -1
  455. package/dist/interface/assets/SettingsAppearance-DQzQmVzE.js +0 -1
  456. package/dist/interface/assets/SettingsAssistant-BwYVyuN3.js +0 -1
  457. package/dist/interface/assets/SettingsBackup-CVExGnOo.js +0 -1
  458. package/dist/interface/assets/SettingsList-vo7sz_MY.js +0 -1
  459. package/dist/interface/assets/SettingsMqtt-B1CuOcML.js +0 -1
  460. package/dist/interface/assets/SettingsNotifications-CCQ6eiq8.js +0 -1
  461. package/dist/interface/assets/SettingsPermissions-BlOf6HEy.js +0 -1
  462. package/dist/interface/assets/SettingsRecordings-7tTBg6m1.js +0 -1
  463. package/dist/interface/assets/SettingsRemote-DBgKmIdv.js +0 -2
  464. package/dist/interface/assets/SettingsSystem-DaFMsZpN.js +0 -2
  465. package/dist/interface/assets/SettingsUsers-DXACwVPi.js +0 -1
  466. package/dist/interface/assets/Terminal-DtGqlHbk.js +0 -4
  467. package/dist/interface/assets/Training-C-ToeAl4.css +0 -1
  468. package/dist/interface/assets/Training-Ca11D1Vj.js +0 -1
  469. package/dist/interface/assets/Updates-yenwuqnD.js +0 -2
  470. package/dist/interface/assets/Workers-Dyo44zxe.js +0 -2
  471. package/dist/interface/assets/api-CHQlxVtZ.css +0 -2
  472. package/dist/interface/assets/api-CLazgL-g.js +0 -4
  473. package/dist/interface/assets/cloudHandoff-zJCrDmwk.js +0 -1
  474. package/dist/interface/assets/eventIcons-C3JWChgS.js +0 -1
  475. package/dist/interface/assets/eventLabels-BsPoPWS9.js +0 -1
  476. package/dist/interface/assets/main-CGY9cVyi.css +0 -1
  477. package/dist/interface/assets/main-DkHV6YgB.js +0 -3
  478. package/dist/interface/assets/mqtt-DE2VbNdt.js +0 -1
  479. package/dist/interface/assets/sensorIcons-BntiOPX7.js +0 -1
  480. package/dist/interface/assets/types-B4LLKzDW.js +0 -1
  481. package/dist/interface/assets/types-a7Nw-P-m.js +0 -1
  482. package/dist/interface/assets/ungrouped-BoAbb9w3.js +0 -1
  483. package/dist/interface/assets/ungrouped-ChmBvcXp.css +0 -1
  484. package/dist/interface/assets/useBackupRestore-Biqn_lhh.js +0 -1
  485. package/dist/interface/assets/vendor-cameraui-GmMRyJ2R.js +0 -2326
  486. package/dist/interface/assets/vendor-core-BeAannbA.js +0 -1
  487. package/dist/interface/ha/Camera-sH9fRv18.js +0 -670
  488. package/dist/interface/ha/Faces-CsM5VO8Q.js +0 -1441
  489. package/dist/interface/ha/Recordings-B1XsJrzs.js +0 -1539
  490. package/dist/interface/ha/Training-CaSFA5oH.js +0 -1699
  491. package/dist/interface/ha/eventLabels-B4C1_4vT.js +0 -42
  492. package/dist/interface/ha/ungrouped-BHLAySWP.js +0 -1312
  493. 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 TRAINING_MIN_CONFIDENCE = 0.5;
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: this.collectTrainingExtras(rawDetections, tracked, staticTracks),
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
- this.world.setMinConfidences(settings.object.confidences);
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
- collectTrainingExtras(rawDetections, tracked, staticTracks) {
301
- const candidates = rawDetections.filter((d) => d.confidence >= TRAINING_MIN_CONFIDENCE);
302
- if (candidates.length === 0)
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 extras = [];
306
- for (const flat of this.runNmsAndMergeFlat(candidates)) {
307
- const detection = fromRustDetection(flat);
308
- const box = detection.box;
309
- if (!box)
310
- continue;
311
- if (this.trainingMasks.some((mask) => boxInsidePolygon(box, mask)))
312
- continue;
313
- if (output.some((t) => t.label === detection.label && iou(t.box, box) >= TRAINING_COVERED_IOU))
314
- continue;
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":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,SAAS,EAAE,GAAG,IAAI,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE9H,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA0B9C,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,wBAAwB,GAAG,IAAI,CAAC;AACtC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AACzC,MAAM,wBAAwB,GAAqB,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1F,MAAM,0BAA0B,GAAG,IAAI,CAAC;AACxC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AACzC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AA6BtC,SAAS,eAAe,CAAC,GAAc;IACrC,OAAO;QACL,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACZ,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK;QACpB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM;QACtB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAkB;IAC3C,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,KAAuB;QAClC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,GAAG,EAAE;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,GAAgB;IACvC,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,KAAuB;QAClC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,GAAG,EAAE;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB;QACD,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,GAAG,CAAC,KAAK;QACrB,aAAa,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE;QACrD,GAAG,CAAC,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3F,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,0EAA0E;AAC1E,SAAS,eAAe,CAAC,KAAoB;IAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB;IACpC,MAAM,GAAG,GAAwB,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACjC,iEAAiE;QACjE,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,SAAS;QACnC,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,SAAwC;YAChD,SAAS,EAAE,WAA6C;YACxD,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,CAAC,QAAQ,CAAC;YAClB,MAAM,EAAE,SAAwC;YAChD,SAAS,EAAE,WAA6C;YACxD,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,SAAwC;YAChD,SAAS,EAAE,IAAI,CAAC,IAAsC;YACtD,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,KAAmB;IAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,kFAAkF;IAClF,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,KAAsB;IACzC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAA2C;QAC3D,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE;YACN,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACvC;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA4B,EAAE,MAAgC;IACtF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,GAAG,EAAE,MAAM,IAAI,CAAC,CAAC;IAC3B,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAgC;QACjD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAuB;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,WAAW;QAC5B,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;QACnC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;QACnC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzD,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KAChE,CAAC;AACJ,CAAC;AAQD,MAAM,OAAO,iBAAiB;IACpB,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;IACrB,KAAK,CAAc;IACnB,KAAK,GAAoB,EAAE,CAAC;IAC5B,cAAc,CAAU;IACxB,SAAS,GAAuB,IAAI,CAAC;IACrC,aAAa,GAAc,EAAE,CAAC;IAC9B,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE/C,YAAY,KAAiB,EAAE,QAAiC;QAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;QAC7D,YAAY;QACZ,eAAe,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5F,CAAC;IAEM,WAAW,CAAC,KAAiB;QAClC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpD,YAAY;QACZ,eAAe,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEM,WAAW,CAAC,KAAsB,EAAE,WAAoB;QAC7D,IAAI,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,YAAY;QACZ,eAAe,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9E,CAAC;IAEM,cAAc,CAAC,QAAiC;QACrD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;QAC7D,YAAY;QACZ,eAAe,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1E,CAAC;IAEM,gBAAgB;QACrB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAChC,CAAC;IAEM,MAAM,CAAC,KAAa,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAEM,OAAO,CAAC,aAA0B,EAAE,SAAmD,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAC9G,sEAAsE;QACtE,0EAA0E;QAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,kBAAkB,EAAE,CAAC,EAAE,SAAS,CAAC,SAAS,GAAG,kBAAkB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1I,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAC1D,MAAM,OAAO,GAA8B,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAChK,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5H,0EAA0E;QAC1E,mEAAmE;QACnE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACpB,IAAI,CAAC,CAAC,iBAAiB,KAAK,SAAS;gBAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC7F,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,eAAe,KAAK,SAAS;gBAAE,SAAS;YACzE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,KAAK,KAAK,SAAS;gBAAE,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC;QAClD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO;YACL,OAAO;YACP,YAAY;YACZ,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,OAAO,EAAE,YAAY,CAAC;YAChF,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACtE,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC;SACnD,CAAC;IACJ,CAAC;IAEM,MAAM,CAAsB,aAAkB;QACnD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,wBAAwB,CAAC,CAAC;QACxG,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,wBAAwB,EAAE,CAAC;gBAC7E,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QACD,MAAM,mBAAmB,GAAG,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACpE,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAEM,eAAe,CAAC,UAAuB;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAC5D,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEM,qBAAqB,CAAC,UAAuB;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,0BAA0B,EAAE,4BAA4B,CAAC,CAAC;QACzF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,aAAa,CAAC,UAAuB;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAEM,sBAAsB,CAAqD,KAAU,EAAE,KAAgB;QAC5G,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACrE,MAAM,IAAI,GAAoB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjD,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;YACrB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK;SACN,CAAC,CAAC,CAAC;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAEM,YAAY,CAAC,QAAkB;QACpC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,kBAAkB,CAAC,KAAa;QACrC,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAClC,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAEO,gBAAgB,CAAC,QAAiC;QACxD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3E,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;IAEO,kBAAkB,CAA8B,UAAe;QACrE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;YAAE,OAAO,UAAU,CAAC;QAC1E,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACpF,CAAC;IAEO,qBAAqB,CAAC,aAA0B,EAAE,OAA2B,EAAE,YAAgC;QACrH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,uBAAuB,CAAC,CAAC;QACxF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,YAAY,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;YAC1B,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAAE,SAAS;YAC7E,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,oBAAoB,CAAC;gBAAE,SAAS;YACzG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,kBAAkB,CAAC,aAA0B;QACnD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,wBAAwB,CAAC,CAAC;QACxG,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC,OAAO,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,wBAAwB,CAAC,CAAC;IAChH,CAAC;CACF"}
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
- const MIN_MOVING_SPEED = 0.05;
17
- const STATIONARY_SPEED_THRESHOLD = 0.002;
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
- let i = 2;
38
- while (i + 9 < jpeg.length) {
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
- // a settled track's box jitter clears the speed floor; settled is not moving
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, and a
682
- // name a tracked face already carries is that person
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
- if (face.identity && existing.label === 'unknown')
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 = data.objects
976
- .filter((o) => o.box && !isFullFrameBox(o.box))
977
- .map((o) => ({ label: o.label, confidence: o.confidence, x: o.box.x, y: o.box.y, width: o.box.width, height: o.box.height }));
978
- const facesFresh = data.facesAt !== undefined && capturedAt - data.facesAt <= SECONDARY_FRESH_MS;
979
- const platesFresh = data.platesAt !== undefined && capturedAt - data.platesAt <= SECONDARY_FRESH_MS;
980
- if (facesFresh) {
981
- for (const face of data.faces) {
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
- for (const still of data.staticObjects ?? []) {
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
- for (const extra of data.trainingExtras ?? []) {
1004
- if (extra.box && !isFullFrameBox(extra.box)) {
1005
- boxes.push({ label: extra.label, confidence: extra.confidence, x: extra.box.x, y: extra.box.y, width: extra.box.width, height: extra.box.height });
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 = [];