@camstack/addon-model-studio 1.1.207 → 1.1.209
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-DPVW36SY.mjs +310 -0
- package/dist/{PrivacyMaskSettings-4VnzM7CJ.mjs → PrivacyMaskSettings-CE3p-uMG.mjs} +5 -5
- package/dist/{SceneMonitorEditor-C2DUWSMy.mjs → SceneMonitorEditor-B0ZWDpU7.mjs} +285 -285
- package/dist/_stub.js +6563 -5772
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-q5-p_N0m.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-CXndlwsf.mjs} +3 -3
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DMYNiT-L.mjs +26 -0
- package/dist/addon-model-studio.css +1 -1
- package/dist/{hostInit-De6t1H5z.mjs → hostInit-DpDYa2D-.mjs} +2 -2
- package/dist/model-studio.addon.js +354 -9
- package/dist/model-studio.addon.mjs +354 -9
- package/dist/{player-overlays-DnuiNM0v.mjs → player-overlays-B06LE_Gr.mjs} +5 -5
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-CIrYx2bw.mjs → responsive-BV0NkBXa.mjs} +3 -3
- package/dist/{scene-monitor-copy-AfaY2iTT.mjs → scene-monitor-copy-BEsrfWnh.mjs} +1 -1
- package/dist/{square-v2U1PMC1.mjs → square-1mDEdKJ6.mjs} +1 -1
- package/dist/{trash-2-BQe8qX4b.mjs → trash-2-BJYsA9Vu.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-H0G7-sT2.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CmWc3NQd.mjs} +1 -1
- package/package.json +1 -1
- package/dist/MotionZonesSettings-Dglm7NRe.mjs +0 -310
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-_AxpyMKA.mjs +0 -26
|
@@ -11073,7 +11073,53 @@ var ModelFormatEntrySchema = object({
|
|
|
11073
11073
|
/** Multi-file payload (directory members or sibling files). */
|
|
11074
11074
|
files: array(string()).readonly().optional(),
|
|
11075
11075
|
/** Runtime(s) that can use this format. If omitted, inferred from ModelFormat key */
|
|
11076
|
-
runtimes: array(_enum(["python"])).readonly().optional()
|
|
11076
|
+
runtimes: array(_enum(["python"])).readonly().optional(),
|
|
11077
|
+
/**
|
|
11078
|
+
* Content revision of the artefact, for one hosted OFF the CamStack mirror.
|
|
11079
|
+
* A format on the mirror leaves it unset: its revision (the sha256 of its
|
|
11080
|
+
* weight file) comes from the downloader's generated table, kept in step
|
|
11081
|
+
* with the mirror by `scripts/check-hosted-model-revisions.ts` (D744). A
|
|
11082
|
+
* node records the revision it downloaded next to the file
|
|
11083
|
+
* (`<file>.revision`); a copy with no record or a different one is stale
|
|
11084
|
+
* unless its weight file hashes to the revision, and a stale copy is
|
|
11085
|
+
* downloaded again, the old one serving until the new one is complete. No
|
|
11086
|
+
* revision at all ⇒ a file on disk is current, whatever it holds (D743).
|
|
11087
|
+
*/
|
|
11088
|
+
revision: string().min(1).optional()
|
|
11089
|
+
});
|
|
11090
|
+
/**
|
|
11091
|
+
* What a node holds for one (model, format) (D746). `current` is a complete
|
|
11092
|
+
* copy at its catalog revision — exactly what `downloaded: true` means.
|
|
11093
|
+
* `stale` is bytes on disk that are not (yet) proven current under D743/D744:
|
|
11094
|
+
* no or a different revision record, or a missing sibling. `missing` is no
|
|
11095
|
+
* copy. `downloaded` alone folds `stale` into "not downloaded", which hid
|
|
11096
|
+
* reclaimable bytes and a copy about to be replaced.
|
|
11097
|
+
*/
|
|
11098
|
+
var ModelOnDiskStateSchema = _enum([
|
|
11099
|
+
"current",
|
|
11100
|
+
"stale",
|
|
11101
|
+
"missing"
|
|
11102
|
+
]);
|
|
11103
|
+
/**
|
|
11104
|
+
* The numeric precision of one format's BUILD (D746) — reported only when the
|
|
11105
|
+
* build states it (file-name token, an INT8 variant, an EdgeTPU compile, a
|
|
11106
|
+
* CamStack Core ML export). Absent means "not stated", never "fp32".
|
|
11107
|
+
*/
|
|
11108
|
+
var ModelFormatPrecisionSchema = _enum([
|
|
11109
|
+
"fp32",
|
|
11110
|
+
"fp16",
|
|
11111
|
+
"int8"
|
|
11112
|
+
]);
|
|
11113
|
+
/**
|
|
11114
|
+
* One format of one model as a node's `pipelineExecutor.getSchema` reports it.
|
|
11115
|
+
* `onDisk` / `precision` are optional for version skew: a runner that predates
|
|
11116
|
+
* them omits them, and a reader falls back to `downloaded`.
|
|
11117
|
+
*/
|
|
11118
|
+
var PipelineModelFormatStatusSchema = object({
|
|
11119
|
+
downloaded: boolean(),
|
|
11120
|
+
sizeMB: number(),
|
|
11121
|
+
onDisk: ModelOnDiskStateSchema.optional(),
|
|
11122
|
+
precision: ModelFormatPrecisionSchema.optional()
|
|
11077
11123
|
});
|
|
11078
11124
|
/**
|
|
11079
11125
|
* Extra file that must be downloaded alongside the model (e.g., labels JSON, dict.txt).
|
|
@@ -11295,6 +11341,35 @@ var ModelCatalogEntrySchema = object({
|
|
|
11295
11341
|
*/
|
|
11296
11342
|
defaultConfidence: number().min(0).max(1).optional(),
|
|
11297
11343
|
/**
|
|
11344
|
+
* Per-MODEL default of the per-class confidence floors (`minConfidence<Macro>`
|
|
11345
|
+
* on a detector step), keyed by macro class: `{ person: 0.45 }`. A class
|
|
11346
|
+
* absent here runs at the step slider's global default. The same row shape
|
|
11347
|
+
* the floor measurement produces (`model-floors.json`: modelId → floors), so
|
|
11348
|
+
* a measured table is copied in as-is. An operator override is bound to the
|
|
11349
|
+
* model it was made for and does not survive a model change (D738). A custom
|
|
11350
|
+
* / imported model may declare it; without it, the global defaults apply.
|
|
11351
|
+
*/
|
|
11352
|
+
defaultClassFloors: record(string(), number().min(0).max(1)).optional(),
|
|
11353
|
+
/**
|
|
11354
|
+
* The inference precision this model's OpenVINO IR needs on an Intel GPU.
|
|
11355
|
+
* Absent ⇒ the device default (f16 on a GPU). Set to `'f32'` for an FP32 IR
|
|
11356
|
+
* that produces invalid output at f16 — measured 2026-10-07 for YOLO26
|
|
11357
|
+
* base IRs (`yolo26s`: 0 true / 146 false positives; `yolo26m*`: NaN
|
|
11358
|
+
* scores) on the Core Ultra iGPU and the N100. Threaded to the pool as
|
|
11359
|
+
* `PoolModelConfig.gpuInferencePrecision`; the pool sets
|
|
11360
|
+
* INFERENCE_PRECISION_HINT on a GPU only. Costs ~60% latency on the GPU.
|
|
11361
|
+
*/
|
|
11362
|
+
gpuInferencePrecision: _enum(["f32", "f16"]).optional(),
|
|
11363
|
+
/**
|
|
11364
|
+
* ROOT detectors only: per supplied step (`animal-classifier`, …), the
|
|
11365
|
+
* minimum DETECTION score from which this root's own fine label (species,
|
|
11366
|
+
* vehicle type — D736 root supply) is taken (D741). Below it the detection
|
|
11367
|
+
* keeps its macro class without the fine label. `1` = never take it from
|
|
11368
|
+
* this root. Absent ⇒ no floor beyond the macro floor. The supplied step's
|
|
11369
|
+
* `minConfidence` slider, bound to the ROOT model, overrides it.
|
|
11370
|
+
*/
|
|
11371
|
+
suppliedLabelFloors: record(string(), number().min(0).max(1)).optional(),
|
|
11372
|
+
/**
|
|
11298
11373
|
* When true, the executor produces a landmark-aligned crop (similarity warp
|
|
11299
11374
|
* onto the canonical template) before this step runs, instead of a plain
|
|
11300
11375
|
* axis-aligned bbox crop. Required for face-recognition embedders (ArcFace):
|
|
@@ -23736,7 +23811,7 @@ var FrameRefSchema = object({
|
|
|
23736
23811
|
timestamp: number(),
|
|
23737
23812
|
capturedAt: number().optional()
|
|
23738
23813
|
});
|
|
23739
|
-
var ModelFormatSchema$
|
|
23814
|
+
var ModelFormatSchema$2 = _enum([
|
|
23740
23815
|
"onnx",
|
|
23741
23816
|
"coreml",
|
|
23742
23817
|
"openvino",
|
|
@@ -23754,7 +23829,7 @@ var PipelineSlotSchema = _enum([
|
|
|
23754
23829
|
var PipelineEngineChoiceSchema = object({
|
|
23755
23830
|
runtime: literal("python"),
|
|
23756
23831
|
backend: string(),
|
|
23757
|
-
format: ModelFormatSchema$
|
|
23832
|
+
format: ModelFormatSchema$2,
|
|
23758
23833
|
device: string().optional()
|
|
23759
23834
|
});
|
|
23760
23835
|
/**
|
|
@@ -23811,10 +23886,7 @@ var PipelineTemplateSchema$1 = object({
|
|
|
23811
23886
|
var PipelineModelOptionSchema = object({
|
|
23812
23887
|
id: string(),
|
|
23813
23888
|
name: string(),
|
|
23814
|
-
formats: record(string(),
|
|
23815
|
-
downloaded: boolean(),
|
|
23816
|
-
sizeMB: number()
|
|
23817
|
-
})),
|
|
23889
|
+
formats: record(string(), PipelineModelFormatStatusSchema),
|
|
23818
23890
|
group: ModelVariantGroupSchema.optional(),
|
|
23819
23891
|
legacy: boolean().optional(),
|
|
23820
23892
|
provider: ModelProviderIdSchema.optional(),
|
|
@@ -23981,6 +24053,22 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
23981
24053
|
}), {
|
|
23982
24054
|
kind: "mutation",
|
|
23983
24055
|
auth: "admin"
|
|
24056
|
+
}), method(object({
|
|
24057
|
+
nodeId: string(),
|
|
24058
|
+
deviceIds: array(number()).readonly().optional(),
|
|
24059
|
+
dryRun: boolean()
|
|
24060
|
+
}), object({
|
|
24061
|
+
entries: array(object({
|
|
24062
|
+
deviceId: number(),
|
|
24063
|
+
keys: array(string()).readonly()
|
|
24064
|
+
})).readonly(),
|
|
24065
|
+
refused: array(object({
|
|
24066
|
+
deviceId: number(),
|
|
24067
|
+
reason: string()
|
|
24068
|
+
})).readonly()
|
|
24069
|
+
}), {
|
|
24070
|
+
kind: "mutation",
|
|
24071
|
+
auth: "admin"
|
|
23984
24072
|
}), method(object({ nodeId: string() }), object({ unhealthy: array(object({
|
|
23985
24073
|
/** `<backend>:<device>`, e.g. `openvino:gpu`. */
|
|
23986
24074
|
deviceKey: string(),
|
|
@@ -24017,11 +24105,11 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
24017
24105
|
}), PipelineTemplateSchema$1, { kind: "mutation" }), method(object({ id: string() }), _void(), { kind: "mutation" }), method(_void(), InferenceCapabilitiesBridge), method(object({ addonId: string() }), ModelAvailabilityListBridge), method(object({
|
|
24018
24106
|
addonId: string(),
|
|
24019
24107
|
modelId: string(),
|
|
24020
|
-
format: ModelFormatSchema$
|
|
24108
|
+
format: ModelFormatSchema$2
|
|
24021
24109
|
}), DownloadModelResultSchema, { kind: "mutation" }), method(object({
|
|
24022
24110
|
addonId: string(),
|
|
24023
24111
|
modelId: string(),
|
|
24024
|
-
format: ModelFormatSchema$
|
|
24112
|
+
format: ModelFormatSchema$2
|
|
24025
24113
|
}), object({ success: literal(true) }), { kind: "mutation" }), method(object({
|
|
24026
24114
|
steps: array(PipelineStepInputSchema).min(1),
|
|
24027
24115
|
frame: FrameInputSchema.optional(),
|
|
@@ -24178,6 +24266,204 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
24178
24266
|
filename: string().optional(),
|
|
24179
24267
|
settings: record(string(), unknown()).optional()
|
|
24180
24268
|
}), AudioTestResultSchema, { kind: "mutation" }), method(_void(), ConfigUISchemaNullableBridge);
|
|
24269
|
+
/**
|
|
24270
|
+
* The wire shapes of the Best settings plan and apply (D745), used by the
|
|
24271
|
+
* `pipeline-orchestrator` cap. The recommender's own types
|
|
24272
|
+
* (`recommend.ts`, `demand.ts`) are the TS face of the same data; these
|
|
24273
|
+
* schemas are what crosses the cap boundary.
|
|
24274
|
+
*/
|
|
24275
|
+
var ModelFormatSchema$1 = _enum(MODEL_FORMATS);
|
|
24276
|
+
var HardwareClassIdSchema = _enum([
|
|
24277
|
+
"intel-core-ultra",
|
|
24278
|
+
"intel-n-series",
|
|
24279
|
+
"apple-m-base",
|
|
24280
|
+
"apple-m-pro",
|
|
24281
|
+
"unknown"
|
|
24282
|
+
]);
|
|
24283
|
+
var AcceleratorKindSchema = _enum([
|
|
24284
|
+
"intel-npu",
|
|
24285
|
+
"intel-igpu",
|
|
24286
|
+
"x86-cpu",
|
|
24287
|
+
"arm-cpu",
|
|
24288
|
+
"apple-ane",
|
|
24289
|
+
"coral"
|
|
24290
|
+
]);
|
|
24291
|
+
var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
24292
|
+
object({
|
|
24293
|
+
kind: literal("fits"),
|
|
24294
|
+
utilisation: number()
|
|
24295
|
+
}),
|
|
24296
|
+
object({
|
|
24297
|
+
kind: literal("tie-faster"),
|
|
24298
|
+
over: string(),
|
|
24299
|
+
recallDelta: number()
|
|
24300
|
+
}),
|
|
24301
|
+
object({
|
|
24302
|
+
kind: literal("stepped-down"),
|
|
24303
|
+
from: string(),
|
|
24304
|
+
to: string(),
|
|
24305
|
+
limitedBy: string()
|
|
24306
|
+
}),
|
|
24307
|
+
object({
|
|
24308
|
+
kind: literal("no-fit-lightest"),
|
|
24309
|
+
utilisation: number()
|
|
24310
|
+
}),
|
|
24311
|
+
object({
|
|
24312
|
+
kind: literal("derived-latency"),
|
|
24313
|
+
modelId: string()
|
|
24314
|
+
}),
|
|
24315
|
+
object({
|
|
24316
|
+
kind: literal("estimated-load"),
|
|
24317
|
+
observedForMs: number().nullable()
|
|
24318
|
+
}),
|
|
24319
|
+
object({ kind: literal("cpu-device") }),
|
|
24320
|
+
object({ kind: literal("coral-untouched") }),
|
|
24321
|
+
object({ kind: literal("device-disabled") }),
|
|
24322
|
+
object({ kind: literal("device-unavailable") }),
|
|
24323
|
+
object({ kind: literal("node-offline") }),
|
|
24324
|
+
object({ kind: literal("no-hardware-facts") }),
|
|
24325
|
+
object({
|
|
24326
|
+
kind: literal("no-measured-data"),
|
|
24327
|
+
hardwareClass: HardwareClassIdSchema
|
|
24328
|
+
}),
|
|
24329
|
+
object({
|
|
24330
|
+
kind: literal("no-family-build"),
|
|
24331
|
+
format: ModelFormatSchema$1
|
|
24332
|
+
})
|
|
24333
|
+
]);
|
|
24334
|
+
var DeviceDemandSchema = object({
|
|
24335
|
+
nodeId: string(),
|
|
24336
|
+
deviceKey: string(),
|
|
24337
|
+
demandFps: number(),
|
|
24338
|
+
maxCameraFps: number(),
|
|
24339
|
+
alwaysOnCameras: number(),
|
|
24340
|
+
onMotionSessions: number(),
|
|
24341
|
+
onMotionSource: _enum([
|
|
24342
|
+
"observed-24h",
|
|
24343
|
+
"estimate",
|
|
24344
|
+
"none"
|
|
24345
|
+
]),
|
|
24346
|
+
observedForMs: number().nullable()
|
|
24347
|
+
});
|
|
24348
|
+
var DeviceModelChoiceSchema = object({
|
|
24349
|
+
modelId: string(),
|
|
24350
|
+
p50Ms: number(),
|
|
24351
|
+
fps: number(),
|
|
24352
|
+
measured: boolean(),
|
|
24353
|
+
utilisation: number(),
|
|
24354
|
+
personRecall: number()
|
|
24355
|
+
});
|
|
24356
|
+
var DeviceRecommendationSchema = object({
|
|
24357
|
+
deviceKey: string(),
|
|
24358
|
+
accelerator: AcceleratorKindSchema.nullable(),
|
|
24359
|
+
enabled: boolean(),
|
|
24360
|
+
available: boolean(),
|
|
24361
|
+
demand: DeviceDemandSchema.nullable(),
|
|
24362
|
+
chosen: DeviceModelChoiceSchema.nullable(),
|
|
24363
|
+
reasons: array(RecommendationReasonSchema).readonly()
|
|
24364
|
+
});
|
|
24365
|
+
var NodeRecommendationSchema = object({
|
|
24366
|
+
nodeId: string(),
|
|
24367
|
+
reachable: boolean(),
|
|
24368
|
+
hardwareClass: HardwareClassIdSchema.nullable(),
|
|
24369
|
+
cpuModel: string().nullable(),
|
|
24370
|
+
skipped: boolean(),
|
|
24371
|
+
acceleratorModelId: string().nullable(),
|
|
24372
|
+
devices: array(DeviceRecommendationSchema).readonly(),
|
|
24373
|
+
reasons: array(RecommendationReasonSchema).readonly()
|
|
24374
|
+
});
|
|
24375
|
+
var ModelPinChangeSchema = object({
|
|
24376
|
+
stepId: string(),
|
|
24377
|
+
before: string().nullable(),
|
|
24378
|
+
after: string().nullable()
|
|
24379
|
+
});
|
|
24380
|
+
var NodeDeviceChangeSchema = object({
|
|
24381
|
+
nodeId: string(),
|
|
24382
|
+
deviceKey: string(),
|
|
24383
|
+
madeExplicit: boolean(),
|
|
24384
|
+
modelPins: array(ModelPinChangeSchema).readonly(),
|
|
24385
|
+
thresholds: array(object({
|
|
24386
|
+
stepId: string(),
|
|
24387
|
+
keys: array(string()).readonly()
|
|
24388
|
+
})).readonly()
|
|
24389
|
+
});
|
|
24390
|
+
var CameraOverrideClearSchema = object({
|
|
24391
|
+
deviceId: number(),
|
|
24392
|
+
source: _enum(["step-override", "wholesale"]),
|
|
24393
|
+
nodeId: string(),
|
|
24394
|
+
deviceKey: string().nullable(),
|
|
24395
|
+
stepId: string(),
|
|
24396
|
+
modelIdBefore: string().nullable(),
|
|
24397
|
+
keys: array(string()).readonly()
|
|
24398
|
+
});
|
|
24399
|
+
var DetectorStoreClearSchema = object({
|
|
24400
|
+
deviceId: number(),
|
|
24401
|
+
keys: array(string()).readonly()
|
|
24402
|
+
});
|
|
24403
|
+
var BestSettingsWarningSchema = discriminatedUnion("kind", [
|
|
24404
|
+
object({
|
|
24405
|
+
kind: literal("detector-store-cluster-wide"),
|
|
24406
|
+
skippedNodes: array(string()).readonly()
|
|
24407
|
+
}),
|
|
24408
|
+
object({
|
|
24409
|
+
kind: literal("detector-store-unreadable"),
|
|
24410
|
+
error: string()
|
|
24411
|
+
}),
|
|
24412
|
+
object({
|
|
24413
|
+
kind: literal("coral-enabled"),
|
|
24414
|
+
nodeId: string(),
|
|
24415
|
+
deviceKey: string()
|
|
24416
|
+
})
|
|
24417
|
+
]);
|
|
24418
|
+
var BestSettingsOptionsSchema = object({
|
|
24419
|
+
/** Share of each accelerator's throughput kept free (0.3–0.5). */
|
|
24420
|
+
headroom: number().min(.3).max(.5).default(.4) });
|
|
24421
|
+
var BestSettingsPlanSchema = object({
|
|
24422
|
+
/** Hash of everything the apply will write — the apply refuses a different one. */
|
|
24423
|
+
planHash: string(),
|
|
24424
|
+
family: literal("yolov9"),
|
|
24425
|
+
headroom: number(),
|
|
24426
|
+
generatedAt: number(),
|
|
24427
|
+
nodes: array(NodeRecommendationSchema).readonly(),
|
|
24428
|
+
nodeChanges: array(NodeDeviceChangeSchema).readonly(),
|
|
24429
|
+
cameraClears: array(CameraOverrideClearSchema).readonly(),
|
|
24430
|
+
detectorStoreClears: array(DetectorStoreClearSchema).readonly(),
|
|
24431
|
+
warnings: array(BestSettingsWarningSchema).readonly()
|
|
24432
|
+
});
|
|
24433
|
+
var BestSettingsApplyInputSchema = object({
|
|
24434
|
+
planHash: string(),
|
|
24435
|
+
headroom: number().min(.3).max(.5).default(.4)
|
|
24436
|
+
});
|
|
24437
|
+
var BestSettingsPhaseResultSchema = object({
|
|
24438
|
+
phase: _enum([
|
|
24439
|
+
"download",
|
|
24440
|
+
"camera-overrides",
|
|
24441
|
+
"detector-thresholds",
|
|
24442
|
+
"node-models",
|
|
24443
|
+
"redispatch"
|
|
24444
|
+
]),
|
|
24445
|
+
ok: boolean(),
|
|
24446
|
+
detail: string()
|
|
24447
|
+
});
|
|
24448
|
+
var BestSettingsApplyResultSchema = discriminatedUnion("kind", [
|
|
24449
|
+
object({
|
|
24450
|
+
kind: literal("applied"),
|
|
24451
|
+
planHash: string(),
|
|
24452
|
+
phases: array(BestSettingsPhaseResultSchema).readonly()
|
|
24453
|
+
}),
|
|
24454
|
+
object({
|
|
24455
|
+
kind: literal("aborted"),
|
|
24456
|
+
phases: array(BestSettingsPhaseResultSchema).readonly()
|
|
24457
|
+
}),
|
|
24458
|
+
object({
|
|
24459
|
+
kind: literal("stale"),
|
|
24460
|
+
plan: BestSettingsPlanSchema
|
|
24461
|
+
}),
|
|
24462
|
+
object({
|
|
24463
|
+
kind: literal("refused"),
|
|
24464
|
+
reason: _enum(["apply-in-progress"])
|
|
24465
|
+
})
|
|
24466
|
+
]);
|
|
24181
24467
|
object({
|
|
24182
24468
|
activeCameras: number(),
|
|
24183
24469
|
throttledCameras: number(),
|
|
@@ -25904,6 +26190,9 @@ method(object({
|
|
|
25904
26190
|
}), {
|
|
25905
26191
|
kind: "mutation",
|
|
25906
26192
|
auth: "admin"
|
|
26193
|
+
}), method(BestSettingsOptionsSchema, BestSettingsPlanSchema, { auth: "admin" }), method(BestSettingsApplyInputSchema, BestSettingsApplyResultSchema, {
|
|
26194
|
+
kind: "mutation",
|
|
26195
|
+
auth: "admin"
|
|
25907
26196
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
25908
26197
|
deviceId: number(),
|
|
25909
26198
|
addonId: string(),
|
|
@@ -37029,6 +37318,37 @@ function frigateLabelFields(labels) {
|
|
|
37029
37318
|
} : { classMap };
|
|
37030
37319
|
}
|
|
37031
37320
|
/**
|
|
37321
|
+
* Per-class confidence-floor defaults of an imported stock Frigate detector
|
|
37322
|
+
* (D738): its per-detection `min_score` default, 0.5, for every class. Its
|
|
37323
|
+
* track-level `threshold` (the median of a track's recent scores) has no
|
|
37324
|
+
* counterpart in CamStack's per-detection floors and is not carried.
|
|
37325
|
+
*/
|
|
37326
|
+
var FRIGATE_STOCK_CLASS_FLOORS = Object.freeze({
|
|
37327
|
+
person: .5,
|
|
37328
|
+
vehicle: .5,
|
|
37329
|
+
animal: .5
|
|
37330
|
+
});
|
|
37331
|
+
/**
|
|
37332
|
+
* Per-class floor defaults of an imported Frigate+ detector (D738): the
|
|
37333
|
+
* documented starting `min_score` values for Frigate+ models, which score
|
|
37334
|
+
* higher than the stock ones (person 0.65, car 0.65, cat 0.65, dog 0.70). The
|
|
37335
|
+
* macro `animal` takes the lower of its classes, so no class is cut above its
|
|
37336
|
+
* documented value.
|
|
37337
|
+
*/
|
|
37338
|
+
var FRIGATE_PLUS_CLASS_FLOORS = Object.freeze({
|
|
37339
|
+
person: .65,
|
|
37340
|
+
vehicle: .65,
|
|
37341
|
+
animal: .65
|
|
37342
|
+
});
|
|
37343
|
+
/**
|
|
37344
|
+
* The `defaultClassFloors` an imported Frigate entry carries: the import's
|
|
37345
|
+
* own, when it states them, else the defaults of its kind. A fresh object.
|
|
37346
|
+
*/
|
|
37347
|
+
function frigateDefaultClassFloors(kind, carried) {
|
|
37348
|
+
if (carried !== void 0) return { ...carried };
|
|
37349
|
+
return { ...kind === "plus" ? FRIGATE_PLUS_CLASS_FLOORS : FRIGATE_STOCK_CLASS_FLOORS };
|
|
37350
|
+
}
|
|
37351
|
+
/**
|
|
37032
37352
|
* Accessory device helpers — shared across drivers.
|
|
37033
37353
|
*
|
|
37034
37354
|
* Many vendor-specific drivers register accessory child devices on
|
|
@@ -41546,6 +41866,12 @@ Object.freeze({
|
|
|
41546
41866
|
addonId: null,
|
|
41547
41867
|
access: "delete"
|
|
41548
41868
|
},
|
|
41869
|
+
"pipelineExecutor.clearModelBoundDeviceOverrides": {
|
|
41870
|
+
capName: "pipeline-executor",
|
|
41871
|
+
capScope: "system",
|
|
41872
|
+
addonId: null,
|
|
41873
|
+
access: "delete"
|
|
41874
|
+
},
|
|
41549
41875
|
"pipelineExecutor.deleteModel": {
|
|
41550
41876
|
capName: "pipeline-executor",
|
|
41551
41877
|
capScope: "system",
|
|
@@ -41762,6 +42088,12 @@ Object.freeze({
|
|
|
41762
42088
|
addonId: null,
|
|
41763
42089
|
access: "view"
|
|
41764
42090
|
},
|
|
42091
|
+
"pipelineOrchestrator.applyBestSettings": {
|
|
42092
|
+
capName: "pipeline-orchestrator",
|
|
42093
|
+
capScope: "system",
|
|
42094
|
+
addonId: null,
|
|
42095
|
+
access: "create"
|
|
42096
|
+
},
|
|
41765
42097
|
"pipelineOrchestrator.applyDeviceSettingsPatch": {
|
|
41766
42098
|
capName: "pipeline-orchestrator",
|
|
41767
42099
|
capScope: "system",
|
|
@@ -41936,6 +42268,12 @@ Object.freeze({
|
|
|
41936
42268
|
addonId: null,
|
|
41937
42269
|
access: "create"
|
|
41938
42270
|
},
|
|
42271
|
+
"pipelineOrchestrator.planBestSettings": {
|
|
42272
|
+
capName: "pipeline-orchestrator",
|
|
42273
|
+
capScope: "system",
|
|
42274
|
+
addonId: null,
|
|
42275
|
+
access: "view"
|
|
42276
|
+
},
|
|
41939
42277
|
"pipelineOrchestrator.rebalance": {
|
|
41940
42278
|
capName: "pipeline-orchestrator",
|
|
41941
42279
|
capScope: "system",
|
|
@@ -47358,6 +47696,11 @@ Object.freeze({
|
|
|
47358
47696
|
form: "single",
|
|
47359
47697
|
optional: false
|
|
47360
47698
|
}],
|
|
47699
|
+
"pipelineExecutor.clearModelBoundDeviceOverrides": [{
|
|
47700
|
+
name: "deviceIds",
|
|
47701
|
+
form: "array",
|
|
47702
|
+
optional: true
|
|
47703
|
+
}],
|
|
47361
47704
|
"pipelineExecutor.runPipeline": [{
|
|
47362
47705
|
name: "deviceId",
|
|
47363
47706
|
form: "single",
|
|
@@ -49886,6 +50229,7 @@ function buildFrigateCatalogDescriptor(catalogId, overrides) {
|
|
|
49886
50229
|
name
|
|
49887
50230
|
})),
|
|
49888
50231
|
...frigateLabelFields(cat.labels),
|
|
50232
|
+
defaultClassFloors: frigateDefaultClassFloors("stock"),
|
|
49889
50233
|
preprocessMode: "letterbox",
|
|
49890
50234
|
provider: "frigate",
|
|
49891
50235
|
license: cat.license,
|
|
@@ -50228,6 +50572,7 @@ function plusInfoToDescriptor(info, opts) {
|
|
|
50228
50572
|
name
|
|
50229
50573
|
})),
|
|
50230
50574
|
...frigateLabelFields(labels),
|
|
50575
|
+
defaultClassFloors: frigateDefaultClassFloors("plus"),
|
|
50231
50576
|
preprocessMode: "letterbox",
|
|
50232
50577
|
provider: "frigate",
|
|
50233
50578
|
group: frigateVariantGroup(info.type, info.width),
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { h as e, l as t, u as n, y as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DJDHChgO.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { b as i, y as a } from "./responsive-BV0NkBXa.mjs";
|
|
3
3
|
import { n as o, r as s, t as c } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
4
|
-
var l =
|
|
4
|
+
var l = i("chevron-down", [["path", {
|
|
5
5
|
d: "m6 9 6 6 6-6",
|
|
6
6
|
key: "qrunsl"
|
|
7
|
-
}]]), u =
|
|
7
|
+
}]]), u = i("chevron-right", [["path", {
|
|
8
8
|
d: "m9 18 6-6-6-6",
|
|
9
9
|
key: "mthhwq"
|
|
10
10
|
}]]);
|
|
@@ -32,8 +32,8 @@ function d({ title: t, icon: n, headerRight: r, collapsible: i = !1, defaultOpen
|
|
|
32
32
|
}) : null]
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
-
r(),
|
|
36
|
-
var f =
|
|
35
|
+
r(), a("camstack:player-overlays-state", null);
|
|
36
|
+
var f = a("camstack:player-overlays-actions", null);
|
|
37
37
|
function p(e) {
|
|
38
38
|
let r = t(f);
|
|
39
39
|
n(() => {
|
package/dist/remoteEntry.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-
|
|
1
|
+
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CmWc3NQd.mjs";
|
|
2
2
|
export { t as get, e as init };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { c as e, g as t, h as n, l as r, n as i, p as a, r as o, t as s, u as c, y as l } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DJDHChgO.mjs";
|
|
2
2
|
import "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { d as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DMYNiT-L.mjs";
|
|
4
4
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
5
5
|
l();
|
|
6
6
|
var d = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), f = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), p = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), m = (e) => {
|
|
@@ -117,6 +117,6 @@ function E(e) {
|
|
|
117
117
|
}
|
|
118
118
|
//#endregion
|
|
119
119
|
//#region ../ui-library/src/lib/responsive.ts
|
|
120
|
-
var D = "text-[10px] text-foreground-subtle";
|
|
120
|
+
var D = "rounded-lg border border-border bg-surface overflow-hidden", O = "border-b border-border px-3 sm:px-4 py-1.5 sm:py-2", k = "space-y-3 sm:space-y-4", A = "flex min-w-0 flex-col gap-0.5 py-1.5 sm:flex-row sm:items-center", j = "min-w-0 text-[11px] leading-tight text-foreground-subtle sm:w-32 sm:shrink-0 sm:pr-2", M = "flex w-full min-w-0 items-center gap-1 sm:flex-1", N = "min-w-0 break-all text-xs text-foreground sm:truncate", P = "text-[10px] sm:text-[11px] font-semibold text-foreground uppercase tracking-wider", F = "text-[10px] text-foreground-subtle", I = "inline-flex items-center justify-center gap-1 rounded border border-primary/40 bg-primary/15 px-1.5 py-0.5 sm:px-2 sm:py-1 text-[10px] sm:text-[11px] font-medium text-primary hover:bg-primary/25 transition-colors disabled:opacity-40", L = "inline-flex items-center justify-center gap-1 rounded border border-danger/40 bg-danger/10 px-1.5 py-0.5 sm:px-2 sm:py-1 text-[10px] sm:text-[11px] font-medium text-danger hover:bg-danger/20 transition-colors disabled:opacity-40", R = "inline-flex items-center gap-1 rounded-full border px-1.5 py-0.5 text-[10px] font-medium transition-colors", z = "border-primary/50 bg-primary/15 text-primary", B = "border-border bg-surface text-foreground-subtle hover:bg-surface-hover";
|
|
121
121
|
//#endregion
|
|
122
|
-
export {
|
|
122
|
+
export { w as _, B as a, v as b, A as c, N as d, k as f, C as g, E as h, R as i, j as l, P as m, I as n, D as o, F as p, z as r, O as s, L as t, M as u, x as v, y };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as e, h as t, p as n, y as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DJDHChgO.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { b as i } from "./responsive-BV0NkBXa.mjs";
|
|
3
3
|
var a = i("camera", [["path", {
|
|
4
4
|
d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
|
|
5
5
|
key: "18u6gg"
|
|
@@ -2753,7 +2753,7 @@ async function rr(e) {
|
|
|
2753
2753
|
}
|
|
2754
2754
|
}
|
|
2755
2755
|
async function ir() {
|
|
2756
|
-
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-
|
|
2756
|
+
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-CXndlwsf.mjs")).catch((e) => {
|
|
2757
2757
|
throw tr = void 0, e;
|
|
2758
2758
|
}), tr;
|
|
2759
2759
|
}
|