@camstack/addon-mqtt-broker 1.2.126 → 1.2.127

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.
@@ -5585,7 +5585,7 @@ var ZodIssueCode = {
5585
5585
  var ZodFirstPartyTypeKind;
5586
5586
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5587
5587
  //#endregion
5588
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5588
+ //#region ../types/dist/sleep-BegKjwUu.mjs
5589
5589
  /**
5590
5590
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5591
5591
  * window to float samples (D455).
@@ -8809,7 +8809,7 @@ object({
8809
8809
  params: record(string(), union([string(), number()])).optional()
8810
8810
  });
8811
8811
  //#endregion
8812
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8812
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8813
8813
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8814
8814
  DeviceType["Camera"] = "camera";
8815
8815
  DeviceType["Hub"] = "hub";
@@ -8901,6 +8901,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8901
8901
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8902
8902
  * integrations sharing the same food/desiccant/hopper surface. */
8903
8903
  DeviceType["PetFeeder"] = "pet-feeder";
8904
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8905
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8906
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8907
+ DeviceType["Dishwasher"] = "dishwasher";
8904
8908
  return DeviceType;
8905
8909
  }({});
8906
8910
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -9148,7 +9152,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
9148
9152
  return DeviceRole;
9149
9153
  }({});
9150
9154
  //#endregion
9151
- //#region ../types/dist/composition-DOwQB_Ua.mjs
9155
+ //#region ../types/dist/composition-CB6PMT9p.mjs
9152
9156
  /**
9153
9157
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9154
9158
  *
@@ -13534,8 +13538,13 @@ var AlertSeveritySchema = _enum([
13534
13538
  "info",
13535
13539
  "success",
13536
13540
  "warning",
13537
- "error"
13541
+ "error",
13542
+ "critical"
13538
13543
  ]);
13544
+ var AlertActionSchema = object({
13545
+ label: string(),
13546
+ href: string().optional()
13547
+ });
13539
13548
  var AlertStatusSchema = _enum([
13540
13549
  "active",
13541
13550
  "in-progress",
@@ -13553,6 +13562,7 @@ var AlertSchema = object({
13553
13562
  severity: AlertSeveritySchema,
13554
13563
  title: string(),
13555
13564
  message: string(),
13565
+ action: AlertActionSchema.optional(),
13556
13566
  status: AlertStatusSchema,
13557
13567
  progress: number().optional(),
13558
13568
  read: boolean(),
@@ -17746,7 +17756,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
17746
17756
  });
17747
17757
  /**
17748
17758
  * `device-adoption` — generic discovery + adoption surface,
17749
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17759
+ * system-scoped collection (one provider per integration addon), routed
17760
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17761
+ * pin model as `connection-test`. The admin UI keeps using
17762
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17763
+ * successor to `ha-discovery`:
17750
17764
  * keyed by `integrationId` (the addon resolves integrationId → broker
17751
17765
  * internally) rather than a connection-specific `brokerId`, and it
17752
17766
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -53555,7 +53569,7 @@ var BatteryStatusSchema = object({
53555
53569
  */
53556
53570
  binary: boolean().optional()
53557
53571
  });
53558
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
53572
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
53559
53573
  deviceId: number(),
53560
53574
  /** Bound on the wait. Sensible range 3000–10000ms. */
53561
53575
  timeoutMs: number().int().min(500).max(3e4).default(8e3)
@@ -54431,6 +54445,130 @@ object({
54431
54445
  deviceId: number(),
54432
54446
  status: DeviceStatusSchema
54433
54447
  });
54448
+ /**
54449
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
54450
+ * consumable levels (salt, rinse aid) and common program options.
54451
+ *
54452
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
54453
+ * by any integration that exposes the same program / option surface.
54454
+ *
54455
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
54456
+ * provider refreshes the slice on an interval and eagerly after commands.
54457
+ */
54458
+ var DishwasherStateSchema = _enum([
54459
+ "idle",
54460
+ "running",
54461
+ "paused",
54462
+ "finished",
54463
+ "error",
54464
+ "unavailable"
54465
+ ]);
54466
+ var DishwasherConsumableLevelSchema = _enum([
54467
+ "ok",
54468
+ "low",
54469
+ "empty"
54470
+ ]);
54471
+ object({
54472
+ state: DishwasherStateSchema,
54473
+ /** Active program id/name, or null when none selected / unknown. */
54474
+ program: string().nullable(),
54475
+ /** Program tokens the hardware accepts — drives the UI selector. */
54476
+ availablePrograms: array(string()),
54477
+ /** Minutes remaining on the active cycle, or null when not running. */
54478
+ remainingMinutes: number().int().nonnegative().nullable(),
54479
+ /** Cycle completion 0..100, or null when not applicable. */
54480
+ progressPercent: number().min(0).max(100).nullable(),
54481
+ /** True when the door is reported open. */
54482
+ doorOpen: boolean(),
54483
+ /** True when remote start is allowed (door closed, power on, etc.). */
54484
+ remoteStartAllowed: boolean(),
54485
+ /** Main power / switched-on state. */
54486
+ powerOn: boolean(),
54487
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
54488
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54489
+ halfLoad: boolean(),
54490
+ hygienePlus: boolean(),
54491
+ /** Extra dry option when the appliance exposes it. */
54492
+ extraDry: boolean(),
54493
+ /** Intensive zone (lower basket) when the appliance exposes it. */
54494
+ intensiveZone: boolean(),
54495
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
54496
+ varioSpeedPlus: boolean(),
54497
+ /** Child lock (controls disabled on the appliance). */
54498
+ childLock: boolean(),
54499
+ errorCode: number().nullable(),
54500
+ errorLabel: string().nullable(),
54501
+ lastFetchedAt: number()
54502
+ });
54503
+ DeviceType.Dishwasher, method(object({ deviceId: number().int().nonnegative() }), _void(), {
54504
+ kind: "mutation",
54505
+ auth: "protected"
54506
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54507
+ kind: "mutation",
54508
+ auth: "protected"
54509
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54510
+ kind: "mutation",
54511
+ auth: "protected"
54512
+ }), method(object({
54513
+ deviceId: number().int().nonnegative(),
54514
+ program: string().min(1)
54515
+ }), _void(), {
54516
+ kind: "mutation",
54517
+ auth: "protected"
54518
+ }), method(object({
54519
+ deviceId: number().int().nonnegative(),
54520
+ on: boolean()
54521
+ }), _void(), {
54522
+ kind: "mutation",
54523
+ auth: "protected"
54524
+ }), method(object({
54525
+ deviceId: number().int().nonnegative(),
54526
+ on: boolean()
54527
+ }), _void(), {
54528
+ kind: "mutation",
54529
+ auth: "protected"
54530
+ }), method(object({
54531
+ deviceId: number().int().nonnegative(),
54532
+ on: boolean()
54533
+ }), _void(), {
54534
+ kind: "mutation",
54535
+ auth: "protected"
54536
+ }), method(object({
54537
+ deviceId: number().int().nonnegative(),
54538
+ on: boolean()
54539
+ }), _void(), {
54540
+ kind: "mutation",
54541
+ auth: "protected"
54542
+ }), method(object({
54543
+ deviceId: number().int().nonnegative(),
54544
+ on: boolean()
54545
+ }), _void(), {
54546
+ kind: "mutation",
54547
+ auth: "protected"
54548
+ }), method(object({
54549
+ deviceId: number().int().nonnegative(),
54550
+ on: boolean()
54551
+ }), _void(), {
54552
+ kind: "mutation",
54553
+ auth: "protected"
54554
+ }), method(object({
54555
+ deviceId: number().int().nonnegative(),
54556
+ on: boolean()
54557
+ }), _void(), {
54558
+ kind: "mutation",
54559
+ auth: "protected"
54560
+ }), method(object({
54561
+ deviceId: number().int().nonnegative(),
54562
+ key: string().min(1),
54563
+ value: union([
54564
+ boolean(),
54565
+ string(),
54566
+ number()
54567
+ ])
54568
+ }), _void(), {
54569
+ kind: "mutation",
54570
+ auth: "protected"
54571
+ });
54434
54572
  object({
54435
54573
  /** Ms epoch of the last press. null = never observed since this provider started. */
54436
54574
  lastPressedAt: number().nullable(),
@@ -54996,6 +55134,13 @@ object({
54996
55134
  lastChangedAt: number()
54997
55135
  });
54998
55136
  DeviceType.Sensor;
55137
+ object({
55138
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
55139
+ position: number().min(0).max(100).nullable(),
55140
+ /** Ms epoch when the slice was last updated (push or poll). */
55141
+ lastFetchedAt: number()
55142
+ });
55143
+ DeviceType.Thermostat;
54999
55144
  object({
55000
55145
  /** Whether the humidifier is currently on. */
55001
55146
  on: boolean(),
@@ -62062,7 +62207,7 @@ var AccessoryKind = {
62062
62207
  PrivacyMask: DeviceRole.PrivacyMask
62063
62208
  };
62064
62209
  AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
62065
- 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;
62210
+ 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;
62066
62211
  new Set(Object.values(DeviceType));
62067
62212
  Object.freeze({
62068
62213
  "accessories.getStatus": {
@@ -64483,6 +64628,84 @@ Object.freeze({
64483
64628
  addonId: null,
64484
64629
  access: "view"
64485
64630
  },
64631
+ "dishwasher.getStatus": {
64632
+ capName: "dishwasher",
64633
+ capScope: "device",
64634
+ addonId: null,
64635
+ access: "view"
64636
+ },
64637
+ "dishwasher.pause": {
64638
+ capName: "dishwasher",
64639
+ capScope: "device",
64640
+ addonId: null,
64641
+ access: "create"
64642
+ },
64643
+ "dishwasher.setChildLock": {
64644
+ capName: "dishwasher",
64645
+ capScope: "device",
64646
+ addonId: null,
64647
+ access: "create"
64648
+ },
64649
+ "dishwasher.setExtraDry": {
64650
+ capName: "dishwasher",
64651
+ capScope: "device",
64652
+ addonId: null,
64653
+ access: "create"
64654
+ },
64655
+ "dishwasher.setHalfLoad": {
64656
+ capName: "dishwasher",
64657
+ capScope: "device",
64658
+ addonId: null,
64659
+ access: "create"
64660
+ },
64661
+ "dishwasher.setHygienePlus": {
64662
+ capName: "dishwasher",
64663
+ capScope: "device",
64664
+ addonId: null,
64665
+ access: "create"
64666
+ },
64667
+ "dishwasher.setIntensiveZone": {
64668
+ capName: "dishwasher",
64669
+ capScope: "device",
64670
+ addonId: null,
64671
+ access: "create"
64672
+ },
64673
+ "dishwasher.setOption": {
64674
+ capName: "dishwasher",
64675
+ capScope: "device",
64676
+ addonId: null,
64677
+ access: "create"
64678
+ },
64679
+ "dishwasher.setPower": {
64680
+ capName: "dishwasher",
64681
+ capScope: "device",
64682
+ addonId: null,
64683
+ access: "create"
64684
+ },
64685
+ "dishwasher.setProgram": {
64686
+ capName: "dishwasher",
64687
+ capScope: "device",
64688
+ addonId: null,
64689
+ access: "create"
64690
+ },
64691
+ "dishwasher.setVarioSpeedPlus": {
64692
+ capName: "dishwasher",
64693
+ capScope: "device",
64694
+ addonId: null,
64695
+ access: "create"
64696
+ },
64697
+ "dishwasher.start": {
64698
+ capName: "dishwasher",
64699
+ capScope: "device",
64700
+ addonId: null,
64701
+ access: "create"
64702
+ },
64703
+ "dishwasher.stop": {
64704
+ capName: "dishwasher",
64705
+ capScope: "device",
64706
+ addonId: null,
64707
+ access: "create"
64708
+ },
64486
64709
  "doorbell.getStatus": {
64487
64710
  capName: "doorbell",
64488
64711
  capScope: "device",
@@ -64693,6 +64916,12 @@ Object.freeze({
64693
64916
  addonId: null,
64694
64917
  access: "view"
64695
64918
  },
64919
+ "heatingValve.getStatus": {
64920
+ capName: "heating-valve",
64921
+ capScope: "device",
64922
+ addonId: null,
64923
+ access: "view"
64924
+ },
64696
64925
  "humidifier.getStatus": {
64697
64926
  capName: "humidifier",
64698
64927
  capScope: "device",
@@ -70280,7 +70509,7 @@ Object.freeze({
70280
70509
  access: "create"
70281
70510
  }
70282
70511
  });
70283
- 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;
70512
+ 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;
70284
70513
  DeviceFeature.BatteryOperated;
70285
70514
  Object.freeze({
70286
70515
  "accessories.getStatus": [{
@@ -71104,6 +71333,71 @@ Object.freeze({
71104
71333
  form: "single",
71105
71334
  optional: false
71106
71335
  }],
71336
+ "dishwasher.getStatus": [{
71337
+ name: "deviceId",
71338
+ form: "single",
71339
+ optional: false
71340
+ }],
71341
+ "dishwasher.pause": [{
71342
+ name: "deviceId",
71343
+ form: "single",
71344
+ optional: false
71345
+ }],
71346
+ "dishwasher.setChildLock": [{
71347
+ name: "deviceId",
71348
+ form: "single",
71349
+ optional: false
71350
+ }],
71351
+ "dishwasher.setExtraDry": [{
71352
+ name: "deviceId",
71353
+ form: "single",
71354
+ optional: false
71355
+ }],
71356
+ "dishwasher.setHalfLoad": [{
71357
+ name: "deviceId",
71358
+ form: "single",
71359
+ optional: false
71360
+ }],
71361
+ "dishwasher.setHygienePlus": [{
71362
+ name: "deviceId",
71363
+ form: "single",
71364
+ optional: false
71365
+ }],
71366
+ "dishwasher.setIntensiveZone": [{
71367
+ name: "deviceId",
71368
+ form: "single",
71369
+ optional: false
71370
+ }],
71371
+ "dishwasher.setOption": [{
71372
+ name: "deviceId",
71373
+ form: "single",
71374
+ optional: false
71375
+ }],
71376
+ "dishwasher.setPower": [{
71377
+ name: "deviceId",
71378
+ form: "single",
71379
+ optional: false
71380
+ }],
71381
+ "dishwasher.setProgram": [{
71382
+ name: "deviceId",
71383
+ form: "single",
71384
+ optional: false
71385
+ }],
71386
+ "dishwasher.setVarioSpeedPlus": [{
71387
+ name: "deviceId",
71388
+ form: "single",
71389
+ optional: false
71390
+ }],
71391
+ "dishwasher.start": [{
71392
+ name: "deviceId",
71393
+ form: "single",
71394
+ optional: false
71395
+ }],
71396
+ "dishwasher.stop": [{
71397
+ name: "deviceId",
71398
+ form: "single",
71399
+ optional: false
71400
+ }],
71107
71401
  "doorbell.getStatus": [{
71108
71402
  name: "deviceId",
71109
71403
  form: "single",
@@ -71173,6 +71467,11 @@ Object.freeze({
71173
71467
  form: "single",
71174
71468
  optional: false
71175
71469
  }],
71470
+ "heatingValve.getStatus": [{
71471
+ name: "deviceId",
71472
+ form: "single",
71473
+ optional: false
71474
+ }],
71176
71475
  "humidifier.getStatus": [{
71177
71476
  name: "deviceId",
71178
71477
  form: "single",
@@ -5578,7 +5578,7 @@ var ZodIssueCode = {
5578
5578
  var ZodFirstPartyTypeKind;
5579
5579
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5580
5580
  //#endregion
5581
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5581
+ //#region ../types/dist/sleep-BegKjwUu.mjs
5582
5582
  /**
5583
5583
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5584
5584
  * window to float samples (D455).
@@ -8802,7 +8802,7 @@ object({
8802
8802
  params: record(string(), union([string(), number()])).optional()
8803
8803
  });
8804
8804
  //#endregion
8805
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8805
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8806
8806
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8807
8807
  DeviceType["Camera"] = "camera";
8808
8808
  DeviceType["Hub"] = "hub";
@@ -8894,6 +8894,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8894
8894
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8895
8895
  * integrations sharing the same food/desiccant/hopper surface. */
8896
8896
  DeviceType["PetFeeder"] = "pet-feeder";
8897
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8898
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8899
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8900
+ DeviceType["Dishwasher"] = "dishwasher";
8897
8901
  return DeviceType;
8898
8902
  }({});
8899
8903
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -9141,7 +9145,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
9141
9145
  return DeviceRole;
9142
9146
  }({});
9143
9147
  //#endregion
9144
- //#region ../types/dist/composition-DOwQB_Ua.mjs
9148
+ //#region ../types/dist/composition-CB6PMT9p.mjs
9145
9149
  /**
9146
9150
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9147
9151
  *
@@ -13527,8 +13531,13 @@ var AlertSeveritySchema = _enum([
13527
13531
  "info",
13528
13532
  "success",
13529
13533
  "warning",
13530
- "error"
13534
+ "error",
13535
+ "critical"
13531
13536
  ]);
13537
+ var AlertActionSchema = object({
13538
+ label: string(),
13539
+ href: string().optional()
13540
+ });
13532
13541
  var AlertStatusSchema = _enum([
13533
13542
  "active",
13534
13543
  "in-progress",
@@ -13546,6 +13555,7 @@ var AlertSchema = object({
13546
13555
  severity: AlertSeveritySchema,
13547
13556
  title: string(),
13548
13557
  message: string(),
13558
+ action: AlertActionSchema.optional(),
13549
13559
  status: AlertStatusSchema,
13550
13560
  progress: number().optional(),
13551
13561
  read: boolean(),
@@ -17739,7 +17749,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
17739
17749
  });
17740
17750
  /**
17741
17751
  * `device-adoption` — generic discovery + adoption surface,
17742
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17752
+ * system-scoped collection (one provider per integration addon), routed
17753
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17754
+ * pin model as `connection-test`. The admin UI keeps using
17755
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17756
+ * successor to `ha-discovery`:
17743
17757
  * keyed by `integrationId` (the addon resolves integrationId → broker
17744
17758
  * internally) rather than a connection-specific `brokerId`, and it
17745
17759
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -53548,7 +53562,7 @@ var BatteryStatusSchema = object({
53548
53562
  */
53549
53563
  binary: boolean().optional()
53550
53564
  });
53551
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
53565
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
53552
53566
  deviceId: number(),
53553
53567
  /** Bound on the wait. Sensible range 3000–10000ms. */
53554
53568
  timeoutMs: number().int().min(500).max(3e4).default(8e3)
@@ -54424,6 +54438,130 @@ object({
54424
54438
  deviceId: number(),
54425
54439
  status: DeviceStatusSchema
54426
54440
  });
54441
+ /**
54442
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
54443
+ * consumable levels (salt, rinse aid) and common program options.
54444
+ *
54445
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
54446
+ * by any integration that exposes the same program / option surface.
54447
+ *
54448
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
54449
+ * provider refreshes the slice on an interval and eagerly after commands.
54450
+ */
54451
+ var DishwasherStateSchema = _enum([
54452
+ "idle",
54453
+ "running",
54454
+ "paused",
54455
+ "finished",
54456
+ "error",
54457
+ "unavailable"
54458
+ ]);
54459
+ var DishwasherConsumableLevelSchema = _enum([
54460
+ "ok",
54461
+ "low",
54462
+ "empty"
54463
+ ]);
54464
+ object({
54465
+ state: DishwasherStateSchema,
54466
+ /** Active program id/name, or null when none selected / unknown. */
54467
+ program: string().nullable(),
54468
+ /** Program tokens the hardware accepts — drives the UI selector. */
54469
+ availablePrograms: array(string()),
54470
+ /** Minutes remaining on the active cycle, or null when not running. */
54471
+ remainingMinutes: number().int().nonnegative().nullable(),
54472
+ /** Cycle completion 0..100, or null when not applicable. */
54473
+ progressPercent: number().min(0).max(100).nullable(),
54474
+ /** True when the door is reported open. */
54475
+ doorOpen: boolean(),
54476
+ /** True when remote start is allowed (door closed, power on, etc.). */
54477
+ remoteStartAllowed: boolean(),
54478
+ /** Main power / switched-on state. */
54479
+ powerOn: boolean(),
54480
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
54481
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54482
+ halfLoad: boolean(),
54483
+ hygienePlus: boolean(),
54484
+ /** Extra dry option when the appliance exposes it. */
54485
+ extraDry: boolean(),
54486
+ /** Intensive zone (lower basket) when the appliance exposes it. */
54487
+ intensiveZone: boolean(),
54488
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
54489
+ varioSpeedPlus: boolean(),
54490
+ /** Child lock (controls disabled on the appliance). */
54491
+ childLock: boolean(),
54492
+ errorCode: number().nullable(),
54493
+ errorLabel: string().nullable(),
54494
+ lastFetchedAt: number()
54495
+ });
54496
+ DeviceType.Dishwasher, method(object({ deviceId: number().int().nonnegative() }), _void(), {
54497
+ kind: "mutation",
54498
+ auth: "protected"
54499
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54500
+ kind: "mutation",
54501
+ auth: "protected"
54502
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54503
+ kind: "mutation",
54504
+ auth: "protected"
54505
+ }), method(object({
54506
+ deviceId: number().int().nonnegative(),
54507
+ program: string().min(1)
54508
+ }), _void(), {
54509
+ kind: "mutation",
54510
+ auth: "protected"
54511
+ }), method(object({
54512
+ deviceId: number().int().nonnegative(),
54513
+ on: boolean()
54514
+ }), _void(), {
54515
+ kind: "mutation",
54516
+ auth: "protected"
54517
+ }), method(object({
54518
+ deviceId: number().int().nonnegative(),
54519
+ on: boolean()
54520
+ }), _void(), {
54521
+ kind: "mutation",
54522
+ auth: "protected"
54523
+ }), method(object({
54524
+ deviceId: number().int().nonnegative(),
54525
+ on: boolean()
54526
+ }), _void(), {
54527
+ kind: "mutation",
54528
+ auth: "protected"
54529
+ }), method(object({
54530
+ deviceId: number().int().nonnegative(),
54531
+ on: boolean()
54532
+ }), _void(), {
54533
+ kind: "mutation",
54534
+ auth: "protected"
54535
+ }), method(object({
54536
+ deviceId: number().int().nonnegative(),
54537
+ on: boolean()
54538
+ }), _void(), {
54539
+ kind: "mutation",
54540
+ auth: "protected"
54541
+ }), method(object({
54542
+ deviceId: number().int().nonnegative(),
54543
+ on: boolean()
54544
+ }), _void(), {
54545
+ kind: "mutation",
54546
+ auth: "protected"
54547
+ }), method(object({
54548
+ deviceId: number().int().nonnegative(),
54549
+ on: boolean()
54550
+ }), _void(), {
54551
+ kind: "mutation",
54552
+ auth: "protected"
54553
+ }), method(object({
54554
+ deviceId: number().int().nonnegative(),
54555
+ key: string().min(1),
54556
+ value: union([
54557
+ boolean(),
54558
+ string(),
54559
+ number()
54560
+ ])
54561
+ }), _void(), {
54562
+ kind: "mutation",
54563
+ auth: "protected"
54564
+ });
54427
54565
  object({
54428
54566
  /** Ms epoch of the last press. null = never observed since this provider started. */
54429
54567
  lastPressedAt: number().nullable(),
@@ -54989,6 +55127,13 @@ object({
54989
55127
  lastChangedAt: number()
54990
55128
  });
54991
55129
  DeviceType.Sensor;
55130
+ object({
55131
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
55132
+ position: number().min(0).max(100).nullable(),
55133
+ /** Ms epoch when the slice was last updated (push or poll). */
55134
+ lastFetchedAt: number()
55135
+ });
55136
+ DeviceType.Thermostat;
54992
55137
  object({
54993
55138
  /** Whether the humidifier is currently on. */
54994
55139
  on: boolean(),
@@ -62055,7 +62200,7 @@ var AccessoryKind = {
62055
62200
  PrivacyMask: DeviceRole.PrivacyMask
62056
62201
  };
62057
62202
  AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
62058
- 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;
62203
+ 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;
62059
62204
  new Set(Object.values(DeviceType));
62060
62205
  Object.freeze({
62061
62206
  "accessories.getStatus": {
@@ -64476,6 +64621,84 @@ Object.freeze({
64476
64621
  addonId: null,
64477
64622
  access: "view"
64478
64623
  },
64624
+ "dishwasher.getStatus": {
64625
+ capName: "dishwasher",
64626
+ capScope: "device",
64627
+ addonId: null,
64628
+ access: "view"
64629
+ },
64630
+ "dishwasher.pause": {
64631
+ capName: "dishwasher",
64632
+ capScope: "device",
64633
+ addonId: null,
64634
+ access: "create"
64635
+ },
64636
+ "dishwasher.setChildLock": {
64637
+ capName: "dishwasher",
64638
+ capScope: "device",
64639
+ addonId: null,
64640
+ access: "create"
64641
+ },
64642
+ "dishwasher.setExtraDry": {
64643
+ capName: "dishwasher",
64644
+ capScope: "device",
64645
+ addonId: null,
64646
+ access: "create"
64647
+ },
64648
+ "dishwasher.setHalfLoad": {
64649
+ capName: "dishwasher",
64650
+ capScope: "device",
64651
+ addonId: null,
64652
+ access: "create"
64653
+ },
64654
+ "dishwasher.setHygienePlus": {
64655
+ capName: "dishwasher",
64656
+ capScope: "device",
64657
+ addonId: null,
64658
+ access: "create"
64659
+ },
64660
+ "dishwasher.setIntensiveZone": {
64661
+ capName: "dishwasher",
64662
+ capScope: "device",
64663
+ addonId: null,
64664
+ access: "create"
64665
+ },
64666
+ "dishwasher.setOption": {
64667
+ capName: "dishwasher",
64668
+ capScope: "device",
64669
+ addonId: null,
64670
+ access: "create"
64671
+ },
64672
+ "dishwasher.setPower": {
64673
+ capName: "dishwasher",
64674
+ capScope: "device",
64675
+ addonId: null,
64676
+ access: "create"
64677
+ },
64678
+ "dishwasher.setProgram": {
64679
+ capName: "dishwasher",
64680
+ capScope: "device",
64681
+ addonId: null,
64682
+ access: "create"
64683
+ },
64684
+ "dishwasher.setVarioSpeedPlus": {
64685
+ capName: "dishwasher",
64686
+ capScope: "device",
64687
+ addonId: null,
64688
+ access: "create"
64689
+ },
64690
+ "dishwasher.start": {
64691
+ capName: "dishwasher",
64692
+ capScope: "device",
64693
+ addonId: null,
64694
+ access: "create"
64695
+ },
64696
+ "dishwasher.stop": {
64697
+ capName: "dishwasher",
64698
+ capScope: "device",
64699
+ addonId: null,
64700
+ access: "create"
64701
+ },
64479
64702
  "doorbell.getStatus": {
64480
64703
  capName: "doorbell",
64481
64704
  capScope: "device",
@@ -64686,6 +64909,12 @@ Object.freeze({
64686
64909
  addonId: null,
64687
64910
  access: "view"
64688
64911
  },
64912
+ "heatingValve.getStatus": {
64913
+ capName: "heating-valve",
64914
+ capScope: "device",
64915
+ addonId: null,
64916
+ access: "view"
64917
+ },
64689
64918
  "humidifier.getStatus": {
64690
64919
  capName: "humidifier",
64691
64920
  capScope: "device",
@@ -70273,7 +70502,7 @@ Object.freeze({
70273
70502
  access: "create"
70274
70503
  }
70275
70504
  });
70276
- 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;
70505
+ 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;
70277
70506
  DeviceFeature.BatteryOperated;
70278
70507
  Object.freeze({
70279
70508
  "accessories.getStatus": [{
@@ -71097,6 +71326,71 @@ Object.freeze({
71097
71326
  form: "single",
71098
71327
  optional: false
71099
71328
  }],
71329
+ "dishwasher.getStatus": [{
71330
+ name: "deviceId",
71331
+ form: "single",
71332
+ optional: false
71333
+ }],
71334
+ "dishwasher.pause": [{
71335
+ name: "deviceId",
71336
+ form: "single",
71337
+ optional: false
71338
+ }],
71339
+ "dishwasher.setChildLock": [{
71340
+ name: "deviceId",
71341
+ form: "single",
71342
+ optional: false
71343
+ }],
71344
+ "dishwasher.setExtraDry": [{
71345
+ name: "deviceId",
71346
+ form: "single",
71347
+ optional: false
71348
+ }],
71349
+ "dishwasher.setHalfLoad": [{
71350
+ name: "deviceId",
71351
+ form: "single",
71352
+ optional: false
71353
+ }],
71354
+ "dishwasher.setHygienePlus": [{
71355
+ name: "deviceId",
71356
+ form: "single",
71357
+ optional: false
71358
+ }],
71359
+ "dishwasher.setIntensiveZone": [{
71360
+ name: "deviceId",
71361
+ form: "single",
71362
+ optional: false
71363
+ }],
71364
+ "dishwasher.setOption": [{
71365
+ name: "deviceId",
71366
+ form: "single",
71367
+ optional: false
71368
+ }],
71369
+ "dishwasher.setPower": [{
71370
+ name: "deviceId",
71371
+ form: "single",
71372
+ optional: false
71373
+ }],
71374
+ "dishwasher.setProgram": [{
71375
+ name: "deviceId",
71376
+ form: "single",
71377
+ optional: false
71378
+ }],
71379
+ "dishwasher.setVarioSpeedPlus": [{
71380
+ name: "deviceId",
71381
+ form: "single",
71382
+ optional: false
71383
+ }],
71384
+ "dishwasher.start": [{
71385
+ name: "deviceId",
71386
+ form: "single",
71387
+ optional: false
71388
+ }],
71389
+ "dishwasher.stop": [{
71390
+ name: "deviceId",
71391
+ form: "single",
71392
+ optional: false
71393
+ }],
71100
71394
  "doorbell.getStatus": [{
71101
71395
  name: "deviceId",
71102
71396
  form: "single",
@@ -71166,6 +71460,11 @@ Object.freeze({
71166
71460
  form: "single",
71167
71461
  optional: false
71168
71462
  }],
71463
+ "heatingValve.getStatus": [{
71464
+ name: "deviceId",
71465
+ form: "single",
71466
+ optional: false
71467
+ }],
71169
71468
  "humidifier.getStatus": [{
71170
71469
  name: "deviceId",
71171
71470
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-mqtt-broker",
3
- "version": "1.2.126",
3
+ "version": "1.2.127",
4
4
  "description": "MQTT broker registry addon for CamStack — manages external broker entries + an optional embedded aedes broker. Consumers spin up their own `mqtt.js` clients via the `mqtt-broker` cap.",
5
5
  "keywords": [
6
6
  "camstack",