@camstack/addon-post-analysis 1.2.335 → 1.2.337
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/{clip-model-registry-D7e1kEqc.mjs → clip-model-registry-CD0UYoAb.mjs} +249 -92
- package/dist/{clip-model-registry-BxUHFGUg.js → clip-model-registry-CML1YOOa.js} +259 -90
- package/dist/embedding-encoder/index.js +2 -2
- package/dist/embedding-encoder/index.mjs +2 -2
- package/dist/pipeline-analytics/_stub.js +2 -2
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-NmXf2bwM.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DGaCYQ8R.mjs} +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D7NMYqUM.mjs +26 -0
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-bIOxWlPv.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-DM07J5TU.mjs → hostInit-Dlhtn22B.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +148 -61
- package/dist/pipeline-analytics/index.mjs +148 -61
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BMP6Hyub.mjs +0 -26
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DxUsRAkr.mjs +0 -26
package/THIRD_PARTY_MODELS.md
CHANGED
|
@@ -134,7 +134,7 @@ entry kept resolvable for a saved selection but no longer offered.
|
|
|
134
134
|
|
|
135
135
|
| Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
|
|
136
136
|
| --- | --- | --- | --- | --- | --- |
|
|
137
|
-
| `yunet-2023mar` (default) | [OpenCV Zoo YuNet](https://github.com/opencv/opencv_zoo/tree/main/models/face_detection_yunet) | BSD-3-Clause (`BSD-3-Clause.txt`) / MIT (`MIT-yunet-reference.txt`) | WIDER FACE: research-oriented terms; images CC BY-NC-ND | input contract baked into the graph (the pool RGB /255 becomes the upstream BGR 0..255: Mul(255) plus a channel Gather); internal tensor names cleared in the OpenVINO IR; ONNX fp32, OpenVINO IR fp32, CoreML fp16 (scripts/build-yunet-model.py) | mirror `faceDetection/yunet` |
|
|
137
|
+
| `yunet-2023mar` (default) | [OpenCV Zoo YuNet](https://github.com/opencv/opencv_zoo/tree/main/models/face_detection_yunet) | BSD-3-Clause (`BSD-3-Clause.txt`) / MIT (`MIT-yunet-reference.txt`) | WIDER FACE: research-oriented terms; images CC BY-NC-ND | input contract baked into the graph (the pool RGB /255 becomes the upstream BGR 0..255: Mul(255) plus a channel Gather); internal tensor names cleared in the OpenVINO IR; ONNX fp32, OpenVINO IR fp32, CoreML fp16 (scripts/build-yunet-model.py); Edge TPU build: the bake folded into the first Conv, full-integer int8 post-training quantisation calibrated on CamStack person crops, compiled with edgetpu_compiler 14 (scripts/build-yunet-edgetpu.py) | mirror `faceDetection/yunet` |
|
|
138
138
|
|
|
139
139
|
### Face recognition
|
|
140
140
|
|
|
@@ -146,7 +146,7 @@ entry kept resolvable for a saved selection but no longer offered.
|
|
|
146
146
|
|
|
147
147
|
| Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
|
|
148
148
|
| --- | --- | --- | --- | --- | --- |
|
|
149
|
-
| `yolox-tiny-plate` (default) | [open-lpr models (faisalthaheem/open-lpr-models), YOLOX-tiny](https://huggingface.co/faisalthaheem/open-lpr-models) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | Simanno annotated plate corpus plus community-contributed photographs, pseudo-labelled by a teacher model (not published; the upstream NOTICE says the photographs were uploaded without consent obtained): UNKNOWN | input contract baked into the graph (static 1x3x640x640 RGB /255 becomes the upstream BGR 0..255: Mul(255) plus a channel Gather) and the output reshaped to the YOLOv8 layout (cx, cy, w, h, obj*cls); ONNX fp32, OpenVINO IR fp16, CoreML fp16 (scripts/build-yolox-plate-model.py) | mirror `plateDetection/yolox-tiny-plate` |
|
|
149
|
+
| `yolox-tiny-plate` (default) | [open-lpr models (faisalthaheem/open-lpr-models), YOLOX-tiny](https://huggingface.co/faisalthaheem/open-lpr-models) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | Simanno annotated plate corpus plus community-contributed photographs, pseudo-labelled by a teacher model (not published; the upstream NOTICE says the photographs were uploaded without consent obtained): UNKNOWN | input contract baked into the graph (static 1x3x640x640 RGB /255 becomes the upstream BGR 0..255: Mul(255) plus a channel Gather) and the output reshaped to the YOLOv8 layout (cx, cy, w, h, obj*cls); ONNX fp32, OpenVINO IR fp16, CoreML fp16 (scripts/build-yolox-plate-model.py); Edge TPU build: the Focus stem rewritten as the equivalent 6x6 stride-2 Conv with the input bake folded into it, the graph cut before the grid decode (raw per-stride head), full-integer int8 post-training quantisation calibrated on CamStack vehicle crops, compiled with edgetpu_compiler 14 (scripts/build-yolox-plate-edgetpu.py) | mirror `plateDetection/yolox-tiny-plate` |
|
|
150
150
|
|
|
151
151
|
### Licence plate reading
|
|
152
152
|
|
|
@@ -11529,89 +11529,51 @@ function resolveClipSearchMinScore(meta, request) {
|
|
|
11529
11529
|
const factor = CLIP_STRICTNESS_FACTOR[request.strictness ?? "loose"];
|
|
11530
11530
|
return Math.min(1, Math.round(meta.searchMinScore * factor * 1e3) / 1e3);
|
|
11531
11531
|
}
|
|
11532
|
-
/**
|
|
11533
|
-
|
|
11534
|
-
* only those.
|
|
11535
|
-
*
|
|
11536
|
-
* `preserveOriginal: false` below is the whole reason this set exists: the
|
|
11537
|
-
* executor maps each raw COCO label onto its macro and DROPS everything else,
|
|
11538
|
-
* so a tracked detection's `className` is always one of {@link MACRO_LABELS}.
|
|
11539
|
-
* Any surface that indexes counts by class name — the ZoneAnalytics occupancy
|
|
11540
|
-
* snapshot's `byClass`, and therefore every occupancy rule — can match nothing
|
|
11541
|
-
* else. Derived from the catalog, never hand-listed, so a new macro joins it by
|
|
11542
|
-
* being declared once.
|
|
11543
|
-
*
|
|
11544
|
-
* Cost of not having it, 2026-08-12: the notification rule editor offered the
|
|
11545
|
-
* full taxonomy for an occupancy class (occupancy is the one condition that
|
|
11546
|
-
* does not go through the engine's macro-expanding `expandClassSelector`), two
|
|
11547
|
-
* live rules were authored on `car`, and both counters read 0 forever.
|
|
11548
|
-
*/
|
|
11549
|
-
var DETECTION_MACRO_CLASSES = new Set([
|
|
11550
|
-
{
|
|
11551
|
-
id: "person",
|
|
11552
|
-
name: "Person"
|
|
11553
|
-
},
|
|
11554
|
-
{
|
|
11555
|
-
id: "vehicle",
|
|
11556
|
-
name: "Vehicle"
|
|
11557
|
-
},
|
|
11558
|
-
{
|
|
11559
|
-
id: "animal",
|
|
11560
|
-
name: "Animal"
|
|
11561
|
-
},
|
|
11562
|
-
{
|
|
11563
|
-
id: "package",
|
|
11564
|
-
name: "Package"
|
|
11565
|
-
}
|
|
11566
|
-
].map((l) => l.id));
|
|
11567
|
-
/** True when `className` is a macro the detector can actually emit (and hence a
|
|
11568
|
-
* class a count can be keyed on) — see {@link DETECTION_MACRO_CLASSES}. */
|
|
11569
|
-
function isDetectionMacroClass(className) {
|
|
11570
|
-
return DETECTION_MACRO_CLASSES.has(className.trim().toLowerCase());
|
|
11571
|
-
}
|
|
11572
|
-
var COCO_TO_MACRO = {
|
|
11573
|
-
mapping: {
|
|
11574
|
-
person: "person",
|
|
11575
|
-
bicycle: "vehicle",
|
|
11576
|
-
car: "vehicle",
|
|
11577
|
-
motorcycle: "vehicle",
|
|
11578
|
-
airplane: "vehicle",
|
|
11579
|
-
bus: "vehicle",
|
|
11580
|
-
train: "vehicle",
|
|
11581
|
-
truck: "vehicle",
|
|
11582
|
-
boat: "vehicle",
|
|
11583
|
-
bird: "animal",
|
|
11584
|
-
cat: "animal",
|
|
11585
|
-
dog: "animal",
|
|
11586
|
-
horse: "animal",
|
|
11587
|
-
sheep: "animal",
|
|
11588
|
-
cow: "animal",
|
|
11589
|
-
elephant: "animal",
|
|
11590
|
-
bear: "animal",
|
|
11591
|
-
zebra: "animal",
|
|
11592
|
-
giraffe: "animal",
|
|
11593
|
-
suitcase: "package",
|
|
11594
|
-
backpack: "package",
|
|
11595
|
-
handbag: "package"
|
|
11596
|
-
},
|
|
11597
|
-
preserveOriginal: false
|
|
11598
|
-
};
|
|
11599
|
-
/** Steps a root detector may declare it fills. */
|
|
11600
|
-
var FILLABLE_STEP_IDS = [
|
|
11532
|
+
/** Steps whose effect a root label can BE. */
|
|
11533
|
+
var LABEL_SUPPLY_STEP_IDS = [
|
|
11601
11534
|
"animal-classifier",
|
|
11602
11535
|
"vehicle-classifier",
|
|
11603
11536
|
"package-detection"
|
|
11604
11537
|
];
|
|
11605
|
-
/**
|
|
11606
|
-
|
|
11607
|
-
|
|
11608
|
-
|
|
11538
|
+
/** Steps whose box a root detection can BE. */
|
|
11539
|
+
var CROP_SUPPLY_STEP_IDS = ["plate-detection", "face-detection"];
|
|
11540
|
+
/** Every step a root model can supply. */
|
|
11541
|
+
var ROOT_SUPPLIABLE_STEP_IDS = [...LABEL_SUPPLY_STEP_IDS, ...CROP_SUPPLY_STEP_IDS];
|
|
11542
|
+
/** Narrow a step id to a suppliable one — type guard, not a cast. */
|
|
11543
|
+
function isRootSuppliableStepId(value) {
|
|
11544
|
+
return ROOT_SUPPLIABLE_STEP_IDS.some((id) => id === value);
|
|
11545
|
+
}
|
|
11546
|
+
/** Narrow a step id to a label-kind one. */
|
|
11547
|
+
function isLabelSupplyStepId(value) {
|
|
11548
|
+
return LABEL_SUPPLY_STEP_IDS.some((id) => id === value);
|
|
11549
|
+
}
|
|
11550
|
+
var CROP_SUPPLY_SOURCES = {
|
|
11551
|
+
"plate-detection": {
|
|
11552
|
+
rootLabels: ["license_plate"],
|
|
11553
|
+
parentMacro: "vehicle",
|
|
11554
|
+
childClass: "plate",
|
|
11555
|
+
servedChildSteps: ["plate-ocr"],
|
|
11556
|
+
use: "as-output"
|
|
11557
|
+
},
|
|
11558
|
+
"face-detection": {
|
|
11559
|
+
rootLabels: ["face"],
|
|
11560
|
+
parentMacro: "person",
|
|
11561
|
+
childClass: "face",
|
|
11562
|
+
servedChildSteps: ["face-embedding"],
|
|
11563
|
+
use: "refine",
|
|
11564
|
+
minRootInputPx: 640
|
|
11565
|
+
}
|
|
11566
|
+
};
|
|
11609
11567
|
/** The step a linked label stands in for, or `undefined` for any other attribution. */
|
|
11610
11568
|
function linkedStepOf(attributionStepId) {
|
|
11611
11569
|
if (attributionStepId === void 0) return void 0;
|
|
11612
11570
|
if (!attributionStepId.startsWith("detector-link:")) return void 0;
|
|
11613
11571
|
const stepId = attributionStepId.slice(14);
|
|
11614
|
-
return
|
|
11572
|
+
return isLabelSupplyStepId(stepId) ? stepId : void 0;
|
|
11573
|
+
}
|
|
11574
|
+
/** The child steps of a crop-kind step that still run on the root's box. */
|
|
11575
|
+
function rootSupplyServes(stepId) {
|
|
11576
|
+
return CROP_SUPPLY_SOURCES[stepId].servedChildSteps;
|
|
11615
11577
|
}
|
|
11616
11578
|
var MODEL_FORMATS = [
|
|
11617
11579
|
"onnx",
|
|
@@ -11745,12 +11707,35 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
|
|
|
11745
11707
|
/** True when the weights or their data forbid commercial use. */
|
|
11746
11708
|
nonCommercial: boolean().optional()
|
|
11747
11709
|
}));
|
|
11748
|
-
/**
|
|
11749
|
-
|
|
11750
|
-
|
|
11710
|
+
/**
|
|
11711
|
+
* One step a ROOT detector can supply from its own output (D730) — see
|
|
11712
|
+
* `ModelCatalogEntry.suppliesSteps`.
|
|
11713
|
+
*
|
|
11714
|
+
* - `label`: the root's raw class IS the step's answer. `labelToEffect` maps
|
|
11715
|
+
* the root's label to the step's vocabulary; `uncovered` is the vocabulary
|
|
11716
|
+
* the root cannot produce (shown as unavailable, never a blocker).
|
|
11717
|
+
* - `crop`: the root draws the box the step would have found (`license_plate`
|
|
11718
|
+
* for plate-detection, `face` for face-detection). The box becomes a detail
|
|
11719
|
+
* child of the `parentMacro` detection that contains it — never a track.
|
|
11720
|
+
*/
|
|
11721
|
+
var RootStepSupplySchema = discriminatedUnion("kind", [object({
|
|
11722
|
+
kind: literal("label"),
|
|
11723
|
+
stepId: _enum(LABEL_SUPPLY_STEP_IDS),
|
|
11751
11724
|
labelToEffect: record(string(), string()),
|
|
11752
11725
|
uncovered: array(string()).readonly()
|
|
11753
|
-
})
|
|
11726
|
+
}), object({
|
|
11727
|
+
kind: literal("crop"),
|
|
11728
|
+
stepId: _enum(CROP_SUPPLY_STEP_IDS),
|
|
11729
|
+
rootLabels: array(string()).readonly(),
|
|
11730
|
+
parentMacro: _enum(["vehicle", "person"]),
|
|
11731
|
+
childClass: _enum(["plate", "face"]),
|
|
11732
|
+
/**
|
|
11733
|
+
* The root's smaller input side, stamped on read by `rootSuppliesOf` from
|
|
11734
|
+
* the model entry — what a step's `minRootInputPx` gate judges. Never
|
|
11735
|
+
* stored by an import.
|
|
11736
|
+
*/
|
|
11737
|
+
rootInputPx: number().int().positive().optional()
|
|
11738
|
+
})]);
|
|
11754
11739
|
var ModelCatalogEntrySchema = object({
|
|
11755
11740
|
id: string(),
|
|
11756
11741
|
name: string(),
|
|
@@ -11877,15 +11862,15 @@ var ModelCatalogEntrySchema = object({
|
|
|
11877
11862
|
*/
|
|
11878
11863
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
11879
11864
|
/**
|
|
11880
|
-
* The pipeline steps this ROOT detector
|
|
11881
|
-
* its labels name
|
|
11882
|
-
*
|
|
11883
|
-
* labelmap by `
|
|
11884
|
-
*
|
|
11885
|
-
*
|
|
11886
|
-
* `
|
|
11865
|
+
* The pipeline steps this ROOT detector can supply from its own output
|
|
11866
|
+
* (D730): its labels name a step's effect (`deer` for `animal-classifier`)
|
|
11867
|
+
* or draw a step's box (`license_plate` for `plate-detection`). Computed at
|
|
11868
|
+
* import from THIS model's labelmap by `deriveRootSupplies`, never written
|
|
11869
|
+
* by hand and never assumed per family; a row without it is derived on read
|
|
11870
|
+
* (`rootSuppliesOf`). Whether a camera uses it is the step's own
|
|
11871
|
+
* `useRootModel` flag (`resolveRootSupply`).
|
|
11887
11872
|
*/
|
|
11888
|
-
|
|
11873
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional(),
|
|
11889
11874
|
/**
|
|
11890
11875
|
* The model's CLIP feature-space contract (text encoder, dimension, vector
|
|
11891
11876
|
* index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
|
|
@@ -21529,6 +21514,73 @@ var notificationOutputCapability = {
|
|
|
21529
21514
|
})
|
|
21530
21515
|
}
|
|
21531
21516
|
};
|
|
21517
|
+
/**
|
|
21518
|
+
* The class names a per-class COUNT can ever be keyed on — the macro ids, and
|
|
21519
|
+
* only those.
|
|
21520
|
+
*
|
|
21521
|
+
* `preserveOriginal: false` below is the whole reason this set exists: the
|
|
21522
|
+
* executor maps each raw COCO label onto its macro and DROPS everything else,
|
|
21523
|
+
* so a tracked detection's `className` is always one of {@link MACRO_LABELS}.
|
|
21524
|
+
* Any surface that indexes counts by class name — the ZoneAnalytics occupancy
|
|
21525
|
+
* snapshot's `byClass`, and therefore every occupancy rule — can match nothing
|
|
21526
|
+
* else. Derived from the catalog, never hand-listed, so a new macro joins it by
|
|
21527
|
+
* being declared once.
|
|
21528
|
+
*
|
|
21529
|
+
* Cost of not having it, 2026-08-12: the notification rule editor offered the
|
|
21530
|
+
* full taxonomy for an occupancy class (occupancy is the one condition that
|
|
21531
|
+
* does not go through the engine's macro-expanding `expandClassSelector`), two
|
|
21532
|
+
* live rules were authored on `car`, and both counters read 0 forever.
|
|
21533
|
+
*/
|
|
21534
|
+
var DETECTION_MACRO_CLASSES = new Set([
|
|
21535
|
+
{
|
|
21536
|
+
id: "person",
|
|
21537
|
+
name: "Person"
|
|
21538
|
+
},
|
|
21539
|
+
{
|
|
21540
|
+
id: "vehicle",
|
|
21541
|
+
name: "Vehicle"
|
|
21542
|
+
},
|
|
21543
|
+
{
|
|
21544
|
+
id: "animal",
|
|
21545
|
+
name: "Animal"
|
|
21546
|
+
},
|
|
21547
|
+
{
|
|
21548
|
+
id: "package",
|
|
21549
|
+
name: "Package"
|
|
21550
|
+
}
|
|
21551
|
+
].map((l) => l.id));
|
|
21552
|
+
/** True when `className` is a macro the detector can actually emit (and hence a
|
|
21553
|
+
* class a count can be keyed on) — see {@link DETECTION_MACRO_CLASSES}. */
|
|
21554
|
+
function isDetectionMacroClass(className) {
|
|
21555
|
+
return DETECTION_MACRO_CLASSES.has(className.trim().toLowerCase());
|
|
21556
|
+
}
|
|
21557
|
+
var COCO_TO_MACRO = {
|
|
21558
|
+
mapping: {
|
|
21559
|
+
person: "person",
|
|
21560
|
+
bicycle: "vehicle",
|
|
21561
|
+
car: "vehicle",
|
|
21562
|
+
motorcycle: "vehicle",
|
|
21563
|
+
airplane: "vehicle",
|
|
21564
|
+
bus: "vehicle",
|
|
21565
|
+
train: "vehicle",
|
|
21566
|
+
truck: "vehicle",
|
|
21567
|
+
boat: "vehicle",
|
|
21568
|
+
bird: "animal",
|
|
21569
|
+
cat: "animal",
|
|
21570
|
+
dog: "animal",
|
|
21571
|
+
horse: "animal",
|
|
21572
|
+
sheep: "animal",
|
|
21573
|
+
cow: "animal",
|
|
21574
|
+
elephant: "animal",
|
|
21575
|
+
bear: "animal",
|
|
21576
|
+
zebra: "animal",
|
|
21577
|
+
giraffe: "animal",
|
|
21578
|
+
suitcase: "package",
|
|
21579
|
+
backpack: "package",
|
|
21580
|
+
handbag: "package"
|
|
21581
|
+
},
|
|
21582
|
+
preserveOriginal: false
|
|
21583
|
+
};
|
|
21532
21584
|
var AUDIO_MACRO_LABELS = [
|
|
21533
21585
|
{
|
|
21534
21586
|
id: "speech",
|
|
@@ -24078,7 +24130,7 @@ var NC_CONDITION_CATALOG = [
|
|
|
24078
24130
|
operator: "in",
|
|
24079
24131
|
appliesTo: ["immediate", "track-end"],
|
|
24080
24132
|
phase: "P1",
|
|
24081
|
-
description: "Only recognised people. Selecting NOBODY means every identity in the face gallery; selecting some narrows to those. Matched on the gallery id, so renaming a person does not break the rule. On Immediate delivery the name must already be known when an event is written — choose Immediate, grouped to wait for it
|
|
24133
|
+
description: "Only recognised people. Selecting NOBODY means every identity in the face gallery; selecting some narrows to those. Matched on the gallery id, so renaming a person does not break the rule. On Immediate delivery the name must already be known when an event is written — choose Immediate, grouped to wait for it."
|
|
24082
24134
|
},
|
|
24083
24135
|
{
|
|
24084
24136
|
id: "plates",
|
|
@@ -28499,6 +28551,34 @@ var pipelineAnalyticsCapability = {
|
|
|
28499
28551
|
}
|
|
28500
28552
|
};
|
|
28501
28553
|
/**
|
|
28554
|
+
* A root model's boxes standing in for one crop-kind step's own inference
|
|
28555
|
+
* (D730) — see `runPipeline.suppliedRoot`.
|
|
28556
|
+
*/
|
|
28557
|
+
var SuppliedRootOutputSchema = object({
|
|
28558
|
+
stepId: string(),
|
|
28559
|
+
/** The root model that drew the boxes — stamped on the result. */
|
|
28560
|
+
modelId: string(),
|
|
28561
|
+
detections: array(object({
|
|
28562
|
+
/** `[x1, y1, x2, y2]` in the pixels of the call's image. */
|
|
28563
|
+
bbox: tuple([
|
|
28564
|
+
number(),
|
|
28565
|
+
number(),
|
|
28566
|
+
number(),
|
|
28567
|
+
number()
|
|
28568
|
+
]),
|
|
28569
|
+
score: number(),
|
|
28570
|
+
/**
|
|
28571
|
+
* Five facial landmarks in the same pixels — a face the step's own
|
|
28572
|
+
* detector already re-found inside a root face box (D730), so its
|
|
28573
|
+
* embedder child aligns it exactly as it aligns any detected face.
|
|
28574
|
+
*/
|
|
28575
|
+
landmarks: array(object({
|
|
28576
|
+
x: number(),
|
|
28577
|
+
y: number()
|
|
28578
|
+
})).optional()
|
|
28579
|
+
})).min(1)
|
|
28580
|
+
});
|
|
28581
|
+
/**
|
|
28502
28582
|
* Reference to the frame's retained NATIVE surface + the parent crop's placement
|
|
28503
28583
|
* within the frame, so the executor can re-cut a leaf child ROI at native
|
|
28504
28584
|
* resolution on the detail plane. See the `runPipeline` `nativeCropRef` field.
|
|
@@ -28629,7 +28709,7 @@ var PipelineModelOptionSchema = object({
|
|
|
28629
28709
|
legacy: boolean().optional(),
|
|
28630
28710
|
provider: ModelProviderIdSchema.optional(),
|
|
28631
28711
|
defaultConfidence: number().optional(),
|
|
28632
|
-
|
|
28712
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional()
|
|
28633
28713
|
});
|
|
28634
28714
|
var ConfigFieldBridge = custom();
|
|
28635
28715
|
var PipelineAddonSchemaSchema = object({
|
|
@@ -29033,7 +29113,16 @@ var pipelineExecutorCapability = {
|
|
|
29033
29113
|
* `device-not-servable`), and nothing reaches the camera's live
|
|
29034
29114
|
* trace stream. Absent ⇒ unchanged behaviour.
|
|
29035
29115
|
*/
|
|
29036
|
-
replay: literal(true).optional()
|
|
29116
|
+
replay: literal(true).optional(),
|
|
29117
|
+
/**
|
|
29118
|
+
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
29119
|
+
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
29120
|
+
* step (a Frigate+ `license_plate` for `plate-detection`): the step is
|
|
29121
|
+
* NOT inferred, these boxes are its output, and its children (the plate
|
|
29122
|
+
* reader) run on them through their own crop policy. Boxes are in the
|
|
29123
|
+
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
29124
|
+
*/
|
|
29125
|
+
suppliedRoot: SuppliedRootOutputSchema.optional()
|
|
29037
29126
|
}), PipelineRunResultBridge, { kind: "mutation" }),
|
|
29038
29127
|
/**
|
|
29039
29128
|
* Batched run — N raw frames packed into one cap call. The provider
|
|
@@ -30346,7 +30435,22 @@ var pipelineRunnerCapability = {
|
|
|
30346
30435
|
*/
|
|
30347
30436
|
cropJpeg: string().optional(),
|
|
30348
30437
|
parent: DetailParentSchema,
|
|
30349
|
-
steps: array(string()).optional()
|
|
30438
|
+
steps: array(string()).optional(),
|
|
30439
|
+
/**
|
|
30440
|
+
* The camera's root model already drew this step's boxes (D730): a
|
|
30441
|
+
* `license_plate` inside the parent vehicle. The named step is NOT
|
|
30442
|
+
* inferred — these FRAME-space boxes are its output — and its
|
|
30443
|
+
* requested children (the plate reader) run on them. Absent ⇒ every
|
|
30444
|
+
* requested step infers as before.
|
|
30445
|
+
*/
|
|
30446
|
+
supplied: object({
|
|
30447
|
+
stepId: string(),
|
|
30448
|
+
modelId: string(),
|
|
30449
|
+
boxes: array(object({
|
|
30450
|
+
bbox: NativeCropBboxSchema,
|
|
30451
|
+
score: number()
|
|
30452
|
+
})).min(1)
|
|
30453
|
+
}).optional()
|
|
30350
30454
|
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" }),
|
|
30351
30455
|
/**
|
|
30352
30456
|
* Run ONE enrichment step against caller-supplied pixels, with NO camera
|
|
@@ -39344,6 +39448,27 @@ var ViewerEndpointsSchema = object({
|
|
|
39344
39448
|
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
39345
39449
|
resolved: array(string()).readonly()
|
|
39346
39450
|
});
|
|
39451
|
+
/**
|
|
39452
|
+
* One audience's hub address (see `hub-address.ts`): the operator's stored
|
|
39453
|
+
* override, the address in use, and where it came from.
|
|
39454
|
+
*/
|
|
39455
|
+
var HubAddressSnapshotSchema = object({
|
|
39456
|
+
/** The operator's override, or null for automatic. */
|
|
39457
|
+
override: string().nullable(),
|
|
39458
|
+
/** The address in use, or null when nothing qualifies (never loopback). */
|
|
39459
|
+
resolved: string().nullable(),
|
|
39460
|
+
source: _enum([
|
|
39461
|
+
"override",
|
|
39462
|
+
"auto",
|
|
39463
|
+
"none"
|
|
39464
|
+
])
|
|
39465
|
+
});
|
|
39466
|
+
var HubAddressesSchema = object({
|
|
39467
|
+
/** "Hub address for agents" — agents' bundle/model pulls, LAN devices. */
|
|
39468
|
+
cluster: HubAddressSnapshotSchema,
|
|
39469
|
+
/** "Public address for sign-in links" — e-mail links, OIDC, WebAuthn, OAuth2. */
|
|
39470
|
+
browser: HubAddressSnapshotSchema
|
|
39471
|
+
});
|
|
39347
39472
|
var AllowedAddressesSchema = object({
|
|
39348
39473
|
/**
|
|
39349
39474
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -39476,6 +39601,26 @@ var localNetworkCapability = {
|
|
|
39476
39601
|
*/
|
|
39477
39602
|
setViewerEndpoints: method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }),
|
|
39478
39603
|
/**
|
|
39604
|
+
* The hub's address for each audience — agents (`cluster`) and sign-in
|
|
39605
|
+
* links (`browser`) — as every consumer must read it: the operator's
|
|
39606
|
+
* override when set, else the automatic pick from this cap's palette,
|
|
39607
|
+
* never loopback. The ONE answer to "at which address is this hub
|
|
39608
|
+
* reached?"; there is no environment variable for it.
|
|
39609
|
+
*/
|
|
39610
|
+
getHubAddresses: method(_void(), HubAddressesSchema),
|
|
39611
|
+
/**
|
|
39612
|
+
* Set or clear (`baseUrl: null`) one audience's override. Validated: an
|
|
39613
|
+
* http(s) origin with a host, no credentials, no path, never loopback —
|
|
39614
|
+
* an invalid value is refused with the reason, nothing is stored.
|
|
39615
|
+
*/
|
|
39616
|
+
setHubAddress: method(object({
|
|
39617
|
+
audience: _enum(["cluster", "browser"]),
|
|
39618
|
+
baseUrl: string().nullable()
|
|
39619
|
+
}), HubAddressesSchema, {
|
|
39620
|
+
kind: "mutation",
|
|
39621
|
+
auth: "admin"
|
|
39622
|
+
}),
|
|
39623
|
+
/**
|
|
39479
39624
|
* Read the operator's allowlist. Empty = "auto" (no filter). Used
|
|
39480
39625
|
* by the admin UI's address selector to seed its checkbox state.
|
|
39481
39626
|
*/
|
|
@@ -51506,6 +51651,12 @@ Object.freeze({
|
|
|
51506
51651
|
addonId: null,
|
|
51507
51652
|
access: "view"
|
|
51508
51653
|
},
|
|
51654
|
+
"localNetwork.getHubAddresses": {
|
|
51655
|
+
capName: "local-network",
|
|
51656
|
+
capScope: "system",
|
|
51657
|
+
addonId: null,
|
|
51658
|
+
access: "view"
|
|
51659
|
+
},
|
|
51509
51660
|
"localNetwork.getNotificationEndpoint": {
|
|
51510
51661
|
capName: "local-network",
|
|
51511
51662
|
capScope: "system",
|
|
@@ -51560,6 +51711,12 @@ Object.freeze({
|
|
|
51560
51711
|
addonId: null,
|
|
51561
51712
|
access: "create"
|
|
51562
51713
|
},
|
|
51714
|
+
"localNetwork.setHubAddress": {
|
|
51715
|
+
capName: "local-network",
|
|
51716
|
+
capScope: "system",
|
|
51717
|
+
addonId: null,
|
|
51718
|
+
access: "create"
|
|
51719
|
+
},
|
|
51563
51720
|
"localNetwork.setNotificationEndpoint": {
|
|
51564
51721
|
capName: "local-network",
|
|
51565
51722
|
capScope: "system",
|
|
@@ -61290,7 +61447,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
61290
61447
|
{
|
|
61291
61448
|
name: "summarySection",
|
|
61292
61449
|
label: "Summary: this section",
|
|
61293
|
-
description: "The section a per-section summary row is about
|
|
61450
|
+
description: "The section a per-section summary row is about; on a summary sent as one message, every section it reports, comma-separated.",
|
|
61294
61451
|
example: "Batterie scariche",
|
|
61295
61452
|
group: "system",
|
|
61296
61453
|
families: ["rule"],
|
|
@@ -63812,4 +63969,4 @@ function buildClipModelRegistry(entries) {
|
|
|
63812
63969
|
/** The built-in catalog's registry. */
|
|
63813
63970
|
var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
|
|
63814
63971
|
//#endregion
|
|
63815
|
-
export { NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as $, encodeVectorBase64 as $n,
|
|
63972
|
+
export { NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as $, encodeVectorBase64 as $n, systemEventDeliveryProblems as $r, RECORDING_SOURCE_CAMSTACK_ADDON as $t, EMBEDDING_MODEL_FAILED as A, literal as Ai, applyModeDelaysEdits as An, plateGalleryCapability as Ar, NcLegacyRuleActionSequenceSchema as At, LabelAttributionSchema as B, union as Bi, coreBlockIdFromAddonId as Bn, rootSupplyServes as Br, NcSnoozeInputSchema as Bt, CoverStateSchema as C, normalizeNodeId as Ci, TrackSideSchema as Cn, linkedStepOf as Cr, NcAlarmConfigSchema as Ct, DETECTION_PIPELINE_CAP_NAME as D, array as Di, alarmDeviceSecureOnArm as Dn, occupancyScope as Dr, NcAlarmSettingsPatchSchema as Dt, DETECTION_MACRO_CLASSES as E, _enum as Ei, addonWidgetsSourceCapability as En, notificationRulesCapability as Er, NcAlarmSensorsSchema as Et, EVENT_OWNER_TYPES as F, record as Fi, audioModeOf as Fn, resolveClipSearchMinScore as Fr, NcRuleSchema as Ft, MAX_BIRTH_DECISION_RECORDS as G, deriveRecordingMode as Gn, ruleKindOf as Gr, NcTaxonomySchema as Gt, ListTrackRelationsResultSchema as H, EventCategory as Hi, createAlarmProfile as Hn, ruleBelongsToAlarm as Hr, NcSnoozeSuppressedSchema as Ht, EXPORT_DENSE_MAX_RANGES as I, strictObject as Ii, buildEventKindDescriptor as In, resolveLocationMode as Ir, NcRuleTargetSchema as It, MAX_TRACK_RELATIONS as J, embeddingEncoderCapability as Jn, sensorRaisedOf as Jr, NcTemplateVarDescriptorSchema as Jt, MAX_BIRTH_LATENCY_PROXY_MS as K, describeSystemEventDeliveryProblem as Kn, sceneMonitorCapability as Kr, NcTemplatePreviewInputSchema as Kt, FIRST_LEVEL_MACRO_CLASSES as L, string as Li, buildViewerLink as Ln, resolveModeDelays as Lr, NcRuleUpdateInputSchema as Lt, EMBEDDING_REQUIREMENTS_UNAVAILABLE as M, number as Mi, applySecureOnArmEdit as Mn, readMotionTriggeredBy as Mr, NcRuleActionsSchema as Mt, EVENT_DENSITY_BATCH_MAX as N, object as Ni, assertTimelapseCadences as Nn, readTimelapseGeneratedAt as Nr, NcRuleInputSchema as Nt, DeclaredDevices as O, boolean as Oi, alarmPanelCapability as On, parseProcStatus as Or, NcConditionDescriptorSchema as Ot, EVENT_KIND_BY_CAP as P, partialRecord as Pi, audioMetricsCapability as Pn, renameAlarmProfile as Pr, NcRulePatchSchema as Pt, NC_ALARM_DEFAULT_PROFILE_ID as Q, embeddingRequirementsUnavailableError as Qn, syncActiveAlarmProfileSettings as Qr, RECORDING_EXPORT_MAX_READ_BYTES as Qt, FULL_IMAGE_BBOX as R, templateLiteral as Ri, cloneAlarmSettings as Rn, resolveModeNotifyPolicy as Rr, NcScheduleSchema as Rt, ClearTrackRelationResultSchema as S, nodePin as Si, TrackRelationSchema as Sn, kebabToCamel as Sr, NC_TEMPLATE_VARS as St, DEFAULT_TIMELAPSE_PREVIEW_TEXT as T, ZodObject as Ti, activateAlarmProfile as Tn, memoizePinnedFfmpeg as Tr, NcAlarmSensorsInputSchema as Tt, LockStateSchema as U, deleteAlarmProfile as Un, ruleDeviceCompatCapQueries as Ur, NcStateSummarySectionIdSchema as Ut, ListTrackRelationsInputSchema as V, unknown as Vi, cosineSimilarity as Vn, ruleAutoTriggersAlarm as Vr, NcSnoozeSchema as Vt, MAX_ARCHIVED_DEBUG_NOTES as W, derivePostTriggeredAction as Wn, ruleGroupingApplies as Wr, NcSystemEventKindSchema as Wt, MediaFileKindEnum as X, embeddingRefusalOf as Xn, storageOccupancyCapability as Xr, OpsLogEntrySchema as Xt, MOTION_CLOSE_AFTER_MS as Y, embeddingModelFailedError as Yn, servedTemplateVars as Yr, OPS_LOG_DEFAULT_LIMIT as Yt, MotionTriggeredBySchema as Z, embeddingRequirementsFailedError as Zn, subKindsOf as Zr, PoolMemoryWatchdog as Zt, BIRTH_DECISION_DEFAULT_LIMIT as _, createEvent as _i, TimelapseRuleInputSchema as _n, isRootSuppliableStepId as _r, NC_SENSOR_TRANSITION_KINDS as _t, CLIP_EMBEDDING_STEP_ID as a, templateVarsFor as ai, SCENE_DEFAULT_CHECK_INTERVAL_SEC as an, gifDeriveSpeed as ar, NC_AUDIO_CONFIRM_HITS_DEFAULT as at, COCO_TO_MACRO as b, hydrateSchema as bi, TrackPuritySchema as bn, isSystemEventSummaryRule as br, NC_TANK_SYSTEM_EVENT_KINDS as bt, resolveClusterModelPin as c, zoneAnalyticsCapability as ci, SCENE_DEFAULT_UNCOVERED_POLICY as cn, isAppLinkBase as cr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as ct, APPEARANCE_BLOCKS as d, evaluateSensorEdge as di, SceneMonitorSchema as dn, isDetectionMacroClass as dr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as dt, systemEventFamilyProblems as ei, RebuildObjectEmbeddingsRefusalSchema as en, ensureAlarmProfiles as er, NC_ALARM_DELAY_FIELDS as et, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as f, isSourceCap as fi, SetTrackPurityInputSchema as fn, isEventKindLabelKey as fr, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as ft, ArchivedDebugNoteSchema as g, CamProfileSchema as gi, TRACK_RELATIONS_DEFAULT_LIMIT as gn, isRetiredClearKey as gr, NC_GROUPING_MIN_SEC as gt, AlarmArmModeSchema as h, BaseAddon as hi, TIMELAPSE_DENSE_FLOOR_SEC as hn, isMediaOwnerType as hr, NC_GROUPING_MAX_SEC as ht, CLIP_TEXT_MODELS as i, templateCarriesSummary as ii, SCENE_DEFAULT_ANCHOR_THRESHOLD as in, failureContributionCapability as ir, NC_ALARM_TRIGGERED_MAX_SEC as it, EMBEDDING_REQUIREMENTS_FAILED as j, looseObject as ji, applyNonBlockingEdit as jn, readDeviceStateFrom as jr, NcRuleActionSchema as jt, DetectionSourceSchema as k, discriminatedUnion as ki, applyBlockingEdit as kn, pipelineAnalyticsCapability as kr, NcConditionsSchema as kt, ALL_CAPABILITY_DEFINITIONS as l, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as li, SCENE_DIVERGED as ln, isAudioClassName as lr, NC_CLIP_RETENTION_MAX_SEC as lt, AUDIO_MACRO_LABELS as m, errMsg as mi, SetTrackRelationInputSchema as mn, isKnownTemplateVar as mr, NC_GROUPING_DEFAULT_SEC as mt, DEFAULT_CLIP_MODEL as n, systemEventSummaryScheduleOf as ni, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as nn, evictionPolicyOfLocation as nr, NC_ALARM_NOTIFY_FIELDS as nt, FACE_EMBEDDING_STEP_ID as o, vectorDimFromBase64 as oi, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as on, gifFromMp4Args as or, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as ot, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as p, DeviceType as pi, SetTrackPurityResultSchema as pn, isEventOwnerType as pr, NC_DEFAULT_SNOOZE_MINUTES as pt, MAX_TRACK_PURITIES as q, describeSystemEventFamilyProblem as qn, secureActuationFor as qr, NcTemplatePreviewSchema as qt, CLIP_IMAGE_MODELS as r, systemEventSummarySplitOf as ri, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as rn, faceGalleryCapability as rr, NC_ALARM_SYSTEM_EVENT_KINDS as rt, readClusterModelPinStrict as s, viewerLinkBaseOf as si, SCENE_DEFAULT_QUIET_SECONDS as sn, isAlarmControllableCap as sr, NC_CLIP_POST_ROLL_DEFAULT_SEC as st, BUILTIN_CLIP_MODELS as t, systemEventFilterApplies as ti, RetrainStatusSchema as tn, eventKindLabel as tr, NC_ALARM_DELAY_MAX_SEC as tt, APPEARANCE_BIN_COUNT as u, canonicalHash as ui, SCENE_RESET_RECAPTURES as un, isDefaultAlarmProfileId as ur, NC_CONDITION_CATALOG as ut, BaseDevice as v, customAction as vi, TimelapseRulePatchSchema as vn, isScheduleActive as vr, NC_SNOOZE_MAX_MINUTES as vt, DEFAULT_EVENT_COLOR as w, sleep as wi, TrackSourceSchema as wn, mayWriteToLocation as wr, NcAlarmPostTriggeredActionSchema as wt, ClearTrackRelationInputSchema as x, isDeviceScopedCap as xi, TrackRelationKindSchema as xn, isVectorIndexDimConflict as xr, NC_TAXONOMY as xt, BirthDecisionRecordSchema as y, defineCustomActions as yi, TimelapseRuleSchema as yn, isSystemDelivery as yr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as yt, FailureCounters as z, tuple as zi, consumableLowPercentOf as zn, resolvePoolMemoryPolicy as zr, NcSharedSequenceSchema as zt };
|