@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
|
@@ -10926,394 +10926,30 @@ var ClipSearchStrictnessSchema = _enum([
|
|
|
10926
10926
|
"balanced",
|
|
10927
10927
|
"strict"
|
|
10928
10928
|
]);
|
|
10929
|
-
|
|
10930
|
-
|
|
10931
|
-
id: "person",
|
|
10932
|
-
name: "Person"
|
|
10933
|
-
},
|
|
10934
|
-
{
|
|
10935
|
-
id: "bicycle",
|
|
10936
|
-
name: "Bicycle"
|
|
10937
|
-
},
|
|
10938
|
-
{
|
|
10939
|
-
id: "car",
|
|
10940
|
-
name: "Car"
|
|
10941
|
-
},
|
|
10942
|
-
{
|
|
10943
|
-
id: "motorcycle",
|
|
10944
|
-
name: "Motorcycle"
|
|
10945
|
-
},
|
|
10946
|
-
{
|
|
10947
|
-
id: "airplane",
|
|
10948
|
-
name: "Airplane"
|
|
10949
|
-
},
|
|
10950
|
-
{
|
|
10951
|
-
id: "bus",
|
|
10952
|
-
name: "Bus"
|
|
10953
|
-
},
|
|
10954
|
-
{
|
|
10955
|
-
id: "train",
|
|
10956
|
-
name: "Train"
|
|
10957
|
-
},
|
|
10958
|
-
{
|
|
10959
|
-
id: "truck",
|
|
10960
|
-
name: "Truck"
|
|
10961
|
-
},
|
|
10962
|
-
{
|
|
10963
|
-
id: "boat",
|
|
10964
|
-
name: "Boat"
|
|
10965
|
-
},
|
|
10966
|
-
{
|
|
10967
|
-
id: "traffic light",
|
|
10968
|
-
name: "Traffic Light"
|
|
10969
|
-
},
|
|
10970
|
-
{
|
|
10971
|
-
id: "fire hydrant",
|
|
10972
|
-
name: "Fire Hydrant"
|
|
10973
|
-
},
|
|
10974
|
-
{
|
|
10975
|
-
id: "stop sign",
|
|
10976
|
-
name: "Stop Sign"
|
|
10977
|
-
},
|
|
10978
|
-
{
|
|
10979
|
-
id: "parking meter",
|
|
10980
|
-
name: "Parking Meter"
|
|
10981
|
-
},
|
|
10982
|
-
{
|
|
10983
|
-
id: "bench",
|
|
10984
|
-
name: "Bench"
|
|
10985
|
-
},
|
|
10986
|
-
{
|
|
10987
|
-
id: "bird",
|
|
10988
|
-
name: "Bird"
|
|
10989
|
-
},
|
|
10990
|
-
{
|
|
10991
|
-
id: "cat",
|
|
10992
|
-
name: "Cat"
|
|
10993
|
-
},
|
|
10994
|
-
{
|
|
10995
|
-
id: "dog",
|
|
10996
|
-
name: "Dog"
|
|
10997
|
-
},
|
|
10998
|
-
{
|
|
10999
|
-
id: "horse",
|
|
11000
|
-
name: "Horse"
|
|
11001
|
-
},
|
|
11002
|
-
{
|
|
11003
|
-
id: "sheep",
|
|
11004
|
-
name: "Sheep"
|
|
11005
|
-
},
|
|
11006
|
-
{
|
|
11007
|
-
id: "cow",
|
|
11008
|
-
name: "Cow"
|
|
11009
|
-
},
|
|
11010
|
-
{
|
|
11011
|
-
id: "elephant",
|
|
11012
|
-
name: "Elephant"
|
|
11013
|
-
},
|
|
11014
|
-
{
|
|
11015
|
-
id: "bear",
|
|
11016
|
-
name: "Bear"
|
|
11017
|
-
},
|
|
11018
|
-
{
|
|
11019
|
-
id: "zebra",
|
|
11020
|
-
name: "Zebra"
|
|
11021
|
-
},
|
|
11022
|
-
{
|
|
11023
|
-
id: "giraffe",
|
|
11024
|
-
name: "Giraffe"
|
|
11025
|
-
},
|
|
11026
|
-
{
|
|
11027
|
-
id: "backpack",
|
|
11028
|
-
name: "Backpack"
|
|
11029
|
-
},
|
|
11030
|
-
{
|
|
11031
|
-
id: "umbrella",
|
|
11032
|
-
name: "Umbrella"
|
|
11033
|
-
},
|
|
11034
|
-
{
|
|
11035
|
-
id: "handbag",
|
|
11036
|
-
name: "Handbag"
|
|
11037
|
-
},
|
|
11038
|
-
{
|
|
11039
|
-
id: "tie",
|
|
11040
|
-
name: "Tie"
|
|
11041
|
-
},
|
|
11042
|
-
{
|
|
11043
|
-
id: "suitcase",
|
|
11044
|
-
name: "Suitcase"
|
|
11045
|
-
},
|
|
11046
|
-
{
|
|
11047
|
-
id: "frisbee",
|
|
11048
|
-
name: "Frisbee"
|
|
11049
|
-
},
|
|
11050
|
-
{
|
|
11051
|
-
id: "skis",
|
|
11052
|
-
name: "Skis"
|
|
11053
|
-
},
|
|
11054
|
-
{
|
|
11055
|
-
id: "snowboard",
|
|
11056
|
-
name: "Snowboard"
|
|
11057
|
-
},
|
|
11058
|
-
{
|
|
11059
|
-
id: "sports ball",
|
|
11060
|
-
name: "Sports Ball"
|
|
11061
|
-
},
|
|
11062
|
-
{
|
|
11063
|
-
id: "kite",
|
|
11064
|
-
name: "Kite"
|
|
11065
|
-
},
|
|
11066
|
-
{
|
|
11067
|
-
id: "baseball bat",
|
|
11068
|
-
name: "Baseball Bat"
|
|
11069
|
-
},
|
|
11070
|
-
{
|
|
11071
|
-
id: "baseball glove",
|
|
11072
|
-
name: "Baseball Glove"
|
|
11073
|
-
},
|
|
11074
|
-
{
|
|
11075
|
-
id: "skateboard",
|
|
11076
|
-
name: "Skateboard"
|
|
11077
|
-
},
|
|
11078
|
-
{
|
|
11079
|
-
id: "surfboard",
|
|
11080
|
-
name: "Surfboard"
|
|
11081
|
-
},
|
|
11082
|
-
{
|
|
11083
|
-
id: "tennis racket",
|
|
11084
|
-
name: "Tennis Racket"
|
|
11085
|
-
},
|
|
11086
|
-
{
|
|
11087
|
-
id: "bottle",
|
|
11088
|
-
name: "Bottle"
|
|
11089
|
-
},
|
|
11090
|
-
{
|
|
11091
|
-
id: "wine glass",
|
|
11092
|
-
name: "Wine Glass"
|
|
11093
|
-
},
|
|
11094
|
-
{
|
|
11095
|
-
id: "cup",
|
|
11096
|
-
name: "Cup"
|
|
11097
|
-
},
|
|
11098
|
-
{
|
|
11099
|
-
id: "fork",
|
|
11100
|
-
name: "Fork"
|
|
11101
|
-
},
|
|
11102
|
-
{
|
|
11103
|
-
id: "knife",
|
|
11104
|
-
name: "Knife"
|
|
11105
|
-
},
|
|
11106
|
-
{
|
|
11107
|
-
id: "spoon",
|
|
11108
|
-
name: "Spoon"
|
|
11109
|
-
},
|
|
11110
|
-
{
|
|
11111
|
-
id: "bowl",
|
|
11112
|
-
name: "Bowl"
|
|
11113
|
-
},
|
|
11114
|
-
{
|
|
11115
|
-
id: "banana",
|
|
11116
|
-
name: "Banana"
|
|
11117
|
-
},
|
|
11118
|
-
{
|
|
11119
|
-
id: "apple",
|
|
11120
|
-
name: "Apple"
|
|
11121
|
-
},
|
|
11122
|
-
{
|
|
11123
|
-
id: "sandwich",
|
|
11124
|
-
name: "Sandwich"
|
|
11125
|
-
},
|
|
11126
|
-
{
|
|
11127
|
-
id: "orange",
|
|
11128
|
-
name: "Orange"
|
|
11129
|
-
},
|
|
11130
|
-
{
|
|
11131
|
-
id: "broccoli",
|
|
11132
|
-
name: "Broccoli"
|
|
11133
|
-
},
|
|
11134
|
-
{
|
|
11135
|
-
id: "carrot",
|
|
11136
|
-
name: "Carrot"
|
|
11137
|
-
},
|
|
11138
|
-
{
|
|
11139
|
-
id: "hot dog",
|
|
11140
|
-
name: "Hot Dog"
|
|
11141
|
-
},
|
|
11142
|
-
{
|
|
11143
|
-
id: "pizza",
|
|
11144
|
-
name: "Pizza"
|
|
11145
|
-
},
|
|
11146
|
-
{
|
|
11147
|
-
id: "donut",
|
|
11148
|
-
name: "Donut"
|
|
11149
|
-
},
|
|
11150
|
-
{
|
|
11151
|
-
id: "cake",
|
|
11152
|
-
name: "Cake"
|
|
11153
|
-
},
|
|
11154
|
-
{
|
|
11155
|
-
id: "chair",
|
|
11156
|
-
name: "Chair"
|
|
11157
|
-
},
|
|
11158
|
-
{
|
|
11159
|
-
id: "couch",
|
|
11160
|
-
name: "Couch"
|
|
11161
|
-
},
|
|
11162
|
-
{
|
|
11163
|
-
id: "potted plant",
|
|
11164
|
-
name: "Potted Plant"
|
|
11165
|
-
},
|
|
11166
|
-
{
|
|
11167
|
-
id: "bed",
|
|
11168
|
-
name: "Bed"
|
|
11169
|
-
},
|
|
11170
|
-
{
|
|
11171
|
-
id: "dining table",
|
|
11172
|
-
name: "Dining Table"
|
|
11173
|
-
},
|
|
11174
|
-
{
|
|
11175
|
-
id: "toilet",
|
|
11176
|
-
name: "Toilet"
|
|
11177
|
-
},
|
|
11178
|
-
{
|
|
11179
|
-
id: "tv",
|
|
11180
|
-
name: "TV"
|
|
11181
|
-
},
|
|
11182
|
-
{
|
|
11183
|
-
id: "laptop",
|
|
11184
|
-
name: "Laptop"
|
|
11185
|
-
},
|
|
11186
|
-
{
|
|
11187
|
-
id: "mouse",
|
|
11188
|
-
name: "Mouse"
|
|
11189
|
-
},
|
|
11190
|
-
{
|
|
11191
|
-
id: "remote",
|
|
11192
|
-
name: "Remote"
|
|
11193
|
-
},
|
|
11194
|
-
{
|
|
11195
|
-
id: "keyboard",
|
|
11196
|
-
name: "Keyboard"
|
|
11197
|
-
},
|
|
11198
|
-
{
|
|
11199
|
-
id: "cell phone",
|
|
11200
|
-
name: "Cell Phone"
|
|
11201
|
-
},
|
|
11202
|
-
{
|
|
11203
|
-
id: "microwave",
|
|
11204
|
-
name: "Microwave"
|
|
11205
|
-
},
|
|
11206
|
-
{
|
|
11207
|
-
id: "oven",
|
|
11208
|
-
name: "Oven"
|
|
11209
|
-
},
|
|
11210
|
-
{
|
|
11211
|
-
id: "toaster",
|
|
11212
|
-
name: "Toaster"
|
|
11213
|
-
},
|
|
11214
|
-
{
|
|
11215
|
-
id: "sink",
|
|
11216
|
-
name: "Sink"
|
|
11217
|
-
},
|
|
11218
|
-
{
|
|
11219
|
-
id: "refrigerator",
|
|
11220
|
-
name: "Refrigerator"
|
|
11221
|
-
},
|
|
11222
|
-
{
|
|
11223
|
-
id: "book",
|
|
11224
|
-
name: "Book"
|
|
11225
|
-
},
|
|
11226
|
-
{
|
|
11227
|
-
id: "clock",
|
|
11228
|
-
name: "Clock"
|
|
11229
|
-
},
|
|
11230
|
-
{
|
|
11231
|
-
id: "vase",
|
|
11232
|
-
name: "Vase"
|
|
11233
|
-
},
|
|
11234
|
-
{
|
|
11235
|
-
id: "scissors",
|
|
11236
|
-
name: "Scissors"
|
|
11237
|
-
},
|
|
11238
|
-
{
|
|
11239
|
-
id: "teddy bear",
|
|
11240
|
-
name: "Teddy Bear"
|
|
11241
|
-
},
|
|
11242
|
-
{
|
|
11243
|
-
id: "hair drier",
|
|
11244
|
-
name: "Hair Drier"
|
|
11245
|
-
},
|
|
11246
|
-
{
|
|
11247
|
-
id: "toothbrush",
|
|
11248
|
-
name: "Toothbrush"
|
|
11249
|
-
}
|
|
11250
|
-
];
|
|
11251
|
-
new Set([
|
|
11252
|
-
{
|
|
11253
|
-
id: "person",
|
|
11254
|
-
name: "Person"
|
|
11255
|
-
},
|
|
11256
|
-
{
|
|
11257
|
-
id: "vehicle",
|
|
11258
|
-
name: "Vehicle"
|
|
11259
|
-
},
|
|
11260
|
-
{
|
|
11261
|
-
id: "animal",
|
|
11262
|
-
name: "Animal"
|
|
11263
|
-
},
|
|
11264
|
-
{
|
|
11265
|
-
id: "package",
|
|
11266
|
-
name: "Package"
|
|
11267
|
-
}
|
|
11268
|
-
].map((l) => l.id));
|
|
11269
|
-
var COCO_TO_MACRO = {
|
|
11270
|
-
mapping: {
|
|
11271
|
-
person: "person",
|
|
11272
|
-
bicycle: "vehicle",
|
|
11273
|
-
car: "vehicle",
|
|
11274
|
-
motorcycle: "vehicle",
|
|
11275
|
-
airplane: "vehicle",
|
|
11276
|
-
bus: "vehicle",
|
|
11277
|
-
train: "vehicle",
|
|
11278
|
-
truck: "vehicle",
|
|
11279
|
-
boat: "vehicle",
|
|
11280
|
-
bird: "animal",
|
|
11281
|
-
cat: "animal",
|
|
11282
|
-
dog: "animal",
|
|
11283
|
-
horse: "animal",
|
|
11284
|
-
sheep: "animal",
|
|
11285
|
-
cow: "animal",
|
|
11286
|
-
elephant: "animal",
|
|
11287
|
-
bear: "animal",
|
|
11288
|
-
zebra: "animal",
|
|
11289
|
-
giraffe: "animal",
|
|
11290
|
-
suitcase: "package",
|
|
11291
|
-
backpack: "package",
|
|
11292
|
-
handbag: "package"
|
|
11293
|
-
},
|
|
11294
|
-
preserveOriginal: false
|
|
11295
|
-
};
|
|
11296
|
-
/** Steps a root detector may declare it fills. */
|
|
11297
|
-
var FILLABLE_STEP_IDS = [
|
|
10929
|
+
/** Steps whose effect a root label can BE. */
|
|
10930
|
+
var LABEL_SUPPLY_STEP_IDS = [
|
|
11298
10931
|
"animal-classifier",
|
|
11299
10932
|
"vehicle-classifier",
|
|
11300
10933
|
"package-detection"
|
|
11301
10934
|
];
|
|
10935
|
+
/** Steps whose box a root detection can BE. */
|
|
10936
|
+
var CROP_SUPPLY_STEP_IDS = ["plate-detection", "face-detection"];
|
|
10937
|
+
[...LABEL_SUPPLY_STEP_IDS, ...CROP_SUPPLY_STEP_IDS];
|
|
11302
10938
|
/**
|
|
11303
|
-
* The EFFECT vocabulary of each
|
|
10939
|
+
* The EFFECT vocabulary of each label-kind step: exactly the strings the step
|
|
11304
10940
|
* itself emits, in its own spelling. A linked label is one of these and nothing
|
|
11305
10941
|
* else, so a tier-1 value means the same thing whichever writer produced it.
|
|
11306
10942
|
*
|
|
11307
10943
|
* - `animal-classifier`: the PRIMARY model's `-labels.json` (Open Images V7,
|
|
11308
10944
|
* 8 classes) — also the species allow-list the step offers.
|
|
11309
|
-
* - `vehicle-classifier`:
|
|
11310
|
-
*
|
|
10945
|
+
* - `vehicle-classifier`: the classifier's labels, capitalised as it emits them
|
|
10946
|
+
* (it writes `winner.class` verbatim).
|
|
11311
10947
|
* - `package-detection`: its one output class.
|
|
11312
10948
|
*
|
|
11313
|
-
* `scripts/check-label-link-vocabulary.ts` fails the build if a
|
|
10949
|
+
* `scripts/check-label-link-vocabulary.ts` fails the build if a declared
|
|
11314
10950
|
* `labelToEffect` names anything outside this table.
|
|
11315
10951
|
*/
|
|
11316
|
-
var
|
|
10952
|
+
var LABEL_SUPPLY_VOCABULARIES = {
|
|
11317
10953
|
"animal-classifier": [
|
|
11318
10954
|
"bird",
|
|
11319
10955
|
"cat",
|
|
@@ -11336,8 +10972,8 @@ var FILLABLE_STEP_VOCABULARIES = {
|
|
|
11336
10972
|
],
|
|
11337
10973
|
"package-detection": ["package"]
|
|
11338
10974
|
};
|
|
11339
|
-
/** The macro a detection must carry for
|
|
11340
|
-
var
|
|
10975
|
+
/** The macro a detection must carry for a label-kind step to apply to it. */
|
|
10976
|
+
var LABEL_SUPPLY_MACRO = {
|
|
11341
10977
|
"animal-classifier": "animal",
|
|
11342
10978
|
"vehicle-classifier": "vehicle",
|
|
11343
10979
|
"package-detection": "package"
|
|
@@ -11354,49 +10990,75 @@ var EFFECT_ALIASES = {
|
|
|
11354
10990
|
},
|
|
11355
10991
|
"package-detection": {}
|
|
11356
10992
|
};
|
|
11357
|
-
|
|
11358
|
-
|
|
11359
|
-
|
|
11360
|
-
|
|
11361
|
-
|
|
11362
|
-
|
|
11363
|
-
|
|
11364
|
-
|
|
11365
|
-
|
|
11366
|
-
|
|
11367
|
-
|
|
10993
|
+
var CROP_SUPPLY_SOURCES = {
|
|
10994
|
+
"plate-detection": {
|
|
10995
|
+
rootLabels: ["license_plate"],
|
|
10996
|
+
parentMacro: "vehicle",
|
|
10997
|
+
childClass: "plate",
|
|
10998
|
+
servedChildSteps: ["plate-ocr"],
|
|
10999
|
+
use: "as-output"
|
|
11000
|
+
},
|
|
11001
|
+
"face-detection": {
|
|
11002
|
+
rootLabels: ["face"],
|
|
11003
|
+
parentMacro: "person",
|
|
11004
|
+
childClass: "face",
|
|
11005
|
+
servedChildSteps: ["face-embedding"],
|
|
11006
|
+
use: "refine",
|
|
11007
|
+
minRootInputPx: 640
|
|
11008
|
+
}
|
|
11009
|
+
};
|
|
11368
11010
|
function effectFor(stepId, label) {
|
|
11369
11011
|
const alias = EFFECT_ALIASES[stepId][label];
|
|
11370
11012
|
if (alias !== void 0) return alias;
|
|
11371
11013
|
const folded = label.toLowerCase();
|
|
11372
|
-
return
|
|
11014
|
+
return LABEL_SUPPLY_VOCABULARIES[stepId].find((v) => v.toLowerCase() === folded);
|
|
11373
11015
|
}
|
|
11374
11016
|
/**
|
|
11375
|
-
* Which steps a root detector
|
|
11376
|
-
*
|
|
11377
|
-
*
|
|
11378
|
-
*
|
|
11017
|
+
* Which steps a root detector can supply, from its labelmap and classMap.
|
|
11018
|
+
*
|
|
11019
|
+
* - label kind: a label counts for a step only when the classMap sends it to
|
|
11020
|
+
* that step's macro AND it names a vocabulary entry. Every root is judged
|
|
11021
|
+
* the same way — a COCO model supplies the animal classifier with the six
|
|
11022
|
+
* species COCO names, exactly as a Frigate+ model supplies seven.
|
|
11023
|
+
* - crop kind: the labelmap carries one of the step's root labels. Those
|
|
11024
|
+
* labels are deliberately left out of the classMap, so they never make a
|
|
11025
|
+
* track of their own.
|
|
11026
|
+
*
|
|
11027
|
+
* No classMap ⇒ no label supply (nothing says which macro a label lives under).
|
|
11379
11028
|
*/
|
|
11380
|
-
function
|
|
11381
|
-
|
|
11382
|
-
const
|
|
11383
|
-
for (const stepId of FILLABLE_STEP_IDS) {
|
|
11029
|
+
function deriveRootSupplies(labels, classMap) {
|
|
11030
|
+
const supplies = [];
|
|
11031
|
+
if (classMap !== void 0) for (const stepId of LABEL_SUPPLY_STEP_IDS) {
|
|
11384
11032
|
const labelToEffect = {};
|
|
11385
11033
|
for (const label of labels) {
|
|
11386
|
-
if (classMap.mapping[label] !==
|
|
11034
|
+
if (classMap.mapping[label] !== LABEL_SUPPLY_MACRO[stepId]) continue;
|
|
11387
11035
|
const effect = effectFor(stepId, label);
|
|
11388
11036
|
if (effect !== void 0) labelToEffect[label] = effect;
|
|
11389
11037
|
}
|
|
11390
11038
|
const covered = new Set(Object.values(labelToEffect));
|
|
11391
11039
|
if (covered.size === 0) continue;
|
|
11392
|
-
const uncovered =
|
|
11393
|
-
|
|
11040
|
+
const uncovered = LABEL_SUPPLY_VOCABULARIES[stepId].filter((v) => !covered.has(v));
|
|
11041
|
+
supplies.push({
|
|
11042
|
+
kind: "label",
|
|
11394
11043
|
stepId,
|
|
11395
11044
|
labelToEffect,
|
|
11396
11045
|
uncovered
|
|
11397
11046
|
});
|
|
11398
11047
|
}
|
|
11399
|
-
|
|
11048
|
+
const present = new Set(labels);
|
|
11049
|
+
for (const stepId of CROP_SUPPLY_STEP_IDS) {
|
|
11050
|
+
const source = CROP_SUPPLY_SOURCES[stepId];
|
|
11051
|
+
const rootLabels = source.rootLabels.filter((l) => present.has(l));
|
|
11052
|
+
if (rootLabels.length === 0) continue;
|
|
11053
|
+
supplies.push({
|
|
11054
|
+
kind: "crop",
|
|
11055
|
+
stepId,
|
|
11056
|
+
rootLabels,
|
|
11057
|
+
parentMacro: source.parentMacro,
|
|
11058
|
+
childClass: source.childClass
|
|
11059
|
+
});
|
|
11060
|
+
}
|
|
11061
|
+
return supplies;
|
|
11400
11062
|
}
|
|
11401
11063
|
var MODEL_FORMATS = [
|
|
11402
11064
|
"onnx",
|
|
@@ -11530,12 +11192,35 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
|
|
|
11530
11192
|
/** True when the weights or their data forbid commercial use. */
|
|
11531
11193
|
nonCommercial: boolean().optional()
|
|
11532
11194
|
}));
|
|
11533
|
-
/**
|
|
11534
|
-
|
|
11535
|
-
|
|
11195
|
+
/**
|
|
11196
|
+
* One step a ROOT detector can supply from its own output (D730) — see
|
|
11197
|
+
* `ModelCatalogEntry.suppliesSteps`.
|
|
11198
|
+
*
|
|
11199
|
+
* - `label`: the root's raw class IS the step's answer. `labelToEffect` maps
|
|
11200
|
+
* the root's label to the step's vocabulary; `uncovered` is the vocabulary
|
|
11201
|
+
* the root cannot produce (shown as unavailable, never a blocker).
|
|
11202
|
+
* - `crop`: the root draws the box the step would have found (`license_plate`
|
|
11203
|
+
* for plate-detection, `face` for face-detection). The box becomes a detail
|
|
11204
|
+
* child of the `parentMacro` detection that contains it — never a track.
|
|
11205
|
+
*/
|
|
11206
|
+
var RootStepSupplySchema = discriminatedUnion("kind", [object({
|
|
11207
|
+
kind: literal("label"),
|
|
11208
|
+
stepId: _enum(LABEL_SUPPLY_STEP_IDS),
|
|
11536
11209
|
labelToEffect: record(string(), string()),
|
|
11537
11210
|
uncovered: array(string()).readonly()
|
|
11538
|
-
})
|
|
11211
|
+
}), object({
|
|
11212
|
+
kind: literal("crop"),
|
|
11213
|
+
stepId: _enum(CROP_SUPPLY_STEP_IDS),
|
|
11214
|
+
rootLabels: array(string()).readonly(),
|
|
11215
|
+
parentMacro: _enum(["vehicle", "person"]),
|
|
11216
|
+
childClass: _enum(["plate", "face"]),
|
|
11217
|
+
/**
|
|
11218
|
+
* The root's smaller input side, stamped on read by `rootSuppliesOf` from
|
|
11219
|
+
* the model entry — what a step's `minRootInputPx` gate judges. Never
|
|
11220
|
+
* stored by an import.
|
|
11221
|
+
*/
|
|
11222
|
+
rootInputPx: number().int().positive().optional()
|
|
11223
|
+
})]);
|
|
11539
11224
|
var ModelCatalogEntrySchema = object({
|
|
11540
11225
|
id: string(),
|
|
11541
11226
|
name: string(),
|
|
@@ -11662,15 +11347,15 @@ var ModelCatalogEntrySchema = object({
|
|
|
11662
11347
|
*/
|
|
11663
11348
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
11664
11349
|
/**
|
|
11665
|
-
* The pipeline steps this ROOT detector
|
|
11666
|
-
* its labels name
|
|
11667
|
-
*
|
|
11668
|
-
* labelmap by `
|
|
11669
|
-
*
|
|
11670
|
-
*
|
|
11671
|
-
* `
|
|
11350
|
+
* The pipeline steps this ROOT detector can supply from its own output
|
|
11351
|
+
* (D730): its labels name a step's effect (`deer` for `animal-classifier`)
|
|
11352
|
+
* or draw a step's box (`license_plate` for `plate-detection`). Computed at
|
|
11353
|
+
* import from THIS model's labelmap by `deriveRootSupplies`, never written
|
|
11354
|
+
* by hand and never assumed per family; a row without it is derived on read
|
|
11355
|
+
* (`rootSuppliesOf`). Whether a camera uses it is the step's own
|
|
11356
|
+
* `useRootModel` flag (`resolveRootSupply`).
|
|
11672
11357
|
*/
|
|
11673
|
-
|
|
11358
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional(),
|
|
11674
11359
|
/**
|
|
11675
11360
|
* The model's CLIP feature-space contract (text encoder, dimension, vector
|
|
11676
11361
|
* index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
|
|
@@ -18632,6 +18317,51 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
18632
18317
|
kind: "mutation",
|
|
18633
18318
|
auth: "admin"
|
|
18634
18319
|
});
|
|
18320
|
+
new Set([
|
|
18321
|
+
{
|
|
18322
|
+
id: "person",
|
|
18323
|
+
name: "Person"
|
|
18324
|
+
},
|
|
18325
|
+
{
|
|
18326
|
+
id: "vehicle",
|
|
18327
|
+
name: "Vehicle"
|
|
18328
|
+
},
|
|
18329
|
+
{
|
|
18330
|
+
id: "animal",
|
|
18331
|
+
name: "Animal"
|
|
18332
|
+
},
|
|
18333
|
+
{
|
|
18334
|
+
id: "package",
|
|
18335
|
+
name: "Package"
|
|
18336
|
+
}
|
|
18337
|
+
].map((l) => l.id));
|
|
18338
|
+
var COCO_TO_MACRO = {
|
|
18339
|
+
mapping: {
|
|
18340
|
+
person: "person",
|
|
18341
|
+
bicycle: "vehicle",
|
|
18342
|
+
car: "vehicle",
|
|
18343
|
+
motorcycle: "vehicle",
|
|
18344
|
+
airplane: "vehicle",
|
|
18345
|
+
bus: "vehicle",
|
|
18346
|
+
train: "vehicle",
|
|
18347
|
+
truck: "vehicle",
|
|
18348
|
+
boat: "vehicle",
|
|
18349
|
+
bird: "animal",
|
|
18350
|
+
cat: "animal",
|
|
18351
|
+
dog: "animal",
|
|
18352
|
+
horse: "animal",
|
|
18353
|
+
sheep: "animal",
|
|
18354
|
+
cow: "animal",
|
|
18355
|
+
elephant: "animal",
|
|
18356
|
+
bear: "animal",
|
|
18357
|
+
zebra: "animal",
|
|
18358
|
+
giraffe: "animal",
|
|
18359
|
+
suitcase: "package",
|
|
18360
|
+
backpack: "package",
|
|
18361
|
+
handbag: "package"
|
|
18362
|
+
},
|
|
18363
|
+
preserveOriginal: false
|
|
18364
|
+
};
|
|
18635
18365
|
var AUDIO_MACRO_LABELS = [
|
|
18636
18366
|
{
|
|
18637
18367
|
id: "speech",
|
|
@@ -19389,6 +19119,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
19389
19119
|
"stream-offline",
|
|
19390
19120
|
"node-online",
|
|
19391
19121
|
"node-offline",
|
|
19122
|
+
"node-restarting",
|
|
19123
|
+
"node-updating",
|
|
19392
19124
|
"node-inference-unavailable",
|
|
19393
19125
|
"detection-blind",
|
|
19394
19126
|
"addon-crash-loop",
|
|
@@ -23906,6 +23638,34 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
23906
23638
|
timestamp: number()
|
|
23907
23639
|
});
|
|
23908
23640
|
/**
|
|
23641
|
+
* A root model's boxes standing in for one crop-kind step's own inference
|
|
23642
|
+
* (D730) — see `runPipeline.suppliedRoot`.
|
|
23643
|
+
*/
|
|
23644
|
+
var SuppliedRootOutputSchema = object({
|
|
23645
|
+
stepId: string(),
|
|
23646
|
+
/** The root model that drew the boxes — stamped on the result. */
|
|
23647
|
+
modelId: string(),
|
|
23648
|
+
detections: array(object({
|
|
23649
|
+
/** `[x1, y1, x2, y2]` in the pixels of the call's image. */
|
|
23650
|
+
bbox: tuple([
|
|
23651
|
+
number(),
|
|
23652
|
+
number(),
|
|
23653
|
+
number(),
|
|
23654
|
+
number()
|
|
23655
|
+
]),
|
|
23656
|
+
score: number(),
|
|
23657
|
+
/**
|
|
23658
|
+
* Five facial landmarks in the same pixels — a face the step's own
|
|
23659
|
+
* detector already re-found inside a root face box (D730), so its
|
|
23660
|
+
* embedder child aligns it exactly as it aligns any detected face.
|
|
23661
|
+
*/
|
|
23662
|
+
landmarks: array(object({
|
|
23663
|
+
x: number(),
|
|
23664
|
+
y: number()
|
|
23665
|
+
})).optional()
|
|
23666
|
+
})).min(1)
|
|
23667
|
+
});
|
|
23668
|
+
/**
|
|
23909
23669
|
* Reference to the frame's retained NATIVE surface + the parent crop's placement
|
|
23910
23670
|
* within the frame, so the executor can re-cut a leaf child ROI at native
|
|
23911
23671
|
* resolution on the detail plane. See the `runPipeline` `nativeCropRef` field.
|
|
@@ -24036,7 +23796,7 @@ var PipelineModelOptionSchema = object({
|
|
|
24036
23796
|
legacy: boolean().optional(),
|
|
24037
23797
|
provider: ModelProviderIdSchema.optional(),
|
|
24038
23798
|
defaultConfidence: number().optional(),
|
|
24039
|
-
|
|
23799
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional()
|
|
24040
23800
|
});
|
|
24041
23801
|
var ConfigFieldBridge = custom();
|
|
24042
23802
|
var PipelineAddonSchemaSchema = object({
|
|
@@ -24304,7 +24064,16 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
24304
24064
|
* `device-not-servable`), and nothing reaches the camera's live
|
|
24305
24065
|
* trace stream. Absent ⇒ unchanged behaviour.
|
|
24306
24066
|
*/
|
|
24307
|
-
replay: literal(true).optional()
|
|
24067
|
+
replay: literal(true).optional(),
|
|
24068
|
+
/**
|
|
24069
|
+
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
24070
|
+
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
24071
|
+
* step (a Frigate+ `license_plate` for `plate-detection`): the step is
|
|
24072
|
+
* NOT inferred, these boxes are its output, and its children (the plate
|
|
24073
|
+
* reader) run on them through their own crop policy. Boxes are in the
|
|
24074
|
+
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
24075
|
+
*/
|
|
24076
|
+
suppliedRoot: SuppliedRootOutputSchema.optional()
|
|
24308
24077
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
24309
24078
|
steps: array(PipelineStepInputSchema).min(1),
|
|
24310
24079
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
@@ -25406,7 +25175,22 @@ method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mu
|
|
|
25406
25175
|
*/
|
|
25407
25176
|
cropJpeg: string().optional(),
|
|
25408
25177
|
parent: DetailParentSchema,
|
|
25409
|
-
steps: array(string()).optional()
|
|
25178
|
+
steps: array(string()).optional(),
|
|
25179
|
+
/**
|
|
25180
|
+
* The camera's root model already drew this step's boxes (D730): a
|
|
25181
|
+
* `license_plate` inside the parent vehicle. The named step is NOT
|
|
25182
|
+
* inferred — these FRAME-space boxes are its output — and its
|
|
25183
|
+
* requested children (the plate reader) run on them. Absent ⇒ every
|
|
25184
|
+
* requested step infers as before.
|
|
25185
|
+
*/
|
|
25186
|
+
supplied: object({
|
|
25187
|
+
stepId: string(),
|
|
25188
|
+
modelId: string(),
|
|
25189
|
+
boxes: array(object({
|
|
25190
|
+
bbox: NativeCropBboxSchema,
|
|
25191
|
+
score: number()
|
|
25192
|
+
})).min(1)
|
|
25193
|
+
}).optional()
|
|
25410
25194
|
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" }), method(object({
|
|
25411
25195
|
/** Catalog step id, e.g. `clip-embedding`. */
|
|
25412
25196
|
stepId: string(),
|
|
@@ -31484,6 +31268,27 @@ var ViewerEndpointsSchema = object({
|
|
|
31484
31268
|
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
31485
31269
|
resolved: array(string()).readonly()
|
|
31486
31270
|
});
|
|
31271
|
+
/**
|
|
31272
|
+
* One audience's hub address (see `hub-address.ts`): the operator's stored
|
|
31273
|
+
* override, the address in use, and where it came from.
|
|
31274
|
+
*/
|
|
31275
|
+
var HubAddressSnapshotSchema = object({
|
|
31276
|
+
/** The operator's override, or null for automatic. */
|
|
31277
|
+
override: string().nullable(),
|
|
31278
|
+
/** The address in use, or null when nothing qualifies (never loopback). */
|
|
31279
|
+
resolved: string().nullable(),
|
|
31280
|
+
source: _enum([
|
|
31281
|
+
"override",
|
|
31282
|
+
"auto",
|
|
31283
|
+
"none"
|
|
31284
|
+
])
|
|
31285
|
+
});
|
|
31286
|
+
var HubAddressesSchema = object({
|
|
31287
|
+
/** "Hub address for agents" — agents' bundle/model pulls, LAN devices. */
|
|
31288
|
+
cluster: HubAddressSnapshotSchema,
|
|
31289
|
+
/** "Public address for sign-in links" — e-mail links, OIDC, WebAuthn, OAuth2. */
|
|
31290
|
+
browser: HubAddressSnapshotSchema
|
|
31291
|
+
});
|
|
31487
31292
|
var AllowedAddressesSchema = object({
|
|
31488
31293
|
/**
|
|
31489
31294
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -31530,7 +31335,13 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
31530
31335
|
* an address notification links can be flagged with, not a hub
|
|
31531
31336
|
* route. Default `false`: racers and rankers never see it. */
|
|
31532
31337
|
includeAppLink: boolean().optional()
|
|
31533
|
-
}), 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(),
|
|
31338
|
+
}), 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({
|
|
31339
|
+
audience: _enum(["cluster", "browser"]),
|
|
31340
|
+
baseUrl: string().nullable()
|
|
31341
|
+
}), HubAddressesSchema, {
|
|
31342
|
+
kind: "mutation",
|
|
31343
|
+
auth: "admin"
|
|
31344
|
+
}), 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, {
|
|
31534
31345
|
kind: "mutation",
|
|
31535
31346
|
auth: "admin"
|
|
31536
31347
|
}), method(object({
|
|
@@ -31920,7 +31731,8 @@ object({
|
|
|
31920
31731
|
* writes this slice (not even a boot seed), and neither does the runner's
|
|
31921
31732
|
* phase machine: its phase is "a session is attached" for every on-motion
|
|
31922
31733
|
* session, not motion, and it now has its own `DetectionPhaseTransition`.
|
|
31923
|
-
* A provider's `isDetected`
|
|
31734
|
+
* A provider's `isDetected` and `getStatus` answer from the hub's slice
|
|
31735
|
+
* (`hubMotionNativeProvider`).
|
|
31924
31736
|
* - **Sensors** (Home Assistant binary sensors, Homematic, Matter, Alexa
|
|
31925
31737
|
* imports) — the provider pushes both edges itself, from the upstream
|
|
31926
31738
|
* system's own state change. That is the sensor's own fact.
|
|
@@ -37114,17 +36926,18 @@ function buildFrigateClassMap(labels) {
|
|
|
37114
36926
|
};
|
|
37115
36927
|
}
|
|
37116
36928
|
/**
|
|
37117
|
-
* Everything a Frigate / Frigate+ entry derives from
|
|
37118
|
-
* and the steps it
|
|
37119
|
-
*
|
|
37120
|
-
* and no
|
|
36929
|
+
* Everything a Frigate / Frigate+ entry derives from ITS OWN labelmap: the
|
|
36930
|
+
* classMap and the steps it can supply (D730) — label and crop kinds alike.
|
|
36931
|
+
* Every Frigate builder spreads this at import, so the two cannot be derived
|
|
36932
|
+
* from different label lists, and no family is assumed to carry a label it
|
|
36933
|
+
* does not list.
|
|
37121
36934
|
*/
|
|
37122
36935
|
function frigateLabelFields(labels) {
|
|
37123
36936
|
const classMap = buildFrigateClassMap(labels);
|
|
37124
|
-
const
|
|
37125
|
-
return
|
|
36937
|
+
const supplies = deriveRootSupplies(labels, classMap);
|
|
36938
|
+
return supplies.length > 0 ? {
|
|
37126
36939
|
classMap,
|
|
37127
|
-
|
|
36940
|
+
suppliesSteps: supplies
|
|
37128
36941
|
} : { classMap };
|
|
37129
36942
|
}
|
|
37130
36943
|
/**
|
|
@@ -40073,6 +39886,12 @@ Object.freeze({
|
|
|
40073
39886
|
addonId: null,
|
|
40074
39887
|
access: "view"
|
|
40075
39888
|
},
|
|
39889
|
+
"localNetwork.getHubAddresses": {
|
|
39890
|
+
capName: "local-network",
|
|
39891
|
+
capScope: "system",
|
|
39892
|
+
addonId: null,
|
|
39893
|
+
access: "view"
|
|
39894
|
+
},
|
|
40076
39895
|
"localNetwork.getNotificationEndpoint": {
|
|
40077
39896
|
capName: "local-network",
|
|
40078
39897
|
capScope: "system",
|
|
@@ -40127,6 +39946,12 @@ Object.freeze({
|
|
|
40127
39946
|
addonId: null,
|
|
40128
39947
|
access: "create"
|
|
40129
39948
|
},
|
|
39949
|
+
"localNetwork.setHubAddress": {
|
|
39950
|
+
capName: "local-network",
|
|
39951
|
+
capScope: "system",
|
|
39952
|
+
addonId: null,
|
|
39953
|
+
access: "create"
|
|
39954
|
+
},
|
|
40130
39955
|
"localNetwork.setNotificationEndpoint": {
|
|
40131
39956
|
capName: "local-network",
|
|
40132
39957
|
capScope: "system",
|
|
@@ -48526,6 +48351,8 @@ new Map(Object.entries({
|
|
|
48526
48351
|
"detection-blind": "device-events",
|
|
48527
48352
|
"node-online": "system",
|
|
48528
48353
|
"node-offline": "system",
|
|
48354
|
+
"node-restarting": "system",
|
|
48355
|
+
"node-updating": "system",
|
|
48529
48356
|
"node-inference-unavailable": "system",
|
|
48530
48357
|
"addon-crash-loop": "system",
|
|
48531
48358
|
"addon-update-available": "system",
|
|
@@ -48603,6 +48430,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
48603
48430
|
kinds: [
|
|
48604
48431
|
"node-offline",
|
|
48605
48432
|
"node-online",
|
|
48433
|
+
"node-restarting",
|
|
48606
48434
|
"node-inference-unavailable"
|
|
48607
48435
|
]
|
|
48608
48436
|
},
|
|
@@ -48624,6 +48452,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
48624
48452
|
label: "Server & container updates",
|
|
48625
48453
|
kinds: [
|
|
48626
48454
|
"server-update-available",
|
|
48455
|
+
"node-updating",
|
|
48627
48456
|
"server-updated",
|
|
48628
48457
|
"wrapper-update-available"
|
|
48629
48458
|
]
|
|
@@ -48771,6 +48600,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
48771
48600
|
kinds: [
|
|
48772
48601
|
"node-offline",
|
|
48773
48602
|
"node-online",
|
|
48603
|
+
"node-restarting",
|
|
48774
48604
|
"node-inference-unavailable"
|
|
48775
48605
|
]
|
|
48776
48606
|
},
|
|
@@ -48792,6 +48622,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
48792
48622
|
example: "server 1.2.377 → 1.2.378",
|
|
48793
48623
|
kinds: [
|
|
48794
48624
|
"server-update-available",
|
|
48625
|
+
"node-updating",
|
|
48795
48626
|
"server-updated",
|
|
48796
48627
|
"wrapper-update-available"
|
|
48797
48628
|
]
|
|
@@ -48824,7 +48655,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
48824
48655
|
{
|
|
48825
48656
|
name: "summarySection",
|
|
48826
48657
|
label: "Summary: this section",
|
|
48827
|
-
description: "The section a per-section summary row is about
|
|
48658
|
+
description: "The section a per-section summary row is about; on a summary sent as one message, every section it reports, comma-separated.",
|
|
48828
48659
|
example: "Batterie scariche",
|
|
48829
48660
|
group: "system",
|
|
48830
48661
|
families: ["rule"],
|