@camstack/addon-static-turn 1.1.7 → 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.
@@ -8957,18 +8957,47 @@ object({
8957
8957
  lastUpdated: number().nullable()
8958
8958
  });
8959
8959
  DeviceType.Image;
8960
+ /**
8961
+ * Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
8962
+ * with a mowing lifecycle plus a dock action.
8963
+ *
8964
+ * Activity follows HA's canonical lawn-mower lifecycle: `idle` /
8965
+ * `mowing` / `paused` / `docked` / `error`. `batteryLevel` (0..100) is
8966
+ * nullable — some mowers don't report a battery percentage.
8967
+ *
8968
+ * `startMowing` begins a mowing run, `pause` halts it in place, and
8969
+ * `dock` sends the mower back to its charging station.
8970
+ */
8971
+ var LawnMowerActivitySchema = _enum([
8972
+ "idle",
8973
+ "mowing",
8974
+ "paused",
8975
+ "docked",
8976
+ "error"
8977
+ ]);
8978
+ /** Severity of the current device/error code — info (status), warning, error. */
8979
+ var DeviceCodeSeveritySchema = _enum([
8980
+ "info",
8981
+ "warning",
8982
+ "error"
8983
+ ]);
8960
8984
  object({
8961
8985
  /** Lifecycle activity of the mower. */
8962
- activity: _enum([
8963
- "idle",
8964
- "mowing",
8965
- "paused",
8966
- "docked",
8967
- "error"
8968
- ]),
8986
+ activity: LawnMowerActivitySchema,
8969
8987
  /** 0..100 battery percentage. Null when the device has no battery
8970
8988
  * reading. */
8971
8989
  batteryLevel: number().min(0).max(100).nullable(),
8990
+ /** 0..100 mowing-completion percentage of the current task, or null when no
8991
+ * task is active / progress is unavailable. */
8992
+ progressPercent: number().min(0).max(100).nullable(),
8993
+ /** Current device/event code (dynamic — mostly status, sometimes an error),
8994
+ * or null when unknown. */
8995
+ currentCode: number().nullable(),
8996
+ /** Human label for {@link currentCode}, or null when undecodable. */
8997
+ currentCodeLabel: string().nullable(),
8998
+ /** Severity of {@link currentCode}. `error` (and often `warning`) warrants UI
8999
+ * attention; `info` is normal status. */
9000
+ severity: DeviceCodeSeveritySchema,
8972
9001
  /** Ms epoch when the slice was last updated. */
8973
9002
  lastChangedAt: number()
8974
9003
  });
@@ -10543,6 +10572,7 @@ var VacuumStateSchema = _enum([
10543
10572
  "paused",
10544
10573
  "returning",
10545
10574
  "docked",
10575
+ "drying",
10546
10576
  "error"
10547
10577
  ]);
10548
10578
  /**
@@ -10581,6 +10611,12 @@ object({
10581
10611
  detergent: TankStatusSchema.nullable(),
10582
10612
  /** Dust bin. Null when the hardware has no dust bin. */
10583
10613
  dustBin: TankStatusSchema.nullable(),
10614
+ /** 0..100 cleaning-completion percentage of the current task, or null. */
10615
+ progressPercent: number().min(0).max(100).nullable(),
10616
+ /** Current error code (0 / null = no error). */
10617
+ errorCode: number().nullable(),
10618
+ /** Human label for {@link errorCode}, or null when none / undecodable. */
10619
+ errorLabel: string().nullable(),
10584
10620
  /** Ms epoch when the slice was last updated. */
10585
10621
  lastChangedAt: number()
10586
10622
  });
@@ -12022,17 +12058,32 @@ var ReleaseInputSchema = object({
12022
12058
  * the parent cascades into every accessory. */
12023
12059
  camDeviceId: number().int().nonnegative()
12024
12060
  });
12025
- var ResyncInputSchema = object({
12026
- /** Parent CamStack device id of an adopted device. The provider resolves its
12027
- * source (integration/broker + native id) and re-aligns the device's
12028
- * structural spec (type/role/capabilities/units) with the live mapping,
12029
- * rebuilding any child whose class changed while preserving operator edits. */
12030
- camDeviceId: number().int().nonnegative() });
12061
+ var ResyncInputSchema = object({
12062
+ /** Parent CamStack device id of an adopted device. The provider resolves its
12063
+ * source (integration/broker + native id) and re-aligns the device's
12064
+ * structural spec (type/role/capabilities/units) with the live mapping,
12065
+ * rebuilding any child whose class changed while preserving operator edits. */
12066
+ camDeviceId: number().int().nonnegative(),
12067
+ /** "Resync from zero" (#19). When true, the kernel PURGES every accessory
12068
+ * child of `camDeviceId` BEFORE the provider re-derives the device, so the
12069
+ * children are rebuilt fresh from source — correct names, coords, and units —
12070
+ * instead of being preserved by the incremental reconcile. Use to recover from
12071
+ * legacy generic/placeholder names that the normal name-precedence keeps frozen
12072
+ * (the operator's explicit reset). Push-driven integrations (no-op resync)
12073
+ * rebuild on their next snapshot; pull/command integrations rebuild in `resync`.
12074
+ * Operator edits on the PARENT (its name, layout, primary-child pick) survive —
12075
+ * only the children are torn down. Omitted/false ⇒ the normal incremental
12076
+ * re-sync that preserves children. */
12077
+ resetToSource: boolean().optional()
12078
+ });
12031
12079
  var ResyncResultSchema = object({
12032
12080
  /** True when the persisted spec actually changed (children may have been rebuilt). */
12033
12081
  changed: boolean(),
12034
12082
  /** Number of child devices rebuilt into a new class by this re-sync. */
12035
- rebuiltChildren: number().int().nonnegative()
12083
+ rebuiltChildren: number().int().nonnegative(),
12084
+ /** Number of accessory children torn down by a `resetToSource` purge before the
12085
+ * provider re-derived the device. 0/absent for a normal incremental re-sync. */
12086
+ removedChildren: number().int().nonnegative().optional()
12036
12087
  });
12037
12088
  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, {
12038
12089
  kind: "mutation",
@@ -13731,6 +13782,11 @@ var DeviceMetaSchema = object({
13731
13782
  addonId: string(),
13732
13783
  type: string(),
13733
13784
  name: string(),
13785
+ /** True once an operator explicitly renamed the device via `setName`. Drives
13786
+ * reconcile name-precedence (preserve operator name vs adopt fresh provider
13787
+ * name). Absent ⇒ treated as user-named (PRESERVE) for legacy rows. See
13788
+ * `DeviceMeta.userNamed`. */
13789
+ userNamed: boolean().optional(),
13734
13790
  location: string().nullable(),
13735
13791
  disabled: boolean(),
13736
13792
  parentDeviceId: number().nullable(),
@@ -14041,6 +14097,9 @@ method(object({
14041
14097
  }), method(ReleaseInputSchema.extend({ addonId: string() }), _void(), {
14042
14098
  kind: "mutation",
14043
14099
  auth: "admin"
14100
+ }), method(ResyncInputSchema, ResyncResultSchema, {
14101
+ kind: "mutation",
14102
+ auth: "admin"
14044
14103
  }), method(object({
14045
14104
  deviceId: number(),
14046
14105
  key: string(),
@@ -17826,6 +17885,12 @@ Object.freeze({
17826
17885
  addonId: null,
17827
17886
  access: "create"
17828
17887
  },
17888
+ "deviceManager.adoptionResync": {
17889
+ capName: "device-manager",
17890
+ capScope: "system",
17891
+ addonId: null,
17892
+ access: "create"
17893
+ },
17829
17894
  "deviceManager.allocateDeviceId": {
17830
17895
  capName: "device-manager",
17831
17896
  capScope: "system",
@@ -8956,18 +8956,47 @@ object({
8956
8956
  lastUpdated: number().nullable()
8957
8957
  });
8958
8958
  DeviceType.Image;
8959
+ /**
8960
+ * Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
8961
+ * with a mowing lifecycle plus a dock action.
8962
+ *
8963
+ * Activity follows HA's canonical lawn-mower lifecycle: `idle` /
8964
+ * `mowing` / `paused` / `docked` / `error`. `batteryLevel` (0..100) is
8965
+ * nullable — some mowers don't report a battery percentage.
8966
+ *
8967
+ * `startMowing` begins a mowing run, `pause` halts it in place, and
8968
+ * `dock` sends the mower back to its charging station.
8969
+ */
8970
+ var LawnMowerActivitySchema = _enum([
8971
+ "idle",
8972
+ "mowing",
8973
+ "paused",
8974
+ "docked",
8975
+ "error"
8976
+ ]);
8977
+ /** Severity of the current device/error code — info (status), warning, error. */
8978
+ var DeviceCodeSeveritySchema = _enum([
8979
+ "info",
8980
+ "warning",
8981
+ "error"
8982
+ ]);
8959
8983
  object({
8960
8984
  /** Lifecycle activity of the mower. */
8961
- activity: _enum([
8962
- "idle",
8963
- "mowing",
8964
- "paused",
8965
- "docked",
8966
- "error"
8967
- ]),
8985
+ activity: LawnMowerActivitySchema,
8968
8986
  /** 0..100 battery percentage. Null when the device has no battery
8969
8987
  * reading. */
8970
8988
  batteryLevel: number().min(0).max(100).nullable(),
8989
+ /** 0..100 mowing-completion percentage of the current task, or null when no
8990
+ * task is active / progress is unavailable. */
8991
+ progressPercent: number().min(0).max(100).nullable(),
8992
+ /** Current device/event code (dynamic — mostly status, sometimes an error),
8993
+ * or null when unknown. */
8994
+ currentCode: number().nullable(),
8995
+ /** Human label for {@link currentCode}, or null when undecodable. */
8996
+ currentCodeLabel: string().nullable(),
8997
+ /** Severity of {@link currentCode}. `error` (and often `warning`) warrants UI
8998
+ * attention; `info` is normal status. */
8999
+ severity: DeviceCodeSeveritySchema,
8971
9000
  /** Ms epoch when the slice was last updated. */
8972
9001
  lastChangedAt: number()
8973
9002
  });
@@ -10542,6 +10571,7 @@ var VacuumStateSchema = _enum([
10542
10571
  "paused",
10543
10572
  "returning",
10544
10573
  "docked",
10574
+ "drying",
10545
10575
  "error"
10546
10576
  ]);
10547
10577
  /**
@@ -10580,6 +10610,12 @@ object({
10580
10610
  detergent: TankStatusSchema.nullable(),
10581
10611
  /** Dust bin. Null when the hardware has no dust bin. */
10582
10612
  dustBin: TankStatusSchema.nullable(),
10613
+ /** 0..100 cleaning-completion percentage of the current task, or null. */
10614
+ progressPercent: number().min(0).max(100).nullable(),
10615
+ /** Current error code (0 / null = no error). */
10616
+ errorCode: number().nullable(),
10617
+ /** Human label for {@link errorCode}, or null when none / undecodable. */
10618
+ errorLabel: string().nullable(),
10583
10619
  /** Ms epoch when the slice was last updated. */
10584
10620
  lastChangedAt: number()
10585
10621
  });
@@ -12021,17 +12057,32 @@ var ReleaseInputSchema = object({
12021
12057
  * the parent cascades into every accessory. */
12022
12058
  camDeviceId: number().int().nonnegative()
12023
12059
  });
12024
- var ResyncInputSchema = object({
12025
- /** Parent CamStack device id of an adopted device. The provider resolves its
12026
- * source (integration/broker + native id) and re-aligns the device's
12027
- * structural spec (type/role/capabilities/units) with the live mapping,
12028
- * rebuilding any child whose class changed while preserving operator edits. */
12029
- camDeviceId: number().int().nonnegative() });
12060
+ var ResyncInputSchema = object({
12061
+ /** Parent CamStack device id of an adopted device. The provider resolves its
12062
+ * source (integration/broker + native id) and re-aligns the device's
12063
+ * structural spec (type/role/capabilities/units) with the live mapping,
12064
+ * rebuilding any child whose class changed while preserving operator edits. */
12065
+ camDeviceId: number().int().nonnegative(),
12066
+ /** "Resync from zero" (#19). When true, the kernel PURGES every accessory
12067
+ * child of `camDeviceId` BEFORE the provider re-derives the device, so the
12068
+ * children are rebuilt fresh from source — correct names, coords, and units —
12069
+ * instead of being preserved by the incremental reconcile. Use to recover from
12070
+ * legacy generic/placeholder names that the normal name-precedence keeps frozen
12071
+ * (the operator's explicit reset). Push-driven integrations (no-op resync)
12072
+ * rebuild on their next snapshot; pull/command integrations rebuild in `resync`.
12073
+ * Operator edits on the PARENT (its name, layout, primary-child pick) survive —
12074
+ * only the children are torn down. Omitted/false ⇒ the normal incremental
12075
+ * re-sync that preserves children. */
12076
+ resetToSource: boolean().optional()
12077
+ });
12030
12078
  var ResyncResultSchema = object({
12031
12079
  /** True when the persisted spec actually changed (children may have been rebuilt). */
12032
12080
  changed: boolean(),
12033
12081
  /** Number of child devices rebuilt into a new class by this re-sync. */
12034
- rebuiltChildren: number().int().nonnegative()
12082
+ rebuiltChildren: number().int().nonnegative(),
12083
+ /** Number of accessory children torn down by a `resetToSource` purge before the
12084
+ * provider re-derived the device. 0/absent for a normal incremental re-sync. */
12085
+ removedChildren: number().int().nonnegative().optional()
12035
12086
  });
12036
12087
  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, {
12037
12088
  kind: "mutation",
@@ -13730,6 +13781,11 @@ var DeviceMetaSchema = object({
13730
13781
  addonId: string(),
13731
13782
  type: string(),
13732
13783
  name: string(),
13784
+ /** True once an operator explicitly renamed the device via `setName`. Drives
13785
+ * reconcile name-precedence (preserve operator name vs adopt fresh provider
13786
+ * name). Absent ⇒ treated as user-named (PRESERVE) for legacy rows. See
13787
+ * `DeviceMeta.userNamed`. */
13788
+ userNamed: boolean().optional(),
13733
13789
  location: string().nullable(),
13734
13790
  disabled: boolean(),
13735
13791
  parentDeviceId: number().nullable(),
@@ -14040,6 +14096,9 @@ method(object({
14040
14096
  }), method(ReleaseInputSchema.extend({ addonId: string() }), _void(), {
14041
14097
  kind: "mutation",
14042
14098
  auth: "admin"
14099
+ }), method(ResyncInputSchema, ResyncResultSchema, {
14100
+ kind: "mutation",
14101
+ auth: "admin"
14043
14102
  }), method(object({
14044
14103
  deviceId: number(),
14045
14104
  key: string(),
@@ -17825,6 +17884,12 @@ Object.freeze({
17825
17884
  addonId: null,
17826
17885
  access: "create"
17827
17886
  },
17887
+ "deviceManager.adoptionResync": {
17888
+ capName: "device-manager",
17889
+ capScope: "system",
17890
+ addonId: null,
17891
+ access: "create"
17892
+ },
17828
17893
  "deviceManager.allocateDeviceId": {
17829
17894
  capName: "device-manager",
17830
17895
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-static-turn",
3
- "version": "1.1.7",
3
+ "version": "1.1.8",
4
4
  "description": "Static / self-hosted (coturn) TURN provider for CamStack",
5
5
  "keywords": [
6
6
  "camstack",