@camstack/system 1.2.390 → 1.2.391

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 (503) hide show
  1. package/dist/addon/addon-api-factory.d.ts +30 -30
  2. package/dist/addon-routes/addon-route-registry.d.ts +31 -31
  3. package/dist/addon-runner.js +1 -1
  4. package/dist/addon-runner.mjs +1 -1
  5. package/dist/addon-utils.d.ts +22 -22
  6. package/dist/auth/admin-token-manager.d.ts +37 -67
  7. package/dist/auth/api-key-manager.d.ts +8 -8
  8. package/dist/auth/auth-audit-log.d.ts +29 -49
  9. package/dist/auth/auth-manager.d.ts +127 -126
  10. package/dist/auth/cidr.d.ts +8 -8
  11. package/dist/auth/external-identity-manager.d.ts +46 -34
  12. package/dist/auth/jwt-signing-key.d.ts +14 -14
  13. package/dist/auth/login-session-manager.d.ts +95 -135
  14. package/dist/auth/parse-record.d.ts +13 -13
  15. package/dist/auth/scope-matcher.d.ts +7 -7
  16. package/dist/auth/scoped-token-manager.d.ts +62 -62
  17. package/dist/auth/token-expiry.d.ts +49 -26
  18. package/dist/auth/totp-manager.d.ts +48 -48
  19. package/dist/auth/user-management-internal.d.ts +67 -52
  20. package/dist/auth/user-manager.d.ts +58 -58
  21. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.d.ts +54 -54
  22. package/dist/builtins/addon-pages-aggregator/dedupe-pages.d.ts +22 -4
  23. package/dist/builtins/addon-pages-aggregator/index.d.ts +1 -1
  24. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.d.ts +54 -54
  25. package/dist/builtins/addon-widgets-aggregator/index.d.ts +1 -1
  26. package/dist/builtins/alerts/alerts.addon.d.ts +88 -87
  27. package/dist/builtins/alerts/device-label.d.ts +6 -6
  28. package/dist/builtins/alerts/index.d.ts +1 -1
  29. package/dist/builtins/alerts/prune-policy.d.ts +36 -36
  30. package/dist/builtins/autotrack/autotrack-cameras.d.ts +102 -79
  31. package/dist/builtins/autotrack/autotrack-config.d.ts +81 -81
  32. package/dist/builtins/autotrack/autotrack-decision.d.ts +69 -82
  33. package/dist/builtins/autotrack/autotrack-loop.d.ts +81 -61
  34. package/dist/builtins/autotrack/autotrack.addon.d.ts +103 -66
  35. package/dist/builtins/autotrack/frame-error.d.ts +38 -38
  36. package/dist/builtins/autotrack/frame-measurements.d.ts +79 -79
  37. package/dist/builtins/autotrack/index.d.ts +2 -2
  38. package/dist/builtins/autotrack/ptz-mirror.d.ts +46 -17
  39. package/dist/builtins/autotrack/target-selection.d.ts +33 -47
  40. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.d.ts +270 -269
  41. package/dist/builtins/backup-orchestrator/cron-helpers.d.ts +17 -17
  42. package/dist/builtins/backup-orchestrator/destination-policy.d.ts +99 -82
  43. package/dist/builtins/backup-orchestrator/download-helpers.d.ts +9 -9
  44. package/dist/builtins/backup-orchestrator/encryption-key-store.d.ts +40 -29
  45. package/dist/builtins/backup-orchestrator/index.d.ts +2 -2
  46. package/dist/builtins/backup-orchestrator/manifest-store.d.ts +88 -69
  47. package/dist/builtins/backup-orchestrator/restore-archive.d.ts +14 -14
  48. package/dist/builtins/backup-orchestrator/run-queue.d.ts +86 -86
  49. package/dist/builtins/backup-orchestrator/schedule-store.d.ts +53 -37
  50. package/dist/builtins/backup-orchestrator/staging-paths.d.ts +23 -23
  51. package/dist/builtins/backup-orchestrator/write-targets.d.ts +53 -53
  52. package/dist/builtins/calendars/calendar-color.d.ts +5 -1
  53. package/dist/builtins/calendars/calendar-prefs-store.d.ts +18 -12
  54. package/dist/builtins/calendars/calendars.addon.d.ts +16 -11
  55. package/dist/builtins/calendars/index.d.ts +1 -1
  56. package/dist/builtins/camera-grid/acquire-retry.d.ts +26 -26
  57. package/dist/builtins/camera-grid/addon.d.ts +200 -174
  58. package/dist/builtins/camera-grid/flv-join.d.ts +32 -58
  59. package/dist/builtins/camera-grid/grid-activity-mirror.d.ts +37 -37
  60. package/dist/builtins/camera-grid/grid-activity.d.ts +83 -42
  61. package/dist/builtins/camera-grid/grid-camera-declarations.d.ts +46 -46
  62. package/dist/builtins/camera-grid/grid-camera-device.d.ts +60 -34
  63. package/dist/builtins/camera-grid/grid-canvas-derivation.d.ts +50 -15
  64. package/dist/builtins/camera-grid/grid-canvas-seed.d.ts +96 -46
  65. package/dist/builtins/camera-grid/grid-canvas.d.ts +74 -74
  66. package/dist/builtins/camera-grid/grid-child.d.ts +29 -16
  67. package/dist/builtins/camera-grid/grid-compositor-child.d.ts +2 -2
  68. package/dist/builtins/camera-grid/grid-compositor-invocation.d.ts +39 -11
  69. package/dist/builtins/camera-grid/grid-compositor.d.ts +50 -50
  70. package/dist/builtins/camera-grid/grid-detection-mapping.d.ts +52 -22
  71. package/dist/builtins/camera-grid/grid-device-settings.d.ts +31 -7
  72. package/dist/builtins/camera-grid/grid-filter-graph.d.ts +41 -41
  73. package/dist/builtins/camera-grid/grid-frame-sample.d.ts +45 -19
  74. package/dist/builtins/camera-grid/grid-instances.d.ts +20 -50
  75. package/dist/builtins/camera-grid/grid-last-frame-store.d.ts +51 -51
  76. package/dist/builtins/camera-grid/grid-layout-native-provider.d.ts +30 -4
  77. package/dist/builtins/camera-grid/grid-plan.d.ts +30 -20
  78. package/dist/builtins/camera-grid/grid-profiles.d.ts +85 -45
  79. package/dist/builtins/camera-grid/grid-row-normalization.d.ts +6 -6
  80. package/dist/builtins/camera-grid/grid-sentry-sources.d.ts +57 -57
  81. package/dist/builtins/camera-grid/grid-snapshot.d.ts +41 -41
  82. package/dist/builtins/camera-grid/grid-stream-descriptor.d.ts +49 -21
  83. package/dist/builtins/camera-grid/grid-stream-invocation.d.ts +37 -22
  84. package/dist/builtins/camera-grid/grid-stream-relay.d.ts +26 -26
  85. package/dist/builtins/camera-grid/grid-stream-session.d.ts +123 -93
  86. package/dist/builtins/camera-grid/grid-tile-feed.d.ts +47 -47
  87. package/dist/builtins/camera-grid/grid-tile-plan.d.ts +55 -20
  88. package/dist/builtins/camera-grid/grid-wire-format.d.ts +22 -6
  89. package/dist/builtins/camera-grid/index.d.ts +44 -44
  90. package/dist/builtins/camera-grid/silence-analysis.d.ts +31 -14
  91. package/dist/builtins/composer/claim-gate.d.ts +54 -27
  92. package/dist/builtins/composer/composed-device-set.d.ts +40 -26
  93. package/dist/builtins/composer/composed-device.d.ts +39 -17
  94. package/dist/builtins/composer/composer-apply-waits.d.ts +20 -13
  95. package/dist/builtins/composer/composer-grafts.d.ts +57 -38
  96. package/dist/builtins/composer/composer-live-set.d.ts +15 -15
  97. package/dist/builtins/composer/composer-plan.d.ts +76 -60
  98. package/dist/builtins/composer/composer-runtime-factory.d.ts +21 -14
  99. package/dist/builtins/composer/composer-seeds.d.ts +20 -14
  100. package/dist/builtins/composer/composer-verdict.d.ts +28 -14
  101. package/dist/builtins/composer/composer.addon.d.ts +23 -9
  102. package/dist/builtins/composer/composer.d.ts +145 -100
  103. package/dist/builtins/composer/composition-declarations.d.ts +50 -39
  104. package/dist/builtins/composer/composition-evaluation.d.ts +38 -22
  105. package/dist/builtins/composer/composition-runtime.d.ts +178 -125
  106. package/dist/builtins/composer/composition-target.d.ts +38 -34
  107. package/dist/builtins/composer/confirmed-seed.d.ts +35 -23
  108. package/dist/builtins/composer/deadline-timer.d.ts +13 -13
  109. package/dist/builtins/composer/existing-target.d.ts +90 -73
  110. package/dist/builtins/composer/field-record.d.ts +26 -19
  111. package/dist/builtins/composer/graft-host.d.ts +56 -32
  112. package/dist/builtins/composer/held-claims.d.ts +26 -9
  113. package/dist/builtins/composer/index.d.ts +1 -1
  114. package/dist/builtins/composer/own-field-reads.d.ts +26 -15
  115. package/dist/builtins/composer/owned-fields-target.d.ts +75 -44
  116. package/dist/builtins/composer/slice-assembler.d.ts +19 -3
  117. package/dist/builtins/composer/source-readings.d.ts +67 -61
  118. package/dist/builtins/composer/source-tracker.d.ts +133 -69
  119. package/dist/builtins/console-logging/console-destination.d.ts +15 -8
  120. package/dist/builtins/console-logging/console-logging.addon.d.ts +20 -19
  121. package/dist/builtins/console-logging/index.d.ts +3 -3
  122. package/dist/builtins/core-blocks/block-package.d.ts +37 -37
  123. package/dist/builtins/core-blocks/block-settings-store.d.ts +34 -21
  124. package/dist/builtins/core-blocks/block-supervisor.d.ts +138 -117
  125. package/dist/builtins/core-blocks/block-type-defs.d.ts +21 -21
  126. package/dist/builtins/core-blocks/blocks-integration.d.ts +76 -49
  127. package/dist/builtins/core-blocks/compile-block.d.ts +37 -37
  128. package/dist/builtins/core-blocks/composition-api.d.ts +38 -24
  129. package/dist/builtins/core-blocks/composition-peers.d.ts +26 -4
  130. package/dist/builtins/core-blocks/composition-sources.d.ts +25 -10
  131. package/dist/builtins/core-blocks/core-block-store.d.ts +109 -109
  132. package/dist/builtins/core-blocks/core-blocks.addon.d.ts +72 -72
  133. package/dist/builtins/core-blocks/extract-settings-schema.d.ts +4 -4
  134. package/dist/builtins/core-blocks/index.d.ts +8 -8
  135. package/dist/builtins/device-manager/adoption-job-engine.d.ts +141 -98
  136. package/dist/builtins/device-manager/claimed-status-overlay.d.ts +42 -9
  137. package/dist/builtins/device-manager/contribution-cache.d.ts +56 -56
  138. package/dist/builtins/device-manager/day-night-config-schema.d.ts +26 -12
  139. package/dist/builtins/device-manager/device-aggregation-merge.d.ts +17 -17
  140. package/dist/builtins/device-manager/device-aggregation.d.ts +277 -254
  141. package/dist/builtins/device-manager/device-bindings-store.d.ts +232 -220
  142. package/dist/builtins/device-manager/device-config-contribution.d.ts +29 -29
  143. package/dist/builtins/device-manager/device-config-secrets.d.ts +32 -13
  144. package/dist/builtins/device-manager/device-event-propagator.d.ts +22 -22
  145. package/dist/builtins/device-manager/device-extension-linked-slot.d.ts +17 -17
  146. package/dist/builtins/device-manager/device-form-secrets.d.ts +14 -14
  147. package/dist/builtins/device-manager/device-linked-devices.d.ts +159 -98
  148. package/dist/builtins/device-manager/device-manager.addon.d.ts +223 -197
  149. package/dist/builtins/device-manager/device-meta-actions.d.ts +306 -305
  150. package/dist/builtins/device-manager/device-meta-store.d.ts +100 -90
  151. package/dist/builtins/device-manager/device-meta-types.d.ts +250 -241
  152. package/dist/builtins/device-manager/device-online-fallback.d.ts +30 -30
  153. package/dist/builtins/device-manager/device-projection.d.ts +53 -67
  154. package/dist/builtins/device-manager/device-provider-context.d.ts +109 -94
  155. package/dist/builtins/device-manager/device-queries.d.ts +63 -63
  156. package/dist/builtins/device-manager/device-row-store.d.ts +417 -365
  157. package/dist/builtins/device-manager/device-source-activation.d.ts +91 -49
  158. package/dist/builtins/device-manager/device-state-claim-views.d.ts +76 -61
  159. package/dist/builtins/device-manager/device-state-claims.d.ts +53 -30
  160. package/dist/builtins/device-manager/device-state-mirror.d.ts +256 -264
  161. package/dist/builtins/device-manager/device-sync-resolvers.d.ts +25 -25
  162. package/dist/builtins/device-manager/field-claims-index.d.ts +85 -58
  163. package/dist/builtins/device-manager/field-ownership.d.ts +54 -36
  164. package/dist/builtins/device-manager/fleet-read-census.d.ts +99 -61
  165. package/dist/builtins/device-manager/image-settings-config-schema.d.ts +18 -8
  166. package/dist/builtins/device-manager/index.d.ts +2 -2
  167. package/dist/builtins/device-manager/linked-devices-manual-backfill.d.ts +20 -9
  168. package/dist/builtins/device-manager/location-alignment.d.ts +46 -46
  169. package/dist/builtins/device-manager/migrate-device.d.ts +178 -101
  170. package/dist/builtins/device-manager/migrate-guard.d.ts +66 -34
  171. package/dist/builtins/device-manager/migrate-hardware-state.d.ts +59 -59
  172. package/dist/builtins/device-manager/migrate-reload.d.ts +42 -4
  173. package/dist/builtins/device-manager/migration-refused.d.ts +20 -20
  174. package/dist/builtins/device-manager/mirror-row-writer.d.ts +205 -179
  175. package/dist/builtins/device-manager/recording-onboard-config-schema.d.ts +56 -32
  176. package/dist/builtins/device-manager/removal-fence.d.ts +48 -48
  177. package/dist/builtins/device-manager/runtime-state-persist-gate.d.ts +54 -26
  178. package/dist/builtins/device-manager/secret-config-paths.d.ts +17 -17
  179. package/dist/builtins/device-manager/stale-wrapper-activations.d.ts +52 -25
  180. package/dist/builtins/device-manager/write-lock.d.ts +13 -13
  181. package/dist/builtins/hub-forwarder/hub-forwarder-destination.d.ts +41 -41
  182. package/dist/builtins/hub-forwarder/hub-forwarder.addon.d.ts +13 -12
  183. package/dist/builtins/hub-forwarder/index.d.ts +3 -3
  184. package/dist/builtins/keychain/index.d.ts +1 -1
  185. package/dist/builtins/keychain/key-sources.d.ts +19 -19
  186. package/dist/builtins/keychain/keychain-crypto.d.ts +4 -4
  187. package/dist/builtins/keychain/keychain-reset-trigger.d.ts +13 -13
  188. package/dist/builtins/keychain/keychain-service.d.ts +128 -128
  189. package/dist/builtins/keychain/keychain-store.d.ts +96 -87
  190. package/dist/builtins/keychain/keychain-usage.d.ts +13 -2
  191. package/dist/builtins/keychain/keychain.addon.d.ts +31 -6
  192. package/dist/builtins/keychain/platform-key-source.d.ts +15 -15
  193. package/dist/builtins/keychain/system-held-secrets.d.ts +17 -4
  194. package/dist/builtins/liveness-monitor/index.d.ts +2 -2
  195. package/dist/builtins/liveness-monitor/liveness-checks.d.ts +73 -52
  196. package/dist/builtins/liveness-monitor/liveness-monitor.addon.d.ts +57 -36
  197. package/dist/builtins/local-auth/admin-account-boot.d.ts +14 -14
  198. package/dist/builtins/local-auth/auth-config-reader.d.ts +34 -17
  199. package/dist/builtins/local-auth/auth-schema.d.ts +92 -69
  200. package/dist/builtins/local-auth/index.d.ts +1 -1
  201. package/dist/builtins/local-auth/jwt-signing-key-keeper.d.ts +22 -22
  202. package/dist/builtins/local-auth/local-auth.addon.d.ts +41 -40
  203. package/dist/builtins/local-auth/oauth-grants.d.ts +57 -57
  204. package/dist/builtins/local-auth/oauth-session-manager.d.ts +62 -62
  205. package/dist/builtins/local-network/address-book.d.ts +61 -36
  206. package/dist/builtins/local-network/index.d.ts +2 -2
  207. package/dist/builtins/local-network/ipv6-lan.d.ts +12 -17
  208. package/dist/builtins/local-network/local-hostname.d.ts +10 -10
  209. package/dist/builtins/local-network/local-network.addon.d.ts +259 -258
  210. package/dist/builtins/loki-logging/index.d.ts +4 -4
  211. package/dist/builtins/loki-logging/loki-destination.d.ts +113 -87
  212. package/dist/builtins/loki-logging/loki-logging.addon.d.ts +61 -42
  213. package/dist/builtins/loki-logging/loki-payload.d.ts +82 -39
  214. package/dist/builtins/loki-logging/retire-enabled-flag.d.ts +37 -12
  215. package/dist/builtins/native-metrics/cgroup-memory.d.ts +206 -159
  216. package/dist/builtins/native-metrics/cgroup-pids.d.ts +138 -91
  217. package/dist/builtins/native-metrics/container-memory-series.d.ts +212 -178
  218. package/dist/builtins/native-metrics/gpu-probe.d.ts +9 -9
  219. package/dist/builtins/native-metrics/index.d.ts +2 -2
  220. package/dist/builtins/native-metrics/load-series-config.d.ts +29 -57
  221. package/dist/builtins/native-metrics/load-series-reader.d.ts +52 -26
  222. package/dist/builtins/native-metrics/load-series-store.d.ts +237 -176
  223. package/dist/builtins/native-metrics/native-metrics-provider.d.ts +43 -43
  224. package/dist/builtins/native-metrics/native-metrics.addon.d.ts +230 -230
  225. package/dist/builtins/native-metrics/node-load-ring.d.ts +196 -196
  226. package/dist/builtins/native-metrics/proc-process-table.d.ts +12 -12
  227. package/dist/builtins/native-metrics/process-classification.d.ts +95 -36
  228. package/dist/builtins/native-metrics/thread-cpu-sampler.d.ts +95 -95
  229. package/dist/builtins/platform-probe/coral-accelerators.d.ts +17 -17
  230. package/dist/builtins/platform-probe/index.d.ts +38 -30
  231. package/dist/builtins/platform-probe/inference-config-resolver.d.ts +27 -27
  232. package/dist/builtins/platform-probe/intel-accelerators.d.ts +8 -8
  233. package/dist/builtins/platform-probe/intel-npu.d.ts +30 -30
  234. package/dist/builtins/platform-probe/platform-scorer.d.ts +35 -35
  235. package/dist/builtins/platform-probe/runtime-packages.d.ts +3 -3
  236. package/dist/builtins/remote-access-orchestrator/enabled-providers-reconcile.d.ts +87 -87
  237. package/dist/builtins/remote-access-orchestrator/index.d.ts +1 -1
  238. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.d.ts +66 -35
  239. package/dist/builtins/shared/device-state-changed.d.ts +9 -9
  240. package/dist/builtins/shared/settle-sources.d.ts +16 -16
  241. package/dist/builtins/snapshot/index.d.ts +2 -2
  242. package/dist/builtins/snapshot/snapshot-cache.d.ts +92 -92
  243. package/dist/builtins/snapshot/snapshot-coalescing.d.ts +108 -108
  244. package/dist/builtins/snapshot/snapshot-courtesy.d.ts +48 -48
  245. package/dist/builtins/snapshot/snapshot-durable-store.d.ts +32 -32
  246. package/dist/builtins/snapshot/snapshot-fatigue.d.ts +34 -34
  247. package/dist/builtins/snapshot/snapshot-grab-pick.d.ts +14 -14
  248. package/dist/builtins/snapshot/snapshot-link-url.d.ts +49 -49
  249. package/dist/builtins/snapshot/snapshot-media-handler.d.ts +97 -97
  250. package/dist/builtins/snapshot/snapshot-resize.d.ts +64 -103
  251. package/dist/builtins/snapshot/snapshot.addon.d.ts +569 -568
  252. package/dist/builtins/sqlite-storage/analyze-stats.d.ts +73 -29
  253. package/dist/builtins/sqlite-storage/config-store.d.ts +6 -6
  254. package/dist/builtins/sqlite-storage/device-store.d.ts +16 -16
  255. package/dist/builtins/sqlite-storage/filesystem-browse-provider.d.ts +23 -23
  256. package/dist/builtins/sqlite-storage/filesystem-storage-provider.d.ts +79 -79
  257. package/dist/builtins/sqlite-storage/filesystem-storage.addon.d.ts +27 -26
  258. package/dist/builtins/sqlite-storage/filter-compiler.d.ts +107 -107
  259. package/dist/builtins/sqlite-storage/index.d.ts +12 -12
  260. package/dist/builtins/sqlite-storage/integration-registry.d.ts +37 -37
  261. package/dist/builtins/sqlite-storage/path-guard.d.ts +5 -5
  262. package/dist/builtins/sqlite-storage/prefix-range.d.ts +44 -44
  263. package/dist/builtins/sqlite-storage/query-bounds.d.ts +100 -106
  264. package/dist/builtins/sqlite-storage/query-profiler.d.ts +217 -217
  265. package/dist/builtins/sqlite-storage/retired-collections.d.ts +124 -55
  266. package/dist/builtins/sqlite-storage/retired-settings-keys.d.ts +239 -189
  267. package/dist/builtins/sqlite-storage/shm-lock-canary.d.ts +41 -41
  268. package/dist/builtins/sqlite-storage/sqlite-pragmas.d.ts +162 -162
  269. package/dist/builtins/sqlite-storage/sqlite-settings-backend.d.ts +458 -458
  270. package/dist/builtins/sqlite-storage/sqlite-settings.addon.d.ts +59 -58
  271. package/dist/builtins/sqlite-storage/sqlite-snapshot-protocol.d.ts +37 -32
  272. package/dist/builtins/sqlite-storage/sqlite-snapshot-worker.d.ts +19 -19
  273. package/dist/builtins/sqlite-storage/sqlite-snapshotter.d.ts +76 -76
  274. package/dist/builtins/sqlite-storage/statement-shape.d.ts +54 -54
  275. package/dist/builtins/sqlite-storage/table-sizes.d.ts +71 -71
  276. package/dist/builtins/sqlite-storage/vector-index-shared.d.ts +63 -54
  277. package/dist/builtins/sqlite-storage/vector-index-vec.d.ts +133 -96
  278. package/dist/builtins/sqlite-storage/wal-checkpoint-policy.d.ts +161 -161
  279. package/dist/builtins/sqlite-storage/wal-checkpointer.d.ts +60 -60
  280. package/dist/builtins/sqlite-storage/wal-maintenance.d.ts +94 -94
  281. package/dist/builtins/storage-orchestrator/access-guards.d.ts +37 -26
  282. package/dist/builtins/storage-orchestrator/data-store-dispatch.d.ts +33 -18
  283. package/dist/builtins/storage-orchestrator/drain-ratchet.d.ts +85 -85
  284. package/dist/builtins/storage-orchestrator/drain-state-store.d.ts +20 -10
  285. package/dist/builtins/storage-orchestrator/hub-settings-forward.d.ts +113 -53
  286. package/dist/builtins/storage-orchestrator/index.d.ts +7 -7
  287. package/dist/builtins/storage-orchestrator/location-occupancy-slice.d.ts +64 -40
  288. package/dist/builtins/storage-orchestrator/location-occupancy.d.ts +14 -14
  289. package/dist/builtins/storage-orchestrator/location-protection.d.ts +13 -13
  290. package/dist/builtins/storage-orchestrator/location-repoint-move.d.ts +44 -44
  291. package/dist/builtins/storage-orchestrator/location-root-collision.d.ts +61 -25
  292. package/dist/builtins/storage-orchestrator/location-secrets.d.ts +99 -58
  293. package/dist/builtins/storage-orchestrator/location-store.d.ts +56 -47
  294. package/dist/builtins/storage-orchestrator/location-volume-capacity.d.ts +37 -37
  295. package/dist/builtins/storage-orchestrator/provider-discovery.d.ts +20 -6
  296. package/dist/builtins/storage-orchestrator/storage-cleanup-coordinator.d.ts +51 -51
  297. package/dist/builtins/storage-orchestrator/storage-migration-coordinator.d.ts +224 -224
  298. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +292 -292
  299. package/dist/builtins/storage-orchestrator/storage-orchestrator.service.d.ts +431 -450
  300. package/dist/builtins/storage-orchestrator/storage-pressure-manager.d.ts +104 -104
  301. package/dist/builtins/system-backup/backup-encryption.d.ts +60 -23
  302. package/dist/builtins/system-backup/system-backup.service.d.ts +240 -240
  303. package/dist/builtins/system-config/cluster-secret-keeper.d.ts +54 -34
  304. package/dist/builtins/system-config/index.d.ts +2 -2
  305. package/dist/builtins/system-config/mesh-actions.d.ts +2 -30
  306. package/dist/builtins/system-config/system-config.addon.d.ts +57 -100
  307. package/dist/builtins/system-config/system-config.addon.js +37 -33
  308. package/dist/builtins/system-config/system-config.addon.mjs +37 -33
  309. package/dist/builtins/winston-logging/index.d.ts +3 -3
  310. package/dist/builtins/winston-logging/winston-destination.d.ts +15 -15
  311. package/dist/builtins/winston-logging/winston-logging.addon.d.ts +14 -13
  312. package/dist/{child-cap-dispatch-nURMuVTX.js → child-cap-dispatch-Bnr8brru.js} +18 -0
  313. package/dist/{child-cap-dispatch-B1gyE35b.mjs → child-cap-dispatch-mHO_6r0G.mjs} +1 -1
  314. package/dist/download/hosted-model-revisions.d.ts +8 -8
  315. package/dist/download/model-download-service.d.ts +32 -32
  316. package/dist/download/model-downloader.d.ts +88 -88
  317. package/dist/events/event-bus.d.ts +6 -6
  318. package/dist/events/system-event-bus.d.ts +11 -11
  319. package/dist/feature/feature-manager.d.ts +6 -6
  320. package/dist/http/asset-compression.d.ts +35 -73
  321. package/dist/http/authenticated-file-server.d.ts +32 -32
  322. package/dist/http/data-plane-registry.d.ts +49 -39
  323. package/dist/http/file-data-plane.d.ts +14 -14
  324. package/dist/http/lan-http-bind.d.ts +24 -13
  325. package/dist/http/reverse-proxy.d.ts +36 -24
  326. package/dist/index.d.ts +137 -137
  327. package/dist/index.js +4 -3
  328. package/dist/index.mjs +2 -4
  329. package/dist/kernel/addon-class-resolver.d.ts +1 -1
  330. package/dist/kernel/addon-engine-manager.d.ts +20 -20
  331. package/dist/kernel/addon-health-monitor.d.ts +151 -151
  332. package/dist/kernel/addon-installer.d.ts +609 -609
  333. package/dist/kernel/addon-loader.d.ts +133 -133
  334. package/dist/kernel/addon-manifest.d.ts +118 -118
  335. package/dist/kernel/addon-residue.d.ts +28 -32
  336. package/dist/kernel/array-buffer-census.d.ts +84 -88
  337. package/dist/kernel/bootstrap-config.d.ts +3 -3
  338. package/dist/kernel/cap-router-builder.d.ts +145 -101
  339. package/dist/kernel/capability-handle.d.ts +41 -41
  340. package/dist/kernel/capability-registry.d.ts +588 -576
  341. package/dist/kernel/config-manager.d.ts +199 -199
  342. package/dist/kernel/config-schema.d.ts +132 -128
  343. package/dist/kernel/custom-action-registry.d.ts +25 -25
  344. package/dist/kernel/deps/addon-deps-manager.d.ts +17 -17
  345. package/dist/kernel/deps/closure-dedupe.d.ts +76 -76
  346. package/dist/kernel/deps/ensure-addon-natives.d.ts +34 -34
  347. package/dist/kernel/deps/ensure-native-prebuilds.d.ts +25 -25
  348. package/dist/kernel/deps/manifest-native-deps.d.ts +38 -38
  349. package/dist/kernel/deps/manifest-python-deps.d.ts +18 -18
  350. package/dist/kernel/deps/manifest-system-deps.d.ts +13 -13
  351. package/dist/kernel/deps/npm-command.d.ts +45 -45
  352. package/dist/kernel/deps/system-package-allowlist.d.ts +9 -9
  353. package/dist/kernel/deps/system-package-broker.d.ts +20 -20
  354. package/dist/kernel/deps/system-package-client.d.ts +3 -3
  355. package/dist/kernel/device-registry.d.ts +27 -27
  356. package/dist/kernel/event-loop-stall-monitor.d.ts +33 -33
  357. package/dist/kernel/event-plane-report.d.ts +174 -174
  358. package/dist/kernel/fs-utils.d.ts +70 -70
  359. package/dist/kernel/gc-census.d.ts +119 -119
  360. package/dist/kernel/heap-spaces.d.ts +87 -87
  361. package/dist/kernel/heap-watch.d.ts +706 -706
  362. package/dist/kernel/host-externals.d.ts +8 -8
  363. package/dist/kernel/hwaccel/hwaccel-resolver.d.ts +27 -27
  364. package/dist/kernel/index.d.ts +115 -113
  365. package/dist/kernel/inference/inference-resolver.d.ts +13 -13
  366. package/dist/kernel/infra-capabilities.d.ts +7 -7
  367. package/dist/kernel/isolated-builtin-phase.d.ts +42 -42
  368. package/dist/kernel/lifecycle/job-journal.d.ts +17 -17
  369. package/dist/kernel/lifecycle/lifecycle-job-engine.d.ts +99 -99
  370. package/dist/kernel/lifecycle/staging-area.d.ts +22 -22
  371. package/dist/kernel/moleculer/addon-context-factory.d.ts +90 -89
  372. package/dist/kernel/moleculer/addon-data-plane-facility.d.ts +12 -12
  373. package/dist/kernel/moleculer/addon-deploy-source.d.ts +11 -11
  374. package/dist/kernel/moleculer/addon-peer-bytes-facility.d.ts +18 -18
  375. package/dist/kernel/moleculer/addon-service-factory.d.ts +41 -41
  376. package/dist/kernel/moleculer/agent-mesh-authenticator.d.ts +60 -33
  377. package/dist/kernel/moleculer/agent-ui-unlock.d.ts +30 -30
  378. package/dist/kernel/moleculer/broker-factory.d.ts +61 -61
  379. package/dist/kernel/moleculer/cap-usage-registry.d.ts +108 -153
  380. package/dist/kernel/moleculer/capabilities-access.d.ts +19 -19
  381. package/dist/kernel/moleculer/child-addon-call-dispatch.d.ts +43 -43
  382. package/dist/kernel/moleculer/child-cap-descriptors.d.ts +26 -26
  383. package/dist/kernel/moleculer/child-cap-dispatch.d.ts +52 -52
  384. package/dist/kernel/moleculer/children-batch-loader.d.ts +86 -34
  385. package/dist/kernel/moleculer/cluster-secret.d.ts +19 -19
  386. package/dist/kernel/moleculer/core-cap-service.d.ts +53 -53
  387. package/dist/kernel/moleculer/crash-supervisor.d.ts +39 -39
  388. package/dist/kernel/moleculer/device-cap-proxy.d.ts +51 -51
  389. package/dist/kernel/moleculer/device-event-ring.d.ts +117 -75
  390. package/dist/kernel/moleculer/event-bus-core.d.ts +171 -159
  391. package/dist/kernel/moleculer/event-bus.d.ts +73 -73
  392. package/dist/kernel/moleculer/hub-log-forwarder.d.ts +30 -30
  393. package/dist/kernel/moleculer/hub-service.d.ts +42 -42
  394. package/dist/kernel/moleculer/init-watchdog.d.ts +49 -49
  395. package/dist/kernel/moleculer/mesh-access-middleware.d.ts +36 -21
  396. package/dist/kernel/moleculer/mesh-auth-mode.d.ts +33 -39
  397. package/dist/kernel/moleculer/mesh-authenticator.d.ts +58 -58
  398. package/dist/kernel/moleculer/mesh-auto-enforce.d.ts +38 -18
  399. package/dist/kernel/moleculer/mesh-join-client.d.ts +67 -45
  400. package/dist/kernel/moleculer/mesh-join-proof.d.ts +8 -8
  401. package/dist/kernel/moleculer/mesh-mtls/constants.d.ts +1 -1
  402. package/dist/kernel/moleculer/mesh-mtls/index.d.ts +10 -10
  403. package/dist/kernel/moleculer/mesh-mtls/mesh-ca-keeper.d.ts +43 -38
  404. package/dist/kernel/moleculer/mesh-mtls/mesh-ca.d.ts +29 -20
  405. package/dist/kernel/moleculer/mesh-mtls/mesh-clear-port.d.ts +32 -32
  406. package/dist/kernel/moleculer/mesh-mtls/mesh-crl.d.ts +11 -11
  407. package/dist/kernel/moleculer/mesh-mtls/mesh-enroll.d.ts +19 -16
  408. package/dist/kernel/moleculer/mesh-mtls/mesh-join-token.d.ts +40 -40
  409. package/dist/kernel/moleculer/mesh-mtls/mesh-tls-enabler.d.ts +5 -1
  410. package/dist/kernel/moleculer/mesh-mtls/tls-tcp-transporter.d.ts +131 -130
  411. package/dist/kernel/moleculer/mesh-queue-report.d.ts +39 -39
  412. package/dist/kernel/moleculer/node-registry.d.ts +120 -120
  413. package/dist/kernel/moleculer/process-context.d.ts +2 -2
  414. package/dist/kernel/moleculer/process-service.d.ts +168 -168
  415. package/dist/kernel/moleculer/provider-registry.d.ts +9 -9
  416. package/dist/kernel/moleculer/readiness-context.d.ts +58 -58
  417. package/dist/kernel/moleculer/readiness-service.d.ts +31 -16
  418. package/dist/kernel/moleculer/register-framework-resolver.d.ts +6 -6
  419. package/dist/kernel/moleculer/register-node-client.d.ts +34 -27
  420. package/dist/kernel/moleculer/remote-logger.d.ts +29 -29
  421. package/dist/kernel/moleculer/resilient-cap-call.d.ts +21 -21
  422. package/dist/kernel/moleculer/runner-native-allocator.d.ts +95 -95
  423. package/dist/kernel/moleculer/runner-process-group.d.ts +57 -57
  424. package/dist/kernel/moleculer/runtime-state-load.d.ts +21 -11
  425. package/dist/kernel/moleculer/settings-read-guard.d.ts +39 -39
  426. package/dist/kernel/moleculer/stream-probe-service.d.ts +25 -6
  427. package/dist/kernel/moleculer/trpc-links.d.ts +203 -203
  428. package/dist/kernel/moleculer/typed-array-serde.d.ts +9 -20
  429. package/dist/kernel/moleculer/worker-device-restore.d.ts +8 -8
  430. package/dist/kernel/outbound-queue-watch.d.ts +74 -74
  431. package/dist/kernel/process-cpu-census.d.ts +55 -55
  432. package/dist/kernel/provider-kind-drift.d.ts +17 -8
  433. package/dist/kernel/restart-coordinator.d.ts +71 -71
  434. package/dist/kernel/settings-door-view.d.ts +36 -25
  435. package/dist/kernel/settings-read-error.d.ts +29 -31
  436. package/dist/kernel/settings-view-types.d.ts +100 -95
  437. package/dist/kernel/socket-plane-report.d.ts +214 -153
  438. package/dist/kernel/status-overlay.d.ts +31 -11
  439. package/dist/kernel/storage-location-registry.d.ts +50 -50
  440. package/dist/kernel/store-settings-view.d.ts +13 -13
  441. package/dist/kernel/system-settings-mirror.d.ts +40 -28
  442. package/dist/kernel/system-settings-policy.d.ts +15 -34
  443. package/dist/kernel/transport/cap-action-census.d.ts +183 -183
  444. package/dist/kernel/transport/cap-action-name.d.ts +84 -84
  445. package/dist/kernel/transport/cap-child-index.d.ts +41 -41
  446. package/dist/kernel/transport/cap-route-resolver.d.ts +237 -212
  447. package/dist/kernel/transport/cap-route.d.ts +139 -139
  448. package/dist/kernel/transport/cap-routing-hints.d.ts +37 -37
  449. package/dist/kernel/transport/child-cap-protocol.d.ts +245 -245
  450. package/dist/kernel/transport/claimed-get-status.d.ts +30 -6
  451. package/dist/kernel/transport/create-local-transport.d.ts +5 -5
  452. package/dist/kernel/transport/frame-codec.d.ts +109 -109
  453. package/dist/kernel/transport/hub-cap-forward.d.ts +81 -59
  454. package/dist/kernel/transport/index.d.ts +36 -36
  455. package/dist/kernel/transport/local-child-client.d.ts +184 -184
  456. package/dist/kernel/transport/local-child-registry.d.ts +592 -592
  457. package/dist/kernel/transport/local-endpoint-path.d.ts +4 -4
  458. package/dist/kernel/transport/local-transport.d.ts +92 -92
  459. package/dist/kernel/transport/parent-unowned-call.d.ts +266 -237
  460. package/dist/kernel/transport/peer-answered-error.d.ts +14 -14
  461. package/dist/kernel/transport/socket-channel.d.ts +110 -110
  462. package/dist/kernel/transport/socket-traffic.d.ts +96 -96
  463. package/dist/kernel/transport/uds-event-bridge.d.ts +77 -50
  464. package/dist/kernel/transport/uds-event-bus.d.ts +75 -26
  465. package/dist/kernel/transport/uds-local-transport.d.ts +14 -14
  466. package/dist/kernel/transport/uds-log-ingest.d.ts +38 -23
  467. package/dist/kernel/transport/uds-logger.d.ts +33 -33
  468. package/dist/kernel/utils/ring-buffer.d.ts +12 -12
  469. package/dist/kernel/workspace-detect.d.ts +7 -7
  470. package/dist/lifecycle/lifecycle-state-machine.d.ts +24 -24
  471. package/dist/logging/formatter.d.ts +52 -25
  472. package/dist/logging/log-manager.d.ts +133 -133
  473. package/dist/logging/log-redactor.d.ts +22 -1
  474. package/dist/logging/log-ring-buffer.d.ts +57 -57
  475. package/dist/logging/logging-gate.d.ts +69 -25
  476. package/dist/logging/logging-gate.singleton.d.ts +12 -1
  477. package/dist/logging/partitioned-log-buffer.d.ts +161 -161
  478. package/dist/logging/scoped-logger.d.ts +14 -14
  479. package/dist/network/network-quality.d.ts +8 -8
  480. package/dist/notification/notification-service.d.ts +37 -37
  481. package/dist/notification/toast-service.d.ts +18 -18
  482. package/dist/pipeline/engine-manager-resolver.d.ts +12 -12
  483. package/dist/pipeline/pipeline-runner.d.ts +6 -6
  484. package/dist/pipeline/pipeline-validator.d.ts +8 -8
  485. package/dist/process/proc-stat.d.ts +51 -51
  486. package/dist/process/resource-monitor.d.ts +19 -19
  487. package/dist/python/python-env-manager.d.ts +10 -10
  488. package/dist/repl/interfaces.d.ts +21 -21
  489. package/dist/repl/repl-engine.d.ts +6 -6
  490. package/dist/storage/fs-storage-backend.d.ts +35 -35
  491. package/dist/storage/storage-location-manager.d.ts +21 -21
  492. package/dist/storage/storage-manager.d.ts +68 -68
  493. package/dist/tls/boot-tls.d.ts +24 -24
  494. package/dist/tls/cert-evaluation.d.ts +25 -25
  495. package/dist/tls/cert-identity.d.ts +39 -39
  496. package/dist/tls/cert-issue.d.ts +37 -17
  497. package/dist/tls/cert-manager.d.ts +86 -84
  498. package/dist/tls/https-listener.d.ts +16 -16
  499. package/dist/tls/index.d.ts +8 -8
  500. package/dist/tls/tls-actions.d.ts +18 -18
  501. package/dist/tls/tls-status.d.ts +15 -15
  502. package/dist/tls/uploaded-cert.d.ts +9 -9
  503. package/package.json +9 -3
@@ -1,66 +1,66 @@
1
1
  /**
2
- * How long a minted link stays valid.
3
- *
4
- * A snapshot is a live view of the operator's home, so this is short on purpose
5
- * — the exposure of a leaked link is bounded by it. Two minutes is long enough
6
- * that a page renders, re-renders and survives a brief backgrounding on the URL
7
- * it was given, and short enough that a link pasted somewhere is dead before it
8
- * is useful. The client re-mints on every overview poll (5 s), so it never
9
- * depends on the tail of this window.
10
- */
11
- export declare const SNAPSHOT_LINK_TTL_MS = 120000;
2
+ * How long a minted link stays valid.
3
+ *
4
+ * A snapshot is a live view of the operator's home, so this is short on purpose
5
+ * — the exposure of a leaked link is bounded by it. Two minutes is long enough
6
+ * that a page renders, re-renders and survives a brief backgrounding on the URL
7
+ * it was given, and short enough that a link pasted somewhere is dead before it
8
+ * is useful. The client re-mints on every overview poll (5 s), so it never
9
+ * depends on the tail of this window.
10
+ */
11
+ export declare const SNAPSHOT_LINK_TTL_MS = 12e4;
12
12
  /**
13
- * Quantum the expiry is rounded UP to, so a link is stable between mints.
14
- *
15
- * Without it every mint produces a different `exp`, hence a different URL, hence
16
- * a full re-download of an unchanged frame on every poll. With it the URL is a
17
- * pure function of (device, width, frame, bucket) — so a tile fetches when its
18
- * frame moves, and at most once more per bucket.
19
- */
20
- export declare const SNAPSHOT_LINK_EXP_BUCKET_MS = 30000;
13
+ * Quantum the expiry is rounded UP to, so a link is stable between mints.
14
+ *
15
+ * Without it every mint produces a different `exp`, hence a different URL, hence
16
+ * a full re-download of an unchanged frame on every poll. With it the URL is a
17
+ * pure function of (device, width, frame, bucket) — so a tile fetches when its
18
+ * frame moves, and at most once more per bucket.
19
+ */
20
+ export declare const SNAPSHOT_LINK_EXP_BUCKET_MS = 3e4;
21
21
  /** The token the signature is computed over. Width is part of the identity so a
22
- * tile link cannot be escalated into a full-frame request. */
22
+ * tile link cannot be escalated into a full-frame request. */
23
23
  export declare function snapshotLinkId(deviceId: number, width: number | undefined): string;
24
24
  /** The bucketed expiry for a link minted at `nowMs`. Always ≥ `nowMs + TTL`. */
25
25
  export declare function snapshotLinkExpiry(nowMs: number, ttlMs?: number, bucketMs?: number): number;
26
26
  export interface BuildSnapshotLinkInput {
27
- /** Root-relative plane prefix, e.g. `/addon/snapshot/link`. */
28
- readonly routePrefix: string;
29
- readonly deviceId: number;
30
- /** Snapped ladder rung the bytes will be at, or undefined for the full frame. */
31
- readonly width: number | undefined;
32
- /** Capture identity of the frame this link names — the client's cache key. */
33
- readonly capturedAt: number | null;
34
- readonly secret: string;
35
- readonly expMs: number;
27
+ /** Root-relative plane prefix, e.g. `/addon/snapshot/link`. */
28
+ readonly routePrefix: string;
29
+ readonly deviceId: number;
30
+ /** Snapped ladder rung the bytes will be at, or undefined for the full frame. */
31
+ readonly width: number | undefined;
32
+ /** Capture identity of the frame this link names — the client's cache key. */
33
+ readonly capturedAt: number | null;
34
+ readonly secret: string;
35
+ readonly expMs: number;
36
36
  }
37
37
  /**
38
- * The link, as a ROOT-RELATIVE path.
39
- *
40
- * Deliberately not absolute. The artifact and HA planes must mint absolute URLs
41
- * because the fetcher is a phone or a notifier backend that has no idea where
42
- * the hub is — and picking that base is the `hubUrl: localhost` trap the Alexa
43
- * work paid for. Here the fetcher is a client that is already connected to the
44
- * hub and holds its own `serverUrl`, so the correct base is the one it used to
45
- * make the call. Returning a path makes it impossible to hand a client a link
46
- * pointing somewhere it cannot reach.
47
- */
38
+ * The link, as a ROOT-RELATIVE path.
39
+ *
40
+ * Deliberately not absolute. The artifact and HA planes must mint absolute URLs
41
+ * because the fetcher is a phone or a notifier backend that has no idea where
42
+ * the hub is — and picking that base is the `hubUrl: localhost` trap the Alexa
43
+ * work paid for. Here the fetcher is a client that is already connected to the
44
+ * hub and holds its own `serverUrl`, so the correct base is the one it used to
45
+ * make the call. Returning a path makes it impossible to hand a client a link
46
+ * pointing somewhere it cannot reach.
47
+ */
48
48
  export declare function buildSnapshotLinkUrl(input: BuildSnapshotLinkInput): string;
49
49
  /** A verified link request. `width` is the SIGNED width, never the raw query. */
50
50
  export interface ParsedSnapshotLink {
51
- readonly deviceId: number;
52
- readonly width: number | undefined;
51
+ readonly deviceId: number;
52
+ readonly width: number | undefined;
53
53
  }
54
54
  export interface ParseSnapshotLinkInput {
55
- /** Handler-relative url, e.g. `/615.jpg?w=240&exp=…&sig=…`. */
56
- readonly url: string;
57
- readonly secret: string;
58
- readonly nowMs: number;
55
+ /** Handler-relative url, e.g. `/615.jpg?w=240&exp=…&sig=…`. */
56
+ readonly url: string;
57
+ readonly secret: string;
58
+ readonly nowMs: number;
59
59
  }
60
60
  /**
61
- * Parse and VERIFY a link request in one step, so a caller cannot accidentally
62
- * use the device id before checking the signature. Null = refuse (404/403);
63
- * there is deliberately no way to distinguish "bad signature" from "expired"
64
- * from "malformed" at this boundary, so a public route cannot be probed.
65
- */
61
+ * Parse and VERIFY a link request in one step, so a caller cannot accidentally
62
+ * use the device id before checking the signature. Null = refuse (404/403);
63
+ * there is deliberately no way to distinguish "bad signature" from "expired"
64
+ * from "malformed" at this boundary, so a public route cannot be probed.
65
+ */
66
66
  export declare function parseVerifiedSnapshotLink(input: ParseSnapshotLinkInput): ParsedSnapshotLink | null;
@@ -1,121 +1,121 @@
1
- import { DataPlaneHandler } from '@camstack/types';
1
+ import type { DataPlaneHandler } from "@camstack/types";
2
2
  /** A renderable snapshot frame resolved for one device. */
3
3
  export interface SnapshotMedia {
4
- /** Raw image bytes (already decoded from the wrapper's base64 cache). */
5
- readonly bytes: Uint8Array;
6
- /** MIME type — practically always `image/jpeg`. */
7
- readonly contentType: string;
8
- /** Epoch ms of the cached capture — drives the ETag and frame identity. */
9
- readonly capturedAt: number;
10
- /** Effective per-device max cache age (seconds) → `Cache-Control: max-age`. */
11
- readonly maxAgeS: number;
12
- /** State treatment painted over the capture (sleeping, waking, …). */
13
- readonly variantKey?: string | undefined;
14
- /**
15
- * The width the returned BYTES are actually at, or undefined when they are the
16
- * frame as captured.
17
- *
18
- * Deliberately not the same thing as the requested width. A failed resize
19
- * serves the full frame, and stamping the requested `-w320` on it poisons the
20
- * ETag: a later SUCCESSFUL resize of the same capture mints the identical tag
21
- * with completely different bytes, so a client holding the megabyte revalidates,
22
- * gets a 304, and keeps it. The tag has to describe what went out.
23
- */
24
- readonly servedWidth?: number | undefined;
4
+ /** Raw image bytes (already decoded from the wrapper's base64 cache). */
5
+ readonly bytes: Uint8Array;
6
+ /** MIME type — practically always `image/jpeg`. */
7
+ readonly contentType: string;
8
+ /** Epoch ms of the cached capture — drives the ETag and frame identity. */
9
+ readonly capturedAt: number;
10
+ /** Effective per-device max cache age (seconds) → `Cache-Control: max-age`. */
11
+ readonly maxAgeS: number;
12
+ /** State treatment painted over the capture (sleeping, waking, …). */
13
+ readonly variantKey?: string | undefined;
14
+ /**
15
+ * The width the returned BYTES are actually at, or undefined when they are the
16
+ * frame as captured.
17
+ *
18
+ * Deliberately not the same thing as the requested width. A failed resize
19
+ * serves the full frame, and stamping the requested `-w320` on it poisons the
20
+ * ETag: a later SUCCESSFUL resize of the same capture mints the identical tag
21
+ * with completely different bytes, so a client holding the megabyte revalidates,
22
+ * gets a 304, and keeps it. The tag has to describe what went out.
23
+ */
24
+ readonly servedWidth?: number | undefined;
25
25
  }
26
26
  /** What the cache can answer about a device WITHOUT capturing anything. */
27
27
  export interface SnapshotPeek {
28
- /** Epoch ms of the cached capture. */
29
- readonly capturedAt: number;
30
- /** Effective per-device max cache age (seconds). */
31
- readonly maxAgeS: number;
32
- /** State treatment that would be painted over this capture. */
33
- readonly variantKey?: string | undefined;
28
+ /** Epoch ms of the cached capture. */
29
+ readonly capturedAt: number;
30
+ /** Effective per-device max cache age (seconds). */
31
+ readonly maxAgeS: number;
32
+ /** State treatment that would be painted over this capture. */
33
+ readonly variantKey?: string | undefined;
34
34
  }
35
35
  export interface SnapshotMediaHandlerDeps {
36
- /**
37
- * Resolve a device (+ optional stream, + force) to a renderable frame. Runs
38
- * the wrapper's coalesced capture ladder; returns null when no frame can be
39
- * produced (→ 404). Throwing produces an opaque 500 (caller logs).
40
- */
41
- readonly getMedia: (deviceId: number, streamId: string | undefined, force: boolean, width: number | undefined) => Promise<SnapshotMedia | null>;
42
- /**
43
- * Cache-only lookup: what frame is cached for this (device, stream) right now,
44
- * and is it still FRESH? Returns null when nothing is cached or the entry is
45
- * past its max-age.
46
- *
47
- * This exists so a conditional GET can be answered before `getMedia` runs.
48
- * Without it a 304 is only cheap in bytes — the ladder and the resize have
49
- * both already happened by the time the ETags are compared, which on a camera
50
- * whose live paths are failing is two 15 s ffmpeg timeouts to send zero bytes.
51
- *
52
- * Width is deliberately absent: the ETag the client presents already names the
53
- * width it holds, and it can only hold a tag this server minted, so matching
54
- * the frame identity is sufficient. A client holding the FULL frame after a
55
- * failed resize presents `"<id>-<ts>"`, which cannot collide with the
56
- * `"<id>-<ts>-w320"` a `?w=320` request computes — it falls through and
57
- * re-derives, which is exactly right.
58
- *
59
- * Optional: a host that does not supply it keeps the previous behaviour
60
- * exactly (run the ladder, then compare).
61
- */
62
- readonly peekFresh?: (deviceId: number, streamId: string | undefined) => Promise<SnapshotPeek | null>;
36
+ /**
37
+ * Resolve a device (+ optional stream, + force) to a renderable frame. Runs
38
+ * the wrapper's coalesced capture ladder; returns null when no frame can be
39
+ * produced (→ 404). Throwing produces an opaque 500 (caller logs).
40
+ */
41
+ readonly getMedia: (deviceId: number, streamId: string | undefined, force: boolean, width: number | undefined) => Promise<SnapshotMedia | null>;
42
+ /**
43
+ * Cache-only lookup: what frame is cached for this (device, stream) right now,
44
+ * and is it still FRESH? Returns null when nothing is cached or the entry is
45
+ * past its max-age.
46
+ *
47
+ * This exists so a conditional GET can be answered before `getMedia` runs.
48
+ * Without it a 304 is only cheap in bytes — the ladder and the resize have
49
+ * both already happened by the time the ETags are compared, which on a camera
50
+ * whose live paths are failing is two 15 s ffmpeg timeouts to send zero bytes.
51
+ *
52
+ * Width is deliberately absent: the ETag the client presents already names the
53
+ * width it holds, and it can only hold a tag this server minted, so matching
54
+ * the frame identity is sufficient. A client holding the FULL frame after a
55
+ * failed resize presents `"<id>-<ts>"`, which cannot collide with the
56
+ * `"<id>-<ts>-w320"` a `?w=320` request computes — it falls through and
57
+ * re-derives, which is exactly right.
58
+ *
59
+ * Optional: a host that does not supply it keeps the previous behaviour
60
+ * exactly (run the ladder, then compare).
61
+ */
62
+ readonly peekFresh?: (deviceId: number, streamId: string | undefined) => Promise<SnapshotPeek | null>;
63
63
  }
64
64
  /** Parsed `/<deviceId>[.jpg][?streamId=…&force=1&w=320]` request. */
65
65
  export interface SnapshotMediaRequest {
66
- readonly deviceId: number;
67
- readonly streamId: string | undefined;
68
- readonly force: boolean;
69
- /** Snapped target width in px, or undefined for the frame as captured. */
70
- readonly width: number | undefined;
66
+ readonly deviceId: number;
67
+ readonly streamId: string | undefined;
68
+ readonly force: boolean;
69
+ /** Snapped target width in px, or undefined for the frame as captured. */
70
+ readonly width: number | undefined;
71
71
  }
72
72
  /**
73
- * The widths a thumbnail may be served at.
74
- *
75
- * A ladder, not a free integer: the width is a cache key AND an ffmpeg run, so
76
- * honouring `?w=` verbatim would let any caller mint unbounded work and
77
- * unbounded memory. Twelve tiles measured at 181–240 px collapse onto one
78
- * variant instead of twelve.
79
- *
80
- * Rungs are chosen for the card sizes the viewer actually renders (180–390 px)
81
- * with headroom for a 2× device pixel ratio.
82
- */
73
+ * The widths a thumbnail may be served at.
74
+ *
75
+ * A ladder, not a free integer: the width is a cache key AND an ffmpeg run, so
76
+ * honouring `?w=` verbatim would let any caller mint unbounded work and
77
+ * unbounded memory. Twelve tiles measured at 181–240 px collapse onto one
78
+ * variant instead of twelve.
79
+ *
80
+ * Rungs are chosen for the card sizes the viewer actually renders (180–390 px)
81
+ * with headroom for a 2× device pixel ratio.
82
+ */
83
83
  export declare const SNAPSHOT_WIDTH_LADDER: readonly number[];
84
84
  /** Snap UP to the next rung — never below what was asked, so the client is not
85
- * handed an image it has to upscale. Above the ladder, the largest rung: the
86
- * point is to stop serving the 4K original. */
85
+ * handed an image it has to upscale. Above the ladder, the largest rung: the
86
+ * point is to stop serving the 4K original. */
87
87
  export declare function snapSnapshotWidth(requested: number): number;
88
88
  /**
89
- * Parse the handler-relative path (`/<deviceId>.jpg?query`) into a request.
90
- * Returns null for a malformed / nested / non-numeric id so the handler answers
91
- * 404 without ever reaching `getMedia`.
92
- */
89
+ * Parse the handler-relative path (`/<deviceId>.jpg?query`) into a request.
90
+ * Returns null for a malformed / nested / non-numeric id so the handler answers
91
+ * 404 without ever reaching `getMedia`.
92
+ */
93
93
  export declare function parseSnapshotMediaRequest(url: string): SnapshotMediaRequest | null;
94
94
  /**
95
- * The response's entity tag.
96
- *
97
- * It has to identify the VARIANT, not just the frame: the same capture can now
98
- * be served at several widths, from several streams, and with a camera-state
99
- * treatment, and a plain
100
- * `"<device>-<capturedAt>"` would let a client that fetched `?w=320` receive a
101
- * 304 for `?w=960` and render the small image at full size. The base form is
102
- * unchanged for a plain request, so the identity
103
- * `snapshot.getSnapshotOverview` advertises still matches the frame nobody
104
- * asked to resize.
105
- */
95
+ * The response's entity tag.
96
+ *
97
+ * It has to identify the VARIANT, not just the frame: the same capture can now
98
+ * be served at several widths, from several streams, and with a camera-state
99
+ * treatment, and a plain
100
+ * `"<device>-<capturedAt>"` would let a client that fetched `?w=320` receive a
101
+ * 304 for `?w=960` and render the small image at full size. The base form is
102
+ * unchanged for a plain request, so the identity
103
+ * `snapshot.getSnapshotOverview` advertises still matches the frame nobody
104
+ * asked to resize.
105
+ */
106
106
  export declare function snapshotEtag(variant: SnapshotVariantIdentity, capturedAt: number): string;
107
107
  /** The (device, stream, width) triple an ETag names. Structurally a
108
- * {@link SnapshotMediaRequest}, but the width is the width SERVED — see
109
- * {@link SnapshotMedia.servedWidth}. */
108
+ * {@link SnapshotMediaRequest}, but the width is the width SERVED — see
109
+ * {@link SnapshotMedia.servedWidth}. */
110
110
  export interface SnapshotVariantIdentity {
111
- readonly deviceId: number;
112
- readonly streamId: string | undefined;
113
- readonly width: number | undefined;
114
- readonly variantKey?: string | undefined;
111
+ readonly deviceId: number;
112
+ readonly streamId: string | undefined;
113
+ readonly width: number | undefined;
114
+ readonly variantKey?: string | undefined;
115
115
  }
116
116
  /**
117
- * Create a data-plane handler that serves per-device snapshots as JPEG images.
118
- * `deps.getMedia` is called once per request; null → 404, throw → 500. A
119
- * conditional GET with a matching `If-None-Match` produces a 304.
120
- */
117
+ * Create a data-plane handler that serves per-device snapshots as JPEG images.
118
+ * `deps.getMedia` is called once per request; null → 404, throw → 500. A
119
+ * conditional GET with a matching `If-None-Match` produces a 304.
120
+ */
121
121
  export declare function createSnapshotMediaHandler(deps: SnapshotMediaHandlerDeps): DataPlaneHandler;
@@ -1,114 +1,75 @@
1
- /**
2
- * Downscaling a captured frame to a card-sized thumbnail.
3
- *
4
- * Applied AFTER capture rather than during it, and that is deliberate: the two
5
- * capture paths (the vendor's native HTTP snapshot and the ffmpeg keyframe
6
- * grab) produce a JPEG by different routes, and only one of them has an
7
- * ffmpeg filter chain to hook into. Resizing the finished bytes gives both the
8
- * same behaviour with one implementation.
9
- *
10
- * ── Why sharp and not ffmpeg (2026-08-11) ─────────────────────────────────
11
- * This used to `spawn('ffmpeg')` per resize. The snapshot wrapper is a system
12
- * builtin, so it loads in the hub's ROOT process: sampled on the live hub,
13
- * ~1.6 of those children were running at any instant, every one of them
14
- * parented by the root PID.
15
- *
16
- * Be precise about what that cost the root process, because it is easy to
17
- * overstate. The transcode itself ran in the CHILD and was charged to ffmpeg
18
- * (16 % + 13 % of a core in that same sample), not to the parent. What the
19
- * parent paid was the fork, the exec, the JPEG written into one pipe and read
20
- * back out of the other, and the base64 — real event-loop work, on the loop
21
- * that also serves the tRPC API, but NOT the 52 ms below.
22
- *
23
- * Benchmarked in that container, 2560×1440 → 640 wide, wall-clock per resize:
24
- *
25
- * ffmpeg 52.0 ms (fork + exec + pipe round-trip + teardown)
26
- * sharp 4.8 ms (in-process libvips, on its own threadpool)
27
- *
28
- * So this removes ~29 % of a core of container CPU and the per-resize process
29
- * churn from the root process. It was NOT verified to be the cause of that
30
- * process sitting at 90 % — nobody has profiled it.
31
- *
32
- * `sharp` is not a new dependency: it is already a host-external
33
- * (`HOST_EXTERNAL_SPECIFIERS`), already resolved from the framework closure at
34
- * runtime, and already used by the terminal frame renderer. The build preset
35
- * keeps it out of the bundle, so this import costs nothing at pack time.
36
- *
37
- * The cost is still one resize per (device, stream, width) per cache window —
38
- * not one per request. What changed is what a resize COSTS.
39
- */
40
1
  /** Runs the resize. Injected so the caller is testable without a real ffmpeg. */
41
2
  export type JpegResizer = (bytes: Buffer, width: number) => Promise<Buffer>;
42
- export declare const RESIZE_TIMEOUT_MS = 10000;
3
+ export declare const RESIZE_TIMEOUT_MS = 1e4;
43
4
  /**
44
- * Scale to `width`, preserving aspect ratio.
45
- *
46
- * Rejects on failure or timeout. It NEVER falls back to the original silently —
47
- * a caller that quietly served the 4K frame when the resize failed would
48
- * reproduce exactly the bug this whole module exists to fix, and nobody would
49
- * see it. The caller decides, and logs.
50
- *
51
- * It DOES upscale a source narrower than `width`, and that is deliberate. A
52
- * `withoutEnlargement: true` was tried first — it is the obvious saving, since
53
- * upscaling pays encode cost for a blurrier, larger image. But the caller
54
- * stamps the response ETag from the width it asked for, and its resize-FAILURE
55
- * path already returns `width: undefined` specifically so a response can never
56
- * "claim a width the bytes do not have". Silently returning 320 px bytes for a
57
- * `w=640` request breaks that invariant on the SUCCESS path, where nobody is
58
- * looking. Honest output width beats a few saved pixels; revisit only together
59
- * with the ETag.
60
- */
5
+ * Scale to `width`, preserving aspect ratio.
6
+ *
7
+ * Rejects on failure or timeout. It NEVER falls back to the original silently —
8
+ * a caller that quietly served the 4K frame when the resize failed would
9
+ * reproduce exactly the bug this whole module exists to fix, and nobody would
10
+ * see it. The caller decides, and logs.
11
+ *
12
+ * It DOES upscale a source narrower than `width`, and that is deliberate. A
13
+ * `withoutEnlargement: true` was tried first — it is the obvious saving, since
14
+ * upscaling pays encode cost for a blurrier, larger image. But the caller
15
+ * stamps the response ETag from the width it asked for, and its resize-FAILURE
16
+ * path already returns `width: undefined` specifically so a response can never
17
+ * "claim a width the bytes do not have". Silently returning 320 px bytes for a
18
+ * `w=640` request breaks that invariant on the SUCCESS path, where nobody is
19
+ * looking. Honest output width beats a few saved pixels; revisit only together
20
+ * with the ETag.
21
+ */
61
22
  export declare function resizeJpeg(bytes: Buffer, width: number, timeoutMs?: number): Promise<Buffer>;
62
23
  /**
63
- * Resized frames, keyed by (device, stream, width, state treatment) AND
64
- * validated against the source frame's timestamp.
65
- *
66
- * The timestamp is the whole correctness argument: a variant outlives nothing.
67
- * When the underlying frame is recaptured its `capturedAt` moves, every variant
68
- * derived from the old one stops matching, and the next request re-derives.
69
- * Without that check a card would keep showing a thumbnail of a frame the
70
- * full-size view had already replaced.
71
- */
24
+ * Resized frames, keyed by (device, stream, width, state treatment) AND
25
+ * validated against the source frame's timestamp.
26
+ *
27
+ * The timestamp is the whole correctness argument: a variant outlives nothing.
28
+ * When the underlying frame is recaptured its `capturedAt` moves, every variant
29
+ * derived from the old one stops matching, and the next request re-derives.
30
+ * Without that check a card would keep showing a thumbnail of a frame the
31
+ * full-size view had already replaced.
32
+ */
72
33
  /**
73
- * Byte budget across every retained variant.
74
- *
75
- * Variants are small individually (a card-sized JPEG is tens of KB) but the key
76
- * space is a product — device × stream × width × state treatment — and the map
77
- * had no cap at all. 16 MiB is hundreds of thumbnails, far beyond any real
78
- * roster's working set, and turns an unbounded product into a ceiling.
79
- */
34
+ * Byte budget across every retained variant.
35
+ *
36
+ * Variants are small individually (a card-sized JPEG is tens of KB) but the key
37
+ * space is a product — device × stream × width × state treatment — and the map
38
+ * had no cap at all. 16 MiB is hundreds of thumbnails, far beyond any real
39
+ * roster's working set, and turns an unbounded product into a ceiling.
40
+ */
80
41
  export declare const SNAPSHOT_VARIANT_CACHE_MAX_BYTES: number;
81
42
  export interface SnapshotVariantCacheOptions {
82
- /** Total variant bytes retained. Default {@link SNAPSHOT_VARIANT_CACHE_MAX_BYTES}. */
83
- readonly maxBytes?: number;
84
- /** Injected clock, so LRU order is testable without real time passing. */
85
- readonly now?: () => number;
43
+ /** Total variant bytes retained. Default {@link SNAPSHOT_VARIANT_CACHE_MAX_BYTES}. */
44
+ readonly maxBytes?: number;
45
+ /** Injected clock, so LRU order is testable without real time passing. */
46
+ readonly now?: () => number;
86
47
  }
87
48
  export declare class SnapshotVariantCache {
88
- private readonly byKey;
89
- private readonly keysByDevice;
90
- private readonly maxBytes;
91
- private readonly now;
92
- private totalBytes;
93
- constructor(options?: SnapshotVariantCacheOptions);
94
- private static key;
95
- /** The variant for this exact frame, or undefined when it is missing or was
96
- * derived from an older capture.
97
- *
98
- * A superseded variant is DELETED here, not merely reported missing. It used
99
- * to be left in the map: unreachable by every future read (its `sourceTs` can
100
- * never match again) and removed by nothing, so every recapture added a dead
101
- * key. Returning `undefined` while retaining the bytes is the leak. */
102
- get(deviceId: number, streamId: string | undefined, width: number, sourceTs: number, variantKey?: string): Buffer | undefined;
103
- set(deviceId: number, streamId: string | undefined, width: number, sourceTs: number, bytes: Buffer, variantKey?: string): void;
104
- /** Variant bytes currently retained. */
105
- sizeBytes(): number;
106
- /** Variants currently retained — including any that are no longer readable.
107
- * The number that used to only ever go up. */
108
- entryCount(): number;
109
- /** Evict least-recently-accessed first until the budget holds. */
110
- private enforceBudget;
111
- private forget;
112
- deleteDevice(deviceId: number): void;
113
- clear(): void;
49
+ private readonly byKey;
50
+ private readonly keysByDevice;
51
+ private readonly maxBytes;
52
+ private readonly now;
53
+ private totalBytes;
54
+ constructor(options?: SnapshotVariantCacheOptions);
55
+ private static key;
56
+ /** The variant for this exact frame, or undefined when it is missing or was
57
+ * derived from an older capture.
58
+ *
59
+ * A superseded variant is DELETED here, not merely reported missing. It used
60
+ * to be left in the map: unreachable by every future read (its `sourceTs` can
61
+ * never match again) and removed by nothing, so every recapture added a dead
62
+ * key. Returning `undefined` while retaining the bytes is the leak. */
63
+ get(deviceId: number, streamId: string | undefined, width: number, sourceTs: number, variantKey?: string): Buffer | undefined;
64
+ set(deviceId: number, streamId: string | undefined, width: number, sourceTs: number, bytes: Buffer, variantKey?: string): void;
65
+ /** Variant bytes currently retained. */
66
+ sizeBytes(): number;
67
+ /** Variants currently retained — including any that are no longer readable.
68
+ * The number that used to only ever go up. */
69
+ entryCount(): number;
70
+ /** Evict least-recently-accessed first until the budget holds. */
71
+ private enforceBudget;
72
+ private forget;
73
+ deleteDevice(deviceId: number): void;
74
+ clear(): void;
114
75
  }