@camstack/addon-notifiers 1.2.601 → 1.2.602

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/addon.js CHANGED
@@ -5568,7 +5568,7 @@ var ZodIssueCode = {
5568
5568
  var ZodFirstPartyTypeKind;
5569
5569
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5570
5570
  //#endregion
5571
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5571
+ //#region ../types/dist/sleep-BegKjwUu.mjs
5572
5572
  /**
5573
5573
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5574
5574
  * window to float samples (D455).
@@ -8766,7 +8766,7 @@ function userError(code, params, englishFallback) {
8766
8766
  return new CamstackError(code, params, englishFallback);
8767
8767
  }
8768
8768
  //#endregion
8769
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8769
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8770
8770
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8771
8771
  DeviceType["Camera"] = "camera";
8772
8772
  DeviceType["Hub"] = "hub";
@@ -8858,6 +8858,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8858
8858
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8859
8859
  * integrations sharing the same food/desiccant/hopper surface. */
8860
8860
  DeviceType["PetFeeder"] = "pet-feeder";
8861
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8862
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8863
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8864
+ DeviceType["Dishwasher"] = "dishwasher";
8861
8865
  return DeviceType;
8862
8866
  }({});
8863
8867
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -9105,7 +9109,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
9105
9109
  return DeviceRole;
9106
9110
  }({});
9107
9111
  //#endregion
9108
- //#region ../types/dist/composition-DOwQB_Ua.mjs
9112
+ //#region ../types/dist/composition-CB6PMT9p.mjs
9109
9113
  /**
9110
9114
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9111
9115
  *
@@ -13627,8 +13631,13 @@ var AlertSeveritySchema = _enum([
13627
13631
  "info",
13628
13632
  "success",
13629
13633
  "warning",
13630
- "error"
13634
+ "error",
13635
+ "critical"
13631
13636
  ]);
13637
+ var AlertActionSchema = object({
13638
+ label: string(),
13639
+ href: string().optional()
13640
+ });
13632
13641
  var AlertStatusSchema = _enum([
13633
13642
  "active",
13634
13643
  "in-progress",
@@ -13646,6 +13655,7 @@ var AlertSchema = object({
13646
13655
  severity: AlertSeveritySchema,
13647
13656
  title: string(),
13648
13657
  message: string(),
13658
+ action: AlertActionSchema.optional(),
13649
13659
  status: AlertStatusSchema,
13650
13660
  progress: number().optional(),
13651
13661
  read: boolean(),
@@ -17790,7 +17800,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
17790
17800
  });
17791
17801
  /**
17792
17802
  * `device-adoption` — generic discovery + adoption surface,
17793
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17803
+ * system-scoped collection (one provider per integration addon), routed
17804
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17805
+ * pin model as `connection-test`. The admin UI keeps using
17806
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17807
+ * successor to `ha-discovery`:
17794
17808
  * keyed by `integrationId` (the addon resolves integrationId → broker
17795
17809
  * internally) rather than a connection-specific `brokerId`, and it
17796
17810
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -53602,7 +53616,7 @@ var BatteryStatusSchema = object({
53602
53616
  */
53603
53617
  binary: boolean().optional()
53604
53618
  });
53605
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
53619
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
53606
53620
  deviceId: number(),
53607
53621
  /** Bound on the wait. Sensible range 3000–10000ms. */
53608
53622
  timeoutMs: number().int().min(500).max(3e4).default(8e3)
@@ -54478,6 +54492,130 @@ object({
54478
54492
  deviceId: number(),
54479
54493
  status: DeviceStatusSchema
54480
54494
  });
54495
+ /**
54496
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
54497
+ * consumable levels (salt, rinse aid) and common program options.
54498
+ *
54499
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
54500
+ * by any integration that exposes the same program / option surface.
54501
+ *
54502
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
54503
+ * provider refreshes the slice on an interval and eagerly after commands.
54504
+ */
54505
+ var DishwasherStateSchema = _enum([
54506
+ "idle",
54507
+ "running",
54508
+ "paused",
54509
+ "finished",
54510
+ "error",
54511
+ "unavailable"
54512
+ ]);
54513
+ var DishwasherConsumableLevelSchema = _enum([
54514
+ "ok",
54515
+ "low",
54516
+ "empty"
54517
+ ]);
54518
+ object({
54519
+ state: DishwasherStateSchema,
54520
+ /** Active program id/name, or null when none selected / unknown. */
54521
+ program: string().nullable(),
54522
+ /** Program tokens the hardware accepts — drives the UI selector. */
54523
+ availablePrograms: array(string()),
54524
+ /** Minutes remaining on the active cycle, or null when not running. */
54525
+ remainingMinutes: number().int().nonnegative().nullable(),
54526
+ /** Cycle completion 0..100, or null when not applicable. */
54527
+ progressPercent: number().min(0).max(100).nullable(),
54528
+ /** True when the door is reported open. */
54529
+ doorOpen: boolean(),
54530
+ /** True when remote start is allowed (door closed, power on, etc.). */
54531
+ remoteStartAllowed: boolean(),
54532
+ /** Main power / switched-on state. */
54533
+ powerOn: boolean(),
54534
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
54535
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54536
+ halfLoad: boolean(),
54537
+ hygienePlus: boolean(),
54538
+ /** Extra dry option when the appliance exposes it. */
54539
+ extraDry: boolean(),
54540
+ /** Intensive zone (lower basket) when the appliance exposes it. */
54541
+ intensiveZone: boolean(),
54542
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
54543
+ varioSpeedPlus: boolean(),
54544
+ /** Child lock (controls disabled on the appliance). */
54545
+ childLock: boolean(),
54546
+ errorCode: number().nullable(),
54547
+ errorLabel: string().nullable(),
54548
+ lastFetchedAt: number()
54549
+ });
54550
+ DeviceType.Dishwasher, method(object({ deviceId: number().int().nonnegative() }), _void(), {
54551
+ kind: "mutation",
54552
+ auth: "protected"
54553
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54554
+ kind: "mutation",
54555
+ auth: "protected"
54556
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54557
+ kind: "mutation",
54558
+ auth: "protected"
54559
+ }), method(object({
54560
+ deviceId: number().int().nonnegative(),
54561
+ program: string().min(1)
54562
+ }), _void(), {
54563
+ kind: "mutation",
54564
+ auth: "protected"
54565
+ }), method(object({
54566
+ deviceId: number().int().nonnegative(),
54567
+ on: boolean()
54568
+ }), _void(), {
54569
+ kind: "mutation",
54570
+ auth: "protected"
54571
+ }), method(object({
54572
+ deviceId: number().int().nonnegative(),
54573
+ on: boolean()
54574
+ }), _void(), {
54575
+ kind: "mutation",
54576
+ auth: "protected"
54577
+ }), method(object({
54578
+ deviceId: number().int().nonnegative(),
54579
+ on: boolean()
54580
+ }), _void(), {
54581
+ kind: "mutation",
54582
+ auth: "protected"
54583
+ }), method(object({
54584
+ deviceId: number().int().nonnegative(),
54585
+ on: boolean()
54586
+ }), _void(), {
54587
+ kind: "mutation",
54588
+ auth: "protected"
54589
+ }), method(object({
54590
+ deviceId: number().int().nonnegative(),
54591
+ on: boolean()
54592
+ }), _void(), {
54593
+ kind: "mutation",
54594
+ auth: "protected"
54595
+ }), method(object({
54596
+ deviceId: number().int().nonnegative(),
54597
+ on: boolean()
54598
+ }), _void(), {
54599
+ kind: "mutation",
54600
+ auth: "protected"
54601
+ }), method(object({
54602
+ deviceId: number().int().nonnegative(),
54603
+ on: boolean()
54604
+ }), _void(), {
54605
+ kind: "mutation",
54606
+ auth: "protected"
54607
+ }), method(object({
54608
+ deviceId: number().int().nonnegative(),
54609
+ key: string().min(1),
54610
+ value: union([
54611
+ boolean(),
54612
+ string(),
54613
+ number()
54614
+ ])
54615
+ }), _void(), {
54616
+ kind: "mutation",
54617
+ auth: "protected"
54618
+ });
54481
54619
  object({
54482
54620
  /** Ms epoch of the last press. null = never observed since this provider started. */
54483
54621
  lastPressedAt: number().nullable(),
@@ -55043,6 +55181,13 @@ object({
55043
55181
  lastChangedAt: number()
55044
55182
  });
55045
55183
  DeviceType.Sensor;
55184
+ object({
55185
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
55186
+ position: number().min(0).max(100).nullable(),
55187
+ /** Ms epoch when the slice was last updated (push or poll). */
55188
+ lastFetchedAt: number()
55189
+ });
55190
+ DeviceType.Thermostat;
55046
55191
  object({
55047
55192
  /** Whether the humidifier is currently on. */
55048
55193
  on: boolean(),
@@ -62109,7 +62254,7 @@ var AccessoryKind = {
62109
62254
  PrivacyMask: DeviceRole.PrivacyMask
62110
62255
  };
62111
62256
  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;
62257
+ 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
62258
  new Set(Object.values(DeviceType));
62114
62259
  Object.freeze({
62115
62260
  "accessories.getStatus": {
@@ -64530,6 +64675,84 @@ Object.freeze({
64530
64675
  addonId: null,
64531
64676
  access: "view"
64532
64677
  },
64678
+ "dishwasher.getStatus": {
64679
+ capName: "dishwasher",
64680
+ capScope: "device",
64681
+ addonId: null,
64682
+ access: "view"
64683
+ },
64684
+ "dishwasher.pause": {
64685
+ capName: "dishwasher",
64686
+ capScope: "device",
64687
+ addonId: null,
64688
+ access: "create"
64689
+ },
64690
+ "dishwasher.setChildLock": {
64691
+ capName: "dishwasher",
64692
+ capScope: "device",
64693
+ addonId: null,
64694
+ access: "create"
64695
+ },
64696
+ "dishwasher.setExtraDry": {
64697
+ capName: "dishwasher",
64698
+ capScope: "device",
64699
+ addonId: null,
64700
+ access: "create"
64701
+ },
64702
+ "dishwasher.setHalfLoad": {
64703
+ capName: "dishwasher",
64704
+ capScope: "device",
64705
+ addonId: null,
64706
+ access: "create"
64707
+ },
64708
+ "dishwasher.setHygienePlus": {
64709
+ capName: "dishwasher",
64710
+ capScope: "device",
64711
+ addonId: null,
64712
+ access: "create"
64713
+ },
64714
+ "dishwasher.setIntensiveZone": {
64715
+ capName: "dishwasher",
64716
+ capScope: "device",
64717
+ addonId: null,
64718
+ access: "create"
64719
+ },
64720
+ "dishwasher.setOption": {
64721
+ capName: "dishwasher",
64722
+ capScope: "device",
64723
+ addonId: null,
64724
+ access: "create"
64725
+ },
64726
+ "dishwasher.setPower": {
64727
+ capName: "dishwasher",
64728
+ capScope: "device",
64729
+ addonId: null,
64730
+ access: "create"
64731
+ },
64732
+ "dishwasher.setProgram": {
64733
+ capName: "dishwasher",
64734
+ capScope: "device",
64735
+ addonId: null,
64736
+ access: "create"
64737
+ },
64738
+ "dishwasher.setVarioSpeedPlus": {
64739
+ capName: "dishwasher",
64740
+ capScope: "device",
64741
+ addonId: null,
64742
+ access: "create"
64743
+ },
64744
+ "dishwasher.start": {
64745
+ capName: "dishwasher",
64746
+ capScope: "device",
64747
+ addonId: null,
64748
+ access: "create"
64749
+ },
64750
+ "dishwasher.stop": {
64751
+ capName: "dishwasher",
64752
+ capScope: "device",
64753
+ addonId: null,
64754
+ access: "create"
64755
+ },
64533
64756
  "doorbell.getStatus": {
64534
64757
  capName: "doorbell",
64535
64758
  capScope: "device",
@@ -64740,6 +64963,12 @@ Object.freeze({
64740
64963
  addonId: null,
64741
64964
  access: "view"
64742
64965
  },
64966
+ "heatingValve.getStatus": {
64967
+ capName: "heating-valve",
64968
+ capScope: "device",
64969
+ addonId: null,
64970
+ access: "view"
64971
+ },
64743
64972
  "humidifier.getStatus": {
64744
64973
  capName: "humidifier",
64745
64974
  capScope: "device",
@@ -70327,7 +70556,7 @@ Object.freeze({
70327
70556
  access: "create"
70328
70557
  }
70329
70558
  });
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;
70559
+ 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
70560
  DeviceFeature.BatteryOperated;
70332
70561
  Object.freeze({
70333
70562
  "accessories.getStatus": [{
@@ -71151,6 +71380,71 @@ Object.freeze({
71151
71380
  form: "single",
71152
71381
  optional: false
71153
71382
  }],
71383
+ "dishwasher.getStatus": [{
71384
+ name: "deviceId",
71385
+ form: "single",
71386
+ optional: false
71387
+ }],
71388
+ "dishwasher.pause": [{
71389
+ name: "deviceId",
71390
+ form: "single",
71391
+ optional: false
71392
+ }],
71393
+ "dishwasher.setChildLock": [{
71394
+ name: "deviceId",
71395
+ form: "single",
71396
+ optional: false
71397
+ }],
71398
+ "dishwasher.setExtraDry": [{
71399
+ name: "deviceId",
71400
+ form: "single",
71401
+ optional: false
71402
+ }],
71403
+ "dishwasher.setHalfLoad": [{
71404
+ name: "deviceId",
71405
+ form: "single",
71406
+ optional: false
71407
+ }],
71408
+ "dishwasher.setHygienePlus": [{
71409
+ name: "deviceId",
71410
+ form: "single",
71411
+ optional: false
71412
+ }],
71413
+ "dishwasher.setIntensiveZone": [{
71414
+ name: "deviceId",
71415
+ form: "single",
71416
+ optional: false
71417
+ }],
71418
+ "dishwasher.setOption": [{
71419
+ name: "deviceId",
71420
+ form: "single",
71421
+ optional: false
71422
+ }],
71423
+ "dishwasher.setPower": [{
71424
+ name: "deviceId",
71425
+ form: "single",
71426
+ optional: false
71427
+ }],
71428
+ "dishwasher.setProgram": [{
71429
+ name: "deviceId",
71430
+ form: "single",
71431
+ optional: false
71432
+ }],
71433
+ "dishwasher.setVarioSpeedPlus": [{
71434
+ name: "deviceId",
71435
+ form: "single",
71436
+ optional: false
71437
+ }],
71438
+ "dishwasher.start": [{
71439
+ name: "deviceId",
71440
+ form: "single",
71441
+ optional: false
71442
+ }],
71443
+ "dishwasher.stop": [{
71444
+ name: "deviceId",
71445
+ form: "single",
71446
+ optional: false
71447
+ }],
71154
71448
  "doorbell.getStatus": [{
71155
71449
  name: "deviceId",
71156
71450
  form: "single",
@@ -71220,6 +71514,11 @@ Object.freeze({
71220
71514
  form: "single",
71221
71515
  optional: false
71222
71516
  }],
71517
+ "heatingValve.getStatus": [{
71518
+ name: "deviceId",
71519
+ form: "single",
71520
+ optional: false
71521
+ }],
71223
71522
  "humidifier.getStatus": [{
71224
71523
  name: "deviceId",
71225
71524
  form: "single",
package/dist/addon.mjs CHANGED
@@ -5541,7 +5541,7 @@ var ZodIssueCode = {
5541
5541
  var ZodFirstPartyTypeKind;
5542
5542
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5543
5543
  //#endregion
5544
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5544
+ //#region ../types/dist/sleep-BegKjwUu.mjs
5545
5545
  /**
5546
5546
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5547
5547
  * window to float samples (D455).
@@ -8739,7 +8739,7 @@ function userError(code, params, englishFallback) {
8739
8739
  return new CamstackError(code, params, englishFallback);
8740
8740
  }
8741
8741
  //#endregion
8742
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8742
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8743
8743
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8744
8744
  DeviceType["Camera"] = "camera";
8745
8745
  DeviceType["Hub"] = "hub";
@@ -8831,6 +8831,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8831
8831
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8832
8832
  * integrations sharing the same food/desiccant/hopper surface. */
8833
8833
  DeviceType["PetFeeder"] = "pet-feeder";
8834
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8835
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8836
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8837
+ DeviceType["Dishwasher"] = "dishwasher";
8834
8838
  return DeviceType;
8835
8839
  }({});
8836
8840
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -9078,7 +9082,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
9078
9082
  return DeviceRole;
9079
9083
  }({});
9080
9084
  //#endregion
9081
- //#region ../types/dist/composition-DOwQB_Ua.mjs
9085
+ //#region ../types/dist/composition-CB6PMT9p.mjs
9082
9086
  /**
9083
9087
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9084
9088
  *
@@ -13600,8 +13604,13 @@ var AlertSeveritySchema = _enum([
13600
13604
  "info",
13601
13605
  "success",
13602
13606
  "warning",
13603
- "error"
13607
+ "error",
13608
+ "critical"
13604
13609
  ]);
13610
+ var AlertActionSchema = object({
13611
+ label: string(),
13612
+ href: string().optional()
13613
+ });
13605
13614
  var AlertStatusSchema = _enum([
13606
13615
  "active",
13607
13616
  "in-progress",
@@ -13619,6 +13628,7 @@ var AlertSchema = object({
13619
13628
  severity: AlertSeveritySchema,
13620
13629
  title: string(),
13621
13630
  message: string(),
13631
+ action: AlertActionSchema.optional(),
13622
13632
  status: AlertStatusSchema,
13623
13633
  progress: number().optional(),
13624
13634
  read: boolean(),
@@ -17763,7 +17773,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
17763
17773
  });
17764
17774
  /**
17765
17775
  * `device-adoption` — generic discovery + adoption surface,
17766
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17776
+ * system-scoped collection (one provider per integration addon), routed
17777
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17778
+ * pin model as `connection-test`. The admin UI keeps using
17779
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17780
+ * successor to `ha-discovery`:
17767
17781
  * keyed by `integrationId` (the addon resolves integrationId → broker
17768
17782
  * internally) rather than a connection-specific `brokerId`, and it
17769
17783
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -53575,7 +53589,7 @@ var BatteryStatusSchema = object({
53575
53589
  */
53576
53590
  binary: boolean().optional()
53577
53591
  });
53578
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
53592
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
53579
53593
  deviceId: number(),
53580
53594
  /** Bound on the wait. Sensible range 3000–10000ms. */
53581
53595
  timeoutMs: number().int().min(500).max(3e4).default(8e3)
@@ -54451,6 +54465,130 @@ object({
54451
54465
  deviceId: number(),
54452
54466
  status: DeviceStatusSchema
54453
54467
  });
54468
+ /**
54469
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
54470
+ * consumable levels (salt, rinse aid) and common program options.
54471
+ *
54472
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
54473
+ * by any integration that exposes the same program / option surface.
54474
+ *
54475
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
54476
+ * provider refreshes the slice on an interval and eagerly after commands.
54477
+ */
54478
+ var DishwasherStateSchema = _enum([
54479
+ "idle",
54480
+ "running",
54481
+ "paused",
54482
+ "finished",
54483
+ "error",
54484
+ "unavailable"
54485
+ ]);
54486
+ var DishwasherConsumableLevelSchema = _enum([
54487
+ "ok",
54488
+ "low",
54489
+ "empty"
54490
+ ]);
54491
+ object({
54492
+ state: DishwasherStateSchema,
54493
+ /** Active program id/name, or null when none selected / unknown. */
54494
+ program: string().nullable(),
54495
+ /** Program tokens the hardware accepts — drives the UI selector. */
54496
+ availablePrograms: array(string()),
54497
+ /** Minutes remaining on the active cycle, or null when not running. */
54498
+ remainingMinutes: number().int().nonnegative().nullable(),
54499
+ /** Cycle completion 0..100, or null when not applicable. */
54500
+ progressPercent: number().min(0).max(100).nullable(),
54501
+ /** True when the door is reported open. */
54502
+ doorOpen: boolean(),
54503
+ /** True when remote start is allowed (door closed, power on, etc.). */
54504
+ remoteStartAllowed: boolean(),
54505
+ /** Main power / switched-on state. */
54506
+ powerOn: boolean(),
54507
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
54508
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54509
+ halfLoad: boolean(),
54510
+ hygienePlus: boolean(),
54511
+ /** Extra dry option when the appliance exposes it. */
54512
+ extraDry: boolean(),
54513
+ /** Intensive zone (lower basket) when the appliance exposes it. */
54514
+ intensiveZone: boolean(),
54515
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
54516
+ varioSpeedPlus: boolean(),
54517
+ /** Child lock (controls disabled on the appliance). */
54518
+ childLock: boolean(),
54519
+ errorCode: number().nullable(),
54520
+ errorLabel: string().nullable(),
54521
+ lastFetchedAt: number()
54522
+ });
54523
+ DeviceType.Dishwasher, method(object({ deviceId: number().int().nonnegative() }), _void(), {
54524
+ kind: "mutation",
54525
+ auth: "protected"
54526
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54527
+ kind: "mutation",
54528
+ auth: "protected"
54529
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54530
+ kind: "mutation",
54531
+ auth: "protected"
54532
+ }), method(object({
54533
+ deviceId: number().int().nonnegative(),
54534
+ program: string().min(1)
54535
+ }), _void(), {
54536
+ kind: "mutation",
54537
+ auth: "protected"
54538
+ }), method(object({
54539
+ deviceId: number().int().nonnegative(),
54540
+ on: boolean()
54541
+ }), _void(), {
54542
+ kind: "mutation",
54543
+ auth: "protected"
54544
+ }), method(object({
54545
+ deviceId: number().int().nonnegative(),
54546
+ on: boolean()
54547
+ }), _void(), {
54548
+ kind: "mutation",
54549
+ auth: "protected"
54550
+ }), method(object({
54551
+ deviceId: number().int().nonnegative(),
54552
+ on: boolean()
54553
+ }), _void(), {
54554
+ kind: "mutation",
54555
+ auth: "protected"
54556
+ }), method(object({
54557
+ deviceId: number().int().nonnegative(),
54558
+ on: boolean()
54559
+ }), _void(), {
54560
+ kind: "mutation",
54561
+ auth: "protected"
54562
+ }), method(object({
54563
+ deviceId: number().int().nonnegative(),
54564
+ on: boolean()
54565
+ }), _void(), {
54566
+ kind: "mutation",
54567
+ auth: "protected"
54568
+ }), method(object({
54569
+ deviceId: number().int().nonnegative(),
54570
+ on: boolean()
54571
+ }), _void(), {
54572
+ kind: "mutation",
54573
+ auth: "protected"
54574
+ }), method(object({
54575
+ deviceId: number().int().nonnegative(),
54576
+ on: boolean()
54577
+ }), _void(), {
54578
+ kind: "mutation",
54579
+ auth: "protected"
54580
+ }), method(object({
54581
+ deviceId: number().int().nonnegative(),
54582
+ key: string().min(1),
54583
+ value: union([
54584
+ boolean(),
54585
+ string(),
54586
+ number()
54587
+ ])
54588
+ }), _void(), {
54589
+ kind: "mutation",
54590
+ auth: "protected"
54591
+ });
54454
54592
  object({
54455
54593
  /** Ms epoch of the last press. null = never observed since this provider started. */
54456
54594
  lastPressedAt: number().nullable(),
@@ -55016,6 +55154,13 @@ object({
55016
55154
  lastChangedAt: number()
55017
55155
  });
55018
55156
  DeviceType.Sensor;
55157
+ object({
55158
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
55159
+ position: number().min(0).max(100).nullable(),
55160
+ /** Ms epoch when the slice was last updated (push or poll). */
55161
+ lastFetchedAt: number()
55162
+ });
55163
+ DeviceType.Thermostat;
55019
55164
  object({
55020
55165
  /** Whether the humidifier is currently on. */
55021
55166
  on: boolean(),
@@ -62082,7 +62227,7 @@ var AccessoryKind = {
62082
62227
  PrivacyMask: DeviceRole.PrivacyMask
62083
62228
  };
62084
62229
  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;
62230
+ 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
62231
  new Set(Object.values(DeviceType));
62087
62232
  Object.freeze({
62088
62233
  "accessories.getStatus": {
@@ -64503,6 +64648,84 @@ Object.freeze({
64503
64648
  addonId: null,
64504
64649
  access: "view"
64505
64650
  },
64651
+ "dishwasher.getStatus": {
64652
+ capName: "dishwasher",
64653
+ capScope: "device",
64654
+ addonId: null,
64655
+ access: "view"
64656
+ },
64657
+ "dishwasher.pause": {
64658
+ capName: "dishwasher",
64659
+ capScope: "device",
64660
+ addonId: null,
64661
+ access: "create"
64662
+ },
64663
+ "dishwasher.setChildLock": {
64664
+ capName: "dishwasher",
64665
+ capScope: "device",
64666
+ addonId: null,
64667
+ access: "create"
64668
+ },
64669
+ "dishwasher.setExtraDry": {
64670
+ capName: "dishwasher",
64671
+ capScope: "device",
64672
+ addonId: null,
64673
+ access: "create"
64674
+ },
64675
+ "dishwasher.setHalfLoad": {
64676
+ capName: "dishwasher",
64677
+ capScope: "device",
64678
+ addonId: null,
64679
+ access: "create"
64680
+ },
64681
+ "dishwasher.setHygienePlus": {
64682
+ capName: "dishwasher",
64683
+ capScope: "device",
64684
+ addonId: null,
64685
+ access: "create"
64686
+ },
64687
+ "dishwasher.setIntensiveZone": {
64688
+ capName: "dishwasher",
64689
+ capScope: "device",
64690
+ addonId: null,
64691
+ access: "create"
64692
+ },
64693
+ "dishwasher.setOption": {
64694
+ capName: "dishwasher",
64695
+ capScope: "device",
64696
+ addonId: null,
64697
+ access: "create"
64698
+ },
64699
+ "dishwasher.setPower": {
64700
+ capName: "dishwasher",
64701
+ capScope: "device",
64702
+ addonId: null,
64703
+ access: "create"
64704
+ },
64705
+ "dishwasher.setProgram": {
64706
+ capName: "dishwasher",
64707
+ capScope: "device",
64708
+ addonId: null,
64709
+ access: "create"
64710
+ },
64711
+ "dishwasher.setVarioSpeedPlus": {
64712
+ capName: "dishwasher",
64713
+ capScope: "device",
64714
+ addonId: null,
64715
+ access: "create"
64716
+ },
64717
+ "dishwasher.start": {
64718
+ capName: "dishwasher",
64719
+ capScope: "device",
64720
+ addonId: null,
64721
+ access: "create"
64722
+ },
64723
+ "dishwasher.stop": {
64724
+ capName: "dishwasher",
64725
+ capScope: "device",
64726
+ addonId: null,
64727
+ access: "create"
64728
+ },
64506
64729
  "doorbell.getStatus": {
64507
64730
  capName: "doorbell",
64508
64731
  capScope: "device",
@@ -64713,6 +64936,12 @@ Object.freeze({
64713
64936
  addonId: null,
64714
64937
  access: "view"
64715
64938
  },
64939
+ "heatingValve.getStatus": {
64940
+ capName: "heating-valve",
64941
+ capScope: "device",
64942
+ addonId: null,
64943
+ access: "view"
64944
+ },
64716
64945
  "humidifier.getStatus": {
64717
64946
  capName: "humidifier",
64718
64947
  capScope: "device",
@@ -70300,7 +70529,7 @@ Object.freeze({
70300
70529
  access: "create"
70301
70530
  }
70302
70531
  });
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;
70532
+ 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
70533
  DeviceFeature.BatteryOperated;
70305
70534
  Object.freeze({
70306
70535
  "accessories.getStatus": [{
@@ -71124,6 +71353,71 @@ Object.freeze({
71124
71353
  form: "single",
71125
71354
  optional: false
71126
71355
  }],
71356
+ "dishwasher.getStatus": [{
71357
+ name: "deviceId",
71358
+ form: "single",
71359
+ optional: false
71360
+ }],
71361
+ "dishwasher.pause": [{
71362
+ name: "deviceId",
71363
+ form: "single",
71364
+ optional: false
71365
+ }],
71366
+ "dishwasher.setChildLock": [{
71367
+ name: "deviceId",
71368
+ form: "single",
71369
+ optional: false
71370
+ }],
71371
+ "dishwasher.setExtraDry": [{
71372
+ name: "deviceId",
71373
+ form: "single",
71374
+ optional: false
71375
+ }],
71376
+ "dishwasher.setHalfLoad": [{
71377
+ name: "deviceId",
71378
+ form: "single",
71379
+ optional: false
71380
+ }],
71381
+ "dishwasher.setHygienePlus": [{
71382
+ name: "deviceId",
71383
+ form: "single",
71384
+ optional: false
71385
+ }],
71386
+ "dishwasher.setIntensiveZone": [{
71387
+ name: "deviceId",
71388
+ form: "single",
71389
+ optional: false
71390
+ }],
71391
+ "dishwasher.setOption": [{
71392
+ name: "deviceId",
71393
+ form: "single",
71394
+ optional: false
71395
+ }],
71396
+ "dishwasher.setPower": [{
71397
+ name: "deviceId",
71398
+ form: "single",
71399
+ optional: false
71400
+ }],
71401
+ "dishwasher.setProgram": [{
71402
+ name: "deviceId",
71403
+ form: "single",
71404
+ optional: false
71405
+ }],
71406
+ "dishwasher.setVarioSpeedPlus": [{
71407
+ name: "deviceId",
71408
+ form: "single",
71409
+ optional: false
71410
+ }],
71411
+ "dishwasher.start": [{
71412
+ name: "deviceId",
71413
+ form: "single",
71414
+ optional: false
71415
+ }],
71416
+ "dishwasher.stop": [{
71417
+ name: "deviceId",
71418
+ form: "single",
71419
+ optional: false
71420
+ }],
71127
71421
  "doorbell.getStatus": [{
71128
71422
  name: "deviceId",
71129
71423
  form: "single",
@@ -71193,6 +71487,11 @@ Object.freeze({
71193
71487
  form: "single",
71194
71488
  optional: false
71195
71489
  }],
71490
+ "heatingValve.getStatus": [{
71491
+ name: "deviceId",
71492
+ form: "single",
71493
+ optional: false
71494
+ }],
71196
71495
  "humidifier.getStatus": [{
71197
71496
  name: "deviceId",
71198
71497
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-notifiers",
3
- "version": "1.2.601",
3
+ "version": "1.2.602",
4
4
  "description": "System notifiers addon for CamStack — a `notification-output` collection provider hosting per-kind notifier adapters (ntfy, pushover, gotify, telegram, discord, webhook, zentik).",
5
5
  "keywords": [
6
6
  "camstack",