@camstack/addon-pipeline-orchestrator 1.2.175 → 1.2.176
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/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-CJt29L-j.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-CpiA9AcV.mjs} +3 -3
- package/dist/{hostInit-DhIjsXSs.mjs → hostInit-DzEP81Yo.mjs} +3 -3
- package/dist/index.js +95 -6
- package/dist/index.mjs +95 -6
- package/dist/remoteEntry.js +1 -1
- package/package.json +1 -1
|
@@ -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.
|
|
6
|
+
version: "1.2.92",
|
|
7
7
|
scope: ["default"],
|
|
8
8
|
loaded: !1,
|
|
9
9
|
from: "addon_pipeline_orchestrator_widgets",
|
|
@@ -18,7 +18,7 @@ var e = {
|
|
|
18
18
|
},
|
|
19
19
|
"@camstack/types": {
|
|
20
20
|
name: "@camstack/types",
|
|
21
|
-
version: "1.2.
|
|
21
|
+
version: "1.2.172",
|
|
22
22
|
scope: ["default"],
|
|
23
23
|
loaded: !1,
|
|
24
24
|
from: "addon_pipeline_orchestrator_widgets",
|
|
@@ -33,7 +33,7 @@ var e = {
|
|
|
33
33
|
},
|
|
34
34
|
"@camstack/ui-library": {
|
|
35
35
|
name: "@camstack/ui-library",
|
|
36
|
-
version: "1.2.
|
|
36
|
+
version: "1.2.140",
|
|
37
37
|
scope: ["default"],
|
|
38
38
|
loaded: !1,
|
|
39
39
|
from: "addon_pipeline_orchestrator_widgets",
|
|
@@ -36,7 +36,7 @@ async function r() {
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"@camstack/types": {
|
|
39
|
-
version: "1.2.
|
|
39
|
+
version: "1.2.172",
|
|
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.
|
|
48
|
+
version: "1.2.92",
|
|
49
49
|
scope: "default",
|
|
50
50
|
shareConfig: {
|
|
51
51
|
singleton: !0,
|
|
@@ -99,7 +99,7 @@ async function r() {
|
|
|
99
99
|
}
|
|
100
100
|
},
|
|
101
101
|
"@camstack/ui-library": {
|
|
102
|
-
version: "1.2.
|
|
102
|
+
version: "1.2.140",
|
|
103
103
|
scope: "default",
|
|
104
104
|
shareConfig: {
|
|
105
105
|
singleton: !0,
|
package/dist/index.js
CHANGED
|
@@ -21523,6 +21523,22 @@ var occupancyRecheckFramesField = {
|
|
|
21523
21523
|
step: 1
|
|
21524
21524
|
};
|
|
21525
21525
|
/**
|
|
21526
|
+
* Frames one PRE-ROLL catch-up burst may send to inference at session open.
|
|
21527
|
+
*
|
|
21528
|
+
* The default of 12 over a ~4 s retained window is one frame per ~333 ms of
|
|
21529
|
+
* footage, and costs ~480 ms of ONE inference permit at the 40 ms/frame this
|
|
21530
|
+
* fleet measures — one-shot, and only ever taken while a permit would still be
|
|
21531
|
+
* spare for live. `0` turns the burst off entirely (the history is still
|
|
21532
|
+
* decoded, because that is how the dial reaches a decodable GOP, and is then
|
|
21533
|
+
* discarded — the pre-D411 behaviour).
|
|
21534
|
+
*/
|
|
21535
|
+
var preRollInferenceFramesField = {
|
|
21536
|
+
min: 0,
|
|
21537
|
+
max: 30,
|
|
21538
|
+
default: 12,
|
|
21539
|
+
step: 1
|
|
21540
|
+
};
|
|
21541
|
+
/**
|
|
21526
21542
|
* Source enum for motion signals fed to the runner. Extensible — add
|
|
21527
21543
|
* new variants here when new motion-trigger paths are wired in
|
|
21528
21544
|
* (`wasm-cross-camera`, `event-bus-relay`, etc.). The runner uses
|
|
@@ -21763,6 +21779,31 @@ var RunnerCameraConfigSchema = object({
|
|
|
21763
21779
|
* to every occupancy rule until something moved in front of it. The churn is
|
|
21764
21780
|
* now paid on the interval instead — see `occupancyRecheckSecField`.
|
|
21765
21781
|
*/
|
|
21782
|
+
/**
|
|
21783
|
+
* Infer the session's PRE-ROLL — the retained history the restreamer replays
|
|
21784
|
+
* at session open — instead of decoding it and throwing it away.
|
|
21785
|
+
*
|
|
21786
|
+
* DEFAULT `true`, and the default is the argument. This is not a new
|
|
21787
|
+
* capability being offered cautiously: the pre-roll is ALREADY requested,
|
|
21788
|
+
* already served, already decoded and already paid for on every on-motion
|
|
21789
|
+
* detection session that asks for history. What shipped was a last-moment
|
|
21790
|
+
* discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
|
|
21791
|
+
* arriving inside a few hundred ms of wall clock looks to it like one frame's
|
|
21792
|
+
* worth. Device 617, 2026-09-08: a re-run of the SAME model over the stored
|
|
21793
|
+
* recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
|
|
21794
|
+
* 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
|
|
21795
|
+
* was decoded, and was freed.
|
|
21796
|
+
*
|
|
21797
|
+
* Shipping that as opt-in would ship the bug: an operator cannot discover a
|
|
21798
|
+
* setting whose absence looks exactly like a camera that noticed the cyclist
|
|
21799
|
+
* late. What makes ON safe is not a switch but the BOUND —
|
|
21800
|
+
* `preRollInferenceFrames`, a wall-clock ceiling, and a lane that never takes
|
|
21801
|
+
* the last inference permit — so the switch exists for the camera where the
|
|
21802
|
+
* history is worthless (a doorbell whose subject is always already at the
|
|
21803
|
+
* door), not as a hedge against the feature.
|
|
21804
|
+
*/
|
|
21805
|
+
preRollInferenceEnabled: boolean().default(true),
|
|
21806
|
+
preRollInferenceFrames: number().min(preRollInferenceFramesField.min).max(preRollInferenceFramesField.max).default(preRollInferenceFramesField.default),
|
|
21766
21807
|
occupancyRecheckEnabled: boolean().default(true),
|
|
21767
21808
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
21768
21809
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
@@ -21917,6 +21958,29 @@ var RunnerCameraDeviceUIFields = [
|
|
|
21917
21958
|
includes: "onboard"
|
|
21918
21959
|
}
|
|
21919
21960
|
},
|
|
21961
|
+
{
|
|
21962
|
+
key: "preRollInferenceEnabled",
|
|
21963
|
+
type: "boolean",
|
|
21964
|
+
style: "checkbox",
|
|
21965
|
+
label: "Detect in the pre-roll",
|
|
21966
|
+
description: "Run detection over the few seconds of footage the camera had already buffered when motion fired, so a subject that was in view before the trigger is found at the moment it appeared rather than seconds later. The burst is bounded and never delays live detection.",
|
|
21967
|
+
default: true
|
|
21968
|
+
},
|
|
21969
|
+
{
|
|
21970
|
+
key: "preRollInferenceFrames",
|
|
21971
|
+
type: "slider",
|
|
21972
|
+
label: "Pre-roll frames",
|
|
21973
|
+
description: "How many frames of buffered history may be detected on, per session. Higher samples the history more densely; 0 disables the pass.",
|
|
21974
|
+
min: preRollInferenceFramesField.min,
|
|
21975
|
+
max: preRollInferenceFramesField.max,
|
|
21976
|
+
step: preRollInferenceFramesField.step,
|
|
21977
|
+
default: preRollInferenceFramesField.default,
|
|
21978
|
+
showValue: true,
|
|
21979
|
+
showWhen: {
|
|
21980
|
+
field: "preRollInferenceEnabled",
|
|
21981
|
+
equals: true
|
|
21982
|
+
}
|
|
21983
|
+
},
|
|
21920
21984
|
{
|
|
21921
21985
|
key: "occupancyRecheckEnabled",
|
|
21922
21986
|
type: "boolean",
|
|
@@ -44271,6 +44335,10 @@ function resolveDetectionSettings(input) {
|
|
|
44271
44335
|
const occupancyRecheckEnabled = typeof userOccupancyRecheckEnabled === "boolean" ? userOccupancyRecheckEnabled : true;
|
|
44272
44336
|
const occupancyRecheckSec = mustNumber(flat, deviceId, "occupancyRecheckSec");
|
|
44273
44337
|
const occupancyRecheckFrames = mustNumber(flat, deviceId, "occupancyRecheckFrames");
|
|
44338
|
+
const userPreRollEnabled = raw["preRollInferenceEnabled"];
|
|
44339
|
+
const preRollInferenceEnabled = typeof userPreRollEnabled === "boolean" ? userPreRollEnabled : true;
|
|
44340
|
+
const userPreRollFrames = raw["preRollInferenceFrames"];
|
|
44341
|
+
const preRollInferenceFrames = typeof userPreRollFrames === "number" && Number.isFinite(userPreRollFrames) ? userPreRollFrames : 12;
|
|
44274
44342
|
return {
|
|
44275
44343
|
motionDetectionEnabled,
|
|
44276
44344
|
pipelineEnabled,
|
|
@@ -44288,7 +44356,9 @@ function resolveDetectionSettings(input) {
|
|
|
44288
44356
|
onboardMotionDrivesAnalyzer,
|
|
44289
44357
|
occupancyRecheckEnabled,
|
|
44290
44358
|
occupancyRecheckSec,
|
|
44291
|
-
occupancyRecheckFrames
|
|
44359
|
+
occupancyRecheckFrames,
|
|
44360
|
+
preRollInferenceEnabled,
|
|
44361
|
+
preRollInferenceFrames
|
|
44292
44362
|
};
|
|
44293
44363
|
}
|
|
44294
44364
|
/**
|
|
@@ -44346,7 +44416,9 @@ function buildDetectionConfigFromInputs(resolved, assigned) {
|
|
|
44346
44416
|
onboardMotionDrivesAnalyzer: resolved.onboardMotionDrivesAnalyzer,
|
|
44347
44417
|
occupancyRecheckEnabled: resolved.occupancyRecheckEnabled,
|
|
44348
44418
|
occupancyRecheckSec: resolved.occupancyRecheckSec,
|
|
44349
|
-
occupancyRecheckFrames: resolved.occupancyRecheckFrames
|
|
44419
|
+
occupancyRecheckFrames: resolved.occupancyRecheckFrames,
|
|
44420
|
+
preRollInferenceEnabled: resolved.preRollInferenceEnabled,
|
|
44421
|
+
preRollInferenceFrames: resolved.preRollInferenceFrames
|
|
44350
44422
|
};
|
|
44351
44423
|
}
|
|
44352
44424
|
/**
|
|
@@ -44371,6 +44443,8 @@ function detectionConfigEquals(a, b) {
|
|
|
44371
44443
|
if (a.occupancyRecheckEnabled !== b.occupancyRecheckEnabled) return false;
|
|
44372
44444
|
if (a.occupancyRecheckSec !== b.occupancyRecheckSec) return false;
|
|
44373
44445
|
if (a.occupancyRecheckFrames !== b.occupancyRecheckFrames) return false;
|
|
44446
|
+
if (a.preRollInferenceEnabled !== b.preRollInferenceEnabled) return false;
|
|
44447
|
+
if (a.preRollInferenceFrames !== b.preRollInferenceFrames) return false;
|
|
44374
44448
|
if (a.motionSources.length !== b.motionSources.length) return false;
|
|
44375
44449
|
for (const s of a.motionSources) if (!b.motionSources.includes(s)) return false;
|
|
44376
44450
|
return true;
|
|
@@ -44404,7 +44478,9 @@ function buildRunnerConfig(base, overrides) {
|
|
|
44404
44478
|
onboardMotionDrivesAnalyzer: config.onboardMotionDrivesAnalyzer,
|
|
44405
44479
|
occupancyRecheckEnabled: config.occupancyRecheckEnabled,
|
|
44406
44480
|
occupancyRecheckSec: config.occupancyRecheckSec,
|
|
44407
|
-
occupancyRecheckFrames: config.occupancyRecheckFrames
|
|
44481
|
+
occupancyRecheckFrames: config.occupancyRecheckFrames,
|
|
44482
|
+
preRollInferenceEnabled: config.preRollInferenceEnabled,
|
|
44483
|
+
preRollInferenceFrames: config.preRollInferenceFrames
|
|
44408
44484
|
};
|
|
44409
44485
|
}
|
|
44410
44486
|
//#endregion
|
|
@@ -51236,7 +51312,9 @@ var SessionDispatchController = class {
|
|
|
51236
51312
|
onboardMotionDrivesAnalyzer: config.onboardMotionDrivesAnalyzer,
|
|
51237
51313
|
occupancyRecheckEnabled: config.occupancyRecheckEnabled,
|
|
51238
51314
|
occupancyRecheckSec: config.occupancyRecheckSec,
|
|
51239
|
-
occupancyRecheckFrames: config.occupancyRecheckFrames
|
|
51315
|
+
occupancyRecheckFrames: config.occupancyRecheckFrames,
|
|
51316
|
+
preRollInferenceEnabled: config.preRollInferenceEnabled,
|
|
51317
|
+
preRollInferenceFrames: config.preRollInferenceFrames
|
|
51240
51318
|
};
|
|
51241
51319
|
await this.deps.attachOn(nodeId, watchConfig);
|
|
51242
51320
|
this.motionWatchByDevice.set(deviceId, nodeId);
|
|
@@ -51420,7 +51498,9 @@ var SessionDispatchController = class {
|
|
|
51420
51498
|
onboardMotionDrivesAnalyzer: config.onboardMotionDrivesAnalyzer,
|
|
51421
51499
|
occupancyRecheckEnabled: config.occupancyRecheckEnabled,
|
|
51422
51500
|
occupancyRecheckSec: config.occupancyRecheckSec,
|
|
51423
|
-
occupancyRecheckFrames: config.occupancyRecheckFrames
|
|
51501
|
+
occupancyRecheckFrames: config.occupancyRecheckFrames,
|
|
51502
|
+
preRollInferenceEnabled: config.preRollInferenceEnabled,
|
|
51503
|
+
preRollInferenceFrames: config.preRollInferenceFrames
|
|
51424
51504
|
};
|
|
51425
51505
|
const dispatchGuard = this.deps.ledger.markDispatching(deviceId);
|
|
51426
51506
|
try {
|
|
@@ -53338,7 +53418,7 @@ function buildDeviceSettingsSections(nodeOptions) {
|
|
|
53338
53418
|
tab: "detection-pipeline",
|
|
53339
53419
|
location: "top-tab",
|
|
53340
53420
|
order: 4,
|
|
53341
|
-
fields: [...RunnerCameraDeviceUIFields.filter((f) => f.key !== "detectionFps" && f.key !== "occupancyRecheckSec" && f.key !== "occupancyRecheckFrames"), {
|
|
53421
|
+
fields: [...RunnerCameraDeviceUIFields.filter((f) => f.key !== "detectionFps" && f.key !== "occupancyRecheckSec" && f.key !== "occupancyRecheckFrames" && f.key !== "preRollInferenceEnabled" && f.key !== "preRollInferenceFrames"), {
|
|
53342
53422
|
key: "motionStreamProfile",
|
|
53343
53423
|
type: "select",
|
|
53344
53424
|
label: "Motion Stream (analyzer)",
|
|
@@ -53486,6 +53566,15 @@ function buildDeviceSettingsSections(nodeOptions) {
|
|
|
53486
53566
|
description: "Periodic re-sampling to keep stationary objects / occupancy fresh while the camera is idle (watching).",
|
|
53487
53567
|
fields: RunnerCameraDeviceUIFields.filter((f) => f.key === "occupancyRecheckSec" || f.key === "occupancyRecheckFrames")
|
|
53488
53568
|
},
|
|
53569
|
+
{
|
|
53570
|
+
id: "pre-roll-detection",
|
|
53571
|
+
title: "Pre-roll detection",
|
|
53572
|
+
tab: "detection-pipeline",
|
|
53573
|
+
location: "top-tab",
|
|
53574
|
+
order: 8,
|
|
53575
|
+
description: "When motion opens a session the camera has already buffered a few seconds of footage. Detecting over it finds a subject at the moment it appeared instead of after the decoder has warmed up.",
|
|
53576
|
+
fields: RunnerCameraDeviceUIFields.filter((f) => f.key === "preRollInferenceEnabled" || f.key === "preRollInferenceFrames")
|
|
53577
|
+
},
|
|
53489
53578
|
{
|
|
53490
53579
|
id: "cluster-assignment",
|
|
53491
53580
|
title: "Cluster Assignment",
|
package/dist/index.mjs
CHANGED
|
@@ -21495,6 +21495,22 @@ var occupancyRecheckFramesField = {
|
|
|
21495
21495
|
step: 1
|
|
21496
21496
|
};
|
|
21497
21497
|
/**
|
|
21498
|
+
* Frames one PRE-ROLL catch-up burst may send to inference at session open.
|
|
21499
|
+
*
|
|
21500
|
+
* The default of 12 over a ~4 s retained window is one frame per ~333 ms of
|
|
21501
|
+
* footage, and costs ~480 ms of ONE inference permit at the 40 ms/frame this
|
|
21502
|
+
* fleet measures — one-shot, and only ever taken while a permit would still be
|
|
21503
|
+
* spare for live. `0` turns the burst off entirely (the history is still
|
|
21504
|
+
* decoded, because that is how the dial reaches a decodable GOP, and is then
|
|
21505
|
+
* discarded — the pre-D411 behaviour).
|
|
21506
|
+
*/
|
|
21507
|
+
var preRollInferenceFramesField = {
|
|
21508
|
+
min: 0,
|
|
21509
|
+
max: 30,
|
|
21510
|
+
default: 12,
|
|
21511
|
+
step: 1
|
|
21512
|
+
};
|
|
21513
|
+
/**
|
|
21498
21514
|
* Source enum for motion signals fed to the runner. Extensible — add
|
|
21499
21515
|
* new variants here when new motion-trigger paths are wired in
|
|
21500
21516
|
* (`wasm-cross-camera`, `event-bus-relay`, etc.). The runner uses
|
|
@@ -21735,6 +21751,31 @@ var RunnerCameraConfigSchema = object({
|
|
|
21735
21751
|
* to every occupancy rule until something moved in front of it. The churn is
|
|
21736
21752
|
* now paid on the interval instead — see `occupancyRecheckSecField`.
|
|
21737
21753
|
*/
|
|
21754
|
+
/**
|
|
21755
|
+
* Infer the session's PRE-ROLL — the retained history the restreamer replays
|
|
21756
|
+
* at session open — instead of decoding it and throwing it away.
|
|
21757
|
+
*
|
|
21758
|
+
* DEFAULT `true`, and the default is the argument. This is not a new
|
|
21759
|
+
* capability being offered cautiously: the pre-roll is ALREADY requested,
|
|
21760
|
+
* already served, already decoded and already paid for on every on-motion
|
|
21761
|
+
* detection session that asks for history. What shipped was a last-moment
|
|
21762
|
+
* discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
|
|
21763
|
+
* arriving inside a few hundred ms of wall clock looks to it like one frame's
|
|
21764
|
+
* worth. Device 617, 2026-09-08: a re-run of the SAME model over the stored
|
|
21765
|
+
* recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
|
|
21766
|
+
* 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
|
|
21767
|
+
* was decoded, and was freed.
|
|
21768
|
+
*
|
|
21769
|
+
* Shipping that as opt-in would ship the bug: an operator cannot discover a
|
|
21770
|
+
* setting whose absence looks exactly like a camera that noticed the cyclist
|
|
21771
|
+
* late. What makes ON safe is not a switch but the BOUND —
|
|
21772
|
+
* `preRollInferenceFrames`, a wall-clock ceiling, and a lane that never takes
|
|
21773
|
+
* the last inference permit — so the switch exists for the camera where the
|
|
21774
|
+
* history is worthless (a doorbell whose subject is always already at the
|
|
21775
|
+
* door), not as a hedge against the feature.
|
|
21776
|
+
*/
|
|
21777
|
+
preRollInferenceEnabled: boolean().default(true),
|
|
21778
|
+
preRollInferenceFrames: number().min(preRollInferenceFramesField.min).max(preRollInferenceFramesField.max).default(preRollInferenceFramesField.default),
|
|
21738
21779
|
occupancyRecheckEnabled: boolean().default(true),
|
|
21739
21780
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
21740
21781
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
@@ -21889,6 +21930,29 @@ var RunnerCameraDeviceUIFields = [
|
|
|
21889
21930
|
includes: "onboard"
|
|
21890
21931
|
}
|
|
21891
21932
|
},
|
|
21933
|
+
{
|
|
21934
|
+
key: "preRollInferenceEnabled",
|
|
21935
|
+
type: "boolean",
|
|
21936
|
+
style: "checkbox",
|
|
21937
|
+
label: "Detect in the pre-roll",
|
|
21938
|
+
description: "Run detection over the few seconds of footage the camera had already buffered when motion fired, so a subject that was in view before the trigger is found at the moment it appeared rather than seconds later. The burst is bounded and never delays live detection.",
|
|
21939
|
+
default: true
|
|
21940
|
+
},
|
|
21941
|
+
{
|
|
21942
|
+
key: "preRollInferenceFrames",
|
|
21943
|
+
type: "slider",
|
|
21944
|
+
label: "Pre-roll frames",
|
|
21945
|
+
description: "How many frames of buffered history may be detected on, per session. Higher samples the history more densely; 0 disables the pass.",
|
|
21946
|
+
min: preRollInferenceFramesField.min,
|
|
21947
|
+
max: preRollInferenceFramesField.max,
|
|
21948
|
+
step: preRollInferenceFramesField.step,
|
|
21949
|
+
default: preRollInferenceFramesField.default,
|
|
21950
|
+
showValue: true,
|
|
21951
|
+
showWhen: {
|
|
21952
|
+
field: "preRollInferenceEnabled",
|
|
21953
|
+
equals: true
|
|
21954
|
+
}
|
|
21955
|
+
},
|
|
21892
21956
|
{
|
|
21893
21957
|
key: "occupancyRecheckEnabled",
|
|
21894
21958
|
type: "boolean",
|
|
@@ -44243,6 +44307,10 @@ function resolveDetectionSettings(input) {
|
|
|
44243
44307
|
const occupancyRecheckEnabled = typeof userOccupancyRecheckEnabled === "boolean" ? userOccupancyRecheckEnabled : true;
|
|
44244
44308
|
const occupancyRecheckSec = mustNumber(flat, deviceId, "occupancyRecheckSec");
|
|
44245
44309
|
const occupancyRecheckFrames = mustNumber(flat, deviceId, "occupancyRecheckFrames");
|
|
44310
|
+
const userPreRollEnabled = raw["preRollInferenceEnabled"];
|
|
44311
|
+
const preRollInferenceEnabled = typeof userPreRollEnabled === "boolean" ? userPreRollEnabled : true;
|
|
44312
|
+
const userPreRollFrames = raw["preRollInferenceFrames"];
|
|
44313
|
+
const preRollInferenceFrames = typeof userPreRollFrames === "number" && Number.isFinite(userPreRollFrames) ? userPreRollFrames : 12;
|
|
44246
44314
|
return {
|
|
44247
44315
|
motionDetectionEnabled,
|
|
44248
44316
|
pipelineEnabled,
|
|
@@ -44260,7 +44328,9 @@ function resolveDetectionSettings(input) {
|
|
|
44260
44328
|
onboardMotionDrivesAnalyzer,
|
|
44261
44329
|
occupancyRecheckEnabled,
|
|
44262
44330
|
occupancyRecheckSec,
|
|
44263
|
-
occupancyRecheckFrames
|
|
44331
|
+
occupancyRecheckFrames,
|
|
44332
|
+
preRollInferenceEnabled,
|
|
44333
|
+
preRollInferenceFrames
|
|
44264
44334
|
};
|
|
44265
44335
|
}
|
|
44266
44336
|
/**
|
|
@@ -44318,7 +44388,9 @@ function buildDetectionConfigFromInputs(resolved, assigned) {
|
|
|
44318
44388
|
onboardMotionDrivesAnalyzer: resolved.onboardMotionDrivesAnalyzer,
|
|
44319
44389
|
occupancyRecheckEnabled: resolved.occupancyRecheckEnabled,
|
|
44320
44390
|
occupancyRecheckSec: resolved.occupancyRecheckSec,
|
|
44321
|
-
occupancyRecheckFrames: resolved.occupancyRecheckFrames
|
|
44391
|
+
occupancyRecheckFrames: resolved.occupancyRecheckFrames,
|
|
44392
|
+
preRollInferenceEnabled: resolved.preRollInferenceEnabled,
|
|
44393
|
+
preRollInferenceFrames: resolved.preRollInferenceFrames
|
|
44322
44394
|
};
|
|
44323
44395
|
}
|
|
44324
44396
|
/**
|
|
@@ -44343,6 +44415,8 @@ function detectionConfigEquals(a, b) {
|
|
|
44343
44415
|
if (a.occupancyRecheckEnabled !== b.occupancyRecheckEnabled) return false;
|
|
44344
44416
|
if (a.occupancyRecheckSec !== b.occupancyRecheckSec) return false;
|
|
44345
44417
|
if (a.occupancyRecheckFrames !== b.occupancyRecheckFrames) return false;
|
|
44418
|
+
if (a.preRollInferenceEnabled !== b.preRollInferenceEnabled) return false;
|
|
44419
|
+
if (a.preRollInferenceFrames !== b.preRollInferenceFrames) return false;
|
|
44346
44420
|
if (a.motionSources.length !== b.motionSources.length) return false;
|
|
44347
44421
|
for (const s of a.motionSources) if (!b.motionSources.includes(s)) return false;
|
|
44348
44422
|
return true;
|
|
@@ -44376,7 +44450,9 @@ function buildRunnerConfig(base, overrides) {
|
|
|
44376
44450
|
onboardMotionDrivesAnalyzer: config.onboardMotionDrivesAnalyzer,
|
|
44377
44451
|
occupancyRecheckEnabled: config.occupancyRecheckEnabled,
|
|
44378
44452
|
occupancyRecheckSec: config.occupancyRecheckSec,
|
|
44379
|
-
occupancyRecheckFrames: config.occupancyRecheckFrames
|
|
44453
|
+
occupancyRecheckFrames: config.occupancyRecheckFrames,
|
|
44454
|
+
preRollInferenceEnabled: config.preRollInferenceEnabled,
|
|
44455
|
+
preRollInferenceFrames: config.preRollInferenceFrames
|
|
44380
44456
|
};
|
|
44381
44457
|
}
|
|
44382
44458
|
//#endregion
|
|
@@ -51208,7 +51284,9 @@ var SessionDispatchController = class {
|
|
|
51208
51284
|
onboardMotionDrivesAnalyzer: config.onboardMotionDrivesAnalyzer,
|
|
51209
51285
|
occupancyRecheckEnabled: config.occupancyRecheckEnabled,
|
|
51210
51286
|
occupancyRecheckSec: config.occupancyRecheckSec,
|
|
51211
|
-
occupancyRecheckFrames: config.occupancyRecheckFrames
|
|
51287
|
+
occupancyRecheckFrames: config.occupancyRecheckFrames,
|
|
51288
|
+
preRollInferenceEnabled: config.preRollInferenceEnabled,
|
|
51289
|
+
preRollInferenceFrames: config.preRollInferenceFrames
|
|
51212
51290
|
};
|
|
51213
51291
|
await this.deps.attachOn(nodeId, watchConfig);
|
|
51214
51292
|
this.motionWatchByDevice.set(deviceId, nodeId);
|
|
@@ -51392,7 +51470,9 @@ var SessionDispatchController = class {
|
|
|
51392
51470
|
onboardMotionDrivesAnalyzer: config.onboardMotionDrivesAnalyzer,
|
|
51393
51471
|
occupancyRecheckEnabled: config.occupancyRecheckEnabled,
|
|
51394
51472
|
occupancyRecheckSec: config.occupancyRecheckSec,
|
|
51395
|
-
occupancyRecheckFrames: config.occupancyRecheckFrames
|
|
51473
|
+
occupancyRecheckFrames: config.occupancyRecheckFrames,
|
|
51474
|
+
preRollInferenceEnabled: config.preRollInferenceEnabled,
|
|
51475
|
+
preRollInferenceFrames: config.preRollInferenceFrames
|
|
51396
51476
|
};
|
|
51397
51477
|
const dispatchGuard = this.deps.ledger.markDispatching(deviceId);
|
|
51398
51478
|
try {
|
|
@@ -53310,7 +53390,7 @@ function buildDeviceSettingsSections(nodeOptions) {
|
|
|
53310
53390
|
tab: "detection-pipeline",
|
|
53311
53391
|
location: "top-tab",
|
|
53312
53392
|
order: 4,
|
|
53313
|
-
fields: [...RunnerCameraDeviceUIFields.filter((f) => f.key !== "detectionFps" && f.key !== "occupancyRecheckSec" && f.key !== "occupancyRecheckFrames"), {
|
|
53393
|
+
fields: [...RunnerCameraDeviceUIFields.filter((f) => f.key !== "detectionFps" && f.key !== "occupancyRecheckSec" && f.key !== "occupancyRecheckFrames" && f.key !== "preRollInferenceEnabled" && f.key !== "preRollInferenceFrames"), {
|
|
53314
53394
|
key: "motionStreamProfile",
|
|
53315
53395
|
type: "select",
|
|
53316
53396
|
label: "Motion Stream (analyzer)",
|
|
@@ -53458,6 +53538,15 @@ function buildDeviceSettingsSections(nodeOptions) {
|
|
|
53458
53538
|
description: "Periodic re-sampling to keep stationary objects / occupancy fresh while the camera is idle (watching).",
|
|
53459
53539
|
fields: RunnerCameraDeviceUIFields.filter((f) => f.key === "occupancyRecheckSec" || f.key === "occupancyRecheckFrames")
|
|
53460
53540
|
},
|
|
53541
|
+
{
|
|
53542
|
+
id: "pre-roll-detection",
|
|
53543
|
+
title: "Pre-roll detection",
|
|
53544
|
+
tab: "detection-pipeline",
|
|
53545
|
+
location: "top-tab",
|
|
53546
|
+
order: 8,
|
|
53547
|
+
description: "When motion opens a session the camera has already buffered a few seconds of footage. Detecting over it finds a subject at the moment it appeared instead of after the decoder has warmed up.",
|
|
53548
|
+
fields: RunnerCameraDeviceUIFields.filter((f) => f.key === "preRollInferenceEnabled" || f.key === "preRollInferenceFrames")
|
|
53549
|
+
},
|
|
53461
53550
|
{
|
|
53462
53551
|
id: "cluster-assignment",
|
|
53463
53552
|
title: "Cluster Assignment",
|
package/dist/remoteEntry.js
CHANGED
|
@@ -30,7 +30,7 @@ async function d(e) {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
async function f() {
|
|
33
|
-
return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-
|
|
33
|
+
return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-CpiA9AcV.mjs")).catch((e) => {
|
|
34
34
|
throw l = void 0, e;
|
|
35
35
|
}), l;
|
|
36
36
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-pipeline-orchestrator",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.176",
|
|
4
4
|
"description": "Hub-side camera-to-agent load balancer — tracks runner capacity and dispatches attachCamera calls to the optimal pipeline-runner instance",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|