@camstack/addon-matter-broker 0.2.20 → 0.2.22

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
@@ -20302,6 +20302,14 @@ var ClipSchema = object({
20302
20302
  endMs: number()
20303
20303
  }),
20304
20304
  /**
20305
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20306
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20307
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20308
+ * did not. Absent (never empty) when the visit attached no classified object
20309
+ * event, so a motion/audio-only visit keeps its kind label.
20310
+ */
20311
+ labels: array(string$2()).max(3).optional(),
20312
+ /**
20305
20313
  * Lazy thumbnail URL, never inlined.
20306
20314
  *
20307
20315
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -26341,9 +26349,21 @@ var RecordingLocationUsageSchema = object({
26341
26349
  * previously rendered as two identical "disks" with a nonsensical used
26342
26350
  * split — hydrate attribution across aliases is arbitrary by nature. */
26343
26351
  locationIds: array(string$2()).optional(),
26344
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
26352
+ /**
26353
+ * Filesystem root of the physical volume this row accounts — the only
26354
+ * operator-legible identity when a location has no `displayName` yet, and
26355
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
26356
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
26357
+ * it, and this schema must keep validating that older provider's payload.
26358
+ */
26359
+ root: string$2().optional(),
26360
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
26361
+ * the footage's SHARE of the volume, not how full the volume is — the disk
26362
+ * also holds everything that is not recordings. Volume fill is
26363
+ * `(totalBytes - availableBytes) / totalBytes`. */
26345
26364
  usedBytes: number(),
26346
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
26365
+ /** Free bytes on the location's volume; null when capacity is unknown
26366
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
26347
26367
  availableBytes: number().nullable(),
26348
26368
  /** Total bytes of the location's volume; null when unknown. */
26349
26369
  totalBytes: number().nullable()
@@ -26355,7 +26375,15 @@ var RecordingStorageUsageSchema = object({
26355
26375
  nodeId: string$2(),
26356
26376
  totalUsedBytes: number(),
26357
26377
  devices: array(RecordingDeviceUsageSchema),
26358
- locations: array(RecordingLocationUsageSchema)
26378
+ /**
26379
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
26380
+ * of the payload without it: the hub serves this method through a BAKED
26381
+ * router, so a hub whose framework train predates a change to this array
26382
+ * strips it out of an answer a newer recorder happily produced. A UI that
26383
+ * dereferences it unconditionally crashes the whole Storage page over a
26384
+ * missing disk bar.
26385
+ */
26386
+ locations: array(RecordingLocationUsageSchema).optional()
26359
26387
  });
26360
26388
  /**
26361
26389
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37140,8 +37168,14 @@ Object.freeze({
37140
37168
  "network-access": "ingress",
37141
37169
  "smtp-provider": "email"
37142
37170
  });
37171
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37172
+ var NC_AUDIO_DEFAULTS = {
37173
+ hitPercent: 60,
37174
+ samplingSeconds: 10
37175
+ };
37143
37176
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37144
37177
  new Set(["devices", "classes"]);
37178
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37145
37179
  /**
37146
37180
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37147
37181
  *
package/dist/addon.mjs CHANGED
@@ -20300,6 +20300,14 @@ var ClipSchema = object({
20300
20300
  endMs: number()
20301
20301
  }),
20302
20302
  /**
20303
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20304
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20305
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20306
+ * did not. Absent (never empty) when the visit attached no classified object
20307
+ * event, so a motion/audio-only visit keeps its kind label.
20308
+ */
20309
+ labels: array(string$2()).max(3).optional(),
20310
+ /**
20303
20311
  * Lazy thumbnail URL, never inlined.
20304
20312
  *
20305
20313
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -26339,9 +26347,21 @@ var RecordingLocationUsageSchema = object({
26339
26347
  * previously rendered as two identical "disks" with a nonsensical used
26340
26348
  * split — hydrate attribution across aliases is arbitrary by nature. */
26341
26349
  locationIds: array(string$2()).optional(),
26342
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
26350
+ /**
26351
+ * Filesystem root of the physical volume this row accounts — the only
26352
+ * operator-legible identity when a location has no `displayName` yet, and
26353
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
26354
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
26355
+ * it, and this schema must keep validating that older provider's payload.
26356
+ */
26357
+ root: string$2().optional(),
26358
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
26359
+ * the footage's SHARE of the volume, not how full the volume is — the disk
26360
+ * also holds everything that is not recordings. Volume fill is
26361
+ * `(totalBytes - availableBytes) / totalBytes`. */
26343
26362
  usedBytes: number(),
26344
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
26363
+ /** Free bytes on the location's volume; null when capacity is unknown
26364
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
26345
26365
  availableBytes: number().nullable(),
26346
26366
  /** Total bytes of the location's volume; null when unknown. */
26347
26367
  totalBytes: number().nullable()
@@ -26353,7 +26373,15 @@ var RecordingStorageUsageSchema = object({
26353
26373
  nodeId: string$2(),
26354
26374
  totalUsedBytes: number(),
26355
26375
  devices: array(RecordingDeviceUsageSchema),
26356
- locations: array(RecordingLocationUsageSchema)
26376
+ /**
26377
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
26378
+ * of the payload without it: the hub serves this method through a BAKED
26379
+ * router, so a hub whose framework train predates a change to this array
26380
+ * strips it out of an answer a newer recorder happily produced. A UI that
26381
+ * dereferences it unconditionally crashes the whole Storage page over a
26382
+ * missing disk bar.
26383
+ */
26384
+ locations: array(RecordingLocationUsageSchema).optional()
26357
26385
  });
26358
26386
  /**
26359
26387
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37138,8 +37166,14 @@ Object.freeze({
37138
37166
  "network-access": "ingress",
37139
37167
  "smtp-provider": "email"
37140
37168
  });
37169
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37170
+ var NC_AUDIO_DEFAULTS = {
37171
+ hitPercent: 60,
37172
+ samplingSeconds: 10
37173
+ };
37141
37174
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37142
37175
  new Set(["devices", "classes"]);
37176
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37143
37177
  /**
37144
37178
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37145
37179
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-matter-broker",
3
- "version": "0.2.20",
3
+ "version": "0.2.22",
4
4
  "description": "Matter broker addon for CamStack — owns a Matter fabric (commissioning + the long-lived controller) via the matter.js controller and brokers commissioned Matter nodes into CamStack",
5
5
  "keywords": [
6
6
  "camstack",