@camstack/addon-pipeline 1.2.80 → 1.2.81
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-utils-C4Cge0S0.js → addon-utils-CQFlZXSn.js} +1 -1
- package/dist/audio-analyzer/index.js +2 -2
- package/dist/audio-analyzer/index.mjs +1 -1
- package/dist/detection-pipeline/index.js +4 -4
- package/dist/detection-pipeline/index.mjs +2 -2
- package/dist/{dist-ZSiUDGzf.js → dist-B57MztMq.js} +143 -11
- package/dist/{dist-Bf1SE1Ew.mjs → dist-DGp0dRiq.mjs} +126 -12
- package/dist/{event-loop-stall-monitor-CjWfos2b.mjs → event-loop-stall-monitor-8vYH44kg.mjs} +1 -1
- package/dist/{event-loop-stall-monitor-VcDGoua3.js → event-loop-stall-monitor-DPA6Pu_h.js} +1 -1
- package/dist/{lazy-sharp-CC4WNiKY.js → lazy-sharp-BMgRSV9x.js} +1 -1
- package/dist/motion-wasm/index.js +2 -2
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/pipeline-runner/index.js +26 -4
- package/dist/pipeline-runner/index.mjs +25 -3
- package/dist/recorder/index.js +2 -2
- package/dist/recorder/index.mjs +1 -1
- package/dist/session-decode/decode-worker-child.js +2 -2
- package/dist/session-decode/decode-worker-child.mjs +1 -1
- package/dist/stream-broker/_stub.js +1 -1
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-B1oVjQLS.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Cb8ynph1.mjs} +2 -2
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B2scqOH7.mjs +26 -0
- package/dist/stream-broker/{hostInit-D_m-NYyr.mjs → hostInit-GJipMxBe.mjs} +2 -2
- package/dist/stream-broker/index.js +224 -1
- package/dist/stream-broker/index.mjs +224 -1
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/dist/{worker-protocol-KDfFzKgT.js → worker-protocol-4L4SbSAo.js} +1 -1
- package/dist/{worker-protocol-p66oO1xL.mjs → worker-protocol-_e84lGuR.mjs} +1 -1
- package/package.json +1 -1
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BjDv7QMq.mjs +0 -26
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as formatNativeLeaseKnobs, n as isWorkerRequest, o as resolveNativeLeaseKnobs, r as logLevelForLine } from "../worker-protocol-
|
|
1
|
+
import { i as formatNativeLeaseKnobs, n as isWorkerRequest, o as resolveNativeLeaseKnobs, r as logLevelForLine } from "../worker-protocol-_e84lGuR.mjs";
|
|
2
2
|
import { n as setSharpWarnSink, r as hostExternalEntryUrls, t as getSharp } from "../lazy-sharp-6oymT_yf.mjs";
|
|
3
3
|
//#region src/session-decode/color-conversion.ts
|
|
4
4
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, p as c, r as l, s as u, t as d, u as f } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DEps-9qh.mjs";
|
|
2
2
|
import { a as p, i as m, n as h, o as g, r as _, t as v } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare__react__loadShare__.js-C9j-2lBe.mjs";
|
|
3
3
|
import { n as y, r as b, t as x } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-XO0-Pyu6.mjs";
|
|
4
|
-
import { t as S } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-
|
|
4
|
+
import { t as S } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B2scqOH7.mjs";
|
|
5
5
|
import { n as C, t as w } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-BO7TIbJV.mjs";
|
|
6
6
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils.js
|
|
7
7
|
var T = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), E = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), D = (e) => {
|
|
@@ -18,7 +18,7 @@ var e = {
|
|
|
18
18
|
},
|
|
19
19
|
"@camstack/types": {
|
|
20
20
|
name: "@camstack/types",
|
|
21
|
-
version: "1.2.
|
|
21
|
+
version: "1.2.77",
|
|
22
22
|
scope: ["default"],
|
|
23
23
|
loaded: !1,
|
|
24
24
|
from: "addon_stream_broker_widgets",
|
|
@@ -33,7 +33,7 @@ var e = {
|
|
|
33
33
|
},
|
|
34
34
|
"@camstack/ui-library": {
|
|
35
35
|
name: "@camstack/ui-library",
|
|
36
|
-
version: "1.2.
|
|
36
|
+
version: "1.2.54",
|
|
37
37
|
scope: ["default"],
|
|
38
38
|
loaded: !1,
|
|
39
39
|
from: "addon_stream_broker_widgets",
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region \0virtual:mf:__mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js
|
|
2
|
+
var e = "__mf_init__virtual:mf:__mfe_internal__addon_stream_broker_widgets__mf_v__runtimeInit__mf_v__.js__", t = globalThis[e];
|
|
3
|
+
if (!t) {
|
|
4
|
+
let n, r, i = new Promise((e, t) => {
|
|
5
|
+
n = e, r = t;
|
|
6
|
+
});
|
|
7
|
+
t = globalThis[e] = {
|
|
8
|
+
initPromise: i,
|
|
9
|
+
initResolve: n,
|
|
10
|
+
initReject: r
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
var n = t.initPromise, r = "__mf_module_cache__";
|
|
14
|
+
globalThis[r] ||= {
|
|
15
|
+
share: {},
|
|
16
|
+
remote: {}
|
|
17
|
+
}, globalThis[r].share ||= {}, globalThis[r].remote ||= {};
|
|
18
|
+
var i = globalThis[r], a, o = (e) => {
|
|
19
|
+
e.ACCESSORY_LABEL, e.ACCESS_ROLES, e.ALEXA_EGRESS_PROFILE, e.ALL_CAPABILITY_DEFINITIONS, e.APPLE_SA_TO_MACRO, e.AUDIO_ANALYSIS_CAP_NAME, e.AUDIO_BACKEND_CHOICES, e.AUDIO_MACRO_LABELS, e.AUDIO_PRESETS, e.AccessoriesStatusSchema, e.AccessoryKind, e.AddBrokerInputSchema, e.AddonAutoUpdateSchema, e.AddonListItemSchema, e.AddonPageDeclarationSchema, e.AddonPageInfoSchema, e.AdoptionAdoptInputSchema, e.AdoptionAdoptResultSchema, e.AdoptionCandidateResultSchema, e.AdoptionFilterSchema, e.AdoptionGetCandidateInputSchema, e.AdoptionJobSchema, e.AdoptionJobStateSchema, e.AdoptionListCandidatesInputSchema, e.AdoptionListCandidatesOutputSchema, e.AdoptionOutcomeSchema, e.AdoptionReleaseInputSchema, e.AdoptionStatusSchema, e.AgentLoadSummarySchema, e.AirQualitySensorStatusSchema, e.AlarmArmModeSchema, e.AlarmPanelStatusSchema, e.AlarmStateSchema, e.AlertSchema, e.AlertSeveritySchema, e.AlertSourceSchema, e.AlertStatusSchema, e.AmbientLightSensorStatusSchema, e.ApiKeyRecordSchema, e.ApiKeySummarySchema, e.ArchiveEntrySchema, e.ArchiveManifestSchema, e.AttachmentMediaTypeSchema, e.AttachmentSchema, e.AudioAnalysisResultSchema, e.AudioAnalysisSettingsSchema, e.AudioChunkInputSchema, e.AudioClassSummarySchema, e.AudioClassificationLabelSchema, e.AudioClassificationResultSchema, e.AudioCodecInfoSchema, e.AudioDecodeSessionConfigSchema, e.AudioEncodeSchema, e.AudioEncodeSessionConfigSchema, e.AudioEncodedChunkSchema, e.AudioEventSchema, e.AudioLevelSchema, e.AudioMetricsHistoryPointSchema, e.AudioMetricsHistorySchema, e.AudioMetricsSnapshotSchema, e.AudioPcmChunkSchema, e.AuthResultSchema, e.AutoUpdateSettingsSchema, e.AutomationActionSchema, e.AutomationConditionOperatorSchema, e.AutomationConditionSchema, e.AutomationControlStatusSchema, e.AutomationRecipeSchema, e.AutomationTriggerSchema, e.AvailableIntegrationTypeSchema, e.BACKEND_TO_FORMAT, e.BASE_LIVE_EGRESS_PROFILE, e.BATTERY_DEVICE_PROFILE, e.BATTERY_UNREACHABLE_AFTER_MS, e.BOOT_RECOVERY_BACKOFF_MS, e.BacklightModeSchema, e.BackupDestinationInfoSchema, e.BackupEntrySchema, e.BaseAddon, e.BaseDevice, e.BaseDeviceProvider, e.BatteryStatusSchema, e.BinaryStatusSchema, e.BoundingBoxSchema, e.BrightnessStatusSchema, e.BrokerAddInputSchema, e.BrokerAudioClientSchema, e.BrokerClientsSchema, e.BrokerConnectionDetailsSchema, e.BrokerConsumerAttributionSchema, e.BrokerConsumerKindSchema, e.BrokerDecodedClientSchema, e.BrokerEncodedClientSchema, e.BrokerGetStateInputSchema, e.BrokerInfoSchema, e.BrokerProviderInfoSchema, e.BrokerPublishInputSchema, e.BrokerRegistryStatusSchema, e.BrokerRtspClientSchema, e.BrokerStatsSchema, e.BrokerStatusEnum, e.BrokerStatusSchema, e.BrokerSubscribeInputSchema, e.BrokerSubscribeResultSchema, e.BrokerTestConnectionResultSchema, e.BrokerUnsubscribeInputSchema, e.CAMERA_SWITCH_CATALOG, e.CAMERA_SWITCH_ORDER, e.CAM_PROFILE_ORDER, e.CAPABILITY_NAMES, e.CAPABILITY_ROUTER_KEYS, e.CAP_NAMES_WITH_STATUS, e.CAP_NODE_PIN_CONTEXT_KEY, e.CAP_PROVIDER_KIND_MAP, e.COCO_80_LABELS, e.COCO_TO_MACRO, e.CONNECTION_TEST_TIMEOUT_MS, e.CORE_BLOCKS_ADDON_ID, e.CORE_BLOCK_ADDON_PREFIX, e.CamProfileSchema, e.CamStreamDescriptorSchema, e.CamStreamKindSchema, e.CamStreamResolutionSchema, e.CameraAssignmentStatusSchema, e.CameraAudioStatusSchema, e.CameraBrokerProfileSchema, e.CameraBrokerStatusSchema, e.CameraCredentialsSchema, e.CameraCredentialsStatusSchema, e.CameraDecoderShmSchema, e.CameraDecoderStatusSchema, e.CameraDetectionPhaseSchema, e.CameraDetectionProvisioningSchema, e.CameraDetectionProvisioningStateSchema, e.CameraDetectionStatusSchema, e.CameraMetricsSchema, e.CameraMetricsWithDeviceIdSchema, e.CameraMotionStatusSchema, e.CameraRecordingModeSchema, e.CameraRecordingStatusSchema, e.CameraSourceStatusSchema, e.CameraSourceStreamSchema, e.CameraStatusDegradationReasonSchema, e.CameraStatusDegradationSchema, e.CameraStatusSchema, e.CameraStatusStageSchema, e.CameraStreamSchema, e.CameraSwitchAuthoritySchema, e.CameraSwitchGroupSchema, e.CameraSwitchIdSchema, e.CameraSwitchSchema, e.CameraSwitchUnavailableReasonSchema, e.CandidateQueryFilterSchema, e.CapScopeSchema, e.CapabilityBindingsSchema, e.CarbonMonoxideStatusSchema, e.ChargingStatus, e.ClientNetworkStatsSchema, e.ClimateControlStatusSchema, e.ClipPlaybackSchema, e.ClipSchema, e.ClusterAddonNodeDeploymentSchema, e.ClusterAddonStatusEntrySchema, e.CollectionColumnSchema, e.CollectionIndexSchema, e.ColorStatusSchema, e.ConfigEntrySchema, e.ConfigSectionWithValuesSchema, e.ConfigTabDeclarationSchema, e.ConnectionTestDescriptorSchema, e.ConnectionTestInputSchema, e.ConnectionTestOutcomeSchema, e.ConnectivityStatusSchema, e.ConsumableItemSchema, e.ConsumablesStatusSchema, e.ContactStatusSchema, e.ControlKindSchema, e.ControlStatusSchema, e.ConvertArtifactSchema, e.ConvertResultSchema, e.ConvertTargetSchema, e.CoreBlockCompileResultSchema, e.CoreBlockInputSchema, e.CoreBlockPlacementSchema, e.CoreBlockSchema, e.CoreBlockStatusSchema, e.CoverStateSchema, e.CoverStatusSchema, e.CreateApiKeyInputSchema, e.CreateApiKeyResultSchema, e.CreateIntegrationInputSchema, e.CreateScopedTokenInputSchema, e.CreateScopedTokenResultSchema, e.CreateUserInputSchema, e.CustomActionInputSchema, e.CustomModelDescriptorSchema, e.DATAPLANE_SECRET_HEADER, e.DECLARED_DEVICE_SWEEP_LIMIT, e.DECLARED_INTEGRATION_FIXED_KEY, e.DEFAULT_ADDON_PLACEMENT, e.DEFAULT_AUDIO_ANALYZER_CONFIG, e.DEFAULT_DECODER_HWACCEL_CONFIG, e.DEFAULT_DETAIL_CROP_CONVENTION, e.DEFAULT_EVENTS_BAND_BUFFER_SEC, e.DEFAULT_EVENT_COLOR, e.DEFAULT_FEATURES, e.DEFAULT_NATIVE_LEASE_SETTINGS, e.DEFAULT_RETENTION, e.DEFAULT_RUNTIME_STATE_DURABILITY, e.DEFAULT_SCRUB_THUMBNAIL_PRESET, e.DEFAULT_TIMELAPSE_PREVIEW_TEXT, e.DETAIL_CROP_PADDING_FIELD, e.DETAIL_CROP_PADDING_KEY, e.DETAIL_CROP_SECTION_ID, e.DETAIL_CROP_SQUARE_KEY, e.DETECTION_MACRO_CLASSES, e.DETECTION_PIPELINE_CAP_NAME, e.DEVICE_BACKEND_TO_FORMAT, e.DEVICE_CAP_NAMES, e.DEVICE_PROFILES, e.DEVICE_SCOPED_CAPS, e.DEVICE_SETTINGS_CONTRIBUTION_METHODS, e.DEVICE_STATE_READERS, e.DEVICE_STATUS_METHOD, e.DEVICE_TYPE_CONTROL_KIND, e.DEVICE_TYPE_INFO, e.DataStoreEngineInfoSchema, e.DayNightModeSchema, e.DayNightOptionsSchema, e.DayNightSettingsPatchSchema, e.DayNightStatusSchema, e.DeclaredDevices, e.DecodedAudioChunkSchema, e.DecodedFrameSchema, e.DecoderSessionConfigSchema, e.DecoderStatsSchema, e.DeleteIntegrationResultSchema, e.DetailCropConventionSchema, e.DetectionSourceSchema, e.DeviceCodeSeveritySchema, e.DeviceConfig, e.DeviceDiscoveryStatusSchema, e.DeviceExportExposeInputSchema, e.DeviceExportStatusSchema, e.DeviceExportUnexposeInputSchema, e.DeviceFeature, e.DeviceInfoSchema, e.DeviceNetworkStatsSchema, e.DeviceRole, e.DeviceRuntimeState, e.DeviceSelectorSchema, e.DeviceStatusSchema, e.DeviceType, e.DiscoveredChildDeviceSchema, e.DiscoveredChildStatusSchema, e.DiscoveredDeviceSchema, e.DiscoveredTargetSchema, e.DisposerChain, e.DoorbellPressEventSchema, e.DoorbellStatusSchema, e.EVENTFUL_CAP_NAMES, e.EVENT_KIND_BY_CAP, e.EVENT_PAD_MS, e.EVENT_TAXONOMY, e.EXPORT_DENSE_MAX_RANGES, e.EXPRESSION_BUILTINS, e.EXPRESSION_BUILTIN_NAMES, e.EXPRESSION_COMPILE_CACHE_CAPACITY, e.EXPRESSION_IDENTIFIER_RE, e.EXPRESSION_INJECTED_NOW, e.EgressEncodeSchema, e.EgressRateControlSchema, e.EgressTranscodeRequestSchema, e.EgressTranscodeSchema, e.ElementConfigStore, e.EmbeddingInfoSchema, e.EmbeddingResultSchema, e.EncodeProfileSchema, e.EncodedPacketSchema, e.EnrichedWidgetMetadataSchema, e.EnumSensorDateTimeFormatSchema, e.EnumSensorStatusSchema, e.EventCategory, e.EventEmitterStatusSchema, e.EventFireSchema, e.EventItemSchema, e.EventKindCategorySchema, e.EventKindDescriptorSchema, e.EventKindIconSchema, e.EventKindSchema, e.EventKindsForDeviceSchema, e.EventMediaArtifactSchema, e.EventMediaCoverageSchema, e.EventMediaKindSchema, e.EventMediaProductionSchema, e.EventSourceType, e.ExportBytesSchema, e.ExportDenseRangeSchema, e.ExportDenseSchema, e.ExportDownloadSchema, e.ExportOptionsSchema, e.ExportRecordSchema, e.ExportSetupFieldSchema, e.ExportSetupSchema, e.ExportSpeedSchema, e.ExportStateSchema, e.ExportTimelapseSchema, e.ExposedDeviceSchema, e.ExposureModeSchema, e.ExpressionBindingSourceSchema, e.ExpressionEvalError, e.ExpressionFieldBindingSchema, e.ExpressionGlobalBindingSchema, e.ExpressionLiteralBindingSchema, e.ExpressionParseError, e.ExpressionSourceSchema, e.FanControlStatusSchema, e.FanDirectionSchema, e.FeatureManifestSchema, e.FeatureProbeStatusSchema, e.FloodStatusSchema, e.Fmp4BoxSplitter, e.FrameHandleFormatSchema, e.FrameHandleSchema, e.FrameInputSchema, e.GasStatusSchema, e.GetStreamWithCodecInputSchema, e.GlobalMetricsSchema, e.HAP_AUDIO_BASE, e.HAP_AUDIO_BITRATE_KBPS, e.HAP_AUDIO_VBV_KBITS, e.HAP_KEYFRAME_INTERVAL_SEC, e.HF_BASE_URL, e.HF_REPO, e.HWACCEL_OPTIONS, e.HealthStatusSchema, e.HfModelResolutionSchema, e.HistoryPointSchema, e.HistoryResolutionEnum, e.HumidifierStatusSchema, e.HumiditySensorStatusSchema, e.HvacModeSchema, e.ImageContractSchema, e.ImageContractStateSchema, e.ImageRotateSchema, e.ImageSettingsOptionsSchema, e.ImageSettingsPatchSchema, e.ImageSettingsStatusSchema, e.ImageStatusSchema, e.IngestOwnerSchema, e.InstalledPackageSchema, e.IntegrationLiteSchema, e.IntegrationWithStateSchema, e.IntercomAbilitySchema, e.IntercomStatusSchema, e.KNOWN_CAP_NAMES, e.KeyEventSchema, e.LOG_LEVEL_RANK, e.LabelAttributionSchema, e.LabelDefinitionSchema, e.LabelTierSchema, e.LawnMowerActivitySchema, e.LawnMowerControlStatusSchema, e.LinkedDeviceSchema, e.LinkedDevicesModeSchema, e.LlmDefaultSchema, e.LlmDefaultSelectorSchema, e.LlmDownloadProgressSchema, e.LlmErrorCodeSchema, e.LlmGenerateBaseInputSchema, e.LlmGenerateErrSchema, e.LlmGenerateOkSchema, e.LlmGenerateResultSchema, e.LlmImageSchema, e.LlmNodeModelSchema, e.LlmProfileKindDescriptorSchema, e.LlmProfileKindSchema, e.LlmProfileSchema, e.LlmRetryPolicySchema, e.LlmRuntimeCompleteInputSchema, e.LlmRuntimeDiskUsageSchema, e.LlmRuntimeNodeSchema, e.LlmRuntimeStatusSchema, e.LlmTimeoutDefaults, e.LlmUsageRollupSchema, e.LlmUsageSchema, e.LocateSegmentResultSchema, e.LocationStatSchema, e.LockControlStatusSchema, e.LockStateSchema, e.LogEntrySchema, e.LogLevelSchema, e.LogStreamEntrySchema, e.LoginMethodContributionSchema, e.LoginStageEnum, e.MACRO_LABELS, e.MAX_CONDITION_DEPTH, e.MAX_CONDITION_LEAVES, e.MAX_EXPRESSION_AST_NODES, e.MAX_EXPRESSION_BINDINGS, e.MAX_EXPRESSION_CALL_ARGS, e.MAX_EXPRESSION_EVAL_STEPS, e.MAX_EXPRESSION_SOURCE_LENGTH, e.METHOD_ACCESS_MAP, e.METHOD_DEVICE_SELECTORS, e.MODEL_FORMATS, e.MOTION_TRIGGER_FEATURE, e.ManagedModelCatalogEntrySchema, e.ManagedModelExtraFileSchema, e.ManagedModelRefSchema, e.ManagedRuntimeConfigSchema, e.MaskGridDimsSchema, e.MaskGridShapeSchema, e.MaskLineShapeSchema, e.MaskPointSchema, e.MaskPolygonShapeSchema, e.MaskPolygonVerticesSchema, e.MaskRectShapeSchema, e.MaskShapeKindSchema, e.MaskShapeSchema, e.MediaFileInfoSchema, e.MediaFileSchema, e.MediaPlayerRepeatSchema, e.MediaPlayerStateSchema, e.MediaPlayerStatusSchema, e.MeshPeerSchema, e.MeshStatusSchema, e.MethodAccessSchema, e.ModelCatalogEntrySchema, e.ModelConvertInputSchema, e.ModelConvertMetadataSchema, e.ModelDistributeInputSchema, e.ModelDistributeResultSchema, e.ModelExtraFileSchema, e.ModelFormatEntrySchema, e.ModelFormatsSchema, e.ModelSubstitutionSchema, e.ModelVariantGroupSchema, e.MotionAnalysisResultSchema, e.MotionEventSchema, e.MotionOnMotionChangedDataSchema, e.MotionRegionSchema, e.MotionSourceEnum, e.MotionSourcesSchema, e.MotionStatusSchema, e.MotionTriggerRuntimeStateSchema, e.MotionTriggerStatusSchema, e.MotionZoneOptionsSchema, e.MotionZonePatchSchema, e.MotionZoneRegionSchema, e.MotionZoneStatusSchema, e.MqttBrokerStatusSchema, e.MutationFilterSchema, e.NATIVE_LEASE_ACTIVITY_FIELD, e.NATIVE_LEASE_ACTIVITY_KEY, e.NATIVE_LEASE_ADMISSION_FIELD, e.NATIVE_LEASE_ADMISSION_KEY, e.NATIVE_LEASE_BUDGET_FIELD, e.NATIVE_LEASE_BUDGET_KEY, e.NATIVE_LEASE_HOLD_FIELD, e.NATIVE_LEASE_HOLD_KEY, e.NATIVE_LEASE_SECTION_ID, e.NATIVE_LEASE_TILE_BUDGET_FIELD, e.NATIVE_LEASE_TILE_BUDGET_KEY, e.NC_ALARM_SYSTEM_EVENT_KINDS, e.NC_AUDIO_DBFS_FLOOR, e.NC_AUDIO_DB_MAX, e.NC_AUDIO_DB_MIN, e.NC_AUDIO_DB_OFFERED, e.NC_AUDIO_DB_STEP, e.NC_AUDIO_DEFAULTS, e.NC_AUDIO_HIT_PERCENT_MAX, e.NC_AUDIO_HIT_PERCENT_MIN, e.NC_AUDIO_SAMPLING_MAX_SEC, e.NC_AUDIO_SAMPLING_MIN_SEC, e.NC_AUTHORABLE_SYSTEM_EVENT_KINDS, e.NC_BASE_CONDITION_KEYS, e.NC_CONDITION_CATALOG, e.NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, e.NC_CONFIRM_DEFAULT_TIMEOUT_MS, e.NC_CONFIRM_MAX_TIMEOUT_MS, e.NC_CONFIRM_MIN_TIMEOUT_MS, e.NC_DEFAULT_SNOOZE_MINUTES, e.NC_HISTORY_LIMIT_DEFAULT, e.NC_HISTORY_LIMIT_MAX, e.NC_MAX_PER_TRACK_IMMEDIATE, e.NC_SNOOZE_MAX_MINUTES, e.NC_TAXONOMY, e.NativeCropBboxSchema, e.NativeCropRefSchema, e.NativeCropResultSchema, e.NativeDetectionSchema, e.NativeLeaseAdmissionSchema, e.NativeLeaseSettingsSchema, e.NativeObjectClassEnum, e.NativeObjectDetectionRuntimeStateSchema, e.NativeObjectDetectionStatusSchema, e.NcAlarmConfigSchema, e.NcAlarmModeCoverageSchema, e.NcAlarmSettingsPatchSchema, e.NcAlarmSettingsSchema, e.NcAlarmSkipReasonSchema, e.NcAlarmSkippedDeviceSchema, e.NcAudioConditionSchema, e.NcConditionDescriptorSchema, e.NcConditionsSchema, e.NcConfirmExpectSchema, e.NcConfirmSchema, e.NcCrossingSchema, e.NcDeliverySchema, e.NcDeviceStateConditionSchema, e.NcHistoryEntrySchema, e.NcHistoryFilterSchema, e.NcHistoryRecordKindSchema, e.NcHistoryStatusSchema, e.NcHistorySubjectSchema, e.NcMediaFrameSchema, e.NcMediaPolicySchema, e.NcOccupancyConditionSchema, e.NcPlateMatcherSchema, e.NcRuleActionSchema, e.NcRuleActionSequenceSchema, e.NcRuleActionsSchema, e.NcRuleInputSchema, e.NcRuleNotificationButtonSchema, e.NcRulePatchSchema, e.NcRuleSchema, e.NcRuleTargetSchema, e.NcSceneConditionSchema, e.NcScheduleSchema, e.NcScheduleWindowSchema, e.NcSnoozeInputSchema, e.NcSnoozeSchema, e.NcSnoozeScopeSchema, e.NcSnoozeSuppressedSchema, e.NcSystemEventConditionSchema, e.NcSystemEventKindSchema, e.NcTaxonomyEntrySchema, e.NcTaxonomySchema, e.NcTestResultSchema, e.NcThrottleGranularitySchema, e.NcThrottleSchema, e.NcZoneConditionSchema, e.NetworkAccessStatusSchema, e.NetworkAddressSchema, e.NetworkEndpointSchema, e.NotificationActionIconSchema, e.NotificationActionSchema, e.NotificationFormatSchema, e.NotificationSchema, e.NotifierStatusSchema, e.NumericSensorStatusSchema, e.OPS_LOG_DEFAULT_LIMIT, e.OPS_LOG_RING_DEFAULT_MAX, e.OauthIntegrationDescriptorSchema, e.ObjectEventSchema, e.OpsLogDomainSchema, e.OpsLogEntrySchema, e.OpsLogOpSchema, e.OpsLogQueryInputSchema, e.OpsLogReasonSchema, e.OrchestratorMetricsSchema, e.OsdOverlayKindEnum, e.OsdOverlayPatchSchema, e.OsdOverlaySchema, e.OsdPositionEnum, e.OsdRenderOutcomeEnum, e.OsdRenderResultSchema, e.OsdSlotBindingSchema, e.OsdSlotViewSchema, e.OsdSourceOptionSchema, e.OsdSourceSchema, e.OsdSourceValueTypeEnum, e.OsdStatusSchema, e.PET_FEEDER_MANUAL_FEED_MAX, e.PET_FEEDER_MANUAL_FEED_MIN, e.PIPELINE_FLOW_CAPABILITY_NAMES, e.PIPELINE_OWNER_CAPABILITY_NAMES, e.PRIVACY_MASK_CAP_NAME, e.PROVIDER_KIND_CAP_NAMES, e.PYTHON_SCRIPT, e.PackageUpdateSchema, e.PackageVersionInfoSchema, e.PasskeyLoginMethodSchema, e.PasskeySummarySchema, e.PcmSampleFormatSchema, e.PerScopeBreakdownSchema, e.PetFeederStatusSchema, e.PickStreamPreferencesSchema, e.PickStreamRequirementsSchema, e.PickedCamStreamSchema, e.PipelineAssignmentSchema, e.PipelineDefaultStepSchema, e.PipelineEngineChoiceSchema, e.PipelineRunResultBridge, e.PipelineStepInputSchema, e.PipelineValidationIssueSchema, e.PipelineValidationResultSchema, e.PlaceholderReasonSchema, e.PolygonPointSchema, e.PowerMeterStatusSchema, e.PresenceStatusSchema, e.PressureSensorStatusSchema, e.PrivacyMaskOptionsSchema, e.PrivacyMaskPatchSchema, e.PrivacyMaskRegionSchema, e.PrivacyMaskShapeSchema, e.PrivacyMaskStatusSchema, e.ProfileRtspEntrySchema, e.ProfileSlotSchema, e.ProfileSlotStatusSchema, e.ProviderStatusSchema, e.PtzAutotrackRuntimeStateSchema, e.PtzAutotrackSettingsSchema, e.PtzAutotrackStatusSchema, e.PtzAutotrackTargetOptionSchema, e.PtzMoveCommandSchema, e.PtzOptionsSchema, e.PtzPositionSchema, e.PtzPresetSchema, e.PtzStatusSchema, e.QueryFilterSchema, e.RATE_CONTROL_RELAXED, e.RATE_CONTROL_TIGHT, e.REACHABILITY_FAILURES_TO_OFFLINE, e.REACHABILITY_POLL_INTERVAL_MS, e.REACHABILITY_PROBE_TIMEOUT_MS, e.RECOGNITION_TYPES, e.RECORDING_EXPORT_MAX_READ_BYTES, e.RESERVED_BINDING_NAMES, e.RESTORED_CAP_NAMES, e.RUNTIME_DEFAULTS, e.RUNTIME_STATE_POLICY, e.RUNTIME_TO_FORMAT, e.RawStateResultSchema, e.ReadGopBytesResultSchema, e.ReadSegmentBytesResultSchema, e.ReadinessRegistry, e.ReadinessTimeoutError, e.RecentTracksPageSchema, e.RecentTracksQueryInput, e.RecordingAvailabilitySchema, e.RecordingBandModeSchema, e.RecordingBandSchema, e.RecordingBandTriggersSchema, e.RecordingConfigSchema, e.RecordingDaysSchema, e.RecordingDeviceUsageSchema, e.RecordingLocationUsageSchema, e.RecordingManifestSchema, e.RecordingRangeSchema, e.RecordingRebalanceInputSchema, e.RecordingRebalanceMoveSchema, e.RecordingRebalancePlanSchema, e.RecordingRebalanceSkipReasonSchema, e.RecordingRebalanceSkipSchema, e.RecordingRetentionSchema, e.RecordingStatusSchema, e.RecordingStorageModeSchema, e.RecordingStorageUsageSchema, e.RecordingTriggersSchema, e.RecordingWeekdaySchema, e.RedirectLoginMethodSchema, e.RelocateFootageClassSchema, e.RelocateFootageInputSchema, e.RelocateJobSchema, e.RelocateJobStateSchema, e.RelocateMediaInputSchema, e.RenderedAsSchema, e.ReportMotionInputSchema, e.RetrainAnnotationDraftSchema, e.RetrainAnnotationKindSchema, e.RetrainAnnotationSchema, e.RetrainAnnotationSourceSchema, e.RetrainAssistResultSchema, e.RetrainAssistSubjectSchema, e.RetrainCopyRefusalSchema, e.RetrainFrameCandidateSchema, e.RetrainFrameListSchema, e.RetrainFrameSchema, e.RetrainFrameSelectionSchema, e.RetrainMacroClassSchema, e.RetrainStatusSchema, e.RetrainTrackSchema, e.RetrainTransitionResultSchema, e.RingBuffer, e.RtpSourceSchema, e.RtspRestreamEntrySchema, e.RunnerCameraConfigSchema, e.RunnerCameraDeviceUIFields, e.RunnerFrameSourceSchema, e.RunnerInferenceDeviceSchema, e.RunnerLocalLoadSchema, e.RunnerLocalMetricsSchema, e.SCENE_CONDITIONS, e.SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX, e.SCENE_CONFIRM_DEFAULT_TIMEOUT_MS, e.SCENE_DEFAULT_ANCHOR_THRESHOLD, e.SCENE_DEFAULT_CHECK_INTERVAL_SEC, e.SCENE_DEFAULT_OBSERVATION_SPACING_SEC, e.SCENE_DEFAULT_QUIET_SECONDS, e.SCENE_DEFAULT_UNCOVERED_POLICY, e.SCENE_DIVERGED, e.SCENE_RESET_RECAPTURES, e.SCOPE_PRESETS, e.SCRUB_THUMBNAIL_PRESETS, e.SCRUB_THUMBNAIL_PRESET_LABELS, e.SCRUB_THUMBNAIL_PRESET_ORDER, e.SENSOR_FEATURES, e.SENSOR_MAP, e.SOURCE_INFO_METADATA_KEY, e.STREAM_PROFILE_META, e.STREAM_QUALITY_LABELS, e.SUB_DETECTION_TYPES, e.SYSTEM_CAP_NAMES, e.SYSTEM_SCOPE_DEVICE_METHODS, e.SceneCheckSchema, e.SceneConditionSchema, e.SceneConfirmSchema, e.SceneMonitorSchema, e.SceneMonitorStateSchema, e.SceneMonitorStatusSchema, e.SceneReferenceSchema, e.SceneUnavailableSchema, e.SceneUncoveredPolicySchema, e.SceneVerdictSchema, e.ScopedTokenSchema, e.ScopedTokenSummarySchema, e.ScoredObjectEventSchema, e.ScriptRunnerStatusSchema, e.ScrubThumbnailPresetSchema, e.SearchResultSchema, e.SendEmailInputSchema, e.SendEmailResultSchema, e.SendResultSchema, e.SensorEventSchema, e.ServerBootModeSchema, e.ServerPackageStatusSchema, e.ServerRollbackInfoSchema, e.ServerUpdateActionResultSchema, e.ServerUpdateCheckResultSchema, e.ServerUpdateStateSchema, e.SetSiteLocationInputSchema, e.SettingsPatchSchema, e.SettingsRecordSchema, e.SettingsSchemaWithValuesSchema, e.SettingsUpdateResultSchema, e.ShmRingStatsSchema, e.SiteLocationSchema, e.SiteLocationSourceSchema, e.SiteLocationStatusSchema, e.SmokeStatusSchema, e.SmtpStatusSchema, e.SnapshotImageSchema, e.SourceInfoSchema, e.SpatialDetectionSchema, e.SsoBridgeClaimsSchema, e.StartEmbeddedInputSchema, e.StationaryObjectSchema, e.StorageAbortUploadInputSchema, e.StorageBeginDownloadInputSchema, e.StorageBeginDownloadResultSchema, e.StorageBeginUploadInputSchema, e.StorageBeginUploadResultSchema, e.StorageEndDownloadInputSchema, e.StorageFinalizeUploadInputSchema, e.StorageLocationDeclarationSchema, e.StorageLocationRefSchema, e.StorageLocationSchema, e.StorageLocationTypeSchema, e.StorageMigrationClassSchema, e.StorageMigrationDestinationsSchema, e.StorageMigrationFootageMoveInputSchema, e.StorageMigrationInputSchema, e.StorageMigrationJobSchema, e.StorageMigrationLeaseInputSchema, e.StorageMigrationMediaMoveInputSchema, e.StorageMigrationMoveSchema, e.StorageMigrationParticipantSchema, e.StorageMigrationPhaseSchema, e.StorageMigrationPlanSchema, e.StorageProviderInfoSchema, e.StorageReadChunkInputSchema, e.StorageTestLocationResultSchema, e.StorageWriteChunkInputSchema, e.StreamCodecSchema, e.StreamFormatSchema, e.StreamNetworkStatsSchema, e.StreamParamsOptionsSchema, e.StreamParamsStatusSchema, e.StreamProfileConfigSchema, e.StreamProfileOptionsSchema, e.StreamProfilePatchSchema, e.StreamProfileSchema, e.StreamSourceEntrySchema, e.StreamSourceSchema, e.SubscribeAudioChunksInputSchema, e.SubscribeAudioChunksResultSchema, e.SubscribeFramesInputSchema, e.SubscribeFramesResultSchema, e.SwitchStatusSchema, e.SystemMetricsSchema, e.SystemMirror, e.TAXONOMY_COLORS, e.TIMELAPSE_DENSE_FLOOR_SEC, e.TIMEZONES, e.TRANSCODE_DOWN_MAX_BITRATE_KBPS, e.TRANSCODE_DOWN_MAX_HEIGHT, e.TamperStatusSchema, e.TankStatusSchema, e.TargetKindCapsSchema, e.TargetKindLevelSchema, e.TargetKindSchema, e.TargetSchema, e.TemperatureSensorStatusSchema, e.TerminalInstanceInfoSchema, e.TerminalLegacyCameraSchema, e.TerminalOutputBatchSchema, e.TerminalOutputEventSchema, e.TerminalProfileInfoSchema, e.TerminalSessionInfoSchema, e.TestConnectionResultSchema, e.TestConnectionStatusEnum, e.TestResultSchema, e.TimelapseRuleInputSchema, e.TimelapseRulePatchSchema, e.TimelapseRuleSchema, e.TimelapseTemplateSchema, e.ToastSchema, e.TokenScopeSchema, e.TopologyNodeSchema, e.TopologyProcessSchema, e.TopologyServiceSchema, e.TrackCascadeCountsSchema, e.TrackEnvelopeSchema, e.TrackFlagsPatchSchema, e.TrackFlagsSchema, e.TrackProjectionSchema, e.TrackSchema, e.TrackSourceSchema, e.TrackStateSchema, e.TrackZoneFilterSchema, e.TrackedDetectionSchema, e.TrainingExportDeviceTotalsSchema, e.TrainingExportSummarySchema, e.TurnServerSchema, e.UNIT_TABLE, e.UnifiedBrokerInfoSchema, e.UnitConversionError, e.UpdateIntegrationInputSchema, e.UpdateStatusSchema, e.UpdateUserInputSchema, e.UserRecordSchema, e.UserSummarySchema, e.VacuumControlStatusSchema, e.VacuumStateSchema, e.ValveStateSchema, e.ValveStatusSchema, e.VectorDeclareIndexInputSchema, e.VectorDeleteByFilterInputSchema, e.VectorDeleteInputSchema, e.VectorDeleteResultSchema, e.VectorFilterSchema, e.VectorGetInputSchema, e.VectorGetResultSchema, e.VectorItemSchema, e.VectorMatchSchema, e.VectorMetadataSchema, e.VectorMetricSchema, e.VectorQueryInputSchema, e.VectorQueryResultSchema, e.VectorStatsInputSchema, e.VectorStatsResultSchema, e.VectorUpsertInputSchema, e.VectorUpsertResultSchema, e.VibrationStatusSchema, e.VideoEncodeSchema, e.WEBRTC_EGRESS_PROFILE, e.WELL_KNOWN_TABS, e.WELL_KNOWN_TAB_MAP, e.WaterHeaterStatusSchema, e.WeatherStatusSchema, e.WebrtcStreamChoiceSchema, e.WebrtcStreamTargetSchema, e.WhiteBalanceModeSchema, e.WidgetHostEnum, e.WidgetLoginMethodSchema, e.WidgetMetadataSchema, e.WidgetRemoteSchema, e.WidgetSizeEnum, e.YAMNET_TO_MACRO, e.ZoneCrossingDirectionSchema, e.ZoneCrossingSchema, e.ZoneKindEnum, e.ZoneRuleModeEnum, e.ZoneRuleSchema, e.ZoneRuleStageEnum, e.ZoneRulesArraySchema, e.ZoneSchema, e.ZoneScopeBreakdownSchema, e.accessoriesCapability, e.accessoryStableId, e.addonPagesCapability, e.addonPagesSourceCapability, e.addonRoutesCapability, e.addonSettingsCapability, e.addonWidgetsCapability, e.addonWidgetsSourceCapability, e.addonsCapability, e.adminUiCapability, e.airQualitySensorCapability, e.alarmPanelCapability, e.alertsCapability, e.ambientLightSensorCapability, e.asBoolean, e.asJsonArray, e.asJsonObject, e.asNumber, e.asString, e.assertTimelapseCadences, e.audioAnalysisCapability, e.audioAnalyzerCapability, e.audioCodecCapability, e.audioIsFailClosed, e.audioLabelChoices, e.audioMetricsCapability, e.audioModeOf, e.audioOrDefaults, e.audioPlanFromEncodeProfile, e.authProviderCapability, e.autoAssignProfiles, e.automationControlCapability, e.backupCapability, e.bareAddonId, e.batteryCapability, e.bestLocationMatch, e.binaryCapability, e.bindAddonActions, e.brightnessCapability, e.brokerCapability, e.buildAddonRouteProvider, e.buildAudioArgs, e.buildEventKindDescriptor, e.buildFfmpegArgs, e.buildInputArgs, e.buildModelVariantGroups, e.buildNcTaxonomy, e.buildRoleScopes, e.buildStreamParamsConfigSchema, e.buildVideoArgs, e.buttonCapability, e.cameraCredentialsCapability, e.cameraPipelineConfigCapability, e.cameraStreamsCapability, e.canConvertUnit, e.canonicalEgressPlan, e.carbonMonoxideCapability, e.cellsToRects, e.classifyBearerPrincipal, e.classifyStream, e.classifyStreams, e.climateControlCapability, e.collectHydratedFieldEntries, e.collectHydratedFieldValues, e.colorCapability, e.colorForKind, e.compileExpression, e.compileExpressionSafe, e.composeSwitchedOff, e.conditionDepth, e.connectionTestCapability, e.connectivityCapability, e.consumablesCapability, e.contactCapability, e.controlCapability, e.convertUnit, e.coreBlockAddonId, e.coreBlockIdFromAddonId, e.coreBlocksCapability, e.cosineSimilarity, e.countConditionLeaves, e.coverCapability, e.createDeviceProxy, e.createDurableState, e.createEvent, e.createExpressionScope, e.createHwAccelCache, e.createLazyTrpcSource, e.createMirrorSource, e.createRuntimeStateBridge, e.createSliceHandle, e.createSystemProxy, e.customAction, e.customModelRegistryCapability, e.dataStoreProviderCapability, e.dayNightCapability, e.declarationOwnerNodeId, e.decodeVectorBase64, e.decoderCapability, e.defaultDeviceFor, e.defineCustomActions, e.deriveBatteryPresence, e.deriveCameraSwitches, e.deriveDetailCropRect, e.deriveRecordingMode, e.describeModelVariant, e.detectAccessRole, e.detectionPipelineCapability, e.deviceAdoptionCapability, e.deviceBackendToFormat, e.deviceCustomAction, e.deviceDiscoveryCapability, e.deviceExportCapability, e.deviceManagerCapability, e.deviceMatchesProfile, e.deviceOpsCapability, e.deviceProviderCapability, e.deviceSelectorMatches, e.deviceStateCapability, e.deviceStatusCapability, e.doorbellCapability, e.egressTranscodeSharingKey, e.egressTransportFromRequest, e.embeddingEncoderCapability, e.emitDownForOwnedCaps, e.emitReadiness, e.encodeProfileFromStreamShape, e.encodeVectorBase64, e.enumSensorCapability, e.enumerateInferenceDevices, e.enumerateItemArrayFields, e.enumerateSchemaFields, e.errMsg, e.evaluateAst, e.evaluateExpressionSource, e.evaluateZoneRules, e.event, e.eventEmitterCapability, e.eventsCapability, e.expandCapMethods, e.extractNestedAddonId, e.extractSourceInfoFromMetadata, e.faceGalleryCapability, e.fanControlCapability, e.featureProbeCapability, e.filesystemBrowseCapability, e.findTimezone, e.floodCapability, e.formatForBackend, e.formatForRuntime, e.gasCapability, e.generateAutomationBlock, e.getAudioMacroClassIds, e.getByPath, e.getCapsByProviderKind, e.getTaxonomyEntry, e.hasMotionTrigger, e.hfModelUrl, e.htmlToText, e.humidifierCapability, e.humiditySensorCapability, e.hydrateSchema, e.imageCapability, e.imageSettingsCapability, e.integrationsCapability, e.intercomCapability, e.invocationFromEncodeProfile, e.isAgentOnlyPlacement, e.isArrayOutputSchema, e.isAudioLabelSelected, e.isBaseConditionKey, e.isBatteryPresenceFault, e.isCollectionArrayMethod, e.isDeployableToAgent, e.isDetectionMacroClass, e.isDeviceConfigCap, e.isDeviceScopedCap, e.isEvent, e.isIsolatedBuiltin, e.isNode, e.isObjectInput, e.isRestoredCap, e.isSameAddonId, e.isScheduleActive, e.isSoftwareDecode, e.isVoidInput, e.jobKindSchema, e.kebabToCamel, e.knownValues, e.lawnMowerControlCapability, e.lifecycleJobSchema, e.lifecycleJobScopeSchema, e.lifecycleJobStateSchema, e.lifecycleTaskSchema, e.llmCapability, e.llmRuntimeCapability, e.localNetworkCapability, e.locationSimilarity, e.lockControlCapability, e.logBannerArgs, e.logDestinationCapability, e.logLevelAtMost, e.loginMethodCapability, e.looseSchema, e.makeProfileBrokerId, a = e.makeSourceBrokerId, e.mapAudioLabelToMacro, e.markdownToHtmlLite, e.markdownToText, e.maskUrlCredentials, e.mediaPlayerCapability, e.mergeSourceInfo, e.meshNetworkCapability, e.method, e.methodAccessForHttpMethod, e.metricsProviderCapability, e.modelConvertCapability, e.modelDistributorCapability, e.modelFormatForRuntime, e.motionCapability, e.motionDetectionCapability, e.motionTriggerCapability, e.motionZonesCapability, e.mqttBrokerCapability, e.nativeObjectDetectionCapability, e.networkAccessCapability, e.networkQualityCapability, e.nodePin, e.nodesCapability, e.normalizeAddonInitResult, e.normalizeAudioLabel, e.normalizeTokenScopes, e.normalizeUnit, e.notificationOutputCapability, e.notificationRulesCapability, e.notifierCapability, e.numericSensorCapability, e.oauthIntegrationCapability, e.objectInputDeclaresAddonId, e.osdCapability, e.osdManagerCapability, e.parseCameraStreamConfig, e.parseExpression, e.parseJsonArray, e.parseJsonObject, e.parseJsonUnknown, e.parseProfileBrokerId, e.parseStreamParamsFormPatch, e.patchAudio, e.petFeederCapability, e.pickAccessoryControl, e.pickDetailCropConvention, e.pickNativeLeaseOverride, e.pickPreferredRtspEntry, e.pickVideoEncoder, e.pickerForCondition, e.pipelineAnalyticsCapability, e.pipelineExecutorCapability, e.pipelineOrchestratorCapability, e.pipelineRunnerCapability, e.plateGalleryCapability, e.platformProbeCapability, e.powerMeterCapability, e.prepareNotification, e.presenceCapability, e.pressureSensorCapability, e.principalMayReachAddon, e.privacyMaskCapability, e.procedureAuthKey, e.ptzAutotrackCapability, e.ptzCapability, e.pythonScriptForBackend, e.readDetailCropConvention, e.readDeviceStateFrom, e.readNativeLeaseOverride, e.readNodePin, e.readTimelapseGeneratedAt, e.readinessKey, e.rebootCapability, e.recordingCapability, e.recordingExportCapability, e.rectsToCells, e.requiresPython, e.resolveAddonExecution, e.resolveAddonGroup, e.resolveAddonPlacement, e.resolveAddonRuntime, e.resolveCapMount, e.resolveDetectionRuntime, e.resolveDeviceControlKind, e.resolveDeviceProfile, e.resolveEgressDecodeHwAccel, e.resolveFormat, e.resolveHydratedFieldValue, e.resolveModelFormat, e.resolveMutate, e.resolveRunnerId, e.resolveScrubThumbnailGeometry, e.resolveVariantModelId, e.resolveViewableDeviceIds, e.roleSpec, e.runInferenceStep, e.runtimeDevices, e.runtimeStatePolicyFor, e.sceneMonitorCapability, e.scopeInherits, e.scopeKey, e.scopesAllowAddon, e.scopesAllowDeviceCap, e.scoreRuntimes, e.scriptRunnerCapability, e.selectAssignedProfileSlots, e.serverManagementCapability, e.setByPath, e.settingsStoreCapability, e.sleep, e.sleepCancellable, e.smokeCapability, e.smtpProviderCapability, e.snapshotCapability, e.ssoBridgeCapability, e.startReachabilityPoll, e.stateVocabularyFor, e.storageCapability, e.storageEvictableCapability, e.storageMigrationCapability, e.storageProviderCapability, e.streamBrokerCapability, e.streamCatalogCapability, e.streamParamsCapability, e.streamPixels, e.streamQualityLabel, e.subKindsOf, e.summarisePrivacyAudio, e.summarizeEffectiveScope, e.supportedRuntimes, e.switchCapability, e.switchedOffIds, e.synthesizeSourceInfo, e.systemCapability, e.tamperCapability, e.taskLogEntrySchema, e.taskPhaseSchema, e.taskTargetSchema, e.temperatureSensorCapability, e.terminalSessionCapability, e.textToHtml, e.toDeviceSummary, e.toExpressionValue, e.toNodeId, e.toStreamSourceEntry, e.toastCapability, e.toggleAudioLabel, e.tokenize, e.transcodeBody, e.tryConvertUnit, e.turnProviderCapability, e.unitDimension, e.unitsForDimension, e.updateCapability, e.userManagementCapability, e.userPasskeysCapability, e.vacuumControlCapability, e.validateExpressionSource, e.validateRecipeBounds, e.valveCapability, e.vectorDimFromBase64, e.vectorStoreCapability, e.vibrationCapability, e.videoclipsCapability, e.viewerUiCapability, e.waterHeaterCapability, e.weatherCapability, e.webrtcClientHintsSchema, e.webrtcSessionCapability, e.wiringAddonHealthSchema, e.wiringHealthSnapshotSchema, e.wiringNodeHealthSchema, e.wiringProbeKindSchema, e.wiringProbeResultSchema, e.zodEntriesToConfigUI, e.zoneAnalyticsCapability, e.zoneRulesCapability, e.zonesCapability, e.default;
|
|
20
|
+
}, s = i.share["default:@camstack/types"];
|
|
21
|
+
s === void 0 ? n.then(() => {
|
|
22
|
+
if (s = i.share["default:@camstack/types"], s === void 0) throw Error("[Module Federation] Shared module @camstack/types was imported before federation bootstrap finished.");
|
|
23
|
+
o(s);
|
|
24
|
+
}) : o(s);
|
|
25
|
+
//#endregion
|
|
26
|
+
export { a as t };
|
|
@@ -36,7 +36,7 @@ async function r() {
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"@camstack/types": {
|
|
39
|
-
version: "1.2.
|
|
39
|
+
version: "1.2.77",
|
|
40
40
|
scope: "default",
|
|
41
41
|
shareConfig: {
|
|
42
42
|
singleton: !0,
|
|
@@ -81,7 +81,7 @@ async function r() {
|
|
|
81
81
|
}
|
|
82
82
|
},
|
|
83
83
|
"@camstack/ui-library": {
|
|
84
|
-
version: "1.2.
|
|
84
|
+
version: "1.2.54",
|
|
85
85
|
scope: "default",
|
|
86
86
|
shareConfig: {
|
|
87
87
|
singleton: !0,
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
5
|
+
const require_dist = require("../dist-B57MztMq.js");
|
|
6
6
|
const require_remote_restream = require("../remote-restream-BYbAsgUf.js");
|
|
7
7
|
let node_crypto = require("node:crypto");
|
|
8
8
|
node_crypto = require_dist.__toESM(node_crypto, 1);
|
|
@@ -184,6 +184,151 @@ function formatProbedSummary(declared, snapshot, opts) {
|
|
|
184
184
|
return parts.join(SEP);
|
|
185
185
|
}
|
|
186
186
|
//#endregion
|
|
187
|
+
//#region src/stream-broker/battery-wake-on-play.ts
|
|
188
|
+
/**
|
|
189
|
+
* Wake-on-play — pressing play on a sleeping battery camera wakes it, and the
|
|
190
|
+
* error you get when it does not names the real state (D173).
|
|
191
|
+
*
|
|
192
|
+
* ## What this replaces
|
|
193
|
+
*
|
|
194
|
+
* `webrtcSession.handleOffer` resolved a brokerId, found nothing registered
|
|
195
|
+
* for it, and threw `No broker for stream <id>`. On a mains camera that
|
|
196
|
+
* sentence is true and useful: something is misconfigured. On a battery
|
|
197
|
+
* camera it was neither — the camera was healthy, asleep, and one Baichuan
|
|
198
|
+
* wake away from streaming. Nothing on the live path had ever called
|
|
199
|
+
* `battery.wakeForStream`; its only caller in the whole repo was the Alexa
|
|
200
|
+
* addon, so the viewer's own play button was the one surface that could not
|
|
201
|
+
* wake a camera.
|
|
202
|
+
*
|
|
203
|
+
* ## The shape
|
|
204
|
+
*
|
|
205
|
+
* A wake is DEMAND. It is the operator asking for the camera, so it bypasses
|
|
206
|
+
* every proactive-wake cooldown — the contract forbids us waking a battery cam
|
|
207
|
+
* on our own initiative, and says nothing about waking it because somebody
|
|
208
|
+
* pressed play. That asymmetry is the whole design: brokers stay AVAILABLE
|
|
209
|
+
* (definable, from the durable catalog) without being ACTIVE, and the dial is
|
|
210
|
+
* the only thing that touches the camera.
|
|
211
|
+
*
|
|
212
|
+
* ## Honest states
|
|
213
|
+
*
|
|
214
|
+
* The three outcomes are three different sentences, and a client must be able
|
|
215
|
+
* to tell them apart:
|
|
216
|
+
*
|
|
217
|
+
* - `sleeping` — we asked, the firmware did not answer inside the bound. Try
|
|
218
|
+
* again; the camera is probably fine.
|
|
219
|
+
* - `waking` — the firmware acknowledged the wake but no stream had appeared
|
|
220
|
+
* by the time we gave up. The broker's own `'waking'` placeholder reason
|
|
221
|
+
* covers this window on surfaces that render one.
|
|
222
|
+
* - `unreachable` — passive evidence says nothing has been heard from this
|
|
223
|
+
* camera for hours (see `deriveBatteryPresence`). We do NOT spend a wake on
|
|
224
|
+
* it: this is a fault, and dialling it would only add a timeout to it.
|
|
225
|
+
*
|
|
226
|
+
* A flat "No broker for stream" is none of those, and it is the one thing this
|
|
227
|
+
* module must never produce for a battery camera.
|
|
228
|
+
*/
|
|
229
|
+
/**
|
|
230
|
+
* Why a battery camera's stream could not be produced. Carries the resolved
|
|
231
|
+
* presence so a caller — or a client reading the error text — can tell a
|
|
232
|
+
* normal sleeper from a dead one.
|
|
233
|
+
*/
|
|
234
|
+
var BatteryStreamUnavailableError = class extends Error {
|
|
235
|
+
presence;
|
|
236
|
+
deviceId;
|
|
237
|
+
constructor(deviceId, presence, detail) {
|
|
238
|
+
super(`Battery camera ${String(deviceId)} is ${presence}: ${detail}`);
|
|
239
|
+
this.name = "BatteryStreamUnavailableError";
|
|
240
|
+
this.presence = presence;
|
|
241
|
+
this.deviceId = deviceId;
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
/** Bound on the firmware wake. Matches the cap's own sensible range. */
|
|
245
|
+
var WAKE_FOR_STREAM_TIMEOUT_MS = 8e3;
|
|
246
|
+
/** Bound on the post-wake catalog nudge. Sized off the camera's ~14s awake
|
|
247
|
+
* window: long enough for a real `onWakeTransition` catalog build to land,
|
|
248
|
+
* short enough that a viewer is not left staring at nothing. */
|
|
249
|
+
var STREAM_PARAMS_SETTLE_TIMEOUT_MS = 6e3;
|
|
250
|
+
/**
|
|
251
|
+
* Make a broker available for a battery camera that has none, by asking the
|
|
252
|
+
* camera to wake.
|
|
253
|
+
*
|
|
254
|
+
* Returns normally when a broker exists (either it already did, or the wake
|
|
255
|
+
* produced one, or the device is not battery-operated and the caller's
|
|
256
|
+
* pre-existing error path should run). Throws
|
|
257
|
+
* {@link BatteryStreamUnavailableError} only for a battery camera we could not
|
|
258
|
+
* produce a stream for — with the reason named.
|
|
259
|
+
*
|
|
260
|
+
* Retries the broker resolution exactly ONCE after the wake. A second wake
|
|
261
|
+
* would be us deciding the camera should be up, which is the proactive
|
|
262
|
+
* behaviour the contract forbids; the operator pressing play again is a new
|
|
263
|
+
* demand and gets a new wake.
|
|
264
|
+
*/
|
|
265
|
+
async function wakeBatteryDeviceForPlay(deviceId, deps) {
|
|
266
|
+
if (deps.hasBroker()) return;
|
|
267
|
+
if (await deps.isBatteryDevice(deviceId).catch(() => null) !== true) return;
|
|
268
|
+
const facts = await deps.readBatteryFacts(deviceId).catch(() => null);
|
|
269
|
+
const nowMs = (deps.nowMs ?? Date.now)();
|
|
270
|
+
const presence = require_dist.deriveBatteryPresence({
|
|
271
|
+
status: facts,
|
|
272
|
+
nowMs
|
|
273
|
+
});
|
|
274
|
+
if (presence === "unreachable") {
|
|
275
|
+
deps.logger.warn("wake-on-play refused — battery camera is unreachable, not asleep", {
|
|
276
|
+
tags: { deviceId },
|
|
277
|
+
meta: {
|
|
278
|
+
lastContactAt: facts?.lastContactAt ?? 0,
|
|
279
|
+
silenceMs: nowMs - (facts?.lastContactAt ?? 0)
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
throw new BatteryStreamUnavailableError(deviceId, "unreachable", "nothing has been heard from it for hours — check the battery or its network");
|
|
283
|
+
}
|
|
284
|
+
deps.logger.info("wake-on-play — no broker for a sleeping battery camera, requesting a wake", {
|
|
285
|
+
tags: { deviceId },
|
|
286
|
+
meta: {
|
|
287
|
+
presence,
|
|
288
|
+
timeoutMs: WAKE_FOR_STREAM_TIMEOUT_MS
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
const wake = await deps.wakeForStream(deviceId, WAKE_FOR_STREAM_TIMEOUT_MS).catch(() => ({
|
|
292
|
+
awoke: false,
|
|
293
|
+
durationMs: 0
|
|
294
|
+
}));
|
|
295
|
+
const nudged = await deps.awaitStreamParamsChanged(deviceId, STREAM_PARAMS_SETTLE_TIMEOUT_MS).catch(() => false);
|
|
296
|
+
await deps.reconcileCatalog(deviceId).catch((err) => {
|
|
297
|
+
deps.logger.debug("wake-on-play: catalog reconcile failed", {
|
|
298
|
+
tags: { deviceId },
|
|
299
|
+
meta: { error: err instanceof Error ? err.message : String(err) }
|
|
300
|
+
});
|
|
301
|
+
});
|
|
302
|
+
await deps.ensureBroker().catch((err) => {
|
|
303
|
+
deps.logger.debug("wake-on-play: broker retry failed", {
|
|
304
|
+
tags: { deviceId },
|
|
305
|
+
meta: { error: err instanceof Error ? err.message : String(err) }
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
if (deps.hasBroker()) {
|
|
309
|
+
deps.logger.info("wake-on-play succeeded — broker available after wake", {
|
|
310
|
+
tags: { deviceId },
|
|
311
|
+
meta: {
|
|
312
|
+
awoke: wake.awoke,
|
|
313
|
+
wakeMs: wake.durationMs,
|
|
314
|
+
nudged
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
const outcome = wake.awoke ? "waking" : "sleeping";
|
|
320
|
+
deps.logger.warn("wake-on-play exhausted — no stream after the wake", {
|
|
321
|
+
tags: { deviceId },
|
|
322
|
+
meta: {
|
|
323
|
+
awoke: wake.awoke,
|
|
324
|
+
wakeMs: wake.durationMs,
|
|
325
|
+
nudged,
|
|
326
|
+
outcome
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
throw new BatteryStreamUnavailableError(deviceId, outcome, wake.awoke ? "it acknowledged the wake but no stream had appeared yet — try again in a few seconds" : "it did not answer the wake in time — try again");
|
|
330
|
+
}
|
|
331
|
+
//#endregion
|
|
187
332
|
//#region src/stream-broker/stream-broker/ffmpeg-args-common.ts
|
|
188
333
|
/** The `-hide_banner -loglevel <level>` preamble every broker ffmpeg site opens with. */
|
|
189
334
|
function logBannerArgs(level) {
|
|
@@ -15052,6 +15197,82 @@ var StreamBrokerManager = class StreamBrokerManager {
|
|
|
15052
15197
|
this.remoteAdapterEnsures.delete(brokerId);
|
|
15053
15198
|
}
|
|
15054
15199
|
}
|
|
15200
|
+
/** Is a broker (local or remote-adapter) registered for `brokerId` right now?
|
|
15201
|
+
* Synchronous on purpose — the wake-on-play retry has to re-ask this between
|
|
15202
|
+
* two awaits, and an async answer would invite a race the caller cannot see. */
|
|
15203
|
+
hasRegisteredBroker(brokerId) {
|
|
15204
|
+
return this.brokers.has(brokerId) || this.remoteBrokerAdapters.has(brokerId);
|
|
15205
|
+
}
|
|
15206
|
+
/**
|
|
15207
|
+
* Wake-on-play (D173). Called by `WebrtcSessionProvider` when the normal
|
|
15208
|
+
* resolution left no broker: if the device is battery-operated, ask the
|
|
15209
|
+
* camera to wake, re-pull its catalog, and retry the resolution ONCE.
|
|
15210
|
+
*
|
|
15211
|
+
* Throws `BatteryStreamUnavailableError` — naming `sleeping` / `waking` /
|
|
15212
|
+
* `unreachable` — instead of letting `BrokerWebrtcServer` answer a healthy,
|
|
15213
|
+
* sleeping camera with a flat "No broker for stream". Returns normally (and
|
|
15214
|
+
* changes nothing) for a non-battery device, so the pre-existing error path
|
|
15215
|
+
* is byte-identical everywhere it used to be right.
|
|
15216
|
+
*/
|
|
15217
|
+
async wakeBatteryDeviceOnPlay(deviceId, brokerId, camStreamId) {
|
|
15218
|
+
if (this.hasRegisteredBroker(brokerId)) return;
|
|
15219
|
+
if (this.disabledDevices.has(deviceId)) return;
|
|
15220
|
+
const api = this.api;
|
|
15221
|
+
if (!api) return;
|
|
15222
|
+
await wakeBatteryDeviceForPlay(deviceId, {
|
|
15223
|
+
logger: this.logger,
|
|
15224
|
+
isBatteryDevice: async (id) => {
|
|
15225
|
+
const dev = await api.deviceManager.getDevice.query({ deviceId: id }).catch(() => null);
|
|
15226
|
+
if (!dev) return null;
|
|
15227
|
+
return dev.features.includes(require_dist.DeviceFeature.BatteryOperated);
|
|
15228
|
+
},
|
|
15229
|
+
readBatteryFacts: async (id) => {
|
|
15230
|
+
const slice = await api.deviceState.getCapSlice.query({
|
|
15231
|
+
deviceId: id,
|
|
15232
|
+
capName: require_dist.batteryCapability.name
|
|
15233
|
+
}).catch(() => null);
|
|
15234
|
+
const parsed = require_dist.BatteryStatusSchema.safeParse(slice);
|
|
15235
|
+
if (!parsed.success) return null;
|
|
15236
|
+
return {
|
|
15237
|
+
sleeping: parsed.data.sleeping,
|
|
15238
|
+
lastContactAt: parsed.data.lastContactAt
|
|
15239
|
+
};
|
|
15240
|
+
},
|
|
15241
|
+
wakeForStream: async (id, timeoutMs) => api.battery.wakeForStream.mutate({
|
|
15242
|
+
deviceId: id,
|
|
15243
|
+
timeoutMs
|
|
15244
|
+
}),
|
|
15245
|
+
awaitStreamParamsChanged: (id, timeoutMs) => this.awaitStreamParamsChanged(id, timeoutMs),
|
|
15246
|
+
reconcileCatalog: (id) => this.reconcileDeviceCatalog(id),
|
|
15247
|
+
ensureBroker: () => this.ensureBrokerForWebrtcSession(deviceId, brokerId, camStreamId),
|
|
15248
|
+
hasBroker: () => this.hasRegisteredBroker(brokerId)
|
|
15249
|
+
});
|
|
15250
|
+
}
|
|
15251
|
+
/**
|
|
15252
|
+
* Bounded wait for the provider's `StreamParamsChanged` nudge for one
|
|
15253
|
+
* device. Resolves `false` on timeout — a timeout is information, not a
|
|
15254
|
+
* failure: a catalog restored from the durable slice announces nothing, and
|
|
15255
|
+
* the caller reconciles either way.
|
|
15256
|
+
*/
|
|
15257
|
+
awaitStreamParamsChanged(deviceId, timeoutMs) {
|
|
15258
|
+
const bus = this.eventBus;
|
|
15259
|
+
if (!bus) return Promise.resolve(false);
|
|
15260
|
+
return new Promise((resolve) => {
|
|
15261
|
+
let settled = false;
|
|
15262
|
+
const finish = (value) => {
|
|
15263
|
+
if (settled) return;
|
|
15264
|
+
settled = true;
|
|
15265
|
+
clearTimeout(timer);
|
|
15266
|
+
unsubscribe();
|
|
15267
|
+
resolve(value);
|
|
15268
|
+
};
|
|
15269
|
+
const unsubscribe = bus.subscribe({ category: require_dist.EventCategory.StreamParamsChanged }, (event) => {
|
|
15270
|
+
if (event.data.deviceId === deviceId) finish(true);
|
|
15271
|
+
});
|
|
15272
|
+
const timer = setTimeout(() => finish(false), timeoutMs);
|
|
15273
|
+
timer.unref?.();
|
|
15274
|
+
});
|
|
15275
|
+
}
|
|
15055
15276
|
/**
|
|
15056
15277
|
* Single-flight body for `ensureBrokerForWebrtcSession`'s remote-adapter
|
|
15057
15278
|
* get-or-create — resolves the ingest owner, and for `remote-adapter` mode
|
|
@@ -34299,6 +34520,8 @@ var WebrtcSessionProvider = class WebrtcSessionProvider {
|
|
|
34299
34520
|
async ensureBrokerAvailable(deviceId, brokerId, camStreamId) {
|
|
34300
34521
|
if (typeof this.manager.ensureBrokerForWebrtcSession !== "function") return;
|
|
34301
34522
|
await this.manager.ensureBrokerForWebrtcSession(deviceId, brokerId, camStreamId);
|
|
34523
|
+
if (typeof this.manager.wakeBatteryDeviceOnPlay !== "function") return;
|
|
34524
|
+
await this.manager.wakeBatteryDeviceOnPlay(deviceId, brokerId, camStreamId);
|
|
34302
34525
|
}
|
|
34303
34526
|
/**
|
|
34304
34527
|
* Best-effort cleanup for the remote-encoded adapter `ensureBrokerAvailable`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as __toESM, t as __commonJSMin } from "../chunk-DnnnRqeS.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { A as createHwAccelCache, At as number, C as RingBuffer, Dt as discriminatedUnion, Et as boolean, Ft as EventCategory, Mt as record, Nt as string, O as batteryCapability, P as deriveBatteryPresence, Pt as union, Q as resolveEgressDecodeHwAccel, R as egressTranscodeSharingKey, T as addonWidgetsSourceCapability, Tt as array, W as maskUrlCredentials, _t as makeProfileBrokerId, at as AUDIO_PRESETS, b as RATE_CONTROL_TIGHT, ct as invocationFromEncodeProfile, dt as CAM_PROFILE_ORDER, ft as DeviceFeature, gt as isEvent, i as BatteryStatusSchema, it as errMsg, jt as object, k as cameraStreamsCapability, kt as literal, lt as isSoftwareDecode, mt as createEvent, ot as Fmp4BoxSplitter, p as EncodeProfileSchema, pt as DeviceType, rt as webrtcSessionCapability, st as buildFfmpegArgs$1, tt as streamBrokerCapability, ut as BaseAddon, vt as makeSourceBrokerId, wt as _enum, xt as parseProfileBrokerId, y as RATE_CONTROL_RELAXED, yt as nodePin, z as egressTransportFromRequest } from "../dist-DGp0dRiq.mjs";
|
|
3
3
|
import { n as profileForStreamId, r as parseRestreamPath } from "../remote-restream-Ci7RXNGb.mjs";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import * as crypto$1 from "node:crypto";
|
|
@@ -179,6 +179,151 @@ function formatProbedSummary(declared, snapshot, opts) {
|
|
|
179
179
|
return parts.join(SEP);
|
|
180
180
|
}
|
|
181
181
|
//#endregion
|
|
182
|
+
//#region src/stream-broker/battery-wake-on-play.ts
|
|
183
|
+
/**
|
|
184
|
+
* Wake-on-play — pressing play on a sleeping battery camera wakes it, and the
|
|
185
|
+
* error you get when it does not names the real state (D173).
|
|
186
|
+
*
|
|
187
|
+
* ## What this replaces
|
|
188
|
+
*
|
|
189
|
+
* `webrtcSession.handleOffer` resolved a brokerId, found nothing registered
|
|
190
|
+
* for it, and threw `No broker for stream <id>`. On a mains camera that
|
|
191
|
+
* sentence is true and useful: something is misconfigured. On a battery
|
|
192
|
+
* camera it was neither — the camera was healthy, asleep, and one Baichuan
|
|
193
|
+
* wake away from streaming. Nothing on the live path had ever called
|
|
194
|
+
* `battery.wakeForStream`; its only caller in the whole repo was the Alexa
|
|
195
|
+
* addon, so the viewer's own play button was the one surface that could not
|
|
196
|
+
* wake a camera.
|
|
197
|
+
*
|
|
198
|
+
* ## The shape
|
|
199
|
+
*
|
|
200
|
+
* A wake is DEMAND. It is the operator asking for the camera, so it bypasses
|
|
201
|
+
* every proactive-wake cooldown — the contract forbids us waking a battery cam
|
|
202
|
+
* on our own initiative, and says nothing about waking it because somebody
|
|
203
|
+
* pressed play. That asymmetry is the whole design: brokers stay AVAILABLE
|
|
204
|
+
* (definable, from the durable catalog) without being ACTIVE, and the dial is
|
|
205
|
+
* the only thing that touches the camera.
|
|
206
|
+
*
|
|
207
|
+
* ## Honest states
|
|
208
|
+
*
|
|
209
|
+
* The three outcomes are three different sentences, and a client must be able
|
|
210
|
+
* to tell them apart:
|
|
211
|
+
*
|
|
212
|
+
* - `sleeping` — we asked, the firmware did not answer inside the bound. Try
|
|
213
|
+
* again; the camera is probably fine.
|
|
214
|
+
* - `waking` — the firmware acknowledged the wake but no stream had appeared
|
|
215
|
+
* by the time we gave up. The broker's own `'waking'` placeholder reason
|
|
216
|
+
* covers this window on surfaces that render one.
|
|
217
|
+
* - `unreachable` — passive evidence says nothing has been heard from this
|
|
218
|
+
* camera for hours (see `deriveBatteryPresence`). We do NOT spend a wake on
|
|
219
|
+
* it: this is a fault, and dialling it would only add a timeout to it.
|
|
220
|
+
*
|
|
221
|
+
* A flat "No broker for stream" is none of those, and it is the one thing this
|
|
222
|
+
* module must never produce for a battery camera.
|
|
223
|
+
*/
|
|
224
|
+
/**
|
|
225
|
+
* Why a battery camera's stream could not be produced. Carries the resolved
|
|
226
|
+
* presence so a caller — or a client reading the error text — can tell a
|
|
227
|
+
* normal sleeper from a dead one.
|
|
228
|
+
*/
|
|
229
|
+
var BatteryStreamUnavailableError = class extends Error {
|
|
230
|
+
presence;
|
|
231
|
+
deviceId;
|
|
232
|
+
constructor(deviceId, presence, detail) {
|
|
233
|
+
super(`Battery camera ${String(deviceId)} is ${presence}: ${detail}`);
|
|
234
|
+
this.name = "BatteryStreamUnavailableError";
|
|
235
|
+
this.presence = presence;
|
|
236
|
+
this.deviceId = deviceId;
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
/** Bound on the firmware wake. Matches the cap's own sensible range. */
|
|
240
|
+
var WAKE_FOR_STREAM_TIMEOUT_MS = 8e3;
|
|
241
|
+
/** Bound on the post-wake catalog nudge. Sized off the camera's ~14s awake
|
|
242
|
+
* window: long enough for a real `onWakeTransition` catalog build to land,
|
|
243
|
+
* short enough that a viewer is not left staring at nothing. */
|
|
244
|
+
var STREAM_PARAMS_SETTLE_TIMEOUT_MS = 6e3;
|
|
245
|
+
/**
|
|
246
|
+
* Make a broker available for a battery camera that has none, by asking the
|
|
247
|
+
* camera to wake.
|
|
248
|
+
*
|
|
249
|
+
* Returns normally when a broker exists (either it already did, or the wake
|
|
250
|
+
* produced one, or the device is not battery-operated and the caller's
|
|
251
|
+
* pre-existing error path should run). Throws
|
|
252
|
+
* {@link BatteryStreamUnavailableError} only for a battery camera we could not
|
|
253
|
+
* produce a stream for — with the reason named.
|
|
254
|
+
*
|
|
255
|
+
* Retries the broker resolution exactly ONCE after the wake. A second wake
|
|
256
|
+
* would be us deciding the camera should be up, which is the proactive
|
|
257
|
+
* behaviour the contract forbids; the operator pressing play again is a new
|
|
258
|
+
* demand and gets a new wake.
|
|
259
|
+
*/
|
|
260
|
+
async function wakeBatteryDeviceForPlay(deviceId, deps) {
|
|
261
|
+
if (deps.hasBroker()) return;
|
|
262
|
+
if (await deps.isBatteryDevice(deviceId).catch(() => null) !== true) return;
|
|
263
|
+
const facts = await deps.readBatteryFacts(deviceId).catch(() => null);
|
|
264
|
+
const nowMs = (deps.nowMs ?? Date.now)();
|
|
265
|
+
const presence = deriveBatteryPresence({
|
|
266
|
+
status: facts,
|
|
267
|
+
nowMs
|
|
268
|
+
});
|
|
269
|
+
if (presence === "unreachable") {
|
|
270
|
+
deps.logger.warn("wake-on-play refused — battery camera is unreachable, not asleep", {
|
|
271
|
+
tags: { deviceId },
|
|
272
|
+
meta: {
|
|
273
|
+
lastContactAt: facts?.lastContactAt ?? 0,
|
|
274
|
+
silenceMs: nowMs - (facts?.lastContactAt ?? 0)
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
throw new BatteryStreamUnavailableError(deviceId, "unreachable", "nothing has been heard from it for hours — check the battery or its network");
|
|
278
|
+
}
|
|
279
|
+
deps.logger.info("wake-on-play — no broker for a sleeping battery camera, requesting a wake", {
|
|
280
|
+
tags: { deviceId },
|
|
281
|
+
meta: {
|
|
282
|
+
presence,
|
|
283
|
+
timeoutMs: WAKE_FOR_STREAM_TIMEOUT_MS
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
const wake = await deps.wakeForStream(deviceId, WAKE_FOR_STREAM_TIMEOUT_MS).catch(() => ({
|
|
287
|
+
awoke: false,
|
|
288
|
+
durationMs: 0
|
|
289
|
+
}));
|
|
290
|
+
const nudged = await deps.awaitStreamParamsChanged(deviceId, STREAM_PARAMS_SETTLE_TIMEOUT_MS).catch(() => false);
|
|
291
|
+
await deps.reconcileCatalog(deviceId).catch((err) => {
|
|
292
|
+
deps.logger.debug("wake-on-play: catalog reconcile failed", {
|
|
293
|
+
tags: { deviceId },
|
|
294
|
+
meta: { error: err instanceof Error ? err.message : String(err) }
|
|
295
|
+
});
|
|
296
|
+
});
|
|
297
|
+
await deps.ensureBroker().catch((err) => {
|
|
298
|
+
deps.logger.debug("wake-on-play: broker retry failed", {
|
|
299
|
+
tags: { deviceId },
|
|
300
|
+
meta: { error: err instanceof Error ? err.message : String(err) }
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
if (deps.hasBroker()) {
|
|
304
|
+
deps.logger.info("wake-on-play succeeded — broker available after wake", {
|
|
305
|
+
tags: { deviceId },
|
|
306
|
+
meta: {
|
|
307
|
+
awoke: wake.awoke,
|
|
308
|
+
wakeMs: wake.durationMs,
|
|
309
|
+
nudged
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
const outcome = wake.awoke ? "waking" : "sleeping";
|
|
315
|
+
deps.logger.warn("wake-on-play exhausted — no stream after the wake", {
|
|
316
|
+
tags: { deviceId },
|
|
317
|
+
meta: {
|
|
318
|
+
awoke: wake.awoke,
|
|
319
|
+
wakeMs: wake.durationMs,
|
|
320
|
+
nudged,
|
|
321
|
+
outcome
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
throw new BatteryStreamUnavailableError(deviceId, outcome, wake.awoke ? "it acknowledged the wake but no stream had appeared yet — try again in a few seconds" : "it did not answer the wake in time — try again");
|
|
325
|
+
}
|
|
326
|
+
//#endregion
|
|
182
327
|
//#region src/stream-broker/stream-broker/ffmpeg-args-common.ts
|
|
183
328
|
/** The `-hide_banner -loglevel <level>` preamble every broker ffmpeg site opens with. */
|
|
184
329
|
function logBannerArgs(level) {
|
|
@@ -15047,6 +15192,82 @@ var StreamBrokerManager = class StreamBrokerManager {
|
|
|
15047
15192
|
this.remoteAdapterEnsures.delete(brokerId);
|
|
15048
15193
|
}
|
|
15049
15194
|
}
|
|
15195
|
+
/** Is a broker (local or remote-adapter) registered for `brokerId` right now?
|
|
15196
|
+
* Synchronous on purpose — the wake-on-play retry has to re-ask this between
|
|
15197
|
+
* two awaits, and an async answer would invite a race the caller cannot see. */
|
|
15198
|
+
hasRegisteredBroker(brokerId) {
|
|
15199
|
+
return this.brokers.has(brokerId) || this.remoteBrokerAdapters.has(brokerId);
|
|
15200
|
+
}
|
|
15201
|
+
/**
|
|
15202
|
+
* Wake-on-play (D173). Called by `WebrtcSessionProvider` when the normal
|
|
15203
|
+
* resolution left no broker: if the device is battery-operated, ask the
|
|
15204
|
+
* camera to wake, re-pull its catalog, and retry the resolution ONCE.
|
|
15205
|
+
*
|
|
15206
|
+
* Throws `BatteryStreamUnavailableError` — naming `sleeping` / `waking` /
|
|
15207
|
+
* `unreachable` — instead of letting `BrokerWebrtcServer` answer a healthy,
|
|
15208
|
+
* sleeping camera with a flat "No broker for stream". Returns normally (and
|
|
15209
|
+
* changes nothing) for a non-battery device, so the pre-existing error path
|
|
15210
|
+
* is byte-identical everywhere it used to be right.
|
|
15211
|
+
*/
|
|
15212
|
+
async wakeBatteryDeviceOnPlay(deviceId, brokerId, camStreamId) {
|
|
15213
|
+
if (this.hasRegisteredBroker(brokerId)) return;
|
|
15214
|
+
if (this.disabledDevices.has(deviceId)) return;
|
|
15215
|
+
const api = this.api;
|
|
15216
|
+
if (!api) return;
|
|
15217
|
+
await wakeBatteryDeviceForPlay(deviceId, {
|
|
15218
|
+
logger: this.logger,
|
|
15219
|
+
isBatteryDevice: async (id) => {
|
|
15220
|
+
const dev = await api.deviceManager.getDevice.query({ deviceId: id }).catch(() => null);
|
|
15221
|
+
if (!dev) return null;
|
|
15222
|
+
return dev.features.includes(DeviceFeature.BatteryOperated);
|
|
15223
|
+
},
|
|
15224
|
+
readBatteryFacts: async (id) => {
|
|
15225
|
+
const slice = await api.deviceState.getCapSlice.query({
|
|
15226
|
+
deviceId: id,
|
|
15227
|
+
capName: batteryCapability.name
|
|
15228
|
+
}).catch(() => null);
|
|
15229
|
+
const parsed = BatteryStatusSchema.safeParse(slice);
|
|
15230
|
+
if (!parsed.success) return null;
|
|
15231
|
+
return {
|
|
15232
|
+
sleeping: parsed.data.sleeping,
|
|
15233
|
+
lastContactAt: parsed.data.lastContactAt
|
|
15234
|
+
};
|
|
15235
|
+
},
|
|
15236
|
+
wakeForStream: async (id, timeoutMs) => api.battery.wakeForStream.mutate({
|
|
15237
|
+
deviceId: id,
|
|
15238
|
+
timeoutMs
|
|
15239
|
+
}),
|
|
15240
|
+
awaitStreamParamsChanged: (id, timeoutMs) => this.awaitStreamParamsChanged(id, timeoutMs),
|
|
15241
|
+
reconcileCatalog: (id) => this.reconcileDeviceCatalog(id),
|
|
15242
|
+
ensureBroker: () => this.ensureBrokerForWebrtcSession(deviceId, brokerId, camStreamId),
|
|
15243
|
+
hasBroker: () => this.hasRegisteredBroker(brokerId)
|
|
15244
|
+
});
|
|
15245
|
+
}
|
|
15246
|
+
/**
|
|
15247
|
+
* Bounded wait for the provider's `StreamParamsChanged` nudge for one
|
|
15248
|
+
* device. Resolves `false` on timeout — a timeout is information, not a
|
|
15249
|
+
* failure: a catalog restored from the durable slice announces nothing, and
|
|
15250
|
+
* the caller reconciles either way.
|
|
15251
|
+
*/
|
|
15252
|
+
awaitStreamParamsChanged(deviceId, timeoutMs) {
|
|
15253
|
+
const bus = this.eventBus;
|
|
15254
|
+
if (!bus) return Promise.resolve(false);
|
|
15255
|
+
return new Promise((resolve) => {
|
|
15256
|
+
let settled = false;
|
|
15257
|
+
const finish = (value) => {
|
|
15258
|
+
if (settled) return;
|
|
15259
|
+
settled = true;
|
|
15260
|
+
clearTimeout(timer);
|
|
15261
|
+
unsubscribe();
|
|
15262
|
+
resolve(value);
|
|
15263
|
+
};
|
|
15264
|
+
const unsubscribe = bus.subscribe({ category: EventCategory.StreamParamsChanged }, (event) => {
|
|
15265
|
+
if (event.data.deviceId === deviceId) finish(true);
|
|
15266
|
+
});
|
|
15267
|
+
const timer = setTimeout(() => finish(false), timeoutMs);
|
|
15268
|
+
timer.unref?.();
|
|
15269
|
+
});
|
|
15270
|
+
}
|
|
15050
15271
|
/**
|
|
15051
15272
|
* Single-flight body for `ensureBrokerForWebrtcSession`'s remote-adapter
|
|
15052
15273
|
* get-or-create — resolves the ingest owner, and for `remote-adapter` mode
|
|
@@ -34291,6 +34512,8 @@ var WebrtcSessionProvider = class WebrtcSessionProvider {
|
|
|
34291
34512
|
async ensureBrokerAvailable(deviceId, brokerId, camStreamId) {
|
|
34292
34513
|
if (typeof this.manager.ensureBrokerForWebrtcSession !== "function") return;
|
|
34293
34514
|
await this.manager.ensureBrokerForWebrtcSession(deviceId, brokerId, camStreamId);
|
|
34515
|
+
if (typeof this.manager.wakeBatteryDeviceOnPlay !== "function") return;
|
|
34516
|
+
await this.manager.wakeBatteryDeviceOnPlay(deviceId, brokerId, camStreamId);
|
|
34294
34517
|
}
|
|
34295
34518
|
/**
|
|
34296
34519
|
* Best-effort cleanup for the remote-encoded adapter `ensureBrokerAvailable`
|