@camstack/addon-smtp-nodemailer 1.1.6 → 1.1.8

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.
@@ -4665,7 +4665,7 @@ function _instanceof(cls, params = {}) {
4665
4665
  return inst;
4666
4666
  }
4667
4667
  //#endregion
4668
- //#region ../types/dist/sleep-NOH4yRwj.mjs
4668
+ //#region ../types/dist/sleep-DVmKHFGi.mjs
4669
4669
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4670
4670
  EventCategory["SystemBoot"] = "system.boot";
4671
4671
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -6465,6 +6465,17 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
6465
6465
  DeviceRole["HumiditySensor"] = "humidity-sensor";
6466
6466
  DeviceRole["AmbientLightSensor"] = "ambient-light-sensor";
6467
6467
  DeviceRole["PressureSensor"] = "pressure-sensor";
6468
+ /** Wind speed or direction (weather-station `wind-sensor` cap). */
6469
+ DeviceRole["WindSensor"] = "wind-sensor";
6470
+ /** Rain accumulation or rate (weather-station `rain-sensor` cap). */
6471
+ DeviceRole["RainSensor"] = "rain-sensor";
6472
+ /** UV index (weather-station `uv-sensor` cap). */
6473
+ DeviceRole["UvSensor"] = "uv-sensor";
6474
+ /** Solar irradiance W/m² (weather-station `solar-radiation-sensor` cap).
6475
+ * Distinct from AmbientLightSensor (lux). */
6476
+ DeviceRole["SolarRadiationSensor"] = "solar-radiation-sensor";
6477
+ /** Soil moisture % (garden/weather `soil-moisture-sensor` cap). */
6478
+ DeviceRole["SoilMoistureSensor"] = "soil-moisture-sensor";
6468
6479
  DeviceRole["PowerSensor"] = "power-sensor";
6469
6480
  DeviceRole["EnergySensor"] = "energy-sensor";
6470
6481
  DeviceRole["VoltageSensor"] = "voltage-sensor";
@@ -8983,18 +8994,47 @@ object({
8983
8994
  lastUpdated: number().nullable()
8984
8995
  });
8985
8996
  DeviceType.Image;
8997
+ /**
8998
+ * Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
8999
+ * with a mowing lifecycle plus a dock action.
9000
+ *
9001
+ * Activity follows HA's canonical lawn-mower lifecycle: `idle` /
9002
+ * `mowing` / `paused` / `docked` / `error`. `batteryLevel` (0..100) is
9003
+ * nullable — some mowers don't report a battery percentage.
9004
+ *
9005
+ * `startMowing` begins a mowing run, `pause` halts it in place, and
9006
+ * `dock` sends the mower back to its charging station.
9007
+ */
9008
+ var LawnMowerActivitySchema = _enum([
9009
+ "idle",
9010
+ "mowing",
9011
+ "paused",
9012
+ "docked",
9013
+ "error"
9014
+ ]);
9015
+ /** Severity of the current device/error code — info (status), warning, error. */
9016
+ var DeviceCodeSeveritySchema = _enum([
9017
+ "info",
9018
+ "warning",
9019
+ "error"
9020
+ ]);
8986
9021
  object({
8987
9022
  /** Lifecycle activity of the mower. */
8988
- activity: _enum([
8989
- "idle",
8990
- "mowing",
8991
- "paused",
8992
- "docked",
8993
- "error"
8994
- ]),
9023
+ activity: LawnMowerActivitySchema,
8995
9024
  /** 0..100 battery percentage. Null when the device has no battery
8996
9025
  * reading. */
8997
9026
  batteryLevel: number().min(0).max(100).nullable(),
9027
+ /** 0..100 mowing-completion percentage of the current task, or null when no
9028
+ * task is active / progress is unavailable. */
9029
+ progressPercent: number().min(0).max(100).nullable(),
9030
+ /** Current device/event code (dynamic — mostly status, sometimes an error),
9031
+ * or null when unknown. */
9032
+ currentCode: number().nullable(),
9033
+ /** Human label for {@link currentCode}, or null when undecodable. */
9034
+ currentCodeLabel: string().nullable(),
9035
+ /** Severity of {@link currentCode}. `error` (and often `warning`) warrants UI
9036
+ * attention; `info` is normal status. */
9037
+ severity: DeviceCodeSeveritySchema,
8998
9038
  /** Ms epoch when the slice was last updated. */
8999
9039
  lastChangedAt: number()
9000
9040
  });
@@ -10569,6 +10609,7 @@ var VacuumStateSchema = _enum([
10569
10609
  "paused",
10570
10610
  "returning",
10571
10611
  "docked",
10612
+ "drying",
10572
10613
  "error"
10573
10614
  ]);
10574
10615
  /**
@@ -10607,6 +10648,12 @@ object({
10607
10648
  detergent: TankStatusSchema.nullable(),
10608
10649
  /** Dust bin. Null when the hardware has no dust bin. */
10609
10650
  dustBin: TankStatusSchema.nullable(),
10651
+ /** 0..100 cleaning-completion percentage of the current task, or null. */
10652
+ progressPercent: number().min(0).max(100).nullable(),
10653
+ /** Current error code (0 / null = no error). */
10654
+ errorCode: number().nullable(),
10655
+ /** Human label for {@link errorCode}, or null when none / undecodable. */
10656
+ errorLabel: string().nullable(),
10610
10657
  /** Ms epoch when the slice was last updated. */
10611
10658
  lastChangedAt: number()
10612
10659
  });
@@ -12061,17 +12108,32 @@ var ReleaseInputSchema = object({
12061
12108
  * the parent cascades into every accessory. */
12062
12109
  camDeviceId: number().int().nonnegative()
12063
12110
  });
12064
- var ResyncInputSchema = object({
12065
- /** Parent CamStack device id of an adopted device. The provider resolves its
12066
- * source (integration/broker + native id) and re-aligns the device's
12067
- * structural spec (type/role/capabilities/units) with the live mapping,
12068
- * rebuilding any child whose class changed while preserving operator edits. */
12069
- camDeviceId: number().int().nonnegative() });
12111
+ var ResyncInputSchema = object({
12112
+ /** Parent CamStack device id of an adopted device. The provider resolves its
12113
+ * source (integration/broker + native id) and re-aligns the device's
12114
+ * structural spec (type/role/capabilities/units) with the live mapping,
12115
+ * rebuilding any child whose class changed while preserving operator edits. */
12116
+ camDeviceId: number().int().nonnegative(),
12117
+ /** "Resync from zero" (#19). When true, the kernel PURGES every accessory
12118
+ * child of `camDeviceId` BEFORE the provider re-derives the device, so the
12119
+ * children are rebuilt fresh from source — correct names, coords, and units —
12120
+ * instead of being preserved by the incremental reconcile. Use to recover from
12121
+ * legacy generic/placeholder names that the normal name-precedence keeps frozen
12122
+ * (the operator's explicit reset). Push-driven integrations (no-op resync)
12123
+ * rebuild on their next snapshot; pull/command integrations rebuild in `resync`.
12124
+ * Operator edits on the PARENT (its name, layout, primary-child pick) survive —
12125
+ * only the children are torn down. Omitted/false ⇒ the normal incremental
12126
+ * re-sync that preserves children. */
12127
+ resetToSource: boolean().optional()
12128
+ });
12070
12129
  var ResyncResultSchema = object({
12071
12130
  /** True when the persisted spec actually changed (children may have been rebuilt). */
12072
12131
  changed: boolean(),
12073
12132
  /** Number of child devices rebuilt into a new class by this re-sync. */
12074
- rebuiltChildren: number().int().nonnegative()
12133
+ rebuiltChildren: number().int().nonnegative(),
12134
+ /** Number of accessory children torn down by a `resetToSource` purge before the
12135
+ * provider re-derived the device. 0/absent for a normal incremental re-sync. */
12136
+ removedChildren: number().int().nonnegative().optional()
12075
12137
  });
12076
12138
  method(object({ integrationId: string() }), object({ filters: array(AdoptionFilterSchema) }), { auth: "admin" }), method(ListCandidatesInputSchema, ListCandidatesOutputSchema, { auth: "admin" }), method(GetCandidateInputSchema, DiscoveredChildDeviceSchema.nullable(), { auth: "admin" }), method(object({ integrationId: string() }), AdoptionStatusSchema, {
12077
12139
  kind: "mutation",
@@ -13770,6 +13832,11 @@ var DeviceMetaSchema = object({
13770
13832
  addonId: string(),
13771
13833
  type: string(),
13772
13834
  name: string(),
13835
+ /** True once an operator explicitly renamed the device via `setName`. Drives
13836
+ * reconcile name-precedence (preserve operator name vs adopt fresh provider
13837
+ * name). Absent ⇒ treated as user-named (PRESERVE) for legacy rows. See
13838
+ * `DeviceMeta.userNamed`. */
13839
+ userNamed: boolean().optional(),
13773
13840
  location: string().nullable(),
13774
13841
  disabled: boolean(),
13775
13842
  parentDeviceId: number().nullable(),
@@ -14080,6 +14147,9 @@ method(object({
14080
14147
  }), method(ReleaseInputSchema.extend({ addonId: string() }), _void(), {
14081
14148
  kind: "mutation",
14082
14149
  auth: "admin"
14150
+ }), method(ResyncInputSchema, ResyncResultSchema, {
14151
+ kind: "mutation",
14152
+ auth: "admin"
14083
14153
  }), method(object({
14084
14154
  deviceId: number(),
14085
14155
  key: string(),
@@ -17842,6 +17912,12 @@ Object.freeze({
17842
17912
  addonId: null,
17843
17913
  access: "create"
17844
17914
  },
17915
+ "deviceManager.adoptionResync": {
17916
+ capName: "device-manager",
17917
+ capScope: "system",
17918
+ addonId: null,
17919
+ access: "create"
17920
+ },
17845
17921
  "deviceManager.allocateDeviceId": {
17846
17922
  capName: "device-manager",
17847
17923
  capScope: "system",
@@ -4663,7 +4663,7 @@ function _instanceof(cls, params = {}) {
4663
4663
  return inst;
4664
4664
  }
4665
4665
  //#endregion
4666
- //#region ../types/dist/sleep-NOH4yRwj.mjs
4666
+ //#region ../types/dist/sleep-DVmKHFGi.mjs
4667
4667
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4668
4668
  EventCategory["SystemBoot"] = "system.boot";
4669
4669
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -6463,6 +6463,17 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
6463
6463
  DeviceRole["HumiditySensor"] = "humidity-sensor";
6464
6464
  DeviceRole["AmbientLightSensor"] = "ambient-light-sensor";
6465
6465
  DeviceRole["PressureSensor"] = "pressure-sensor";
6466
+ /** Wind speed or direction (weather-station `wind-sensor` cap). */
6467
+ DeviceRole["WindSensor"] = "wind-sensor";
6468
+ /** Rain accumulation or rate (weather-station `rain-sensor` cap). */
6469
+ DeviceRole["RainSensor"] = "rain-sensor";
6470
+ /** UV index (weather-station `uv-sensor` cap). */
6471
+ DeviceRole["UvSensor"] = "uv-sensor";
6472
+ /** Solar irradiance W/m² (weather-station `solar-radiation-sensor` cap).
6473
+ * Distinct from AmbientLightSensor (lux). */
6474
+ DeviceRole["SolarRadiationSensor"] = "solar-radiation-sensor";
6475
+ /** Soil moisture % (garden/weather `soil-moisture-sensor` cap). */
6476
+ DeviceRole["SoilMoistureSensor"] = "soil-moisture-sensor";
6466
6477
  DeviceRole["PowerSensor"] = "power-sensor";
6467
6478
  DeviceRole["EnergySensor"] = "energy-sensor";
6468
6479
  DeviceRole["VoltageSensor"] = "voltage-sensor";
@@ -8981,18 +8992,47 @@ object({
8981
8992
  lastUpdated: number().nullable()
8982
8993
  });
8983
8994
  DeviceType.Image;
8995
+ /**
8996
+ * Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
8997
+ * with a mowing lifecycle plus a dock action.
8998
+ *
8999
+ * Activity follows HA's canonical lawn-mower lifecycle: `idle` /
9000
+ * `mowing` / `paused` / `docked` / `error`. `batteryLevel` (0..100) is
9001
+ * nullable — some mowers don't report a battery percentage.
9002
+ *
9003
+ * `startMowing` begins a mowing run, `pause` halts it in place, and
9004
+ * `dock` sends the mower back to its charging station.
9005
+ */
9006
+ var LawnMowerActivitySchema = _enum([
9007
+ "idle",
9008
+ "mowing",
9009
+ "paused",
9010
+ "docked",
9011
+ "error"
9012
+ ]);
9013
+ /** Severity of the current device/error code — info (status), warning, error. */
9014
+ var DeviceCodeSeveritySchema = _enum([
9015
+ "info",
9016
+ "warning",
9017
+ "error"
9018
+ ]);
8984
9019
  object({
8985
9020
  /** Lifecycle activity of the mower. */
8986
- activity: _enum([
8987
- "idle",
8988
- "mowing",
8989
- "paused",
8990
- "docked",
8991
- "error"
8992
- ]),
9021
+ activity: LawnMowerActivitySchema,
8993
9022
  /** 0..100 battery percentage. Null when the device has no battery
8994
9023
  * reading. */
8995
9024
  batteryLevel: number().min(0).max(100).nullable(),
9025
+ /** 0..100 mowing-completion percentage of the current task, or null when no
9026
+ * task is active / progress is unavailable. */
9027
+ progressPercent: number().min(0).max(100).nullable(),
9028
+ /** Current device/event code (dynamic — mostly status, sometimes an error),
9029
+ * or null when unknown. */
9030
+ currentCode: number().nullable(),
9031
+ /** Human label for {@link currentCode}, or null when undecodable. */
9032
+ currentCodeLabel: string().nullable(),
9033
+ /** Severity of {@link currentCode}. `error` (and often `warning`) warrants UI
9034
+ * attention; `info` is normal status. */
9035
+ severity: DeviceCodeSeveritySchema,
8996
9036
  /** Ms epoch when the slice was last updated. */
8997
9037
  lastChangedAt: number()
8998
9038
  });
@@ -10567,6 +10607,7 @@ var VacuumStateSchema = _enum([
10567
10607
  "paused",
10568
10608
  "returning",
10569
10609
  "docked",
10610
+ "drying",
10570
10611
  "error"
10571
10612
  ]);
10572
10613
  /**
@@ -10605,6 +10646,12 @@ object({
10605
10646
  detergent: TankStatusSchema.nullable(),
10606
10647
  /** Dust bin. Null when the hardware has no dust bin. */
10607
10648
  dustBin: TankStatusSchema.nullable(),
10649
+ /** 0..100 cleaning-completion percentage of the current task, or null. */
10650
+ progressPercent: number().min(0).max(100).nullable(),
10651
+ /** Current error code (0 / null = no error). */
10652
+ errorCode: number().nullable(),
10653
+ /** Human label for {@link errorCode}, or null when none / undecodable. */
10654
+ errorLabel: string().nullable(),
10608
10655
  /** Ms epoch when the slice was last updated. */
10609
10656
  lastChangedAt: number()
10610
10657
  });
@@ -12059,17 +12106,32 @@ var ReleaseInputSchema = object({
12059
12106
  * the parent cascades into every accessory. */
12060
12107
  camDeviceId: number().int().nonnegative()
12061
12108
  });
12062
- var ResyncInputSchema = object({
12063
- /** Parent CamStack device id of an adopted device. The provider resolves its
12064
- * source (integration/broker + native id) and re-aligns the device's
12065
- * structural spec (type/role/capabilities/units) with the live mapping,
12066
- * rebuilding any child whose class changed while preserving operator edits. */
12067
- camDeviceId: number().int().nonnegative() });
12109
+ var ResyncInputSchema = object({
12110
+ /** Parent CamStack device id of an adopted device. The provider resolves its
12111
+ * source (integration/broker + native id) and re-aligns the device's
12112
+ * structural spec (type/role/capabilities/units) with the live mapping,
12113
+ * rebuilding any child whose class changed while preserving operator edits. */
12114
+ camDeviceId: number().int().nonnegative(),
12115
+ /** "Resync from zero" (#19). When true, the kernel PURGES every accessory
12116
+ * child of `camDeviceId` BEFORE the provider re-derives the device, so the
12117
+ * children are rebuilt fresh from source — correct names, coords, and units —
12118
+ * instead of being preserved by the incremental reconcile. Use to recover from
12119
+ * legacy generic/placeholder names that the normal name-precedence keeps frozen
12120
+ * (the operator's explicit reset). Push-driven integrations (no-op resync)
12121
+ * rebuild on their next snapshot; pull/command integrations rebuild in `resync`.
12122
+ * Operator edits on the PARENT (its name, layout, primary-child pick) survive —
12123
+ * only the children are torn down. Omitted/false ⇒ the normal incremental
12124
+ * re-sync that preserves children. */
12125
+ resetToSource: boolean().optional()
12126
+ });
12068
12127
  var ResyncResultSchema = object({
12069
12128
  /** True when the persisted spec actually changed (children may have been rebuilt). */
12070
12129
  changed: boolean(),
12071
12130
  /** Number of child devices rebuilt into a new class by this re-sync. */
12072
- rebuiltChildren: number().int().nonnegative()
12131
+ rebuiltChildren: number().int().nonnegative(),
12132
+ /** Number of accessory children torn down by a `resetToSource` purge before the
12133
+ * provider re-derived the device. 0/absent for a normal incremental re-sync. */
12134
+ removedChildren: number().int().nonnegative().optional()
12073
12135
  });
12074
12136
  method(object({ integrationId: string() }), object({ filters: array(AdoptionFilterSchema) }), { auth: "admin" }), method(ListCandidatesInputSchema, ListCandidatesOutputSchema, { auth: "admin" }), method(GetCandidateInputSchema, DiscoveredChildDeviceSchema.nullable(), { auth: "admin" }), method(object({ integrationId: string() }), AdoptionStatusSchema, {
12075
12137
  kind: "mutation",
@@ -13768,6 +13830,11 @@ var DeviceMetaSchema = object({
13768
13830
  addonId: string(),
13769
13831
  type: string(),
13770
13832
  name: string(),
13833
+ /** True once an operator explicitly renamed the device via `setName`. Drives
13834
+ * reconcile name-precedence (preserve operator name vs adopt fresh provider
13835
+ * name). Absent ⇒ treated as user-named (PRESERVE) for legacy rows. See
13836
+ * `DeviceMeta.userNamed`. */
13837
+ userNamed: boolean().optional(),
13771
13838
  location: string().nullable(),
13772
13839
  disabled: boolean(),
13773
13840
  parentDeviceId: number().nullable(),
@@ -14078,6 +14145,9 @@ method(object({
14078
14145
  }), method(ReleaseInputSchema.extend({ addonId: string() }), _void(), {
14079
14146
  kind: "mutation",
14080
14147
  auth: "admin"
14148
+ }), method(ResyncInputSchema, ResyncResultSchema, {
14149
+ kind: "mutation",
14150
+ auth: "admin"
14081
14151
  }), method(object({
14082
14152
  deviceId: number(),
14083
14153
  key: string(),
@@ -17840,6 +17910,12 @@ Object.freeze({
17840
17910
  addonId: null,
17841
17911
  access: "create"
17842
17912
  },
17913
+ "deviceManager.adoptionResync": {
17914
+ capName: "device-manager",
17915
+ capScope: "system",
17916
+ addonId: null,
17917
+ access: "create"
17918
+ },
17843
17919
  "deviceManager.allocateDeviceId": {
17844
17920
  capName: "device-manager",
17845
17921
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-smtp-nodemailer",
3
- "version": "1.1.6",
3
+ "version": "1.1.8",
4
4
  "description": "SMTP email provider addon for CamStack — wraps `nodemailer` and registers a `smtp-provider` cap collection entry. Used by magic-link login + notifier addons.",
5
5
  "keywords": [
6
6
  "camstack",