@camstack/addon-notifiers 1.2.601 → 1.2.603

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 +521 -15
  2. package/dist/addon.mjs +521 -15
  3. package/package.json +1 -1
package/dist/addon.mjs CHANGED
@@ -2,7 +2,7 @@ import { brotliCompressSync, deflateSync, gzipSync } from "node:zlib";
2
2
  import { readFileSync } from "node:fs";
3
3
  import path from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
- //#region ../types/dist/event-category-BvOFi6PY.mjs
5
+ //#region ../types/dist/event-category-DOl51-Ij.mjs
6
6
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
7
7
  EventCategory["SystemBoot"] = "system.boot";
8
8
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -81,9 +81,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
81
81
  /**
82
82
  * The node's one-shot runner boot check (D877): planned runners against the
83
83
  * process service, `degraded` when any is failed, refused or missing. The
84
- * alert centre turns it into one alert and a direct critical push.
84
+ * alert centre turns it into one critical alert.
85
85
  */
86
86
  EventCategory["SystemRunnerCheck"] = "system.runner-check";
87
+ /**
88
+ * An alert EPISODE opened or closed, emitted by the alert centre for alerts
89
+ * of severity `critical` or `error` (`AlertEpisodePayload`). The alert
90
+ * centre sends no notification of its own: Notification Center turns this
91
+ * into the `alert-critical` / `alert-error` / `alert-critical-resolved`
92
+ * system-event kinds, and reconciles from the alerts store because a bus
93
+ * event may be dropped (D8, D11).
94
+ */
95
+ EventCategory["AlertEpisode"] = "alert.episode";
87
96
  EventCategory["AddonError"] = "addon.error";
88
97
  EventCategory["AddonPageReady"] = "addon.page-ready";
89
98
  EventCategory["AddonWidgetReady"] = "addon.widget-ready";
@@ -5541,7 +5550,7 @@ var ZodIssueCode = {
5541
5550
  var ZodFirstPartyTypeKind;
5542
5551
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5543
5552
  //#endregion
5544
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5553
+ //#region ../types/dist/sleep-BxjU_fJM.mjs
5545
5554
  /**
5546
5555
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5547
5556
  * window to float samples (D455).
@@ -8739,7 +8748,7 @@ function userError(code, params, englishFallback) {
8739
8748
  return new CamstackError(code, params, englishFallback);
8740
8749
  }
8741
8750
  //#endregion
8742
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8751
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8743
8752
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8744
8753
  DeviceType["Camera"] = "camera";
8745
8754
  DeviceType["Hub"] = "hub";
@@ -8831,6 +8840,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8831
8840
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8832
8841
  * integrations sharing the same food/desiccant/hopper surface. */
8833
8842
  DeviceType["PetFeeder"] = "pet-feeder";
8843
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8844
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8845
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8846
+ DeviceType["Dishwasher"] = "dishwasher";
8834
8847
  return DeviceType;
8835
8848
  }({});
8836
8849
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -9078,7 +9091,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
9078
9091
  return DeviceRole;
9079
9092
  }({});
9080
9093
  //#endregion
9081
- //#region ../types/dist/composition-DOwQB_Ua.mjs
9094
+ //#region ../types/dist/composition-CB6PMT9p.mjs
9082
9095
  /**
9083
9096
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9084
9097
  *
@@ -13600,8 +13613,20 @@ var AlertSeveritySchema = _enum([
13600
13613
  "info",
13601
13614
  "success",
13602
13615
  "warning",
13603
- "error"
13616
+ "error",
13617
+ "critical"
13604
13618
  ]);
13619
+ var AlertActionSchema = object({
13620
+ label: string(),
13621
+ href: string().optional(),
13622
+ /**
13623
+ * How `href` is followed. Absent / `app`: an admin-ui route (client-side).
13624
+ * `server`: a route the HUB serves (an addon HTTP route such as an OAuth
13625
+ * start) — the browser must leave the SPA with a full navigation, because
13626
+ * the SPA has no such route and would bounce to the home page.
13627
+ */
13628
+ navigation: _enum(["app", "server"]).optional()
13629
+ });
13605
13630
  var AlertStatusSchema = _enum([
13606
13631
  "active",
13607
13632
  "in-progress",
@@ -13619,6 +13644,7 @@ var AlertSchema = object({
13619
13644
  severity: AlertSeveritySchema,
13620
13645
  title: string(),
13621
13646
  message: string(),
13647
+ action: AlertActionSchema.optional(),
13622
13648
  status: AlertStatusSchema,
13623
13649
  progress: number().optional(),
13624
13650
  read: boolean(),
@@ -17763,7 +17789,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
17763
17789
  });
17764
17790
  /**
17765
17791
  * `device-adoption` — generic discovery + adoption surface,
17766
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17792
+ * system-scoped collection (one provider per integration addon), routed
17793
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17794
+ * pin model as `connection-test`. The admin UI keeps using
17795
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17796
+ * successor to `ha-discovery`:
17767
17797
  * keyed by `integrationId` (the addon resolves integrationId → broker
17768
17798
  * internally) rather than a connection-specific `brokerId`, and it
17769
17799
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -41993,6 +42023,9 @@ var NcSystemEventKindSchema = _enum([
41993
42023
  "server-updated",
41994
42024
  "export-completed",
41995
42025
  "backup-completed",
42026
+ "alert-critical",
42027
+ "alert-error",
42028
+ "alert-critical-resolved",
41996
42029
  "camera-online",
41997
42030
  "camera-offline",
41998
42031
  "camera-disabled",
@@ -51025,7 +51058,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
51025
51058
  }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
51026
51059
  kind: "mutation",
51027
51060
  auth: "admin"
51028
- }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51061
+ }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
51062
+ clear: boolean(),
51063
+ repointLocationId: string().optional()
51064
+ }), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51029
51065
  kind: "mutation",
51030
51066
  auth: "admin"
51031
51067
  }), method(StorageCleanupInputSchema, object({ jobId: string() }), {
@@ -53575,7 +53611,7 @@ var BatteryStatusSchema = object({
53575
53611
  */
53576
53612
  binary: boolean().optional()
53577
53613
  });
53578
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
53614
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
53579
53615
  deviceId: number(),
53580
53616
  /** Bound on the wait. Sensible range 3000–10000ms. */
53581
53617
  timeoutMs: number().int().min(500).max(3e4).default(8e3)
@@ -54451,6 +54487,250 @@ object({
54451
54487
  deviceId: number(),
54452
54488
  status: DeviceStatusSchema
54453
54489
  });
54490
+ /**
54491
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
54492
+ * consumable levels (salt, rinse aid) and common program options.
54493
+ *
54494
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
54495
+ * by any integration that exposes the same program / option surface.
54496
+ *
54497
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
54498
+ * provider refreshes the slice on an interval and eagerly after commands.
54499
+ *
54500
+ * UNKNOWN IS NOT OFF. Every field the appliance reports separately is
54501
+ * nullable: `null` means "not known right now" (the appliance has not said,
54502
+ * the link is down, or the description does not carry it) and is never
54503
+ * rendered or exported as `false` / `0`. `availability` says why.
54504
+ */
54505
+ var DishwasherStateSchema = _enum([
54506
+ "idle",
54507
+ "running",
54508
+ "paused",
54509
+ "finished",
54510
+ "error",
54511
+ "unavailable"
54512
+ ]);
54513
+ /**
54514
+ * The appliance's own operation state, uncollapsed. `state` above is the coarse
54515
+ * view for compact surfaces; this is what the appliance said.
54516
+ */
54517
+ var DishwasherOperationStateSchema = _enum([
54518
+ "Inactive",
54519
+ "Ready",
54520
+ "DelayedStart",
54521
+ "Run",
54522
+ "Pause",
54523
+ "ActionRequired",
54524
+ "Finished",
54525
+ "Error",
54526
+ "Aborting"
54527
+ ]);
54528
+ /**
54529
+ * Why fields may be `null`:
54530
+ * - `available` — the link is up and the description is loaded;
54531
+ * - `offline` — the local link is down (values are unknown, not last-known);
54532
+ * - `description-missing` — the link is up but the appliance's description could not
54533
+ * be loaded, so its values cannot be decoded.
54534
+ */
54535
+ var DishwasherAvailabilitySchema = _enum([
54536
+ "available",
54537
+ "offline",
54538
+ "description-missing"
54539
+ ]);
54540
+ var DishwasherConsumableLevelSchema = _enum([
54541
+ "ok",
54542
+ "low",
54543
+ "empty"
54544
+ ]);
54545
+ object({
54546
+ availability: DishwasherAvailabilitySchema,
54547
+ /** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
54548
+ state: DishwasherStateSchema,
54549
+ /** The appliance's operation state as reported; null when not known. */
54550
+ operationState: DishwasherOperationStateSchema.nullable(),
54551
+ /** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
54552
+ program: string().nullable(),
54553
+ /** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
54554
+ selectedProgram: string().nullable(),
54555
+ /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
54556
+ availablePrograms: array(string()),
54557
+ /** Seconds remaining on the active cycle, or null when not running / not known. */
54558
+ remainingSeconds: number().int().nonnegative().nullable(),
54559
+ /** Seconds the delayed start is set to (time until the cycle starts), or null. */
54560
+ delayedStartSeconds: number().int().nonnegative().nullable(),
54561
+ /** Cycle completion 0..100, or null when not applicable. */
54562
+ progressPercent: number().min(0).max(100).nullable(),
54563
+ /** True when the door is reported open; null when the door state is not known. */
54564
+ doorOpen: boolean().nullable(),
54565
+ /** True when the door is latched (locked) during a cycle; null when not reported. */
54566
+ doorLocked: boolean().nullable(),
54567
+ /** True when remote start is allowed (door closed, power on, etc.); null when not known. */
54568
+ remoteStartAllowed: boolean().nullable(),
54569
+ /** True when the appliance accepts remote control now; null when not known. */
54570
+ remoteControlActive: boolean().nullable(),
54571
+ /** True while somebody operates the appliance at its panel; null when not reported. */
54572
+ localControlActive: boolean().nullable(),
54573
+ /** Main power / switched-on state; null when not known. */
54574
+ powerOn: boolean().nullable(),
54575
+ /** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
54576
+ powerState: string().nullable(),
54577
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
54578
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54579
+ /** Option states: null when the appliance does not expose the option or has not said. */
54580
+ halfLoad: boolean().nullable(),
54581
+ hygienePlus: boolean().nullable(),
54582
+ /** Extra dry option when the appliance exposes it. */
54583
+ extraDry: boolean().nullable(),
54584
+ /** Intensive zone (lower basket) when the appliance exposes it. */
54585
+ intensiveZone: boolean().nullable(),
54586
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
54587
+ varioSpeedPlus: boolean().nullable(),
54588
+ /** Child lock (controls disabled on the appliance); null when not known. */
54589
+ childLock: boolean().nullable(),
54590
+ /** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
54591
+ activeEvents: array(string()),
54592
+ /** Numeric error code when the appliance reports one; null otherwise. */
54593
+ errorCode: number().nullable(),
54594
+ /** Name of the raised alert-level event while the appliance is in error; null otherwise. */
54595
+ errorLabel: string().nullable(),
54596
+ /** Ms epoch of the last value received from the appliance; 0 = never. */
54597
+ lastFetchedAt: number()
54598
+ });
54599
+ var DeviceIdSchema = number().int().nonnegative();
54600
+ /** A value a program option or setting can take. */
54601
+ var DishwasherValueSchema = union([
54602
+ boolean(),
54603
+ string(),
54604
+ number()
54605
+ ]);
54606
+ var DishwasherAccessSchema = _enum([
54607
+ "none",
54608
+ "read",
54609
+ "readWrite",
54610
+ "writeOnly",
54611
+ "readStatic"
54612
+ ]);
54613
+ /**
54614
+ * One option or setting the appliance declares, with the constraints its description
54615
+ * gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
54616
+ */
54617
+ var DishwasherOptionDescriptorSchema = object({
54618
+ /** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
54619
+ key: string(),
54620
+ /** Last segment of the key, for display. */
54621
+ name: string(),
54622
+ type: _enum([
54623
+ "boolean",
54624
+ "number",
54625
+ "enum",
54626
+ "string"
54627
+ ]),
54628
+ access: DishwasherAccessSchema,
54629
+ /** The appliance reports this entity as currently available. */
54630
+ available: boolean(),
54631
+ /** Unit the description declares for a number; null when it declares none. */
54632
+ unit: string().nullable(),
54633
+ min: number().nullable(),
54634
+ max: number().nullable(),
54635
+ step: number().nullable(),
54636
+ /** Allowed members of an enum; null for other types. */
54637
+ enumValues: array(string()).nullable(),
54638
+ defaultValue: DishwasherValueSchema.nullable()
54639
+ });
54640
+ var DishwasherProgramSchema = object({
54641
+ /** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
54642
+ key: string(),
54643
+ name: string(),
54644
+ /** The appliance currently offers this program. */
54645
+ available: boolean(),
54646
+ /** The options this program lists, with the program-level access / availability / default. */
54647
+ options: array(DishwasherOptionDescriptorSchema)
54648
+ });
54649
+ var DishwasherOptionsSchema = object({
54650
+ availability: DishwasherAvailabilitySchema,
54651
+ /** What the appliance can be told to do, from the commands its description declares. */
54652
+ supportsStart: boolean(),
54653
+ supportsPause: boolean(),
54654
+ supportsResume: boolean(),
54655
+ supportsStop: boolean(),
54656
+ supportsPower: boolean(),
54657
+ /** Every program the description lists, with its options. */
54658
+ programs: array(DishwasherProgramSchema),
54659
+ /** Every option and setting entity the description lists (programs reference these by key). */
54660
+ options: array(DishwasherOptionDescriptorSchema)
54661
+ });
54662
+ DeviceType.Dishwasher, method(object({
54663
+ deviceId: DeviceIdSchema,
54664
+ program: string().min(1).optional(),
54665
+ options: record(string(), DishwasherValueSchema).optional()
54666
+ }), _void(), {
54667
+ kind: "mutation",
54668
+ auth: "protected"
54669
+ }), method(object({ deviceId: DeviceIdSchema }), _void(), {
54670
+ kind: "mutation",
54671
+ auth: "protected"
54672
+ }), method(object({ deviceId: DeviceIdSchema }), _void(), {
54673
+ kind: "mutation",
54674
+ auth: "protected"
54675
+ }), method(object({ deviceId: DeviceIdSchema }), _void(), {
54676
+ kind: "mutation",
54677
+ auth: "protected"
54678
+ }), method(object({
54679
+ deviceId: DeviceIdSchema,
54680
+ program: string().min(1)
54681
+ }), _void(), {
54682
+ kind: "mutation",
54683
+ auth: "protected"
54684
+ }), method(object({
54685
+ deviceId: DeviceIdSchema,
54686
+ on: boolean()
54687
+ }), _void(), {
54688
+ kind: "mutation",
54689
+ auth: "protected"
54690
+ }), method(object({
54691
+ deviceId: DeviceIdSchema,
54692
+ on: boolean()
54693
+ }), _void(), {
54694
+ kind: "mutation",
54695
+ auth: "protected"
54696
+ }), method(object({
54697
+ deviceId: DeviceIdSchema,
54698
+ on: boolean()
54699
+ }), _void(), {
54700
+ kind: "mutation",
54701
+ auth: "protected"
54702
+ }), method(object({
54703
+ deviceId: DeviceIdSchema,
54704
+ on: boolean()
54705
+ }), _void(), {
54706
+ kind: "mutation",
54707
+ auth: "protected"
54708
+ }), method(object({
54709
+ deviceId: DeviceIdSchema,
54710
+ on: boolean()
54711
+ }), _void(), {
54712
+ kind: "mutation",
54713
+ auth: "protected"
54714
+ }), method(object({
54715
+ deviceId: DeviceIdSchema,
54716
+ on: boolean()
54717
+ }), _void(), {
54718
+ kind: "mutation",
54719
+ auth: "protected"
54720
+ }), method(object({
54721
+ deviceId: DeviceIdSchema,
54722
+ on: boolean()
54723
+ }), _void(), {
54724
+ kind: "mutation",
54725
+ auth: "protected"
54726
+ }), method(object({
54727
+ deviceId: DeviceIdSchema,
54728
+ key: string().min(1),
54729
+ value: DishwasherValueSchema
54730
+ }), _void(), {
54731
+ kind: "mutation",
54732
+ auth: "protected"
54733
+ }), method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" });
54454
54734
  object({
54455
54735
  /** Ms epoch of the last press. null = never observed since this provider started. */
54456
54736
  lastPressedAt: number().nullable(),
@@ -55016,6 +55296,13 @@ object({
55016
55296
  lastChangedAt: number()
55017
55297
  });
55018
55298
  DeviceType.Sensor;
55299
+ object({
55300
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
55301
+ position: number().min(0).max(100).nullable(),
55302
+ /** Ms epoch when the slice was last updated (push or poll). */
55303
+ lastFetchedAt: number()
55304
+ });
55305
+ DeviceType.Thermostat;
55019
55306
  object({
55020
55307
  /** Whether the humidifier is currently on. */
55021
55308
  on: boolean(),
@@ -62082,7 +62369,7 @@ var AccessoryKind = {
62082
62369
  PrivacyMask: DeviceRole.PrivacyMask
62083
62370
  };
62084
62371
  AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
62085
- DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
62372
+ DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher;
62086
62373
  new Set(Object.values(DeviceType));
62087
62374
  Object.freeze({
62088
62375
  "accessories.getStatus": {
@@ -64503,6 +64790,96 @@ Object.freeze({
64503
64790
  addonId: null,
64504
64791
  access: "view"
64505
64792
  },
64793
+ "dishwasher.getOptions": {
64794
+ capName: "dishwasher",
64795
+ capScope: "device",
64796
+ addonId: null,
64797
+ access: "view"
64798
+ },
64799
+ "dishwasher.getStatus": {
64800
+ capName: "dishwasher",
64801
+ capScope: "device",
64802
+ addonId: null,
64803
+ access: "view"
64804
+ },
64805
+ "dishwasher.pause": {
64806
+ capName: "dishwasher",
64807
+ capScope: "device",
64808
+ addonId: null,
64809
+ access: "create"
64810
+ },
64811
+ "dishwasher.resume": {
64812
+ capName: "dishwasher",
64813
+ capScope: "device",
64814
+ addonId: null,
64815
+ access: "create"
64816
+ },
64817
+ "dishwasher.setChildLock": {
64818
+ capName: "dishwasher",
64819
+ capScope: "device",
64820
+ addonId: null,
64821
+ access: "create"
64822
+ },
64823
+ "dishwasher.setExtraDry": {
64824
+ capName: "dishwasher",
64825
+ capScope: "device",
64826
+ addonId: null,
64827
+ access: "create"
64828
+ },
64829
+ "dishwasher.setHalfLoad": {
64830
+ capName: "dishwasher",
64831
+ capScope: "device",
64832
+ addonId: null,
64833
+ access: "create"
64834
+ },
64835
+ "dishwasher.setHygienePlus": {
64836
+ capName: "dishwasher",
64837
+ capScope: "device",
64838
+ addonId: null,
64839
+ access: "create"
64840
+ },
64841
+ "dishwasher.setIntensiveZone": {
64842
+ capName: "dishwasher",
64843
+ capScope: "device",
64844
+ addonId: null,
64845
+ access: "create"
64846
+ },
64847
+ "dishwasher.setOption": {
64848
+ capName: "dishwasher",
64849
+ capScope: "device",
64850
+ addonId: null,
64851
+ access: "create"
64852
+ },
64853
+ "dishwasher.setPower": {
64854
+ capName: "dishwasher",
64855
+ capScope: "device",
64856
+ addonId: null,
64857
+ access: "create"
64858
+ },
64859
+ "dishwasher.setProgram": {
64860
+ capName: "dishwasher",
64861
+ capScope: "device",
64862
+ addonId: null,
64863
+ access: "create"
64864
+ },
64865
+ "dishwasher.setVarioSpeedPlus": {
64866
+ capName: "dishwasher",
64867
+ capScope: "device",
64868
+ addonId: null,
64869
+ access: "create"
64870
+ },
64871
+ "dishwasher.start": {
64872
+ capName: "dishwasher",
64873
+ capScope: "device",
64874
+ addonId: null,
64875
+ access: "create"
64876
+ },
64877
+ "dishwasher.stop": {
64878
+ capName: "dishwasher",
64879
+ capScope: "device",
64880
+ addonId: null,
64881
+ access: "create"
64882
+ },
64506
64883
  "doorbell.getStatus": {
64507
64884
  capName: "doorbell",
64508
64885
  capScope: "device",
@@ -64713,6 +65090,12 @@ Object.freeze({
64713
65090
  addonId: null,
64714
65091
  access: "view"
64715
65092
  },
65093
+ "heatingValve.getStatus": {
65094
+ capName: "heating-valve",
65095
+ capScope: "device",
65096
+ addonId: null,
65097
+ access: "view"
65098
+ },
64716
65099
  "humidifier.getStatus": {
64717
65100
  capName: "humidifier",
64718
65101
  capScope: "device",
@@ -68931,6 +69314,12 @@ Object.freeze({
68931
69314
  addonId: null,
68932
69315
  access: "view"
68933
69316
  },
69317
+ "storageMigration.moverClearance": {
69318
+ capName: "storage-migration",
69319
+ capScope: "system",
69320
+ addonId: null,
69321
+ access: "view"
69322
+ },
68934
69323
  "storageMigration.movers": {
68935
69324
  capName: "storage-migration",
68936
69325
  capScope: "system",
@@ -70300,7 +70689,7 @@ Object.freeze({
70300
70689
  access: "create"
70301
70690
  }
70302
70691
  });
70303
- DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
70692
+ DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher;
70304
70693
  DeviceFeature.BatteryOperated;
70305
70694
  Object.freeze({
70306
70695
  "accessories.getStatus": [{
@@ -71124,6 +71513,81 @@ Object.freeze({
71124
71513
  form: "single",
71125
71514
  optional: false
71126
71515
  }],
71516
+ "dishwasher.getOptions": [{
71517
+ name: "deviceId",
71518
+ form: "single",
71519
+ optional: false
71520
+ }],
71521
+ "dishwasher.getStatus": [{
71522
+ name: "deviceId",
71523
+ form: "single",
71524
+ optional: false
71525
+ }],
71526
+ "dishwasher.pause": [{
71527
+ name: "deviceId",
71528
+ form: "single",
71529
+ optional: false
71530
+ }],
71531
+ "dishwasher.resume": [{
71532
+ name: "deviceId",
71533
+ form: "single",
71534
+ optional: false
71535
+ }],
71536
+ "dishwasher.setChildLock": [{
71537
+ name: "deviceId",
71538
+ form: "single",
71539
+ optional: false
71540
+ }],
71541
+ "dishwasher.setExtraDry": [{
71542
+ name: "deviceId",
71543
+ form: "single",
71544
+ optional: false
71545
+ }],
71546
+ "dishwasher.setHalfLoad": [{
71547
+ name: "deviceId",
71548
+ form: "single",
71549
+ optional: false
71550
+ }],
71551
+ "dishwasher.setHygienePlus": [{
71552
+ name: "deviceId",
71553
+ form: "single",
71554
+ optional: false
71555
+ }],
71556
+ "dishwasher.setIntensiveZone": [{
71557
+ name: "deviceId",
71558
+ form: "single",
71559
+ optional: false
71560
+ }],
71561
+ "dishwasher.setOption": [{
71562
+ name: "deviceId",
71563
+ form: "single",
71564
+ optional: false
71565
+ }],
71566
+ "dishwasher.setPower": [{
71567
+ name: "deviceId",
71568
+ form: "single",
71569
+ optional: false
71570
+ }],
71571
+ "dishwasher.setProgram": [{
71572
+ name: "deviceId",
71573
+ form: "single",
71574
+ optional: false
71575
+ }],
71576
+ "dishwasher.setVarioSpeedPlus": [{
71577
+ name: "deviceId",
71578
+ form: "single",
71579
+ optional: false
71580
+ }],
71581
+ "dishwasher.start": [{
71582
+ name: "deviceId",
71583
+ form: "single",
71584
+ optional: false
71585
+ }],
71586
+ "dishwasher.stop": [{
71587
+ name: "deviceId",
71588
+ form: "single",
71589
+ optional: false
71590
+ }],
71127
71591
  "doorbell.getStatus": [{
71128
71592
  name: "deviceId",
71129
71593
  form: "single",
@@ -71193,6 +71657,11 @@ Object.freeze({
71193
71657
  form: "single",
71194
71658
  optional: false
71195
71659
  }],
71660
+ "heatingValve.getStatus": [{
71661
+ name: "deviceId",
71662
+ form: "single",
71663
+ optional: false
71664
+ }],
71196
71665
  "humidifier.getStatus": [{
71197
71666
  name: "deviceId",
71198
71667
  form: "single",
@@ -73357,6 +73826,9 @@ new Map(Object.entries({
73357
73826
  "wrapper-update-available": "system",
73358
73827
  "backup-completed": "system",
73359
73828
  "export-completed": "system",
73829
+ "alert-critical": "system",
73830
+ "alert-error": "system",
73831
+ "alert-critical-resolved": "system",
73360
73832
  "storage-location-low": "system",
73361
73833
  "storage-location-critical": "system",
73362
73834
  "storage-location-ok": "system",
@@ -73481,6 +73953,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73481
73953
  "storage-location-ok"
73482
73954
  ]
73483
73955
  },
73956
+ {
73957
+ id: "alerts",
73958
+ family: "system",
73959
+ label: "Alerts",
73960
+ kinds: [
73961
+ "alert-critical",
73962
+ "alert-error",
73963
+ "alert-critical-resolved"
73964
+ ]
73965
+ },
73484
73966
  {
73485
73967
  id: "alarm",
73486
73968
  family: "alarm",
@@ -73525,6 +74007,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
73525
74007
  return [[descriptor.kind, field]];
73526
74008
  })));
73527
74009
  Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
74010
+ object({
74011
+ phase: _enum(["raised", "resolved"]),
74012
+ episodeId: string().min(1),
74013
+ alertId: string().min(1),
74014
+ severity: AlertSeveritySchema,
74015
+ category: string(),
74016
+ title: string(),
74017
+ message: string(),
74018
+ sourceType: string().optional(),
74019
+ sourceId: string().optional(),
74020
+ nodeId: string().optional(),
74021
+ /** The alert's own action link (where the operator acts on it), when it has one. */
74022
+ actionUrl: string().optional(),
74023
+ at: number()
74024
+ });
73528
74025
  var RULE_BODY_ONLY = ["body"];
73529
74026
  var RULE_TEXT = ["title", "body"];
73530
74027
  var BATTERY = ["device-battery-low", "device-battery-normal"];
@@ -73534,6 +74031,11 @@ var TANK = [
73534
74031
  "device-tank-full",
73535
74032
  "device-tank-normal"
73536
74033
  ];
74034
+ var ALERT_EPISODE = [
74035
+ "alert-critical",
74036
+ "alert-error",
74037
+ "alert-critical-resolved"
74038
+ ];
73537
74039
  var UPDATES = [
73538
74040
  "addon-update-available",
73539
74041
  "server-update-available",
@@ -73726,14 +74228,14 @@ var STATE_SUMMARY_VARS = [
73726
74228
  ([...RULE_TEXT], [...CONSUMABLE]),
73727
74229
  ([...RULE_TEXT], [...TANK]),
73728
74230
  [...RULE_TEXT],
73729
- ([...RULE_TEXT], [...UPDATES]),
73730
- ([...RULE_TEXT], [...UPDATES]),
73731
- [...RULE_TEXT],
74231
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
74232
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
73732
74233
  [...RULE_TEXT],
73733
74234
  [...RULE_TEXT],
73734
74235
  [...RULE_TEXT],
73735
74236
  [...RULE_TEXT],
73736
74237
  [...RULE_TEXT],
74238
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
73737
74239
  [...RULE_TEXT],
73738
74240
  [...RULE_TEXT],
73739
74241
  [...RULE_TEXT],
@@ -73751,7 +74253,11 @@ var STATE_SUMMARY_VARS = [
73751
74253
  [...RULE_TEXT],
73752
74254
  [...RULE_TEXT],
73753
74255
  [...RULE_TEXT],
73754
- [...RULE_TEXT],
74256
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
74257
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
74258
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
74259
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
74260
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
73755
74261
  [...RULE_TEXT],
73756
74262
  [...RULE_TEXT],
73757
74263
  [...RULE_TEXT],