@camstack/system 1.2.389 → 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 -93
- package/dist/builtins/system-config/system-config.addon.js +46 -33
- package/dist/builtins/system-config/system-config.addon.mjs +46 -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,62 +1,62 @@
|
|
|
1
|
-
import { GridStreamLogger } from
|
|
1
|
+
import type { GridStreamLogger } from "./grid-stream-session.js";
|
|
2
2
|
/** Where a grid's last composed frame is kept between compositions. */
|
|
3
3
|
export interface GridLastFrameStore {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
/** The last frame kept for this grid, or `null` — which is a real answer. */
|
|
5
|
+
get(deviceId: number): Promise<Buffer | null>;
|
|
6
|
+
put(deviceId: number, jpeg: Buffer): Promise<void>;
|
|
7
7
|
}
|
|
8
8
|
/** Just enough of a session for the snapshot to choose one and read its state. */
|
|
9
9
|
export interface GridSnapshotSession {
|
|
10
|
-
|
|
10
|
+
isRunning(): boolean;
|
|
11
11
|
}
|
|
12
12
|
export interface GridSnapshotAnswerInput {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
readonly running: boolean;
|
|
14
|
+
readonly hasStoredFrame: boolean;
|
|
15
15
|
}
|
|
16
16
|
export type GridSnapshotAnswer = {
|
|
17
|
-
|
|
17
|
+
readonly kind: "live";
|
|
18
18
|
} | {
|
|
19
|
-
|
|
19
|
+
readonly kind: "stored";
|
|
20
20
|
} | {
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
readonly kind: "none";
|
|
22
|
+
readonly reason: "never-composed";
|
|
23
23
|
};
|
|
24
24
|
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
* Which of the three answers applies. Pure, so the rule can be read — and
|
|
26
|
+
* sabotaged — without a socket, a file or an ffmpeg.
|
|
27
|
+
*/
|
|
28
28
|
export declare function gridSnapshotAnswerFor(input: GridSnapshotAnswerInput): GridSnapshotAnswer;
|
|
29
29
|
export interface GridSnapshotImage {
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
readonly base64: string;
|
|
31
|
+
readonly contentType: string;
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
* Generic in the session type so the addon can hand over its OWN session
|
|
35
|
+
* record — the one that also knows the instance and the stream — and get it
|
|
36
|
+
* back in `sampleFrame` without a cast or a second lookup.
|
|
37
|
+
*/
|
|
38
38
|
export interface GridSnapshotDeps<S extends GridSnapshotSession = GridSnapshotSession> {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
39
|
+
readonly logger: GridStreamLogger;
|
|
40
|
+
/**
|
|
41
|
+
* This grid's compositions — one, since the collapse to a single output.
|
|
42
|
+
* Kept as a LIST because the choosing logic below is the same either way and
|
|
43
|
+
* a list of one costs nothing. EMPTY means this addon does not own the
|
|
44
|
+
* device — never "no picture".
|
|
45
|
+
*/
|
|
46
|
+
readonly sessionsFor: (deviceId: number) => readonly S[];
|
|
47
|
+
/**
|
|
48
|
+
* One JPEG out of a composition that is ALREADY running. `null` when the
|
|
49
|
+
* bytes could not be turned into a frame — which is a miss, not a reason to
|
|
50
|
+
* start anything.
|
|
51
|
+
*/
|
|
52
|
+
readonly sampleFrame: (session: S) => Promise<Buffer | null>;
|
|
53
|
+
readonly store: GridLastFrameStore;
|
|
54
54
|
}
|
|
55
55
|
export declare class GridSnapshotSource<S extends GridSnapshotSession = GridSnapshotSession> {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
private readonly deps;
|
|
57
|
+
constructor(deps: GridSnapshotDeps<S>);
|
|
58
|
+
getSnapshot(deviceId: number): Promise<GridSnapshotImage | null>;
|
|
59
|
+
private sample;
|
|
60
|
+
private readStored;
|
|
61
|
+
private keep;
|
|
62
62
|
}
|
|
@@ -1,25 +1,53 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* What a grid camera tells the broker it offers: one stream per profile.
|
|
3
|
+
*
|
|
4
|
+
* ## Why a `stream-catalog` descriptor and not `publishCameraStream`
|
|
5
|
+
*
|
|
6
|
+
* The broker PULLS this catalog per camera and reconciles its registry against
|
|
7
|
+
* it. Anything the broker holds that the catalog does not name is swept — which
|
|
8
|
+
* is the sweep `brokerOwned: true` exists to opt OUT of, for streams no
|
|
9
|
+
* provider can ever declare (a `derived:*`, an `egress:*`). A grid is not one
|
|
10
|
+
* of those: this addon owns the device, answers `getCatalog` for it, and names
|
|
11
|
+
* its streams on every pull. Being PRESENT in the catalog is what keeps them,
|
|
12
|
+
* and `brokerOwned` is not on the cap wire at all — deliberately, so a cap
|
|
13
|
+
* caller cannot make its own publication un-sweepable.
|
|
14
|
+
*
|
|
15
|
+
* The corollary is the rule this addon has to keep: `getCatalog` must name
|
|
16
|
+
* every OFFERED stream on EVERY pull, including while the composition is idle.
|
|
17
|
+
* It describes what the grid offers, not what is running.
|
|
18
|
+
*
|
|
19
|
+
* ## One descriptor per OFFERED profile
|
|
20
|
+
*
|
|
21
|
+
* A grid's `low` is composed of its sources' `low`, onto the canvas their `low`
|
|
22
|
+
* implies — so the three are each 1:1 with what they are made of, and a
|
|
23
|
+
* viewer's adaptive picks a rung without knowing a grid is a grid.
|
|
24
|
+
*
|
|
25
|
+
* A profile one source cannot serve is not named here at all: composing a hole
|
|
26
|
+
* is worse than not offering, because the operator files the hole as a broken
|
|
27
|
+
* camera.
|
|
28
|
+
*/
|
|
29
|
+
import type { CamProfile, CamStreamDescriptor } from "@camstack/types";
|
|
2
30
|
export interface GridStreamDescriptorInput {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
31
|
+
/** Which composition this is. Also the `profileHint` — see below. */
|
|
32
|
+
readonly profile: CamProfile;
|
|
33
|
+
/** The DERIVED canvas of that profile, never an authored number. */
|
|
34
|
+
readonly width: number;
|
|
35
|
+
readonly height: number;
|
|
36
|
+
readonly fps: number;
|
|
37
|
+
/** The on-demand endpoint the broker dials. Dialling it IS the demand. */
|
|
38
|
+
readonly url: string;
|
|
11
39
|
}
|
|
12
40
|
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
41
|
+
* `profileHint` is load-bearing, not decoration.
|
|
42
|
+
*
|
|
43
|
+
* A device publishing a SINGLE stream with no hint is ranked by pixel count,
|
|
44
|
+
* and a single stream ranks into `mid` — the slot `recordings` does not select
|
|
45
|
+
* on its own (`high|mid` picks high), that `recordingsLow` ignores, and that
|
|
46
|
+
* scrub never reads. The Dreame robot's one 720p relay landed exactly there and
|
|
47
|
+
* its footage was written nowhere anything looked.
|
|
48
|
+
*
|
|
49
|
+
* With several compositions published the hint does a second job: it says which
|
|
50
|
+
* slot each one is FOR. Ranked by pixels a grid's `mid` would take the `high`
|
|
51
|
+
* slot on any grid whose `high` was not offered.
|
|
52
|
+
*/
|
|
25
53
|
export declare function gridStreamDescriptor(input: GridStreamDescriptorInput): CamStreamDescriptor;
|
|
@@ -1,29 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The composite's ffmpeg plan: N decodes, ONE composition, ONE encode, in ONE
|
|
3
|
+
* child.
|
|
4
|
+
*
|
|
5
|
+
* This file composes the SHARED builder in `@camstack/types`
|
|
6
|
+
* (`ffmpeg/invocation.ts`) — it deliberately builds no argv of its own. The
|
|
7
|
+
* repo has already shipped two argv builders that disagreed about hardware,
|
|
8
|
+
* and `scripts/check-ffmpeg-primitive.ts` exists to refuse a third.
|
|
9
|
+
*
|
|
10
|
+
* Why one child rather than one per source: frames never cross a process
|
|
11
|
+
* boundary at frame-rate (D9/D18). A composition needs every source's DECODED
|
|
12
|
+
* pixels at the same instant, so the composition has to happen where the
|
|
13
|
+
* decodes already are. What leaves this child is a compressed elementary
|
|
14
|
+
* stream in an MPEG-TS wrapper, and nothing else.
|
|
15
|
+
*/
|
|
16
|
+
import type { FfmpegInvocation, FfmpegVideoEncoderId } from "@camstack/types";
|
|
17
|
+
import { type GridLayout } from "./grid-filter-graph.js";
|
|
3
18
|
/** One ffmpeg input: the camera it is, and the URL this child will dial. */
|
|
4
19
|
export interface GridStreamSource {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
20
|
+
/** The SOURCE camera. Carried so every log line about it can be tagged. */
|
|
21
|
+
readonly deviceId: number;
|
|
22
|
+
/**
|
|
23
|
+
* A broker restream URL, acquired through `streamBroker.getStreamWithCodec`.
|
|
24
|
+
* That is the single demand-counted entry point: it rides the broker's ONE
|
|
25
|
+
* source dial instead of opening a second connection to the camera.
|
|
26
|
+
*/
|
|
27
|
+
readonly url: string;
|
|
13
28
|
}
|
|
14
29
|
export interface GridStreamInvocationInput {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
30
|
+
readonly layout: GridLayout;
|
|
31
|
+
/** In ffmpeg INPUT ORDINAL order — `sources[n]` is the graph's `[n:v]`. */
|
|
32
|
+
readonly sources: readonly GridStreamSource[];
|
|
33
|
+
readonly decodeHwAccel: string | null;
|
|
34
|
+
readonly encoder: FfmpegVideoEncoderId;
|
|
35
|
+
readonly fps: number;
|
|
36
|
+
readonly bitrateKbps: number;
|
|
22
37
|
}
|
|
23
38
|
/**
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
39
|
+
* @throws when the layout addresses an input the sources do not contain, or
|
|
40
|
+
* when there is nothing to compose. Both are plan errors: ffmpeg would refuse
|
|
41
|
+
* them at start-up with a message about a filter pad, which names the graph
|
|
42
|
+
* rather than the configuration that produced it.
|
|
43
|
+
*/
|
|
29
44
|
export declare function gridStreamInvocation(input: GridStreamInvocationInput): FfmpegInvocation;
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { CamProfile } from
|
|
2
|
-
import { GridStreamLogger, GridStreamSession } from
|
|
1
|
+
import { type CamProfile } from "@camstack/types";
|
|
2
|
+
import type { GridStreamLogger, GridStreamSession } from "./grid-stream-session.js";
|
|
3
3
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
* Which grid, and WHICH COMPOSITION of it.
|
|
5
|
+
*
|
|
6
|
+
* The profile is a path segment and not a query string for the reason the
|
|
7
|
+
* restream suffixes are (`restream-intent.ts`): the choice belongs to the URL
|
|
8
|
+
* the consumer was handed, so a broker configured once keeps asking for the
|
|
9
|
+
* same thing. It is REQUIRED — a dial naming none would be the broker asking
|
|
10
|
+
* for "whichever", which is how a `low` slot ends up holding a `high`
|
|
11
|
+
* composition.
|
|
12
|
+
*/
|
|
13
13
|
export interface GridStreamRequest {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
readonly instanceId: string;
|
|
15
|
+
readonly profile: CamProfile;
|
|
16
16
|
}
|
|
17
17
|
/** `/grid/<instanceId>/<profile>.flv`, or `null` when it is anything else. */
|
|
18
18
|
export declare function parseGridStreamPath(url: string | undefined): GridStreamRequest | null;
|
|
19
19
|
export interface GridStreamRelayDeps {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
readonly logger: GridStreamLogger;
|
|
21
|
+
/** `null` when no grid serves that instance/profile pair right now. */
|
|
22
|
+
readonly sessionFor: (request: GridStreamRequest) => GridStreamSession | null;
|
|
23
23
|
}
|
|
24
24
|
export declare class GridStreamRelay {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
private readonly deps;
|
|
26
|
+
private server;
|
|
27
|
+
private baseUrl;
|
|
28
|
+
private readonly open;
|
|
29
|
+
constructor(deps: GridStreamRelayDeps);
|
|
30
|
+
start(): Promise<void>;
|
|
31
|
+
/** The URL a grid's catalog descriptor advertises. Empty before {@link start}. */
|
|
32
|
+
streamUrl(request: GridStreamRequest): string;
|
|
33
|
+
private serve;
|
|
34
|
+
dispose(): Promise<void>;
|
|
35
35
|
}
|
|
@@ -1,113 +1,143 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* One composite camera's stream, on demand.
|
|
3
|
+
*
|
|
4
|
+
* ## The lifecycle, stated once
|
|
5
|
+
*
|
|
6
|
+
* There is **no prebuffer and no idle stream**. The child exists while, and
|
|
7
|
+
* only while, somebody is reading its bytes:
|
|
8
|
+
*
|
|
9
|
+
* - **A consumer** is an open read of this grid's HTTP endpoint. The broker is
|
|
10
|
+
* the only thing that dials it, and it dials on demand for whatever is
|
|
11
|
+
* consuming the grid's profile slot — a viewer, a snapshot, or the recorder.
|
|
12
|
+
* That is why "the recorder counts as a client" needs no special case here:
|
|
13
|
+
* with recording enabled the broker keeps a dial open, so the grid stays up
|
|
14
|
+
* exactly like an ordinary camera that records.
|
|
15
|
+
* - **The first** consumer acquires one broker handle per cell and starts ONE
|
|
16
|
+
* ffmpeg child.
|
|
17
|
+
* - **The last** consumer to leave stops the child and releases every handle.
|
|
18
|
+
* {@link GridStreamSessionDeps.lingerMs} debounces that teardown; it holds no
|
|
19
|
+
* media and answers nobody, it only stops a reconnect costing a respawn plus
|
|
20
|
+
* N re-acquisitions.
|
|
21
|
+
*
|
|
22
|
+
* ## Why the sources come from the broker
|
|
23
|
+
*
|
|
24
|
+
* `streamBroker.getStreamWithCodec` is the single demand-counted stream entry
|
|
25
|
+
* point: it rides the broker's ONE dial to each source camera rather than
|
|
26
|
+
* opening a second connection, and it is refcounted, so a source that also
|
|
27
|
+
* feeds a viewer is not dialled twice. A grid that dialled cameras itself would
|
|
28
|
+
* double every source's connection count and wake battery cameras nobody asked
|
|
29
|
+
* for.
|
|
30
|
+
*/
|
|
31
|
+
import type { FfmpegVideoEncoderId, IScopedLogger } from "@camstack/types";
|
|
32
|
+
import type { Readable } from "node:stream";
|
|
33
|
+
import type { GridLayout } from "./grid-filter-graph.js";
|
|
4
34
|
/** The logging surface this session needs — a structural subset of the injected logger. */
|
|
5
|
-
export type GridStreamLogger = Pick<IScopedLogger,
|
|
35
|
+
export type GridStreamLogger = Pick<IScopedLogger, "debug" | "info" | "warn" | "error">;
|
|
6
36
|
/** One acquired broker handle: what to dial, and what to release it by. */
|
|
7
37
|
export interface GridSourceHandle {
|
|
8
|
-
|
|
9
|
-
|
|
38
|
+
readonly url: string;
|
|
39
|
+
readonly pipelineKey: string;
|
|
10
40
|
}
|
|
11
41
|
/** The spawned ffmpeg, as this session uses it. */
|
|
12
42
|
export interface GridStreamChild {
|
|
13
|
-
|
|
14
|
-
|
|
43
|
+
readonly stdout: Readable;
|
|
44
|
+
stop(): Promise<void>;
|
|
15
45
|
}
|
|
16
46
|
/** Everything the composition needs that is not a per-run acquisition. */
|
|
17
47
|
export interface GridStreamPlan {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
48
|
+
readonly layout: GridLayout;
|
|
49
|
+
/** In ffmpeg INPUT ORDINAL order — `sourceDeviceIds[n]` is the graph's `[n:v]`. */
|
|
50
|
+
readonly sourceDeviceIds: readonly number[];
|
|
51
|
+
readonly encoder: FfmpegVideoEncoderId;
|
|
52
|
+
readonly decodeHwAccel: string | null;
|
|
53
|
+
readonly fps: number;
|
|
54
|
+
readonly bitrateKbps: number;
|
|
25
55
|
}
|
|
26
56
|
export interface GridStreamSessionDeps {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
57
|
+
readonly logger: GridStreamLogger;
|
|
58
|
+
readonly acquireSource: (deviceId: number) => Promise<GridSourceHandle>;
|
|
59
|
+
readonly releaseSource: (pipelineKey: string) => Promise<void>;
|
|
60
|
+
readonly startChild: (plan: GridStreamPlan, sources: readonly GridSourceHandle[]) => Promise<GridStreamChild>;
|
|
61
|
+
/** Teardown debounce. `0` ⇒ tear down the moment the last consumer leaves. */
|
|
62
|
+
readonly lingerMs?: number;
|
|
33
63
|
}
|
|
34
64
|
export interface GridStreamConsumer {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
65
|
+
readonly onData: (chunk: Buffer) => void;
|
|
66
|
+
/** Called once, with WHY, when this consumer's stream ends from our side. */
|
|
67
|
+
readonly onClose: (reason: string) => void;
|
|
38
68
|
}
|
|
39
69
|
export interface GridStreamHold {
|
|
40
|
-
|
|
70
|
+
close(): void;
|
|
41
71
|
}
|
|
42
72
|
export interface GridStreamSessionOptions {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
73
|
+
/** The COMPOSITE camera's device id — every log line here is tagged with it. */
|
|
74
|
+
readonly deviceId: number;
|
|
75
|
+
readonly deps: GridStreamSessionDeps;
|
|
76
|
+
/**
|
|
77
|
+
* The current composition, re-read on every cold start. `null` ⇒ the grid has
|
|
78
|
+
* no cells yet, which is the normal state of a freshly created grid.
|
|
79
|
+
*/
|
|
80
|
+
readonly resolvePlan: () => GridStreamPlan | null;
|
|
51
81
|
}
|
|
52
82
|
export declare class GridStreamSession {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
83
|
+
private readonly options;
|
|
84
|
+
private readonly consumers;
|
|
85
|
+
/**
|
|
86
|
+
* The FLV stream's describing bytes, and where each reader may start.
|
|
87
|
+
*
|
|
88
|
+
* Rebuilt with every cold start: a new child means a new header and a new
|
|
89
|
+
* sequence header, and handing a reader the previous child's would decode
|
|
90
|
+
* noise. See `flv-join.ts` for why FLV needs this and MPEG-TS did not.
|
|
91
|
+
*/
|
|
92
|
+
private join;
|
|
93
|
+
private running;
|
|
94
|
+
private starting;
|
|
95
|
+
private lingerTimer;
|
|
96
|
+
private teardown;
|
|
97
|
+
private disposed;
|
|
98
|
+
constructor(options: GridStreamSessionOptions);
|
|
99
|
+
private get logTags();
|
|
100
|
+
/** The COMPOSITE camera's device id — what every log line about this grid is tagged with. */
|
|
101
|
+
get deviceId(): number;
|
|
102
|
+
isRunning(): boolean;
|
|
103
|
+
consumerCount(): number;
|
|
104
|
+
/** Resolves once any in-flight start or teardown has finished. For tests and shutdown. */
|
|
105
|
+
settled(): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Attach a consumer, starting the composition if this is the first one.
|
|
108
|
+
*
|
|
109
|
+
* @throws when the grid has nothing to compose, or a source could not be
|
|
110
|
+
* acquired. Both are LOGGED before they are thrown: a branch that accepts a
|
|
111
|
+
* consumer and then produces no media is exactly the branch that reads as
|
|
112
|
+
* "nothing ever happened".
|
|
113
|
+
*/
|
|
114
|
+
open(consumer: GridStreamConsumer): Promise<GridStreamHold>;
|
|
115
|
+
/**
|
|
116
|
+
* Attach to a composition that is ALREADY running, or refuse.
|
|
117
|
+
*
|
|
118
|
+
* The whole difference from {@link open} is the refusal, and the refusal is
|
|
119
|
+
* the feature. A snapshot of a grid is a frame of the composition — which
|
|
120
|
+
* only exists while something is watching it — and the operator's rule is
|
|
121
|
+
* that producing a thumbnail must never be the reason N cameras get dialled.
|
|
122
|
+
* `open()` would start the composition, acquire every source, and on a
|
|
123
|
+
* battery camera that is a wake nobody asked for.
|
|
124
|
+
*
|
|
125
|
+
* `null` is a real answer: "there is no composition to take a frame from",
|
|
126
|
+
* which the caller turns into the stored last frame, or into nothing.
|
|
127
|
+
*/
|
|
128
|
+
openIfRunning(consumer: GridStreamConsumer): GridStreamHold | null;
|
|
129
|
+
/** Forget a consumer AND the reader holding bytes on its behalf. */
|
|
130
|
+
private dropConsumer;
|
|
131
|
+
/**
|
|
132
|
+
* The child ended on its own. Every consumer is told WHY — a stream that
|
|
133
|
+
* simply stops is indistinguishable from a stalled one at the far end.
|
|
134
|
+
*/
|
|
135
|
+
onChildEnded(reason: string): void;
|
|
136
|
+
dispose(): Promise<void>;
|
|
137
|
+
private ensureRunning;
|
|
138
|
+
private startCold;
|
|
139
|
+
private scheduleTeardownIfIdle;
|
|
140
|
+
private cancelLinger;
|
|
141
|
+
private stopNow;
|
|
142
|
+
private releaseAll;
|
|
113
143
|
}
|
|
@@ -1,50 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
2
|
+
* One source's decoded tiles, of which only the LATEST is ever wanted.
|
|
3
|
+
*
|
|
4
|
+
* ## Why dropping is the point, not a compromise
|
|
5
|
+
*
|
|
6
|
+
* ffmpeg's `overlay` consumes one frame per input per output frame, so an input
|
|
7
|
+
* that got ahead of another stays ahead for the life of the child — that is the
|
|
8
|
+
* tile gap. A canvas asks a different question: "what does this camera look
|
|
9
|
+
* like NOW". Everything behind the newest frame is not a backlog to work
|
|
10
|
+
* through, it is history, and dropping it is what keeps every tile at the same
|
|
11
|
+
* moment however unevenly their frames arrive.
|
|
12
|
+
*
|
|
13
|
+
* It is also the only bound on memory here. A decoder child that outruns the
|
|
14
|
+
* output tick — or a tick that stalls — would otherwise grow an unbounded queue
|
|
15
|
+
* of raw frames, and a raw frame is 345 KB at 640x360.
|
|
16
|
+
*
|
|
17
|
+
* ## The last frame is HELD
|
|
18
|
+
*
|
|
19
|
+
* A tick that finds nothing new redraws what was there. A tile must not blink
|
|
20
|
+
* because a source was 40 ms late, and a source that has genuinely stopped is a
|
|
21
|
+
* still picture — which is legible, and which the snapshot path already treats
|
|
22
|
+
* as the honest answer for a camera that is not sending.
|
|
23
|
+
*/
|
|
24
24
|
export declare class GridTileFeed {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
25
|
+
private readonly frameBytes;
|
|
26
|
+
private partial;
|
|
27
|
+
private newest;
|
|
28
|
+
private fresh;
|
|
29
|
+
constructor(frameBytes: number);
|
|
30
|
+
/** Feed bytes from the decoder. Any whole frames inside replace the newest. */
|
|
31
|
+
push(chunk: Buffer): void;
|
|
32
|
+
/** The newest whole frame, or `null` while none has arrived. */
|
|
33
|
+
latest(): Buffer | null;
|
|
34
|
+
/** Has a new frame arrived since the last {@link latest}? */
|
|
35
|
+
hasFresh(): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Forget the half frame, keep the picture.
|
|
38
|
+
*
|
|
39
|
+
* Raw video has no framing: the feed cuts on a fixed length, so bytes from a
|
|
40
|
+
* NEW decoder concatenated onto a partial frame from the old one would be
|
|
41
|
+
* misaligned for ever — every frame after it sheared, with nothing to
|
|
42
|
+
* re-sync on. Called whenever a tile's decoder is replaced.
|
|
43
|
+
*
|
|
44
|
+
* The newest frame is kept deliberately: the cell holds its last picture
|
|
45
|
+
* while its decoder comes back, instead of blinking to black.
|
|
46
|
+
*/
|
|
47
|
+
resetPartial(): void;
|
|
48
|
+
/** For the bound in the spec: one frame plus at most a partial one. */
|
|
49
|
+
bufferedBytes(): number;
|
|
50
50
|
}
|