@camstack/addon-export-hap 1.2.0 → 1.2.1

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.
@@ -11413,7 +11413,21 @@ var NativeCropResultSchema = object({
11413
11413
  /** Packed rgb (24-bit) pixels of the crop. */
11414
11414
  bytes: _instanceof(Uint8Array),
11415
11415
  width: number().int().positive(),
11416
- height: number().int().positive()
11416
+ height: number().int().positive(),
11417
+ /**
11418
+ * Which source served this crop, so a quality-sensitive consumer (the native
11419
+ * `keyFrame`) can reject a degraded fallback:
11420
+ * - `native` — cut from the decode worker's retained NATIVE surface (the
11421
+ * quality path).
11422
+ * - `ram-fullframe` — the native surface MISSED but the request was full-frame,
11423
+ * so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
11424
+ * the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
11425
+ *
11426
+ * OPTIONAL: a pre-tier runner (version skew) omits it — an ABSENT `tier` MUST be
11427
+ * treated as `native` (accepted) by every consumer so mixed-version clusters
11428
+ * keep the pre-tier behaviour. An ROI miss returns `null` (no tier at all).
11429
+ */
11430
+ tier: _enum(["native", "ram-fullframe"]).optional()
11417
11431
  });
11418
11432
  /** Parent detection context passed to `runDetailSubtree` — the crop's
11419
11433
  * originating detection, in FRAME-space coordinates. Reuses
@@ -14769,7 +14783,8 @@ var LinkedDeviceSchema = object({
14769
14783
  deviceId: number(),
14770
14784
  name: string(),
14771
14785
  location: string().nullable(),
14772
- features: array(string())
14786
+ features: array(string()),
14787
+ producesTrackedEvents: boolean().optional()
14773
14788
  });
14774
14789
  var SavedDeviceRowSchema = object({
14775
14790
  /** Numeric id reserved at allocateDeviceId time. */
@@ -16399,6 +16414,7 @@ var TrackSchema = object({
16399
16414
  deviceId: number(),
16400
16415
  className: string(),
16401
16416
  label: string().optional(),
16417
+ producingDeviceName: string().optional(),
16402
16418
  /** Track provenance. Absent ⇒ `pipeline` (legacy rows). */
16403
16419
  source: TrackSourceSchema.optional(),
16404
16420
  firstSeen: number(),
@@ -16536,7 +16552,8 @@ var MediaFileKindEnum = _enum([
16536
16552
  "fullFrameBoxed",
16537
16553
  "faceCrop",
16538
16554
  "plateCrop",
16539
- "keyFrame"
16555
+ "keyFrame",
16556
+ "keyFrameSmall"
16540
16557
  ]);
16541
16558
  var MediaFileSchema = object({
16542
16559
  key: string(),
@@ -11388,7 +11388,21 @@ var NativeCropResultSchema = object({
11388
11388
  /** Packed rgb (24-bit) pixels of the crop. */
11389
11389
  bytes: _instanceof(Uint8Array),
11390
11390
  width: number().int().positive(),
11391
- height: number().int().positive()
11391
+ height: number().int().positive(),
11392
+ /**
11393
+ * Which source served this crop, so a quality-sensitive consumer (the native
11394
+ * `keyFrame`) can reject a degraded fallback:
11395
+ * - `native` — cut from the decode worker's retained NATIVE surface (the
11396
+ * quality path).
11397
+ * - `ram-fullframe` — the native surface MISSED but the request was full-frame,
11398
+ * so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
11399
+ * the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
11400
+ *
11401
+ * OPTIONAL: a pre-tier runner (version skew) omits it — an ABSENT `tier` MUST be
11402
+ * treated as `native` (accepted) by every consumer so mixed-version clusters
11403
+ * keep the pre-tier behaviour. An ROI miss returns `null` (no tier at all).
11404
+ */
11405
+ tier: _enum(["native", "ram-fullframe"]).optional()
11392
11406
  });
11393
11407
  /** Parent detection context passed to `runDetailSubtree` — the crop's
11394
11408
  * originating detection, in FRAME-space coordinates. Reuses
@@ -14744,7 +14758,8 @@ var LinkedDeviceSchema = object({
14744
14758
  deviceId: number(),
14745
14759
  name: string(),
14746
14760
  location: string().nullable(),
14747
- features: array(string())
14761
+ features: array(string()),
14762
+ producesTrackedEvents: boolean().optional()
14748
14763
  });
14749
14764
  var SavedDeviceRowSchema = object({
14750
14765
  /** Numeric id reserved at allocateDeviceId time. */
@@ -16374,6 +16389,7 @@ var TrackSchema = object({
16374
16389
  deviceId: number(),
16375
16390
  className: string(),
16376
16391
  label: string().optional(),
16392
+ producingDeviceName: string().optional(),
16377
16393
  /** Track provenance. Absent ⇒ `pipeline` (legacy rows). */
16378
16394
  source: TrackSourceSchema.optional(),
16379
16395
  firstSeen: number(),
@@ -16511,7 +16527,8 @@ var MediaFileKindEnum = _enum([
16511
16527
  "fullFrameBoxed",
16512
16528
  "faceCrop",
16513
16529
  "plateCrop",
16514
- "keyFrame"
16530
+ "keyFrame",
16531
+ "keyFrameSmall"
16515
16532
  ]);
16516
16533
  var MediaFileSchema = object({
16517
16534
  key: string(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-export-hap",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "HomeKit (HAP) bridge exporter for CamStack devices. Publishes a bridged accessory per exposed device — MotionSensor in this MVP; Camera/Doorbell/Switch/Light follow.",
5
5
  "keywords": [
6
6
  "camstack",