@camstack/addon-provider-rtsp 1.2.128 → 1.2.129

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 (3) hide show
  1. package/dist/addon.js +264 -44
  2. package/dist/addon.mjs +264 -44
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -23,7 +23,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
23
23
  //#endregion
24
24
  let node_net = require("node:net");
25
25
  node_net = __toESM(node_net);
26
- //#region ../types/dist/event-category-BvOFi6PY.mjs
26
+ //#region ../types/dist/event-category-DOl51-Ij.mjs
27
27
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
28
28
  EventCategory["SystemBoot"] = "system.boot";
29
29
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -102,9 +102,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
102
102
  /**
103
103
  * The node's one-shot runner boot check (D877): planned runners against the
104
104
  * process service, `degraded` when any is failed, refused or missing. The
105
- * alert centre turns it into one alert and a direct critical push.
105
+ * alert centre turns it into one critical alert.
106
106
  */
107
107
  EventCategory["SystemRunnerCheck"] = "system.runner-check";
108
+ /**
109
+ * An alert EPISODE opened or closed, emitted by the alert centre for alerts
110
+ * of severity `critical` or `error` (`AlertEpisodePayload`). The alert
111
+ * centre sends no notification of its own: Notification Center turns this
112
+ * into the `alert-critical` / `alert-error` / `alert-critical-resolved`
113
+ * system-event kinds, and reconciles from the alerts store because a bus
114
+ * event may be dropped (D8, D11).
115
+ */
116
+ EventCategory["AlertEpisode"] = "alert.episode";
108
117
  EventCategory["AddonError"] = "addon.error";
109
118
  EventCategory["AddonPageReady"] = "addon.page-ready";
110
119
  EventCategory["AddonWidgetReady"] = "addon.widget-ready";
@@ -5429,7 +5438,7 @@ var ZodIssueCode = {
5429
5438
  var ZodFirstPartyTypeKind;
5430
5439
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5431
5440
  //#endregion
5432
- //#region ../types/dist/sleep-BegKjwUu.mjs
5441
+ //#region ../types/dist/sleep-BxjU_fJM.mjs
5433
5442
  /**
5434
5443
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5435
5444
  * window to float samples (D455).
@@ -13313,7 +13322,14 @@ var AlertSeveritySchema = _enum([
13313
13322
  ]);
13314
13323
  var AlertActionSchema = object({
13315
13324
  label: string(),
13316
- href: string().optional()
13325
+ href: string().optional(),
13326
+ /**
13327
+ * How `href` is followed. Absent / `app`: an admin-ui route (client-side).
13328
+ * `server`: a route the HUB serves (an addon HTTP route such as an OAuth
13329
+ * start) — the browser must leave the SPA with a full navigation, because
13330
+ * the SPA has no such route and would bounce to the home page.
13331
+ */
13332
+ navigation: _enum(["app", "server"]).optional()
13317
13333
  });
13318
13334
  var AlertStatusSchema = _enum([
13319
13335
  "active",
@@ -42029,6 +42045,9 @@ var NcSystemEventKindSchema = _enum([
42029
42045
  "server-updated",
42030
42046
  "export-completed",
42031
42047
  "backup-completed",
42048
+ "alert-critical",
42049
+ "alert-error",
42050
+ "alert-critical-resolved",
42032
42051
  "camera-online",
42033
42052
  "camera-offline",
42034
42053
  "camera-disabled",
@@ -51209,7 +51228,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
51209
51228
  }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
51210
51229
  kind: "mutation",
51211
51230
  auth: "admin"
51212
- }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51231
+ }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
51232
+ clear: boolean(),
51233
+ repointLocationId: string().optional()
51234
+ }), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51213
51235
  kind: "mutation",
51214
51236
  auth: "admin"
51215
51237
  }), method(StorageCleanupInputSchema, object({ jobId: string() }), {
@@ -55473,6 +55495,11 @@ onStatusChanged: { data: object({
55473
55495
  *
55474
55496
  * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
55475
55497
  * provider refreshes the slice on an interval and eagerly after commands.
55498
+ *
55499
+ * UNKNOWN IS NOT OFF. Every field the appliance reports separately is
55500
+ * nullable: `null` means "not known right now" (the appliance has not said,
55501
+ * the link is down, or the description does not carry it) and is never
55502
+ * rendered or exported as `false` / `0`. `availability` says why.
55476
55503
  */
55477
55504
  var DishwasherStateSchema = _enum([
55478
55505
  "idle",
@@ -55482,43 +55509,155 @@ var DishwasherStateSchema = _enum([
55482
55509
  "error",
55483
55510
  "unavailable"
55484
55511
  ]);
55512
+ /**
55513
+ * The appliance's own operation state, uncollapsed. `state` above is the coarse
55514
+ * view for compact surfaces; this is what the appliance said.
55515
+ */
55516
+ var DishwasherOperationStateSchema = _enum([
55517
+ "Inactive",
55518
+ "Ready",
55519
+ "DelayedStart",
55520
+ "Run",
55521
+ "Pause",
55522
+ "ActionRequired",
55523
+ "Finished",
55524
+ "Error",
55525
+ "Aborting"
55526
+ ]);
55527
+ /**
55528
+ * Why fields may be `null`:
55529
+ * - `available` — the link is up and the description is loaded;
55530
+ * - `offline` — the local link is down (values are unknown, not last-known);
55531
+ * - `description-missing` — the link is up but the appliance's description could not
55532
+ * be loaded, so its values cannot be decoded.
55533
+ */
55534
+ var DishwasherAvailabilitySchema = _enum([
55535
+ "available",
55536
+ "offline",
55537
+ "description-missing"
55538
+ ]);
55485
55539
  var DishwasherConsumableLevelSchema = _enum([
55486
55540
  "ok",
55487
55541
  "low",
55488
55542
  "empty"
55489
55543
  ]);
55490
55544
  var DishwasherStatusSchema = object({
55545
+ availability: DishwasherAvailabilitySchema,
55546
+ /** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
55491
55547
  state: DishwasherStateSchema,
55492
- /** Active program id/name, or null when none selected / unknown. */
55548
+ /** The appliance's operation state as reported; null when not known. */
55549
+ operationState: DishwasherOperationStateSchema.nullable(),
55550
+ /** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
55493
55551
  program: string().nullable(),
55494
- /** Program tokens the hardware accepts — drives the UI selector. */
55552
+ /** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
55553
+ selectedProgram: string().nullable(),
55554
+ /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
55495
55555
  availablePrograms: array(string()),
55496
- /** Minutes remaining on the active cycle, or null when not running. */
55497
- remainingMinutes: number().int().nonnegative().nullable(),
55556
+ /** Seconds remaining on the active cycle, or null when not running / not known. */
55557
+ remainingSeconds: number().int().nonnegative().nullable(),
55558
+ /** Seconds the delayed start is set to (time until the cycle starts), or null. */
55559
+ delayedStartSeconds: number().int().nonnegative().nullable(),
55498
55560
  /** Cycle completion 0..100, or null when not applicable. */
55499
55561
  progressPercent: number().min(0).max(100).nullable(),
55500
- /** True when the door is reported open. */
55501
- doorOpen: boolean(),
55502
- /** True when remote start is allowed (door closed, power on, etc.). */
55503
- remoteStartAllowed: boolean(),
55504
- /** Main power / switched-on state. */
55505
- powerOn: boolean(),
55562
+ /** True when the door is reported open; null when the door state is not known. */
55563
+ doorOpen: boolean().nullable(),
55564
+ /** True when the door is latched (locked) during a cycle; null when not reported. */
55565
+ doorLocked: boolean().nullable(),
55566
+ /** True when remote start is allowed (door closed, power on, etc.); null when not known. */
55567
+ remoteStartAllowed: boolean().nullable(),
55568
+ /** True when the appliance accepts remote control now; null when not known. */
55569
+ remoteControlActive: boolean().nullable(),
55570
+ /** True while somebody operates the appliance at its panel; null when not reported. */
55571
+ localControlActive: boolean().nullable(),
55572
+ /** Main power / switched-on state; null when not known. */
55573
+ powerOn: boolean().nullable(),
55574
+ /** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
55575
+ powerState: string().nullable(),
55506
55576
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
55507
55577
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55508
- halfLoad: boolean(),
55509
- hygienePlus: boolean(),
55578
+ /** Option states: null when the appliance does not expose the option or has not said. */
55579
+ halfLoad: boolean().nullable(),
55580
+ hygienePlus: boolean().nullable(),
55510
55581
  /** Extra dry option when the appliance exposes it. */
55511
- extraDry: boolean(),
55582
+ extraDry: boolean().nullable(),
55512
55583
  /** Intensive zone (lower basket) when the appliance exposes it. */
55513
- intensiveZone: boolean(),
55584
+ intensiveZone: boolean().nullable(),
55514
55585
  /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
55515
- varioSpeedPlus: boolean(),
55516
- /** Child lock (controls disabled on the appliance). */
55517
- childLock: boolean(),
55586
+ varioSpeedPlus: boolean().nullable(),
55587
+ /** Child lock (controls disabled on the appliance); null when not known. */
55588
+ childLock: boolean().nullable(),
55589
+ /** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
55590
+ activeEvents: array(string()),
55591
+ /** Numeric error code when the appliance reports one; null otherwise. */
55518
55592
  errorCode: number().nullable(),
55593
+ /** Name of the raised alert-level event while the appliance is in error; null otherwise. */
55519
55594
  errorLabel: string().nullable(),
55595
+ /** Ms epoch of the last value received from the appliance; 0 = never. */
55520
55596
  lastFetchedAt: number()
55521
55597
  });
55598
+ var DeviceIdSchema = number().int().nonnegative();
55599
+ /** A value a program option or setting can take. */
55600
+ var DishwasherValueSchema = union([
55601
+ boolean(),
55602
+ string(),
55603
+ number()
55604
+ ]);
55605
+ var DishwasherAccessSchema = _enum([
55606
+ "none",
55607
+ "read",
55608
+ "readWrite",
55609
+ "writeOnly",
55610
+ "readStatic"
55611
+ ]);
55612
+ /**
55613
+ * One option or setting the appliance declares, with the constraints its description
55614
+ * gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
55615
+ */
55616
+ var DishwasherOptionDescriptorSchema = object({
55617
+ /** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
55618
+ key: string(),
55619
+ /** Last segment of the key, for display. */
55620
+ name: string(),
55621
+ type: _enum([
55622
+ "boolean",
55623
+ "number",
55624
+ "enum",
55625
+ "string"
55626
+ ]),
55627
+ access: DishwasherAccessSchema,
55628
+ /** The appliance reports this entity as currently available. */
55629
+ available: boolean(),
55630
+ /** Unit the description declares for a number; null when it declares none. */
55631
+ unit: string().nullable(),
55632
+ min: number().nullable(),
55633
+ max: number().nullable(),
55634
+ step: number().nullable(),
55635
+ /** Allowed members of an enum; null for other types. */
55636
+ enumValues: array(string()).nullable(),
55637
+ defaultValue: DishwasherValueSchema.nullable()
55638
+ });
55639
+ var DishwasherProgramSchema = object({
55640
+ /** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
55641
+ key: string(),
55642
+ name: string(),
55643
+ /** The appliance currently offers this program. */
55644
+ available: boolean(),
55645
+ /** The options this program lists, with the program-level access / availability / default. */
55646
+ options: array(DishwasherOptionDescriptorSchema)
55647
+ });
55648
+ var DishwasherOptionsSchema = object({
55649
+ availability: DishwasherAvailabilitySchema,
55650
+ /** What the appliance can be told to do, from the commands its description declares. */
55651
+ supportsStart: boolean(),
55652
+ supportsPause: boolean(),
55653
+ supportsResume: boolean(),
55654
+ supportsStop: boolean(),
55655
+ supportsPower: boolean(),
55656
+ /** Every program the description lists, with its options. */
55657
+ programs: array(DishwasherProgramSchema),
55658
+ /** Every option and setting entity the description lists (programs reference these by key). */
55659
+ options: array(DishwasherOptionDescriptorSchema)
55660
+ });
55522
55661
  var dishwasherCapability = {
55523
55662
  name: "dishwasher",
55524
55663
  scope: "device",
@@ -55526,86 +55665,102 @@ var dishwasherCapability = {
55526
55665
  mode: "singleton",
55527
55666
  deviceTypes: [DeviceType.Dishwasher],
55528
55667
  methods: {
55529
- start: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55668
+ /**
55669
+ * Start a program. Without `program` the selected one starts. `options` are
55670
+ * option feature keys; each is checked against the program's constraints.
55671
+ */
55672
+ start: method(object({
55673
+ deviceId: DeviceIdSchema,
55674
+ program: string().min(1).optional(),
55675
+ options: record(string(), DishwasherValueSchema).optional()
55676
+ }), _void(), {
55530
55677
  kind: "mutation",
55531
55678
  auth: "protected"
55532
55679
  }),
55533
- pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55680
+ pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
55534
55681
  kind: "mutation",
55535
55682
  auth: "protected"
55536
55683
  }),
55537
- stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55684
+ resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
55685
+ kind: "mutation",
55686
+ auth: "protected"
55687
+ }),
55688
+ stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
55538
55689
  kind: "mutation",
55539
55690
  auth: "protected"
55540
55691
  }),
55692
+ /** Select (not start) a program; refused when the appliance does not offer it. */
55541
55693
  setProgram: method(object({
55542
- deviceId: number().int().nonnegative(),
55694
+ deviceId: DeviceIdSchema,
55543
55695
  program: string().min(1)
55544
55696
  }), _void(), {
55545
55697
  kind: "mutation",
55546
55698
  auth: "protected"
55547
55699
  }),
55548
55700
  setPower: method(object({
55549
- deviceId: number().int().nonnegative(),
55701
+ deviceId: DeviceIdSchema,
55550
55702
  on: boolean()
55551
55703
  }), _void(), {
55552
55704
  kind: "mutation",
55553
55705
  auth: "protected"
55554
55706
  }),
55555
55707
  setHalfLoad: method(object({
55556
- deviceId: number().int().nonnegative(),
55708
+ deviceId: DeviceIdSchema,
55557
55709
  on: boolean()
55558
55710
  }), _void(), {
55559
55711
  kind: "mutation",
55560
55712
  auth: "protected"
55561
55713
  }),
55562
55714
  setHygienePlus: method(object({
55563
- deviceId: number().int().nonnegative(),
55715
+ deviceId: DeviceIdSchema,
55564
55716
  on: boolean()
55565
55717
  }), _void(), {
55566
55718
  kind: "mutation",
55567
55719
  auth: "protected"
55568
55720
  }),
55569
55721
  setExtraDry: method(object({
55570
- deviceId: number().int().nonnegative(),
55722
+ deviceId: DeviceIdSchema,
55571
55723
  on: boolean()
55572
55724
  }), _void(), {
55573
55725
  kind: "mutation",
55574
55726
  auth: "protected"
55575
55727
  }),
55576
55728
  setIntensiveZone: method(object({
55577
- deviceId: number().int().nonnegative(),
55729
+ deviceId: DeviceIdSchema,
55578
55730
  on: boolean()
55579
55731
  }), _void(), {
55580
55732
  kind: "mutation",
55581
55733
  auth: "protected"
55582
55734
  }),
55583
55735
  setVarioSpeedPlus: method(object({
55584
- deviceId: number().int().nonnegative(),
55736
+ deviceId: DeviceIdSchema,
55585
55737
  on: boolean()
55586
55738
  }), _void(), {
55587
55739
  kind: "mutation",
55588
55740
  auth: "protected"
55589
55741
  }),
55590
55742
  setChildLock: method(object({
55591
- deviceId: number().int().nonnegative(),
55743
+ deviceId: DeviceIdSchema,
55592
55744
  on: boolean()
55593
55745
  }), _void(), {
55594
55746
  kind: "mutation",
55595
55747
  auth: "protected"
55596
55748
  }),
55749
+ /**
55750
+ * Write any option or setting by feature key. Refused when the description does
55751
+ * not list it, it is not writable or not available now, or the value is outside
55752
+ * its declared range / members.
55753
+ */
55597
55754
  setOption: method(object({
55598
- deviceId: number().int().nonnegative(),
55755
+ deviceId: DeviceIdSchema,
55599
55756
  key: string().min(1),
55600
- value: union([
55601
- boolean(),
55602
- string(),
55603
- number()
55604
- ])
55757
+ value: DishwasherValueSchema
55605
55758
  }), _void(), {
55606
55759
  kind: "mutation",
55607
55760
  auth: "protected"
55608
- })
55761
+ }),
55762
+ /** What this appliance can do, from its own description — the UI is derived from it. */
55763
+ getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
55609
55764
  },
55610
55765
  status: {
55611
55766
  schema: DishwasherStatusSchema,
@@ -69554,6 +69709,12 @@ Object.freeze({
69554
69709
  addonId: null,
69555
69710
  access: "view"
69556
69711
  },
69712
+ "dishwasher.getOptions": {
69713
+ capName: "dishwasher",
69714
+ capScope: "device",
69715
+ addonId: null,
69716
+ access: "view"
69717
+ },
69557
69718
  "dishwasher.getStatus": {
69558
69719
  capName: "dishwasher",
69559
69720
  capScope: "device",
@@ -69566,6 +69727,12 @@ Object.freeze({
69566
69727
  addonId: null,
69567
69728
  access: "create"
69568
69729
  },
69730
+ "dishwasher.resume": {
69731
+ capName: "dishwasher",
69732
+ capScope: "device",
69733
+ addonId: null,
69734
+ access: "create"
69735
+ },
69569
69736
  "dishwasher.setChildLock": {
69570
69737
  capName: "dishwasher",
69571
69738
  capScope: "device",
@@ -74066,6 +74233,12 @@ Object.freeze({
74066
74233
  addonId: null,
74067
74234
  access: "view"
74068
74235
  },
74236
+ "storageMigration.moverClearance": {
74237
+ capName: "storage-migration",
74238
+ capScope: "system",
74239
+ addonId: null,
74240
+ access: "view"
74241
+ },
74069
74242
  "storageMigration.movers": {
74070
74243
  capName: "storage-migration",
74071
74244
  capScope: "system",
@@ -76325,6 +76498,11 @@ Object.freeze({
76325
76498
  form: "single",
76326
76499
  optional: false
76327
76500
  }],
76501
+ "dishwasher.getOptions": [{
76502
+ name: "deviceId",
76503
+ form: "single",
76504
+ optional: false
76505
+ }],
76328
76506
  "dishwasher.getStatus": [{
76329
76507
  name: "deviceId",
76330
76508
  form: "single",
@@ -76335,6 +76513,11 @@ Object.freeze({
76335
76513
  form: "single",
76336
76514
  optional: false
76337
76515
  }],
76516
+ "dishwasher.resume": [{
76517
+ name: "deviceId",
76518
+ form: "single",
76519
+ optional: false
76520
+ }],
76338
76521
  "dishwasher.setChildLock": [{
76339
76522
  name: "deviceId",
76340
76523
  form: "single",
@@ -78421,6 +78604,9 @@ new Map(Object.entries({
78421
78604
  "wrapper-update-available": "system",
78422
78605
  "backup-completed": "system",
78423
78606
  "export-completed": "system",
78607
+ "alert-critical": "system",
78608
+ "alert-error": "system",
78609
+ "alert-critical-resolved": "system",
78424
78610
  "storage-location-low": "system",
78425
78611
  "storage-location-critical": "system",
78426
78612
  "storage-location-ok": "system",
@@ -78545,6 +78731,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
78545
78731
  "storage-location-ok"
78546
78732
  ]
78547
78733
  },
78734
+ {
78735
+ id: "alerts",
78736
+ family: "system",
78737
+ label: "Alerts",
78738
+ kinds: [
78739
+ "alert-critical",
78740
+ "alert-error",
78741
+ "alert-critical-resolved"
78742
+ ]
78743
+ },
78548
78744
  {
78549
78745
  id: "alarm",
78550
78746
  family: "alarm",
@@ -78589,6 +78785,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
78589
78785
  return [[descriptor.kind, field]];
78590
78786
  })));
78591
78787
  Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
78788
+ object({
78789
+ phase: _enum(["raised", "resolved"]),
78790
+ episodeId: string().min(1),
78791
+ alertId: string().min(1),
78792
+ severity: AlertSeveritySchema,
78793
+ category: string(),
78794
+ title: string(),
78795
+ message: string(),
78796
+ sourceType: string().optional(),
78797
+ sourceId: string().optional(),
78798
+ nodeId: string().optional(),
78799
+ /** The alert's own action link (where the operator acts on it), when it has one. */
78800
+ actionUrl: string().optional(),
78801
+ at: number()
78802
+ });
78592
78803
  var RULE_BODY_ONLY = ["body"];
78593
78804
  var RULE_TEXT = ["title", "body"];
78594
78805
  var BATTERY = ["device-battery-low", "device-battery-normal"];
@@ -78598,6 +78809,11 @@ var TANK = [
78598
78809
  "device-tank-full",
78599
78810
  "device-tank-normal"
78600
78811
  ];
78812
+ var ALERT_EPISODE = [
78813
+ "alert-critical",
78814
+ "alert-error",
78815
+ "alert-critical-resolved"
78816
+ ];
78601
78817
  var UPDATES = [
78602
78818
  "addon-update-available",
78603
78819
  "server-update-available",
@@ -78790,14 +79006,14 @@ var STATE_SUMMARY_VARS = [
78790
79006
  ([...RULE_TEXT], [...CONSUMABLE]),
78791
79007
  ([...RULE_TEXT], [...TANK]),
78792
79008
  [...RULE_TEXT],
78793
- ([...RULE_TEXT], [...UPDATES]),
78794
- ([...RULE_TEXT], [...UPDATES]),
78795
- [...RULE_TEXT],
79009
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
79010
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
78796
79011
  [...RULE_TEXT],
78797
79012
  [...RULE_TEXT],
78798
79013
  [...RULE_TEXT],
78799
79014
  [...RULE_TEXT],
78800
79015
  [...RULE_TEXT],
79016
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
78801
79017
  [...RULE_TEXT],
78802
79018
  [...RULE_TEXT],
78803
79019
  [...RULE_TEXT],
@@ -78815,7 +79031,11 @@ var STATE_SUMMARY_VARS = [
78815
79031
  [...RULE_TEXT],
78816
79032
  [...RULE_TEXT],
78817
79033
  [...RULE_TEXT],
78818
- [...RULE_TEXT],
79034
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79035
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79036
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79037
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79038
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
78819
79039
  [...RULE_TEXT],
78820
79040
  [...RULE_TEXT],
78821
79041
  [...RULE_TEXT],
package/dist/addon.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import net from "node:net";
2
- //#region ../types/dist/event-category-BvOFi6PY.mjs
2
+ //#region ../types/dist/event-category-DOl51-Ij.mjs
3
3
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4
4
  EventCategory["SystemBoot"] = "system.boot";
5
5
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -78,9 +78,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
78
78
  /**
79
79
  * The node's one-shot runner boot check (D877): planned runners against the
80
80
  * process service, `degraded` when any is failed, refused or missing. The
81
- * alert centre turns it into one alert and a direct critical push.
81
+ * alert centre turns it into one critical alert.
82
82
  */
83
83
  EventCategory["SystemRunnerCheck"] = "system.runner-check";
84
+ /**
85
+ * An alert EPISODE opened or closed, emitted by the alert centre for alerts
86
+ * of severity `critical` or `error` (`AlertEpisodePayload`). The alert
87
+ * centre sends no notification of its own: Notification Center turns this
88
+ * into the `alert-critical` / `alert-error` / `alert-critical-resolved`
89
+ * system-event kinds, and reconciles from the alerts store because a bus
90
+ * event may be dropped (D8, D11).
91
+ */
92
+ EventCategory["AlertEpisode"] = "alert.episode";
84
93
  EventCategory["AddonError"] = "addon.error";
85
94
  EventCategory["AddonPageReady"] = "addon.page-ready";
86
95
  EventCategory["AddonWidgetReady"] = "addon.widget-ready";
@@ -5405,7 +5414,7 @@ var ZodIssueCode = {
5405
5414
  var ZodFirstPartyTypeKind;
5406
5415
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5407
5416
  //#endregion
5408
- //#region ../types/dist/sleep-BegKjwUu.mjs
5417
+ //#region ../types/dist/sleep-BxjU_fJM.mjs
5409
5418
  /**
5410
5419
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5411
5420
  * window to float samples (D455).
@@ -13289,7 +13298,14 @@ var AlertSeveritySchema = _enum([
13289
13298
  ]);
13290
13299
  var AlertActionSchema = object({
13291
13300
  label: string(),
13292
- href: string().optional()
13301
+ href: string().optional(),
13302
+ /**
13303
+ * How `href` is followed. Absent / `app`: an admin-ui route (client-side).
13304
+ * `server`: a route the HUB serves (an addon HTTP route such as an OAuth
13305
+ * start) — the browser must leave the SPA with a full navigation, because
13306
+ * the SPA has no such route and would bounce to the home page.
13307
+ */
13308
+ navigation: _enum(["app", "server"]).optional()
13293
13309
  });
13294
13310
  var AlertStatusSchema = _enum([
13295
13311
  "active",
@@ -42005,6 +42021,9 @@ var NcSystemEventKindSchema = _enum([
42005
42021
  "server-updated",
42006
42022
  "export-completed",
42007
42023
  "backup-completed",
42024
+ "alert-critical",
42025
+ "alert-error",
42026
+ "alert-critical-resolved",
42008
42027
  "camera-online",
42009
42028
  "camera-offline",
42010
42029
  "camera-disabled",
@@ -51185,7 +51204,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
51185
51204
  }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
51186
51205
  kind: "mutation",
51187
51206
  auth: "admin"
51188
- }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51207
+ }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
51208
+ clear: boolean(),
51209
+ repointLocationId: string().optional()
51210
+ }), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51189
51211
  kind: "mutation",
51190
51212
  auth: "admin"
51191
51213
  }), method(StorageCleanupInputSchema, object({ jobId: string() }), {
@@ -55449,6 +55471,11 @@ onStatusChanged: { data: object({
55449
55471
  *
55450
55472
  * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
55451
55473
  * provider refreshes the slice on an interval and eagerly after commands.
55474
+ *
55475
+ * UNKNOWN IS NOT OFF. Every field the appliance reports separately is
55476
+ * nullable: `null` means "not known right now" (the appliance has not said,
55477
+ * the link is down, or the description does not carry it) and is never
55478
+ * rendered or exported as `false` / `0`. `availability` says why.
55452
55479
  */
55453
55480
  var DishwasherStateSchema = _enum([
55454
55481
  "idle",
@@ -55458,43 +55485,155 @@ var DishwasherStateSchema = _enum([
55458
55485
  "error",
55459
55486
  "unavailable"
55460
55487
  ]);
55488
+ /**
55489
+ * The appliance's own operation state, uncollapsed. `state` above is the coarse
55490
+ * view for compact surfaces; this is what the appliance said.
55491
+ */
55492
+ var DishwasherOperationStateSchema = _enum([
55493
+ "Inactive",
55494
+ "Ready",
55495
+ "DelayedStart",
55496
+ "Run",
55497
+ "Pause",
55498
+ "ActionRequired",
55499
+ "Finished",
55500
+ "Error",
55501
+ "Aborting"
55502
+ ]);
55503
+ /**
55504
+ * Why fields may be `null`:
55505
+ * - `available` — the link is up and the description is loaded;
55506
+ * - `offline` — the local link is down (values are unknown, not last-known);
55507
+ * - `description-missing` — the link is up but the appliance's description could not
55508
+ * be loaded, so its values cannot be decoded.
55509
+ */
55510
+ var DishwasherAvailabilitySchema = _enum([
55511
+ "available",
55512
+ "offline",
55513
+ "description-missing"
55514
+ ]);
55461
55515
  var DishwasherConsumableLevelSchema = _enum([
55462
55516
  "ok",
55463
55517
  "low",
55464
55518
  "empty"
55465
55519
  ]);
55466
55520
  var DishwasherStatusSchema = object({
55521
+ availability: DishwasherAvailabilitySchema,
55522
+ /** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
55467
55523
  state: DishwasherStateSchema,
55468
- /** Active program id/name, or null when none selected / unknown. */
55524
+ /** The appliance's operation state as reported; null when not known. */
55525
+ operationState: DishwasherOperationStateSchema.nullable(),
55526
+ /** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
55469
55527
  program: string().nullable(),
55470
- /** Program tokens the hardware accepts — drives the UI selector. */
55528
+ /** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
55529
+ selectedProgram: string().nullable(),
55530
+ /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
55471
55531
  availablePrograms: array(string()),
55472
- /** Minutes remaining on the active cycle, or null when not running. */
55473
- remainingMinutes: number().int().nonnegative().nullable(),
55532
+ /** Seconds remaining on the active cycle, or null when not running / not known. */
55533
+ remainingSeconds: number().int().nonnegative().nullable(),
55534
+ /** Seconds the delayed start is set to (time until the cycle starts), or null. */
55535
+ delayedStartSeconds: number().int().nonnegative().nullable(),
55474
55536
  /** Cycle completion 0..100, or null when not applicable. */
55475
55537
  progressPercent: number().min(0).max(100).nullable(),
55476
- /** True when the door is reported open. */
55477
- doorOpen: boolean(),
55478
- /** True when remote start is allowed (door closed, power on, etc.). */
55479
- remoteStartAllowed: boolean(),
55480
- /** Main power / switched-on state. */
55481
- powerOn: boolean(),
55538
+ /** True when the door is reported open; null when the door state is not known. */
55539
+ doorOpen: boolean().nullable(),
55540
+ /** True when the door is latched (locked) during a cycle; null when not reported. */
55541
+ doorLocked: boolean().nullable(),
55542
+ /** True when remote start is allowed (door closed, power on, etc.); null when not known. */
55543
+ remoteStartAllowed: boolean().nullable(),
55544
+ /** True when the appliance accepts remote control now; null when not known. */
55545
+ remoteControlActive: boolean().nullable(),
55546
+ /** True while somebody operates the appliance at its panel; null when not reported. */
55547
+ localControlActive: boolean().nullable(),
55548
+ /** Main power / switched-on state; null when not known. */
55549
+ powerOn: boolean().nullable(),
55550
+ /** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
55551
+ powerState: string().nullable(),
55482
55552
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
55483
55553
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55484
- halfLoad: boolean(),
55485
- hygienePlus: boolean(),
55554
+ /** Option states: null when the appliance does not expose the option or has not said. */
55555
+ halfLoad: boolean().nullable(),
55556
+ hygienePlus: boolean().nullable(),
55486
55557
  /** Extra dry option when the appliance exposes it. */
55487
- extraDry: boolean(),
55558
+ extraDry: boolean().nullable(),
55488
55559
  /** Intensive zone (lower basket) when the appliance exposes it. */
55489
- intensiveZone: boolean(),
55560
+ intensiveZone: boolean().nullable(),
55490
55561
  /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
55491
- varioSpeedPlus: boolean(),
55492
- /** Child lock (controls disabled on the appliance). */
55493
- childLock: boolean(),
55562
+ varioSpeedPlus: boolean().nullable(),
55563
+ /** Child lock (controls disabled on the appliance); null when not known. */
55564
+ childLock: boolean().nullable(),
55565
+ /** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
55566
+ activeEvents: array(string()),
55567
+ /** Numeric error code when the appliance reports one; null otherwise. */
55494
55568
  errorCode: number().nullable(),
55569
+ /** Name of the raised alert-level event while the appliance is in error; null otherwise. */
55495
55570
  errorLabel: string().nullable(),
55571
+ /** Ms epoch of the last value received from the appliance; 0 = never. */
55496
55572
  lastFetchedAt: number()
55497
55573
  });
55574
+ var DeviceIdSchema = number().int().nonnegative();
55575
+ /** A value a program option or setting can take. */
55576
+ var DishwasherValueSchema = union([
55577
+ boolean(),
55578
+ string(),
55579
+ number()
55580
+ ]);
55581
+ var DishwasherAccessSchema = _enum([
55582
+ "none",
55583
+ "read",
55584
+ "readWrite",
55585
+ "writeOnly",
55586
+ "readStatic"
55587
+ ]);
55588
+ /**
55589
+ * One option or setting the appliance declares, with the constraints its description
55590
+ * gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
55591
+ */
55592
+ var DishwasherOptionDescriptorSchema = object({
55593
+ /** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
55594
+ key: string(),
55595
+ /** Last segment of the key, for display. */
55596
+ name: string(),
55597
+ type: _enum([
55598
+ "boolean",
55599
+ "number",
55600
+ "enum",
55601
+ "string"
55602
+ ]),
55603
+ access: DishwasherAccessSchema,
55604
+ /** The appliance reports this entity as currently available. */
55605
+ available: boolean(),
55606
+ /** Unit the description declares for a number; null when it declares none. */
55607
+ unit: string().nullable(),
55608
+ min: number().nullable(),
55609
+ max: number().nullable(),
55610
+ step: number().nullable(),
55611
+ /** Allowed members of an enum; null for other types. */
55612
+ enumValues: array(string()).nullable(),
55613
+ defaultValue: DishwasherValueSchema.nullable()
55614
+ });
55615
+ var DishwasherProgramSchema = object({
55616
+ /** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
55617
+ key: string(),
55618
+ name: string(),
55619
+ /** The appliance currently offers this program. */
55620
+ available: boolean(),
55621
+ /** The options this program lists, with the program-level access / availability / default. */
55622
+ options: array(DishwasherOptionDescriptorSchema)
55623
+ });
55624
+ var DishwasherOptionsSchema = object({
55625
+ availability: DishwasherAvailabilitySchema,
55626
+ /** What the appliance can be told to do, from the commands its description declares. */
55627
+ supportsStart: boolean(),
55628
+ supportsPause: boolean(),
55629
+ supportsResume: boolean(),
55630
+ supportsStop: boolean(),
55631
+ supportsPower: boolean(),
55632
+ /** Every program the description lists, with its options. */
55633
+ programs: array(DishwasherProgramSchema),
55634
+ /** Every option and setting entity the description lists (programs reference these by key). */
55635
+ options: array(DishwasherOptionDescriptorSchema)
55636
+ });
55498
55637
  var dishwasherCapability = {
55499
55638
  name: "dishwasher",
55500
55639
  scope: "device",
@@ -55502,86 +55641,102 @@ var dishwasherCapability = {
55502
55641
  mode: "singleton",
55503
55642
  deviceTypes: [DeviceType.Dishwasher],
55504
55643
  methods: {
55505
- start: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55644
+ /**
55645
+ * Start a program. Without `program` the selected one starts. `options` are
55646
+ * option feature keys; each is checked against the program's constraints.
55647
+ */
55648
+ start: method(object({
55649
+ deviceId: DeviceIdSchema,
55650
+ program: string().min(1).optional(),
55651
+ options: record(string(), DishwasherValueSchema).optional()
55652
+ }), _void(), {
55506
55653
  kind: "mutation",
55507
55654
  auth: "protected"
55508
55655
  }),
55509
- pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55656
+ pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
55510
55657
  kind: "mutation",
55511
55658
  auth: "protected"
55512
55659
  }),
55513
- stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55660
+ resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
55661
+ kind: "mutation",
55662
+ auth: "protected"
55663
+ }),
55664
+ stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
55514
55665
  kind: "mutation",
55515
55666
  auth: "protected"
55516
55667
  }),
55668
+ /** Select (not start) a program; refused when the appliance does not offer it. */
55517
55669
  setProgram: method(object({
55518
- deviceId: number().int().nonnegative(),
55670
+ deviceId: DeviceIdSchema,
55519
55671
  program: string().min(1)
55520
55672
  }), _void(), {
55521
55673
  kind: "mutation",
55522
55674
  auth: "protected"
55523
55675
  }),
55524
55676
  setPower: method(object({
55525
- deviceId: number().int().nonnegative(),
55677
+ deviceId: DeviceIdSchema,
55526
55678
  on: boolean()
55527
55679
  }), _void(), {
55528
55680
  kind: "mutation",
55529
55681
  auth: "protected"
55530
55682
  }),
55531
55683
  setHalfLoad: method(object({
55532
- deviceId: number().int().nonnegative(),
55684
+ deviceId: DeviceIdSchema,
55533
55685
  on: boolean()
55534
55686
  }), _void(), {
55535
55687
  kind: "mutation",
55536
55688
  auth: "protected"
55537
55689
  }),
55538
55690
  setHygienePlus: method(object({
55539
- deviceId: number().int().nonnegative(),
55691
+ deviceId: DeviceIdSchema,
55540
55692
  on: boolean()
55541
55693
  }), _void(), {
55542
55694
  kind: "mutation",
55543
55695
  auth: "protected"
55544
55696
  }),
55545
55697
  setExtraDry: method(object({
55546
- deviceId: number().int().nonnegative(),
55698
+ deviceId: DeviceIdSchema,
55547
55699
  on: boolean()
55548
55700
  }), _void(), {
55549
55701
  kind: "mutation",
55550
55702
  auth: "protected"
55551
55703
  }),
55552
55704
  setIntensiveZone: method(object({
55553
- deviceId: number().int().nonnegative(),
55705
+ deviceId: DeviceIdSchema,
55554
55706
  on: boolean()
55555
55707
  }), _void(), {
55556
55708
  kind: "mutation",
55557
55709
  auth: "protected"
55558
55710
  }),
55559
55711
  setVarioSpeedPlus: method(object({
55560
- deviceId: number().int().nonnegative(),
55712
+ deviceId: DeviceIdSchema,
55561
55713
  on: boolean()
55562
55714
  }), _void(), {
55563
55715
  kind: "mutation",
55564
55716
  auth: "protected"
55565
55717
  }),
55566
55718
  setChildLock: method(object({
55567
- deviceId: number().int().nonnegative(),
55719
+ deviceId: DeviceIdSchema,
55568
55720
  on: boolean()
55569
55721
  }), _void(), {
55570
55722
  kind: "mutation",
55571
55723
  auth: "protected"
55572
55724
  }),
55725
+ /**
55726
+ * Write any option or setting by feature key. Refused when the description does
55727
+ * not list it, it is not writable or not available now, or the value is outside
55728
+ * its declared range / members.
55729
+ */
55573
55730
  setOption: method(object({
55574
- deviceId: number().int().nonnegative(),
55731
+ deviceId: DeviceIdSchema,
55575
55732
  key: string().min(1),
55576
- value: union([
55577
- boolean(),
55578
- string(),
55579
- number()
55580
- ])
55733
+ value: DishwasherValueSchema
55581
55734
  }), _void(), {
55582
55735
  kind: "mutation",
55583
55736
  auth: "protected"
55584
- })
55737
+ }),
55738
+ /** What this appliance can do, from its own description — the UI is derived from it. */
55739
+ getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
55585
55740
  },
55586
55741
  status: {
55587
55742
  schema: DishwasherStatusSchema,
@@ -69530,6 +69685,12 @@ Object.freeze({
69530
69685
  addonId: null,
69531
69686
  access: "view"
69532
69687
  },
69688
+ "dishwasher.getOptions": {
69689
+ capName: "dishwasher",
69690
+ capScope: "device",
69691
+ addonId: null,
69692
+ access: "view"
69693
+ },
69533
69694
  "dishwasher.getStatus": {
69534
69695
  capName: "dishwasher",
69535
69696
  capScope: "device",
@@ -69542,6 +69703,12 @@ Object.freeze({
69542
69703
  addonId: null,
69543
69704
  access: "create"
69544
69705
  },
69706
+ "dishwasher.resume": {
69707
+ capName: "dishwasher",
69708
+ capScope: "device",
69709
+ addonId: null,
69710
+ access: "create"
69711
+ },
69545
69712
  "dishwasher.setChildLock": {
69546
69713
  capName: "dishwasher",
69547
69714
  capScope: "device",
@@ -74042,6 +74209,12 @@ Object.freeze({
74042
74209
  addonId: null,
74043
74210
  access: "view"
74044
74211
  },
74212
+ "storageMigration.moverClearance": {
74213
+ capName: "storage-migration",
74214
+ capScope: "system",
74215
+ addonId: null,
74216
+ access: "view"
74217
+ },
74045
74218
  "storageMigration.movers": {
74046
74219
  capName: "storage-migration",
74047
74220
  capScope: "system",
@@ -76301,6 +76474,11 @@ Object.freeze({
76301
76474
  form: "single",
76302
76475
  optional: false
76303
76476
  }],
76477
+ "dishwasher.getOptions": [{
76478
+ name: "deviceId",
76479
+ form: "single",
76480
+ optional: false
76481
+ }],
76304
76482
  "dishwasher.getStatus": [{
76305
76483
  name: "deviceId",
76306
76484
  form: "single",
@@ -76311,6 +76489,11 @@ Object.freeze({
76311
76489
  form: "single",
76312
76490
  optional: false
76313
76491
  }],
76492
+ "dishwasher.resume": [{
76493
+ name: "deviceId",
76494
+ form: "single",
76495
+ optional: false
76496
+ }],
76314
76497
  "dishwasher.setChildLock": [{
76315
76498
  name: "deviceId",
76316
76499
  form: "single",
@@ -78397,6 +78580,9 @@ new Map(Object.entries({
78397
78580
  "wrapper-update-available": "system",
78398
78581
  "backup-completed": "system",
78399
78582
  "export-completed": "system",
78583
+ "alert-critical": "system",
78584
+ "alert-error": "system",
78585
+ "alert-critical-resolved": "system",
78400
78586
  "storage-location-low": "system",
78401
78587
  "storage-location-critical": "system",
78402
78588
  "storage-location-ok": "system",
@@ -78521,6 +78707,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
78521
78707
  "storage-location-ok"
78522
78708
  ]
78523
78709
  },
78710
+ {
78711
+ id: "alerts",
78712
+ family: "system",
78713
+ label: "Alerts",
78714
+ kinds: [
78715
+ "alert-critical",
78716
+ "alert-error",
78717
+ "alert-critical-resolved"
78718
+ ]
78719
+ },
78524
78720
  {
78525
78721
  id: "alarm",
78526
78722
  family: "alarm",
@@ -78565,6 +78761,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
78565
78761
  return [[descriptor.kind, field]];
78566
78762
  })));
78567
78763
  Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
78764
+ object({
78765
+ phase: _enum(["raised", "resolved"]),
78766
+ episodeId: string().min(1),
78767
+ alertId: string().min(1),
78768
+ severity: AlertSeveritySchema,
78769
+ category: string(),
78770
+ title: string(),
78771
+ message: string(),
78772
+ sourceType: string().optional(),
78773
+ sourceId: string().optional(),
78774
+ nodeId: string().optional(),
78775
+ /** The alert's own action link (where the operator acts on it), when it has one. */
78776
+ actionUrl: string().optional(),
78777
+ at: number()
78778
+ });
78568
78779
  var RULE_BODY_ONLY = ["body"];
78569
78780
  var RULE_TEXT = ["title", "body"];
78570
78781
  var BATTERY = ["device-battery-low", "device-battery-normal"];
@@ -78574,6 +78785,11 @@ var TANK = [
78574
78785
  "device-tank-full",
78575
78786
  "device-tank-normal"
78576
78787
  ];
78788
+ var ALERT_EPISODE = [
78789
+ "alert-critical",
78790
+ "alert-error",
78791
+ "alert-critical-resolved"
78792
+ ];
78577
78793
  var UPDATES = [
78578
78794
  "addon-update-available",
78579
78795
  "server-update-available",
@@ -78766,14 +78982,14 @@ var STATE_SUMMARY_VARS = [
78766
78982
  ([...RULE_TEXT], [...CONSUMABLE]),
78767
78983
  ([...RULE_TEXT], [...TANK]),
78768
78984
  [...RULE_TEXT],
78769
- ([...RULE_TEXT], [...UPDATES]),
78770
- ([...RULE_TEXT], [...UPDATES]),
78771
- [...RULE_TEXT],
78985
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
78986
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
78772
78987
  [...RULE_TEXT],
78773
78988
  [...RULE_TEXT],
78774
78989
  [...RULE_TEXT],
78775
78990
  [...RULE_TEXT],
78776
78991
  [...RULE_TEXT],
78992
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
78777
78993
  [...RULE_TEXT],
78778
78994
  [...RULE_TEXT],
78779
78995
  [...RULE_TEXT],
@@ -78791,7 +79007,11 @@ var STATE_SUMMARY_VARS = [
78791
79007
  [...RULE_TEXT],
78792
79008
  [...RULE_TEXT],
78793
79009
  [...RULE_TEXT],
78794
- [...RULE_TEXT],
79010
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79011
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79012
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79013
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
79014
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
78795
79015
  [...RULE_TEXT],
78796
79016
  [...RULE_TEXT],
78797
79017
  [...RULE_TEXT],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rtsp",
3
- "version": "1.2.128",
3
+ "version": "1.2.129",
4
4
  "description": "Generic RTSP camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",