@camstack/addon-export-hap 1.2.29 → 1.2.31

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.
@@ -19861,7 +19861,31 @@ DeviceType.Camera, method(object({
19861
19861
  lastCapturedAt: number().nullable(),
19862
19862
  cacheAgeMs: number().nullable(),
19863
19863
  etag: string().nullable()
19864
- }))), systemMethod(object({
19864
+ }))), systemMethod(object({ deviceId: number() }), object({
19865
+ /** The battery slice as read, or null when the device has none. */
19866
+ battery: object({
19867
+ sleeping: boolean(),
19868
+ lastUpdated: number(),
19869
+ lastContactAt: number().optional()
19870
+ }).nullable(),
19871
+ /** The resolved snapshot state (what the overlay decision used). */
19872
+ state: object({
19873
+ isBattery: boolean(),
19874
+ reason: _enum([
19875
+ "disabled",
19876
+ "sleeping",
19877
+ "unreachable",
19878
+ "waking"
19879
+ ]).nullable()
19880
+ }),
19881
+ /** The cached frame behind the next paint. */
19882
+ frame: object({
19883
+ capturedAt: number().nullable(),
19884
+ ageMs: number().nullable()
19885
+ }),
19886
+ /** A wake window is currently open (the Waking overlay's source). */
19887
+ waking: boolean()
19888
+ })), systemMethod(object({
19865
19889
  /** The tiles a surface is actually rendering. One entry per (device,
19866
19890
  * width) the caller will paint — the width is snapped to the server's
19867
19891
  * ladder and becomes part of the link's SIGNED identity. */
@@ -19900,7 +19924,14 @@ targets: array(object({
19900
19924
  "sleeping",
19901
19925
  "unreachable",
19902
19926
  "waking"
19903
- ]).nullable()
19927
+ ]).nullable(),
19928
+ /** A battery camera (whatever its current state). An AWAKE battery
19929
+ * camera is deliberately NOT recaptured on the poll cadence — every
19930
+ * capture is a camera hit that would keep it out of sleep — so its
19931
+ * cached frame legitimately ages past the currency ceiling while
19932
+ * nothing is streaming. A surface must keep painting it (a fresh
19933
+ * frame is captured at each wake), not blank to "unavailable". */
19934
+ battery: boolean()
19904
19935
  })));
19905
19936
  /**
19906
19937
  * `sso-bridge` — internal hub-only cap that lets SSO-style auth
@@ -31149,6 +31180,12 @@ Object.freeze({
31149
31180
  addonId: null,
31150
31181
  access: "view"
31151
31182
  },
31183
+ "snapshot.getDebugState": {
31184
+ capName: "snapshot",
31185
+ capScope: "device",
31186
+ addonId: null,
31187
+ access: "view"
31188
+ },
31152
31189
  "snapshot.getSnapshot": {
31153
31190
  capName: "snapshot",
31154
31191
  capScope: "device",
@@ -33746,6 +33783,11 @@ Object.freeze({
33746
33783
  form: "single",
33747
33784
  optional: false
33748
33785
  }],
33786
+ "snapshot.getDebugState": [{
33787
+ name: "deviceId",
33788
+ form: "single",
33789
+ optional: false
33790
+ }],
33749
33791
  "snapshot.getSnapshot": [{
33750
33792
  name: "deviceId",
33751
33793
  form: "single",
@@ -19849,7 +19849,31 @@ DeviceType.Camera, method(object({
19849
19849
  lastCapturedAt: number().nullable(),
19850
19850
  cacheAgeMs: number().nullable(),
19851
19851
  etag: string().nullable()
19852
- }))), systemMethod(object({
19852
+ }))), systemMethod(object({ deviceId: number() }), object({
19853
+ /** The battery slice as read, or null when the device has none. */
19854
+ battery: object({
19855
+ sleeping: boolean(),
19856
+ lastUpdated: number(),
19857
+ lastContactAt: number().optional()
19858
+ }).nullable(),
19859
+ /** The resolved snapshot state (what the overlay decision used). */
19860
+ state: object({
19861
+ isBattery: boolean(),
19862
+ reason: _enum([
19863
+ "disabled",
19864
+ "sleeping",
19865
+ "unreachable",
19866
+ "waking"
19867
+ ]).nullable()
19868
+ }),
19869
+ /** The cached frame behind the next paint. */
19870
+ frame: object({
19871
+ capturedAt: number().nullable(),
19872
+ ageMs: number().nullable()
19873
+ }),
19874
+ /** A wake window is currently open (the Waking overlay's source). */
19875
+ waking: boolean()
19876
+ })), systemMethod(object({
19853
19877
  /** The tiles a surface is actually rendering. One entry per (device,
19854
19878
  * width) the caller will paint — the width is snapped to the server's
19855
19879
  * ladder and becomes part of the link's SIGNED identity. */
@@ -19888,7 +19912,14 @@ targets: array(object({
19888
19912
  "sleeping",
19889
19913
  "unreachable",
19890
19914
  "waking"
19891
- ]).nullable()
19915
+ ]).nullable(),
19916
+ /** A battery camera (whatever its current state). An AWAKE battery
19917
+ * camera is deliberately NOT recaptured on the poll cadence — every
19918
+ * capture is a camera hit that would keep it out of sleep — so its
19919
+ * cached frame legitimately ages past the currency ceiling while
19920
+ * nothing is streaming. A surface must keep painting it (a fresh
19921
+ * frame is captured at each wake), not blank to "unavailable". */
19922
+ battery: boolean()
19892
19923
  })));
19893
19924
  /**
19894
19925
  * `sso-bridge` — internal hub-only cap that lets SSO-style auth
@@ -31137,6 +31168,12 @@ Object.freeze({
31137
31168
  addonId: null,
31138
31169
  access: "view"
31139
31170
  },
31171
+ "snapshot.getDebugState": {
31172
+ capName: "snapshot",
31173
+ capScope: "device",
31174
+ addonId: null,
31175
+ access: "view"
31176
+ },
31140
31177
  "snapshot.getSnapshot": {
31141
31178
  capName: "snapshot",
31142
31179
  capScope: "device",
@@ -33734,6 +33771,11 @@ Object.freeze({
33734
33771
  form: "single",
33735
33772
  optional: false
33736
33773
  }],
33774
+ "snapshot.getDebugState": [{
33775
+ name: "deviceId",
33776
+ form: "single",
33777
+ optional: false
33778
+ }],
33737
33779
  "snapshot.getSnapshot": [{
33738
33780
  name: "deviceId",
33739
33781
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-export-hap",
3
- "version": "1.2.29",
3
+ "version": "1.2.31",
4
4
  "description": "HomeKit (HAP) exporter for CamStack devices. Publishes each exposed device as its own HomeKit accessory: cameras and doorbells with SRTP streaming, HomeKit Secure Video, motion, two-way audio, PTZ and battery; switches, lights, locks and sensors through a capability→service table.",
5
5
  "keywords": [
6
6
  "camstack",