@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.
Files changed (29) hide show
  1. package/dist/{addon-utils-C4Cge0S0.js → addon-utils-CQFlZXSn.js} +1 -1
  2. package/dist/audio-analyzer/index.js +2 -2
  3. package/dist/audio-analyzer/index.mjs +1 -1
  4. package/dist/detection-pipeline/index.js +4 -4
  5. package/dist/detection-pipeline/index.mjs +2 -2
  6. package/dist/{dist-ZSiUDGzf.js → dist-B57MztMq.js} +143 -11
  7. package/dist/{dist-Bf1SE1Ew.mjs → dist-DGp0dRiq.mjs} +126 -12
  8. package/dist/{event-loop-stall-monitor-CjWfos2b.mjs → event-loop-stall-monitor-8vYH44kg.mjs} +1 -1
  9. package/dist/{event-loop-stall-monitor-VcDGoua3.js → event-loop-stall-monitor-DPA6Pu_h.js} +1 -1
  10. package/dist/{lazy-sharp-CC4WNiKY.js → lazy-sharp-BMgRSV9x.js} +1 -1
  11. package/dist/motion-wasm/index.js +2 -2
  12. package/dist/motion-wasm/index.mjs +1 -1
  13. package/dist/pipeline-runner/index.js +26 -4
  14. package/dist/pipeline-runner/index.mjs +25 -3
  15. package/dist/recorder/index.js +2 -2
  16. package/dist/recorder/index.mjs +1 -1
  17. package/dist/session-decode/decode-worker-child.js +2 -2
  18. package/dist/session-decode/decode-worker-child.mjs +1 -1
  19. package/dist/stream-broker/_stub.js +1 -1
  20. 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
  21. 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
  22. package/dist/stream-broker/{hostInit-D_m-NYyr.mjs → hostInit-GJipMxBe.mjs} +2 -2
  23. package/dist/stream-broker/index.js +224 -1
  24. package/dist/stream-broker/index.mjs +224 -1
  25. package/dist/stream-broker/remoteEntry.js +1 -1
  26. package/dist/{worker-protocol-KDfFzKgT.js → worker-protocol-4L4SbSAo.js} +1 -1
  27. package/dist/{worker-protocol-p66oO1xL.mjs → worker-protocol-_e84lGuR.mjs} +1 -1
  28. package/package.json +1 -1
  29. 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-p66oO1xL.mjs";
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-BjDv7QMq.mjs";
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.76",
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.53",
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.76",
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.53",
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-ZSiUDGzf.js");
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 { At as string, Ct as boolean, D as cameraStreamsCapability, Dt as number, Et as literal, F as egressTranscodeSharingKey, I as egressTransportFromRequest, Mt as EventCategory, O as createHwAccelCache, Ot as object, Q as streamBrokerCapability, S as RingBuffer, St as array, V as maskUrlCredentials, Y as resolveEgressDecodeHwAccel, at as invocationFromEncodeProfile, ct as CAM_PROFILE_ORDER, dt as createEvent, et as webrtcSessionCapability, f as EncodeProfileSchema, gt as nodePin, ht as makeSourceBrokerId, it as buildFfmpegArgs$1, jt as union, kt as record, lt as DeviceFeature, mt as makeProfileBrokerId, nt as AUDIO_PRESETS, ot as isSoftwareDecode, pt as isEvent, rt as Fmp4BoxSplitter, st as BaseAddon, tt as errMsg, ut as DeviceType, v as RATE_CONTROL_RELAXED, vt as parseProfileBrokerId, w as addonWidgetsSourceCapability, wt as discriminatedUnion, xt as _enum, y as RATE_CONTROL_TIGHT } from "../dist-Bf1SE1Ew.mjs";
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`