@camstack/addon-export-ha-mqtt 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.
@@ -11374,7 +11374,21 @@ var NativeCropResultSchema = object({
11374
11374
  /** Packed rgb (24-bit) pixels of the crop. */
11375
11375
  bytes: _instanceof(Uint8Array),
11376
11376
  width: number$1().int().positive(),
11377
- height: number$1().int().positive()
11377
+ height: number$1().int().positive(),
11378
+ /**
11379
+ * Which source served this crop, so a quality-sensitive consumer (the native
11380
+ * `keyFrame`) can reject a degraded fallback:
11381
+ * - `native` — cut from the decode worker's retained NATIVE surface (the
11382
+ * quality path).
11383
+ * - `ram-fullframe` — the native surface MISSED but the request was full-frame,
11384
+ * so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
11385
+ * the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
11386
+ *
11387
+ * OPTIONAL: a pre-tier runner (version skew) omits it — an ABSENT `tier` MUST be
11388
+ * treated as `native` (accepted) by every consumer so mixed-version clusters
11389
+ * keep the pre-tier behaviour. An ROI miss returns `null` (no tier at all).
11390
+ */
11391
+ tier: _enum(["native", "ram-fullframe"]).optional()
11378
11392
  });
11379
11393
  /** Parent detection context passed to `runDetailSubtree` — the crop's
11380
11394
  * originating detection, in FRAME-space coordinates. Reuses
@@ -14730,7 +14744,8 @@ var LinkedDeviceSchema = object({
14730
14744
  deviceId: number$1(),
14731
14745
  name: string(),
14732
14746
  location: string().nullable(),
14733
- features: array(string())
14747
+ features: array(string()),
14748
+ producesTrackedEvents: boolean().optional()
14734
14749
  });
14735
14750
  var SavedDeviceRowSchema = object({
14736
14751
  /** Numeric id reserved at allocateDeviceId time. */
@@ -16360,6 +16375,7 @@ var TrackSchema = object({
16360
16375
  deviceId: number$1(),
16361
16376
  className: string(),
16362
16377
  label: string().optional(),
16378
+ producingDeviceName: string().optional(),
16363
16379
  /** Track provenance. Absent ⇒ `pipeline` (legacy rows). */
16364
16380
  source: TrackSourceSchema.optional(),
16365
16381
  firstSeen: number$1(),
@@ -16497,7 +16513,8 @@ var MediaFileKindEnum = _enum([
16497
16513
  "fullFrameBoxed",
16498
16514
  "faceCrop",
16499
16515
  "plateCrop",
16500
- "keyFrame"
16516
+ "keyFrame",
16517
+ "keyFrameSmall"
16501
16518
  ]);
16502
16519
  var MediaFileSchema = object({
16503
16520
  key: string(),
@@ -11372,7 +11372,21 @@ var NativeCropResultSchema = object({
11372
11372
  /** Packed rgb (24-bit) pixels of the crop. */
11373
11373
  bytes: _instanceof(Uint8Array),
11374
11374
  width: number$1().int().positive(),
11375
- height: number$1().int().positive()
11375
+ height: number$1().int().positive(),
11376
+ /**
11377
+ * Which source served this crop, so a quality-sensitive consumer (the native
11378
+ * `keyFrame`) can reject a degraded fallback:
11379
+ * - `native` — cut from the decode worker's retained NATIVE surface (the
11380
+ * quality path).
11381
+ * - `ram-fullframe` — the native surface MISSED but the request was full-frame,
11382
+ * so the ≤640 RAM `RetainedFrameStore` served it (honest lower-res; legit for
11383
+ * the blank-frame guard / 640-snapshot resolve, NOT for the clean keyFrame).
11384
+ *
11385
+ * OPTIONAL: a pre-tier runner (version skew) omits it — an ABSENT `tier` MUST be
11386
+ * treated as `native` (accepted) by every consumer so mixed-version clusters
11387
+ * keep the pre-tier behaviour. An ROI miss returns `null` (no tier at all).
11388
+ */
11389
+ tier: _enum(["native", "ram-fullframe"]).optional()
11376
11390
  });
11377
11391
  /** Parent detection context passed to `runDetailSubtree` — the crop's
11378
11392
  * originating detection, in FRAME-space coordinates. Reuses
@@ -14728,7 +14742,8 @@ var LinkedDeviceSchema = object({
14728
14742
  deviceId: number$1(),
14729
14743
  name: string(),
14730
14744
  location: string().nullable(),
14731
- features: array(string())
14745
+ features: array(string()),
14746
+ producesTrackedEvents: boolean().optional()
14732
14747
  });
14733
14748
  var SavedDeviceRowSchema = object({
14734
14749
  /** Numeric id reserved at allocateDeviceId time. */
@@ -16358,6 +16373,7 @@ var TrackSchema = object({
16358
16373
  deviceId: number$1(),
16359
16374
  className: string(),
16360
16375
  label: string().optional(),
16376
+ producingDeviceName: string().optional(),
16361
16377
  /** Track provenance. Absent ⇒ `pipeline` (legacy rows). */
16362
16378
  source: TrackSourceSchema.optional(),
16363
16379
  firstSeen: number$1(),
@@ -16495,7 +16511,8 @@ var MediaFileKindEnum = _enum([
16495
16511
  "fullFrameBoxed",
16496
16512
  "faceCrop",
16497
16513
  "plateCrop",
16498
- "keyFrame"
16514
+ "keyFrame",
16515
+ "keyFrameSmall"
16499
16516
  ]);
16500
16517
  var MediaFileSchema = object({
16501
16518
  key: string(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-export-ha-mqtt",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "HomeAssistant MQTT discovery exporter for CamStack devices. Publishes discovery topics so HA auto-creates entities for exposed cameras/switches/intercoms/sensors.",
5
5
  "keywords": [
6
6
  "camstack",