@camstack/addon-osd-manager 0.1.259 → 0.1.261

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (18) hide show
  1. package/dist/{MotionZonesSettings-DAu-wwAg.mjs → MotionZonesSettings-DRzVtBFW.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-B5hdg0aq.mjs → PrivacyMaskSettings-C7wUecND.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-C1EXCUMa.mjs → SceneMonitorEditor-BkIBeRgq.mjs} +3 -3
  4. package/dist/_stub.js +23 -12
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-DJs_KsVD.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-B4ntcc3T.mjs} +4 -4
  6. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CWzPWMLE.mjs +26 -0
  7. package/dist/{hostInit-aoIP4B4C.mjs → hostInit-BEL9T-ZE.mjs} +3 -3
  8. package/dist/index.js +273 -61
  9. package/dist/index.mjs +273 -61
  10. package/dist/{player-overlays-B3g0-FJ_.mjs → player-overlays-DzjfQTb4.mjs} +1 -1
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-CWtvzc-D.mjs → responsive-DXxTiZk_.mjs} +1 -1
  13. package/dist/{scene-monitor-copy-BMqx3tf5.mjs → scene-monitor-copy-BqnDA31r.mjs} +1 -1
  14. package/dist/{square-VrCirori.mjs → square-DGRrNJim.mjs} +1 -1
  15. package/dist/{trash-2-CUoGUhr8.mjs → trash-2-Cm4a_frA.mjs} +1 -1
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-B10jZ1JA.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-Byjybpdl.mjs} +1 -1
  17. package/package.json +1 -1
  18. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-93IUAGBu.mjs +0 -26
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- //#region ../types/dist/event-category-DOl51-Ij.mjs
5
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
6
6
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
7
7
  EventCategory["SystemBoot"] = "system.boot";
8
8
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -319,6 +319,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
319
319
  */
320
320
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
321
321
  /**
322
+ * A camera's motion source has fired constantly with no subject for an hour
323
+ * (motion duty or session count over the bar, zero detections) — it is not
324
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
325
+ * {@link PipelineMotionCalm}.
326
+ */
327
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
328
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
329
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
330
+ /**
322
331
  * Per-camera pipeline config was mutated by the orchestrator
323
332
  * (3-level settings change via `setAgentAddonDefaults` /
324
333
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -690,6 +699,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
690
699
  EventCategory["BackupRestored"] = "backup.restored";
691
700
  EventCategory["NotificationDispatched"] = "notification.dispatched";
692
701
  EventCategory["NotificationFailed"] = "notification.failed";
702
+ /**
703
+ * A notification rule that cannot work (D905): its stored row does not load,
704
+ * or it still names a device / delivery target the prune CONFIRMED deleted.
705
+ * One edge per rule per distinct set of reasons; never on an unanswered read.
706
+ */
707
+ EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
708
+ /** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
709
+ EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
693
710
  EventCategory["DeviceUpdated"] = "device.updated";
694
711
  /**
695
712
  * Transport-level connectivity. Emitted by the device driver when
@@ -5417,7 +5434,7 @@ var ZodIssueCode = {
5417
5434
  var ZodFirstPartyTypeKind;
5418
5435
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5419
5436
  //#endregion
5420
- //#region ../types/dist/sleep-_sV1BE2f.mjs
5437
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5421
5438
  /**
5422
5439
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5423
5440
  * window to float samples (D455).
@@ -7879,7 +7896,7 @@ var EntryDescriptorSchema = object({
7879
7896
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
7880
7897
  fields: record(string(), unknown())
7881
7898
  }).strict();
7882
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
7899
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
7883
7900
  var RecordKindDeclarationSchema = object({
7884
7901
  database: _enum(RECORD_DATABASES).default("settings"),
7885
7902
  class: _enum(RECORD_CLASSES),
@@ -7898,14 +7915,6 @@ var RecordKindDeclarationSchema = object({
7898
7915
  secretPaths: array(string().min(1)).default([]),
7899
7916
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
7900
7917
  secretArrayKeys: record(string(), string()).default({}),
7901
- /**
7902
- * RETIRED (D900): the legacy table a kind adopted from during the records
7903
- * migration. Nothing declares it any more and nothing reads it; the schema
7904
- * still ACCEPTS it because the catalog rows the migration wrote carry it
7905
- * (an orphaned kind is never redeclared) and an addon built before the
7906
- * removal still sends it. Never set it.
7907
- */
7908
- adoptsFrom: string().min(1).optional(),
7909
7918
  /** Kinds that must agree through `transact` sit in one file under one family name. */
7910
7919
  transactFamily: string().min(1).optional(),
7911
7920
  entry: EntryDescriptorSchema.optional()
@@ -12569,17 +12578,6 @@ object({
12569
12578
  createdAt: number(),
12570
12579
  updatedAt: number()
12571
12580
  });
12572
- object({
12573
- id: string(),
12574
- label: string(),
12575
- isAdmin: boolean().default(false),
12576
- allowedProviders: AllowedProviderSchema,
12577
- allowedDevices: AllowedDevicesSchema,
12578
- tokenHash: string(),
12579
- tokenPrefix: string(),
12580
- createdAt: number(),
12581
- lastUsedAt: number().optional()
12582
- });
12583
12581
  object({
12584
12582
  id: string(),
12585
12583
  userId: string(),
@@ -16472,16 +16470,36 @@ var RecordKindStateSchema = _enum([
16472
16470
  var DeclareKindResultSchema = object({
16473
16471
  kindId: number().int(),
16474
16472
  state: RecordKindStateSchema,
16475
- createdIndexes: array(string()),
16476
- /**
16477
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
16478
- * it stays on the wire, null, because an addon built before the removal reads
16479
- * an ABSENT field as "adoption pending" and refuses to start.
16480
- */
16481
- adoptionPending: _null()
16473
+ createdIndexes: array(string())
16482
16474
  });
16483
16475
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
16484
16476
  var SecretRefsList = array(string());
16477
+ /**
16478
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
16479
+ * All ops of one call share ONE database file and ONE `transactFamily`.
16480
+ */
16481
+ var RecordTransactOpSchema = discriminatedUnion("op", [
16482
+ object({
16483
+ op: literal("put"),
16484
+ kind: RecordKindNameSchema,
16485
+ record: RecordInputSchema,
16486
+ ifRev: number().int().min(0).optional()
16487
+ }),
16488
+ object({
16489
+ op: literal("patch"),
16490
+ kind: RecordKindNameSchema,
16491
+ id: RecordIdSchema,
16492
+ data: RecordBodySchema,
16493
+ at: number().int().nullable().optional(),
16494
+ expiresAt: number().int().nullable().optional(),
16495
+ ifRev: number().int().min(1).optional()
16496
+ }),
16497
+ object({
16498
+ op: literal("delete"),
16499
+ kind: RecordKindNameSchema,
16500
+ id: RecordIdSchema
16501
+ })
16502
+ ]);
16485
16503
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
16486
16504
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
16487
16505
  kind: "mutation",
@@ -16588,6 +16606,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
16588
16606
  }), {
16589
16607
  kind: "mutation",
16590
16608
  auth: "admin"
16609
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
16610
+ results: array(object({
16611
+ rev: number().int().nullable(),
16612
+ deleted: boolean()
16613
+ })),
16614
+ releasedRefs: SecretRefsList,
16615
+ secretRefs: SecretRefsList
16616
+ }), {
16617
+ kind: "mutation",
16618
+ auth: "admin"
16591
16619
  }), method(object({
16592
16620
  deviceId: number().int(),
16593
16621
  kinds: array(RecordKindNameSchema).optional()
@@ -41991,9 +42019,13 @@ var NcSystemEventKindSchema = _enum([
41991
42019
  "node-updating",
41992
42020
  "node-inference-unavailable",
41993
42021
  "detection-blind",
42022
+ "motion-noisy",
42023
+ "motion-calm",
41994
42024
  "recording-stalled",
41995
42025
  "recording-healthy",
41996
42026
  "recording-degraded",
42027
+ "device-attention-required",
42028
+ "device-attention-resolved",
41997
42029
  "storage-location-low",
41998
42030
  "storage-location-critical",
41999
42031
  "storage-location-ok",
@@ -42017,6 +42049,8 @@ var NcSystemEventKindSchema = _enum([
42017
42049
  "alert-critical",
42018
42050
  "alert-error",
42019
42051
  "alert-critical-resolved",
42052
+ "rule-broken",
42053
+ "rule-repaired",
42020
42054
  "camera-online",
42021
42055
  "camera-offline",
42022
42056
  "camera-disabled",
@@ -43460,6 +43494,14 @@ var NC_CONDITION_CATALOG = [
43460
43494
  value: "detection-blind",
43461
43495
  label: "Camera detecting nothing"
43462
43496
  },
43497
+ {
43498
+ value: "motion-noisy",
43499
+ label: "Camera motion constant, no subject"
43500
+ },
43501
+ {
43502
+ value: "motion-calm",
43503
+ label: "Camera motion calm again"
43504
+ },
43463
43505
  {
43464
43506
  value: "recording-stalled",
43465
43507
  label: "Recording stalled"
@@ -43472,6 +43514,14 @@ var NC_CONDITION_CATALOG = [
43472
43514
  value: "recording-degraded",
43473
43515
  label: "Recording degraded (restart storm)"
43474
43516
  },
43517
+ {
43518
+ value: "device-attention-required",
43519
+ label: "Device needs attention"
43520
+ },
43521
+ {
43522
+ value: "device-attention-resolved",
43523
+ label: "Device attention resolved"
43524
+ },
43475
43525
  {
43476
43526
  value: "storage-location-low",
43477
43527
  label: "Storage location low"
@@ -43556,6 +43606,14 @@ var NC_CONDITION_CATALOG = [
43556
43606
  value: "alert-critical-resolved",
43557
43607
  label: "Critical alert resolved"
43558
43608
  },
43609
+ {
43610
+ value: "rule-broken",
43611
+ label: "Notification rule broken"
43612
+ },
43613
+ {
43614
+ value: "rule-repaired",
43615
+ label: "Notification rule repaired"
43616
+ },
43559
43617
  {
43560
43618
  value: "alarm-arm-refused",
43561
43619
  label: "Alarm arm refused"
@@ -55028,6 +55086,16 @@ object({
55028
55086
  powerState: string().nullable(),
55029
55087
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
55030
55088
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55089
+ /**
55090
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
55091
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
55092
+ * when none is reported. A cleared reminder is not an unknown one.
55093
+ */
55094
+ filterCleaningDue: boolean().nullable(),
55095
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
55096
+ machineCareDue: boolean().nullable(),
55097
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
55098
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
55031
55099
  /** Option states: null when the appliance does not expose the option or has not said. */
55032
55100
  halfLoad: boolean().nullable(),
55033
55101
  hygienePlus: boolean().nullable(),
@@ -61707,16 +61775,6 @@ var UpdateUserInputSchema = object({
61707
61775
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61708
61776
  scopes: array(TokenScopeSchema).optional()
61709
61777
  });
61710
- var ApiKeySummarySchema = object({
61711
- id: string(),
61712
- label: string(),
61713
- isAdmin: boolean().default(false),
61714
- allowedProviders: union([array(string()), literal("*")]).optional(),
61715
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61716
- tokenPrefix: string(),
61717
- createdAt: number(),
61718
- lastUsedAt: number().optional()
61719
- });
61720
61778
  var OauthSessionSummarySchema = object({
61721
61779
  id: string(),
61722
61780
  userId: string(),
@@ -61738,8 +61796,7 @@ var TotpStatusSchema = object({
61738
61796
  confirmedAt: number().nullable()
61739
61797
  });
61740
61798
  /**
61741
- * user-management — singleton capability for user accounts and the
61742
- * legacy API-key rows.
61799
+ * user-management — singleton capability for user accounts.
61743
61800
  *
61744
61801
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61745
61802
  * — the subset check on `setUserScopes` is moot
@@ -61795,10 +61852,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61795
61852
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61796
61853
  kind: "mutation",
61797
61854
  access: "view"
61798
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61799
- kind: "mutation",
61800
- auth: "admin",
61801
- access: "delete"
61802
61855
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61803
61856
  kind: "mutation",
61804
61857
  auth: "admin",
@@ -69627,6 +69680,12 @@ Object.freeze({
69627
69680
  addonId: null,
69628
69681
  access: "view"
69629
69682
  },
69683
+ "records.transact": {
69684
+ capName: "records",
69685
+ capScope: "system",
69686
+ addonId: null,
69687
+ access: "create"
69688
+ },
69630
69689
  "sceneMonitor.captureReference": {
69631
69690
  capName: "scene-monitor",
69632
69691
  capScope: "device",
@@ -70959,12 +71018,6 @@ Object.freeze({
70959
71018
  addonId: null,
70960
71019
  access: "view"
70961
71020
  },
70962
- "userManagement.listApiKeys": {
70963
- capName: "user-management",
70964
- capScope: "system",
70965
- addonId: null,
70966
- access: "view"
70967
- },
70968
71021
  "userManagement.listExternalIdentities": {
70969
71022
  capName: "user-management",
70970
71023
  capScope: "system",
@@ -71019,12 +71072,6 @@ Object.freeze({
71019
71072
  addonId: null,
71020
71073
  access: "create"
71021
71074
  },
71022
- "userManagement.revokeApiKey": {
71023
- capName: "user-management",
71024
- capScope: "system",
71025
- addonId: null,
71026
- access: "delete"
71027
- },
71028
71075
  "userManagement.revokeOauthSession": {
71029
71076
  capName: "user-management",
71030
71077
  capScope: "system",
@@ -74389,9 +74436,13 @@ new Map(Object.entries({
74389
74436
  "stream-online": "device-events",
74390
74437
  "stream-offline": "device-events",
74391
74438
  "detection-blind": "device-events",
74439
+ "motion-noisy": "device-events",
74440
+ "motion-calm": "device-events",
74392
74441
  "recording-stalled": "device-events",
74393
74442
  "recording-healthy": "device-events",
74394
74443
  "recording-degraded": "device-events",
74444
+ "device-attention-required": "device-events",
74445
+ "device-attention-resolved": "device-events",
74395
74446
  "node-online": "system",
74396
74447
  "node-offline": "system",
74397
74448
  "node-restarting": "system",
@@ -74408,6 +74459,8 @@ new Map(Object.entries({
74408
74459
  "alert-critical": "system",
74409
74460
  "alert-error": "system",
74410
74461
  "alert-critical-resolved": "system",
74462
+ "rule-broken": "system",
74463
+ "rule-repaired": "system",
74411
74464
  "storage-location-low": "system",
74412
74465
  "storage-location-critical": "system",
74413
74466
  "storage-location-ok": "system",
@@ -74472,6 +74525,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74472
74525
  label: "Detecting nothing",
74473
74526
  kinds: ["detection-blind"]
74474
74527
  },
74528
+ {
74529
+ id: "motion-noise",
74530
+ family: "device-events",
74531
+ label: "Motion without a subject",
74532
+ kinds: ["motion-noisy", "motion-calm"]
74533
+ },
74475
74534
  {
74476
74535
  id: "recording",
74477
74536
  family: "device-events",
@@ -74482,6 +74541,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74482
74541
  "recording-degraded"
74483
74542
  ]
74484
74543
  },
74544
+ {
74545
+ id: "device-attention",
74546
+ family: "device-events",
74547
+ label: "Needs attention",
74548
+ kinds: ["device-attention-required", "device-attention-resolved"]
74549
+ },
74485
74550
  {
74486
74551
  id: "nodes",
74487
74552
  family: "system",
@@ -74542,6 +74607,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74542
74607
  "alert-critical-resolved"
74543
74608
  ]
74544
74609
  },
74610
+ {
74611
+ id: "rule-health",
74612
+ family: "system",
74613
+ label: "Notification rules",
74614
+ kinds: ["rule-broken", "rule-repaired"]
74615
+ },
74545
74616
  {
74546
74617
  id: "alarm",
74547
74618
  family: "alarm",
@@ -74695,6 +74766,7 @@ var ALERT_EPISODE = [
74695
74766
  "alert-error",
74696
74767
  "alert-critical-resolved"
74697
74768
  ];
74769
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74698
74770
  var UPDATES = [
74699
74771
  "addon-update-available",
74700
74772
  "server-update-available",
@@ -74724,9 +74796,12 @@ var DEVICE_EVENTS = [
74724
74796
  "stream-online",
74725
74797
  "stream-offline",
74726
74798
  "detection-blind",
74799
+ "motion-noisy",
74800
+ "motion-calm",
74727
74801
  "recording-stalled",
74728
74802
  "recording-healthy",
74729
74803
  "recording-degraded",
74804
+ ...DEVICE_ATTENTION,
74730
74805
  ...ALARM
74731
74806
  ];
74732
74807
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74894,7 +74969,13 @@ var STATE_SUMMARY_VARS = [
74894
74969
  [...RULE_TEXT],
74895
74970
  [...RULE_TEXT],
74896
74971
  [...RULE_TEXT],
74897
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74972
+ [...RULE_TEXT],
74973
+ [...RULE_TEXT],
74974
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74975
+ [...RULE_TEXT],
74976
+ [...RULE_TEXT],
74977
+ [...RULE_TEXT],
74978
+ [...RULE_TEXT],
74898
74979
  [...RULE_TEXT],
74899
74980
  [...RULE_TEXT],
74900
74981
  [...RULE_TEXT],
@@ -74912,11 +74993,11 @@ var STATE_SUMMARY_VARS = [
74912
74993
  [...RULE_TEXT],
74913
74994
  [...RULE_TEXT],
74914
74995
  [...RULE_TEXT],
74996
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74915
74997
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74998
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74916
74999
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74917
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74918
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74919
- ([...RULE_TEXT], [...ALERT_EPISODE]),
75000
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74920
75001
  [...RULE_TEXT],
74921
75002
  [...RULE_TEXT],
74922
75003
  [...RULE_TEXT],
@@ -74937,6 +75018,125 @@ var STATE_SUMMARY_VARS = [
74937
75018
  [...RULE_TEXT],
74938
75019
  ...STATE_SUMMARY_VARS
74939
75020
  ];
75021
+ new Map([
75022
+ {
75023
+ id: "device-connectivity",
75024
+ family: "device-events",
75025
+ label: "Device connectivity (offline / back online)",
75026
+ bad: ["device-offline"],
75027
+ recovery: ["device-online"],
75028
+ snapshotLabel: "Devices offline now",
75029
+ snapshotSection: "device-state"
75030
+ },
75031
+ {
75032
+ id: "device-switch",
75033
+ family: "device-events",
75034
+ label: "Device switched off / back on",
75035
+ bad: ["device-disabled"],
75036
+ recovery: ["device-enabled"],
75037
+ snapshotLabel: "Devices switched off now",
75038
+ snapshotSection: "device-state"
75039
+ },
75040
+ {
75041
+ id: "stream-connectivity",
75042
+ family: "device-events",
75043
+ label: "Stream connectivity (offline / back online)",
75044
+ bad: ["stream-offline"],
75045
+ recovery: ["stream-online"],
75046
+ snapshotLabel: "Streams offline now",
75047
+ snapshotSection: "streams"
75048
+ },
75049
+ {
75050
+ id: "battery",
75051
+ family: "device-events",
75052
+ label: "Battery (low / back to normal)",
75053
+ bad: ["device-battery-low"],
75054
+ recovery: ["device-battery-normal"],
75055
+ snapshotLabel: "Batteries low now",
75056
+ snapshotSection: "battery"
75057
+ },
75058
+ {
75059
+ id: "consumables",
75060
+ family: "device-events",
75061
+ label: "Consumables (low / replaced)",
75062
+ bad: ["device-consumable-low"],
75063
+ recovery: ["device-consumable-normal"],
75064
+ snapshotLabel: "Consumables low now",
75065
+ snapshotSection: "consumables"
75066
+ },
75067
+ {
75068
+ id: "tanks",
75069
+ family: "device-events",
75070
+ label: "Tanks (low or full / back to normal)",
75071
+ bad: ["device-tank-low", "device-tank-full"],
75072
+ recovery: ["device-tank-normal"],
75073
+ snapshotLabel: "Tanks low or full now",
75074
+ snapshotSection: "tanks"
75075
+ },
75076
+ {
75077
+ id: "motion-noise",
75078
+ family: "device-events",
75079
+ label: "Motion without a subject (constant / calm again)",
75080
+ bad: ["motion-noisy"],
75081
+ recovery: ["motion-calm"],
75082
+ snapshotLabel: "Cameras with constant motion now",
75083
+ snapshotSection: null
75084
+ },
75085
+ {
75086
+ id: "recording-health",
75087
+ family: "device-events",
75088
+ label: "Recording health (stalled or degraded / recording again)",
75089
+ bad: ["recording-stalled", "recording-degraded"],
75090
+ recovery: ["recording-healthy"],
75091
+ snapshotLabel: "Recordings stalled now",
75092
+ snapshotSection: null
75093
+ },
75094
+ {
75095
+ id: "device-attention",
75096
+ family: "device-events",
75097
+ label: "Device needs attention (raised / resolved)",
75098
+ bad: ["device-attention-required"],
75099
+ recovery: ["device-attention-resolved"],
75100
+ snapshotLabel: "Devices needing attention now",
75101
+ snapshotSection: null
75102
+ },
75103
+ {
75104
+ id: "node-connectivity",
75105
+ family: "system",
75106
+ label: "Node connectivity (offline / back online)",
75107
+ bad: ["node-offline"],
75108
+ recovery: ["node-online"],
75109
+ snapshotLabel: "Nodes offline now",
75110
+ snapshotSection: "nodes"
75111
+ },
75112
+ {
75113
+ id: "storage-space",
75114
+ family: "system",
75115
+ label: "Storage space (low or critical / ok again)",
75116
+ bad: ["storage-location-low", "storage-location-critical"],
75117
+ recovery: ["storage-location-ok"],
75118
+ snapshotLabel: "Storage locations low now",
75119
+ snapshotSection: null
75120
+ },
75121
+ {
75122
+ id: "critical-alerts",
75123
+ family: "system",
75124
+ label: "Critical alerts (raised / resolved)",
75125
+ bad: ["alert-critical"],
75126
+ recovery: ["alert-critical-resolved"],
75127
+ snapshotLabel: "Critical alerts open now",
75128
+ snapshotSection: null
75129
+ },
75130
+ {
75131
+ id: "rule-health",
75132
+ family: "system",
75133
+ label: "Rule health (broken / repaired)",
75134
+ bad: ["rule-broken"],
75135
+ recovery: ["rule-repaired"],
75136
+ snapshotLabel: "Notification rules broken now",
75137
+ snapshotSection: null
75138
+ }
75139
+ ].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
74940
75140
  new Set([
74941
75141
  "disarmed",
74942
75142
  "armed_home",
@@ -77102,6 +77302,18 @@ var CAP_STATE_LEAVES = Object.freeze({
77102
77302
  "empty"
77103
77303
  ]
77104
77304
  },
77305
+ {
77306
+ "path": "filterCleaningDue",
77307
+ "valueType": "boolean"
77308
+ },
77309
+ {
77310
+ "path": "machineCareDue",
77311
+ "valueType": "boolean"
77312
+ },
77313
+ {
77314
+ "path": "machineCareRemainingRuns",
77315
+ "valueType": "number"
77316
+ },
77105
77317
  {
77106
77318
  "path": "halfLoad",
77107
77319
  "valueType": "boolean"