@camstack/addon-provider-gree 0.2.91 → 0.2.92

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
@@ -19918,7 +19918,17 @@ var EventDensityBucketSchema = object({
19918
19918
  bucketStart: number(),
19919
19919
  motion: number().int(),
19920
19920
  object: number().int(),
19921
- audio: number().int()
19921
+ audio: number().int(),
19922
+ /**
19923
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19924
+ * as opposed to `audio`, which is their COUNT (D431).
19925
+ *
19926
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19927
+ * measured", which is not the same claim as silence, and a lane that cannot
19928
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19929
+ * the count-on-a-level-meter did.
19930
+ */
19931
+ audioDbfs: number().optional()
19922
19932
  });
19923
19933
  /**
19924
19934
  * One camera's row in a `getEventDensityBatch` answer.
@@ -29933,7 +29943,23 @@ var RecordingRangeSchema = object({
29933
29943
  });
29934
29944
  var RecordingAvailabilitySchema = object({
29935
29945
  deviceId: number(),
29936
- ranges: array(RecordingRangeSchema)
29946
+ ranges: array(RecordingRangeSchema),
29947
+ /**
29948
+ * Every profile this camera has footage in — not only the one `ranges`
29949
+ * describes (D433).
29950
+ *
29951
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
29952
+ * and enumerating all of them triples the directory reads for a bar that
29953
+ * would look identical. But the answer used to say nothing about that, so a
29954
+ * caller asking "what can I export?" read the single preferred profile as
29955
+ * the only one that exists — on this deployment every camera records `high`
29956
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
29957
+ * UI could not see it.
29958
+ *
29959
+ * Cheap: it is the same shallow directory read the profile CHOICE already
29960
+ * makes. Ask for a specific profile's ranges with the `profile` input.
29961
+ */
29962
+ profilesWithFootage: array(string())
29937
29963
  });
29938
29964
  var RecordingDaysSchema = object({
29939
29965
  deviceId: number(),
@@ -29959,7 +29985,11 @@ var RecordingDaysSchema = object({
29959
29985
  var RecordingAvailabilityForDeviceSchema = object({
29960
29986
  deviceId: number(),
29961
29987
  read: _enum(["read", "unreadable"]),
29962
- ranges: array(RecordingRangeSchema).readonly()
29988
+ ranges: array(RecordingRangeSchema).readonly(),
29989
+ /** Same field, same meaning, as the singular answer (D433). A row that
29990
+ * dropped it would tell a grid caller the archive holds one profile.
29991
+ * Empty on an `'unreadable'` row: nobody looked. */
29992
+ profilesWithFootage: array(string()).readonly()
29963
29993
  });
29964
29994
  /**
29965
29995
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -30249,7 +30279,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
30249
30279
  method(object({
30250
30280
  deviceId: number(),
30251
30281
  fromMs: number(),
30252
- toMs: number()
30282
+ toMs: number(),
30283
+ /**
30284
+ * Answer for THIS profile instead of the preferred one (D433). Absent
30285
+ * keeps the timeline's behaviour — one bar, one profile, one set of
30286
+ * reads. `profilesWithFootage` on the answer says what may be asked
30287
+ * for.
30288
+ */
30289
+ profile: string().optional()
30253
30290
  }), RecordingAvailabilitySchema, {
30254
30291
  kind: "query",
30255
30292
  auth: "protected"
package/dist/addon.mjs CHANGED
@@ -19917,7 +19917,17 @@ var EventDensityBucketSchema = object({
19917
19917
  bucketStart: number(),
19918
19918
  motion: number().int(),
19919
19919
  object: number().int(),
19920
- audio: number().int()
19920
+ audio: number().int(),
19921
+ /**
19922
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19923
+ * as opposed to `audio`, which is their COUNT (D431).
19924
+ *
19925
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19926
+ * measured", which is not the same claim as silence, and a lane that cannot
19927
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19928
+ * the count-on-a-level-meter did.
19929
+ */
19930
+ audioDbfs: number().optional()
19921
19931
  });
19922
19932
  /**
19923
19933
  * One camera's row in a `getEventDensityBatch` answer.
@@ -29932,7 +29942,23 @@ var RecordingRangeSchema = object({
29932
29942
  });
29933
29943
  var RecordingAvailabilitySchema = object({
29934
29944
  deviceId: number(),
29935
- ranges: array(RecordingRangeSchema)
29945
+ ranges: array(RecordingRangeSchema),
29946
+ /**
29947
+ * Every profile this camera has footage in — not only the one `ranges`
29948
+ * describes (D433).
29949
+ *
29950
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
29951
+ * and enumerating all of them triples the directory reads for a bar that
29952
+ * would look identical. But the answer used to say nothing about that, so a
29953
+ * caller asking "what can I export?" read the single preferred profile as
29954
+ * the only one that exists — on this deployment every camera records `high`
29955
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
29956
+ * UI could not see it.
29957
+ *
29958
+ * Cheap: it is the same shallow directory read the profile CHOICE already
29959
+ * makes. Ask for a specific profile's ranges with the `profile` input.
29960
+ */
29961
+ profilesWithFootage: array(string())
29936
29962
  });
29937
29963
  var RecordingDaysSchema = object({
29938
29964
  deviceId: number(),
@@ -29958,7 +29984,11 @@ var RecordingDaysSchema = object({
29958
29984
  var RecordingAvailabilityForDeviceSchema = object({
29959
29985
  deviceId: number(),
29960
29986
  read: _enum(["read", "unreadable"]),
29961
- ranges: array(RecordingRangeSchema).readonly()
29987
+ ranges: array(RecordingRangeSchema).readonly(),
29988
+ /** Same field, same meaning, as the singular answer (D433). A row that
29989
+ * dropped it would tell a grid caller the archive holds one profile.
29990
+ * Empty on an `'unreadable'` row: nobody looked. */
29991
+ profilesWithFootage: array(string()).readonly()
29962
29992
  });
29963
29993
  /**
29964
29994
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -30248,7 +30278,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
30248
30278
  method(object({
30249
30279
  deviceId: number(),
30250
30280
  fromMs: number(),
30251
- toMs: number()
30281
+ toMs: number(),
30282
+ /**
30283
+ * Answer for THIS profile instead of the preferred one (D433). Absent
30284
+ * keeps the timeline's behaviour — one bar, one profile, one set of
30285
+ * reads. `profilesWithFootage` on the answer says what may be asked
30286
+ * for.
30287
+ */
30288
+ profile: string().optional()
30252
30289
  }), RecordingAvailabilitySchema, {
30253
30290
  kind: "query",
30254
30291
  auth: "protected"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-gree",
3
- "version": "0.2.91",
3
+ "version": "0.2.92",
4
4
  "description": "Gree air-conditioner device-provider addon for CamStack — wraps the @apocaliss92/nodegree local-UDP client (LAN discovery + AES control), exposing climate-control and fan-control",
5
5
  "keywords": [
6
6
  "camstack",