@camstack/addon-post-analysis 1.2.248 → 1.2.250

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.
@@ -20694,13 +20694,26 @@ var TrackAudioLabelSchema = object({
20694
20694
  * - `audio` — an audio event on the camera itself that was anomalous for
20695
20695
  * THAT camera, loud, and heard while nothing visual was happening (D62).
20696
20696
  *
20697
+ * - `onboard` — the CAMERA's own firmware, paired with a decoded frame in
20698
+ * that frame's pixel space. A real root detector and a SPATIAL one: its
20699
+ * boxes are the same kind of fact `pipeline`'s are, produced by a different
20700
+ * detector.
20701
+ *
20702
+ * `onboard` was missing here while `DetectionSourceSchema` already had it, so
20703
+ * a persisted onboard track failed `safeParse` on read and came back with NO
20704
+ * source at all — which `isSpatialTrack` then admitted by accident, through the
20705
+ * `undefined` arm rather than by anybody's decision, and which `excludeSources`
20706
+ * could not name.
20707
+ *
20697
20708
  * The spatial subsystems (tracker association, occupancy count, re-id /
20698
20709
  * embedding, resurrection) MUST skip every synthetic source. Test for that
20699
- * with `isSpatialTrack`, which allow-lists `pipeline` — a `!== 'sensor'`
20700
- * check silently readmits every source added after it was written.
20710
+ * with `isSpatialTrack`, which allow-lists the spatial sources explicitly — a
20711
+ * `!== 'sensor'` check silently readmits every source added after it was
20712
+ * written.
20701
20713
  */
20702
20714
  var TrackSourceSchema = _enum([
20703
20715
  "pipeline",
20716
+ "onboard",
20704
20717
  "sensor",
20705
20718
  "audio"
20706
20719
  ]);
@@ -21288,6 +21301,7 @@ var MediaFileKindEnum = _enum([
21288
21301
  "keyFrame",
21289
21302
  "keyFrameSmall",
21290
21303
  "thumbnailSmall",
21304
+ "confirmationCrop",
21291
21305
  "sceneFrame"
21292
21306
  ]);
21293
21307
  /**
@@ -23433,13 +23447,39 @@ var MotionSourceEnum = _enum([
23433
23447
  */
23434
23448
  var MotionSourcesSchema = array(MotionSourceEnum);
23435
23449
  /**
23436
- * Which root detectors a camera runs. Deliberately the SAME vocabulary
23437
- * post-analysis already tags every detection with (`DetectionSource`) rather
23438
- * than a second spelling of the same two ideas — the value an operator picks
23439
- * here is the value that comes back on the track, the overlay and the debug
23440
- * row.
23450
+ * Which root detector a camera runs — EXACTLY ONE.
23451
+ *
23452
+ * Deliberately the SAME vocabulary post-analysis already tags every detection
23453
+ * with (`DetectionSource`) rather than a second spelling of the same two
23454
+ * ideas: the value an operator picks here is the value that comes back on the
23455
+ * track, the overlay and the debug row.
23456
+ *
23457
+ * ## Why one, and why it is still an array
23458
+ *
23459
+ * Two roots on one camera is a capability nobody asked for and the operator has
23460
+ * since ruled out. It was never free: both planes feed the SAME per-device
23461
+ * stationary registry, both can promote the same parked object, and the two
23462
+ * detectors disagree about the same box by construction — which is the
23463
+ * disagreement D505 had to arbitrate. Removing the case removes the arbitration.
23464
+ *
23465
+ * The ARRAY shape survives because the stored settings and the attach payload
23466
+ * already speak it on every camera of every fleet, and a cap input that
23467
+ * suddenly refuses a stored value makes the camera un-attachable — a fail-closed
23468
+ * in the one direction that costs an operator their cameras. So the wire stays
23469
+ * tolerant and the TYPE is exact: a longer list is truncated to its first
23470
+ * element rather than refused, and `max(1)` is what every consumer can then
23471
+ * rely on.
23472
+ *
23473
+ * AT MOST one, not exactly one. The EMPTY list is a legal, deliberate pick —
23474
+ * a camera an operator left with no root detector — and `planDetectionSources`
23475
+ * has always said so: inventing a root for them is how a default acts without
23476
+ * anybody choosing it. Tightening this to `length(1)` broke that, and the
23477
+ * suite caught it.
23478
+ *
23479
+ * Measured before tightening (2026-09-15, this fleet, 6 h of attaches): 3327
23480
+ * `["pipeline"]` and 2 `["onboard"]`. Not one camera had two.
23441
23481
  */
23442
- var DetectionSourcesSchema = array(DetectionSourceSchema);
23482
+ var DetectionSourcesSchema = preprocess((value) => Array.isArray(value) && value.length > 1 ? value.slice(0, 1) : value, array(DetectionSourceSchema).max(1));
23443
23483
  /**
23444
23484
  * Input shape for `pipeline-runner.reportMotion` cap method. Exported
23445
23485
  * so cap-side consumers (the orchestrator forward, the runner addon's
@@ -20663,13 +20663,26 @@ var TrackAudioLabelSchema = object({
20663
20663
  * - `audio` — an audio event on the camera itself that was anomalous for
20664
20664
  * THAT camera, loud, and heard while nothing visual was happening (D62).
20665
20665
  *
20666
+ * - `onboard` — the CAMERA's own firmware, paired with a decoded frame in
20667
+ * that frame's pixel space. A real root detector and a SPATIAL one: its
20668
+ * boxes are the same kind of fact `pipeline`'s are, produced by a different
20669
+ * detector.
20670
+ *
20671
+ * `onboard` was missing here while `DetectionSourceSchema` already had it, so
20672
+ * a persisted onboard track failed `safeParse` on read and came back with NO
20673
+ * source at all — which `isSpatialTrack` then admitted by accident, through the
20674
+ * `undefined` arm rather than by anybody's decision, and which `excludeSources`
20675
+ * could not name.
20676
+ *
20666
20677
  * The spatial subsystems (tracker association, occupancy count, re-id /
20667
20678
  * embedding, resurrection) MUST skip every synthetic source. Test for that
20668
- * with `isSpatialTrack`, which allow-lists `pipeline` — a `!== 'sensor'`
20669
- * check silently readmits every source added after it was written.
20679
+ * with `isSpatialTrack`, which allow-lists the spatial sources explicitly — a
20680
+ * `!== 'sensor'` check silently readmits every source added after it was
20681
+ * written.
20670
20682
  */
20671
20683
  var TrackSourceSchema = _enum([
20672
20684
  "pipeline",
20685
+ "onboard",
20673
20686
  "sensor",
20674
20687
  "audio"
20675
20688
  ]);
@@ -21257,6 +21270,7 @@ var MediaFileKindEnum = _enum([
21257
21270
  "keyFrame",
21258
21271
  "keyFrameSmall",
21259
21272
  "thumbnailSmall",
21273
+ "confirmationCrop",
21260
21274
  "sceneFrame"
21261
21275
  ]);
21262
21276
  /**
@@ -23402,13 +23416,39 @@ var MotionSourceEnum = _enum([
23402
23416
  */
23403
23417
  var MotionSourcesSchema = array(MotionSourceEnum);
23404
23418
  /**
23405
- * Which root detectors a camera runs. Deliberately the SAME vocabulary
23406
- * post-analysis already tags every detection with (`DetectionSource`) rather
23407
- * than a second spelling of the same two ideas — the value an operator picks
23408
- * here is the value that comes back on the track, the overlay and the debug
23409
- * row.
23419
+ * Which root detector a camera runs — EXACTLY ONE.
23420
+ *
23421
+ * Deliberately the SAME vocabulary post-analysis already tags every detection
23422
+ * with (`DetectionSource`) rather than a second spelling of the same two
23423
+ * ideas: the value an operator picks here is the value that comes back on the
23424
+ * track, the overlay and the debug row.
23425
+ *
23426
+ * ## Why one, and why it is still an array
23427
+ *
23428
+ * Two roots on one camera is a capability nobody asked for and the operator has
23429
+ * since ruled out. It was never free: both planes feed the SAME per-device
23430
+ * stationary registry, both can promote the same parked object, and the two
23431
+ * detectors disagree about the same box by construction — which is the
23432
+ * disagreement D505 had to arbitrate. Removing the case removes the arbitration.
23433
+ *
23434
+ * The ARRAY shape survives because the stored settings and the attach payload
23435
+ * already speak it on every camera of every fleet, and a cap input that
23436
+ * suddenly refuses a stored value makes the camera un-attachable — a fail-closed
23437
+ * in the one direction that costs an operator their cameras. So the wire stays
23438
+ * tolerant and the TYPE is exact: a longer list is truncated to its first
23439
+ * element rather than refused, and `max(1)` is what every consumer can then
23440
+ * rely on.
23441
+ *
23442
+ * AT MOST one, not exactly one. The EMPTY list is a legal, deliberate pick —
23443
+ * a camera an operator left with no root detector — and `planDetectionSources`
23444
+ * has always said so: inventing a root for them is how a default acts without
23445
+ * anybody choosing it. Tightening this to `length(1)` broke that, and the
23446
+ * suite caught it.
23447
+ *
23448
+ * Measured before tightening (2026-09-15, this fleet, 6 h of attaches): 3327
23449
+ * `["pipeline"]` and 2 `["onboard"]`. Not one camera had two.
23410
23450
  */
23411
- var DetectionSourcesSchema = array(DetectionSourceSchema);
23451
+ var DetectionSourcesSchema = preprocess((value) => Array.isArray(value) && value.length > 1 ? value.slice(0, 1) : value, array(DetectionSourceSchema).max(1));
23412
23452
  /**
23413
23453
  * Input shape for `pipeline-runner.reportMotion` cap method. Exported
23414
23454
  * so cap-side consumers (the orchestrator forward, the runner addon's
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-DmB50uQ-.js");
5
+ const require_dist = require("../dist-B8eT-EWR.js");
6
6
  let node_fs = require("node:fs");
7
7
  node_fs = require_dist.__toESM(node_fs);
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Et as parseProcStatus, H as PoolMemoryWatchdog, Ht as BaseAddon, Nt as resolvePoolMemoryPolicy, gt as hfModelUrl, ut as embeddingEncoderCapability } from "../dist-KRjxHIQ4.mjs";
1
+ import { Et as parseProcStatus, H as PoolMemoryWatchdog, Ht as BaseAddon, Nt as resolvePoolMemoryPolicy, gt as hfModelUrl, ut as embeddingEncoderCapability } from "../dist-BgBv6Xzq.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ import "./dist-CYZr2fwk.mjs";
3
3
  var e = {
4
4
  "@camstack/sdk": {
5
5
  name: "@camstack/sdk",
6
- version: "1.2.106",
6
+ version: "1.2.108",
7
7
  scope: ["default"],
8
8
  loaded: !1,
9
9
  from: "addon_pipeline_analytics_widgets",
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.200",
21
+ version: "1.2.202",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_analytics_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.165",
36
+ version: "1.2.167",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_pipeline_analytics_widgets",
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.200",
39
+ version: "1.2.202",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -45,7 +45,7 @@ async function r() {
45
45
  }
46
46
  },
47
47
  "@camstack/sdk": {
48
- version: "1.2.106",
48
+ version: "1.2.108",
49
49
  scope: "default",
50
50
  shareConfig: {
51
51
  singleton: !0,
@@ -81,7 +81,7 @@ async function r() {
81
81
  }
82
82
  },
83
83
  "@camstack/ui-library": {
84
- version: "1.2.165",
84
+ version: "1.2.167",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,