@camstack/addon-provider-wyze 0.2.138 → 0.2.140

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/addon.js +368 -10
  2. package/dist/addon.mjs +368 -10
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -5437,7 +5437,7 @@ var ZodIssueCode = {
5437
5437
  var ZodFirstPartyTypeKind;
5438
5438
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5439
5439
  //#endregion
5440
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5440
+ //#region ../types/dist/sleep-BegKjwUu.mjs
5441
5441
  /**
5442
5442
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5443
5443
  * window to float samples (D455).
@@ -8470,7 +8470,7 @@ function userError(code, params, englishFallback) {
8470
8470
  return new CamstackError(code, params, englishFallback);
8471
8471
  }
8472
8472
  //#endregion
8473
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8473
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8474
8474
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8475
8475
  DeviceType["Camera"] = "camera";
8476
8476
  DeviceType["Hub"] = "hub";
@@ -8562,6 +8562,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8562
8562
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8563
8563
  * integrations sharing the same food/desiccant/hopper surface. */
8564
8564
  DeviceType["PetFeeder"] = "pet-feeder";
8565
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8566
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8567
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8568
+ DeviceType["Dishwasher"] = "dishwasher";
8565
8569
  return DeviceType;
8566
8570
  }({});
8567
8571
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -8819,7 +8823,7 @@ function errMsg(err) {
8819
8823
  return String(err);
8820
8824
  }
8821
8825
  //#endregion
8822
- //#region ../types/dist/composition-DOwQB_Ua.mjs
8826
+ //#region ../types/dist/composition-CB6PMT9p.mjs
8823
8827
  /**
8824
8828
  * The ffmpeg build every CamStack node downloads, per platform and arch.
8825
8829
  *
@@ -13225,8 +13229,13 @@ var AlertSeveritySchema = _enum([
13225
13229
  "info",
13226
13230
  "success",
13227
13231
  "warning",
13228
- "error"
13232
+ "error",
13233
+ "critical"
13229
13234
  ]);
13235
+ var AlertActionSchema = object({
13236
+ label: string(),
13237
+ href: string().optional()
13238
+ });
13230
13239
  var AlertStatusSchema = _enum([
13231
13240
  "active",
13232
13241
  "in-progress",
@@ -13244,6 +13253,7 @@ var AlertSchema = object({
13244
13253
  severity: AlertSeveritySchema,
13245
13254
  title: string(),
13246
13255
  message: string(),
13256
+ action: AlertActionSchema.optional(),
13247
13257
  status: AlertStatusSchema,
13248
13258
  progress: number().optional(),
13249
13259
  read: boolean(),
@@ -17605,7 +17615,11 @@ var deviceDiscoveryCapability = {
17605
17615
  };
17606
17616
  /**
17607
17617
  * `device-adoption` — generic discovery + adoption surface,
17608
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17618
+ * system-scoped collection (one provider per integration addon), routed
17619
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17620
+ * pin model as `connection-test`. The admin UI keeps using
17621
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17622
+ * successor to `ha-discovery`:
17609
17623
  * keyed by `integrationId` (the addon resolves integrationId → broker
17610
17624
  * internally) rather than a connection-specific `brokerId`, and it
17611
17625
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -17770,7 +17784,7 @@ var ResyncResultSchema = object({
17770
17784
  var deviceAdoptionCapability = {
17771
17785
  name: "device-adoption",
17772
17786
  scope: "system",
17773
- mode: "singleton",
17787
+ mode: "collection",
17774
17788
  status: {
17775
17789
  schema: AdoptionStatusSchema,
17776
17790
  kind: "poll"
@@ -53906,7 +53920,8 @@ var batteryCapability = {
53906
53920
  DeviceType.Button,
53907
53921
  DeviceType.Switch,
53908
53922
  DeviceType.PetFeeder,
53909
- DeviceType.Container
53923
+ DeviceType.Container,
53924
+ DeviceType.Thermostat
53910
53925
  ],
53911
53926
  methods: {
53912
53927
  /**
@@ -55387,6 +55402,161 @@ onStatusChanged: { data: object({
55387
55402
  * whether persisting is worth a SQLite commit. */
55388
55403
  volatileStateFields: ["lastChangedAt"]
55389
55404
  };
55405
+ /**
55406
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
55407
+ * consumable levels (salt, rinse aid) and common program options.
55408
+ *
55409
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
55410
+ * by any integration that exposes the same program / option surface.
55411
+ *
55412
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
55413
+ * provider refreshes the slice on an interval and eagerly after commands.
55414
+ */
55415
+ var DishwasherStateSchema = _enum([
55416
+ "idle",
55417
+ "running",
55418
+ "paused",
55419
+ "finished",
55420
+ "error",
55421
+ "unavailable"
55422
+ ]);
55423
+ var DishwasherConsumableLevelSchema = _enum([
55424
+ "ok",
55425
+ "low",
55426
+ "empty"
55427
+ ]);
55428
+ var DishwasherStatusSchema = object({
55429
+ state: DishwasherStateSchema,
55430
+ /** Active program id/name, or null when none selected / unknown. */
55431
+ program: string().nullable(),
55432
+ /** Program tokens the hardware accepts — drives the UI selector. */
55433
+ availablePrograms: array(string()),
55434
+ /** Minutes remaining on the active cycle, or null when not running. */
55435
+ remainingMinutes: number().int().nonnegative().nullable(),
55436
+ /** Cycle completion 0..100, or null when not applicable. */
55437
+ progressPercent: number().min(0).max(100).nullable(),
55438
+ /** True when the door is reported open. */
55439
+ doorOpen: boolean(),
55440
+ /** True when remote start is allowed (door closed, power on, etc.). */
55441
+ remoteStartAllowed: boolean(),
55442
+ /** Main power / switched-on state. */
55443
+ powerOn: boolean(),
55444
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
55445
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55446
+ halfLoad: boolean(),
55447
+ hygienePlus: boolean(),
55448
+ /** Extra dry option when the appliance exposes it. */
55449
+ extraDry: boolean(),
55450
+ /** Intensive zone (lower basket) when the appliance exposes it. */
55451
+ intensiveZone: boolean(),
55452
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
55453
+ varioSpeedPlus: boolean(),
55454
+ /** Child lock (controls disabled on the appliance). */
55455
+ childLock: boolean(),
55456
+ errorCode: number().nullable(),
55457
+ errorLabel: string().nullable(),
55458
+ lastFetchedAt: number()
55459
+ });
55460
+ var dishwasherCapability = {
55461
+ name: "dishwasher",
55462
+ scope: "device",
55463
+ deviceNative: true,
55464
+ mode: "singleton",
55465
+ deviceTypes: [DeviceType.Dishwasher],
55466
+ methods: {
55467
+ start: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55468
+ kind: "mutation",
55469
+ auth: "protected"
55470
+ }),
55471
+ pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55472
+ kind: "mutation",
55473
+ auth: "protected"
55474
+ }),
55475
+ stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55476
+ kind: "mutation",
55477
+ auth: "protected"
55478
+ }),
55479
+ setProgram: method(object({
55480
+ deviceId: number().int().nonnegative(),
55481
+ program: string().min(1)
55482
+ }), _void(), {
55483
+ kind: "mutation",
55484
+ auth: "protected"
55485
+ }),
55486
+ setPower: method(object({
55487
+ deviceId: number().int().nonnegative(),
55488
+ on: boolean()
55489
+ }), _void(), {
55490
+ kind: "mutation",
55491
+ auth: "protected"
55492
+ }),
55493
+ setHalfLoad: method(object({
55494
+ deviceId: number().int().nonnegative(),
55495
+ on: boolean()
55496
+ }), _void(), {
55497
+ kind: "mutation",
55498
+ auth: "protected"
55499
+ }),
55500
+ setHygienePlus: method(object({
55501
+ deviceId: number().int().nonnegative(),
55502
+ on: boolean()
55503
+ }), _void(), {
55504
+ kind: "mutation",
55505
+ auth: "protected"
55506
+ }),
55507
+ setExtraDry: method(object({
55508
+ deviceId: number().int().nonnegative(),
55509
+ on: boolean()
55510
+ }), _void(), {
55511
+ kind: "mutation",
55512
+ auth: "protected"
55513
+ }),
55514
+ setIntensiveZone: method(object({
55515
+ deviceId: number().int().nonnegative(),
55516
+ on: boolean()
55517
+ }), _void(), {
55518
+ kind: "mutation",
55519
+ auth: "protected"
55520
+ }),
55521
+ setVarioSpeedPlus: method(object({
55522
+ deviceId: number().int().nonnegative(),
55523
+ on: boolean()
55524
+ }), _void(), {
55525
+ kind: "mutation",
55526
+ auth: "protected"
55527
+ }),
55528
+ setChildLock: method(object({
55529
+ deviceId: number().int().nonnegative(),
55530
+ on: boolean()
55531
+ }), _void(), {
55532
+ kind: "mutation",
55533
+ auth: "protected"
55534
+ }),
55535
+ setOption: method(object({
55536
+ deviceId: number().int().nonnegative(),
55537
+ key: string().min(1),
55538
+ value: union([
55539
+ boolean(),
55540
+ string(),
55541
+ number()
55542
+ ])
55543
+ }), _void(), {
55544
+ kind: "mutation",
55545
+ auth: "protected"
55546
+ })
55547
+ },
55548
+ status: {
55549
+ schema: DishwasherStatusSchema,
55550
+ kind: "poll"
55551
+ },
55552
+ runtimeState: DishwasherStatusSchema,
55553
+ durability: "session",
55554
+ history: { fields: { progressPercent: {
55555
+ kind: "gauge",
55556
+ unit: "%",
55557
+ deadband: 2
55558
+ } } }
55559
+ };
55390
55560
  var DoorbellStatusSchema = object({
55391
55561
  /** Ms epoch of the last press. null = never observed since this provider started. */
55392
55562
  lastPressedAt: number().nullable(),
@@ -56189,6 +56359,32 @@ var gasCapability = {
56189
56359
  * whether persisting is worth a SQLite commit. */
56190
56360
  volatileStateFields: ["lastChangedAt"]
56191
56361
  };
56362
+ var HeatingValveStatusSchema = object({
56363
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
56364
+ position: number().min(0).max(100).nullable(),
56365
+ /** Ms epoch when the slice was last updated (push or poll). */
56366
+ lastFetchedAt: number()
56367
+ });
56368
+ var heatingValveCapability = {
56369
+ name: "heating-valve",
56370
+ scope: "device",
56371
+ deviceNative: true,
56372
+ mode: "singleton",
56373
+ deviceTypes: [DeviceType.Thermostat],
56374
+ methods: {},
56375
+ status: {
56376
+ schema: HeatingValveStatusSchema,
56377
+ kind: "push"
56378
+ },
56379
+ runtimeState: HeatingValveStatusSchema,
56380
+ durability: "session",
56381
+ history: { fields: { position: {
56382
+ kind: "gauge",
56383
+ unit: "%",
56384
+ deadband: 1
56385
+ } } },
56386
+ volatileStateFields: ["lastFetchedAt"]
56387
+ };
56192
56388
  /**
56193
56389
  * Humidifier / dehumidifier cap. Models HA `humidifier.*` entities —
56194
56390
  * an on/off actuator with an optional target-humidity setpoint and an
@@ -65609,6 +65805,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
65609
65805
  dayNight: dayNightCapability,
65610
65806
  deviceDiscovery: deviceDiscoveryCapability,
65611
65807
  deviceStatus: deviceStatusCapability,
65808
+ dishwasher: dishwasherCapability,
65612
65809
  doorbell: doorbellCapability,
65613
65810
  enumSensor: enumSensorCapability,
65614
65811
  eventEmitter: eventEmitterCapability,
@@ -65616,6 +65813,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
65616
65813
  featureProbe: featureProbeCapability,
65617
65814
  flood: floodCapability,
65618
65815
  gas: gasCapability,
65816
+ heatingValve: heatingValveCapability,
65619
65817
  humidifier: humidifierCapability,
65620
65818
  humiditySensor: humiditySensorCapability,
65621
65819
  image: imageCapability,
@@ -66341,6 +66539,12 @@ var BaseDeviceProvider = class extends BaseAddon {
66341
66539
  provider: this
66342
66540
  }];
66343
66541
  }
66542
+ /** Flatten `super.onInitialize()` whether it returned an array or an envelope. */
66543
+ providerRegistrationsFromSuper(result) {
66544
+ if (Array.isArray(result)) return result;
66545
+ if (result !== void 0 && result.providers !== void 0) return [...result.providers];
66546
+ return [];
66547
+ }
66344
66548
  async onShutdown() {
66345
66549
  this._restoreShuttingDown = true;
66346
66550
  this.cancelRestoreRetries();
@@ -66867,7 +67071,7 @@ var BaseDeviceProvider = class extends BaseAddon {
66867
67071
  return toDeviceSummary(device, this.addonId);
66868
67072
  }
66869
67073
  };
66870
- 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;
67074
+ 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;
66871
67075
  new Set(Object.values(DeviceType));
66872
67076
  Object.freeze({
66873
67077
  "accessories.getStatus": {
@@ -69288,6 +69492,84 @@ Object.freeze({
69288
69492
  addonId: null,
69289
69493
  access: "view"
69290
69494
  },
69495
+ "dishwasher.getStatus": {
69496
+ capName: "dishwasher",
69497
+ capScope: "device",
69498
+ addonId: null,
69499
+ access: "view"
69500
+ },
69501
+ "dishwasher.pause": {
69502
+ capName: "dishwasher",
69503
+ capScope: "device",
69504
+ addonId: null,
69505
+ access: "create"
69506
+ },
69507
+ "dishwasher.setChildLock": {
69508
+ capName: "dishwasher",
69509
+ capScope: "device",
69510
+ addonId: null,
69511
+ access: "create"
69512
+ },
69513
+ "dishwasher.setExtraDry": {
69514
+ capName: "dishwasher",
69515
+ capScope: "device",
69516
+ addonId: null,
69517
+ access: "create"
69518
+ },
69519
+ "dishwasher.setHalfLoad": {
69520
+ capName: "dishwasher",
69521
+ capScope: "device",
69522
+ addonId: null,
69523
+ access: "create"
69524
+ },
69525
+ "dishwasher.setHygienePlus": {
69526
+ capName: "dishwasher",
69527
+ capScope: "device",
69528
+ addonId: null,
69529
+ access: "create"
69530
+ },
69531
+ "dishwasher.setIntensiveZone": {
69532
+ capName: "dishwasher",
69533
+ capScope: "device",
69534
+ addonId: null,
69535
+ access: "create"
69536
+ },
69537
+ "dishwasher.setOption": {
69538
+ capName: "dishwasher",
69539
+ capScope: "device",
69540
+ addonId: null,
69541
+ access: "create"
69542
+ },
69543
+ "dishwasher.setPower": {
69544
+ capName: "dishwasher",
69545
+ capScope: "device",
69546
+ addonId: null,
69547
+ access: "create"
69548
+ },
69549
+ "dishwasher.setProgram": {
69550
+ capName: "dishwasher",
69551
+ capScope: "device",
69552
+ addonId: null,
69553
+ access: "create"
69554
+ },
69555
+ "dishwasher.setVarioSpeedPlus": {
69556
+ capName: "dishwasher",
69557
+ capScope: "device",
69558
+ addonId: null,
69559
+ access: "create"
69560
+ },
69561
+ "dishwasher.start": {
69562
+ capName: "dishwasher",
69563
+ capScope: "device",
69564
+ addonId: null,
69565
+ access: "create"
69566
+ },
69567
+ "dishwasher.stop": {
69568
+ capName: "dishwasher",
69569
+ capScope: "device",
69570
+ addonId: null,
69571
+ access: "create"
69572
+ },
69291
69573
  "doorbell.getStatus": {
69292
69574
  capName: "doorbell",
69293
69575
  capScope: "device",
@@ -69498,6 +69780,12 @@ Object.freeze({
69498
69780
  addonId: null,
69499
69781
  access: "view"
69500
69782
  },
69783
+ "heatingValve.getStatus": {
69784
+ capName: "heating-valve",
69785
+ capScope: "device",
69786
+ addonId: null,
69787
+ access: "view"
69788
+ },
69501
69789
  "humidifier.getStatus": {
69502
69790
  capName: "humidifier",
69503
69791
  capScope: "device",
@@ -75085,7 +75373,7 @@ Object.freeze({
75085
75373
  access: "create"
75086
75374
  }
75087
75375
  });
75088
- 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;
75376
+ 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;
75089
75377
  DeviceFeature.BatteryOperated;
75090
75378
  Object.freeze({
75091
75379
  "accessories.getStatus": [{
@@ -75909,6 +76197,71 @@ Object.freeze({
75909
76197
  form: "single",
75910
76198
  optional: false
75911
76199
  }],
76200
+ "dishwasher.getStatus": [{
76201
+ name: "deviceId",
76202
+ form: "single",
76203
+ optional: false
76204
+ }],
76205
+ "dishwasher.pause": [{
76206
+ name: "deviceId",
76207
+ form: "single",
76208
+ optional: false
76209
+ }],
76210
+ "dishwasher.setChildLock": [{
76211
+ name: "deviceId",
76212
+ form: "single",
76213
+ optional: false
76214
+ }],
76215
+ "dishwasher.setExtraDry": [{
76216
+ name: "deviceId",
76217
+ form: "single",
76218
+ optional: false
76219
+ }],
76220
+ "dishwasher.setHalfLoad": [{
76221
+ name: "deviceId",
76222
+ form: "single",
76223
+ optional: false
76224
+ }],
76225
+ "dishwasher.setHygienePlus": [{
76226
+ name: "deviceId",
76227
+ form: "single",
76228
+ optional: false
76229
+ }],
76230
+ "dishwasher.setIntensiveZone": [{
76231
+ name: "deviceId",
76232
+ form: "single",
76233
+ optional: false
76234
+ }],
76235
+ "dishwasher.setOption": [{
76236
+ name: "deviceId",
76237
+ form: "single",
76238
+ optional: false
76239
+ }],
76240
+ "dishwasher.setPower": [{
76241
+ name: "deviceId",
76242
+ form: "single",
76243
+ optional: false
76244
+ }],
76245
+ "dishwasher.setProgram": [{
76246
+ name: "deviceId",
76247
+ form: "single",
76248
+ optional: false
76249
+ }],
76250
+ "dishwasher.setVarioSpeedPlus": [{
76251
+ name: "deviceId",
76252
+ form: "single",
76253
+ optional: false
76254
+ }],
76255
+ "dishwasher.start": [{
76256
+ name: "deviceId",
76257
+ form: "single",
76258
+ optional: false
76259
+ }],
76260
+ "dishwasher.stop": [{
76261
+ name: "deviceId",
76262
+ form: "single",
76263
+ optional: false
76264
+ }],
75912
76265
  "doorbell.getStatus": [{
75913
76266
  name: "deviceId",
75914
76267
  form: "single",
@@ -75978,6 +76331,11 @@ Object.freeze({
75978
76331
  form: "single",
75979
76332
  optional: false
75980
76333
  }],
76334
+ "heatingValve.getStatus": [{
76335
+ name: "deviceId",
76336
+ form: "single",
76337
+ optional: false
76338
+ }],
75981
76339
  "humidifier.getStatus": [{
75982
76340
  name: "deviceId",
75983
76341
  form: "single",
@@ -83718,7 +84076,7 @@ var WyzeProviderAddon = class extends BaseDeviceProvider {
83718
84076
  }
83719
84077
  async onInitialize() {
83720
84078
  applyWyzeCloudTlsTrust();
83721
- const regs = await super.onInitialize();
84079
+ const regs = this.providerRegistrationsFromSuper(await super.onInitialize());
83722
84080
  this.clients = new WyzeClientRegistry({
83723
84081
  dataDir: this.ctx.dataDir,
83724
84082
  logger: this.ctx.logger
package/dist/addon.mjs CHANGED
@@ -5416,7 +5416,7 @@ var ZodIssueCode = {
5416
5416
  var ZodFirstPartyTypeKind;
5417
5417
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5418
5418
  //#endregion
5419
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5419
+ //#region ../types/dist/sleep-BegKjwUu.mjs
5420
5420
  /**
5421
5421
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5422
5422
  * window to float samples (D455).
@@ -8449,7 +8449,7 @@ function userError(code, params, englishFallback) {
8449
8449
  return new CamstackError(code, params, englishFallback);
8450
8450
  }
8451
8451
  //#endregion
8452
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8452
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8453
8453
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8454
8454
  DeviceType["Camera"] = "camera";
8455
8455
  DeviceType["Hub"] = "hub";
@@ -8541,6 +8541,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8541
8541
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8542
8542
  * integrations sharing the same food/desiccant/hopper surface. */
8543
8543
  DeviceType["PetFeeder"] = "pet-feeder";
8544
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8545
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8546
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8547
+ DeviceType["Dishwasher"] = "dishwasher";
8544
8548
  return DeviceType;
8545
8549
  }({});
8546
8550
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -8798,7 +8802,7 @@ function errMsg(err) {
8798
8802
  return String(err);
8799
8803
  }
8800
8804
  //#endregion
8801
- //#region ../types/dist/composition-DOwQB_Ua.mjs
8805
+ //#region ../types/dist/composition-CB6PMT9p.mjs
8802
8806
  /**
8803
8807
  * The ffmpeg build every CamStack node downloads, per platform and arch.
8804
8808
  *
@@ -13204,8 +13208,13 @@ var AlertSeveritySchema = _enum([
13204
13208
  "info",
13205
13209
  "success",
13206
13210
  "warning",
13207
- "error"
13211
+ "error",
13212
+ "critical"
13208
13213
  ]);
13214
+ var AlertActionSchema = object({
13215
+ label: string(),
13216
+ href: string().optional()
13217
+ });
13209
13218
  var AlertStatusSchema = _enum([
13210
13219
  "active",
13211
13220
  "in-progress",
@@ -13223,6 +13232,7 @@ var AlertSchema = object({
13223
13232
  severity: AlertSeveritySchema,
13224
13233
  title: string(),
13225
13234
  message: string(),
13235
+ action: AlertActionSchema.optional(),
13226
13236
  status: AlertStatusSchema,
13227
13237
  progress: number().optional(),
13228
13238
  read: boolean(),
@@ -17584,7 +17594,11 @@ var deviceDiscoveryCapability = {
17584
17594
  };
17585
17595
  /**
17586
17596
  * `device-adoption` — generic discovery + adoption surface,
17587
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
17597
+ * system-scoped collection (one provider per integration addon), routed
17598
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
17599
+ * pin model as `connection-test`. The admin UI keeps using
17600
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
17601
+ * successor to `ha-discovery`:
17588
17602
  * keyed by `integrationId` (the addon resolves integrationId → broker
17589
17603
  * internally) rather than a connection-specific `brokerId`, and it
17590
17604
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -17749,7 +17763,7 @@ var ResyncResultSchema = object({
17749
17763
  var deviceAdoptionCapability = {
17750
17764
  name: "device-adoption",
17751
17765
  scope: "system",
17752
- mode: "singleton",
17766
+ mode: "collection",
17753
17767
  status: {
17754
17768
  schema: AdoptionStatusSchema,
17755
17769
  kind: "poll"
@@ -53885,7 +53899,8 @@ var batteryCapability = {
53885
53899
  DeviceType.Button,
53886
53900
  DeviceType.Switch,
53887
53901
  DeviceType.PetFeeder,
53888
- DeviceType.Container
53902
+ DeviceType.Container,
53903
+ DeviceType.Thermostat
53889
53904
  ],
53890
53905
  methods: {
53891
53906
  /**
@@ -55366,6 +55381,161 @@ onStatusChanged: { data: object({
55366
55381
  * whether persisting is worth a SQLite commit. */
55367
55382
  volatileStateFields: ["lastChangedAt"]
55368
55383
  };
55384
+ /**
55385
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
55386
+ * consumable levels (salt, rinse aid) and common program options.
55387
+ *
55388
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
55389
+ * by any integration that exposes the same program / option surface.
55390
+ *
55391
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
55392
+ * provider refreshes the slice on an interval and eagerly after commands.
55393
+ */
55394
+ var DishwasherStateSchema = _enum([
55395
+ "idle",
55396
+ "running",
55397
+ "paused",
55398
+ "finished",
55399
+ "error",
55400
+ "unavailable"
55401
+ ]);
55402
+ var DishwasherConsumableLevelSchema = _enum([
55403
+ "ok",
55404
+ "low",
55405
+ "empty"
55406
+ ]);
55407
+ var DishwasherStatusSchema = object({
55408
+ state: DishwasherStateSchema,
55409
+ /** Active program id/name, or null when none selected / unknown. */
55410
+ program: string().nullable(),
55411
+ /** Program tokens the hardware accepts — drives the UI selector. */
55412
+ availablePrograms: array(string()),
55413
+ /** Minutes remaining on the active cycle, or null when not running. */
55414
+ remainingMinutes: number().int().nonnegative().nullable(),
55415
+ /** Cycle completion 0..100, or null when not applicable. */
55416
+ progressPercent: number().min(0).max(100).nullable(),
55417
+ /** True when the door is reported open. */
55418
+ doorOpen: boolean(),
55419
+ /** True when remote start is allowed (door closed, power on, etc.). */
55420
+ remoteStartAllowed: boolean(),
55421
+ /** Main power / switched-on state. */
55422
+ powerOn: boolean(),
55423
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
55424
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55425
+ halfLoad: boolean(),
55426
+ hygienePlus: boolean(),
55427
+ /** Extra dry option when the appliance exposes it. */
55428
+ extraDry: boolean(),
55429
+ /** Intensive zone (lower basket) when the appliance exposes it. */
55430
+ intensiveZone: boolean(),
55431
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
55432
+ varioSpeedPlus: boolean(),
55433
+ /** Child lock (controls disabled on the appliance). */
55434
+ childLock: boolean(),
55435
+ errorCode: number().nullable(),
55436
+ errorLabel: string().nullable(),
55437
+ lastFetchedAt: number()
55438
+ });
55439
+ var dishwasherCapability = {
55440
+ name: "dishwasher",
55441
+ scope: "device",
55442
+ deviceNative: true,
55443
+ mode: "singleton",
55444
+ deviceTypes: [DeviceType.Dishwasher],
55445
+ methods: {
55446
+ start: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55447
+ kind: "mutation",
55448
+ auth: "protected"
55449
+ }),
55450
+ pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55451
+ kind: "mutation",
55452
+ auth: "protected"
55453
+ }),
55454
+ stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55455
+ kind: "mutation",
55456
+ auth: "protected"
55457
+ }),
55458
+ setProgram: method(object({
55459
+ deviceId: number().int().nonnegative(),
55460
+ program: string().min(1)
55461
+ }), _void(), {
55462
+ kind: "mutation",
55463
+ auth: "protected"
55464
+ }),
55465
+ setPower: method(object({
55466
+ deviceId: number().int().nonnegative(),
55467
+ on: boolean()
55468
+ }), _void(), {
55469
+ kind: "mutation",
55470
+ auth: "protected"
55471
+ }),
55472
+ setHalfLoad: method(object({
55473
+ deviceId: number().int().nonnegative(),
55474
+ on: boolean()
55475
+ }), _void(), {
55476
+ kind: "mutation",
55477
+ auth: "protected"
55478
+ }),
55479
+ setHygienePlus: method(object({
55480
+ deviceId: number().int().nonnegative(),
55481
+ on: boolean()
55482
+ }), _void(), {
55483
+ kind: "mutation",
55484
+ auth: "protected"
55485
+ }),
55486
+ setExtraDry: method(object({
55487
+ deviceId: number().int().nonnegative(),
55488
+ on: boolean()
55489
+ }), _void(), {
55490
+ kind: "mutation",
55491
+ auth: "protected"
55492
+ }),
55493
+ setIntensiveZone: method(object({
55494
+ deviceId: number().int().nonnegative(),
55495
+ on: boolean()
55496
+ }), _void(), {
55497
+ kind: "mutation",
55498
+ auth: "protected"
55499
+ }),
55500
+ setVarioSpeedPlus: method(object({
55501
+ deviceId: number().int().nonnegative(),
55502
+ on: boolean()
55503
+ }), _void(), {
55504
+ kind: "mutation",
55505
+ auth: "protected"
55506
+ }),
55507
+ setChildLock: method(object({
55508
+ deviceId: number().int().nonnegative(),
55509
+ on: boolean()
55510
+ }), _void(), {
55511
+ kind: "mutation",
55512
+ auth: "protected"
55513
+ }),
55514
+ setOption: method(object({
55515
+ deviceId: number().int().nonnegative(),
55516
+ key: string().min(1),
55517
+ value: union([
55518
+ boolean(),
55519
+ string(),
55520
+ number()
55521
+ ])
55522
+ }), _void(), {
55523
+ kind: "mutation",
55524
+ auth: "protected"
55525
+ })
55526
+ },
55527
+ status: {
55528
+ schema: DishwasherStatusSchema,
55529
+ kind: "poll"
55530
+ },
55531
+ runtimeState: DishwasherStatusSchema,
55532
+ durability: "session",
55533
+ history: { fields: { progressPercent: {
55534
+ kind: "gauge",
55535
+ unit: "%",
55536
+ deadband: 2
55537
+ } } }
55538
+ };
55369
55539
  var DoorbellStatusSchema = object({
55370
55540
  /** Ms epoch of the last press. null = never observed since this provider started. */
55371
55541
  lastPressedAt: number().nullable(),
@@ -56168,6 +56338,32 @@ var gasCapability = {
56168
56338
  * whether persisting is worth a SQLite commit. */
56169
56339
  volatileStateFields: ["lastChangedAt"]
56170
56340
  };
56341
+ var HeatingValveStatusSchema = object({
56342
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
56343
+ position: number().min(0).max(100).nullable(),
56344
+ /** Ms epoch when the slice was last updated (push or poll). */
56345
+ lastFetchedAt: number()
56346
+ });
56347
+ var heatingValveCapability = {
56348
+ name: "heating-valve",
56349
+ scope: "device",
56350
+ deviceNative: true,
56351
+ mode: "singleton",
56352
+ deviceTypes: [DeviceType.Thermostat],
56353
+ methods: {},
56354
+ status: {
56355
+ schema: HeatingValveStatusSchema,
56356
+ kind: "push"
56357
+ },
56358
+ runtimeState: HeatingValveStatusSchema,
56359
+ durability: "session",
56360
+ history: { fields: { position: {
56361
+ kind: "gauge",
56362
+ unit: "%",
56363
+ deadband: 1
56364
+ } } },
56365
+ volatileStateFields: ["lastFetchedAt"]
56366
+ };
56171
56367
  /**
56172
56368
  * Humidifier / dehumidifier cap. Models HA `humidifier.*` entities —
56173
56369
  * an on/off actuator with an optional target-humidity setpoint and an
@@ -65588,6 +65784,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
65588
65784
  dayNight: dayNightCapability,
65589
65785
  deviceDiscovery: deviceDiscoveryCapability,
65590
65786
  deviceStatus: deviceStatusCapability,
65787
+ dishwasher: dishwasherCapability,
65591
65788
  doorbell: doorbellCapability,
65592
65789
  enumSensor: enumSensorCapability,
65593
65790
  eventEmitter: eventEmitterCapability,
@@ -65595,6 +65792,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
65595
65792
  featureProbe: featureProbeCapability,
65596
65793
  flood: floodCapability,
65597
65794
  gas: gasCapability,
65795
+ heatingValve: heatingValveCapability,
65598
65796
  humidifier: humidifierCapability,
65599
65797
  humiditySensor: humiditySensorCapability,
65600
65798
  image: imageCapability,
@@ -66320,6 +66518,12 @@ var BaseDeviceProvider = class extends BaseAddon {
66320
66518
  provider: this
66321
66519
  }];
66322
66520
  }
66521
+ /** Flatten `super.onInitialize()` whether it returned an array or an envelope. */
66522
+ providerRegistrationsFromSuper(result) {
66523
+ if (Array.isArray(result)) return result;
66524
+ if (result !== void 0 && result.providers !== void 0) return [...result.providers];
66525
+ return [];
66526
+ }
66323
66527
  async onShutdown() {
66324
66528
  this._restoreShuttingDown = true;
66325
66529
  this.cancelRestoreRetries();
@@ -66846,7 +67050,7 @@ var BaseDeviceProvider = class extends BaseAddon {
66846
67050
  return toDeviceSummary(device, this.addonId);
66847
67051
  }
66848
67052
  };
66849
- 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;
67053
+ 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;
66850
67054
  new Set(Object.values(DeviceType));
66851
67055
  Object.freeze({
66852
67056
  "accessories.getStatus": {
@@ -69267,6 +69471,84 @@ Object.freeze({
69267
69471
  addonId: null,
69268
69472
  access: "view"
69269
69473
  },
69474
+ "dishwasher.getStatus": {
69475
+ capName: "dishwasher",
69476
+ capScope: "device",
69477
+ addonId: null,
69478
+ access: "view"
69479
+ },
69480
+ "dishwasher.pause": {
69481
+ capName: "dishwasher",
69482
+ capScope: "device",
69483
+ addonId: null,
69484
+ access: "create"
69485
+ },
69486
+ "dishwasher.setChildLock": {
69487
+ capName: "dishwasher",
69488
+ capScope: "device",
69489
+ addonId: null,
69490
+ access: "create"
69491
+ },
69492
+ "dishwasher.setExtraDry": {
69493
+ capName: "dishwasher",
69494
+ capScope: "device",
69495
+ addonId: null,
69496
+ access: "create"
69497
+ },
69498
+ "dishwasher.setHalfLoad": {
69499
+ capName: "dishwasher",
69500
+ capScope: "device",
69501
+ addonId: null,
69502
+ access: "create"
69503
+ },
69504
+ "dishwasher.setHygienePlus": {
69505
+ capName: "dishwasher",
69506
+ capScope: "device",
69507
+ addonId: null,
69508
+ access: "create"
69509
+ },
69510
+ "dishwasher.setIntensiveZone": {
69511
+ capName: "dishwasher",
69512
+ capScope: "device",
69513
+ addonId: null,
69514
+ access: "create"
69515
+ },
69516
+ "dishwasher.setOption": {
69517
+ capName: "dishwasher",
69518
+ capScope: "device",
69519
+ addonId: null,
69520
+ access: "create"
69521
+ },
69522
+ "dishwasher.setPower": {
69523
+ capName: "dishwasher",
69524
+ capScope: "device",
69525
+ addonId: null,
69526
+ access: "create"
69527
+ },
69528
+ "dishwasher.setProgram": {
69529
+ capName: "dishwasher",
69530
+ capScope: "device",
69531
+ addonId: null,
69532
+ access: "create"
69533
+ },
69534
+ "dishwasher.setVarioSpeedPlus": {
69535
+ capName: "dishwasher",
69536
+ capScope: "device",
69537
+ addonId: null,
69538
+ access: "create"
69539
+ },
69540
+ "dishwasher.start": {
69541
+ capName: "dishwasher",
69542
+ capScope: "device",
69543
+ addonId: null,
69544
+ access: "create"
69545
+ },
69546
+ "dishwasher.stop": {
69547
+ capName: "dishwasher",
69548
+ capScope: "device",
69549
+ addonId: null,
69550
+ access: "create"
69551
+ },
69270
69552
  "doorbell.getStatus": {
69271
69553
  capName: "doorbell",
69272
69554
  capScope: "device",
@@ -69477,6 +69759,12 @@ Object.freeze({
69477
69759
  addonId: null,
69478
69760
  access: "view"
69479
69761
  },
69762
+ "heatingValve.getStatus": {
69763
+ capName: "heating-valve",
69764
+ capScope: "device",
69765
+ addonId: null,
69766
+ access: "view"
69767
+ },
69480
69768
  "humidifier.getStatus": {
69481
69769
  capName: "humidifier",
69482
69770
  capScope: "device",
@@ -75064,7 +75352,7 @@ Object.freeze({
75064
75352
  access: "create"
75065
75353
  }
75066
75354
  });
75067
- 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;
75355
+ 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;
75068
75356
  DeviceFeature.BatteryOperated;
75069
75357
  Object.freeze({
75070
75358
  "accessories.getStatus": [{
@@ -75888,6 +76176,71 @@ Object.freeze({
75888
76176
  form: "single",
75889
76177
  optional: false
75890
76178
  }],
76179
+ "dishwasher.getStatus": [{
76180
+ name: "deviceId",
76181
+ form: "single",
76182
+ optional: false
76183
+ }],
76184
+ "dishwasher.pause": [{
76185
+ name: "deviceId",
76186
+ form: "single",
76187
+ optional: false
76188
+ }],
76189
+ "dishwasher.setChildLock": [{
76190
+ name: "deviceId",
76191
+ form: "single",
76192
+ optional: false
76193
+ }],
76194
+ "dishwasher.setExtraDry": [{
76195
+ name: "deviceId",
76196
+ form: "single",
76197
+ optional: false
76198
+ }],
76199
+ "dishwasher.setHalfLoad": [{
76200
+ name: "deviceId",
76201
+ form: "single",
76202
+ optional: false
76203
+ }],
76204
+ "dishwasher.setHygienePlus": [{
76205
+ name: "deviceId",
76206
+ form: "single",
76207
+ optional: false
76208
+ }],
76209
+ "dishwasher.setIntensiveZone": [{
76210
+ name: "deviceId",
76211
+ form: "single",
76212
+ optional: false
76213
+ }],
76214
+ "dishwasher.setOption": [{
76215
+ name: "deviceId",
76216
+ form: "single",
76217
+ optional: false
76218
+ }],
76219
+ "dishwasher.setPower": [{
76220
+ name: "deviceId",
76221
+ form: "single",
76222
+ optional: false
76223
+ }],
76224
+ "dishwasher.setProgram": [{
76225
+ name: "deviceId",
76226
+ form: "single",
76227
+ optional: false
76228
+ }],
76229
+ "dishwasher.setVarioSpeedPlus": [{
76230
+ name: "deviceId",
76231
+ form: "single",
76232
+ optional: false
76233
+ }],
76234
+ "dishwasher.start": [{
76235
+ name: "deviceId",
76236
+ form: "single",
76237
+ optional: false
76238
+ }],
76239
+ "dishwasher.stop": [{
76240
+ name: "deviceId",
76241
+ form: "single",
76242
+ optional: false
76243
+ }],
75891
76244
  "doorbell.getStatus": [{
75892
76245
  name: "deviceId",
75893
76246
  form: "single",
@@ -75957,6 +76310,11 @@ Object.freeze({
75957
76310
  form: "single",
75958
76311
  optional: false
75959
76312
  }],
76313
+ "heatingValve.getStatus": [{
76314
+ name: "deviceId",
76315
+ form: "single",
76316
+ optional: false
76317
+ }],
75960
76318
  "humidifier.getStatus": [{
75961
76319
  name: "deviceId",
75962
76320
  form: "single",
@@ -83697,7 +84055,7 @@ var WyzeProviderAddon = class extends BaseDeviceProvider {
83697
84055
  }
83698
84056
  async onInitialize() {
83699
84057
  applyWyzeCloudTlsTrust();
83700
- const regs = await super.onInitialize();
84058
+ const regs = this.providerRegistrationsFromSuper(await super.onInitialize());
83701
84059
  this.clients = new WyzeClientRegistry({
83702
84060
  dataDir: this.ctx.dataDir,
83703
84061
  logger: this.ctx.logger
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-wyze",
3
- "version": "0.2.138",
3
+ "version": "0.2.140",
4
4
  "description": "Wyze camera device-provider addon for CamStack — wraps the @apocaliss92/wyze-bridge-js P2P/DTLS client, feeding the stream-broker via the pull-rfc4571 lazy-publish path (a structural twin of addon-provider-reolink)",
5
5
  "keywords": [
6
6
  "camstack",