@camstack/addon-pipeline 1.2.328 → 1.2.330
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 +2 -2
- package/dist/audio-analyzer/index.mjs +2 -2
- package/dist/{default-detection-model-1SadEKsW.js → default-detection-model-B6gKGnfx.js} +53 -71
- package/dist/{default-detection-model-CMeVTcPZ.mjs → default-detection-model-CPDT_eFT.mjs} +53 -71
- package/dist/detection-pipeline/index.js +607 -39
- package/dist/detection-pipeline/index.mjs +607 -39
- package/dist/{dist-wJO7mXeO.js → dist-CMeICL07.js} +781 -465
- package/dist/{dist-Bpub2VcJ.mjs → dist-CuPEyZY2.mjs} +736 -438
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/{node-BjCSgD4M.mjs → node-USq5jYwq.mjs} +1 -1
- package/dist/{node-BCrqaejt.js → node-X_0Tka7-.js} +1 -1
- package/dist/pipeline-runner/index.js +355 -104
- package/dist/pipeline-runner/index.mjs +355 -104
- package/dist/{process-memory-BaKQ8u2G.mjs → process-memory-07XYts8V.mjs} +1 -1
- package/dist/{process-memory-iUJuTpXs.js → process-memory-o4LFWbBN.js} +1 -1
- package/dist/recorder/index.js +7 -7
- package/dist/recorder/index.mjs +7 -7
- package/dist/{segment-demux-js-C5ez9LYG.mjs → segment-demux-js-Bq8DrH0b.mjs} +2 -2
- package/dist/{segment-demux-js-Opx6Hv9G.js → segment-demux-js-FqaQjG7n.js} +2 -2
- package/dist/stream-broker/_stub.js +2 -2
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-B94LgsV0.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-EYRUYv_r.mjs} +3 -3
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BnP7C_HO.mjs +26 -0
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CR0--kRv.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-xOx7AvgW.mjs → hostInit-iGdBpvGc.mjs} +3 -3
- package/dist/stream-broker/index.js +4 -4
- package/dist/stream-broker/index.mjs +4 -4
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/python/edgetpu_dequant.py +38 -1
- package/python/inference_pool.py +31 -17
- package/python/postprocessors/test_yolox_plate_edgetpu.py +126 -0
- package/python/postprocessors/test_yunet_edgetpu.py +149 -0
- package/python/postprocessors/testdata/yolox_plate_int8_outputs.json +1 -0
- package/python/postprocessors/testdata/yunet_int8_outputs.json +1 -0
- package/python/postprocessors/yolo.py +44 -0
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BPWYf4_O.mjs +0 -26
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BpXPNINd.mjs +0 -26
|
@@ -12600,398 +12600,35 @@ var ClipSearchStrictnessSchema = _enum([
|
|
|
12600
12600
|
"balanced",
|
|
12601
12601
|
"strict"
|
|
12602
12602
|
]);
|
|
12603
|
-
|
|
12604
|
-
|
|
12605
|
-
id: "person",
|
|
12606
|
-
name: "Person"
|
|
12607
|
-
},
|
|
12608
|
-
{
|
|
12609
|
-
id: "bicycle",
|
|
12610
|
-
name: "Bicycle"
|
|
12611
|
-
},
|
|
12612
|
-
{
|
|
12613
|
-
id: "car",
|
|
12614
|
-
name: "Car"
|
|
12615
|
-
},
|
|
12616
|
-
{
|
|
12617
|
-
id: "motorcycle",
|
|
12618
|
-
name: "Motorcycle"
|
|
12619
|
-
},
|
|
12620
|
-
{
|
|
12621
|
-
id: "airplane",
|
|
12622
|
-
name: "Airplane"
|
|
12623
|
-
},
|
|
12624
|
-
{
|
|
12625
|
-
id: "bus",
|
|
12626
|
-
name: "Bus"
|
|
12627
|
-
},
|
|
12628
|
-
{
|
|
12629
|
-
id: "train",
|
|
12630
|
-
name: "Train"
|
|
12631
|
-
},
|
|
12632
|
-
{
|
|
12633
|
-
id: "truck",
|
|
12634
|
-
name: "Truck"
|
|
12635
|
-
},
|
|
12636
|
-
{
|
|
12637
|
-
id: "boat",
|
|
12638
|
-
name: "Boat"
|
|
12639
|
-
},
|
|
12640
|
-
{
|
|
12641
|
-
id: "traffic light",
|
|
12642
|
-
name: "Traffic Light"
|
|
12643
|
-
},
|
|
12644
|
-
{
|
|
12645
|
-
id: "fire hydrant",
|
|
12646
|
-
name: "Fire Hydrant"
|
|
12647
|
-
},
|
|
12648
|
-
{
|
|
12649
|
-
id: "stop sign",
|
|
12650
|
-
name: "Stop Sign"
|
|
12651
|
-
},
|
|
12652
|
-
{
|
|
12653
|
-
id: "parking meter",
|
|
12654
|
-
name: "Parking Meter"
|
|
12655
|
-
},
|
|
12656
|
-
{
|
|
12657
|
-
id: "bench",
|
|
12658
|
-
name: "Bench"
|
|
12659
|
-
},
|
|
12660
|
-
{
|
|
12661
|
-
id: "bird",
|
|
12662
|
-
name: "Bird"
|
|
12663
|
-
},
|
|
12664
|
-
{
|
|
12665
|
-
id: "cat",
|
|
12666
|
-
name: "Cat"
|
|
12667
|
-
},
|
|
12668
|
-
{
|
|
12669
|
-
id: "dog",
|
|
12670
|
-
name: "Dog"
|
|
12671
|
-
},
|
|
12672
|
-
{
|
|
12673
|
-
id: "horse",
|
|
12674
|
-
name: "Horse"
|
|
12675
|
-
},
|
|
12676
|
-
{
|
|
12677
|
-
id: "sheep",
|
|
12678
|
-
name: "Sheep"
|
|
12679
|
-
},
|
|
12680
|
-
{
|
|
12681
|
-
id: "cow",
|
|
12682
|
-
name: "Cow"
|
|
12683
|
-
},
|
|
12684
|
-
{
|
|
12685
|
-
id: "elephant",
|
|
12686
|
-
name: "Elephant"
|
|
12687
|
-
},
|
|
12688
|
-
{
|
|
12689
|
-
id: "bear",
|
|
12690
|
-
name: "Bear"
|
|
12691
|
-
},
|
|
12692
|
-
{
|
|
12693
|
-
id: "zebra",
|
|
12694
|
-
name: "Zebra"
|
|
12695
|
-
},
|
|
12696
|
-
{
|
|
12697
|
-
id: "giraffe",
|
|
12698
|
-
name: "Giraffe"
|
|
12699
|
-
},
|
|
12700
|
-
{
|
|
12701
|
-
id: "backpack",
|
|
12702
|
-
name: "Backpack"
|
|
12703
|
-
},
|
|
12704
|
-
{
|
|
12705
|
-
id: "umbrella",
|
|
12706
|
-
name: "Umbrella"
|
|
12707
|
-
},
|
|
12708
|
-
{
|
|
12709
|
-
id: "handbag",
|
|
12710
|
-
name: "Handbag"
|
|
12711
|
-
},
|
|
12712
|
-
{
|
|
12713
|
-
id: "tie",
|
|
12714
|
-
name: "Tie"
|
|
12715
|
-
},
|
|
12716
|
-
{
|
|
12717
|
-
id: "suitcase",
|
|
12718
|
-
name: "Suitcase"
|
|
12719
|
-
},
|
|
12720
|
-
{
|
|
12721
|
-
id: "frisbee",
|
|
12722
|
-
name: "Frisbee"
|
|
12723
|
-
},
|
|
12724
|
-
{
|
|
12725
|
-
id: "skis",
|
|
12726
|
-
name: "Skis"
|
|
12727
|
-
},
|
|
12728
|
-
{
|
|
12729
|
-
id: "snowboard",
|
|
12730
|
-
name: "Snowboard"
|
|
12731
|
-
},
|
|
12732
|
-
{
|
|
12733
|
-
id: "sports ball",
|
|
12734
|
-
name: "Sports Ball"
|
|
12735
|
-
},
|
|
12736
|
-
{
|
|
12737
|
-
id: "kite",
|
|
12738
|
-
name: "Kite"
|
|
12739
|
-
},
|
|
12740
|
-
{
|
|
12741
|
-
id: "baseball bat",
|
|
12742
|
-
name: "Baseball Bat"
|
|
12743
|
-
},
|
|
12744
|
-
{
|
|
12745
|
-
id: "baseball glove",
|
|
12746
|
-
name: "Baseball Glove"
|
|
12747
|
-
},
|
|
12748
|
-
{
|
|
12749
|
-
id: "skateboard",
|
|
12750
|
-
name: "Skateboard"
|
|
12751
|
-
},
|
|
12752
|
-
{
|
|
12753
|
-
id: "surfboard",
|
|
12754
|
-
name: "Surfboard"
|
|
12755
|
-
},
|
|
12756
|
-
{
|
|
12757
|
-
id: "tennis racket",
|
|
12758
|
-
name: "Tennis Racket"
|
|
12759
|
-
},
|
|
12760
|
-
{
|
|
12761
|
-
id: "bottle",
|
|
12762
|
-
name: "Bottle"
|
|
12763
|
-
},
|
|
12764
|
-
{
|
|
12765
|
-
id: "wine glass",
|
|
12766
|
-
name: "Wine Glass"
|
|
12767
|
-
},
|
|
12768
|
-
{
|
|
12769
|
-
id: "cup",
|
|
12770
|
-
name: "Cup"
|
|
12771
|
-
},
|
|
12772
|
-
{
|
|
12773
|
-
id: "fork",
|
|
12774
|
-
name: "Fork"
|
|
12775
|
-
},
|
|
12776
|
-
{
|
|
12777
|
-
id: "knife",
|
|
12778
|
-
name: "Knife"
|
|
12779
|
-
},
|
|
12780
|
-
{
|
|
12781
|
-
id: "spoon",
|
|
12782
|
-
name: "Spoon"
|
|
12783
|
-
},
|
|
12784
|
-
{
|
|
12785
|
-
id: "bowl",
|
|
12786
|
-
name: "Bowl"
|
|
12787
|
-
},
|
|
12788
|
-
{
|
|
12789
|
-
id: "banana",
|
|
12790
|
-
name: "Banana"
|
|
12791
|
-
},
|
|
12792
|
-
{
|
|
12793
|
-
id: "apple",
|
|
12794
|
-
name: "Apple"
|
|
12795
|
-
},
|
|
12796
|
-
{
|
|
12797
|
-
id: "sandwich",
|
|
12798
|
-
name: "Sandwich"
|
|
12799
|
-
},
|
|
12800
|
-
{
|
|
12801
|
-
id: "orange",
|
|
12802
|
-
name: "Orange"
|
|
12803
|
-
},
|
|
12804
|
-
{
|
|
12805
|
-
id: "broccoli",
|
|
12806
|
-
name: "Broccoli"
|
|
12807
|
-
},
|
|
12808
|
-
{
|
|
12809
|
-
id: "carrot",
|
|
12810
|
-
name: "Carrot"
|
|
12811
|
-
},
|
|
12812
|
-
{
|
|
12813
|
-
id: "hot dog",
|
|
12814
|
-
name: "Hot Dog"
|
|
12815
|
-
},
|
|
12816
|
-
{
|
|
12817
|
-
id: "pizza",
|
|
12818
|
-
name: "Pizza"
|
|
12819
|
-
},
|
|
12820
|
-
{
|
|
12821
|
-
id: "donut",
|
|
12822
|
-
name: "Donut"
|
|
12823
|
-
},
|
|
12824
|
-
{
|
|
12825
|
-
id: "cake",
|
|
12826
|
-
name: "Cake"
|
|
12827
|
-
},
|
|
12828
|
-
{
|
|
12829
|
-
id: "chair",
|
|
12830
|
-
name: "Chair"
|
|
12831
|
-
},
|
|
12832
|
-
{
|
|
12833
|
-
id: "couch",
|
|
12834
|
-
name: "Couch"
|
|
12835
|
-
},
|
|
12836
|
-
{
|
|
12837
|
-
id: "potted plant",
|
|
12838
|
-
name: "Potted Plant"
|
|
12839
|
-
},
|
|
12840
|
-
{
|
|
12841
|
-
id: "bed",
|
|
12842
|
-
name: "Bed"
|
|
12843
|
-
},
|
|
12844
|
-
{
|
|
12845
|
-
id: "dining table",
|
|
12846
|
-
name: "Dining Table"
|
|
12847
|
-
},
|
|
12848
|
-
{
|
|
12849
|
-
id: "toilet",
|
|
12850
|
-
name: "Toilet"
|
|
12851
|
-
},
|
|
12852
|
-
{
|
|
12853
|
-
id: "tv",
|
|
12854
|
-
name: "TV"
|
|
12855
|
-
},
|
|
12856
|
-
{
|
|
12857
|
-
id: "laptop",
|
|
12858
|
-
name: "Laptop"
|
|
12859
|
-
},
|
|
12860
|
-
{
|
|
12861
|
-
id: "mouse",
|
|
12862
|
-
name: "Mouse"
|
|
12863
|
-
},
|
|
12864
|
-
{
|
|
12865
|
-
id: "remote",
|
|
12866
|
-
name: "Remote"
|
|
12867
|
-
},
|
|
12868
|
-
{
|
|
12869
|
-
id: "keyboard",
|
|
12870
|
-
name: "Keyboard"
|
|
12871
|
-
},
|
|
12872
|
-
{
|
|
12873
|
-
id: "cell phone",
|
|
12874
|
-
name: "Cell Phone"
|
|
12875
|
-
},
|
|
12876
|
-
{
|
|
12877
|
-
id: "microwave",
|
|
12878
|
-
name: "Microwave"
|
|
12879
|
-
},
|
|
12880
|
-
{
|
|
12881
|
-
id: "oven",
|
|
12882
|
-
name: "Oven"
|
|
12883
|
-
},
|
|
12884
|
-
{
|
|
12885
|
-
id: "toaster",
|
|
12886
|
-
name: "Toaster"
|
|
12887
|
-
},
|
|
12888
|
-
{
|
|
12889
|
-
id: "sink",
|
|
12890
|
-
name: "Sink"
|
|
12891
|
-
},
|
|
12892
|
-
{
|
|
12893
|
-
id: "refrigerator",
|
|
12894
|
-
name: "Refrigerator"
|
|
12895
|
-
},
|
|
12896
|
-
{
|
|
12897
|
-
id: "book",
|
|
12898
|
-
name: "Book"
|
|
12899
|
-
},
|
|
12900
|
-
{
|
|
12901
|
-
id: "clock",
|
|
12902
|
-
name: "Clock"
|
|
12903
|
-
},
|
|
12904
|
-
{
|
|
12905
|
-
id: "vase",
|
|
12906
|
-
name: "Vase"
|
|
12907
|
-
},
|
|
12908
|
-
{
|
|
12909
|
-
id: "scissors",
|
|
12910
|
-
name: "Scissors"
|
|
12911
|
-
},
|
|
12912
|
-
{
|
|
12913
|
-
id: "teddy bear",
|
|
12914
|
-
name: "Teddy Bear"
|
|
12915
|
-
},
|
|
12916
|
-
{
|
|
12917
|
-
id: "hair drier",
|
|
12918
|
-
name: "Hair Drier"
|
|
12919
|
-
},
|
|
12920
|
-
{
|
|
12921
|
-
id: "toothbrush",
|
|
12922
|
-
name: "Toothbrush"
|
|
12923
|
-
}
|
|
12924
|
-
];
|
|
12925
|
-
new Set([
|
|
12926
|
-
{
|
|
12927
|
-
id: "person",
|
|
12928
|
-
name: "Person"
|
|
12929
|
-
},
|
|
12930
|
-
{
|
|
12931
|
-
id: "vehicle",
|
|
12932
|
-
name: "Vehicle"
|
|
12933
|
-
},
|
|
12934
|
-
{
|
|
12935
|
-
id: "animal",
|
|
12936
|
-
name: "Animal"
|
|
12937
|
-
},
|
|
12938
|
-
{
|
|
12939
|
-
id: "package",
|
|
12940
|
-
name: "Package"
|
|
12941
|
-
}
|
|
12942
|
-
].map((l) => l.id));
|
|
12943
|
-
var COCO_TO_MACRO = {
|
|
12944
|
-
mapping: {
|
|
12945
|
-
person: "person",
|
|
12946
|
-
bicycle: "vehicle",
|
|
12947
|
-
car: "vehicle",
|
|
12948
|
-
motorcycle: "vehicle",
|
|
12949
|
-
airplane: "vehicle",
|
|
12950
|
-
bus: "vehicle",
|
|
12951
|
-
train: "vehicle",
|
|
12952
|
-
truck: "vehicle",
|
|
12953
|
-
boat: "vehicle",
|
|
12954
|
-
bird: "animal",
|
|
12955
|
-
cat: "animal",
|
|
12956
|
-
dog: "animal",
|
|
12957
|
-
horse: "animal",
|
|
12958
|
-
sheep: "animal",
|
|
12959
|
-
cow: "animal",
|
|
12960
|
-
elephant: "animal",
|
|
12961
|
-
bear: "animal",
|
|
12962
|
-
zebra: "animal",
|
|
12963
|
-
giraffe: "animal",
|
|
12964
|
-
suitcase: "package",
|
|
12965
|
-
backpack: "package",
|
|
12966
|
-
handbag: "package"
|
|
12967
|
-
},
|
|
12968
|
-
preserveOriginal: false
|
|
12969
|
-
};
|
|
12970
|
-
/** Steps a root detector may declare it fills. */
|
|
12971
|
-
var FILLABLE_STEP_IDS = [
|
|
12603
|
+
/** Steps whose effect a root label can BE. */
|
|
12604
|
+
var LABEL_SUPPLY_STEP_IDS = [
|
|
12972
12605
|
"animal-classifier",
|
|
12973
12606
|
"vehicle-classifier",
|
|
12974
12607
|
"package-detection"
|
|
12975
12608
|
];
|
|
12976
|
-
/**
|
|
12977
|
-
|
|
12978
|
-
|
|
12609
|
+
/** Steps whose box a root detection can BE. */
|
|
12610
|
+
var CROP_SUPPLY_STEP_IDS = ["plate-detection", "face-detection"];
|
|
12611
|
+
/** Every step a root model can supply. */
|
|
12612
|
+
var ROOT_SUPPLIABLE_STEP_IDS = [...LABEL_SUPPLY_STEP_IDS, ...CROP_SUPPLY_STEP_IDS];
|
|
12613
|
+
/** Narrow a step id to a label-kind one. */
|
|
12614
|
+
function isLabelSupplyStepId(value) {
|
|
12615
|
+
return LABEL_SUPPLY_STEP_IDS.some((id) => id === value);
|
|
12979
12616
|
}
|
|
12980
12617
|
/**
|
|
12981
|
-
* The EFFECT vocabulary of each
|
|
12618
|
+
* The EFFECT vocabulary of each label-kind step: exactly the strings the step
|
|
12982
12619
|
* itself emits, in its own spelling. A linked label is one of these and nothing
|
|
12983
12620
|
* else, so a tier-1 value means the same thing whichever writer produced it.
|
|
12984
12621
|
*
|
|
12985
12622
|
* - `animal-classifier`: the PRIMARY model's `-labels.json` (Open Images V7,
|
|
12986
12623
|
* 8 classes) — also the species allow-list the step offers.
|
|
12987
|
-
* - `vehicle-classifier`:
|
|
12988
|
-
*
|
|
12624
|
+
* - `vehicle-classifier`: the classifier's labels, capitalised as it emits them
|
|
12625
|
+
* (it writes `winner.class` verbatim).
|
|
12989
12626
|
* - `package-detection`: its one output class.
|
|
12990
12627
|
*
|
|
12991
|
-
* `scripts/check-label-link-vocabulary.ts` fails the build if a
|
|
12628
|
+
* `scripts/check-label-link-vocabulary.ts` fails the build if a declared
|
|
12992
12629
|
* `labelToEffect` names anything outside this table.
|
|
12993
12630
|
*/
|
|
12994
|
-
var
|
|
12631
|
+
var LABEL_SUPPLY_VOCABULARIES = {
|
|
12995
12632
|
"animal-classifier": [
|
|
12996
12633
|
"bird",
|
|
12997
12634
|
"cat",
|
|
@@ -13014,18 +12651,64 @@ var FILLABLE_STEP_VOCABULARIES = {
|
|
|
13014
12651
|
],
|
|
13015
12652
|
"package-detection": ["package"]
|
|
13016
12653
|
};
|
|
13017
|
-
/** The macro a detection must carry for
|
|
13018
|
-
var
|
|
12654
|
+
/** The macro a detection must carry for a label-kind step to apply to it. */
|
|
12655
|
+
var LABEL_SUPPLY_MACRO = {
|
|
13019
12656
|
"animal-classifier": "animal",
|
|
13020
12657
|
"vehicle-classifier": "vehicle",
|
|
13021
12658
|
"package-detection": "package"
|
|
13022
12659
|
};
|
|
13023
|
-
/**
|
|
13024
|
-
|
|
13025
|
-
|
|
13026
|
-
|
|
13027
|
-
|
|
13028
|
-
|
|
12660
|
+
/**
|
|
12661
|
+
* Raw detector labels that name a vocabulary entry under another spelling.
|
|
12662
|
+
* Case-insensitive equality covers the rest (`car` → `Car`).
|
|
12663
|
+
*/
|
|
12664
|
+
var EFFECT_ALIASES = {
|
|
12665
|
+
"animal-classifier": {},
|
|
12666
|
+
"vehicle-classifier": {
|
|
12667
|
+
school_bus: "Bus",
|
|
12668
|
+
garbage_truck: "Truck"
|
|
12669
|
+
},
|
|
12670
|
+
"package-detection": {}
|
|
12671
|
+
};
|
|
12672
|
+
var CROP_SUPPLY_SOURCES = {
|
|
12673
|
+
"plate-detection": {
|
|
12674
|
+
rootLabels: ["license_plate"],
|
|
12675
|
+
parentMacro: "vehicle",
|
|
12676
|
+
childClass: "plate",
|
|
12677
|
+
servedChildSteps: ["plate-ocr"],
|
|
12678
|
+
use: "as-output"
|
|
12679
|
+
},
|
|
12680
|
+
"face-detection": {
|
|
12681
|
+
rootLabels: ["face"],
|
|
12682
|
+
parentMacro: "person",
|
|
12683
|
+
childClass: "face",
|
|
12684
|
+
servedChildSteps: ["face-embedding"],
|
|
12685
|
+
use: "refine",
|
|
12686
|
+
minRootInputPx: 640
|
|
12687
|
+
}
|
|
12688
|
+
};
|
|
12689
|
+
/**
|
|
12690
|
+
* Whether an operator intends a step to take the root's output when the
|
|
12691
|
+
* root declares it — the default of the `useRootModel` flag. The label kinds
|
|
12692
|
+
* default ON: the detector's answer is the cheaper one and the classifier
|
|
12693
|
+
* keeps its model for the day the root changes. The crop kinds default OFF: a
|
|
12694
|
+
* root plate box has an uncalibrated OCR margin, and root-face refinement has
|
|
12695
|
+
* not run on live traffic yet.
|
|
12696
|
+
*/
|
|
12697
|
+
var USE_ROOT_MODEL_DEFAULTS = {
|
|
12698
|
+
"animal-classifier": true,
|
|
12699
|
+
"vehicle-classifier": true,
|
|
12700
|
+
"package-detection": true,
|
|
12701
|
+
"plate-detection": false,
|
|
12702
|
+
"face-detection": false
|
|
12703
|
+
};
|
|
12704
|
+
/** The step-settings key the flag is stored under (DeviceStepConfig.settings, camera overrides). */
|
|
12705
|
+
var USE_ROOT_MODEL_SETTING_KEY = "useRootModel";
|
|
12706
|
+
/**
|
|
12707
|
+
* The retired D715 policy key. A `skip-when-filled` / `run` value still
|
|
12708
|
+
* stored under it reads as the flag (`true` / `false`) when no flag is stored
|
|
12709
|
+
* — the normal read path, not a migration.
|
|
12710
|
+
*/
|
|
12711
|
+
var RETIRED_LABEL_LINK_KEY = "labelLink";
|
|
13029
12712
|
/** `ScoredLabel.stepId` prefix of a label the detector wrote for a step. */
|
|
13030
12713
|
var LINKED_LABEL_STEP_PREFIX = "detector-link:";
|
|
13031
12714
|
/** `detector-link:<stepId>` — the attribution of a linked label. */
|
|
@@ -13037,43 +12720,150 @@ function linkedStepOf(attributionStepId) {
|
|
|
13037
12720
|
if (attributionStepId === void 0) return void 0;
|
|
13038
12721
|
if (!attributionStepId.startsWith("detector-link:")) return void 0;
|
|
13039
12722
|
const stepId = attributionStepId.slice(14);
|
|
13040
|
-
return
|
|
13041
|
-
}
|
|
13042
|
-
|
|
13043
|
-
|
|
13044
|
-
|
|
13045
|
-
|
|
13046
|
-
|
|
13047
|
-
|
|
13048
|
-
|
|
13049
|
-
*
|
|
13050
|
-
*
|
|
13051
|
-
*
|
|
13052
|
-
*
|
|
13053
|
-
*
|
|
13054
|
-
*
|
|
13055
|
-
* -
|
|
13056
|
-
*
|
|
13057
|
-
|
|
13058
|
-
|
|
13059
|
-
|
|
13060
|
-
|
|
13061
|
-
|
|
13062
|
-
const
|
|
13063
|
-
if (
|
|
13064
|
-
|
|
13065
|
-
|
|
13066
|
-
|
|
13067
|
-
|
|
13068
|
-
|
|
13069
|
-
|
|
12723
|
+
return isLabelSupplyStepId(stepId) ? stepId : void 0;
|
|
12724
|
+
}
|
|
12725
|
+
function effectFor(stepId, label) {
|
|
12726
|
+
const alias = EFFECT_ALIASES[stepId][label];
|
|
12727
|
+
if (alias !== void 0) return alias;
|
|
12728
|
+
const folded = label.toLowerCase();
|
|
12729
|
+
return LABEL_SUPPLY_VOCABULARIES[stepId].find((v) => v.toLowerCase() === folded);
|
|
12730
|
+
}
|
|
12731
|
+
/**
|
|
12732
|
+
* Which steps a root detector can supply, from its labelmap and classMap.
|
|
12733
|
+
*
|
|
12734
|
+
* - label kind: a label counts for a step only when the classMap sends it to
|
|
12735
|
+
* that step's macro AND it names a vocabulary entry. Every root is judged
|
|
12736
|
+
* the same way — a COCO model supplies the animal classifier with the six
|
|
12737
|
+
* species COCO names, exactly as a Frigate+ model supplies seven.
|
|
12738
|
+
* - crop kind: the labelmap carries one of the step's root labels. Those
|
|
12739
|
+
* labels are deliberately left out of the classMap, so they never make a
|
|
12740
|
+
* track of their own.
|
|
12741
|
+
*
|
|
12742
|
+
* No classMap ⇒ no label supply (nothing says which macro a label lives under).
|
|
12743
|
+
*/
|
|
12744
|
+
function deriveRootSupplies(labels, classMap) {
|
|
12745
|
+
const supplies = [];
|
|
12746
|
+
if (classMap !== void 0) for (const stepId of LABEL_SUPPLY_STEP_IDS) {
|
|
12747
|
+
const labelToEffect = {};
|
|
12748
|
+
for (const label of labels) {
|
|
12749
|
+
if (classMap.mapping[label] !== LABEL_SUPPLY_MACRO[stepId]) continue;
|
|
12750
|
+
const effect = effectFor(stepId, label);
|
|
12751
|
+
if (effect !== void 0) labelToEffect[label] = effect;
|
|
12752
|
+
}
|
|
12753
|
+
const covered = new Set(Object.values(labelToEffect));
|
|
12754
|
+
if (covered.size === 0) continue;
|
|
12755
|
+
const uncovered = LABEL_SUPPLY_VOCABULARIES[stepId].filter((v) => !covered.has(v));
|
|
12756
|
+
supplies.push({
|
|
12757
|
+
kind: "label",
|
|
12758
|
+
stepId,
|
|
12759
|
+
labelToEffect,
|
|
12760
|
+
uncovered
|
|
12761
|
+
});
|
|
12762
|
+
}
|
|
12763
|
+
const present = new Set(labels);
|
|
12764
|
+
for (const stepId of CROP_SUPPLY_STEP_IDS) {
|
|
12765
|
+
const source = CROP_SUPPLY_SOURCES[stepId];
|
|
12766
|
+
const rootLabels = source.rootLabels.filter((l) => present.has(l));
|
|
12767
|
+
if (rootLabels.length === 0) continue;
|
|
12768
|
+
supplies.push({
|
|
12769
|
+
kind: "crop",
|
|
12770
|
+
stepId,
|
|
12771
|
+
rootLabels,
|
|
12772
|
+
parentMacro: source.parentMacro,
|
|
12773
|
+
childClass: source.childClass
|
|
12774
|
+
});
|
|
12775
|
+
}
|
|
12776
|
+
return supplies;
|
|
12777
|
+
}
|
|
12778
|
+
/**
|
|
12779
|
+
* The supplies a root model declares. A row registered with a declaration
|
|
12780
|
+
* carries it (`suppliesSteps`, computed at import from the model's own
|
|
12781
|
+
* labelmap); a row without one — a built-in entry, or a custom row registered
|
|
12782
|
+
* before the field existed — is derived here, on read, from the same inputs.
|
|
12783
|
+
*/
|
|
12784
|
+
function rootSuppliesOf(entry, stepDefaults) {
|
|
12785
|
+
const declared = entry?.suppliesSteps ?? deriveRootSupplies(entry !== void 0 && entry.labels.length > 0 ? entry.labels.map((l) => l.id) : stepDefaults.labels, entry?.classMap ?? stepDefaults.classMap);
|
|
12786
|
+
const inputPx = entry !== void 0 ? Math.min(entry.inputSize.width, entry.inputSize.height) : void 0;
|
|
12787
|
+
if (inputPx === void 0) return declared;
|
|
12788
|
+
return declared.map((s) => s.kind === "crop" ? {
|
|
12789
|
+
...s,
|
|
12790
|
+
rootInputPx: inputPx
|
|
12791
|
+
} : s);
|
|
12792
|
+
}
|
|
12793
|
+
/** The supply a root declares for one step, if any. */
|
|
12794
|
+
function supplyFor(supplies, stepId) {
|
|
12795
|
+
return supplies?.find((s) => s.stepId === stepId);
|
|
12796
|
+
}
|
|
12797
|
+
/**
|
|
12798
|
+
* Read the `useRootModel` flag off a step's settings bag. Absent ⇒ the
|
|
12799
|
+
* retired `labelLink` value if one is stored, else the step's default.
|
|
12800
|
+
*/
|
|
12801
|
+
function readUseRootModel(stepId, settings) {
|
|
12802
|
+
const raw = settings?.[USE_ROOT_MODEL_SETTING_KEY];
|
|
12803
|
+
if (typeof raw === "boolean") return raw;
|
|
12804
|
+
const retired = settings?.[RETIRED_LABEL_LINK_KEY];
|
|
12805
|
+
if (retired === "skip-when-filled") return true;
|
|
12806
|
+
if (retired === "run") return false;
|
|
12807
|
+
return USE_ROOT_MODEL_DEFAULTS[stepId];
|
|
12808
|
+
}
|
|
12809
|
+
/** Why a DECLARED supply is still not usable, or `undefined` when it is. */
|
|
12810
|
+
function supplyBlocker(supply) {
|
|
12811
|
+
if (supply.kind !== "crop") return void 0;
|
|
12812
|
+
const min = CROP_SUPPLY_SOURCES[supply.stepId].minRootInputPx;
|
|
12813
|
+
if (min === void 0) return void 0;
|
|
12814
|
+
return supply.rootInputPx !== void 0 && supply.rootInputPx >= min ? void 0 : "root-input-too-small";
|
|
12815
|
+
}
|
|
12816
|
+
/**
|
|
12817
|
+
* THE decision. Effective = the operator intends it AND the current root
|
|
12818
|
+
* declares it. It never looks at, changes or clears the step's `modelId`: a
|
|
12819
|
+
* root that cannot supply the step leaves the step running its own model, and
|
|
12820
|
+
* switching back to a root that can re-activates the supply by itself.
|
|
12821
|
+
*/
|
|
12822
|
+
function resolveRootSupply(stepId, settings, rootSupplies) {
|
|
12823
|
+
const supply = supplyFor(rootSupplies, stepId);
|
|
12824
|
+
const intent = readUseRootModel(stepId, settings);
|
|
12825
|
+
const blocker = supply === void 0 ? "root-does-not-declare" : supplyBlocker(supply);
|
|
13070
12826
|
return {
|
|
13071
|
-
|
|
13072
|
-
|
|
13073
|
-
|
|
13074
|
-
|
|
12827
|
+
stepId,
|
|
12828
|
+
supply,
|
|
12829
|
+
intent,
|
|
12830
|
+
effective: intent && blocker === void 0,
|
|
12831
|
+
inactive: intent && blocker !== void 0,
|
|
12832
|
+
...intent && blocker !== void 0 ? { inactiveReason: blocker } : {}
|
|
13075
12833
|
};
|
|
13076
12834
|
}
|
|
12835
|
+
/**
|
|
12836
|
+
* The fine label a supplied root class becomes for a step whose supply is
|
|
12837
|
+
* effective, or `undefined` when the step's `enabledClasses` switched it off —
|
|
12838
|
+
* the detection then stays at its macro (`animal`). Empty / absent allow-list
|
|
12839
|
+
* = every class.
|
|
12840
|
+
*/
|
|
12841
|
+
function allowedSuppliedEffect(effect, settings) {
|
|
12842
|
+
const raw = settings?.["enabledClasses"];
|
|
12843
|
+
if (!Array.isArray(raw) || raw.length === 0) return true;
|
|
12844
|
+
return raw.some((v) => v === effect);
|
|
12845
|
+
}
|
|
12846
|
+
/**
|
|
12847
|
+
* The parent a root child box belongs to: among `parents`, the SMALLEST whose
|
|
12848
|
+
* box holds at least {@link ROOT_CHILD_CONTAINMENT_MIN} of the child's area
|
|
12849
|
+
* (a plate inside the car, not inside the bus behind it). `-1` when none does
|
|
12850
|
+
* — the box then belongs to nobody and makes nothing.
|
|
12851
|
+
*/
|
|
12852
|
+
function containingParentIndex(child, parents) {
|
|
12853
|
+
const childArea = child.w * child.h;
|
|
12854
|
+
if (!(childArea > 0)) return -1;
|
|
12855
|
+
let best = -1;
|
|
12856
|
+
let bestArea = Number.POSITIVE_INFINITY;
|
|
12857
|
+
parents.forEach((p, i) => {
|
|
12858
|
+
if (Math.max(0, Math.min(child.x + child.w, p.x + p.w) - Math.max(child.x, p.x)) * Math.max(0, Math.min(child.y + child.h, p.y + p.h) - Math.max(child.y, p.y)) / childArea < .9) return;
|
|
12859
|
+
const area = p.w * p.h;
|
|
12860
|
+
if (area < bestArea) {
|
|
12861
|
+
best = i;
|
|
12862
|
+
bestArea = area;
|
|
12863
|
+
}
|
|
12864
|
+
});
|
|
12865
|
+
return best;
|
|
12866
|
+
}
|
|
13077
12867
|
var MODEL_FORMATS = [
|
|
13078
12868
|
"onnx",
|
|
13079
12869
|
"coreml",
|
|
@@ -13219,12 +13009,35 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
|
|
|
13219
13009
|
/** True when the weights or their data forbid commercial use. */
|
|
13220
13010
|
nonCommercial: boolean().optional()
|
|
13221
13011
|
}));
|
|
13222
|
-
/**
|
|
13223
|
-
|
|
13224
|
-
|
|
13012
|
+
/**
|
|
13013
|
+
* One step a ROOT detector can supply from its own output (D730) — see
|
|
13014
|
+
* `ModelCatalogEntry.suppliesSteps`.
|
|
13015
|
+
*
|
|
13016
|
+
* - `label`: the root's raw class IS the step's answer. `labelToEffect` maps
|
|
13017
|
+
* the root's label to the step's vocabulary; `uncovered` is the vocabulary
|
|
13018
|
+
* the root cannot produce (shown as unavailable, never a blocker).
|
|
13019
|
+
* - `crop`: the root draws the box the step would have found (`license_plate`
|
|
13020
|
+
* for plate-detection, `face` for face-detection). The box becomes a detail
|
|
13021
|
+
* child of the `parentMacro` detection that contains it — never a track.
|
|
13022
|
+
*/
|
|
13023
|
+
var RootStepSupplySchema = discriminatedUnion("kind", [object({
|
|
13024
|
+
kind: literal("label"),
|
|
13025
|
+
stepId: _enum(LABEL_SUPPLY_STEP_IDS),
|
|
13225
13026
|
labelToEffect: record(string(), string()),
|
|
13226
13027
|
uncovered: array(string()).readonly()
|
|
13227
|
-
})
|
|
13028
|
+
}), object({
|
|
13029
|
+
kind: literal("crop"),
|
|
13030
|
+
stepId: _enum(CROP_SUPPLY_STEP_IDS),
|
|
13031
|
+
rootLabels: array(string()).readonly(),
|
|
13032
|
+
parentMacro: _enum(["vehicle", "person"]),
|
|
13033
|
+
childClass: _enum(["plate", "face"]),
|
|
13034
|
+
/**
|
|
13035
|
+
* The root's smaller input side, stamped on read by `rootSuppliesOf` from
|
|
13036
|
+
* the model entry — what a step's `minRootInputPx` gate judges. Never
|
|
13037
|
+
* stored by an import.
|
|
13038
|
+
*/
|
|
13039
|
+
rootInputPx: number().int().positive().optional()
|
|
13040
|
+
})]);
|
|
13228
13041
|
var ModelCatalogEntrySchema = object({
|
|
13229
13042
|
id: string(),
|
|
13230
13043
|
name: string(),
|
|
@@ -13351,15 +13164,15 @@ var ModelCatalogEntrySchema = object({
|
|
|
13351
13164
|
*/
|
|
13352
13165
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
13353
13166
|
/**
|
|
13354
|
-
* The pipeline steps this ROOT detector
|
|
13355
|
-
* its labels name
|
|
13356
|
-
*
|
|
13357
|
-
* labelmap by `
|
|
13358
|
-
*
|
|
13359
|
-
*
|
|
13360
|
-
* `
|
|
13167
|
+
* The pipeline steps this ROOT detector can supply from its own output
|
|
13168
|
+
* (D730): its labels name a step's effect (`deer` for `animal-classifier`)
|
|
13169
|
+
* or draw a step's box (`license_plate` for `plate-detection`). Computed at
|
|
13170
|
+
* import from THIS model's labelmap by `deriveRootSupplies`, never written
|
|
13171
|
+
* by hand and never assumed per family; a row without it is derived on read
|
|
13172
|
+
* (`rootSuppliesOf`). Whether a camera uses it is the step's own
|
|
13173
|
+
* `useRootModel` flag (`resolveRootSupply`).
|
|
13361
13174
|
*/
|
|
13362
|
-
|
|
13175
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional(),
|
|
13363
13176
|
/**
|
|
13364
13177
|
* The model's CLIP feature-space contract (text encoder, dimension, vector
|
|
13365
13178
|
* index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
|
|
@@ -20855,6 +20668,373 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
20855
20668
|
kind: "mutation",
|
|
20856
20669
|
auth: "admin"
|
|
20857
20670
|
});
|
|
20671
|
+
var COCO_80_LABELS = [
|
|
20672
|
+
{
|
|
20673
|
+
id: "person",
|
|
20674
|
+
name: "Person"
|
|
20675
|
+
},
|
|
20676
|
+
{
|
|
20677
|
+
id: "bicycle",
|
|
20678
|
+
name: "Bicycle"
|
|
20679
|
+
},
|
|
20680
|
+
{
|
|
20681
|
+
id: "car",
|
|
20682
|
+
name: "Car"
|
|
20683
|
+
},
|
|
20684
|
+
{
|
|
20685
|
+
id: "motorcycle",
|
|
20686
|
+
name: "Motorcycle"
|
|
20687
|
+
},
|
|
20688
|
+
{
|
|
20689
|
+
id: "airplane",
|
|
20690
|
+
name: "Airplane"
|
|
20691
|
+
},
|
|
20692
|
+
{
|
|
20693
|
+
id: "bus",
|
|
20694
|
+
name: "Bus"
|
|
20695
|
+
},
|
|
20696
|
+
{
|
|
20697
|
+
id: "train",
|
|
20698
|
+
name: "Train"
|
|
20699
|
+
},
|
|
20700
|
+
{
|
|
20701
|
+
id: "truck",
|
|
20702
|
+
name: "Truck"
|
|
20703
|
+
},
|
|
20704
|
+
{
|
|
20705
|
+
id: "boat",
|
|
20706
|
+
name: "Boat"
|
|
20707
|
+
},
|
|
20708
|
+
{
|
|
20709
|
+
id: "traffic light",
|
|
20710
|
+
name: "Traffic Light"
|
|
20711
|
+
},
|
|
20712
|
+
{
|
|
20713
|
+
id: "fire hydrant",
|
|
20714
|
+
name: "Fire Hydrant"
|
|
20715
|
+
},
|
|
20716
|
+
{
|
|
20717
|
+
id: "stop sign",
|
|
20718
|
+
name: "Stop Sign"
|
|
20719
|
+
},
|
|
20720
|
+
{
|
|
20721
|
+
id: "parking meter",
|
|
20722
|
+
name: "Parking Meter"
|
|
20723
|
+
},
|
|
20724
|
+
{
|
|
20725
|
+
id: "bench",
|
|
20726
|
+
name: "Bench"
|
|
20727
|
+
},
|
|
20728
|
+
{
|
|
20729
|
+
id: "bird",
|
|
20730
|
+
name: "Bird"
|
|
20731
|
+
},
|
|
20732
|
+
{
|
|
20733
|
+
id: "cat",
|
|
20734
|
+
name: "Cat"
|
|
20735
|
+
},
|
|
20736
|
+
{
|
|
20737
|
+
id: "dog",
|
|
20738
|
+
name: "Dog"
|
|
20739
|
+
},
|
|
20740
|
+
{
|
|
20741
|
+
id: "horse",
|
|
20742
|
+
name: "Horse"
|
|
20743
|
+
},
|
|
20744
|
+
{
|
|
20745
|
+
id: "sheep",
|
|
20746
|
+
name: "Sheep"
|
|
20747
|
+
},
|
|
20748
|
+
{
|
|
20749
|
+
id: "cow",
|
|
20750
|
+
name: "Cow"
|
|
20751
|
+
},
|
|
20752
|
+
{
|
|
20753
|
+
id: "elephant",
|
|
20754
|
+
name: "Elephant"
|
|
20755
|
+
},
|
|
20756
|
+
{
|
|
20757
|
+
id: "bear",
|
|
20758
|
+
name: "Bear"
|
|
20759
|
+
},
|
|
20760
|
+
{
|
|
20761
|
+
id: "zebra",
|
|
20762
|
+
name: "Zebra"
|
|
20763
|
+
},
|
|
20764
|
+
{
|
|
20765
|
+
id: "giraffe",
|
|
20766
|
+
name: "Giraffe"
|
|
20767
|
+
},
|
|
20768
|
+
{
|
|
20769
|
+
id: "backpack",
|
|
20770
|
+
name: "Backpack"
|
|
20771
|
+
},
|
|
20772
|
+
{
|
|
20773
|
+
id: "umbrella",
|
|
20774
|
+
name: "Umbrella"
|
|
20775
|
+
},
|
|
20776
|
+
{
|
|
20777
|
+
id: "handbag",
|
|
20778
|
+
name: "Handbag"
|
|
20779
|
+
},
|
|
20780
|
+
{
|
|
20781
|
+
id: "tie",
|
|
20782
|
+
name: "Tie"
|
|
20783
|
+
},
|
|
20784
|
+
{
|
|
20785
|
+
id: "suitcase",
|
|
20786
|
+
name: "Suitcase"
|
|
20787
|
+
},
|
|
20788
|
+
{
|
|
20789
|
+
id: "frisbee",
|
|
20790
|
+
name: "Frisbee"
|
|
20791
|
+
},
|
|
20792
|
+
{
|
|
20793
|
+
id: "skis",
|
|
20794
|
+
name: "Skis"
|
|
20795
|
+
},
|
|
20796
|
+
{
|
|
20797
|
+
id: "snowboard",
|
|
20798
|
+
name: "Snowboard"
|
|
20799
|
+
},
|
|
20800
|
+
{
|
|
20801
|
+
id: "sports ball",
|
|
20802
|
+
name: "Sports Ball"
|
|
20803
|
+
},
|
|
20804
|
+
{
|
|
20805
|
+
id: "kite",
|
|
20806
|
+
name: "Kite"
|
|
20807
|
+
},
|
|
20808
|
+
{
|
|
20809
|
+
id: "baseball bat",
|
|
20810
|
+
name: "Baseball Bat"
|
|
20811
|
+
},
|
|
20812
|
+
{
|
|
20813
|
+
id: "baseball glove",
|
|
20814
|
+
name: "Baseball Glove"
|
|
20815
|
+
},
|
|
20816
|
+
{
|
|
20817
|
+
id: "skateboard",
|
|
20818
|
+
name: "Skateboard"
|
|
20819
|
+
},
|
|
20820
|
+
{
|
|
20821
|
+
id: "surfboard",
|
|
20822
|
+
name: "Surfboard"
|
|
20823
|
+
},
|
|
20824
|
+
{
|
|
20825
|
+
id: "tennis racket",
|
|
20826
|
+
name: "Tennis Racket"
|
|
20827
|
+
},
|
|
20828
|
+
{
|
|
20829
|
+
id: "bottle",
|
|
20830
|
+
name: "Bottle"
|
|
20831
|
+
},
|
|
20832
|
+
{
|
|
20833
|
+
id: "wine glass",
|
|
20834
|
+
name: "Wine Glass"
|
|
20835
|
+
},
|
|
20836
|
+
{
|
|
20837
|
+
id: "cup",
|
|
20838
|
+
name: "Cup"
|
|
20839
|
+
},
|
|
20840
|
+
{
|
|
20841
|
+
id: "fork",
|
|
20842
|
+
name: "Fork"
|
|
20843
|
+
},
|
|
20844
|
+
{
|
|
20845
|
+
id: "knife",
|
|
20846
|
+
name: "Knife"
|
|
20847
|
+
},
|
|
20848
|
+
{
|
|
20849
|
+
id: "spoon",
|
|
20850
|
+
name: "Spoon"
|
|
20851
|
+
},
|
|
20852
|
+
{
|
|
20853
|
+
id: "bowl",
|
|
20854
|
+
name: "Bowl"
|
|
20855
|
+
},
|
|
20856
|
+
{
|
|
20857
|
+
id: "banana",
|
|
20858
|
+
name: "Banana"
|
|
20859
|
+
},
|
|
20860
|
+
{
|
|
20861
|
+
id: "apple",
|
|
20862
|
+
name: "Apple"
|
|
20863
|
+
},
|
|
20864
|
+
{
|
|
20865
|
+
id: "sandwich",
|
|
20866
|
+
name: "Sandwich"
|
|
20867
|
+
},
|
|
20868
|
+
{
|
|
20869
|
+
id: "orange",
|
|
20870
|
+
name: "Orange"
|
|
20871
|
+
},
|
|
20872
|
+
{
|
|
20873
|
+
id: "broccoli",
|
|
20874
|
+
name: "Broccoli"
|
|
20875
|
+
},
|
|
20876
|
+
{
|
|
20877
|
+
id: "carrot",
|
|
20878
|
+
name: "Carrot"
|
|
20879
|
+
},
|
|
20880
|
+
{
|
|
20881
|
+
id: "hot dog",
|
|
20882
|
+
name: "Hot Dog"
|
|
20883
|
+
},
|
|
20884
|
+
{
|
|
20885
|
+
id: "pizza",
|
|
20886
|
+
name: "Pizza"
|
|
20887
|
+
},
|
|
20888
|
+
{
|
|
20889
|
+
id: "donut",
|
|
20890
|
+
name: "Donut"
|
|
20891
|
+
},
|
|
20892
|
+
{
|
|
20893
|
+
id: "cake",
|
|
20894
|
+
name: "Cake"
|
|
20895
|
+
},
|
|
20896
|
+
{
|
|
20897
|
+
id: "chair",
|
|
20898
|
+
name: "Chair"
|
|
20899
|
+
},
|
|
20900
|
+
{
|
|
20901
|
+
id: "couch",
|
|
20902
|
+
name: "Couch"
|
|
20903
|
+
},
|
|
20904
|
+
{
|
|
20905
|
+
id: "potted plant",
|
|
20906
|
+
name: "Potted Plant"
|
|
20907
|
+
},
|
|
20908
|
+
{
|
|
20909
|
+
id: "bed",
|
|
20910
|
+
name: "Bed"
|
|
20911
|
+
},
|
|
20912
|
+
{
|
|
20913
|
+
id: "dining table",
|
|
20914
|
+
name: "Dining Table"
|
|
20915
|
+
},
|
|
20916
|
+
{
|
|
20917
|
+
id: "toilet",
|
|
20918
|
+
name: "Toilet"
|
|
20919
|
+
},
|
|
20920
|
+
{
|
|
20921
|
+
id: "tv",
|
|
20922
|
+
name: "TV"
|
|
20923
|
+
},
|
|
20924
|
+
{
|
|
20925
|
+
id: "laptop",
|
|
20926
|
+
name: "Laptop"
|
|
20927
|
+
},
|
|
20928
|
+
{
|
|
20929
|
+
id: "mouse",
|
|
20930
|
+
name: "Mouse"
|
|
20931
|
+
},
|
|
20932
|
+
{
|
|
20933
|
+
id: "remote",
|
|
20934
|
+
name: "Remote"
|
|
20935
|
+
},
|
|
20936
|
+
{
|
|
20937
|
+
id: "keyboard",
|
|
20938
|
+
name: "Keyboard"
|
|
20939
|
+
},
|
|
20940
|
+
{
|
|
20941
|
+
id: "cell phone",
|
|
20942
|
+
name: "Cell Phone"
|
|
20943
|
+
},
|
|
20944
|
+
{
|
|
20945
|
+
id: "microwave",
|
|
20946
|
+
name: "Microwave"
|
|
20947
|
+
},
|
|
20948
|
+
{
|
|
20949
|
+
id: "oven",
|
|
20950
|
+
name: "Oven"
|
|
20951
|
+
},
|
|
20952
|
+
{
|
|
20953
|
+
id: "toaster",
|
|
20954
|
+
name: "Toaster"
|
|
20955
|
+
},
|
|
20956
|
+
{
|
|
20957
|
+
id: "sink",
|
|
20958
|
+
name: "Sink"
|
|
20959
|
+
},
|
|
20960
|
+
{
|
|
20961
|
+
id: "refrigerator",
|
|
20962
|
+
name: "Refrigerator"
|
|
20963
|
+
},
|
|
20964
|
+
{
|
|
20965
|
+
id: "book",
|
|
20966
|
+
name: "Book"
|
|
20967
|
+
},
|
|
20968
|
+
{
|
|
20969
|
+
id: "clock",
|
|
20970
|
+
name: "Clock"
|
|
20971
|
+
},
|
|
20972
|
+
{
|
|
20973
|
+
id: "vase",
|
|
20974
|
+
name: "Vase"
|
|
20975
|
+
},
|
|
20976
|
+
{
|
|
20977
|
+
id: "scissors",
|
|
20978
|
+
name: "Scissors"
|
|
20979
|
+
},
|
|
20980
|
+
{
|
|
20981
|
+
id: "teddy bear",
|
|
20982
|
+
name: "Teddy Bear"
|
|
20983
|
+
},
|
|
20984
|
+
{
|
|
20985
|
+
id: "hair drier",
|
|
20986
|
+
name: "Hair Drier"
|
|
20987
|
+
},
|
|
20988
|
+
{
|
|
20989
|
+
id: "toothbrush",
|
|
20990
|
+
name: "Toothbrush"
|
|
20991
|
+
}
|
|
20992
|
+
];
|
|
20993
|
+
new Set([
|
|
20994
|
+
{
|
|
20995
|
+
id: "person",
|
|
20996
|
+
name: "Person"
|
|
20997
|
+
},
|
|
20998
|
+
{
|
|
20999
|
+
id: "vehicle",
|
|
21000
|
+
name: "Vehicle"
|
|
21001
|
+
},
|
|
21002
|
+
{
|
|
21003
|
+
id: "animal",
|
|
21004
|
+
name: "Animal"
|
|
21005
|
+
},
|
|
21006
|
+
{
|
|
21007
|
+
id: "package",
|
|
21008
|
+
name: "Package"
|
|
21009
|
+
}
|
|
21010
|
+
].map((l) => l.id));
|
|
21011
|
+
var COCO_TO_MACRO = {
|
|
21012
|
+
mapping: {
|
|
21013
|
+
person: "person",
|
|
21014
|
+
bicycle: "vehicle",
|
|
21015
|
+
car: "vehicle",
|
|
21016
|
+
motorcycle: "vehicle",
|
|
21017
|
+
airplane: "vehicle",
|
|
21018
|
+
bus: "vehicle",
|
|
21019
|
+
train: "vehicle",
|
|
21020
|
+
truck: "vehicle",
|
|
21021
|
+
boat: "vehicle",
|
|
21022
|
+
bird: "animal",
|
|
21023
|
+
cat: "animal",
|
|
21024
|
+
dog: "animal",
|
|
21025
|
+
horse: "animal",
|
|
21026
|
+
sheep: "animal",
|
|
21027
|
+
cow: "animal",
|
|
21028
|
+
elephant: "animal",
|
|
21029
|
+
bear: "animal",
|
|
21030
|
+
zebra: "animal",
|
|
21031
|
+
giraffe: "animal",
|
|
21032
|
+
suitcase: "package",
|
|
21033
|
+
backpack: "package",
|
|
21034
|
+
handbag: "package"
|
|
21035
|
+
},
|
|
21036
|
+
preserveOriginal: false
|
|
21037
|
+
};
|
|
20858
21038
|
var AUDIO_MACRO_LABELS = [
|
|
20859
21039
|
{
|
|
20860
21040
|
id: "speech",
|
|
@@ -21616,6 +21796,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
21616
21796
|
"stream-offline",
|
|
21617
21797
|
"node-online",
|
|
21618
21798
|
"node-offline",
|
|
21799
|
+
"node-restarting",
|
|
21800
|
+
"node-updating",
|
|
21619
21801
|
"node-inference-unavailable",
|
|
21620
21802
|
"detection-blind",
|
|
21621
21803
|
"addon-crash-loop",
|
|
@@ -26180,6 +26362,34 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
26180
26362
|
timestamp: number()
|
|
26181
26363
|
});
|
|
26182
26364
|
/**
|
|
26365
|
+
* A root model's boxes standing in for one crop-kind step's own inference
|
|
26366
|
+
* (D730) — see `runPipeline.suppliedRoot`.
|
|
26367
|
+
*/
|
|
26368
|
+
var SuppliedRootOutputSchema = object({
|
|
26369
|
+
stepId: string(),
|
|
26370
|
+
/** The root model that drew the boxes — stamped on the result. */
|
|
26371
|
+
modelId: string(),
|
|
26372
|
+
detections: array(object({
|
|
26373
|
+
/** `[x1, y1, x2, y2]` in the pixels of the call's image. */
|
|
26374
|
+
bbox: tuple([
|
|
26375
|
+
number(),
|
|
26376
|
+
number(),
|
|
26377
|
+
number(),
|
|
26378
|
+
number()
|
|
26379
|
+
]),
|
|
26380
|
+
score: number(),
|
|
26381
|
+
/**
|
|
26382
|
+
* Five facial landmarks in the same pixels — a face the step's own
|
|
26383
|
+
* detector already re-found inside a root face box (D730), so its
|
|
26384
|
+
* embedder child aligns it exactly as it aligns any detected face.
|
|
26385
|
+
*/
|
|
26386
|
+
landmarks: array(object({
|
|
26387
|
+
x: number(),
|
|
26388
|
+
y: number()
|
|
26389
|
+
})).optional()
|
|
26390
|
+
})).min(1)
|
|
26391
|
+
});
|
|
26392
|
+
/**
|
|
26183
26393
|
* Reference to the frame's retained NATIVE surface + the parent crop's placement
|
|
26184
26394
|
* within the frame, so the executor can re-cut a leaf child ROI at native
|
|
26185
26395
|
* resolution on the detail plane. See the `runPipeline` `nativeCropRef` field.
|
|
@@ -26310,7 +26520,7 @@ var PipelineModelOptionSchema = object({
|
|
|
26310
26520
|
legacy: boolean().optional(),
|
|
26311
26521
|
provider: ModelProviderIdSchema.optional(),
|
|
26312
26522
|
defaultConfidence: number().optional(),
|
|
26313
|
-
|
|
26523
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional()
|
|
26314
26524
|
});
|
|
26315
26525
|
var ConfigFieldBridge = custom();
|
|
26316
26526
|
var PipelineAddonSchemaSchema = object({
|
|
@@ -26714,7 +26924,16 @@ var pipelineExecutorCapability = {
|
|
|
26714
26924
|
* `device-not-servable`), and nothing reaches the camera's live
|
|
26715
26925
|
* trace stream. Absent ⇒ unchanged behaviour.
|
|
26716
26926
|
*/
|
|
26717
|
-
replay: literal(true).optional()
|
|
26927
|
+
replay: literal(true).optional(),
|
|
26928
|
+
/**
|
|
26929
|
+
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
26930
|
+
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
26931
|
+
* step (a Frigate+ `license_plate` for `plate-detection`): the step is
|
|
26932
|
+
* NOT inferred, these boxes are its output, and its children (the plate
|
|
26933
|
+
* reader) run on them through their own crop policy. Boxes are in the
|
|
26934
|
+
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
26935
|
+
*/
|
|
26936
|
+
suppliedRoot: SuppliedRootOutputSchema.optional()
|
|
26718
26937
|
}), PipelineRunResultBridge, { kind: "mutation" }),
|
|
26719
26938
|
/**
|
|
26720
26939
|
* Batched run — N raw frames packed into one cap call. The provider
|
|
@@ -27987,7 +28206,22 @@ var pipelineRunnerCapability = {
|
|
|
27987
28206
|
*/
|
|
27988
28207
|
cropJpeg: string().optional(),
|
|
27989
28208
|
parent: DetailParentSchema,
|
|
27990
|
-
steps: array(string()).optional()
|
|
28209
|
+
steps: array(string()).optional(),
|
|
28210
|
+
/**
|
|
28211
|
+
* The camera's root model already drew this step's boxes (D730): a
|
|
28212
|
+
* `license_plate` inside the parent vehicle. The named step is NOT
|
|
28213
|
+
* inferred — these FRAME-space boxes are its output — and its
|
|
28214
|
+
* requested children (the plate reader) run on them. Absent ⇒ every
|
|
28215
|
+
* requested step infers as before.
|
|
28216
|
+
*/
|
|
28217
|
+
supplied: object({
|
|
28218
|
+
stepId: string(),
|
|
28219
|
+
modelId: string(),
|
|
28220
|
+
boxes: array(object({
|
|
28221
|
+
bbox: NativeCropBboxSchema,
|
|
28222
|
+
score: number()
|
|
28223
|
+
})).min(1)
|
|
28224
|
+
}).optional()
|
|
27991
28225
|
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" }),
|
|
27992
28226
|
/**
|
|
27993
28227
|
* Run ONE enrichment step against caller-supplied pixels, with NO camera
|
|
@@ -34621,6 +34855,27 @@ var ViewerEndpointsSchema = object({
|
|
|
34621
34855
|
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
34622
34856
|
resolved: array(string()).readonly()
|
|
34623
34857
|
});
|
|
34858
|
+
/**
|
|
34859
|
+
* One audience's hub address (see `hub-address.ts`): the operator's stored
|
|
34860
|
+
* override, the address in use, and where it came from.
|
|
34861
|
+
*/
|
|
34862
|
+
var HubAddressSnapshotSchema = object({
|
|
34863
|
+
/** The operator's override, or null for automatic. */
|
|
34864
|
+
override: string().nullable(),
|
|
34865
|
+
/** The address in use, or null when nothing qualifies (never loopback). */
|
|
34866
|
+
resolved: string().nullable(),
|
|
34867
|
+
source: _enum([
|
|
34868
|
+
"override",
|
|
34869
|
+
"auto",
|
|
34870
|
+
"none"
|
|
34871
|
+
])
|
|
34872
|
+
});
|
|
34873
|
+
var HubAddressesSchema = object({
|
|
34874
|
+
/** "Hub address for agents" — agents' bundle/model pulls, LAN devices. */
|
|
34875
|
+
cluster: HubAddressSnapshotSchema,
|
|
34876
|
+
/** "Public address for sign-in links" — e-mail links, OIDC, WebAuthn, OAuth2. */
|
|
34877
|
+
browser: HubAddressSnapshotSchema
|
|
34878
|
+
});
|
|
34624
34879
|
var AllowedAddressesSchema = object({
|
|
34625
34880
|
/**
|
|
34626
34881
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -34667,7 +34922,13 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
34667
34922
|
* an address notification links can be flagged with, not a hub
|
|
34668
34923
|
* route. Default `false`: racers and rankers never see it. */
|
|
34669
34924
|
includeAppLink: boolean().optional()
|
|
34670
|
-
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(_void(),
|
|
34925
|
+
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(_void(), HubAddressesSchema), method(object({
|
|
34926
|
+
audience: _enum(["cluster", "browser"]),
|
|
34927
|
+
baseUrl: string().nullable()
|
|
34928
|
+
}), HubAddressesSchema, {
|
|
34929
|
+
kind: "mutation",
|
|
34930
|
+
auth: "admin"
|
|
34931
|
+
}), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" }), method(_void(), TlsStatusSchema), method(object({ reason: string().optional() }), TlsStatusSchema, {
|
|
34671
34932
|
kind: "mutation",
|
|
34672
34933
|
auth: "admin"
|
|
34673
34934
|
}), method(object({
|
|
@@ -35057,7 +35318,8 @@ object({
|
|
|
35057
35318
|
* writes this slice (not even a boot seed), and neither does the runner's
|
|
35058
35319
|
* phase machine: its phase is "a session is attached" for every on-motion
|
|
35059
35320
|
* session, not motion, and it now has its own `DetectionPhaseTransition`.
|
|
35060
|
-
* A provider's `isDetected`
|
|
35321
|
+
* A provider's `isDetected` and `getStatus` answer from the hub's slice
|
|
35322
|
+
* (`hubMotionNativeProvider`).
|
|
35061
35323
|
* - **Sensors** (Home Assistant binary sensors, Homematic, Matter, Alexa
|
|
35062
35324
|
* imports) — the provider pushes both edges itself, from the upstream
|
|
35063
35325
|
* system's own state change. That is the sensor's own fact.
|
|
@@ -43673,6 +43935,12 @@ Object.freeze({
|
|
|
43673
43935
|
addonId: null,
|
|
43674
43936
|
access: "view"
|
|
43675
43937
|
},
|
|
43938
|
+
"localNetwork.getHubAddresses": {
|
|
43939
|
+
capName: "local-network",
|
|
43940
|
+
capScope: "system",
|
|
43941
|
+
addonId: null,
|
|
43942
|
+
access: "view"
|
|
43943
|
+
},
|
|
43676
43944
|
"localNetwork.getNotificationEndpoint": {
|
|
43677
43945
|
capName: "local-network",
|
|
43678
43946
|
capScope: "system",
|
|
@@ -43727,6 +43995,12 @@ Object.freeze({
|
|
|
43727
43995
|
addonId: null,
|
|
43728
43996
|
access: "create"
|
|
43729
43997
|
},
|
|
43998
|
+
"localNetwork.setHubAddress": {
|
|
43999
|
+
capName: "local-network",
|
|
44000
|
+
capScope: "system",
|
|
44001
|
+
addonId: null,
|
|
44002
|
+
access: "create"
|
|
44003
|
+
},
|
|
43730
44004
|
"localNetwork.setNotificationEndpoint": {
|
|
43731
44005
|
capName: "local-network",
|
|
43732
44006
|
capScope: "system",
|
|
@@ -52176,6 +52450,8 @@ new Map(Object.entries({
|
|
|
52176
52450
|
"detection-blind": "device-events",
|
|
52177
52451
|
"node-online": "system",
|
|
52178
52452
|
"node-offline": "system",
|
|
52453
|
+
"node-restarting": "system",
|
|
52454
|
+
"node-updating": "system",
|
|
52179
52455
|
"node-inference-unavailable": "system",
|
|
52180
52456
|
"addon-crash-loop": "system",
|
|
52181
52457
|
"addon-update-available": "system",
|
|
@@ -52253,6 +52529,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
52253
52529
|
kinds: [
|
|
52254
52530
|
"node-offline",
|
|
52255
52531
|
"node-online",
|
|
52532
|
+
"node-restarting",
|
|
52256
52533
|
"node-inference-unavailable"
|
|
52257
52534
|
]
|
|
52258
52535
|
},
|
|
@@ -52274,6 +52551,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
52274
52551
|
label: "Server & container updates",
|
|
52275
52552
|
kinds: [
|
|
52276
52553
|
"server-update-available",
|
|
52554
|
+
"node-updating",
|
|
52277
52555
|
"server-updated",
|
|
52278
52556
|
"wrapper-update-available"
|
|
52279
52557
|
]
|
|
@@ -52421,6 +52699,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
52421
52699
|
kinds: [
|
|
52422
52700
|
"node-offline",
|
|
52423
52701
|
"node-online",
|
|
52702
|
+
"node-restarting",
|
|
52424
52703
|
"node-inference-unavailable"
|
|
52425
52704
|
]
|
|
52426
52705
|
},
|
|
@@ -52442,6 +52721,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
52442
52721
|
example: "server 1.2.377 → 1.2.378",
|
|
52443
52722
|
kinds: [
|
|
52444
52723
|
"server-update-available",
|
|
52724
|
+
"node-updating",
|
|
52445
52725
|
"server-updated",
|
|
52446
52726
|
"wrapper-update-available"
|
|
52447
52727
|
]
|
|
@@ -52474,7 +52754,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
52474
52754
|
{
|
|
52475
52755
|
name: "summarySection",
|
|
52476
52756
|
label: "Summary: this section",
|
|
52477
|
-
description: "The section a per-section summary row is about
|
|
52757
|
+
description: "The section a per-section summary row is about; on a summary sent as one message, every section it reports, comma-separated.",
|
|
52478
52758
|
example: "Batterie scariche",
|
|
52479
52759
|
group: "system",
|
|
52480
52760
|
families: ["rule"],
|
|
@@ -52916,6 +53196,24 @@ function stepModelRunsOnFormat(models, modelId, format) {
|
|
|
52916
53196
|
}
|
|
52917
53197
|
return models.some((m) => m.legacy !== true && hasBuild(m, format));
|
|
52918
53198
|
}
|
|
53199
|
+
/** Side of the square, as a multiple of the face box's longer side. */
|
|
53200
|
+
var ROOT_FACE_REFINE_SCALE = 1.6;
|
|
53201
|
+
/**
|
|
53202
|
+
* The square (frame-space pixels) a root face box is refined in: centred on
|
|
53203
|
+
* the box, side `ROOT_FACE_REFINE_SCALE ×` its longer side, slid inside the
|
|
53204
|
+
* frame, and shrunk only when the frame's shorter side is smaller. Pure.
|
|
53205
|
+
*/
|
|
53206
|
+
function deriveRootFaceRefineRect(face, frameWidth, frameHeight) {
|
|
53207
|
+
const side = Math.min(Math.max(face.w, face.h) * ROOT_FACE_REFINE_SCALE, Math.min(frameWidth, frameHeight));
|
|
53208
|
+
const cx = face.x + face.w / 2;
|
|
53209
|
+
const cy = face.y + face.h / 2;
|
|
53210
|
+
return {
|
|
53211
|
+
x: Math.min(Math.max(0, cx - side / 2), frameWidth - side),
|
|
53212
|
+
y: Math.min(Math.max(0, cy - side / 2), frameHeight - side),
|
|
53213
|
+
w: side,
|
|
53214
|
+
h: side
|
|
53215
|
+
};
|
|
53216
|
+
}
|
|
52919
53217
|
var DETAIL_CROP_PADDING_KEY = "detailCropPaddingRatio";
|
|
52920
53218
|
var DETAIL_CROP_SQUARE_KEY = "detailCropSquare";
|
|
52921
53219
|
/**
|
|
@@ -54116,4 +54414,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
54116
54414
|
return out;
|
|
54117
54415
|
}
|
|
54118
54416
|
//#endregion
|
|
54119
|
-
export { cameraStreamsCapability as $,
|
|
54417
|
+
export { cameraStreamsCapability as $, union as $n, resolveEgressDecodeHwAccel as $t, NativeLeaseAdmissionSchema as A, customAction as An, logChannelsCapability as At, RecordingConfigSchema as B, selectAssignedProfileSlots as Bn, parseProcStatus as Bt, EncodeProfileSchema as C, errMsg as Cn, gifFromMp4Args as Ct, HF_BASE_URL as D, CamProfileSchema as Dn, linkedLabelStepId as Dt, G711_SCALE_CORRECTION_DB as E, CAM_PROFILE_ORDER as En, isFirstLevelMacroClass as Et, RATE_CONTROL_TIGHT as F, makeProfileBrokerId as Fn, memoizePinnedFfmpeg as Ft, YAMNET_TO_MACRO as G, discriminatedUnion as Gn, pipelineRunnerCapability as Gt, RingBuffer as H, _enum as Hn, pickDetailCropConvention as Ht, RECORDING_EXPORT_MAX_READ_BYTES as I, makeSourceBrokerId as In, migrateLegacyDeviceSignalConfig as It, audioAnalysisCapability as J, number as Jn, recordingCapability as Jt, addonWidgetsSourceCapability as K, lazy as Kn, rankStreams as Kt, RECORDING_SOURCE_CAMSTACK as L, nodePin as Ln, modeMayWrite as Lt, OpsLogEntrySchema as M, expandAudioChunkToF32le as Mn, maskUrlCredentials as Mt, PoolMemoryWatchdog as N, hydrateSchema as Nn, mayReadLocation as Nt, LABEL_SUPPLY_MACRO as O, audioChunkBytesPerSample as On, linkedStepOf as Ot, RATE_CONTROL_RELAXED as P, isEvent as Pn, mayWriteToLocation as Pt, cameraOwnsMotionViaSensor as Q, string as Qn, resolveCreateExportSubject as Qt, RECORDING_SOURCE_CAMSTACK_ADDON as R, parseJsonUnknown as Rn, motionDetectionCapability as Rt, EVENT_PAD_MS as S, DeviceType as Sn, gifDeriveSpeed as St, FailureCounters as T, BaseAddon as Tn, inferModelProvider as Tt, VIDEOCLIPS_MAX_OFFER_BYTES as U, array as Un, pickNativeLeaseOverride as Ut, RecordingSignalStatusSchema as V, sleep as Vn, pickClusterStepSettings as Vt, VISIT_MERGE_GAP_MS as W, boolean as Wn, pipelineExecutorCapability as Wt, audioKindId as X, preprocess as Xn, recordingSignalCapability as Xt, audioAnalyzerCapability as Y, object as Yn, recordingExportCapability as Yt, batteryCapability as Z, record as Zn, resolveClusterStepModelId as Zt, DEFAULT_DETAIL_CROP_CONVENTION as _, buildFfmpegArgs as _n, evictionPolicyOfLocation as _t, BackgroundRunRegistry as a, runtimeDevices as an, declareLogChannel as at, DEVICE_BACKEND_TO_FORMAT as b, isSoftwareDecode as bn, ffmpegRate as bt, CLIP_STILL_REASON_CODE_HEADER as c, storageOccupancyCapability as cn, deriveDetailCropRect as ct, CLUSTER_MODEL_SCOPED_STEPS as d, supportedRuntimes as dn, detectionPipelineCapability as dt, resolveLocationMode as en, EventCategory as er, clipExportFailure as et, COCO_80_LABELS as f, videoclipsCapability as fn, egressTranscodeSharingKey as ft, DEFAULT_CLUSTER_STEP_SETTINGS as g, Fmp4BoxSplitter as gn, evictionPolicyForMode as gt, DEFAULT_AUDIO_ANALYZER_CONFIG as h, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as hn, evaluateZoneRules as ht, AUDIO_MACRO_LABELS as i, rootSuppliesOf as in, createLogChannelsProvider as it, NativeLeaseSettingsSchema as j, defineCustomActions as jn, mapAudioLabelToMacro as jt, LABEL_SUPPLY_VOCABULARIES as k, createEvent as kn, loadContributionCapability as kt, CLIP_STILL_REASON_HEADER as l, streamBrokerCapability as ln, deriveRecordingMode as lt, CROP_SUPPLY_SOURCES as m, AUDIO_PRESETS as mn, enumerateInferenceDevices as mt, APPLE_SA_TO_MACRO as n, resolveRecordingProfiles as nn, containingParentIndex as nt, BatteryStatusSchema as o, stepModelRunsOnFormat as on, defaultDeviceFor as ot, COCO_TO_MACRO as p, webrtcSessionCapability as pn, egressTransportFromRequest as pt, allowedSuppliedEffect as q, literal as qn, recordingArchiveCapability as qt, AUDIO_BACKEND_CHOICES as r, resolveRootSupply as rn, createHwAccelCache as rt, CLIP_BROKER_PACED_RATES as s, storageEvictableCapability as sn, deriveBatteryPresence as st, APPEARANCE_BLOCKS as t, resolvePoolMemoryPolicy as tn, clipExportFailureOf as tt, CLIP_STREAM_TRANSPORT_HEADER as u, stripRetiredBandPreBufferSec as un, deriveRootFaceRefineRect as ut, DEFAULT_EVENTS_BAND_BUFFER_SEC as v, evaluateSensorEdge as vn, exportSubjectOf as vt, ExportRecordSchema as w, BOOT_RECOVERY_BACKOFF_MS as wn, hfModelUrl as wt, EVENT_OWNER_TYPES as x, DeviceFeature as xn, gbToBytes as xt, DEFAULT_NATIVE_LEASE_SETTINGS as y, invocationFromEncodeProfile as yn, failureContributionCapability as yt, ROOT_SUPPLIABLE_STEP_IDS as z, parseProfileBrokerId as zn, overlayClusterStepSettings as zt };
|