@camstack/types 1.2.23 → 1.2.25

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.js CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-mkNQLVPE.js");
3
- const require_event_category = require("./event-category-39bpf1r_.js");
2
+ const require_sleep = require("./sleep-BvSjpsfC.js");
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
6
6
  /**
@@ -248,7 +248,8 @@ var CAP_INPUT_DEFAULTS = Object.freeze({
248
248
  "postRollSec": 5,
249
249
  "format": "gif",
250
250
  "maxWidth": 480,
251
- "fps": 5
251
+ "fps": 5,
252
+ "speed": 2
252
253
  }
253
254
  },
254
255
  "user-management": {
package/dist/addon.mjs CHANGED
@@ -1,5 +1,5 @@
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-BYyv9gUM.mjs";
2
- import { t as EventCategory } from "./event-category-Bz24uP1U.mjs";
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";
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
5
5
  /**
@@ -247,7 +247,8 @@ var CAP_INPUT_DEFAULTS = Object.freeze({
247
247
  "postRollSec": 5,
248
248
  "format": "gif",
249
249
  "maxWidth": 480,
250
- "fps": 5
250
+ "fps": 5,
251
+ "speed": 2
251
252
  }
252
253
  },
253
254
  "user-management": {
@@ -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, 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 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 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';
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';
@@ -259,6 +259,7 @@ export declare const NcMediaPolicySchema: z.ZodObject<{
259
259
  clip: z.ZodOptional<z.ZodBoolean>;
260
260
  clipPreRollSec: z.ZodOptional<z.ZodNumber>;
261
261
  clipPostRollSec: z.ZodOptional<z.ZodNumber>;
262
+ clipSpeed: z.ZodOptional<z.ZodNumber>;
262
263
  profile: z.ZodOptional<z.ZodEnum<{
263
264
  high: "high";
264
265
  mid: "mid";
@@ -398,6 +399,7 @@ export declare const NcRuleInputSchema: z.ZodObject<{
398
399
  clip: z.ZodOptional<z.ZodBoolean>;
399
400
  clipPreRollSec: z.ZodOptional<z.ZodNumber>;
400
401
  clipPostRollSec: z.ZodOptional<z.ZodNumber>;
402
+ clipSpeed: z.ZodOptional<z.ZodNumber>;
401
403
  profile: z.ZodOptional<z.ZodEnum<{
402
404
  high: "high";
403
405
  mid: "mid";
@@ -421,6 +423,7 @@ export declare const NcRuleInputSchema: z.ZodObject<{
421
423
  }, z.core.$strip>>;
422
424
  priority: z.ZodDefault<z.ZodNumber>;
423
425
  ownerUserId: z.ZodOptional<z.ZodString>;
426
+ snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
424
427
  }, z.core.$strip>;
425
428
  export type NcRuleInput = z.infer<typeof NcRuleInputSchema>;
426
429
  /**
@@ -533,6 +536,7 @@ export declare const NcRulePatchSchema: z.ZodObject<{
533
536
  clip: z.ZodOptional<z.ZodBoolean>;
534
537
  clipPreRollSec: z.ZodOptional<z.ZodNumber>;
535
538
  clipPostRollSec: z.ZodOptional<z.ZodNumber>;
539
+ clipSpeed: z.ZodOptional<z.ZodNumber>;
536
540
  profile: z.ZodOptional<z.ZodEnum<{
537
541
  high: "high";
538
542
  mid: "mid";
@@ -556,6 +560,7 @@ export declare const NcRulePatchSchema: z.ZodObject<{
556
560
  }, z.core.$strip>>>;
557
561
  priority: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
558
562
  ownerUserId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
563
+ snoozeAllowGlobal: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
559
564
  disabledTargetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
560
565
  }, z.core.$strip>;
561
566
  export type NcRulePatch = z.infer<typeof NcRulePatchSchema>;
@@ -661,6 +666,7 @@ export declare const NcRuleSchema: z.ZodObject<{
661
666
  clip: z.ZodOptional<z.ZodBoolean>;
662
667
  clipPreRollSec: z.ZodOptional<z.ZodNumber>;
663
668
  clipPostRollSec: z.ZodOptional<z.ZodNumber>;
669
+ clipSpeed: z.ZodOptional<z.ZodNumber>;
664
670
  profile: z.ZodOptional<z.ZodEnum<{
665
671
  high: "high";
666
672
  mid: "mid";
@@ -684,6 +690,7 @@ export declare const NcRuleSchema: z.ZodObject<{
684
690
  }, z.core.$strip>>;
685
691
  priority: z.ZodDefault<z.ZodNumber>;
686
692
  ownerUserId: z.ZodOptional<z.ZodString>;
693
+ snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
687
694
  id: z.ZodString;
688
695
  createdBy: z.ZodString;
689
696
  createdAt: z.ZodNumber;
@@ -753,6 +760,11 @@ export declare const NcConditionDescriptorSchema: z.ZodObject<{
753
760
  }>>;
754
761
  phase: z.ZodString;
755
762
  description: z.ZodOptional<z.ZodString>;
763
+ options: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
764
+ value: z.ZodString;
765
+ label: z.ZodString;
766
+ hint: z.ZodOptional<z.ZodString>;
767
+ }, z.core.$strip>>>>;
756
768
  }, z.core.$strip>;
757
769
  export type NcConditionDescriptor = z.infer<typeof NcConditionDescriptorSchema>;
758
770
  /**
@@ -866,6 +878,68 @@ export declare const NcHistoryFilterSchema: z.ZodObject<{
866
878
  limit: z.ZodDefault<z.ZodNumber>;
867
879
  }, z.core.$strip>;
868
880
  export type NcHistoryFilter = z.infer<typeof NcHistoryFilterSchema>;
881
+ /**
882
+ * What a snooze covers. Broader scopes win when several overlap, so one window
883
+ * leaves ONE digest rather than a rule snooze and a whole-feed snooze both
884
+ * summarising the same silence.
885
+ */
886
+ export declare const NcSnoozeScopeSchema: z.ZodEnum<{
887
+ device: "device";
888
+ all: "all";
889
+ rule: "rule";
890
+ }>;
891
+ export type NcSnoozeScope = z.infer<typeof NcSnoozeScopeSchema>;
892
+ /** Hard ceiling on a window (24h). A snooze that could not expire would be an
893
+ * outage the operator asked for once and forgot. */
894
+ export declare const NC_SNOOZE_MAX_MINUTES = 1440;
895
+ /**
896
+ * Client-authored snooze. The server stamps `userId`, `startedAt` and
897
+ * `expiresAt` — a DURATION is sent rather than an instant so a client with a
898
+ * skewed clock cannot author a window that is already over, or never ends.
899
+ */
900
+ export declare const NcSnoozeInputSchema: z.ZodObject<{
901
+ scope: z.ZodEnum<{
902
+ device: "device";
903
+ all: "all";
904
+ rule: "rule";
905
+ }>;
906
+ ruleId: z.ZodOptional<z.ZodString>;
907
+ deviceId: z.ZodOptional<z.ZodNumber>;
908
+ durationMinutes: z.ZodNumber;
909
+ global: z.ZodOptional<z.ZodBoolean>;
910
+ summary: z.ZodOptional<z.ZodBoolean>;
911
+ }, z.core.$strip>;
912
+ export type NcSnoozeInput = z.infer<typeof NcSnoozeInputSchema>;
913
+ /** A persisted snooze window. */
914
+ export declare const NcSnoozeSchema: z.ZodObject<{
915
+ id: z.ZodString;
916
+ userId: z.ZodString;
917
+ scope: z.ZodEnum<{
918
+ device: "device";
919
+ all: "all";
920
+ rule: "rule";
921
+ }>;
922
+ ruleId: z.ZodOptional<z.ZodString>;
923
+ deviceId: z.ZodOptional<z.ZodNumber>;
924
+ startedAt: z.ZodNumber;
925
+ expiresAt: z.ZodNumber;
926
+ global: z.ZodBoolean;
927
+ summary: z.ZodBoolean;
928
+ digestSentAt: z.ZodOptional<z.ZodNumber>;
929
+ }, z.core.$strip>;
930
+ export type NcSnooze = z.infer<typeof NcSnoozeSchema>;
931
+ /** One line of an end-of-window digest: what one rule hid on one camera. */
932
+ export declare const NcSnoozeSuppressedSchema: z.ZodObject<{
933
+ snoozeId: z.ZodString;
934
+ targetId: z.ZodString;
935
+ ruleId: z.ZodString;
936
+ ruleName: z.ZodString;
937
+ deviceId: z.ZodNumber;
938
+ count: z.ZodNumber;
939
+ firstAt: z.ZodNumber;
940
+ lastAt: z.ZodNumber;
941
+ }, z.core.$strip>;
942
+ export type NcSnoozeSuppressed = z.infer<typeof NcSnoozeSuppressedSchema>;
869
943
  export declare const notificationRulesCapability: {
870
944
  readonly name: "notification-rules";
871
945
  readonly scope: "system";
@@ -973,6 +1047,7 @@ export declare const notificationRulesCapability: {
973
1047
  clip: z.ZodOptional<z.ZodBoolean>;
974
1048
  clipPreRollSec: z.ZodOptional<z.ZodNumber>;
975
1049
  clipPostRollSec: z.ZodOptional<z.ZodNumber>;
1050
+ clipSpeed: z.ZodOptional<z.ZodNumber>;
976
1051
  profile: z.ZodOptional<z.ZodEnum<{
977
1052
  high: "high";
978
1053
  mid: "mid";
@@ -996,6 +1071,7 @@ export declare const notificationRulesCapability: {
996
1071
  }, z.core.$strip>>;
997
1072
  priority: z.ZodDefault<z.ZodNumber>;
998
1073
  ownerUserId: z.ZodOptional<z.ZodString>;
1074
+ snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
999
1075
  id: z.ZodString;
1000
1076
  createdBy: z.ZodString;
1001
1077
  createdAt: z.ZodNumber;
@@ -1107,6 +1183,7 @@ export declare const notificationRulesCapability: {
1107
1183
  clip: z.ZodOptional<z.ZodBoolean>;
1108
1184
  clipPreRollSec: z.ZodOptional<z.ZodNumber>;
1109
1185
  clipPostRollSec: z.ZodOptional<z.ZodNumber>;
1186
+ clipSpeed: z.ZodOptional<z.ZodNumber>;
1110
1187
  profile: z.ZodOptional<z.ZodEnum<{
1111
1188
  high: "high";
1112
1189
  mid: "mid";
@@ -1130,6 +1207,7 @@ export declare const notificationRulesCapability: {
1130
1207
  }, z.core.$strip>>;
1131
1208
  priority: z.ZodDefault<z.ZodNumber>;
1132
1209
  ownerUserId: z.ZodOptional<z.ZodString>;
1210
+ snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
1133
1211
  id: z.ZodString;
1134
1212
  createdBy: z.ZodString;
1135
1213
  createdAt: z.ZodNumber;
@@ -1239,6 +1317,7 @@ export declare const notificationRulesCapability: {
1239
1317
  clip: z.ZodOptional<z.ZodBoolean>;
1240
1318
  clipPreRollSec: z.ZodOptional<z.ZodNumber>;
1241
1319
  clipPostRollSec: z.ZodOptional<z.ZodNumber>;
1320
+ clipSpeed: z.ZodOptional<z.ZodNumber>;
1242
1321
  profile: z.ZodOptional<z.ZodEnum<{
1243
1322
  high: "high";
1244
1323
  mid: "mid";
@@ -1262,6 +1341,7 @@ export declare const notificationRulesCapability: {
1262
1341
  }, z.core.$strip>>;
1263
1342
  priority: z.ZodDefault<z.ZodNumber>;
1264
1343
  ownerUserId: z.ZodOptional<z.ZodString>;
1344
+ snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
1265
1345
  }, z.core.$strip>;
1266
1346
  }, z.core.$strip>, z.ZodObject<{
1267
1347
  rule: z.ZodObject<{
@@ -1365,6 +1445,7 @@ export declare const notificationRulesCapability: {
1365
1445
  clip: z.ZodOptional<z.ZodBoolean>;
1366
1446
  clipPreRollSec: z.ZodOptional<z.ZodNumber>;
1367
1447
  clipPostRollSec: z.ZodOptional<z.ZodNumber>;
1448
+ clipSpeed: z.ZodOptional<z.ZodNumber>;
1368
1449
  profile: z.ZodOptional<z.ZodEnum<{
1369
1450
  high: "high";
1370
1451
  mid: "mid";
@@ -1388,6 +1469,7 @@ export declare const notificationRulesCapability: {
1388
1469
  }, z.core.$strip>>;
1389
1470
  priority: z.ZodDefault<z.ZodNumber>;
1390
1471
  ownerUserId: z.ZodOptional<z.ZodString>;
1472
+ snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
1391
1473
  id: z.ZodString;
1392
1474
  createdBy: z.ZodString;
1393
1475
  createdAt: z.ZodNumber;
@@ -1500,6 +1582,7 @@ export declare const notificationRulesCapability: {
1500
1582
  clip: z.ZodOptional<z.ZodBoolean>;
1501
1583
  clipPreRollSec: z.ZodOptional<z.ZodNumber>;
1502
1584
  clipPostRollSec: z.ZodOptional<z.ZodNumber>;
1585
+ clipSpeed: z.ZodOptional<z.ZodNumber>;
1503
1586
  profile: z.ZodOptional<z.ZodEnum<{
1504
1587
  high: "high";
1505
1588
  mid: "mid";
@@ -1523,6 +1606,7 @@ export declare const notificationRulesCapability: {
1523
1606
  }, z.core.$strip>>>;
1524
1607
  priority: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
1525
1608
  ownerUserId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
1609
+ snoozeAllowGlobal: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
1526
1610
  disabledTargetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1527
1611
  }, z.core.$strip>;
1528
1612
  }, z.core.$strip>, z.ZodObject<{
@@ -1627,6 +1711,7 @@ export declare const notificationRulesCapability: {
1627
1711
  clip: z.ZodOptional<z.ZodBoolean>;
1628
1712
  clipPreRollSec: z.ZodOptional<z.ZodNumber>;
1629
1713
  clipPostRollSec: z.ZodOptional<z.ZodNumber>;
1714
+ clipSpeed: z.ZodOptional<z.ZodNumber>;
1630
1715
  profile: z.ZodOptional<z.ZodEnum<{
1631
1716
  high: "high";
1632
1717
  mid: "mid";
@@ -1650,6 +1735,7 @@ export declare const notificationRulesCapability: {
1650
1735
  }, z.core.$strip>>;
1651
1736
  priority: z.ZodDefault<z.ZodNumber>;
1652
1737
  ownerUserId: z.ZodOptional<z.ZodString>;
1738
+ snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
1653
1739
  id: z.ZodString;
1654
1740
  createdBy: z.ZodString;
1655
1741
  createdAt: z.ZodNumber;
@@ -1777,6 +1863,7 @@ export declare const notificationRulesCapability: {
1777
1863
  clip: z.ZodOptional<z.ZodBoolean>;
1778
1864
  clipPreRollSec: z.ZodOptional<z.ZodNumber>;
1779
1865
  clipPostRollSec: z.ZodOptional<z.ZodNumber>;
1866
+ clipSpeed: z.ZodOptional<z.ZodNumber>;
1780
1867
  profile: z.ZodOptional<z.ZodEnum<{
1781
1868
  high: "high";
1782
1869
  mid: "mid";
@@ -1800,6 +1887,7 @@ export declare const notificationRulesCapability: {
1800
1887
  }, z.core.$strip>>;
1801
1888
  priority: z.ZodDefault<z.ZodNumber>;
1802
1889
  ownerUserId: z.ZodOptional<z.ZodString>;
1890
+ snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
1803
1891
  }, z.core.$strip>;
1804
1892
  lookbackMinutes: z.ZodDefault<z.ZodNumber>;
1805
1893
  }, z.core.$strip>, z.ZodObject<{
@@ -1876,6 +1964,11 @@ export declare const notificationRulesCapability: {
1876
1964
  }>>;
1877
1965
  phase: z.ZodString;
1878
1966
  description: z.ZodOptional<z.ZodString>;
1967
+ options: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
1968
+ value: z.ZodString;
1969
+ label: z.ZodString;
1970
+ hint: z.ZodOptional<z.ZodString>;
1971
+ }, z.core.$strip>>>>;
1879
1972
  }, z.core.$strip>>;
1880
1973
  taxonomy: z.ZodOptional<z.ZodObject<{
1881
1974
  videoClasses: z.ZodArray<z.ZodObject<{
@@ -1956,6 +2049,86 @@ export declare const notificationRulesCapability: {
1956
2049
  }, z.core.$strip>;
1957
2050
  }, z.core.$strip>>;
1958
2051
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
2052
+ /**
2053
+ * Snooze windows currently in effect, plus any whose digest has not yet
2054
+ * gone out. `caller: 'required'`: a user sees their OWN windows and the
2055
+ * global ones that silence them, never another person's private silence.
2056
+ * An admin sees every window — a household-wide silence is exactly the
2057
+ * thing an operator has to be able to find and cancel.
2058
+ */
2059
+ readonly listSnoozes: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
2060
+ snoozes: z.ZodArray<z.ZodObject<{
2061
+ id: z.ZodString;
2062
+ userId: z.ZodString;
2063
+ scope: z.ZodEnum<{
2064
+ device: "device";
2065
+ all: "all";
2066
+ rule: "rule";
2067
+ }>;
2068
+ ruleId: z.ZodOptional<z.ZodString>;
2069
+ deviceId: z.ZodOptional<z.ZodNumber>;
2070
+ startedAt: z.ZodNumber;
2071
+ expiresAt: z.ZodNumber;
2072
+ global: z.ZodBoolean;
2073
+ summary: z.ZodBoolean;
2074
+ digestSentAt: z.ZodOptional<z.ZodNumber>;
2075
+ }, z.core.$strip>>;
2076
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind> & {
2077
+ readonly caller: "required";
2078
+ };
2079
+ /**
2080
+ * Open a window. `userId` is stamped from the caller; a GLOBAL window is
2081
+ * permission-checked server-side (the rule's `snoozeAllowGlobal` for a
2082
+ * rule-scoped one, admin for a camera or the whole feed) — a client asking
2083
+ * for one it may not have is rejected, never silently downgraded, because
2084
+ * a snooze the operator believes is in effect and is not is the same
2085
+ * failure as one they cannot end.
2086
+ */
2087
+ readonly createSnooze: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
2088
+ snooze: z.ZodObject<{
2089
+ scope: z.ZodEnum<{
2090
+ device: "device";
2091
+ all: "all";
2092
+ rule: "rule";
2093
+ }>;
2094
+ ruleId: z.ZodOptional<z.ZodString>;
2095
+ deviceId: z.ZodOptional<z.ZodNumber>;
2096
+ durationMinutes: z.ZodNumber;
2097
+ global: z.ZodOptional<z.ZodBoolean>;
2098
+ summary: z.ZodOptional<z.ZodBoolean>;
2099
+ }, z.core.$strip>;
2100
+ }, z.core.$strip>, z.ZodObject<{
2101
+ snooze: z.ZodObject<{
2102
+ id: z.ZodString;
2103
+ userId: z.ZodString;
2104
+ scope: z.ZodEnum<{
2105
+ device: "device";
2106
+ all: "all";
2107
+ rule: "rule";
2108
+ }>;
2109
+ ruleId: z.ZodOptional<z.ZodString>;
2110
+ deviceId: z.ZodOptional<z.ZodNumber>;
2111
+ startedAt: z.ZodNumber;
2112
+ expiresAt: z.ZodNumber;
2113
+ global: z.ZodBoolean;
2114
+ summary: z.ZodBoolean;
2115
+ digestSentAt: z.ZodOptional<z.ZodNumber>;
2116
+ }, z.core.$strip>;
2117
+ }, z.core.$strip>, "mutation"> & {
2118
+ readonly caller: "required";
2119
+ };
2120
+ /**
2121
+ * End a window NOW. The digest still goes out (what was hidden while it
2122
+ * was open is still what the operator missed); only the silence stops.
2123
+ * A user may cancel their own; an admin may cancel any.
2124
+ */
2125
+ readonly cancelSnooze: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
2126
+ snoozeId: z.ZodString;
2127
+ }, z.core.$strip>, z.ZodObject<{
2128
+ success: z.ZodLiteral<true>;
2129
+ }, z.core.$strip>, "mutation"> & {
2130
+ readonly caller: "required";
2131
+ };
1959
2132
  };
1960
2133
  };
1961
2134
  export type INotificationRulesProvider = InferProvider<typeof notificationRulesCapability>;
@@ -421,6 +421,7 @@ export declare const streamBrokerCapability: {
421
421
  }>>;
422
422
  maxWidth: z.ZodDefault<z.ZodNumber>;
423
423
  fps: z.ZodDefault<z.ZodNumber>;
424
+ speed: z.ZodDefault<z.ZodNumber>;
424
425
  }, z.core.$strip>, z.ZodObject<{
425
426
  base64: z.ZodString;
426
427
  mime: z.ZodString;
@@ -56,6 +56,26 @@ export declare enum EventCategory {
56
56
  * countdown on the Addons page row, NOT persisted as an alert.
57
57
  */
58
58
  AddonRetryScheduled = "addon.retry-scheduled",
59
+ /**
60
+ * A liveness invariant of this node is false — it has no devices, every
61
+ * camera is offline, or a camera that was recording has stopped producing
62
+ * segments. Emitted by the `liveness-monitor` builtin, once per fault (the
63
+ * `findingId` is stable across ticks), only after its boot grace period.
64
+ * AlertCenter raises a persistent operator-visible alert.
65
+ *
66
+ * It exists because on 2026-08-03 the hub ran four hours with zero devices
67
+ * and zero recordings while every surface stayed quiet.
68
+ *
69
+ * Payload: `{ findingId, severity, title, message, deviceId? }`.
70
+ */
71
+ SystemLivenessFailed = "system.liveness-failed",
72
+ /**
73
+ * A previously reported liveness fault is true again. AlertCenter dismisses
74
+ * the matching `SystemLivenessFailed` alert.
75
+ *
76
+ * Payload: `{ findingId }`.
77
+ */
78
+ SystemLivenessRecovered = "system.liveness-recovered",
59
79
  /**
60
80
  * Monitor is attempting to reload a failed addon NOW. UI uses this
61
81
  * to show a spinner during the retry attempt. Same transient nature
package/dist/enums.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_event_category = require("./event-category-39bpf1r_.js");
2
+ const require_event_category = require("./event-category-BE4PDZ_3.js");
3
3
  //#region src/enums/event-source-type.ts
4
4
  var EventSourceType = /* @__PURE__ */ function(EventSourceType) {
5
5
  EventSourceType["Addon"] = "addon";
package/dist/enums.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { t as EventCategory } from "./event-category-Bz24uP1U.mjs";
1
+ import { t as EventCategory } from "./event-category-41fKf-q9.mjs";
2
2
  //#region src/enums/event-source-type.ts
3
3
  var EventSourceType = /* @__PURE__ */ function(EventSourceType) {
4
4
  EventSourceType["Addon"] = "addon";
@@ -58,6 +58,26 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
58
58
  */
59
59
  EventCategory["AddonRetryScheduled"] = "addon.retry-scheduled";
60
60
  /**
61
+ * A liveness invariant of this node is false — it has no devices, every
62
+ * camera is offline, or a camera that was recording has stopped producing
63
+ * segments. Emitted by the `liveness-monitor` builtin, once per fault (the
64
+ * `findingId` is stable across ticks), only after its boot grace period.
65
+ * AlertCenter raises a persistent operator-visible alert.
66
+ *
67
+ * It exists because on 2026-08-03 the hub ran four hours with zero devices
68
+ * and zero recordings while every surface stayed quiet.
69
+ *
70
+ * Payload: `{ findingId, severity, title, message, deviceId? }`.
71
+ */
72
+ EventCategory["SystemLivenessFailed"] = "system.liveness-failed";
73
+ /**
74
+ * A previously reported liveness fault is true again. AlertCenter dismisses
75
+ * the matching `SystemLivenessFailed` alert.
76
+ *
77
+ * Payload: `{ findingId }`.
78
+ */
79
+ EventCategory["SystemLivenessRecovered"] = "system.liveness-recovered";
80
+ /**
61
81
  * Monitor is attempting to reload a failed addon NOW. UI uses this
62
82
  * to show a spinner during the retry attempt. Same transient nature
63
83
  * as AddonRetryScheduled.
@@ -58,6 +58,26 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
58
58
  */
59
59
  EventCategory["AddonRetryScheduled"] = "addon.retry-scheduled";
60
60
  /**
61
+ * A liveness invariant of this node is false — it has no devices, every
62
+ * camera is offline, or a camera that was recording has stopped producing
63
+ * segments. Emitted by the `liveness-monitor` builtin, once per fault (the
64
+ * `findingId` is stable across ticks), only after its boot grace period.
65
+ * AlertCenter raises a persistent operator-visible alert.
66
+ *
67
+ * It exists because on 2026-08-03 the hub ran four hours with zero devices
68
+ * and zero recordings while every surface stayed quiet.
69
+ *
70
+ * Payload: `{ findingId, severity, title, message, deviceId? }`.
71
+ */
72
+ EventCategory["SystemLivenessFailed"] = "system.liveness-failed";
73
+ /**
74
+ * A previously reported liveness fault is true again. AlertCenter dismisses
75
+ * the matching `SystemLivenessFailed` alert.
76
+ *
77
+ * Payload: `{ findingId }`.
78
+ */
79
+ EventCategory["SystemLivenessRecovered"] = "system.liveness-recovered";
80
+ /**
61
81
  * Monitor is attempting to reload a failed addon NOW. UI uses this
62
82
  * to show a spinner during the retry attempt. Same transient nature
63
83
  * as AddonRetryScheduled.
@@ -4326,6 +4326,27 @@ export type AppRouter = TrpcCoreRouter<{
4326
4326
  output: z.infer<typeof notificationRulesCapability.methods.getHistory.output>;
4327
4327
  meta: object;
4328
4328
  }>;
4329
+ listSnoozes: TRPCQueryProcedure<{
4330
+ input: {
4331
+ [x: string]: unknown;
4332
+ } & z.input<typeof notificationRulesCapability.methods.listSnoozes.input>;
4333
+ output: z.infer<typeof notificationRulesCapability.methods.listSnoozes.output>;
4334
+ meta: object;
4335
+ }>;
4336
+ createSnooze: TRPCMutationProcedure<{
4337
+ input: {
4338
+ [x: string]: unknown;
4339
+ } & z.input<typeof notificationRulesCapability.methods.createSnooze.input>;
4340
+ output: z.infer<typeof notificationRulesCapability.methods.createSnooze.output>;
4341
+ meta: object;
4342
+ }>;
4343
+ cancelSnooze: TRPCMutationProcedure<{
4344
+ input: {
4345
+ [x: string]: unknown;
4346
+ } & z.input<typeof notificationRulesCapability.methods.cancelSnooze.input>;
4347
+ output: z.infer<typeof notificationRulesCapability.methods.cancelSnooze.output>;
4348
+ meta: object;
4349
+ }>;
4329
4350
  }>>;
4330
4351
  notifier: TRPCBuiltRouter<{
4331
4352
  ctx: TrpcContext;
@@ -49,6 +49,7 @@ import type { motionDetectionCapability } from '../capabilities/motion-detection
49
49
  import type { motionTriggerCapability } from '../capabilities/motion-trigger.cap.js';
50
50
  import type { motionZonesCapability } from '../capabilities/motion-zones.cap.js';
51
51
  import type { nativeObjectDetectionCapability } from '../capabilities/native-object-detection.cap.js';
52
+ import type { notificationRulesCapability } from '../capabilities/notification-rules.cap.js';
52
53
  import type { notifierCapability } from '../capabilities/notifier.cap.js';
53
54
  import type { numericSensorCapability } from '../capabilities/numeric-sensor.cap.js';
54
55
  import type { osdCapability } from '../capabilities/osd.cap.js';
@@ -230,6 +231,7 @@ export interface DeviceProxy {
230
231
  readonly motionTrigger?: InferDeviceProxyCap<typeof motionTriggerCapability>;
231
232
  readonly motionZones?: InferDeviceProxyCap<typeof motionZonesCapability>;
232
233
  readonly nativeObjectDetection?: InferDeviceProxyCap<typeof nativeObjectDetectionCapability>;
234
+ readonly notificationRules?: InferDeviceProxyCap<typeof notificationRulesCapability>;
233
235
  readonly notifier?: InferDeviceProxyCap<typeof notifierCapability>;
234
236
  readonly numericSensor?: InferDeviceProxyCap<typeof numericSensorCapability>;
235
237
  readonly osd?: InferDeviceProxyCap<typeof osdCapability>;
@@ -6,7 +6,7 @@
6
6
  * scope+access check inside `protectedProcedure` (see
7
7
  * `server/backend/src/api/trpc/trpc.middleware.ts`).
8
8
  *
9
- * Coverage: 841 method paths across 118 capabilities.
9
+ * Coverage: 844 method paths across 118 capabilities.
10
10
  */
11
11
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
12
12
  export interface MethodAccessRecord {
@@ -26,7 +26,6 @@ import type { networkAccessCapability } from '../capabilities/network-access.cap
26
26
  import type { networkQualityCapability } from '../capabilities/network-quality.cap.js';
27
27
  import type { nodesCapability } from '../capabilities/nodes.cap.js';
28
28
  import type { notificationOutputCapability } from '../capabilities/notification-output.cap.js';
29
- import type { notificationRulesCapability } from '../capabilities/notification-rules.cap.js';
30
29
  import type { pipelineExecutorCapability } from '../capabilities/pipeline-executor.cap.js';
31
30
  import type { pipelineOrchestratorCapability } from '../capabilities/pipeline-orchestrator.cap.js';
32
31
  import type { pipelineRunnerCapability } from '../capabilities/pipeline-runner.cap.js';
@@ -77,7 +76,6 @@ export interface SystemProxy {
77
76
  readonly networkQuality: Pick<InferProvider<typeof networkQualityCapability>, 'getAllStats'>;
78
77
  readonly nodes: Pick<InferProvider<typeof nodesCapability>, 'topology' | 'deployAddon' | 'undeployAddon' | 'restartAddon' | 'restartProcess' | 'restartNode' | 'shutdownNode' | 'renameNode' | 'clusterAddonStatus' | 'getCapUsageGraph' | 'getNodeAddons' | 'setProcessLogLevel' | 'executeQuery'>;
79
78
  readonly notificationOutput: Pick<InferProvider<typeof notificationOutputCapability>, 'listTargetKinds' | 'listTargets' | 'discoverTargets' | 'send' | 'testTarget' | 'upsertTarget' | 'deleteTarget' | 'setTargetEnabled'>;
80
- readonly notificationRules: Pick<InferProvider<typeof notificationRulesCapability>, 'listRules' | 'getRule' | 'createRule' | 'updateRule' | 'deleteRule' | 'setRuleEnabled' | 'testRule' | 'getConditionCatalog' | 'getHistory'>;
81
79
  readonly pipelineExecutor: Pick<InferProvider<typeof pipelineExecutorCapability>, 'getAvailableEngines' | 'getSelectedEngine' | 'getDefaultSteps' | 'getEngineProvisioning' | 'getVideoPipelineSteps' | 'setVideoPipelineSteps' | 'clearDeviceOverrides' | 'getSchema' | 'getGlobalSteps' | 'getGlobalPipelineConfig' | 'getOrchestratorConfigSchema' | 'validatePipeline' | 'listTemplates' | 'saveTemplate' | 'updateTemplate' | 'deleteTemplate' | 'getCapabilities' | 'getAddonModels' | 'downloadModel' | 'deleteModel' | 'cacheFrameInPool' | 'inferCached' | 'uncacheFrame' | 'getEffectiveTuning' | 'listLoadedEngines' | 'spinEngine' | 'killEngine' | 'listReferenceImages' | 'getReferenceImage' | 'getReferenceAudioFiles' | 'getReferenceAudio' | 'getAudioCapabilities' | 'runAudioTest' | 'getDetectionConfigSchema'>;
82
80
  readonly pipelineOrchestrator: Pick<InferProvider<typeof pipelineOrchestratorCapability>, 'rebalance' | 'getPipelineAssignments' | 'getAgentLoad' | 'getGlobalMetrics' | 'getCapabilityBindings' | 'setCapabilityBinding' | 'getIngestOwner' | 'getAudioNodeLoad' | 'getAgentSettings' | 'listAgentSettings' | 'removeAgentSettings' | 'setAgentMaxCameras' | 'setAgentDetectWeight' | 'setAgentCapabilities' | 'setAgentReachableHost' | 'setAgentInferenceDevices' | 'getNodeInferenceDevices' | 'resetNodePipelineDefaults' | 'getCameraStatuses' | 'listTemplates' | 'saveTemplate' | 'updateTemplate' | 'deleteTemplate'>;
83
81
  readonly pipelineRunner: Pick<InferProvider<typeof pipelineRunnerCapability>, 'attachCamera' | 'reportMotion' | 'getLocalLoad' | 'getLocalMetrics' | 'getAllCameraMetrics' | 'getLocalCameras' | 'getNativeCrop'>;