@camstack/types 1.2.25 → 1.2.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/addon.d.ts CHANGED
@@ -28,6 +28,7 @@ export { DATAPLANE_SECRET_HEADER } from './interfaces/addon-data-plane.js';
28
28
  export { expandCapMethods } from './capabilities/capability-definition.js';
29
29
  export { nodePin, readNodePin } from './cap-call-context.js';
30
30
  export { COLLECTION_ARRAY_METHODS, isCollectionArrayMethodName, } from './generated/collection-array-methods.js';
31
+ export { DEVICE_SCOPED_CAPS, isDeviceScopedCap } from './generated/device-scoped-caps.js';
31
32
  export { CAP_INPUT_DEFAULTS, withCapInputDefaults } from './generated/cap-input-defaults.js';
32
33
  export { deviceOpsCapability } from './capabilities/device-ops.cap.js';
33
34
  export { createDeviceProxy } from './generated/device-proxy.js';
package/dist/addon.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-BvSjpsfC.js");
2
+ const require_sleep = require("./sleep-6oDIDtYV.js");
3
3
  const require_event_category = require("./event-category-BE4PDZ_3.js");
4
4
  const require_err_msg = require("./err-msg-COpsHMw2.js");
5
5
  //#region src/generated/collection-array-methods.ts
@@ -324,6 +324,7 @@ exports.BaseAddon = require_sleep.BaseAddon;
324
324
  exports.CAP_INPUT_DEFAULTS = CAP_INPUT_DEFAULTS;
325
325
  exports.COLLECTION_ARRAY_METHODS = COLLECTION_ARRAY_METHODS;
326
326
  exports.DATAPLANE_SECRET_HEADER = require_sleep.DATAPLANE_SECRET_HEADER;
327
+ exports.DEVICE_SCOPED_CAPS = require_sleep.DEVICE_SCOPED_CAPS;
327
328
  exports.DeviceType = require_sleep.DeviceType;
328
329
  exports.DisposerChain = require_sleep.DisposerChain;
329
330
  exports.EventCategory = require_event_category.EventCategory;
@@ -338,6 +339,7 @@ exports.emitReadiness = require_sleep.emitReadiness;
338
339
  exports.errMsg = require_err_msg.errMsg;
339
340
  exports.expandCapMethods = require_sleep.expandCapMethods;
340
341
  exports.isCollectionArrayMethodName = isCollectionArrayMethodName;
342
+ exports.isDeviceScopedCap = require_sleep.isDeviceScopedCap;
341
343
  exports.nodePin = require_sleep.nodePin;
342
344
  exports.normalizeAddonInitResult = require_sleep.normalizeAddonInitResult;
343
345
  exports.parseJsonUnknown = require_sleep.parseJsonUnknown;
package/dist/addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { A as parseJsonUnknown, Ct as DisposerChain, D as asString, F as ReadinessRegistry, I as ReadinessTimeoutError, M as nodePin, N as readNodePin, P as DATAPLANE_SECRET_HEADER, S as DeviceType, T as asJsonObject, a as viewerUiCapability, dt as BaseAddon, ft as normalizeAddonInitResult, ht as emitReadiness, i as deviceOpsCapability, m as expandCapMethods, o as adminUiCapability, s as createDeviceProxy, t as sleep, z as scopeKey } from "./sleep-vCXN9wNH.mjs";
1
+ import { C as DEVICE_SCOPED_CAPS, D as asJsonObject, F as readNodePin, I as DATAPLANE_SECRET_HEADER, L as ReadinessRegistry, M as parseJsonUnknown, P as nodePin, R as ReadinessTimeoutError, S as DeviceType, Tt as DisposerChain, V as scopeKey, _t as emitReadiness, a as viewerUiCapability, i as deviceOpsCapability, k as asString, m as expandCapMethods, mt as normalizeAddonInitResult, o as adminUiCapability, pt as BaseAddon, s as createDeviceProxy, t as sleep, w as isDeviceScopedCap } from "./sleep-CD2Df3i7.mjs";
2
2
  import { t as EventCategory } from "./event-category-41fKf-q9.mjs";
3
3
  import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
4
4
  //#region src/generated/collection-array-methods.ts
@@ -319,4 +319,4 @@ function materialise(defaults) {
319
319
  return out;
320
320
  }
321
321
  //#endregion
322
- export { BaseAddon, CAP_INPUT_DEFAULTS, COLLECTION_ARRAY_METHODS, DATAPLANE_SECRET_HEADER, DeviceType, DisposerChain, EventCategory, ReadinessRegistry, ReadinessTimeoutError, adminUiCapability, asJsonObject, asString, createDeviceProxy, deviceOpsCapability, emitReadiness, errMsg, expandCapMethods, isCollectionArrayMethodName, nodePin, normalizeAddonInitResult, parseJsonUnknown, readNodePin, scopeKey, sleep, viewerUiCapability, withCapInputDefaults };
322
+ export { BaseAddon, CAP_INPUT_DEFAULTS, COLLECTION_ARRAY_METHODS, DATAPLANE_SECRET_HEADER, DEVICE_SCOPED_CAPS, DeviceType, DisposerChain, EventCategory, ReadinessRegistry, ReadinessTimeoutError, adminUiCapability, asJsonObject, asString, createDeviceProxy, deviceOpsCapability, emitReadiness, errMsg, expandCapMethods, isCollectionArrayMethodName, isDeviceScopedCap, nodePin, normalizeAddonInitResult, parseJsonUnknown, readNodePin, scopeKey, sleep, viewerUiCapability, withCapInputDefaults };
@@ -74,7 +74,7 @@ export { AddBrokerInputSchema, BrokerConnectionDetailsSchema, BrokerInfoSchema,
74
74
  export type { NetworkAccessStatus, NetworkEndpoint } from './network-access.cap.js';
75
75
  export { NetworkAccessStatusSchema, NetworkEndpointSchema, networkAccessCapability, } from './network-access.cap.js';
76
76
  export { type Attachment, type AttachmentMediaType, AttachmentMediaTypeSchema, AttachmentSchema, type DiscoveredTarget, DiscoveredTargetSchema, type INotificationOutputProvider, type NotificationAction, NotificationActionSchema, type NotificationFormat, NotificationFormatSchema, NotificationSchema, notificationOutputCapability, 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';
77
- export { type INotificationRulesProvider, NC_CONDITION_CATALOG, NC_HISTORY_LIMIT_DEFAULT, NC_HISTORY_LIMIT_MAX, NC_MAX_PER_TRACK_IMMEDIATE, NC_SNOOZE_MAX_MINUTES, type NcConditionDescriptor, NcConditionDescriptorSchema, type NcConditions, NcConditionsSchema, type NcCrossing, NcCrossingSchema, type NcDelivery, NcDeliverySchema, type NcHistoryEntry, NcHistoryEntrySchema, type NcHistoryFilter, NcHistoryFilterSchema, type NcHistoryRecordKind, NcHistoryRecordKindSchema, type NcHistoryStatus, NcHistoryStatusSchema, type NcHistorySubject, NcHistorySubjectSchema, type NcMediaFrame, NcMediaFrameSchema, type NcMediaPolicy, NcMediaPolicySchema, type NcOccupancyCondition, NcOccupancyConditionSchema, type NcPlateMatcher, NcPlateMatcherSchema, type NcRule, type NcRuleInput, NcRuleInputSchema, type NcRulePatch, NcRulePatchSchema, NcRuleSchema, type NcRuleTarget, NcRuleTargetSchema, type NcSchedule, NcScheduleSchema, type NcScheduleWindow, NcScheduleWindowSchema, type NcSnooze, type NcSnoozeInput, NcSnoozeInputSchema, NcSnoozeSchema, type NcSnoozeScope, NcSnoozeScopeSchema, type NcSnoozeSuppressed, NcSnoozeSuppressedSchema, type NcTestResult, NcTestResultSchema, type NcThrottle, type NcThrottleGranularity, NcThrottleGranularitySchema, NcThrottleSchema, type NcZoneCondition, NcZoneConditionSchema, notificationRulesCapability, } from './notification-rules.cap.js';
77
+ export { type INotificationRulesProvider, NC_CONDITION_CATALOG, NC_HISTORY_LIMIT_DEFAULT, NC_HISTORY_LIMIT_MAX, NC_MAX_PER_TRACK_IMMEDIATE, NC_SNOOZE_MAX_MINUTES, type NcConditionDescriptor, NcConditionDescriptorSchema, type NcConditions, NcConditionsSchema, type NcCrossing, NcCrossingSchema, type NcDeviceStateCondition, NcDeviceStateConditionSchema, type NcDelivery, NcDeliverySchema, type NcHistoryEntry, NcHistoryEntrySchema, type NcHistoryFilter, NcHistoryFilterSchema, type NcHistoryRecordKind, NcHistoryRecordKindSchema, type NcHistoryStatus, NcHistoryStatusSchema, type NcHistorySubject, NcHistorySubjectSchema, type NcMediaFrame, NcMediaFrameSchema, type NcMediaPolicy, NcMediaPolicySchema, type NcOccupancyCondition, NcOccupancyConditionSchema, type NcPlateMatcher, NcPlateMatcherSchema, type NcRule, type NcRuleAction, NcRuleActionSchema, type NcRuleActionSequence, NcRuleActionSequenceSchema, type NcRuleActions, NcRuleActionsSchema, type NcRuleInput, NcRuleInputSchema, type NcRulePatch, NcRulePatchSchema, NcRuleSchema, type NcRuleTarget, NcRuleTargetSchema, type NcSchedule, NcScheduleSchema, type NcScheduleWindow, NcScheduleWindowSchema, type NcSnooze, type NcSnoozeInput, NcSnoozeInputSchema, NcSnoozeSchema, type NcSnoozeScope, NcSnoozeScopeSchema, type NcSnoozeSuppressed, NcSnoozeSuppressedSchema, type NcTestResult, NcTestResultSchema, type NcThrottle, type NcThrottleGranularity, NcThrottleGranularitySchema, NcThrottleSchema, type NcZoneCondition, NcZoneConditionSchema, notificationRulesCapability, } from './notification-rules.cap.js';
78
78
  export { type IOauthIntegrationProvider, type OauthIntegrationDescriptor, OauthIntegrationDescriptorSchema, oauthIntegrationCapability, } from './oauth-integration.cap.js';
79
79
  export { type AudioEvent, AudioEventSchema, type DetectionSource, DetectionSourceSchema, type EventKind, type EventKindCategory, EventKindCategorySchema, type EventKindDescriptor, EventKindDescriptorSchema, type EventKindIcon, EventKindIconSchema, EventKindSchema, type EventPruneCounts, type EventStoreDeviceFootprint, type EventStoreFootprint, type IPipelineAnalyticsProvider, type KeyEvent, KeyEventSchema, type MediaFile, type MediaFileKind, MediaFileSchema, type MotionEvent, MotionEventSchema, type ObjectEvent, ObjectEventSchema, pipelineAnalyticsCapability, type RecentTracksPage, RecentTracksPageSchema, type RecentTracksQuery, RecentTracksQueryInput, type ScoredObjectEvent, ScoredObjectEventSchema, type SensorEvent, SensorEventSchema, type Track, type TrackCascadeCounts, TrackCascadeCountsSchema, type TrackEnvelope, TrackEnvelopeSchema, TrackedDetectionSchema, type TrackProjection, TrackProjectionSchema, TrackSchema, type TrackState, TrackStateSchema, type TrackZoneFilter, TrackZoneFilterSchema, type ZoneCrossing, type ZoneCrossingDirection, ZoneCrossingDirectionSchema, ZoneCrossingSchema, } from './pipeline-analytics.cap.js';
80
80
  export type { NativeCropRef, PipelineStepInputOutput, PipelineValidationIssue, PipelineValidationResult, } from './pipeline-executor.cap.js';
@@ -99,7 +99,7 @@ export { type IStorageCapProvider, StorageLocationTypeSchema, storageCapability,
99
99
  export { type EvictableUsage, type EvictResult, type IStorageEvictableProvider, storageEvictableCapability, } from './storage-evictable.cap.js';
100
100
  export { AbortUploadInputSchema as StorageAbortUploadInputSchema, BeginDownloadInputSchema as StorageBeginDownloadInputSchema, BeginDownloadResultSchema as StorageBeginDownloadResultSchema, BeginUploadInputSchema as StorageBeginUploadInputSchema, BeginUploadResultSchema as StorageBeginUploadResultSchema, EndDownloadInputSchema as StorageEndDownloadInputSchema, FinalizeUploadInputSchema as StorageFinalizeUploadInputSchema, type IStorageProviderImpl, ProviderInfoSchema as StorageProviderInfoSchema, ReadChunkInputSchema as StorageReadChunkInputSchema, storageProviderCapability, TestLocationResultSchema as StorageTestLocationResultSchema, WriteChunkInputSchema as StorageWriteChunkInputSchema, } from './storage-provider.cap.js';
101
101
  export type { AudioCodecTarget, BrokerAudioClient, BrokerClients, BrokerConsumerAttribution, BrokerConsumerKind, BrokerDecodedClient, BrokerEncodedClient, BrokerRtspClient, GetStreamWithCodecInput, PlaceholderReason, RtpSource, VideoCodecTarget, } from './stream-broker.cap.js';
102
- export { BrokerAudioClientSchema, BrokerClientsSchema, BrokerConsumerAttributionSchema, BrokerConsumerKindSchema, BrokerDecodedClientSchema, BrokerEncodedClientSchema, BrokerRtspClientSchema, GetStreamWithCodecInputSchema, PlaceholderReasonSchema, RtpSourceSchema, RtspRestreamEntrySchema, type StreamFormat, StreamFormatSchema, streamBrokerCapability, } from './stream-broker.cap.js';
102
+ export { BrokerAudioClientSchema, BrokerClientsSchema, BrokerConsumerAttributionSchema, BrokerConsumerKindSchema, BrokerDecodedClientSchema, BrokerEncodedClientSchema, BrokerRtspClientSchema, GetStreamWithCodecInputSchema, PlaceholderReasonSchema, RtpSourceSchema, RtspRestreamEntrySchema, type StreamFormat, StreamFormatSchema, streamBrokerCapability, type StreamBrokerClient, } from './stream-broker.cap.js';
103
103
  export type { ITurnProvider } from './turn-provider.cap.js';
104
104
  export { TurnServerSchema, turnProviderCapability } from './turn-provider.cap.js';
105
105
  export type { IUserPasskeysProvider, PasskeySummary } from './user-passkeys.cap.js';
@@ -145,7 +145,112 @@ export type NcZoneCondition = z.infer<typeof NcZoneConditionSchema>;
145
145
  * The P1 condition set — a flat AND of groups; absent group = pass;
146
146
  * membership lists are OR within the list (spec §2.3).
147
147
  */
148
+ /**
149
+ * What a rule may actuate.
150
+ *
151
+ * **No hand-maintained allowlist** (operator decision, and the right one — a
152
+ * written list of methods is a third parallel map to keep aligned, and this
153
+ * repo has paid for those). The boundary instead comes from a property the
154
+ * capabilities already carry: an action may target only a **device-scoped**
155
+ * capability method.
156
+ *
157
+ * That is not decoration. A rule can be authored by a NON-ADMIN — personal
158
+ * rules are a supported flow — and the executor runs with the addon's
159
+ * privileges, so an unbounded action is an arbitrary RPC channel with a
160
+ * privilege escalation attached. Restricting to device scope excludes the
161
+ * system caps (`device-manager.removeDevice` and friends) by construction,
162
+ * costs nothing to maintain, and cannot rot: a cap that stops being
163
+ * device-scoped stops being actuatable in the same change.
164
+ *
165
+ * The executor enforces it; {@link NcRuleActionSchema} carries the intent.
166
+ */
167
+ /**
168
+ * One step of a sequence.
169
+ *
170
+ * `wait` is a first-class step rather than a property of the next action: it is
171
+ * what makes a sequence a SEQUENCE and not a list — "unlock, wait 5s, open"
172
+ * cannot be expressed otherwise.
173
+ */
174
+ export declare const NcRuleActionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
175
+ kind: z.ZodLiteral<"wait">;
176
+ seconds: z.ZodNumber;
177
+ }, z.core.$strip>, z.ZodObject<{
178
+ kind: z.ZodLiteral<"cap">;
179
+ deviceId: z.ZodNumber;
180
+ cap: z.ZodString;
181
+ method: z.ZodString;
182
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
183
+ }, z.core.$strip>], "kind">;
184
+ export type NcRuleAction = z.infer<typeof NcRuleActionSchema>;
185
+ /**
186
+ * A named, ordered run of steps with its own throttle.
187
+ *
188
+ * `minDelaySec` exists because a noisy rule otherwise hammers a physical
189
+ * actuator — the rule's own cooldown governs NOTIFICATIONS, which is a
190
+ * different budget from "how often may this gate actually open".
191
+ */
192
+ export declare const NcRuleActionSequenceSchema: z.ZodObject<{
193
+ name: z.ZodString;
194
+ enabled: z.ZodBoolean;
195
+ minDelaySec: z.ZodOptional<z.ZodNumber>;
196
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
197
+ kind: z.ZodLiteral<"wait">;
198
+ seconds: z.ZodNumber;
199
+ }, z.core.$strip>, z.ZodObject<{
200
+ kind: z.ZodLiteral<"cap">;
201
+ deviceId: z.ZodNumber;
202
+ cap: z.ZodString;
203
+ method: z.ZodString;
204
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
205
+ }, z.core.$strip>], "kind">>;
206
+ }, z.core.$strip>;
207
+ export type NcRuleActionSequence = z.infer<typeof NcRuleActionSequenceSchema>;
208
+ /**
209
+ * Sequences a rule runs, by hook point.
210
+ *
211
+ * ONLY `onTrigger` is here, deliberately. The reference also has activation /
212
+ * deactivation / reset / post-generation hooks, and they are wanted — but this
213
+ * repo's expensive failure mode is declaring a surface nothing produces, so a
214
+ * hook appears here in the same change that produces its edge, never before.
215
+ */
216
+ export declare const NcRuleActionsSchema: z.ZodObject<{
217
+ onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
218
+ name: z.ZodString;
219
+ enabled: z.ZodBoolean;
220
+ minDelaySec: z.ZodOptional<z.ZodNumber>;
221
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
222
+ kind: z.ZodLiteral<"wait">;
223
+ seconds: z.ZodNumber;
224
+ }, z.core.$strip>, z.ZodObject<{
225
+ kind: z.ZodLiteral<"cap">;
226
+ deviceId: z.ZodNumber;
227
+ cap: z.ZodString;
228
+ method: z.ZodString;
229
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
230
+ }, z.core.$strip>], "kind">>;
231
+ }, z.core.$strip>>>;
232
+ }, z.core.$strip>;
233
+ export type NcRuleActions = z.infer<typeof NcRuleActionsSchema>;
234
+ /**
235
+ * "This rule applies only while `deviceId` is in one of `states`."
236
+ *
237
+ * The states are the DEVICE's own vocabulary — `AlarmState` for a panel,
238
+ * `on`/`off` for a switch — not a normalised set, because normalising would
239
+ * make the condition lie about devices whose states have no equivalent.
240
+ *
241
+ * An unreadable state does NOT match: see the engine's fail-closed gate. A
242
+ * condition that fired on "I could not read it" would be worse than no gate.
243
+ */
244
+ export declare const NcDeviceStateConditionSchema: z.ZodObject<{
245
+ deviceId: z.ZodNumber;
246
+ states: z.ZodArray<z.ZodString>;
247
+ }, z.core.$strip>;
248
+ export type NcDeviceStateCondition = z.infer<typeof NcDeviceStateConditionSchema>;
148
249
  export declare const NcConditionsSchema: z.ZodObject<{
250
+ deviceState: z.ZodOptional<z.ZodObject<{
251
+ deviceId: z.ZodNumber;
252
+ states: z.ZodArray<z.ZodString>;
253
+ }, z.core.$strip>>;
149
254
  devices: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
150
255
  classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
151
256
  classesExclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -308,6 +413,10 @@ export declare const NcRuleInputSchema: z.ZodObject<{
308
413
  "package-event": "package-event";
309
414
  }>;
310
415
  conditions: z.ZodDefault<z.ZodObject<{
416
+ deviceState: z.ZodOptional<z.ZodObject<{
417
+ deviceId: z.ZodNumber;
418
+ states: z.ZodArray<z.ZodString>;
419
+ }, z.core.$strip>>;
311
420
  devices: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
312
421
  classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
313
422
  classesExclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -424,6 +533,23 @@ export declare const NcRuleInputSchema: z.ZodObject<{
424
533
  priority: z.ZodDefault<z.ZodNumber>;
425
534
  ownerUserId: z.ZodOptional<z.ZodString>;
426
535
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
536
+ actions: z.ZodOptional<z.ZodObject<{
537
+ onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
538
+ name: z.ZodString;
539
+ enabled: z.ZodBoolean;
540
+ minDelaySec: z.ZodOptional<z.ZodNumber>;
541
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
542
+ kind: z.ZodLiteral<"wait">;
543
+ seconds: z.ZodNumber;
544
+ }, z.core.$strip>, z.ZodObject<{
545
+ kind: z.ZodLiteral<"cap">;
546
+ deviceId: z.ZodNumber;
547
+ cap: z.ZodString;
548
+ method: z.ZodString;
549
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
550
+ }, z.core.$strip>], "kind">>;
551
+ }, z.core.$strip>>>;
552
+ }, z.core.$strip>>;
427
553
  }, z.core.$strip>;
428
554
  export type NcRuleInput = z.infer<typeof NcRuleInputSchema>;
429
555
  /**
@@ -445,6 +571,10 @@ export declare const NcRulePatchSchema: z.ZodObject<{
445
571
  "package-event": "package-event";
446
572
  }>>;
447
573
  conditions: z.ZodOptional<z.ZodDefault<z.ZodObject<{
574
+ deviceState: z.ZodOptional<z.ZodObject<{
575
+ deviceId: z.ZodNumber;
576
+ states: z.ZodArray<z.ZodString>;
577
+ }, z.core.$strip>>;
448
578
  devices: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
449
579
  classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
450
580
  classesExclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -561,6 +691,23 @@ export declare const NcRulePatchSchema: z.ZodObject<{
561
691
  priority: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
562
692
  ownerUserId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
563
693
  snoozeAllowGlobal: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
694
+ actions: z.ZodOptional<z.ZodOptional<z.ZodObject<{
695
+ onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
696
+ name: z.ZodString;
697
+ enabled: z.ZodBoolean;
698
+ minDelaySec: z.ZodOptional<z.ZodNumber>;
699
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
700
+ kind: z.ZodLiteral<"wait">;
701
+ seconds: z.ZodNumber;
702
+ }, z.core.$strip>, z.ZodObject<{
703
+ kind: z.ZodLiteral<"cap">;
704
+ deviceId: z.ZodNumber;
705
+ cap: z.ZodString;
706
+ method: z.ZodString;
707
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
708
+ }, z.core.$strip>], "kind">>;
709
+ }, z.core.$strip>>>;
710
+ }, z.core.$strip>>>;
564
711
  disabledTargetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
565
712
  }, z.core.$strip>;
566
713
  export type NcRulePatch = z.infer<typeof NcRulePatchSchema>;
@@ -575,6 +722,10 @@ export declare const NcRuleSchema: z.ZodObject<{
575
722
  "package-event": "package-event";
576
723
  }>;
577
724
  conditions: z.ZodDefault<z.ZodObject<{
725
+ deviceState: z.ZodOptional<z.ZodObject<{
726
+ deviceId: z.ZodNumber;
727
+ states: z.ZodArray<z.ZodString>;
728
+ }, z.core.$strip>>;
578
729
  devices: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
579
730
  classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
580
731
  classesExclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -691,6 +842,23 @@ export declare const NcRuleSchema: z.ZodObject<{
691
842
  priority: z.ZodDefault<z.ZodNumber>;
692
843
  ownerUserId: z.ZodOptional<z.ZodString>;
693
844
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
845
+ actions: z.ZodOptional<z.ZodObject<{
846
+ onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
847
+ name: z.ZodString;
848
+ enabled: z.ZodBoolean;
849
+ minDelaySec: z.ZodOptional<z.ZodNumber>;
850
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
851
+ kind: z.ZodLiteral<"wait">;
852
+ seconds: z.ZodNumber;
853
+ }, z.core.$strip>, z.ZodObject<{
854
+ kind: z.ZodLiteral<"cap">;
855
+ deviceId: z.ZodNumber;
856
+ cap: z.ZodString;
857
+ method: z.ZodString;
858
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
859
+ }, z.core.$strip>], "kind">>;
860
+ }, z.core.$strip>>>;
861
+ }, z.core.$strip>>;
694
862
  id: z.ZodString;
695
863
  createdBy: z.ZodString;
696
864
  createdAt: z.ZodNumber;
@@ -721,8 +889,8 @@ export declare const NcConditionDescriptorSchema: z.ZodObject<{
721
889
  label: "label";
722
890
  scope: "scope";
723
891
  class: "class";
724
- schedule: "schedule";
725
892
  zones: "zones";
893
+ schedule: "schedule";
726
894
  package: "package";
727
895
  occupancy: "occupancy";
728
896
  quality: "quality";
@@ -730,6 +898,7 @@ export declare const NcConditionDescriptorSchema: z.ZodObject<{
730
898
  label: z.ZodString;
731
899
  valueType: z.ZodEnum<{
732
900
  number: "number";
901
+ deviceState: "deviceState";
733
902
  schedule: "schedule";
734
903
  packagePhase: "packagePhase";
735
904
  occupancy: "occupancy";
@@ -956,6 +1125,10 @@ export declare const notificationRulesCapability: {
956
1125
  "package-event": "package-event";
957
1126
  }>;
958
1127
  conditions: z.ZodDefault<z.ZodObject<{
1128
+ deviceState: z.ZodOptional<z.ZodObject<{
1129
+ deviceId: z.ZodNumber;
1130
+ states: z.ZodArray<z.ZodString>;
1131
+ }, z.core.$strip>>;
959
1132
  devices: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
960
1133
  classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
961
1134
  classesExclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1072,6 +1245,23 @@ export declare const notificationRulesCapability: {
1072
1245
  priority: z.ZodDefault<z.ZodNumber>;
1073
1246
  ownerUserId: z.ZodOptional<z.ZodString>;
1074
1247
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
1248
+ actions: z.ZodOptional<z.ZodObject<{
1249
+ onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
1250
+ name: z.ZodString;
1251
+ enabled: z.ZodBoolean;
1252
+ minDelaySec: z.ZodOptional<z.ZodNumber>;
1253
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1254
+ kind: z.ZodLiteral<"wait">;
1255
+ seconds: z.ZodNumber;
1256
+ }, z.core.$strip>, z.ZodObject<{
1257
+ kind: z.ZodLiteral<"cap">;
1258
+ deviceId: z.ZodNumber;
1259
+ cap: z.ZodString;
1260
+ method: z.ZodString;
1261
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1262
+ }, z.core.$strip>], "kind">>;
1263
+ }, z.core.$strip>>>;
1264
+ }, z.core.$strip>>;
1075
1265
  id: z.ZodString;
1076
1266
  createdBy: z.ZodString;
1077
1267
  createdAt: z.ZodNumber;
@@ -1092,6 +1282,10 @@ export declare const notificationRulesCapability: {
1092
1282
  "package-event": "package-event";
1093
1283
  }>;
1094
1284
  conditions: z.ZodDefault<z.ZodObject<{
1285
+ deviceState: z.ZodOptional<z.ZodObject<{
1286
+ deviceId: z.ZodNumber;
1287
+ states: z.ZodArray<z.ZodString>;
1288
+ }, z.core.$strip>>;
1095
1289
  devices: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1096
1290
  classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
1097
1291
  classesExclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1208,6 +1402,23 @@ export declare const notificationRulesCapability: {
1208
1402
  priority: z.ZodDefault<z.ZodNumber>;
1209
1403
  ownerUserId: z.ZodOptional<z.ZodString>;
1210
1404
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
1405
+ actions: z.ZodOptional<z.ZodObject<{
1406
+ onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
1407
+ name: z.ZodString;
1408
+ enabled: z.ZodBoolean;
1409
+ minDelaySec: z.ZodOptional<z.ZodNumber>;
1410
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1411
+ kind: z.ZodLiteral<"wait">;
1412
+ seconds: z.ZodNumber;
1413
+ }, z.core.$strip>, z.ZodObject<{
1414
+ kind: z.ZodLiteral<"cap">;
1415
+ deviceId: z.ZodNumber;
1416
+ cap: z.ZodString;
1417
+ method: z.ZodString;
1418
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1419
+ }, z.core.$strip>], "kind">>;
1420
+ }, z.core.$strip>>>;
1421
+ }, z.core.$strip>>;
1211
1422
  id: z.ZodString;
1212
1423
  createdBy: z.ZodString;
1213
1424
  createdAt: z.ZodNumber;
@@ -1226,6 +1437,10 @@ export declare const notificationRulesCapability: {
1226
1437
  "package-event": "package-event";
1227
1438
  }>;
1228
1439
  conditions: z.ZodDefault<z.ZodObject<{
1440
+ deviceState: z.ZodOptional<z.ZodObject<{
1441
+ deviceId: z.ZodNumber;
1442
+ states: z.ZodArray<z.ZodString>;
1443
+ }, z.core.$strip>>;
1229
1444
  devices: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1230
1445
  classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
1231
1446
  classesExclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1342,6 +1557,23 @@ export declare const notificationRulesCapability: {
1342
1557
  priority: z.ZodDefault<z.ZodNumber>;
1343
1558
  ownerUserId: z.ZodOptional<z.ZodString>;
1344
1559
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
1560
+ actions: z.ZodOptional<z.ZodObject<{
1561
+ onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
1562
+ name: z.ZodString;
1563
+ enabled: z.ZodBoolean;
1564
+ minDelaySec: z.ZodOptional<z.ZodNumber>;
1565
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1566
+ kind: z.ZodLiteral<"wait">;
1567
+ seconds: z.ZodNumber;
1568
+ }, z.core.$strip>, z.ZodObject<{
1569
+ kind: z.ZodLiteral<"cap">;
1570
+ deviceId: z.ZodNumber;
1571
+ cap: z.ZodString;
1572
+ method: z.ZodString;
1573
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1574
+ }, z.core.$strip>], "kind">>;
1575
+ }, z.core.$strip>>>;
1576
+ }, z.core.$strip>>;
1345
1577
  }, z.core.$strip>;
1346
1578
  }, z.core.$strip>, z.ZodObject<{
1347
1579
  rule: z.ZodObject<{
@@ -1354,6 +1586,10 @@ export declare const notificationRulesCapability: {
1354
1586
  "package-event": "package-event";
1355
1587
  }>;
1356
1588
  conditions: z.ZodDefault<z.ZodObject<{
1589
+ deviceState: z.ZodOptional<z.ZodObject<{
1590
+ deviceId: z.ZodNumber;
1591
+ states: z.ZodArray<z.ZodString>;
1592
+ }, z.core.$strip>>;
1357
1593
  devices: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1358
1594
  classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
1359
1595
  classesExclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1470,6 +1706,23 @@ export declare const notificationRulesCapability: {
1470
1706
  priority: z.ZodDefault<z.ZodNumber>;
1471
1707
  ownerUserId: z.ZodOptional<z.ZodString>;
1472
1708
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
1709
+ actions: z.ZodOptional<z.ZodObject<{
1710
+ onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
1711
+ name: z.ZodString;
1712
+ enabled: z.ZodBoolean;
1713
+ minDelaySec: z.ZodOptional<z.ZodNumber>;
1714
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1715
+ kind: z.ZodLiteral<"wait">;
1716
+ seconds: z.ZodNumber;
1717
+ }, z.core.$strip>, z.ZodObject<{
1718
+ kind: z.ZodLiteral<"cap">;
1719
+ deviceId: z.ZodNumber;
1720
+ cap: z.ZodString;
1721
+ method: z.ZodString;
1722
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1723
+ }, z.core.$strip>], "kind">>;
1724
+ }, z.core.$strip>>>;
1725
+ }, z.core.$strip>>;
1473
1726
  id: z.ZodString;
1474
1727
  createdBy: z.ZodString;
1475
1728
  createdAt: z.ZodNumber;
@@ -1491,6 +1744,10 @@ export declare const notificationRulesCapability: {
1491
1744
  "package-event": "package-event";
1492
1745
  }>>;
1493
1746
  conditions: z.ZodOptional<z.ZodDefault<z.ZodObject<{
1747
+ deviceState: z.ZodOptional<z.ZodObject<{
1748
+ deviceId: z.ZodNumber;
1749
+ states: z.ZodArray<z.ZodString>;
1750
+ }, z.core.$strip>>;
1494
1751
  devices: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1495
1752
  classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
1496
1753
  classesExclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1607,6 +1864,23 @@ export declare const notificationRulesCapability: {
1607
1864
  priority: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1608
1865
  ownerUserId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
1609
1866
  snoozeAllowGlobal: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
1867
+ actions: z.ZodOptional<z.ZodOptional<z.ZodObject<{
1868
+ onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
1869
+ name: z.ZodString;
1870
+ enabled: z.ZodBoolean;
1871
+ minDelaySec: z.ZodOptional<z.ZodNumber>;
1872
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1873
+ kind: z.ZodLiteral<"wait">;
1874
+ seconds: z.ZodNumber;
1875
+ }, z.core.$strip>, z.ZodObject<{
1876
+ kind: z.ZodLiteral<"cap">;
1877
+ deviceId: z.ZodNumber;
1878
+ cap: z.ZodString;
1879
+ method: z.ZodString;
1880
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1881
+ }, z.core.$strip>], "kind">>;
1882
+ }, z.core.$strip>>>;
1883
+ }, z.core.$strip>>>;
1610
1884
  disabledTargetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1611
1885
  }, z.core.$strip>;
1612
1886
  }, z.core.$strip>, z.ZodObject<{
@@ -1620,6 +1894,10 @@ export declare const notificationRulesCapability: {
1620
1894
  "package-event": "package-event";
1621
1895
  }>;
1622
1896
  conditions: z.ZodDefault<z.ZodObject<{
1897
+ deviceState: z.ZodOptional<z.ZodObject<{
1898
+ deviceId: z.ZodNumber;
1899
+ states: z.ZodArray<z.ZodString>;
1900
+ }, z.core.$strip>>;
1623
1901
  devices: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1624
1902
  classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
1625
1903
  classesExclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1736,6 +2014,23 @@ export declare const notificationRulesCapability: {
1736
2014
  priority: z.ZodDefault<z.ZodNumber>;
1737
2015
  ownerUserId: z.ZodOptional<z.ZodString>;
1738
2016
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
2017
+ actions: z.ZodOptional<z.ZodObject<{
2018
+ onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
2019
+ name: z.ZodString;
2020
+ enabled: z.ZodBoolean;
2021
+ minDelaySec: z.ZodOptional<z.ZodNumber>;
2022
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2023
+ kind: z.ZodLiteral<"wait">;
2024
+ seconds: z.ZodNumber;
2025
+ }, z.core.$strip>, z.ZodObject<{
2026
+ kind: z.ZodLiteral<"cap">;
2027
+ deviceId: z.ZodNumber;
2028
+ cap: z.ZodString;
2029
+ method: z.ZodString;
2030
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2031
+ }, z.core.$strip>], "kind">>;
2032
+ }, z.core.$strip>>>;
2033
+ }, z.core.$strip>>;
1739
2034
  id: z.ZodString;
1740
2035
  createdBy: z.ZodString;
1741
2036
  createdAt: z.ZodNumber;
@@ -1772,6 +2067,10 @@ export declare const notificationRulesCapability: {
1772
2067
  "package-event": "package-event";
1773
2068
  }>;
1774
2069
  conditions: z.ZodDefault<z.ZodObject<{
2070
+ deviceState: z.ZodOptional<z.ZodObject<{
2071
+ deviceId: z.ZodNumber;
2072
+ states: z.ZodArray<z.ZodString>;
2073
+ }, z.core.$strip>>;
1775
2074
  devices: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1776
2075
  classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
1777
2076
  classesExclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1888,6 +2187,23 @@ export declare const notificationRulesCapability: {
1888
2187
  priority: z.ZodDefault<z.ZodNumber>;
1889
2188
  ownerUserId: z.ZodOptional<z.ZodString>;
1890
2189
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
2190
+ actions: z.ZodOptional<z.ZodObject<{
2191
+ onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
2192
+ name: z.ZodString;
2193
+ enabled: z.ZodBoolean;
2194
+ minDelaySec: z.ZodOptional<z.ZodNumber>;
2195
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2196
+ kind: z.ZodLiteral<"wait">;
2197
+ seconds: z.ZodNumber;
2198
+ }, z.core.$strip>, z.ZodObject<{
2199
+ kind: z.ZodLiteral<"cap">;
2200
+ deviceId: z.ZodNumber;
2201
+ cap: z.ZodString;
2202
+ method: z.ZodString;
2203
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2204
+ }, z.core.$strip>], "kind">>;
2205
+ }, z.core.$strip>>>;
2206
+ }, z.core.$strip>>;
1891
2207
  }, z.core.$strip>;
1892
2208
  lookbackMinutes: z.ZodDefault<z.ZodNumber>;
1893
2209
  }, z.core.$strip>, z.ZodObject<{
@@ -1925,8 +2241,8 @@ export declare const notificationRulesCapability: {
1925
2241
  label: "label";
1926
2242
  scope: "scope";
1927
2243
  class: "class";
1928
- schedule: "schedule";
1929
2244
  zones: "zones";
2245
+ schedule: "schedule";
1930
2246
  package: "package";
1931
2247
  occupancy: "occupancy";
1932
2248
  quality: "quality";
@@ -1934,6 +2250,7 @@ export declare const notificationRulesCapability: {
1934
2250
  label: z.ZodString;
1935
2251
  valueType: z.ZodEnum<{
1936
2252
  number: "number";
2253
+ deviceState: "deviceState";
1937
2254
  schedule: "schedule";
1938
2255
  packagePhase: "packagePhase";
1939
2256
  occupancy: "occupancy";
@@ -67,11 +67,11 @@ export declare const EventKindIconSchema: z.ZodEnum<{
67
67
  vehicle: "vehicle";
68
68
  animal: "animal";
69
69
  motion: "motion";
70
+ smoke: "smoke";
70
71
  package: "package";
71
72
  water: "water";
72
73
  door: "door";
73
74
  pir: "pir";
74
- smoke: "smoke";
75
75
  }>;
76
76
  export type EventKindIcon = z.infer<typeof EventKindIconSchema>;
77
77
  export declare const EventKindCategorySchema: z.ZodEnum<{
@@ -104,11 +104,11 @@ declare const EventKindDescriptorSchema: z.ZodObject<{
104
104
  vehicle: "vehicle";
105
105
  animal: "animal";
106
106
  motion: "motion";
107
+ smoke: "smoke";
107
108
  package: "package";
108
109
  water: "water";
109
110
  door: "door";
110
111
  pir: "pir";
111
- smoke: "smoke";
112
112
  }>;
113
113
  category: z.ZodEnum<{
114
114
  sensor: "sensor";
@@ -1075,11 +1075,11 @@ export declare const pipelineAnalyticsCapability: {
1075
1075
  vehicle: "vehicle";
1076
1076
  animal: "animal";
1077
1077
  motion: "motion";
1078
+ smoke: "smoke";
1078
1079
  package: "package";
1079
1080
  water: "water";
1080
1081
  door: "door";
1081
1082
  pir: "pir";
1082
- smoke: "smoke";
1083
1083
  }>;
1084
1084
  category: z.ZodEnum<{
1085
1085
  sensor: "sensor";
@@ -871,3 +871,16 @@ export declare const streamBrokerCapability: {
871
871
  };
872
872
  export type IStreamBrokerProvider = InferProvider<typeof streamBrokerCapability>;
873
873
  export { RtspRestreamEntrySchema };
874
+ /**
875
+ * The generated stream-broker client, as an addon sees it through `ctx.api`.
876
+ *
877
+ * Exists for the same reason as {@link SettingsStoreClient}: a caller that
878
+ * hand-writes its own narrow interface over this cap keeps compiling after a
879
+ * method is renamed or removed, and finds out at RUNTIME with a 404. That is
880
+ * exactly what happened to the Alexa exporter — it declared
881
+ * `getProfileSlotsForDevice`, the cap replaced it with `listAllProfileSlots`,
882
+ * the build stayed green, and every Alexa stream went black for weeks.
883
+ *
884
+ * Type against this, never against a local shape.
885
+ */
886
+ export type StreamBrokerClient = import('../generated/addon-api.js').AddonApi['streamBroker'];