@camstack/addon-model-studio 1.1.202 → 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/THIRD_PARTY_MODELS.md +2 -2
- package/dist/{MotionZonesSettings-qabihnVu.mjs → MotionZonesSettings-f-Rb4FPx.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-CGVI9EVl.mjs → PrivacyMaskSettings-DzrwiikK.mjs} +4 -4
- package/dist/{SceneMonitorEditor-BcAVb1c7.mjs → SceneMonitorEditor-pr_u7JDi.mjs} +3 -3
- package/dist/_stub.js +3565 -3453
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-CZVL55Bi.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-DD6MdVfP.mjs} +4 -4
- 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-D_0AEBSS.mjs → hostInit-dZ-iNlYE.mjs} +3 -3
- package/dist/model-studio.addon.js +256 -425
- package/dist/model-studio.addon.mjs +256 -425
- package/dist/{player-overlays-CgZQeBdy.mjs → player-overlays-DyoPwbMr.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-dgrtmGP7.mjs → responsive-_Hjo-SPS.mjs} +1 -1
- package/dist/{scene-monitor-copy-CWuj3twx.mjs → scene-monitor-copy-DxG4-n1Z.mjs} +1 -1
- package/dist/{square-U1jjwP1Q.mjs → square-BIirO7Z1.mjs} +1 -1
- package/dist/{trash-2-B3hyZ06m.mjs → trash-2-B9qboTSI.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-Rw5qHN1M.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-DMrwYkbN.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",
|
|
@@ -19363,6 +19093,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
19363
19093
|
"stream-offline",
|
|
19364
19094
|
"node-online",
|
|
19365
19095
|
"node-offline",
|
|
19096
|
+
"node-restarting",
|
|
19097
|
+
"node-updating",
|
|
19366
19098
|
"node-inference-unavailable",
|
|
19367
19099
|
"detection-blind",
|
|
19368
19100
|
"addon-crash-loop",
|
|
@@ -23880,6 +23612,34 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
23880
23612
|
timestamp: number()
|
|
23881
23613
|
});
|
|
23882
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
|
+
/**
|
|
23883
23643
|
* Reference to the frame's retained NATIVE surface + the parent crop's placement
|
|
23884
23644
|
* within the frame, so the executor can re-cut a leaf child ROI at native
|
|
23885
23645
|
* resolution on the detail plane. See the `runPipeline` `nativeCropRef` field.
|
|
@@ -24010,7 +23770,7 @@ var PipelineModelOptionSchema = object({
|
|
|
24010
23770
|
legacy: boolean().optional(),
|
|
24011
23771
|
provider: ModelProviderIdSchema.optional(),
|
|
24012
23772
|
defaultConfidence: number().optional(),
|
|
24013
|
-
|
|
23773
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional()
|
|
24014
23774
|
});
|
|
24015
23775
|
var ConfigFieldBridge = custom();
|
|
24016
23776
|
var PipelineAddonSchemaSchema = object({
|
|
@@ -24278,7 +24038,16 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
24278
24038
|
* `device-not-servable`), and nothing reaches the camera's live
|
|
24279
24039
|
* trace stream. Absent ⇒ unchanged behaviour.
|
|
24280
24040
|
*/
|
|
24281
|
-
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()
|
|
24282
24051
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
24283
24052
|
steps: array(PipelineStepInputSchema).min(1),
|
|
24284
24053
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
@@ -25380,7 +25149,22 @@ method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mu
|
|
|
25380
25149
|
*/
|
|
25381
25150
|
cropJpeg: string().optional(),
|
|
25382
25151
|
parent: DetailParentSchema,
|
|
25383
|
-
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()
|
|
25384
25168
|
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" }), method(object({
|
|
25385
25169
|
/** Catalog step id, e.g. `clip-embedding`. */
|
|
25386
25170
|
stepId: string(),
|
|
@@ -31458,6 +31242,27 @@ var ViewerEndpointsSchema = object({
|
|
|
31458
31242
|
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
31459
31243
|
resolved: array(string()).readonly()
|
|
31460
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
|
+
});
|
|
31461
31266
|
var AllowedAddressesSchema = object({
|
|
31462
31267
|
/**
|
|
31463
31268
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -31504,7 +31309,13 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
31504
31309
|
* an address notification links can be flagged with, not a hub
|
|
31505
31310
|
* route. Default `false`: racers and rankers never see it. */
|
|
31506
31311
|
includeAppLink: boolean().optional()
|
|
31507
|
-
}), 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, {
|
|
31508
31319
|
kind: "mutation",
|
|
31509
31320
|
auth: "admin"
|
|
31510
31321
|
}), method(object({
|
|
@@ -31894,7 +31705,8 @@ object({
|
|
|
31894
31705
|
* writes this slice (not even a boot seed), and neither does the runner's
|
|
31895
31706
|
* phase machine: its phase is "a session is attached" for every on-motion
|
|
31896
31707
|
* session, not motion, and it now has its own `DetectionPhaseTransition`.
|
|
31897
|
-
* A provider's `isDetected`
|
|
31708
|
+
* A provider's `isDetected` and `getStatus` answer from the hub's slice
|
|
31709
|
+
* (`hubMotionNativeProvider`).
|
|
31898
31710
|
* - **Sensors** (Home Assistant binary sensors, Homematic, Matter, Alexa
|
|
31899
31711
|
* imports) — the provider pushes both edges itself, from the upstream
|
|
31900
31712
|
* system's own state change. That is the sensor's own fact.
|
|
@@ -37088,17 +36900,18 @@ function buildFrigateClassMap(labels) {
|
|
|
37088
36900
|
};
|
|
37089
36901
|
}
|
|
37090
36902
|
/**
|
|
37091
|
-
* Everything a Frigate / Frigate+ entry derives from
|
|
37092
|
-
* and the steps it
|
|
37093
|
-
*
|
|
37094
|
-
* 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.
|
|
37095
36908
|
*/
|
|
37096
36909
|
function frigateLabelFields(labels) {
|
|
37097
36910
|
const classMap = buildFrigateClassMap(labels);
|
|
37098
|
-
const
|
|
37099
|
-
return
|
|
36911
|
+
const supplies = deriveRootSupplies(labels, classMap);
|
|
36912
|
+
return supplies.length > 0 ? {
|
|
37100
36913
|
classMap,
|
|
37101
|
-
|
|
36914
|
+
suppliesSteps: supplies
|
|
37102
36915
|
} : { classMap };
|
|
37103
36916
|
}
|
|
37104
36917
|
/**
|
|
@@ -40047,6 +39860,12 @@ Object.freeze({
|
|
|
40047
39860
|
addonId: null,
|
|
40048
39861
|
access: "view"
|
|
40049
39862
|
},
|
|
39863
|
+
"localNetwork.getHubAddresses": {
|
|
39864
|
+
capName: "local-network",
|
|
39865
|
+
capScope: "system",
|
|
39866
|
+
addonId: null,
|
|
39867
|
+
access: "view"
|
|
39868
|
+
},
|
|
40050
39869
|
"localNetwork.getNotificationEndpoint": {
|
|
40051
39870
|
capName: "local-network",
|
|
40052
39871
|
capScope: "system",
|
|
@@ -40101,6 +39920,12 @@ Object.freeze({
|
|
|
40101
39920
|
addonId: null,
|
|
40102
39921
|
access: "create"
|
|
40103
39922
|
},
|
|
39923
|
+
"localNetwork.setHubAddress": {
|
|
39924
|
+
capName: "local-network",
|
|
39925
|
+
capScope: "system",
|
|
39926
|
+
addonId: null,
|
|
39927
|
+
access: "create"
|
|
39928
|
+
},
|
|
40104
39929
|
"localNetwork.setNotificationEndpoint": {
|
|
40105
39930
|
capName: "local-network",
|
|
40106
39931
|
capScope: "system",
|
|
@@ -48500,6 +48325,8 @@ new Map(Object.entries({
|
|
|
48500
48325
|
"detection-blind": "device-events",
|
|
48501
48326
|
"node-online": "system",
|
|
48502
48327
|
"node-offline": "system",
|
|
48328
|
+
"node-restarting": "system",
|
|
48329
|
+
"node-updating": "system",
|
|
48503
48330
|
"node-inference-unavailable": "system",
|
|
48504
48331
|
"addon-crash-loop": "system",
|
|
48505
48332
|
"addon-update-available": "system",
|
|
@@ -48577,6 +48404,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
48577
48404
|
kinds: [
|
|
48578
48405
|
"node-offline",
|
|
48579
48406
|
"node-online",
|
|
48407
|
+
"node-restarting",
|
|
48580
48408
|
"node-inference-unavailable"
|
|
48581
48409
|
]
|
|
48582
48410
|
},
|
|
@@ -48598,6 +48426,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
48598
48426
|
label: "Server & container updates",
|
|
48599
48427
|
kinds: [
|
|
48600
48428
|
"server-update-available",
|
|
48429
|
+
"node-updating",
|
|
48601
48430
|
"server-updated",
|
|
48602
48431
|
"wrapper-update-available"
|
|
48603
48432
|
]
|
|
@@ -48745,6 +48574,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
48745
48574
|
kinds: [
|
|
48746
48575
|
"node-offline",
|
|
48747
48576
|
"node-online",
|
|
48577
|
+
"node-restarting",
|
|
48748
48578
|
"node-inference-unavailable"
|
|
48749
48579
|
]
|
|
48750
48580
|
},
|
|
@@ -48766,6 +48596,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
48766
48596
|
example: "server 1.2.377 → 1.2.378",
|
|
48767
48597
|
kinds: [
|
|
48768
48598
|
"server-update-available",
|
|
48599
|
+
"node-updating",
|
|
48769
48600
|
"server-updated",
|
|
48770
48601
|
"wrapper-update-available"
|
|
48771
48602
|
]
|
|
@@ -48798,7 +48629,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
48798
48629
|
{
|
|
48799
48630
|
name: "summarySection",
|
|
48800
48631
|
label: "Summary: this section",
|
|
48801
|
-
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.",
|
|
48802
48633
|
example: "Batterie scariche",
|
|
48803
48634
|
group: "system",
|
|
48804
48635
|
families: ["rule"],
|