@camstack/addon-model-studio 1.1.289 → 1.1.290
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-mlU-VSe5.mjs → MotionZonesSettings-BDXv-_SC.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-Cx5oEsjP.mjs → PrivacyMaskSettings-BFDJJ_jI.mjs} +4 -4
- package/dist/{SceneMonitorEditor-GMAcbbJ0.mjs → SceneMonitorEditor-DsKs-28v.mjs} +3 -3
- package/dist/_stub.js +3986 -3971
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-DvHxq6CH.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-vqigWLhP.mjs} +3 -3
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-C2LtE9v7.mjs +26 -0
- package/dist/{hostInit-Beh8D27N.mjs → hostInit-RwS7Hfsn.mjs} +2 -2
- package/dist/model-studio.addon.js +202 -67
- package/dist/model-studio.addon.mjs +202 -67
- package/dist/{player-overlays-BNm3QxNX.mjs → player-overlays-CSDHuCWB.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-BBGHW8J6.mjs → responsive-BOr_1QSL.mjs} +1 -1
- package/dist/{scene-monitor-copy-BEIH363L.mjs → scene-monitor-copy-CcAIfs8G.mjs} +1 -1
- package/dist/{square-DiTXshc8.mjs → square-X2giTSaZ.mjs} +1 -1
- package/dist/{trash-2-BVSkUDtB.mjs → trash-2-CphQimp6.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-ohPGd04S.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-D6XbC3Hu.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-BL63cAWe.mjs +0 -26
|
@@ -45194,6 +45194,18 @@ Object.freeze({
|
|
|
45194
45194
|
reason: "camera sensor mappings not loaded"
|
|
45195
45195
|
});
|
|
45196
45196
|
/**
|
|
45197
|
+
* What the vision model must answer before a package event is emitted
|
|
45198
|
+
* when a packages rule has "Confirm with the LLM" on.
|
|
45199
|
+
*
|
|
45200
|
+
* `package` is the verdict. `confidence` is 0..1. `reason` is the model's
|
|
45201
|
+
* one-line explanation, stored on the event so a drop is not silent.
|
|
45202
|
+
*/
|
|
45203
|
+
var PackageLlmVerdictSchema = object({
|
|
45204
|
+
package: boolean(),
|
|
45205
|
+
confidence: number().min(0).max(1),
|
|
45206
|
+
reason: string().min(1)
|
|
45207
|
+
});
|
|
45208
|
+
/**
|
|
45197
45209
|
* A model choice has a SCOPE, and a scope change has a workflow.
|
|
45198
45210
|
*
|
|
45199
45211
|
* ## The two scopes
|
|
@@ -46130,6 +46142,21 @@ var ObjectEventSchema = object({
|
|
|
46130
46142
|
* pick-up written before D684 — UNKNOWN, never 0 and never `timestamp`.
|
|
46131
46143
|
*/
|
|
46132
46144
|
observedAt: number().optional(),
|
|
46145
|
+
/**
|
|
46146
|
+
* The delivery was emitted without a vision-model yes (D931).
|
|
46147
|
+
*
|
|
46148
|
+
* Set only when the packages rule asked for an LLM confirm and the model
|
|
46149
|
+
* was unreachable, timed out, or answered something that did not parse.
|
|
46150
|
+
* A notification reads it so it can say "possible" instead of a definite
|
|
46151
|
+
* delivery. Absent on every other row, and on a confirm that said yes.
|
|
46152
|
+
*/
|
|
46153
|
+
packagePossible: boolean().optional(),
|
|
46154
|
+
/**
|
|
46155
|
+
* The vision model's verdict, when a packages rule asked for one and the
|
|
46156
|
+
* model answered the schema (D931). A "no" never becomes a row — the
|
|
46157
|
+
* detector drops it and logs the reason. Present on a yes.
|
|
46158
|
+
*/
|
|
46159
|
+
packageLlmVerdict: PackageLlmVerdictSchema.optional(),
|
|
46133
46160
|
/** The parent track's key-event importance [0,1], propagated to every object
|
|
46134
46161
|
* event of the track (so an event row can be sorted by importance without a
|
|
46135
46162
|
* track join). Absent on legacy rows / before the track was scored. */
|
|
@@ -48337,11 +48364,18 @@ var KeptReasonSchema = _enum(["custom-pin"]);
|
|
|
48337
48364
|
* Where a choice's latency came from (D791): this node's own benchmark
|
|
48338
48365
|
* result, or the hardware-class table. Measured on the node beats the table.
|
|
48339
48366
|
*/
|
|
48340
|
-
var LatencySourceSchema = discriminatedUnion("kind", [
|
|
48341
|
-
kind: literal("
|
|
48342
|
-
|
|
48343
|
-
|
|
48344
|
-
|
|
48367
|
+
var LatencySourceSchema = discriminatedUnion("kind", [
|
|
48368
|
+
object({ kind: literal("table") }),
|
|
48369
|
+
object({
|
|
48370
|
+
kind: literal("node-benchmark"),
|
|
48371
|
+
resultId: string(),
|
|
48372
|
+
measuredAtMs: number()
|
|
48373
|
+
}),
|
|
48374
|
+
object({
|
|
48375
|
+
kind: literal("estimated"),
|
|
48376
|
+
estimatedFrom: HardwareClassIdSchema
|
|
48377
|
+
})
|
|
48378
|
+
]);
|
|
48345
48379
|
var DeviceModelChoiceSchema = object({
|
|
48346
48380
|
modelId: string(),
|
|
48347
48381
|
p50Ms: number(),
|
|
@@ -48349,6 +48383,11 @@ var DeviceModelChoiceSchema = object({
|
|
|
48349
48383
|
measured: boolean(),
|
|
48350
48384
|
/** Absent on a plan from before D791 — read as the table. */
|
|
48351
48385
|
source: LatencySourceSchema.optional(),
|
|
48386
|
+
/**
|
|
48387
|
+
* The measured class this latency was scaled from (D930). Absent when the
|
|
48388
|
+
* cell is the table or a node benchmark.
|
|
48389
|
+
*/
|
|
48390
|
+
estimatedFrom: HardwareClassIdSchema.optional(),
|
|
48352
48391
|
/** Parallel sessions at the camera rate with the headroom kept free: ⌊fps × (1 − headroom) / camera fps⌋. */
|
|
48353
48392
|
capacitySessions: number(),
|
|
48354
48393
|
personRecall: number()
|
|
@@ -58578,6 +58617,30 @@ includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly(
|
|
|
58578
58617
|
kind: "mutation",
|
|
58579
58618
|
auth: "admin"
|
|
58580
58619
|
});
|
|
58620
|
+
var CORE_ULTRA_265K_IGPU_CLOCK_MHZ = 2e3;
|
|
58621
|
+
var positiveOrNull = number().nullable().transform((value) => value !== null && Number.isFinite(value) && value > 0 ? value : null);
|
|
58622
|
+
var textOrNull = string().nullable().transform((value) => value !== null && value.trim() !== "" ? value : null);
|
|
58623
|
+
var PrecisionGopsSchema = object({
|
|
58624
|
+
int8: positiveOrNull,
|
|
58625
|
+
fp16: positiveOrNull
|
|
58626
|
+
});
|
|
58627
|
+
/** What one accelerator device reported. Every failed query is null. */
|
|
58628
|
+
var AcceleratorComputeSchema = object({
|
|
58629
|
+
deviceKey: string(),
|
|
58630
|
+
fullDeviceName: textOrNull,
|
|
58631
|
+
executionUnits: positiveOrNull,
|
|
58632
|
+
clockMHz: positiveOrNull,
|
|
58633
|
+
gops: PrecisionGopsSchema.nullable(),
|
|
58634
|
+
architecture: textOrNull,
|
|
58635
|
+
npuName: textOrNull,
|
|
58636
|
+
tops: positiveOrNull,
|
|
58637
|
+
vendor: textOrNull,
|
|
58638
|
+
webgpuArchitecture: textOrNull,
|
|
58639
|
+
webgpuDevice: textOrNull,
|
|
58640
|
+
computeUnits: positiveOrNull
|
|
58641
|
+
});
|
|
58642
|
+
object({ accelerators: array(AcceleratorComputeSchema).nullable() });
|
|
58643
|
+
64 * CORE_ULTRA_265K_IGPU_CLOCK_MHZ;
|
|
58581
58644
|
var ModelFormatSchema = _enum(MODEL_FORMATS);
|
|
58582
58645
|
var HwAccelBackendInputSchema = _enum([
|
|
58583
58646
|
"videotoolbox",
|
|
@@ -58691,7 +58754,12 @@ var HardwareInfoSchema = object({
|
|
|
58691
58754
|
availableRAM_MB: number(),
|
|
58692
58755
|
gpu: GpuInfoSchema.nullable(),
|
|
58693
58756
|
npu: NpuInfoSchema.nullable(),
|
|
58694
|
-
coral: CoralInfoSchema.nullable().optional()
|
|
58757
|
+
coral: CoralInfoSchema.nullable().optional(),
|
|
58758
|
+
/**
|
|
58759
|
+
* Per-accelerator compute (D930). Omitted by a node that has not probed it.
|
|
58760
|
+
* `null` fields inside an entry are a failed query, never a zero.
|
|
58761
|
+
*/
|
|
58762
|
+
accelerators: array(AcceleratorComputeSchema).readonly().optional()
|
|
58695
58763
|
});
|
|
58696
58764
|
var PlatformScoreSchema = object({
|
|
58697
58765
|
runtime: literal("python"),
|
|
@@ -61063,7 +61131,20 @@ var ZoneRuleSchema = object({
|
|
|
61063
61131
|
* Defaults to `true` so operators creating a rule via the UI
|
|
61064
61132
|
* see it active immediately.
|
|
61065
61133
|
*/
|
|
61066
|
-
enabled: boolean().default(true)
|
|
61134
|
+
enabled: boolean().default(true),
|
|
61135
|
+
/**
|
|
61136
|
+
* Package stage only. When true, a package candidate may open from a
|
|
61137
|
+
* scene difference in this rule's zone after a person leaves. The
|
|
61138
|
+
* package model, when it boxes something overlapping, is extra evidence
|
|
61139
|
+
* and is not the gate. Absent or false keeps today's model path.
|
|
61140
|
+
*/
|
|
61141
|
+
detectBySceneDifference: boolean().optional(),
|
|
61142
|
+
/**
|
|
61143
|
+
* Package stage only. When true, a promoted package is shown to the
|
|
61144
|
+
* `llm` cap before the delivery event is emitted. Absent or false emits
|
|
61145
|
+
* as today. Usable with or without `detectBySceneDifference`.
|
|
61146
|
+
*/
|
|
61147
|
+
confirmWithLlm: boolean().optional()
|
|
61067
61148
|
});
|
|
61068
61149
|
array(ZoneRuleSchema).readonly();
|
|
61069
61150
|
object({
|
|
@@ -80430,6 +80511,10 @@ TimelapseRuleInputSchema.extend({
|
|
|
80430
80511
|
updatedAt: number()
|
|
80431
80512
|
});
|
|
80432
80513
|
MotionOnMotionChangedDataSchema.omit({ triggeredBy: true });
|
|
80514
|
+
Object.freeze({
|
|
80515
|
+
person: .8,
|
|
80516
|
+
vehicle: .8
|
|
80517
|
+
});
|
|
80433
80518
|
object({
|
|
80434
80519
|
/**
|
|
80435
80520
|
* Fraction of the box's own size added on EACH side before cutting.
|
|
@@ -81577,6 +81662,91 @@ async function moveInto(source, target) {
|
|
|
81577
81662
|
}
|
|
81578
81663
|
}
|
|
81579
81664
|
//#endregion
|
|
81665
|
+
//#region src/frigate/plus-decode.ts
|
|
81666
|
+
var UnsupportedPlusDecodeError = class extends Error {
|
|
81667
|
+
type;
|
|
81668
|
+
format;
|
|
81669
|
+
detectors;
|
|
81670
|
+
constructor(type, format, detectors) {
|
|
81671
|
+
const detList = detectors.length > 0 ? detectors.join(", ") : "(none)";
|
|
81672
|
+
super(`Frigate+ import refused — no decoder for type "${type}", format "${format}", detectors ${detList}`);
|
|
81673
|
+
this.name = "UnsupportedPlusDecodeError";
|
|
81674
|
+
this.type = type;
|
|
81675
|
+
this.format = format;
|
|
81676
|
+
this.detectors = detectors;
|
|
81677
|
+
}
|
|
81678
|
+
};
|
|
81679
|
+
var YOLO_FAMILIES = new Set(["yolo-generic", "yolov9"]);
|
|
81680
|
+
var SSD_FAMILIES = new Set(["mobiledet", "ssd"]);
|
|
81681
|
+
var YOLONAS_FAMILIES = new Set(["yolonas"]);
|
|
81682
|
+
function familyDefaultArtifact(type) {
|
|
81683
|
+
if (YOLO_FAMILIES.has(type) || YOLONAS_FAMILIES.has(type)) return "onnx";
|
|
81684
|
+
if (SSD_FAMILIES.has(type)) return "tflite";
|
|
81685
|
+
return null;
|
|
81686
|
+
}
|
|
81687
|
+
function matrixDecode(type, format) {
|
|
81688
|
+
if (YOLO_FAMILIES.has(type)) {
|
|
81689
|
+
if (format === "onnx") return {
|
|
81690
|
+
format: "onnx",
|
|
81691
|
+
extension: ".onnx",
|
|
81692
|
+
postprocessor: "yolo"
|
|
81693
|
+
};
|
|
81694
|
+
return {
|
|
81695
|
+
format: "tflite",
|
|
81696
|
+
extension: ".tflite",
|
|
81697
|
+
postprocessor: "yolo-split-dfl"
|
|
81698
|
+
};
|
|
81699
|
+
}
|
|
81700
|
+
if (YOLONAS_FAMILIES.has(type)) {
|
|
81701
|
+
if (format === "onnx") return {
|
|
81702
|
+
format: "onnx",
|
|
81703
|
+
extension: ".onnx",
|
|
81704
|
+
postprocessor: "yolonas"
|
|
81705
|
+
};
|
|
81706
|
+
return null;
|
|
81707
|
+
}
|
|
81708
|
+
if (SSD_FAMILIES.has(type)) {
|
|
81709
|
+
if (format === "tflite") return {
|
|
81710
|
+
format: "tflite",
|
|
81711
|
+
extension: ".tflite",
|
|
81712
|
+
postprocessor: "ssd"
|
|
81713
|
+
};
|
|
81714
|
+
return null;
|
|
81715
|
+
}
|
|
81716
|
+
return null;
|
|
81717
|
+
}
|
|
81718
|
+
function assertOverrideBacked(type, formatOverride, detectors) {
|
|
81719
|
+
if (formatOverride === "onnx") {
|
|
81720
|
+
if (!detectors.includes("onnx") && !detectors.includes("openvino")) throw new UnsupportedPlusDecodeError(type, formatOverride, detectors);
|
|
81721
|
+
return;
|
|
81722
|
+
}
|
|
81723
|
+
if (!detectors.includes("edgetpu")) throw new UnsupportedPlusDecodeError(type, formatOverride, detectors);
|
|
81724
|
+
}
|
|
81725
|
+
function plusArtifactFormat(format) {
|
|
81726
|
+
if (format === "onnx" || format === "tflite") return format;
|
|
81727
|
+
return null;
|
|
81728
|
+
}
|
|
81729
|
+
function resolvePlusDecode(info, formatOverride) {
|
|
81730
|
+
const type = info.type;
|
|
81731
|
+
const detectors = info.supportedDetectors ?? [];
|
|
81732
|
+
let format;
|
|
81733
|
+
if (formatOverride !== void 0) {
|
|
81734
|
+
const artifact = plusArtifactFormat(formatOverride);
|
|
81735
|
+
if (artifact === null) throw new UnsupportedPlusDecodeError(type, formatOverride, detectors);
|
|
81736
|
+
if (detectors.length > 0) assertOverrideBacked(type, artifact, detectors);
|
|
81737
|
+
format = artifact;
|
|
81738
|
+
} else if (detectors.includes("onnx") || detectors.includes("openvino")) format = "onnx";
|
|
81739
|
+
else if (detectors.includes("edgetpu")) format = "tflite";
|
|
81740
|
+
else if (detectors.length === 0) {
|
|
81741
|
+
const fallback = familyDefaultArtifact(type);
|
|
81742
|
+
if (fallback === null) throw new UnsupportedPlusDecodeError(type, "(default)", detectors);
|
|
81743
|
+
format = fallback;
|
|
81744
|
+
} else throw new UnsupportedPlusDecodeError(type, "(detectors)", detectors);
|
|
81745
|
+
const decode = matrixDecode(type, format);
|
|
81746
|
+
if (decode === null) throw new UnsupportedPlusDecodeError(type, format, detectors);
|
|
81747
|
+
return decode;
|
|
81748
|
+
}
|
|
81749
|
+
//#endregion
|
|
81580
81750
|
//#region src/frigate/frigate-plus.ts
|
|
81581
81751
|
/**
|
|
81582
81752
|
* Frigate+ API client — the REAL api.frigate.video contract, verified against
|
|
@@ -81671,12 +81841,17 @@ function toModelInfo(raw, modelId) {
|
|
|
81671
81841
|
if (isRecord(raw.labelMap)) {
|
|
81672
81842
|
for (const [k, v] of Object.entries(raw.labelMap)) if (typeof v === "string") labelMap[k] = v;
|
|
81673
81843
|
}
|
|
81844
|
+
const supportedDetectors = [];
|
|
81845
|
+
if (Array.isArray(raw.supportedDetectors)) {
|
|
81846
|
+
for (const d of raw.supportedDetectors) if (typeof d === "string") supportedDetectors.push(d);
|
|
81847
|
+
}
|
|
81674
81848
|
return {
|
|
81675
81849
|
id: typeof raw.id === "string" ? raw.id : modelId,
|
|
81676
81850
|
type: typeof raw.type === "string" ? raw.type : "unknown",
|
|
81677
81851
|
width: typeof raw.width === "number" ? raw.width : 320,
|
|
81678
81852
|
height: typeof raw.height === "number" ? raw.height : 320,
|
|
81679
|
-
labelMap
|
|
81853
|
+
labelMap,
|
|
81854
|
+
supportedDetectors
|
|
81680
81855
|
};
|
|
81681
81856
|
}
|
|
81682
81857
|
/** Resolve one model's metadata + presigned artifact URL. */
|
|
@@ -81691,39 +81866,6 @@ async function requestPlusModelDownload(fetchFn, apiKey, plusModelId) {
|
|
|
81691
81866
|
downloadUrl: url
|
|
81692
81867
|
};
|
|
81693
81868
|
}
|
|
81694
|
-
/** Frigate+ model type → our format + decode. Mirrors the Frigate presets. */
|
|
81695
|
-
var PLUS_TYPE_MAP = {
|
|
81696
|
-
mobiledet: {
|
|
81697
|
-
format: "tflite",
|
|
81698
|
-
postprocessor: "ssd",
|
|
81699
|
-
extension: ".tflite"
|
|
81700
|
-
},
|
|
81701
|
-
/** List API uses `ssd` for MobileDet rows. */
|
|
81702
|
-
ssd: {
|
|
81703
|
-
format: "tflite",
|
|
81704
|
-
postprocessor: "ssd",
|
|
81705
|
-
extension: ".tflite"
|
|
81706
|
-
},
|
|
81707
|
-
yolonas: {
|
|
81708
|
-
format: "onnx",
|
|
81709
|
-
postprocessor: "yolonas",
|
|
81710
|
-
extension: ".onnx"
|
|
81711
|
-
},
|
|
81712
|
-
yolov9: {
|
|
81713
|
-
format: "onnx",
|
|
81714
|
-
extension: ".onnx"
|
|
81715
|
-
},
|
|
81716
|
-
"yolo-generic": {
|
|
81717
|
-
format: "onnx",
|
|
81718
|
-
extension: ".onnx"
|
|
81719
|
-
}
|
|
81720
|
-
};
|
|
81721
|
-
function plusTypeTraits(type) {
|
|
81722
|
-
return PLUS_TYPE_MAP[type] ?? {
|
|
81723
|
-
format: "onnx",
|
|
81724
|
-
extension: ".onnx"
|
|
81725
|
-
};
|
|
81726
|
-
}
|
|
81727
81869
|
/** Ordered labels from the API's `index → label` map; holes keep alignment. */
|
|
81728
81870
|
function orderedLabels(labelMap) {
|
|
81729
81871
|
const indices = Object.keys(labelMap).map((k) => Number.parseInt(k, 10)).filter((n) => Number.isInteger(n) && n >= 0);
|
|
@@ -81740,16 +81882,7 @@ function orderedLabels(labelMap) {
|
|
|
81740
81882
|
* Distribute.
|
|
81741
81883
|
*/
|
|
81742
81884
|
function plusInfoToDescriptor(info, opts) {
|
|
81743
|
-
const
|
|
81744
|
-
const traits = opts.format === "tflite" ? {
|
|
81745
|
-
format: "tflite",
|
|
81746
|
-
extension: ".tflite",
|
|
81747
|
-
...info.type === "ssd" || info.type === "mobiledet" ? { postprocessor: "ssd" } : {}
|
|
81748
|
-
} : opts.format === "onnx" ? {
|
|
81749
|
-
format: "onnx",
|
|
81750
|
-
extension: ".onnx",
|
|
81751
|
-
...base.postprocessor !== void 0 ? { postprocessor: base.postprocessor } : {}
|
|
81752
|
-
} : base;
|
|
81885
|
+
const decode = resolvePlusDecode(info, opts.format);
|
|
81753
81886
|
const labels = orderedLabels(info.labelMap);
|
|
81754
81887
|
return {
|
|
81755
81888
|
stepId: "object-detection",
|
|
@@ -81757,7 +81890,7 @@ function plusInfoToDescriptor(info, opts) {
|
|
|
81757
81890
|
id: opts.modelId,
|
|
81758
81891
|
name: opts.name,
|
|
81759
81892
|
description: `Frigate+ personal model (${info.type}) — imported via Model Studio`,
|
|
81760
|
-
formats: { [
|
|
81893
|
+
formats: { [decode.format]: {
|
|
81761
81894
|
url: `camstack-local://${opts.modelId}/${opts.filename}`,
|
|
81762
81895
|
sizeMB: opts.sizeMB,
|
|
81763
81896
|
runtimes: ["python"]
|
|
@@ -81775,7 +81908,7 @@ function plusInfoToDescriptor(info, opts) {
|
|
|
81775
81908
|
preprocessMode: "letterbox",
|
|
81776
81909
|
provider: "frigate",
|
|
81777
81910
|
group: frigateVariantGroup(info.type, info.width),
|
|
81778
|
-
|
|
81911
|
+
postprocessor: decode.postprocessor
|
|
81779
81912
|
}
|
|
81780
81913
|
};
|
|
81781
81914
|
}
|
|
@@ -82790,17 +82923,19 @@ var ModelStudioAddon = class ModelStudioAddon extends BaseAddon {
|
|
|
82790
82923
|
const operatorName = optionalImportName(input.name);
|
|
82791
82924
|
const key = this.config.frigatePlusApiKey ?? "";
|
|
82792
82925
|
const { info, downloadUrl } = await requestPlusModelDownload(plusFetch, key, input.plusModelId);
|
|
82793
|
-
|
|
82794
|
-
|
|
82795
|
-
|
|
82796
|
-
|
|
82797
|
-
|
|
82798
|
-
|
|
82799
|
-
|
|
82800
|
-
|
|
82801
|
-
|
|
82802
|
-
|
|
82803
|
-
|
|
82926
|
+
let decode;
|
|
82927
|
+
try {
|
|
82928
|
+
decode = resolvePlusDecode(info, input.format);
|
|
82929
|
+
} catch (err) {
|
|
82930
|
+
if (err instanceof UnsupportedPlusDecodeError) this.ctx.logger.warn("Frigate+ model import refused — no decoder", { meta: {
|
|
82931
|
+
plusModelId: input.plusModelId,
|
|
82932
|
+
type: err.type,
|
|
82933
|
+
format: err.format,
|
|
82934
|
+
detectors: [...err.detectors]
|
|
82935
|
+
} });
|
|
82936
|
+
throw err;
|
|
82937
|
+
}
|
|
82938
|
+
const filename = `${modelId}${decode.extension}`;
|
|
82804
82939
|
const modelsDir = await this.resolveModelsDir();
|
|
82805
82940
|
const destPath = path.join(modelsDir, filename);
|
|
82806
82941
|
await downloadFile(downloadUrl, destPath);
|
|
@@ -82822,7 +82957,7 @@ var ModelStudioAddon = class ModelStudioAddon extends BaseAddon {
|
|
|
82822
82957
|
...nameOriginOf(operatorName)
|
|
82823
82958
|
});
|
|
82824
82959
|
await this.availability_.update((prev) => upsertAvailability(prev, modelId, "hub", {
|
|
82825
|
-
format:
|
|
82960
|
+
format: decode.format,
|
|
82826
82961
|
sha256,
|
|
82827
82962
|
bytes,
|
|
82828
82963
|
at: Date.now()
|
|
@@ -82832,11 +82967,11 @@ var ModelStudioAddon = class ModelStudioAddon extends BaseAddon {
|
|
|
82832
82967
|
modelId,
|
|
82833
82968
|
type: info.type,
|
|
82834
82969
|
bytes,
|
|
82835
|
-
format:
|
|
82970
|
+
format: decode.format
|
|
82836
82971
|
} });
|
|
82837
82972
|
const wanted = input.ensureFormats ?? [];
|
|
82838
82973
|
let conversions = [];
|
|
82839
|
-
if (
|
|
82974
|
+
if (decode.format === "onnx" && wanted.length > 0) {
|
|
82840
82975
|
conversions = (await ensureEngineFormats(descriptor.entry, this.plusConversionDeps(async () => (await requestPlusModelDownload(plusFetch, key, input.plusModelId)).downloadUrl, descriptor.stepId), { targetFormats: wanted })).conversions;
|
|
82841
82976
|
this.ctx.logger.info("Frigate+ import — engine conversions", { meta: {
|
|
82842
82977
|
modelId,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { S as e, d as t, u as n, v as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
|
|
2
2
|
import { n as i, r as a, t as o } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
3
|
-
import { g as s, h as c } from "./responsive-
|
|
3
|
+
import { g as s, h as c } from "./responsive-BOr_1QSL.mjs";
|
|
4
4
|
var l = s("chevron-down", [["path", {
|
|
5
5
|
d: "m6 9 6 6 6-6",
|
|
6
6
|
key: "qrunsl"
|
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-D6XbC3Hu.mjs";
|
|
2
2
|
export { t as get, e as init };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { S as e, d as t, g as n, i as r, l as i, n as a, r as o, u as s, v as c, y as l } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.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 { g as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-
|
|
3
|
+
import { g as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-C2LtE9v7.mjs";
|
|
4
4
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
5
5
|
e();
|
|
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) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { S as e, g as t, l as n, v as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
|
|
2
2
|
import { n as i } from "./ui-text-BqZa5BNK.mjs";
|
|
3
|
-
import { g as a } from "./responsive-
|
|
3
|
+
import { g as a } from "./responsive-BOr_1QSL.mjs";
|
|
4
4
|
var o = a("camera", [["path", {
|
|
5
5
|
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",
|
|
6
6
|
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-vqigWLhP.mjs")).catch((e) => {
|
|
2757
2757
|
throw tr = void 0, e;
|
|
2758
2758
|
}), tr;
|
|
2759
2759
|
}
|