@camstack/addon-terminal 0.1.24 → 0.1.26

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
@@ -20413,6 +20413,14 @@ var ClipSchema = object({
20413
20413
  endMs: number()
20414
20414
  }),
20415
20415
  /**
20416
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20417
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20418
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20419
+ * did not. Absent (never empty) when the visit attached no classified object
20420
+ * event, so a motion/audio-only visit keeps its kind label.
20421
+ */
20422
+ labels: array(string()).max(3).optional(),
20423
+ /**
20416
20424
  * Lazy thumbnail URL, never inlined.
20417
20425
  *
20418
20426
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -26435,9 +26443,21 @@ var RecordingLocationUsageSchema = object({
26435
26443
  * previously rendered as two identical "disks" with a nonsensical used
26436
26444
  * split — hydrate attribution across aliases is arbitrary by nature. */
26437
26445
  locationIds: array(string()).optional(),
26438
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
26446
+ /**
26447
+ * Filesystem root of the physical volume this row accounts — the only
26448
+ * operator-legible identity when a location has no `displayName` yet, and
26449
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
26450
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
26451
+ * it, and this schema must keep validating that older provider's payload.
26452
+ */
26453
+ root: string().optional(),
26454
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
26455
+ * the footage's SHARE of the volume, not how full the volume is — the disk
26456
+ * also holds everything that is not recordings. Volume fill is
26457
+ * `(totalBytes - availableBytes) / totalBytes`. */
26439
26458
  usedBytes: number(),
26440
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
26459
+ /** Free bytes on the location's volume; null when capacity is unknown
26460
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
26441
26461
  availableBytes: number().nullable(),
26442
26462
  /** Total bytes of the location's volume; null when unknown. */
26443
26463
  totalBytes: number().nullable()
@@ -26449,7 +26469,15 @@ var RecordingStorageUsageSchema = object({
26449
26469
  nodeId: string(),
26450
26470
  totalUsedBytes: number(),
26451
26471
  devices: array(RecordingDeviceUsageSchema),
26452
- locations: array(RecordingLocationUsageSchema)
26472
+ /**
26473
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
26474
+ * of the payload without it: the hub serves this method through a BAKED
26475
+ * router, so a hub whose framework train predates a change to this array
26476
+ * strips it out of an answer a newer recorder happily produced. A UI that
26477
+ * dereferences it unconditionally crashes the whole Storage page over a
26478
+ * missing disk bar.
26479
+ */
26480
+ locations: array(RecordingLocationUsageSchema).optional()
26453
26481
  });
26454
26482
  /**
26455
26483
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37232,8 +37260,14 @@ Object.freeze({
37232
37260
  "network-access": "ingress",
37233
37261
  "smtp-provider": "email"
37234
37262
  });
37263
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37264
+ var NC_AUDIO_DEFAULTS = {
37265
+ hitPercent: 60,
37266
+ samplingSeconds: 10
37267
+ };
37235
37268
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37236
37269
  new Set(["devices", "classes"]);
37270
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37237
37271
  /**
37238
37272
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37239
37273
  *
package/dist/addon.mjs CHANGED
@@ -20390,6 +20390,14 @@ var ClipSchema = object({
20390
20390
  endMs: number()
20391
20391
  }),
20392
20392
  /**
20393
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20394
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20395
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20396
+ * did not. Absent (never empty) when the visit attached no classified object
20397
+ * event, so a motion/audio-only visit keeps its kind label.
20398
+ */
20399
+ labels: array(string()).max(3).optional(),
20400
+ /**
20393
20401
  * Lazy thumbnail URL, never inlined.
20394
20402
  *
20395
20403
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -26412,9 +26420,21 @@ var RecordingLocationUsageSchema = object({
26412
26420
  * previously rendered as two identical "disks" with a nonsensical used
26413
26421
  * split — hydrate attribution across aliases is arbitrary by nature. */
26414
26422
  locationIds: array(string()).optional(),
26415
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
26423
+ /**
26424
+ * Filesystem root of the physical volume this row accounts — the only
26425
+ * operator-legible identity when a location has no `displayName` yet, and
26426
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
26427
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
26428
+ * it, and this schema must keep validating that older provider's payload.
26429
+ */
26430
+ root: string().optional(),
26431
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
26432
+ * the footage's SHARE of the volume, not how full the volume is — the disk
26433
+ * also holds everything that is not recordings. Volume fill is
26434
+ * `(totalBytes - availableBytes) / totalBytes`. */
26416
26435
  usedBytes: number(),
26417
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
26436
+ /** Free bytes on the location's volume; null when capacity is unknown
26437
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
26418
26438
  availableBytes: number().nullable(),
26419
26439
  /** Total bytes of the location's volume; null when unknown. */
26420
26440
  totalBytes: number().nullable()
@@ -26426,7 +26446,15 @@ var RecordingStorageUsageSchema = object({
26426
26446
  nodeId: string(),
26427
26447
  totalUsedBytes: number(),
26428
26448
  devices: array(RecordingDeviceUsageSchema),
26429
- locations: array(RecordingLocationUsageSchema)
26449
+ /**
26450
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
26451
+ * of the payload without it: the hub serves this method through a BAKED
26452
+ * router, so a hub whose framework train predates a change to this array
26453
+ * strips it out of an answer a newer recorder happily produced. A UI that
26454
+ * dereferences it unconditionally crashes the whole Storage page over a
26455
+ * missing disk bar.
26456
+ */
26457
+ locations: array(RecordingLocationUsageSchema).optional()
26430
26458
  });
26431
26459
  /**
26432
26460
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37209,8 +37237,14 @@ Object.freeze({
37209
37237
  "network-access": "ingress",
37210
37238
  "smtp-provider": "email"
37211
37239
  });
37240
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37241
+ var NC_AUDIO_DEFAULTS = {
37242
+ hitPercent: 60,
37243
+ samplingSeconds: 10
37244
+ };
37212
37245
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37213
37246
  new Set(["devices", "classes"]);
37247
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37214
37248
  /**
37215
37249
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37216
37250
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-terminal",
3
- "version": "0.1.24",
3
+ "version": "0.1.26",
4
4
  "description": "Interactive terminal sessions (pty + xterm) as a CamStack addon",
5
5
  "keywords": [
6
6
  "camstack",