@camstack/addon-export-alexa 1.2.146 → 1.2.147

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.
@@ -5440,7 +5440,7 @@ var ZodIssueCode = {
5440
5440
  var ZodFirstPartyTypeKind;
5441
5441
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5442
5442
  //#endregion
5443
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5443
+ //#region ../types/dist/sleep-BegKjwUu.mjs
5444
5444
  /**
5445
5445
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5446
5446
  * window to float samples (D455).
@@ -8410,7 +8410,7 @@ object({
8410
8410
  params: record(string(), union([string(), number()])).optional()
8411
8411
  });
8412
8412
  //#endregion
8413
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8413
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8414
8414
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8415
8415
  DeviceType["Camera"] = "camera";
8416
8416
  DeviceType["Hub"] = "hub";
@@ -8502,6 +8502,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8502
8502
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8503
8503
  * integrations sharing the same food/desiccant/hopper surface. */
8504
8504
  DeviceType["PetFeeder"] = "pet-feeder";
8505
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8506
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8507
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8508
+ DeviceType["Dishwasher"] = "dishwasher";
8505
8509
  return DeviceType;
8506
8510
  }({});
8507
8511
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -8759,7 +8763,7 @@ function errMsg(err) {
8759
8763
  return String(err);
8760
8764
  }
8761
8765
  //#endregion
8762
- //#region ../types/dist/composition-DOwQB_Ua.mjs
8766
+ //#region ../types/dist/composition-CB6PMT9p.mjs
8763
8767
  /**
8764
8768
  * The ffmpeg build every CamStack node downloads, per platform and arch.
8765
8769
  *
@@ -13428,8 +13432,13 @@ var AlertSeveritySchema = _enum([
13428
13432
  "info",
13429
13433
  "success",
13430
13434
  "warning",
13431
- "error"
13435
+ "error",
13436
+ "critical"
13432
13437
  ]);
13438
+ var AlertActionSchema = object({
13439
+ label: string(),
13440
+ href: string().optional()
13441
+ });
13433
13442
  var AlertStatusSchema = _enum([
13434
13443
  "active",
13435
13444
  "in-progress",
@@ -13447,6 +13456,7 @@ var AlertSchema = object({
13447
13456
  severity: AlertSeveritySchema,
13448
13457
  title: string(),
13449
13458
  message: string(),
13459
+ action: AlertActionSchema.optional(),
13450
13460
  status: AlertStatusSchema,
13451
13461
  progress: number().optional(),
13452
13462
  read: boolean(),
@@ -17591,7 +17601,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
17591
17601
  });
17592
17602
  /**
17593
17603
  * `device-adoption` — generic discovery + adoption surface,
17594
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17604
+ * system-scoped collection (one provider per integration addon), routed
17605
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17606
+ * pin model as `connection-test`. The admin UI keeps using
17607
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17608
+ * successor to `ha-discovery`:
17595
17609
  * keyed by `integrationId` (the addon resolves integrationId → broker
17596
17610
  * internally) rather than a connection-specific `brokerId`, and it
17597
17611
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -53422,7 +53436,7 @@ var BatteryStatusSchema = object({
53422
53436
  */
53423
53437
  binary: boolean().optional()
53424
53438
  });
53425
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
53439
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
53426
53440
  deviceId: number(),
53427
53441
  /** Bound on the wait. Sensible range 3000–10000ms. */
53428
53442
  timeoutMs: number().int().min(500).max(3e4).default(8e3)
@@ -54322,6 +54336,130 @@ object({
54322
54336
  deviceId: number(),
54323
54337
  status: DeviceStatusSchema
54324
54338
  });
54339
+ /**
54340
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
54341
+ * consumable levels (salt, rinse aid) and common program options.
54342
+ *
54343
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
54344
+ * by any integration that exposes the same program / option surface.
54345
+ *
54346
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
54347
+ * provider refreshes the slice on an interval and eagerly after commands.
54348
+ */
54349
+ var DishwasherStateSchema = _enum([
54350
+ "idle",
54351
+ "running",
54352
+ "paused",
54353
+ "finished",
54354
+ "error",
54355
+ "unavailable"
54356
+ ]);
54357
+ var DishwasherConsumableLevelSchema = _enum([
54358
+ "ok",
54359
+ "low",
54360
+ "empty"
54361
+ ]);
54362
+ object({
54363
+ state: DishwasherStateSchema,
54364
+ /** Active program id/name, or null when none selected / unknown. */
54365
+ program: string().nullable(),
54366
+ /** Program tokens the hardware accepts — drives the UI selector. */
54367
+ availablePrograms: array(string()),
54368
+ /** Minutes remaining on the active cycle, or null when not running. */
54369
+ remainingMinutes: number().int().nonnegative().nullable(),
54370
+ /** Cycle completion 0..100, or null when not applicable. */
54371
+ progressPercent: number().min(0).max(100).nullable(),
54372
+ /** True when the door is reported open. */
54373
+ doorOpen: boolean(),
54374
+ /** True when remote start is allowed (door closed, power on, etc.). */
54375
+ remoteStartAllowed: boolean(),
54376
+ /** Main power / switched-on state. */
54377
+ powerOn: boolean(),
54378
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
54379
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54380
+ halfLoad: boolean(),
54381
+ hygienePlus: boolean(),
54382
+ /** Extra dry option when the appliance exposes it. */
54383
+ extraDry: boolean(),
54384
+ /** Intensive zone (lower basket) when the appliance exposes it. */
54385
+ intensiveZone: boolean(),
54386
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
54387
+ varioSpeedPlus: boolean(),
54388
+ /** Child lock (controls disabled on the appliance). */
54389
+ childLock: boolean(),
54390
+ errorCode: number().nullable(),
54391
+ errorLabel: string().nullable(),
54392
+ lastFetchedAt: number()
54393
+ });
54394
+ DeviceType.Dishwasher, method(object({ deviceId: number().int().nonnegative() }), _void(), {
54395
+ kind: "mutation",
54396
+ auth: "protected"
54397
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54398
+ kind: "mutation",
54399
+ auth: "protected"
54400
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54401
+ kind: "mutation",
54402
+ auth: "protected"
54403
+ }), method(object({
54404
+ deviceId: number().int().nonnegative(),
54405
+ program: string().min(1)
54406
+ }), _void(), {
54407
+ kind: "mutation",
54408
+ auth: "protected"
54409
+ }), method(object({
54410
+ deviceId: number().int().nonnegative(),
54411
+ on: boolean()
54412
+ }), _void(), {
54413
+ kind: "mutation",
54414
+ auth: "protected"
54415
+ }), method(object({
54416
+ deviceId: number().int().nonnegative(),
54417
+ on: boolean()
54418
+ }), _void(), {
54419
+ kind: "mutation",
54420
+ auth: "protected"
54421
+ }), method(object({
54422
+ deviceId: number().int().nonnegative(),
54423
+ on: boolean()
54424
+ }), _void(), {
54425
+ kind: "mutation",
54426
+ auth: "protected"
54427
+ }), method(object({
54428
+ deviceId: number().int().nonnegative(),
54429
+ on: boolean()
54430
+ }), _void(), {
54431
+ kind: "mutation",
54432
+ auth: "protected"
54433
+ }), method(object({
54434
+ deviceId: number().int().nonnegative(),
54435
+ on: boolean()
54436
+ }), _void(), {
54437
+ kind: "mutation",
54438
+ auth: "protected"
54439
+ }), method(object({
54440
+ deviceId: number().int().nonnegative(),
54441
+ on: boolean()
54442
+ }), _void(), {
54443
+ kind: "mutation",
54444
+ auth: "protected"
54445
+ }), method(object({
54446
+ deviceId: number().int().nonnegative(),
54447
+ on: boolean()
54448
+ }), _void(), {
54449
+ kind: "mutation",
54450
+ auth: "protected"
54451
+ }), method(object({
54452
+ deviceId: number().int().nonnegative(),
54453
+ key: string().min(1),
54454
+ value: union([
54455
+ boolean(),
54456
+ string(),
54457
+ number()
54458
+ ])
54459
+ }), _void(), {
54460
+ kind: "mutation",
54461
+ auth: "protected"
54462
+ });
54325
54463
  object({
54326
54464
  /** Ms epoch of the last press. null = never observed since this provider started. */
54327
54465
  lastPressedAt: number().nullable(),
@@ -54887,6 +55025,13 @@ object({
54887
55025
  lastChangedAt: number()
54888
55026
  });
54889
55027
  DeviceType.Sensor;
55028
+ object({
55029
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
55030
+ position: number().min(0).max(100).nullable(),
55031
+ /** Ms epoch when the slice was last updated (push or poll). */
55032
+ lastFetchedAt: number()
55033
+ });
55034
+ DeviceType.Thermostat;
54890
55035
  object({
54891
55036
  /** Whether the humidifier is currently on. */
54892
55037
  on: boolean(),
@@ -61984,7 +62129,7 @@ var AccessoryKind = {
61984
62129
  PrivacyMask: DeviceRole.PrivacyMask
61985
62130
  };
61986
62131
  AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
61987
- 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;
62132
+ 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;
61988
62133
  new Set(Object.values(DeviceType));
61989
62134
  Object.freeze({
61990
62135
  "accessories.getStatus": {
@@ -64405,6 +64550,84 @@ Object.freeze({
64405
64550
  addonId: null,
64406
64551
  access: "view"
64407
64552
  },
64553
+ "dishwasher.getStatus": {
64554
+ capName: "dishwasher",
64555
+ capScope: "device",
64556
+ addonId: null,
64557
+ access: "view"
64558
+ },
64559
+ "dishwasher.pause": {
64560
+ capName: "dishwasher",
64561
+ capScope: "device",
64562
+ addonId: null,
64563
+ access: "create"
64564
+ },
64565
+ "dishwasher.setChildLock": {
64566
+ capName: "dishwasher",
64567
+ capScope: "device",
64568
+ addonId: null,
64569
+ access: "create"
64570
+ },
64571
+ "dishwasher.setExtraDry": {
64572
+ capName: "dishwasher",
64573
+ capScope: "device",
64574
+ addonId: null,
64575
+ access: "create"
64576
+ },
64577
+ "dishwasher.setHalfLoad": {
64578
+ capName: "dishwasher",
64579
+ capScope: "device",
64580
+ addonId: null,
64581
+ access: "create"
64582
+ },
64583
+ "dishwasher.setHygienePlus": {
64584
+ capName: "dishwasher",
64585
+ capScope: "device",
64586
+ addonId: null,
64587
+ access: "create"
64588
+ },
64589
+ "dishwasher.setIntensiveZone": {
64590
+ capName: "dishwasher",
64591
+ capScope: "device",
64592
+ addonId: null,
64593
+ access: "create"
64594
+ },
64595
+ "dishwasher.setOption": {
64596
+ capName: "dishwasher",
64597
+ capScope: "device",
64598
+ addonId: null,
64599
+ access: "create"
64600
+ },
64601
+ "dishwasher.setPower": {
64602
+ capName: "dishwasher",
64603
+ capScope: "device",
64604
+ addonId: null,
64605
+ access: "create"
64606
+ },
64607
+ "dishwasher.setProgram": {
64608
+ capName: "dishwasher",
64609
+ capScope: "device",
64610
+ addonId: null,
64611
+ access: "create"
64612
+ },
64613
+ "dishwasher.setVarioSpeedPlus": {
64614
+ capName: "dishwasher",
64615
+ capScope: "device",
64616
+ addonId: null,
64617
+ access: "create"
64618
+ },
64619
+ "dishwasher.start": {
64620
+ capName: "dishwasher",
64621
+ capScope: "device",
64622
+ addonId: null,
64623
+ access: "create"
64624
+ },
64625
+ "dishwasher.stop": {
64626
+ capName: "dishwasher",
64627
+ capScope: "device",
64628
+ addonId: null,
64629
+ access: "create"
64630
+ },
64408
64631
  "doorbell.getStatus": {
64409
64632
  capName: "doorbell",
64410
64633
  capScope: "device",
@@ -64615,6 +64838,12 @@ Object.freeze({
64615
64838
  addonId: null,
64616
64839
  access: "view"
64617
64840
  },
64841
+ "heatingValve.getStatus": {
64842
+ capName: "heating-valve",
64843
+ capScope: "device",
64844
+ addonId: null,
64845
+ access: "view"
64846
+ },
64618
64847
  "humidifier.getStatus": {
64619
64848
  capName: "humidifier",
64620
64849
  capScope: "device",
@@ -70202,7 +70431,7 @@ Object.freeze({
70202
70431
  access: "create"
70203
70432
  }
70204
70433
  });
70205
- 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;
70434
+ 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;
70206
70435
  DeviceFeature.BatteryOperated;
70207
70436
  Object.freeze({
70208
70437
  "accessories.getStatus": [{
@@ -71026,6 +71255,71 @@ Object.freeze({
71026
71255
  form: "single",
71027
71256
  optional: false
71028
71257
  }],
71258
+ "dishwasher.getStatus": [{
71259
+ name: "deviceId",
71260
+ form: "single",
71261
+ optional: false
71262
+ }],
71263
+ "dishwasher.pause": [{
71264
+ name: "deviceId",
71265
+ form: "single",
71266
+ optional: false
71267
+ }],
71268
+ "dishwasher.setChildLock": [{
71269
+ name: "deviceId",
71270
+ form: "single",
71271
+ optional: false
71272
+ }],
71273
+ "dishwasher.setExtraDry": [{
71274
+ name: "deviceId",
71275
+ form: "single",
71276
+ optional: false
71277
+ }],
71278
+ "dishwasher.setHalfLoad": [{
71279
+ name: "deviceId",
71280
+ form: "single",
71281
+ optional: false
71282
+ }],
71283
+ "dishwasher.setHygienePlus": [{
71284
+ name: "deviceId",
71285
+ form: "single",
71286
+ optional: false
71287
+ }],
71288
+ "dishwasher.setIntensiveZone": [{
71289
+ name: "deviceId",
71290
+ form: "single",
71291
+ optional: false
71292
+ }],
71293
+ "dishwasher.setOption": [{
71294
+ name: "deviceId",
71295
+ form: "single",
71296
+ optional: false
71297
+ }],
71298
+ "dishwasher.setPower": [{
71299
+ name: "deviceId",
71300
+ form: "single",
71301
+ optional: false
71302
+ }],
71303
+ "dishwasher.setProgram": [{
71304
+ name: "deviceId",
71305
+ form: "single",
71306
+ optional: false
71307
+ }],
71308
+ "dishwasher.setVarioSpeedPlus": [{
71309
+ name: "deviceId",
71310
+ form: "single",
71311
+ optional: false
71312
+ }],
71313
+ "dishwasher.start": [{
71314
+ name: "deviceId",
71315
+ form: "single",
71316
+ optional: false
71317
+ }],
71318
+ "dishwasher.stop": [{
71319
+ name: "deviceId",
71320
+ form: "single",
71321
+ optional: false
71322
+ }],
71029
71323
  "doorbell.getStatus": [{
71030
71324
  name: "deviceId",
71031
71325
  form: "single",
@@ -71095,6 +71389,11 @@ Object.freeze({
71095
71389
  form: "single",
71096
71390
  optional: false
71097
71391
  }],
71392
+ "heatingValve.getStatus": [{
71393
+ name: "deviceId",
71394
+ form: "single",
71395
+ optional: false
71396
+ }],
71098
71397
  "humidifier.getStatus": [{
71099
71398
  name: "deviceId",
71100
71399
  form: "single",
@@ -5411,7 +5411,7 @@ var ZodIssueCode = {
5411
5411
  var ZodFirstPartyTypeKind;
5412
5412
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5413
5413
  //#endregion
5414
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5414
+ //#region ../types/dist/sleep-BegKjwUu.mjs
5415
5415
  /**
5416
5416
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5417
5417
  * window to float samples (D455).
@@ -8381,7 +8381,7 @@ object({
8381
8381
  params: record(string(), union([string(), number()])).optional()
8382
8382
  });
8383
8383
  //#endregion
8384
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8384
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8385
8385
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8386
8386
  DeviceType["Camera"] = "camera";
8387
8387
  DeviceType["Hub"] = "hub";
@@ -8473,6 +8473,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8473
8473
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8474
8474
  * integrations sharing the same food/desiccant/hopper surface. */
8475
8475
  DeviceType["PetFeeder"] = "pet-feeder";
8476
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8477
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8478
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8479
+ DeviceType["Dishwasher"] = "dishwasher";
8476
8480
  return DeviceType;
8477
8481
  }({});
8478
8482
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -8730,7 +8734,7 @@ function errMsg(err) {
8730
8734
  return String(err);
8731
8735
  }
8732
8736
  //#endregion
8733
- //#region ../types/dist/composition-DOwQB_Ua.mjs
8737
+ //#region ../types/dist/composition-CB6PMT9p.mjs
8734
8738
  /**
8735
8739
  * The ffmpeg build every CamStack node downloads, per platform and arch.
8736
8740
  *
@@ -13399,8 +13403,13 @@ var AlertSeveritySchema = _enum([
13399
13403
  "info",
13400
13404
  "success",
13401
13405
  "warning",
13402
- "error"
13406
+ "error",
13407
+ "critical"
13403
13408
  ]);
13409
+ var AlertActionSchema = object({
13410
+ label: string(),
13411
+ href: string().optional()
13412
+ });
13404
13413
  var AlertStatusSchema = _enum([
13405
13414
  "active",
13406
13415
  "in-progress",
@@ -13418,6 +13427,7 @@ var AlertSchema = object({
13418
13427
  severity: AlertSeveritySchema,
13419
13428
  title: string(),
13420
13429
  message: string(),
13430
+ action: AlertActionSchema.optional(),
13421
13431
  status: AlertStatusSchema,
13422
13432
  progress: number().optional(),
13423
13433
  read: boolean(),
@@ -17562,7 +17572,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
17562
17572
  });
17563
17573
  /**
17564
17574
  * `device-adoption` — generic discovery + adoption surface,
17565
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17575
+ * system-scoped collection (one provider per integration addon), routed
17576
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17577
+ * pin model as `connection-test`. The admin UI keeps using
17578
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17579
+ * successor to `ha-discovery`:
17566
17580
  * keyed by `integrationId` (the addon resolves integrationId → broker
17567
17581
  * internally) rather than a connection-specific `brokerId`, and it
17568
17582
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -53393,7 +53407,7 @@ var BatteryStatusSchema = object({
53393
53407
  */
53394
53408
  binary: boolean().optional()
53395
53409
  });
53396
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
53410
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
53397
53411
  deviceId: number(),
53398
53412
  /** Bound on the wait. Sensible range 3000–10000ms. */
53399
53413
  timeoutMs: number().int().min(500).max(3e4).default(8e3)
@@ -54293,6 +54307,130 @@ object({
54293
54307
  deviceId: number(),
54294
54308
  status: DeviceStatusSchema
54295
54309
  });
54310
+ /**
54311
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
54312
+ * consumable levels (salt, rinse aid) and common program options.
54313
+ *
54314
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
54315
+ * by any integration that exposes the same program / option surface.
54316
+ *
54317
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
54318
+ * provider refreshes the slice on an interval and eagerly after commands.
54319
+ */
54320
+ var DishwasherStateSchema = _enum([
54321
+ "idle",
54322
+ "running",
54323
+ "paused",
54324
+ "finished",
54325
+ "error",
54326
+ "unavailable"
54327
+ ]);
54328
+ var DishwasherConsumableLevelSchema = _enum([
54329
+ "ok",
54330
+ "low",
54331
+ "empty"
54332
+ ]);
54333
+ object({
54334
+ state: DishwasherStateSchema,
54335
+ /** Active program id/name, or null when none selected / unknown. */
54336
+ program: string().nullable(),
54337
+ /** Program tokens the hardware accepts — drives the UI selector. */
54338
+ availablePrograms: array(string()),
54339
+ /** Minutes remaining on the active cycle, or null when not running. */
54340
+ remainingMinutes: number().int().nonnegative().nullable(),
54341
+ /** Cycle completion 0..100, or null when not applicable. */
54342
+ progressPercent: number().min(0).max(100).nullable(),
54343
+ /** True when the door is reported open. */
54344
+ doorOpen: boolean(),
54345
+ /** True when remote start is allowed (door closed, power on, etc.). */
54346
+ remoteStartAllowed: boolean(),
54347
+ /** Main power / switched-on state. */
54348
+ powerOn: boolean(),
54349
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
54350
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54351
+ halfLoad: boolean(),
54352
+ hygienePlus: boolean(),
54353
+ /** Extra dry option when the appliance exposes it. */
54354
+ extraDry: boolean(),
54355
+ /** Intensive zone (lower basket) when the appliance exposes it. */
54356
+ intensiveZone: boolean(),
54357
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
54358
+ varioSpeedPlus: boolean(),
54359
+ /** Child lock (controls disabled on the appliance). */
54360
+ childLock: boolean(),
54361
+ errorCode: number().nullable(),
54362
+ errorLabel: string().nullable(),
54363
+ lastFetchedAt: number()
54364
+ });
54365
+ DeviceType.Dishwasher, method(object({ deviceId: number().int().nonnegative() }), _void(), {
54366
+ kind: "mutation",
54367
+ auth: "protected"
54368
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54369
+ kind: "mutation",
54370
+ auth: "protected"
54371
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54372
+ kind: "mutation",
54373
+ auth: "protected"
54374
+ }), method(object({
54375
+ deviceId: number().int().nonnegative(),
54376
+ program: string().min(1)
54377
+ }), _void(), {
54378
+ kind: "mutation",
54379
+ auth: "protected"
54380
+ }), method(object({
54381
+ deviceId: number().int().nonnegative(),
54382
+ on: boolean()
54383
+ }), _void(), {
54384
+ kind: "mutation",
54385
+ auth: "protected"
54386
+ }), method(object({
54387
+ deviceId: number().int().nonnegative(),
54388
+ on: boolean()
54389
+ }), _void(), {
54390
+ kind: "mutation",
54391
+ auth: "protected"
54392
+ }), method(object({
54393
+ deviceId: number().int().nonnegative(),
54394
+ on: boolean()
54395
+ }), _void(), {
54396
+ kind: "mutation",
54397
+ auth: "protected"
54398
+ }), method(object({
54399
+ deviceId: number().int().nonnegative(),
54400
+ on: boolean()
54401
+ }), _void(), {
54402
+ kind: "mutation",
54403
+ auth: "protected"
54404
+ }), method(object({
54405
+ deviceId: number().int().nonnegative(),
54406
+ on: boolean()
54407
+ }), _void(), {
54408
+ kind: "mutation",
54409
+ auth: "protected"
54410
+ }), method(object({
54411
+ deviceId: number().int().nonnegative(),
54412
+ on: boolean()
54413
+ }), _void(), {
54414
+ kind: "mutation",
54415
+ auth: "protected"
54416
+ }), method(object({
54417
+ deviceId: number().int().nonnegative(),
54418
+ on: boolean()
54419
+ }), _void(), {
54420
+ kind: "mutation",
54421
+ auth: "protected"
54422
+ }), method(object({
54423
+ deviceId: number().int().nonnegative(),
54424
+ key: string().min(1),
54425
+ value: union([
54426
+ boolean(),
54427
+ string(),
54428
+ number()
54429
+ ])
54430
+ }), _void(), {
54431
+ kind: "mutation",
54432
+ auth: "protected"
54433
+ });
54296
54434
  object({
54297
54435
  /** Ms epoch of the last press. null = never observed since this provider started. */
54298
54436
  lastPressedAt: number().nullable(),
@@ -54858,6 +54996,13 @@ object({
54858
54996
  lastChangedAt: number()
54859
54997
  });
54860
54998
  DeviceType.Sensor;
54999
+ object({
55000
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
55001
+ position: number().min(0).max(100).nullable(),
55002
+ /** Ms epoch when the slice was last updated (push or poll). */
55003
+ lastFetchedAt: number()
55004
+ });
55005
+ DeviceType.Thermostat;
54861
55006
  object({
54862
55007
  /** Whether the humidifier is currently on. */
54863
55008
  on: boolean(),
@@ -61955,7 +62100,7 @@ var AccessoryKind = {
61955
62100
  PrivacyMask: DeviceRole.PrivacyMask
61956
62101
  };
61957
62102
  AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
61958
- 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;
62103
+ 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;
61959
62104
  new Set(Object.values(DeviceType));
61960
62105
  Object.freeze({
61961
62106
  "accessories.getStatus": {
@@ -64376,6 +64521,84 @@ Object.freeze({
64376
64521
  addonId: null,
64377
64522
  access: "view"
64378
64523
  },
64524
+ "dishwasher.getStatus": {
64525
+ capName: "dishwasher",
64526
+ capScope: "device",
64527
+ addonId: null,
64528
+ access: "view"
64529
+ },
64530
+ "dishwasher.pause": {
64531
+ capName: "dishwasher",
64532
+ capScope: "device",
64533
+ addonId: null,
64534
+ access: "create"
64535
+ },
64536
+ "dishwasher.setChildLock": {
64537
+ capName: "dishwasher",
64538
+ capScope: "device",
64539
+ addonId: null,
64540
+ access: "create"
64541
+ },
64542
+ "dishwasher.setExtraDry": {
64543
+ capName: "dishwasher",
64544
+ capScope: "device",
64545
+ addonId: null,
64546
+ access: "create"
64547
+ },
64548
+ "dishwasher.setHalfLoad": {
64549
+ capName: "dishwasher",
64550
+ capScope: "device",
64551
+ addonId: null,
64552
+ access: "create"
64553
+ },
64554
+ "dishwasher.setHygienePlus": {
64555
+ capName: "dishwasher",
64556
+ capScope: "device",
64557
+ addonId: null,
64558
+ access: "create"
64559
+ },
64560
+ "dishwasher.setIntensiveZone": {
64561
+ capName: "dishwasher",
64562
+ capScope: "device",
64563
+ addonId: null,
64564
+ access: "create"
64565
+ },
64566
+ "dishwasher.setOption": {
64567
+ capName: "dishwasher",
64568
+ capScope: "device",
64569
+ addonId: null,
64570
+ access: "create"
64571
+ },
64572
+ "dishwasher.setPower": {
64573
+ capName: "dishwasher",
64574
+ capScope: "device",
64575
+ addonId: null,
64576
+ access: "create"
64577
+ },
64578
+ "dishwasher.setProgram": {
64579
+ capName: "dishwasher",
64580
+ capScope: "device",
64581
+ addonId: null,
64582
+ access: "create"
64583
+ },
64584
+ "dishwasher.setVarioSpeedPlus": {
64585
+ capName: "dishwasher",
64586
+ capScope: "device",
64587
+ addonId: null,
64588
+ access: "create"
64589
+ },
64590
+ "dishwasher.start": {
64591
+ capName: "dishwasher",
64592
+ capScope: "device",
64593
+ addonId: null,
64594
+ access: "create"
64595
+ },
64596
+ "dishwasher.stop": {
64597
+ capName: "dishwasher",
64598
+ capScope: "device",
64599
+ addonId: null,
64600
+ access: "create"
64601
+ },
64379
64602
  "doorbell.getStatus": {
64380
64603
  capName: "doorbell",
64381
64604
  capScope: "device",
@@ -64586,6 +64809,12 @@ Object.freeze({
64586
64809
  addonId: null,
64587
64810
  access: "view"
64588
64811
  },
64812
+ "heatingValve.getStatus": {
64813
+ capName: "heating-valve",
64814
+ capScope: "device",
64815
+ addonId: null,
64816
+ access: "view"
64817
+ },
64589
64818
  "humidifier.getStatus": {
64590
64819
  capName: "humidifier",
64591
64820
  capScope: "device",
@@ -70173,7 +70402,7 @@ Object.freeze({
70173
70402
  access: "create"
70174
70403
  }
70175
70404
  });
70176
- 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;
70405
+ 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;
70177
70406
  DeviceFeature.BatteryOperated;
70178
70407
  Object.freeze({
70179
70408
  "accessories.getStatus": [{
@@ -70997,6 +71226,71 @@ Object.freeze({
70997
71226
  form: "single",
70998
71227
  optional: false
70999
71228
  }],
71229
+ "dishwasher.getStatus": [{
71230
+ name: "deviceId",
71231
+ form: "single",
71232
+ optional: false
71233
+ }],
71234
+ "dishwasher.pause": [{
71235
+ name: "deviceId",
71236
+ form: "single",
71237
+ optional: false
71238
+ }],
71239
+ "dishwasher.setChildLock": [{
71240
+ name: "deviceId",
71241
+ form: "single",
71242
+ optional: false
71243
+ }],
71244
+ "dishwasher.setExtraDry": [{
71245
+ name: "deviceId",
71246
+ form: "single",
71247
+ optional: false
71248
+ }],
71249
+ "dishwasher.setHalfLoad": [{
71250
+ name: "deviceId",
71251
+ form: "single",
71252
+ optional: false
71253
+ }],
71254
+ "dishwasher.setHygienePlus": [{
71255
+ name: "deviceId",
71256
+ form: "single",
71257
+ optional: false
71258
+ }],
71259
+ "dishwasher.setIntensiveZone": [{
71260
+ name: "deviceId",
71261
+ form: "single",
71262
+ optional: false
71263
+ }],
71264
+ "dishwasher.setOption": [{
71265
+ name: "deviceId",
71266
+ form: "single",
71267
+ optional: false
71268
+ }],
71269
+ "dishwasher.setPower": [{
71270
+ name: "deviceId",
71271
+ form: "single",
71272
+ optional: false
71273
+ }],
71274
+ "dishwasher.setProgram": [{
71275
+ name: "deviceId",
71276
+ form: "single",
71277
+ optional: false
71278
+ }],
71279
+ "dishwasher.setVarioSpeedPlus": [{
71280
+ name: "deviceId",
71281
+ form: "single",
71282
+ optional: false
71283
+ }],
71284
+ "dishwasher.start": [{
71285
+ name: "deviceId",
71286
+ form: "single",
71287
+ optional: false
71288
+ }],
71289
+ "dishwasher.stop": [{
71290
+ name: "deviceId",
71291
+ form: "single",
71292
+ optional: false
71293
+ }],
71000
71294
  "doorbell.getStatus": [{
71001
71295
  name: "deviceId",
71002
71296
  form: "single",
@@ -71066,6 +71360,11 @@ Object.freeze({
71066
71360
  form: "single",
71067
71361
  optional: false
71068
71362
  }],
71363
+ "heatingValve.getStatus": [{
71364
+ name: "deviceId",
71365
+ form: "single",
71366
+ optional: false
71367
+ }],
71069
71368
  "humidifier.getStatus": [{
71070
71369
  name: "deviceId",
71071
71370
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-export-alexa",
3
- "version": "1.2.146",
3
+ "version": "1.2.147",
4
4
  "description": "Alexa Smart Home Skill export — hub-side OAuth provider + directive handler. The companion AWS Lambda forwards Alexa directives to this addon's /addon/export-alexa/directive endpoint.",
5
5
  "keywords": [
6
6
  "camstack",