@camstack/addon-pipeline-orchestrator 1.2.32 → 1.2.33
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/_stub.js +1 -1
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-DP-xubRv.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-B9MEuh4w.mjs} +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-RHxrNfOD.mjs +26 -0
- package/dist/{hostInit-Bdc6cSED.mjs → hostInit-BHQUwZb4.mjs} +1 -1
- package/dist/index.js +236 -44
- package/dist/index.mjs +236 -44
- package/dist/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Celb3oc6.mjs +0 -26
package/dist/_stub.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as e } from "./_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-BiLBDmU5.mjs";
|
|
2
|
-
import { n as t, r as n, t as r } from "./_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-
|
|
2
|
+
import { n as t, r as n, t as r } from "./_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-RHxrNfOD.mjs";
|
|
3
3
|
import { a as i, c as a, i as o, n as s, o as c, r as l, s as u, t as d } from "./_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare__react__loadShare__.js-a8tvh93M.mjs";
|
|
4
4
|
import { C as f, S as p, _ as m, a as h, b as g, c as _, d as v, f as y, g as b, h as x, i as S, l as C, m as w, n as T, o as E, p as D, r as O, s as k, t as A, u as j, v as M, w as ee, x as N, y as P } from "./_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-C_kzDF6N.mjs";
|
|
5
5
|
import { n as F, r as I, t as L } from "./_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-yD-rMaFX.mjs";
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region \0virtual:mf:__mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js
|
|
2
|
+
var e = "__mf_init__virtual:mf:__mfe_internal__addon_pipeline_orchestrator_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, s, c = (e) => {
|
|
19
|
+
e.ACCESSORY_LABEL, 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.AdoptionFilterSchema, e.AdoptionGetCandidateInputSchema, e.AdoptionListCandidatesInputSchema, e.AdoptionListCandidatesOutputSchema, 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.AutomationControlStatusSchema, e.AvailableIntegrationTypeSchema, e.BACKEND_TO_FORMAT, e.BASE_LIVE_EGRESS_PROFILE, e.BATTERY_DEVICE_PROFILE, 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.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.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_EVENT_COLOR, e.DEFAULT_FEATURES, e.DEFAULT_NATIVE_LEASE_SETTINGS, e.DEFAULT_RETENTION, e.DEFAULT_SCRUB_THUMBNAIL_PRESET, e.DETAIL_CROP_PADDING_FIELD, e.DETAIL_CROP_PADDING_KEY, e.DETAIL_CROP_SECTION_ID, e.DETAIL_CROP_SQUARE_KEY, 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.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.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.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.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.LlmErrorCodeSchema, e.LlmGenerateBaseInputSchema, e.LlmGenerateErrSchema, e.LlmGenerateOkSchema, e.LlmGenerateResultSchema, e.LlmImageSchema, e.LlmNodeModelSchema, e.LlmProfileKindDescriptorSchema, e.LlmProfileKindSchema, e.LlmProfileSchema, e.LlmRuntimeCompleteInputSchema, e.LlmRuntimeDiskUsageSchema, e.LlmRuntimeNodeSchema, e.LlmRuntimeStatusSchema, e.LlmUsageRollupSchema, e.LlmUsageSchema, e.LocateSegmentResultSchema, e.LocationStatSchema, e.LockControlStatusSchema, e.LockStateSchema, e.LogEntrySchema, e.LogLevelSchema, e.LogStreamEntrySchema, e.LoginMethodContributionSchema, e.LoginStageEnum, a = e.MACRO_LABELS, 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.MODEL_FORMATS, e.MOTION_TRIGGER_FEATURE, e.ManagedModelCatalogEntrySchema, 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_SECTION_ID, e.NATIVE_LEASE_TTL_FIELD, e.NATIVE_LEASE_TTL_KEY, e.NC_BASE_CONDITION_KEYS, e.NC_CONDITION_CATALOG, 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.NcConditionDescriptorSchema, e.NcConditionsSchema, 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.NcScheduleSchema, e.NcScheduleWindowSchema, e.NcSnoozeInputSchema, e.NcSnoozeSchema, e.NcSnoozeScopeSchema, e.NcSnoozeSuppressedSchema, 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.RESERVED_BINDING_NAMES, e.RUNTIME_DEFAULTS, 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.RecordingRetentionSchema, e.RecordingStatusSchema, e.RecordingStorageModeSchema, e.RecordingStorageUsageSchema, e.RecordingTriggersSchema, e.RecordingWeekdaySchema, e.RedirectLoginMethodSchema, 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.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.SceneCheckSchema, e.SceneConditionSchema, e.SceneMonitorSchema, e.SceneMonitorStateSchema, e.SceneMonitorStatusSchema, e.SceneReferenceSchema, 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.SettingsPatchSchema, e.SettingsRecordSchema, e.SettingsSchemaWithValuesSchema, e.SettingsUpdateResultSchema, e.ShmRingStatsSchema, 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.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.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.TerminalProfileInfoSchema, e.TerminalSessionInfoSchema, e.TestConnectionResultSchema, 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, o = 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.audioAnalysisCapability, e.audioAnalyzerCapability, e.audioCodecCapability, e.audioMetricsCapability, 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.buildStreamParamsConfigSchema, e.buildVideoArgs, e.buttonCapability, e.cameraCredentialsCapability, e.cameraPipelineConfigCapability, e.cameraStreamsCapability, e.canConvertUnit, e.canonicalEgressPlan, e.carbonMonoxideCapability, e.cellsToRects, e.classifyStream, e.classifyStreams, e.climateControlCapability, e.collectHydratedFieldEntries, e.collectHydratedFieldValues, e.colorCapability, e.colorForKind, e.compileExpression, e.compileExpressionSafe, e.connectivityCapability, e.consumablesCapability, e.contactCapability, e.controlCapability, e.convertUnit, e.coreBlockAddonId, e.coreBlockIdFromAddonId, e.coreBlocksCapability, e.cosineSimilarity, 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.deriveCameraSwitches, e.deriveDetailCropRect, e.deriveRecordingMode, e.describeModelVariant, e.detectionPipelineCapability, e.deviceAdoptionCapability, e.deviceBackendToFormat, e.deviceCustomAction, e.deviceDiscoveryCapability, e.deviceExportCapability, e.deviceManagerCapability, e.deviceMatchesProfile, e.deviceOpsCapability, e.deviceProviderCapability, 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.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.isBaseConditionKey, e.isCollectionArrayMethod, e.isDeployableToAgent, e.isDeviceConfigCap, e.isDeviceScopedCap, e.isEvent, e.isNode, e.isObjectInput, 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, e.makeSourceBrokerId, e.mapAudioLabelToMacro, e.markdownToHtmlLite, e.markdownToText, e.maskUrlCredentials, e.mediaPlayerCapability, e.mergeSourceInfo, e.meshNetworkCapability, e.method, 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.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.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.privacyMaskCapability, e.procedureAuthKey, e.ptzAutotrackCapability, e.ptzCapability, e.pythonScriptForBackend, e.readDetailCropConvention, e.readDeviceStateFrom, e.readNativeLeaseOverride, e.readNodePin, 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, s = e.resolveHydratedFieldValue, e.resolveModelFormat, e.resolveMutate, e.resolveRunnerId, e.resolveScrubThumbnailGeometry, e.resolveVariantModelId, e.runInferenceStep, e.runtimeDevices, e.sceneMonitorCapability, e.scopeKey, 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.storageProviderCapability, e.streamBrokerCapability, e.streamCatalogCapability, e.streamParamsCapability, e.streamPixels, e.streamQualityLabel, e.subKindsOf, e.summarisePrivacyAudio, 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.tokenize, e.transcodeBody, e.tryConvertUnit, e.turnProviderCapability, e.unitDimension, e.unitsForDimension, e.updateCapability, e.userManagementCapability, e.userPasskeysCapability, e.vacuumControlCapability, e.validateExpressionSource, 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
|
+
}, l = i.share["default:@camstack/types"];
|
|
21
|
+
l === void 0 ? n.then(() => {
|
|
22
|
+
if (l = i.share["default:@camstack/types"], l === void 0) throw Error("[Module Federation] Shared module @camstack/types was imported before federation bootstrap finished.");
|
|
23
|
+
c(l);
|
|
24
|
+
}) : c(l);
|
|
25
|
+
//#endregion
|
|
26
|
+
export { a as n, o as r, s as t };
|
package/dist/index.js
CHANGED
|
@@ -17557,6 +17557,23 @@ var CameraRecordingStatusSchema = object({
|
|
|
17557
17557
|
active: boolean(),
|
|
17558
17558
|
storageBytes: number()
|
|
17559
17559
|
});
|
|
17560
|
+
/** One stage of the fan-out that could NOT be read, and how long it cost. */
|
|
17561
|
+
var CameraStatusDegradationSchema = object({
|
|
17562
|
+
stage: _enum([
|
|
17563
|
+
"source",
|
|
17564
|
+
"broker",
|
|
17565
|
+
"detection",
|
|
17566
|
+
"recording",
|
|
17567
|
+
"switches"
|
|
17568
|
+
]),
|
|
17569
|
+
reason: _enum([
|
|
17570
|
+
"timeout",
|
|
17571
|
+
"error",
|
|
17572
|
+
"partial"
|
|
17573
|
+
]),
|
|
17574
|
+
/** Wall-clock ms spent on the stage before it was abandoned. */
|
|
17575
|
+
elapsedMs: number()
|
|
17576
|
+
});
|
|
17560
17577
|
/**
|
|
17561
17578
|
* Aggregated per-camera pipeline status — server-composed, single call.
|
|
17562
17579
|
*
|
|
@@ -17587,9 +17604,28 @@ var CameraStatusSchema = object({
|
|
|
17587
17604
|
* differently — a quiet camera that looks identical to a dead one is the
|
|
17588
17605
|
* silence-reads-as-never-happened trap this repo keeps paying for.
|
|
17589
17606
|
*
|
|
17590
|
-
* Empty when nothing is off
|
|
17607
|
+
* Empty when nothing is off, and never contains a switch no provider offers
|
|
17608
|
+
* — but an empty list is only a POSITIVE claim when `degraded` does not name
|
|
17609
|
+
* `'switches'`. When it does, the switch set could not be read and nothing
|
|
17610
|
+
* here may be rendered as "the operator turned nothing off": that is the
|
|
17611
|
+
* D62 failure (a camera we could not read painted as broken) in the very
|
|
17612
|
+
* field that exists to prevent it.
|
|
17591
17613
|
*/
|
|
17592
17614
|
switchedOff: array(CameraSwitchIdSchema).readonly(),
|
|
17615
|
+
/**
|
|
17616
|
+
* Stages of the bounded fan-out that were CUT SHORT — a timeout or a
|
|
17617
|
+
* rejection — and whose block is therefore `null` because we could not
|
|
17618
|
+
* READ it, not because there is nothing there.
|
|
17619
|
+
*
|
|
17620
|
+
* Without this, three different facts arrive as the same `null`: "the stage
|
|
17621
|
+
* timed out", "the stage failed", and "this camera legitimately has no
|
|
17622
|
+
* decoder / no recording". Every surface that draws a conclusion from a null
|
|
17623
|
+
* block (or from an empty `switchedOff`) must consult this first; a stage
|
|
17624
|
+
* named here supports no conclusion at all, only "unknown".
|
|
17625
|
+
*
|
|
17626
|
+
* Empty on a clean read — the overwhelmingly common case.
|
|
17627
|
+
*/
|
|
17628
|
+
degraded: array(CameraStatusDegradationSchema).readonly(),
|
|
17593
17629
|
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
17594
17630
|
fetchedAt: number()
|
|
17595
17631
|
});
|
|
@@ -32933,6 +32969,7 @@ function composeCameraStatus(input) {
|
|
|
32933
32969
|
audio: mapAudio(input.audioResult),
|
|
32934
32970
|
recording: mapRecording(input.recordingResult),
|
|
32935
32971
|
switchedOff: input.switchedOff,
|
|
32972
|
+
degraded: input.degraded,
|
|
32936
32973
|
fetchedAt: input.fetchedAt
|
|
32937
32974
|
};
|
|
32938
32975
|
}
|
|
@@ -32984,24 +33021,74 @@ var AUDIO_SILENCING_SWITCH_IDS = [
|
|
|
32984
33021
|
"broker-audio",
|
|
32985
33022
|
"audio-analysis"
|
|
32986
33023
|
];
|
|
33024
|
+
/**
|
|
33025
|
+
* Sentinel resolved by the per-stage timer. A unique symbol rather than `null`
|
|
33026
|
+
* so the race result can be narrowed WITHOUT a cast — and, more to the point,
|
|
33027
|
+
* so a stage that legitimately resolves `null` is never mistaken for one that
|
|
33028
|
+
* ran out of time.
|
|
33029
|
+
*/
|
|
33030
|
+
var STAGE_TIMED_OUT = Symbol("camera-status-stage-timeout");
|
|
32987
33031
|
var CameraStatusService = class {
|
|
32988
33032
|
deps;
|
|
32989
33033
|
constructor(deps) {
|
|
32990
33034
|
this.deps = deps;
|
|
32991
33035
|
}
|
|
32992
33036
|
/**
|
|
32993
|
-
*
|
|
33037
|
+
* Record — and ANNOUNCE — a stage whose value could not be trusted.
|
|
33038
|
+
*
|
|
33039
|
+
* Both halves matter. The entry is what a client reads to tell a `null` that
|
|
33040
|
+
* means "we could not look" from a `null` that means "there is nothing
|
|
33041
|
+
* there"; the `warn` is what makes the next hang findable at all. The line
|
|
33042
|
+
* carries `tags.deviceId` with the numeric id because the question is always
|
|
33043
|
+
* per-camera ("why is 614 worse than 615?") and a line without the tag
|
|
33044
|
+
* cannot be grouped to answer it.
|
|
33045
|
+
*/
|
|
33046
|
+
recordDegraded(sink, deviceId, stage, reason, elapsedMs, extraMeta = {}) {
|
|
33047
|
+
sink.entries.push({
|
|
33048
|
+
stage,
|
|
33049
|
+
reason,
|
|
33050
|
+
elapsedMs
|
|
33051
|
+
});
|
|
33052
|
+
this.deps.logger.warn("camera status stage could not be read", {
|
|
33053
|
+
tags: { deviceId },
|
|
33054
|
+
meta: {
|
|
33055
|
+
stage,
|
|
33056
|
+
reason,
|
|
33057
|
+
elapsedMs,
|
|
33058
|
+
...extraMeta
|
|
33059
|
+
}
|
|
33060
|
+
});
|
|
33061
|
+
}
|
|
33062
|
+
/**
|
|
33063
|
+
* Races a promise against a timeout. Returns `null` on timeout OR rejection —
|
|
33064
|
+
* but the two are no longer the same event: whichever happened is pushed to
|
|
33065
|
+
* `sink` (and logged) under `stage`, so the `null` that reaches the payload
|
|
33066
|
+
* arrives with its cause attached.
|
|
33067
|
+
*
|
|
32994
33068
|
* Never throws — individual stage failures become `null` in the aggregate.
|
|
32995
33069
|
*
|
|
32996
|
-
* @param p
|
|
32997
|
-
* @param ms
|
|
33070
|
+
* @param p The stage fetch promise.
|
|
33071
|
+
* @param ms Timeout in milliseconds.
|
|
33072
|
+
* @param stage Which stage this is, as it appears in `CameraStatus.degraded`.
|
|
33073
|
+
* @param deviceId The camera — every line about it carries the tag.
|
|
33074
|
+
* @param sink Per-call collector for stages that could not be read.
|
|
32998
33075
|
*/
|
|
32999
|
-
boundedStage(p, ms) {
|
|
33076
|
+
boundedStage(p, ms, stage, deviceId, sink) {
|
|
33077
|
+
const startedAt = Date.now();
|
|
33000
33078
|
let timer;
|
|
33001
33079
|
const timeout = new Promise((resolve) => {
|
|
33002
|
-
timer = setTimeout(() => resolve(
|
|
33080
|
+
timer = setTimeout(() => resolve(STAGE_TIMED_OUT), ms);
|
|
33003
33081
|
});
|
|
33004
|
-
return Promise.race([p, timeout]).
|
|
33082
|
+
return Promise.race([p, timeout]).then((value) => {
|
|
33083
|
+
if (value === STAGE_TIMED_OUT) {
|
|
33084
|
+
this.recordDegraded(sink, deviceId, stage, "timeout", Date.now() - startedAt, { timeoutMs: ms });
|
|
33085
|
+
return null;
|
|
33086
|
+
}
|
|
33087
|
+
return value;
|
|
33088
|
+
}).catch((err) => {
|
|
33089
|
+
this.recordDegraded(sink, deviceId, stage, "error", Date.now() - startedAt, { error: err instanceof Error ? err.message : String(err) });
|
|
33090
|
+
return null;
|
|
33091
|
+
}).finally(() => {
|
|
33005
33092
|
if (timer !== void 0) clearTimeout(timer);
|
|
33006
33093
|
});
|
|
33007
33094
|
}
|
|
@@ -33027,7 +33114,7 @@ var CameraStatusService = class {
|
|
|
33027
33114
|
decoder: false,
|
|
33028
33115
|
audio: audioPinned
|
|
33029
33116
|
},
|
|
33030
|
-
detectionReason: pipelineAssignment !== null ? pipelineAssignment.reason : this.deps.hasCameraConfig(deviceId) ? `pending:${this.deps.getPendingReason(deviceId) ?? "pending"}` : void 0,
|
|
33117
|
+
detectionReason: pipelineAssignment !== null ? pipelineAssignment.reason : this.deps.hasCameraConfig(deviceId) ? `pending:${this.deps.getPendingReason(deviceId) ?? "pending"}` : this.deps.isSessionCamera(deviceId) ? "armed:on-motion" : void 0,
|
|
33031
33118
|
audioNodeId,
|
|
33032
33119
|
audioPinned
|
|
33033
33120
|
};
|
|
@@ -33038,7 +33125,7 @@ var CameraStatusService = class {
|
|
|
33038
33125
|
* deviceId). `allSlotsFetch` is shared with the broker stage — fetched
|
|
33039
33126
|
* ONCE by the caller — so this stage never issues its own round-trip.
|
|
33040
33127
|
*/
|
|
33041
|
-
buildSourceStage(api, allSlotsFetch, deviceId) {
|
|
33128
|
+
buildSourceStage(api, allSlotsFetch, deviceId, sink) {
|
|
33042
33129
|
if (!api || !allSlotsFetch) return Promise.resolve(null);
|
|
33043
33130
|
return this.boundedStage(allSlotsFetch.then((slots) => {
|
|
33044
33131
|
return { streams: slots.filter((s) => s.deviceId === deviceId).map((s) => ({
|
|
@@ -33049,7 +33136,7 @@ var CameraStatusService = class {
|
|
|
33049
33136
|
fps: 0,
|
|
33050
33137
|
kind: s.profile
|
|
33051
33138
|
})) };
|
|
33052
|
-
}), STAGE_TIMEOUT_MS);
|
|
33139
|
+
}), STAGE_TIMEOUT_MS, "source", deviceId, sink);
|
|
33053
33140
|
}
|
|
33054
33141
|
/**
|
|
33055
33142
|
* Broker stage (per-profile slot stats + client counts). Reuses
|
|
@@ -33060,7 +33147,7 @@ var CameraStatusService = class {
|
|
|
33060
33147
|
* broker's actual decode-session node into `liveDecoder` (T6) — the first
|
|
33061
33148
|
* slot that reports one wins.
|
|
33062
33149
|
*/
|
|
33063
|
-
buildBrokerStage(api, allSlotsFetch, deviceId, sourceNodeId, liveDecoder) {
|
|
33150
|
+
buildBrokerStage(api, allSlotsFetch, deviceId, sourceNodeId, liveDecoder, sink) {
|
|
33064
33151
|
if (!api || !allSlotsFetch) return Promise.resolve(null);
|
|
33065
33152
|
return this.boundedStage(allSlotsFetch.then(async (slots) => {
|
|
33066
33153
|
const deviceSlots = slots.filter((s) => s.deviceId === deviceId);
|
|
@@ -33097,7 +33184,7 @@ var CameraStatusService = class {
|
|
|
33097
33184
|
return e.brokerId.split("/")[0] === String(deviceId) && e.enabled;
|
|
33098
33185
|
}) ?? false
|
|
33099
33186
|
};
|
|
33100
|
-
}), STAGE_TIMEOUT_MS);
|
|
33187
|
+
}), STAGE_TIMEOUT_MS, "broker", deviceId, sink);
|
|
33101
33188
|
}
|
|
33102
33189
|
/**
|
|
33103
33190
|
* Decoder stage. decoder cap methods (listActiveSessions/getInfo/getShmStats)
|
|
@@ -33136,7 +33223,7 @@ var CameraStatusService = class {
|
|
|
33136
33223
|
};
|
|
33137
33224
|
}
|
|
33138
33225
|
/** Detection stage (pipeline-executor + runner metrics). */
|
|
33139
|
-
buildDetectionStage(api, detectionNodeId, deviceId) {
|
|
33226
|
+
buildDetectionStage(api, detectionNodeId, deviceId, sink) {
|
|
33140
33227
|
if (!api || !detectionNodeId) return Promise.resolve(null);
|
|
33141
33228
|
return this.boundedStage(Promise.all([api.pipelineExecutor.getEngineProvisioning.query({ nodeId: detectionNodeId }).catch(() => null), api.pipelineExecutor.getSelectedEngine.query({ nodeId: detectionNodeId }).catch(() => null)]).then(async ([provisioning, engine]) => {
|
|
33142
33229
|
const metrics = await api.pipelineRunner.getCameraMetrics.query({
|
|
@@ -33166,7 +33253,7 @@ var CameraStatusService = class {
|
|
|
33166
33253
|
...provisioning?.error !== void 0 ? { error: provisioning.error } : {}
|
|
33167
33254
|
}
|
|
33168
33255
|
};
|
|
33169
|
-
}), STAGE_TIMEOUT_MS);
|
|
33256
|
+
}), STAGE_TIMEOUT_MS, "detection", deviceId, sink);
|
|
33170
33257
|
}
|
|
33171
33258
|
/**
|
|
33172
33259
|
* Audio stage. `nodeId` is orchestrator-local (the cached assignment);
|
|
@@ -33185,6 +33272,12 @@ var CameraStatusService = class {
|
|
|
33185
33272
|
* analyzer with nothing, and reporting `enabled: true` for the other two
|
|
33186
33273
|
* would reintroduce the exact hardcoded lie the previous paragraph is about
|
|
33187
33274
|
* — one row further down the group.
|
|
33275
|
+
*
|
|
33276
|
+
* `enabled` is a boolean and cannot say "unknown", so when the switch read
|
|
33277
|
+
* was cut short or partial this block is OPTIMISTIC by construction. That is
|
|
33278
|
+
* survivable only because `CameraStatus.degraded` names `'switches'` in
|
|
33279
|
+
* exactly those cases — a surface drawing "audio is running" from this field
|
|
33280
|
+
* must consult it first.
|
|
33188
33281
|
*/
|
|
33189
33282
|
buildAudioStage(audioNodeId, switchedOff) {
|
|
33190
33283
|
if (audioNodeId === null) return null;
|
|
@@ -33199,8 +33292,13 @@ var CameraStatusService = class {
|
|
|
33199
33292
|
* `{ deviceId }` and returns `RecordingStatus`, typed `unknown` in the
|
|
33200
33293
|
* generated router (DEVICE_STATUS_METHOD) — narrowed via
|
|
33201
33294
|
* {@link isRecordingStatus} instead of an unsafe cast.
|
|
33295
|
+
*
|
|
33296
|
+
* There is deliberately NO `.catch(() => null)` on the query any more: it
|
|
33297
|
+
* swallowed the rejection before `boundedStage` could see it, so a recording
|
|
33298
|
+
* source that was refusing every call produced the same anonymous `null` as
|
|
33299
|
+
* a camera that simply records nothing.
|
|
33202
33300
|
*/
|
|
33203
|
-
buildRecordingStage(api, deviceId) {
|
|
33301
|
+
buildRecordingStage(api, deviceId, sink) {
|
|
33204
33302
|
if (!api) return Promise.resolve(null);
|
|
33205
33303
|
return this.boundedStage(api.recording.getStatus.query({ deviceId }).then((rawStatus) => {
|
|
33206
33304
|
if (!isRecordingStatus(rawStatus)) return null;
|
|
@@ -33209,7 +33307,40 @@ var CameraStatusService = class {
|
|
|
33209
33307
|
active: rawStatus.enabled && rawStatus.activeMode !== "off",
|
|
33210
33308
|
storageBytes: rawStatus.storageBytes
|
|
33211
33309
|
};
|
|
33212
|
-
})
|
|
33310
|
+
}), STAGE_TIMEOUT_MS, "recording", deviceId, sink);
|
|
33311
|
+
}
|
|
33312
|
+
/**
|
|
33313
|
+
* The operator's function switches (D61/D62), bounded like every other stage.
|
|
33314
|
+
*
|
|
33315
|
+
* Three outcomes, and they must not collapse into one:
|
|
33316
|
+
*
|
|
33317
|
+
* - READ — the group came back whole. The derived id list is a total, and an
|
|
33318
|
+
* empty one really does mean the operator turned nothing off.
|
|
33319
|
+
* - PARTIAL — the group came back with at least one switch marked
|
|
33320
|
+
* `source-unreachable`. `CameraSwitchService` bounds each source
|
|
33321
|
+
* individually, so a slow source drops ITS switch and leaves the rest;
|
|
33322
|
+
* the derived list is then a FLOOR. Marked `'partial'`.
|
|
33323
|
+
* - NOT READ — the whole group timed out or rejected. Marked by
|
|
33324
|
+
* `boundedStage` itself.
|
|
33325
|
+
*
|
|
33326
|
+
* In the last two the returned list is `[]`, and `[]` was previously handed
|
|
33327
|
+
* to the payload as the positive claim "the operator has switched nothing
|
|
33328
|
+
* off". Measured on the live hub 2026-08-08: `getCameraStatus(614)` said
|
|
33329
|
+
* `switchedOff: []` at the very moment `getCameraSwitches(614)` reported
|
|
33330
|
+
* `stream-broker` AND `recording` switched off by the operator — the camera
|
|
33331
|
+
* read as BROKEN because it was switched OFF, which is exactly the
|
|
33332
|
+
* inversion D62 exists to forbid. The list stays empty (a guess would put a
|
|
33333
|
+
* permanent "off" badge on a working camera); what changed is that the
|
|
33334
|
+
* emptiness now travels with the reason it is empty.
|
|
33335
|
+
*/
|
|
33336
|
+
buildSwitchStage(deviceId, sink) {
|
|
33337
|
+
const startedAt = Date.now();
|
|
33338
|
+
return this.boundedStage(this.deps.cameraSwitchesFor(deviceId), STAGE_TIMEOUT_MS, "switches", deviceId, sink).then((group) => {
|
|
33339
|
+
if (group === null) return [];
|
|
33340
|
+
const unreadable = group.switches.filter((s) => s.unavailableReason === "source-unreachable");
|
|
33341
|
+
if (unreadable.length > 0) this.recordDegraded(sink, deviceId, "switches", "partial", Date.now() - startedAt, { unreadableSwitches: unreadable.map((s) => s.id) });
|
|
33342
|
+
return switchedOffIds(group.switches);
|
|
33343
|
+
});
|
|
33213
33344
|
}
|
|
33214
33345
|
/**
|
|
33215
33346
|
* Server-composed aggregated status for a single camera.
|
|
@@ -33217,20 +33348,23 @@ var CameraStatusService = class {
|
|
|
33217
33348
|
* Fans out in parallel (bounded, per-stage graceful degradation) to
|
|
33218
33349
|
* broker / decoder / motion / detection / audio / recording source caps
|
|
33219
33350
|
* via `ctx.api`. A stage whose source errors or times out becomes `null`
|
|
33220
|
-
* in the returned payload — one slow agent never breaks the whole call
|
|
33351
|
+
* in the returned payload — one slow agent never breaks the whole call —
|
|
33352
|
+
* and is NAMED in `degraded`, so a consumer can tell that `null` from the
|
|
33353
|
+
* `null` of a camera that legitimately has no such stage.
|
|
33221
33354
|
*/
|
|
33222
33355
|
async getCameraStatus(deviceId) {
|
|
33223
33356
|
const api = this.deps.api();
|
|
33357
|
+
const degradations = { entries: [] };
|
|
33224
33358
|
const { detectionNodeId, sourceNodeId, pinned, detectionReason, audioNodeId, audioPinned } = this.buildAssignmentContext(deviceId);
|
|
33225
33359
|
const liveDecoder = { nodeId: null };
|
|
33226
33360
|
const allSlotsFetch = api ? api.streamBroker.listAllProfileSlots.query(void 0, nodePin(sourceNodeId)) : null;
|
|
33227
|
-
const sourceFetch = this.buildSourceStage(api, allSlotsFetch, deviceId);
|
|
33228
|
-
const brokerFetch = this.buildBrokerStage(api, allSlotsFetch, deviceId, sourceNodeId, liveDecoder);
|
|
33361
|
+
const sourceFetch = this.buildSourceStage(api, allSlotsFetch, deviceId, degradations);
|
|
33362
|
+
const brokerFetch = this.buildBrokerStage(api, allSlotsFetch, deviceId, sourceNodeId, liveDecoder, degradations);
|
|
33229
33363
|
const decoderFetch = this.buildDecoderStage(detectionNodeId);
|
|
33230
33364
|
const motionResult = this.buildMotionStage(deviceId);
|
|
33231
|
-
const detectionFetch = this.buildDetectionStage(api, detectionNodeId, deviceId);
|
|
33232
|
-
const recordingFetch = this.buildRecordingStage(api, deviceId);
|
|
33233
|
-
const switchesFetch = this.
|
|
33365
|
+
const detectionFetch = this.buildDetectionStage(api, detectionNodeId, deviceId, degradations);
|
|
33366
|
+
const recordingFetch = this.buildRecordingStage(api, deviceId, degradations);
|
|
33367
|
+
const switchesFetch = this.buildSwitchStage(deviceId, degradations);
|
|
33234
33368
|
const [sourceResult, brokerResult, decoderResult, detectionResult, recordingResult, switchedOff] = await Promise.all([
|
|
33235
33369
|
sourceFetch,
|
|
33236
33370
|
brokerFetch,
|
|
@@ -33263,7 +33397,8 @@ var CameraStatusService = class {
|
|
|
33263
33397
|
detectionResult,
|
|
33264
33398
|
audioResult,
|
|
33265
33399
|
recordingResult,
|
|
33266
|
-
switchedOff
|
|
33400
|
+
switchedOff,
|
|
33401
|
+
degraded: [...degradations.entries]
|
|
33267
33402
|
});
|
|
33268
33403
|
}
|
|
33269
33404
|
/**
|
|
@@ -33331,6 +33466,25 @@ function readPrivacyMaskFacts(v) {
|
|
|
33331
33466
|
enabled: typeof enabled === "boolean" ? enabled : null
|
|
33332
33467
|
};
|
|
33333
33468
|
}
|
|
33469
|
+
/**
|
|
33470
|
+
* How long ONE source of the gather may take before it is treated as
|
|
33471
|
+
* unreachable.
|
|
33472
|
+
*
|
|
33473
|
+
* The gather runs in two sequential stages, so an operator's worst case is
|
|
33474
|
+
* twice this — 2.4s — which has to stay under the 3s `STAGE_TIMEOUT_MS` that
|
|
33475
|
+
* `CameraStatusService` allows the whole switch read. That ordering is the
|
|
33476
|
+
* whole point of the number: if the gather can outlast its caller's budget,
|
|
33477
|
+
* the caller degrades to "nothing switched off" and a camera the operator
|
|
33478
|
+
* DISABLED renders as broken.
|
|
33479
|
+
*
|
|
33480
|
+
* Measured on the live hub, 2026-08-08: seven of the eight sources answered in
|
|
33481
|
+
* 5–15ms on every camera. The eighth, `privacyMask.getStatus`, probes the
|
|
33482
|
+
* camera itself and took 3.1–3.6s on device 614 on every single call (18s
|
|
33483
|
+
* under load) — so a bound generous enough to make the fast sources safe still
|
|
33484
|
+
* has to be willing to drop the slow one, because waiting for it costs the
|
|
33485
|
+
* other six switches.
|
|
33486
|
+
*/
|
|
33487
|
+
var SOURCE_TIMEOUT_MS = 1200;
|
|
33334
33488
|
var CameraSwitchService = class {
|
|
33335
33489
|
deps;
|
|
33336
33490
|
constructor(deps) {
|
|
@@ -33467,11 +33621,16 @@ var CameraSwitchService = class {
|
|
|
33467
33621
|
wrapperAddonIdByCap: /* @__PURE__ */ new Map(),
|
|
33468
33622
|
recordingConfig: null
|
|
33469
33623
|
};
|
|
33470
|
-
const devicePromise = api.deviceManager.getDevice.query({ deviceId }).then((d) => isDeviceShape(d) ? d : null).catch((err) => {
|
|
33624
|
+
const devicePromise = this.bounded(deviceId, "deviceManager.getDevice", api.deviceManager.getDevice.query({ deviceId }).then((d) => isDeviceShape(d) ? d : null).catch((err) => {
|
|
33471
33625
|
this.warn(deviceId, "getDevice", err);
|
|
33472
33626
|
return null;
|
|
33473
|
-
});
|
|
33474
|
-
const
|
|
33627
|
+
}), null);
|
|
33628
|
+
const unknownBindings = {
|
|
33629
|
+
activeWrapperCapNames: null,
|
|
33630
|
+
providerAddonIdByCap: /* @__PURE__ */ new Map(),
|
|
33631
|
+
allCapNames: null
|
|
33632
|
+
};
|
|
33633
|
+
const bindingsPromise = this.bounded(deviceId, "deviceManager.getBindings", api.deviceManager.getBindings.query({ deviceId }).then((b) => {
|
|
33475
33634
|
const active = [];
|
|
33476
33635
|
const all = [];
|
|
33477
33636
|
const providers = /* @__PURE__ */ new Map();
|
|
@@ -33488,24 +33647,20 @@ var CameraSwitchService = class {
|
|
|
33488
33647
|
};
|
|
33489
33648
|
}).catch((err) => {
|
|
33490
33649
|
this.warn(deviceId, "getBindings", err);
|
|
33491
|
-
return
|
|
33492
|
-
|
|
33493
|
-
|
|
33494
|
-
allCapNames: null
|
|
33495
|
-
};
|
|
33496
|
-
});
|
|
33497
|
-
const recordingPromise = api.recording.getDeviceConfig.query({ deviceId }).then((c) => isRecordingConfig(c) ? c : null).catch((err) => {
|
|
33650
|
+
return unknownBindings;
|
|
33651
|
+
}), unknownBindings);
|
|
33652
|
+
const recordingPromise = this.bounded(deviceId, "recording.getDeviceConfig", api.recording.getDeviceConfig.query({ deviceId }).then((c) => isRecordingConfig(c) ? c : null).catch((err) => {
|
|
33498
33653
|
this.warn(deviceId, "recording.getDeviceConfig", err);
|
|
33499
33654
|
return null;
|
|
33500
|
-
});
|
|
33501
|
-
const mutesPromise = api.notificationRules.listDeviceMutes.query({}).then((r) => r.mutedDeviceIds).catch((err) => {
|
|
33655
|
+
}), null);
|
|
33656
|
+
const mutesPromise = this.bounded(deviceId, "notificationRules.listDeviceMutes", api.notificationRules.listDeviceMutes.query({}).then((r) => r.mutedDeviceIds).catch((err) => {
|
|
33502
33657
|
this.warn(deviceId, "notificationRules.listDeviceMutes", err);
|
|
33503
33658
|
return null;
|
|
33504
|
-
});
|
|
33505
|
-
const brokerAudioPromise = api.streamBroker.getDeviceAudioMute.query({ deviceId }, nodePin(this.deps.assignSource(deviceId))).then((r) => ({ muted: r.muted })).catch((err) => {
|
|
33659
|
+
}), null);
|
|
33660
|
+
const brokerAudioPromise = this.bounded(deviceId, "streamBroker.getDeviceAudioMute", api.streamBroker.getDeviceAudioMute.query({ deviceId }, nodePin(this.deps.assignSource(deviceId))).then((r) => ({ muted: r.muted })).catch((err) => {
|
|
33506
33661
|
this.warn(deviceId, "streamBroker.getDeviceAudioMute", err);
|
|
33507
33662
|
return null;
|
|
33508
|
-
});
|
|
33663
|
+
}), null);
|
|
33509
33664
|
const [device, bindings, recordingConfig, mutedDeviceIds, brokerAudio] = await Promise.all([
|
|
33510
33665
|
devicePromise,
|
|
33511
33666
|
bindingsPromise,
|
|
@@ -33513,10 +33668,10 @@ var CameraSwitchService = class {
|
|
|
33513
33668
|
mutesPromise,
|
|
33514
33669
|
brokerAudioPromise
|
|
33515
33670
|
]);
|
|
33516
|
-
const [bindable, privacy] = await Promise.all([device === null ? Promise.resolve(null) : api.deviceManager.listBindableCapsForDeviceType.query({ deviceType: device.type }).catch((err) => {
|
|
33671
|
+
const [bindable, privacy] = await Promise.all([device === null ? Promise.resolve(null) : this.bounded(deviceId, "deviceManager.listBindableCapsForDeviceType", api.deviceManager.listBindableCapsForDeviceType.query({ deviceType: device.type }).catch((err) => {
|
|
33517
33672
|
this.warn(deviceId, "listBindableCapsForDeviceType", err);
|
|
33518
33673
|
return null;
|
|
33519
|
-
}), this.gatherPrivacy(api, deviceId, bindings.allCapNames)]);
|
|
33674
|
+
}), null), this.gatherPrivacy(api, deviceId, bindings.allCapNames)]);
|
|
33520
33675
|
const wrapperAddonIdByCap = /* @__PURE__ */ new Map();
|
|
33521
33676
|
for (const entry of bindable ?? []) {
|
|
33522
33677
|
const first = entry.wrappers[0];
|
|
@@ -33572,13 +33727,13 @@ var CameraSwitchService = class {
|
|
|
33572
33727
|
enabled: null
|
|
33573
33728
|
}
|
|
33574
33729
|
};
|
|
33575
|
-
const [options, status] = await Promise.all([api.privacyMask.getOptions.query({ deviceId }).catch((err) => {
|
|
33730
|
+
const [options, status] = await Promise.all([this.bounded(deviceId, "privacyMask.getOptions", api.privacyMask.getOptions.query({ deviceId }).catch((err) => {
|
|
33576
33731
|
this.warn(deviceId, "privacyMask.getOptions", err);
|
|
33577
33732
|
return null;
|
|
33578
|
-
}), api.privacyMask.getStatus.query({ deviceId }).catch((err) => {
|
|
33733
|
+
}), null), this.bounded(deviceId, "privacyMask.getStatus", api.privacyMask.getStatus.query({ deviceId }).catch((err) => {
|
|
33579
33734
|
this.warn(deviceId, "privacyMask.getStatus", err);
|
|
33580
33735
|
return null;
|
|
33581
|
-
})]);
|
|
33736
|
+
}), null)]);
|
|
33582
33737
|
if (options === null) return {
|
|
33583
33738
|
deviceAudio: null,
|
|
33584
33739
|
privacyMask: null
|
|
@@ -33602,6 +33757,41 @@ var CameraSwitchService = class {
|
|
|
33602
33757
|
}
|
|
33603
33758
|
};
|
|
33604
33759
|
}
|
|
33760
|
+
/**
|
|
33761
|
+
* Bound ONE source. A source that has not answered within
|
|
33762
|
+
* {@link SOURCE_TIMEOUT_MS} yields `fallback` — the same value its `.catch`
|
|
33763
|
+
* yields — so a slow source and a broken one produce the identical group:
|
|
33764
|
+
* that switch is `available: false`, and every other switch is untouched.
|
|
33765
|
+
*
|
|
33766
|
+
* The bound is per SOURCE rather than around the whole gather on purpose.
|
|
33767
|
+
* One deadline over the fan-out would let the slowest camera probe consume
|
|
33768
|
+
* the budget of the seven sources that already answered, which is precisely
|
|
33769
|
+
* how `getCameraStatus` came to report `switchedOff: []` for a camera whose
|
|
33770
|
+
* `stream-broker` and `recording` switches the operator had turned off.
|
|
33771
|
+
*
|
|
33772
|
+
* @param deviceId The camera — every line about it carries the tag.
|
|
33773
|
+
* @param source The cap method, as named in the warn line.
|
|
33774
|
+
* @param p The source's promise. Already `.catch`-ed; never rejects.
|
|
33775
|
+
* @param fallback What the caller reads when the source did not answer.
|
|
33776
|
+
*/
|
|
33777
|
+
bounded(deviceId, source, p, fallback) {
|
|
33778
|
+
let timer;
|
|
33779
|
+
const timeout = new Promise((resolve) => {
|
|
33780
|
+
timer = setTimeout(() => {
|
|
33781
|
+
this.deps.logger.warn("camera switch source TIMED OUT — its switch is not offered", {
|
|
33782
|
+
tags: { deviceId },
|
|
33783
|
+
meta: {
|
|
33784
|
+
source,
|
|
33785
|
+
timeoutMs: SOURCE_TIMEOUT_MS
|
|
33786
|
+
}
|
|
33787
|
+
});
|
|
33788
|
+
resolve(fallback);
|
|
33789
|
+
}, SOURCE_TIMEOUT_MS);
|
|
33790
|
+
});
|
|
33791
|
+
return Promise.race([p, timeout]).finally(() => {
|
|
33792
|
+
if (timer !== void 0) clearTimeout(timer);
|
|
33793
|
+
});
|
|
33794
|
+
}
|
|
33605
33795
|
warn(deviceId, source, err) {
|
|
33606
33796
|
this.deps.logger.warn("camera switch source unreachable — its switch is not offered", {
|
|
33607
33797
|
tags: { deviceId },
|
|
@@ -39318,6 +39508,7 @@ async function buildOrchestratorControllers(deps) {
|
|
|
39318
39508
|
});
|
|
39319
39509
|
const cameraStatusService = new CameraStatusService({
|
|
39320
39510
|
api: () => deps.ctx().api,
|
|
39511
|
+
logger: deps.ctx().logger,
|
|
39321
39512
|
getAssignment: (deviceId) => ledger.getAssignment(deviceId),
|
|
39322
39513
|
getAudioAssignment: (deviceId) => audio.getAssignment(deviceId),
|
|
39323
39514
|
getCameraConfig: (deviceId) => ledger.getConfig(deviceId),
|
|
@@ -39325,7 +39516,8 @@ async function buildOrchestratorControllers(deps) {
|
|
|
39325
39516
|
getPendingReason: (deviceId) => ledger.getPendingReason(deviceId),
|
|
39326
39517
|
assignSource: (deviceId) => topology.assignSource(deviceId),
|
|
39327
39518
|
listAssignedDeviceIds: () => ledger.listAssignedDeviceIds(),
|
|
39328
|
-
|
|
39519
|
+
isSessionCamera: (deviceId) => deps.isSessionCamera(deviceId),
|
|
39520
|
+
cameraSwitchesFor: (deviceId) => cameraSwitchService.getCameraSwitches(deviceId)
|
|
39329
39521
|
});
|
|
39330
39522
|
const reconcile = new ReconcileController({
|
|
39331
39523
|
api: () => deps.ctx().api ?? null,
|
package/dist/index.mjs
CHANGED
|
@@ -17529,6 +17529,23 @@ var CameraRecordingStatusSchema = object({
|
|
|
17529
17529
|
active: boolean(),
|
|
17530
17530
|
storageBytes: number()
|
|
17531
17531
|
});
|
|
17532
|
+
/** One stage of the fan-out that could NOT be read, and how long it cost. */
|
|
17533
|
+
var CameraStatusDegradationSchema = object({
|
|
17534
|
+
stage: _enum([
|
|
17535
|
+
"source",
|
|
17536
|
+
"broker",
|
|
17537
|
+
"detection",
|
|
17538
|
+
"recording",
|
|
17539
|
+
"switches"
|
|
17540
|
+
]),
|
|
17541
|
+
reason: _enum([
|
|
17542
|
+
"timeout",
|
|
17543
|
+
"error",
|
|
17544
|
+
"partial"
|
|
17545
|
+
]),
|
|
17546
|
+
/** Wall-clock ms spent on the stage before it was abandoned. */
|
|
17547
|
+
elapsedMs: number()
|
|
17548
|
+
});
|
|
17532
17549
|
/**
|
|
17533
17550
|
* Aggregated per-camera pipeline status — server-composed, single call.
|
|
17534
17551
|
*
|
|
@@ -17559,9 +17576,28 @@ var CameraStatusSchema = object({
|
|
|
17559
17576
|
* differently — a quiet camera that looks identical to a dead one is the
|
|
17560
17577
|
* silence-reads-as-never-happened trap this repo keeps paying for.
|
|
17561
17578
|
*
|
|
17562
|
-
* Empty when nothing is off
|
|
17579
|
+
* Empty when nothing is off, and never contains a switch no provider offers
|
|
17580
|
+
* — but an empty list is only a POSITIVE claim when `degraded` does not name
|
|
17581
|
+
* `'switches'`. When it does, the switch set could not be read and nothing
|
|
17582
|
+
* here may be rendered as "the operator turned nothing off": that is the
|
|
17583
|
+
* D62 failure (a camera we could not read painted as broken) in the very
|
|
17584
|
+
* field that exists to prevent it.
|
|
17563
17585
|
*/
|
|
17564
17586
|
switchedOff: array(CameraSwitchIdSchema).readonly(),
|
|
17587
|
+
/**
|
|
17588
|
+
* Stages of the bounded fan-out that were CUT SHORT — a timeout or a
|
|
17589
|
+
* rejection — and whose block is therefore `null` because we could not
|
|
17590
|
+
* READ it, not because there is nothing there.
|
|
17591
|
+
*
|
|
17592
|
+
* Without this, three different facts arrive as the same `null`: "the stage
|
|
17593
|
+
* timed out", "the stage failed", and "this camera legitimately has no
|
|
17594
|
+
* decoder / no recording". Every surface that draws a conclusion from a null
|
|
17595
|
+
* block (or from an empty `switchedOff`) must consult this first; a stage
|
|
17596
|
+
* named here supports no conclusion at all, only "unknown".
|
|
17597
|
+
*
|
|
17598
|
+
* Empty on a clean read — the overwhelmingly common case.
|
|
17599
|
+
*/
|
|
17600
|
+
degraded: array(CameraStatusDegradationSchema).readonly(),
|
|
17565
17601
|
/** Unix timestamp (ms) when this snapshot was composed server-side. */
|
|
17566
17602
|
fetchedAt: number()
|
|
17567
17603
|
});
|
|
@@ -32905,6 +32941,7 @@ function composeCameraStatus(input) {
|
|
|
32905
32941
|
audio: mapAudio(input.audioResult),
|
|
32906
32942
|
recording: mapRecording(input.recordingResult),
|
|
32907
32943
|
switchedOff: input.switchedOff,
|
|
32944
|
+
degraded: input.degraded,
|
|
32908
32945
|
fetchedAt: input.fetchedAt
|
|
32909
32946
|
};
|
|
32910
32947
|
}
|
|
@@ -32956,24 +32993,74 @@ var AUDIO_SILENCING_SWITCH_IDS = [
|
|
|
32956
32993
|
"broker-audio",
|
|
32957
32994
|
"audio-analysis"
|
|
32958
32995
|
];
|
|
32996
|
+
/**
|
|
32997
|
+
* Sentinel resolved by the per-stage timer. A unique symbol rather than `null`
|
|
32998
|
+
* so the race result can be narrowed WITHOUT a cast — and, more to the point,
|
|
32999
|
+
* so a stage that legitimately resolves `null` is never mistaken for one that
|
|
33000
|
+
* ran out of time.
|
|
33001
|
+
*/
|
|
33002
|
+
var STAGE_TIMED_OUT = Symbol("camera-status-stage-timeout");
|
|
32959
33003
|
var CameraStatusService = class {
|
|
32960
33004
|
deps;
|
|
32961
33005
|
constructor(deps) {
|
|
32962
33006
|
this.deps = deps;
|
|
32963
33007
|
}
|
|
32964
33008
|
/**
|
|
32965
|
-
*
|
|
33009
|
+
* Record — and ANNOUNCE — a stage whose value could not be trusted.
|
|
33010
|
+
*
|
|
33011
|
+
* Both halves matter. The entry is what a client reads to tell a `null` that
|
|
33012
|
+
* means "we could not look" from a `null` that means "there is nothing
|
|
33013
|
+
* there"; the `warn` is what makes the next hang findable at all. The line
|
|
33014
|
+
* carries `tags.deviceId` with the numeric id because the question is always
|
|
33015
|
+
* per-camera ("why is 614 worse than 615?") and a line without the tag
|
|
33016
|
+
* cannot be grouped to answer it.
|
|
33017
|
+
*/
|
|
33018
|
+
recordDegraded(sink, deviceId, stage, reason, elapsedMs, extraMeta = {}) {
|
|
33019
|
+
sink.entries.push({
|
|
33020
|
+
stage,
|
|
33021
|
+
reason,
|
|
33022
|
+
elapsedMs
|
|
33023
|
+
});
|
|
33024
|
+
this.deps.logger.warn("camera status stage could not be read", {
|
|
33025
|
+
tags: { deviceId },
|
|
33026
|
+
meta: {
|
|
33027
|
+
stage,
|
|
33028
|
+
reason,
|
|
33029
|
+
elapsedMs,
|
|
33030
|
+
...extraMeta
|
|
33031
|
+
}
|
|
33032
|
+
});
|
|
33033
|
+
}
|
|
33034
|
+
/**
|
|
33035
|
+
* Races a promise against a timeout. Returns `null` on timeout OR rejection —
|
|
33036
|
+
* but the two are no longer the same event: whichever happened is pushed to
|
|
33037
|
+
* `sink` (and logged) under `stage`, so the `null` that reaches the payload
|
|
33038
|
+
* arrives with its cause attached.
|
|
33039
|
+
*
|
|
32966
33040
|
* Never throws — individual stage failures become `null` in the aggregate.
|
|
32967
33041
|
*
|
|
32968
|
-
* @param p
|
|
32969
|
-
* @param ms
|
|
33042
|
+
* @param p The stage fetch promise.
|
|
33043
|
+
* @param ms Timeout in milliseconds.
|
|
33044
|
+
* @param stage Which stage this is, as it appears in `CameraStatus.degraded`.
|
|
33045
|
+
* @param deviceId The camera — every line about it carries the tag.
|
|
33046
|
+
* @param sink Per-call collector for stages that could not be read.
|
|
32970
33047
|
*/
|
|
32971
|
-
boundedStage(p, ms) {
|
|
33048
|
+
boundedStage(p, ms, stage, deviceId, sink) {
|
|
33049
|
+
const startedAt = Date.now();
|
|
32972
33050
|
let timer;
|
|
32973
33051
|
const timeout = new Promise((resolve) => {
|
|
32974
|
-
timer = setTimeout(() => resolve(
|
|
33052
|
+
timer = setTimeout(() => resolve(STAGE_TIMED_OUT), ms);
|
|
32975
33053
|
});
|
|
32976
|
-
return Promise.race([p, timeout]).
|
|
33054
|
+
return Promise.race([p, timeout]).then((value) => {
|
|
33055
|
+
if (value === STAGE_TIMED_OUT) {
|
|
33056
|
+
this.recordDegraded(sink, deviceId, stage, "timeout", Date.now() - startedAt, { timeoutMs: ms });
|
|
33057
|
+
return null;
|
|
33058
|
+
}
|
|
33059
|
+
return value;
|
|
33060
|
+
}).catch((err) => {
|
|
33061
|
+
this.recordDegraded(sink, deviceId, stage, "error", Date.now() - startedAt, { error: err instanceof Error ? err.message : String(err) });
|
|
33062
|
+
return null;
|
|
33063
|
+
}).finally(() => {
|
|
32977
33064
|
if (timer !== void 0) clearTimeout(timer);
|
|
32978
33065
|
});
|
|
32979
33066
|
}
|
|
@@ -32999,7 +33086,7 @@ var CameraStatusService = class {
|
|
|
32999
33086
|
decoder: false,
|
|
33000
33087
|
audio: audioPinned
|
|
33001
33088
|
},
|
|
33002
|
-
detectionReason: pipelineAssignment !== null ? pipelineAssignment.reason : this.deps.hasCameraConfig(deviceId) ? `pending:${this.deps.getPendingReason(deviceId) ?? "pending"}` : void 0,
|
|
33089
|
+
detectionReason: pipelineAssignment !== null ? pipelineAssignment.reason : this.deps.hasCameraConfig(deviceId) ? `pending:${this.deps.getPendingReason(deviceId) ?? "pending"}` : this.deps.isSessionCamera(deviceId) ? "armed:on-motion" : void 0,
|
|
33003
33090
|
audioNodeId,
|
|
33004
33091
|
audioPinned
|
|
33005
33092
|
};
|
|
@@ -33010,7 +33097,7 @@ var CameraStatusService = class {
|
|
|
33010
33097
|
* deviceId). `allSlotsFetch` is shared with the broker stage — fetched
|
|
33011
33098
|
* ONCE by the caller — so this stage never issues its own round-trip.
|
|
33012
33099
|
*/
|
|
33013
|
-
buildSourceStage(api, allSlotsFetch, deviceId) {
|
|
33100
|
+
buildSourceStage(api, allSlotsFetch, deviceId, sink) {
|
|
33014
33101
|
if (!api || !allSlotsFetch) return Promise.resolve(null);
|
|
33015
33102
|
return this.boundedStage(allSlotsFetch.then((slots) => {
|
|
33016
33103
|
return { streams: slots.filter((s) => s.deviceId === deviceId).map((s) => ({
|
|
@@ -33021,7 +33108,7 @@ var CameraStatusService = class {
|
|
|
33021
33108
|
fps: 0,
|
|
33022
33109
|
kind: s.profile
|
|
33023
33110
|
})) };
|
|
33024
|
-
}), STAGE_TIMEOUT_MS);
|
|
33111
|
+
}), STAGE_TIMEOUT_MS, "source", deviceId, sink);
|
|
33025
33112
|
}
|
|
33026
33113
|
/**
|
|
33027
33114
|
* Broker stage (per-profile slot stats + client counts). Reuses
|
|
@@ -33032,7 +33119,7 @@ var CameraStatusService = class {
|
|
|
33032
33119
|
* broker's actual decode-session node into `liveDecoder` (T6) — the first
|
|
33033
33120
|
* slot that reports one wins.
|
|
33034
33121
|
*/
|
|
33035
|
-
buildBrokerStage(api, allSlotsFetch, deviceId, sourceNodeId, liveDecoder) {
|
|
33122
|
+
buildBrokerStage(api, allSlotsFetch, deviceId, sourceNodeId, liveDecoder, sink) {
|
|
33036
33123
|
if (!api || !allSlotsFetch) return Promise.resolve(null);
|
|
33037
33124
|
return this.boundedStage(allSlotsFetch.then(async (slots) => {
|
|
33038
33125
|
const deviceSlots = slots.filter((s) => s.deviceId === deviceId);
|
|
@@ -33069,7 +33156,7 @@ var CameraStatusService = class {
|
|
|
33069
33156
|
return e.brokerId.split("/")[0] === String(deviceId) && e.enabled;
|
|
33070
33157
|
}) ?? false
|
|
33071
33158
|
};
|
|
33072
|
-
}), STAGE_TIMEOUT_MS);
|
|
33159
|
+
}), STAGE_TIMEOUT_MS, "broker", deviceId, sink);
|
|
33073
33160
|
}
|
|
33074
33161
|
/**
|
|
33075
33162
|
* Decoder stage. decoder cap methods (listActiveSessions/getInfo/getShmStats)
|
|
@@ -33108,7 +33195,7 @@ var CameraStatusService = class {
|
|
|
33108
33195
|
};
|
|
33109
33196
|
}
|
|
33110
33197
|
/** Detection stage (pipeline-executor + runner metrics). */
|
|
33111
|
-
buildDetectionStage(api, detectionNodeId, deviceId) {
|
|
33198
|
+
buildDetectionStage(api, detectionNodeId, deviceId, sink) {
|
|
33112
33199
|
if (!api || !detectionNodeId) return Promise.resolve(null);
|
|
33113
33200
|
return this.boundedStage(Promise.all([api.pipelineExecutor.getEngineProvisioning.query({ nodeId: detectionNodeId }).catch(() => null), api.pipelineExecutor.getSelectedEngine.query({ nodeId: detectionNodeId }).catch(() => null)]).then(async ([provisioning, engine]) => {
|
|
33114
33201
|
const metrics = await api.pipelineRunner.getCameraMetrics.query({
|
|
@@ -33138,7 +33225,7 @@ var CameraStatusService = class {
|
|
|
33138
33225
|
...provisioning?.error !== void 0 ? { error: provisioning.error } : {}
|
|
33139
33226
|
}
|
|
33140
33227
|
};
|
|
33141
|
-
}), STAGE_TIMEOUT_MS);
|
|
33228
|
+
}), STAGE_TIMEOUT_MS, "detection", deviceId, sink);
|
|
33142
33229
|
}
|
|
33143
33230
|
/**
|
|
33144
33231
|
* Audio stage. `nodeId` is orchestrator-local (the cached assignment);
|
|
@@ -33157,6 +33244,12 @@ var CameraStatusService = class {
|
|
|
33157
33244
|
* analyzer with nothing, and reporting `enabled: true` for the other two
|
|
33158
33245
|
* would reintroduce the exact hardcoded lie the previous paragraph is about
|
|
33159
33246
|
* — one row further down the group.
|
|
33247
|
+
*
|
|
33248
|
+
* `enabled` is a boolean and cannot say "unknown", so when the switch read
|
|
33249
|
+
* was cut short or partial this block is OPTIMISTIC by construction. That is
|
|
33250
|
+
* survivable only because `CameraStatus.degraded` names `'switches'` in
|
|
33251
|
+
* exactly those cases — a surface drawing "audio is running" from this field
|
|
33252
|
+
* must consult it first.
|
|
33160
33253
|
*/
|
|
33161
33254
|
buildAudioStage(audioNodeId, switchedOff) {
|
|
33162
33255
|
if (audioNodeId === null) return null;
|
|
@@ -33171,8 +33264,13 @@ var CameraStatusService = class {
|
|
|
33171
33264
|
* `{ deviceId }` and returns `RecordingStatus`, typed `unknown` in the
|
|
33172
33265
|
* generated router (DEVICE_STATUS_METHOD) — narrowed via
|
|
33173
33266
|
* {@link isRecordingStatus} instead of an unsafe cast.
|
|
33267
|
+
*
|
|
33268
|
+
* There is deliberately NO `.catch(() => null)` on the query any more: it
|
|
33269
|
+
* swallowed the rejection before `boundedStage` could see it, so a recording
|
|
33270
|
+
* source that was refusing every call produced the same anonymous `null` as
|
|
33271
|
+
* a camera that simply records nothing.
|
|
33174
33272
|
*/
|
|
33175
|
-
buildRecordingStage(api, deviceId) {
|
|
33273
|
+
buildRecordingStage(api, deviceId, sink) {
|
|
33176
33274
|
if (!api) return Promise.resolve(null);
|
|
33177
33275
|
return this.boundedStage(api.recording.getStatus.query({ deviceId }).then((rawStatus) => {
|
|
33178
33276
|
if (!isRecordingStatus(rawStatus)) return null;
|
|
@@ -33181,7 +33279,40 @@ var CameraStatusService = class {
|
|
|
33181
33279
|
active: rawStatus.enabled && rawStatus.activeMode !== "off",
|
|
33182
33280
|
storageBytes: rawStatus.storageBytes
|
|
33183
33281
|
};
|
|
33184
|
-
})
|
|
33282
|
+
}), STAGE_TIMEOUT_MS, "recording", deviceId, sink);
|
|
33283
|
+
}
|
|
33284
|
+
/**
|
|
33285
|
+
* The operator's function switches (D61/D62), bounded like every other stage.
|
|
33286
|
+
*
|
|
33287
|
+
* Three outcomes, and they must not collapse into one:
|
|
33288
|
+
*
|
|
33289
|
+
* - READ — the group came back whole. The derived id list is a total, and an
|
|
33290
|
+
* empty one really does mean the operator turned nothing off.
|
|
33291
|
+
* - PARTIAL — the group came back with at least one switch marked
|
|
33292
|
+
* `source-unreachable`. `CameraSwitchService` bounds each source
|
|
33293
|
+
* individually, so a slow source drops ITS switch and leaves the rest;
|
|
33294
|
+
* the derived list is then a FLOOR. Marked `'partial'`.
|
|
33295
|
+
* - NOT READ — the whole group timed out or rejected. Marked by
|
|
33296
|
+
* `boundedStage` itself.
|
|
33297
|
+
*
|
|
33298
|
+
* In the last two the returned list is `[]`, and `[]` was previously handed
|
|
33299
|
+
* to the payload as the positive claim "the operator has switched nothing
|
|
33300
|
+
* off". Measured on the live hub 2026-08-08: `getCameraStatus(614)` said
|
|
33301
|
+
* `switchedOff: []` at the very moment `getCameraSwitches(614)` reported
|
|
33302
|
+
* `stream-broker` AND `recording` switched off by the operator — the camera
|
|
33303
|
+
* read as BROKEN because it was switched OFF, which is exactly the
|
|
33304
|
+
* inversion D62 exists to forbid. The list stays empty (a guess would put a
|
|
33305
|
+
* permanent "off" badge on a working camera); what changed is that the
|
|
33306
|
+
* emptiness now travels with the reason it is empty.
|
|
33307
|
+
*/
|
|
33308
|
+
buildSwitchStage(deviceId, sink) {
|
|
33309
|
+
const startedAt = Date.now();
|
|
33310
|
+
return this.boundedStage(this.deps.cameraSwitchesFor(deviceId), STAGE_TIMEOUT_MS, "switches", deviceId, sink).then((group) => {
|
|
33311
|
+
if (group === null) return [];
|
|
33312
|
+
const unreadable = group.switches.filter((s) => s.unavailableReason === "source-unreachable");
|
|
33313
|
+
if (unreadable.length > 0) this.recordDegraded(sink, deviceId, "switches", "partial", Date.now() - startedAt, { unreadableSwitches: unreadable.map((s) => s.id) });
|
|
33314
|
+
return switchedOffIds(group.switches);
|
|
33315
|
+
});
|
|
33185
33316
|
}
|
|
33186
33317
|
/**
|
|
33187
33318
|
* Server-composed aggregated status for a single camera.
|
|
@@ -33189,20 +33320,23 @@ var CameraStatusService = class {
|
|
|
33189
33320
|
* Fans out in parallel (bounded, per-stage graceful degradation) to
|
|
33190
33321
|
* broker / decoder / motion / detection / audio / recording source caps
|
|
33191
33322
|
* via `ctx.api`. A stage whose source errors or times out becomes `null`
|
|
33192
|
-
* in the returned payload — one slow agent never breaks the whole call
|
|
33323
|
+
* in the returned payload — one slow agent never breaks the whole call —
|
|
33324
|
+
* and is NAMED in `degraded`, so a consumer can tell that `null` from the
|
|
33325
|
+
* `null` of a camera that legitimately has no such stage.
|
|
33193
33326
|
*/
|
|
33194
33327
|
async getCameraStatus(deviceId) {
|
|
33195
33328
|
const api = this.deps.api();
|
|
33329
|
+
const degradations = { entries: [] };
|
|
33196
33330
|
const { detectionNodeId, sourceNodeId, pinned, detectionReason, audioNodeId, audioPinned } = this.buildAssignmentContext(deviceId);
|
|
33197
33331
|
const liveDecoder = { nodeId: null };
|
|
33198
33332
|
const allSlotsFetch = api ? api.streamBroker.listAllProfileSlots.query(void 0, nodePin(sourceNodeId)) : null;
|
|
33199
|
-
const sourceFetch = this.buildSourceStage(api, allSlotsFetch, deviceId);
|
|
33200
|
-
const brokerFetch = this.buildBrokerStage(api, allSlotsFetch, deviceId, sourceNodeId, liveDecoder);
|
|
33333
|
+
const sourceFetch = this.buildSourceStage(api, allSlotsFetch, deviceId, degradations);
|
|
33334
|
+
const brokerFetch = this.buildBrokerStage(api, allSlotsFetch, deviceId, sourceNodeId, liveDecoder, degradations);
|
|
33201
33335
|
const decoderFetch = this.buildDecoderStage(detectionNodeId);
|
|
33202
33336
|
const motionResult = this.buildMotionStage(deviceId);
|
|
33203
|
-
const detectionFetch = this.buildDetectionStage(api, detectionNodeId, deviceId);
|
|
33204
|
-
const recordingFetch = this.buildRecordingStage(api, deviceId);
|
|
33205
|
-
const switchesFetch = this.
|
|
33337
|
+
const detectionFetch = this.buildDetectionStage(api, detectionNodeId, deviceId, degradations);
|
|
33338
|
+
const recordingFetch = this.buildRecordingStage(api, deviceId, degradations);
|
|
33339
|
+
const switchesFetch = this.buildSwitchStage(deviceId, degradations);
|
|
33206
33340
|
const [sourceResult, brokerResult, decoderResult, detectionResult, recordingResult, switchedOff] = await Promise.all([
|
|
33207
33341
|
sourceFetch,
|
|
33208
33342
|
brokerFetch,
|
|
@@ -33235,7 +33369,8 @@ var CameraStatusService = class {
|
|
|
33235
33369
|
detectionResult,
|
|
33236
33370
|
audioResult,
|
|
33237
33371
|
recordingResult,
|
|
33238
|
-
switchedOff
|
|
33372
|
+
switchedOff,
|
|
33373
|
+
degraded: [...degradations.entries]
|
|
33239
33374
|
});
|
|
33240
33375
|
}
|
|
33241
33376
|
/**
|
|
@@ -33303,6 +33438,25 @@ function readPrivacyMaskFacts(v) {
|
|
|
33303
33438
|
enabled: typeof enabled === "boolean" ? enabled : null
|
|
33304
33439
|
};
|
|
33305
33440
|
}
|
|
33441
|
+
/**
|
|
33442
|
+
* How long ONE source of the gather may take before it is treated as
|
|
33443
|
+
* unreachable.
|
|
33444
|
+
*
|
|
33445
|
+
* The gather runs in two sequential stages, so an operator's worst case is
|
|
33446
|
+
* twice this — 2.4s — which has to stay under the 3s `STAGE_TIMEOUT_MS` that
|
|
33447
|
+
* `CameraStatusService` allows the whole switch read. That ordering is the
|
|
33448
|
+
* whole point of the number: if the gather can outlast its caller's budget,
|
|
33449
|
+
* the caller degrades to "nothing switched off" and a camera the operator
|
|
33450
|
+
* DISABLED renders as broken.
|
|
33451
|
+
*
|
|
33452
|
+
* Measured on the live hub, 2026-08-08: seven of the eight sources answered in
|
|
33453
|
+
* 5–15ms on every camera. The eighth, `privacyMask.getStatus`, probes the
|
|
33454
|
+
* camera itself and took 3.1–3.6s on device 614 on every single call (18s
|
|
33455
|
+
* under load) — so a bound generous enough to make the fast sources safe still
|
|
33456
|
+
* has to be willing to drop the slow one, because waiting for it costs the
|
|
33457
|
+
* other six switches.
|
|
33458
|
+
*/
|
|
33459
|
+
var SOURCE_TIMEOUT_MS = 1200;
|
|
33306
33460
|
var CameraSwitchService = class {
|
|
33307
33461
|
deps;
|
|
33308
33462
|
constructor(deps) {
|
|
@@ -33439,11 +33593,16 @@ var CameraSwitchService = class {
|
|
|
33439
33593
|
wrapperAddonIdByCap: /* @__PURE__ */ new Map(),
|
|
33440
33594
|
recordingConfig: null
|
|
33441
33595
|
};
|
|
33442
|
-
const devicePromise = api.deviceManager.getDevice.query({ deviceId }).then((d) => isDeviceShape(d) ? d : null).catch((err) => {
|
|
33596
|
+
const devicePromise = this.bounded(deviceId, "deviceManager.getDevice", api.deviceManager.getDevice.query({ deviceId }).then((d) => isDeviceShape(d) ? d : null).catch((err) => {
|
|
33443
33597
|
this.warn(deviceId, "getDevice", err);
|
|
33444
33598
|
return null;
|
|
33445
|
-
});
|
|
33446
|
-
const
|
|
33599
|
+
}), null);
|
|
33600
|
+
const unknownBindings = {
|
|
33601
|
+
activeWrapperCapNames: null,
|
|
33602
|
+
providerAddonIdByCap: /* @__PURE__ */ new Map(),
|
|
33603
|
+
allCapNames: null
|
|
33604
|
+
};
|
|
33605
|
+
const bindingsPromise = this.bounded(deviceId, "deviceManager.getBindings", api.deviceManager.getBindings.query({ deviceId }).then((b) => {
|
|
33447
33606
|
const active = [];
|
|
33448
33607
|
const all = [];
|
|
33449
33608
|
const providers = /* @__PURE__ */ new Map();
|
|
@@ -33460,24 +33619,20 @@ var CameraSwitchService = class {
|
|
|
33460
33619
|
};
|
|
33461
33620
|
}).catch((err) => {
|
|
33462
33621
|
this.warn(deviceId, "getBindings", err);
|
|
33463
|
-
return
|
|
33464
|
-
|
|
33465
|
-
|
|
33466
|
-
allCapNames: null
|
|
33467
|
-
};
|
|
33468
|
-
});
|
|
33469
|
-
const recordingPromise = api.recording.getDeviceConfig.query({ deviceId }).then((c) => isRecordingConfig(c) ? c : null).catch((err) => {
|
|
33622
|
+
return unknownBindings;
|
|
33623
|
+
}), unknownBindings);
|
|
33624
|
+
const recordingPromise = this.bounded(deviceId, "recording.getDeviceConfig", api.recording.getDeviceConfig.query({ deviceId }).then((c) => isRecordingConfig(c) ? c : null).catch((err) => {
|
|
33470
33625
|
this.warn(deviceId, "recording.getDeviceConfig", err);
|
|
33471
33626
|
return null;
|
|
33472
|
-
});
|
|
33473
|
-
const mutesPromise = api.notificationRules.listDeviceMutes.query({}).then((r) => r.mutedDeviceIds).catch((err) => {
|
|
33627
|
+
}), null);
|
|
33628
|
+
const mutesPromise = this.bounded(deviceId, "notificationRules.listDeviceMutes", api.notificationRules.listDeviceMutes.query({}).then((r) => r.mutedDeviceIds).catch((err) => {
|
|
33474
33629
|
this.warn(deviceId, "notificationRules.listDeviceMutes", err);
|
|
33475
33630
|
return null;
|
|
33476
|
-
});
|
|
33477
|
-
const brokerAudioPromise = api.streamBroker.getDeviceAudioMute.query({ deviceId }, nodePin(this.deps.assignSource(deviceId))).then((r) => ({ muted: r.muted })).catch((err) => {
|
|
33631
|
+
}), null);
|
|
33632
|
+
const brokerAudioPromise = this.bounded(deviceId, "streamBroker.getDeviceAudioMute", api.streamBroker.getDeviceAudioMute.query({ deviceId }, nodePin(this.deps.assignSource(deviceId))).then((r) => ({ muted: r.muted })).catch((err) => {
|
|
33478
33633
|
this.warn(deviceId, "streamBroker.getDeviceAudioMute", err);
|
|
33479
33634
|
return null;
|
|
33480
|
-
});
|
|
33635
|
+
}), null);
|
|
33481
33636
|
const [device, bindings, recordingConfig, mutedDeviceIds, brokerAudio] = await Promise.all([
|
|
33482
33637
|
devicePromise,
|
|
33483
33638
|
bindingsPromise,
|
|
@@ -33485,10 +33640,10 @@ var CameraSwitchService = class {
|
|
|
33485
33640
|
mutesPromise,
|
|
33486
33641
|
brokerAudioPromise
|
|
33487
33642
|
]);
|
|
33488
|
-
const [bindable, privacy] = await Promise.all([device === null ? Promise.resolve(null) : api.deviceManager.listBindableCapsForDeviceType.query({ deviceType: device.type }).catch((err) => {
|
|
33643
|
+
const [bindable, privacy] = await Promise.all([device === null ? Promise.resolve(null) : this.bounded(deviceId, "deviceManager.listBindableCapsForDeviceType", api.deviceManager.listBindableCapsForDeviceType.query({ deviceType: device.type }).catch((err) => {
|
|
33489
33644
|
this.warn(deviceId, "listBindableCapsForDeviceType", err);
|
|
33490
33645
|
return null;
|
|
33491
|
-
}), this.gatherPrivacy(api, deviceId, bindings.allCapNames)]);
|
|
33646
|
+
}), null), this.gatherPrivacy(api, deviceId, bindings.allCapNames)]);
|
|
33492
33647
|
const wrapperAddonIdByCap = /* @__PURE__ */ new Map();
|
|
33493
33648
|
for (const entry of bindable ?? []) {
|
|
33494
33649
|
const first = entry.wrappers[0];
|
|
@@ -33544,13 +33699,13 @@ var CameraSwitchService = class {
|
|
|
33544
33699
|
enabled: null
|
|
33545
33700
|
}
|
|
33546
33701
|
};
|
|
33547
|
-
const [options, status] = await Promise.all([api.privacyMask.getOptions.query({ deviceId }).catch((err) => {
|
|
33702
|
+
const [options, status] = await Promise.all([this.bounded(deviceId, "privacyMask.getOptions", api.privacyMask.getOptions.query({ deviceId }).catch((err) => {
|
|
33548
33703
|
this.warn(deviceId, "privacyMask.getOptions", err);
|
|
33549
33704
|
return null;
|
|
33550
|
-
}), api.privacyMask.getStatus.query({ deviceId }).catch((err) => {
|
|
33705
|
+
}), null), this.bounded(deviceId, "privacyMask.getStatus", api.privacyMask.getStatus.query({ deviceId }).catch((err) => {
|
|
33551
33706
|
this.warn(deviceId, "privacyMask.getStatus", err);
|
|
33552
33707
|
return null;
|
|
33553
|
-
})]);
|
|
33708
|
+
}), null)]);
|
|
33554
33709
|
if (options === null) return {
|
|
33555
33710
|
deviceAudio: null,
|
|
33556
33711
|
privacyMask: null
|
|
@@ -33574,6 +33729,41 @@ var CameraSwitchService = class {
|
|
|
33574
33729
|
}
|
|
33575
33730
|
};
|
|
33576
33731
|
}
|
|
33732
|
+
/**
|
|
33733
|
+
* Bound ONE source. A source that has not answered within
|
|
33734
|
+
* {@link SOURCE_TIMEOUT_MS} yields `fallback` — the same value its `.catch`
|
|
33735
|
+
* yields — so a slow source and a broken one produce the identical group:
|
|
33736
|
+
* that switch is `available: false`, and every other switch is untouched.
|
|
33737
|
+
*
|
|
33738
|
+
* The bound is per SOURCE rather than around the whole gather on purpose.
|
|
33739
|
+
* One deadline over the fan-out would let the slowest camera probe consume
|
|
33740
|
+
* the budget of the seven sources that already answered, which is precisely
|
|
33741
|
+
* how `getCameraStatus` came to report `switchedOff: []` for a camera whose
|
|
33742
|
+
* `stream-broker` and `recording` switches the operator had turned off.
|
|
33743
|
+
*
|
|
33744
|
+
* @param deviceId The camera — every line about it carries the tag.
|
|
33745
|
+
* @param source The cap method, as named in the warn line.
|
|
33746
|
+
* @param p The source's promise. Already `.catch`-ed; never rejects.
|
|
33747
|
+
* @param fallback What the caller reads when the source did not answer.
|
|
33748
|
+
*/
|
|
33749
|
+
bounded(deviceId, source, p, fallback) {
|
|
33750
|
+
let timer;
|
|
33751
|
+
const timeout = new Promise((resolve) => {
|
|
33752
|
+
timer = setTimeout(() => {
|
|
33753
|
+
this.deps.logger.warn("camera switch source TIMED OUT — its switch is not offered", {
|
|
33754
|
+
tags: { deviceId },
|
|
33755
|
+
meta: {
|
|
33756
|
+
source,
|
|
33757
|
+
timeoutMs: SOURCE_TIMEOUT_MS
|
|
33758
|
+
}
|
|
33759
|
+
});
|
|
33760
|
+
resolve(fallback);
|
|
33761
|
+
}, SOURCE_TIMEOUT_MS);
|
|
33762
|
+
});
|
|
33763
|
+
return Promise.race([p, timeout]).finally(() => {
|
|
33764
|
+
if (timer !== void 0) clearTimeout(timer);
|
|
33765
|
+
});
|
|
33766
|
+
}
|
|
33577
33767
|
warn(deviceId, source, err) {
|
|
33578
33768
|
this.deps.logger.warn("camera switch source unreachable — its switch is not offered", {
|
|
33579
33769
|
tags: { deviceId },
|
|
@@ -39290,6 +39480,7 @@ async function buildOrchestratorControllers(deps) {
|
|
|
39290
39480
|
});
|
|
39291
39481
|
const cameraStatusService = new CameraStatusService({
|
|
39292
39482
|
api: () => deps.ctx().api,
|
|
39483
|
+
logger: deps.ctx().logger,
|
|
39293
39484
|
getAssignment: (deviceId) => ledger.getAssignment(deviceId),
|
|
39294
39485
|
getAudioAssignment: (deviceId) => audio.getAssignment(deviceId),
|
|
39295
39486
|
getCameraConfig: (deviceId) => ledger.getConfig(deviceId),
|
|
@@ -39297,7 +39488,8 @@ async function buildOrchestratorControllers(deps) {
|
|
|
39297
39488
|
getPendingReason: (deviceId) => ledger.getPendingReason(deviceId),
|
|
39298
39489
|
assignSource: (deviceId) => topology.assignSource(deviceId),
|
|
39299
39490
|
listAssignedDeviceIds: () => ledger.listAssignedDeviceIds(),
|
|
39300
|
-
|
|
39491
|
+
isSessionCamera: (deviceId) => deps.isSessionCamera(deviceId),
|
|
39492
|
+
cameraSwitchesFor: (deviceId) => cameraSwitchService.getCameraSwitches(deviceId)
|
|
39301
39493
|
});
|
|
39302
39494
|
const reconcile = new ReconcileController({
|
|
39303
39495
|
api: () => deps.ctx().api ?? null,
|
package/dist/remoteEntry.js
CHANGED
|
@@ -30,7 +30,7 @@ async function d(e) {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
async function f() {
|
|
33
|
-
return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-
|
|
33
|
+
return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-B9MEuh4w.mjs")).catch((e) => {
|
|
34
34
|
throw l = void 0, e;
|
|
35
35
|
}), l;
|
|
36
36
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-pipeline-orchestrator",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.33",
|
|
4
4
|
"description": "Hub-side camera-to-agent load balancer — tracks runner capacity and dispatches attachCamera calls to the optimal pipeline-runner instance",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
//#region \0virtual:mf:__mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js
|
|
2
|
-
var e = "__mf_init__virtual:mf:__mfe_internal__addon_pipeline_orchestrator_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, s, c = (e) => {
|
|
19
|
-
e.ACCESSORY_LABEL, 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.AdoptionFilterSchema, e.AdoptionGetCandidateInputSchema, e.AdoptionListCandidatesInputSchema, e.AdoptionListCandidatesOutputSchema, 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.AutomationControlStatusSchema, e.AvailableIntegrationTypeSchema, e.BACKEND_TO_FORMAT, e.BASE_LIVE_EGRESS_PROFILE, e.BATTERY_DEVICE_PROFILE, 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.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.CameraStatusSchema, 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.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_EVENT_COLOR, e.DEFAULT_FEATURES, e.DEFAULT_NATIVE_LEASE_SETTINGS, e.DEFAULT_RETENTION, e.DEFAULT_SCRUB_THUMBNAIL_PRESET, e.DETAIL_CROP_PADDING_FIELD, e.DETAIL_CROP_PADDING_KEY, e.DETAIL_CROP_SECTION_ID, e.DETAIL_CROP_SQUARE_KEY, 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.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.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.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.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.LlmErrorCodeSchema, e.LlmGenerateBaseInputSchema, e.LlmGenerateErrSchema, e.LlmGenerateOkSchema, e.LlmGenerateResultSchema, e.LlmImageSchema, e.LlmNodeModelSchema, e.LlmProfileKindDescriptorSchema, e.LlmProfileKindSchema, e.LlmProfileSchema, e.LlmRuntimeCompleteInputSchema, e.LlmRuntimeDiskUsageSchema, e.LlmRuntimeNodeSchema, e.LlmRuntimeStatusSchema, e.LlmUsageRollupSchema, e.LlmUsageSchema, e.LocateSegmentResultSchema, e.LocationStatSchema, e.LockControlStatusSchema, e.LockStateSchema, e.LogEntrySchema, e.LogLevelSchema, e.LogStreamEntrySchema, e.LoginMethodContributionSchema, e.LoginStageEnum, a = e.MACRO_LABELS, 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.MODEL_FORMATS, e.MOTION_TRIGGER_FEATURE, e.ManagedModelCatalogEntrySchema, 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_SECTION_ID, e.NATIVE_LEASE_TTL_FIELD, e.NATIVE_LEASE_TTL_KEY, e.NC_BASE_CONDITION_KEYS, e.NC_CONDITION_CATALOG, 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.NcConditionDescriptorSchema, e.NcConditionsSchema, 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.NcScheduleSchema, e.NcScheduleWindowSchema, e.NcSnoozeInputSchema, e.NcSnoozeSchema, e.NcSnoozeScopeSchema, e.NcSnoozeSuppressedSchema, 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.RESERVED_BINDING_NAMES, e.RUNTIME_DEFAULTS, 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.RecordingRetentionSchema, e.RecordingStatusSchema, e.RecordingStorageModeSchema, e.RecordingStorageUsageSchema, e.RecordingTriggersSchema, e.RecordingWeekdaySchema, e.RedirectLoginMethodSchema, 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.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.SceneCheckSchema, e.SceneConditionSchema, e.SceneMonitorSchema, e.SceneMonitorStateSchema, e.SceneMonitorStatusSchema, e.SceneReferenceSchema, 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.SettingsPatchSchema, e.SettingsRecordSchema, e.SettingsSchemaWithValuesSchema, e.SettingsUpdateResultSchema, e.ShmRingStatsSchema, 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.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.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.TerminalProfileInfoSchema, e.TerminalSessionInfoSchema, e.TestConnectionResultSchema, 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, o = 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.audioAnalysisCapability, e.audioAnalyzerCapability, e.audioCodecCapability, e.audioMetricsCapability, 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.buildStreamParamsConfigSchema, e.buildVideoArgs, e.buttonCapability, e.cameraCredentialsCapability, e.cameraPipelineConfigCapability, e.cameraStreamsCapability, e.canConvertUnit, e.canonicalEgressPlan, e.carbonMonoxideCapability, e.cellsToRects, e.classifyStream, e.classifyStreams, e.climateControlCapability, e.collectHydratedFieldEntries, e.collectHydratedFieldValues, e.colorCapability, e.colorForKind, e.compileExpression, e.compileExpressionSafe, e.connectivityCapability, e.consumablesCapability, e.contactCapability, e.controlCapability, e.convertUnit, e.coreBlockAddonId, e.coreBlockIdFromAddonId, e.coreBlocksCapability, e.cosineSimilarity, 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.deriveCameraSwitches, e.deriveDetailCropRect, e.deriveRecordingMode, e.describeModelVariant, e.detectionPipelineCapability, e.deviceAdoptionCapability, e.deviceBackendToFormat, e.deviceCustomAction, e.deviceDiscoveryCapability, e.deviceExportCapability, e.deviceManagerCapability, e.deviceMatchesProfile, e.deviceOpsCapability, e.deviceProviderCapability, 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.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.isBaseConditionKey, e.isCollectionArrayMethod, e.isDeployableToAgent, e.isDeviceConfigCap, e.isDeviceScopedCap, e.isEvent, e.isNode, e.isObjectInput, 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, e.makeSourceBrokerId, e.mapAudioLabelToMacro, e.markdownToHtmlLite, e.markdownToText, e.maskUrlCredentials, e.mediaPlayerCapability, e.mergeSourceInfo, e.meshNetworkCapability, e.method, 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.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.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.privacyMaskCapability, e.procedureAuthKey, e.ptzAutotrackCapability, e.ptzCapability, e.pythonScriptForBackend, e.readDetailCropConvention, e.readDeviceStateFrom, e.readNativeLeaseOverride, e.readNodePin, 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, s = e.resolveHydratedFieldValue, e.resolveModelFormat, e.resolveMutate, e.resolveRunnerId, e.resolveScrubThumbnailGeometry, e.resolveVariantModelId, e.runInferenceStep, e.runtimeDevices, e.sceneMonitorCapability, e.scopeKey, 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.storageProviderCapability, e.streamBrokerCapability, e.streamCatalogCapability, e.streamParamsCapability, e.streamPixels, e.streamQualityLabel, e.subKindsOf, e.summarisePrivacyAudio, 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.tokenize, e.transcodeBody, e.tryConvertUnit, e.turnProviderCapability, e.unitDimension, e.unitsForDimension, e.updateCapability, e.userManagementCapability, e.userPasskeysCapability, e.vacuumControlCapability, e.validateExpressionSource, 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
|
-
}, l = i.share["default:@camstack/types"];
|
|
21
|
-
l === void 0 ? n.then(() => {
|
|
22
|
-
if (l = i.share["default:@camstack/types"], l === void 0) throw Error("[Module Federation] Shared module @camstack/types was imported before federation bootstrap finished.");
|
|
23
|
-
c(l);
|
|
24
|
-
}) : c(l);
|
|
25
|
-
//#endregion
|
|
26
|
-
export { a as n, o as r, s as t };
|