@fastybird/smart-panel-backend 1.1.0-alpha.1 → 1.1.0-alpha.10

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 (209) hide show
  1. package/dist/app.module.js +7 -0
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/common/filters/conflict-exception.filter.d.ts +6 -0
  4. package/dist/common/filters/conflict-exception.filter.js +59 -0
  5. package/dist/common/filters/conflict-exception.filter.js.map +1 -0
  6. package/dist/common/filters/global-error.filter.js +1 -4
  7. package/dist/common/filters/global-error.filter.js.map +1 -1
  8. package/dist/common/filters/global-filters.d.ts +3 -0
  9. package/dist/common/filters/global-filters.js +22 -0
  10. package/dist/common/filters/global-filters.js.map +1 -0
  11. package/dist/common/filters/unprocessable-entity-exception.filter.d.ts +1 -0
  12. package/dist/common/filters/unprocessable-entity-exception.filter.js +15 -3
  13. package/dist/common/filters/unprocessable-entity-exception.filter.js.map +1 -1
  14. package/dist/common/utils/transform.utils.js +3 -0
  15. package/dist/common/utils/transform.utils.js.map +1 -1
  16. package/dist/main.js +2 -7
  17. package/dist/main.js.map +1 -1
  18. package/dist/modules/devices/controllers/channels.properties.controller.js +16 -4
  19. package/dist/modules/devices/controllers/channels.properties.controller.js.map +1 -1
  20. package/dist/modules/devices/controllers/devices.channels.properties.controller.js +16 -4
  21. package/dist/modules/devices/controllers/devices.channels.properties.controller.js.map +1 -1
  22. package/dist/modules/devices/devices.module.js +12 -0
  23. package/dist/modules/devices/devices.module.js.map +1 -1
  24. package/dist/modules/devices/services/channels.properties.service.d.ts +27 -3
  25. package/dist/modules/devices/services/channels.properties.service.js +304 -28
  26. package/dist/modules/devices/services/channels.properties.service.js.map +1 -1
  27. package/dist/modules/devices/services/channels.service.js +42 -38
  28. package/dist/modules/devices/services/channels.service.js.map +1 -1
  29. package/dist/modules/devices/services/command-latency-trace-collector.service.d.ts +101 -0
  30. package/dist/modules/devices/services/command-latency-trace-collector.service.js +451 -0
  31. package/dist/modules/devices/services/command-latency-trace-collector.service.js.map +1 -0
  32. package/dist/modules/devices/services/device-structure-lock.service.d.ts +10 -2
  33. package/dist/modules/devices/services/device-structure-lock.service.js +86 -7
  34. package/dist/modules/devices/services/device-structure-lock.service.js.map +1 -1
  35. package/dist/modules/devices/services/devices.service.js +37 -33
  36. package/dist/modules/devices/services/devices.service.js.map +1 -1
  37. package/dist/modules/devices/services/module-reset.service.d.ts +3 -1
  38. package/dist/modules/devices/services/module-reset.service.js +21 -16
  39. package/dist/modules/devices/services/module-reset.service.js.map +1 -1
  40. package/dist/modules/devices/services/property-command-dispatch.service.d.ts +45 -0
  41. package/dist/modules/devices/services/property-command-dispatch.service.js +227 -0
  42. package/dist/modules/devices/services/property-command-dispatch.service.js.map +1 -0
  43. package/dist/modules/devices/services/property-command-window.service.d.ts +71 -0
  44. package/dist/modules/devices/services/property-command-window.service.js +204 -0
  45. package/dist/modules/devices/services/property-command-window.service.js.map +1 -0
  46. package/dist/modules/devices/services/property-command.service.d.ts +20 -3
  47. package/dist/modules/devices/services/property-command.service.js +56 -10
  48. package/dist/modules/devices/services/property-command.service.js.map +1 -1
  49. package/dist/modules/devices/services/property-state-coordinator.service.d.ts +4 -0
  50. package/dist/modules/devices/services/property-state-coordinator.service.js +35 -0
  51. package/dist/modules/devices/services/property-state-coordinator.service.js.map +1 -0
  52. package/dist/modules/devices/services/property-value.service.d.ts +1 -0
  53. package/dist/modules/devices/services/property-value.service.js +4 -0
  54. package/dist/modules/devices/services/property-value.service.js.map +1 -1
  55. package/dist/modules/platform/services/platform.service.d.ts +13 -4
  56. package/dist/modules/platform/services/platform.service.js +57 -35
  57. package/dist/modules/platform/services/platform.service.js.map +1 -1
  58. package/dist/modules/remote-access/dto/update-config.dto.js +5 -0
  59. package/dist/modules/remote-access/dto/update-config.dto.js.map +1 -1
  60. package/dist/modules/remote-access/validators/is-remote-access-url.validator.js +5 -2
  61. package/dist/modules/remote-access/validators/is-remote-access-url.validator.js.map +1 -1
  62. package/dist/modules/system/services/privileged-worker.service.d.ts +10 -0
  63. package/dist/modules/system/services/privileged-worker.service.js +137 -11
  64. package/dist/modules/system/services/privileged-worker.service.js.map +1 -1
  65. package/dist/modules/websocket/gateway/websocket.gateway.d.ts +4 -1
  66. package/dist/modules/websocket/gateway/websocket.gateway.js +28 -5
  67. package/dist/modules/websocket/gateway/websocket.gateway.js.map +1 -1
  68. package/dist/modules/websocket/services/command-acknowledgement-trace.service.d.ts +143 -0
  69. package/dist/modules/websocket/services/command-acknowledgement-trace.service.js +523 -0
  70. package/dist/modules/websocket/services/command-acknowledgement-trace.service.js.map +1 -0
  71. package/dist/modules/websocket/websocket.module.js +9 -1
  72. package/dist/modules/websocket/websocket.module.js.map +1 -1
  73. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js +2 -1
  74. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js.map +1 -1
  75. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js +2 -3
  76. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js.map +1 -1
  77. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js +6 -1
  78. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js.map +1 -1
  79. package/dist/plugins/devices-homekit/mappers/base.mapper.js +27 -4
  80. package/dist/plugins/devices-homekit/mappers/base.mapper.js.map +1 -1
  81. package/dist/plugins/devices-homekit/mappers/homekit-mapper.interface.d.ts +8 -0
  82. package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.d.ts +7 -0
  83. package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js +84 -73
  84. package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js.map +1 -1
  85. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.d.ts +18 -1
  86. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js +338 -119
  87. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js.map +1 -1
  88. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.d.ts +13 -1
  89. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js +109 -10
  90. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js.map +1 -1
  91. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js +8 -11
  92. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js.map +1 -1
  93. package/dist/plugins/devices-shelly-ng/mappings/mapping-loader.service.js +4 -0
  94. package/dist/plugins/devices-shelly-ng/mappings/mapping-loader.service.js.map +1 -1
  95. package/dist/plugins/devices-shelly-ng/services/device-manager.service.js +5 -0
  96. package/dist/plugins/devices-shelly-ng/services/device-manager.service.js.map +1 -1
  97. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.d.ts +9 -1
  98. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js +59 -24
  99. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js.map +1 -1
  100. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.d.ts +0 -1
  101. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js +5 -12
  102. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js.map +1 -1
  103. package/dist/plugins/devices-shelly-ng/utils/transform.utils.d.ts +2 -0
  104. package/dist/plugins/devices-shelly-ng/utils/transform.utils.js +14 -1
  105. package/dist/plugins/devices-shelly-ng/utils/transform.utils.js.map +1 -1
  106. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.d.ts +17 -0
  107. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.js +147 -0
  108. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.js.map +1 -0
  109. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.d.ts +15 -0
  110. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.js +98 -0
  111. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.js.map +1 -0
  112. package/dist/plugins/remote-access-cloudflare-tunnel/dto/update-config.dto.d.ts +9 -0
  113. package/dist/plugins/remote-access-cloudflare-tunnel/dto/update-config.dto.js +94 -0
  114. package/dist/plugins/remote-access-cloudflare-tunnel/dto/update-config.dto.js.map +1 -0
  115. package/dist/plugins/remote-access-cloudflare-tunnel/models/config.model.d.ts +9 -0
  116. package/dist/plugins/remote-access-cloudflare-tunnel/models/config.model.js +92 -0
  117. package/dist/plugins/remote-access-cloudflare-tunnel/models/config.model.js.map +1 -0
  118. package/dist/plugins/remote-access-cloudflare-tunnel/models/install.model.d.ts +7 -0
  119. package/dist/plugins/remote-access-cloudflare-tunnel/models/install.model.js +48 -0
  120. package/dist/plugins/remote-access-cloudflare-tunnel/models/install.model.js.map +1 -0
  121. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.d.ts +42 -0
  122. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.js +352 -0
  123. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.js.map +1 -0
  124. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.d.ts +24 -0
  125. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.js +27 -0
  126. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.js.map +1 -0
  127. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.exceptions.d.ts +8 -0
  128. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.exceptions.js +19 -0
  129. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.exceptions.js.map +1 -0
  130. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.openapi.d.ts +4 -0
  131. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.openapi.js +20 -0
  132. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.openapi.js.map +1 -0
  133. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.d.ts +21 -0
  134. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.js +135 -0
  135. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.js.map +1 -0
  136. package/dist/plugins/remote-access-cloudflare-tunnel/scripts/cloudflared-setup.sh +185 -0
  137. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.d.ts +82 -0
  138. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.js +507 -0
  139. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.js.map +1 -0
  140. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.d.ts +10 -0
  141. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.js +37 -0
  142. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.js.map +1 -0
  143. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.d.ts +38 -0
  144. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.js +147 -0
  145. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.js.map +1 -0
  146. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.d.ts +15 -0
  147. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.js +67 -0
  148. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.js.map +1 -0
  149. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.d.ts +8 -0
  150. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.js +46 -0
  151. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.js.map +1 -0
  152. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.d.ts +27 -0
  153. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.js +139 -0
  154. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.js.map +1 -0
  155. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.d.ts +1 -0
  156. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js +26 -10
  157. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js.map +1 -1
  158. package/dist/plugins/remote-access-tailscale/controllers/status.controller.d.ts +6 -1
  159. package/dist/plugins/remote-access-tailscale/controllers/status.controller.js +28 -3
  160. package/dist/plugins/remote-access-tailscale/controllers/status.controller.js.map +1 -1
  161. package/dist/plugins/remote-access-tailscale/models/status.model.d.ts +19 -0
  162. package/dist/plugins/remote-access-tailscale/models/status.model.js +158 -1
  163. package/dist/plugins/remote-access-tailscale/models/status.model.js.map +1 -1
  164. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.d.ts +2 -0
  165. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js +3 -1
  166. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js.map +1 -1
  167. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.d.ts +13 -0
  168. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js +27 -0
  169. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js.map +1 -0
  170. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.d.ts +2 -2
  171. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js +2 -0
  172. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js.map +1 -1
  173. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.plugin.js +1 -1
  174. package/dist/plugins/remote-access-tailscale/scripts/tailscale-setup.sh +61 -0
  175. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.d.ts +9 -0
  176. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js +12 -0
  177. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js.map +1 -1
  178. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.d.ts +1 -0
  179. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js +27 -2
  180. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js.map +1 -1
  181. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.d.ts +30 -1
  182. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js +300 -30
  183. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js.map +1 -1
  184. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.d.ts +8 -3
  185. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js +39 -12
  186. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js.map +1 -1
  187. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.d.ts +14 -5
  188. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js +51 -16
  189. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js.map +1 -1
  190. package/dist/plugins/scenes-local/platforms/local-scene.platform.d.ts +3 -1
  191. package/dist/plugins/scenes-local/platforms/local-scene.platform.js +12 -7
  192. package/dist/plugins/scenes-local/platforms/local-scene.platform.js.map +1 -1
  193. package/dist/plugins/spaces-home-control/services/climate-intent.service.d.ts +3 -1
  194. package/dist/plugins/spaces-home-control/services/climate-intent.service.js +6 -3
  195. package/dist/plugins/spaces-home-control/services/climate-intent.service.js.map +1 -1
  196. package/dist/plugins/spaces-home-control/services/covers-intent.service.d.ts +3 -1
  197. package/dist/plugins/spaces-home-control/services/covers-intent.service.js +6 -3
  198. package/dist/plugins/spaces-home-control/services/covers-intent.service.js.map +1 -1
  199. package/dist/plugins/spaces-home-control/services/lighting-intent.service.d.ts +3 -1
  200. package/dist/plugins/spaces-home-control/services/lighting-intent.service.js +7 -4
  201. package/dist/plugins/spaces-home-control/services/lighting-intent.service.js.map +1 -1
  202. package/dist/plugins/spaces-home-control/services/space-media-activity.service.d.ts +3 -1
  203. package/dist/plugins/spaces-home-control/services/space-media-activity.service.js +11 -5
  204. package/dist/plugins/spaces-home-control/services/space-media-activity.service.js.map +1 -1
  205. package/dist/plugins/spaces-home-control/services/space-undo-history.service.d.ts +3 -1
  206. package/dist/plugins/spaces-home-control/services/space-undo-history.service.js +8 -5
  207. package/dist/plugins/spaces-home-control/services/space-undo-history.service.js.map +1 -1
  208. package/dist/tsconfig.build.tsbuildinfo +1 -1
  209. package/package.json +2 -2
@@ -20,6 +20,10 @@ const system_constants_1 = require("../system.constants");
20
20
  const system_exceptions_1 = require("../system.exceptions");
21
21
  const STATUS_POLL_INTERVAL_MS = 3_000;
22
22
  const DEFAULT_TIMEOUT_MS = 10 * 60 * 1000;
23
+ const STDERR_CAPTURE_LIMIT_BYTES = 4 * 1024;
24
+ const IS_ACTIVE_PROBE_TIMEOUT_MS = 2_000;
25
+ const STOP_ATTEMPT_TIMEOUT_MS = 15_000;
26
+ const PRUNE_AFTER_MS = 5 * 60_000;
23
27
  const VALID_TICK_STATES = new Set(['running', 'complete', 'failed']);
24
28
  function isValidTickState(value) {
25
29
  return typeof value === 'string' && VALID_TICK_STATES.has(value);
@@ -40,6 +44,11 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
40
44
  throw new system_exceptions_1.PrivilegedWorkerUnavailableException(`Privileged workers are not supported on this platform (${this.platformService.getPlatformType()}).`);
41
45
  }
42
46
  if (this.busyUnits.has(spec.unit)) {
47
+ const busyJobId = this.busyUnits.get(spec.unit);
48
+ const busyRecord = busyJobId ? this.jobs.get(busyJobId) : undefined;
49
+ if (busyRecord?.lastStatus.state === 'timeout') {
50
+ throw new system_exceptions_1.PrivilegedWorkerUnavailableException(`Privileged worker unit "${spec.unit}" timed out previously and is still running after a stop attempt; it cannot be reused until the process is confirmed stopped.`);
51
+ }
43
52
  throw new system_exceptions_1.PrivilegedWorkerUnavailableException(`Privileged worker unit "${spec.unit}" is already busy.`);
44
53
  }
45
54
  const id = (0, node_crypto_1.randomUUID)();
@@ -54,22 +63,34 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
54
63
  lastStatus: { id, state: 'running', updatedAt: new Date().toISOString() },
55
64
  handlers: new Set(),
56
65
  mapStatus: spec.mapStatus,
66
+ redact: spec.redact,
67
+ stderrBuffer: Buffer.alloc(0),
57
68
  loggedInvalidStatus: false,
69
+ pruneTimer: null,
58
70
  };
59
71
  this.jobs.set(id, record);
60
72
  this.busyUnits.set(spec.unit, id);
61
73
  try {
62
74
  const setenvArgs = Object.entries(spec.env ?? {}).flatMap(([key, value]) => ['--setenv', `${key}=${value}`]);
63
- const child = (0, node_child_process_1.spawn)('sudo', ['-n', 'systemd-run', '--scope', `--unit=${spec.unit}`, ...setenvArgs, 'bash', spec.script, ...spec.args], { detached: true, stdio: 'ignore' });
75
+ const child = (0, node_child_process_1.spawn)('sudo', ['-n', 'systemd-run', '--scope', `--unit=${spec.unit}`, ...setenvArgs, 'bash', spec.script, ...spec.args], { detached: true, stdio: ['ignore', 'ignore', 'pipe'] });
76
+ child.stderr?.unref?.();
77
+ child.stderr?.on('data', (chunk) => {
78
+ if (record.stderrBuffer.length >= STDERR_CAPTURE_LIMIT_BYTES) {
79
+ return;
80
+ }
81
+ record.stderrBuffer = Buffer.concat([record.stderrBuffer, chunk]).subarray(0, STDERR_CAPTURE_LIMIT_BYTES);
82
+ });
64
83
  child.on('error', (error) => {
65
84
  if (record.lastStatus.state !== 'running') {
66
85
  return;
67
86
  }
68
- this.logger.error(`Privileged worker unit "${spec.unit}" failed to spawn: ${error.message}`);
87
+ const stderr = this.getCapturedStderr(record);
88
+ this.logger.error(`Privileged worker unit "${spec.unit}" failed to spawn: ${error.message}${stderr ? ` (${stderr})` : ''}`);
69
89
  this.finishJob(record, {
70
90
  id,
71
91
  state: 'failed',
72
- message: error.message,
92
+ message: this.buildFailureMessage(error.message, stderr),
93
+ stderr,
73
94
  updatedAt: new Date().toISOString(),
74
95
  });
75
96
  });
@@ -81,11 +102,13 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
81
102
  return;
82
103
  }
83
104
  const reason = signal ? `was terminated by signal ${signal}` : `exited with code ${code}`;
84
- this.logger.error(`Privileged worker unit "${spec.unit}" ${reason} before reporting completion`);
105
+ const stderr = this.getCapturedStderr(record);
106
+ this.logger.error(`Privileged worker unit "${spec.unit}" ${reason} before reporting completion${stderr ? ` (${stderr})` : ''}`);
85
107
  this.finishJob(record, {
86
108
  id,
87
109
  state: 'failed',
88
- message: `Worker process ${reason}`,
110
+ message: this.buildGenericFailureMessage(`Worker process ${reason} before reporting completion`, stderr),
111
+ stderr,
89
112
  updatedAt: new Date().toISOString(),
90
113
  });
91
114
  });
@@ -124,11 +147,34 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
124
147
  record.handlers.delete(handler);
125
148
  };
126
149
  }
150
+ getCapturedStderr(record) {
151
+ if (record.stderrBuffer.length === 0) {
152
+ return undefined;
153
+ }
154
+ const text = record.stderrBuffer.toString('utf-8');
155
+ const redact = record.redact;
156
+ if (!redact) {
157
+ return text;
158
+ }
159
+ return text
160
+ .split('\n')
161
+ .map((line) => redact(line))
162
+ .join('\n');
163
+ }
164
+ buildFailureMessage(summary, stderr) {
165
+ const detail = stderr ? ` (${stderr})` : '';
166
+ return `The smart-panel user cannot start privileged jobs: ${summary}${detail}. Re-run \`sudo smart-panel-service install\`, or add the sudoers grant from the installation guide.`;
167
+ }
168
+ buildGenericFailureMessage(summary, stderr) {
169
+ const detail = stderr ? ` (${stderr})` : '';
170
+ return `${summary}${detail}.`;
171
+ }
127
172
  startPolling(record) {
128
173
  record.pollTimer = setInterval(() => {
129
174
  if (Date.now() - record.startedAt > record.timeoutMs) {
130
- this.logger.error(`Privileged worker unit "${record.unit}" timed out after ${record.timeoutMs}ms`);
131
- this.finishJob(record, { id: record.id, state: 'timeout', updatedAt: new Date().toISOString() });
175
+ clearInterval(record.pollTimer);
176
+ record.pollTimer = null;
177
+ void this.handleTimeout(record);
132
178
  return;
133
179
  }
134
180
  if (!(0, fs_1.existsSync)(record.statusFile)) {
@@ -157,14 +203,79 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
157
203
  updatedAt: new Date().toISOString(),
158
204
  };
159
205
  record.lastStatus = status;
160
- for (const handler of [...record.handlers]) {
161
- handler(status);
162
- }
206
+ this.notifyHandlers(record, status);
163
207
  if (status.state === 'complete' || status.state === 'failed') {
164
208
  this.stopPolling(record);
165
209
  }
166
210
  }, STATUS_POLL_INTERVAL_MS);
167
211
  }
212
+ stopUnit(unit) {
213
+ return new Promise((resolve) => {
214
+ let settled = false;
215
+ let timer = null;
216
+ const settle = () => {
217
+ if (settled) {
218
+ return;
219
+ }
220
+ settled = true;
221
+ if (timer) {
222
+ clearTimeout(timer);
223
+ timer = null;
224
+ }
225
+ resolve();
226
+ };
227
+ try {
228
+ const child = (0, node_child_process_1.spawn)('sudo', ['-n', 'systemd-run', '--scope', '--quiet', `--unit=${unit}-stop`, 'systemctl', 'stop', unit], { stdio: 'ignore' });
229
+ child.on('exit', settle);
230
+ child.on('error', settle);
231
+ timer = setTimeout(settle, STOP_ATTEMPT_TIMEOUT_MS);
232
+ timer.unref();
233
+ child.unref();
234
+ }
235
+ catch {
236
+ settle();
237
+ }
238
+ });
239
+ }
240
+ isUnitActive(unit) {
241
+ return new Promise((resolve) => {
242
+ (0, node_child_process_1.execFile)('systemctl', ['is-active', unit], { timeout: IS_ACTIVE_PROBE_TIMEOUT_MS }, (error, stdout) => {
243
+ if (error) {
244
+ resolve(false);
245
+ return;
246
+ }
247
+ resolve((stdout ?? '').trim() === 'active');
248
+ });
249
+ });
250
+ }
251
+ async handleTimeout(record) {
252
+ this.logger.error(`Privileged worker unit "${record.unit}" timed out after ${record.timeoutMs}ms`);
253
+ await this.stopUnit(record.unit);
254
+ const stillActive = await this.isUnitActive(record.unit);
255
+ const stderr = this.getCapturedStderr(record);
256
+ if (record.lastStatus.state !== 'running') {
257
+ return;
258
+ }
259
+ if (stillActive) {
260
+ this.logger.error(`Privileged worker unit "${record.unit}" is still running after a timeout stop attempt; keeping it reserved.`);
261
+ const status = {
262
+ id: record.id,
263
+ state: 'timeout',
264
+ message: `Privileged worker unit "${record.unit}" timed out and is still running after a stop attempt; it remains reserved until confirmed stopped.`,
265
+ stderr,
266
+ updatedAt: new Date().toISOString(),
267
+ };
268
+ record.lastStatus = status;
269
+ this.notifyHandlers(record, status);
270
+ return;
271
+ }
272
+ this.finishJob(record, {
273
+ id: record.id,
274
+ state: 'timeout',
275
+ stderr,
276
+ updatedAt: new Date().toISOString(),
277
+ });
278
+ }
168
279
  logInvalidStatusOnce(record, reason) {
169
280
  if (record.loggedInvalidStatus) {
170
281
  return;
@@ -177,10 +288,13 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
177
288
  return;
178
289
  }
179
290
  record.lastStatus = status;
291
+ this.notifyHandlers(record, status);
292
+ this.stopPolling(record);
293
+ }
294
+ notifyHandlers(record, status) {
180
295
  for (const handler of [...record.handlers]) {
181
296
  handler(status);
182
297
  }
183
- this.stopPolling(record);
184
298
  }
185
299
  stopPolling(record) {
186
300
  if (record.pollTimer) {
@@ -189,7 +303,19 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
189
303
  }
190
304
  if (this.busyUnits.get(record.unit) === record.id) {
191
305
  this.busyUnits.delete(record.unit);
306
+ this.schedulePrune(record);
307
+ }
308
+ }
309
+ schedulePrune(record) {
310
+ if (record.pruneTimer) {
311
+ return;
192
312
  }
313
+ record.pruneTimer = setTimeout(() => {
314
+ record.pruneTimer = null;
315
+ record.handlers.clear();
316
+ this.jobs.delete(record.id);
317
+ }, PRUNE_AFTER_MS);
318
+ record.pruneTimer.unref();
193
319
  }
194
320
  };
195
321
  exports.PrivilegedWorkerService = PrivilegedWorkerService;
@@ -1 +1 @@
1
- {"version":3,"file":"privileged-worker.service.js","sourceRoot":"","sources":["../../../../src/modules/system/services/privileged-worker.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"privileged-worker.service.js","sourceRoot":"","sources":["../../../../src/modules/system/services/privileged-worker.service.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { OnGatewayConnection, OnGatewayDisconnect, OnGatewayInit } from '@nestjs
4
4
  import { ClientAddressService } from '../../api/services/client-address.service';
5
5
  import { CommandMessageDto } from '../dto/command-message.dto';
6
6
  import { CommandResultDto } from '../dto/command-result.dto';
7
+ import { CommandAcknowledgementTraceService } from '../services/command-acknowledgement-trace.service';
7
8
  import { CommandEventRegistryService } from '../services/command-event-registry.service';
8
9
  import { WsAuthService } from '../services/ws-auth.service';
9
10
  export declare class WebsocketGateway implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect {
@@ -11,10 +12,11 @@ export declare class WebsocketGateway implements OnGatewayInit, OnGatewayConnect
11
12
  private readonly eventEmitter;
12
13
  private readonly wsAuthService;
13
14
  private readonly clientAddressService;
15
+ private readonly commandAcknowledgementTrace;
14
16
  private gatewayEnabled;
15
17
  private readonly server;
16
18
  private readonly logger;
17
- constructor(commandEventRegistry: CommandEventRegistryService, eventEmitter: EventEmitter2, wsAuthService: WsAuthService, clientAddressService: ClientAddressService);
19
+ constructor(commandEventRegistry: CommandEventRegistryService, eventEmitter: EventEmitter2, wsAuthService: WsAuthService, clientAddressService: ClientAddressService, commandAcknowledgementTrace: CommandAcknowledgementTraceService);
18
20
  enable(): void;
19
21
  get enabled(): boolean;
20
22
  get clientsCount(): number;
@@ -25,6 +27,7 @@ export declare class WebsocketGateway implements OnGatewayInit, OnGatewayConnect
25
27
  handleSubscribeExchange(_message: CommandMessageDto, client: Socket): Promise<boolean>;
26
28
  handleCommand(message: CommandMessageDto, client: Socket): Promise<CommandResultDto>;
27
29
  sendMessage(event: string, payload: Record<string, any>): void;
30
+ private observeAcknowledgementTrace;
28
31
  private static readonly INTERNAL_EVENT_PREFIXES;
29
32
  private static readonly DISPLAY_TARGETED_EVENT_PREFIXES;
30
33
  private static readonly EXCHANGE_ONLY_EVENT_PREFIXES;
@@ -28,16 +28,18 @@ const users_constants_1 = require("../../users/users.constants");
28
28
  const command_message_dto_1 = require("../dto/command-message.dto");
29
29
  const command_result_dto_1 = require("../dto/command-result.dto");
30
30
  const ws_client_dto_1 = require("../dto/ws-client.dto");
31
+ const command_acknowledgement_trace_service_1 = require("../services/command-acknowledgement-trace.service");
31
32
  const command_event_registry_service_1 = require("../services/command-event-registry.service");
32
33
  const ws_auth_service_1 = require("../services/ws-auth.service");
33
34
  const websocket_constants_1 = require("../websocket.constants");
34
35
  const websocket_exceptions_1 = require("../websocket.exceptions");
35
36
  let WebsocketGateway = WebsocketGateway_1 = class WebsocketGateway {
36
- constructor(commandEventRegistry, eventEmitter, wsAuthService, clientAddressService) {
37
+ constructor(commandEventRegistry, eventEmitter, wsAuthService, clientAddressService, commandAcknowledgementTrace) {
37
38
  this.commandEventRegistry = commandEventRegistry;
38
39
  this.eventEmitter = eventEmitter;
39
40
  this.wsAuthService = wsAuthService;
40
41
  this.clientAddressService = clientAddressService;
42
+ this.commandAcknowledgementTrace = commandAcknowledgementTrace;
41
43
  this.gatewayEnabled = false;
42
44
  this.logger = (0, logger_1.createExtensionLogger)(websocket_constants_1.WEBSOCKET_MODULE_NAME, 'WebsocketGateway');
43
45
  this.eventEmitter.onAny((event, payload) => {
@@ -79,6 +81,7 @@ let WebsocketGateway = WebsocketGateway_1 = class WebsocketGateway {
79
81
  }
80
82
  async handleConnection(client) {
81
83
  try {
84
+ this.observeAcknowledgementTrace(() => this.commandAcknowledgementTrace.attachSocket(client));
82
85
  this.logger.log(`Client connected: ${client.id}`);
83
86
  await client.join(websocket_constants_1.CLIENT_DEFAULT_ROOM);
84
87
  const clientData = client.data;
@@ -110,6 +113,7 @@ let WebsocketGateway = WebsocketGateway_1 = class WebsocketGateway {
110
113
  }
111
114
  }
112
115
  handleDisconnect(client) {
116
+ this.observeAcknowledgementTrace(() => this.commandAcknowledgementTrace.recordSocketClose(client, 'gateway-disconnect'));
113
117
  this.logger.log(`Client disconnected: ${client.id}`);
114
118
  const clientData = client.data;
115
119
  const clientIp = this.clientAddressService.resolve(client.handshake).address;
@@ -136,9 +140,12 @@ let WebsocketGateway = WebsocketGateway_1 = class WebsocketGateway {
136
140
  async handleCommand(message, client) {
137
141
  const { event, payload } = message;
138
142
  this.logger.log(`Received command '${event}' from client ${client.id}`);
143
+ this.observeAcknowledgementTrace(() => this.commandAcknowledgementTrace.recordGatewayEntry(client, message));
139
144
  if (!this.commandEventRegistry.has(event)) {
140
145
  this.logger.warn(`No subscribers for event: ${event}`);
141
- return (0, transform_utils_1.toInstance)(command_result_dto_1.CommandResultDto, { status: 'error', message: `Event '${event}' is not supported.` });
146
+ const result = (0, transform_utils_1.toInstance)(command_result_dto_1.CommandResultDto, { status: 'error', message: `Event '${event}' is not supported.` });
147
+ this.observeAcknowledgementTrace(() => this.commandAcknowledgementTrace.recordGatewayReturn(client, message, 'error'));
148
+ return result;
142
149
  }
143
150
  try {
144
151
  const handlers = this.commandEventRegistry.get(event);
@@ -146,13 +153,17 @@ let WebsocketGateway = WebsocketGateway_1 = class WebsocketGateway {
146
153
  const results = (await Promise.all(handlers.map(async ({ name, handler, requiredRoles }) => {
147
154
  try {
148
155
  if (requiredRoles && (!clientData.user || !requiredRoles.includes(clientData.user.role))) {
156
+ this.observeAcknowledgementTrace(() => this.commandAcknowledgementTrace.recordHandlerSkipped(client, message, name));
149
157
  return { handler: name, success: false, reason: 'Insufficient permissions' };
150
158
  }
159
+ this.observeAcknowledgementTrace(() => this.commandAcknowledgementTrace.recordHandlerStart(client, message, name));
151
160
  const response = await handler(clientData.user, payload);
161
+ this.observeAcknowledgementTrace(() => this.commandAcknowledgementTrace.recordHandlerSettled(client, message, name, response === null ? 'null' : 'resolved'));
152
162
  return response !== null ? { handler: name, ...response } : null;
153
163
  }
154
164
  catch (error) {
155
165
  const err = error;
166
+ this.observeAcknowledgementTrace(() => this.commandAcknowledgementTrace.recordHandlerSettled(client, message, name, 'rejected'));
156
167
  this.logger.error(`Error in '${name}'`, { message: err.message, stack: err.stack });
157
168
  if (error instanceof websocket_exceptions_1.WebsocketNotAllowedException) {
158
169
  return { handler: name, success: false, reason: error.message };
@@ -160,12 +171,16 @@ let WebsocketGateway = WebsocketGateway_1 = class WebsocketGateway {
160
171
  return { handler: name, success: false, reason: 'Internal error' };
161
172
  }
162
173
  }))).filter((result) => result !== null);
163
- return (0, transform_utils_1.toInstance)(command_result_dto_1.CommandResultDto, { status: 'ok', message: 'Event handled successfully', results }, { excludeExtraneousValues: false });
174
+ const result = (0, transform_utils_1.toInstance)(command_result_dto_1.CommandResultDto, { status: 'ok', message: 'Event handled successfully', results }, { excludeExtraneousValues: false });
175
+ this.observeAcknowledgementTrace(() => this.commandAcknowledgementTrace.recordGatewayReturn(client, message, 'ok'));
176
+ return result;
164
177
  }
165
178
  catch (error) {
166
179
  const err = error;
167
180
  this.logger.error(`Error handling event: ${event}`, { message: err.message, stack: err.stack });
168
- return (0, transform_utils_1.toInstance)(command_result_dto_1.CommandResultDto, { status: 'error', message: `Failed to handle event: ${event}` });
181
+ const result = (0, transform_utils_1.toInstance)(command_result_dto_1.CommandResultDto, { status: 'error', message: `Failed to handle event: ${event}` });
182
+ this.observeAcknowledgementTrace(() => this.commandAcknowledgementTrace.recordGatewayReturn(client, message, 'error'));
183
+ return result;
169
184
  }
170
185
  }
171
186
  sendMessage(event, payload) {
@@ -186,6 +201,13 @@ let WebsocketGateway = WebsocketGateway_1 = class WebsocketGateway {
186
201
  this.logger.debug(`Emitting message: ${JSON.stringify(message)}`);
187
202
  this.server.emit('event', message);
188
203
  }
204
+ observeAcknowledgementTrace(callback) {
205
+ try {
206
+ callback();
207
+ }
208
+ catch {
209
+ }
210
+ }
189
211
  sanitizeForLogging(obj) {
190
212
  if (obj === null || typeof obj !== 'object') {
191
213
  return obj;
@@ -343,6 +365,7 @@ exports.WebsocketGateway = WebsocketGateway = WebsocketGateway_1 = __decorate([
343
365
  __metadata("design:paramtypes", [command_event_registry_service_1.CommandEventRegistryService,
344
366
  event_emitter_1.EventEmitter2,
345
367
  ws_auth_service_1.WsAuthService,
346
- client_address_service_1.ClientAddressService])
368
+ client_address_service_1.ClientAddressService,
369
+ command_acknowledgement_trace_service_1.CommandAcknowledgementTraceService])
347
370
  ], WebsocketGateway);
348
371
  //# sourceMappingURL=websocket.gateway.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.gateway.js","sourceRoot":"","sources":["../../../../src/modules/websocket/gateway/websocket.gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.gateway.js","sourceRoot":"","sources":["../../../../src/modules/websocket/gateway/websocket.gateway.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import { type FileHandle } from 'node:fs/promises';
2
+ import { Socket } from 'socket.io';
3
+ import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
4
+ export interface CommandAcknowledgementTraceConfig {
5
+ readonly schemaVersion: 1;
6
+ readonly runId: string;
7
+ readonly target: {
8
+ readonly deviceId: string;
9
+ readonly channelId: string;
10
+ readonly propertyId: string;
11
+ };
12
+ readonly requests: readonly [
13
+ {
14
+ readonly phase: 'trial';
15
+ readonly requestId: string;
16
+ readonly value: boolean;
17
+ },
18
+ {
19
+ readonly phase: 'restoration';
20
+ readonly requestId: string;
21
+ readonly value: boolean;
22
+ }
23
+ ];
24
+ readonly exportPath: string;
25
+ readonly captureDurationMs?: number;
26
+ readonly maxRecords?: number;
27
+ }
28
+ export declare const COMMAND_ACKNOWLEDGEMENT_TRACE_OPTIONS: unique symbol;
29
+ type TraceState = 'armed' | 'recording' | 'closed' | 'invalid';
30
+ type TracePhase = 'trial' | 'restoration';
31
+ type TraceStage = 'socket-receipt' | 'gateway-entry' | 'handler-start' | 'handler-settled' | 'handler-skipped' | 'gateway-return' | 'gateway-throw' | 'ack-invoked' | 'ack-returned' | 'ack-threw' | 'socket-close';
32
+ interface TraceRecord {
33
+ readonly sequence: number;
34
+ readonly monotonicMs: number;
35
+ readonly stage: TraceStage;
36
+ readonly phase: TracePhase;
37
+ readonly requestId: string;
38
+ readonly metadata?: Record<string, boolean | number | string>;
39
+ }
40
+ interface CommandAcknowledgementTraceSnapshot {
41
+ readonly schemaVersion: 1;
42
+ readonly snapshotSequence: number;
43
+ readonly snapshotMonotonicMs: number;
44
+ readonly configFingerprint: string;
45
+ readonly process: {
46
+ readonly id: number;
47
+ readonly instanceId: string;
48
+ readonly runtimeSourceHash: string;
49
+ };
50
+ readonly runId: string;
51
+ readonly target: {
52
+ readonly deviceId: string;
53
+ readonly channelId: string;
54
+ readonly propertyId: string;
55
+ };
56
+ readonly state: TraceState;
57
+ readonly cutoffReason: string | null;
58
+ readonly socketTraceId: string | null;
59
+ readonly requests: readonly {
60
+ readonly phase: TracePhase;
61
+ readonly requestId: string;
62
+ readonly value: boolean;
63
+ readonly status: 'not-observed' | 'received';
64
+ readonly acknowledgementCalls: number;
65
+ }[];
66
+ readonly records: readonly TraceRecord[];
67
+ }
68
+ interface CommandAcknowledgementTraceFileSystem {
69
+ lstat(path: string): Promise<unknown>;
70
+ open(path: string, flags: 'r' | 'wx', mode?: number): Promise<FileHandle>;
71
+ link(existingPath: string, newPath: string): Promise<void>;
72
+ rename(oldPath: string, newPath: string): Promise<void>;
73
+ rm(path: string, options: {
74
+ force: boolean;
75
+ }): Promise<void>;
76
+ }
77
+ export declare class CommandAcknowledgementSnapshotWriter {
78
+ private readonly destination;
79
+ private readonly onFailure;
80
+ private readonly fileSystem;
81
+ private writing;
82
+ private pending;
83
+ private ownedDestination;
84
+ private readonly idleWaiters;
85
+ constructor(destination: string, onFailure: () => void, fileSystem?: CommandAcknowledgementTraceFileSystem);
86
+ queue(snapshot: CommandAcknowledgementTraceSnapshot): void;
87
+ waitForIdle(): Promise<void>;
88
+ private drain;
89
+ private write;
90
+ private assertDestinationIsAbsent;
91
+ private syncParentDirectory;
92
+ }
93
+ export declare class CommandAcknowledgementTraceService implements OnModuleInit, OnModuleDestroy {
94
+ private readonly config;
95
+ private readonly runtimeSourceHash;
96
+ private readonly configFingerprint;
97
+ private readonly processInstanceId;
98
+ private readonly requests;
99
+ private readonly attachedSockets;
100
+ private readonly disconnectListeners;
101
+ private readonly writer;
102
+ private socketContext;
103
+ private state;
104
+ private cutoffReason;
105
+ private records;
106
+ private nextSequence;
107
+ private nextSnapshotSequence;
108
+ private timer;
109
+ private exportFailed;
110
+ constructor(options?: CommandAcknowledgementTraceConfig | null);
111
+ static getSourceHash(): string;
112
+ onModuleInit(): void;
113
+ onModuleDestroy(): void;
114
+ isEnabled(): boolean;
115
+ waitForExports(): Promise<void>;
116
+ attachSocket(socket: Socket): void;
117
+ recordGatewayEntry(socket: Socket, message: unknown): void;
118
+ recordHandlerStart(socket: Socket, message: unknown, handlerName: string): void;
119
+ recordHandlerSettled(socket: Socket, message: unknown, handlerName: string, outcome: 'resolved' | 'null' | 'rejected'): void;
120
+ recordHandlerSkipped(socket: Socket, message: unknown, handlerName: string): void;
121
+ recordGatewayReturn(socket: Socket, message: unknown, status: 'ok' | 'error'): void;
122
+ recordGatewayThrow(socket: Socket, message: unknown): void;
123
+ recordSocketClose(socket: Socket, reason: string): void;
124
+ getSnapshot(): CommandAcknowledgementTraceSnapshot | null;
125
+ private observeSocketPacket;
126
+ private wrapAcknowledgement;
127
+ private static createAcknowledgementWrapper;
128
+ private recordForGateway;
129
+ private findRequestFromGatewayMessage;
130
+ private findRequest;
131
+ private matchesTarget;
132
+ private bindSocket;
133
+ private isCurrentSocket;
134
+ private removeObservedSocketListener;
135
+ private startTimer;
136
+ private close;
137
+ private invalidate;
138
+ private record;
139
+ private scheduleSnapshot;
140
+ private createSnapshot;
141
+ private handleExportFailure;
142
+ }
143
+ export {};