@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.js CHANGED
@@ -29,7 +29,7 @@ let node_fs = require("node:fs");
29
29
  let node_path = require("node:path");
30
30
  node_path = __toESM(node_path);
31
31
  let node_url = require("node:url");
32
- //#region ../types/dist/event-category-BvOFi6PY.mjs
32
+ //#region ../types/dist/event-category-DOl51-Ij.mjs
33
33
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
34
34
  EventCategory["SystemBoot"] = "system.boot";
35
35
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -108,9 +108,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
108
108
  /**
109
109
  * The node's one-shot runner boot check (D877): planned runners against the
110
110
  * process service, `degraded` when any is failed, refused or missing. The
111
- * alert centre turns it into one alert and a direct critical push.
111
+ * alert centre turns it into one critical alert.
112
112
  */
113
113
  EventCategory["SystemRunnerCheck"] = "system.runner-check";
114
+ /**
115
+ * An alert EPISODE opened or closed, emitted by the alert centre for alerts
116
+ * of severity `critical` or `error` (`AlertEpisodePayload`). The alert
117
+ * centre sends no notification of its own: Notification Center turns this
118
+ * into the `alert-critical` / `alert-error` / `alert-critical-resolved`
119
+ * system-event kinds, and reconciles from the alerts store because a bus
120
+ * event may be dropped (D8, D11).
121
+ */
122
+ EventCategory["AlertEpisode"] = "alert.episode";
114
123
  EventCategory["AddonError"] = "addon.error";
115
124
  EventCategory["AddonPageReady"] = "addon.page-ready";
116
125
  EventCategory["AddonWidgetReady"] = "addon.widget-ready";
@@ -5568,7 +5577,7 @@ var ZodIssueCode = {
5568
5577
  var ZodFirstPartyTypeKind;
5569
5578
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5570
5579
  //#endregion
5571
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5580
+ //#region ../types/dist/sleep-BxjU_fJM.mjs
5572
5581
  /**
5573
5582
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5574
5583
  * window to float samples (D455).
@@ -8766,7 +8775,7 @@ function userError(code, params, englishFallback) {
8766
8775
  return new CamstackError(code, params, englishFallback);
8767
8776
  }
8768
8777
  //#endregion
8769
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8778
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8770
8779
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8771
8780
  DeviceType["Camera"] = "camera";
8772
8781
  DeviceType["Hub"] = "hub";
@@ -8858,6 +8867,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8858
8867
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8859
8868
  * integrations sharing the same food/desiccant/hopper surface. */
8860
8869
  DeviceType["PetFeeder"] = "pet-feeder";
8870
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8871
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8872
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8873
+ DeviceType["Dishwasher"] = "dishwasher";
8861
8874
  return DeviceType;
8862
8875
  }({});
8863
8876
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -9105,7 +9118,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
9105
9118
  return DeviceRole;
9106
9119
  }({});
9107
9120
  //#endregion
9108
- //#region ../types/dist/composition-DOwQB_Ua.mjs
9121
+ //#region ../types/dist/composition-CB6PMT9p.mjs
9109
9122
  /**
9110
9123
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9111
9124
  *
@@ -13627,8 +13640,20 @@ var AlertSeveritySchema = _enum([
13627
13640
  "info",
13628
13641
  "success",
13629
13642
  "warning",
13630
- "error"
13643
+ "error",
13644
+ "critical"
13631
13645
  ]);
13646
+ var AlertActionSchema = object({
13647
+ label: string(),
13648
+ href: string().optional(),
13649
+ /**
13650
+ * How `href` is followed. Absent / `app`: an admin-ui route (client-side).
13651
+ * `server`: a route the HUB serves (an addon HTTP route such as an OAuth
13652
+ * start) — the browser must leave the SPA with a full navigation, because
13653
+ * the SPA has no such route and would bounce to the home page.
13654
+ */
13655
+ navigation: _enum(["app", "server"]).optional()
13656
+ });
13632
13657
  var AlertStatusSchema = _enum([
13633
13658
  "active",
13634
13659
  "in-progress",
@@ -13646,6 +13671,7 @@ var AlertSchema = object({
13646
13671
  severity: AlertSeveritySchema,
13647
13672
  title: string(),
13648
13673
  message: string(),
13674
+ action: AlertActionSchema.optional(),
13649
13675
  status: AlertStatusSchema,
13650
13676
  progress: number().optional(),
13651
13677
  read: boolean(),
@@ -17790,7 +17816,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
17790
17816
  });
17791
17817
  /**
17792
17818
  * `device-adoption` — generic discovery + adoption surface,
17793
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17819
+ * system-scoped collection (one provider per integration addon), routed
17820
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17821
+ * pin model as `connection-test`. The admin UI keeps using
17822
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17823
+ * successor to `ha-discovery`:
17794
17824
  * keyed by `integrationId` (the addon resolves integrationId → broker
17795
17825
  * internally) rather than a connection-specific `brokerId`, and it
17796
17826
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -42020,6 +42050,9 @@ var NcSystemEventKindSchema = _enum([
42020
42050
  "server-updated",
42021
42051
  "export-completed",
42022
42052
  "backup-completed",
42053
+ "alert-critical",
42054
+ "alert-error",
42055
+ "alert-critical-resolved",
42023
42056
  "camera-online",
42024
42057
  "camera-offline",
42025
42058
  "camera-disabled",
@@ -51052,7 +51085,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
51052
51085
  }), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
51053
51086
  kind: "mutation",
51054
51087
  auth: "admin"
51055
- }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51088
+ }), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
51089
+ clear: boolean(),
51090
+ repointLocationId: string().optional()
51091
+ }), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
51056
51092
  kind: "mutation",
51057
51093
  auth: "admin"
51058
51094
  }), method(StorageCleanupInputSchema, object({ jobId: string() }), {
@@ -53602,7 +53638,7 @@ var BatteryStatusSchema = object({
53602
53638
  */
53603
53639
  binary: boolean().optional()
53604
53640
  });
53605
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
53641
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
53606
53642
  deviceId: number(),
53607
53643
  /** Bound on the wait. Sensible range 3000–10000ms. */
53608
53644
  timeoutMs: number().int().min(500).max(3e4).default(8e3)
@@ -54478,6 +54514,250 @@ object({
54478
54514
  deviceId: number(),
54479
54515
  status: DeviceStatusSchema
54480
54516
  });
54517
+ /**
54518
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
54519
+ * consumable levels (salt, rinse aid) and common program options.
54520
+ *
54521
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
54522
+ * by any integration that exposes the same program / option surface.
54523
+ *
54524
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
54525
+ * provider refreshes the slice on an interval and eagerly after commands.
54526
+ *
54527
+ * UNKNOWN IS NOT OFF. Every field the appliance reports separately is
54528
+ * nullable: `null` means "not known right now" (the appliance has not said,
54529
+ * the link is down, or the description does not carry it) and is never
54530
+ * rendered or exported as `false` / `0`. `availability` says why.
54531
+ */
54532
+ var DishwasherStateSchema = _enum([
54533
+ "idle",
54534
+ "running",
54535
+ "paused",
54536
+ "finished",
54537
+ "error",
54538
+ "unavailable"
54539
+ ]);
54540
+ /**
54541
+ * The appliance's own operation state, uncollapsed. `state` above is the coarse
54542
+ * view for compact surfaces; this is what the appliance said.
54543
+ */
54544
+ var DishwasherOperationStateSchema = _enum([
54545
+ "Inactive",
54546
+ "Ready",
54547
+ "DelayedStart",
54548
+ "Run",
54549
+ "Pause",
54550
+ "ActionRequired",
54551
+ "Finished",
54552
+ "Error",
54553
+ "Aborting"
54554
+ ]);
54555
+ /**
54556
+ * Why fields may be `null`:
54557
+ * - `available` — the link is up and the description is loaded;
54558
+ * - `offline` — the local link is down (values are unknown, not last-known);
54559
+ * - `description-missing` — the link is up but the appliance's description could not
54560
+ * be loaded, so its values cannot be decoded.
54561
+ */
54562
+ var DishwasherAvailabilitySchema = _enum([
54563
+ "available",
54564
+ "offline",
54565
+ "description-missing"
54566
+ ]);
54567
+ var DishwasherConsumableLevelSchema = _enum([
54568
+ "ok",
54569
+ "low",
54570
+ "empty"
54571
+ ]);
54572
+ object({
54573
+ availability: DishwasherAvailabilitySchema,
54574
+ /** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
54575
+ state: DishwasherStateSchema,
54576
+ /** The appliance's operation state as reported; null when not known. */
54577
+ operationState: DishwasherOperationStateSchema.nullable(),
54578
+ /** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
54579
+ program: string().nullable(),
54580
+ /** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
54581
+ selectedProgram: string().nullable(),
54582
+ /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
54583
+ availablePrograms: array(string()),
54584
+ /** Seconds remaining on the active cycle, or null when not running / not known. */
54585
+ remainingSeconds: number().int().nonnegative().nullable(),
54586
+ /** Seconds the delayed start is set to (time until the cycle starts), or null. */
54587
+ delayedStartSeconds: number().int().nonnegative().nullable(),
54588
+ /** Cycle completion 0..100, or null when not applicable. */
54589
+ progressPercent: number().min(0).max(100).nullable(),
54590
+ /** True when the door is reported open; null when the door state is not known. */
54591
+ doorOpen: boolean().nullable(),
54592
+ /** True when the door is latched (locked) during a cycle; null when not reported. */
54593
+ doorLocked: boolean().nullable(),
54594
+ /** True when remote start is allowed (door closed, power on, etc.); null when not known. */
54595
+ remoteStartAllowed: boolean().nullable(),
54596
+ /** True when the appliance accepts remote control now; null when not known. */
54597
+ remoteControlActive: boolean().nullable(),
54598
+ /** True while somebody operates the appliance at its panel; null when not reported. */
54599
+ localControlActive: boolean().nullable(),
54600
+ /** Main power / switched-on state; null when not known. */
54601
+ powerOn: boolean().nullable(),
54602
+ /** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
54603
+ powerState: string().nullable(),
54604
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
54605
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54606
+ /** Option states: null when the appliance does not expose the option or has not said. */
54607
+ halfLoad: boolean().nullable(),
54608
+ hygienePlus: boolean().nullable(),
54609
+ /** Extra dry option when the appliance exposes it. */
54610
+ extraDry: boolean().nullable(),
54611
+ /** Intensive zone (lower basket) when the appliance exposes it. */
54612
+ intensiveZone: boolean().nullable(),
54613
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
54614
+ varioSpeedPlus: boolean().nullable(),
54615
+ /** Child lock (controls disabled on the appliance); null when not known. */
54616
+ childLock: boolean().nullable(),
54617
+ /** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
54618
+ activeEvents: array(string()),
54619
+ /** Numeric error code when the appliance reports one; null otherwise. */
54620
+ errorCode: number().nullable(),
54621
+ /** Name of the raised alert-level event while the appliance is in error; null otherwise. */
54622
+ errorLabel: string().nullable(),
54623
+ /** Ms epoch of the last value received from the appliance; 0 = never. */
54624
+ lastFetchedAt: number()
54625
+ });
54626
+ var DeviceIdSchema = number().int().nonnegative();
54627
+ /** A value a program option or setting can take. */
54628
+ var DishwasherValueSchema = union([
54629
+ boolean(),
54630
+ string(),
54631
+ number()
54632
+ ]);
54633
+ var DishwasherAccessSchema = _enum([
54634
+ "none",
54635
+ "read",
54636
+ "readWrite",
54637
+ "writeOnly",
54638
+ "readStatic"
54639
+ ]);
54640
+ /**
54641
+ * One option or setting the appliance declares, with the constraints its description
54642
+ * gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
54643
+ */
54644
+ var DishwasherOptionDescriptorSchema = object({
54645
+ /** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
54646
+ key: string(),
54647
+ /** Last segment of the key, for display. */
54648
+ name: string(),
54649
+ type: _enum([
54650
+ "boolean",
54651
+ "number",
54652
+ "enum",
54653
+ "string"
54654
+ ]),
54655
+ access: DishwasherAccessSchema,
54656
+ /** The appliance reports this entity as currently available. */
54657
+ available: boolean(),
54658
+ /** Unit the description declares for a number; null when it declares none. */
54659
+ unit: string().nullable(),
54660
+ min: number().nullable(),
54661
+ max: number().nullable(),
54662
+ step: number().nullable(),
54663
+ /** Allowed members of an enum; null for other types. */
54664
+ enumValues: array(string()).nullable(),
54665
+ defaultValue: DishwasherValueSchema.nullable()
54666
+ });
54667
+ var DishwasherProgramSchema = object({
54668
+ /** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
54669
+ key: string(),
54670
+ name: string(),
54671
+ /** The appliance currently offers this program. */
54672
+ available: boolean(),
54673
+ /** The options this program lists, with the program-level access / availability / default. */
54674
+ options: array(DishwasherOptionDescriptorSchema)
54675
+ });
54676
+ var DishwasherOptionsSchema = object({
54677
+ availability: DishwasherAvailabilitySchema,
54678
+ /** What the appliance can be told to do, from the commands its description declares. */
54679
+ supportsStart: boolean(),
54680
+ supportsPause: boolean(),
54681
+ supportsResume: boolean(),
54682
+ supportsStop: boolean(),
54683
+ supportsPower: boolean(),
54684
+ /** Every program the description lists, with its options. */
54685
+ programs: array(DishwasherProgramSchema),
54686
+ /** Every option and setting entity the description lists (programs reference these by key). */
54687
+ options: array(DishwasherOptionDescriptorSchema)
54688
+ });
54689
+ DeviceType.Dishwasher, method(object({
54690
+ deviceId: DeviceIdSchema,
54691
+ program: string().min(1).optional(),
54692
+ options: record(string(), DishwasherValueSchema).optional()
54693
+ }), _void(), {
54694
+ kind: "mutation",
54695
+ auth: "protected"
54696
+ }), method(object({ deviceId: DeviceIdSchema }), _void(), {
54697
+ kind: "mutation",
54698
+ auth: "protected"
54699
+ }), method(object({ deviceId: DeviceIdSchema }), _void(), {
54700
+ kind: "mutation",
54701
+ auth: "protected"
54702
+ }), method(object({ deviceId: DeviceIdSchema }), _void(), {
54703
+ kind: "mutation",
54704
+ auth: "protected"
54705
+ }), method(object({
54706
+ deviceId: DeviceIdSchema,
54707
+ program: string().min(1)
54708
+ }), _void(), {
54709
+ kind: "mutation",
54710
+ auth: "protected"
54711
+ }), method(object({
54712
+ deviceId: DeviceIdSchema,
54713
+ on: boolean()
54714
+ }), _void(), {
54715
+ kind: "mutation",
54716
+ auth: "protected"
54717
+ }), method(object({
54718
+ deviceId: DeviceIdSchema,
54719
+ on: boolean()
54720
+ }), _void(), {
54721
+ kind: "mutation",
54722
+ auth: "protected"
54723
+ }), method(object({
54724
+ deviceId: DeviceIdSchema,
54725
+ on: boolean()
54726
+ }), _void(), {
54727
+ kind: "mutation",
54728
+ auth: "protected"
54729
+ }), method(object({
54730
+ deviceId: DeviceIdSchema,
54731
+ on: boolean()
54732
+ }), _void(), {
54733
+ kind: "mutation",
54734
+ auth: "protected"
54735
+ }), method(object({
54736
+ deviceId: DeviceIdSchema,
54737
+ on: boolean()
54738
+ }), _void(), {
54739
+ kind: "mutation",
54740
+ auth: "protected"
54741
+ }), method(object({
54742
+ deviceId: DeviceIdSchema,
54743
+ on: boolean()
54744
+ }), _void(), {
54745
+ kind: "mutation",
54746
+ auth: "protected"
54747
+ }), method(object({
54748
+ deviceId: DeviceIdSchema,
54749
+ on: boolean()
54750
+ }), _void(), {
54751
+ kind: "mutation",
54752
+ auth: "protected"
54753
+ }), method(object({
54754
+ deviceId: DeviceIdSchema,
54755
+ key: string().min(1),
54756
+ value: DishwasherValueSchema
54757
+ }), _void(), {
54758
+ kind: "mutation",
54759
+ auth: "protected"
54760
+ }), method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" });
54481
54761
  object({
54482
54762
  /** Ms epoch of the last press. null = never observed since this provider started. */
54483
54763
  lastPressedAt: number().nullable(),
@@ -55043,6 +55323,13 @@ object({
55043
55323
  lastChangedAt: number()
55044
55324
  });
55045
55325
  DeviceType.Sensor;
55326
+ object({
55327
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
55328
+ position: number().min(0).max(100).nullable(),
55329
+ /** Ms epoch when the slice was last updated (push or poll). */
55330
+ lastFetchedAt: number()
55331
+ });
55332
+ DeviceType.Thermostat;
55046
55333
  object({
55047
55334
  /** Whether the humidifier is currently on. */
55048
55335
  on: boolean(),
@@ -62109,7 +62396,7 @@ var AccessoryKind = {
62109
62396
  PrivacyMask: DeviceRole.PrivacyMask
62110
62397
  };
62111
62398
  AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
62112
- 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;
62399
+ 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;
62113
62400
  new Set(Object.values(DeviceType));
62114
62401
  Object.freeze({
62115
62402
  "accessories.getStatus": {
@@ -64530,6 +64817,96 @@ Object.freeze({
64530
64817
  addonId: null,
64531
64818
  access: "view"
64532
64819
  },
64820
+ "dishwasher.getOptions": {
64821
+ capName: "dishwasher",
64822
+ capScope: "device",
64823
+ addonId: null,
64824
+ access: "view"
64825
+ },
64826
+ "dishwasher.getStatus": {
64827
+ capName: "dishwasher",
64828
+ capScope: "device",
64829
+ addonId: null,
64830
+ access: "view"
64831
+ },
64832
+ "dishwasher.pause": {
64833
+ capName: "dishwasher",
64834
+ capScope: "device",
64835
+ addonId: null,
64836
+ access: "create"
64837
+ },
64838
+ "dishwasher.resume": {
64839
+ capName: "dishwasher",
64840
+ capScope: "device",
64841
+ addonId: null,
64842
+ access: "create"
64843
+ },
64844
+ "dishwasher.setChildLock": {
64845
+ capName: "dishwasher",
64846
+ capScope: "device",
64847
+ addonId: null,
64848
+ access: "create"
64849
+ },
64850
+ "dishwasher.setExtraDry": {
64851
+ capName: "dishwasher",
64852
+ capScope: "device",
64853
+ addonId: null,
64854
+ access: "create"
64855
+ },
64856
+ "dishwasher.setHalfLoad": {
64857
+ capName: "dishwasher",
64858
+ capScope: "device",
64859
+ addonId: null,
64860
+ access: "create"
64861
+ },
64862
+ "dishwasher.setHygienePlus": {
64863
+ capName: "dishwasher",
64864
+ capScope: "device",
64865
+ addonId: null,
64866
+ access: "create"
64867
+ },
64868
+ "dishwasher.setIntensiveZone": {
64869
+ capName: "dishwasher",
64870
+ capScope: "device",
64871
+ addonId: null,
64872
+ access: "create"
64873
+ },
64874
+ "dishwasher.setOption": {
64875
+ capName: "dishwasher",
64876
+ capScope: "device",
64877
+ addonId: null,
64878
+ access: "create"
64879
+ },
64880
+ "dishwasher.setPower": {
64881
+ capName: "dishwasher",
64882
+ capScope: "device",
64883
+ addonId: null,
64884
+ access: "create"
64885
+ },
64886
+ "dishwasher.setProgram": {
64887
+ capName: "dishwasher",
64888
+ capScope: "device",
64889
+ addonId: null,
64890
+ access: "create"
64891
+ },
64892
+ "dishwasher.setVarioSpeedPlus": {
64893
+ capName: "dishwasher",
64894
+ capScope: "device",
64895
+ addonId: null,
64896
+ access: "create"
64897
+ },
64898
+ "dishwasher.start": {
64899
+ capName: "dishwasher",
64900
+ capScope: "device",
64901
+ addonId: null,
64902
+ access: "create"
64903
+ },
64904
+ "dishwasher.stop": {
64905
+ capName: "dishwasher",
64906
+ capScope: "device",
64907
+ addonId: null,
64908
+ access: "create"
64909
+ },
64533
64910
  "doorbell.getStatus": {
64534
64911
  capName: "doorbell",
64535
64912
  capScope: "device",
@@ -64740,6 +65117,12 @@ Object.freeze({
64740
65117
  addonId: null,
64741
65118
  access: "view"
64742
65119
  },
65120
+ "heatingValve.getStatus": {
65121
+ capName: "heating-valve",
65122
+ capScope: "device",
65123
+ addonId: null,
65124
+ access: "view"
65125
+ },
64743
65126
  "humidifier.getStatus": {
64744
65127
  capName: "humidifier",
64745
65128
  capScope: "device",
@@ -68958,6 +69341,12 @@ Object.freeze({
68958
69341
  addonId: null,
68959
69342
  access: "view"
68960
69343
  },
69344
+ "storageMigration.moverClearance": {
69345
+ capName: "storage-migration",
69346
+ capScope: "system",
69347
+ addonId: null,
69348
+ access: "view"
69349
+ },
68961
69350
  "storageMigration.movers": {
68962
69351
  capName: "storage-migration",
68963
69352
  capScope: "system",
@@ -70327,7 +70716,7 @@ Object.freeze({
70327
70716
  access: "create"
70328
70717
  }
70329
70718
  });
70330
- 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;
70719
+ 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;
70331
70720
  DeviceFeature.BatteryOperated;
70332
70721
  Object.freeze({
70333
70722
  "accessories.getStatus": [{
@@ -71151,6 +71540,81 @@ Object.freeze({
71151
71540
  form: "single",
71152
71541
  optional: false
71153
71542
  }],
71543
+ "dishwasher.getOptions": [{
71544
+ name: "deviceId",
71545
+ form: "single",
71546
+ optional: false
71547
+ }],
71548
+ "dishwasher.getStatus": [{
71549
+ name: "deviceId",
71550
+ form: "single",
71551
+ optional: false
71552
+ }],
71553
+ "dishwasher.pause": [{
71554
+ name: "deviceId",
71555
+ form: "single",
71556
+ optional: false
71557
+ }],
71558
+ "dishwasher.resume": [{
71559
+ name: "deviceId",
71560
+ form: "single",
71561
+ optional: false
71562
+ }],
71563
+ "dishwasher.setChildLock": [{
71564
+ name: "deviceId",
71565
+ form: "single",
71566
+ optional: false
71567
+ }],
71568
+ "dishwasher.setExtraDry": [{
71569
+ name: "deviceId",
71570
+ form: "single",
71571
+ optional: false
71572
+ }],
71573
+ "dishwasher.setHalfLoad": [{
71574
+ name: "deviceId",
71575
+ form: "single",
71576
+ optional: false
71577
+ }],
71578
+ "dishwasher.setHygienePlus": [{
71579
+ name: "deviceId",
71580
+ form: "single",
71581
+ optional: false
71582
+ }],
71583
+ "dishwasher.setIntensiveZone": [{
71584
+ name: "deviceId",
71585
+ form: "single",
71586
+ optional: false
71587
+ }],
71588
+ "dishwasher.setOption": [{
71589
+ name: "deviceId",
71590
+ form: "single",
71591
+ optional: false
71592
+ }],
71593
+ "dishwasher.setPower": [{
71594
+ name: "deviceId",
71595
+ form: "single",
71596
+ optional: false
71597
+ }],
71598
+ "dishwasher.setProgram": [{
71599
+ name: "deviceId",
71600
+ form: "single",
71601
+ optional: false
71602
+ }],
71603
+ "dishwasher.setVarioSpeedPlus": [{
71604
+ name: "deviceId",
71605
+ form: "single",
71606
+ optional: false
71607
+ }],
71608
+ "dishwasher.start": [{
71609
+ name: "deviceId",
71610
+ form: "single",
71611
+ optional: false
71612
+ }],
71613
+ "dishwasher.stop": [{
71614
+ name: "deviceId",
71615
+ form: "single",
71616
+ optional: false
71617
+ }],
71154
71618
  "doorbell.getStatus": [{
71155
71619
  name: "deviceId",
71156
71620
  form: "single",
@@ -71220,6 +71684,11 @@ Object.freeze({
71220
71684
  form: "single",
71221
71685
  optional: false
71222
71686
  }],
71687
+ "heatingValve.getStatus": [{
71688
+ name: "deviceId",
71689
+ form: "single",
71690
+ optional: false
71691
+ }],
71223
71692
  "humidifier.getStatus": [{
71224
71693
  name: "deviceId",
71225
71694
  form: "single",
@@ -73384,6 +73853,9 @@ new Map(Object.entries({
73384
73853
  "wrapper-update-available": "system",
73385
73854
  "backup-completed": "system",
73386
73855
  "export-completed": "system",
73856
+ "alert-critical": "system",
73857
+ "alert-error": "system",
73858
+ "alert-critical-resolved": "system",
73387
73859
  "storage-location-low": "system",
73388
73860
  "storage-location-critical": "system",
73389
73861
  "storage-location-ok": "system",
@@ -73508,6 +73980,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
73508
73980
  "storage-location-ok"
73509
73981
  ]
73510
73982
  },
73983
+ {
73984
+ id: "alerts",
73985
+ family: "system",
73986
+ label: "Alerts",
73987
+ kinds: [
73988
+ "alert-critical",
73989
+ "alert-error",
73990
+ "alert-critical-resolved"
73991
+ ]
73992
+ },
73511
73993
  {
73512
73994
  id: "alarm",
73513
73995
  family: "alarm",
@@ -73552,6 +74034,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
73552
74034
  return [[descriptor.kind, field]];
73553
74035
  })));
73554
74036
  Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
74037
+ object({
74038
+ phase: _enum(["raised", "resolved"]),
74039
+ episodeId: string().min(1),
74040
+ alertId: string().min(1),
74041
+ severity: AlertSeveritySchema,
74042
+ category: string(),
74043
+ title: string(),
74044
+ message: string(),
74045
+ sourceType: string().optional(),
74046
+ sourceId: string().optional(),
74047
+ nodeId: string().optional(),
74048
+ /** The alert's own action link (where the operator acts on it), when it has one. */
74049
+ actionUrl: string().optional(),
74050
+ at: number()
74051
+ });
73555
74052
  var RULE_BODY_ONLY = ["body"];
73556
74053
  var RULE_TEXT = ["title", "body"];
73557
74054
  var BATTERY = ["device-battery-low", "device-battery-normal"];
@@ -73561,6 +74058,11 @@ var TANK = [
73561
74058
  "device-tank-full",
73562
74059
  "device-tank-normal"
73563
74060
  ];
74061
+ var ALERT_EPISODE = [
74062
+ "alert-critical",
74063
+ "alert-error",
74064
+ "alert-critical-resolved"
74065
+ ];
73564
74066
  var UPDATES = [
73565
74067
  "addon-update-available",
73566
74068
  "server-update-available",
@@ -73753,14 +74255,14 @@ var STATE_SUMMARY_VARS = [
73753
74255
  ([...RULE_TEXT], [...CONSUMABLE]),
73754
74256
  ([...RULE_TEXT], [...TANK]),
73755
74257
  [...RULE_TEXT],
73756
- ([...RULE_TEXT], [...UPDATES]),
73757
- ([...RULE_TEXT], [...UPDATES]),
73758
- [...RULE_TEXT],
74258
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
74259
+ ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
73759
74260
  [...RULE_TEXT],
73760
74261
  [...RULE_TEXT],
73761
74262
  [...RULE_TEXT],
73762
74263
  [...RULE_TEXT],
73763
74264
  [...RULE_TEXT],
74265
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
73764
74266
  [...RULE_TEXT],
73765
74267
  [...RULE_TEXT],
73766
74268
  [...RULE_TEXT],
@@ -73778,7 +74280,11 @@ var STATE_SUMMARY_VARS = [
73778
74280
  [...RULE_TEXT],
73779
74281
  [...RULE_TEXT],
73780
74282
  [...RULE_TEXT],
73781
- [...RULE_TEXT],
74283
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
74284
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
74285
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
74286
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
74287
+ ([...RULE_TEXT], [...ALERT_EPISODE]),
73782
74288
  [...RULE_TEXT],
73783
74289
  [...RULE_TEXT],
73784
74290
  [...RULE_TEXT],