@camstack/addon-provider-rtsp 1.2.83 → 1.2.84

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
@@ -18802,11 +18802,30 @@ var SensorEventSchema = object({
18802
18802
  value: record(string(), unknown()).nullable(),
18803
18803
  timestamp: number()
18804
18804
  });
18805
+ /**
18806
+ * One stored sighting on a track's trajectory.
18807
+ *
18808
+ * The array these live in is returned in TIME order (D399) — it is APPENDED in
18809
+ * arrival order, and the two detector passes interleave, so a consumer must not
18810
+ * assume the two are the same on a row written by an older build.
18811
+ */
18805
18812
  var TrackPositionSchema = object({
18806
18813
  x: number(),
18807
18814
  y: number(),
18808
18815
  timestamp: number(),
18809
- bbox: BoundingBoxSchema
18816
+ bbox: BoundingBoxSchema,
18817
+ /**
18818
+ * Which detector pass measured this box (D399): `frame` is the full-frame
18819
+ * pass on the analysis raster, `recovery` is the native-resolution
18820
+ * small-subject second pass (D377/D378). Both write into one array, and until
18821
+ * this field existed the only way to tell them apart was that full-frame boxes
18822
+ * are exact multiples of 1.2 while recovery boxes are full-precision floats.
18823
+ * Absent on rows written before D399.
18824
+ */
18825
+ source: _enum(["frame", "recovery"]).optional(),
18826
+ /** Detection score of this box, so a position can be weighed and not only
18827
+ * plotted. Absent on rows written before D399. */
18828
+ score: number().optional()
18810
18829
  });
18811
18830
  var TrackSnapshotSchema = object({
18812
18831
  timestamp: number(),
@@ -19206,14 +19225,25 @@ var TrackSchema = object({
19206
19225
  */
19207
19226
  hasRider: boolean().optional(),
19208
19227
  /**
19209
- * WHY this track ended without a NATIVE best-shot tile
19210
- * ([D276](../decisions/adr-0276-a-stand-in-tile-is-provisional-and-a-close-says-why.md)) —
19228
+ * WHY this track ended without a NATIVE best-shot FRAME
19229
+ * ([D276](../decisions/adr-0276-a-stand-in-tile-is-provisional-and-a-close-says-why.md),
19230
+ * widened by [D400](../decisions/adr-0400-the-picture-is-judged-on-what-is-delivered.md)) —
19211
19231
  * a composed token line (`no-key-frame capture=keyframe:native-missx4`,
19212
- * `derive-returned-null tile=standin`, …) written at close and CLEARED by
19213
- * the late-keyFrame upgrade when a native tile lands after all. The
19214
- * operator-facing answer to "perché manca l'immagine?" on a track whose
19232
+ * `derive-returned-null tile=standin`,
19233
+ * `native-tile tile=native no-key-frame-at-close`, …) written at close and
19234
+ * CLEARED by the late-keyFrame upgrade when a native tile lands after all.
19235
+ * The operator-facing answer to "perché manca l'immagine?" on a track whose
19215
19236
  * tile is a face/plate stand-in, a raster crop, or an icon.
19216
19237
  *
19238
+ * **`no-key-frame-at-close` (D400).** The line used to be written ONLY when
19239
+ * the TILE ranked below native, so a track whose thumbnail landed natively
19240
+ * while its key frame missed carried no reason at all — three of the four
19241
+ * `MISSING_KEYFRAME` tracks in the 2026-09-07 operator audit were exactly
19242
+ * that shape, and their "niente ultimo" had no cause anywhere on the row.
19243
+ * The key frame is the head of a cascade (`keyFrame ⇒ keyFrameSmall ⇒ the
19244
+ * lastFrame copy source`), so its absence is now on this line whatever the
19245
+ * tile ended up being.
19246
+ *
19217
19247
  * **Absent ≠ "missed silently"**: a row written before the column, a hub
19218
19248
  * that predates the field, and every track whose tile landed native all
19219
19249
  * omit it. Render nothing when absent.
package/dist/addon.mjs CHANGED
@@ -18778,11 +18778,30 @@ var SensorEventSchema = object({
18778
18778
  value: record(string(), unknown()).nullable(),
18779
18779
  timestamp: number()
18780
18780
  });
18781
+ /**
18782
+ * One stored sighting on a track's trajectory.
18783
+ *
18784
+ * The array these live in is returned in TIME order (D399) — it is APPENDED in
18785
+ * arrival order, and the two detector passes interleave, so a consumer must not
18786
+ * assume the two are the same on a row written by an older build.
18787
+ */
18781
18788
  var TrackPositionSchema = object({
18782
18789
  x: number(),
18783
18790
  y: number(),
18784
18791
  timestamp: number(),
18785
- bbox: BoundingBoxSchema
18792
+ bbox: BoundingBoxSchema,
18793
+ /**
18794
+ * Which detector pass measured this box (D399): `frame` is the full-frame
18795
+ * pass on the analysis raster, `recovery` is the native-resolution
18796
+ * small-subject second pass (D377/D378). Both write into one array, and until
18797
+ * this field existed the only way to tell them apart was that full-frame boxes
18798
+ * are exact multiples of 1.2 while recovery boxes are full-precision floats.
18799
+ * Absent on rows written before D399.
18800
+ */
18801
+ source: _enum(["frame", "recovery"]).optional(),
18802
+ /** Detection score of this box, so a position can be weighed and not only
18803
+ * plotted. Absent on rows written before D399. */
18804
+ score: number().optional()
18786
18805
  });
18787
18806
  var TrackSnapshotSchema = object({
18788
18807
  timestamp: number(),
@@ -19182,14 +19201,25 @@ var TrackSchema = object({
19182
19201
  */
19183
19202
  hasRider: boolean().optional(),
19184
19203
  /**
19185
- * WHY this track ended without a NATIVE best-shot tile
19186
- * ([D276](../decisions/adr-0276-a-stand-in-tile-is-provisional-and-a-close-says-why.md)) —
19204
+ * WHY this track ended without a NATIVE best-shot FRAME
19205
+ * ([D276](../decisions/adr-0276-a-stand-in-tile-is-provisional-and-a-close-says-why.md),
19206
+ * widened by [D400](../decisions/adr-0400-the-picture-is-judged-on-what-is-delivered.md)) —
19187
19207
  * a composed token line (`no-key-frame capture=keyframe:native-missx4`,
19188
- * `derive-returned-null tile=standin`, …) written at close and CLEARED by
19189
- * the late-keyFrame upgrade when a native tile lands after all. The
19190
- * operator-facing answer to "perché manca l'immagine?" on a track whose
19208
+ * `derive-returned-null tile=standin`,
19209
+ * `native-tile tile=native no-key-frame-at-close`, …) written at close and
19210
+ * CLEARED by the late-keyFrame upgrade when a native tile lands after all.
19211
+ * The operator-facing answer to "perché manca l'immagine?" on a track whose
19191
19212
  * tile is a face/plate stand-in, a raster crop, or an icon.
19192
19213
  *
19214
+ * **`no-key-frame-at-close` (D400).** The line used to be written ONLY when
19215
+ * the TILE ranked below native, so a track whose thumbnail landed natively
19216
+ * while its key frame missed carried no reason at all — three of the four
19217
+ * `MISSING_KEYFRAME` tracks in the 2026-09-07 operator audit were exactly
19218
+ * that shape, and their "niente ultimo" had no cause anywhere on the row.
19219
+ * The key frame is the head of a cascade (`keyFrame ⇒ keyFrameSmall ⇒ the
19220
+ * lastFrame copy source`), so its absence is now on this line whatever the
19221
+ * tile ended up being.
19222
+ *
19193
19223
  * **Absent ≠ "missed silently"**: a row written before the column, a hub
19194
19224
  * that predates the field, and every track whose tile landed native all
19195
19225
  * omit it. Render nothing when absent.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rtsp",
3
- "version": "1.2.83",
3
+ "version": "1.2.84",
4
4
  "description": "Generic RTSP camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",