@camstack/addon-import-alexa 0.2.127 → 0.2.129

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
@@ -5577,7 +5577,7 @@ var ZodIssueCode = {
5577
5577
  var ZodFirstPartyTypeKind;
5578
5578
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5579
5579
  //#endregion
5580
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5580
+ //#region ../types/dist/sleep-BegKjwUu.mjs
5581
5581
  /**
5582
5582
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5583
5583
  * window to float samples (D455).
@@ -8796,7 +8796,7 @@ object({
8796
8796
  params: record(string(), union([string(), number()])).optional()
8797
8797
  });
8798
8798
  //#endregion
8799
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8799
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8800
8800
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8801
8801
  DeviceType["Camera"] = "camera";
8802
8802
  DeviceType["Hub"] = "hub";
@@ -8888,6 +8888,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8888
8888
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8889
8889
  * integrations sharing the same food/desiccant/hopper surface. */
8890
8890
  DeviceType["PetFeeder"] = "pet-feeder";
8891
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8892
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8893
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8894
+ DeviceType["Dishwasher"] = "dishwasher";
8891
8895
  return DeviceType;
8892
8896
  }({});
8893
8897
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -9145,7 +9149,7 @@ function errMsg(err) {
9145
9149
  return String(err);
9146
9150
  }
9147
9151
  //#endregion
9148
- //#region ../types/dist/composition-DOwQB_Ua.mjs
9152
+ //#region ../types/dist/composition-CB6PMT9p.mjs
9149
9153
  /**
9150
9154
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9151
9155
  *
@@ -13667,8 +13671,13 @@ var AlertSeveritySchema = _enum([
13667
13671
  "info",
13668
13672
  "success",
13669
13673
  "warning",
13670
- "error"
13674
+ "error",
13675
+ "critical"
13671
13676
  ]);
13677
+ var AlertActionSchema = object({
13678
+ label: string(),
13679
+ href: string().optional()
13680
+ });
13672
13681
  var AlertStatusSchema = _enum([
13673
13682
  "active",
13674
13683
  "in-progress",
@@ -13686,6 +13695,7 @@ var AlertSchema = object({
13686
13695
  severity: AlertSeveritySchema,
13687
13696
  title: string(),
13688
13697
  message: string(),
13698
+ action: AlertActionSchema.optional(),
13689
13699
  status: AlertStatusSchema,
13690
13700
  progress: number().optional(),
13691
13701
  read: boolean(),
@@ -18096,7 +18106,11 @@ var deviceDiscoveryCapability = {
18096
18106
  };
18097
18107
  /**
18098
18108
  * `device-adoption` — generic discovery + adoption surface,
18099
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
18109
+ * system-scoped collection (one provider per integration addon), routed
18110
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
18111
+ * pin model as `connection-test`. The admin UI keeps using
18112
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
18113
+ * successor to `ha-discovery`:
18100
18114
  * keyed by `integrationId` (the addon resolves integrationId → broker
18101
18115
  * internally) rather than a connection-specific `brokerId`, and it
18102
18116
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -18261,7 +18275,7 @@ var ResyncResultSchema = object({
18261
18275
  var deviceAdoptionCapability = {
18262
18276
  name: "device-adoption",
18263
18277
  scope: "system",
18264
- mode: "singleton",
18278
+ mode: "collection",
18265
18279
  status: {
18266
18280
  schema: AdoptionStatusSchema,
18267
18281
  kind: "poll"
@@ -54293,7 +54307,8 @@ var batteryCapability = {
54293
54307
  DeviceType.Button,
54294
54308
  DeviceType.Switch,
54295
54309
  DeviceType.PetFeeder,
54296
- DeviceType.Container
54310
+ DeviceType.Container,
54311
+ DeviceType.Thermostat
54297
54312
  ],
54298
54313
  methods: {
54299
54314
  /**
@@ -55783,6 +55798,161 @@ onStatusChanged: { data: object({
55783
55798
  * whether persisting is worth a SQLite commit. */
55784
55799
  volatileStateFields: ["lastChangedAt"]
55785
55800
  };
55801
+ /**
55802
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
55803
+ * consumable levels (salt, rinse aid) and common program options.
55804
+ *
55805
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
55806
+ * by any integration that exposes the same program / option surface.
55807
+ *
55808
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
55809
+ * provider refreshes the slice on an interval and eagerly after commands.
55810
+ */
55811
+ var DishwasherStateSchema = _enum([
55812
+ "idle",
55813
+ "running",
55814
+ "paused",
55815
+ "finished",
55816
+ "error",
55817
+ "unavailable"
55818
+ ]);
55819
+ var DishwasherConsumableLevelSchema = _enum([
55820
+ "ok",
55821
+ "low",
55822
+ "empty"
55823
+ ]);
55824
+ var DishwasherStatusSchema = object({
55825
+ state: DishwasherStateSchema,
55826
+ /** Active program id/name, or null when none selected / unknown. */
55827
+ program: string().nullable(),
55828
+ /** Program tokens the hardware accepts — drives the UI selector. */
55829
+ availablePrograms: array(string()),
55830
+ /** Minutes remaining on the active cycle, or null when not running. */
55831
+ remainingMinutes: number().int().nonnegative().nullable(),
55832
+ /** Cycle completion 0..100, or null when not applicable. */
55833
+ progressPercent: number().min(0).max(100).nullable(),
55834
+ /** True when the door is reported open. */
55835
+ doorOpen: boolean(),
55836
+ /** True when remote start is allowed (door closed, power on, etc.). */
55837
+ remoteStartAllowed: boolean(),
55838
+ /** Main power / switched-on state. */
55839
+ powerOn: boolean(),
55840
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
55841
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55842
+ halfLoad: boolean(),
55843
+ hygienePlus: boolean(),
55844
+ /** Extra dry option when the appliance exposes it. */
55845
+ extraDry: boolean(),
55846
+ /** Intensive zone (lower basket) when the appliance exposes it. */
55847
+ intensiveZone: boolean(),
55848
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
55849
+ varioSpeedPlus: boolean(),
55850
+ /** Child lock (controls disabled on the appliance). */
55851
+ childLock: boolean(),
55852
+ errorCode: number().nullable(),
55853
+ errorLabel: string().nullable(),
55854
+ lastFetchedAt: number()
55855
+ });
55856
+ var dishwasherCapability = {
55857
+ name: "dishwasher",
55858
+ scope: "device",
55859
+ deviceNative: true,
55860
+ mode: "singleton",
55861
+ deviceTypes: [DeviceType.Dishwasher],
55862
+ methods: {
55863
+ start: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55864
+ kind: "mutation",
55865
+ auth: "protected"
55866
+ }),
55867
+ pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55868
+ kind: "mutation",
55869
+ auth: "protected"
55870
+ }),
55871
+ stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55872
+ kind: "mutation",
55873
+ auth: "protected"
55874
+ }),
55875
+ setProgram: method(object({
55876
+ deviceId: number().int().nonnegative(),
55877
+ program: string().min(1)
55878
+ }), _void(), {
55879
+ kind: "mutation",
55880
+ auth: "protected"
55881
+ }),
55882
+ setPower: method(object({
55883
+ deviceId: number().int().nonnegative(),
55884
+ on: boolean()
55885
+ }), _void(), {
55886
+ kind: "mutation",
55887
+ auth: "protected"
55888
+ }),
55889
+ setHalfLoad: method(object({
55890
+ deviceId: number().int().nonnegative(),
55891
+ on: boolean()
55892
+ }), _void(), {
55893
+ kind: "mutation",
55894
+ auth: "protected"
55895
+ }),
55896
+ setHygienePlus: method(object({
55897
+ deviceId: number().int().nonnegative(),
55898
+ on: boolean()
55899
+ }), _void(), {
55900
+ kind: "mutation",
55901
+ auth: "protected"
55902
+ }),
55903
+ setExtraDry: method(object({
55904
+ deviceId: number().int().nonnegative(),
55905
+ on: boolean()
55906
+ }), _void(), {
55907
+ kind: "mutation",
55908
+ auth: "protected"
55909
+ }),
55910
+ setIntensiveZone: method(object({
55911
+ deviceId: number().int().nonnegative(),
55912
+ on: boolean()
55913
+ }), _void(), {
55914
+ kind: "mutation",
55915
+ auth: "protected"
55916
+ }),
55917
+ setVarioSpeedPlus: method(object({
55918
+ deviceId: number().int().nonnegative(),
55919
+ on: boolean()
55920
+ }), _void(), {
55921
+ kind: "mutation",
55922
+ auth: "protected"
55923
+ }),
55924
+ setChildLock: method(object({
55925
+ deviceId: number().int().nonnegative(),
55926
+ on: boolean()
55927
+ }), _void(), {
55928
+ kind: "mutation",
55929
+ auth: "protected"
55930
+ }),
55931
+ setOption: method(object({
55932
+ deviceId: number().int().nonnegative(),
55933
+ key: string().min(1),
55934
+ value: union([
55935
+ boolean(),
55936
+ string(),
55937
+ number()
55938
+ ])
55939
+ }), _void(), {
55940
+ kind: "mutation",
55941
+ auth: "protected"
55942
+ })
55943
+ },
55944
+ status: {
55945
+ schema: DishwasherStatusSchema,
55946
+ kind: "poll"
55947
+ },
55948
+ runtimeState: DishwasherStatusSchema,
55949
+ durability: "session",
55950
+ history: { fields: { progressPercent: {
55951
+ kind: "gauge",
55952
+ unit: "%",
55953
+ deadband: 2
55954
+ } } }
55955
+ };
55786
55956
  var DoorbellStatusSchema = object({
55787
55957
  /** Ms epoch of the last press. null = never observed since this provider started. */
55788
55958
  lastPressedAt: number().nullable(),
@@ -56585,6 +56755,32 @@ var gasCapability = {
56585
56755
  * whether persisting is worth a SQLite commit. */
56586
56756
  volatileStateFields: ["lastChangedAt"]
56587
56757
  };
56758
+ var HeatingValveStatusSchema = object({
56759
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
56760
+ position: number().min(0).max(100).nullable(),
56761
+ /** Ms epoch when the slice was last updated (push or poll). */
56762
+ lastFetchedAt: number()
56763
+ });
56764
+ var heatingValveCapability = {
56765
+ name: "heating-valve",
56766
+ scope: "device",
56767
+ deviceNative: true,
56768
+ mode: "singleton",
56769
+ deviceTypes: [DeviceType.Thermostat],
56770
+ methods: {},
56771
+ status: {
56772
+ schema: HeatingValveStatusSchema,
56773
+ kind: "push"
56774
+ },
56775
+ runtimeState: HeatingValveStatusSchema,
56776
+ durability: "session",
56777
+ history: { fields: { position: {
56778
+ kind: "gauge",
56779
+ unit: "%",
56780
+ deadband: 1
56781
+ } } },
56782
+ volatileStateFields: ["lastFetchedAt"]
56783
+ };
56588
56784
  /**
56589
56785
  * Humidifier / dehumidifier cap. Models HA `humidifier.*` entities —
56590
56786
  * an on/off actuator with an optional target-humidity setpoint and an
@@ -66005,6 +66201,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
66005
66201
  dayNight: dayNightCapability,
66006
66202
  deviceDiscovery: deviceDiscoveryCapability,
66007
66203
  deviceStatus: deviceStatusCapability,
66204
+ dishwasher: dishwasherCapability,
66008
66205
  doorbell: doorbellCapability,
66009
66206
  enumSensor: enumSensorCapability,
66010
66207
  eventEmitter: eventEmitterCapability,
@@ -66012,6 +66209,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
66012
66209
  featureProbe: featureProbeCapability,
66013
66210
  flood: floodCapability,
66014
66211
  gas: gasCapability,
66212
+ heatingValve: heatingValveCapability,
66015
66213
  humidifier: humidifierCapability,
66016
66214
  humiditySensor: humiditySensorCapability,
66017
66215
  image: imageCapability,
@@ -66737,6 +66935,12 @@ var BaseDeviceProvider = class extends BaseAddon {
66737
66935
  provider: this
66738
66936
  }];
66739
66937
  }
66938
+ /** Flatten `super.onInitialize()` whether it returned an array or an envelope. */
66939
+ providerRegistrationsFromSuper(result) {
66940
+ if (Array.isArray(result)) return result;
66941
+ if (result !== void 0 && result.providers !== void 0) return [...result.providers];
66942
+ return [];
66943
+ }
66740
66944
  async onShutdown() {
66741
66945
  this._restoreShuttingDown = true;
66742
66946
  this.cancelRestoreRetries();
@@ -67263,7 +67467,7 @@ var BaseDeviceProvider = class extends BaseAddon {
67263
67467
  return toDeviceSummary(device, this.addonId);
67264
67468
  }
67265
67469
  };
67266
- 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;
67470
+ 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;
67267
67471
  new Set(Object.values(DeviceType));
67268
67472
  Object.freeze({
67269
67473
  "accessories.getStatus": {
@@ -69684,6 +69888,84 @@ Object.freeze({
69684
69888
  addonId: null,
69685
69889
  access: "view"
69686
69890
  },
69891
+ "dishwasher.getStatus": {
69892
+ capName: "dishwasher",
69893
+ capScope: "device",
69894
+ addonId: null,
69895
+ access: "view"
69896
+ },
69897
+ "dishwasher.pause": {
69898
+ capName: "dishwasher",
69899
+ capScope: "device",
69900
+ addonId: null,
69901
+ access: "create"
69902
+ },
69903
+ "dishwasher.setChildLock": {
69904
+ capName: "dishwasher",
69905
+ capScope: "device",
69906
+ addonId: null,
69907
+ access: "create"
69908
+ },
69909
+ "dishwasher.setExtraDry": {
69910
+ capName: "dishwasher",
69911
+ capScope: "device",
69912
+ addonId: null,
69913
+ access: "create"
69914
+ },
69915
+ "dishwasher.setHalfLoad": {
69916
+ capName: "dishwasher",
69917
+ capScope: "device",
69918
+ addonId: null,
69919
+ access: "create"
69920
+ },
69921
+ "dishwasher.setHygienePlus": {
69922
+ capName: "dishwasher",
69923
+ capScope: "device",
69924
+ addonId: null,
69925
+ access: "create"
69926
+ },
69927
+ "dishwasher.setIntensiveZone": {
69928
+ capName: "dishwasher",
69929
+ capScope: "device",
69930
+ addonId: null,
69931
+ access: "create"
69932
+ },
69933
+ "dishwasher.setOption": {
69934
+ capName: "dishwasher",
69935
+ capScope: "device",
69936
+ addonId: null,
69937
+ access: "create"
69938
+ },
69939
+ "dishwasher.setPower": {
69940
+ capName: "dishwasher",
69941
+ capScope: "device",
69942
+ addonId: null,
69943
+ access: "create"
69944
+ },
69945
+ "dishwasher.setProgram": {
69946
+ capName: "dishwasher",
69947
+ capScope: "device",
69948
+ addonId: null,
69949
+ access: "create"
69950
+ },
69951
+ "dishwasher.setVarioSpeedPlus": {
69952
+ capName: "dishwasher",
69953
+ capScope: "device",
69954
+ addonId: null,
69955
+ access: "create"
69956
+ },
69957
+ "dishwasher.start": {
69958
+ capName: "dishwasher",
69959
+ capScope: "device",
69960
+ addonId: null,
69961
+ access: "create"
69962
+ },
69963
+ "dishwasher.stop": {
69964
+ capName: "dishwasher",
69965
+ capScope: "device",
69966
+ addonId: null,
69967
+ access: "create"
69968
+ },
69687
69969
  "doorbell.getStatus": {
69688
69970
  capName: "doorbell",
69689
69971
  capScope: "device",
@@ -69894,6 +70176,12 @@ Object.freeze({
69894
70176
  addonId: null,
69895
70177
  access: "view"
69896
70178
  },
70179
+ "heatingValve.getStatus": {
70180
+ capName: "heating-valve",
70181
+ capScope: "device",
70182
+ addonId: null,
70183
+ access: "view"
70184
+ },
69897
70185
  "humidifier.getStatus": {
69898
70186
  capName: "humidifier",
69899
70187
  capScope: "device",
@@ -75481,7 +75769,7 @@ Object.freeze({
75481
75769
  access: "create"
75482
75770
  }
75483
75771
  });
75484
- 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;
75772
+ 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;
75485
75773
  DeviceFeature.BatteryOperated;
75486
75774
  Object.freeze({
75487
75775
  "accessories.getStatus": [{
@@ -76305,6 +76593,71 @@ Object.freeze({
76305
76593
  form: "single",
76306
76594
  optional: false
76307
76595
  }],
76596
+ "dishwasher.getStatus": [{
76597
+ name: "deviceId",
76598
+ form: "single",
76599
+ optional: false
76600
+ }],
76601
+ "dishwasher.pause": [{
76602
+ name: "deviceId",
76603
+ form: "single",
76604
+ optional: false
76605
+ }],
76606
+ "dishwasher.setChildLock": [{
76607
+ name: "deviceId",
76608
+ form: "single",
76609
+ optional: false
76610
+ }],
76611
+ "dishwasher.setExtraDry": [{
76612
+ name: "deviceId",
76613
+ form: "single",
76614
+ optional: false
76615
+ }],
76616
+ "dishwasher.setHalfLoad": [{
76617
+ name: "deviceId",
76618
+ form: "single",
76619
+ optional: false
76620
+ }],
76621
+ "dishwasher.setHygienePlus": [{
76622
+ name: "deviceId",
76623
+ form: "single",
76624
+ optional: false
76625
+ }],
76626
+ "dishwasher.setIntensiveZone": [{
76627
+ name: "deviceId",
76628
+ form: "single",
76629
+ optional: false
76630
+ }],
76631
+ "dishwasher.setOption": [{
76632
+ name: "deviceId",
76633
+ form: "single",
76634
+ optional: false
76635
+ }],
76636
+ "dishwasher.setPower": [{
76637
+ name: "deviceId",
76638
+ form: "single",
76639
+ optional: false
76640
+ }],
76641
+ "dishwasher.setProgram": [{
76642
+ name: "deviceId",
76643
+ form: "single",
76644
+ optional: false
76645
+ }],
76646
+ "dishwasher.setVarioSpeedPlus": [{
76647
+ name: "deviceId",
76648
+ form: "single",
76649
+ optional: false
76650
+ }],
76651
+ "dishwasher.start": [{
76652
+ name: "deviceId",
76653
+ form: "single",
76654
+ optional: false
76655
+ }],
76656
+ "dishwasher.stop": [{
76657
+ name: "deviceId",
76658
+ form: "single",
76659
+ optional: false
76660
+ }],
76308
76661
  "doorbell.getStatus": [{
76309
76662
  name: "deviceId",
76310
76663
  form: "single",
@@ -76374,6 +76727,11 @@ Object.freeze({
76374
76727
  form: "single",
76375
76728
  optional: false
76376
76729
  }],
76730
+ "heatingValve.getStatus": [{
76731
+ name: "deviceId",
76732
+ form: "single",
76733
+ optional: false
76734
+ }],
76377
76735
  "humidifier.getStatus": [{
76378
76736
  name: "deviceId",
76379
76737
  form: "single",
@@ -122872,7 +123230,7 @@ var AlexaImportAddon = class extends BaseDeviceProvider {
122872
123230
  super({ ...DEFAULTS });
122873
123231
  }
122874
123232
  async onInitialize() {
122875
- const regs = await super.onInitialize();
123233
+ const regs = this.providerRegistrationsFromSuper(await super.onInitialize());
122876
123234
  const records = this.ctx.records;
122877
123235
  if (records === void 0) throw new Error("import-alexa: ctx.records is required (hub-only addon)");
122878
123236
  await records.declare({ brokers: alexaBrokersEntryKind });
package/dist/addon.mjs CHANGED
@@ -5577,7 +5577,7 @@ var ZodIssueCode = {
5577
5577
  var ZodFirstPartyTypeKind;
5578
5578
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5579
5579
  //#endregion
5580
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5580
+ //#region ../types/dist/sleep-BegKjwUu.mjs
5581
5581
  /**
5582
5582
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5583
5583
  * window to float samples (D455).
@@ -8796,7 +8796,7 @@ object({
8796
8796
  params: record(string(), union([string(), number()])).optional()
8797
8797
  });
8798
8798
  //#endregion
8799
- //#region ../types/dist/err-msg--2RrYiLO.mjs
8799
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
8800
8800
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8801
8801
  DeviceType["Camera"] = "camera";
8802
8802
  DeviceType["Hub"] = "hub";
@@ -8888,6 +8888,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
8888
8888
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
8889
8889
  * integrations sharing the same food/desiccant/hopper surface. */
8890
8890
  DeviceType["PetFeeder"] = "pet-feeder";
8891
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
8892
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
8893
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
8894
+ DeviceType["Dishwasher"] = "dishwasher";
8891
8895
  return DeviceType;
8892
8896
  }({});
8893
8897
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -9145,7 +9149,7 @@ function errMsg(err) {
9145
9149
  return String(err);
9146
9150
  }
9147
9151
  //#endregion
9148
- //#region ../types/dist/composition-DOwQB_Ua.mjs
9152
+ //#region ../types/dist/composition-CB6PMT9p.mjs
9149
9153
  /**
9150
9154
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9151
9155
  *
@@ -13667,8 +13671,13 @@ var AlertSeveritySchema = _enum([
13667
13671
  "info",
13668
13672
  "success",
13669
13673
  "warning",
13670
- "error"
13674
+ "error",
13675
+ "critical"
13671
13676
  ]);
13677
+ var AlertActionSchema = object({
13678
+ label: string(),
13679
+ href: string().optional()
13680
+ });
13672
13681
  var AlertStatusSchema = _enum([
13673
13682
  "active",
13674
13683
  "in-progress",
@@ -13686,6 +13695,7 @@ var AlertSchema = object({
13686
13695
  severity: AlertSeveritySchema,
13687
13696
  title: string(),
13688
13697
  message: string(),
13698
+ action: AlertActionSchema.optional(),
13689
13699
  status: AlertStatusSchema,
13690
13700
  progress: number().optional(),
13691
13701
  read: boolean(),
@@ -18096,7 +18106,11 @@ var deviceDiscoveryCapability = {
18096
18106
  };
18097
18107
  /**
18098
18108
  * `device-adoption` — generic discovery + adoption surface,
18099
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
18109
+ * system-scoped collection (one provider per integration addon), routed
18110
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
18111
+ * pin model as `connection-test`. The admin UI keeps using
18112
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
18113
+ * successor to `ha-discovery`:
18100
18114
  * keyed by `integrationId` (the addon resolves integrationId → broker
18101
18115
  * internally) rather than a connection-specific `brokerId`, and it
18102
18116
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -18261,7 +18275,7 @@ var ResyncResultSchema = object({
18261
18275
  var deviceAdoptionCapability = {
18262
18276
  name: "device-adoption",
18263
18277
  scope: "system",
18264
- mode: "singleton",
18278
+ mode: "collection",
18265
18279
  status: {
18266
18280
  schema: AdoptionStatusSchema,
18267
18281
  kind: "poll"
@@ -54293,7 +54307,8 @@ var batteryCapability = {
54293
54307
  DeviceType.Button,
54294
54308
  DeviceType.Switch,
54295
54309
  DeviceType.PetFeeder,
54296
- DeviceType.Container
54310
+ DeviceType.Container,
54311
+ DeviceType.Thermostat
54297
54312
  ],
54298
54313
  methods: {
54299
54314
  /**
@@ -55783,6 +55798,161 @@ onStatusChanged: { data: object({
55783
55798
  * whether persisting is worth a SQLite commit. */
55784
55799
  volatileStateFields: ["lastChangedAt"]
55785
55800
  };
55801
+ /**
55802
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
55803
+ * consumable levels (salt, rinse aid) and common program options.
55804
+ *
55805
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
55806
+ * by any integration that exposes the same program / option surface.
55807
+ *
55808
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
55809
+ * provider refreshes the slice on an interval and eagerly after commands.
55810
+ */
55811
+ var DishwasherStateSchema = _enum([
55812
+ "idle",
55813
+ "running",
55814
+ "paused",
55815
+ "finished",
55816
+ "error",
55817
+ "unavailable"
55818
+ ]);
55819
+ var DishwasherConsumableLevelSchema = _enum([
55820
+ "ok",
55821
+ "low",
55822
+ "empty"
55823
+ ]);
55824
+ var DishwasherStatusSchema = object({
55825
+ state: DishwasherStateSchema,
55826
+ /** Active program id/name, or null when none selected / unknown. */
55827
+ program: string().nullable(),
55828
+ /** Program tokens the hardware accepts — drives the UI selector. */
55829
+ availablePrograms: array(string()),
55830
+ /** Minutes remaining on the active cycle, or null when not running. */
55831
+ remainingMinutes: number().int().nonnegative().nullable(),
55832
+ /** Cycle completion 0..100, or null when not applicable. */
55833
+ progressPercent: number().min(0).max(100).nullable(),
55834
+ /** True when the door is reported open. */
55835
+ doorOpen: boolean(),
55836
+ /** True when remote start is allowed (door closed, power on, etc.). */
55837
+ remoteStartAllowed: boolean(),
55838
+ /** Main power / switched-on state. */
55839
+ powerOn: boolean(),
55840
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
55841
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55842
+ halfLoad: boolean(),
55843
+ hygienePlus: boolean(),
55844
+ /** Extra dry option when the appliance exposes it. */
55845
+ extraDry: boolean(),
55846
+ /** Intensive zone (lower basket) when the appliance exposes it. */
55847
+ intensiveZone: boolean(),
55848
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
55849
+ varioSpeedPlus: boolean(),
55850
+ /** Child lock (controls disabled on the appliance). */
55851
+ childLock: boolean(),
55852
+ errorCode: number().nullable(),
55853
+ errorLabel: string().nullable(),
55854
+ lastFetchedAt: number()
55855
+ });
55856
+ var dishwasherCapability = {
55857
+ name: "dishwasher",
55858
+ scope: "device",
55859
+ deviceNative: true,
55860
+ mode: "singleton",
55861
+ deviceTypes: [DeviceType.Dishwasher],
55862
+ methods: {
55863
+ start: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55864
+ kind: "mutation",
55865
+ auth: "protected"
55866
+ }),
55867
+ pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55868
+ kind: "mutation",
55869
+ auth: "protected"
55870
+ }),
55871
+ stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
55872
+ kind: "mutation",
55873
+ auth: "protected"
55874
+ }),
55875
+ setProgram: method(object({
55876
+ deviceId: number().int().nonnegative(),
55877
+ program: string().min(1)
55878
+ }), _void(), {
55879
+ kind: "mutation",
55880
+ auth: "protected"
55881
+ }),
55882
+ setPower: method(object({
55883
+ deviceId: number().int().nonnegative(),
55884
+ on: boolean()
55885
+ }), _void(), {
55886
+ kind: "mutation",
55887
+ auth: "protected"
55888
+ }),
55889
+ setHalfLoad: method(object({
55890
+ deviceId: number().int().nonnegative(),
55891
+ on: boolean()
55892
+ }), _void(), {
55893
+ kind: "mutation",
55894
+ auth: "protected"
55895
+ }),
55896
+ setHygienePlus: method(object({
55897
+ deviceId: number().int().nonnegative(),
55898
+ on: boolean()
55899
+ }), _void(), {
55900
+ kind: "mutation",
55901
+ auth: "protected"
55902
+ }),
55903
+ setExtraDry: method(object({
55904
+ deviceId: number().int().nonnegative(),
55905
+ on: boolean()
55906
+ }), _void(), {
55907
+ kind: "mutation",
55908
+ auth: "protected"
55909
+ }),
55910
+ setIntensiveZone: method(object({
55911
+ deviceId: number().int().nonnegative(),
55912
+ on: boolean()
55913
+ }), _void(), {
55914
+ kind: "mutation",
55915
+ auth: "protected"
55916
+ }),
55917
+ setVarioSpeedPlus: method(object({
55918
+ deviceId: number().int().nonnegative(),
55919
+ on: boolean()
55920
+ }), _void(), {
55921
+ kind: "mutation",
55922
+ auth: "protected"
55923
+ }),
55924
+ setChildLock: method(object({
55925
+ deviceId: number().int().nonnegative(),
55926
+ on: boolean()
55927
+ }), _void(), {
55928
+ kind: "mutation",
55929
+ auth: "protected"
55930
+ }),
55931
+ setOption: method(object({
55932
+ deviceId: number().int().nonnegative(),
55933
+ key: string().min(1),
55934
+ value: union([
55935
+ boolean(),
55936
+ string(),
55937
+ number()
55938
+ ])
55939
+ }), _void(), {
55940
+ kind: "mutation",
55941
+ auth: "protected"
55942
+ })
55943
+ },
55944
+ status: {
55945
+ schema: DishwasherStatusSchema,
55946
+ kind: "poll"
55947
+ },
55948
+ runtimeState: DishwasherStatusSchema,
55949
+ durability: "session",
55950
+ history: { fields: { progressPercent: {
55951
+ kind: "gauge",
55952
+ unit: "%",
55953
+ deadband: 2
55954
+ } } }
55955
+ };
55786
55956
  var DoorbellStatusSchema = object({
55787
55957
  /** Ms epoch of the last press. null = never observed since this provider started. */
55788
55958
  lastPressedAt: number().nullable(),
@@ -56585,6 +56755,32 @@ var gasCapability = {
56585
56755
  * whether persisting is worth a SQLite commit. */
56586
56756
  volatileStateFields: ["lastChangedAt"]
56587
56757
  };
56758
+ var HeatingValveStatusSchema = object({
56759
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
56760
+ position: number().min(0).max(100).nullable(),
56761
+ /** Ms epoch when the slice was last updated (push or poll). */
56762
+ lastFetchedAt: number()
56763
+ });
56764
+ var heatingValveCapability = {
56765
+ name: "heating-valve",
56766
+ scope: "device",
56767
+ deviceNative: true,
56768
+ mode: "singleton",
56769
+ deviceTypes: [DeviceType.Thermostat],
56770
+ methods: {},
56771
+ status: {
56772
+ schema: HeatingValveStatusSchema,
56773
+ kind: "push"
56774
+ },
56775
+ runtimeState: HeatingValveStatusSchema,
56776
+ durability: "session",
56777
+ history: { fields: { position: {
56778
+ kind: "gauge",
56779
+ unit: "%",
56780
+ deadband: 1
56781
+ } } },
56782
+ volatileStateFields: ["lastFetchedAt"]
56783
+ };
56588
56784
  /**
56589
56785
  * Humidifier / dehumidifier cap. Models HA `humidifier.*` entities —
56590
56786
  * an on/off actuator with an optional target-humidity setpoint and an
@@ -66005,6 +66201,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
66005
66201
  dayNight: dayNightCapability,
66006
66202
  deviceDiscovery: deviceDiscoveryCapability,
66007
66203
  deviceStatus: deviceStatusCapability,
66204
+ dishwasher: dishwasherCapability,
66008
66205
  doorbell: doorbellCapability,
66009
66206
  enumSensor: enumSensorCapability,
66010
66207
  eventEmitter: eventEmitterCapability,
@@ -66012,6 +66209,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
66012
66209
  featureProbe: featureProbeCapability,
66013
66210
  flood: floodCapability,
66014
66211
  gas: gasCapability,
66212
+ heatingValve: heatingValveCapability,
66015
66213
  humidifier: humidifierCapability,
66016
66214
  humiditySensor: humiditySensorCapability,
66017
66215
  image: imageCapability,
@@ -66737,6 +66935,12 @@ var BaseDeviceProvider = class extends BaseAddon {
66737
66935
  provider: this
66738
66936
  }];
66739
66937
  }
66938
+ /** Flatten `super.onInitialize()` whether it returned an array or an envelope. */
66939
+ providerRegistrationsFromSuper(result) {
66940
+ if (Array.isArray(result)) return result;
66941
+ if (result !== void 0 && result.providers !== void 0) return [...result.providers];
66942
+ return [];
66943
+ }
66740
66944
  async onShutdown() {
66741
66945
  this._restoreShuttingDown = true;
66742
66946
  this.cancelRestoreRetries();
@@ -67263,7 +67467,7 @@ var BaseDeviceProvider = class extends BaseAddon {
67263
67467
  return toDeviceSummary(device, this.addonId);
67264
67468
  }
67265
67469
  };
67266
- 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;
67470
+ 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;
67267
67471
  new Set(Object.values(DeviceType));
67268
67472
  Object.freeze({
67269
67473
  "accessories.getStatus": {
@@ -69684,6 +69888,84 @@ Object.freeze({
69684
69888
  addonId: null,
69685
69889
  access: "view"
69686
69890
  },
69891
+ "dishwasher.getStatus": {
69892
+ capName: "dishwasher",
69893
+ capScope: "device",
69894
+ addonId: null,
69895
+ access: "view"
69896
+ },
69897
+ "dishwasher.pause": {
69898
+ capName: "dishwasher",
69899
+ capScope: "device",
69900
+ addonId: null,
69901
+ access: "create"
69902
+ },
69903
+ "dishwasher.setChildLock": {
69904
+ capName: "dishwasher",
69905
+ capScope: "device",
69906
+ addonId: null,
69907
+ access: "create"
69908
+ },
69909
+ "dishwasher.setExtraDry": {
69910
+ capName: "dishwasher",
69911
+ capScope: "device",
69912
+ addonId: null,
69913
+ access: "create"
69914
+ },
69915
+ "dishwasher.setHalfLoad": {
69916
+ capName: "dishwasher",
69917
+ capScope: "device",
69918
+ addonId: null,
69919
+ access: "create"
69920
+ },
69921
+ "dishwasher.setHygienePlus": {
69922
+ capName: "dishwasher",
69923
+ capScope: "device",
69924
+ addonId: null,
69925
+ access: "create"
69926
+ },
69927
+ "dishwasher.setIntensiveZone": {
69928
+ capName: "dishwasher",
69929
+ capScope: "device",
69930
+ addonId: null,
69931
+ access: "create"
69932
+ },
69933
+ "dishwasher.setOption": {
69934
+ capName: "dishwasher",
69935
+ capScope: "device",
69936
+ addonId: null,
69937
+ access: "create"
69938
+ },
69939
+ "dishwasher.setPower": {
69940
+ capName: "dishwasher",
69941
+ capScope: "device",
69942
+ addonId: null,
69943
+ access: "create"
69944
+ },
69945
+ "dishwasher.setProgram": {
69946
+ capName: "dishwasher",
69947
+ capScope: "device",
69948
+ addonId: null,
69949
+ access: "create"
69950
+ },
69951
+ "dishwasher.setVarioSpeedPlus": {
69952
+ capName: "dishwasher",
69953
+ capScope: "device",
69954
+ addonId: null,
69955
+ access: "create"
69956
+ },
69957
+ "dishwasher.start": {
69958
+ capName: "dishwasher",
69959
+ capScope: "device",
69960
+ addonId: null,
69961
+ access: "create"
69962
+ },
69963
+ "dishwasher.stop": {
69964
+ capName: "dishwasher",
69965
+ capScope: "device",
69966
+ addonId: null,
69967
+ access: "create"
69968
+ },
69687
69969
  "doorbell.getStatus": {
69688
69970
  capName: "doorbell",
69689
69971
  capScope: "device",
@@ -69894,6 +70176,12 @@ Object.freeze({
69894
70176
  addonId: null,
69895
70177
  access: "view"
69896
70178
  },
70179
+ "heatingValve.getStatus": {
70180
+ capName: "heating-valve",
70181
+ capScope: "device",
70182
+ addonId: null,
70183
+ access: "view"
70184
+ },
69897
70185
  "humidifier.getStatus": {
69898
70186
  capName: "humidifier",
69899
70187
  capScope: "device",
@@ -75481,7 +75769,7 @@ Object.freeze({
75481
75769
  access: "create"
75482
75770
  }
75483
75771
  });
75484
- 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;
75772
+ 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;
75485
75773
  DeviceFeature.BatteryOperated;
75486
75774
  Object.freeze({
75487
75775
  "accessories.getStatus": [{
@@ -76305,6 +76593,71 @@ Object.freeze({
76305
76593
  form: "single",
76306
76594
  optional: false
76307
76595
  }],
76596
+ "dishwasher.getStatus": [{
76597
+ name: "deviceId",
76598
+ form: "single",
76599
+ optional: false
76600
+ }],
76601
+ "dishwasher.pause": [{
76602
+ name: "deviceId",
76603
+ form: "single",
76604
+ optional: false
76605
+ }],
76606
+ "dishwasher.setChildLock": [{
76607
+ name: "deviceId",
76608
+ form: "single",
76609
+ optional: false
76610
+ }],
76611
+ "dishwasher.setExtraDry": [{
76612
+ name: "deviceId",
76613
+ form: "single",
76614
+ optional: false
76615
+ }],
76616
+ "dishwasher.setHalfLoad": [{
76617
+ name: "deviceId",
76618
+ form: "single",
76619
+ optional: false
76620
+ }],
76621
+ "dishwasher.setHygienePlus": [{
76622
+ name: "deviceId",
76623
+ form: "single",
76624
+ optional: false
76625
+ }],
76626
+ "dishwasher.setIntensiveZone": [{
76627
+ name: "deviceId",
76628
+ form: "single",
76629
+ optional: false
76630
+ }],
76631
+ "dishwasher.setOption": [{
76632
+ name: "deviceId",
76633
+ form: "single",
76634
+ optional: false
76635
+ }],
76636
+ "dishwasher.setPower": [{
76637
+ name: "deviceId",
76638
+ form: "single",
76639
+ optional: false
76640
+ }],
76641
+ "dishwasher.setProgram": [{
76642
+ name: "deviceId",
76643
+ form: "single",
76644
+ optional: false
76645
+ }],
76646
+ "dishwasher.setVarioSpeedPlus": [{
76647
+ name: "deviceId",
76648
+ form: "single",
76649
+ optional: false
76650
+ }],
76651
+ "dishwasher.start": [{
76652
+ name: "deviceId",
76653
+ form: "single",
76654
+ optional: false
76655
+ }],
76656
+ "dishwasher.stop": [{
76657
+ name: "deviceId",
76658
+ form: "single",
76659
+ optional: false
76660
+ }],
76308
76661
  "doorbell.getStatus": [{
76309
76662
  name: "deviceId",
76310
76663
  form: "single",
@@ -76374,6 +76727,11 @@ Object.freeze({
76374
76727
  form: "single",
76375
76728
  optional: false
76376
76729
  }],
76730
+ "heatingValve.getStatus": [{
76731
+ name: "deviceId",
76732
+ form: "single",
76733
+ optional: false
76734
+ }],
76377
76735
  "humidifier.getStatus": [{
76378
76736
  name: "deviceId",
76379
76737
  form: "single",
@@ -122872,7 +123230,7 @@ var AlexaImportAddon = class extends BaseDeviceProvider {
122872
123230
  super({ ...DEFAULTS });
122873
123231
  }
122874
123232
  async onInitialize() {
122875
- const regs = await super.onInitialize();
123233
+ const regs = this.providerRegistrationsFromSuper(await super.onInitialize());
122876
123234
  const records = this.ctx.records;
122877
123235
  if (records === void 0) throw new Error("import-alexa: ctx.records is required (hub-only addon)");
122878
123236
  await records.declare({ brokers: alexaBrokersEntryKind });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-import-alexa",
3
- "version": "0.2.127",
3
+ "version": "0.2.129",
4
4
  "description": "Alexa device-import provider for CamStack — imports the smart-home devices in a user's Alexa account via the unofficial alexa-remote2 cookie/token client (the inverse of the Alexa exporter)",
5
5
  "keywords": [
6
6
  "camstack",