@camstack/addon-provider-tuya 0.2.18 → 0.2.20

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.
package/dist/addon.js CHANGED
@@ -20239,7 +20239,31 @@ DeviceType.Camera, method(object({
20239
20239
  lastCapturedAt: number().nullable(),
20240
20240
  cacheAgeMs: number().nullable(),
20241
20241
  etag: string().nullable()
20242
- }))), systemMethod(object({
20242
+ }))), systemMethod(object({ deviceId: number() }), object({
20243
+ /** The battery slice as read, or null when the device has none. */
20244
+ battery: object({
20245
+ sleeping: boolean(),
20246
+ lastUpdated: number(),
20247
+ lastContactAt: number().optional()
20248
+ }).nullable(),
20249
+ /** The resolved snapshot state (what the overlay decision used). */
20250
+ state: object({
20251
+ isBattery: boolean(),
20252
+ reason: _enum([
20253
+ "disabled",
20254
+ "sleeping",
20255
+ "unreachable",
20256
+ "waking"
20257
+ ]).nullable()
20258
+ }),
20259
+ /** The cached frame behind the next paint. */
20260
+ frame: object({
20261
+ capturedAt: number().nullable(),
20262
+ ageMs: number().nullable()
20263
+ }),
20264
+ /** A wake window is currently open (the Waking overlay's source). */
20265
+ waking: boolean()
20266
+ })), systemMethod(object({
20243
20267
  /** The tiles a surface is actually rendering. One entry per (device,
20244
20268
  * width) the caller will paint — the width is snapped to the server's
20245
20269
  * ladder and becomes part of the link's SIGNED identity. */
@@ -20278,7 +20302,14 @@ targets: array(object({
20278
20302
  "sleeping",
20279
20303
  "unreachable",
20280
20304
  "waking"
20281
- ]).nullable()
20305
+ ]).nullable(),
20306
+ /** A battery camera (whatever its current state). An AWAKE battery
20307
+ * camera is deliberately NOT recaptured on the poll cadence — every
20308
+ * capture is a camera hit that would keep it out of sleep — so its
20309
+ * cached frame legitimately ages past the currency ceiling while
20310
+ * nothing is streaming. A surface must keep painting it (a fresh
20311
+ * frame is captured at each wake), not blank to "unavailable". */
20312
+ battery: boolean()
20282
20313
  })));
20283
20314
  /**
20284
20315
  * `sso-bridge` — internal hub-only cap that lets SSO-style auth
@@ -34835,6 +34866,12 @@ Object.freeze({
34835
34866
  addonId: null,
34836
34867
  access: "view"
34837
34868
  },
34869
+ "snapshot.getDebugState": {
34870
+ capName: "snapshot",
34871
+ capScope: "device",
34872
+ addonId: null,
34873
+ access: "view"
34874
+ },
34838
34875
  "snapshot.getSnapshot": {
34839
34876
  capName: "snapshot",
34840
34877
  capScope: "device",
@@ -37432,6 +37469,11 @@ Object.freeze({
37432
37469
  form: "single",
37433
37470
  optional: false
37434
37471
  }],
37472
+ "snapshot.getDebugState": [{
37473
+ name: "deviceId",
37474
+ form: "single",
37475
+ optional: false
37476
+ }],
37435
37477
  "snapshot.getSnapshot": [{
37436
37478
  name: "deviceId",
37437
37479
  form: "single",
package/dist/addon.mjs CHANGED
@@ -20238,7 +20238,31 @@ DeviceType.Camera, method(object({
20238
20238
  lastCapturedAt: number().nullable(),
20239
20239
  cacheAgeMs: number().nullable(),
20240
20240
  etag: string().nullable()
20241
- }))), systemMethod(object({
20241
+ }))), systemMethod(object({ deviceId: number() }), object({
20242
+ /** The battery slice as read, or null when the device has none. */
20243
+ battery: object({
20244
+ sleeping: boolean(),
20245
+ lastUpdated: number(),
20246
+ lastContactAt: number().optional()
20247
+ }).nullable(),
20248
+ /** The resolved snapshot state (what the overlay decision used). */
20249
+ state: object({
20250
+ isBattery: boolean(),
20251
+ reason: _enum([
20252
+ "disabled",
20253
+ "sleeping",
20254
+ "unreachable",
20255
+ "waking"
20256
+ ]).nullable()
20257
+ }),
20258
+ /** The cached frame behind the next paint. */
20259
+ frame: object({
20260
+ capturedAt: number().nullable(),
20261
+ ageMs: number().nullable()
20262
+ }),
20263
+ /** A wake window is currently open (the Waking overlay's source). */
20264
+ waking: boolean()
20265
+ })), systemMethod(object({
20242
20266
  /** The tiles a surface is actually rendering. One entry per (device,
20243
20267
  * width) the caller will paint — the width is snapped to the server's
20244
20268
  * ladder and becomes part of the link's SIGNED identity. */
@@ -20277,7 +20301,14 @@ targets: array(object({
20277
20301
  "sleeping",
20278
20302
  "unreachable",
20279
20303
  "waking"
20280
- ]).nullable()
20304
+ ]).nullable(),
20305
+ /** A battery camera (whatever its current state). An AWAKE battery
20306
+ * camera is deliberately NOT recaptured on the poll cadence — every
20307
+ * capture is a camera hit that would keep it out of sleep — so its
20308
+ * cached frame legitimately ages past the currency ceiling while
20309
+ * nothing is streaming. A surface must keep painting it (a fresh
20310
+ * frame is captured at each wake), not blank to "unavailable". */
20311
+ battery: boolean()
20281
20312
  })));
20282
20313
  /**
20283
20314
  * `sso-bridge` — internal hub-only cap that lets SSO-style auth
@@ -34834,6 +34865,12 @@ Object.freeze({
34834
34865
  addonId: null,
34835
34866
  access: "view"
34836
34867
  },
34868
+ "snapshot.getDebugState": {
34869
+ capName: "snapshot",
34870
+ capScope: "device",
34871
+ addonId: null,
34872
+ access: "view"
34873
+ },
34837
34874
  "snapshot.getSnapshot": {
34838
34875
  capName: "snapshot",
34839
34876
  capScope: "device",
@@ -37431,6 +37468,11 @@ Object.freeze({
37431
37468
  form: "single",
37432
37469
  optional: false
37433
37470
  }],
37471
+ "snapshot.getDebugState": [{
37472
+ name: "deviceId",
37473
+ form: "single",
37474
+ optional: false
37475
+ }],
37434
37476
  "snapshot.getSnapshot": [{
37435
37477
  name: "deviceId",
37436
37478
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-tuya",
3
- "version": "0.2.18",
3
+ "version": "0.2.20",
4
4
  "description": "Tuya / Smart Life device-provider addon for CamStack — account-onboarded (Tuya IoT cloud fetch of device localKeys) + LOCAL DP control via the @apocaliss92/nodetuya encrypted-LAN client, exposing switch / water-heater-family kettle entities",
5
5
  "keywords": [
6
6
  "camstack",