@camstack/types 0.1.14 → 0.1.16
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/base-addon.d.ts +262 -0
- package/dist/addon/base-addon.d.ts.map +1 -0
- package/dist/auth-records-BDg37fy9.mjs +8297 -0
- package/dist/auth-records-BDg37fy9.mjs.map +1 -0
- package/dist/auth-records-D5ZNaUos.js +8296 -0
- package/dist/auth-records-D5ZNaUos.js.map +1 -0
- package/dist/capabilities/accessories.cap.d.ts +42 -0
- package/dist/capabilities/accessories.cap.d.ts.map +1 -0
- package/dist/capabilities/addon-pages-source.cap.d.ts +41 -0
- package/dist/capabilities/addon-pages-source.cap.d.ts.map +1 -0
- package/dist/capabilities/addon-pages.cap.d.ts +36 -0
- package/dist/capabilities/addon-pages.cap.d.ts.map +1 -0
- package/dist/capabilities/addon-routes.cap.d.ts +22 -0
- package/dist/capabilities/addon-routes.cap.d.ts.map +1 -0
- package/dist/capabilities/addon-settings.cap.d.ts +170 -0
- package/dist/capabilities/addon-settings.cap.d.ts.map +1 -0
- package/dist/capabilities/addon-widgets-source.cap.d.ts +103 -0
- package/dist/capabilities/addon-widgets-source.cap.d.ts.map +1 -0
- package/dist/capabilities/addon-widgets.cap.d.ts +98 -0
- package/dist/capabilities/addon-widgets.cap.d.ts.map +1 -0
- package/dist/capabilities/addons.cap.d.ts +356 -0
- package/dist/capabilities/addons.cap.d.ts.map +1 -0
- package/dist/capabilities/admin-ui.cap.d.ts +14 -0
- package/dist/capabilities/admin-ui.cap.d.ts.map +1 -0
- package/dist/capabilities/advanced-notifier.cap.d.ts +60 -0
- package/dist/capabilities/advanced-notifier.cap.d.ts.map +1 -0
- package/dist/capabilities/alerts.cap.d.ts +164 -0
- package/dist/capabilities/alerts.cap.d.ts.map +1 -0
- package/dist/capabilities/audio-analysis.cap.d.ts +46 -0
- package/dist/capabilities/audio-analysis.cap.d.ts.map +1 -0
- package/dist/capabilities/audio-analyzer.cap.d.ts +148 -0
- package/dist/capabilities/audio-analyzer.cap.d.ts.map +1 -0
- package/dist/capabilities/audio-codec.cap.d.ts +202 -0
- package/dist/capabilities/audio-codec.cap.d.ts.map +1 -0
- package/dist/capabilities/audio-metrics.cap.d.ts +174 -0
- package/dist/capabilities/audio-metrics.cap.d.ts.map +1 -0
- package/dist/capabilities/auth-provider.cap.d.ts +49 -0
- package/dist/capabilities/auth-provider.cap.d.ts.map +1 -0
- package/dist/capabilities/authentication.cap.d.ts +83 -0
- package/dist/capabilities/authentication.cap.d.ts.map +1 -0
- package/dist/capabilities/backup.cap.d.ts +269 -0
- package/dist/capabilities/backup.cap.d.ts.map +1 -0
- package/dist/capabilities/battery.cap.d.ts +85 -0
- package/dist/capabilities/battery.cap.d.ts.map +1 -0
- package/dist/capabilities/brightness.cap.d.ts +64 -0
- package/dist/capabilities/brightness.cap.d.ts.map +1 -0
- package/dist/capabilities/camera-credentials.cap.d.ts +102 -0
- package/dist/capabilities/camera-credentials.cap.d.ts.map +1 -0
- package/dist/capabilities/camera-streams.cap.d.ts +214 -0
- package/dist/capabilities/camera-streams.cap.d.ts.map +1 -0
- package/dist/capabilities/capability-definition.d.ts +474 -0
- package/dist/capabilities/capability-definition.d.ts.map +1 -0
- package/dist/capabilities/custom-actions.d.ts +47 -0
- package/dist/capabilities/custom-actions.d.ts.map +1 -0
- package/dist/capabilities/decoder.cap.d.ts +173 -0
- package/dist/capabilities/decoder.cap.d.ts.map +1 -0
- package/dist/capabilities/detection-pipeline.cap.d.ts +34 -0
- package/dist/capabilities/detection-pipeline.cap.d.ts.map +1 -0
- package/dist/capabilities/device-discovery.cap.d.ts +247 -0
- package/dist/capabilities/device-discovery.cap.d.ts.map +1 -0
- package/dist/capabilities/device-manager.cap.d.ts +709 -0
- package/dist/capabilities/device-manager.cap.d.ts.map +1 -0
- package/dist/capabilities/device-ops.cap.d.ts +87 -0
- package/dist/capabilities/device-ops.cap.d.ts.map +1 -0
- package/dist/capabilities/device-provider.cap.d.ts +151 -0
- package/dist/capabilities/device-provider.cap.d.ts.map +1 -0
- package/dist/capabilities/device-state.cap.d.ts +97 -0
- package/dist/capabilities/device-state.cap.d.ts.map +1 -0
- package/dist/capabilities/device-status.cap.d.ts +54 -0
- package/dist/capabilities/device-status.cap.d.ts.map +1 -0
- package/dist/capabilities/doorbell.cap.d.ts +62 -0
- package/dist/capabilities/doorbell.cap.d.ts.map +1 -0
- package/dist/capabilities/embedding-encoder.cap.d.ts +41 -0
- package/dist/capabilities/embedding-encoder.cap.d.ts.map +1 -0
- package/dist/capabilities/events.cap.d.ts +48 -0
- package/dist/capabilities/events.cap.d.ts.map +1 -0
- package/dist/capabilities/feature-probe.cap.d.ts +79 -0
- package/dist/capabilities/feature-probe.cap.d.ts.map +1 -0
- package/dist/capabilities/index.d.ts +191 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/integrations.cap.d.ts +182 -0
- package/dist/capabilities/integrations.cap.d.ts.map +1 -0
- package/dist/capabilities/intercom.cap.d.ts +108 -0
- package/dist/capabilities/intercom.cap.d.ts.map +1 -0
- package/dist/capabilities/local-network.cap.d.ts +216 -0
- package/dist/capabilities/local-network.cap.d.ts.map +1 -0
- package/dist/capabilities/log-destination.cap.d.ts +70 -0
- package/dist/capabilities/log-destination.cap.d.ts.map +1 -0
- package/dist/capabilities/mesh-network.cap.d.ts +160 -0
- package/dist/capabilities/mesh-network.cap.d.ts.map +1 -0
- package/dist/capabilities/mesh-orchestrator.cap.d.ts +96 -0
- package/dist/capabilities/mesh-orchestrator.cap.d.ts.map +1 -0
- package/dist/capabilities/metrics-provider.cap.d.ts +522 -0
- package/dist/capabilities/metrics-provider.cap.d.ts.map +1 -0
- package/dist/capabilities/motion-detection.cap.d.ts +107 -0
- package/dist/capabilities/motion-detection.cap.d.ts.map +1 -0
- package/dist/capabilities/motion-trigger.cap.d.ts +78 -0
- package/dist/capabilities/motion-trigger.cap.d.ts.map +1 -0
- package/dist/capabilities/motion.cap.d.ts +122 -0
- package/dist/capabilities/motion.cap.d.ts.map +1 -0
- package/dist/capabilities/native-object-detection.cap.d.ts +127 -0
- package/dist/capabilities/native-object-detection.cap.d.ts.map +1 -0
- package/dist/capabilities/network-access.cap.d.ts +67 -0
- package/dist/capabilities/network-access.cap.d.ts.map +1 -0
- package/dist/capabilities/network-quality.cap.d.ts +95 -0
- package/dist/capabilities/network-quality.cap.d.ts.map +1 -0
- package/dist/capabilities/nodes.cap.d.ts +200 -0
- package/dist/capabilities/nodes.cap.d.ts.map +1 -0
- package/dist/capabilities/notification-output.cap.d.ts +44 -0
- package/dist/capabilities/notification-output.cap.d.ts.map +1 -0
- package/dist/capabilities/osd.cap.d.ts +236 -0
- package/dist/capabilities/osd.cap.d.ts.map +1 -0
- package/dist/capabilities/pipeline-analytics.cap.d.ts +501 -0
- package/dist/capabilities/pipeline-analytics.cap.d.ts.map +1 -0
- package/dist/capabilities/pipeline-executor.cap.d.ts +922 -0
- package/dist/capabilities/pipeline-executor.cap.d.ts.map +1 -0
- package/dist/capabilities/pipeline-orchestrator.cap.d.ts +793 -0
- package/dist/capabilities/pipeline-orchestrator.cap.d.ts.map +1 -0
- package/dist/capabilities/pipeline-runner.cap.d.ts +393 -0
- package/dist/capabilities/pipeline-runner.cap.d.ts.map +1 -0
- package/dist/capabilities/platform-probe.cap.d.ts +168 -0
- package/dist/capabilities/platform-probe.cap.d.ts.map +1 -0
- package/dist/capabilities/ptz-autotrack.cap.d.ts +188 -0
- package/dist/capabilities/ptz-autotrack.cap.d.ts.map +1 -0
- package/dist/capabilities/ptz.cap.d.ts +80 -0
- package/dist/capabilities/ptz.cap.d.ts.map +1 -0
- package/dist/capabilities/reboot.cap.d.ts +32 -0
- package/dist/capabilities/reboot.cap.d.ts.map +1 -0
- package/dist/capabilities/recording-engine.cap.d.ts +477 -0
- package/dist/capabilities/recording-engine.cap.d.ts.map +1 -0
- package/dist/capabilities/recording.cap.d.ts +43 -0
- package/dist/capabilities/recording.cap.d.ts.map +1 -0
- package/dist/capabilities/remote-access.cap.d.ts +103 -0
- package/dist/capabilities/remote-access.cap.d.ts.map +1 -0
- package/dist/capabilities/restreamer.cap.d.ts +51 -0
- package/dist/capabilities/restreamer.cap.d.ts.map +1 -0
- package/dist/capabilities/schemas/detection-shared.d.ts +63 -0
- package/dist/capabilities/schemas/detection-shared.d.ts.map +1 -0
- package/dist/capabilities/schemas/orchestrator-metrics.d.ts +44 -0
- package/dist/capabilities/schemas/orchestrator-metrics.d.ts.map +1 -0
- package/dist/capabilities/schemas/streaming-shared.d.ts +177 -0
- package/dist/capabilities/schemas/streaming-shared.d.ts.map +1 -0
- package/dist/capabilities/schemas/zone-rule.d.ts +74 -0
- package/dist/capabilities/schemas/zone-rule.d.ts.map +1 -0
- package/dist/capabilities/settings-store.cap.d.ts +198 -0
- package/dist/capabilities/settings-store.cap.d.ts.map +1 -0
- package/dist/capabilities/snapshot-provider.cap.d.ts +40 -0
- package/dist/capabilities/snapshot-provider.cap.d.ts.map +1 -0
- package/dist/capabilities/snapshot.cap.d.ts +78 -0
- package/dist/capabilities/snapshot.cap.d.ts.map +1 -0
- package/dist/capabilities/storage-provider.cap.d.ts +432 -0
- package/dist/capabilities/storage-provider.cap.d.ts.map +1 -0
- package/dist/capabilities/storage.cap.d.ts +367 -0
- package/dist/capabilities/storage.cap.d.ts.map +1 -0
- package/dist/capabilities/stream-broker.cap.d.ts +416 -0
- package/dist/capabilities/stream-broker.cap.d.ts.map +1 -0
- package/dist/capabilities/streaming-engine.cap.d.ts +58 -0
- package/dist/capabilities/streaming-engine.cap.d.ts.map +1 -0
- package/dist/capabilities/switch.cap.d.ts +66 -0
- package/dist/capabilities/switch.cap.d.ts.map +1 -0
- package/dist/capabilities/system.cap.d.ts +86 -0
- package/dist/capabilities/system.cap.d.ts.map +1 -0
- package/dist/capabilities/toast.cap.d.ts +56 -0
- package/dist/capabilities/toast.cap.d.ts.map +1 -0
- package/dist/capabilities/turn-orchestrator.cap.d.ts +74 -0
- package/dist/capabilities/turn-orchestrator.cap.d.ts.map +1 -0
- package/dist/capabilities/turn-provider.cap.d.ts +43 -0
- package/dist/capabilities/turn-provider.cap.d.ts.map +1 -0
- package/dist/capabilities/user-management.cap.d.ts +378 -0
- package/dist/capabilities/user-management.cap.d.ts.map +1 -0
- package/dist/capabilities/webrtc-session.cap.d.ts +181 -0
- package/dist/capabilities/webrtc-session.cap.d.ts.map +1 -0
- package/dist/capabilities/webrtc.cap.d.ts +72 -0
- package/dist/capabilities/webrtc.cap.d.ts.map +1 -0
- package/dist/capabilities/zone-analytics.cap.d.ts +213 -0
- package/dist/capabilities/zone-analytics.cap.d.ts.map +1 -0
- package/dist/capabilities/zone-rules.cap.d.ts +129 -0
- package/dist/capabilities/zone-rules.cap.d.ts.map +1 -0
- package/dist/capabilities/zones.cap.d.ts +151 -0
- package/dist/capabilities/zones.cap.d.ts.map +1 -0
- package/dist/catalogs/audio-classmap.d.ts +16 -0
- package/dist/catalogs/audio-classmap.d.ts.map +1 -0
- package/dist/catalogs/coco-classmap.d.ts.map +1 -1
- package/dist/constants.d.ts +50 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/deps/binary-downloader.d.ts +41 -0
- package/dist/deps/binary-downloader.d.ts.map +1 -0
- package/dist/deps/ffmpeg-downloader.d.ts +13 -0
- package/dist/deps/ffmpeg-downloader.d.ts.map +1 -0
- package/dist/deps/index.d.ts +4 -0
- package/dist/deps/index.d.ts.map +1 -0
- package/dist/deps/python-downloader.d.ts +34 -0
- package/dist/deps/python-downloader.d.ts.map +1 -0
- package/dist/device/accessory.d.ts +62 -0
- package/dist/device/accessory.d.ts.map +1 -0
- package/dist/device/base-device-provider.d.ts +178 -0
- package/dist/device/base-device-provider.d.ts.map +1 -0
- package/dist/device/base-device.d.ts +287 -0
- package/dist/device/base-device.d.ts.map +1 -0
- package/dist/device/camera-device.d.ts +49 -0
- package/dist/device/camera-device.d.ts.map +1 -0
- package/dist/device/device-binding.d.ts +23 -0
- package/dist/device/device-binding.d.ts.map +1 -0
- package/dist/device/device-config.d.ts +65 -0
- package/dist/device/device-config.d.ts.map +1 -0
- package/dist/device/device-context.d.ts +256 -0
- package/dist/device/device-context.d.ts.map +1 -0
- package/dist/device/device-management.d.ts +118 -0
- package/dist/device/device-management.d.ts.map +1 -0
- package/dist/device/device-profile.d.ts +161 -0
- package/dist/device/device-profile.d.ts.map +1 -0
- package/dist/device/device-runtime-state.d.ts +124 -0
- package/dist/device/device-runtime-state.d.ts.map +1 -0
- package/dist/device/device-state-handle.d.ts +161 -0
- package/dist/device/device-state-handle.d.ts.map +1 -0
- package/dist/device/device-type.d.ts +68 -0
- package/dist/device/device-type.d.ts.map +1 -0
- package/dist/device/device.d.ts +87 -0
- package/dist/device/device.d.ts.map +1 -0
- package/dist/device/features.d.ts +29 -0
- package/dist/device/features.d.ts.map +1 -0
- package/dist/device/index.d.ts +20 -0
- package/dist/device/index.d.ts.map +1 -0
- package/dist/device/runtime-state-helpers.d.ts +69 -0
- package/dist/device/runtime-state-helpers.d.ts.map +1 -0
- package/dist/device/system-mirror.d.ts +318 -0
- package/dist/device/system-mirror.d.ts.map +1 -0
- package/dist/device/zod-to-config-ui.d.ts +23 -0
- package/dist/device/zod-to-config-ui.d.ts.map +1 -0
- package/dist/disposer-chain.d.ts +32 -0
- package/dist/disposer-chain.d.ts.map +1 -0
- package/dist/enums/event-category.d.ts +361 -0
- package/dist/enums/event-category.d.ts.map +1 -0
- package/dist/enums/event-source-type.d.ts +8 -0
- package/dist/enums/event-source-type.d.ts.map +1 -0
- package/dist/enums/index.d.ts +3 -0
- package/dist/enums/index.d.ts.map +1 -0
- package/dist/generated/addon-api.d.ts +14604 -3217
- package/dist/generated/addon-api.d.ts.map +1 -1
- package/dist/generated/cap-status-types.d.ts +51 -0
- package/dist/generated/cap-status-types.d.ts.map +1 -0
- package/dist/generated/capability-router-map.d.ts +278 -0
- package/dist/generated/capability-router-map.d.ts.map +1 -0
- package/dist/generated/device-local-state.d.ts +82 -0
- package/dist/generated/device-local-state.d.ts.map +1 -0
- package/dist/generated/device-proxy.d.ts +146 -0
- package/dist/generated/device-proxy.d.ts.map +1 -0
- package/dist/generated/system-proxy.d.ts +92 -0
- package/dist/generated/system-proxy.d.ts.map +1 -0
- package/dist/helpers/bind-addon-actions.d.ts +19 -0
- package/dist/helpers/bind-addon-actions.d.ts.map +1 -0
- package/dist/index.d.ts +91 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4843 -477
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4832 -415
- package/dist/index.mjs.map +1 -1
- package/dist/interfaces/addon.d.ts +760 -132
- package/dist/interfaces/addon.d.ts.map +1 -1
- package/dist/interfaces/advanced-notifier.d.ts +3 -2
- package/dist/interfaces/advanced-notifier.d.ts.map +1 -1
- package/dist/interfaces/agent-protocol.d.ts +17 -173
- package/dist/interfaces/agent-protocol.d.ts.map +1 -1
- package/dist/interfaces/agent.d.ts +61 -0
- package/dist/interfaces/agent.d.ts.map +1 -1
- package/dist/interfaces/alerts.d.ts +14 -0
- package/dist/interfaces/alerts.d.ts.map +1 -0
- package/dist/interfaces/analysis-persistence.d.ts +37 -19
- package/dist/interfaces/analysis-persistence.d.ts.map +1 -1
- package/dist/interfaces/analysis.d.ts +33 -4
- package/dist/interfaces/analysis.d.ts.map +1 -1
- package/dist/interfaces/api-responses.d.ts +124 -0
- package/dist/interfaces/api-responses.d.ts.map +1 -0
- package/dist/interfaces/api-shared.d.ts +5 -79
- package/dist/interfaces/api-shared.d.ts.map +1 -1
- package/dist/interfaces/audio-analyzer.d.ts +49 -0
- package/dist/interfaces/audio-analyzer.d.ts.map +1 -0
- package/dist/interfaces/audio-codec.d.ts +123 -0
- package/dist/interfaces/audio-codec.d.ts.map +1 -0
- package/dist/interfaces/audio-inference-engine.d.ts +19 -0
- package/dist/interfaces/audio-inference-engine.d.ts.map +1 -0
- package/dist/interfaces/auth-provider.d.ts.map +1 -1
- package/dist/interfaces/auth.d.ts +4 -25
- package/dist/interfaces/auth.d.ts.map +1 -1
- package/dist/interfaces/camera-pipeline.d.ts +7 -20
- package/dist/interfaces/camera-pipeline.d.ts.map +1 -1
- package/dist/interfaces/capability.d.ts +171 -24
- package/dist/interfaces/capability.d.ts.map +1 -1
- package/dist/interfaces/config-ui.d.ts +746 -24
- package/dist/interfaces/config-ui.d.ts.map +1 -1
- package/dist/interfaces/context.d.ts +9 -4
- package/dist/interfaces/context.d.ts.map +1 -1
- package/dist/interfaces/decoder.d.ts +38 -3
- package/dist/interfaces/decoder.d.ts.map +1 -1
- package/dist/interfaces/detection-addon.d.ts +6 -6
- package/dist/interfaces/detection-addon.d.ts.map +1 -1
- package/dist/interfaces/device-capabilities/camera.d.ts +95 -18
- package/dist/interfaces/device-capabilities/camera.d.ts.map +1 -1
- package/dist/interfaces/device-capabilities/index.d.ts +0 -13
- package/dist/interfaces/device-capabilities/index.d.ts.map +1 -1
- package/dist/interfaces/device-provider.d.ts +18 -16
- package/dist/interfaces/device-provider.d.ts.map +1 -1
- package/dist/interfaces/device.d.ts +4 -21
- package/dist/interfaces/device.d.ts.map +1 -1
- package/dist/interfaces/embedding-encoder.d.ts +19 -0
- package/dist/interfaces/embedding-encoder.d.ts.map +1 -0
- package/dist/interfaces/engine-slots.d.ts +10 -0
- package/dist/interfaces/engine-slots.d.ts.map +1 -0
- package/dist/interfaces/event-bus.d.ts +710 -26
- package/dist/interfaces/event-bus.d.ts.map +1 -1
- package/dist/interfaces/inference-capabilities.d.ts +0 -17
- package/dist/interfaces/inference-capabilities.d.ts.map +1 -1
- package/dist/interfaces/inference-engine.d.ts +30 -10
- package/dist/interfaces/inference-engine.d.ts.map +1 -1
- package/dist/interfaces/integration-registry.d.ts +20 -20
- package/dist/interfaces/integration-registry.d.ts.map +1 -1
- package/dist/interfaces/kernel-abstractions.d.ts +83 -0
- package/dist/interfaces/kernel-abstractions.d.ts.map +1 -0
- package/dist/interfaces/logging.d.ts +89 -8
- package/dist/interfaces/logging.d.ts.map +1 -1
- package/dist/interfaces/metrics-provider.d.ts +17 -0
- package/dist/interfaces/metrics-provider.d.ts.map +1 -0
- package/dist/interfaces/network-quality.d.ts +4 -4
- package/dist/interfaces/network.d.ts +0 -16
- package/dist/interfaces/network.d.ts.map +1 -1
- package/dist/interfaces/notification.d.ts +1 -1
- package/dist/interfaces/pipeline-executor-capability.d.ts +200 -0
- package/dist/interfaces/pipeline-executor-capability.d.ts.map +1 -0
- package/dist/interfaces/pipeline-orchestrator-capability.d.ts +165 -0
- package/dist/interfaces/pipeline-orchestrator-capability.d.ts.map +1 -0
- package/dist/interfaces/pipeline-runner-capability.d.ts +147 -0
- package/dist/interfaces/pipeline-runner-capability.d.ts.map +1 -0
- package/dist/interfaces/pipeline-runner.d.ts +18 -2
- package/dist/interfaces/pipeline-runner.d.ts.map +1 -1
- package/dist/interfaces/platform.d.ts +1 -1
- package/dist/interfaces/platform.d.ts.map +1 -1
- package/dist/interfaces/queryable.d.ts +26 -0
- package/dist/interfaces/queryable.d.ts.map +1 -0
- package/dist/interfaces/raw-tensor-engine.d.ts +16 -0
- package/dist/interfaces/raw-tensor-engine.d.ts.map +1 -0
- package/dist/interfaces/readiness.d.ts +101 -0
- package/dist/interfaces/readiness.d.ts.map +1 -0
- package/dist/interfaces/repl.d.ts +1 -1
- package/dist/interfaces/restreamer.d.ts +3 -3
- package/dist/interfaces/scoped-token.d.ts +1 -21
- package/dist/interfaces/scoped-token.d.ts.map +1 -1
- package/dist/interfaces/server-analysis.d.ts +30 -87
- package/dist/interfaces/server-analysis.d.ts.map +1 -1
- package/dist/interfaces/storage-location.d.ts +120 -0
- package/dist/interfaces/storage-location.d.ts.map +1 -0
- package/dist/interfaces/storage.d.ts +124 -50
- package/dist/interfaces/storage.d.ts.map +1 -1
- package/dist/interfaces/stream-broker.d.ts +285 -17
- package/dist/interfaces/stream-broker.d.ts.map +1 -1
- package/dist/interfaces/webrtc-provider.d.ts +24 -0
- package/dist/interfaces/webrtc-provider.d.ts.map +1 -1
- package/dist/node.d.ts +6 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +481 -0
- package/dist/node.js.map +1 -0
- package/dist/node.mjs +443 -0
- package/dist/node.mjs.map +1 -0
- package/dist/readiness/index.d.ts +3 -0
- package/dist/readiness/index.d.ts.map +1 -0
- package/dist/readiness/readiness-registry.d.ts +183 -0
- package/dist/readiness/readiness-registry.d.ts.map +1 -0
- package/dist/schemas/auth-records.d.ts +81 -0
- package/dist/schemas/auth-records.d.ts.map +1 -0
- package/dist/storage/filesystem-storage-provider.d.ts +37 -0
- package/dist/storage/filesystem-storage-provider.d.ts.map +1 -0
- package/dist/types/agent-pipeline-settings.d.ts +94 -0
- package/dist/types/agent-pipeline-settings.d.ts.map +1 -0
- package/dist/types/camera-pipeline.d.ts +58 -0
- package/dist/types/camera-pipeline.d.ts.map +1 -0
- package/dist/types/detection.d.ts +195 -38
- package/dist/types/detection.d.ts.map +1 -1
- package/dist/types/device-type.d.ts +4 -0
- package/dist/types/device-type.d.ts.map +1 -1
- package/dist/types/engine-output.d.ts +24 -0
- package/dist/types/engine-output.d.ts.map +1 -0
- package/dist/types/io.d.ts +57 -3
- package/dist/types/io.d.ts.map +1 -1
- package/dist/types/models.d.ts +3 -1
- package/dist/types/models.d.ts.map +1 -1
- package/dist/types/pipeline-schema.d.ts +15 -72
- package/dist/types/pipeline-schema.d.ts.map +1 -1
- package/dist/types/pipeline-step.d.ts +201 -0
- package/dist/types/pipeline-step.d.ts.map +1 -0
- package/dist/types/pipeline.d.ts +24 -1
- package/dist/types/pipeline.d.ts.map +1 -1
- package/dist/utils/element-config-store.d.ts +29 -0
- package/dist/utils/element-config-store.d.ts.map +1 -0
- package/dist/utils/err-msg.d.ts +7 -0
- package/dist/utils/err-msg.d.ts.map +1 -0
- package/dist/utils/json-safe.d.ts +33 -0
- package/dist/utils/json-safe.d.ts.map +1 -0
- package/dist/utils/mask-url.d.ts +10 -0
- package/dist/utils/mask-url.d.ts.map +1 -0
- package/dist/utils/ring-buffer.d.ts +16 -0
- package/dist/utils/ring-buffer.d.ts.map +1 -0
- package/dist/utils/run-inference-step.d.ts +26 -0
- package/dist/utils/run-inference-step.d.ts.map +1 -0
- package/dist/utils/runtime-mapping.d.ts +88 -0
- package/dist/utils/runtime-mapping.d.ts.map +1 -0
- package/dist/utils/zone-rule-eval.d.ts +47 -0
- package/dist/utils/zone-rule-eval.d.ts.map +1 -0
- package/package.json +11 -2
- package/dist/__tests__/addon-capability-provider.test.d.ts +0 -2
- package/dist/__tests__/addon-capability-provider.test.d.ts.map +0 -1
- package/dist/__tests__/addon-declaration.test.d.ts +0 -2
- package/dist/__tests__/addon-declaration.test.d.ts.map +0 -1
- package/dist/__tests__/capability.test.d.ts +0 -2
- package/dist/__tests__/capability.test.d.ts.map +0 -1
- package/dist/interfaces/addon-i18n.d.ts +0 -41
- package/dist/interfaces/addon-i18n.d.ts.map +0 -1
- package/dist/interfaces/classifier.d.ts +0 -8
- package/dist/interfaces/classifier.d.ts.map +0 -1
- package/dist/interfaces/cropper.d.ts +0 -8
- package/dist/interfaces/cropper.d.ts.map +0 -1
- package/dist/interfaces/detector.d.ts +0 -8
- package/dist/interfaces/detector.d.ts.map +0 -1
- package/dist/interfaces/device-capabilities/accessory.d.ts +0 -14
- package/dist/interfaces/device-capabilities/accessory.d.ts.map +0 -1
- package/dist/interfaces/device-capabilities/audio-detector.d.ts +0 -12
- package/dist/interfaces/device-capabilities/audio-detector.d.ts.map +0 -1
- package/dist/interfaces/device-capabilities/doorbell.d.ts +0 -10
- package/dist/interfaces/device-capabilities/doorbell.d.ts.map +0 -1
- package/dist/interfaces/device-capabilities/events.d.ts +0 -47
- package/dist/interfaces/device-capabilities/events.d.ts.map +0 -1
- package/dist/interfaces/device-capabilities/motion-sensor.d.ts +0 -7
- package/dist/interfaces/device-capabilities/motion-sensor.d.ts.map +0 -1
- package/dist/interfaces/device-capabilities/native-detection.d.ts +0 -14
- package/dist/interfaces/device-capabilities/native-detection.d.ts.map +0 -1
- package/dist/interfaces/device-capabilities/object-detector.d.ts +0 -59
- package/dist/interfaces/device-capabilities/object-detector.d.ts.map +0 -1
- package/dist/interfaces/device-capabilities/pan-tilt-zoom.d.ts +0 -29
- package/dist/interfaces/device-capabilities/pan-tilt-zoom.d.ts.map +0 -1
- package/dist/interfaces/device-capabilities/recording.d.ts +0 -18
- package/dist/interfaces/device-capabilities/recording.d.ts.map +0 -1
- package/dist/interfaces/device-capabilities/siren.d.ts +0 -8
- package/dist/interfaces/device-capabilities/siren.d.ts.map +0 -1
- package/dist/interfaces/device-capabilities/status-light.d.ts +0 -7
- package/dist/interfaces/device-capabilities/status-light.d.ts.map +0 -1
- package/dist/interfaces/device-capabilities/switch.d.ts +0 -8
- package/dist/interfaces/device-capabilities/switch.d.ts.map +0 -1
- package/dist/interfaces/device-capabilities/two-way-audio.d.ts +0 -8
- package/dist/interfaces/device-capabilities/two-way-audio.d.ts.map +0 -1
- package/dist/interfaces/device-capability.d.ts +0 -14
- package/dist/interfaces/device-capability.d.ts.map +0 -1
- package/dist/interfaces/model-catalog.d.ts +0 -25
- package/dist/interfaces/model-catalog.d.ts.map +0 -1
- package/dist/interfaces/refiner.d.ts +0 -8
- package/dist/interfaces/refiner.d.ts.map +0 -1
- package/dist/interfaces/repositories.d.ts +0 -20
- package/dist/interfaces/repositories.d.ts.map +0 -1
- package/dist/interfaces/scene-intelligence.d.ts +0 -21
- package/dist/interfaces/scene-intelligence.d.ts.map +0 -1
- package/dist/interfaces/storage-backend.d.ts +0 -27
- package/dist/interfaces/storage-backend.d.ts.map +0 -1
- package/dist/interfaces/worker-protocol.d.ts +0 -110
- package/dist/interfaces/worker-protocol.d.ts.map +0 -1
- package/dist/schemas/system-settings-schemas.d.ts +0 -27
- package/dist/schemas/system-settings-schemas.d.ts.map +0 -1
- package/dist/types/benchmark.d.ts +0 -112
- package/dist/types/benchmark.d.ts.map +0 -1
- package/dist/types/zones.d.ts +0 -48
- package/dist/types/zones.d.ts.map +0 -1
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SystemMirror — system-wide reactive view of every device, like
|
|
3
|
+
* Scrypted's `systemManager.getDeviceById`. One warm-boot fetches the
|
|
4
|
+
* full bindings + runtime-state snapshot + device metadata; live
|
|
5
|
+
* `device.state-changed`, `capability.binding-changed`,
|
|
6
|
+
* `device.registered`, `device.unregistered`, and `device.updated`
|
|
7
|
+
* events keep the in-memory mirrors fresh. Subsequent
|
|
8
|
+
* `getDeviceById(id)` calls are sync.
|
|
9
|
+
*
|
|
10
|
+
* Renamed from `SystemManager` (and its file `system-manager.ts`) when
|
|
11
|
+
* the SDK introduced a top-level `System` facade. The cluster-wide
|
|
12
|
+
* mirror is one of `System`'s collaborators — calling it a "mirror"
|
|
13
|
+
* disambiguates from the new public class. The old export name is
|
|
14
|
+
* still available as a deprecated alias from this file.
|
|
15
|
+
*
|
|
16
|
+
* Cap-agnostic by construction: the state mirror is `Map<deviceId,
|
|
17
|
+
* Map<capName, slice>>` and the proxies are produced by the
|
|
18
|
+
* codegen'd `createDeviceProxy` we already use everywhere — so a
|
|
19
|
+
* brand-new cap with `runtimeState:` lights up here without a single
|
|
20
|
+
* line of additional code.
|
|
21
|
+
*
|
|
22
|
+
* Two transports today, same shape:
|
|
23
|
+
* - tRPC client (browser, Electron, SDK consumers).
|
|
24
|
+
* - In-process AddonApi (server REPL, addons that want a global view).
|
|
25
|
+
*
|
|
26
|
+
* Boot:
|
|
27
|
+
*
|
|
28
|
+
* const sm = new SystemMirror(api)
|
|
29
|
+
* await sm.init()
|
|
30
|
+
*
|
|
31
|
+
* const dev = sm.getDeviceById(8) // sync
|
|
32
|
+
* dev?.state.battery.value?.sleeping // sync read from mirror
|
|
33
|
+
* await dev?.snapshot?.getSnapshot({...}) // method dispatch via cap-router
|
|
34
|
+
*
|
|
35
|
+
* sm.query({ addonId: 'reolink', online: true })
|
|
36
|
+
* sm.whereState('battery', s => s.percentage < 20)
|
|
37
|
+
* sm.listenCap('motion', (id, slice) => …)
|
|
38
|
+
* await sm.waitForState(8, 'battery', s => !s.sleeping, 30_000)
|
|
39
|
+
*
|
|
40
|
+
* Lifecycle: caller is responsible for `dispose()` when done — closes
|
|
41
|
+
* the live event subscriptions.
|
|
42
|
+
*/
|
|
43
|
+
import type { DeviceBinding } from './device-binding.js';
|
|
44
|
+
import { type DeviceProxy } from '../generated/device-proxy.js';
|
|
45
|
+
import type { DeviceInfo } from '../capabilities/device-manager.cap.js';
|
|
46
|
+
import { DeviceType } from './device-type.js';
|
|
47
|
+
import { type SliceHandleApi } from './device-state-handle.js';
|
|
48
|
+
/**
|
|
49
|
+
* Minimal subset of `AddonApi` the SystemMirror needs.
|
|
50
|
+
*/
|
|
51
|
+
export interface SystemMirrorApi extends SliceHandleApi {
|
|
52
|
+
readonly deviceManager: {
|
|
53
|
+
readonly getAllBindings: {
|
|
54
|
+
query(input: Record<string, never>): Promise<ReadonlyArray<DeviceBinding>>;
|
|
55
|
+
};
|
|
56
|
+
readonly listAll: {
|
|
57
|
+
query(input: {
|
|
58
|
+
addonId?: string;
|
|
59
|
+
}): Promise<ReadonlyArray<DeviceInfo>>;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
readonly deviceState: SliceHandleApi['deviceState'] & {
|
|
63
|
+
readonly getAllSnapshots: {
|
|
64
|
+
query(input: Record<string, never>): Promise<Record<string, Record<string, Record<string, unknown>>>>;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export type SystemMirrorListener = (deviceId: number, capName: string, slice: Record<string, unknown> | undefined) => void;
|
|
69
|
+
export type DeviceCapListener = (deviceId: number, slice: Record<string, unknown> | undefined) => void;
|
|
70
|
+
export type DeviceLifecycleListener = (deviceId: number, info: DeviceInfo | null) => void;
|
|
71
|
+
/**
|
|
72
|
+
* Match shape — `string` is exact match, `RegExp` is regex match,
|
|
73
|
+
* `{ contains }` is case-insensitive substring, `{ exact }` is the
|
|
74
|
+
* verbose form of plain string. Useful for `query({ name: ... })`
|
|
75
|
+
* where the same field accepts multiple match modes.
|
|
76
|
+
*/
|
|
77
|
+
export type StringMatch = string | RegExp | {
|
|
78
|
+
readonly exact: string;
|
|
79
|
+
} | {
|
|
80
|
+
readonly contains: string;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Filter set for `query()`. All fields are optional and ANDed
|
|
84
|
+
* together. Array values are ORed within a single field
|
|
85
|
+
* (`addonId: ['a', 'b']` matches devices owned by either). The
|
|
86
|
+
* `where` escape hatch runs LAST so the structured filters do the
|
|
87
|
+
* cheap rejection first.
|
|
88
|
+
*/
|
|
89
|
+
export interface DeviceQueryFilters {
|
|
90
|
+
/** Match by exact deviceId. Single value or array (OR'd). */
|
|
91
|
+
readonly id?: number | readonly number[];
|
|
92
|
+
/** Match by exact stableId. Single value or array. */
|
|
93
|
+
readonly stableId?: string | readonly string[];
|
|
94
|
+
/** Match by owning addonId. Single value or array. */
|
|
95
|
+
readonly addonId?: string | readonly string[];
|
|
96
|
+
/** Match by `DeviceType` enum value. Single value or array. */
|
|
97
|
+
readonly type?: DeviceType | readonly DeviceType[];
|
|
98
|
+
/** Match devices that bind ALL listed caps. Single capName or array. */
|
|
99
|
+
readonly caps?: string | readonly string[];
|
|
100
|
+
/** Match devices that bind ANY of the listed caps. Mutually exclusive
|
|
101
|
+
* with `caps`. */
|
|
102
|
+
readonly anyCap?: string | readonly string[];
|
|
103
|
+
/** Match by device name. */
|
|
104
|
+
readonly name?: StringMatch;
|
|
105
|
+
/** Match the `online` flag. */
|
|
106
|
+
readonly online?: boolean;
|
|
107
|
+
/** Match by parent device id. Pass `null` for top-level devices. */
|
|
108
|
+
readonly parentDeviceId?: number | null;
|
|
109
|
+
/** Match devices that expose a feature (e.g. `'BatteryOperated'`). */
|
|
110
|
+
readonly feature?: string | readonly string[];
|
|
111
|
+
/** Match `isCamera` flag. */
|
|
112
|
+
readonly isCamera?: boolean;
|
|
113
|
+
/** Custom predicate. Runs last; receives both metadata and proxy. */
|
|
114
|
+
readonly where?: (info: DeviceInfo, proxy: DeviceProxy) => boolean;
|
|
115
|
+
}
|
|
116
|
+
export declare class SystemMirror {
|
|
117
|
+
private readonly api;
|
|
118
|
+
/** deviceId → capName → slice (push-driven mirror). */
|
|
119
|
+
private readonly stateMirror;
|
|
120
|
+
/** deviceId → binding (warm-boot + binding-changed events). */
|
|
121
|
+
private readonly bindings;
|
|
122
|
+
/** deviceId → metadata (warm-boot + lifecycle events). */
|
|
123
|
+
private readonly devices;
|
|
124
|
+
/** Listener map for individual `(deviceId, capName)` watches —
|
|
125
|
+
* shared with every `MirrorSource` we hand out. */
|
|
126
|
+
private readonly handleListeners;
|
|
127
|
+
/** Global state-change listeners registered via `listen()`. */
|
|
128
|
+
private readonly globalStateListeners;
|
|
129
|
+
/** Per-cap state listeners registered via `listenCap(capName, …)`. */
|
|
130
|
+
private readonly capListeners;
|
|
131
|
+
/** Per-device state listeners registered via `listenDevice(id, …)`. */
|
|
132
|
+
private readonly deviceListeners;
|
|
133
|
+
/** Lifecycle listeners. */
|
|
134
|
+
private readonly addedListeners;
|
|
135
|
+
private readonly removedListeners;
|
|
136
|
+
/** waitForState pending requests — keyed by an internal counter. */
|
|
137
|
+
private readonly pendingWaits;
|
|
138
|
+
/** Memoised state source — every proxy shares it. */
|
|
139
|
+
private readonly stateSource;
|
|
140
|
+
/** Live event bridges — closed in `dispose()`. */
|
|
141
|
+
private bridges;
|
|
142
|
+
private initialized;
|
|
143
|
+
private initPromise;
|
|
144
|
+
constructor(api: SystemMirrorApi);
|
|
145
|
+
/**
|
|
146
|
+
* Warm-boot: three round-trips (bindings + snapshots + listAll) and
|
|
147
|
+
* then the live event subscriptions. Idempotent — concurrent callers
|
|
148
|
+
* await the same in-flight Promise.
|
|
149
|
+
*
|
|
150
|
+
* Each warm-boot query is wrapped in a 15s timeout so a missing
|
|
151
|
+
* endpoint or stuck broker poll surfaces as a clear error instead
|
|
152
|
+
* of silently hanging the caller forever. The default is generous
|
|
153
|
+
* enough for cluster-wide setups but short enough for ops to
|
|
154
|
+
* notice and fix the underlying transport issue.
|
|
155
|
+
*/
|
|
156
|
+
init(timeoutMs?: number): Promise<void>;
|
|
157
|
+
/** True after `init()` resolves. */
|
|
158
|
+
isReady(): boolean;
|
|
159
|
+
/** Promise that resolves once `init()` has completed. */
|
|
160
|
+
awaitReady(): Promise<void>;
|
|
161
|
+
/**
|
|
162
|
+
* Tear down the event bridges + clear listener registries. Existing
|
|
163
|
+
* proxy references become inert (slice reads keep working off the
|
|
164
|
+
* stale mirror, but no further updates arrive).
|
|
165
|
+
*/
|
|
166
|
+
dispose(): void;
|
|
167
|
+
/** Sync lookup by numeric id. `null` if unknown. */
|
|
168
|
+
getDeviceById(deviceId: number): DeviceProxy | null;
|
|
169
|
+
/** Sync lookup by display name (exact match). `null` if unknown. */
|
|
170
|
+
getDeviceByName(name: string): DeviceProxy | null;
|
|
171
|
+
/** Sync lookup by stableId (the addon-scoped external id). */
|
|
172
|
+
getDeviceByStableId(stableId: string): DeviceProxy | null;
|
|
173
|
+
/** All devices owned by an addon. */
|
|
174
|
+
getDevicesByAddon(addonId: string): readonly DeviceProxy[];
|
|
175
|
+
/** All devices of a given `DeviceType`. */
|
|
176
|
+
getDevicesByType(type: DeviceType): readonly DeviceProxy[];
|
|
177
|
+
/**
|
|
178
|
+
* Live metadata snapshot for a device. Same shape as
|
|
179
|
+
* `deviceManager.getDevice(id)`; sync from the mirror.
|
|
180
|
+
*/
|
|
181
|
+
getDeviceInfo(deviceId: number): DeviceInfo | null;
|
|
182
|
+
/** Snapshot of every known device as a typed proxy. */
|
|
183
|
+
getAllDevices(): readonly DeviceProxy[];
|
|
184
|
+
/** Filter devices by cap presence — shorthand for `query({caps: capName})`. */
|
|
185
|
+
filterByCap(capName: string): readonly DeviceProxy[];
|
|
186
|
+
/**
|
|
187
|
+
* Filter the fleet against a structured filter set. All fields ANDed,
|
|
188
|
+
* arrays ORed within a single field. Returns proxies — chain with
|
|
189
|
+
* cap-method calls or state reads as needed.
|
|
190
|
+
*
|
|
191
|
+
* Examples:
|
|
192
|
+
*
|
|
193
|
+
* sm.query({ addonId: 'reolink', online: true })
|
|
194
|
+
* sm.query({ type: DeviceType.Camera, caps: ['snapshot', 'motion'] })
|
|
195
|
+
* sm.query({ id: [1, 2, 3] })
|
|
196
|
+
* sm.query({ name: { contains: 'sala' } })
|
|
197
|
+
* sm.query({ name: /^cam-\d+$/ })
|
|
198
|
+
* sm.query({ parentDeviceId: 8 }) // accessories of cam 8
|
|
199
|
+
* sm.query({ where: (info, dev) => dev.state.battery.value?.sleeping })
|
|
200
|
+
*/
|
|
201
|
+
query(filters?: DeviceQueryFilters): readonly DeviceProxy[];
|
|
202
|
+
/**
|
|
203
|
+
* Return every proxy whose runtime-state slice for `capName` matches
|
|
204
|
+
* `predicate`. Devices without the cap or without a slice are
|
|
205
|
+
* skipped. The predicate receives a typed slice reference — pass
|
|
206
|
+
* the typed cap (e.g. `'battery'`) and TypeScript widens to
|
|
207
|
+
* `Record<string, unknown>`; cast inside the predicate body if the
|
|
208
|
+
* caller knows the cap shape.
|
|
209
|
+
*/
|
|
210
|
+
whereState<T extends Record<string, unknown> = Record<string, unknown>>(capName: string, predicate: (slice: T, deviceId: number) => boolean): readonly DeviceProxy[];
|
|
211
|
+
/** Map every device's slice for `capName` to a derived value. Devices
|
|
212
|
+
* without the cap or without a slice are skipped. */
|
|
213
|
+
mapState<T extends Record<string, unknown> = Record<string, unknown>, R = unknown>(capName: string, mapper: (slice: T, deviceId: number) => R): readonly R[];
|
|
214
|
+
/** First device whose slice matches `predicate`, or null. */
|
|
215
|
+
findState<T extends Record<string, unknown> = Record<string, unknown>>(capName: string, predicate: (slice: T, deviceId: number) => boolean): DeviceProxy | null;
|
|
216
|
+
/** Count devices that bind a cap. Faster than `filterByCap(...).length`. */
|
|
217
|
+
countByCap(capName: string): number;
|
|
218
|
+
/** Count devices whose slice for `capName` matches `predicate`. */
|
|
219
|
+
countByState<T extends Record<string, unknown> = Record<string, unknown>>(capName: string, predicate: (slice: T, deviceId: number) => boolean): number;
|
|
220
|
+
/**
|
|
221
|
+
* Global listener — fires for every `device.state-changed` event the
|
|
222
|
+
* mirror absorbs.
|
|
223
|
+
*/
|
|
224
|
+
listen(cb: SystemMirrorListener): () => void;
|
|
225
|
+
/**
|
|
226
|
+
* Per-cap listener — fires only for state changes on `capName`,
|
|
227
|
+
* across every device. The callback receives the deviceId so the
|
|
228
|
+
* caller can route.
|
|
229
|
+
*/
|
|
230
|
+
listenCap(capName: string, cb: DeviceCapListener): () => void;
|
|
231
|
+
/**
|
|
232
|
+
* Per-device listener — fires for every cap change on `deviceId`.
|
|
233
|
+
*/
|
|
234
|
+
listenDevice(deviceId: number, cb: SystemMirrorListener): () => void;
|
|
235
|
+
/** Fires when `device.registered` lands. Receives the new metadata. */
|
|
236
|
+
onDeviceAdded(cb: DeviceLifecycleListener): () => void;
|
|
237
|
+
/** Fires when `device.unregistered` lands. `info` is the LAST-known
|
|
238
|
+
* metadata (or null if the device was never seen). */
|
|
239
|
+
onDeviceRemoved(cb: DeviceLifecycleListener): () => void;
|
|
240
|
+
/**
|
|
241
|
+
* Resolve when `predicate` over the runtime-state slice for
|
|
242
|
+
* `(deviceId, capName)` becomes true. Resolves immediately if the
|
|
243
|
+
* current slice already matches. Rejects with `Error('timeout')`
|
|
244
|
+
* after `timeoutMs` (default 30s; pass `Infinity` to wait forever).
|
|
245
|
+
*
|
|
246
|
+
* Returns the matching slice — caller can read it directly without
|
|
247
|
+
* a second mirror lookup.
|
|
248
|
+
*/
|
|
249
|
+
waitForState<T extends Record<string, unknown> = Record<string, unknown>>(deviceId: number, capName: string, predicate: (slice: T) => boolean, timeoutMs?: number): Promise<T>;
|
|
250
|
+
/**
|
|
251
|
+
* Resolve when a device with `deviceId` becomes available (a
|
|
252
|
+
* binding exists). Resolves immediately if already known. Rejects
|
|
253
|
+
* with timeout.
|
|
254
|
+
*/
|
|
255
|
+
waitForDevice(deviceId: number, timeoutMs?: number): Promise<DeviceProxy>;
|
|
256
|
+
/**
|
|
257
|
+
* Iterate every device that binds `capName`. Awaits each callback
|
|
258
|
+
* sequentially — for parallel use `invokeCap` with explicit
|
|
259
|
+
* parallelism.
|
|
260
|
+
*/
|
|
261
|
+
forEachCap(capName: string, cb: (proxy: DeviceProxy) => void | Promise<void>): Promise<void>;
|
|
262
|
+
/**
|
|
263
|
+
* Invoke a cap method on every device that binds the cap. Returns
|
|
264
|
+
* one result per device, success or failure isolated. Optional
|
|
265
|
+
* parallelism cap — useful for "snapshot all cameras but only 4
|
|
266
|
+
* at a time so battery cams don't all wake at once".
|
|
267
|
+
*
|
|
268
|
+
* Example:
|
|
269
|
+
*
|
|
270
|
+
* const results = await sm.invokeCap('snapshot', 'getSnapshot', {}, { parallelism: 4 })
|
|
271
|
+
* const failed = results.filter(r => !r.ok)
|
|
272
|
+
*/
|
|
273
|
+
invokeCap<R = unknown>(capName: string, methodName: string, args: Record<string, unknown>, opts?: {
|
|
274
|
+
parallelism?: number;
|
|
275
|
+
}): Promise<ReadonlyArray<{
|
|
276
|
+
deviceId: number;
|
|
277
|
+
ok: boolean;
|
|
278
|
+
result?: R;
|
|
279
|
+
error?: unknown;
|
|
280
|
+
}>>;
|
|
281
|
+
/**
|
|
282
|
+
* One-shot summary — fleet size, breakdown by cap / addon / type.
|
|
283
|
+
* Designed for REPL inspection (`sm.summary()`).
|
|
284
|
+
*/
|
|
285
|
+
summary(): {
|
|
286
|
+
totalDevices: number;
|
|
287
|
+
online: number;
|
|
288
|
+
offline: number;
|
|
289
|
+
byCap: Record<string, number>;
|
|
290
|
+
byAddon: Record<string, number>;
|
|
291
|
+
byType: Record<string, number>;
|
|
292
|
+
statedDevices: number;
|
|
293
|
+
};
|
|
294
|
+
/**
|
|
295
|
+
* Debug-friendly dump — full state + binding + metadata for one
|
|
296
|
+
* device or all devices. Cheap deep clone so caller mutations don't
|
|
297
|
+
* leak into the mirror.
|
|
298
|
+
*/
|
|
299
|
+
dump(deviceId?: number): unknown;
|
|
300
|
+
/**
|
|
301
|
+
* Direct read-only access to the underlying state mirror. Use
|
|
302
|
+
* sparingly — `getSystemState` returns a deep copy that's safer for
|
|
303
|
+
* exploratory work; this avoids the clone cost when iterating
|
|
304
|
+
* thousands of slices.
|
|
305
|
+
*/
|
|
306
|
+
getRawMirror(): ReadonlyMap<number, ReadonlyMap<string, Record<string, unknown>>>;
|
|
307
|
+
/**
|
|
308
|
+
* Snapshot of the full state mirror — same shape as the warm-boot
|
|
309
|
+
* payload. Deep-cloned; safe to mutate.
|
|
310
|
+
*/
|
|
311
|
+
getSystemState(): Map<number, Map<string, Record<string, unknown>>>;
|
|
312
|
+
private subscribeBus;
|
|
313
|
+
private applyStateUpdate;
|
|
314
|
+
private applyDeviceRemoval;
|
|
315
|
+
private refreshBinding;
|
|
316
|
+
private refreshDeviceMetadata;
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=system-mirror.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-mirror.d.ts","sourceRoot":"","sources":["../../src/device/system-mirror.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAElF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAsB,KAAK,cAAc,EAA0B,MAAM,0BAA0B,CAAA;AAQ1G;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,QAAQ,CAAC,aAAa,EAAE;QACtB,QAAQ,CAAC,cAAc,EAAE;YACvB,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAA;SAC3E,CAAA;QACD,QAAQ,CAAC,OAAO,EAAE;YAChB,KAAK,CAAC,KAAK,EAAE;gBAAE,OAAO,CAAC,EAAE,MAAM,CAAA;aAAE,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAA;SACvE,CAAA;KACF,CAAA;IACD,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG;QACpD,QAAQ,CAAC,eAAe,EAAE;YACxB,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;SACtG,CAAA;KACF,CAAA;CACF;AAED,MAAM,MAAM,oBAAoB,GAAG,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KACvC,IAAI,CAAA;AAET,MAAM,MAAM,iBAAiB,GAAG,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KACvC,IAAI,CAAA;AAET,MAAM,MAAM,uBAAuB,GAAG,CACpC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GAAG,IAAI,KACpB,IAAI,CAAA;AAET;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,MAAM,GACN;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AAEjC;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IACxC,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC9C,sDAAsD;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC7C,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,UAAU,EAAE,CAAA;IAClD,wEAAwE;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC1C;uBACmB;IACnB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC5C,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAA;IAC3B,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,oEAAoE;IACpE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC7C,6BAA6B;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,qEAAqE;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,KAAK,OAAO,CAAA;CACnE;AAED,qBAAa,YAAY;IA4BX,OAAO,CAAC,QAAQ,CAAC,GAAG;IA3BhC,uDAAuD;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+D;IAC3F,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D;wDACoD;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+D;IAC/F,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAkC;IACvE,sEAAsE;IACtE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4C;IACzE,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+C;IAC/E,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IACpE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqC;IACtE,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2D;IACxF,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAC/C,kDAAkD;IAClD,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,WAAW,CAA6B;gBAEnB,GAAG,EAAE,eAAe;IAMjD;;;;;;;;;;OAUG;IACG,IAAI,CAAC,SAAS,GAAE,MAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DrD,oCAAoC;IACpC,OAAO,IAAI,OAAO;IAIlB,yDAAyD;IACnD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAiBf,oDAAoD;IACpD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAMnD,oEAAoE;IACpE,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAOjD,8DAA8D;IAC9D,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAOzD,qCAAqC;IACrC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE;IAI1D,2CAA2C;IAC3C,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,WAAW,EAAE;IAI1D;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAIlD,uDAAuD;IACvD,aAAa,IAAI,SAAS,WAAW,EAAE;IASvC,+EAA+E;IAC/E,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE;IAMpD;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,OAAO,GAAE,kBAAuB,GAAG,SAAS,WAAW,EAAE;IAoE/D;;;;;;;OAOG;IACH,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpE,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,GACjD,SAAS,WAAW,EAAE;IAYzB;0DACsD;IACtD,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,EAC/E,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,GACxC,SAAS,CAAC,EAAE;IAUf,6DAA6D;IAC7D,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,GACjD,WAAW,GAAG,IAAI;IAUrB,4EAA4E;IAC5E,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAQnC,mEAAmE;IACnE,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtE,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,GACjD,MAAM;IAYT;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAK5C;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,iBAAiB,GAAG,MAAM,IAAI;IAU7D;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAUpE,uEAAuE;IACvE,aAAa,CAAC,EAAE,EAAE,uBAAuB,GAAG,MAAM,IAAI;IAKtD;2DACuD;IACvD,eAAe,CAAC,EAAE,EAAE,uBAAuB,GAAG,MAAM,IAAI;IAOxD;;;;;;;;OAQG;IACH,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtE,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,EAChC,SAAS,GAAE,MAAe,GACzB,OAAO,CAAC,CAAC,CAAC;IAgCb;;;;OAIG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IA2BjF;;;;OAIG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC;IAMhB;;;;;;;;;;OAUG;IACG,SAAS,CAAC,CAAC,GAAG,OAAO,EACzB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,GAClC,OAAO,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAgCzF;;;OAGG;IACH,OAAO,IAAI;QACT,YAAY,EAAE,MAAM,CAAA;QACpB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC9B,aAAa,EAAE,MAAM,CAAA;KACtB;IA8BD;;;;OAIG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAwBhC;;;;;OAKG;IACH,YAAY,IAAI,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAIjF;;;OAGG;IACH,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAYnE,OAAO,CAAC,YAAY;IA4EpB,OAAO,CAAC,gBAAgB;IA2CxB,OAAO,CAAC,kBAAkB;YAUZ,cAAc;YAgBd,qBAAqB;CA2BpC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ConfigUISchema } from '../interfaces/config-ui.js';
|
|
3
|
+
export interface DeviceConfigEntry {
|
|
4
|
+
key: string;
|
|
5
|
+
schema: z.ZodType;
|
|
6
|
+
value: unknown;
|
|
7
|
+
description?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Convert DeviceConfig.entries() output to ConfigUISchema for the admin UI FormBuilder.
|
|
11
|
+
*
|
|
12
|
+
* Each entry's Zod type is inspected to determine the correct ConfigField type:
|
|
13
|
+
* - ZodString → 'text' (or 'password' when key contains "password"/"secret"/"token"/"apikey")
|
|
14
|
+
* - ZodNumber → 'number' (extracts min/max/step from Zod v4 checks)
|
|
15
|
+
* - ZodBoolean → 'boolean'
|
|
16
|
+
* - ZodEnum → 'select' (options built from enum values)
|
|
17
|
+
* - Anything else → 'text' fallback
|
|
18
|
+
*
|
|
19
|
+
* Wrapper types ZodDefault, ZodOptional, and ZodNullable are unwrapped transparently.
|
|
20
|
+
* Default values are extracted from ZodDefault wrappers.
|
|
21
|
+
*/
|
|
22
|
+
export declare function zodEntriesToConfigUI(entries: readonly DeviceConfigEntry[], sectionTitle?: string, sectionId?: string): ConfigUISchema;
|
|
23
|
+
//# sourceMappingURL=zod-to-config-ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-to-config-ui.d.ts","sourceRoot":"","sources":["../../src/device/zod-to-config-ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EACV,cAAc,EAQf,MAAM,4BAA4B,CAAA;AAInC,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,CAAC,CAAC,OAAO,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAqCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,YAAY,SAAkB,EAC9B,SAAS,SAAS,GACjB,cAAc,CAchB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type DisposerFn = () => void | Promise<void>;
|
|
2
|
+
export interface DisposerChainOptions {
|
|
3
|
+
/** Logged when an individual disposer throws. Defaults to console.error. */
|
|
4
|
+
onError?: (err: unknown, index: number) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare class DisposerChain {
|
|
7
|
+
private disposers;
|
|
8
|
+
private disposed;
|
|
9
|
+
private readonly onError;
|
|
10
|
+
constructor(opts?: DisposerChainOptions);
|
|
11
|
+
/**
|
|
12
|
+
* Register a teardown callback. Returns an unregister function so
|
|
13
|
+
* callers can drop a single disposer without disposing the whole
|
|
14
|
+
* chain.
|
|
15
|
+
*
|
|
16
|
+
* If the chain has already been disposed, the callback runs immediately
|
|
17
|
+
* (sync) — this matches the “register-after-shutdown” edge case where
|
|
18
|
+
* an addon's late initialization races with kernel restart.
|
|
19
|
+
*/
|
|
20
|
+
add(fn: DisposerFn): () => void;
|
|
21
|
+
/** True after `dispose()` has been called at least once. */
|
|
22
|
+
get isDisposed(): boolean;
|
|
23
|
+
/** Number of disposers currently registered. */
|
|
24
|
+
get size(): number;
|
|
25
|
+
/**
|
|
26
|
+
* Run every registered disposer in LIFO order. Idempotent: subsequent
|
|
27
|
+
* calls do nothing. Awaits async disposers so callers can sequence
|
|
28
|
+
* shutdown → restart correctly.
|
|
29
|
+
*/
|
|
30
|
+
dispose(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=disposer-chain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disposer-chain.d.ts","sourceRoot":"","sources":["../src/disposer-chain.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,UAAU,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEnD,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAChD;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;gBAEnD,IAAI,GAAE,oBAAyB;IAS3C;;;;;;;;OAQG;IACH,GAAG,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,IAAI;IAoB/B,4DAA4D;IAC5D,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,gDAAgD;IAChD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAoB/B"}
|