@camstack/addon-pipeline 1.2.624 → 1.2.626
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/THIRD_PARTY_MODELS.md +2 -2
- package/dist/audio-analyzer/index.js +3 -3
- package/dist/audio-analyzer/index.mjs +3 -3
- package/dist/{custom-model-catalog-Dx6W1kAo.mjs → custom-model-catalog-CacTUROW.mjs} +6 -6
- package/dist/{custom-model-catalog-6zwaRe6H.js → custom-model-catalog-CgxVHzSZ.js} +6 -6
- package/dist/detection-pipeline/index.js +16 -16
- package/dist/detection-pipeline/index.mjs +16 -16
- package/dist/{dist-BK3z-nti.mjs → dist-Bg9whnXR.mjs} +2055 -58
- package/dist/{dist-63VVVhpw.js → dist-CtbRj-Dn.js} +2055 -58
- package/dist/{model-catalogs-DyOMg-xZ.js → model-catalogs-BQqKruf-.js} +3 -3
- package/dist/{model-catalogs-CllYj2Q2.mjs → model-catalogs-D04DNvMI.mjs} +3 -3
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/{node-BAcWHimZ.mjs → node-CfgKBxdH.mjs} +2 -2
- package/dist/{node-DdaBnHEq.js → node-PivXOnUx.js} +2 -2
- package/dist/pipeline-runner/index.js +20 -20
- package/dist/pipeline-runner/index.mjs +20 -20
- package/dist/{process-memory-CUlknrLl.js → process-memory-68U4DnuZ.js} +1 -1
- package/dist/{process-memory-OZwib1pK.mjs → process-memory-Z6v2Fm60.mjs} +1 -1
- package/dist/recorder/index.js +26 -1816
- package/dist/recorder/index.mjs +26 -1816
- package/dist/{restream-intent-DyGmLAU9.mjs → restream-intent-DvzCnthK.mjs} +1 -1
- package/dist/{restream-intent-7uDNqMKs.js → restream-intent-DzrZ_EHP.js} +1 -1
- package/dist/{segment-demux-js-WNlg0SXP.js → segment-demux-js-BcnG-zVD.js} +1 -1
- package/dist/{segment-demux-js-C3rhCLCG.mjs → segment-demux-js-CRzvBMVr.mjs} +1 -1
- package/dist/session-decode/decode-worker-main.js +8 -8
- package/dist/session-decode/decode-worker-main.mjs +8 -8
- package/dist/stream-broker/_stub.js +1 -1
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Di7t7N3r.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-B9jSVeoa.mjs} +3 -3
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D-GlPMcf.mjs +26 -0
- package/dist/stream-broker/demux-worker-child.js +1 -1
- package/dist/stream-broker/demux-worker-child.mjs +1 -1
- package/dist/stream-broker/{hostInit-CMDvBrqv.mjs → hostInit-C_J8Mxe2.mjs} +3 -3
- package/dist/stream-broker/index.js +34 -34
- package/dist/stream-broker/index.mjs +34 -34
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/python/inference_pool.py +3 -3
- package/python/postprocessors/ctc.py +1 -1
- package/python/postprocessors/plate_slots.py +2 -2
- package/python/postprocessors/test_ctc.py +1 -1
- package/python/postprocessors/test_plate_slots.py +1 -1
- package/python/postprocessors/test_ssd.py +1 -1
- package/python/postprocessors/test_yolo_split_dfl.py +3 -3
- package/python/postprocessors/test_yolo_split_dfl_numpy.py +5 -5
- package/python/postprocessors/test_yolonas.py +5 -5
- package/python/postprocessors/test_yolov9_edgetpu_concat.py +3 -3
- package/python/postprocessors/testdata/yunet_int8_outputs.json +2 -2
- package/python/postprocessors/yolo_split_dfl.py +5 -5
- package/python/postprocessors/yolonas.py +3 -3
- package/python/test_dequant_edgetpu.py +2 -2
- package/python/test_inference_pool_preprocess.py +2 -2
- package/python/webgpu_isolated.py +1 -1
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DDRGMoJ1.mjs +0 -26
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_dist = require("./dist-
|
|
1
|
+
const require_dist = require("./dist-CtbRj-Dn.js");
|
|
2
2
|
//#region src/detection-pipeline/registry/model-licenses.ts
|
|
3
3
|
var COCO_DATA = {
|
|
4
4
|
name: "COCO 2017",
|
|
@@ -1266,7 +1266,7 @@ var PACKAGE_DETECTION_MODELS = [{
|
|
|
1266
1266
|
id: "rfdetr-package",
|
|
1267
1267
|
license: RFDETR_APACHE,
|
|
1268
1268
|
name: "RF-DETR — Package",
|
|
1269
|
-
description: "RF-DETR parcel detector — DETR-style decode (onnx / coreml / openvino). Separates parcel from doormat far better than the former yolov8n-package (+0.86 vs +0.21 margin on
|
|
1269
|
+
description: "RF-DETR parcel detector — DETR-style decode (onnx / coreml / openvino). Separates parcel from doormat far better than the former yolov8n-package (+0.86 vs +0.21 margin on 101) at ~4× the size and ~6× the latency",
|
|
1270
1270
|
inputSize: {
|
|
1271
1271
|
width: 576,
|
|
1272
1272
|
height: 576
|
|
@@ -1297,7 +1297,7 @@ var PLATE_OCR_MODELS = [{
|
|
|
1297
1297
|
id: "cct-s-v2-global",
|
|
1298
1298
|
license: FAST_PLATE_OCR_MIT,
|
|
1299
1299
|
name: "CCT-S v2 Global — License Plate",
|
|
1300
|
-
description: "fast-plate-ocr CCT-S v2 — a dedicated license-plate reader (66 regions incl. Germany). 19/21 exact on the cam-
|
|
1300
|
+
description: "fast-plate-ocr CCT-S v2 — a dedicated license-plate reader (66 regions incl. Germany). 19/21 exact on the cam-102 ground-truth set vs 4/21 for the generic VGG text recognizer, with zero false reads on 18 junk ROIs",
|
|
1301
1301
|
inputSize: {
|
|
1302
1302
|
width: 128,
|
|
1303
1303
|
height: 64
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as COCO_80_LABELS, nr as hfModelUrl } from "./dist-
|
|
1
|
+
import { f as COCO_80_LABELS, nr as hfModelUrl } from "./dist-Bg9whnXR.mjs";
|
|
2
2
|
//#region src/detection-pipeline/registry/model-licenses.ts
|
|
3
3
|
var COCO_DATA = {
|
|
4
4
|
name: "COCO 2017",
|
|
@@ -1266,7 +1266,7 @@ var PACKAGE_DETECTION_MODELS = [{
|
|
|
1266
1266
|
id: "rfdetr-package",
|
|
1267
1267
|
license: RFDETR_APACHE,
|
|
1268
1268
|
name: "RF-DETR — Package",
|
|
1269
|
-
description: "RF-DETR parcel detector — DETR-style decode (onnx / coreml / openvino). Separates parcel from doormat far better than the former yolov8n-package (+0.86 vs +0.21 margin on
|
|
1269
|
+
description: "RF-DETR parcel detector — DETR-style decode (onnx / coreml / openvino). Separates parcel from doormat far better than the former yolov8n-package (+0.86 vs +0.21 margin on 101) at ~4× the size and ~6× the latency",
|
|
1270
1270
|
inputSize: {
|
|
1271
1271
|
width: 576,
|
|
1272
1272
|
height: 576
|
|
@@ -1297,7 +1297,7 @@ var PLATE_OCR_MODELS = [{
|
|
|
1297
1297
|
id: "cct-s-v2-global",
|
|
1298
1298
|
license: FAST_PLATE_OCR_MIT,
|
|
1299
1299
|
name: "CCT-S v2 Global — License Plate",
|
|
1300
|
-
description: "fast-plate-ocr CCT-S v2 — a dedicated license-plate reader (66 regions incl. Germany). 19/21 exact on the cam-
|
|
1300
|
+
description: "fast-plate-ocr CCT-S v2 — a dedicated license-plate reader (66 regions incl. Germany). 19/21 exact on the cam-102 ground-truth set vs 4/21 for the generic VGG text recognizer, with zero false reads on 18 junk ROIs",
|
|
1301
1301
|
inputSize: {
|
|
1302
1302
|
width: 128,
|
|
1303
1303
|
height: 64
|
|
@@ -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-
|
|
5
|
+
const require_dist = require("../dist-CtbRj-Dn.js");
|
|
6
6
|
const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
|
|
7
7
|
let node_fs = require("node:fs");
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Gn as BaseAddon, Hn as DeviceType, Ot as evaluateZoneRules, Zt as motionDetectionCapability, rr as hydrateSchema } from "../dist-
|
|
1
|
+
import { Gn as BaseAddon, Hn as DeviceType, Ot as evaluateZoneRules, Zt as motionDetectionCapability, rr as hydrateSchema } from "../dist-Bg9whnXR.mjs";
|
|
2
2
|
import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
4
|
import { join } from "node:path";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Bn as isSoftwareDecode, In as Fmp4BoxSplitter, Ln as buildFfmpegArgs, Un as errMsg } from "./dist-
|
|
1
|
+
import { Bn as isSoftwareDecode, In as Fmp4BoxSplitter, Ln as buildFfmpegArgs, Un as errMsg } from "./dist-Bg9whnXR.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { realpathSync } from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
@@ -655,7 +655,7 @@ function defaultFfmpegSpawn(command, args, options) {
|
|
|
655
655
|
* ## Where a claim is made, and where it is released
|
|
656
656
|
*
|
|
657
657
|
* At the spawn site, and nowhere else. It is the only place that knows both
|
|
658
|
-
* halves: the recorder's controller knows it is starting ffmpeg for camera
|
|
658
|
+
* halves: the recorder's controller knows it is starting ffmpeg for camera 101
|
|
659
659
|
* profile `high`; the decode coordinator knows the session it is forking a
|
|
660
660
|
* worker for. Nothing has to deduce it afterwards, and no entity needs a
|
|
661
661
|
* global list of which pid belongs to which camera.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-emK7D4bc.js");
|
|
2
|
-
const require_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-CtbRj-Dn.js");
|
|
3
3
|
require("node:os");
|
|
4
4
|
let node_crypto = require("node:crypto");
|
|
5
5
|
let node_fs = require("node:fs");
|
|
@@ -659,7 +659,7 @@ function defaultFfmpegSpawn(command, args, options) {
|
|
|
659
659
|
* ## Where a claim is made, and where it is released
|
|
660
660
|
*
|
|
661
661
|
* At the spawn site, and nowhere else. It is the only place that knows both
|
|
662
|
-
* halves: the recorder's controller knows it is starting ffmpeg for camera
|
|
662
|
+
* halves: the recorder's controller knows it is starting ffmpeg for camera 101
|
|
663
663
|
* profile `high`; the decode coordinator knows the session it is forking a
|
|
664
664
|
* worker for. Nothing has to deduce it afterwards, and no entity needs a
|
|
665
665
|
* global list of which pid belongs to which camera.
|
|
@@ -3,13 +3,13 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-emK7D4bc.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
7
|
-
const require_node = require("../node-
|
|
8
|
-
const require_custom_model_catalog = require("../custom-model-catalog-
|
|
6
|
+
const require_dist = require("../dist-CtbRj-Dn.js");
|
|
7
|
+
const require_node = require("../node-PivXOnUx.js");
|
|
8
|
+
const require_custom_model_catalog = require("../custom-model-catalog-CgxVHzSZ.js");
|
|
9
9
|
const require_worker_protocol = require("../worker-protocol-DngGEAT2.js");
|
|
10
10
|
const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
|
|
11
11
|
const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
|
|
12
|
-
const require_restream_intent = require("../restream-intent-
|
|
12
|
+
const require_restream_intent = require("../restream-intent-DzrZ_EHP.js");
|
|
13
13
|
const require_remote_restream = require("../remote-restream-CO36Sr30.js");
|
|
14
14
|
let node_os = require("node:os");
|
|
15
15
|
node_os = require_chunk.__toESM(node_os);
|
|
@@ -758,7 +758,7 @@ var LiveDecodeWorkerAdmission = class {
|
|
|
758
758
|
* Take a slot, or refuse.
|
|
759
759
|
*
|
|
760
760
|
* A refusal is a WARN and carries `tags.deviceId`, because the only useful
|
|
761
|
-
* form of this question is per-camera ("why did
|
|
761
|
+
* form of this question is per-camera ("why did 102 not run when 101 did?").
|
|
762
762
|
* A branch that drops work silently reads as "it never happened".
|
|
763
763
|
*/
|
|
764
764
|
admit(deviceId, label) {
|
|
@@ -839,7 +839,7 @@ async function withRetainedReader(store, handle, read) {
|
|
|
839
839
|
* at a MEDIAN `handleAgeMs` of 30 099 ms — thirty seconds. The node-wide
|
|
840
840
|
* {@link ../session-decode/native-crop-registry.NativeCropRegistry} sat pinned
|
|
841
841
|
* at `registrySize 4096 / registryCap 4096` for the whole window. Measured
|
|
842
|
-
* consequence: on track `d64ace88` (device
|
|
842
|
+
* consequence: on track `d64ace88` (device 111) the frontal-face frames never
|
|
843
843
|
* reached the face detector, because every native fetch missed.
|
|
844
844
|
*
|
|
845
845
|
* ## Why an AGE bound and not a bigger cap
|
|
@@ -884,7 +884,7 @@ async function withRetainedReader(store, handle, read) {
|
|
|
884
884
|
* `pipeline/native-lease.ts` sizing prose rather than from a measurement of
|
|
885
885
|
* THIS path — that a p90 ask lands at 4.3 s and a p50 at 367 ms. Deployed
|
|
886
886
|
* 2026-09-09 ~14:00, it produced, on the hub, **3 371 `no-registry-entry`
|
|
887
|
-
* misses in fifteen minutes** (2 036 of them on `
|
|
887
|
+
* misses in fifteen minutes** (2 036 of them on `hall` alone) against
|
|
888
888
|
* essentially ZERO in the half hour before the deploy: the registry held 46
|
|
889
889
|
* entries where it had held 4 096, and the asks arriving between 10 s and 30 s
|
|
890
890
|
* found nothing at all. The operator saw it as tracks with missing media.
|
|
@@ -1017,7 +1017,7 @@ var NativeCropRegistry = class {
|
|
|
1017
1017
|
* The deviceId a handle was registered under, even AFTER its entry was
|
|
1018
1018
|
* evicted — kept in a small parallel ring so a `no-registry-entry` miss can
|
|
1019
1019
|
* still be attributed to a camera (a miss line without `deviceId` cannot
|
|
1020
|
-
* answer "why is
|
|
1020
|
+
* answer "why is 102 worse than 101?").
|
|
1021
1021
|
*/
|
|
1022
1022
|
deviceIdFor(handle) {
|
|
1023
1023
|
const key = this.key(handle);
|
|
@@ -2802,7 +2802,7 @@ var REMEMBERED_BOXES_PER_DEVICE = 64;
|
|
|
2802
2802
|
/**
|
|
2803
2803
|
* Per-camera memory of the boxes recently on screen.
|
|
2804
2804
|
*
|
|
2805
|
-
* Per CAMERA and never global: a box on
|
|
2805
|
+
* Per CAMERA and never global: a box on 102 says nothing about 101, and a
|
|
2806
2806
|
* shared structure would make one camera's traffic decide another's cuts —
|
|
2807
2807
|
* which is the exact shape of the node-wide sharing this whole change moves
|
|
2808
2808
|
* away from.
|
|
@@ -4666,7 +4666,7 @@ function withPackageLook(result, dispatched, filledByRoot = false) {
|
|
|
4666
4666
|
* clear that dwell, or the delivery falls back to the 45 s poll. Promotion
|
|
4667
4667
|
* itself counts FRAMES (`packageDropMinFrames`, default 3), so a single
|
|
4668
4668
|
* settle session that sees the box three times is enough when dwell is 0 —
|
|
4669
|
-
* the 15 s dwell plus a 5 s round-gap missed a real parcel on device
|
|
4669
|
+
* the 15 s dwell plus a 5 s round-gap missed a real parcel on device 101
|
|
4670
4670
|
* (2026-08-24 13:40). The relation is pinned by
|
|
4671
4671
|
* `scripts/check-package-promotion-satisfiable.ts`.
|
|
4672
4672
|
*
|
|
@@ -4804,7 +4804,7 @@ function resolveNativeCropHitKind(source) {
|
|
|
4804
4804
|
*
|
|
4805
4805
|
* The read passes no `nodeId`. With one, `addon-settings` would project that
|
|
4806
4806
|
* node's scoped value and two nodes could hold different lease windows for the
|
|
4807
|
-
* same camera — so whether a stored crop is native pixels or the ≤
|
|
4807
|
+
* same camera — so whether a stored crop is native pixels or the ≤106 fallback
|
|
4808
4808
|
* would depend on where the balancer happened to place it, which is invisible
|
|
4809
4809
|
* from the stored media.
|
|
4810
4810
|
*
|
|
@@ -5827,7 +5827,7 @@ var PipelineTimingSampler = class {
|
|
|
5827
5827
|
};
|
|
5828
5828
|
/**
|
|
5829
5829
|
* Bound on one `processFrame` call. Chosen well above the slowest legitimate
|
|
5830
|
-
* inference seen in production (8
|
|
5830
|
+
* inference seen in production (8 102 ms, GPU contention on the hub) so the
|
|
5831
5831
|
* timeout only ever fires on a call that is genuinely never coming back.
|
|
5832
5832
|
*/
|
|
5833
5833
|
var DEFAULT_INFERENCE_TIMEOUT_MS = 2e4;
|
|
@@ -6863,13 +6863,13 @@ var PipelineRunner = class {
|
|
|
6863
6863
|
*
|
|
6864
6864
|
* The first-level detector sees the frame at its input size (320 px on every
|
|
6865
6865
|
* hardware-aware default). A 4K frame is reduced 12×: a dog measured at
|
|
6866
|
-
* 89–277 px in the source is 7–38 px for the model and is not emitted. Camera
|
|
6866
|
+
* 89–277 px in the source is 7–38 px for the model and is not emitted. Camera 101, six
|
|
6867
6867
|
* instants with a dog in the scene, five with no `animal` detection at all —
|
|
6868
6868
|
* nothing downstream (tracker, gate, notifications) ever saw a subject. The
|
|
6869
6869
|
* confirmation gate, which re-runs the same detector on a 320 px native crop
|
|
6870
6870
|
* of the PERSON, found the dog at 0.74–0.91 as `bestIncompatibleClass`. The
|
|
6871
6871
|
* measurement that decided the constants below is
|
|
6872
|
-
* `docs/benchmarks/pipeline-frame-model-eval.md`, case `miss-dog-
|
|
6872
|
+
* `docs/benchmarks/pipeline-frame-model-eval.md`, case `miss-dog-101`: a
|
|
6873
6873
|
* 640–800 px native square around the moving region brings the dog to
|
|
6874
6874
|
* 0.82–0.91 with the SAME 320 model; a 1280 px square loses it again.
|
|
6875
6875
|
*
|
|
@@ -6885,7 +6885,7 @@ var PipelineRunner = class {
|
|
|
6885
6885
|
* ## When it runs — NOT only when the frame is empty
|
|
6886
6886
|
*
|
|
6887
6887
|
* The trigger is an UNCOVERED MOTION REGION, deliberately broader than "the
|
|
6888
|
-
* full-frame pass found nothing". Camera
|
|
6888
|
+
* full-frame pass found nothing". Camera 101, 2026-09-06 19:54:33 local: the
|
|
6889
6889
|
* gate DID confirm an `animal` birth (bestScore 0.8983) — and the track held
|
|
6890
6890
|
* 9 positions over 1 666 ms, then coasted out its `maxMissedMs` (4 000 ms) and
|
|
6891
6891
|
* died at 19:54:39, before the dog reached the Aiuola zone. Both of its object
|
|
@@ -7954,7 +7954,7 @@ var EMPTY_RECOVERY_SKIPS = Object.freeze({
|
|
|
7954
7954
|
* How often the small-subject recovery pass reports per camera. The pass runs
|
|
7955
7955
|
* up to twice a second; one aggregated line every ten seconds says how often
|
|
7956
7956
|
* it ran, what it cost and what it found — the numbers a "did the second
|
|
7957
|
-
* pass help on
|
|
7957
|
+
* pass help on 101?" question is answered from.
|
|
7958
7958
|
*/
|
|
7959
7959
|
var RECOVERY_LOG_INTERVAL_MS = 1e4;
|
|
7960
7960
|
/**
|
|
@@ -8510,7 +8510,7 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends require_dist.BaseAdd
|
|
|
8510
8510
|
/**
|
|
8511
8511
|
* Per-camera counters for the frames on which the pass did NOT run, since the
|
|
8512
8512
|
* last report line (D378). "The second pass stops running when a person is
|
|
8513
|
-
* beside the dog" was a live hypothesis on camera
|
|
8513
|
+
* beside the dog" was a live hypothesis on camera 101 and the logs could not
|
|
8514
8514
|
* answer it: a report that counts only the passes that ran cannot say why the
|
|
8515
8515
|
* others did not. `rateLimited` is the cadence cap, `noMotion` an empty or
|
|
8516
8516
|
* stale motion mirror, `tooLarge` / `covered` the shipped rule's two region
|
|
@@ -10462,7 +10462,7 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends require_dist.BaseAdd
|
|
|
10462
10462
|
* Log a runtime-label failure at its TRANSITION, and at `warn`.
|
|
10463
10463
|
*
|
|
10464
10464
|
* This branch first shipped at `debug`, on the argument that the absent field
|
|
10465
|
-
* in the line was signal enough. It was not: within the hour `
|
|
10465
|
+
* in the line was signal enough. It was not: within the hour `agent-a`
|
|
10466
10466
|
* was the one node still logging `pipelineRuntime=null` and there was no way
|
|
10467
10467
|
* to tell "this node has no engine" from "the read threw", because the hub
|
|
10468
10468
|
* writes `info` and the agent forwards to it. That is D438's blind
|
|
@@ -10526,7 +10526,7 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends require_dist.BaseAdd
|
|
|
10526
10526
|
/**
|
|
10527
10527
|
* Per camera, the root-supply plan (D730) and the announce derived from it,
|
|
10528
10528
|
* keyed on the two inputs it reads: the attach tree and the custom-model
|
|
10529
|
-
* snapshot (a
|
|
10529
|
+
* snapshot (a plus catalog root is a custom model), plus the elected device
|
|
10530
10530
|
* whose default an unpinned root runs. Recomputed when any changes — at
|
|
10531
10531
|
* most once per catalog refresh.
|
|
10532
10532
|
*/
|
|
@@ -10878,7 +10878,7 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends require_dist.BaseAdd
|
|
|
10878
10878
|
* - first death: clean up the dead subscription and re-dial once (2s);
|
|
10879
10879
|
* - second death within 60s: give up re-dialing and DETACH — the
|
|
10880
10880
|
* orchestrator re-dispatches cleanly on the next motion/occupancy signal
|
|
10881
|
-
* (the same recovery path validated manually on device
|
|
10881
|
+
* (the same recovery path validated manually on device 107).
|
|
10882
10882
|
*/
|
|
10883
10883
|
handleDetectionDecodeEnded(deviceId) {
|
|
10884
10884
|
const attachment = this.attached.get(deviceId);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { $n as defineCustomActions, A as NativeLeaseAdmissionSchema, E as FailureCounters, Er as EventCategory, F as PIPELINE_RAMP, Ft as fuseRecoveredDetections, Gn as BaseAddon, Ht as linkedStepOf, M as NodeBenchRunnerInputSchema, Nt as failureContributionCapability, Q as applyCropClassFloors, Qn as customAction, Sn as rootSuppliesOf, U as ROOT_SUPPLIABLE_STEP_IDS, Un as errMsg, Ut as loadContributionCapability, Yn as MODEL_FORMATS, Z as allowedSuppliedEffect, Zn as createEvent, _ as DEFAULT_DETAIL_CROP_CONVENTION, a as BackgroundRunRegistry, an as planMotionCrops, at as buildBenchStepTree, br as number, bt as deriveRootFaceRefineRect, cn as readRecoveryRecipeForSteps, ft as countRecoverySkips, gr as boolean, hr as array, in as pipelineRunnerCapability, j as NativeLeaseSettingsSchema, lr as nodePin, m as CROP_SUPPLY_SOURCES, mr as _enum, nn as pickNativeLeaseOverride, on as planRecoveryCrops, ot as cameraOwnsMotionViaSensor, pn as remapCropDetections, tn as pickDetailCropConvention, vn as resolveModelBoundSetting, vr as lazy, vt as deriveDetailCropRect, wn as selectRecoveryStep, wr as string, x as DEVICE_RAMP, xn as resolveRootSupply, xr as object, y as DEFAULT_NATIVE_LEASE_SETTINGS, yr as literal } from "../dist-
|
|
2
|
-
import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-
|
|
3
|
-
import { a as stepsForElectedPool, c as resolveDefaultDetectionModel, d as localFrameRegistry, f as isSessionDecodeReadGone, i as placeDetailStep, l as macroGateVerdict, m as resolveFrameViewGeometry, p as createSessionDecodeCoordinator, s as resolveDeviceEngine, t as CustomModelCatalog, u as rootObjectGate, v as getStep, y as getStepDefinition } from "../custom-model-catalog-
|
|
1
|
+
import { $n as defineCustomActions, A as NativeLeaseAdmissionSchema, E as FailureCounters, Er as EventCategory, F as PIPELINE_RAMP, Ft as fuseRecoveredDetections, Gn as BaseAddon, Ht as linkedStepOf, M as NodeBenchRunnerInputSchema, Nt as failureContributionCapability, Q as applyCropClassFloors, Qn as customAction, Sn as rootSuppliesOf, U as ROOT_SUPPLIABLE_STEP_IDS, Un as errMsg, Ut as loadContributionCapability, Yn as MODEL_FORMATS, Z as allowedSuppliedEffect, Zn as createEvent, _ as DEFAULT_DETAIL_CROP_CONVENTION, a as BackgroundRunRegistry, an as planMotionCrops, at as buildBenchStepTree, br as number, bt as deriveRootFaceRefineRect, cn as readRecoveryRecipeForSteps, ft as countRecoverySkips, gr as boolean, hr as array, in as pipelineRunnerCapability, j as NativeLeaseSettingsSchema, lr as nodePin, m as CROP_SUPPLY_SOURCES, mr as _enum, nn as pickNativeLeaseOverride, on as planRecoveryCrops, ot as cameraOwnsMotionViaSensor, pn as remapCropDetections, tn as pickDetailCropConvention, vn as resolveModelBoundSetting, vr as lazy, vt as deriveDetailCropRect, wn as selectRecoveryStep, wr as string, x as DEVICE_RAMP, xn as resolveRootSupply, xr as object, y as DEFAULT_NATIVE_LEASE_SETTINGS, yr as literal } from "../dist-Bg9whnXR.mjs";
|
|
2
|
+
import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-CfgKBxdH.mjs";
|
|
3
|
+
import { a as stepsForElectedPool, c as resolveDefaultDetectionModel, d as localFrameRegistry, f as isSessionDecodeReadGone, i as placeDetailStep, l as macroGateVerdict, m as resolveFrameViewGeometry, p as createSessionDecodeCoordinator, s as resolveDeviceEngine, t as CustomModelCatalog, u as rootObjectGate, v as getStep, y as getStepDefinition } from "../custom-model-catalog-CacTUROW.mjs";
|
|
4
4
|
import { i as SessionHwaccelSource } from "../worker-protocol-_avq7y8O.mjs";
|
|
5
5
|
import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
|
|
6
6
|
import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
|
|
7
|
-
import { c as withDetectionIntent, o as preRollRequestOf, t as DETECTION_PRE_ROLL_REQUEST_MS } from "../restream-intent-
|
|
7
|
+
import { c as withDetectionIntent, o as preRollRequestOf, t as DETECTION_PRE_ROLL_REQUEST_MS } from "../restream-intent-DvzCnthK.mjs";
|
|
8
8
|
import { n as profileForStreamId, t as isRemoteRestream } from "../remote-restream-BeHi78PZ.mjs";
|
|
9
9
|
import * as os$1 from "node:os";
|
|
10
10
|
import os from "node:os";
|
|
@@ -751,7 +751,7 @@ var LiveDecodeWorkerAdmission = class {
|
|
|
751
751
|
* Take a slot, or refuse.
|
|
752
752
|
*
|
|
753
753
|
* A refusal is a WARN and carries `tags.deviceId`, because the only useful
|
|
754
|
-
* form of this question is per-camera ("why did
|
|
754
|
+
* form of this question is per-camera ("why did 102 not run when 101 did?").
|
|
755
755
|
* A branch that drops work silently reads as "it never happened".
|
|
756
756
|
*/
|
|
757
757
|
admit(deviceId, label) {
|
|
@@ -832,7 +832,7 @@ async function withRetainedReader(store, handle, read) {
|
|
|
832
832
|
* at a MEDIAN `handleAgeMs` of 30 099 ms — thirty seconds. The node-wide
|
|
833
833
|
* {@link ../session-decode/native-crop-registry.NativeCropRegistry} sat pinned
|
|
834
834
|
* at `registrySize 4096 / registryCap 4096` for the whole window. Measured
|
|
835
|
-
* consequence: on track `d64ace88` (device
|
|
835
|
+
* consequence: on track `d64ace88` (device 111) the frontal-face frames never
|
|
836
836
|
* reached the face detector, because every native fetch missed.
|
|
837
837
|
*
|
|
838
838
|
* ## Why an AGE bound and not a bigger cap
|
|
@@ -877,7 +877,7 @@ async function withRetainedReader(store, handle, read) {
|
|
|
877
877
|
* `pipeline/native-lease.ts` sizing prose rather than from a measurement of
|
|
878
878
|
* THIS path — that a p90 ask lands at 4.3 s and a p50 at 367 ms. Deployed
|
|
879
879
|
* 2026-09-09 ~14:00, it produced, on the hub, **3 371 `no-registry-entry`
|
|
880
|
-
* misses in fifteen minutes** (2 036 of them on `
|
|
880
|
+
* misses in fifteen minutes** (2 036 of them on `hall` alone) against
|
|
881
881
|
* essentially ZERO in the half hour before the deploy: the registry held 46
|
|
882
882
|
* entries where it had held 4 096, and the asks arriving between 10 s and 30 s
|
|
883
883
|
* found nothing at all. The operator saw it as tracks with missing media.
|
|
@@ -1010,7 +1010,7 @@ var NativeCropRegistry = class {
|
|
|
1010
1010
|
* The deviceId a handle was registered under, even AFTER its entry was
|
|
1011
1011
|
* evicted — kept in a small parallel ring so a `no-registry-entry` miss can
|
|
1012
1012
|
* still be attributed to a camera (a miss line without `deviceId` cannot
|
|
1013
|
-
* answer "why is
|
|
1013
|
+
* answer "why is 102 worse than 101?").
|
|
1014
1014
|
*/
|
|
1015
1015
|
deviceIdFor(handle) {
|
|
1016
1016
|
const key = this.key(handle);
|
|
@@ -2794,7 +2794,7 @@ var REMEMBERED_BOXES_PER_DEVICE = 64;
|
|
|
2794
2794
|
/**
|
|
2795
2795
|
* Per-camera memory of the boxes recently on screen.
|
|
2796
2796
|
*
|
|
2797
|
-
* Per CAMERA and never global: a box on
|
|
2797
|
+
* Per CAMERA and never global: a box on 102 says nothing about 101, and a
|
|
2798
2798
|
* shared structure would make one camera's traffic decide another's cuts —
|
|
2799
2799
|
* which is the exact shape of the node-wide sharing this whole change moves
|
|
2800
2800
|
* away from.
|
|
@@ -4658,7 +4658,7 @@ function withPackageLook(result, dispatched, filledByRoot = false) {
|
|
|
4658
4658
|
* clear that dwell, or the delivery falls back to the 45 s poll. Promotion
|
|
4659
4659
|
* itself counts FRAMES (`packageDropMinFrames`, default 3), so a single
|
|
4660
4660
|
* settle session that sees the box three times is enough when dwell is 0 —
|
|
4661
|
-
* the 15 s dwell plus a 5 s round-gap missed a real parcel on device
|
|
4661
|
+
* the 15 s dwell plus a 5 s round-gap missed a real parcel on device 101
|
|
4662
4662
|
* (2026-08-24 13:40). The relation is pinned by
|
|
4663
4663
|
* `scripts/check-package-promotion-satisfiable.ts`.
|
|
4664
4664
|
*
|
|
@@ -4796,7 +4796,7 @@ function resolveNativeCropHitKind(source) {
|
|
|
4796
4796
|
*
|
|
4797
4797
|
* The read passes no `nodeId`. With one, `addon-settings` would project that
|
|
4798
4798
|
* node's scoped value and two nodes could hold different lease windows for the
|
|
4799
|
-
* same camera — so whether a stored crop is native pixels or the ≤
|
|
4799
|
+
* same camera — so whether a stored crop is native pixels or the ≤106 fallback
|
|
4800
4800
|
* would depend on where the balancer happened to place it, which is invisible
|
|
4801
4801
|
* from the stored media.
|
|
4802
4802
|
*
|
|
@@ -5819,7 +5819,7 @@ var PipelineTimingSampler = class {
|
|
|
5819
5819
|
};
|
|
5820
5820
|
/**
|
|
5821
5821
|
* Bound on one `processFrame` call. Chosen well above the slowest legitimate
|
|
5822
|
-
* inference seen in production (8
|
|
5822
|
+
* inference seen in production (8 102 ms, GPU contention on the hub) so the
|
|
5823
5823
|
* timeout only ever fires on a call that is genuinely never coming back.
|
|
5824
5824
|
*/
|
|
5825
5825
|
var DEFAULT_INFERENCE_TIMEOUT_MS = 2e4;
|
|
@@ -6855,13 +6855,13 @@ var PipelineRunner = class {
|
|
|
6855
6855
|
*
|
|
6856
6856
|
* The first-level detector sees the frame at its input size (320 px on every
|
|
6857
6857
|
* hardware-aware default). A 4K frame is reduced 12×: a dog measured at
|
|
6858
|
-
* 89–277 px in the source is 7–38 px for the model and is not emitted. Camera
|
|
6858
|
+
* 89–277 px in the source is 7–38 px for the model and is not emitted. Camera 101, six
|
|
6859
6859
|
* instants with a dog in the scene, five with no `animal` detection at all —
|
|
6860
6860
|
* nothing downstream (tracker, gate, notifications) ever saw a subject. The
|
|
6861
6861
|
* confirmation gate, which re-runs the same detector on a 320 px native crop
|
|
6862
6862
|
* of the PERSON, found the dog at 0.74–0.91 as `bestIncompatibleClass`. The
|
|
6863
6863
|
* measurement that decided the constants below is
|
|
6864
|
-
* `docs/benchmarks/pipeline-frame-model-eval.md`, case `miss-dog-
|
|
6864
|
+
* `docs/benchmarks/pipeline-frame-model-eval.md`, case `miss-dog-101`: a
|
|
6865
6865
|
* 640–800 px native square around the moving region brings the dog to
|
|
6866
6866
|
* 0.82–0.91 with the SAME 320 model; a 1280 px square loses it again.
|
|
6867
6867
|
*
|
|
@@ -6877,7 +6877,7 @@ var PipelineRunner = class {
|
|
|
6877
6877
|
* ## When it runs — NOT only when the frame is empty
|
|
6878
6878
|
*
|
|
6879
6879
|
* The trigger is an UNCOVERED MOTION REGION, deliberately broader than "the
|
|
6880
|
-
* full-frame pass found nothing". Camera
|
|
6880
|
+
* full-frame pass found nothing". Camera 101, 2026-09-06 19:54:33 local: the
|
|
6881
6881
|
* gate DID confirm an `animal` birth (bestScore 0.8983) — and the track held
|
|
6882
6882
|
* 9 positions over 1 666 ms, then coasted out its `maxMissedMs` (4 000 ms) and
|
|
6883
6883
|
* died at 19:54:39, before the dog reached the Aiuola zone. Both of its object
|
|
@@ -7946,7 +7946,7 @@ var EMPTY_RECOVERY_SKIPS = Object.freeze({
|
|
|
7946
7946
|
* How often the small-subject recovery pass reports per camera. The pass runs
|
|
7947
7947
|
* up to twice a second; one aggregated line every ten seconds says how often
|
|
7948
7948
|
* it ran, what it cost and what it found — the numbers a "did the second
|
|
7949
|
-
* pass help on
|
|
7949
|
+
* pass help on 101?" question is answered from.
|
|
7950
7950
|
*/
|
|
7951
7951
|
var RECOVERY_LOG_INTERVAL_MS = 1e4;
|
|
7952
7952
|
/**
|
|
@@ -8502,7 +8502,7 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends BaseAddon {
|
|
|
8502
8502
|
/**
|
|
8503
8503
|
* Per-camera counters for the frames on which the pass did NOT run, since the
|
|
8504
8504
|
* last report line (D378). "The second pass stops running when a person is
|
|
8505
|
-
* beside the dog" was a live hypothesis on camera
|
|
8505
|
+
* beside the dog" was a live hypothesis on camera 101 and the logs could not
|
|
8506
8506
|
* answer it: a report that counts only the passes that ran cannot say why the
|
|
8507
8507
|
* others did not. `rateLimited` is the cadence cap, `noMotion` an empty or
|
|
8508
8508
|
* stale motion mirror, `tooLarge` / `covered` the shipped rule's two region
|
|
@@ -10454,7 +10454,7 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends BaseAddon {
|
|
|
10454
10454
|
* Log a runtime-label failure at its TRANSITION, and at `warn`.
|
|
10455
10455
|
*
|
|
10456
10456
|
* This branch first shipped at `debug`, on the argument that the absent field
|
|
10457
|
-
* in the line was signal enough. It was not: within the hour `
|
|
10457
|
+
* in the line was signal enough. It was not: within the hour `agent-a`
|
|
10458
10458
|
* was the one node still logging `pipelineRuntime=null` and there was no way
|
|
10459
10459
|
* to tell "this node has no engine" from "the read threw", because the hub
|
|
10460
10460
|
* writes `info` and the agent forwards to it. That is D438's blind
|
|
@@ -10518,7 +10518,7 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends BaseAddon {
|
|
|
10518
10518
|
/**
|
|
10519
10519
|
* Per camera, the root-supply plan (D730) and the announce derived from it,
|
|
10520
10520
|
* keyed on the two inputs it reads: the attach tree and the custom-model
|
|
10521
|
-
* snapshot (a
|
|
10521
|
+
* snapshot (a plus catalog root is a custom model), plus the elected device
|
|
10522
10522
|
* whose default an unpinned root runs. Recomputed when any changes — at
|
|
10523
10523
|
* most once per catalog refresh.
|
|
10524
10524
|
*/
|
|
@@ -10870,7 +10870,7 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends BaseAddon {
|
|
|
10870
10870
|
* - first death: clean up the dead subscription and re-dial once (2s);
|
|
10871
10871
|
* - second death within 60s: give up re-dialing and DETACH — the
|
|
10872
10872
|
* orchestrator re-dispatches cleanly on the next motion/occupancy signal
|
|
10873
|
-
* (the same recovery path validated manually on device
|
|
10873
|
+
* (the same recovery path validated manually on device 107).
|
|
10874
10874
|
*/
|
|
10875
10875
|
handleDetectionDecodeEnded(deviceId) {
|
|
10876
10876
|
const attachment = this.attached.get(deviceId);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-emK7D4bc.js");
|
|
2
|
-
const require_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-CtbRj-Dn.js");
|
|
3
3
|
let node_fs = require("node:fs");
|
|
4
4
|
node_fs = require_chunk.__toESM(node_fs);
|
|
5
5
|
let node_child_process = require("node:child_process");
|