@camera.ui/server 0.0.111 → 0.0.113

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 (341) hide show
  1. package/dist/interface/assets/{404-CGV2uv4y.js → 404-CZtDF9in.js} +1 -1
  2. package/dist/interface/assets/{About-Cc2eFlW5.js → About-BzuuHdW1.js} +1 -1
  3. package/dist/interface/assets/{Adminpanel-EjUhiapF.js → Adminpanel-uj7eTmlN.js} +1 -1
  4. package/dist/interface/assets/Automation-D0ps_z9e.js +2 -0
  5. package/dist/interface/assets/AutomationImport-CR4Vsxkb.js +2 -0
  6. package/dist/interface/assets/AutomationStore-BcMX7WbG.js +2 -0
  7. package/dist/interface/assets/AutomationStore-Q25Okhz8.css +1 -0
  8. package/dist/interface/assets/AutomationStoreDetail--egqUOqn.css +1 -0
  9. package/dist/interface/assets/AutomationStoreDetail-D6Ugj8ba.js +2 -0
  10. package/dist/interface/assets/Automations-DBACrYHy.js +2 -0
  11. package/dist/interface/assets/{Camera-C3Il4X2T.js → Camera-Cf4QZbsx.js} +2 -2
  12. package/dist/interface/assets/{CameraConsole-70m5hucZ.js → CameraConsole-uD4aWou8.js} +1 -1
  13. package/dist/interface/assets/{Cameras-BJUWRm26.js → Cameras-DbBU5mou.js} +2 -2
  14. package/dist/interface/assets/{Camview-Gxca3bvT.css → Camview-CDM4Q_tc.css} +1 -1
  15. package/dist/interface/assets/Camview-DD9jLT7-.js +1 -0
  16. package/dist/interface/assets/Config-B9jI0lTQ.js +2 -0
  17. package/dist/interface/assets/{ConfigActionCameraControl-DBRh1R9m.js → ConfigActionCameraControl-D4hJLWmj.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionNotification-MJAViQFR.js → ConfigActionNotification-B5cCmBXr.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionPlugin-C2gSPDim.js → ConfigActionPlugin-B7YAbFlf.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionSensor-Dv7Hgx92.js → ConfigActionSensor-D_Dt1qtt.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionSnapshot-CB6IQ_jP.js → ConfigActionSnapshot-ClyCQuB3.js} +1 -1
  22. package/dist/interface/assets/{ConfigConditionIfElse-Nd0_qDVA.js → ConfigConditionIfElse-Bhd2FYyz.js} +1 -1
  23. package/dist/interface/assets/{ConfigConditionSensorState-CHYw1D90.js → ConfigConditionSensorState-x0M0kHwL.js} +1 -1
  24. package/dist/interface/assets/{ConfigConditionSwitch-DsJEOPx0.js → ConfigConditionSwitch-CC0w-Hvy.js} +1 -1
  25. package/dist/interface/assets/{ConfigTriggerDetection-C-e6Z1m9.js → ConfigTriggerDetection-DWjlecON.js} +1 -1
  26. package/dist/interface/assets/ConfigTriggerGeofence-CTqptMUN.js +1 -0
  27. package/dist/interface/assets/{ConfigTriggerSensor-C9DsLW_Z.js → ConfigTriggerSensor-DuCtavZo.js} +1 -1
  28. package/dist/interface/assets/{ConfigTriggerSystem-CdOgSvDy.js → ConfigTriggerSystem-D1oGAhLn.js} +1 -1
  29. package/dist/interface/assets/{Console-bCie-JmB.js → Console-DrDqDUtO.js} +1 -1
  30. package/dist/interface/assets/{CuiAvatar-Bbdxpgvs.js → CuiAvatar-of_eVQsv.js} +1 -1
  31. package/dist/interface/assets/{CuiBottomSheet-2SNSjqOZ.js → CuiBottomSheet-B7aQ7GCw.js} +1 -1
  32. package/dist/interface/assets/CuiBottomSheet-DKUg_g5x.js +1 -0
  33. package/dist/interface/assets/CuiCameraCard-IyJNZMGs.js +1 -0
  34. package/dist/interface/assets/{CuiCameraPipCard-BMxMzolT.js → CuiCameraPipCard-KUBxGPoU.js} +1 -1
  35. package/dist/interface/assets/{CuiCameraRecordings-DLjYt8vJ.js → CuiCameraRecordings-iWAFGo8e.js} +1 -1
  36. package/dist/interface/assets/{CuiCameraShares-CLN2wuHG.js → CuiCameraShares-BCMYN11A.js} +1 -1
  37. package/dist/interface/assets/{CuiCameraSnapshot-C7wIpD9K.js → CuiCameraSnapshot-DTtvEMy1.js} +1 -1
  38. package/dist/interface/assets/{CuiCameraTable-CCpYHBTn.js → CuiCameraTable-B7g53tPM.js} +1 -1
  39. package/dist/interface/assets/{CuiImage-CoVi1BKR.js → CuiImage-B97QDAl7.js} +1 -1
  40. package/dist/interface/assets/{CuiMarkdownContent-YieurDkL.js → CuiMarkdownContent-DaJ8HzaP.js} +1 -1
  41. package/dist/interface/assets/CuiMarkdownContent-qIS8eQHX.js +1 -0
  42. package/dist/interface/assets/{CuiMenu-vSJpyg_1.js → CuiMenu-Ds6GufVn.js} +1 -1
  43. package/dist/interface/assets/{CuiPluginCard-CwGKyEU6.js → CuiPluginCard-D1SylQbM.js} +2 -2
  44. package/dist/interface/assets/CuiPluginCategoryChip-CdGrTCxH.css +1 -0
  45. package/dist/interface/assets/CuiPluginCategoryChip-rfdhCEi-.js +1 -0
  46. package/dist/interface/assets/{CuiPluginOAuthButton-CxNqrBe7.js → CuiPluginOAuthButton-X8ZGFPwW.js} +2 -2
  47. package/dist/interface/assets/CuiPluginTrustBadge-QHTLaN1n.css +1 -0
  48. package/dist/interface/assets/CuiPluginTrustBadge-YhfqGTyR.js +1 -0
  49. package/dist/interface/assets/{CuiQRCode-CP6aDzF5.js → CuiQRCode-D_31ri5b.js} +1 -1
  50. package/dist/interface/assets/{CuiRecordingsGrid-BNyITEKD.js → CuiRecordingsGrid-CzMzhUXb.js} +1 -1
  51. package/dist/interface/assets/{CuiSchema-Bdy2raxw.js → CuiSchema-CfqOJmDH.js} +1 -1
  52. package/dist/interface/assets/{Faces-DufdNYrc.js → Faces-IVmqcGuF.js} +1 -1
  53. package/dist/interface/assets/FirstSteps-Boec1bzd.js +1 -0
  54. package/dist/interface/assets/{Instances-CxgKUsJh.js → Instances-kmkRiBrV.js} +1 -1
  55. package/dist/interface/assets/{Logs-CJcq3xd6.js → Logs-DzR8mmLu.js} +2 -2
  56. package/dist/interface/assets/{Menu-BlYf1LF3.js → Menu-Cl-biyd7.js} +1 -1
  57. package/dist/interface/assets/{OAuthDeviceFlow-k6_zfcw_.js → OAuthDeviceFlow-Cp9uZWm1.js} +1 -1
  58. package/dist/interface/assets/Plugin-CeLrucXT.js +1 -0
  59. package/dist/interface/assets/Plugin-Yv0ZmTNZ.css +1 -0
  60. package/dist/interface/assets/{PluginConsole-CQebF4NZ.js → PluginConsole-BdbmROpF.js} +1 -1
  61. package/dist/interface/assets/PluginDetail-DKywYzmS.js +2 -0
  62. package/dist/interface/assets/PluginDetail-DbYxVe3g.css +1 -0
  63. package/dist/interface/assets/{PluginSchema-CcWTcoz_.js → PluginSchema-CWcq67pj.js} +1 -1
  64. package/dist/interface/assets/PluginSearch-BC1L0-VN.js +1 -0
  65. package/dist/interface/assets/PluginSearch-DCuLwE3v.js +2 -0
  66. package/dist/interface/assets/PluginSearch-XjGr5qdW.css +1 -0
  67. package/dist/interface/assets/Plugins-DMLQY_6J.js +1 -0
  68. package/dist/interface/assets/{Recordings-BgqhrYcF.js → Recordings--XaVJZJi.js} +1 -1
  69. package/dist/interface/assets/{Settings-BVa4xU_p.js → Settings-BljKDhYY.js} +1 -1
  70. package/dist/interface/assets/SettingsAccount-DFMOh1ci.js +1 -0
  71. package/dist/interface/assets/{SettingsAccount-UKbQLW6n.js → SettingsAccount-DKHO4mDj.js} +1 -1
  72. package/dist/interface/assets/SettingsAppearance-DzG2tlwK.js +1 -0
  73. package/dist/interface/assets/{SettingsAppearance-e45pjRF6.js → SettingsAppearance-V5aeQ9c8.js} +1 -1
  74. package/dist/interface/assets/{SettingsBackup-t2irnG2Z.js → SettingsBackup-CfOHDar8.js} +1 -1
  75. package/dist/interface/assets/{SettingsNotifications-te4LKEdZ.js → SettingsNotifications-BZ1IXj0a.js} +1 -1
  76. package/dist/interface/assets/{SettingsRecordings-x4yRgxJm.js → SettingsRecordings-BsJ9z-RE.js} +1 -1
  77. package/dist/interface/assets/SettingsRemote-Bf8bqXYs.js +1 -0
  78. package/dist/interface/assets/SettingsSystem-obAYrm8J.js +2 -0
  79. package/dist/interface/assets/{SettingsUsers-DLAYh9IA.js → SettingsUsers-Ciu1ry18.js} +1 -1
  80. package/dist/interface/assets/{Terminal-BsdUon5-.js → Terminal-CD9he5xW.js} +1 -1
  81. package/dist/interface/assets/VersionsHandler-Dpo-L314.js +7 -0
  82. package/dist/interface/assets/Workers-DCx1wSq5.css +1 -0
  83. package/dist/interface/assets/Workers-DiIBLgfr.js +2 -0
  84. package/dist/interface/assets/account-DqOHQKv8.js +1 -0
  85. package/dist/interface/assets/alert-circle-azHizGIK.js +1 -0
  86. package/dist/interface/assets/api-CbBOEbKQ.js +1 -0
  87. package/dist/interface/assets/api-aSYFKxo6.js +2 -0
  88. package/dist/interface/assets/api-vCJ1T8Ow.css +2 -0
  89. package/dist/interface/assets/{auth-DJ1WgC3s.js → auth-cdPNNpNC.js} +1 -1
  90. package/dist/interface/assets/automationBlueprint-DMjszOs4.js +1 -0
  91. package/dist/interface/assets/automations-E7vwN3kw.js +1 -0
  92. package/dist/interface/assets/{backup-DYBEA8gj.js → backup-Co1bwdSv.js} +1 -1
  93. package/dist/interface/assets/bell-ring-CenQn4Yt.js +1 -0
  94. package/dist/interface/assets/bug-DPw8k4Lk.js +1 -0
  95. package/dist/interface/assets/{cameras-WikE4nxe.js → cameras-CvJDLEZ3.js} +1 -1
  96. package/dist/interface/assets/{cameras.schema-BULBdfmS.js → cameras.schema-Clwro_L9.js} +1 -1
  97. package/dist/interface/assets/cctv-CBtg_v6o.js +1 -0
  98. package/dist/interface/assets/check-circle-BauXcL6H.js +1 -0
  99. package/dist/interface/assets/clock-outline-MhJC2-0d.js +1 -0
  100. package/dist/interface/assets/cloudHandoff-Bym-XqR1.js +1 -0
  101. package/dist/interface/assets/{deviceId-DMh1VcHg.js → deviceId-OXLTtG-_.js} +1 -1
  102. package/dist/interface/assets/github-DLhaVazy.js +1 -0
  103. package/dist/interface/assets/{hasPermission-DdAdlKls.js → hasPermission-P1TgpAur.js} +1 -1
  104. package/dist/interface/assets/{instances-BBnYdgRc.js → instances-DwnEOXk1.js} +1 -1
  105. package/dist/interface/assets/{locale-qn_8MsnX.js → locale-BWvy9Nlz.js} +1 -1
  106. package/dist/interface/assets/main-CIorSaV7.js +3 -0
  107. package/dist/interface/assets/motion-sensor-DD8SfD-m.js +1 -0
  108. package/dist/interface/assets/nodeDefinitions-Dvawtk76.js +1 -0
  109. package/dist/interface/assets/{notifications-DGRbcf65.js → notifications-DHmx6O_s.js} +1 -1
  110. package/dist/interface/assets/platformLabels-D-cF6OTP.js +1 -0
  111. package/dist/interface/assets/plugins-NVAodP6s.js +1 -0
  112. package/dist/interface/assets/puzzle-filled-C1z2qa5-.js +1 -0
  113. package/dist/interface/assets/refresh-rounded-Bqiw9DUu.js +1 -0
  114. package/dist/interface/assets/{round-restart-alt-wyrnMpa4.js → round-restart-alt-c8MQjhLh.js} +1 -1
  115. package/dist/interface/assets/router-i0r3QZvk.js +2 -0
  116. package/dist/interface/assets/server-CRxodRik.js +1 -0
  117. package/dist/interface/assets/shares-4w6GDwjp.js +1 -0
  118. package/dist/interface/assets/source-branch-Cd8fHY0E.js +1 -0
  119. package/dist/interface/assets/{theme-DhiUIeo3.js → theme-DhaXe7yA.js} +1 -1
  120. package/dist/interface/assets/types-6RvFwckU.js +1 -0
  121. package/dist/interface/assets/types-BXo-JDGR.js +1 -0
  122. package/dist/interface/assets/types-v-mK9gdq.css +1 -0
  123. package/dist/interface/assets/{useBiometricCredentials-DDyhIy7O.js → useBiometricCredentials-BGRyKe48.js} +1 -1
  124. package/dist/interface/assets/{useCameraOptions-CoogpQnN.js → useCameraOptions-CO1HD_gL.js} +1 -1
  125. package/dist/interface/assets/useCuiDialog-DHktK-mZ.js +2 -0
  126. package/dist/interface/assets/{useFileDownload-CSek7CzK.js → useFileDownload-Cp1oH80I.js} +1 -1
  127. package/dist/interface/assets/{useLogsSocket-rG2BaLWl.js → useLogsSocket-OnTDnkPr.js} +1 -1
  128. package/dist/interface/assets/{useStreamStatus-BdN05nfE.js → useStreamStatus-N--czepD.js} +1 -1
  129. package/dist/interface/assets/useUserOptions-CPkl1O0A.js +1 -0
  130. package/dist/interface/assets/{users.schema-Bz59q-My.js → users.schema-BIL9DqRo.js} +1 -1
  131. package/dist/interface/assets/{view-grid-Cs5VWmxE.js → view-grid-B0KB2pRf.js} +1 -1
  132. package/dist/interface/assets/webhook-Dgi5u5S_.js +1 -0
  133. package/dist/interface/index.html +36 -30
  134. package/dist/interface/sw.js +1 -1
  135. package/dist/interface/{workbox-5f44db27.js → workbox-778a14ff.js} +1 -1
  136. package/dist/server/package.json +1 -1
  137. package/dist/server/src/api/controllers/automations.controller.d.ts +3 -1
  138. package/dist/server/src/api/controllers/automations.controller.js +26 -1
  139. package/dist/server/src/api/controllers/automations.controller.js.map +1 -1
  140. package/dist/server/src/api/controllers/plugins.controller.d.ts +4 -0
  141. package/dist/server/src/api/controllers/plugins.controller.js +181 -56
  142. package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
  143. package/dist/server/src/api/controllers/server.controller.js +3 -2
  144. package/dist/server/src/api/controllers/server.controller.js.map +1 -1
  145. package/dist/server/src/api/controllers/workers.controller.d.ts +9 -4
  146. package/dist/server/src/api/controllers/workers.controller.js +132 -9
  147. package/dist/server/src/api/controllers/workers.controller.js.map +1 -1
  148. package/dist/server/src/api/database/index.d.ts +0 -1
  149. package/dist/server/src/api/database/index.js +0 -14
  150. package/dist/server/src/api/database/index.js.map +1 -1
  151. package/dist/server/src/api/database/types.d.ts +29 -1
  152. package/dist/server/src/api/routes/automations.routes.js +23 -1
  153. package/dist/server/src/api/routes/automations.routes.js.map +1 -1
  154. package/dist/server/src/api/routes/workers.routes.js +61 -7
  155. package/dist/server/src/api/routes/workers.routes.js.map +1 -1
  156. package/dist/server/src/api/schemas/automations.schema.d.ts +8 -0
  157. package/dist/server/src/api/schemas/automations.schema.js +6 -0
  158. package/dist/server/src/api/schemas/automations.schema.js.map +1 -1
  159. package/dist/server/src/api/schemas/config.schema.d.ts +8 -2
  160. package/dist/server/src/api/schemas/config.schema.js +8 -1
  161. package/dist/server/src/api/schemas/config.schema.js.map +1 -1
  162. package/dist/server/src/api/schemas/plugins.schema.d.ts +1 -0
  163. package/dist/server/src/api/schemas/plugins.schema.js +1 -0
  164. package/dist/server/src/api/schemas/plugins.schema.js.map +1 -1
  165. package/dist/server/src/api/schemas/remote.schema.d.ts +1 -1
  166. package/dist/server/src/api/schemas/workers.schema.d.ts +19 -0
  167. package/dist/server/src/api/schemas/workers.schema.js +19 -0
  168. package/dist/server/src/api/schemas/workers.schema.js.map +1 -1
  169. package/dist/server/src/api/services/backup.service.js +7 -1
  170. package/dist/server/src/api/services/backup.service.js.map +1 -1
  171. package/dist/server/src/api/services/plugins.service.d.ts +2 -0
  172. package/dist/server/src/api/services/plugins.service.js +25 -3
  173. package/dist/server/src/api/services/plugins.service.js.map +1 -1
  174. package/dist/server/src/api/services/server.service.d.ts +0 -2
  175. package/dist/server/src/api/services/server.service.js +0 -12
  176. package/dist/server/src/api/services/server.service.js.map +1 -1
  177. package/dist/server/src/api/services/workers.service.d.ts +15 -0
  178. package/dist/server/src/api/services/workers.service.js +95 -2
  179. package/dist/server/src/api/services/workers.service.js.map +1 -1
  180. package/dist/server/src/api/types/index.d.ts +64 -0
  181. package/dist/server/src/api/utils/cert.js +43 -9
  182. package/dist/server/src/api/utils/cert.js.map +1 -1
  183. package/dist/server/src/api/websocket/nsp/server.d.ts +0 -2
  184. package/dist/server/src/api/websocket/nsp/server.js +1 -8
  185. package/dist/server/src/api/websocket/nsp/server.js.map +1 -1
  186. package/dist/server/src/api/websocket/nsp/workers.d.ts +0 -3
  187. package/dist/server/src/api/websocket/nsp/workers.js +4 -17
  188. package/dist/server/src/api/websocket/nsp/workers.js.map +1 -1
  189. package/dist/server/src/camera/decoder/worker.d.ts +3 -0
  190. package/dist/server/src/camera/decoder/worker.js +55 -34
  191. package/dist/server/src/camera/decoder/worker.js.map +1 -1
  192. package/dist/server/src/main.js +5 -3
  193. package/dist/server/src/main.js.map +1 -1
  194. package/dist/server/src/manager/downloadManager.d.ts +6 -0
  195. package/dist/server/src/manager/downloadManager.js +162 -3
  196. package/dist/server/src/manager/downloadManager.js.map +1 -1
  197. package/dist/server/src/plugins/bundle.d.ts +2 -0
  198. package/dist/server/src/plugins/bundle.js +24 -0
  199. package/dist/server/src/plugins/bundle.js.map +1 -0
  200. package/dist/server/src/plugins/config-store.d.ts +16 -0
  201. package/dist/server/src/plugins/config-store.js +33 -0
  202. package/dist/server/src/plugins/config-store.js.map +1 -0
  203. package/dist/server/src/plugins/index.d.ts +1 -1
  204. package/dist/server/src/plugins/index.js +3 -17
  205. package/dist/server/src/plugins/index.js.map +1 -1
  206. package/dist/server/src/plugins/main-file.d.ts +2 -0
  207. package/dist/server/src/plugins/main-file.js +24 -0
  208. package/dist/server/src/plugins/main-file.js.map +1 -0
  209. package/dist/server/src/plugins/plugin.d.ts +0 -1
  210. package/dist/server/src/plugins/plugin.js +7 -25
  211. package/dist/server/src/plugins/plugin.js.map +1 -1
  212. package/dist/server/src/plugins/runtime/base.d.ts +23 -7
  213. package/dist/server/src/plugins/runtime/base.js +32 -29
  214. package/dist/server/src/plugins/runtime/base.js.map +1 -1
  215. package/dist/server/src/plugins/runtime/index.d.ts +2 -3
  216. package/dist/server/src/plugins/runtime/index.js.map +1 -1
  217. package/dist/server/src/plugins/runtime/node/child.d.ts +1 -0
  218. package/dist/server/src/plugins/runtime/node/child.js +24 -4
  219. package/dist/server/src/plugins/runtime/node/child.js.map +1 -1
  220. package/dist/server/src/plugins/runtime/node/configDb.d.ts +15 -0
  221. package/dist/server/src/plugins/runtime/node/configDb.js +18 -0
  222. package/dist/server/src/plugins/runtime/node/configDb.js.map +1 -0
  223. package/dist/server/src/plugins/runtime/node/index.d.ts +2 -2
  224. package/dist/server/src/plugins/runtime/node/index.js.map +1 -1
  225. package/dist/server/src/plugins/runtime/node/pluginApi.d.ts +2 -2
  226. package/dist/server/src/plugins/runtime/node/pluginApi.js.map +1 -1
  227. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +2 -0
  228. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -1
  229. package/dist/server/src/plugins/runtime/node/proxy/coreManager.js +5 -0
  230. package/dist/server/src/plugins/runtime/node/proxy/coreManager.js.map +1 -1
  231. package/dist/server/src/plugins/runtime/node/proxy/downloadManager.js +6 -2
  232. package/dist/server/src/plugins/runtime/node/proxy/downloadManager.js.map +1 -1
  233. package/dist/server/src/plugins/runtime/node/proxy/fileServe.d.ts +13 -0
  234. package/dist/server/src/plugins/runtime/node/proxy/fileServe.js +82 -0
  235. package/dist/server/src/plugins/runtime/node/proxy/fileServe.js.map +1 -0
  236. package/dist/server/src/plugins/runtime/node/remoteUrls.d.ts +1 -0
  237. package/dist/server/src/plugins/runtime/node/remoteUrls.js +32 -0
  238. package/dist/server/src/plugins/runtime/node/remoteUrls.js.map +1 -0
  239. package/dist/server/src/plugins/runtime/node/storage.d.ts +2 -2
  240. package/dist/server/src/plugins/runtime/node/storage.js +1 -1
  241. package/dist/server/src/plugins/runtime/node/storage.js.map +1 -1
  242. package/dist/server/src/plugins/runtime/node/storageController.d.ts +2 -2
  243. package/dist/server/src/plugins/runtime/node/storageController.js.map +1 -1
  244. package/dist/server/src/plugins/runtime/python/child.py +16 -4
  245. package/dist/server/src/plugins/runtime/python/config_db.py +42 -0
  246. package/dist/server/src/plugins/runtime/python/index.d.ts +2 -2
  247. package/dist/server/src/plugins/runtime/python/index.js +3 -1
  248. package/dist/server/src/plugins/runtime/python/index.js.map +1 -1
  249. package/dist/server/src/plugins/runtime/python/namespaces.py +2 -0
  250. package/dist/server/src/plugins/runtime/python/plugin_api.py +2 -2
  251. package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +5 -0
  252. package/dist/server/src/plugins/runtime/python/proxy/core_manager.py +6 -0
  253. package/dist/server/src/plugins/runtime/python/remote_urls.py +42 -0
  254. package/dist/server/src/plugins/runtime/python/storage.py +2 -2
  255. package/dist/server/src/plugins/runtime/python/storage_controller.py +2 -2
  256. package/dist/server/src/plugins/types.d.ts +2 -1
  257. package/dist/server/src/plugins/types.js +1 -0
  258. package/dist/server/src/plugins/types.js.map +1 -1
  259. package/dist/server/src/plugins/worker.d.ts +8 -0
  260. package/dist/server/src/plugins/worker.js +104 -2
  261. package/dist/server/src/plugins/worker.js.map +1 -1
  262. package/dist/server/src/rpc/index.d.ts +2 -1
  263. package/dist/server/src/rpc/index.js +43 -23
  264. package/dist/server/src/rpc/index.js.map +1 -1
  265. package/dist/server/src/rpc/interfaces/download.d.ts +10 -0
  266. package/dist/server/src/rpc/namespaces.d.ts +5 -1
  267. package/dist/server/src/rpc/namespaces.js +12 -2
  268. package/dist/server/src/rpc/namespaces.js.map +1 -1
  269. package/dist/server/src/rpc/server.d.ts +16 -2
  270. package/dist/server/src/rpc/server.js +146 -17
  271. package/dist/server/src/rpc/server.js.map +1 -1
  272. package/dist/server/src/rpc/utils.d.ts +1 -1
  273. package/dist/server/src/rpc/utils.js +2 -0
  274. package/dist/server/src/rpc/utils.js.map +1 -1
  275. package/dist/server/src/services/config/constants.js +4 -1
  276. package/dist/server/src/services/config/constants.js.map +1 -1
  277. package/dist/server/src/services/config/index.d.ts +1 -0
  278. package/dist/server/src/services/config/index.js +16 -10
  279. package/dist/server/src/services/config/index.js.map +1 -1
  280. package/dist/server/src/services/config/types.d.ts +5 -1
  281. package/dist/server/src/utils/automation-registry/index.d.ts +17 -0
  282. package/dist/server/src/utils/automation-registry/index.js +58 -0
  283. package/dist/server/src/utils/automation-registry/index.js.map +1 -0
  284. package/dist/server/src/utils/platform.d.ts +2 -0
  285. package/dist/server/src/utils/platform.js +26 -0
  286. package/dist/server/src/utils/platform.js.map +1 -0
  287. package/dist/server/src/utils/plugin-registry/index.d.ts +27 -0
  288. package/dist/server/src/utils/plugin-registry/index.js +127 -0
  289. package/dist/server/src/utils/plugin-registry/index.js.map +1 -0
  290. package/dist/server/src/workers/agent.d.ts +15 -9
  291. package/dist/server/src/workers/agent.js +157 -64
  292. package/dist/server/src/workers/agent.js.map +1 -1
  293. package/dist/server/src/workers/capabilities/frame-decoding.d.ts +7 -3
  294. package/dist/server/src/workers/capabilities/frame-decoding.js +44 -10
  295. package/dist/server/src/workers/capabilities/frame-decoding.js.map +1 -1
  296. package/dist/server/src/workers/capabilities/handler.d.ts +1 -0
  297. package/dist/server/src/workers/capabilities/plugin-host.d.ts +23 -0
  298. package/dist/server/src/workers/capabilities/plugin-host.js +160 -0
  299. package/dist/server/src/workers/capabilities/plugin-host.js.map +1 -0
  300. package/dist/server/src/workers/manager.d.ts +28 -3
  301. package/dist/server/src/workers/manager.js +316 -92
  302. package/dist/server/src/workers/manager.js.map +1 -1
  303. package/dist/server/src/workers/pairing.d.ts +3 -0
  304. package/dist/server/src/workers/pairing.js +80 -0
  305. package/dist/server/src/workers/pairing.js.map +1 -0
  306. package/dist/server/src/workers/types.d.ts +42 -17
  307. package/dist/server/src/workers/types.js +4 -0
  308. package/dist/server/src/workers/types.js.map +1 -1
  309. package/package.json +1 -1
  310. package/dist/interface/assets/Automation-C7HuyjXk.js +0 -2
  311. package/dist/interface/assets/Automations-DOj8Eo03.js +0 -1
  312. package/dist/interface/assets/Camview-BqFeqFU1.js +0 -1
  313. package/dist/interface/assets/Config--CF46OKO.js +0 -2
  314. package/dist/interface/assets/ConfigTriggerGeofence-DGnBxTWd.js +0 -1
  315. package/dist/interface/assets/CuiBottomSheet-DX9ynJj_.js +0 -1
  316. package/dist/interface/assets/CuiCameraCard-CXO5aDTJ.js +0 -1
  317. package/dist/interface/assets/FirstSteps-Bpu4QLhF.js +0 -1
  318. package/dist/interface/assets/Plugin-CHdZvbiP.css +0 -1
  319. package/dist/interface/assets/Plugin-DcwR4dBy.js +0 -1
  320. package/dist/interface/assets/Plugins-DfMxKm_j.js +0 -2
  321. package/dist/interface/assets/Plugins-s1k811lf.css +0 -1
  322. package/dist/interface/assets/SettingsAccount-BcPNz9jC.js +0 -1
  323. package/dist/interface/assets/SettingsAppearance-De_E9UCe.js +0 -1
  324. package/dist/interface/assets/SettingsRemote-CBLPWHM6.js +0 -1
  325. package/dist/interface/assets/SettingsSystem-Du3S8gps.js +0 -2
  326. package/dist/interface/assets/VersionsHandler-DF_kclOb.js +0 -7
  327. package/dist/interface/assets/Workers-CXvuE4Bn.js +0 -1
  328. package/dist/interface/assets/api-BB9AG_h5.css +0 -2
  329. package/dist/interface/assets/api-BWWcvHf5.js +0 -2
  330. package/dist/interface/assets/api-DY4FSNX7.js +0 -1
  331. package/dist/interface/assets/automations-wQnuqfmi.js +0 -1
  332. package/dist/interface/assets/cloudHandoff-zXwtzo8e.js +0 -1
  333. package/dist/interface/assets/github-DNzKZdHG.js +0 -1
  334. package/dist/interface/assets/main-CjUbwZ3z.js +0 -3
  335. package/dist/interface/assets/nodeDefinitions-blmt-d7H.js +0 -1
  336. package/dist/interface/assets/plugins-tQniunmN.js +0 -1
  337. package/dist/interface/assets/router-CvWvXFyk.js +0 -2
  338. package/dist/interface/assets/server-CmXhhpSW.js +0 -1
  339. package/dist/interface/assets/shares-ZKyJZapA.js +0 -1
  340. package/dist/interface/assets/types-C9iWhZtk.js +0 -1
  341. package/dist/interface/assets/useCuiDialog-C50obC48.js +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utils/automation-registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAc5C,MAAM,QAAQ,GAAG,8DAA8D,CAAC;AAEhF,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACtC,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAExC,MAAM,YAAY,GAAG,IAAI,QAAQ,CAAkB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC;AACpF,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAkB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAE1F,IAAI,eAAe,GAA2C,EAAE,CAAC;AAEjE,MAAM,UAAU,4BAA4B;IAC1C,YAAY,CAAC,KAAK,EAAE,CAAC;IACrB,cAAc,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,SAAS,CAAI,GAAW;IACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAuD,CAAC;IACjG,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAyC,GAAG,QAAQ,cAAc,CAAC,CAAC;QAChG,IAAI,IAAI,EAAE,CAAC;YACT,eAAe,GAAG,IAAI,CAAC;YACvB,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAY;IACvD,qFAAqF;IACrF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAU,GAAG,QAAQ,cAAc,IAAI,EAAE,CAAC,CAAC;QACvE,IAAI,IAAI,EAAE,CAAC;YACT,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;IACjE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function isPlatformCompatible(os?: string[], cpu?: string[], platform?: string, arch?: string): boolean;
2
+ export declare function describePlatformRequirement(os?: string[], cpu?: string[]): string;
@@ -0,0 +1,26 @@
1
+ function matchesNpmList(list, value) {
2
+ if (!list?.length) {
3
+ return true;
4
+ }
5
+ const negations = list.filter((entry) => entry.startsWith('!')).map((entry) => entry.slice(1));
6
+ const positives = list.filter((entry) => !entry.startsWith('!'));
7
+ if (negations.includes(value)) {
8
+ return false;
9
+ }
10
+ if (positives.length === 0) {
11
+ return true;
12
+ }
13
+ return positives.includes(value);
14
+ }
15
+ export function isPlatformCompatible(os, cpu, platform = process.platform, arch = process.arch) {
16
+ return matchesNpmList(os, platform) && matchesNpmList(cpu, arch);
17
+ }
18
+ export function describePlatformRequirement(os, cpu) {
19
+ const parts = [];
20
+ if (os?.length)
21
+ parts.push(`os=[${os.join(', ')}]`);
22
+ if (cpu?.length)
23
+ parts.push(`cpu=[${cpu.join(', ')}]`);
24
+ return parts.length ? parts.join(' ') : 'any platform';
25
+ }
26
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../../src/utils/platform.ts"],"names":[],"mappings":"AAAA,SAAS,cAAc,CAAC,IAA0B,EAAE,KAAa;IAC/D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjE,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAa,EAAE,GAAc,EAAE,WAAmB,OAAO,CAAC,QAAQ,EAAE,OAAe,OAAO,CAAC,IAAI;IAClI,OAAO,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,EAAa,EAAE,GAAc;IACvE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,EAAE,EAAE,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,IAAI,GAAG,EAAE,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;AACzD,CAAC"}
@@ -0,0 +1,27 @@
1
+ export interface CatalogEntry {
2
+ displayName?: string;
3
+ category?: string;
4
+ featured?: boolean;
5
+ tagline?: string;
6
+ logo?: string;
7
+ screenshots?: string[];
8
+ }
9
+ export interface VerifiedEntry {
10
+ range: string;
11
+ note?: string;
12
+ }
13
+ export interface BlocklistEntry {
14
+ range: string;
15
+ reason: string;
16
+ ref?: string;
17
+ }
18
+ export declare function invalidateRegistry(): void;
19
+ export declare function getCatalog(): Promise<Record<string, CatalogEntry>>;
20
+ export declare function getVerified(): Promise<Record<string, VerifiedEntry>>;
21
+ export declare function getBlocklist(): Promise<Record<string, BlocklistEntry>>;
22
+ export declare function computeTrust(name: string, verified: Record<string, VerifiedEntry>, version?: string): 'official' | 'verified' | 'community';
23
+ export declare function getBlock(name: string, version: string | undefined, blocklist: Record<string, BlocklistEntry>): {
24
+ reason: string;
25
+ ref?: string;
26
+ } | undefined;
27
+ export declare function getWeeklyDownloads(names: string[]): Promise<Record<string, number>>;
@@ -0,0 +1,127 @@
1
+ import { TTLCache } from '@isaacs/ttlcache';
2
+ import { satisfies } from 'semver';
3
+ const BASE_URL = 'https://raw.githubusercontent.com/cameraui/plugins/main/';
4
+ const DOWNLOADS_URL = 'https://api.npmjs.org/downloads/point/last-week/';
5
+ const CATALOG_TTL_MS = 60 * 60 * 1000;
6
+ const VERIFIED_TTL_MS = 60 * 60 * 1000;
7
+ const BLOCKLIST_TTL_MS = 15 * 60 * 1000;
8
+ const DOWNLOADS_TTL_MS = 6 * 60 * 60 * 1000;
9
+ const listCache = new TTLCache({ max: 8, ttl: CATALOG_TTL_MS });
10
+ const downloadsCache = new TTLCache({ max: 500, ttl: DOWNLOADS_TTL_MS });
11
+ let lastGoodCatalog = {};
12
+ let lastGoodVerified = {};
13
+ let lastGoodBlocklist = {};
14
+ export function invalidateRegistry() {
15
+ listCache.clear();
16
+ downloadsCache.clear();
17
+ }
18
+ async function fetchJson(url) {
19
+ const response = await fetch(url);
20
+ if (!response.ok) {
21
+ return undefined;
22
+ }
23
+ return (await response.json());
24
+ }
25
+ export async function getCatalog() {
26
+ const cached = listCache.get('catalog');
27
+ if (cached) {
28
+ return cached;
29
+ }
30
+ try {
31
+ const data = await fetchJson(`${BASE_URL}catalog.json`);
32
+ if (data) {
33
+ lastGoodCatalog = data;
34
+ listCache.set('catalog', data, { ttl: CATALOG_TTL_MS });
35
+ return data;
36
+ }
37
+ }
38
+ catch {
39
+ // fail-open: fall through to last-good
40
+ }
41
+ return lastGoodCatalog;
42
+ }
43
+ export async function getVerified() {
44
+ const cached = listCache.get('verified');
45
+ if (cached) {
46
+ return cached;
47
+ }
48
+ try {
49
+ const data = await fetchJson(`${BASE_URL}verified.json`);
50
+ if (data) {
51
+ const plugins = data.plugins ?? {};
52
+ lastGoodVerified = plugins;
53
+ listCache.set('verified', plugins, { ttl: VERIFIED_TTL_MS });
54
+ return plugins;
55
+ }
56
+ }
57
+ catch {
58
+ // fail-open: fall through to last-good
59
+ }
60
+ return lastGoodVerified;
61
+ }
62
+ export async function getBlocklist() {
63
+ const cached = listCache.get('blocklist');
64
+ if (cached) {
65
+ return cached;
66
+ }
67
+ try {
68
+ const data = await fetchJson(`${BASE_URL}blocklist.json`);
69
+ if (data) {
70
+ const plugins = data.plugins ?? {};
71
+ lastGoodBlocklist = plugins;
72
+ listCache.set('blocklist', plugins, { ttl: BLOCKLIST_TTL_MS });
73
+ return plugins;
74
+ }
75
+ }
76
+ catch {
77
+ // fail-open: fall through to last-good
78
+ }
79
+ return lastGoodBlocklist;
80
+ }
81
+ export function computeTrust(name, verified, version) {
82
+ if (name.startsWith('@camera.ui/')) {
83
+ return 'official';
84
+ }
85
+ const entry = verified[name];
86
+ if (entry && (entry.range === '*' || !version || satisfies(version, entry.range))) {
87
+ return 'verified';
88
+ }
89
+ return 'community';
90
+ }
91
+ export function getBlock(name, version, blocklist) {
92
+ const entry = blocklist[name];
93
+ if (!entry) {
94
+ return undefined;
95
+ }
96
+ if (entry.range === '*' || (version && satisfies(version, entry.range))) {
97
+ return { reason: entry.reason, ref: entry.ref };
98
+ }
99
+ return undefined;
100
+ }
101
+ export async function getWeeklyDownloads(names) {
102
+ const result = {};
103
+ const toFetch = [];
104
+ for (const name of names) {
105
+ const cached = downloadsCache.get(name);
106
+ if (cached !== undefined) {
107
+ result[name] = cached;
108
+ }
109
+ else {
110
+ toFetch.push(name);
111
+ }
112
+ }
113
+ await Promise.allSettled(toFetch.map(async (name) => {
114
+ try {
115
+ const data = await fetchJson(`${DOWNLOADS_URL}${name}`);
116
+ if (data && typeof data.downloads === 'number') {
117
+ downloadsCache.set(name, data.downloads);
118
+ result[name] = data.downloads;
119
+ }
120
+ }
121
+ catch {
122
+ // best-effort: omit downloads for this name
123
+ }
124
+ }));
125
+ return result;
126
+ }
127
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utils/plugin-registry/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { WorkerCapability } from './types.js';
2
- import type { RemoteCameraConfig, WorkerAgentRPC, WorkerHealthInfo } from './types.js';
2
+ import type { WorkerAgentRPC, WorkerHealthInfo } from './types.js';
3
3
  export declare class WorkerAgent implements WorkerAgentRPC {
4
4
  readonly agentId: string;
5
5
  readonly capabilities: WorkerCapability[];
@@ -8,20 +8,26 @@ export declare class WorkerAgent implements WorkerAgentRPC {
8
8
  private readonly natsServer;
9
9
  private readonly startTime;
10
10
  private proxy;
11
+ private managerProxy;
11
12
  private handlers;
12
- private heartbeatInterval?;
13
+ private applied;
14
+ private syncInterval?;
15
+ private syncInFlight;
16
+ private syncQueued;
17
+ private isClosed;
13
18
  private closeHandler?;
19
+ private unsubscribeSync?;
14
20
  private signalHandler;
15
- private previousCpuUsage;
16
- private previousCpuTime;
21
+ private cpuLoad;
22
+ private memLoad;
17
23
  constructor();
18
24
  start(): Promise<void>;
19
25
  close(): Promise<void>;
20
- startCamera(config: RemoteCameraConfig): Promise<void>;
21
- stopCamera(cameraId: string): Promise<void>;
22
26
  ping(): Promise<WorkerHealthInfo>;
23
27
  restart(): Promise<void>;
24
- private startHeartbeat;
25
- private getCpuLoad;
26
- private getMemLoad;
28
+ private syncCycle;
29
+ private reconcile;
30
+ private buildHeartbeat;
31
+ private sampleMetrics;
32
+ private forwardLog;
27
33
  }
@@ -1,12 +1,15 @@
1
1
  import { Logger } from '@camera.ui/common/logger';
2
- import { SignalHandler } from '@camera.ui/common/utils';
2
+ import { isEqual, SignalHandler } from '@camera.ui/common/utils';
3
3
  import { createRPCClient } from '@camera.ui/rpc';
4
- import { totalmem } from 'node:os';
4
+ import { processes } from 'systeminformation';
5
5
  import { container } from 'tsyringe';
6
6
  import { WorkersService } from '../api/services/workers.service.js';
7
7
  import { NamespaceManager } from '../rpc/namespaces.js';
8
+ import { ConfigService } from '../services/config/index.js';
8
9
  import { FrameDecodingHandler } from './capabilities/frame-decoding.js';
9
- import { WorkerCapability } from './types.js';
10
+ import { PluginHostHandler } from './capabilities/plugin-host.js';
11
+ import { WorkerCapability, workloadKey } from './types.js';
12
+ const SYNC_INTERVAL_MS = 5_000;
10
13
  export class WorkerAgent {
11
14
  agentId;
12
15
  capabilities;
@@ -15,23 +18,29 @@ export class WorkerAgent {
15
18
  natsServer;
16
19
  startTime = Date.now();
17
20
  proxy;
21
+ managerProxy;
18
22
  handlers = new Map();
19
- heartbeatInterval;
23
+ applied = new Map();
24
+ syncInterval;
25
+ syncInFlight = false;
26
+ syncQueued = false;
27
+ isClosed = false;
20
28
  closeHandler;
29
+ unsubscribeSync;
21
30
  signalHandler;
22
- previousCpuUsage = process.cpuUsage();
23
- previousCpuTime = Date.now();
31
+ cpuLoad = '0.00';
32
+ memLoad = '0.00';
24
33
  constructor() {
25
34
  this.configService = container.resolve('configService');
26
35
  this.natsServer = container.resolve('natsServer');
27
- const workerName = this.configService.config.workers?.name ?? 'worker';
36
+ const workerName = this.configService.config.worker?.name ?? 'worker';
28
37
  this.agentId = new WorkersService().getOrCreateAgentId(workerName);
29
38
  const validCapabilities = new Set(Object.values(WorkerCapability));
30
- const configuredCapabilities = this.configService.config.workers?.capabilities ?? [];
39
+ const configuredCapabilities = this.configService.config.worker?.capabilities ?? [];
31
40
  this.capabilities = configuredCapabilities.filter((cap) => validCapabilities.has(cap));
32
41
  const loggerOptions = {
33
42
  prefix: 'WorkerAgent',
34
- suffix: this.configService.config.workers?.name ?? 'worker',
43
+ suffix: this.configService.config.worker?.name ?? 'worker',
35
44
  debugEnabled: this.configService.config.logger?.level === 'debug' || this.configService.config.logger?.level === 'trace',
36
45
  traceEnabled: this.configService.config.logger?.level === 'trace',
37
46
  };
@@ -47,50 +56,61 @@ export class WorkerAgent {
47
56
  this.logger.log(`Starting WorkerAgent (id: ${this.agentId})`);
48
57
  if (this.capabilities.length === 0) {
49
58
  const available = Object.values(WorkerCapability).join(', ');
50
- throw new Error(`Worker has no valid capabilities configured. Configure "workers.capabilities" in config (available: ${available})`);
59
+ throw new Error(`Worker has no valid capabilities configured. Configure "worker.capabilities" in config (available: ${available})`);
51
60
  }
52
- const configuredCapabilities = this.configService.config.workers?.capabilities ?? [];
61
+ const configuredCapabilities = this.configService.config.worker?.capabilities ?? [];
53
62
  const invalidCapabilities = configuredCapabilities.filter((cap) => !this.capabilities.includes(cap));
54
63
  if (invalidCapabilities.length > 0) {
55
64
  this.logger.warn(`Ignoring unknown capabilities: [${invalidCapabilities.join(', ')}]`);
56
65
  }
57
66
  this.logger.log(`Capabilities: [${this.capabilities.join(', ')}]`);
58
- for (const cap of this.capabilities) {
59
- switch (cap) {
60
- case WorkerCapability.FrameDecoding:
61
- this.handlers.set(cap, new FrameDecodingHandler(this.natsServer, this.configService, this.logger));
62
- break;
63
- default:
64
- this.logger.warn(`No handler for capability: ${cap}`);
65
- }
66
- }
67
67
  // Local NATS (leaf node)
68
68
  this.proxy = createRPCClient({
69
69
  name: `worker-agent-${this.agentId}`,
70
70
  servers: this.natsServer.endpoints.filter((ep) => ep.startsWith('nats://')),
71
+ timeout: 10_000,
71
72
  auth: {
72
73
  user: this.natsServer.localAuth.user,
73
74
  password: this.natsServer.localAuth.password,
74
75
  },
75
76
  });
76
77
  await this.proxy.connect();
78
+ for (const cap of this.capabilities) {
79
+ switch (cap) {
80
+ case WorkerCapability.FrameDecoding:
81
+ this.handlers.set(cap, new FrameDecodingHandler(this.natsServer, this.configService, this.logger, (entry) => this.forwardLog(entry)));
82
+ break;
83
+ case WorkerCapability.PluginHost:
84
+ this.handlers.set(cap, new PluginHostHandler(this.configService, this.logger, (entry) => this.forwardLog(entry)));
85
+ break;
86
+ default:
87
+ this.logger.warn(`No handler for capability: ${cap}`);
88
+ }
89
+ }
90
+ this.managerProxy = this.proxy.createProxy(NamespaceManager.workerManagerRpc());
77
91
  const rpcSubject = NamespaceManager.workerAgentRpc(this.agentId);
78
- this.closeHandler = await this.proxy.registerHandler(rpcSubject, this, { isolatedConnection: true, withoutDecorators: true });
79
- this.startHeartbeat();
92
+ this.closeHandler = await this.proxy.registerHandler(rpcSubject, { ping: () => this.ping(), restart: () => this.restart() }, { isolatedConnection: true, withoutDecorators: true });
93
+ this.unsubscribeSync = await this.proxy.subscribe(NamespaceManager.workerSync(this.agentId), () => {
94
+ void this.syncCycle();
95
+ });
96
+ void this.syncCycle();
97
+ this.syncInterval = setInterval(() => void this.syncCycle(), SYNC_INTERVAL_MS);
80
98
  this.logger.log('WorkerAgent started and ready for commands');
81
99
  }
82
100
  async close() {
83
101
  this.logger.log('Shutting down WorkerAgent...');
102
+ this.isClosed = true;
84
103
  try {
85
104
  this.proxy.publish(NamespaceManager.workerDisconnect(), { agentId: this.agentId });
86
105
  }
87
106
  catch {
88
107
  // best-effort — proxy might already be disconnected
89
108
  }
90
- if (this.heartbeatInterval) {
91
- clearInterval(this.heartbeatInterval);
92
- this.heartbeatInterval = undefined;
109
+ if (this.syncInterval) {
110
+ clearInterval(this.syncInterval);
111
+ this.syncInterval = undefined;
93
112
  }
113
+ this.unsubscribeSync?.();
94
114
  for (const handler of this.handlers.values()) {
95
115
  await handler.stopAll();
96
116
  }
@@ -98,22 +118,10 @@ export class WorkerAgent {
98
118
  await this.proxy?.disconnect();
99
119
  this.logger.log('WorkerAgent shut down');
100
120
  }
101
- async startCamera(config) {
102
- this.logger.log(`Starting camera: ${config.cameraName} (${config.cameraId})`);
103
- for (const handler of this.handlers.values()) {
104
- await handler.start(config.cameraId, config);
105
- }
106
- }
107
- async stopCamera(cameraId) {
108
- this.logger.log(`Stopping camera: ${cameraId}`);
109
- for (const handler of this.handlers.values()) {
110
- await handler.stop(cameraId);
111
- }
112
- }
113
121
  async ping() {
114
122
  return {
115
123
  agentId: this.agentId,
116
- name: this.configService.config.workers?.name ?? 'worker',
124
+ name: this.configService.config.worker?.name ?? 'worker',
117
125
  uptime: Date.now() - this.startTime,
118
126
  cameras: Array.from(this.handlers.values()).flatMap((h) => h.getActiveWorkIds()),
119
127
  capabilities: this.capabilities,
@@ -127,35 +135,120 @@ export class WorkerAgent {
127
135
  process.exit(0);
128
136
  }, 100);
129
137
  }
130
- startHeartbeat() {
131
- const sendHeartbeat = () => {
132
- const heartbeat = {
133
- agentId: this.agentId,
134
- name: this.configService.config.workers?.name ?? 'worker',
135
- cameras: Array.from(this.handlers.values()).flatMap((h) => h.getActiveWorkIds()),
136
- uptime: Date.now() - this.startTime,
137
- capabilities: this.capabilities,
138
- pid: process.pid,
139
- cpuLoad: this.getCpuLoad(),
140
- memLoad: this.getMemLoad(),
141
- };
142
- this.proxy.publish(NamespaceManager.workerHeartbeat(), heartbeat);
138
+ async syncCycle() {
139
+ if (this.isClosed) {
140
+ return;
141
+ }
142
+ if (this.syncInFlight) {
143
+ this.syncQueued = true;
144
+ return;
145
+ }
146
+ this.syncInFlight = true;
147
+ try {
148
+ await this.sampleMetrics();
149
+ let response;
150
+ try {
151
+ response = await this.managerProxy.heartbeat(this.buildHeartbeat());
152
+ }
153
+ catch {
154
+ // Master unreachable — keep running the current workloads and try
155
+ // again on the next cycle. Convergence resumes when it is back.
156
+ return;
157
+ }
158
+ await this.reconcile(response?.workloads ?? []);
159
+ }
160
+ finally {
161
+ this.syncInFlight = false;
162
+ if (this.syncQueued) {
163
+ this.syncQueued = false;
164
+ void this.syncCycle();
165
+ }
166
+ }
167
+ }
168
+ async reconcile(desired) {
169
+ if (this.isClosed) {
170
+ return;
171
+ }
172
+ const desiredByKey = new Map();
173
+ for (const workload of desired) {
174
+ if (!this.handlers.has(workload.capability)) {
175
+ continue;
176
+ }
177
+ desiredByKey.set(workloadKey(workload.capability, workload.id), workload);
178
+ }
179
+ // Stop strays first — the single-owner invariant matters more than a gap.
180
+ for (const [key, applied] of this.applied) {
181
+ if (desiredByKey.has(key)) {
182
+ continue;
183
+ }
184
+ try {
185
+ await this.handlers.get(applied.capability)?.stop(applied.id);
186
+ this.applied.delete(key);
187
+ }
188
+ catch (error) {
189
+ this.logger.error(`Failed to stop workload ${key}:`, error.message);
190
+ }
191
+ }
192
+ for (const [key, workload] of desiredByKey) {
193
+ const current = this.applied.get(key);
194
+ if (current?.revision === workload.revision && isEqual(current?.spec, workload.spec)) {
195
+ continue;
196
+ }
197
+ try {
198
+ await this.handlers.get(workload.capability)?.start(workload.id, workload.spec);
199
+ this.applied.set(key, workload);
200
+ }
201
+ catch (error) {
202
+ // Not recorded as applied — retried on the next cycle.
203
+ this.logger.error(`Failed to start workload ${key}:`, error.message);
204
+ }
205
+ }
206
+ }
207
+ buildHeartbeat() {
208
+ return {
209
+ agentId: this.agentId,
210
+ name: this.configService.config.worker?.name ?? 'worker',
211
+ cameras: Array.from(this.handlers.values()).flatMap((h) => h.getActiveWorkIds()),
212
+ uptime: Date.now() - this.startTime,
213
+ capabilities: this.capabilities,
214
+ version: ConfigService.RUNNING_VERSION,
215
+ platform: { os: process.platform, arch: process.arch },
216
+ pid: process.pid,
217
+ cpuLoad: this.cpuLoad,
218
+ memLoad: this.memLoad,
143
219
  };
144
- sendHeartbeat();
145
- this.heartbeatInterval = setInterval(sendHeartbeat, 5_000);
146
220
  }
147
- getCpuLoad() {
148
- const current = process.cpuUsage(this.previousCpuUsage);
149
- const elapsed = (Date.now() - this.previousCpuTime) * 1000; // ms → µs
150
- this.previousCpuUsage = process.cpuUsage();
151
- this.previousCpuTime = Date.now();
152
- const cpuPercent = ((current.user + current.system) / elapsed) * 100;
153
- return Math.min(cpuPercent, 100).toFixed(2);
221
+ async sampleMetrics() {
222
+ try {
223
+ const pids = new Set([process.pid]);
224
+ for (const handler of this.handlers.values()) {
225
+ for (const pid of handler.getActiveProcessIds()) {
226
+ pids.add(pid);
227
+ }
228
+ }
229
+ const all = await processes();
230
+ let cpu = 0;
231
+ let mem = 0;
232
+ for (const proc of all.list) {
233
+ if (pids.has(proc.pid)) {
234
+ cpu += proc.cpu || 0;
235
+ mem += proc.mem || 0;
236
+ }
237
+ }
238
+ this.cpuLoad = Math.min(cpu, 100).toFixed(2);
239
+ this.memLoad = Math.min(mem, 100).toFixed(2);
240
+ }
241
+ catch {
242
+ // keep last sample
243
+ }
154
244
  }
155
- getMemLoad() {
156
- const used = process.memoryUsage().rss;
157
- const total = totalmem();
158
- return ((used / total) * 100).toFixed(2);
245
+ forwardLog(entry) {
246
+ try {
247
+ this.proxy.publish(NamespaceManager.workerLogs(), entry);
248
+ }
249
+ catch {
250
+ // master will miss this line — local trace still has it
251
+ }
159
252
  }
160
253
  }
161
254
  //# sourceMappingURL=agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../src/workers/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../src/workers/agent.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
+ import { Logger } from '@camera.ui/common/logger';
1
2
  import { WorkerCapability } from '../types.js';
2
- import type { Logger } from '@camera.ui/common/logger';
3
+ import type { LogEntry } from '@camera.ui/common/logger';
3
4
  import type { NATS } from '../../rpc/server.js';
4
5
  import type { ConfigService } from '../../services/config/index.js';
5
6
  import type { RemoteCameraConfig } from '../types.js';
@@ -8,17 +9,20 @@ export declare class FrameDecodingHandler implements CapabilityHandler<WorkerCap
8
9
  private readonly natsServer;
9
10
  private readonly configService;
10
11
  private readonly logger;
12
+ private readonly forwardLog?;
11
13
  readonly capability = WorkerCapability.FrameDecoding;
12
14
  private cameras;
13
15
  private restartTimers;
14
16
  private isClosed;
15
- constructor(natsServer: NATS, configService: ConfigService, logger: Logger);
17
+ constructor(natsServer: NATS, configService: ConfigService, logger: Logger, forwardLog?: ((entry: LogEntry) => void) | undefined);
16
18
  start(id: string, spec: RemoteCameraConfig): Promise<void>;
17
19
  stop(id: string): Promise<void>;
18
20
  stopAll(): Promise<void>;
19
21
  getActiveWorkIds(): string[];
22
+ getActiveProcessIds(): number[];
20
23
  private forkFrameWorker;
21
24
  private killProcess;
22
25
  private attemptRestart;
23
- private logChildOutput;
26
+ private handleChildOutput;
27
+ private processLogLine;
24
28
  }