@camstack/addon-model-studio 1.1.203 → 1.1.204
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/{MotionZonesSettings-Bf3wXZlv.mjs → MotionZonesSettings-f-Rb4FPx.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-CxaNRx4y.mjs → PrivacyMaskSettings-DzrwiikK.mjs} +4 -4
- package/dist/{SceneMonitorEditor-6Njva8QD.mjs → SceneMonitorEditor-pr_u7JDi.mjs} +3 -3
- package/dist/_stub.js +3563 -3451
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BY8XezL8.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-DD6MdVfP.mjs} +3 -3
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Cjm3a0Rl.mjs +26 -0
- package/dist/{hostInit-wXzg-Tk8.mjs → hostInit-dZ-iNlYE.mjs} +2 -2
- package/dist/model-studio.addon.js +246 -424
- package/dist/model-studio.addon.mjs +246 -424
- package/dist/{player-overlays-DXZiCaYb.mjs → player-overlays-DyoPwbMr.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-CTK4xC09.mjs → responsive-_Hjo-SPS.mjs} +1 -1
- package/dist/{scene-monitor-copy-FMv2Ek7A.mjs → scene-monitor-copy-DxG4-n1Z.mjs} +1 -1
- package/dist/{square-CB2wuPUO.mjs → square-BIirO7Z1.mjs} +1 -1
- package/dist/{trash-2-JwXG4MxN.mjs → trash-2-B9qboTSI.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-C0ebXZ4C.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-DExLMP5B.mjs} +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-De0PN1jX.mjs +0 -26
|
@@ -10900,394 +10900,30 @@ var ClipSearchStrictnessSchema = _enum([
|
|
|
10900
10900
|
"balanced",
|
|
10901
10901
|
"strict"
|
|
10902
10902
|
]);
|
|
10903
|
-
|
|
10904
|
-
|
|
10905
|
-
id: "person",
|
|
10906
|
-
name: "Person"
|
|
10907
|
-
},
|
|
10908
|
-
{
|
|
10909
|
-
id: "bicycle",
|
|
10910
|
-
name: "Bicycle"
|
|
10911
|
-
},
|
|
10912
|
-
{
|
|
10913
|
-
id: "car",
|
|
10914
|
-
name: "Car"
|
|
10915
|
-
},
|
|
10916
|
-
{
|
|
10917
|
-
id: "motorcycle",
|
|
10918
|
-
name: "Motorcycle"
|
|
10919
|
-
},
|
|
10920
|
-
{
|
|
10921
|
-
id: "airplane",
|
|
10922
|
-
name: "Airplane"
|
|
10923
|
-
},
|
|
10924
|
-
{
|
|
10925
|
-
id: "bus",
|
|
10926
|
-
name: "Bus"
|
|
10927
|
-
},
|
|
10928
|
-
{
|
|
10929
|
-
id: "train",
|
|
10930
|
-
name: "Train"
|
|
10931
|
-
},
|
|
10932
|
-
{
|
|
10933
|
-
id: "truck",
|
|
10934
|
-
name: "Truck"
|
|
10935
|
-
},
|
|
10936
|
-
{
|
|
10937
|
-
id: "boat",
|
|
10938
|
-
name: "Boat"
|
|
10939
|
-
},
|
|
10940
|
-
{
|
|
10941
|
-
id: "traffic light",
|
|
10942
|
-
name: "Traffic Light"
|
|
10943
|
-
},
|
|
10944
|
-
{
|
|
10945
|
-
id: "fire hydrant",
|
|
10946
|
-
name: "Fire Hydrant"
|
|
10947
|
-
},
|
|
10948
|
-
{
|
|
10949
|
-
id: "stop sign",
|
|
10950
|
-
name: "Stop Sign"
|
|
10951
|
-
},
|
|
10952
|
-
{
|
|
10953
|
-
id: "parking meter",
|
|
10954
|
-
name: "Parking Meter"
|
|
10955
|
-
},
|
|
10956
|
-
{
|
|
10957
|
-
id: "bench",
|
|
10958
|
-
name: "Bench"
|
|
10959
|
-
},
|
|
10960
|
-
{
|
|
10961
|
-
id: "bird",
|
|
10962
|
-
name: "Bird"
|
|
10963
|
-
},
|
|
10964
|
-
{
|
|
10965
|
-
id: "cat",
|
|
10966
|
-
name: "Cat"
|
|
10967
|
-
},
|
|
10968
|
-
{
|
|
10969
|
-
id: "dog",
|
|
10970
|
-
name: "Dog"
|
|
10971
|
-
},
|
|
10972
|
-
{
|
|
10973
|
-
id: "horse",
|
|
10974
|
-
name: "Horse"
|
|
10975
|
-
},
|
|
10976
|
-
{
|
|
10977
|
-
id: "sheep",
|
|
10978
|
-
name: "Sheep"
|
|
10979
|
-
},
|
|
10980
|
-
{
|
|
10981
|
-
id: "cow",
|
|
10982
|
-
name: "Cow"
|
|
10983
|
-
},
|
|
10984
|
-
{
|
|
10985
|
-
id: "elephant",
|
|
10986
|
-
name: "Elephant"
|
|
10987
|
-
},
|
|
10988
|
-
{
|
|
10989
|
-
id: "bear",
|
|
10990
|
-
name: "Bear"
|
|
10991
|
-
},
|
|
10992
|
-
{
|
|
10993
|
-
id: "zebra",
|
|
10994
|
-
name: "Zebra"
|
|
10995
|
-
},
|
|
10996
|
-
{
|
|
10997
|
-
id: "giraffe",
|
|
10998
|
-
name: "Giraffe"
|
|
10999
|
-
},
|
|
11000
|
-
{
|
|
11001
|
-
id: "backpack",
|
|
11002
|
-
name: "Backpack"
|
|
11003
|
-
},
|
|
11004
|
-
{
|
|
11005
|
-
id: "umbrella",
|
|
11006
|
-
name: "Umbrella"
|
|
11007
|
-
},
|
|
11008
|
-
{
|
|
11009
|
-
id: "handbag",
|
|
11010
|
-
name: "Handbag"
|
|
11011
|
-
},
|
|
11012
|
-
{
|
|
11013
|
-
id: "tie",
|
|
11014
|
-
name: "Tie"
|
|
11015
|
-
},
|
|
11016
|
-
{
|
|
11017
|
-
id: "suitcase",
|
|
11018
|
-
name: "Suitcase"
|
|
11019
|
-
},
|
|
11020
|
-
{
|
|
11021
|
-
id: "frisbee",
|
|
11022
|
-
name: "Frisbee"
|
|
11023
|
-
},
|
|
11024
|
-
{
|
|
11025
|
-
id: "skis",
|
|
11026
|
-
name: "Skis"
|
|
11027
|
-
},
|
|
11028
|
-
{
|
|
11029
|
-
id: "snowboard",
|
|
11030
|
-
name: "Snowboard"
|
|
11031
|
-
},
|
|
11032
|
-
{
|
|
11033
|
-
id: "sports ball",
|
|
11034
|
-
name: "Sports Ball"
|
|
11035
|
-
},
|
|
11036
|
-
{
|
|
11037
|
-
id: "kite",
|
|
11038
|
-
name: "Kite"
|
|
11039
|
-
},
|
|
11040
|
-
{
|
|
11041
|
-
id: "baseball bat",
|
|
11042
|
-
name: "Baseball Bat"
|
|
11043
|
-
},
|
|
11044
|
-
{
|
|
11045
|
-
id: "baseball glove",
|
|
11046
|
-
name: "Baseball Glove"
|
|
11047
|
-
},
|
|
11048
|
-
{
|
|
11049
|
-
id: "skateboard",
|
|
11050
|
-
name: "Skateboard"
|
|
11051
|
-
},
|
|
11052
|
-
{
|
|
11053
|
-
id: "surfboard",
|
|
11054
|
-
name: "Surfboard"
|
|
11055
|
-
},
|
|
11056
|
-
{
|
|
11057
|
-
id: "tennis racket",
|
|
11058
|
-
name: "Tennis Racket"
|
|
11059
|
-
},
|
|
11060
|
-
{
|
|
11061
|
-
id: "bottle",
|
|
11062
|
-
name: "Bottle"
|
|
11063
|
-
},
|
|
11064
|
-
{
|
|
11065
|
-
id: "wine glass",
|
|
11066
|
-
name: "Wine Glass"
|
|
11067
|
-
},
|
|
11068
|
-
{
|
|
11069
|
-
id: "cup",
|
|
11070
|
-
name: "Cup"
|
|
11071
|
-
},
|
|
11072
|
-
{
|
|
11073
|
-
id: "fork",
|
|
11074
|
-
name: "Fork"
|
|
11075
|
-
},
|
|
11076
|
-
{
|
|
11077
|
-
id: "knife",
|
|
11078
|
-
name: "Knife"
|
|
11079
|
-
},
|
|
11080
|
-
{
|
|
11081
|
-
id: "spoon",
|
|
11082
|
-
name: "Spoon"
|
|
11083
|
-
},
|
|
11084
|
-
{
|
|
11085
|
-
id: "bowl",
|
|
11086
|
-
name: "Bowl"
|
|
11087
|
-
},
|
|
11088
|
-
{
|
|
11089
|
-
id: "banana",
|
|
11090
|
-
name: "Banana"
|
|
11091
|
-
},
|
|
11092
|
-
{
|
|
11093
|
-
id: "apple",
|
|
11094
|
-
name: "Apple"
|
|
11095
|
-
},
|
|
11096
|
-
{
|
|
11097
|
-
id: "sandwich",
|
|
11098
|
-
name: "Sandwich"
|
|
11099
|
-
},
|
|
11100
|
-
{
|
|
11101
|
-
id: "orange",
|
|
11102
|
-
name: "Orange"
|
|
11103
|
-
},
|
|
11104
|
-
{
|
|
11105
|
-
id: "broccoli",
|
|
11106
|
-
name: "Broccoli"
|
|
11107
|
-
},
|
|
11108
|
-
{
|
|
11109
|
-
id: "carrot",
|
|
11110
|
-
name: "Carrot"
|
|
11111
|
-
},
|
|
11112
|
-
{
|
|
11113
|
-
id: "hot dog",
|
|
11114
|
-
name: "Hot Dog"
|
|
11115
|
-
},
|
|
11116
|
-
{
|
|
11117
|
-
id: "pizza",
|
|
11118
|
-
name: "Pizza"
|
|
11119
|
-
},
|
|
11120
|
-
{
|
|
11121
|
-
id: "donut",
|
|
11122
|
-
name: "Donut"
|
|
11123
|
-
},
|
|
11124
|
-
{
|
|
11125
|
-
id: "cake",
|
|
11126
|
-
name: "Cake"
|
|
11127
|
-
},
|
|
11128
|
-
{
|
|
11129
|
-
id: "chair",
|
|
11130
|
-
name: "Chair"
|
|
11131
|
-
},
|
|
11132
|
-
{
|
|
11133
|
-
id: "couch",
|
|
11134
|
-
name: "Couch"
|
|
11135
|
-
},
|
|
11136
|
-
{
|
|
11137
|
-
id: "potted plant",
|
|
11138
|
-
name: "Potted Plant"
|
|
11139
|
-
},
|
|
11140
|
-
{
|
|
11141
|
-
id: "bed",
|
|
11142
|
-
name: "Bed"
|
|
11143
|
-
},
|
|
11144
|
-
{
|
|
11145
|
-
id: "dining table",
|
|
11146
|
-
name: "Dining Table"
|
|
11147
|
-
},
|
|
11148
|
-
{
|
|
11149
|
-
id: "toilet",
|
|
11150
|
-
name: "Toilet"
|
|
11151
|
-
},
|
|
11152
|
-
{
|
|
11153
|
-
id: "tv",
|
|
11154
|
-
name: "TV"
|
|
11155
|
-
},
|
|
11156
|
-
{
|
|
11157
|
-
id: "laptop",
|
|
11158
|
-
name: "Laptop"
|
|
11159
|
-
},
|
|
11160
|
-
{
|
|
11161
|
-
id: "mouse",
|
|
11162
|
-
name: "Mouse"
|
|
11163
|
-
},
|
|
11164
|
-
{
|
|
11165
|
-
id: "remote",
|
|
11166
|
-
name: "Remote"
|
|
11167
|
-
},
|
|
11168
|
-
{
|
|
11169
|
-
id: "keyboard",
|
|
11170
|
-
name: "Keyboard"
|
|
11171
|
-
},
|
|
11172
|
-
{
|
|
11173
|
-
id: "cell phone",
|
|
11174
|
-
name: "Cell Phone"
|
|
11175
|
-
},
|
|
11176
|
-
{
|
|
11177
|
-
id: "microwave",
|
|
11178
|
-
name: "Microwave"
|
|
11179
|
-
},
|
|
11180
|
-
{
|
|
11181
|
-
id: "oven",
|
|
11182
|
-
name: "Oven"
|
|
11183
|
-
},
|
|
11184
|
-
{
|
|
11185
|
-
id: "toaster",
|
|
11186
|
-
name: "Toaster"
|
|
11187
|
-
},
|
|
11188
|
-
{
|
|
11189
|
-
id: "sink",
|
|
11190
|
-
name: "Sink"
|
|
11191
|
-
},
|
|
11192
|
-
{
|
|
11193
|
-
id: "refrigerator",
|
|
11194
|
-
name: "Refrigerator"
|
|
11195
|
-
},
|
|
11196
|
-
{
|
|
11197
|
-
id: "book",
|
|
11198
|
-
name: "Book"
|
|
11199
|
-
},
|
|
11200
|
-
{
|
|
11201
|
-
id: "clock",
|
|
11202
|
-
name: "Clock"
|
|
11203
|
-
},
|
|
11204
|
-
{
|
|
11205
|
-
id: "vase",
|
|
11206
|
-
name: "Vase"
|
|
11207
|
-
},
|
|
11208
|
-
{
|
|
11209
|
-
id: "scissors",
|
|
11210
|
-
name: "Scissors"
|
|
11211
|
-
},
|
|
11212
|
-
{
|
|
11213
|
-
id: "teddy bear",
|
|
11214
|
-
name: "Teddy Bear"
|
|
11215
|
-
},
|
|
11216
|
-
{
|
|
11217
|
-
id: "hair drier",
|
|
11218
|
-
name: "Hair Drier"
|
|
11219
|
-
},
|
|
11220
|
-
{
|
|
11221
|
-
id: "toothbrush",
|
|
11222
|
-
name: "Toothbrush"
|
|
11223
|
-
}
|
|
11224
|
-
];
|
|
11225
|
-
new Set([
|
|
11226
|
-
{
|
|
11227
|
-
id: "person",
|
|
11228
|
-
name: "Person"
|
|
11229
|
-
},
|
|
11230
|
-
{
|
|
11231
|
-
id: "vehicle",
|
|
11232
|
-
name: "Vehicle"
|
|
11233
|
-
},
|
|
11234
|
-
{
|
|
11235
|
-
id: "animal",
|
|
11236
|
-
name: "Animal"
|
|
11237
|
-
},
|
|
11238
|
-
{
|
|
11239
|
-
id: "package",
|
|
11240
|
-
name: "Package"
|
|
11241
|
-
}
|
|
11242
|
-
].map((l) => l.id));
|
|
11243
|
-
var COCO_TO_MACRO = {
|
|
11244
|
-
mapping: {
|
|
11245
|
-
person: "person",
|
|
11246
|
-
bicycle: "vehicle",
|
|
11247
|
-
car: "vehicle",
|
|
11248
|
-
motorcycle: "vehicle",
|
|
11249
|
-
airplane: "vehicle",
|
|
11250
|
-
bus: "vehicle",
|
|
11251
|
-
train: "vehicle",
|
|
11252
|
-
truck: "vehicle",
|
|
11253
|
-
boat: "vehicle",
|
|
11254
|
-
bird: "animal",
|
|
11255
|
-
cat: "animal",
|
|
11256
|
-
dog: "animal",
|
|
11257
|
-
horse: "animal",
|
|
11258
|
-
sheep: "animal",
|
|
11259
|
-
cow: "animal",
|
|
11260
|
-
elephant: "animal",
|
|
11261
|
-
bear: "animal",
|
|
11262
|
-
zebra: "animal",
|
|
11263
|
-
giraffe: "animal",
|
|
11264
|
-
suitcase: "package",
|
|
11265
|
-
backpack: "package",
|
|
11266
|
-
handbag: "package"
|
|
11267
|
-
},
|
|
11268
|
-
preserveOriginal: false
|
|
11269
|
-
};
|
|
11270
|
-
/** Steps a root detector may declare it fills. */
|
|
11271
|
-
var FILLABLE_STEP_IDS = [
|
|
10903
|
+
/** Steps whose effect a root label can BE. */
|
|
10904
|
+
var LABEL_SUPPLY_STEP_IDS = [
|
|
11272
10905
|
"animal-classifier",
|
|
11273
10906
|
"vehicle-classifier",
|
|
11274
10907
|
"package-detection"
|
|
11275
10908
|
];
|
|
10909
|
+
/** Steps whose box a root detection can BE. */
|
|
10910
|
+
var CROP_SUPPLY_STEP_IDS = ["plate-detection", "face-detection"];
|
|
10911
|
+
[...LABEL_SUPPLY_STEP_IDS, ...CROP_SUPPLY_STEP_IDS];
|
|
11276
10912
|
/**
|
|
11277
|
-
* The EFFECT vocabulary of each
|
|
10913
|
+
* The EFFECT vocabulary of each label-kind step: exactly the strings the step
|
|
11278
10914
|
* itself emits, in its own spelling. A linked label is one of these and nothing
|
|
11279
10915
|
* else, so a tier-1 value means the same thing whichever writer produced it.
|
|
11280
10916
|
*
|
|
11281
10917
|
* - `animal-classifier`: the PRIMARY model's `-labels.json` (Open Images V7,
|
|
11282
10918
|
* 8 classes) — also the species allow-list the step offers.
|
|
11283
|
-
* - `vehicle-classifier`:
|
|
11284
|
-
*
|
|
10919
|
+
* - `vehicle-classifier`: the classifier's labels, capitalised as it emits them
|
|
10920
|
+
* (it writes `winner.class` verbatim).
|
|
11285
10921
|
* - `package-detection`: its one output class.
|
|
11286
10922
|
*
|
|
11287
|
-
* `scripts/check-label-link-vocabulary.ts` fails the build if a
|
|
10923
|
+
* `scripts/check-label-link-vocabulary.ts` fails the build if a declared
|
|
11288
10924
|
* `labelToEffect` names anything outside this table.
|
|
11289
10925
|
*/
|
|
11290
|
-
var
|
|
10926
|
+
var LABEL_SUPPLY_VOCABULARIES = {
|
|
11291
10927
|
"animal-classifier": [
|
|
11292
10928
|
"bird",
|
|
11293
10929
|
"cat",
|
|
@@ -11310,8 +10946,8 @@ var FILLABLE_STEP_VOCABULARIES = {
|
|
|
11310
10946
|
],
|
|
11311
10947
|
"package-detection": ["package"]
|
|
11312
10948
|
};
|
|
11313
|
-
/** The macro a detection must carry for
|
|
11314
|
-
var
|
|
10949
|
+
/** The macro a detection must carry for a label-kind step to apply to it. */
|
|
10950
|
+
var LABEL_SUPPLY_MACRO = {
|
|
11315
10951
|
"animal-classifier": "animal",
|
|
11316
10952
|
"vehicle-classifier": "vehicle",
|
|
11317
10953
|
"package-detection": "package"
|
|
@@ -11328,49 +10964,75 @@ var EFFECT_ALIASES = {
|
|
|
11328
10964
|
},
|
|
11329
10965
|
"package-detection": {}
|
|
11330
10966
|
};
|
|
11331
|
-
|
|
11332
|
-
|
|
11333
|
-
|
|
11334
|
-
|
|
11335
|
-
|
|
11336
|
-
|
|
11337
|
-
|
|
11338
|
-
|
|
11339
|
-
|
|
11340
|
-
|
|
11341
|
-
|
|
10967
|
+
var CROP_SUPPLY_SOURCES = {
|
|
10968
|
+
"plate-detection": {
|
|
10969
|
+
rootLabels: ["license_plate"],
|
|
10970
|
+
parentMacro: "vehicle",
|
|
10971
|
+
childClass: "plate",
|
|
10972
|
+
servedChildSteps: ["plate-ocr"],
|
|
10973
|
+
use: "as-output"
|
|
10974
|
+
},
|
|
10975
|
+
"face-detection": {
|
|
10976
|
+
rootLabels: ["face"],
|
|
10977
|
+
parentMacro: "person",
|
|
10978
|
+
childClass: "face",
|
|
10979
|
+
servedChildSteps: ["face-embedding"],
|
|
10980
|
+
use: "refine",
|
|
10981
|
+
minRootInputPx: 640
|
|
10982
|
+
}
|
|
10983
|
+
};
|
|
11342
10984
|
function effectFor(stepId, label) {
|
|
11343
10985
|
const alias = EFFECT_ALIASES[stepId][label];
|
|
11344
10986
|
if (alias !== void 0) return alias;
|
|
11345
10987
|
const folded = label.toLowerCase();
|
|
11346
|
-
return
|
|
10988
|
+
return LABEL_SUPPLY_VOCABULARIES[stepId].find((v) => v.toLowerCase() === folded);
|
|
11347
10989
|
}
|
|
11348
10990
|
/**
|
|
11349
|
-
* Which steps a root detector
|
|
11350
|
-
*
|
|
11351
|
-
*
|
|
11352
|
-
*
|
|
10991
|
+
* Which steps a root detector can supply, from its labelmap and classMap.
|
|
10992
|
+
*
|
|
10993
|
+
* - label kind: a label counts for a step only when the classMap sends it to
|
|
10994
|
+
* that step's macro AND it names a vocabulary entry. Every root is judged
|
|
10995
|
+
* the same way — a COCO model supplies the animal classifier with the six
|
|
10996
|
+
* species COCO names, exactly as a Frigate+ model supplies seven.
|
|
10997
|
+
* - crop kind: the labelmap carries one of the step's root labels. Those
|
|
10998
|
+
* labels are deliberately left out of the classMap, so they never make a
|
|
10999
|
+
* track of their own.
|
|
11000
|
+
*
|
|
11001
|
+
* No classMap ⇒ no label supply (nothing says which macro a label lives under).
|
|
11353
11002
|
*/
|
|
11354
|
-
function
|
|
11355
|
-
|
|
11356
|
-
const
|
|
11357
|
-
for (const stepId of FILLABLE_STEP_IDS) {
|
|
11003
|
+
function deriveRootSupplies(labels, classMap) {
|
|
11004
|
+
const supplies = [];
|
|
11005
|
+
if (classMap !== void 0) for (const stepId of LABEL_SUPPLY_STEP_IDS) {
|
|
11358
11006
|
const labelToEffect = {};
|
|
11359
11007
|
for (const label of labels) {
|
|
11360
|
-
if (classMap.mapping[label] !==
|
|
11008
|
+
if (classMap.mapping[label] !== LABEL_SUPPLY_MACRO[stepId]) continue;
|
|
11361
11009
|
const effect = effectFor(stepId, label);
|
|
11362
11010
|
if (effect !== void 0) labelToEffect[label] = effect;
|
|
11363
11011
|
}
|
|
11364
11012
|
const covered = new Set(Object.values(labelToEffect));
|
|
11365
11013
|
if (covered.size === 0) continue;
|
|
11366
|
-
const uncovered =
|
|
11367
|
-
|
|
11014
|
+
const uncovered = LABEL_SUPPLY_VOCABULARIES[stepId].filter((v) => !covered.has(v));
|
|
11015
|
+
supplies.push({
|
|
11016
|
+
kind: "label",
|
|
11368
11017
|
stepId,
|
|
11369
11018
|
labelToEffect,
|
|
11370
11019
|
uncovered
|
|
11371
11020
|
});
|
|
11372
11021
|
}
|
|
11373
|
-
|
|
11022
|
+
const present = new Set(labels);
|
|
11023
|
+
for (const stepId of CROP_SUPPLY_STEP_IDS) {
|
|
11024
|
+
const source = CROP_SUPPLY_SOURCES[stepId];
|
|
11025
|
+
const rootLabels = source.rootLabels.filter((l) => present.has(l));
|
|
11026
|
+
if (rootLabels.length === 0) continue;
|
|
11027
|
+
supplies.push({
|
|
11028
|
+
kind: "crop",
|
|
11029
|
+
stepId,
|
|
11030
|
+
rootLabels,
|
|
11031
|
+
parentMacro: source.parentMacro,
|
|
11032
|
+
childClass: source.childClass
|
|
11033
|
+
});
|
|
11034
|
+
}
|
|
11035
|
+
return supplies;
|
|
11374
11036
|
}
|
|
11375
11037
|
var MODEL_FORMATS = [
|
|
11376
11038
|
"onnx",
|
|
@@ -11504,12 +11166,35 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
|
|
|
11504
11166
|
/** True when the weights or their data forbid commercial use. */
|
|
11505
11167
|
nonCommercial: boolean().optional()
|
|
11506
11168
|
}));
|
|
11507
|
-
/**
|
|
11508
|
-
|
|
11509
|
-
|
|
11169
|
+
/**
|
|
11170
|
+
* One step a ROOT detector can supply from its own output (D730) — see
|
|
11171
|
+
* `ModelCatalogEntry.suppliesSteps`.
|
|
11172
|
+
*
|
|
11173
|
+
* - `label`: the root's raw class IS the step's answer. `labelToEffect` maps
|
|
11174
|
+
* the root's label to the step's vocabulary; `uncovered` is the vocabulary
|
|
11175
|
+
* the root cannot produce (shown as unavailable, never a blocker).
|
|
11176
|
+
* - `crop`: the root draws the box the step would have found (`license_plate`
|
|
11177
|
+
* for plate-detection, `face` for face-detection). The box becomes a detail
|
|
11178
|
+
* child of the `parentMacro` detection that contains it — never a track.
|
|
11179
|
+
*/
|
|
11180
|
+
var RootStepSupplySchema = discriminatedUnion("kind", [object({
|
|
11181
|
+
kind: literal("label"),
|
|
11182
|
+
stepId: _enum(LABEL_SUPPLY_STEP_IDS),
|
|
11510
11183
|
labelToEffect: record(string(), string()),
|
|
11511
11184
|
uncovered: array(string()).readonly()
|
|
11512
|
-
})
|
|
11185
|
+
}), object({
|
|
11186
|
+
kind: literal("crop"),
|
|
11187
|
+
stepId: _enum(CROP_SUPPLY_STEP_IDS),
|
|
11188
|
+
rootLabels: array(string()).readonly(),
|
|
11189
|
+
parentMacro: _enum(["vehicle", "person"]),
|
|
11190
|
+
childClass: _enum(["plate", "face"]),
|
|
11191
|
+
/**
|
|
11192
|
+
* The root's smaller input side, stamped on read by `rootSuppliesOf` from
|
|
11193
|
+
* the model entry — what a step's `minRootInputPx` gate judges. Never
|
|
11194
|
+
* stored by an import.
|
|
11195
|
+
*/
|
|
11196
|
+
rootInputPx: number().int().positive().optional()
|
|
11197
|
+
})]);
|
|
11513
11198
|
var ModelCatalogEntrySchema = object({
|
|
11514
11199
|
id: string(),
|
|
11515
11200
|
name: string(),
|
|
@@ -11636,15 +11321,15 @@ var ModelCatalogEntrySchema = object({
|
|
|
11636
11321
|
*/
|
|
11637
11322
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
11638
11323
|
/**
|
|
11639
|
-
* The pipeline steps this ROOT detector
|
|
11640
|
-
* its labels name
|
|
11641
|
-
*
|
|
11642
|
-
* labelmap by `
|
|
11643
|
-
*
|
|
11644
|
-
*
|
|
11645
|
-
* `
|
|
11324
|
+
* The pipeline steps this ROOT detector can supply from its own output
|
|
11325
|
+
* (D730): its labels name a step's effect (`deer` for `animal-classifier`)
|
|
11326
|
+
* or draw a step's box (`license_plate` for `plate-detection`). Computed at
|
|
11327
|
+
* import from THIS model's labelmap by `deriveRootSupplies`, never written
|
|
11328
|
+
* by hand and never assumed per family; a row without it is derived on read
|
|
11329
|
+
* (`rootSuppliesOf`). Whether a camera uses it is the step's own
|
|
11330
|
+
* `useRootModel` flag (`resolveRootSupply`).
|
|
11646
11331
|
*/
|
|
11647
|
-
|
|
11332
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional(),
|
|
11648
11333
|
/**
|
|
11649
11334
|
* The model's CLIP feature-space contract (text encoder, dimension, vector
|
|
11650
11335
|
* index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
|
|
@@ -18606,6 +18291,51 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
18606
18291
|
kind: "mutation",
|
|
18607
18292
|
auth: "admin"
|
|
18608
18293
|
});
|
|
18294
|
+
new Set([
|
|
18295
|
+
{
|
|
18296
|
+
id: "person",
|
|
18297
|
+
name: "Person"
|
|
18298
|
+
},
|
|
18299
|
+
{
|
|
18300
|
+
id: "vehicle",
|
|
18301
|
+
name: "Vehicle"
|
|
18302
|
+
},
|
|
18303
|
+
{
|
|
18304
|
+
id: "animal",
|
|
18305
|
+
name: "Animal"
|
|
18306
|
+
},
|
|
18307
|
+
{
|
|
18308
|
+
id: "package",
|
|
18309
|
+
name: "Package"
|
|
18310
|
+
}
|
|
18311
|
+
].map((l) => l.id));
|
|
18312
|
+
var COCO_TO_MACRO = {
|
|
18313
|
+
mapping: {
|
|
18314
|
+
person: "person",
|
|
18315
|
+
bicycle: "vehicle",
|
|
18316
|
+
car: "vehicle",
|
|
18317
|
+
motorcycle: "vehicle",
|
|
18318
|
+
airplane: "vehicle",
|
|
18319
|
+
bus: "vehicle",
|
|
18320
|
+
train: "vehicle",
|
|
18321
|
+
truck: "vehicle",
|
|
18322
|
+
boat: "vehicle",
|
|
18323
|
+
bird: "animal",
|
|
18324
|
+
cat: "animal",
|
|
18325
|
+
dog: "animal",
|
|
18326
|
+
horse: "animal",
|
|
18327
|
+
sheep: "animal",
|
|
18328
|
+
cow: "animal",
|
|
18329
|
+
elephant: "animal",
|
|
18330
|
+
bear: "animal",
|
|
18331
|
+
zebra: "animal",
|
|
18332
|
+
giraffe: "animal",
|
|
18333
|
+
suitcase: "package",
|
|
18334
|
+
backpack: "package",
|
|
18335
|
+
handbag: "package"
|
|
18336
|
+
},
|
|
18337
|
+
preserveOriginal: false
|
|
18338
|
+
};
|
|
18609
18339
|
var AUDIO_MACRO_LABELS = [
|
|
18610
18340
|
{
|
|
18611
18341
|
id: "speech",
|
|
@@ -23882,6 +23612,34 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
23882
23612
|
timestamp: number()
|
|
23883
23613
|
});
|
|
23884
23614
|
/**
|
|
23615
|
+
* A root model's boxes standing in for one crop-kind step's own inference
|
|
23616
|
+
* (D730) — see `runPipeline.suppliedRoot`.
|
|
23617
|
+
*/
|
|
23618
|
+
var SuppliedRootOutputSchema = object({
|
|
23619
|
+
stepId: string(),
|
|
23620
|
+
/** The root model that drew the boxes — stamped on the result. */
|
|
23621
|
+
modelId: string(),
|
|
23622
|
+
detections: array(object({
|
|
23623
|
+
/** `[x1, y1, x2, y2]` in the pixels of the call's image. */
|
|
23624
|
+
bbox: tuple([
|
|
23625
|
+
number(),
|
|
23626
|
+
number(),
|
|
23627
|
+
number(),
|
|
23628
|
+
number()
|
|
23629
|
+
]),
|
|
23630
|
+
score: number(),
|
|
23631
|
+
/**
|
|
23632
|
+
* Five facial landmarks in the same pixels — a face the step's own
|
|
23633
|
+
* detector already re-found inside a root face box (D730), so its
|
|
23634
|
+
* embedder child aligns it exactly as it aligns any detected face.
|
|
23635
|
+
*/
|
|
23636
|
+
landmarks: array(object({
|
|
23637
|
+
x: number(),
|
|
23638
|
+
y: number()
|
|
23639
|
+
})).optional()
|
|
23640
|
+
})).min(1)
|
|
23641
|
+
});
|
|
23642
|
+
/**
|
|
23885
23643
|
* Reference to the frame's retained NATIVE surface + the parent crop's placement
|
|
23886
23644
|
* within the frame, so the executor can re-cut a leaf child ROI at native
|
|
23887
23645
|
* resolution on the detail plane. See the `runPipeline` `nativeCropRef` field.
|
|
@@ -24012,7 +23770,7 @@ var PipelineModelOptionSchema = object({
|
|
|
24012
23770
|
legacy: boolean().optional(),
|
|
24013
23771
|
provider: ModelProviderIdSchema.optional(),
|
|
24014
23772
|
defaultConfidence: number().optional(),
|
|
24015
|
-
|
|
23773
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional()
|
|
24016
23774
|
});
|
|
24017
23775
|
var ConfigFieldBridge = custom();
|
|
24018
23776
|
var PipelineAddonSchemaSchema = object({
|
|
@@ -24280,7 +24038,16 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
24280
24038
|
* `device-not-servable`), and nothing reaches the camera's live
|
|
24281
24039
|
* trace stream. Absent ⇒ unchanged behaviour.
|
|
24282
24040
|
*/
|
|
24283
|
-
replay: literal(true).optional()
|
|
24041
|
+
replay: literal(true).optional(),
|
|
24042
|
+
/**
|
|
24043
|
+
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
24044
|
+
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
24045
|
+
* step (a Frigate+ `license_plate` for `plate-detection`): the step is
|
|
24046
|
+
* NOT inferred, these boxes are its output, and its children (the plate
|
|
24047
|
+
* reader) run on them through their own crop policy. Boxes are in the
|
|
24048
|
+
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
24049
|
+
*/
|
|
24050
|
+
suppliedRoot: SuppliedRootOutputSchema.optional()
|
|
24284
24051
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
24285
24052
|
steps: array(PipelineStepInputSchema).min(1),
|
|
24286
24053
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
@@ -25382,7 +25149,22 @@ method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mu
|
|
|
25382
25149
|
*/
|
|
25383
25150
|
cropJpeg: string().optional(),
|
|
25384
25151
|
parent: DetailParentSchema,
|
|
25385
|
-
steps: array(string()).optional()
|
|
25152
|
+
steps: array(string()).optional(),
|
|
25153
|
+
/**
|
|
25154
|
+
* The camera's root model already drew this step's boxes (D730): a
|
|
25155
|
+
* `license_plate` inside the parent vehicle. The named step is NOT
|
|
25156
|
+
* inferred — these FRAME-space boxes are its output — and its
|
|
25157
|
+
* requested children (the plate reader) run on them. Absent ⇒ every
|
|
25158
|
+
* requested step infers as before.
|
|
25159
|
+
*/
|
|
25160
|
+
supplied: object({
|
|
25161
|
+
stepId: string(),
|
|
25162
|
+
modelId: string(),
|
|
25163
|
+
boxes: array(object({
|
|
25164
|
+
bbox: NativeCropBboxSchema,
|
|
25165
|
+
score: number()
|
|
25166
|
+
})).min(1)
|
|
25167
|
+
}).optional()
|
|
25386
25168
|
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" }), method(object({
|
|
25387
25169
|
/** Catalog step id, e.g. `clip-embedding`. */
|
|
25388
25170
|
stepId: string(),
|
|
@@ -31460,6 +31242,27 @@ var ViewerEndpointsSchema = object({
|
|
|
31460
31242
|
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
31461
31243
|
resolved: array(string()).readonly()
|
|
31462
31244
|
});
|
|
31245
|
+
/**
|
|
31246
|
+
* One audience's hub address (see `hub-address.ts`): the operator's stored
|
|
31247
|
+
* override, the address in use, and where it came from.
|
|
31248
|
+
*/
|
|
31249
|
+
var HubAddressSnapshotSchema = object({
|
|
31250
|
+
/** The operator's override, or null for automatic. */
|
|
31251
|
+
override: string().nullable(),
|
|
31252
|
+
/** The address in use, or null when nothing qualifies (never loopback). */
|
|
31253
|
+
resolved: string().nullable(),
|
|
31254
|
+
source: _enum([
|
|
31255
|
+
"override",
|
|
31256
|
+
"auto",
|
|
31257
|
+
"none"
|
|
31258
|
+
])
|
|
31259
|
+
});
|
|
31260
|
+
var HubAddressesSchema = object({
|
|
31261
|
+
/** "Hub address for agents" — agents' bundle/model pulls, LAN devices. */
|
|
31262
|
+
cluster: HubAddressSnapshotSchema,
|
|
31263
|
+
/** "Public address for sign-in links" — e-mail links, OIDC, WebAuthn, OAuth2. */
|
|
31264
|
+
browser: HubAddressSnapshotSchema
|
|
31265
|
+
});
|
|
31463
31266
|
var AllowedAddressesSchema = object({
|
|
31464
31267
|
/**
|
|
31465
31268
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -31506,7 +31309,13 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
31506
31309
|
* an address notification links can be flagged with, not a hub
|
|
31507
31310
|
* route. Default `false`: racers and rankers never see it. */
|
|
31508
31311
|
includeAppLink: boolean().optional()
|
|
31509
|
-
}), 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(),
|
|
31312
|
+
}), 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({
|
|
31313
|
+
audience: _enum(["cluster", "browser"]),
|
|
31314
|
+
baseUrl: string().nullable()
|
|
31315
|
+
}), HubAddressesSchema, {
|
|
31316
|
+
kind: "mutation",
|
|
31317
|
+
auth: "admin"
|
|
31318
|
+
}), 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, {
|
|
31510
31319
|
kind: "mutation",
|
|
31511
31320
|
auth: "admin"
|
|
31512
31321
|
}), method(object({
|
|
@@ -37091,17 +36900,18 @@ function buildFrigateClassMap(labels) {
|
|
|
37091
36900
|
};
|
|
37092
36901
|
}
|
|
37093
36902
|
/**
|
|
37094
|
-
* Everything a Frigate / Frigate+ entry derives from
|
|
37095
|
-
* and the steps it
|
|
37096
|
-
*
|
|
37097
|
-
* and no
|
|
36903
|
+
* Everything a Frigate / Frigate+ entry derives from ITS OWN labelmap: the
|
|
36904
|
+
* classMap and the steps it can supply (D730) — label and crop kinds alike.
|
|
36905
|
+
* Every Frigate builder spreads this at import, so the two cannot be derived
|
|
36906
|
+
* from different label lists, and no family is assumed to carry a label it
|
|
36907
|
+
* does not list.
|
|
37098
36908
|
*/
|
|
37099
36909
|
function frigateLabelFields(labels) {
|
|
37100
36910
|
const classMap = buildFrigateClassMap(labels);
|
|
37101
|
-
const
|
|
37102
|
-
return
|
|
36911
|
+
const supplies = deriveRootSupplies(labels, classMap);
|
|
36912
|
+
return supplies.length > 0 ? {
|
|
37103
36913
|
classMap,
|
|
37104
|
-
|
|
36914
|
+
suppliesSteps: supplies
|
|
37105
36915
|
} : { classMap };
|
|
37106
36916
|
}
|
|
37107
36917
|
/**
|
|
@@ -40050,6 +39860,12 @@ Object.freeze({
|
|
|
40050
39860
|
addonId: null,
|
|
40051
39861
|
access: "view"
|
|
40052
39862
|
},
|
|
39863
|
+
"localNetwork.getHubAddresses": {
|
|
39864
|
+
capName: "local-network",
|
|
39865
|
+
capScope: "system",
|
|
39866
|
+
addonId: null,
|
|
39867
|
+
access: "view"
|
|
39868
|
+
},
|
|
40053
39869
|
"localNetwork.getNotificationEndpoint": {
|
|
40054
39870
|
capName: "local-network",
|
|
40055
39871
|
capScope: "system",
|
|
@@ -40104,6 +39920,12 @@ Object.freeze({
|
|
|
40104
39920
|
addonId: null,
|
|
40105
39921
|
access: "create"
|
|
40106
39922
|
},
|
|
39923
|
+
"localNetwork.setHubAddress": {
|
|
39924
|
+
capName: "local-network",
|
|
39925
|
+
capScope: "system",
|
|
39926
|
+
addonId: null,
|
|
39927
|
+
access: "create"
|
|
39928
|
+
},
|
|
40107
39929
|
"localNetwork.setNotificationEndpoint": {
|
|
40108
39930
|
capName: "local-network",
|
|
40109
39931
|
capScope: "system",
|
|
@@ -48807,7 +48629,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
48807
48629
|
{
|
|
48808
48630
|
name: "summarySection",
|
|
48809
48631
|
label: "Summary: this section",
|
|
48810
|
-
description: "The section a per-section summary row is about
|
|
48632
|
+
description: "The section a per-section summary row is about; on a summary sent as one message, every section it reports, comma-separated.",
|
|
48811
48633
|
example: "Batterie scariche",
|
|
48812
48634
|
group: "system",
|
|
48813
48635
|
families: ["rule"],
|