@camera.ui/server 2.1.15 → 2.1.17

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 (417) hide show
  1. package/dist/interface/assets/{404-DwgMdXqW.js → 404-Cg1J2LX8.js} +1 -1
  2. package/dist/interface/assets/{About-REFUgZk_.js → About-CW7G6onF.js} +1 -1
  3. package/dist/interface/assets/Automation-CIwBJK1Y.js +3 -0
  4. package/dist/interface/assets/AutomationImport-CHkNv7C-.js +2 -0
  5. package/dist/interface/assets/AutomationStore-5bTym-Gl.js +2 -0
  6. package/dist/interface/assets/AutomationStoreDetail-BF8UoG_l.js +2 -0
  7. package/dist/interface/assets/Automations-CaX2fHhJ.js +2 -0
  8. package/dist/interface/assets/Camera-1zdmJnP-.js +2 -0
  9. package/dist/interface/assets/Camera-DSyI4J5-.css +1 -0
  10. package/dist/interface/assets/{CameraConsole-S61HjIGA.js → CameraConsole-CB1HEFKJ.js} +2 -2
  11. package/dist/interface/assets/{Cameras-57rPP3Y_.js → Cameras-CyCY0rW9.js} +2 -2
  12. package/dist/interface/assets/Camview-CZct5cnP.css +1 -0
  13. package/dist/interface/assets/Camview-Dia7G1u_.js +1 -0
  14. package/dist/interface/assets/{CertificateUpload-CBSLHn_I.js → CertificateUpload-jP-JIxmY.js} +1 -1
  15. package/dist/interface/assets/Config-DOa7WHyQ.js +2 -0
  16. package/dist/interface/assets/{ConfigActionCameraControl-B7KwK7vb.js → ConfigActionCameraControl-BmCE3XLC.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionDelay-DwTGfeP4.js → ConfigActionDelay-CfHCZ0uf.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionHttp-idm-FKXM.js → ConfigActionHttp-DdM7gEb0.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionImageInput-C-v-_UEM.js → ConfigActionImageInput-CrPPNT4K.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionMqtt-CG1o9_6A.js → ConfigActionMqtt-D7-u4zri.js} +1 -1
  21. package/dist/interface/assets/ConfigActionNotification-BSuUI2FP.js +1 -0
  22. package/dist/interface/assets/{ConfigActionNotificationControl-BvHIqHE7.js → ConfigActionNotificationControl-DfvAxKnx.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionOutput-BQvDZGKV.js → ConfigActionOutput-DPplSpm_.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionPlugin-C7mcZ0Kz.js → ConfigActionPlugin-BnRn_p26.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionSensor-BFnb75FI.js → ConfigActionSensor-CoEoqFAY.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionSnapshot-BfzPScY6.js → ConfigActionSnapshot-wXdFiyU-.js} +1 -1
  27. package/dist/interface/assets/{ConfigActionVariable-CjIeZnOV.js → ConfigActionVariable-BqJvOOHH.js} +1 -1
  28. package/dist/interface/assets/{ConfigConditionIfElse-Dgcqs9QP.js → ConfigConditionIfElse-DG2Kgqn5.js} +1 -1
  29. package/dist/interface/assets/{ConfigConditionSensorState-DtLt1AvW.js → ConfigConditionSensorState-BytECo6r.js} +1 -1
  30. package/dist/interface/assets/{ConfigConditionSwitch-C6BfIozf.js → ConfigConditionSwitch-DaSt9uZE.js} +1 -1
  31. package/dist/interface/assets/{ConfigConditionTime-NcjSe4RM.js → ConfigConditionTime-D42OsshU.js} +1 -1
  32. package/dist/interface/assets/{ConfigSensorValueInput-DuvBl4YL.js → ConfigSensorValueInput-BtEmtZSm.js} +1 -1
  33. package/dist/interface/assets/{ConfigTriggerDetection-DsVb-Svo.js → ConfigTriggerDetection-CDH2fzsu.js} +1 -1
  34. package/dist/interface/assets/ConfigTriggerGeofence-Dopegic5.js +1 -0
  35. package/dist/interface/assets/{ConfigTriggerManual-vG37zALd.js → ConfigTriggerManual-DAtWfH0-.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerMqtt-BPl_Puje.js → ConfigTriggerMqtt-CB3_PxqD.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerSchedule-Bn2drGV5.js → ConfigTriggerSchedule-BUzOrF23.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerSensor-DP0CXRLo.js → ConfigTriggerSensor-D5kRIb7I.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerSystem-DQikAjbB.js → ConfigTriggerSystem-Cud77VMR.js} +1 -1
  40. package/dist/interface/assets/{ConfigTriggerWebhook-Cl7KWuRQ.js → ConfigTriggerWebhook-CeG5R3kV.js} +1 -1
  41. package/dist/interface/assets/Console-DdOD6Pd5.js +1 -0
  42. package/dist/interface/assets/{CuiAutomationRunsDialog-D_rNvqan.js → CuiAutomationRunsDialog-Cym6xMVJ.js} +1 -1
  43. package/dist/interface/assets/CuiBottomSheet-B3QSHp4-.js +1 -0
  44. package/dist/interface/assets/CuiBottomSheet-BSoMhymR.js +1 -0
  45. package/dist/interface/assets/CuiBottomSheet-_KXSb13N.css +1 -0
  46. package/dist/interface/assets/CuiCameraPipCard-DGgrxZJd.js +1 -0
  47. package/dist/interface/assets/{CuiCameraRecordings-h6Yel4J4.js → CuiCameraRecordings-Bu68AFdM.js} +1 -1
  48. package/dist/interface/assets/CuiCameraShares-BOhfTcxQ.js +1 -0
  49. package/dist/interface/assets/CuiCameraTable-C1CHYnda.js +1 -0
  50. package/dist/interface/assets/{CuiCameraTable-CfXoLbtY.js → CuiCameraTable-D0lc0VAJ.js} +2 -2
  51. package/dist/interface/assets/{CuiChartTable-BWRwoTLX.js → CuiChartTable-DcrFI8tT.js} +1 -1
  52. package/dist/interface/assets/{CuiConsole-Cb3wDLZr.js → CuiConsole-ICLBq4Q-.js} +2 -2
  53. package/dist/interface/assets/{CuiDataTable-aAZV_F3r.js → CuiDataTable-BooFPsGH.js} +1 -1
  54. package/dist/interface/assets/CuiLightControl-D1ih2hO-.js +1 -0
  55. package/dist/interface/assets/{CuiList-BZYxCLqz.js → CuiList-ChI82KjI.js} +1 -1
  56. package/dist/interface/assets/CuiPluginCard-DqdSWrwb.js +2 -0
  57. package/dist/interface/assets/{CuiPluginCategoryChip-C9trJ_ql.js → CuiPluginCategoryChip-DsRcMb72.js} +1 -1
  58. package/dist/interface/assets/CuiPluginOAuthButton-BSvRKUSY.js +2 -0
  59. package/dist/interface/assets/{CuiPluginTrustBadge-D5gkIhJv.js → CuiPluginTrustBadge-DXL7N1LC.js} +1 -1
  60. package/dist/interface/assets/{CuiQRCode-DY5Q-Xel.js → CuiQRCode-DHln6Lo9.js} +1 -1
  61. package/dist/interface/assets/CuiSchema-B7i2O3Fy.js +1 -0
  62. package/dist/interface/assets/{CuiTopNavbarItem-CJqOqVMt.css → CuiTopNavbarItem-7673AFGS.css} +1 -1
  63. package/dist/interface/assets/CuiTopNavbarItem-TMfTyt8u.js +1 -0
  64. package/dist/interface/assets/Faces-CyTkMqMW.js +1 -0
  65. package/dist/interface/assets/FirstSteps-B4gb7Sgn.js +1 -0
  66. package/dist/interface/assets/{Floorplan-Bxhdg4C2.css → Floorplan-B1lItPnM.css} +1 -1
  67. package/dist/interface/assets/Floorplan-DBwWnuys.js +1 -0
  68. package/dist/interface/assets/Instances-D9fnwItz.js +1 -0
  69. package/dist/interface/assets/{Logs-CfYTWOv2.js → Logs-Brk6fJa0.js} +2 -2
  70. package/dist/interface/assets/{Menu-HzmLhy40.js → Menu-CrdBz1Er.js} +1 -1
  71. package/dist/interface/assets/Metrics-DXMgfNIL.js +9 -0
  72. package/dist/interface/assets/{OAuthDeviceFlow-DBac627V.js → OAuthDeviceFlow-D5hSwHeO.js} +1 -1
  73. package/dist/interface/assets/Plugin-C65oNZ9N.js +1 -0
  74. package/dist/interface/assets/{PluginConsole-C5dZgdl9.js → PluginConsole-Bs3Z5u9-.js} +2 -2
  75. package/dist/interface/assets/PluginDetail-C3KUrHvq.js +2 -0
  76. package/dist/interface/assets/{PluginSchema-DJ8NY8hW.js → PluginSchema-D22zRDkZ.js} +1 -1
  77. package/dist/interface/assets/PluginSearch-4ngDmZQ2.js +1 -0
  78. package/dist/interface/assets/PluginSearch-D7XYJzl4.js +2 -0
  79. package/dist/interface/assets/{PluginUpdateProgress-DgqaTwSS.js → PluginUpdateProgress-MEdR7mID.js} +1 -1
  80. package/dist/interface/assets/Plugins-DQTlb12n.js +1 -0
  81. package/dist/interface/assets/Recordings-CfSTX_Mw.css +1 -0
  82. package/dist/interface/assets/Recordings-CqBwRvn-.js +1 -0
  83. package/dist/interface/assets/SensorEdit-BM2zHAM7.js +1 -0
  84. package/dist/interface/assets/{SensorHistory-bCcPH0_I.js → SensorHistory-Dbv2ODqn.js} +1 -1
  85. package/dist/interface/assets/Sensors-B4YzyU7R.js +2 -0
  86. package/dist/interface/assets/{Sensors-CaKl4PQY.css → Sensors-DETviyjO.css} +1 -1
  87. package/dist/interface/assets/Settings--wgPYOyK.js +1 -0
  88. package/dist/interface/assets/{Settings-jQIhZFRY.css → Settings-D7495zbV.css} +1 -1
  89. package/dist/interface/assets/SettingsAccount-BF6Cp8Rt.js +1 -0
  90. package/dist/interface/assets/SettingsAccount-D7CHP0f1.js +1 -0
  91. package/dist/interface/assets/SettingsAppearance-Ba0jbbVW.js +1 -0
  92. package/dist/interface/assets/SettingsAppearance-BpXZwBjO.js +1 -0
  93. package/dist/interface/assets/SettingsBackup-qEYm-6De.js +1 -0
  94. package/dist/interface/assets/{SettingsList-Nc7OCZrn.js → SettingsList-1brGZ2E_.js} +1 -1
  95. package/dist/interface/assets/SettingsMqtt-Ds8YpoLA.js +1 -0
  96. package/dist/interface/assets/SettingsNotifications-Diqpfbrh.js +1 -0
  97. package/dist/interface/assets/{SettingsPermissions-BZXAgxUl.js → SettingsPermissions-GmGacrLc.js} +1 -1
  98. package/dist/interface/assets/{SettingsRecordings-Biyy3rTF.js → SettingsRecordings-CtEm_7PE.js} +1 -1
  99. package/dist/interface/assets/SettingsRemote-CENHI51U.js +2 -0
  100. package/dist/interface/assets/SettingsSystem-YkigO2-V.js +2 -0
  101. package/dist/interface/assets/SettingsUsers-BNPa87gu.js +1 -0
  102. package/dist/interface/assets/{Terminal-AsI0lb5n.js → Terminal-uxOHZpUp.js} +3 -3
  103. package/dist/interface/assets/Training-BRZKDa8S.js +1 -0
  104. package/dist/interface/assets/Training-DMNjB3uX.css +1 -0
  105. package/dist/interface/assets/Updates-CbscgL60.js +2 -0
  106. package/dist/interface/assets/{VariableInput-__I-FsBF.js → VariableInput-Dqg4sqBD.js} +1 -1
  107. package/dist/interface/assets/{VariableSuggestions-B-7auf15.js → VariableSuggestions-DZCkPAVs.js} +1 -1
  108. package/dist/interface/assets/{VersionsHandler-BTe1Ev3b.js → VersionsHandler-BYFshrhO.js} +2 -2
  109. package/dist/interface/assets/{VirtualSensorCreate-DdLgJECI.js → VirtualSensorCreate-CQ-C4si3.js} +1 -1
  110. package/dist/interface/assets/Workers-DC77SjZQ.js +2 -0
  111. package/dist/interface/assets/api-Cb8_C_se.js +4 -0
  112. package/dist/interface/assets/{api-84bL4zpk.js → api-CbYNh0N1.js} +1 -1
  113. package/dist/interface/assets/api-DIyogyx5.css +2 -0
  114. package/dist/interface/assets/{auth-F2wU_mtw.js → auth-Bev1OdHw.js} +1 -1
  115. package/dist/interface/assets/{automations-D6fqhxhY.js → automations-DrpESBB_.js} +1 -1
  116. package/dist/interface/assets/cameraSources-QF2xqMxX.js +1 -0
  117. package/dist/interface/assets/cloudHandoff-BknPGUc0.js +1 -0
  118. package/dist/interface/assets/{config-Jzs6YXbB.js → config-DCK7k2P4.js} +1 -1
  119. package/dist/interface/assets/{flowSchema-C1fWwuQa.js → flowSchema-D3Ddm5sW.js} +1 -1
  120. package/dist/interface/assets/{intercomService-fFto_C1t.js → intercomService-DIwpkwG4.js} +1 -1
  121. package/dist/interface/assets/main-Cb5Z8N7b.css +1 -0
  122. package/dist/interface/assets/main-DVwdxi04.js +3 -0
  123. package/dist/interface/assets/mqtt-COWs_r7k.js +1 -0
  124. package/dist/interface/assets/{notifications-CIJEGR7A.js → notifications-sIv1-H85.js} +1 -1
  125. package/dist/interface/assets/{plugins-HYHSAzD-.js → plugins-CXQj6XQt.js} +1 -1
  126. package/dist/interface/assets/rooms-DScX89Ks.js +1 -0
  127. package/dist/interface/assets/{sensorIcons-ByPd6LR6.js → sensorIcons-CvVtOgZB.js} +1 -1
  128. package/dist/interface/assets/sensorSlots-DsfKs8_k.js +1 -0
  129. package/dist/interface/assets/{sensors-BgjfSfk6.js → sensors-Bf_gYmB5.js} +1 -1
  130. package/dist/interface/assets/{server-CIDx_I6S.js → server-CahE6_Pv.js} +1 -1
  131. package/dist/interface/assets/{theme-GSy1mQOB.js → theme-DmUc7UHl.js} +1 -1
  132. package/dist/interface/assets/{types-Do9v0d7I.js → types-D4kUDpid.js} +1 -1
  133. package/dist/interface/assets/{types-Dlk_iSoE.js → types-Dse8_nTX.js} +1 -1
  134. package/dist/interface/assets/types-hwOSxlNg.js +1 -0
  135. package/dist/interface/assets/ungrouped-Byxe4LNR.js +1 -0
  136. package/dist/interface/assets/ungrouped-n3OnGhCH.css +1 -0
  137. package/dist/interface/assets/{updates-73Yq11IN.js → updates-C4gAnNY6.js} +1 -1
  138. package/dist/interface/assets/{useAppVersion-B0_bYa9V.js → useAppVersion--b5Zj7tl.js} +1 -1
  139. package/dist/interface/assets/useBackupRestore-Bx13MgrJ.js +1 -0
  140. package/dist/interface/assets/{useCameraOptions-DKeZhfOM.js → useCameraOptions-DN4gJjIl.js} +1 -1
  141. package/dist/interface/assets/{useLogsSocket-CmyTTUGN.js → useLogsSocket-DqVa6Hky.js} +1 -1
  142. package/dist/interface/assets/{useNavLayout-DOFS3269.js → useNavLayout-CuQ9F9cj.js} +1 -1
  143. package/dist/interface/assets/{usePermissions-D5I3gACT.js → usePermissions-C1L7m3Nc.js} +1 -1
  144. package/dist/interface/assets/{usePluginUpdates-BWxJ04h7.js → usePluginUpdates-CvQPy02x.js} +1 -1
  145. package/dist/interface/assets/{usePushRegistration-DWreQ-Hn.js → usePushRegistration-BKvefMFq.js} +1 -1
  146. package/dist/interface/assets/{useServerRestart-DDW-nw_t.js → useServerRestart-ByN6484v.js} +1 -1
  147. package/dist/interface/assets/{useStreamStatus-COIha2d8.js → useStreamStatus-BbtTnidZ.js} +1 -1
  148. package/dist/interface/assets/{useTabSwipe-aoMqro29.js → useTabSwipe-D9udGzPx.js} +1 -1
  149. package/dist/interface/assets/{useUpdateChannel-CM9MYCZy.js → useUpdateChannel-8t3W9dNr.js} +1 -1
  150. package/dist/interface/assets/{useUpdatesSocket-DY4i32ml.js → useUpdatesSocket-D9s_5T3l.js} +1 -1
  151. package/dist/interface/assets/{useUserOptions-DHfprGgA.js → useUserOptions-CEPYkuSm.js} +1 -1
  152. package/dist/interface/assets/{vendor-cameraui-BRv7o4zz.js → vendor-cameraui-Dlzn4pyz.js} +26 -26
  153. package/dist/interface/assets/vendor-core-COMSlypG.js +1 -0
  154. package/dist/interface/assets/{vendor-primevue-C85v-zl5.js → vendor-primevue-DF71EsUM.js} +55 -55
  155. package/dist/interface/ha/{404-TwTUCqDv.js → 404-Bm-oxxip.js} +1 -1
  156. package/dist/interface/ha/{About-BeZkyUdW.js → About-CDcN0Q2J.js} +6 -6
  157. package/dist/interface/ha/{Automation-CL7j0Vgh.js → Automation-BQd4b0ym.js} +149 -149
  158. package/dist/interface/ha/{AutomationImport-D7arOHP-.js → AutomationImport-CX1C76Wb.js} +6 -6
  159. package/dist/interface/ha/{AutomationStore-DN0yBk6X.js → AutomationStore-D4B0KpoW.js} +27 -27
  160. package/dist/interface/ha/{AutomationStoreDetail-DUuLEnvx.js → AutomationStoreDetail-B53Giz4B.js} +24 -24
  161. package/dist/interface/ha/{Automations-Dfbren5V.js → Automations-BXlwOElS.js} +94 -94
  162. package/dist/interface/ha/{Camera-BxWpvZM8.js → Camera-CauwMneE.js} +182 -180
  163. package/dist/interface/ha/{CameraConsole-DT7BFGXD.js → CameraConsole-CmsMjuIR.js} +5 -5
  164. package/dist/interface/ha/{Cameras-ClmwBeNf.js → Cameras-CyHDmgs0.js} +117 -117
  165. package/dist/interface/ha/{Camview-CFAKNI6-.js → Camview-BwwvU5k8.js} +112 -112
  166. package/dist/interface/ha/{Config-D83QNz1P.js → Config-C_Zuyeoc.js} +9 -9
  167. package/dist/interface/ha/{ConfigActionCameraControl-D-2_gkM-.js → ConfigActionCameraControl-C1_QyuX8.js} +3 -3
  168. package/dist/interface/ha/{ConfigActionHttp-CDmzaJOb.js → ConfigActionHttp-C0d433mh.js} +2 -2
  169. package/dist/interface/ha/{ConfigActionImageInput-7mA-jNIj.js → ConfigActionImageInput-BYys2FwC.js} +1 -1
  170. package/dist/interface/ha/{ConfigActionMqtt-CGLqAswk.js → ConfigActionMqtt-DznDfzze.js} +4 -4
  171. package/dist/interface/ha/{ConfigActionNotification-DyhLsVfe.js → ConfigActionNotification-CC2qfBLm.js} +3 -3
  172. package/dist/interface/ha/{ConfigActionNotificationControl-C381uizv.js → ConfigActionNotificationControl-3jlm7_A4.js} +2 -2
  173. package/dist/interface/ha/{ConfigActionOutput-Cg6IMq5u.js → ConfigActionOutput-BEf1U3_l.js} +1 -1
  174. package/dist/interface/ha/{ConfigActionPlugin-vFD_OHt8.js → ConfigActionPlugin-C57BUrJD.js} +5 -5
  175. package/dist/interface/ha/{ConfigActionSensor-B0JYbb-_.js → ConfigActionSensor-BkoSPCUJ.js} +5 -5
  176. package/dist/interface/ha/{ConfigActionSnapshot-DlYRwdII.js → ConfigActionSnapshot-CC3EpmCq.js} +2 -2
  177. package/dist/interface/ha/{ConfigActionVariable-6HNVpSjs.js → ConfigActionVariable-JDyDhSzZ.js} +1 -1
  178. package/dist/interface/ha/{ConfigConditionIfElse-b5UhYSf4.js → ConfigConditionIfElse-BVg-TUpv.js} +3 -3
  179. package/dist/interface/ha/{ConfigConditionSensorState-CI1CS9qa.js → ConfigConditionSensorState-YYeWly1H.js} +4 -4
  180. package/dist/interface/ha/{ConfigConditionSwitch-DGoKb_ZM.js → ConfigConditionSwitch-DQHXX-4U.js} +5 -5
  181. package/dist/interface/ha/{ConfigSensorValueInput-BGQytgns.js → ConfigSensorValueInput-BuuzQ1nJ.js} +8 -8
  182. package/dist/interface/ha/{ConfigTriggerDetection-l_h4kt0X.js → ConfigTriggerDetection-CUvkAmpJ.js} +3 -3
  183. package/dist/interface/ha/{ConfigTriggerGeofence-Y2Od0L2_.js → ConfigTriggerGeofence-CCHELnfy.js} +7 -7
  184. package/dist/interface/ha/{ConfigTriggerMqtt-DttCVDHe.js → ConfigTriggerMqtt-BfLnCiWZ.js} +1 -1
  185. package/dist/interface/ha/{ConfigTriggerSensor-O4mWaXnJ.js → ConfigTriggerSensor-Bi-Jld2G.js} +1 -1
  186. package/dist/interface/ha/{ConfigTriggerSystem-C_uWI6kc.js → ConfigTriggerSystem-_HXrWjaJ.js} +2 -2
  187. package/dist/interface/ha/{ConfigTriggerWebhook-CY5vDxZe.js → ConfigTriggerWebhook-CFYsVF_r.js} +2 -2
  188. package/dist/interface/ha/{Console-DdOU0_jE.js → Console-CR95JZFd.js} +101 -101
  189. package/dist/interface/ha/{CuiAutomationRunsDialog-_WF5J4hV.js → CuiAutomationRunsDialog--mpkPFmw.js} +2 -2
  190. package/dist/interface/ha/{CuiBottomSheet-Bzr2zhm3.js → CuiBottomSheet-DfFzwDjq.js} +3 -3
  191. package/dist/interface/ha/{CuiCameraRecordings-HqWrHpr-.js → CuiCameraRecordings-DCIFFbFk.js} +13 -13
  192. package/dist/interface/ha/{CuiCameraShares-Bw1RlqC-.js → CuiCameraShares-Dwv_XtX4.js} +7 -7
  193. package/dist/interface/ha/{CuiCameraTable-DvIlmfmW.js → CuiCameraTable-L6wd-VYz.js} +9 -9
  194. package/dist/interface/ha/{CuiChartTable-C6vRR9ny.js → CuiChartTable-CxJR8u6U.js} +16 -16
  195. package/dist/interface/ha/{CuiConsole-B6fDJfvq.js → CuiConsole-CvL9TXZY.js} +7 -7
  196. package/dist/interface/ha/{CuiDataTable-BLL7vWD1.js → CuiDataTable-Bn80WJXi.js} +7 -7
  197. package/dist/interface/ha/{CuiPluginCard-CsJ-dlra.js → CuiPluginCard-CtOzPAal.js} +32 -32
  198. package/dist/interface/ha/CuiPluginOAuthButton-1LgNMLII.js +79 -0
  199. package/dist/interface/ha/{CuiPluginTrustBadge-CQtfi3UI.js → CuiPluginTrustBadge-mHuy3ab9.js} +3 -3
  200. package/dist/interface/ha/{CuiQRCode-DOj5PJo2.js → CuiQRCode-CloepWte.js} +6 -6
  201. package/dist/interface/ha/{CuiSchema-Dg43r2Vo.js → CuiSchema-CJsEWewj.js} +132 -132
  202. package/dist/interface/ha/{CuiTopNavbarItem-CMu_hCIP.js → CuiTopNavbarItem-B2EM-tmz.js} +3 -3
  203. package/dist/interface/ha/{Faces-Ed0ytbse.js → Faces-BMkZfxDm.js} +66 -66
  204. package/dist/interface/ha/{FirstSteps-Dkw2Enre.js → FirstSteps-BH0mga3u.js} +67 -67
  205. package/dist/interface/ha/{Floorplan-IdC1tgDr.js → Floorplan-CyfIUI4Z.js} +220 -220
  206. package/dist/interface/ha/{Instances-dvDlInn-.js → Instances-BwNXc91J.js} +18 -18
  207. package/dist/interface/ha/{Logs-rUL_mLTJ.js → Logs-CcSiN16r.js} +11 -11
  208. package/dist/interface/ha/{Menu-CfMgYCN9.js → Menu-qdN0OBb7.js} +15 -15
  209. package/dist/interface/ha/{Metrics-DYNvEdb-.js → Metrics-ClM5lhvC.js} +93 -93
  210. package/dist/interface/ha/{OAuthDeviceFlow-vgBWOkzP.js → OAuthDeviceFlow-BBr-rER_.js} +5 -5
  211. package/dist/interface/ha/{Plugin-PqUW_696.js → Plugin-BBkSXygO.js} +104 -104
  212. package/dist/interface/ha/{PluginConsole-CFJKNhQw.js → PluginConsole-DqrBnXSX.js} +4 -4
  213. package/dist/interface/ha/{PluginDetail-cC8nut35.js → PluginDetail-Clu6nv-B.js} +12 -12
  214. package/dist/interface/ha/{PluginSearch-BzSs0ibh.js → PluginSearch-Dn-24FLX.js} +53 -53
  215. package/dist/interface/ha/{PluginUpdateProgress-CtM7lrl9.js → PluginUpdateProgress-CzhHUKDg.js} +3 -3
  216. package/dist/interface/ha/{Plugins-CzvlXEaH.js → Plugins-qYJD5ioU.js} +27 -27
  217. package/dist/interface/ha/{Recordings-BtsW8I5D.js → Recordings-CBIt3vL7.js} +384 -366
  218. package/dist/interface/ha/{SensorEdit-DMwyTDIG.js → SensorEdit-BbG6apZA.js} +353 -353
  219. package/dist/interface/ha/{SensorHistory-DoJhFbTC.js → SensorHistory-CqGsnQPW.js} +2 -2
  220. package/dist/interface/ha/{Sensors-BoRfutfx.js → Sensors-mKWkCDF8.js} +507 -481
  221. package/dist/interface/ha/{Settings-vmfs1rfj.js → Settings-C5J4ubiA.js} +24 -24
  222. package/dist/interface/ha/SettingsAccount-tCyZsBxG.js +970 -0
  223. package/dist/interface/ha/{SettingsAppearance-v9zeetcx.js → SettingsAppearance-DqJp4Clt.js} +14 -14
  224. package/dist/interface/ha/{SettingsBackup-eO4r8MZe.js → SettingsBackup-CHnCKYgz.js} +6 -6
  225. package/dist/interface/ha/{SettingsList-burOi4S6.js → SettingsList-DsQOPeKW.js} +5 -5
  226. package/dist/interface/ha/{SettingsMqtt-CjZERKR8.js → SettingsMqtt-TPIsEcXe.js} +124 -124
  227. package/dist/interface/ha/SettingsNotifications-DH3T_xyh.js +529 -0
  228. package/dist/interface/ha/{SettingsRecordings-DzsXkzeu.js → SettingsRecordings-Ay8lj8Lm.js} +7 -7
  229. package/dist/interface/ha/{SettingsRemote-B0HZwZj3.js → SettingsRemote-CHiBADuu.js} +202 -202
  230. package/dist/interface/ha/{SettingsSystem-Bc_c8XYh.js → SettingsSystem-tqs40pUW.js} +10 -10
  231. package/dist/interface/ha/{SettingsUsers-CxL65q1C.js → SettingsUsers-BUbC_Qc7.js} +29 -29
  232. package/dist/interface/ha/{Terminal-DsX-_5R2.js → Terminal-f_b-089t.js} +76 -76
  233. package/dist/interface/ha/Training-Dcxo9PFi.js +1479 -0
  234. package/dist/interface/ha/{Updates-DG9i-tQu.js → Updates-aGl5hy8Q.js} +14 -14
  235. package/dist/interface/ha/{VariableInput-CcevSEwK.js → VariableInput-yJGbaZEo.js} +1 -1
  236. package/dist/interface/ha/{VersionsHandler-5GeFt6Lw.js → VersionsHandler-Q4PfRpbs.js} +10 -10
  237. package/dist/interface/ha/{VirtualSensorCreate-dWN8FANX.js → VirtualSensorCreate-Gbi6aJBh.js} +8 -8
  238. package/dist/interface/ha/{Workers-D1y6eFKT.js → Workers-BbBqOc0H.js} +167 -167
  239. package/dist/interface/ha/{api-DDUXI4DG.js → api-DBu4gh4_.js} +9705 -9275
  240. package/dist/interface/ha/{api-BgQ9AVgK.js → api-DY0z6Sp_.js} +3 -3
  241. package/dist/interface/ha/{auth-C8Vp1TkJ.js → auth-C2V-kpRp.js} +38 -38
  242. package/dist/interface/ha/{automationBlueprint-DhRjWL2p.js → automationBlueprint-MGUZJTFY.js} +4 -4
  243. package/dist/interface/ha/cameraui-cards.js +1 -1
  244. package/dist/interface/ha/{cards-BGikU5nh.js → cards-BA6g_9R5.js} +573 -573
  245. package/dist/interface/ha/cloud-check-BFJzoUtz.js +33 -0
  246. package/dist/interface/ha/{config-WqhFqx8D.js → config-BGlhgEOa.js} +16 -16
  247. package/dist/interface/ha/{dist-BQFunPaA.js → dist-BqTZri2H.js} +743 -725
  248. package/dist/interface/ha/{mqtt-CQopAljB.js → mqtt-BLKZNA-E.js} +12 -12
  249. package/dist/interface/ha/{notifications-C4IU7Zbu.js → notifications-BW0RNMnG.js} +22 -22
  250. package/dist/interface/ha/{pinia-3D39Do4a.js → pinia-DINxhtY-.js} +188 -162
  251. package/dist/interface/ha/{plugins-C2n0mAnr.js → plugins-Cj-B4Nwy.js} +62 -62
  252. package/dist/interface/ha/{rooms-qqdOrA2J.js → rooms-C32i51p-.js} +7 -7
  253. package/dist/interface/ha/{server-D6Yglz-z.js → server-CfbE_0Z9.js} +31 -31
  254. package/dist/interface/ha/{types-BtcJ7st-.js → types-Ry6RjBNa.js} +32 -32
  255. package/dist/interface/ha/{ungrouped-aASsOUNF.js → ungrouped-CO29-tSV.js} +415 -211
  256. package/dist/interface/ha/{updates-BuAFU-ZQ.js → updates-CZPI8XJ1.js} +38 -38
  257. package/dist/interface/ha/{useAppVersion-D0EOwpoO.js → useAppVersion-9jfqRo_z.js} +1 -1
  258. package/dist/interface/ha/{useLogsSocket-CCewWMZM.js → useLogsSocket-B0E7a3ys.js} +1 -1
  259. package/dist/interface/ha/{useNavLayout-B_QzdVtJ.js → useNavLayout-B2wfeha-.js} +19 -19
  260. package/dist/interface/ha/{useServerRestart-B0OMNlwZ.js → useServerRestart-CCH-yMWR.js} +1 -1
  261. package/dist/interface/ha/{useTabSwipe-DG6Gx2Md.js → useTabSwipe-D2uqGEvR.js} +1 -1
  262. package/dist/interface/ha/{useUpdateChannel-CXDGlWX2.js → useUpdateChannel--SP3Wjym.js} +2 -2
  263. package/dist/interface/ha/{useUpdatesSocket-BgCJLp_W.js → useUpdatesSocket-BBbUCMU-.js} +1 -1
  264. package/dist/interface/ha/{useUserOptions-rirRksyl.js → useUserOptions-Bh54UAkH.js} +1 -1
  265. package/dist/interface/index.html +28 -27
  266. package/dist/interface/sw.js +1 -1
  267. package/dist/server/package.json +8 -8
  268. package/dist/server/src/api/controllers/training.controller.d.ts +40 -0
  269. package/dist/server/src/api/controllers/training.controller.js +97 -0
  270. package/dist/server/src/api/controllers/training.controller.js.map +1 -0
  271. package/dist/server/src/api/database/constants.d.ts +1 -0
  272. package/dist/server/src/api/database/constants.js +1 -0
  273. package/dist/server/src/api/database/constants.js.map +1 -1
  274. package/dist/server/src/api/database/index.d.ts +3 -2
  275. package/dist/server/src/api/database/index.js +4 -2
  276. package/dist/server/src/api/database/index.js.map +1 -1
  277. package/dist/server/src/api/database/migrations/v2-1-19.d.ts +3 -0
  278. package/dist/server/src/api/database/migrations/v2-1-19.js +24 -0
  279. package/dist/server/src/api/database/migrations/v2-1-19.js.map +1 -0
  280. package/dist/server/src/api/database/record-schemas.d.ts +7 -1
  281. package/dist/server/src/api/database/record-schemas.js +8 -0
  282. package/dist/server/src/api/database/record-schemas.js.map +1 -1
  283. package/dist/server/src/api/database/types.d.ts +27 -0
  284. package/dist/server/src/api/index.js +1 -1
  285. package/dist/server/src/api/index.js.map +1 -1
  286. package/dist/server/src/api/render-index.js +1 -1
  287. package/dist/server/src/api/render-index.js.map +1 -1
  288. package/dist/server/src/api/routes/index.js +2 -0
  289. package/dist/server/src/api/routes/index.js.map +1 -1
  290. package/dist/server/src/api/routes/training.routes.d.ts +2 -0
  291. package/dist/server/src/api/routes/training.routes.js +107 -0
  292. package/dist/server/src/api/routes/training.routes.js.map +1 -0
  293. package/dist/server/src/api/schemas/cameras.schema.d.ts +76 -76
  294. package/dist/server/src/api/schemas/remote.schema.d.ts +1 -1
  295. package/dist/server/src/api/schemas/training.schema.d.ts +46 -0
  296. package/dist/server/src/api/schemas/training.schema.js +45 -0
  297. package/dist/server/src/api/schemas/training.schema.js.map +1 -0
  298. package/dist/server/src/api/services/cameras.service.js +7 -2
  299. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  300. package/dist/server/src/api/services/sensors.service.d.ts +1 -0
  301. package/dist/server/src/api/services/sensors.service.js +1 -0
  302. package/dist/server/src/api/services/sensors.service.js.map +1 -1
  303. package/dist/server/src/api/types/index.d.ts +2 -1
  304. package/dist/server/src/api/websocket/index.js +3 -1
  305. package/dist/server/src/api/websocket/index.js.map +1 -1
  306. package/dist/server/src/api/websocket/nsp/training.d.ts +11 -0
  307. package/dist/server/src/api/websocket/nsp/training.js +29 -0
  308. package/dist/server/src/api/websocket/nsp/training.js.map +1 -0
  309. package/dist/server/src/api/websocket/types.d.ts +1 -1
  310. package/dist/server/src/camera/decoder/detection-coordinator.d.ts +1 -0
  311. package/dist/server/src/camera/decoder/detection-coordinator.js +48 -2
  312. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  313. package/dist/server/src/camera/decoder/detection-window.d.ts +5 -0
  314. package/dist/server/src/camera/decoder/detection-window.js +5 -5
  315. package/dist/server/src/camera/decoder/detection-window.js.map +1 -1
  316. package/dist/server/src/camera/decoder/event-manager.d.ts +10 -0
  317. package/dist/server/src/camera/decoder/event-manager.js +50 -1
  318. package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
  319. package/dist/server/src/camera/decoder/training-sink.d.ts +37 -0
  320. package/dist/server/src/camera/decoder/training-sink.js +146 -0
  321. package/dist/server/src/camera/decoder/training-sink.js.map +1 -0
  322. package/dist/server/src/camera/decoder/types.d.ts +4 -0
  323. package/dist/server/src/camera/decoder/types.js +8 -0
  324. package/dist/server/src/camera/decoder/types.js.map +1 -1
  325. package/dist/server/src/manager/coreManager.d.ts +3 -1
  326. package/dist/server/src/manager/coreManager.js +18 -0
  327. package/dist/server/src/manager/coreManager.js.map +1 -1
  328. package/dist/server/src/manager/trainingCandidateManager.d.ts +41 -0
  329. package/dist/server/src/manager/trainingCandidateManager.js +249 -0
  330. package/dist/server/src/manager/trainingCandidateManager.js.map +1 -0
  331. package/dist/server/src/manager/types.d.ts +23 -0
  332. package/dist/server/src/manager/types.js.map +1 -1
  333. package/dist/server/src/remote/api/index.d.ts +2 -0
  334. package/dist/server/src/remote/api/index.js +3 -0
  335. package/dist/server/src/remote/api/index.js.map +1 -1
  336. package/dist/server/src/remote/api/routes/oauth.js +1 -1
  337. package/dist/server/src/remote/api/routes/oauth.js.map +1 -1
  338. package/dist/server/src/remote/api/routes/train.d.ts +24 -0
  339. package/dist/server/src/remote/api/routes/train.js +51 -0
  340. package/dist/server/src/remote/api/routes/train.js.map +1 -0
  341. package/dist/server/src/rpc/index.d.ts +2 -0
  342. package/dist/server/src/rpc/index.js +5 -0
  343. package/dist/server/src/rpc/index.js.map +1 -1
  344. package/dist/server/src/rpc/interfaces/core.d.ts +21 -0
  345. package/dist/server/src/rpc/server.js +2 -0
  346. package/dist/server/src/rpc/server.js.map +1 -1
  347. package/dist/server/src/sensors/registry.d.ts +1 -0
  348. package/dist/server/src/sensors/registry.js +10 -0
  349. package/dist/server/src/sensors/registry.js.map +1 -1
  350. package/package.json +8 -8
  351. package/dist/interface/assets/Automation-DThD-djr.js +0 -3
  352. package/dist/interface/assets/AutomationImport-CHKkZqA4.js +0 -2
  353. package/dist/interface/assets/AutomationStore-Aon4kqZU.js +0 -2
  354. package/dist/interface/assets/AutomationStoreDetail-CfZ45tLW.js +0 -2
  355. package/dist/interface/assets/Automations-BkRuMd-d.js +0 -2
  356. package/dist/interface/assets/Camera-BWdUUW_H.css +0 -1
  357. package/dist/interface/assets/Camera-G6xTnRAk.js +0 -2
  358. package/dist/interface/assets/Camview-BZS4_jv1.css +0 -1
  359. package/dist/interface/assets/Camview-BjCuw7nI.js +0 -1
  360. package/dist/interface/assets/Config-BTXb1LHN.js +0 -2
  361. package/dist/interface/assets/ConfigActionNotification-DtoP3c7I.js +0 -1
  362. package/dist/interface/assets/ConfigTriggerGeofence-DLuNWaN6.js +0 -1
  363. package/dist/interface/assets/Console-hUeddOJc.js +0 -1
  364. package/dist/interface/assets/CuiBottomSheet-BGVpKjqe.js +0 -1
  365. package/dist/interface/assets/CuiBottomSheet-DOW6gNj0.js +0 -1
  366. package/dist/interface/assets/CuiBottomSheet-DsjZEdig.css +0 -1
  367. package/dist/interface/assets/CuiCameraPipCard-BBMkU-eN.js +0 -1
  368. package/dist/interface/assets/CuiCameraShares-C9Th3jEn.js +0 -1
  369. package/dist/interface/assets/CuiCameraTable-Cti7FZma.js +0 -1
  370. package/dist/interface/assets/CuiLightControl-BhBIiPv-.js +0 -1
  371. package/dist/interface/assets/CuiPluginCard-yYGvVtDJ.js +0 -2
  372. package/dist/interface/assets/CuiPluginOAuthButton-C8VRPoMj.js +0 -2
  373. package/dist/interface/assets/CuiSchema-Dy2eRCu2.js +0 -1
  374. package/dist/interface/assets/CuiTopNavbarItem-Btig8IUi.js +0 -1
  375. package/dist/interface/assets/Faces-D5PMl5Bx.js +0 -1
  376. package/dist/interface/assets/FirstSteps-BcjeaLz_.js +0 -1
  377. package/dist/interface/assets/Floorplan-DHl3zibU.js +0 -1
  378. package/dist/interface/assets/Instances-DXksjsQR.js +0 -1
  379. package/dist/interface/assets/Metrics-BWTImHsV.js +0 -9
  380. package/dist/interface/assets/Plugin-D5WuhMPO.js +0 -1
  381. package/dist/interface/assets/PluginDetail-3qrahg0_.js +0 -2
  382. package/dist/interface/assets/PluginSearch-D8zmSpkN.js +0 -2
  383. package/dist/interface/assets/PluginSearch-D_ba5x-O.js +0 -1
  384. package/dist/interface/assets/Plugins-5MzJrkSA.js +0 -1
  385. package/dist/interface/assets/Recordings-BuGuUwYE.js +0 -1
  386. package/dist/interface/assets/Recordings-D4NzYCO9.css +0 -1
  387. package/dist/interface/assets/SensorEdit-DF4sw0EW.js +0 -1
  388. package/dist/interface/assets/Sensors-D6GwAXQ2.js +0 -2
  389. package/dist/interface/assets/Settings-BZf-ziEZ.js +0 -1
  390. package/dist/interface/assets/SettingsAccount--5p79E6E.js +0 -1
  391. package/dist/interface/assets/SettingsAccount-Dlc0Wddo.js +0 -1
  392. package/dist/interface/assets/SettingsAppearance-B59zzxu4.js +0 -1
  393. package/dist/interface/assets/SettingsAppearance-xPKxmDpp.js +0 -1
  394. package/dist/interface/assets/SettingsBackup-CJJ5VBzp.js +0 -1
  395. package/dist/interface/assets/SettingsMqtt-DUUAcYuG.js +0 -1
  396. package/dist/interface/assets/SettingsNotifications-BH63oRsc.js +0 -1
  397. package/dist/interface/assets/SettingsRemote-Dbaxaq5H.js +0 -2
  398. package/dist/interface/assets/SettingsSystem-DzHIleOc.js +0 -2
  399. package/dist/interface/assets/SettingsUsers-D5YuEr7c.js +0 -1
  400. package/dist/interface/assets/Updates-DnAut-3U.js +0 -2
  401. package/dist/interface/assets/Workers-6aoL2zvF.js +0 -2
  402. package/dist/interface/assets/api-BI5TkcMD.js +0 -4
  403. package/dist/interface/assets/api-BTWXbCPQ.css +0 -2
  404. package/dist/interface/assets/cameraSources-C3PFkewy.js +0 -1
  405. package/dist/interface/assets/cloudHandoff-B1HA65AZ.js +0 -1
  406. package/dist/interface/assets/main-C6AqiNZK.js +0 -3
  407. package/dist/interface/assets/main-Qqk3RyYP.css +0 -1
  408. package/dist/interface/assets/mqtt-DGNlVikj.js +0 -1
  409. package/dist/interface/assets/rooms-DL_uUrGc.js +0 -1
  410. package/dist/interface/assets/types-QIK1kdY6.js +0 -1
  411. package/dist/interface/assets/ungrouped-CupkuPIQ.js +0 -1
  412. package/dist/interface/assets/ungrouped-DTYy_Pud.css +0 -1
  413. package/dist/interface/assets/useBackupRestore-jdHT_hab.js +0 -1
  414. package/dist/interface/assets/vendor-core-BUse5adB.js +0 -1
  415. package/dist/interface/ha/CuiPluginOAuthButton-ChNW42ux.js +0 -105
  416. package/dist/interface/ha/SettingsAccount-xJy6kGf6.js +0 -970
  417. package/dist/interface/ha/SettingsNotifications-QCKfSffa.js +0 -529
@@ -0,0 +1,41 @@
1
+ import type { DBTrainingCandidate, DBTrainingSettings } from '../api/database/types.js';
2
+ import type { TrainingCandidateIngest, TrainingIngestResult } from '../rpc/interfaces/core.js';
3
+ import type { TrainingSubmissionPage, TrainingSubmitProgress, TrainingSubmitResult } from './types.js';
4
+ export declare class TrainingCandidateManager {
5
+ private logger;
6
+ private dbs;
7
+ private imagesDir;
8
+ private lastIngestAt;
9
+ private submitQueue;
10
+ private submitQueued;
11
+ private submitWorker?;
12
+ private submitProgress;
13
+ private retentionTimer?;
14
+ constructor();
15
+ register(): Promise<void>;
16
+ destroy(): Promise<void>;
17
+ getSettings(): DBTrainingSettings;
18
+ updateSettings(patch: Partial<DBTrainingSettings>): Promise<DBTrainingSettings>;
19
+ list(filter?: {
20
+ cameraId?: string;
21
+ status?: DBTrainingCandidate['status'];
22
+ }): DBTrainingCandidate[];
23
+ get(id: string): DBTrainingCandidate | undefined;
24
+ imagePath(id: string): string | null;
25
+ update(id: string, patch: Pick<Partial<DBTrainingCandidate>, 'boxes' | 'status'>): Promise<DBTrainingCandidate | undefined>;
26
+ queueSubmit(ids: string[]): Promise<TrainingSubmitResult>;
27
+ isUploadLocked(candidate: DBTrainingCandidate): boolean;
28
+ currentSubmitProgress(): TrainingSubmitProgress;
29
+ listSubmissions(cursor?: string): Promise<TrainingSubmissionPage>;
30
+ removeSubmission(id: string): Promise<void>;
31
+ remove(id: string): Promise<boolean>;
32
+ ingest(payload: TrainingCandidateIngest): Promise<TrainingIngestResult>;
33
+ private enforceCameraLimit;
34
+ private pruneExpired;
35
+ private pruneOrphanImages;
36
+ private runSubmitQueue;
37
+ private resetUploadLeftovers;
38
+ private emitSubmitProgress;
39
+ private trainingNamespace;
40
+ private emitChanged;
41
+ }
@@ -0,0 +1,249 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { mkdir, readdir, readFile, unlink, writeFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { container } from 'tsyringe';
5
+ const DEFAULT_SETTINGS = { enabled: true, perCameraLimit: 200, minIntervalSeconds: 10, retentionDays: 14 };
6
+ const SUBMIT_ITEM_DELAY_MS = 750;
7
+ const RETENTION_SWEEP_INTERVAL_MS = 6 * 60 * 60 * 1000;
8
+ export class TrainingCandidateManager {
9
+ logger;
10
+ dbs;
11
+ imagesDir;
12
+ lastIngestAt = new Map();
13
+ submitQueue = [];
14
+ submitQueued = new Set();
15
+ submitWorker;
16
+ submitProgress = { total: 0, done: 0, failed: 0 };
17
+ retentionTimer;
18
+ constructor() {
19
+ this.logger = container.resolve('logger');
20
+ this.dbs = container.resolve('dbs');
21
+ this.imagesDir = join(container.resolve('configService').STORAGE_PATH, 'training-candidates');
22
+ container.registerInstance('trainingCandidateManager', this);
23
+ }
24
+ async register() {
25
+ await mkdir(this.imagesDir, { recursive: true }).catch(() => { });
26
+ this.pruneOrphanImages().catch(() => { });
27
+ this.resetUploadLeftovers().catch(() => { });
28
+ this.pruneExpired().catch(() => { });
29
+ this.retentionTimer = setInterval(() => this.pruneExpired().catch(() => { }), RETENTION_SWEEP_INTERVAL_MS);
30
+ }
31
+ async destroy() {
32
+ clearInterval(this.retentionTimer);
33
+ }
34
+ getSettings() {
35
+ return { ...DEFAULT_SETTINGS, ...this.dbs.settingsDB.get('settings')?.training };
36
+ }
37
+ async updateSettings(patch) {
38
+ const next = { ...this.getSettings(), ...patch };
39
+ await this.dbs.commit(this.dbs.settingsDB, 'settings', (settings) => (settings ? { ...settings, training: next } : undefined));
40
+ if (patch.enabled !== undefined) {
41
+ container.resolve('proxy').coreManager?.publishCoreManagerEvent('trainingSettingsChanged', { enabled: next.enabled });
42
+ }
43
+ return next;
44
+ }
45
+ list(filter) {
46
+ const items = [];
47
+ for (const { value } of this.dbs.trainingCandidatesDB.getRange()) {
48
+ if (filter?.cameraId && value.cameraId !== filter.cameraId)
49
+ continue;
50
+ if (filter?.status && value.status !== filter.status)
51
+ continue;
52
+ items.push(value);
53
+ }
54
+ return items.sort((a, b) => b.createdAt - a.createdAt);
55
+ }
56
+ get(id) {
57
+ return this.dbs.trainingCandidatesDB.get(id);
58
+ }
59
+ imagePath(id) {
60
+ return this.dbs.trainingCandidatesDB.get(id) ? join(this.imagesDir, `${id}.jpg`) : null;
61
+ }
62
+ async update(id, patch) {
63
+ if (!this.dbs.trainingCandidatesDB.get(id))
64
+ return undefined;
65
+ await this.dbs.commit(this.dbs.trainingCandidatesDB, id, (candidate) => candidate ? { ...candidate, ...patch, upload: undefined, uploadError: undefined } : undefined);
66
+ const updated = this.dbs.trainingCandidatesDB.get(id);
67
+ this.emitChanged(updated?.cameraId);
68
+ return updated;
69
+ }
70
+ async queueSubmit(ids) {
71
+ let queued = 0;
72
+ for (const id of ids) {
73
+ const candidate = this.dbs.trainingCandidatesDB.get(id);
74
+ if (candidate?.status !== 'verified' || this.isUploadLocked(candidate) || this.submitQueued.has(id))
75
+ continue;
76
+ await this.dbs.commit(this.dbs.trainingCandidatesDB, id, (c) => (c ? { ...c, upload: 'queued', uploadError: undefined } : undefined));
77
+ this.submitQueued.add(id);
78
+ this.submitQueue.push(id);
79
+ queued++;
80
+ }
81
+ if (queued > 0) {
82
+ this.submitProgress.total += queued;
83
+ this.emitChanged();
84
+ this.emitSubmitProgress(true);
85
+ this.submitWorker ??= this.runSubmitQueue().finally(() => {
86
+ this.submitWorker = undefined;
87
+ });
88
+ }
89
+ return { queued };
90
+ }
91
+ isUploadLocked(candidate) {
92
+ return candidate.upload === 'queued' || candidate.upload === 'uploading';
93
+ }
94
+ currentSubmitProgress() {
95
+ return { active: this.submitWorker !== undefined, ...this.submitProgress };
96
+ }
97
+ async listSubmissions(cursor) {
98
+ const page = await container.resolve('cloudApi').trainRoute.list(cursor);
99
+ return {
100
+ items: page.items.map((s) => ({
101
+ id: s.id,
102
+ labels: s.labels,
103
+ imageBytes: s.image_bytes,
104
+ createdAt: s.created_at,
105
+ usedInWave: s.used_in_wave,
106
+ imageUrl: s.image_url,
107
+ })),
108
+ nextCursor: page.next_cursor,
109
+ total: page.total,
110
+ };
111
+ }
112
+ async removeSubmission(id) {
113
+ await container.resolve('cloudApi').trainRoute.remove(id);
114
+ }
115
+ async remove(id) {
116
+ const candidate = this.dbs.trainingCandidatesDB.get(id);
117
+ if (!candidate)
118
+ return false;
119
+ await this.dbs.trainingCandidatesDB.remove(id);
120
+ await unlink(join(this.imagesDir, `${id}.jpg`)).catch(() => { });
121
+ this.emitChanged(candidate.cameraId);
122
+ return true;
123
+ }
124
+ async ingest(payload) {
125
+ const settings = this.getSettings();
126
+ if (!settings.enabled)
127
+ return 'disabled';
128
+ if (payload.boxes.length === 0 || payload.scene.length === 0)
129
+ return 'skip';
130
+ const last = this.lastIngestAt.get(payload.cameraId) ?? 0;
131
+ if (payload.capturedAt - last < settings.minIntervalSeconds * 1000)
132
+ return 'skip';
133
+ this.lastIngestAt.set(payload.cameraId, payload.capturedAt);
134
+ const id = randomUUID();
135
+ await writeFile(join(this.imagesDir, `${id}.jpg`), payload.scene);
136
+ this.dbs.trainingCandidatesDB.put(id, {
137
+ id,
138
+ cameraId: payload.cameraId,
139
+ eventId: payload.eventId,
140
+ createdAt: payload.capturedAt,
141
+ status: 'new',
142
+ boxes: payload.boxes,
143
+ });
144
+ await this.enforceCameraLimit(payload.cameraId, settings.perCameraLimit);
145
+ this.emitChanged(payload.cameraId);
146
+ return 'stored';
147
+ }
148
+ async enforceCameraLimit(cameraId, limit) {
149
+ // verified candidates are the user's work, eviction only eats unreviewed ones
150
+ const candidates = this.list({ cameraId });
151
+ const evictable = candidates.filter((c) => c.status !== 'verified');
152
+ const overflow = candidates.length - limit;
153
+ if (overflow <= 0)
154
+ return;
155
+ for (const candidate of evictable.slice(-overflow)) {
156
+ await this.dbs.trainingCandidatesDB.remove(candidate.id);
157
+ await unlink(join(this.imagesDir, `${candidate.id}.jpg`)).catch(() => { });
158
+ }
159
+ }
160
+ async pruneExpired() {
161
+ const cutoff = Date.now() - this.getSettings().retentionDays * 24 * 60 * 60 * 1000;
162
+ let removed = 0;
163
+ for (const { key, value } of this.dbs.trainingCandidatesDB.getRange()) {
164
+ if (value.status !== 'new' || value.createdAt >= cutoff || this.isUploadLocked(value))
165
+ continue;
166
+ const id = String(key);
167
+ await this.dbs.trainingCandidatesDB.remove(id);
168
+ await unlink(join(this.imagesDir, `${id}.jpg`)).catch(() => { });
169
+ removed++;
170
+ }
171
+ if (removed > 0) {
172
+ this.logger.debug(`Training: pruned ${removed} expired candidates`);
173
+ this.emitChanged();
174
+ }
175
+ }
176
+ async pruneOrphanImages() {
177
+ const files = await readdir(this.imagesDir).catch(() => []);
178
+ if (files.length === 0)
179
+ return;
180
+ const referenced = new Set();
181
+ for (const { key } of this.dbs.trainingCandidatesDB.getRange())
182
+ referenced.add(String(key));
183
+ for (const file of files) {
184
+ if (referenced.has(file.replace(/\.jpg$/, '')))
185
+ continue;
186
+ await unlink(join(this.imagesDir, file)).catch(() => { });
187
+ }
188
+ }
189
+ async runSubmitQueue() {
190
+ const cloudApi = container.resolve('cloudApi');
191
+ for (;;) {
192
+ const id = this.submitQueue.shift();
193
+ if (!id)
194
+ break;
195
+ this.submitQueued.delete(id);
196
+ const candidate = this.dbs.trainingCandidatesDB.get(id);
197
+ if (candidate?.status !== 'verified')
198
+ continue;
199
+ await this.dbs.commit(this.dbs.trainingCandidatesDB, id, (c) => (c ? { ...c, upload: 'uploading' } : undefined));
200
+ this.emitChanged(candidate.cameraId);
201
+ try {
202
+ const image = await readFile(join(this.imagesDir, `${id}.jpg`));
203
+ await cloudApi.trainRoute.submit(candidate.boxes, candidate.createdAt, image);
204
+ await this.dbs.trainingCandidatesDB.remove(id);
205
+ await unlink(join(this.imagesDir, `${id}.jpg`)).catch(() => { });
206
+ this.submitProgress.done++;
207
+ }
208
+ catch (error) {
209
+ const message = error?.message ?? String(error);
210
+ await this.dbs.commit(this.dbs.trainingCandidatesDB, id, (c) => (c ? { ...c, upload: 'failed', uploadError: message } : undefined));
211
+ this.submitProgress.failed++;
212
+ }
213
+ this.emitChanged(candidate.cameraId);
214
+ this.emitSubmitProgress(true);
215
+ if (this.submitQueue.length > 0)
216
+ await new Promise((resolve) => setTimeout(resolve, SUBMIT_ITEM_DELAY_MS));
217
+ }
218
+ this.emitSubmitProgress(false);
219
+ this.submitProgress = { total: 0, done: 0, failed: 0 };
220
+ }
221
+ async resetUploadLeftovers() {
222
+ for (const { key, value } of this.dbs.trainingCandidatesDB.getRange()) {
223
+ const id = String(key);
224
+ if (value.submittedAt || value.status === 'ignored') {
225
+ await this.dbs.trainingCandidatesDB.remove(id);
226
+ await unlink(join(this.imagesDir, `${id}.jpg`)).catch(() => { });
227
+ continue;
228
+ }
229
+ if (this.isUploadLocked(value)) {
230
+ await this.dbs.commit(this.dbs.trainingCandidatesDB, id, (c) => (c ? { ...c, upload: undefined } : undefined));
231
+ }
232
+ }
233
+ }
234
+ emitSubmitProgress(active) {
235
+ this.trainingNamespace()?.emitSubmitProgress({ active, ...this.submitProgress });
236
+ }
237
+ trainingNamespace() {
238
+ try {
239
+ return container.resolve('socketService').namespaces.get('/training');
240
+ }
241
+ catch {
242
+ return undefined;
243
+ }
244
+ }
245
+ emitChanged(cameraId) {
246
+ this.trainingNamespace()?.emitCandidatesChanged(cameraId);
247
+ }
248
+ }
249
+ //# sourceMappingURL=trainingCandidateManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trainingCandidateManager.js","sourceRoot":"","sources":["../../../../src/manager/trainingCandidateManager.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Notification, NotifierDevice } from '@camera.ui/sdk';
2
+ import type { DBTrainingCandidateBox } from '../api/database/types.js';
2
3
  export type NotificationSourceKind = 'plugin' | 'system' | 'automation';
3
4
  export interface NotificationSource {
4
5
  id: string;
@@ -41,3 +42,25 @@ export interface NotifierDeviceWithSource extends NotifierDevice {
41
42
  pluginId: string;
42
43
  pluginName: string;
43
44
  }
45
+ export interface TrainingSubmitResult {
46
+ queued: number;
47
+ }
48
+ export interface TrainingSubmitProgress {
49
+ active: boolean;
50
+ total: number;
51
+ done: number;
52
+ failed: number;
53
+ }
54
+ export interface TrainingSubmission {
55
+ id: string;
56
+ labels: DBTrainingCandidateBox[];
57
+ imageBytes: number;
58
+ createdAt: string;
59
+ usedInWave?: string;
60
+ imageUrl?: string;
61
+ }
62
+ export interface TrainingSubmissionPage {
63
+ items: TrainingSubmission[];
64
+ nextCursor?: string;
65
+ total?: number;
66
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/manager/types.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,qBAAqB,EAAE,gCAAgC;IACvD,aAAa,EAAE,uBAAuB;IACtC,kBAAkB,EAAE,4BAA4B;IAChD,eAAe,EAAE,yBAAyB;IAC1C,kBAAkB,EAAE,6BAA6B;IACjD,qBAAqB,EAAE,gCAAgC;IACvD,WAAW,EAAE,8BAA8B;CACnC,CAAC;AAIX,MAAM,CAAC,MAAM,yBAAyB,GAAsC;IAC1E,EAAE,IAAI,EAAE,wBAAwB,CAAC,qBAAqB,EAAE,KAAK,EAAE,0BAA0B,EAAE;IAC3F,EAAE,IAAI,EAAE,wBAAwB,CAAC,aAAa,EAAE,KAAK,EAAE,4BAA4B,EAAE;IACrF,EAAE,IAAI,EAAE,wBAAwB,CAAC,kBAAkB,EAAE,KAAK,EAAE,iCAAiC,EAAE;IAC/F,EAAE,IAAI,EAAE,wBAAwB,CAAC,eAAe,EAAE,KAAK,EAAE,yBAAyB,EAAE;IACpF,EAAE,IAAI,EAAE,wBAAwB,CAAC,kBAAkB,EAAE,KAAK,EAAE,sBAAsB,EAAE;IACpF,EAAE,IAAI,EAAE,wBAAwB,CAAC,qBAAqB,EAAE,KAAK,EAAE,0BAA0B,EAAE;IAC3F,EAAE,IAAI,EAAE,wBAAwB,CAAC,WAAW,EAAE,KAAK,EAAE,wBAAwB,EAAE;CACvE,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/manager/types.ts"],"names":[],"mappings":"AA4BA,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,qBAAqB,EAAE,gCAAgC;IACvD,aAAa,EAAE,uBAAuB;IACtC,kBAAkB,EAAE,4BAA4B;IAChD,eAAe,EAAE,yBAAyB;IAC1C,kBAAkB,EAAE,6BAA6B;IACjD,qBAAqB,EAAE,gCAAgC;IACvD,WAAW,EAAE,8BAA8B;CACnC,CAAC;AAIX,MAAM,CAAC,MAAM,yBAAyB,GAAsC;IAC1E,EAAE,IAAI,EAAE,wBAAwB,CAAC,qBAAqB,EAAE,KAAK,EAAE,0BAA0B,EAAE;IAC3F,EAAE,IAAI,EAAE,wBAAwB,CAAC,aAAa,EAAE,KAAK,EAAE,4BAA4B,EAAE;IACrF,EAAE,IAAI,EAAE,wBAAwB,CAAC,kBAAkB,EAAE,KAAK,EAAE,iCAAiC,EAAE;IAC/F,EAAE,IAAI,EAAE,wBAAwB,CAAC,eAAe,EAAE,KAAK,EAAE,yBAAyB,EAAE;IACpF,EAAE,IAAI,EAAE,wBAAwB,CAAC,kBAAkB,EAAE,KAAK,EAAE,sBAAsB,EAAE;IACpF,EAAE,IAAI,EAAE,wBAAwB,CAAC,qBAAqB,EAAE,KAAK,EAAE,0BAA0B,EAAE;IAC3F,EAAE,IAAI,EAAE,wBAAwB,CAAC,WAAW,EAAE,KAAK,EAAE,wBAAwB,EAAE;CACvE,CAAC"}
@@ -1,9 +1,11 @@
1
1
  import { CloudCredentialStore } from './credentialStore.js';
2
2
  import { OAuthRoute } from './routes/oauth.js';
3
3
  import { ServerRoute } from './routes/server.js';
4
+ import { TrainRoute } from './routes/train.js';
4
5
  export declare class CloudApi {
5
6
  readonly oauthRoute: OAuthRoute;
6
7
  readonly serverRoute: ServerRoute;
8
+ readonly trainRoute: TrainRoute;
7
9
  readonly credentialStore: CloudCredentialStore;
8
10
  constructor();
9
11
  }
@@ -2,15 +2,18 @@ import { container } from 'tsyringe';
2
2
  import { CloudCredentialStore } from './credentialStore.js';
3
3
  import { OAuthRoute } from './routes/oauth.js';
4
4
  import { ServerRoute } from './routes/server.js';
5
+ import { TrainRoute } from './routes/train.js';
5
6
  export class CloudApi {
6
7
  oauthRoute;
7
8
  serverRoute;
9
+ trainRoute;
8
10
  credentialStore;
9
11
  constructor() {
10
12
  container.registerInstance('cloudApi', this);
11
13
  this.credentialStore = new CloudCredentialStore();
12
14
  this.oauthRoute = new OAuthRoute(this.credentialStore);
13
15
  this.serverRoute = new ServerRoute(this.credentialStore);
16
+ this.trainRoute = new TrainRoute(this.credentialStore);
14
17
  }
15
18
  }
16
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/remote/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,OAAO,QAAQ;IACH,UAAU,CAAa;IACvB,WAAW,CAAc;IACzB,eAAe,CAAuB;IAEtD;QACE,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE7C,IAAI,CAAC,eAAe,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC3D,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/remote/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,OAAO,QAAQ;IACH,UAAU,CAAa;IACvB,WAAW,CAAc;IACzB,UAAU,CAAa;IACvB,eAAe,CAAuB;IAEtD;QACE,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE7C,IAAI,CAAC,eAAe,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACzD,CAAC;CACF"}
@@ -1,7 +1,7 @@
1
1
  import { hostname } from 'node:os';
2
2
  import { assertResponseOk, cloudFetch } from '../instance.js';
3
3
  const CLIENT_ID = 'camera-ui-server';
4
- const SCOPES = 'server:register server:update server:share server:unregister tunnel:connect';
4
+ const SCOPES = 'server:register server:update server:share server:unregister tunnel:connect train:submit';
5
5
  export class OAuthRoute {
6
6
  credentialStore;
7
7
  constructor(credentialStore) {
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../../../../src/remote/api/routes/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAsB9D,MAAM,SAAS,GAAG,kBAAkB,CAAC;AACrC,MAAM,MAAM,GAAG,6EAA6E,CAAC;AAE7F,MAAM,OAAO,UAAU;IACD;IAApB,YAAoB,eAAqC;QAArC,oBAAe,GAAf,eAAe,CAAsB;IAAG,CAAC;IAEtD,KAAK,CAAC,eAAe,CAAC,iBAA0B;QACrD,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;YAC/B,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,QAAQ,EAAE;SACxB,CAAC,CAAC;QACH,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,oBAAoB,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI;SACL,CAAC,CAAC;QACH,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;IAClD,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,UAAkB;QAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI,EAAE,IAAI,eAAe,CAAC;gBACxB,UAAU,EAAE,8CAA8C;gBAC1D,WAAW,EAAE,UAAU;gBACvB,SAAS,EAAE,SAAS;aACrB,CAAC;SACH,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAQ7B,CAAC;QAEF,IAAI,IAAI,CAAC,KAAK,KAAK,uBAAuB,EAAE,CAAC;YAC3C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAC/B,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,EAAE,CAAC;YACnC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,EAAE,CAAC;YACnC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACtD,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;gBACjC,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,IAAI;gBACtD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC/C,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;aAChC,CAAC,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACnF,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,SAAS,CAAC,eAAe,EAAE;YAC/B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI,EAAE,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;SAChF,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../../../../src/remote/api/routes/oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { DBTrainingCandidateBox } from '../../../api/database/types.js';
2
+ import type { CloudCredentialStore } from '../credentialStore.js';
3
+ export interface CloudTrainSubmission {
4
+ id: string;
5
+ status: string;
6
+ labels: DBTrainingCandidateBox[];
7
+ image_bytes: number;
8
+ created_at: string;
9
+ used_in_wave?: string;
10
+ image_url?: string;
11
+ }
12
+ export interface CloudTrainSubmissionPage {
13
+ items: CloudTrainSubmission[];
14
+ next_cursor?: string;
15
+ total?: number;
16
+ }
17
+ export declare class TrainRoute {
18
+ private credentialStore;
19
+ constructor(credentialStore: CloudCredentialStore);
20
+ submit(boxes: DBTrainingCandidateBox[], capturedAt: number, image: Buffer): Promise<string>;
21
+ list(cursor?: string): Promise<CloudTrainSubmissionPage>;
22
+ remove(id: string): Promise<void>;
23
+ private fetchCloud;
24
+ }
@@ -0,0 +1,51 @@
1
+ import { assertResponseOk, cloudFetch } from '../instance.js';
2
+ const LIST_PAGE_SIZE = 30;
3
+ export class TrainRoute {
4
+ credentialStore;
5
+ constructor(credentialStore) {
6
+ this.credentialStore = credentialStore;
7
+ }
8
+ async submit(boxes, capturedAt, image) {
9
+ const createRes = await this.fetchCloud()('/api/v1/train/submissions', {
10
+ method: 'POST',
11
+ headers: { 'Content-Type': 'application/json' },
12
+ body: JSON.stringify({ boxes, captured_at: capturedAt }),
13
+ });
14
+ await assertResponseOk(createRes);
15
+ const created = (await createRes.json());
16
+ if (image.byteLength > created.max_image_bytes) {
17
+ throw new Error('Image exceeds the submission size limit');
18
+ }
19
+ const uploadRes = await fetch(created.upload_url, {
20
+ method: 'PUT',
21
+ headers: created.upload_headers,
22
+ body: new Uint8Array(image),
23
+ });
24
+ if (!uploadRes.ok) {
25
+ throw new Error(`Image upload failed (${uploadRes.status})`);
26
+ }
27
+ const completeRes = await this.fetchCloud()(`/api/v1/train/submissions/${created.id}/complete`, { method: 'POST' });
28
+ await assertResponseOk(completeRes);
29
+ return created.id;
30
+ }
31
+ async list(cursor) {
32
+ const params = new URLSearchParams({ limit: String(LIST_PAGE_SIZE) });
33
+ if (cursor)
34
+ params.set('cursor', cursor);
35
+ const res = await this.fetchCloud()(`/api/v1/train/submissions?${params.toString()}`, { method: 'GET' });
36
+ await assertResponseOk(res);
37
+ return (await res.json());
38
+ }
39
+ async remove(id) {
40
+ const res = await this.fetchCloud()(`/api/v1/train/submissions/${id}`, { method: 'DELETE' });
41
+ await assertResponseOk(res);
42
+ }
43
+ fetchCloud() {
44
+ return cloudFetch({
45
+ target: 'cloud',
46
+ credentialStore: this.credentialStore,
47
+ requiredScopes: ['train:submit'],
48
+ });
49
+ }
50
+ }
51
+ //# sourceMappingURL=train.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"train.js","sourceRoot":"","sources":["../../../../../../src/remote/api/routes/train.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA4B9D,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,MAAM,OAAO,UAAU;IACD;IAApB,YAAoB,eAAqC;QAArC,oBAAe,GAAf,eAAe,CAAsB;IAAG,CAAC;IAEtD,KAAK,CAAC,MAAM,CAAC,KAA+B,EAAE,UAAkB,EAAE,KAAa;QACpF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,2BAA2B,EAAE;YACrE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;SACzD,CAAC,CAAC;QACH,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAkC,CAAC;QAE1E,IAAI,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE;YAChD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,OAAO,CAAC,cAAc;YAC/B,IAAI,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,6BAA6B,OAAO,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACpH,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC,EAAE,CAAC;IACpB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAe;QAC/B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACtE,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,6BAA6B,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA6B,CAAC;IACxD,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,EAAU;QAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,6BAA6B,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7F,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAEO,UAAU;QAChB,OAAO,UAAU,CAAC;YAChB,MAAM,EAAE,OAAO;YACf,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc,EAAE,CAAC,cAAc,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -5,6 +5,7 @@ import { DiscoveryManager } from '../manager/discoveryManager.js';
5
5
  import { DownloadManager } from '../manager/downloadManager.js';
6
6
  import { NotificationManager } from '../manager/notificationManager.js';
7
7
  import { TerminalManager } from '../manager/terminalManager.js';
8
+ import { TrainingCandidateManager } from '../manager/trainingCandidateManager.js';
8
9
  import { NATS } from './server.js';
9
10
  import type { RPCClient } from '@camera.ui/rpc';
10
11
  import type { ProxyAuth } from './interfaces/config.js';
@@ -17,6 +18,7 @@ export declare class ProxyServer {
17
18
  discoveryManager: DiscoveryManager;
18
19
  downloadManager: DownloadManager;
19
20
  notificationManager: NotificationManager;
21
+ trainingCandidateManager: TrainingCandidateManager;
20
22
  terminalManager: TerminalManager;
21
23
  auth: ProxyAuth;
22
24
  private api?;
@@ -10,6 +10,7 @@ import { DiscoveryManager } from '../manager/discoveryManager.js';
10
10
  import { DownloadManager } from '../manager/downloadManager.js';
11
11
  import { NotificationManager } from '../manager/notificationManager.js';
12
12
  import { TerminalManager } from '../manager/terminalManager.js';
13
+ import { TrainingCandidateManager } from '../manager/trainingCandidateManager.js';
13
14
  import { NATS } from './server.js';
14
15
  import { generateCredentials, safeAsync } from './utils.js';
15
16
  export class ProxyServer {
@@ -21,6 +22,7 @@ export class ProxyServer {
21
22
  discoveryManager;
22
23
  downloadManager;
23
24
  notificationManager;
25
+ trainingCandidateManager;
24
26
  terminalManager;
25
27
  auth = {
26
28
  cluster: generateCredentials(),
@@ -53,6 +55,7 @@ export class ProxyServer {
53
55
  this.downloadManager = new DownloadManager();
54
56
  this.notificationManager = new NotificationManager();
55
57
  this.terminalManager = new TerminalManager();
58
+ this.trainingCandidateManager = new TrainingCandidateManager();
56
59
  // this.api.setMaxListeners(this.api.getMaxListeners() + 1);
57
60
  // this.api.once(API_EVENT.SHUTDOWN, this.close.bind(this));
58
61
  }
@@ -121,6 +124,7 @@ export class ProxyServer {
121
124
  await this.discoveryManager.register();
122
125
  await this.downloadManager.register();
123
126
  await this.notificationManager.register();
127
+ await this.trainingCandidateManager.register();
124
128
  await this.terminalManager.register();
125
129
  }
126
130
  }
@@ -131,6 +135,7 @@ export class ProxyServer {
131
135
  await safeAsync(this.downloadManager.destroy());
132
136
  await safeAsync(this.discoveryManager.destroy());
133
137
  await safeAsync(this.notificationManager.destroy());
138
+ await safeAsync(this.trainingCandidateManager.destroy());
134
139
  }
135
140
  await safeAsync(this.server.stop());
136
141
  // proxy is unset when startup failed before initialize() (e.g. pairing)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rpc/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rpc/index.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,25 @@ export interface FloorPlan {
7
7
  rooms: DBRoomCatalog;
8
8
  plan: DBFloorPlan;
9
9
  }
10
+ export interface TrainingCandidateBox {
11
+ label: string;
12
+ confidence: number;
13
+ x: number;
14
+ y: number;
15
+ width: number;
16
+ height: number;
17
+ }
18
+ export interface TrainingCandidateIngest {
19
+ cameraId: string;
20
+ eventId: string;
21
+ capturedAt: number;
22
+ boxes: TrainingCandidateBox[];
23
+ scene: Uint8Array;
24
+ }
25
+ export type TrainingIngestResult = 'stored' | 'skip' | 'disabled';
10
26
  export interface CoreManagerInterface {
27
+ ingestTrainingCandidate(payload: TrainingCandidateIngest): Promise<TrainingIngestResult>;
28
+ getTrainingCollectionEnabled(): Promise<boolean>;
11
29
  getFFmpegPath(): Promise<string>;
12
30
  getServerAddresses(): Promise<string[]>;
13
31
  getCloudServerId(): Promise<string>;
@@ -19,6 +37,9 @@ export interface CoreManagerProxyEvents {
19
37
  cloudAccountChanged: {
20
38
  connected: boolean;
21
39
  };
40
+ trainingSettingsChanged: {
41
+ enabled: boolean;
42
+ };
22
43
  pluginStatusChanged: {
23
44
  pluginName: string;
24
45
  running: boolean;
@@ -95,6 +95,8 @@ export class NATS {
95
95
  'rpc.plugin.*.child.rpc.getSystemEvents',
96
96
  'rpc.plugin.*.child.rpc.getClipReindexStatus',
97
97
  'rpc.plugin.*.child.rpc.onClipReindex',
98
+ 'rpc.plugin.*.child.rpc.getFacesRescanStatus',
99
+ 'rpc.plugin.*.child.rpc.onFacesRescan',
98
100
  'rpc.plugin.*.child.rpc.onRecordingState',
99
101
  'rpc.plugin.*.child.rpc.onSystemEvent',
100
102
  'rpc.plugin.*.child.rpc.onEventsDeleted',