@camstack/types 1.2.304 → 1.2.305

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.
@@ -12,7 +12,7 @@
12
12
  * they sit next to each other in the same device config (`{ host, port,
13
13
  * username, password }` on Hikvision, Reolink, Amcrest, ONVIF alike). A
14
14
  * convenience that "pre-fills the login" is one template literal away, and
15
- * `http://admin:hunter2@192.168.x.x/` is a working URL that browsers accept,
15
+ * `http://admin:hunter2@192.168.60.139/` is a working URL that browsers accept,
16
16
  * that lands in the DOM, in a right-click → copy, in a screenshot, and in any
17
17
  * log line that prints what was opened. `scripts/check-no-credential-urls-in-
18
18
  * fixtures.ts` already exists because this repo shipped exactly that leak on
@@ -35,7 +35,7 @@ export interface DeviceAdminUrlParts {
35
35
  *
36
36
  * Not the vendor's control port. Reolink's device config carries `port: 9000`
37
37
  * — the Baichuan media port — and `http://<reolink>:9000/` answers nothing
38
- * (verified against 192.168.x.x on 2026-09-22: `:9000` refuses the
38
+ * (verified against 192.168.60.226 on 2026-09-22: `:9000` refuses the
39
39
  * connection, `:80` returns 200 text/html). A provider that reads a port
40
40
  * field without knowing what that port IS produces a button that opens a
41
41
  * browser error.
@@ -49,7 +49,7 @@
49
49
  * This matters here more than anywhere else in the repo, because every provider
50
50
  * that knows a device's host knows its PASSWORD too: `{ host, port, username,
51
51
  * password }` sit in one object on Hikvision, Amcrest, Reolink and ONVIF alike,
52
- * and `http://admin:hunter2@192.168.x.x/` is a URL a browser accepts. The
52
+ * and `http://admin:hunter2@192.168.60.139/` is a URL a browser accepts. The
53
53
  * camera's own page will ask for its own login. That is correct, and pre-
54
54
  * filling it is the operator's business, not ours.
55
55
  *
@@ -32,14 +32,14 @@ export { AUDIO_BACKEND_CHOICES, AudioAnalysisResultSchema, AudioAnalysisSettings
32
32
  export { AudioCodecInfoSchema, AudioDecodeSessionConfigSchema, AudioEncodedChunkSchema, AudioEncodeSessionConfigSchema, AudioPcmChunkSchema, audioCodecCapability, type IAudioCodecCapProvider, PcmSampleFormatSchema, } from './audio-codec.cap.js';
33
33
  export { AuthResultSchema, authProviderCapability } from './auth-provider.cap.js';
34
34
  export { ArchiveEntrySchema, ArchiveManifestSchema, BackupDestinationInfoSchema, BackupEntrySchema, type BackupRun, type BackupRunPhase, BackupRunPhaseSchema, BackupRunSchema, type BackupRunState, BackupRunStateSchema, type BackupTriggerResult, BackupTriggerResultSchema, backupCapability, type IBackupProvider, LocationStatSchema, } from './backup.cap.js';
35
- export { BrokerAddInputSchema, BrokerGetStateInputSchema, type BrokerInfo, BrokerInfoSchema, type BrokerInfo as UnifiedBrokerInfo, BrokerInfoSchema as UnifiedBrokerInfoSchema, type BrokerProviderInfo, BrokerProviderInfoSchema, BrokerPublishInputSchema, BrokerRegistryStatusSchema, type BrokerStatus as UnifiedBrokerStatus, BrokerStatusEnum, BrokerSubscribeInputSchema, BrokerSubscribeResultSchema, BrokerTestConnectionResultSchema, BrokerUnsubscribeInputSchema, brokerCapability, type IBrokerProvider, } from './broker.cap.js';
35
+ export { BrokerAddInputSchema, BrokerGetStateInputSchema, type BrokerInfo, type BrokerInfo as UnifiedBrokerInfo, BrokerInfoSchema, BrokerInfoSchema as UnifiedBrokerInfoSchema, type BrokerProviderInfo, BrokerProviderInfoSchema, BrokerPublishInputSchema, BrokerRegistryStatusSchema, type BrokerStatus as UnifiedBrokerStatus, BrokerStatusEnum, BrokerSubscribeInputSchema, BrokerSubscribeResultSchema, BrokerTestConnectionResultSchema, BrokerUnsubscribeInputSchema, brokerCapability, type IBrokerProvider, } from './broker.cap.js';
36
36
  export { cameraPipelineConfigCapability, type ICameraPipelineConfigProvider, } from './camera-pipeline-config.cap.js';
37
37
  export { cameraStreamsCapability, type ICameraStreamsProvider, type PickedCamStream, PickedCamStreamSchema, type PickStreamPreferences, PickStreamPreferencesSchema, type PickStreamRequirements, PickStreamRequirementsSchema, type StreamCodec, StreamCodecSchema, } from './camera-streams.cap.js';
38
38
  export { emitsCollectionSelector, extractNestedAddonId, isArrayOutputSchema, isCollectionArrayMethod, isObjectInput, isVoidInput, kebabToCamel, looseSchema, objectInputDeclaresAddonId, objectInputDeclaresRequiredDeviceId, procedureAuthKey, resolveMethodAuth, } from './cap-router-predicates.js';
39
39
  export type { CapabilityDefinition, CapabilityEventSchema, CapabilityMethodAuth, CapabilityMethodCaller, CapabilityMethodKind, CapabilityMethodOptions, CapabilityMethodSchema, CapabilityMountHint, CapabilityMountKind, CapabilityStatusItemArray, CapabilityStatusKind, CapabilityStatusSchema, CapCaller, DeviceConfigDerivedFormUi, DeviceConfigSpec, DeviceConfigUiSpec, DeviceConfigWidgetUi, DeviceSettingsContribution, InferDeviceProxyCap, InferEvents, InferName, InferNativeProvider, InferProvider, InferRuntimeState, ProviderKind, RuntimeStateDurability, UiContribution, UiContributionKind, UiContributionRemote, } from './capability-definition.js';
40
40
  export { DEFAULT_RUNTIME_STATE_DURABILITY, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, event, expandCapMethods, isDeviceConfigCap, method, optionalMethod, PROVIDER_PIN_FIELD, resolveCapMount, } from './capability-definition.js';
41
41
  export { COMPOSER_RUNNER_ID, type ComposerApplyInput, ComposerApplyInputSchema, type ComposerApplyResult, ComposerApplyResultSchema, type ComposerBlock, ComposerBlockSchema, type ComposerBlockVerdict, ComposerBlockVerdictSchema, type ComposerUnreadableBlock, ComposerUnreadableBlockSchema, composerCapability, type IComposerProvider, } from './composer.cap.js';
42
- export { CORE_BLOCK_ADDON_PREFIX, CORE_BLOCKS_ADDON_ID, type CompositionBlockInput, CompositionBlockInputSchema, type CompositionBlockPatch, type CompositionCustomizationRead, CompositionCustomizationReadSchema, type CompositionGetRead, CompositionGetReadSchema, type CompositionListRead, CompositionListReadSchema, type CompositionStateRead, CompositionStateReadSchema, type CompositionView, CompositionViewSchema, type CoreBlock, type CoreBlockCompileResult, CoreBlockCompileResultSchema, type CoreBlockCompileInput, CoreBlockCompileInputSchema, type CoreBlockFiles, CoreBlockFilesSchema, type CoreBlockInput, CoreBlockInputFieldsSchema, CoreBlockInputSchema, type CoreBlockPlacement, CoreBlockPlacementSchema, CoreBlockSchema, type CoreBlockSource, type CoreBlockSourceKind, CoreBlockSourceSchema, type CoreBlockStatus, CoreBlockStatusSchema, DEFAULT_CORE_BLOCK_ENTRY, coreBlockAddonId, coreBlockComposition, coreBlockIdFromAddonId, coreBlockSourceKind, coreBlocksCapability, type ICoreBlocksProvider, normalizeCoreBlockWrite, resolveCoreBlockEntry, resolveCoreBlockFiles, } from './core-blocks.cap.js';
42
+ export { CORE_BLOCK_ADDON_PREFIX, CORE_BLOCKS_ADDON_ID, type CompositionBlockInput, CompositionBlockInputSchema, type CompositionBlockPatch, type CompositionCustomizationRead, CompositionCustomizationReadSchema, type CompositionGetRead, CompositionGetReadSchema, type CompositionListRead, CompositionListReadSchema, type CompositionStateRead, CompositionStateReadSchema, type CompositionView, CompositionViewSchema, type CoreBlock, type CoreBlockCompileInput, CoreBlockCompileInputSchema, type CoreBlockCompileResult, CoreBlockCompileResultSchema, type CoreBlockFiles, CoreBlockFilesSchema, type CoreBlockInput, CoreBlockInputFieldsSchema, CoreBlockInputSchema, type CoreBlockPlacement, CoreBlockPlacementSchema, CoreBlockSchema, type CoreBlockSource, type CoreBlockSourceKind, CoreBlockSourceSchema, type CoreBlockStatus, CoreBlockStatusSchema, coreBlockAddonId, coreBlockComposition, coreBlockIdFromAddonId, coreBlockSourceKind, coreBlocksCapability, DEFAULT_CORE_BLOCK_ENTRY, type ICoreBlocksProvider, normalizeCoreBlockWrite, resolveCoreBlockEntry, resolveCoreBlockFiles, } from './core-blocks.cap.js';
43
43
  export * from './custom-actions.js';
44
44
  export type { CustomModelDescriptor, ICustomModelRegistryProvider, } from './custom-model-registry.cap.js';
45
45
  export { CustomModelDescriptorSchema, customModelRegistryCapability, } from './custom-model-registry.cap.js';
@@ -85,8 +85,8 @@ export type { BrokerConnectionDetails, BrokerInfo as MqttBrokerInfo, BrokerStatu
85
85
  export { AddBrokerInputSchema, BrokerConnectionDetailsSchema, BrokerInfoSchema as MqttBrokerInfoSchema, MqttBrokerStatusSchema, mqttBrokerCapability, StartEmbeddedInputSchema, } from './mqtt-broker.cap.js';
86
86
  export type { NetworkAccessStatus, NetworkEndpoint } from './network-access.cap.js';
87
87
  export { NetworkAccessStatusSchema, NetworkEndpointSchema, networkAccessCapability, } from './network-access.cap.js';
88
- export { type Attachment, type AttachmentMediaType, AttachmentMediaTypeSchema, AttachmentSchema, type DiscoveredTarget, DiscoveredTargetSchema, type INotificationOutputProvider, type NotificationAction, type NotificationActionIcon, NotificationActionIconSchema, NotificationActionSchema, type NotificationFormat, NotificationFormatSchema, NotificationSchema, notificationOutputCapability, type RenderedAs, RenderedAsSchema, type ProbeTargetConfigResult, ProbeTargetConfigResultSchema, type SendResult, SendResultSchema, type Target, type TargetKind, type TargetKindCaps, TargetKindCapsSchema, type TargetKindLevel, TargetKindLevelSchema, TargetKindSchema, TargetSchema, type TestResult, TestResultSchema, } from './notification-output.cap.js';
89
- export { consumableLowPercentOf, type INotificationRulesProvider, isRetiredClearKey, NC_ALARM_DELAY_MAX_SEC, NC_ALARM_NONBLOCKING_MAX, NC_ALARM_SENSORS_MAX, NC_ALARM_SYSTEM_EVENT_KINDS, NC_ALARM_TRIGGERED_MAX_SEC, NC_AUDIO_DBFS_FLOOR, NC_AUTHORABLE_SYSTEM_EVENT_KINDS, NC_BATTERY_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_CLIP_POST_ROLL_DEFAULT_SEC, NC_CLIP_PRE_ROLL_DEFAULT_SEC, NC_CLIP_RETENTION_MAX_SEC, NC_CONDITION_CATALOG, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, NC_CONFIRM_DEFAULT_TIMEOUT_MS, NC_CONFIRM_MAX_TIMEOUT_MS, NC_CONFIRM_MIN_TIMEOUT_MS, NC_CONSUMABLE_LOW_PERCENT_DEFAULT, NC_CONSUMABLE_LOW_PERCENT_MAX, NC_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_DEFAULT_SNOOZE_MINUTES, NC_GROUPING_DEFAULT_SEC, NC_GROUPING_MAX_SEC, NC_GROUPING_MIN_SEC, NC_HISTORY_LIMIT_DEFAULT, NC_HISTORY_LIMIT_MAX, NC_MAX_PER_TRACK_IMMEDIATE, NC_RULE_CLEARABLE_KEYS, NC_RULE_RETIRED_CLEAR_KEYS, NC_SNOOZE_MAX_MINUTES, NC_TANK_SYSTEM_EVENT_KINDS, type NcAlarmConfig, NcAlarmConfigSchema, type NcAlarmCreateProfileInput, NcAlarmCreateProfileInputSchema, type NcAlarmModeCoverage, NcAlarmModeCoverageSchema, type NcAlarmModeDelays, type NcAlarmModeDelaysEdit, NcAlarmModeDelaysEditSchema, NcAlarmModeDelaysSchema, type NcAlarmPostTriggeredAction, NcAlarmPostTriggeredActionSchema, type NcAlarmBlocking, type NcAlarmBlockingEdit, NcAlarmBlockingEditSchema, NcAlarmBlockingSchema, type NcAlarmModeDeviceList, NcAlarmModeDeviceListSchema, type NcAlarmNonBlocking, type NcAlarmNonBlockingEdit, NcAlarmNonBlockingEditSchema, NcAlarmNonBlockingSchema, type NcAlarmProfileIdInput, NcAlarmProfileIdInputSchema, type NcAlarmProfileMeta, NcAlarmProfileMetaSchema, type NcAlarmProfilesView, NcAlarmProfilesViewSchema, type NcAlarmRenameProfileInput, NcAlarmRenameProfileInputSchema, type NcAlarmSecureOnArmEdit, NcAlarmSecureOnArmEditSchema, type NcAlarmSecureOnArmOff, NcAlarmSecureOnArmOffSchema, type NcAlarmSensorReading, NcAlarmSensorReadingSchema, type NcAlarmSensorState, NcAlarmSensorStateSchema, type NcAlarmSensors, type NcAlarmSensorsInput, NcAlarmSensorsInputSchema, NcAlarmSensorsSchema, type NcAlarmSettings, type NcAlarmSettingsPatch, NcAlarmSettingsPatchSchema, NcAlarmSettingsSchema, type NcAlarmSkippedDevice, NcAlarmSkippedDeviceSchema, type NcAlarmSkipReason, NcAlarmSkipReasonSchema, type NcAudioCondition, NcAudioConditionSchema, type NcClipRetentionAsk, NcClipRetentionAskSchema, type NcClipRetentionPlan, NcClipRetentionPlanSchema, type NcConditionDescriptor, NcConditionDescriptorSchema, type NcConditions, NcConditionsSchema, type NcConfirm, type NcConfirmExpect, NcConfirmExpectSchema, NcConfirmSchema, type NcCrossing, NcCrossingSchema, type NcDelivery, NcDeliverySchema, type NcDeviceStateCondition, NcDeviceStateConditionSchema, type NcHistoryEntry, NcHistoryEntrySchema, type NcHistoryFilter, NcHistoryFilterSchema, type NcHistoryRecordKind, NcHistoryRecordKindSchema, type NcHistoryStatus, NcHistoryStatusSchema, type NcHistorySubject, NcHistorySubjectSchema, type NcLinkedCameraMode, NcLinkedCameraModeSchema, type NcMediaFrame, NcMediaFrameSchema, type NcMediaPolicy, NcMediaPolicySchema, type NcOccupancyCondition, NcOccupancyConditionSchema, type NcPlateMatcher, NcPlateMatcherSchema, type NcRule, type NcActionBinding, NcActionBindingSchema, type NcHookBindings, NcHookBindingsSchema, type NcRuleAction, NcRuleActionSchema, type NcLegacyRuleActionSequence, NcLegacyRuleActionSequenceSchema, type NcRuleActionSequence, NcRuleActionSequenceSchema, type NcRuleActions, NcRuleActionsSchema, type NcSharedSequence, NcSharedSequenceInputSchema, type NcSharedSequenceInput, NcSharedSequenceSchema, type NcRuleClearableKey, NcRuleClearableKeySchema, type NcRuleInput, NcRuleInputSchema, NcRuleKindSchema, type NcRuleLastRun, NcRuleLastRunSchema, type NcRuleLastRuns, NcRuleLastRunsSchema, type NcRuleNotificationButton, NcRuleNotificationButtonSchema, type NcRulePatch, NcRulePatchSchema, NcRuleSchema, type NcRuleTarget, NcRuleTargetSchema, type NcRuleUpdateInput, NcRuleUpdateInputSchema, type NcSceneCondition, NcSceneConditionSchema, type NcSchedule, NcScheduleSchema, type NcScheduleWindow, NcScheduleWindowSchema, type NcSensorTransition, NcSensorTransitionSchema, type NcSnooze, type NcSnoozeInput, NcSnoozeInputSchema, NcSnoozeSchema, type NcSnoozeScope, NcSnoozeScopeSchema, type NcSnoozeSuppressed, NcSnoozeSuppressedSchema, type NcStateSummaryPreview, type NcStateSummaryPreviewRow, NcStateSummaryPreviewRowSchema, NcStateSummaryPreviewSchema, type NcStateSummaryPreviewSection, NcStateSummaryPreviewSectionSchema, type NcStateSummarySectionId, NcStateSummarySectionIdSchema, type NcStateSummarySplit, NcStateSummarySplitSchema, type NcSystemEventCondition, NcSystemEventConditionSchema, type NcSystemEventDelivery, type NcSystemEventDeliveryMode, NcSystemEventDeliveryModeSchema, NcSystemEventDeliverySchema, type NcSystemEventKind, NcSystemEventKindSchema, type NcTemplateFamily, NcTemplateFamilySchema, type NcTemplateField, NcTemplateFieldSchema, type NcTemplatePreview, type NcTemplatePreviewInput, NcTemplatePreviewInputSchema, NcTemplatePreviewSchema, type NcTemplateVarContext, NcTemplateVarContextSchema, type NcTemplateVarDescriptor, NcTemplateVarDescriptorSchema, type NcTemplateVarGroup, NcTemplateVarGroupSchema, type NcTemplateVarKind, NcTemplateVarKindSchema, type NcTestResult, NcTestResultSchema, type NcThrottle, type NcThrottleGranularity, NcThrottleGranularitySchema, NcThrottleSchema, type NcZoneCondition, NcZoneConditionSchema, notificationRulesCapability, } from './notification-rules.cap.js';
88
+ export { type Attachment, type AttachmentMediaType, AttachmentMediaTypeSchema, AttachmentSchema, type DiscoveredTarget, DiscoveredTargetSchema, type INotificationOutputProvider, type NotificationAction, type NotificationActionIcon, NotificationActionIconSchema, NotificationActionSchema, type NotificationFormat, NotificationFormatSchema, NotificationSchema, notificationOutputCapability, type ProbeTargetConfigResult, ProbeTargetConfigResultSchema, type RenderedAs, RenderedAsSchema, type SendResult, SendResultSchema, type Target, type TargetKind, type TargetKindCaps, TargetKindCapsSchema, type TargetKindLevel, TargetKindLevelSchema, TargetKindSchema, TargetSchema, type TestResult, TestResultSchema, } from './notification-output.cap.js';
89
+ export { consumableLowPercentOf, type INotificationRulesProvider, isRetiredClearKey, NC_ALARM_DELAY_MAX_SEC, NC_ALARM_NONBLOCKING_MAX, NC_ALARM_SENSORS_MAX, NC_ALARM_SYSTEM_EVENT_KINDS, NC_ALARM_TRIGGERED_MAX_SEC, NC_AUDIO_DBFS_FLOOR, NC_AUTHORABLE_SYSTEM_EVENT_KINDS, NC_BATTERY_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_CLIP_POST_ROLL_DEFAULT_SEC, NC_CLIP_PRE_ROLL_DEFAULT_SEC, NC_CLIP_RETENTION_MAX_SEC, NC_CONDITION_CATALOG, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, NC_CONFIRM_DEFAULT_TIMEOUT_MS, NC_CONFIRM_MAX_TIMEOUT_MS, NC_CONFIRM_MIN_TIMEOUT_MS, NC_CONSUMABLE_LOW_PERCENT_DEFAULT, NC_CONSUMABLE_LOW_PERCENT_MAX, NC_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_DEFAULT_SNOOZE_MINUTES, NC_GROUPING_DEFAULT_SEC, NC_GROUPING_MAX_SEC, NC_GROUPING_MIN_SEC, NC_HISTORY_LIMIT_DEFAULT, NC_HISTORY_LIMIT_MAX, NC_MAX_PER_TRACK_IMMEDIATE, NC_RULE_CLEARABLE_KEYS, NC_RULE_RETIRED_CLEAR_KEYS, NC_SNOOZE_MAX_MINUTES, NC_TANK_SYSTEM_EVENT_KINDS, type NcActionBinding, NcActionBindingSchema, type NcAlarmBlocking, type NcAlarmBlockingEdit, NcAlarmBlockingEditSchema, NcAlarmBlockingSchema, type NcAlarmConfig, NcAlarmConfigSchema, type NcAlarmCreateProfileInput, NcAlarmCreateProfileInputSchema, type NcAlarmModeCoverage, NcAlarmModeCoverageSchema, type NcAlarmModeDelays, type NcAlarmModeDelaysEdit, NcAlarmModeDelaysEditSchema, NcAlarmModeDelaysSchema, type NcAlarmModeDeviceList, NcAlarmModeDeviceListSchema, type NcAlarmNonBlocking, type NcAlarmNonBlockingEdit, NcAlarmNonBlockingEditSchema, NcAlarmNonBlockingSchema, type NcAlarmPostTriggeredAction, NcAlarmPostTriggeredActionSchema, type NcAlarmProfileIdInput, NcAlarmProfileIdInputSchema, type NcAlarmProfileMeta, NcAlarmProfileMetaSchema, type NcAlarmProfilesView, NcAlarmProfilesViewSchema, type NcAlarmRenameProfileInput, NcAlarmRenameProfileInputSchema, type NcAlarmSecureOnArmEdit, NcAlarmSecureOnArmEditSchema, type NcAlarmSecureOnArmOff, NcAlarmSecureOnArmOffSchema, type NcAlarmSensorReading, NcAlarmSensorReadingSchema, type NcAlarmSensorState, NcAlarmSensorStateSchema, type NcAlarmSensors, type NcAlarmSensorsInput, NcAlarmSensorsInputSchema, NcAlarmSensorsSchema, type NcAlarmSettings, type NcAlarmSettingsPatch, NcAlarmSettingsPatchSchema, NcAlarmSettingsSchema, type NcAlarmSkippedDevice, NcAlarmSkippedDeviceSchema, type NcAlarmSkipReason, NcAlarmSkipReasonSchema, type NcAudioCondition, NcAudioConditionSchema, type NcClipRetentionAsk, NcClipRetentionAskSchema, type NcClipRetentionPlan, NcClipRetentionPlanSchema, type NcConditionDescriptor, NcConditionDescriptorSchema, type NcConditions, NcConditionsSchema, type NcConfirm, type NcConfirmExpect, NcConfirmExpectSchema, NcConfirmSchema, type NcCrossing, NcCrossingSchema, type NcDelivery, NcDeliverySchema, type NcDeviceStateCondition, NcDeviceStateConditionSchema, type NcHistoryEntry, NcHistoryEntrySchema, type NcHistoryFilter, NcHistoryFilterSchema, type NcHistoryRecordKind, NcHistoryRecordKindSchema, type NcHistoryStatus, NcHistoryStatusSchema, type NcHistorySubject, NcHistorySubjectSchema, type NcHookBindings, NcHookBindingsSchema, type NcLegacyRuleActionSequence, NcLegacyRuleActionSequenceSchema, type NcLinkedCameraMode, NcLinkedCameraModeSchema, type NcMediaFrame, NcMediaFrameSchema, type NcMediaPolicy, NcMediaPolicySchema, type NcOccupancyCondition, NcOccupancyConditionSchema, type NcPlateMatcher, NcPlateMatcherSchema, type NcRule, type NcRuleAction, NcRuleActionSchema, type NcRuleActionSequence, NcRuleActionSequenceSchema, type NcRuleActions, NcRuleActionsSchema, type NcRuleClearableKey, NcRuleClearableKeySchema, type NcRuleInput, NcRuleInputSchema, NcRuleKindSchema, type NcRuleLastRun, NcRuleLastRunSchema, type NcRuleLastRuns, NcRuleLastRunsSchema, type NcRuleNotificationButton, NcRuleNotificationButtonSchema, type NcRulePatch, NcRulePatchSchema, NcRuleSchema, type NcRuleTarget, NcRuleTargetSchema, type NcRuleUpdateInput, NcRuleUpdateInputSchema, type NcSceneCondition, NcSceneConditionSchema, type NcSchedule, NcScheduleSchema, type NcScheduleWindow, NcScheduleWindowSchema, type NcSensorTransition, NcSensorTransitionSchema, type NcSharedSequence, type NcSharedSequenceInput, NcSharedSequenceInputSchema, NcSharedSequenceSchema, type NcSnooze, type NcSnoozeInput, NcSnoozeInputSchema, NcSnoozeSchema, type NcSnoozeScope, NcSnoozeScopeSchema, type NcSnoozeSuppressed, NcSnoozeSuppressedSchema, type NcStateSummaryPreview, type NcStateSummaryPreviewRow, NcStateSummaryPreviewRowSchema, NcStateSummaryPreviewSchema, type NcStateSummaryPreviewSection, NcStateSummaryPreviewSectionSchema, type NcStateSummarySectionId, NcStateSummarySectionIdSchema, type NcStateSummarySplit, NcStateSummarySplitSchema, type NcSystemEventCondition, NcSystemEventConditionSchema, type NcSystemEventDelivery, type NcSystemEventDeliveryMode, NcSystemEventDeliveryModeSchema, NcSystemEventDeliverySchema, type NcSystemEventKind, NcSystemEventKindSchema, type NcTemplateFamily, NcTemplateFamilySchema, type NcTemplateField, NcTemplateFieldSchema, type NcTemplatePreview, type NcTemplatePreviewInput, NcTemplatePreviewInputSchema, NcTemplatePreviewSchema, type NcTemplateVarContext, NcTemplateVarContextSchema, type NcTemplateVarDescriptor, NcTemplateVarDescriptorSchema, type NcTemplateVarGroup, NcTemplateVarGroupSchema, type NcTemplateVarKind, NcTemplateVarKindSchema, type NcTestResult, NcTestResultSchema, type NcThrottle, type NcThrottleGranularity, NcThrottleGranularitySchema, NcThrottleSchema, type NcZoneCondition, NcZoneConditionSchema, notificationRulesCapability, } from './notification-rules.cap.js';
90
90
  export { type IOauthIntegrationProvider, type OauthIntegrationDescriptor, OauthIntegrationDescriptorSchema, oauthIntegrationCapability, } from './oauth-integration.cap.js';
91
91
  export { AnalyticsLtsSeriesSchema, type AudioEvent, type AudioEventDraft, AudioEventSchema, type DetectionSource, DetectionSourceSchema, EVENT_DENSITY_BATCH_MAX, type EventDensityBucket, EventDensityBucketSchema, type EventDensityForDevice, EventDensityForDeviceSchema, type EventKind, type EventKindCategory, EventKindCategorySchema, type EventKindDescriptor, EventKindDescriptorSchema, type EventKindIcon, EventKindIconSchema, EventKindSchema, type EventKindsForDevice, EventKindsForDeviceSchema, type EventMediaKindBreakdown, type EventMediaKindFootprint, type EventPruneCounts, type EventStoreDeviceFootprint, type EventStoreFootprint, type IPipelineAnalyticsProvider, type KeyEvent, KeyEventSchema, type KeyEventsForDevice, type LabelAttribution, LabelAttributionSchema, type LabelTier, LabelTierSchema, LTS_SCOPE_CLASS_SEPARATOR, type LtsBucket, LtsBucketSchema, MAX_TRACK_DEBUG_NOTE_LEN, type MediaFile, type MediaFileBytes, type MediaFileInfo, MediaFileInfoSchema, type MediaFileKind, MediaFileKindEnum, type MediaFileRef, MediaFileRefSchema, MediaFileSchema, type MotionEvent, type MotionEventDraft, MotionEventSchema, type ObjectEvent, type ObjectEventDraft, ObjectEventSchema, occupancyScope, parseOccupancyScope, pipelineAnalyticsCapability, type RebuildObjectEmbeddingsRefusal, RebuildObjectEmbeddingsRefusalSchema, type RecentTracksPage, RecentTracksPageSchema, type RecentTracksQuery, RecentTracksQueryInput, type RetrainAnnotation, type RetrainAnnotationDraft, RetrainAnnotationDraftSchema, RetrainAnnotationKindSchema, RetrainAnnotationSchema, RetrainAnnotationSourceSchema, type RetrainAssistResult, RetrainAssistResultSchema, RetrainAssistSubjectSchema, RetrainCopyRefusalSchema, type RetrainFrame, type RetrainFrameCandidate, RetrainFrameCandidateSchema, type RetrainFrameList, RetrainFrameListSchema, RetrainFrameSchema, type RetrainFrameSelection, RetrainFrameSelectionSchema, type RetrainMacroClass, RetrainMacroClassSchema, type RetrainStatus, RetrainStatusSchema, type RetrainTrack, RetrainTrackSchema, type RetrainTransitionResult, RetrainTransitionResultSchema, type ScoredObjectEvent, ScoredObjectEventSchema, type SensorEvent, SensorEventSchema, type Track, type TrackCascadeCounts, TrackCascadeCountsSchema, type TrackEnvelope, TrackEnvelopeSchema, TrackedDetectionSchema, type TrackFlags, type TrackFlagsPatch, TrackFlagsPatchSchema, TrackFlagsSchema, type TrackProjection, TrackProjectionSchema, TrackSchema, type TrackSource, TrackSourceSchema, type TrackState, TrackStateSchema, type TrackZoneFilter, TrackZoneFilterSchema, type TrainingExportDeviceTotals, TrainingExportDeviceTotalsSchema, type TrainingExportSummary, TrainingExportSummarySchema, type ZoneCrossing, type ZoneCrossingDirection, ZoneCrossingDirectionSchema, ZoneCrossingSchema, } from './pipeline-analytics.cap.js';
92
92
  export type { EffectiveTuning, EffectiveTuningInput, NativeCropRef, PipelineStepInputOutput, PipelineValidationIssue, PipelineValidationResult, } from './pipeline-executor.cap.js';
@@ -94,7 +94,7 @@ export { EffectiveTuningSchema, ModelSubstitutionSchema, NativeCropRefSchema, Pi
94
94
  export type { CameraAssignmentStatus, CameraAudioStatus, CameraBrokerProfile, CameraBrokerStatus, CameraDecoderShm, CameraDecoderStatus, CameraDetectionPhase, CameraDetectionProvisioning, CameraDetectionProvisioningState, CameraDetectionStatus, CameraMotionStatus, CameraRecordingMode, CameraRecordingStatus, CameraSourceStatus, CameraSourceStream, CameraStatus, CameraStatusDegradation, CameraStatusDegradationReason, CameraStatusStage, ClusterModelChoice, ClusterModelChoiceUnreadableReason, DiskReconcileJob, InferenceDeviceExclusionReason, IngestOwner, NodeInferenceDevice, NodeInferenceDevices, OccupancyLookAnswer, OccupancyLookRefusal, OccupancyLookRequest, SetCameraSensorsInput, } from './pipeline-orchestrator.cap.js';
95
95
  export { AgentLoadSummarySchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraDecoderShmSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionStatusSchema, CameraMotionStatusSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusDegradationReasonSchema, CameraStatusDegradationSchema, CameraStatusSchema, CameraStatusStageSchema, CapabilityBindingsSchema, CLUSTER_MODEL_CHOICE_UNREADABLE_REASONS, ClusterModelChoiceSchema, DiskReconcileJobSchema, GlobalMetricsSchema, INFERENCE_DEVICE_EXCLUSION_REASONS, InferenceDeviceExclusionReasonSchema, IngestOwnerSchema, OccupancyLookAnswerSchema, OccupancyLookRefusalSchema, OccupancyLookRequestSchema, PipelineAssignmentSchema, pipelineOrchestratorCapability, SetCameraSensorsInputSchema, } from './pipeline-orchestrator.cap.js';
96
96
  export type { DetailParent, DetailResult, MotionSource, MotionSources, OccupancyBurstRefusal, ParkedFrameKind, ParkedTrackFrame, ParkRefusal, ParkTrackFrameResult, ReportMotionInput, RunDetailSubtreeInput, RunDetailSubtreeResult, RunnerFrameSource, RunnerInferenceDevice, RunnerJumpStepProvisioning, RunStatelessStepInput, RunStatelessStepResult, StatelessStepRefusal, } from './pipeline-runner.cap.js';
97
- export { type DetectionSources, DetectionSourcesSchema, FrameLazyCountersSchema, FrameLazyMetricsSchema, MOTION_SOURCE_LABELS, MotionSourceEnum, MotionSourcesSchema, motionSourceLabel, type NativeCropBbox, NativeCropBboxSchema, NativeCropResultSchema, OccupancyBurstRefusalSchema, ParkedFrameKindSchema, ParkedTrackFrameSchema, ParkRefusalSchema, ParkTrackFrameResultSchema, pipelineRunnerCapability, ReportMotionInputSchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerInferenceDeviceSchema, RunnerJumpStepProvisioningSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, } from './pipeline-runner.cap.js';
97
+ export { type DetectionSources, DetectionSourcesSchema, FrameLazyCountersSchema, FrameLazyMetricsSchema, MOTION_SOURCE_LABELS, MotionSourceEnum, MotionSourcesSchema, motionSourceLabel, type NativeCropBbox, NativeCropBboxSchema, NativeCropResultSchema, OccupancyBurstRefusalSchema, ParkedFrameKindSchema, ParkedTrackFrameSchema, ParkRefusalSchema, ParkTrackFrameResultSchema, pipelineRunnerCapability, ReportMotionInputSchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerInferenceDeviceSchema, RunnerJumpStepProvisioningSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, type SessionTrigger, SessionTriggerSchema, } from './pipeline-runner.cap.js';
98
98
  export type { AudioClassifyOutcome, AudioNotClassifiedReason, } from './schemas/detection-shared.js';
99
99
  export { AUDIO_NOT_CLASSIFIED_REASONS, AudioChunkInputSchema, AudioClassificationLabelSchema, AudioClassifyOutcomeSchema, AudioLevelSchema, BoundingBoxSchema, FrameInputSchema, SpatialDetectionSchema, } from './schemas/detection-shared.js';
100
100
  export { CameraMetricsSchema, CameraMetricsWithDeviceIdSchema, OrchestratorMetricsSchema, } from './schemas/orchestrator-metrics.js';
@@ -125,6 +125,7 @@ export type { IVectorStoreProvider } from './vector-store.cap.js';
125
125
  export { isVectorIndexDimConflict, VECTOR_INDEX_DIM_CONFLICT, VectorDeclareIndexInputSchema, VectorDeleteByFilterInputSchema, VectorDeleteInputSchema, VectorDeleteResultSchema, type VectorFilter, VectorFilterSchema, VectorGetInputSchema, VectorGetResultSchema, type VectorItem, VectorItemSchema, type VectorMatch, VectorMatchSchema, type VectorMetadata, VectorMetadataSchema, type VectorMetric, VectorMetricSchema, VectorQueryInputSchema, VectorQueryResultSchema, VectorStatsInputSchema, VectorStatsResultSchema, VectorUpsertInputSchema, VectorUpsertResultSchema, vectorIndexDimConflictError, vectorStoreCapability, } from './vector-store.cap.js';
126
126
  export type { Clip, ClipBytes, ClipBytesOffer, ClipPlayback, ClipPlaybackOptions, ClipSource, ClipSourceAvailability, ClipStillDisposition, ClipStillRefusalCode, ClipStreamAudio, ClipStreamAudioReason, ClipStreamDial, ClipWake, IVideoclipsProvider, } from './videoclips.cap.js';
127
127
  export { CLIP_BROKER_PACED_RATES, CLIP_PLAYBACK_OPTIONS, CLIP_REALTIME_SOURCE_RATES, CLIP_REASON_HEADER_MAX, CLIP_STILL_DISPOSITION_HEADER, CLIP_STILL_REASON_CODE_HEADER, CLIP_STILL_REASON_HEADER, CLIP_STREAM_SOURCE_RATES, CLIP_STREAM_TRANSPORT_HEADER, ClipBytesOfferSchema, ClipBytesSchema, ClipPlaybackOptionsSchema, ClipPlaybackSchema, ClipSchema, ClipSourceAvailabilitySchema, ClipSourceSchema, ClipStillDispositionSchema, ClipStillRefusalCodeSchema, ClipStreamAudioReasonSchema, ClipStreamAudioSchema, ClipStreamDialSchema, ClipWakeSchema, clipReasonHeaderValue, MAX_CLIP_EVENT_IDS, MAX_CLIP_LABELS, VIDEOCLIPS_MAX_OFFER_BYTES, VIDEOCLIPS_MAX_READ_BYTES, videoclipsCapability, } from './videoclips.cap.js';
128
+ export { buildViewerLink, CAMSTACK_APP_LINK_ORIGIN, HUB_VIEWER_MOUNT, isAppLinkBase, type NotificationLinkEndpoint, pickAppLinkHub, toAppLinkHubOrigin, type ViewerDestination, type ViewerLinkBase, type ViewerLinkForm, type ViewerLinkInput, viewerLinkBaseOf, } from './viewer-link-url.js';
128
129
  export type { IViewerUiProvider } from './viewer-ui.cap.js';
129
130
  export { viewerUiCapability } from './viewer-ui.cap.js';
130
131
  export { type IWebrtcSessionProvider, WEBRTC_CLIMB_HOLD_CODES, WEBRTC_TRY_BLOCKERS, type WebrtcClientHints, type WebrtcClimbHold, type WebrtcClimbHoldCode, WebrtcClimbHoldSchema, type WebrtcLadderDecision, WebrtcLadderDecisionSchema, type WebrtcSessionDebug, WebrtcSessionDebugSchema, type WebrtcStreamChoice, WebrtcStreamChoiceSchema, type WebrtcStreamTarget, WebrtcStreamTargetSchema, type WebrtcTierFailure, WebrtcTierFailureSchema, type WebrtcTryBlocker, webrtcClientHintsSchema, webrtcSessionCapability, } from './webrtc-session.cap.js';
@@ -173,7 +174,7 @@ export { type BacklightMode, BacklightModeSchema, type ExposureMode, ExposureMod
173
174
  export { AvailableIntegrationTypeSchema, CreateIntegrationInputSchema, DeleteIntegrationResultSchema, type IIntegrationsProvider, IntegrationLiteSchema, type IntegrationTestConnectionResult, type IntegrationTestConnectionStatus, IntegrationWithStateSchema, integrationsCapability, TestConnectionResultSchema, TestConnectionStatusEnum, UpdateIntegrationInputSchema, } from './integrations.cap.js';
174
175
  export { type IIntercomProvider, type IntercomAbility, IntercomAbilitySchema, type IntercomStatus, IntercomStatusSchema, intercomCapability, } from './intercom.cap.js';
175
176
  export { type DeviceCodeSeverity, DeviceCodeSeveritySchema, type ILawnMowerControlProvider, type LawnMowerActivity, LawnMowerActivitySchema, type LawnMowerControlStatus, LawnMowerControlStatusSchema, lawnMowerControlCapability, } from './lawn-mower-control.cap.js';
176
- export { type AdvertisedLocalPort, type ConnectionEndpoint, type ILocalNetworkProvider, type LocalInterface, localNetworkCapability, } from './local-network.cap.js';
177
+ export { type AdvertisedLocalPort, type ConnectionEndpoint, type ILocalNetworkProvider, type LocalInterface, localNetworkCapability, type NotificationEndpoint, } from './local-network.cap.js';
177
178
  export { type ILockControlProvider, type LockControlStatus, LockControlStatusSchema, type LockState, LockStateSchema, lockControlCapability, } from './lock-control.cap.js';
178
179
  export { type MaskGridDims, MaskGridDimsSchema, type MaskGridShape, MaskGridShapeSchema, type MaskLineShape, MaskLineShapeSchema, type MaskPoint, MaskPointSchema, type MaskPolygonShape, MaskPolygonShapeSchema, type MaskPolygonVertices, MaskPolygonVerticesSchema, type MaskRectShape, MaskRectShapeSchema, type MaskShape, type MaskShapeKind, MaskShapeKindSchema, MaskShapeSchema, } from './mask-shape.js';
179
180
  export { type IMediaPlayerProvider, type MediaInfo, type MediaPlayerRepeat, MediaPlayerRepeatSchema, type MediaPlayerState, MediaPlayerStateSchema, type MediaPlayerStatus, MediaPlayerStatusSchema, mediaPlayerCapability, } from './media-player.cap.js';
@@ -189,7 +190,7 @@ export { ClusterAddonNodeDeploymentSchema, ClusterAddonStatusEntrySchema, type I
189
190
  export { type INotifierProvider, type NotifierAction, type NotifierPriority, type NotifierSendInput, type NotifierSendResult, type NotifierStatus, NotifierStatusSchema, type NotifierSupports, notifierCapability, } from './notifier.cap.js';
190
191
  export { type INumericSensorProvider, type NumericSensorStatus, NumericSensorStatusSchema, numericSensorCapability, } from './numeric-sensor.cap.js';
191
192
  export { type IOsdProvider, type OsdOverlay, type OsdOverlayKind, OsdOverlayKindEnum, OsdOverlayPatchSchema, OsdOverlaySchema, type OsdPosition, OsdPositionEnum, type OsdStatus, OsdStatusSchema, osdCapability, } from './osd.cap.js';
192
- export { type IOsdManagerProvider, type OsdNamedTemplate, OsdNamedTemplateSchema, type OsdRenderOutcome, OsdRenderOutcomeEnum, type OsdRenderResult, OsdRenderResultSchema, type OsdSlotBinding, OsdSlotBindingSchema, type OsdSlotView, OsdSlotViewSchema, type OsdSource, type OsdSourceOption, OsdSourceOptionSchema, OsdSourceSchema, type OsdSourceValueType, OsdSourceValueTypeEnum, type OsdTemplateBinding, OsdTemplateBindingSchema, type OsdTemplateFormat, OsdTemplateFormatSchema, type OsdTemplateTokenKind, OsdTemplateTokenKindSchema, type OsdTemplatePick, OsdTemplatePickSchema, osdManagerCapability, } from './osd-manager.cap.js';
193
+ export { type IOsdManagerProvider, type OsdNamedTemplate, OsdNamedTemplateSchema, type OsdRenderOutcome, OsdRenderOutcomeEnum, type OsdRenderResult, OsdRenderResultSchema, type OsdSlotBinding, OsdSlotBindingSchema, type OsdSlotView, OsdSlotViewSchema, type OsdSource, type OsdSourceOption, OsdSourceOptionSchema, OsdSourceSchema, type OsdSourceValueType, OsdSourceValueTypeEnum, type OsdTemplateBinding, OsdTemplateBindingSchema, type OsdTemplateFormat, OsdTemplateFormatSchema, type OsdTemplatePick, OsdTemplatePickSchema, type OsdTemplateTokenKind, OsdTemplateTokenKindSchema, osdManagerCapability, } from './osd-manager.cap.js';
193
194
  export { type IPetFeederProvider, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, type PetFeederStatus, PetFeederStatusSchema, petFeederCapability, } from './pet-feeder.cap.js';
194
195
  export { type IPlateGalleryProvider, type PlateInfo, plateGalleryCapability, type Vehicle, type VehicleSampleInfo, } from './plate-gallery.cap.js';
195
196
  export { type HardwareDecodeAccels, type HardwareEncoderId, type HardwareEncoderProbe, type HardwareEncoders, type IPlatformProbeProvider, platformProbeCapability, } from './platform-probe.cap.js';
@@ -60,6 +60,7 @@ declare const ConnectionEndpointSchema: z.ZodObject<{
60
60
  loopback: "loopback";
61
61
  "lan-ipv4": "lan-ipv4";
62
62
  "lan-ipv6": "lan-ipv6";
63
+ "app-link": "app-link";
63
64
  }>;
64
65
  interfaceKind: z.ZodEnum<{
65
66
  public: "public";
@@ -86,13 +87,14 @@ declare const AdvertisedLocalPortSchema: z.ZodObject<{
86
87
  }, z.core.$strip>;
87
88
  export type AdvertisedLocalPort = z.infer<typeof AdvertisedLocalPortSchema>;
88
89
  /**
89
- * The chosen outbound endpoint for notification artifacts. `baseUrl: null` =
90
- * AUTO (resolved from the candidate ranking at send time); `resolved` reports
91
- * what AUTO currently picks, so the UI can show the effective value either way.
90
+ * The address flagged for notification links. `baseUrl: null` = AUTO, which
91
+ * since D709 is the CamStack app link; `resolved` reports the effective value,
92
+ * so the UI can show it either way.
92
93
  */
93
94
  declare const NotificationEndpointSchema: z.ZodObject<{
94
95
  baseUrl: z.ZodNullable<z.ZodString>;
95
96
  resolved: z.ZodNullable<z.ZodString>;
97
+ appLinkHub: z.ZodNullable<z.ZodString>;
96
98
  }, z.core.$strip>;
97
99
  export type NotificationEndpoint = z.infer<typeof NotificationEndpointSchema>;
98
100
  /**
@@ -185,7 +187,7 @@ export declare const localNetworkCapability: {
185
187
  * every client a second authority on a socket only the hub binds. A viewer
186
188
  * configured with a port-less public URL (`https://camstack.example.top`)
187
189
  * infers 443 from the scheme, asks with 443, and was handed
188
- * `https://192.168.x.x:443` for a hub listening on 4443. That candidate
190
+ * `https://192.168.10.9:443` for a hub listening on 4443. That candidate
189
191
  * cannot ever answer, and losing its race reads in the log exactly like
190
192
  * "the LAN was tried and it was slower" — so an operator sitting on his own
191
193
  * WiFi stayed on the public tunnel for weeks, with the LAN candidate born
@@ -207,6 +209,7 @@ export declare const localNetworkCapability: {
207
209
  https: "https";
208
210
  http: "http";
209
211
  }>>;
212
+ includeAppLink: z.ZodOptional<z.ZodBoolean>;
210
213
  }, z.core.$strip>, z.ZodObject<{
211
214
  endpoints: z.ZodReadonly<z.ZodArray<z.ZodObject<{
212
215
  label: z.ZodString;
@@ -216,6 +219,7 @@ export declare const localNetworkCapability: {
216
219
  loopback: "loopback";
217
220
  "lan-ipv4": "lan-ipv4";
218
221
  "lan-ipv6": "lan-ipv6";
222
+ "app-link": "app-link";
219
223
  }>;
220
224
  interfaceKind: z.ZodEnum<{
221
225
  public: "public";
@@ -241,10 +245,14 @@ export declare const localNetworkCapability: {
241
245
  }, z.core.$strip>;
242
246
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
243
247
  /**
244
- * The endpoint OUTBOUND artifacts must be addressed by — notification
245
- * attachment links and deep links. `baseUrl: null` means AUTO: the first
246
- * public candidate (a configured origin, then a connected tunnel, then the
247
- * LAN), never loopback.
248
+ * The address notification links are flagged with. `baseUrl: null` means
249
+ * AUTO, which is the CamStack app link (D709): viewer taps go through
250
+ * `https://camstack.zentik.app/…?hub=<appLinkHub>` and open the app. Any
251
+ * hub address the palette lists can be flagged instead; then viewer taps,
252
+ * attachment links and action buttons all use it. Signed media and
253
+ * buttons never use the app link — with it flagged (or AUTO) they keep
254
+ * the ranked hub ladder (a configured origin, a connected tunnel, then
255
+ * the LAN), never loopback.
248
256
  *
249
257
  * Why an explicit marker: the automatic ranking cannot know which of
250
258
  * several reachable addresses the RECIPIENT can actually open. A link is
@@ -255,6 +263,7 @@ export declare const localNetworkCapability: {
255
263
  readonly getNotificationEndpoint: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodObject<{
256
264
  baseUrl: z.ZodNullable<z.ZodString>;
257
265
  resolved: z.ZodNullable<z.ZodString>;
266
+ appLinkHub: z.ZodNullable<z.ZodString>;
258
267
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
259
268
  /**
260
269
  * Mark which endpoint notification artifacts use. `baseUrl: null` restores
@@ -267,6 +276,7 @@ export declare const localNetworkCapability: {
267
276
  }, z.core.$strip>, z.ZodObject<{
268
277
  baseUrl: z.ZodNullable<z.ZodString>;
269
278
  resolved: z.ZodNullable<z.ZodString>;
279
+ appLinkHub: z.ZodNullable<z.ZodString>;
270
280
  }, z.core.$strip>, "mutation">;
271
281
  /**
272
282
  * The endpoints the SDK / viewer races for API access. Empty `baseUrls`
@@ -2601,8 +2601,9 @@ export declare const NcRuleSchema: z.ZodObject<{
2601
2601
  }, z.core.$strip>;
2602
2602
  export type NcRule = z.infer<typeof NcRuleSchema>;
2603
2603
  /**
2604
- * The state-summary SECTIONS (D647 / D698): the D637 kind groups that report a
2605
- * still-true state. `backups-exports` and `alarm` are not sections — a completed
2604
+ * The state-summary SECTIONS (D647 / D698 / D708): the D637 kind groups that
2605
+ * report a still-true state. `addons` is the crash-looped addons only and
2606
+ * `addon-updates` the addons that are behind (D708 split them). `backups-exports` and `alarm` are not sections — a completed
2606
2607
  * job is not an open state, and the alarm stays instant.
2607
2608
  */
2608
2609
  export declare const NcStateSummarySectionIdSchema: z.ZodEnum<{
@@ -2614,6 +2615,7 @@ export declare const NcStateSummarySectionIdSchema: z.ZodEnum<{
2614
2615
  streams: "streams";
2615
2616
  "detection-blind": "detection-blind";
2616
2617
  tanks: "tanks";
2618
+ "addon-updates": "addon-updates";
2617
2619
  updates: "updates";
2618
2620
  }>;
2619
2621
  export type NcStateSummarySectionId = z.infer<typeof NcStateSummarySectionIdSchema>;
@@ -2628,6 +2630,7 @@ export declare const NcStateSummaryPreviewSectionSchema: z.ZodObject<{
2628
2630
  streams: "streams";
2629
2631
  "detection-blind": "detection-blind";
2630
2632
  tanks: "tanks";
2633
+ "addon-updates": "addon-updates";
2631
2634
  updates: "updates";
2632
2635
  }>;
2633
2636
  status: z.ZodEnum<{
@@ -2652,6 +2655,7 @@ export declare const NcStateSummaryPreviewRowSchema: z.ZodObject<{
2652
2655
  streams: "streams";
2653
2656
  "detection-blind": "detection-blind";
2654
2657
  tanks: "tanks";
2658
+ "addon-updates": "addon-updates";
2655
2659
  updates: "updates";
2656
2660
  }>>;
2657
2661
  title: z.ZodString;
@@ -2681,6 +2685,7 @@ export declare const NcStateSummaryPreviewSchema: z.ZodObject<{
2681
2685
  streams: "streams";
2682
2686
  "detection-blind": "detection-blind";
2683
2687
  tanks: "tanks";
2688
+ "addon-updates": "addon-updates";
2684
2689
  updates: "updates";
2685
2690
  }>;
2686
2691
  status: z.ZodEnum<{
@@ -2706,6 +2711,7 @@ export declare const NcStateSummaryPreviewSchema: z.ZodObject<{
2706
2711
  streams: "streams";
2707
2712
  "detection-blind": "detection-blind";
2708
2713
  tanks: "tanks";
2714
+ "addon-updates": "addon-updates";
2709
2715
  updates: "updates";
2710
2716
  }>>;
2711
2717
  title: z.ZodString;
@@ -3473,6 +3479,8 @@ export declare const NcAlarmModeDelaysSchema: z.ZodObject<{
3473
3479
  timezone: z.ZodOptional<z.ZodString>;
3474
3480
  invert: z.ZodOptional<z.ZodBoolean>;
3475
3481
  }, z.core.$strip>>;
3482
+ notifyDuringEntryDelay: z.ZodOptional<z.ZodBoolean>;
3483
+ notifySensorRewatched: z.ZodOptional<z.ZodBoolean>;
3476
3484
  }, z.core.$strip>;
3477
3485
  export type NcAlarmModeDelays = z.infer<typeof NcAlarmModeDelaysSchema>;
3478
3486
  /**
@@ -3505,6 +3513,8 @@ export declare const NcAlarmModeDelaysEditSchema: z.ZodObject<{
3505
3513
  timezone: z.ZodOptional<z.ZodString>;
3506
3514
  invert: z.ZodOptional<z.ZodBoolean>;
3507
3515
  }, z.core.$strip>>>;
3516
+ notifyDuringEntryDelay: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
3517
+ notifySensorRewatched: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
3508
3518
  }, z.core.$strip>;
3509
3519
  export type NcAlarmModeDelaysEdit = z.infer<typeof NcAlarmModeDelaysEditSchema>;
3510
3520
  /** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
@@ -3684,6 +3694,8 @@ export declare const NcAlarmSettingsSchema: z.ZodObject<{
3684
3694
  timezone: z.ZodOptional<z.ZodString>;
3685
3695
  invert: z.ZodOptional<z.ZodBoolean>;
3686
3696
  }, z.core.$strip>>;
3697
+ notifyDuringEntryDelay: z.ZodOptional<z.ZodBoolean>;
3698
+ notifySensorRewatched: z.ZodOptional<z.ZodBoolean>;
3687
3699
  }, z.core.$strip>>>;
3688
3700
  }, z.core.$strip>;
3689
3701
  export type NcAlarmSettings = z.infer<typeof NcAlarmSettingsSchema>;
@@ -3801,6 +3813,8 @@ export declare const NcAlarmSettingsPatchSchema: z.ZodObject<{
3801
3813
  timezone: z.ZodOptional<z.ZodString>;
3802
3814
  invert: z.ZodOptional<z.ZodBoolean>;
3803
3815
  }, z.core.$strip>>>;
3816
+ notifyDuringEntryDelay: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
3817
+ notifySensorRewatched: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
3804
3818
  }, z.core.$strip>>>;
3805
3819
  nonBlockingEdit: z.ZodOptional<z.ZodObject<{
3806
3820
  mode: z.ZodEnum<{
@@ -4046,6 +4060,8 @@ export declare const NcAlarmConfigSchema: z.ZodObject<{
4046
4060
  timezone: z.ZodOptional<z.ZodString>;
4047
4061
  invert: z.ZodOptional<z.ZodBoolean>;
4048
4062
  }, z.core.$strip>>;
4063
+ notifyDuringEntryDelay: z.ZodOptional<z.ZodBoolean>;
4064
+ notifySensorRewatched: z.ZodOptional<z.ZodBoolean>;
4049
4065
  }, z.core.$strip>>>;
4050
4066
  }, z.core.$strip>;
4051
4067
  profiles: z.ZodOptional<z.ZodObject<{
@@ -7261,6 +7277,7 @@ export declare const notificationRulesCapability: {
7261
7277
  streams: "streams";
7262
7278
  "detection-blind": "detection-blind";
7263
7279
  tanks: "tanks";
7280
+ "addon-updates": "addon-updates";
7264
7281
  updates: "updates";
7265
7282
  }>;
7266
7283
  status: z.ZodEnum<{
@@ -7286,6 +7303,7 @@ export declare const notificationRulesCapability: {
7286
7303
  streams: "streams";
7287
7304
  "detection-blind": "detection-blind";
7288
7305
  tanks: "tanks";
7306
+ "addon-updates": "addon-updates";
7289
7307
  updates: "updates";
7290
7308
  }>>;
7291
7309
  title: z.ZodString;
@@ -7879,6 +7897,8 @@ export declare const notificationRulesCapability: {
7879
7897
  timezone: z.ZodOptional<z.ZodString>;
7880
7898
  invert: z.ZodOptional<z.ZodBoolean>;
7881
7899
  }, z.core.$strip>>;
7900
+ notifyDuringEntryDelay: z.ZodOptional<z.ZodBoolean>;
7901
+ notifySensorRewatched: z.ZodOptional<z.ZodBoolean>;
7882
7902
  }, z.core.$strip>>>;
7883
7903
  }, z.core.$strip>;
7884
7904
  profiles: z.ZodOptional<z.ZodObject<{
@@ -8039,6 +8059,8 @@ export declare const notificationRulesCapability: {
8039
8059
  timezone: z.ZodOptional<z.ZodString>;
8040
8060
  invert: z.ZodOptional<z.ZodBoolean>;
8041
8061
  }, z.core.$strip>>>;
8062
+ notifyDuringEntryDelay: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
8063
+ notifySensorRewatched: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
8042
8064
  }, z.core.$strip>>>;
8043
8065
  nonBlockingEdit: z.ZodOptional<z.ZodObject<{
8044
8066
  mode: z.ZodEnum<{
@@ -8142,6 +8164,8 @@ export declare const notificationRulesCapability: {
8142
8164
  timezone: z.ZodOptional<z.ZodString>;
8143
8165
  invert: z.ZodOptional<z.ZodBoolean>;
8144
8166
  }, z.core.$strip>>;
8167
+ notifyDuringEntryDelay: z.ZodOptional<z.ZodBoolean>;
8168
+ notifySensorRewatched: z.ZodOptional<z.ZodBoolean>;
8145
8169
  }, z.core.$strip>>>;
8146
8170
  }, z.core.$strip>;
8147
8171
  profiles: z.ZodOptional<z.ZodObject<{
@@ -8302,6 +8326,8 @@ export declare const notificationRulesCapability: {
8302
8326
  timezone: z.ZodOptional<z.ZodString>;
8303
8327
  invert: z.ZodOptional<z.ZodBoolean>;
8304
8328
  }, z.core.$strip>>;
8329
+ notifyDuringEntryDelay: z.ZodOptional<z.ZodBoolean>;
8330
+ notifySensorRewatched: z.ZodOptional<z.ZodBoolean>;
8305
8331
  }, z.core.$strip>>>;
8306
8332
  }, z.core.$strip>;
8307
8333
  profiles: z.ZodOptional<z.ZodObject<{
@@ -8458,6 +8484,8 @@ export declare const notificationRulesCapability: {
8458
8484
  timezone: z.ZodOptional<z.ZodString>;
8459
8485
  invert: z.ZodOptional<z.ZodBoolean>;
8460
8486
  }, z.core.$strip>>;
8487
+ notifyDuringEntryDelay: z.ZodOptional<z.ZodBoolean>;
8488
+ notifySensorRewatched: z.ZodOptional<z.ZodBoolean>;
8461
8489
  }, z.core.$strip>>>;
8462
8490
  }, z.core.$strip>;
8463
8491
  profiles: z.ZodOptional<z.ZodObject<{
@@ -8616,6 +8644,8 @@ export declare const notificationRulesCapability: {
8616
8644
  timezone: z.ZodOptional<z.ZodString>;
8617
8645
  invert: z.ZodOptional<z.ZodBoolean>;
8618
8646
  }, z.core.$strip>>;
8647
+ notifyDuringEntryDelay: z.ZodOptional<z.ZodBoolean>;
8648
+ notifySensorRewatched: z.ZodOptional<z.ZodBoolean>;
8619
8649
  }, z.core.$strip>>>;
8620
8650
  }, z.core.$strip>;
8621
8651
  profiles: z.ZodOptional<z.ZodObject<{
@@ -8774,6 +8804,8 @@ export declare const notificationRulesCapability: {
8774
8804
  timezone: z.ZodOptional<z.ZodString>;
8775
8805
  invert: z.ZodOptional<z.ZodBoolean>;
8776
8806
  }, z.core.$strip>>;
8807
+ notifyDuringEntryDelay: z.ZodOptional<z.ZodBoolean>;
8808
+ notifySensorRewatched: z.ZodOptional<z.ZodBoolean>;
8777
8809
  }, z.core.$strip>>>;
8778
8810
  }, z.core.$strip>;
8779
8811
  profiles: z.ZodOptional<z.ZodObject<{
@@ -180,6 +180,32 @@ export declare const MotionSourceEnum: z.ZodEnum<{
180
180
  "device-activity": "device-activity";
181
181
  }>;
182
182
  export type MotionSource = z.infer<typeof MotionSourceEnum>;
183
+ /**
184
+ * What opened an on-motion detection SESSION: the motion source that passed the
185
+ * camera's `motionSources` gate, and what raised it (the camera itself, or a
186
+ * sensor the operator attached — D672). `sensorName` is the attached sensor's
187
+ * device name as the orchestrator's camera-sensors resolution last read it;
188
+ * absent when unknown or when the camera itself triggered.
189
+ *
190
+ * Carried on the session attach ONLY so the runner's `DetectionPhaseTransition`
191
+ * can say what started the session (D672 rule 11, amended 2026-10-06). The
192
+ * runner never decides anything on it.
193
+ */
194
+ export declare const SessionTriggerSchema: z.ZodObject<{
195
+ source: z.ZodEnum<{
196
+ onboard: "onboard";
197
+ analyzer: "analyzer";
198
+ "device-activity": "device-activity";
199
+ }>;
200
+ triggeredBy: z.ZodDiscriminatedUnion<[z.ZodObject<{
201
+ kind: z.ZodLiteral<"camera">;
202
+ }, z.core.$strip>, z.ZodObject<{
203
+ kind: z.ZodLiteral<"sensor">;
204
+ deviceId: z.ZodNumber;
205
+ }, z.core.$strip>], "kind">;
206
+ sensorName: z.ZodOptional<z.ZodString>;
207
+ }, z.core.$strip>;
208
+ export type SessionTrigger = z.infer<typeof SessionTriggerSchema>;
183
209
  /**
184
210
  * List of motion sources active on a camera. Empty array is valid:
185
211
  * "no source" — happens for battery cams without firmware motion when
@@ -371,6 +397,20 @@ declare const RunnerCameraConfigSchema: z.ZodObject<{
371
397
  analyzer: "analyzer";
372
398
  "device-activity": "device-activity";
373
399
  }>>>;
400
+ sessionTrigger: z.ZodOptional<z.ZodObject<{
401
+ source: z.ZodEnum<{
402
+ onboard: "onboard";
403
+ analyzer: "analyzer";
404
+ "device-activity": "device-activity";
405
+ }>;
406
+ triggeredBy: z.ZodDiscriminatedUnion<[z.ZodObject<{
407
+ kind: z.ZodLiteral<"camera">;
408
+ }, z.core.$strip>, z.ZodObject<{
409
+ kind: z.ZodLiteral<"sensor">;
410
+ deviceId: z.ZodNumber;
411
+ }, z.core.$strip>], "kind">;
412
+ sensorName: z.ZodOptional<z.ZodString>;
413
+ }, z.core.$strip>>;
374
414
  detectionSources: z.ZodDefault<z.ZodPreprocess<z.ZodArray<z.ZodEnum<{
375
415
  pipeline: "pipeline";
376
416
  onboard: "onboard";
@@ -660,6 +700,20 @@ export declare const pipelineRunnerCapability: {
660
700
  analyzer: "analyzer";
661
701
  "device-activity": "device-activity";
662
702
  }>>>;
703
+ sessionTrigger: z.ZodOptional<z.ZodObject<{
704
+ source: z.ZodEnum<{
705
+ onboard: "onboard";
706
+ analyzer: "analyzer";
707
+ "device-activity": "device-activity";
708
+ }>;
709
+ triggeredBy: z.ZodDiscriminatedUnion<[z.ZodObject<{
710
+ kind: z.ZodLiteral<"camera">;
711
+ }, z.core.$strip>, z.ZodObject<{
712
+ kind: z.ZodLiteral<"sensor">;
713
+ deviceId: z.ZodNumber;
714
+ }, z.core.$strip>], "kind">;
715
+ sensorName: z.ZodOptional<z.ZodString>;
716
+ }, z.core.$strip>>;
663
717
  detectionSources: z.ZodDefault<z.ZodPreprocess<z.ZodArray<z.ZodEnum<{
664
718
  pipeline: "pipeline";
665
719
  onboard: "onboard";
@@ -0,0 +1,104 @@
1
+ /**
2
+ * viewer-link-url — the ONE builder for a link that opens a VIEWER page
3
+ * (a camera at an instant, the events timeline, the notification centre),
4
+ * and the one definition of the "CamStack app link" address (D709).
5
+ *
6
+ * The address a link points at is the endpoint the operator FLAGS for
7
+ * notifications on the admin Network page (`local-network`'s notification
8
+ * endpoint — one flag, one store). Among the addresses that page lists,
9
+ * `local-network` adds one generic entry: the app link,
10
+ * `https://camstack.zentik.app`, and that entry carries the flag BY DEFAULT.
11
+ * Two forms follow from which address is flagged:
12
+ *
13
+ * - `app` — the app link is flagged:
14
+ * `https://camstack.zentik.app/<path>?<query>&hub=<hub origin>`. The central
15
+ * domain the native app claims as a Universal Link / App Link
16
+ * (docs/design/2026-08-19-central-link-redirect.md): on a phone with the app
17
+ * it opens the app on that page; anywhere else the hosted viewer opens and
18
+ * `hub=` tells it which hub to talk to. `hub=` is filled automatically from
19
+ * the hub's own best public HTTPS address ({@link pickAppLinkHub}).
20
+ * - `hub` — one of the hub's own addresses is flagged:
21
+ * `<hub base>/viewer/camstack/<path>?<query>` (the pre-D709 form).
22
+ *
23
+ * The paths are the viewer's own routes, verbatim (§2.3 of that design), and
24
+ * only the families the app claims in its AASA (`camstack/web-server/
25
+ * app-links.ts`): `/camera/*`, `/events*`, `/notifications*`. A destination
26
+ * is a typed union rather than a free path so a caller cannot mint a central
27
+ * link the domain would 404.
28
+ *
29
+ * The admin UI is NOT a viewer destination: the central site hosts the
30
+ * viewer only, so an admin page (an addon update row → `/system/addons`)
31
+ * always points at the hub itself — see `system-event-tap-url.ts`. Nor is the
32
+ * app link a HUB address: signed media and action-button links never use it.
33
+ */
34
+ import type { ConnectionEndpoint } from './local-network.cap.js';
35
+ /** The central link domain the viewer app claims (Universal Links / App Links). */
36
+ export declare const CAMSTACK_APP_LINK_ORIGIN = "https://camstack.zentik.app";
37
+ /** Where the hub serves the viewer SPA. */
38
+ export declare const HUB_VIEWER_MOUNT = "/viewer/camstack";
39
+ /** Which form a viewer link takes — see the module header. */
40
+ export type ViewerLinkForm = 'hub' | 'app';
41
+ /**
42
+ * The base a viewer link is built on. `hub`: the flagged hub address (null =
43
+ * none reachable — no link). `app`: the hub origin to carry as `hub=` (null =
44
+ * none known — the link is still minted, without `hub=`; the central page then
45
+ * asks once, design §5).
46
+ */
47
+ export interface ViewerLinkBase {
48
+ readonly form: ViewerLinkForm;
49
+ readonly hubBaseUrl: string | null;
50
+ }
51
+ /** A viewer page a link may open. One member per AASA-claimed route family. */
52
+ export type ViewerDestination = {
53
+ readonly kind: 'camera';
54
+ readonly deviceId: number;
55
+ /** Recorded seek instant (`?at=`), epoch ms. Absent = live. */
56
+ readonly atMs?: number;
57
+ } | {
58
+ readonly kind: 'events';
59
+ } | {
60
+ readonly kind: 'notifications';
61
+ };
62
+ export interface ViewerLinkInput {
63
+ readonly base: ViewerLinkBase;
64
+ readonly destination: ViewerDestination;
65
+ }
66
+ /** True when `baseUrl` names the CamStack app link rather than a hub address. */
67
+ export declare function isAppLinkBase(baseUrl: string | null | undefined): boolean;
68
+ /**
69
+ * The fields of `local-network.getNotificationEndpoint` a viewer link reads.
70
+ * `appLinkHub` is absent on a pre-D709 hub, which never flags the app link.
71
+ */
72
+ export interface NotificationLinkEndpoint {
73
+ readonly baseUrl: string | null;
74
+ readonly resolved: string | null;
75
+ readonly appLinkHub?: string | null;
76
+ }
77
+ /**
78
+ * The base a viewer link is built on, from the flagged notification address:
79
+ * the effective address is the explicit choice, else AUTO's `resolved`. The
80
+ * one reading of that answer — the NC's tap and the Network page's preview
81
+ * both go through it.
82
+ */
83
+ export declare function viewerLinkBaseOf(endpoint: NotificationLinkEndpoint): ViewerLinkBase;
84
+ /**
85
+ * Reduce a base URL to the bare origin the central page accepts as `hub=`,
86
+ * or `null` when it cannot be one: not http(s), carries credentials, or does
87
+ * not parse. A path/query/fragment is dropped — the central page mounts the
88
+ * viewer under the origin itself.
89
+ */
90
+ export declare function toAppLinkHubOrigin(baseUrl: string): string | null;
91
+ /**
92
+ * The hub address an app link carries as `hub=`, chosen from the hub's OWN
93
+ * advertised palette so it always agrees with what the Network page lists:
94
+ * the public tunnel first, then the mesh (Tailscale MagicDNS) — HTTPS only,
95
+ * because the app and the hosted viewer reach it from off the LAN. `null`
96
+ * when the hub advertises neither.
97
+ */
98
+ export declare function pickAppLinkHub(endpoints: readonly ConnectionEndpoint[]): string | null;
99
+ /**
100
+ * The link for a viewer destination, or `null` when none can be minted: an
101
+ * unknown destination, or the `hub` form with no reachable base (a dead link
102
+ * is worse than none).
103
+ */
104
+ export declare function buildViewerLink(input: ViewerLinkInput): string | null;
package/dist/index.d.ts CHANGED
@@ -244,7 +244,7 @@ export { conditionExclusionReason, conditionVisibleForKind, defaultDeliveryForSe
244
244
  export { isScheduleActive } from './notification/schedule.js';
245
245
  export { isAlarmControllableCap, NC_ALARM_CONTROLLABLE_CAPS, NC_ALARM_OPENING_EVENT_KINDS, NC_SENSOR_TRANSITION_NEVER_FIRES_WARNING, type NcAlarmControllableCap, type NcAlarmMembershipSubject, type NcAlarmOpeningEventKind, ruleAutoTriggersAlarm, ruleBelongsToAlarm, ruleGatedOnArmedState, sensorTransitionNeverFires, } from './notification/alarm-membership.js';
246
246
  export { alarmDeviceBlocksArming, alarmDeviceSecureOnArm, type AlarmDeviceBlocksInput, type AlarmDeviceSecureOnArmInput, type NcAlarmSecureActuation, secureActuationFor, } from './notification/alarm-controllable.js';
247
- export { alarmPatchLanded, applyBlockingEdit, applyModeDelaysEdits, applyModeDeviceListEdit, applyNonBlockingEdit, applySecureOnArmEdit, derivePostTriggeredAction, NC_ALARM_DELAY_FIELDS, type NcAlarmDelayField, type NcAlarmDelaySettings, type NcAlarmDelaySource, type NcAlarmModeDeviceListEditResult, type NcAlarmNonBlockingEditResult, type NcAlarmResolvedDelays, resolveModeDelays, } from './notification/alarm-settings.js';
247
+ export { alarmPatchLanded, applyBlockingEdit, applyModeDelaysEdits, applyModeDeviceListEdit, applyNonBlockingEdit, applySecureOnArmEdit, derivePostTriggeredAction, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC, NC_ALARM_DELAY_FIELDS, NC_ALARM_NOTIFY_FIELDS, type NcAlarmDelayField, type NcAlarmDelaySettings, type NcAlarmDelaySource, type NcAlarmModeDeviceListEditResult, type NcAlarmModeNotifyPolicy, type NcAlarmNonBlockingEditResult, type NcAlarmNotifyField, type NcAlarmResolvedDelays, resolveModeDelays, resolveModeNotifyPolicy, } from './notification/alarm-settings.js';
248
248
  export { activateAlarmProfile, alarmProfileById, cloneAlarmSettings, createAlarmProfile, deleteAlarmProfile, ensureAlarmProfiles, isDefaultAlarmProfileId, NC_ALARM_DEFAULT_PROFILE_ID, NC_ALARM_DEFAULT_PROFILE_NAME, NC_ALARM_SYSTEM_DEFAULT_DELAYS, ncAlarmSystemDefaultSettings, type NcAlarmProfileCreateSource, type NcAlarmProfileRecord, type NcAlarmProfilesMutationResult, type NcAlarmProfilesRefuseReason, type NcAlarmProfilesState, renameAlarmProfile, syncActiveAlarmProfileSettings, } from './notification/alarm-profiles.js';
249
249
  export { NC_SENSOR_RAISED_FIELD_BY_KIND, NC_SENSOR_TRANSITION_KINDS, NC_SENSOR_TRANSITION_UNSUPPORTED_REASON, sensorRaisedOf, sensorTransitionOffered, } from './notification/sensor-raised.js';
250
250
  export { NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS, NC_TEMPLATE_VARS, isHeldBackTemplateVar, isKnownTemplateVar, servedTemplateVars, templateVarDeliveryApplies, templateVarKindApplies, templateVarSystemEventApplies, templateVarsFor, } from './notification/template-vars.js';