@camstack/addon-waste-collections 0.1.8 → 0.1.9

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.
@@ -5545,7 +5545,7 @@ var ZodIssueCode = {
5545
5545
  var ZodFirstPartyTypeKind;
5546
5546
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5547
5547
  //#endregion
5548
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5548
+ //#region ../types/dist/sleep-BegKjwUu.mjs
5549
5549
  /**
5550
5550
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5551
5551
  * window to float samples (D455).
@@ -8791,7 +8791,7 @@ object({
8791
8791
  params: record(string(), union([string(), number()])).optional()
8792
8792
  });
8793
8793
  //#endregion
8794
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8794
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8795
8795
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8796
8796
  DeviceType["Camera"] = "camera";
8797
8797
  DeviceType["Hub"] = "hub";
@@ -8883,6 +8883,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8883
8883
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8884
8884
  * integrations sharing the same food/desiccant/hopper surface. */
8885
8885
  DeviceType["PetFeeder"] = "pet-feeder";
8886
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8887
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8888
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8889
+ DeviceType["Dishwasher"] = "dishwasher";
8886
8890
  return DeviceType;
8887
8891
  }({});
8888
8892
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -9130,7 +9134,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
9130
9134
  return DeviceRole;
9131
9135
  }({});
9132
9136
  //#endregion
9133
- //#region ../types/dist/composition-DOwQB_Ua.mjs
9137
+ //#region ../types/dist/composition-CB6PMT9p.mjs
9134
9138
  /**
9135
9139
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9136
9140
  *
@@ -13516,8 +13520,13 @@ var AlertSeveritySchema = _enum([
13516
13520
  "info",
13517
13521
  "success",
13518
13522
  "warning",
13519
- "error"
13523
+ "error",
13524
+ "critical"
13520
13525
  ]);
13526
+ var AlertActionSchema = object({
13527
+ label: string(),
13528
+ href: string().optional()
13529
+ });
13521
13530
  var AlertStatusSchema = _enum([
13522
13531
  "active",
13523
13532
  "in-progress",
@@ -13535,6 +13544,7 @@ var AlertSchema = object({
13535
13544
  severity: AlertSeveritySchema,
13536
13545
  title: string(),
13537
13546
  message: string(),
13547
+ action: AlertActionSchema.optional(),
13538
13548
  status: AlertStatusSchema,
13539
13549
  progress: number().optional(),
13540
13550
  read: boolean(),
@@ -17679,7 +17689,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
17679
17689
  });
17680
17690
  /**
17681
17691
  * `device-adoption` — generic discovery + adoption surface,
17682
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17692
+ * system-scoped collection (one provider per integration addon), routed
17693
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17694
+ * pin model as `connection-test`. The admin UI keeps using
17695
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17696
+ * successor to `ha-discovery`:
17683
17697
  * keyed by `integrationId` (the addon resolves integrationId → broker
17684
17698
  * internally) rather than a connection-specific `brokerId`, and it
17685
17699
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -53469,7 +53483,7 @@ var BatteryStatusSchema = object({
53469
53483
  */
53470
53484
  binary: boolean().optional()
53471
53485
  });
53472
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
53486
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
53473
53487
  deviceId: number(),
53474
53488
  /** Bound on the wait. Sensible range 3000–10000ms. */
53475
53489
  timeoutMs: number().int().min(500).max(3e4).default(8e3)
@@ -54355,6 +54369,130 @@ object({
54355
54369
  deviceId: number(),
54356
54370
  status: DeviceStatusSchema
54357
54371
  });
54372
+ /**
54373
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
54374
+ * consumable levels (salt, rinse aid) and common program options.
54375
+ *
54376
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
54377
+ * by any integration that exposes the same program / option surface.
54378
+ *
54379
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
54380
+ * provider refreshes the slice on an interval and eagerly after commands.
54381
+ */
54382
+ var DishwasherStateSchema = _enum([
54383
+ "idle",
54384
+ "running",
54385
+ "paused",
54386
+ "finished",
54387
+ "error",
54388
+ "unavailable"
54389
+ ]);
54390
+ var DishwasherConsumableLevelSchema = _enum([
54391
+ "ok",
54392
+ "low",
54393
+ "empty"
54394
+ ]);
54395
+ object({
54396
+ state: DishwasherStateSchema,
54397
+ /** Active program id/name, or null when none selected / unknown. */
54398
+ program: string().nullable(),
54399
+ /** Program tokens the hardware accepts — drives the UI selector. */
54400
+ availablePrograms: array(string()),
54401
+ /** Minutes remaining on the active cycle, or null when not running. */
54402
+ remainingMinutes: number().int().nonnegative().nullable(),
54403
+ /** Cycle completion 0..100, or null when not applicable. */
54404
+ progressPercent: number().min(0).max(100).nullable(),
54405
+ /** True when the door is reported open. */
54406
+ doorOpen: boolean(),
54407
+ /** True when remote start is allowed (door closed, power on, etc.). */
54408
+ remoteStartAllowed: boolean(),
54409
+ /** Main power / switched-on state. */
54410
+ powerOn: boolean(),
54411
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
54412
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54413
+ halfLoad: boolean(),
54414
+ hygienePlus: boolean(),
54415
+ /** Extra dry option when the appliance exposes it. */
54416
+ extraDry: boolean(),
54417
+ /** Intensive zone (lower basket) when the appliance exposes it. */
54418
+ intensiveZone: boolean(),
54419
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
54420
+ varioSpeedPlus: boolean(),
54421
+ /** Child lock (controls disabled on the appliance). */
54422
+ childLock: boolean(),
54423
+ errorCode: number().nullable(),
54424
+ errorLabel: string().nullable(),
54425
+ lastFetchedAt: number()
54426
+ });
54427
+ DeviceType.Dishwasher, method(object({ deviceId: number().int().nonnegative() }), _void(), {
54428
+ kind: "mutation",
54429
+ auth: "protected"
54430
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54431
+ kind: "mutation",
54432
+ auth: "protected"
54433
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54434
+ kind: "mutation",
54435
+ auth: "protected"
54436
+ }), method(object({
54437
+ deviceId: number().int().nonnegative(),
54438
+ program: string().min(1)
54439
+ }), _void(), {
54440
+ kind: "mutation",
54441
+ auth: "protected"
54442
+ }), method(object({
54443
+ deviceId: number().int().nonnegative(),
54444
+ on: boolean()
54445
+ }), _void(), {
54446
+ kind: "mutation",
54447
+ auth: "protected"
54448
+ }), method(object({
54449
+ deviceId: number().int().nonnegative(),
54450
+ on: boolean()
54451
+ }), _void(), {
54452
+ kind: "mutation",
54453
+ auth: "protected"
54454
+ }), method(object({
54455
+ deviceId: number().int().nonnegative(),
54456
+ on: boolean()
54457
+ }), _void(), {
54458
+ kind: "mutation",
54459
+ auth: "protected"
54460
+ }), method(object({
54461
+ deviceId: number().int().nonnegative(),
54462
+ on: boolean()
54463
+ }), _void(), {
54464
+ kind: "mutation",
54465
+ auth: "protected"
54466
+ }), method(object({
54467
+ deviceId: number().int().nonnegative(),
54468
+ on: boolean()
54469
+ }), _void(), {
54470
+ kind: "mutation",
54471
+ auth: "protected"
54472
+ }), method(object({
54473
+ deviceId: number().int().nonnegative(),
54474
+ on: boolean()
54475
+ }), _void(), {
54476
+ kind: "mutation",
54477
+ auth: "protected"
54478
+ }), method(object({
54479
+ deviceId: number().int().nonnegative(),
54480
+ on: boolean()
54481
+ }), _void(), {
54482
+ kind: "mutation",
54483
+ auth: "protected"
54484
+ }), method(object({
54485
+ deviceId: number().int().nonnegative(),
54486
+ key: string().min(1),
54487
+ value: union([
54488
+ boolean(),
54489
+ string(),
54490
+ number()
54491
+ ])
54492
+ }), _void(), {
54493
+ kind: "mutation",
54494
+ auth: "protected"
54495
+ });
54358
54496
  object({
54359
54497
  /** Ms epoch of the last press. null = never observed since this provider started. */
54360
54498
  lastPressedAt: number().nullable(),
@@ -54920,6 +55058,13 @@ object({
54920
55058
  lastChangedAt: number()
54921
55059
  });
54922
55060
  DeviceType.Sensor;
55061
+ object({
55062
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
55063
+ position: number().min(0).max(100).nullable(),
55064
+ /** Ms epoch when the slice was last updated (push or poll). */
55065
+ lastFetchedAt: number()
55066
+ });
55067
+ DeviceType.Thermostat;
54923
55068
  object({
54924
55069
  /** Whether the humidifier is currently on. */
54925
55070
  on: boolean(),
@@ -61986,7 +62131,7 @@ var AccessoryKind = {
61986
62131
  PrivacyMask: DeviceRole.PrivacyMask
61987
62132
  };
61988
62133
  AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
61989
- 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;
62134
+ 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;
61990
62135
  new Set(Object.values(DeviceType));
61991
62136
  Object.freeze({
61992
62137
  "accessories.getStatus": {
@@ -64407,6 +64552,84 @@ Object.freeze({
64407
64552
  addonId: null,
64408
64553
  access: "view"
64409
64554
  },
64555
+ "dishwasher.getStatus": {
64556
+ capName: "dishwasher",
64557
+ capScope: "device",
64558
+ addonId: null,
64559
+ access: "view"
64560
+ },
64561
+ "dishwasher.pause": {
64562
+ capName: "dishwasher",
64563
+ capScope: "device",
64564
+ addonId: null,
64565
+ access: "create"
64566
+ },
64567
+ "dishwasher.setChildLock": {
64568
+ capName: "dishwasher",
64569
+ capScope: "device",
64570
+ addonId: null,
64571
+ access: "create"
64572
+ },
64573
+ "dishwasher.setExtraDry": {
64574
+ capName: "dishwasher",
64575
+ capScope: "device",
64576
+ addonId: null,
64577
+ access: "create"
64578
+ },
64579
+ "dishwasher.setHalfLoad": {
64580
+ capName: "dishwasher",
64581
+ capScope: "device",
64582
+ addonId: null,
64583
+ access: "create"
64584
+ },
64585
+ "dishwasher.setHygienePlus": {
64586
+ capName: "dishwasher",
64587
+ capScope: "device",
64588
+ addonId: null,
64589
+ access: "create"
64590
+ },
64591
+ "dishwasher.setIntensiveZone": {
64592
+ capName: "dishwasher",
64593
+ capScope: "device",
64594
+ addonId: null,
64595
+ access: "create"
64596
+ },
64597
+ "dishwasher.setOption": {
64598
+ capName: "dishwasher",
64599
+ capScope: "device",
64600
+ addonId: null,
64601
+ access: "create"
64602
+ },
64603
+ "dishwasher.setPower": {
64604
+ capName: "dishwasher",
64605
+ capScope: "device",
64606
+ addonId: null,
64607
+ access: "create"
64608
+ },
64609
+ "dishwasher.setProgram": {
64610
+ capName: "dishwasher",
64611
+ capScope: "device",
64612
+ addonId: null,
64613
+ access: "create"
64614
+ },
64615
+ "dishwasher.setVarioSpeedPlus": {
64616
+ capName: "dishwasher",
64617
+ capScope: "device",
64618
+ addonId: null,
64619
+ access: "create"
64620
+ },
64621
+ "dishwasher.start": {
64622
+ capName: "dishwasher",
64623
+ capScope: "device",
64624
+ addonId: null,
64625
+ access: "create"
64626
+ },
64627
+ "dishwasher.stop": {
64628
+ capName: "dishwasher",
64629
+ capScope: "device",
64630
+ addonId: null,
64631
+ access: "create"
64632
+ },
64410
64633
  "doorbell.getStatus": {
64411
64634
  capName: "doorbell",
64412
64635
  capScope: "device",
@@ -64617,6 +64840,12 @@ Object.freeze({
64617
64840
  addonId: null,
64618
64841
  access: "view"
64619
64842
  },
64843
+ "heatingValve.getStatus": {
64844
+ capName: "heating-valve",
64845
+ capScope: "device",
64846
+ addonId: null,
64847
+ access: "view"
64848
+ },
64620
64849
  "humidifier.getStatus": {
64621
64850
  capName: "humidifier",
64622
64851
  capScope: "device",
@@ -70204,7 +70433,7 @@ Object.freeze({
70204
70433
  access: "create"
70205
70434
  }
70206
70435
  });
70207
- 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;
70436
+ 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;
70208
70437
  DeviceFeature.BatteryOperated;
70209
70438
  Object.freeze({
70210
70439
  "accessories.getStatus": [{
@@ -71028,6 +71257,71 @@ Object.freeze({
71028
71257
  form: "single",
71029
71258
  optional: false
71030
71259
  }],
71260
+ "dishwasher.getStatus": [{
71261
+ name: "deviceId",
71262
+ form: "single",
71263
+ optional: false
71264
+ }],
71265
+ "dishwasher.pause": [{
71266
+ name: "deviceId",
71267
+ form: "single",
71268
+ optional: false
71269
+ }],
71270
+ "dishwasher.setChildLock": [{
71271
+ name: "deviceId",
71272
+ form: "single",
71273
+ optional: false
71274
+ }],
71275
+ "dishwasher.setExtraDry": [{
71276
+ name: "deviceId",
71277
+ form: "single",
71278
+ optional: false
71279
+ }],
71280
+ "dishwasher.setHalfLoad": [{
71281
+ name: "deviceId",
71282
+ form: "single",
71283
+ optional: false
71284
+ }],
71285
+ "dishwasher.setHygienePlus": [{
71286
+ name: "deviceId",
71287
+ form: "single",
71288
+ optional: false
71289
+ }],
71290
+ "dishwasher.setIntensiveZone": [{
71291
+ name: "deviceId",
71292
+ form: "single",
71293
+ optional: false
71294
+ }],
71295
+ "dishwasher.setOption": [{
71296
+ name: "deviceId",
71297
+ form: "single",
71298
+ optional: false
71299
+ }],
71300
+ "dishwasher.setPower": [{
71301
+ name: "deviceId",
71302
+ form: "single",
71303
+ optional: false
71304
+ }],
71305
+ "dishwasher.setProgram": [{
71306
+ name: "deviceId",
71307
+ form: "single",
71308
+ optional: false
71309
+ }],
71310
+ "dishwasher.setVarioSpeedPlus": [{
71311
+ name: "deviceId",
71312
+ form: "single",
71313
+ optional: false
71314
+ }],
71315
+ "dishwasher.start": [{
71316
+ name: "deviceId",
71317
+ form: "single",
71318
+ optional: false
71319
+ }],
71320
+ "dishwasher.stop": [{
71321
+ name: "deviceId",
71322
+ form: "single",
71323
+ optional: false
71324
+ }],
71031
71325
  "doorbell.getStatus": [{
71032
71326
  name: "deviceId",
71033
71327
  form: "single",
@@ -71097,6 +71391,11 @@ Object.freeze({
71097
71391
  form: "single",
71098
71392
  optional: false
71099
71393
  }],
71394
+ "heatingValve.getStatus": [{
71395
+ name: "deviceId",
71396
+ form: "single",
71397
+ optional: false
71398
+ }],
71100
71399
  "humidifier.getStatus": [{
71101
71400
  name: "deviceId",
71102
71401
  form: "single",
@@ -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).
@@ -8787,7 +8787,7 @@ object({
8787
8787
  params: record(string(), union([string(), number()])).optional()
8788
8788
  });
8789
8789
  //#endregion
8790
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8790
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8791
8791
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8792
8792
  DeviceType["Camera"] = "camera";
8793
8793
  DeviceType["Hub"] = "hub";
@@ -8879,6 +8879,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8879
8879
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8880
8880
  * integrations sharing the same food/desiccant/hopper surface. */
8881
8881
  DeviceType["PetFeeder"] = "pet-feeder";
8882
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8883
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8884
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8885
+ DeviceType["Dishwasher"] = "dishwasher";
8882
8886
  return DeviceType;
8883
8887
  }({});
8884
8888
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -9126,7 +9130,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
9126
9130
  return DeviceRole;
9127
9131
  }({});
9128
9132
  //#endregion
9129
- //#region ../types/dist/composition-DOwQB_Ua.mjs
9133
+ //#region ../types/dist/composition-CB6PMT9p.mjs
9130
9134
  /**
9131
9135
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9132
9136
  *
@@ -13512,8 +13516,13 @@ var AlertSeveritySchema = _enum([
13512
13516
  "info",
13513
13517
  "success",
13514
13518
  "warning",
13515
- "error"
13519
+ "error",
13520
+ "critical"
13516
13521
  ]);
13522
+ var AlertActionSchema = object({
13523
+ label: string(),
13524
+ href: string().optional()
13525
+ });
13517
13526
  var AlertStatusSchema = _enum([
13518
13527
  "active",
13519
13528
  "in-progress",
@@ -13531,6 +13540,7 @@ var AlertSchema = object({
13531
13540
  severity: AlertSeveritySchema,
13532
13541
  title: string(),
13533
13542
  message: string(),
13543
+ action: AlertActionSchema.optional(),
13534
13544
  status: AlertStatusSchema,
13535
13545
  progress: number().optional(),
13536
13546
  read: boolean(),
@@ -17675,7 +17685,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
17675
17685
  });
17676
17686
  /**
17677
17687
  * `device-adoption` — generic discovery + adoption surface,
17678
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17688
+ * system-scoped collection (one provider per integration addon), routed
17689
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17690
+ * pin model as `connection-test`. The admin UI keeps using
17691
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17692
+ * successor to `ha-discovery`:
17679
17693
  * keyed by `integrationId` (the addon resolves integrationId → broker
17680
17694
  * internally) rather than a connection-specific `brokerId`, and it
17681
17695
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -53465,7 +53479,7 @@ var BatteryStatusSchema = object({
53465
53479
  */
53466
53480
  binary: boolean().optional()
53467
53481
  });
53468
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, method(object({
53482
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
53469
53483
  deviceId: number(),
53470
53484
  /** Bound on the wait. Sensible range 3000–10000ms. */
53471
53485
  timeoutMs: number().int().min(500).max(3e4).default(8e3)
@@ -54351,6 +54365,130 @@ object({
54351
54365
  deviceId: number(),
54352
54366
  status: DeviceStatusSchema
54353
54367
  });
54368
+ /**
54369
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
54370
+ * consumable levels (salt, rinse aid) and common program options.
54371
+ *
54372
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
54373
+ * by any integration that exposes the same program / option surface.
54374
+ *
54375
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
54376
+ * provider refreshes the slice on an interval and eagerly after commands.
54377
+ */
54378
+ var DishwasherStateSchema = _enum([
54379
+ "idle",
54380
+ "running",
54381
+ "paused",
54382
+ "finished",
54383
+ "error",
54384
+ "unavailable"
54385
+ ]);
54386
+ var DishwasherConsumableLevelSchema = _enum([
54387
+ "ok",
54388
+ "low",
54389
+ "empty"
54390
+ ]);
54391
+ object({
54392
+ state: DishwasherStateSchema,
54393
+ /** Active program id/name, or null when none selected / unknown. */
54394
+ program: string().nullable(),
54395
+ /** Program tokens the hardware accepts — drives the UI selector. */
54396
+ availablePrograms: array(string()),
54397
+ /** Minutes remaining on the active cycle, or null when not running. */
54398
+ remainingMinutes: number().int().nonnegative().nullable(),
54399
+ /** Cycle completion 0..100, or null when not applicable. */
54400
+ progressPercent: number().min(0).max(100).nullable(),
54401
+ /** True when the door is reported open. */
54402
+ doorOpen: boolean(),
54403
+ /** True when remote start is allowed (door closed, power on, etc.). */
54404
+ remoteStartAllowed: boolean(),
54405
+ /** Main power / switched-on state. */
54406
+ powerOn: boolean(),
54407
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
54408
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54409
+ halfLoad: boolean(),
54410
+ hygienePlus: boolean(),
54411
+ /** Extra dry option when the appliance exposes it. */
54412
+ extraDry: boolean(),
54413
+ /** Intensive zone (lower basket) when the appliance exposes it. */
54414
+ intensiveZone: boolean(),
54415
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
54416
+ varioSpeedPlus: boolean(),
54417
+ /** Child lock (controls disabled on the appliance). */
54418
+ childLock: boolean(),
54419
+ errorCode: number().nullable(),
54420
+ errorLabel: string().nullable(),
54421
+ lastFetchedAt: number()
54422
+ });
54423
+ DeviceType.Dishwasher, method(object({ deviceId: number().int().nonnegative() }), _void(), {
54424
+ kind: "mutation",
54425
+ auth: "protected"
54426
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54427
+ kind: "mutation",
54428
+ auth: "protected"
54429
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
54430
+ kind: "mutation",
54431
+ auth: "protected"
54432
+ }), method(object({
54433
+ deviceId: number().int().nonnegative(),
54434
+ program: string().min(1)
54435
+ }), _void(), {
54436
+ kind: "mutation",
54437
+ auth: "protected"
54438
+ }), method(object({
54439
+ deviceId: number().int().nonnegative(),
54440
+ on: boolean()
54441
+ }), _void(), {
54442
+ kind: "mutation",
54443
+ auth: "protected"
54444
+ }), method(object({
54445
+ deviceId: number().int().nonnegative(),
54446
+ on: boolean()
54447
+ }), _void(), {
54448
+ kind: "mutation",
54449
+ auth: "protected"
54450
+ }), method(object({
54451
+ deviceId: number().int().nonnegative(),
54452
+ on: boolean()
54453
+ }), _void(), {
54454
+ kind: "mutation",
54455
+ auth: "protected"
54456
+ }), method(object({
54457
+ deviceId: number().int().nonnegative(),
54458
+ on: boolean()
54459
+ }), _void(), {
54460
+ kind: "mutation",
54461
+ auth: "protected"
54462
+ }), method(object({
54463
+ deviceId: number().int().nonnegative(),
54464
+ on: boolean()
54465
+ }), _void(), {
54466
+ kind: "mutation",
54467
+ auth: "protected"
54468
+ }), method(object({
54469
+ deviceId: number().int().nonnegative(),
54470
+ on: boolean()
54471
+ }), _void(), {
54472
+ kind: "mutation",
54473
+ auth: "protected"
54474
+ }), method(object({
54475
+ deviceId: number().int().nonnegative(),
54476
+ on: boolean()
54477
+ }), _void(), {
54478
+ kind: "mutation",
54479
+ auth: "protected"
54480
+ }), method(object({
54481
+ deviceId: number().int().nonnegative(),
54482
+ key: string().min(1),
54483
+ value: union([
54484
+ boolean(),
54485
+ string(),
54486
+ number()
54487
+ ])
54488
+ }), _void(), {
54489
+ kind: "mutation",
54490
+ auth: "protected"
54491
+ });
54354
54492
  object({
54355
54493
  /** Ms epoch of the last press. null = never observed since this provider started. */
54356
54494
  lastPressedAt: number().nullable(),
@@ -54916,6 +55054,13 @@ object({
54916
55054
  lastChangedAt: number()
54917
55055
  });
54918
55056
  DeviceType.Sensor;
55057
+ object({
55058
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
55059
+ position: number().min(0).max(100).nullable(),
55060
+ /** Ms epoch when the slice was last updated (push or poll). */
55061
+ lastFetchedAt: number()
55062
+ });
55063
+ DeviceType.Thermostat;
54919
55064
  object({
54920
55065
  /** Whether the humidifier is currently on. */
54921
55066
  on: boolean(),
@@ -61982,7 +62127,7 @@ var AccessoryKind = {
61982
62127
  PrivacyMask: DeviceRole.PrivacyMask
61983
62128
  };
61984
62129
  AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
61985
- 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;
62130
+ 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;
61986
62131
  new Set(Object.values(DeviceType));
61987
62132
  Object.freeze({
61988
62133
  "accessories.getStatus": {
@@ -64403,6 +64548,84 @@ Object.freeze({
64403
64548
  addonId: null,
64404
64549
  access: "view"
64405
64550
  },
64551
+ "dishwasher.getStatus": {
64552
+ capName: "dishwasher",
64553
+ capScope: "device",
64554
+ addonId: null,
64555
+ access: "view"
64556
+ },
64557
+ "dishwasher.pause": {
64558
+ capName: "dishwasher",
64559
+ capScope: "device",
64560
+ addonId: null,
64561
+ access: "create"
64562
+ },
64563
+ "dishwasher.setChildLock": {
64564
+ capName: "dishwasher",
64565
+ capScope: "device",
64566
+ addonId: null,
64567
+ access: "create"
64568
+ },
64569
+ "dishwasher.setExtraDry": {
64570
+ capName: "dishwasher",
64571
+ capScope: "device",
64572
+ addonId: null,
64573
+ access: "create"
64574
+ },
64575
+ "dishwasher.setHalfLoad": {
64576
+ capName: "dishwasher",
64577
+ capScope: "device",
64578
+ addonId: null,
64579
+ access: "create"
64580
+ },
64581
+ "dishwasher.setHygienePlus": {
64582
+ capName: "dishwasher",
64583
+ capScope: "device",
64584
+ addonId: null,
64585
+ access: "create"
64586
+ },
64587
+ "dishwasher.setIntensiveZone": {
64588
+ capName: "dishwasher",
64589
+ capScope: "device",
64590
+ addonId: null,
64591
+ access: "create"
64592
+ },
64593
+ "dishwasher.setOption": {
64594
+ capName: "dishwasher",
64595
+ capScope: "device",
64596
+ addonId: null,
64597
+ access: "create"
64598
+ },
64599
+ "dishwasher.setPower": {
64600
+ capName: "dishwasher",
64601
+ capScope: "device",
64602
+ addonId: null,
64603
+ access: "create"
64604
+ },
64605
+ "dishwasher.setProgram": {
64606
+ capName: "dishwasher",
64607
+ capScope: "device",
64608
+ addonId: null,
64609
+ access: "create"
64610
+ },
64611
+ "dishwasher.setVarioSpeedPlus": {
64612
+ capName: "dishwasher",
64613
+ capScope: "device",
64614
+ addonId: null,
64615
+ access: "create"
64616
+ },
64617
+ "dishwasher.start": {
64618
+ capName: "dishwasher",
64619
+ capScope: "device",
64620
+ addonId: null,
64621
+ access: "create"
64622
+ },
64623
+ "dishwasher.stop": {
64624
+ capName: "dishwasher",
64625
+ capScope: "device",
64626
+ addonId: null,
64627
+ access: "create"
64628
+ },
64406
64629
  "doorbell.getStatus": {
64407
64630
  capName: "doorbell",
64408
64631
  capScope: "device",
@@ -64613,6 +64836,12 @@ Object.freeze({
64613
64836
  addonId: null,
64614
64837
  access: "view"
64615
64838
  },
64839
+ "heatingValve.getStatus": {
64840
+ capName: "heating-valve",
64841
+ capScope: "device",
64842
+ addonId: null,
64843
+ access: "view"
64844
+ },
64616
64845
  "humidifier.getStatus": {
64617
64846
  capName: "humidifier",
64618
64847
  capScope: "device",
@@ -70200,7 +70429,7 @@ Object.freeze({
70200
70429
  access: "create"
70201
70430
  }
70202
70431
  });
70203
- 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;
70432
+ 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;
70204
70433
  DeviceFeature.BatteryOperated;
70205
70434
  Object.freeze({
70206
70435
  "accessories.getStatus": [{
@@ -71024,6 +71253,71 @@ Object.freeze({
71024
71253
  form: "single",
71025
71254
  optional: false
71026
71255
  }],
71256
+ "dishwasher.getStatus": [{
71257
+ name: "deviceId",
71258
+ form: "single",
71259
+ optional: false
71260
+ }],
71261
+ "dishwasher.pause": [{
71262
+ name: "deviceId",
71263
+ form: "single",
71264
+ optional: false
71265
+ }],
71266
+ "dishwasher.setChildLock": [{
71267
+ name: "deviceId",
71268
+ form: "single",
71269
+ optional: false
71270
+ }],
71271
+ "dishwasher.setExtraDry": [{
71272
+ name: "deviceId",
71273
+ form: "single",
71274
+ optional: false
71275
+ }],
71276
+ "dishwasher.setHalfLoad": [{
71277
+ name: "deviceId",
71278
+ form: "single",
71279
+ optional: false
71280
+ }],
71281
+ "dishwasher.setHygienePlus": [{
71282
+ name: "deviceId",
71283
+ form: "single",
71284
+ optional: false
71285
+ }],
71286
+ "dishwasher.setIntensiveZone": [{
71287
+ name: "deviceId",
71288
+ form: "single",
71289
+ optional: false
71290
+ }],
71291
+ "dishwasher.setOption": [{
71292
+ name: "deviceId",
71293
+ form: "single",
71294
+ optional: false
71295
+ }],
71296
+ "dishwasher.setPower": [{
71297
+ name: "deviceId",
71298
+ form: "single",
71299
+ optional: false
71300
+ }],
71301
+ "dishwasher.setProgram": [{
71302
+ name: "deviceId",
71303
+ form: "single",
71304
+ optional: false
71305
+ }],
71306
+ "dishwasher.setVarioSpeedPlus": [{
71307
+ name: "deviceId",
71308
+ form: "single",
71309
+ optional: false
71310
+ }],
71311
+ "dishwasher.start": [{
71312
+ name: "deviceId",
71313
+ form: "single",
71314
+ optional: false
71315
+ }],
71316
+ "dishwasher.stop": [{
71317
+ name: "deviceId",
71318
+ form: "single",
71319
+ optional: false
71320
+ }],
71027
71321
  "doorbell.getStatus": [{
71028
71322
  name: "deviceId",
71029
71323
  form: "single",
@@ -71093,6 +71387,11 @@ Object.freeze({
71093
71387
  form: "single",
71094
71388
  optional: false
71095
71389
  }],
71390
+ "heatingValve.getStatus": [{
71391
+ name: "deviceId",
71392
+ form: "single",
71393
+ optional: false
71394
+ }],
71096
71395
  "humidifier.getStatus": [{
71097
71396
  name: "deviceId",
71098
71397
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-waste-collections",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "Waste collection schedules via the vendored HACS waste_collection_schedule Python core — full source catalog as calendar-source.",
5
5
  "keywords": [
6
6
  "camstack",