@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.
- package/dist/addon/addon-api-factory.d.ts +30 -30
- package/dist/addon-routes/addon-route-registry.d.ts +31 -31
- package/dist/addon-runner.js +1 -1
- package/dist/addon-runner.mjs +1 -1
- package/dist/addon-utils.d.ts +22 -22
- package/dist/auth/admin-token-manager.d.ts +37 -67
- package/dist/auth/api-key-manager.d.ts +8 -8
- package/dist/auth/auth-audit-log.d.ts +29 -49
- package/dist/auth/auth-manager.d.ts +127 -126
- package/dist/auth/cidr.d.ts +8 -8
- package/dist/auth/external-identity-manager.d.ts +46 -34
- package/dist/auth/jwt-signing-key.d.ts +14 -14
- package/dist/auth/login-session-manager.d.ts +95 -135
- package/dist/auth/parse-record.d.ts +13 -13
- package/dist/auth/scope-matcher.d.ts +7 -7
- package/dist/auth/scoped-token-manager.d.ts +62 -62
- package/dist/auth/token-expiry.d.ts +49 -26
- package/dist/auth/totp-manager.d.ts +48 -48
- package/dist/auth/user-management-internal.d.ts +67 -52
- package/dist/auth/user-manager.d.ts +58 -58
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.d.ts +54 -54
- package/dist/builtins/addon-pages-aggregator/dedupe-pages.d.ts +22 -4
- package/dist/builtins/addon-pages-aggregator/index.d.ts +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.d.ts +54 -54
- package/dist/builtins/addon-widgets-aggregator/index.d.ts +1 -1
- package/dist/builtins/alerts/alerts.addon.d.ts +88 -87
- package/dist/builtins/alerts/device-label.d.ts +6 -6
- package/dist/builtins/alerts/index.d.ts +1 -1
- package/dist/builtins/alerts/prune-policy.d.ts +36 -36
- package/dist/builtins/autotrack/autotrack-cameras.d.ts +102 -79
- package/dist/builtins/autotrack/autotrack-config.d.ts +81 -81
- package/dist/builtins/autotrack/autotrack-decision.d.ts +69 -82
- package/dist/builtins/autotrack/autotrack-loop.d.ts +81 -61
- package/dist/builtins/autotrack/autotrack.addon.d.ts +103 -66
- package/dist/builtins/autotrack/frame-error.d.ts +38 -38
- package/dist/builtins/autotrack/frame-measurements.d.ts +79 -79
- package/dist/builtins/autotrack/index.d.ts +2 -2
- package/dist/builtins/autotrack/ptz-mirror.d.ts +46 -17
- package/dist/builtins/autotrack/target-selection.d.ts +33 -47
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.d.ts +270 -269
- package/dist/builtins/backup-orchestrator/cron-helpers.d.ts +17 -17
- package/dist/builtins/backup-orchestrator/destination-policy.d.ts +99 -82
- package/dist/builtins/backup-orchestrator/download-helpers.d.ts +9 -9
- package/dist/builtins/backup-orchestrator/encryption-key-store.d.ts +40 -29
- package/dist/builtins/backup-orchestrator/index.d.ts +2 -2
- package/dist/builtins/backup-orchestrator/manifest-store.d.ts +88 -69
- package/dist/builtins/backup-orchestrator/restore-archive.d.ts +14 -14
- package/dist/builtins/backup-orchestrator/run-queue.d.ts +86 -86
- package/dist/builtins/backup-orchestrator/schedule-store.d.ts +53 -37
- package/dist/builtins/backup-orchestrator/staging-paths.d.ts +23 -23
- package/dist/builtins/backup-orchestrator/write-targets.d.ts +53 -53
- package/dist/builtins/calendars/calendar-color.d.ts +5 -1
- package/dist/builtins/calendars/calendar-prefs-store.d.ts +18 -12
- package/dist/builtins/calendars/calendars.addon.d.ts +16 -11
- package/dist/builtins/calendars/index.d.ts +1 -1
- package/dist/builtins/camera-grid/acquire-retry.d.ts +26 -26
- package/dist/builtins/camera-grid/addon.d.ts +200 -174
- package/dist/builtins/camera-grid/flv-join.d.ts +32 -58
- package/dist/builtins/camera-grid/grid-activity-mirror.d.ts +37 -37
- package/dist/builtins/camera-grid/grid-activity.d.ts +83 -42
- package/dist/builtins/camera-grid/grid-camera-declarations.d.ts +46 -46
- package/dist/builtins/camera-grid/grid-camera-device.d.ts +60 -34
- package/dist/builtins/camera-grid/grid-canvas-derivation.d.ts +50 -15
- package/dist/builtins/camera-grid/grid-canvas-seed.d.ts +96 -46
- package/dist/builtins/camera-grid/grid-canvas.d.ts +74 -74
- package/dist/builtins/camera-grid/grid-child.d.ts +29 -16
- package/dist/builtins/camera-grid/grid-compositor-child.d.ts +2 -2
- package/dist/builtins/camera-grid/grid-compositor-invocation.d.ts +39 -11
- package/dist/builtins/camera-grid/grid-compositor.d.ts +50 -50
- package/dist/builtins/camera-grid/grid-detection-mapping.d.ts +52 -22
- package/dist/builtins/camera-grid/grid-device-settings.d.ts +31 -7
- package/dist/builtins/camera-grid/grid-filter-graph.d.ts +41 -41
- package/dist/builtins/camera-grid/grid-frame-sample.d.ts +45 -19
- package/dist/builtins/camera-grid/grid-instances.d.ts +20 -50
- package/dist/builtins/camera-grid/grid-last-frame-store.d.ts +51 -51
- package/dist/builtins/camera-grid/grid-layout-native-provider.d.ts +30 -4
- package/dist/builtins/camera-grid/grid-plan.d.ts +30 -20
- package/dist/builtins/camera-grid/grid-profiles.d.ts +85 -45
- package/dist/builtins/camera-grid/grid-row-normalization.d.ts +6 -6
- package/dist/builtins/camera-grid/grid-sentry-sources.d.ts +57 -57
- package/dist/builtins/camera-grid/grid-snapshot.d.ts +41 -41
- package/dist/builtins/camera-grid/grid-stream-descriptor.d.ts +49 -21
- package/dist/builtins/camera-grid/grid-stream-invocation.d.ts +37 -22
- package/dist/builtins/camera-grid/grid-stream-relay.d.ts +26 -26
- package/dist/builtins/camera-grid/grid-stream-session.d.ts +123 -93
- package/dist/builtins/camera-grid/grid-tile-feed.d.ts +47 -47
- package/dist/builtins/camera-grid/grid-tile-plan.d.ts +55 -20
- package/dist/builtins/camera-grid/grid-wire-format.d.ts +22 -6
- package/dist/builtins/camera-grid/index.d.ts +44 -44
- package/dist/builtins/camera-grid/silence-analysis.d.ts +31 -14
- package/dist/builtins/composer/claim-gate.d.ts +54 -27
- package/dist/builtins/composer/composed-device-set.d.ts +40 -26
- package/dist/builtins/composer/composed-device.d.ts +39 -17
- package/dist/builtins/composer/composer-apply-waits.d.ts +20 -13
- package/dist/builtins/composer/composer-grafts.d.ts +57 -38
- package/dist/builtins/composer/composer-live-set.d.ts +15 -15
- package/dist/builtins/composer/composer-plan.d.ts +76 -60
- package/dist/builtins/composer/composer-runtime-factory.d.ts +21 -14
- package/dist/builtins/composer/composer-seeds.d.ts +20 -14
- package/dist/builtins/composer/composer-verdict.d.ts +28 -14
- package/dist/builtins/composer/composer.addon.d.ts +23 -9
- package/dist/builtins/composer/composer.d.ts +145 -100
- package/dist/builtins/composer/composition-declarations.d.ts +50 -39
- package/dist/builtins/composer/composition-evaluation.d.ts +38 -22
- package/dist/builtins/composer/composition-runtime.d.ts +178 -125
- package/dist/builtins/composer/composition-target.d.ts +38 -34
- package/dist/builtins/composer/confirmed-seed.d.ts +35 -23
- package/dist/builtins/composer/deadline-timer.d.ts +13 -13
- package/dist/builtins/composer/existing-target.d.ts +90 -73
- package/dist/builtins/composer/field-record.d.ts +26 -19
- package/dist/builtins/composer/graft-host.d.ts +56 -32
- package/dist/builtins/composer/held-claims.d.ts +26 -9
- package/dist/builtins/composer/index.d.ts +1 -1
- package/dist/builtins/composer/own-field-reads.d.ts +26 -15
- package/dist/builtins/composer/owned-fields-target.d.ts +75 -44
- package/dist/builtins/composer/slice-assembler.d.ts +19 -3
- package/dist/builtins/composer/source-readings.d.ts +67 -61
- package/dist/builtins/composer/source-tracker.d.ts +133 -69
- package/dist/builtins/console-logging/console-destination.d.ts +15 -8
- package/dist/builtins/console-logging/console-logging.addon.d.ts +20 -19
- package/dist/builtins/console-logging/index.d.ts +3 -3
- package/dist/builtins/core-blocks/block-package.d.ts +37 -37
- package/dist/builtins/core-blocks/block-settings-store.d.ts +34 -21
- package/dist/builtins/core-blocks/block-supervisor.d.ts +138 -117
- package/dist/builtins/core-blocks/block-type-defs.d.ts +21 -21
- package/dist/builtins/core-blocks/blocks-integration.d.ts +76 -49
- package/dist/builtins/core-blocks/compile-block.d.ts +37 -37
- package/dist/builtins/core-blocks/composition-api.d.ts +38 -24
- package/dist/builtins/core-blocks/composition-peers.d.ts +26 -4
- package/dist/builtins/core-blocks/composition-sources.d.ts +25 -10
- package/dist/builtins/core-blocks/core-block-store.d.ts +109 -109
- package/dist/builtins/core-blocks/core-blocks.addon.d.ts +72 -72
- package/dist/builtins/core-blocks/extract-settings-schema.d.ts +4 -4
- package/dist/builtins/core-blocks/index.d.ts +8 -8
- package/dist/builtins/device-manager/adoption-job-engine.d.ts +141 -98
- package/dist/builtins/device-manager/claimed-status-overlay.d.ts +42 -9
- package/dist/builtins/device-manager/contribution-cache.d.ts +56 -56
- package/dist/builtins/device-manager/day-night-config-schema.d.ts +26 -12
- package/dist/builtins/device-manager/device-aggregation-merge.d.ts +17 -17
- package/dist/builtins/device-manager/device-aggregation.d.ts +277 -254
- package/dist/builtins/device-manager/device-bindings-store.d.ts +232 -220
- package/dist/builtins/device-manager/device-config-contribution.d.ts +29 -29
- package/dist/builtins/device-manager/device-config-secrets.d.ts +32 -13
- package/dist/builtins/device-manager/device-event-propagator.d.ts +22 -22
- package/dist/builtins/device-manager/device-extension-linked-slot.d.ts +17 -17
- package/dist/builtins/device-manager/device-form-secrets.d.ts +14 -14
- package/dist/builtins/device-manager/device-linked-devices.d.ts +159 -98
- package/dist/builtins/device-manager/device-manager.addon.d.ts +223 -197
- package/dist/builtins/device-manager/device-meta-actions.d.ts +306 -305
- package/dist/builtins/device-manager/device-meta-store.d.ts +100 -90
- package/dist/builtins/device-manager/device-meta-types.d.ts +250 -241
- package/dist/builtins/device-manager/device-online-fallback.d.ts +30 -30
- package/dist/builtins/device-manager/device-projection.d.ts +53 -67
- package/dist/builtins/device-manager/device-provider-context.d.ts +109 -94
- package/dist/builtins/device-manager/device-queries.d.ts +63 -63
- package/dist/builtins/device-manager/device-row-store.d.ts +417 -365
- package/dist/builtins/device-manager/device-source-activation.d.ts +91 -49
- package/dist/builtins/device-manager/device-state-claim-views.d.ts +76 -61
- package/dist/builtins/device-manager/device-state-claims.d.ts +53 -30
- package/dist/builtins/device-manager/device-state-mirror.d.ts +256 -264
- package/dist/builtins/device-manager/device-sync-resolvers.d.ts +25 -25
- package/dist/builtins/device-manager/field-claims-index.d.ts +85 -58
- package/dist/builtins/device-manager/field-ownership.d.ts +54 -36
- package/dist/builtins/device-manager/fleet-read-census.d.ts +99 -61
- package/dist/builtins/device-manager/image-settings-config-schema.d.ts +18 -8
- package/dist/builtins/device-manager/index.d.ts +2 -2
- package/dist/builtins/device-manager/linked-devices-manual-backfill.d.ts +20 -9
- package/dist/builtins/device-manager/location-alignment.d.ts +46 -46
- package/dist/builtins/device-manager/migrate-device.d.ts +178 -101
- package/dist/builtins/device-manager/migrate-guard.d.ts +66 -34
- package/dist/builtins/device-manager/migrate-hardware-state.d.ts +59 -59
- package/dist/builtins/device-manager/migrate-reload.d.ts +42 -4
- package/dist/builtins/device-manager/migration-refused.d.ts +20 -20
- package/dist/builtins/device-manager/mirror-row-writer.d.ts +205 -179
- package/dist/builtins/device-manager/recording-onboard-config-schema.d.ts +56 -32
- package/dist/builtins/device-manager/removal-fence.d.ts +48 -48
- package/dist/builtins/device-manager/runtime-state-persist-gate.d.ts +54 -26
- package/dist/builtins/device-manager/secret-config-paths.d.ts +17 -17
- package/dist/builtins/device-manager/stale-wrapper-activations.d.ts +52 -25
- package/dist/builtins/device-manager/write-lock.d.ts +13 -13
- package/dist/builtins/hub-forwarder/hub-forwarder-destination.d.ts +41 -41
- package/dist/builtins/hub-forwarder/hub-forwarder.addon.d.ts +13 -12
- package/dist/builtins/hub-forwarder/index.d.ts +3 -3
- package/dist/builtins/keychain/index.d.ts +1 -1
- package/dist/builtins/keychain/key-sources.d.ts +19 -19
- package/dist/builtins/keychain/keychain-crypto.d.ts +4 -4
- package/dist/builtins/keychain/keychain-reset-trigger.d.ts +13 -13
- package/dist/builtins/keychain/keychain-service.d.ts +128 -128
- package/dist/builtins/keychain/keychain-store.d.ts +96 -87
- package/dist/builtins/keychain/keychain-usage.d.ts +13 -2
- package/dist/builtins/keychain/keychain.addon.d.ts +31 -6
- package/dist/builtins/keychain/platform-key-source.d.ts +15 -15
- package/dist/builtins/keychain/system-held-secrets.d.ts +17 -4
- package/dist/builtins/liveness-monitor/index.d.ts +2 -2
- package/dist/builtins/liveness-monitor/liveness-checks.d.ts +73 -52
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.d.ts +57 -36
- package/dist/builtins/local-auth/admin-account-boot.d.ts +14 -14
- package/dist/builtins/local-auth/auth-config-reader.d.ts +34 -17
- package/dist/builtins/local-auth/auth-schema.d.ts +92 -69
- package/dist/builtins/local-auth/index.d.ts +1 -1
- package/dist/builtins/local-auth/jwt-signing-key-keeper.d.ts +22 -22
- package/dist/builtins/local-auth/local-auth.addon.d.ts +41 -40
- package/dist/builtins/local-auth/oauth-grants.d.ts +57 -57
- package/dist/builtins/local-auth/oauth-session-manager.d.ts +62 -62
- package/dist/builtins/local-network/address-book.d.ts +61 -36
- package/dist/builtins/local-network/index.d.ts +2 -2
- package/dist/builtins/local-network/ipv6-lan.d.ts +12 -17
- package/dist/builtins/local-network/local-hostname.d.ts +10 -10
- package/dist/builtins/local-network/local-network.addon.d.ts +259 -258
- package/dist/builtins/loki-logging/index.d.ts +4 -4
- package/dist/builtins/loki-logging/loki-destination.d.ts +113 -87
- package/dist/builtins/loki-logging/loki-logging.addon.d.ts +61 -42
- package/dist/builtins/loki-logging/loki-payload.d.ts +82 -39
- package/dist/builtins/loki-logging/retire-enabled-flag.d.ts +37 -12
- package/dist/builtins/native-metrics/cgroup-memory.d.ts +206 -159
- package/dist/builtins/native-metrics/cgroup-pids.d.ts +138 -91
- package/dist/builtins/native-metrics/container-memory-series.d.ts +212 -178
- package/dist/builtins/native-metrics/gpu-probe.d.ts +9 -9
- package/dist/builtins/native-metrics/index.d.ts +2 -2
- package/dist/builtins/native-metrics/load-series-config.d.ts +29 -57
- package/dist/builtins/native-metrics/load-series-reader.d.ts +52 -26
- package/dist/builtins/native-metrics/load-series-store.d.ts +237 -176
- package/dist/builtins/native-metrics/native-metrics-provider.d.ts +43 -43
- package/dist/builtins/native-metrics/native-metrics.addon.d.ts +230 -230
- package/dist/builtins/native-metrics/node-load-ring.d.ts +196 -196
- package/dist/builtins/native-metrics/proc-process-table.d.ts +12 -12
- package/dist/builtins/native-metrics/process-classification.d.ts +95 -36
- package/dist/builtins/native-metrics/thread-cpu-sampler.d.ts +95 -95
- package/dist/builtins/platform-probe/coral-accelerators.d.ts +17 -17
- package/dist/builtins/platform-probe/index.d.ts +38 -30
- package/dist/builtins/platform-probe/inference-config-resolver.d.ts +27 -27
- package/dist/builtins/platform-probe/intel-accelerators.d.ts +8 -8
- package/dist/builtins/platform-probe/intel-npu.d.ts +30 -30
- package/dist/builtins/platform-probe/platform-scorer.d.ts +35 -35
- package/dist/builtins/platform-probe/runtime-packages.d.ts +3 -3
- package/dist/builtins/remote-access-orchestrator/enabled-providers-reconcile.d.ts +87 -87
- package/dist/builtins/remote-access-orchestrator/index.d.ts +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.d.ts +66 -35
- package/dist/builtins/shared/device-state-changed.d.ts +9 -9
- package/dist/builtins/shared/settle-sources.d.ts +16 -16
- package/dist/builtins/snapshot/index.d.ts +2 -2
- package/dist/builtins/snapshot/snapshot-cache.d.ts +92 -92
- package/dist/builtins/snapshot/snapshot-coalescing.d.ts +108 -108
- package/dist/builtins/snapshot/snapshot-courtesy.d.ts +48 -48
- package/dist/builtins/snapshot/snapshot-durable-store.d.ts +32 -32
- package/dist/builtins/snapshot/snapshot-fatigue.d.ts +34 -34
- package/dist/builtins/snapshot/snapshot-grab-pick.d.ts +14 -14
- package/dist/builtins/snapshot/snapshot-link-url.d.ts +49 -49
- package/dist/builtins/snapshot/snapshot-media-handler.d.ts +97 -97
- package/dist/builtins/snapshot/snapshot-resize.d.ts +64 -103
- package/dist/builtins/snapshot/snapshot.addon.d.ts +569 -568
- package/dist/builtins/sqlite-storage/analyze-stats.d.ts +73 -29
- package/dist/builtins/sqlite-storage/config-store.d.ts +6 -6
- package/dist/builtins/sqlite-storage/device-store.d.ts +16 -16
- package/dist/builtins/sqlite-storage/filesystem-browse-provider.d.ts +23 -23
- package/dist/builtins/sqlite-storage/filesystem-storage-provider.d.ts +79 -79
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.d.ts +27 -26
- package/dist/builtins/sqlite-storage/filter-compiler.d.ts +107 -107
- package/dist/builtins/sqlite-storage/index.d.ts +12 -12
- package/dist/builtins/sqlite-storage/integration-registry.d.ts +37 -37
- package/dist/builtins/sqlite-storage/path-guard.d.ts +5 -5
- package/dist/builtins/sqlite-storage/prefix-range.d.ts +44 -44
- package/dist/builtins/sqlite-storage/query-bounds.d.ts +100 -106
- package/dist/builtins/sqlite-storage/query-profiler.d.ts +217 -217
- package/dist/builtins/sqlite-storage/retired-collections.d.ts +124 -55
- package/dist/builtins/sqlite-storage/retired-settings-keys.d.ts +239 -189
- package/dist/builtins/sqlite-storage/shm-lock-canary.d.ts +41 -41
- package/dist/builtins/sqlite-storage/sqlite-pragmas.d.ts +162 -162
- package/dist/builtins/sqlite-storage/sqlite-settings-backend.d.ts +458 -458
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.d.ts +59 -58
- package/dist/builtins/sqlite-storage/sqlite-snapshot-protocol.d.ts +37 -32
- package/dist/builtins/sqlite-storage/sqlite-snapshot-worker.d.ts +19 -19
- package/dist/builtins/sqlite-storage/sqlite-snapshotter.d.ts +76 -76
- package/dist/builtins/sqlite-storage/statement-shape.d.ts +54 -54
- package/dist/builtins/sqlite-storage/table-sizes.d.ts +71 -71
- package/dist/builtins/sqlite-storage/vector-index-shared.d.ts +63 -54
- package/dist/builtins/sqlite-storage/vector-index-vec.d.ts +133 -96
- package/dist/builtins/sqlite-storage/wal-checkpoint-policy.d.ts +161 -161
- package/dist/builtins/sqlite-storage/wal-checkpointer.d.ts +60 -60
- package/dist/builtins/sqlite-storage/wal-maintenance.d.ts +94 -94
- package/dist/builtins/storage-orchestrator/access-guards.d.ts +37 -26
- package/dist/builtins/storage-orchestrator/data-store-dispatch.d.ts +33 -18
- package/dist/builtins/storage-orchestrator/drain-ratchet.d.ts +85 -85
- package/dist/builtins/storage-orchestrator/drain-state-store.d.ts +20 -10
- package/dist/builtins/storage-orchestrator/hub-settings-forward.d.ts +113 -53
- package/dist/builtins/storage-orchestrator/index.d.ts +7 -7
- package/dist/builtins/storage-orchestrator/location-occupancy-slice.d.ts +64 -40
- package/dist/builtins/storage-orchestrator/location-occupancy.d.ts +14 -14
- package/dist/builtins/storage-orchestrator/location-protection.d.ts +13 -13
- package/dist/builtins/storage-orchestrator/location-repoint-move.d.ts +44 -44
- package/dist/builtins/storage-orchestrator/location-root-collision.d.ts +61 -25
- package/dist/builtins/storage-orchestrator/location-secrets.d.ts +99 -58
- package/dist/builtins/storage-orchestrator/location-store.d.ts +56 -47
- package/dist/builtins/storage-orchestrator/location-volume-capacity.d.ts +37 -37
- package/dist/builtins/storage-orchestrator/provider-discovery.d.ts +20 -6
- package/dist/builtins/storage-orchestrator/storage-cleanup-coordinator.d.ts +51 -51
- package/dist/builtins/storage-orchestrator/storage-migration-coordinator.d.ts +224 -224
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +292 -292
- package/dist/builtins/storage-orchestrator/storage-orchestrator.service.d.ts +431 -450
- package/dist/builtins/storage-orchestrator/storage-pressure-manager.d.ts +104 -104
- package/dist/builtins/system-backup/backup-encryption.d.ts +60 -23
- package/dist/builtins/system-backup/system-backup.service.d.ts +240 -240
- package/dist/builtins/system-config/cluster-secret-keeper.d.ts +54 -34
- package/dist/builtins/system-config/index.d.ts +2 -2
- package/dist/builtins/system-config/mesh-actions.d.ts +2 -30
- package/dist/builtins/system-config/system-config.addon.d.ts +57 -100
- package/dist/builtins/system-config/system-config.addon.js +37 -33
- package/dist/builtins/system-config/system-config.addon.mjs +37 -33
- package/dist/builtins/winston-logging/index.d.ts +3 -3
- package/dist/builtins/winston-logging/winston-destination.d.ts +15 -15
- package/dist/builtins/winston-logging/winston-logging.addon.d.ts +14 -13
- package/dist/{child-cap-dispatch-nURMuVTX.js → child-cap-dispatch-Bnr8brru.js} +18 -0
- package/dist/{child-cap-dispatch-B1gyE35b.mjs → child-cap-dispatch-mHO_6r0G.mjs} +1 -1
- package/dist/download/hosted-model-revisions.d.ts +8 -8
- package/dist/download/model-download-service.d.ts +32 -32
- package/dist/download/model-downloader.d.ts +88 -88
- package/dist/events/event-bus.d.ts +6 -6
- package/dist/events/system-event-bus.d.ts +11 -11
- package/dist/feature/feature-manager.d.ts +6 -6
- package/dist/http/asset-compression.d.ts +35 -73
- package/dist/http/authenticated-file-server.d.ts +32 -32
- package/dist/http/data-plane-registry.d.ts +49 -39
- package/dist/http/file-data-plane.d.ts +14 -14
- package/dist/http/lan-http-bind.d.ts +24 -13
- package/dist/http/reverse-proxy.d.ts +36 -24
- package/dist/index.d.ts +137 -137
- package/dist/index.js +4 -3
- package/dist/index.mjs +2 -4
- package/dist/kernel/addon-class-resolver.d.ts +1 -1
- package/dist/kernel/addon-engine-manager.d.ts +20 -20
- package/dist/kernel/addon-health-monitor.d.ts +151 -151
- package/dist/kernel/addon-installer.d.ts +609 -609
- package/dist/kernel/addon-loader.d.ts +133 -133
- package/dist/kernel/addon-manifest.d.ts +118 -118
- package/dist/kernel/addon-residue.d.ts +28 -32
- package/dist/kernel/array-buffer-census.d.ts +84 -88
- package/dist/kernel/bootstrap-config.d.ts +3 -3
- package/dist/kernel/cap-router-builder.d.ts +145 -101
- package/dist/kernel/capability-handle.d.ts +41 -41
- package/dist/kernel/capability-registry.d.ts +588 -576
- package/dist/kernel/config-manager.d.ts +199 -199
- package/dist/kernel/config-schema.d.ts +132 -128
- package/dist/kernel/custom-action-registry.d.ts +25 -25
- package/dist/kernel/deps/addon-deps-manager.d.ts +17 -17
- package/dist/kernel/deps/closure-dedupe.d.ts +76 -76
- package/dist/kernel/deps/ensure-addon-natives.d.ts +34 -34
- package/dist/kernel/deps/ensure-native-prebuilds.d.ts +25 -25
- package/dist/kernel/deps/manifest-native-deps.d.ts +38 -38
- package/dist/kernel/deps/manifest-python-deps.d.ts +18 -18
- package/dist/kernel/deps/manifest-system-deps.d.ts +13 -13
- package/dist/kernel/deps/npm-command.d.ts +45 -45
- package/dist/kernel/deps/system-package-allowlist.d.ts +9 -9
- package/dist/kernel/deps/system-package-broker.d.ts +20 -20
- package/dist/kernel/deps/system-package-client.d.ts +3 -3
- package/dist/kernel/device-registry.d.ts +27 -27
- package/dist/kernel/event-loop-stall-monitor.d.ts +33 -33
- package/dist/kernel/event-plane-report.d.ts +174 -174
- package/dist/kernel/fs-utils.d.ts +70 -70
- package/dist/kernel/gc-census.d.ts +119 -119
- package/dist/kernel/heap-spaces.d.ts +87 -87
- package/dist/kernel/heap-watch.d.ts +706 -706
- package/dist/kernel/host-externals.d.ts +8 -8
- package/dist/kernel/hwaccel/hwaccel-resolver.d.ts +27 -27
- package/dist/kernel/index.d.ts +115 -113
- package/dist/kernel/inference/inference-resolver.d.ts +13 -13
- package/dist/kernel/infra-capabilities.d.ts +7 -7
- package/dist/kernel/isolated-builtin-phase.d.ts +42 -42
- package/dist/kernel/lifecycle/job-journal.d.ts +17 -17
- package/dist/kernel/lifecycle/lifecycle-job-engine.d.ts +99 -99
- package/dist/kernel/lifecycle/staging-area.d.ts +22 -22
- package/dist/kernel/moleculer/addon-context-factory.d.ts +90 -89
- package/dist/kernel/moleculer/addon-data-plane-facility.d.ts +12 -12
- package/dist/kernel/moleculer/addon-deploy-source.d.ts +11 -11
- package/dist/kernel/moleculer/addon-peer-bytes-facility.d.ts +18 -18
- package/dist/kernel/moleculer/addon-service-factory.d.ts +41 -41
- package/dist/kernel/moleculer/agent-mesh-authenticator.d.ts +60 -33
- package/dist/kernel/moleculer/agent-ui-unlock.d.ts +30 -30
- package/dist/kernel/moleculer/broker-factory.d.ts +61 -61
- package/dist/kernel/moleculer/cap-usage-registry.d.ts +108 -153
- package/dist/kernel/moleculer/capabilities-access.d.ts +19 -19
- package/dist/kernel/moleculer/child-addon-call-dispatch.d.ts +43 -43
- package/dist/kernel/moleculer/child-cap-descriptors.d.ts +26 -26
- package/dist/kernel/moleculer/child-cap-dispatch.d.ts +52 -52
- package/dist/kernel/moleculer/children-batch-loader.d.ts +86 -34
- package/dist/kernel/moleculer/cluster-secret.d.ts +19 -19
- package/dist/kernel/moleculer/core-cap-service.d.ts +53 -53
- package/dist/kernel/moleculer/crash-supervisor.d.ts +39 -39
- package/dist/kernel/moleculer/device-cap-proxy.d.ts +51 -51
- package/dist/kernel/moleculer/device-event-ring.d.ts +117 -75
- package/dist/kernel/moleculer/event-bus-core.d.ts +171 -159
- package/dist/kernel/moleculer/event-bus.d.ts +73 -73
- package/dist/kernel/moleculer/hub-log-forwarder.d.ts +30 -30
- package/dist/kernel/moleculer/hub-service.d.ts +42 -42
- package/dist/kernel/moleculer/init-watchdog.d.ts +49 -49
- package/dist/kernel/moleculer/mesh-access-middleware.d.ts +36 -21
- package/dist/kernel/moleculer/mesh-auth-mode.d.ts +33 -39
- package/dist/kernel/moleculer/mesh-authenticator.d.ts +58 -58
- package/dist/kernel/moleculer/mesh-auto-enforce.d.ts +38 -18
- package/dist/kernel/moleculer/mesh-join-client.d.ts +67 -45
- package/dist/kernel/moleculer/mesh-join-proof.d.ts +8 -8
- package/dist/kernel/moleculer/mesh-mtls/constants.d.ts +1 -1
- package/dist/kernel/moleculer/mesh-mtls/index.d.ts +10 -10
- package/dist/kernel/moleculer/mesh-mtls/mesh-ca-keeper.d.ts +43 -38
- package/dist/kernel/moleculer/mesh-mtls/mesh-ca.d.ts +29 -20
- package/dist/kernel/moleculer/mesh-mtls/mesh-clear-port.d.ts +32 -32
- package/dist/kernel/moleculer/mesh-mtls/mesh-crl.d.ts +11 -11
- package/dist/kernel/moleculer/mesh-mtls/mesh-enroll.d.ts +19 -16
- package/dist/kernel/moleculer/mesh-mtls/mesh-join-token.d.ts +40 -40
- package/dist/kernel/moleculer/mesh-mtls/mesh-tls-enabler.d.ts +5 -1
- package/dist/kernel/moleculer/mesh-mtls/tls-tcp-transporter.d.ts +131 -130
- package/dist/kernel/moleculer/mesh-queue-report.d.ts +39 -39
- package/dist/kernel/moleculer/node-registry.d.ts +120 -120
- package/dist/kernel/moleculer/process-context.d.ts +2 -2
- package/dist/kernel/moleculer/process-service.d.ts +168 -168
- package/dist/kernel/moleculer/provider-registry.d.ts +9 -9
- package/dist/kernel/moleculer/readiness-context.d.ts +58 -58
- package/dist/kernel/moleculer/readiness-service.d.ts +31 -16
- package/dist/kernel/moleculer/register-framework-resolver.d.ts +6 -6
- package/dist/kernel/moleculer/register-node-client.d.ts +34 -27
- package/dist/kernel/moleculer/remote-logger.d.ts +29 -29
- package/dist/kernel/moleculer/resilient-cap-call.d.ts +21 -21
- package/dist/kernel/moleculer/runner-native-allocator.d.ts +95 -95
- package/dist/kernel/moleculer/runner-process-group.d.ts +57 -57
- package/dist/kernel/moleculer/runtime-state-load.d.ts +21 -11
- package/dist/kernel/moleculer/settings-read-guard.d.ts +39 -39
- package/dist/kernel/moleculer/stream-probe-service.d.ts +25 -6
- package/dist/kernel/moleculer/trpc-links.d.ts +203 -203
- package/dist/kernel/moleculer/typed-array-serde.d.ts +9 -20
- package/dist/kernel/moleculer/worker-device-restore.d.ts +8 -8
- package/dist/kernel/outbound-queue-watch.d.ts +74 -74
- package/dist/kernel/process-cpu-census.d.ts +55 -55
- package/dist/kernel/provider-kind-drift.d.ts +17 -8
- package/dist/kernel/restart-coordinator.d.ts +71 -71
- package/dist/kernel/settings-door-view.d.ts +36 -25
- package/dist/kernel/settings-read-error.d.ts +29 -31
- package/dist/kernel/settings-view-types.d.ts +100 -95
- package/dist/kernel/socket-plane-report.d.ts +214 -153
- package/dist/kernel/status-overlay.d.ts +31 -11
- package/dist/kernel/storage-location-registry.d.ts +50 -50
- package/dist/kernel/store-settings-view.d.ts +13 -13
- package/dist/kernel/system-settings-mirror.d.ts +40 -28
- package/dist/kernel/system-settings-policy.d.ts +15 -34
- package/dist/kernel/transport/cap-action-census.d.ts +183 -183
- package/dist/kernel/transport/cap-action-name.d.ts +84 -84
- package/dist/kernel/transport/cap-child-index.d.ts +41 -41
- package/dist/kernel/transport/cap-route-resolver.d.ts +237 -212
- package/dist/kernel/transport/cap-route.d.ts +139 -139
- package/dist/kernel/transport/cap-routing-hints.d.ts +37 -37
- package/dist/kernel/transport/child-cap-protocol.d.ts +245 -245
- package/dist/kernel/transport/claimed-get-status.d.ts +30 -6
- package/dist/kernel/transport/create-local-transport.d.ts +5 -5
- package/dist/kernel/transport/frame-codec.d.ts +109 -109
- package/dist/kernel/transport/hub-cap-forward.d.ts +81 -59
- package/dist/kernel/transport/index.d.ts +36 -36
- package/dist/kernel/transport/local-child-client.d.ts +184 -184
- package/dist/kernel/transport/local-child-registry.d.ts +592 -592
- package/dist/kernel/transport/local-endpoint-path.d.ts +4 -4
- package/dist/kernel/transport/local-transport.d.ts +92 -92
- package/dist/kernel/transport/parent-unowned-call.d.ts +266 -237
- package/dist/kernel/transport/peer-answered-error.d.ts +14 -14
- package/dist/kernel/transport/socket-channel.d.ts +110 -110
- package/dist/kernel/transport/socket-traffic.d.ts +96 -96
- package/dist/kernel/transport/uds-event-bridge.d.ts +77 -50
- package/dist/kernel/transport/uds-event-bus.d.ts +75 -26
- package/dist/kernel/transport/uds-local-transport.d.ts +14 -14
- package/dist/kernel/transport/uds-log-ingest.d.ts +38 -23
- package/dist/kernel/transport/uds-logger.d.ts +33 -33
- package/dist/kernel/utils/ring-buffer.d.ts +12 -12
- package/dist/kernel/workspace-detect.d.ts +7 -7
- package/dist/lifecycle/lifecycle-state-machine.d.ts +24 -24
- package/dist/logging/formatter.d.ts +52 -25
- package/dist/logging/log-manager.d.ts +133 -133
- package/dist/logging/log-redactor.d.ts +22 -1
- package/dist/logging/log-ring-buffer.d.ts +57 -57
- package/dist/logging/logging-gate.d.ts +69 -25
- package/dist/logging/logging-gate.singleton.d.ts +12 -1
- package/dist/logging/partitioned-log-buffer.d.ts +161 -161
- package/dist/logging/scoped-logger.d.ts +14 -14
- package/dist/network/network-quality.d.ts +8 -8
- package/dist/notification/notification-service.d.ts +37 -37
- package/dist/notification/toast-service.d.ts +18 -18
- package/dist/pipeline/engine-manager-resolver.d.ts +12 -12
- package/dist/pipeline/pipeline-runner.d.ts +6 -6
- package/dist/pipeline/pipeline-validator.d.ts +8 -8
- package/dist/process/proc-stat.d.ts +51 -51
- package/dist/process/resource-monitor.d.ts +19 -19
- package/dist/python/python-env-manager.d.ts +10 -10
- package/dist/repl/interfaces.d.ts +21 -21
- package/dist/repl/repl-engine.d.ts +6 -6
- package/dist/storage/fs-storage-backend.d.ts +35 -35
- package/dist/storage/storage-location-manager.d.ts +21 -21
- package/dist/storage/storage-manager.d.ts +68 -68
- package/dist/tls/boot-tls.d.ts +24 -24
- package/dist/tls/cert-evaluation.d.ts +25 -25
- package/dist/tls/cert-identity.d.ts +39 -39
- package/dist/tls/cert-issue.d.ts +37 -17
- package/dist/tls/cert-manager.d.ts +86 -84
- package/dist/tls/https-listener.d.ts +16 -16
- package/dist/tls/index.d.ts +8 -8
- package/dist/tls/tls-actions.d.ts +18 -18
- package/dist/tls/tls-status.d.ts +15 -15
- package/dist/tls/uploaded-cert.d.ts +9 -9
- package/package.json +9 -3
|
@@ -1,66 +1,66 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export declare const SNAPSHOT_LINK_TTL_MS =
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export declare const SNAPSHOT_LINK_EXP_BUCKET_MS =
|
|
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
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
52
|
-
|
|
51
|
+
readonly deviceId: number;
|
|
52
|
+
readonly width: number | undefined;
|
|
53
53
|
}
|
|
54
54
|
export interface ParseSnapshotLinkInput {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
|
1
|
+
import type { DataPlaneHandler } from "@camstack/types";
|
|
2
2
|
/** A renderable snapshot frame resolved for one device. */
|
|
3
3
|
export interface SnapshotMedia {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
86
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
-
|
|
109
|
-
|
|
108
|
+
* {@link SnapshotMediaRequest}, but the width is the width SERVED — see
|
|
109
|
+
* {@link SnapshotMedia.servedWidth}. */
|
|
110
110
|
export interface SnapshotVariantIdentity {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
111
|
+
readonly deviceId: number;
|
|
112
|
+
readonly streamId: string | undefined;
|
|
113
|
+
readonly width: number | undefined;
|
|
114
|
+
readonly variantKey?: string | undefined;
|
|
115
115
|
}
|
|
116
116
|
/**
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
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 =
|
|
3
|
+
export declare const RESIZE_TIMEOUT_MS = 1e4;
|
|
43
4
|
/**
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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
|
}
|