@camstack/addon-mqtt-broker 1.2.92 → 1.2.93

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.
@@ -19644,7 +19644,17 @@ var EventDensityBucketSchema = object({
19644
19644
  bucketStart: number(),
19645
19645
  motion: number().int(),
19646
19646
  object: number().int(),
19647
- audio: number().int()
19647
+ audio: number().int(),
19648
+ /**
19649
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19650
+ * as opposed to `audio`, which is their COUNT (D431).
19651
+ *
19652
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19653
+ * measured", which is not the same claim as silence, and a lane that cannot
19654
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19655
+ * the count-on-a-level-meter did.
19656
+ */
19657
+ audioDbfs: number().optional()
19648
19658
  });
19649
19659
  /**
19650
19660
  * One camera's row in a `getEventDensityBatch` answer.
@@ -27811,7 +27821,23 @@ var RecordingRangeSchema = object({
27811
27821
  });
27812
27822
  var RecordingAvailabilitySchema = object({
27813
27823
  deviceId: number(),
27814
- ranges: array(RecordingRangeSchema)
27824
+ ranges: array(RecordingRangeSchema),
27825
+ /**
27826
+ * Every profile this camera has footage in — not only the one `ranges`
27827
+ * describes (D433).
27828
+ *
27829
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
27830
+ * and enumerating all of them triples the directory reads for a bar that
27831
+ * would look identical. But the answer used to say nothing about that, so a
27832
+ * caller asking "what can I export?" read the single preferred profile as
27833
+ * the only one that exists — on this deployment every camera records `high`
27834
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
27835
+ * UI could not see it.
27836
+ *
27837
+ * Cheap: it is the same shallow directory read the profile CHOICE already
27838
+ * makes. Ask for a specific profile's ranges with the `profile` input.
27839
+ */
27840
+ profilesWithFootage: array(string())
27815
27841
  });
27816
27842
  var RecordingDaysSchema = object({
27817
27843
  deviceId: number(),
@@ -27837,7 +27863,11 @@ var RecordingDaysSchema = object({
27837
27863
  var RecordingAvailabilityForDeviceSchema = object({
27838
27864
  deviceId: number(),
27839
27865
  read: _enum(["read", "unreadable"]),
27840
- ranges: array(RecordingRangeSchema).readonly()
27866
+ ranges: array(RecordingRangeSchema).readonly(),
27867
+ /** Same field, same meaning, as the singular answer (D433). A row that
27868
+ * dropped it would tell a grid caller the archive holds one profile.
27869
+ * Empty on an `'unreadable'` row: nobody looked. */
27870
+ profilesWithFootage: array(string()).readonly()
27841
27871
  });
27842
27872
  /**
27843
27873
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -28127,7 +28157,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
28127
28157
  method(object({
28128
28158
  deviceId: number(),
28129
28159
  fromMs: number(),
28130
- toMs: number()
28160
+ toMs: number(),
28161
+ /**
28162
+ * Answer for THIS profile instead of the preferred one (D433). Absent
28163
+ * keeps the timeline's behaviour — one bar, one profile, one set of
28164
+ * reads. `profilesWithFootage` on the answer says what may be asked
28165
+ * for.
28166
+ */
28167
+ profile: string().optional()
28131
28168
  }), RecordingAvailabilitySchema, {
28132
28169
  kind: "query",
28133
28170
  auth: "protected"
@@ -19639,7 +19639,17 @@ var EventDensityBucketSchema = object({
19639
19639
  bucketStart: number(),
19640
19640
  motion: number().int(),
19641
19641
  object: number().int(),
19642
- audio: number().int()
19642
+ audio: number().int(),
19643
+ /**
19644
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19645
+ * as opposed to `audio`, which is their COUNT (D431).
19646
+ *
19647
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19648
+ * measured", which is not the same claim as silence, and a lane that cannot
19649
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19650
+ * the count-on-a-level-meter did.
19651
+ */
19652
+ audioDbfs: number().optional()
19643
19653
  });
19644
19654
  /**
19645
19655
  * One camera's row in a `getEventDensityBatch` answer.
@@ -27806,7 +27816,23 @@ var RecordingRangeSchema = object({
27806
27816
  });
27807
27817
  var RecordingAvailabilitySchema = object({
27808
27818
  deviceId: number(),
27809
- ranges: array(RecordingRangeSchema)
27819
+ ranges: array(RecordingRangeSchema),
27820
+ /**
27821
+ * Every profile this camera has footage in — not only the one `ranges`
27822
+ * describes (D433).
27823
+ *
27824
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
27825
+ * and enumerating all of them triples the directory reads for a bar that
27826
+ * would look identical. But the answer used to say nothing about that, so a
27827
+ * caller asking "what can I export?" read the single preferred profile as
27828
+ * the only one that exists — on this deployment every camera records `high`
27829
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
27830
+ * UI could not see it.
27831
+ *
27832
+ * Cheap: it is the same shallow directory read the profile CHOICE already
27833
+ * makes. Ask for a specific profile's ranges with the `profile` input.
27834
+ */
27835
+ profilesWithFootage: array(string())
27810
27836
  });
27811
27837
  var RecordingDaysSchema = object({
27812
27838
  deviceId: number(),
@@ -27832,7 +27858,11 @@ var RecordingDaysSchema = object({
27832
27858
  var RecordingAvailabilityForDeviceSchema = object({
27833
27859
  deviceId: number(),
27834
27860
  read: _enum(["read", "unreadable"]),
27835
- ranges: array(RecordingRangeSchema).readonly()
27861
+ ranges: array(RecordingRangeSchema).readonly(),
27862
+ /** Same field, same meaning, as the singular answer (D433). A row that
27863
+ * dropped it would tell a grid caller the archive holds one profile.
27864
+ * Empty on an `'unreadable'` row: nobody looked. */
27865
+ profilesWithFootage: array(string()).readonly()
27836
27866
  });
27837
27867
  /**
27838
27868
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -28122,7 +28152,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
28122
28152
  method(object({
28123
28153
  deviceId: number(),
28124
28154
  fromMs: number(),
28125
- toMs: number()
28155
+ toMs: number(),
28156
+ /**
28157
+ * Answer for THIS profile instead of the preferred one (D433). Absent
28158
+ * keeps the timeline's behaviour — one bar, one profile, one set of
28159
+ * reads. `profilesWithFootage` on the answer says what may be asked
28160
+ * for.
28161
+ */
28162
+ profile: string().optional()
28126
28163
  }), RecordingAvailabilitySchema, {
28127
28164
  kind: "query",
28128
28165
  auth: "protected"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-mqtt-broker",
3
- "version": "1.2.92",
3
+ "version": "1.2.93",
4
4
  "description": "MQTT broker registry addon for CamStack — manages external broker entries + an optional embedded aedes broker. Consumers spin up their own `mqtt.js` clients via the `mqtt-broker` cap.",
5
5
  "keywords": [
6
6
  "camstack",