@camstack/addon-model-studio 1.1.278 → 1.1.280

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.
@@ -32,6 +32,7 @@ under [Non-commercial models](#non-commercial-models).
32
32
 
33
33
  - © Ultralytics, AGPL-3.0. Corresponding source: the upstream Ultralytics checkpoint and build-camstack-models.py (with convert_lib.py) published at https://huggingface.co/camstack/camstack-models/tree/main/source. https://github.com/ultralytics/ultralytics
34
34
  - Coral Edge TPU models and AIY Vision Birds V1 © Google LLC, Apache-2.0. https://github.com/google-coral/test_data
35
+ - YOLOv9-s EdgeTPU weights © 2025 Dan Brown (fine-tuned to 17 COCO classes, INT8, compiled for the Edge TPU; https://github.com/dbro/frigate-detector-edgetpu-yolo9, repository MIT). Derived from the YOLOv9 code and yolov9-s checkpoint of Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao, GPL-3.0 (https://github.com/WongKinYiu/yolov9). Corresponding source: the fine-tuning checkpoint (yolov9-s-relu6-best.pt), the fine-tuning and conversion notebooks and the publisher LICENSE, mirrored at https://huggingface.co/camstack/camstack-models/tree/main/source/yolov9-edgetpu-dbro. https://github.com/dbro/frigate-detector-edgetpu-yolo9
35
36
  - © Ultralytics, AGPL-3.0 (Ultralytics YOLOv9 weights). YOLOv9 architecture: Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao, GPL-3.0 (https://github.com/WongKinYiu/yolov9). Corresponding source: the upstream Ultralytics checkpoint and build-camstack-models.py (with convert_lib.py) published at https://huggingface.co/camstack/camstack-models/tree/main/source. https://github.com/ultralytics/ultralytics
36
37
  - RF-DETR © Roboflow, Apache-2.0. https://github.com/roboflow/rf-detr
37
38
  - YuNet weights Copyright (c) 2020 Shiqi Yu, MIT. Training code: ShiqiYu/libfacedetection.train, BSD-3-Clause. https://github.com/opencv/opencv_zoo/tree/main/models/face_detection_yunet
@@ -48,7 +49,7 @@ under [Non-commercial models](#non-commercial-models).
48
49
 
49
50
  Training data under attribution terms:
50
51
 
51
- - **COCO 2017** (training data of `yolo26n-seg` and 50 more): annotations CC-BY-4.0; images under their Flickr owners' terms. https://cocodataset.org/#termsofuse
52
+ - **COCO 2017** (training data of `yolo26n-seg` and 52 more): annotations CC-BY-4.0; images under their Flickr owners' terms. https://cocodataset.org/#termsofuse
52
53
  - **WIDER FACE** (training data of `yunet-2023mar`): research-oriented terms; images CC BY-NC-ND. http://shuoyang1213.me/WIDERFACE/
53
54
  - **Open Images V7** (training data of `animal-classifier`): annotations CC-BY-4.0 (Google LLC); images listed as CC-BY-2.0, no warranty. https://storage.googleapis.com/openimages/web/factsfigures_v7.html
54
55
  - **DrBimmer/vehicle-classification** (training data of `vehicle-type-v1`): CC-BY-NC-4.0 — treated as binding the trained weights (conservative reading). https://huggingface.co/datasets/DrBimmer/vehicle-classification
@@ -123,6 +124,7 @@ entry kept resolvable for a saved selection but no longer offered.
123
124
  | `yolo26n-seg`, `yolo26s-seg`, `yolo26m-seg` | [Ultralytics](https://github.com/ultralytics/ultralytics) | AGPL-3.0 / AGPL-3.0 (`AGPL-3.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | exported to ONNX, OpenVINO IR and CoreML | mirror `segmentation/yolo26-seg` |
124
125
  | `yolo26n` (default), `yolo26s`, `yolo26m`, `yolo26l`, `yolo26x` (hidden), `yolo26n-fp16` (hidden), `yolo26n-int8`, `yolo26s-fp16` (hidden), `yolo26s-int8`, `yolo26m-fp16` (hidden), `yolo26m-int8`, `yolo26l-fp16` (hidden), `yolo26l-int8`, `yolo26n-320`, `yolo26n-320-int8`, `yolo26n-256`, `yolo26n-256-int8`, `yolo26s-320`, `yolo26s-320-int8`, `yolo26s-256`, `yolo26s-256-int8`, `yolo26m-320`, `yolo26m-320-int8`, `yolo26m-256`, `yolo26m-256-int8`, `yolo26l-320`, `yolo26l-320-int8`, `yolo26l-256`, `yolo26l-256-int8`, `yolo26x-fp16` (hidden), `yolo26x-int8` (hidden) | [Ultralytics](https://github.com/ultralytics/ultralytics) | AGPL-3.0 / AGPL-3.0 (`AGPL-3.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | exported to ONNX, OpenVINO IR and CoreML (scripts/build-camstack-models.py); OpenVINO FP16 export; exported to OpenVINO IR, then OpenVINO NNCF INT8 post-training quantisation; re-exported at 320×320 to ONNX, OpenVINO IR and CoreML; re-exported at 320×320 to OpenVINO IR; OpenVINO NNCF INT8 post-training quantisation; re-exported at 256×256 to ONNX, OpenVINO IR and CoreML; re-exported at 256×256 to OpenVINO IR; OpenVINO NNCF INT8 post-training quantisation | mirror `objectDetection/yolo26` |
125
126
  | `ssd-mobilenet-v2-coco-edgetpu` (default) | [Google Coral test_data](https://github.com/google-coral/test_data) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | none | https://github.com/google-coral/test_data |
127
+ | `yolov9s-320-edgetpu`, `yolov9s-512-edgetpu` | [YOLOv9-s EdgeTPU (Dan Brown)](https://github.com/dbro/frigate-detector-edgetpu-yolo9) | GPL-3.0 / GPL-3.0 (`GPL-3.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | none: the publisher release files are mirrored byte-identical | mirror `objectDetection/yolov9` |
126
128
  | `yolov9t-320`, `yolov9t-320-int8`, `yolov9t-640`, `yolov9t-640-int8`, `yolov9s-320`, `yolov9s-320-int8`, `yolov9s-640`, `yolov9s-640-int8`, `yolov9m-320`, `yolov9m-320-int8`, `yolov9m-640`, `yolov9m-640-int8`, `yolov9c-320`, `yolov9c-320-int8`, `yolov9c-640`, `yolov9c-640-int8` | [Ultralytics](https://github.com/ultralytics/ultralytics) | AGPL-3.0 / AGPL-3.0 (`AGPL-3.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | exported at 320×320 to ONNX, OpenVINO IR FP16 and CoreML; exported at 320×320 to OpenVINO IR; OpenVINO NNCF INT8 post-training quantisation; exported at 640×640 to ONNX, OpenVINO IR FP16 and CoreML; exported at 640×640 to OpenVINO IR; OpenVINO NNCF INT8 post-training quantisation | mirror `objectDetection/yolov9` |
127
129
 
128
130
  ### Package detection
package/dist/_stub.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "./virtualExposes-CWSi4E_g.mjs";
2
- import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-NnlrcOyX.mjs";
2
+ import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-Enoo1rWt.mjs";
3
3
  import { S as e, _ as t, a as n, b as r, d as i, f as a, g as o, h as s, i as c, l, m as u, n as d, p as f, r as p, t as m, u as h, v as g, y as _ } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
4
4
  import { n as v, r as y, t as b } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
5
5
  import { n as x, r as S, t as C } from "./ui-text-BqZa5BNK.mjs";
@@ -24424,10 +24424,28 @@ function $E(e) {
24424
24424
  }
24425
24425
  //#endregion
24426
24426
  //#region src/frigate/registration.ts
24427
- var eD = /^[a-zA-Z0-9._-]+$/;
24427
+ var eD = [
24428
+ "yolo",
24429
+ "yolonas",
24430
+ "ssd",
24431
+ "rfdetr",
24432
+ "yolo-seg",
24433
+ "scrfd",
24434
+ "softmax",
24435
+ "clip",
24436
+ "arcface",
24437
+ "ctc",
24438
+ "plate-slots",
24439
+ "saliency",
24440
+ "yolo-split-dfl"
24441
+ ];
24428
24442
  function tD(e) {
24443
+ return eD.find((t) => t === e);
24444
+ }
24445
+ var nD = /^[a-zA-Z0-9._-]+$/;
24446
+ function rD(e) {
24429
24447
  let t = e.type === "custom" ? null : sE[e.type];
24430
- if (!eD.test(e.modelId)) throw Error(`Model id "${e.modelId}" is invalid — letters, digits, dot, underscore, hyphen only`);
24448
+ if (!nD.test(e.modelId)) throw Error(`Model id "${e.modelId}" is invalid — letters, digits, dot, underscore, hyphen only`);
24431
24449
  if (!e.name.trim()) throw Error("Display name is required");
24432
24450
  if (!e.stepId.trim()) throw Error("Step is required");
24433
24451
  if (!(e.inputWidth > 0) || !(e.inputHeight > 0)) throw Error("Input size must be positive");
@@ -24472,7 +24490,7 @@ function tD(e) {
24472
24490
  //#endregion
24473
24491
  //#region src/components/StepSelect.tsx
24474
24492
  e();
24475
- function nD({ trpc: e, label: t, value: n, onChange: r, slots: a }) {
24493
+ function iD({ trpc: e, label: t, value: n, onChange: r, slots: a }) {
24476
24494
  let { t: o } = $(), [s, c] = g(null), [l, u] = g(null);
24477
24495
  return i(() => {
24478
24496
  let t = !1;
@@ -24518,7 +24536,7 @@ function nD({ trpc: e, label: t, value: n, onChange: r, slots: a }) {
24518
24536
  }
24519
24537
  //#endregion
24520
24538
  //#region src/ui/probe-custom-model.ts
24521
- var rD = {
24539
+ var aD = {
24522
24540
  ".onnx": "onnx",
24523
24541
  ".tflite": "tflite",
24524
24542
  ".pt": "pt",
@@ -24527,30 +24545,30 @@ var rD = {
24527
24545
  ".mlmodel": "coreml",
24528
24546
  ".xml": "openvino"
24529
24547
  };
24530
- function iD(e) {
24548
+ function oD(e) {
24531
24549
  let t = (e.split(/[/?#]/).pop() ?? e).toLowerCase();
24532
24550
  if (t.endsWith(".mlpackage")) return ".mlpackage";
24533
24551
  let n = t.lastIndexOf(".");
24534
24552
  return n >= 0 ? t.slice(n) : "";
24535
24553
  }
24536
- function aD(e) {
24554
+ function sD(e) {
24537
24555
  return (e.split(/[/?#]/).pop() ?? e).replace(/\.(onnx|tflite|pt|pth|xml|mlmodel|mlpackage)$/i, "");
24538
24556
  }
24539
- function oD(e) {
24557
+ function cD(e) {
24540
24558
  let t = e.trim().toLowerCase().replace(/[^a-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "");
24541
24559
  return t.length > 0 ? t : "custom-model";
24542
24560
  }
24543
- function sD(e) {
24561
+ function lD(e) {
24544
24562
  return /\b640\b/.test(e) || /[_-]640([_-]|$)/.test(e) ? 640 : (/\b320\b/.test(e) || /[_-]320([_-]|$)/.test(e), 320);
24545
24563
  }
24546
- function cD(e) {
24564
+ function uD(e) {
24547
24565
  let t = e.replace(/[_-]+/g, " ").trim();
24548
24566
  return t.length === 0 ? "Custom model" : t.replace(/\b\w/g, (e) => e.toUpperCase());
24549
24567
  }
24550
- function lD(e) {
24551
- let t = [], n = e.kind === "file" ? e.filename : e.url, r = rD[iD(n)] ?? null;
24568
+ function dD(e) {
24569
+ let t = [], n = e.kind === "file" ? e.filename : e.url, r = aD[oD(n)] ?? null;
24552
24570
  r === null && n.trim().length > 0 && t.push(lT("probe.noFormat"));
24553
- let i = aD(n), a = oD(i), o = cD(i), s = sD(i);
24571
+ let i = sD(n), a = cD(i), o = uD(i), s = lD(i);
24554
24572
  s === 640 ? t.push(lT("probe.size640")) : t.push(lT("probe.size320"));
24555
24573
  let c = null;
24556
24574
  return e.kind === "file" && typeof e.bytes == "number" && e.bytes > 0 && (c = Number((e.bytes / 1e6).toFixed(1))), t.push(lT("probe.decode")), {
@@ -24565,37 +24583,24 @@ function lD(e) {
24565
24583
  //#endregion
24566
24584
  //#region src/tabs/RegisterTab.tsx
24567
24585
  e();
24568
- var uD = [
24586
+ var fD = [
24569
24587
  "onnx",
24570
24588
  "openvino",
24571
24589
  "coreml",
24572
24590
  "tflite",
24573
24591
  "pt"
24574
- ], dD = [
24575
- "yolo",
24576
- "yolonas",
24577
- "ssd",
24578
- "rfdetr",
24579
- "yolo-seg",
24580
- "scrfd",
24581
- "softmax",
24582
- "clip",
24583
- "arcface",
24584
- "ctc",
24585
- "plate-slots",
24586
- "saliency"
24587
- ], fD = [
24592
+ ], pD = [
24588
24593
  ".onnx",
24589
24594
  ".tflite",
24590
24595
  ".pt"
24591
- ], pD = [{ value: "upload" }, { value: "url" }];
24592
- function mD({ trpc: e, onRegistered: n, initialPrefill: r = null, onPrefillConsumed: a }) {
24596
+ ], mD = [{ value: "upload" }, { value: "url" }];
24597
+ function hD({ trpc: e, onRegistered: n, initialPrefill: r = null, onPrefillConsumed: a }) {
24593
24598
  let { t: s } = $(), c = ST(), [u, d] = g("upload"), [f, p] = g(""), [m, h] = g(""), [_, b] = g("object-detection"), [x, S] = g("onnx"), [C, w] = g(""), [T, E] = g(""), [ee, te] = g(0), [ne, D] = g(320), [O, k] = g(320), [re, A] = g(""), [j, M] = g(null), [ie, ae] = g([]), [N, oe] = g({ state: "idle" }), [P, F] = g(!1), [se, ce] = g(null), [le, ue] = g(null), de = t(null), I = o(() => cE(re), [re]);
24594
24599
  i(() => {
24595
24600
  r != null && (d("upload"), S(r.format), w(r.postprocessor ?? ""), D(r.inputSize), k(r.inputSize), A(r.labels.join("\n")), M(r.sourceLabel), ce(null), ue(null), a?.());
24596
24601
  }, [r, a]);
24597
24602
  let fe = l((e, t) => {
24598
- let n = lD(e);
24603
+ let n = dD(e);
24599
24604
  ae(n.hints), n.format !== null && S(n.format), D(n.inputSize), k(n.inputSize), (t?.forceId || !f) && p(n.modelId), m || h(n.name), n.sizeMB !== null && e.kind === "url" && te(n.sizeMB);
24600
24605
  }, [f, m]), L = l(async (t) => {
24601
24606
  ce(null), fe({
@@ -24656,7 +24661,7 @@ function mD({ trpc: e, onRegistered: n, initialPrefill: r = null, onPrefillConsu
24656
24661
  if ($T(m)) return ce(s("register.nameInvalid"));
24657
24662
  F(!0);
24658
24663
  try {
24659
- let r = dD.find((e) => e === C), i = tD({
24664
+ let r = tD(C), i = rD({
24660
24665
  type: "custom",
24661
24666
  modelId: f.trim(),
24662
24667
  name: QT(m) ?? f.trim(),
@@ -24740,7 +24745,7 @@ function mD({ trpc: e, onRegistered: n, initialPrefill: r = null, onPrefillConsu
24740
24745
  children: s("common.source")
24741
24746
  }), /* @__PURE__ */ v("div", {
24742
24747
  className: "inline-flex rounded-md border border-border overflow-hidden",
24743
- children: pD.map((e) => /* @__PURE__ */ v("button", {
24748
+ children: mD.map((e) => /* @__PURE__ */ v("button", {
24744
24749
  type: "button",
24745
24750
  onClick: () => {
24746
24751
  ce(null), ue(null), d(e.value);
@@ -24759,7 +24764,7 @@ function mD({ trpc: e, onRegistered: n, initialPrefill: r = null, onPrefillConsu
24759
24764
  })
24760
24765
  }),
24761
24766
  u === "upload" ? /* @__PURE__ */ y(aT, {
24762
- label: s("register.modelFile", { extensions: fD.join(" / ") }),
24767
+ label: s("register.modelFile", { extensions: pD.join(" / ") }),
24763
24768
  children: [
24764
24769
  /* @__PURE__ */ y("div", {
24765
24770
  className: "flex items-center gap-3 flex-wrap",
@@ -24791,7 +24796,7 @@ function mD({ trpc: e, onRegistered: n, initialPrefill: r = null, onPrefillConsu
24791
24796
  /* @__PURE__ */ v("input", {
24792
24797
  ref: de,
24793
24798
  type: "file",
24794
- accept: fD.join(","),
24799
+ accept: pD.join(","),
24795
24800
  className: "hidden",
24796
24801
  onChange: (e) => {
24797
24802
  let t = e.target.files?.[0];
@@ -24851,7 +24856,7 @@ function mD({ trpc: e, onRegistered: n, initialPrefill: r = null, onPrefillConsu
24851
24856
  /* @__PURE__ */ y("div", {
24852
24857
  className: "grid grid-cols-1 sm:grid-cols-3 gap-3",
24853
24858
  children: [
24854
- /* @__PURE__ */ v(nD, {
24859
+ /* @__PURE__ */ v(iD, {
24855
24860
  trpc: e,
24856
24861
  value: _,
24857
24862
  onChange: b
@@ -24877,11 +24882,11 @@ function mD({ trpc: e, onRegistered: n, initialPrefill: r = null, onPrefillConsu
24877
24882
  children: /* @__PURE__ */ v("select", {
24878
24883
  value: x,
24879
24884
  onChange: (e) => {
24880
- let t = uD.find((t) => t === e.target.value);
24885
+ let t = fD.find((t) => t === e.target.value);
24881
24886
  t !== void 0 && S(t);
24882
24887
  },
24883
24888
  className: "w-full px-3 py-1.5 text-xs rounded-md border border-border bg-surface text-foreground focus:outline-none focus:border-primary/50",
24884
- children: uD.map((e) => /* @__PURE__ */ v("option", {
24889
+ children: fD.map((e) => /* @__PURE__ */ v("option", {
24885
24890
  value: e,
24886
24891
  children: e
24887
24892
  }, e))
@@ -24895,7 +24900,7 @@ function mD({ trpc: e, onRegistered: n, initialPrefill: r = null, onPrefillConsu
24895
24900
  children: [/* @__PURE__ */ v("option", {
24896
24901
  value: "",
24897
24902
  children: s("register.stepDefault")
24898
- }), dD.map((e) => /* @__PURE__ */ v("option", {
24903
+ }), eD.map((e) => /* @__PURE__ */ v("option", {
24899
24904
  value: e,
24900
24905
  children: e
24901
24906
  }, e))]
@@ -24930,7 +24935,7 @@ function mD({ trpc: e, onRegistered: n, initialPrefill: r = null, onPrefillConsu
24930
24935
  //#endregion
24931
24936
  //#region src/tabs/ImportTab.tsx
24932
24937
  e();
24933
- function hD({ trpc: e, onRegistered: t, initialPrefill: n = null, onPrefillConsumed: r }) {
24938
+ function gD({ trpc: e, onRegistered: t, initialPrefill: n = null, onPrefillConsumed: r }) {
24934
24939
  let { t: a } = $(), [o, s] = g(null), [c, l] = g(null), [u, d] = g(n);
24935
24940
  return i(() => {
24936
24941
  n !== null && d(n);
@@ -24946,7 +24951,7 @@ function hD({ trpc: e, onRegistered: t, initialPrefill: n = null, onPrefillConsu
24946
24951
  className: "rounded-md border border-success/30 bg-success/10 px-3 py-2 text-xs text-success",
24947
24952
  children: c
24948
24953
  }),
24949
- /* @__PURE__ */ v(mD, {
24954
+ /* @__PURE__ */ v(hD, {
24950
24955
  trpc: e,
24951
24956
  onRegistered: (e) => {
24952
24957
  l(e ?? a("importTab.registered")), s(null), t();
@@ -24961,7 +24966,7 @@ function hD({ trpc: e, onRegistered: t, initialPrefill: n = null, onPrefillConsu
24961
24966
  }
24962
24967
  //#endregion
24963
24968
  //#region src/ui/installed-activation.ts
24964
- function gD(e, t, n, r, i) {
24969
+ function _D(e, t, n, r, i) {
24965
24970
  if (r == null || ne(t)) return [];
24966
24971
  let a = [];
24967
24972
  for (let o of e) o.enabled && i.has(o.format) && Qo(r.models, o.format) && $o({
@@ -24975,10 +24980,10 @@ function gD(e, t, n, r, i) {
24975
24980
  });
24976
24981
  return a;
24977
24982
  }
24978
- function _D(e, t) {
24983
+ function vD(e, t) {
24979
24984
  return { [Oe(e)]: t };
24980
24985
  }
24981
- function vD(e, t, n) {
24986
+ function yD(e, t, n) {
24982
24987
  let r = Object.keys(t).length > 0;
24983
24988
  return {
24984
24989
  enabled: n ? !0 : e.enabled,
@@ -24987,18 +24992,18 @@ function vD(e, t, n) {
24987
24992
  ...r ? { steps: t } : {}
24988
24993
  };
24989
24994
  }
24990
- function yD(e, t, n, r) {
24995
+ function bD(e, t, n, r) {
24991
24996
  let i = new Set(r), a = {};
24992
24997
  for (let r of e) {
24993
24998
  let e = { ...r.steps };
24994
24999
  i.has(r.key) && (e[t] = {
24995
25000
  ...e[t],
24996
25001
  modelId: n
24997
- }), a[r.key] = vD(r, e, i.has(r.key));
25002
+ }), a[r.key] = yD(r, e, i.has(r.key));
24998
25003
  }
24999
25004
  return a;
25000
25005
  }
25001
- function bD(e, t, n, r, i) {
25006
+ function xD(e, t, n, r, i) {
25002
25007
  let a = {};
25003
25008
  for (let o of e) {
25004
25009
  let e = { ...o.steps };
@@ -25014,52 +25019,52 @@ function bD(e, t, n, r, i) {
25014
25019
  Object.keys(i).length > 0 ? e[t] = i : delete e[t];
25015
25020
  }
25016
25021
  }
25017
- a[o.key] = vD(o, e, o.key === i);
25022
+ a[o.key] = yD(o, e, o.key === i);
25018
25023
  }
25019
25024
  return a;
25020
25025
  }
25021
25026
  //#endregion
25022
25027
  //#region src/ui/installed-inventory.ts
25023
- function xD(e) {
25028
+ function SD(e) {
25024
25029
  return Uo(e);
25025
25030
  }
25026
- function SD(e) {
25031
+ function CD(e) {
25027
25032
  return e.map((e) => ({
25028
25033
  value: e.key,
25029
- label: xD(e),
25034
+ label: SD(e),
25030
25035
  enabled: e.enabled
25031
25036
  }));
25032
25037
  }
25033
- var CD = /\[([^\]]+)\]\s*$/;
25034
- function wD(e, t) {
25035
- let n = CD.exec(e.engineKey)?.[1];
25038
+ var wD = /\[([^\]]+)\]\s*$/;
25039
+ function TD(e, t) {
25040
+ let n = wD.exec(e.engineKey)?.[1];
25036
25041
  return n === void 0 ? e.engine.format === t.format ? e.engine.backend === t.backend ? e.engine.device === t.device : t.key === "cpu" && e.engine.device === "cpu" : !1 : n === t.key;
25037
25042
  }
25038
- function TD(e, t, n, r) {
25043
+ function ED(e, t, n, r) {
25039
25044
  if (e === null) return null;
25040
25045
  let i = `${n}/${r}`;
25041
- return e.some((e) => wD(e, t) && e.modelsLoaded.includes(i));
25046
+ return e.some((e) => TD(e, t) && e.modelsLoaded.includes(i));
25042
25047
  }
25043
- var ED = new Set(["audio-classifier"]);
25044
- function DD(e, t, n) {
25048
+ var DD = new Set(["audio-classifier"]);
25049
+ function OD(e, t, n) {
25045
25050
  return t?.[e] ?? n?.defaultModelId;
25046
25051
  }
25047
- function OD(e, t) {
25052
+ function kD(e, t) {
25048
25053
  if (e.onDisk !== "current") return /* @__PURE__ */ new Set();
25049
25054
  let n = t.stepCatalogs[e.stepId], r = new Set([e.format]);
25050
- return ne(e.stepId) ? DD(e.stepId, t.clusterModels, n) === e.modelId ? new Set(t.devices.filter((t) => t.enabled && t.format === e.format).map((e) => e.key)) : /* @__PURE__ */ new Set() : new Set(gD(t.devices, e.stepId, e.modelId, n, r).map((e) => e.deviceKey));
25055
+ return ne(e.stepId) ? OD(e.stepId, t.clusterModels, n) === e.modelId ? new Set(t.devices.filter((t) => t.enabled && t.format === e.format).map((e) => e.key)) : /* @__PURE__ */ new Set() : new Set(_D(t.devices, e.stepId, e.modelId, n, r).map((e) => e.deviceKey));
25051
25056
  }
25052
- function kD(e, t, n) {
25057
+ function AD(e, t, n) {
25053
25058
  return t ? "outside-pools" : e.some((e) => e.loaded === !0) ? "in-use" : e.some((e) => e.configured) ? "configured" : e.some((e) => e.enabled) ? n ? "idle" : "unknown" : "unused";
25054
25059
  }
25055
- function AD(e, t) {
25056
- let n = OD(e, t), r = t.devices.filter((t) => t.format === e.format).map((r) => ({
25060
+ function jD(e, t) {
25061
+ let n = kD(e, t), r = t.devices.filter((t) => t.format === e.format).map((r) => ({
25057
25062
  deviceKey: r.key,
25058
- label: xD(r),
25063
+ label: SD(r),
25059
25064
  enabled: r.enabled,
25060
- loaded: TD(t.engines, r, e.stepId, e.modelId),
25065
+ loaded: ED(t.engines, r, e.stepId, e.modelId),
25061
25066
  configured: n.has(r.key)
25062
- })).toSorted((e, t) => e.label.localeCompare(t.label)), i = t.stepCatalogs[e.stepId]?.slot, a = kD(r, i !== void 0 && ED.has(i), t.engines !== null);
25067
+ })).toSorted((e, t) => e.label.localeCompare(t.label)), i = t.stepCatalogs[e.stepId]?.slot, a = AD(r, i !== void 0 && DD.has(i), t.engines !== null);
25063
25068
  return {
25064
25069
  ...e,
25065
25070
  key: `${e.stepId}::${e.modelId}::${e.format}`,
@@ -25070,7 +25075,7 @@ function AD(e, t) {
25070
25075
  removable: a === "idle" || a === "unused"
25071
25076
  };
25072
25077
  }
25073
- function jD(e, t, n) {
25078
+ function MD(e, t, n) {
25074
25079
  return t.onDisk === "missing" ? null : {
25075
25080
  stepId: e.stepId,
25076
25081
  modelId: e.modelId,
@@ -25085,7 +25090,7 @@ function jD(e, t, n) {
25085
25090
  ...tw(e.supplies)
25086
25091
  };
25087
25092
  }
25088
- function MD(e, t) {
25093
+ function ND(e, t) {
25089
25094
  let n = [];
25090
25095
  for (let r of e.registry) {
25091
25096
  let i = r.entry.id, a = e.availability[i]?.[e.nodeId];
@@ -25108,28 +25113,28 @@ function MD(e, t) {
25108
25113
  }
25109
25114
  return n;
25110
25115
  }
25111
- function ND(e) {
25116
+ function PD(e) {
25112
25117
  let t = new Set(e.registry.map((e) => e.entry.id)), n = e.seeds.flatMap((e) => e.formats.flatMap((n) => {
25113
- let r = jD(e, n, t);
25118
+ let r = MD(e, n, t);
25114
25119
  return r === null ? [] : [r];
25115
25120
  })), r = new Set(n.map((e) => `${e.stepId}::${e.modelId}::${e.format}`)), i = new Map(e.registry.map((e) => [e.entry.id, e.entry.description]));
25116
- return [...n, ...MD(e, r)].map((e) => ({
25121
+ return [...n, ...ND(e, r)].map((e) => ({
25117
25122
  ...e,
25118
25123
  description: i.get(e.modelId) ?? e.description
25119
- })).map((t) => AD(t, e)).toSorted((e, t) => e.name.localeCompare(t.name) || e.format.localeCompare(t.format));
25124
+ })).map((t) => jD(t, e)).toSorted((e, t) => e.name.localeCompare(t.name) || e.format.localeCompare(t.format));
25120
25125
  }
25121
- function PD(e, t, n) {
25126
+ function FD(e, t, n) {
25122
25127
  let r = n.device === "all" ? void 0 : t.find((e) => e.key === n.device)?.format;
25123
25128
  return e.filter((e) => !(n.provider !== "all" && e.provider !== n.provider || n.step !== "all" && e.stepId !== n.step || n.device !== "all" && e.format !== r));
25124
25129
  }
25125
- function FD(e) {
25130
+ function ID(e) {
25126
25131
  return e.filter((e) => e.removable).reduce((e, t) => e + t.sizeMB, 0);
25127
25132
  }
25128
- function ID(e, t, n, r) {
25133
+ function LD(e, t, n, r) {
25129
25134
  let i = e.devices.filter((e) => e.enabled && e.format === r).map((r) => ({
25130
25135
  deviceKey: r.key,
25131
- label: xD(r),
25132
- loaded: TD(e.engines, r, t, n)
25136
+ label: SD(r),
25137
+ loaded: ED(e.engines, r, t, n)
25133
25138
  })).toSorted((e, t) => e.label.localeCompare(t.label)), a = e.stepCatalogs[t]?.models.find((e) => e.id === n), o = e.seeds.find((e) => e.stepId === t && e.modelId === n)?.formats.find((e) => e.format === r)?.onDisk ?? "missing";
25134
25139
  return {
25135
25140
  format: r,
@@ -25138,7 +25143,7 @@ function ID(e, t, n, r) {
25138
25143
  onDisk: o
25139
25144
  };
25140
25145
  }
25141
- function LD(e, t, n) {
25146
+ function RD(e, t, n) {
25142
25147
  return {
25143
25148
  stepId: e,
25144
25149
  modelId: t,
@@ -25151,7 +25156,7 @@ function LD(e, t, n) {
25151
25156
  let r = [...new Set(n.devices.filter((e) => e.enabled).map((e) => e.format))];
25152
25157
  return {
25153
25158
  nodeId: n.nodeId,
25154
- entries: r.map((r) => ID(n, e, t, r))
25159
+ entries: r.map((r) => LD(n, e, t, r))
25155
25160
  };
25156
25161
  })
25157
25162
  };
@@ -25159,7 +25164,7 @@ function LD(e, t, n) {
25159
25164
  //#endregion
25160
25165
  //#region src/components/InstalledSettingsModal.tsx
25161
25166
  e();
25162
- function RD({ trpc: e, nodeId: t, stepId: n, modelId: r, modelName: a, devices: o, deviceKey: s, onClose: c, onDone: u }) {
25167
+ function zD({ trpc: e, nodeId: t, stepId: n, modelId: r, modelName: a, devices: o, deviceKey: s, onClose: c, onDone: u }) {
25163
25168
  let { t: d } = $(), [f, p] = g(!1), [m, h] = g(null), [_, b] = g(null), [x, S] = g({
25164
25169
  enabled: !0,
25165
25170
  modelId: r,
@@ -25191,7 +25196,7 @@ function RD({ trpc: e, nodeId: t, stepId: n, modelId: r, modelName: a, devices:
25191
25196
  try {
25192
25197
  await Xw(e, {
25193
25198
  agentNodeId: t,
25194
- inferenceDevices: bD(o, n, x.modelId ?? r, x.settings ?? {}, s)
25199
+ inferenceDevices: xD(o, n, x.modelId ?? r, x.settings ?? {}, s)
25195
25200
  }), u(), c();
25196
25201
  } catch (e) {
25197
25202
  h(e instanceof Error ? e.message : d("settingsModal.saveFailed"));
@@ -25282,7 +25287,7 @@ function RD({ trpc: e, nodeId: t, stepId: n, modelId: r, modelName: a, devices:
25282
25287
  //#endregion
25283
25288
  //#region src/components/installed/use-cluster-placement.ts
25284
25289
  e();
25285
- async function zD(e, t) {
25290
+ async function BD(e, t) {
25286
25291
  try {
25287
25292
  let [n, r, i] = await Promise.all([
25288
25293
  Mw(e, t),
@@ -25303,11 +25308,11 @@ async function zD(e, t) {
25303
25308
  };
25304
25309
  }
25305
25310
  }
25306
- function BD(e, t, n) {
25311
+ function VD(e, t, n) {
25307
25312
  let [r, a] = g(null), o = t.join("\n");
25308
25313
  return i(() => {
25309
25314
  let t = !1, n = o.length === 0 ? [] : o.split("\n");
25310
- return Promise.all(n.map((t) => zD(e, t))).then((e) => {
25315
+ return Promise.all(n.map((t) => BD(e, t))).then((e) => {
25311
25316
  t || a(e);
25312
25317
  }), () => {
25313
25318
  t = !0;
@@ -25321,14 +25326,14 @@ function BD(e, t, n) {
25321
25326
  //#endregion
25322
25327
  //#region src/components/installed/use-online-node-ids.ts
25323
25328
  e();
25324
- function VD() {
25329
+ function HD() {
25325
25330
  let { nodes: e } = Ur();
25326
25331
  return o(() => e.filter((e) => e.isOnline).map((e) => e.id), [e]);
25327
25332
  }
25328
25333
  //#endregion
25329
25334
  //#region src/components/installed/ClusterModelsSection.tsx
25330
25335
  e();
25331
- function HD({ row: e }) {
25336
+ function UD({ row: e }) {
25332
25337
  let { t } = $();
25333
25338
  if (e.entry === null) return /* @__PURE__ */ v(Wa, {
25334
25339
  variant: "danger",
@@ -25355,7 +25360,7 @@ function HD({ row: e }) {
25355
25360
  })]
25356
25361
  });
25357
25362
  }
25358
- var UD = (e) => [
25363
+ var WD = (e) => [
25359
25364
  {
25360
25365
  key: "node",
25361
25366
  header: e("cluster.cols.node"),
@@ -25384,11 +25389,11 @@ var UD = (e) => [
25384
25389
  {
25385
25390
  key: "state",
25386
25391
  header: e("cluster.cols.state"),
25387
- render: (e) => /* @__PURE__ */ v(HD, { row: e })
25392
+ render: (e) => /* @__PURE__ */ v(UD, { row: e })
25388
25393
  }
25389
25394
  ];
25390
- function WD(e, t, n) {
25391
- return LD(e.stepId, t, n).nodes.flatMap((e) => e.entries.length === 0 ? [{
25395
+ function GD(e, t, n) {
25396
+ return RD(e.stepId, t, n).nodes.flatMap((e) => e.entries.length === 0 ? [{
25392
25397
  key: e.nodeId,
25393
25398
  nodeId: e.nodeId,
25394
25399
  entry: null,
@@ -25399,7 +25404,7 @@ function WD(e, t, n) {
25399
25404
  entry: t
25400
25405
  })));
25401
25406
  }
25402
- function GD(e, t) {
25407
+ function KD(e, t) {
25403
25408
  let n = new Map(e.options.map((e) => [e.id, e.label]));
25404
25409
  for (let r of t ?? []) if (r.error === void 0) for (let t of r.seeds) t.stepId === e.stepId && !n.has(t.modelId) && n.set(t.modelId, t.name);
25405
25410
  return [...n].map(([e, t]) => ({
@@ -25407,14 +25412,14 @@ function GD(e, t) {
25407
25412
  label: t
25408
25413
  }));
25409
25414
  }
25410
- function KD({ step: e, current: t, inputs: n, onChange: r }) {
25411
- let { t: a } = $(), s = o(() => UD(a), [a]), [c, l] = g(t);
25415
+ function qD({ step: e, current: t, inputs: n, onChange: r }) {
25416
+ let { t: a } = $(), s = o(() => WD(a), [a]), [c, l] = g(t);
25412
25417
  i(() => l(t), [t]);
25413
- let u = o(() => n === null ? [] : WD(e, t, n), [
25418
+ let u = o(() => n === null ? [] : GD(e, t, n), [
25414
25419
  e,
25415
25420
  t,
25416
25421
  n
25417
- ]), d = o(() => GD(e, n), [e, n]), f = (e) => d.find((t) => t.id === e)?.label ?? e;
25422
+ ]), d = o(() => KD(e, n), [e, n]), f = (e) => d.find((t) => t.id === e)?.label ?? e;
25418
25423
  return /* @__PURE__ */ y("section", {
25419
25424
  "aria-labelledby": `cluster-${e.stepId}`,
25420
25425
  className: Ke,
@@ -25474,8 +25479,8 @@ function KD({ step: e, current: t, inputs: n, onChange: r }) {
25474
25479
  ]
25475
25480
  });
25476
25481
  }
25477
- function qD({ trpc: e, refreshKey: t, clusterModels: n, onChanged: r, onError: i }) {
25478
- let { t: a } = $(), o = Xa(), s = BD(e, VD(), t), c = async (t, n, s) => {
25482
+ function JD({ trpc: e, refreshKey: t, clusterModels: n, onChanged: r, onError: i }) {
25483
+ let { t: a } = $(), o = Xa(), s = VD(e, HD(), t), c = async (t, n, s) => {
25479
25484
  if (await o({
25480
25485
  title: a("cluster.confirmTitle"),
25481
25486
  message: a("cluster.confirmMessage", {
@@ -25486,7 +25491,7 @@ function qD({ trpc: e, refreshKey: t, clusterModels: n, onChanged: r, onError: i
25486
25491
  cancelLabel: a("common.cancel"),
25487
25492
  variant: "default"
25488
25493
  })) try {
25489
- await Qw(e, _D(t, n)), r();
25494
+ await Qw(e, vD(t, n)), r();
25490
25495
  } catch (e) {
25491
25496
  i(e instanceof Error ? e.message : a("cluster.activateFailed"));
25492
25497
  }
@@ -25498,7 +25503,7 @@ function qD({ trpc: e, refreshKey: t, clusterModels: n, onChanged: r, onError: i
25498
25503
  id: "installed-cluster-models",
25499
25504
  className: Ze,
25500
25505
  children: a("cluster.title")
25501
- }), Ae.map((e) => /* @__PURE__ */ v(KD, {
25506
+ }), Ae.map((e) => /* @__PURE__ */ v(qD, {
25502
25507
  step: e,
25503
25508
  current: n?.[e.stepId] ?? e.defaultModelId,
25504
25509
  inputs: s,
@@ -25508,7 +25513,7 @@ function qD({ trpc: e, refreshKey: t, clusterModels: n, onChanged: r, onError: i
25508
25513
  }
25509
25514
  //#endregion
25510
25515
  //#region src/components/FillBadges.tsx
25511
- function JD(e, t) {
25516
+ function YD(e, t) {
25512
25517
  if (e.kind === "mask") return t("fillBadges.mask");
25513
25518
  if (e.kind === "crop") return e.stepId === "face-detection" ? t("fillBadges.cropFace") : t("fillBadges.cropPlate");
25514
25519
  let n = be[e.stepId], r = {
@@ -25517,14 +25522,14 @@ function JD(e, t) {
25517
25522
  };
25518
25523
  return e.uncovered.length > 0 ? t(n ? "fillBadges.labelsDefaultUncovered" : "fillBadges.labelsOptionalUncovered", r) : t(n ? "fillBadges.labelsDefaultAll" : "fillBadges.labelsOptionalAll", r);
25519
25524
  }
25520
- function YD({ supplies: e }) {
25525
+ function XD({ supplies: e }) {
25521
25526
  let { t } = $();
25522
25527
  return e === void 0 || e.length === 0 ? null : /* @__PURE__ */ v("span", {
25523
25528
  className: "flex flex-wrap gap-1",
25524
25529
  "data-testid": "fill-badges",
25525
25530
  children: e.map((e) => /* @__PURE__ */ v("span", {
25526
25531
  className: "inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium border bg-primary/10 text-primary border-primary/30",
25527
- title: JD(e, t),
25532
+ title: YD(e, t),
25528
25533
  children: me(e)
25529
25534
  }, e.stepId))
25530
25535
  });
@@ -25532,7 +25537,7 @@ function YD({ supplies: e }) {
25532
25537
  //#endregion
25533
25538
  //#region src/components/InlineRename.tsx
25534
25539
  e();
25535
- function XD({ name: e, modelId: t, onRename: n, onError: r }) {
25540
+ function ZD({ name: e, modelId: t, onRename: n, onError: r }) {
25536
25541
  let { t: i } = $(), [a, o] = g(null), [s, c] = g(!1);
25537
25542
  if (a === null) return /* @__PURE__ */ y("span", {
25538
25543
  className: "flex items-center gap-1 min-w-0",
@@ -25629,7 +25634,7 @@ function XD({ name: e, modelId: t, onRename: n, onError: r }) {
25629
25634
  }
25630
25635
  //#endregion
25631
25636
  //#region src/components/installed/DeviceChips.tsx
25632
- var ZD = {
25637
+ var QD = {
25633
25638
  off: "off",
25634
25639
  loadedConfigured: "loaded, configured",
25635
25640
  loaded: "loaded",
@@ -25637,19 +25642,19 @@ var ZD = {
25637
25642
  unknown: "load state unknown",
25638
25643
  notUsed: "not used"
25639
25644
  };
25640
- function QD(e) {
25645
+ function $D(e) {
25641
25646
  return e.enabled ? e.loaded === !0 ? e.configured ? "loadedConfigured" : "loaded" : e.configured ? "configuredNotLoaded" : e.loaded === null ? "unknown" : "notUsed" : "off";
25642
25647
  }
25643
- function $D(e) {
25648
+ function eO(e) {
25644
25649
  return e.enabled ? e.loaded === !0 ? "border-success/40 bg-success/10 text-success" : e.configured ? "border-primary/50 bg-primary/10 text-primary" : "border-border bg-surface text-foreground-subtle" : "border-border bg-foreground-subtle/35";
25645
25650
  }
25646
- function eO({ chip: e }) {
25651
+ function tO({ chip: e }) {
25647
25652
  return /* @__PURE__ */ v("span", {
25648
25653
  "aria-hidden": !0,
25649
25654
  className: W("h-1.5 w-1.5 rounded-full", e.loaded === !0 ? "bg-success" : e.configured ? "border border-primary" : "border border-foreground-subtle/60")
25650
25655
  });
25651
25656
  }
25652
- function tO({ chips: e, onChip: t, disabled: n = !1 }) {
25657
+ function nO({ chips: e, onChip: t, disabled: n = !1 }) {
25653
25658
  let { t: r } = $();
25654
25659
  return e.length === 0 ? /* @__PURE__ */ v("span", {
25655
25660
  className: "text-[10px] text-foreground-subtle",
@@ -25658,7 +25663,7 @@ function tO({ chips: e, onChip: t, disabled: n = !1 }) {
25658
25663
  className: "flex flex-wrap gap-1",
25659
25664
  "data-testid": "installed-device-chips",
25660
25665
  children: e.map((e) => {
25661
- let i = QD(e), a = r(`deviceChips.state.${i}`), o = r("deviceChips.chipLabel", {
25666
+ let i = $D(e), a = r(`deviceChips.state.${i}`), o = r("deviceChips.chipLabel", {
25662
25667
  label: e.label,
25663
25668
  deviceKey: e.deviceKey,
25664
25669
  state: a
@@ -25667,19 +25672,19 @@ function tO({ chips: e, onChip: t, disabled: n = !1 }) {
25667
25672
  state: a
25668
25673
  });
25669
25674
  if (!e.enabled) return /* @__PURE__ */ v("span", {
25670
- className: W(Ue, $D(e), "min-w-[1.75rem] justify-center px-1.5"),
25675
+ className: W(Ue, eO(e), "min-w-[1.75rem] justify-center px-1.5"),
25671
25676
  "data-device-key": e.deviceKey,
25672
- "data-state": ZD[i],
25677
+ "data-state": QD[i],
25673
25678
  "aria-label": o,
25674
25679
  title: s
25675
25680
  }, e.deviceKey);
25676
- let c = t !== void 0 && !n, l = W(Ue, $D(e), c && "hover:border-primary/60"), u = /* @__PURE__ */ y(b, { children: [/* @__PURE__ */ v(eO, { chip: e }), e.label] });
25681
+ let c = t !== void 0 && !n, l = W(Ue, eO(e), c && "hover:border-primary/60"), u = /* @__PURE__ */ y(b, { children: [/* @__PURE__ */ v(tO, { chip: e }), e.label] });
25677
25682
  return c ? /* @__PURE__ */ v("button", {
25678
25683
  type: "button",
25679
25684
  className: l,
25680
25685
  onClick: () => t(e),
25681
25686
  "data-device-key": e.deviceKey,
25682
- "data-state": ZD[i],
25687
+ "data-state": QD[i],
25683
25688
  "aria-label": o,
25684
25689
  title: e.configured ? r("deviceChips.titleOpenSettings", {
25685
25690
  deviceKey: e.deviceKey,
@@ -25692,7 +25697,7 @@ function tO({ chips: e, onChip: t, disabled: n = !1 }) {
25692
25697
  }, e.deviceKey) : /* @__PURE__ */ v("span", {
25693
25698
  className: l,
25694
25699
  "data-device-key": e.deviceKey,
25695
- "data-state": ZD[i],
25700
+ "data-state": QD[i],
25696
25701
  "aria-label": o,
25697
25702
  title: s,
25698
25703
  children: u
@@ -25702,7 +25707,7 @@ function tO({ chips: e, onChip: t, disabled: n = !1 }) {
25702
25707
  }
25703
25708
  //#endregion
25704
25709
  //#region src/components/installed/UsageBadge.tsx
25705
- var nO = {
25710
+ var rO = {
25706
25711
  "in-use": {
25707
25712
  key: "inUse",
25708
25713
  variant: "success"
@@ -25727,50 +25732,50 @@ var nO = {
25727
25732
  key: "unknown",
25728
25733
  variant: "default"
25729
25734
  }
25730
- }, rO = "text-[10px] px-1.5 py-0";
25731
- function iO({ usage: e }) {
25732
- let { t } = $(), n = nO[e];
25735
+ }, iO = "text-[10px] px-1.5 py-0";
25736
+ function aO({ usage: e }) {
25737
+ let { t } = $(), n = rO[e];
25733
25738
  return /* @__PURE__ */ v(Wa, {
25734
25739
  variant: n.variant,
25735
- className: rO,
25740
+ className: iO,
25736
25741
  title: t(`usage.${n.key}.title`),
25737
25742
  "data-usage": e,
25738
25743
  children: t(`usage.${n.key}.label`)
25739
25744
  });
25740
25745
  }
25741
- function aO() {
25746
+ function oO() {
25742
25747
  let { t: e } = $();
25743
25748
  return /* @__PURE__ */ v(Wa, {
25744
25749
  variant: "warning",
25745
25750
  style: "outline",
25746
- className: `${rO} border-warning/40`,
25751
+ className: `${iO} border-warning/40`,
25747
25752
  title: e("usage.stale.title"),
25748
25753
  children: e("usage.stale.label")
25749
25754
  });
25750
25755
  }
25751
- function oO({ precision: e }) {
25756
+ function sO({ precision: e }) {
25752
25757
  let { t } = $();
25753
25758
  return /* @__PURE__ */ v(Wa, {
25754
25759
  style: "outline",
25755
- className: `${rO} border-border text-foreground-subtle uppercase`,
25760
+ className: `${iO} border-border text-foreground-subtle uppercase`,
25756
25761
  title: t("usage.precisionTitle"),
25757
25762
  children: e
25758
25763
  });
25759
25764
  }
25760
25765
  //#endregion
25761
25766
  //#region src/components/installed/provider-label.ts
25762
- var sO = {
25767
+ var cO = {
25763
25768
  camstack: "CamStack",
25764
25769
  scrypted: "Scrypted",
25765
25770
  frigate: "Frigate"
25766
25771
  };
25767
- function cO(e, t) {
25768
- return e === "custom" ? t("providers.custom") : sO[e] ?? e;
25772
+ function lO(e, t) {
25773
+ return e === "custom" ? t("providers.custom") : cO[e] ?? e;
25769
25774
  }
25770
25775
  //#endregion
25771
25776
  //#region src/components/installed/InstalledFilesTable.tsx
25772
25777
  e();
25773
- function lO({ row: e, onRename: t, onError: n }) {
25778
+ function uO({ row: e, onRename: t, onError: n }) {
25774
25779
  let { t: r } = $();
25775
25780
  return /* @__PURE__ */ y("div", {
25776
25781
  className: "flex min-w-0 flex-col gap-0.5 whitespace-normal",
@@ -25779,7 +25784,7 @@ function lO({ row: e, onRename: t, onError: n }) {
25779
25784
  "data-usage": e.usage,
25780
25785
  "data-removable": e.removable ? "true" : "false",
25781
25786
  children: [
25782
- e.renameable ? /* @__PURE__ */ v(XD, {
25787
+ e.renameable ? /* @__PURE__ */ v(ZD, {
25783
25788
  name: e.name,
25784
25789
  modelId: e.modelId,
25785
25790
  onRename: t,
@@ -25800,16 +25805,16 @@ function lO({ row: e, onRename: t, onError: n }) {
25800
25805
  children: [
25801
25806
  e.stepId,
25802
25807
  " · ",
25803
- cO(e.provider, r),
25808
+ lO(e.provider, r),
25804
25809
  e.clusterScoped ? r("filesTable.clusterModel") : "",
25805
25810
  e.description ? ` · ${e.description}` : ""
25806
25811
  ]
25807
25812
  }),
25808
- /* @__PURE__ */ v(YD, { supplies: e.supplies })
25813
+ /* @__PURE__ */ v(XD, { supplies: e.supplies })
25809
25814
  ]
25810
25815
  });
25811
25816
  }
25812
- function uO({ row: e }) {
25817
+ function dO({ row: e }) {
25813
25818
  return /* @__PURE__ */ y("span", {
25814
25819
  className: "inline-flex flex-wrap items-center gap-1",
25815
25820
  children: [
@@ -25817,12 +25822,12 @@ function uO({ row: e }) {
25817
25822
  className: "font-mono text-[11px] text-foreground",
25818
25823
  children: e.format
25819
25824
  }),
25820
- e.precision !== void 0 && /* @__PURE__ */ v(oO, { precision: e.precision }),
25821
- e.onDisk === "stale" && /* @__PURE__ */ v(aO, {})
25825
+ e.precision !== void 0 && /* @__PURE__ */ v(sO, { precision: e.precision }),
25826
+ e.onDisk === "stale" && /* @__PURE__ */ v(oO, {})
25822
25827
  ]
25823
25828
  });
25824
25829
  }
25825
- function dO({ row: e, busy: t, onRemove: n }) {
25830
+ function fO({ row: e, busy: t, onRemove: n }) {
25826
25831
  let { t: r } = $();
25827
25832
  return e.removable ? /* @__PURE__ */ y("button", {
25828
25833
  type: "button",
@@ -25843,7 +25848,7 @@ function dO({ row: e, busy: t, onRemove: n }) {
25843
25848
  }), r("filesTable.remove")]
25844
25849
  }) : null;
25845
25850
  }
25846
- function fO() {
25851
+ function pO() {
25847
25852
  let [e, t] = g(/* @__PURE__ */ new Set());
25848
25853
  return {
25849
25854
  busy: e,
@@ -25857,8 +25862,8 @@ function fO() {
25857
25862
  }
25858
25863
  };
25859
25864
  }
25860
- function pO({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onError: a }) {
25861
- let { t: o } = $(), { busy: s, run: c } = fO(), l = (e, t) => {
25865
+ function mO({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onError: a }) {
25866
+ let { t: o } = $(), { busy: s, run: c } = pO(), l = (e, t) => {
25862
25867
  c(e.key, async () => {
25863
25868
  try {
25864
25869
  await t();
@@ -25874,7 +25879,7 @@ function pO({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onE
25874
25879
  header: o("filesTable.cols.model"),
25875
25880
  nowrap: !1,
25876
25881
  sortValue: (e) => e.name,
25877
- render: (e) => /* @__PURE__ */ v(lO, {
25882
+ render: (e) => /* @__PURE__ */ v(uO, {
25878
25883
  row: e,
25879
25884
  onRename: (t) => r(e, t),
25880
25885
  onError: a
@@ -25884,7 +25889,7 @@ function pO({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onE
25884
25889
  key: "format",
25885
25890
  header: o("filesTable.cols.format"),
25886
25891
  sortValue: (e) => e.format,
25887
- render: (e) => /* @__PURE__ */ v(uO, { row: e })
25892
+ render: (e) => /* @__PURE__ */ v(dO, { row: e })
25888
25893
  },
25889
25894
  {
25890
25895
  key: "size",
@@ -25901,7 +25906,7 @@ function pO({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onE
25901
25906
  header: o("filesTable.cols.devices"),
25902
25907
  nowrap: !1,
25903
25908
  notSortableReason: o("filesTable.devicesNotSortable"),
25904
- render: (e) => /* @__PURE__ */ v(tO, {
25909
+ render: (e) => /* @__PURE__ */ v(nO, {
25905
25910
  chips: e.chips,
25906
25911
  disabled: s.has(e.key),
25907
25912
  onChip: e.clusterScoped || e.origin !== "pipeline" || e.usage === "outside-pools" ? void 0 : (t) => l(e, () => i(e, t))
@@ -25911,12 +25916,12 @@ function pO({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onE
25911
25916
  key: "status",
25912
25917
  header: o("filesTable.cols.status"),
25913
25918
  sortValue: (e) => e.usage,
25914
- render: (e) => /* @__PURE__ */ v(iO, { usage: e.usage })
25919
+ render: (e) => /* @__PURE__ */ v(aO, { usage: e.usage })
25915
25920
  },
25916
25921
  {
25917
25922
  key: "actions",
25918
25923
  align: "right",
25919
- render: (e) => /* @__PURE__ */ v(dO, {
25924
+ render: (e) => /* @__PURE__ */ v(fO, {
25920
25925
  row: e,
25921
25926
  busy: s.has(e.key),
25922
25927
  onRemove: () => l(e, () => n(e))
@@ -25936,19 +25941,19 @@ function pO({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onE
25936
25941
  }
25937
25942
  //#endregion
25938
25943
  //#region src/components/installed/InstalledFilters.tsx
25939
- var mO = [
25944
+ var hO = [
25940
25945
  "camstack",
25941
25946
  "scrypted",
25942
25947
  "frigate",
25943
25948
  "custom"
25944
25949
  ];
25945
- function hO(e) {
25950
+ function gO(e) {
25946
25951
  let { t } = $(), n = [{
25947
25952
  value: "all",
25948
25953
  label: t("installedFilters.all")
25949
- }, ...mO.map((e) => ({
25954
+ }, ...hO.map((e) => ({
25950
25955
  value: e,
25951
- label: cO(e, t)
25956
+ label: lO(e, t)
25952
25957
  }))], r = [{
25953
25958
  value: "all",
25954
25959
  label: t("installedFilters.allDevices")
@@ -26015,20 +26020,20 @@ function hO(e) {
26015
26020
  //#endregion
26016
26021
  //#region src/tabs/InstalledTab.tsx
26017
26022
  e();
26018
- function gO(e) {
26023
+ function _O(e) {
26019
26024
  return e === "camstack" || e === "scrypted" || e === "frigate" || e === "custom" ? e : "all";
26020
26025
  }
26021
- function _O(e) {
26026
+ function vO(e) {
26022
26027
  return e === null || e.length === 0 || e === "all" ? "all" : e;
26023
26028
  }
26024
- var vO = _O, yO = _O;
26025
- function bO(e) {
26029
+ var yO = vO, bO = vO;
26030
+ function xO(e) {
26026
26031
  return e === null || e.length === 0 ? "hub" : e;
26027
26032
  }
26028
- function xO(e) {
26033
+ function SO(e) {
26029
26034
  return w.some((t) => t === e);
26030
26035
  }
26031
- async function SO(e, t) {
26036
+ async function CO(e, t) {
26032
26037
  let [n, r, i, a, o, s] = await Promise.all([
26033
26038
  bw(e),
26034
26039
  xw(e),
@@ -26047,15 +26052,15 @@ async function SO(e, t) {
26047
26052
  clusterModels: s
26048
26053
  };
26049
26054
  }
26050
- function CO(e, t, n) {
26055
+ function wO(e, t, n) {
26051
26056
  let [r, i] = RS(e), a = l((e) => i(e === n ? null : e), [i, n]);
26052
26057
  return [t(r), a];
26053
26058
  }
26054
- function wO({ trpc: e, refreshKey: t }) {
26055
- let { t: n } = $(), [r, a] = RS("provider"), s = gO(r), c = l((e) => a(e === "all" ? null : e), [a]), [u, d] = CO("type", vO, "all"), [f, p] = CO("device", yO, "all"), [m, h] = CO("node", bO, "hub"), _ = Xa(), [x, S] = g(null), [C, w] = g(null), [T, E] = g(0), [ee, te] = g(null), ne = l(async () => {
26059
+ function TO({ trpc: e, refreshKey: t }) {
26060
+ let { t: n } = $(), [r, a] = RS("provider"), s = _O(r), c = l((e) => a(e === "all" ? null : e), [a]), [u, d] = wO("type", yO, "all"), [f, p] = wO("device", bO, "all"), [m, h] = wO("node", xO, "hub"), _ = Xa(), [x, S] = g(null), [C, w] = g(null), [T, E] = g(0), [ee, te] = g(null), ne = l(async () => {
26056
26061
  w(null);
26057
26062
  try {
26058
- S(await SO(e, m));
26063
+ S(await CO(e, m));
26059
26064
  } catch (e) {
26060
26065
  w(e instanceof Error ? e.message : n("installed.loadFailed"));
26061
26066
  }
@@ -26069,7 +26074,7 @@ function wO({ trpc: e, refreshKey: t }) {
26069
26074
  }, [ne, t]);
26070
26075
  let D = l(async () => {
26071
26076
  await ne(), E((e) => e + 1);
26072
- }, [ne]), O = o(() => x === null ? [] : ND({
26077
+ }, [ne]), O = o(() => x === null ? [] : PD({
26073
26078
  nodeId: m,
26074
26079
  seeds: x.seeds,
26075
26080
  stepCatalogs: x.stepCatalogs,
@@ -26078,7 +26083,7 @@ function wO({ trpc: e, refreshKey: t }) {
26078
26083
  clusterModels: x.clusterModels,
26079
26084
  registry: x.models,
26080
26085
  availability: x.availability
26081
- }), [x, m]), k = x?.devices ?? [], re = o(() => PD(O, k, {
26086
+ }), [x, m]), k = x?.devices ?? [], re = o(() => FD(O, k, {
26082
26087
  provider: s,
26083
26088
  step: u,
26084
26089
  device: f
@@ -26092,7 +26097,7 @@ function wO({ trpc: e, refreshKey: t }) {
26092
26097
  let e = new Set(O.map((e) => e.stepId));
26093
26098
  return u !== "all" && e.add(u), [...e].toSorted((e, t) => e.localeCompare(t));
26094
26099
  }, [O, u]), j = l(async (t) => {
26095
- if (!t.removable || !xO(t.format)) return;
26100
+ if (!t.removable || !SO(t.format)) return;
26096
26101
  let n = {
26097
26102
  modelId: t.modelId,
26098
26103
  format: t.format,
@@ -26103,7 +26108,7 @@ function wO({ trpc: e, refreshKey: t }) {
26103
26108
  addonId: t.stepId
26104
26109
  });
26105
26110
  }, [m, e]), M = l(async (e) => {
26106
- !e.removable || !xO(e.format) || await _({
26111
+ !e.removable || !SO(e.format) || await _({
26107
26112
  title: n("installed.deleteFile.title"),
26108
26113
  message: n("installed.deleteFile.message", {
26109
26114
  format: e.format,
@@ -26172,7 +26177,7 @@ function wO({ trpc: e, refreshKey: t }) {
26172
26177
  variant: "default"
26173
26178
  }) && (await Xw(e, {
26174
26179
  agentNodeId: m,
26175
- inferenceDevices: yD(k, t.stepId, t.modelId, [r.deviceKey])
26180
+ inferenceDevices: bD(k, t.stepId, t.modelId, [r.deviceKey])
26176
26181
  }), await D());
26177
26182
  }, [
26178
26183
  _,
@@ -26190,14 +26195,14 @@ function wO({ trpc: e, refreshKey: t }) {
26190
26195
  className: "rounded-md border border-danger/30 bg-danger/10 px-3 py-2 text-xs text-danger",
26191
26196
  children: C
26192
26197
  }),
26193
- /* @__PURE__ */ v(hO, {
26198
+ /* @__PURE__ */ v(gO, {
26194
26199
  provider: s,
26195
26200
  onProvider: c,
26196
26201
  step: u,
26197
26202
  stepOptions: A,
26198
26203
  onStep: d,
26199
26204
  device: f,
26200
- deviceOptions: SD(k),
26205
+ deviceOptions: CD(k),
26201
26206
  onDevice: p,
26202
26207
  nodeId: m,
26203
26208
  onNode: h
@@ -26222,7 +26227,7 @@ function wO({ trpc: e, refreshKey: t }) {
26222
26227
  n("installed.summary.onDisk", { size: lw(P) }),
26223
26228
  " ·",
26224
26229
  " ",
26225
- n("installed.summary.reclaimable", { size: lw(FD(O)) }),
26230
+ n("installed.summary.reclaimable", { size: lw(ID(O)) }),
26226
26231
  x?.engines === null ? ` · ${n("installed.summary.loadedUnavailable")}` : ""
26227
26232
  ]
26228
26233
  }), ie.length > 0 && /* @__PURE__ */ v("button", {
@@ -26233,7 +26238,7 @@ function wO({ trpc: e, refreshKey: t }) {
26233
26238
  children: n("installed.removeUnused", { count: ie.length })
26234
26239
  })]
26235
26240
  }),
26236
- /* @__PURE__ */ v(pO, {
26241
+ /* @__PURE__ */ v(mO, {
26237
26242
  rows: re,
26238
26243
  emptyMessage: O.length === 0 ? n("installed.emptyNode", { nodeId: m }) : n("installed.emptyFiltered"),
26239
26244
  onRemove: M,
@@ -26241,7 +26246,7 @@ function wO({ trpc: e, refreshKey: t }) {
26241
26246
  onChip: oe,
26242
26247
  onError: w
26243
26248
  }),
26244
- /* @__PURE__ */ v(qD, {
26249
+ /* @__PURE__ */ v(JD, {
26245
26250
  trpc: e,
26246
26251
  refreshKey: t + T,
26247
26252
  clusterModels: x?.clusterModels ?? null,
@@ -26249,7 +26254,7 @@ function wO({ trpc: e, refreshKey: t }) {
26249
26254
  onError: w
26250
26255
  })
26251
26256
  ] }),
26252
- ee && /* @__PURE__ */ v(RD, {
26257
+ ee && /* @__PURE__ */ v(zD, {
26253
26258
  trpc: e,
26254
26259
  nodeId: m,
26255
26260
  stepId: ee.row.stepId,
@@ -26265,13 +26270,13 @@ function wO({ trpc: e, refreshKey: t }) {
26265
26270
  }
26266
26271
  //#endregion
26267
26272
  //#region src/tabs/LogsTab.tsx
26268
- var TO = "model-studio";
26269
- function EO() {
26273
+ var EO = "model-studio";
26274
+ function DO() {
26270
26275
  return /* @__PURE__ */ v("div", {
26271
26276
  className: "space-y-3",
26272
26277
  "data-testid": "logs-tab",
26273
26278
  children: /* @__PURE__ */ v(Vl, {
26274
- addonId: TO,
26279
+ addonId: EO,
26275
26280
  limit: 200,
26276
26281
  maxHeight: "max-h-[70vh]",
26277
26282
  showFilters: !0,
@@ -26282,23 +26287,23 @@ function EO() {
26282
26287
  //#endregion
26283
26288
  //#region src/page.tsx
26284
26289
  e();
26285
- var DO = [
26290
+ var OO = [
26286
26291
  { id: "catalog" },
26287
26292
  { id: "installed" },
26288
26293
  { id: "import" },
26289
26294
  { id: "logs" }
26290
26295
  ];
26291
- function OO(e) {
26296
+ function kO(e) {
26292
26297
  return e === "library" ? "installed" : e === "convert" || e === "settings" ? "catalog" : e === "import" || e === "catalog" || e === "installed" || e === "logs" ? e : "catalog";
26293
26298
  }
26294
- function kO(e) {
26299
+ function AO(e) {
26295
26300
  return `model-studio-tab-${e}`;
26296
26301
  }
26297
- function AO(e) {
26302
+ function jO(e) {
26298
26303
  return `model-studio-panel-${e}`;
26299
26304
  }
26300
- function jO({ trpc: e }) {
26301
- let { t: n } = $(), [r, a] = RS("tab"), [o, s] = RS("source"), c = OO(r), u = GE(o), [d, f] = g(0), [p, m] = g(null), h = t(!1), _ = l(() => f((e) => e + 1), []), b = l((e, t = !1) => {
26305
+ function MO({ trpc: e }) {
26306
+ let { t: n } = $(), [r, a] = RS("tab"), [o, s] = RS("source"), c = kO(r), u = GE(o), [d, f] = g(0), [p, m] = g(null), h = t(!1), _ = l(() => f((e) => e + 1), []), b = l((e, t = !1) => {
26302
26307
  a(e === "catalog" ? null : e), e !== "catalog" && o !== null && (e === "import" || e === "logs" || e === "installed") && s(null), t && (h.current = !0);
26303
26308
  }, [
26304
26309
  a,
@@ -26308,7 +26313,7 @@ function jO({ trpc: e }) {
26308
26313
  s(e === "camstack" ? null : e);
26309
26314
  }, [s]);
26310
26315
  i(() => {
26311
- h.current && (h.current = !1, document.getElementById(kO(c))?.focus());
26316
+ h.current && (h.current = !1, document.getElementById(AO(c))?.focus());
26312
26317
  }, [c]), i(() => {
26313
26318
  r === "convert" && a(null), r === "library" && a("installed"), r === "settings" && (a(null), s("frigate")), c !== "catalog" && o !== null && s(null), c === "catalog" && o === "custom" && (a("import"), s(null));
26314
26319
  }, [
@@ -26319,7 +26324,7 @@ function jO({ trpc: e }) {
26319
26324
  s
26320
26325
  ]);
26321
26326
  let S = l((e) => {
26322
- let t = DO.map((e) => e.id), n = t.indexOf(c);
26327
+ let t = OO.map((e) => e.id), n = t.indexOf(c);
26323
26328
  if (n < 0) return;
26324
26329
  let r;
26325
26330
  e.key === "ArrowRight" ? r = t[(n + 1) % t.length] : e.key === "ArrowLeft" ? r = t[(n - 1 + t.length) % t.length] : e.key === "Home" ? r = t[0] : e.key === "End" && (r = t[t.length - 1]), r !== void 0 && (e.preventDefault(), b(r, !0));
@@ -26335,18 +26340,18 @@ function jO({ trpc: e }) {
26335
26340
  children: /* @__PURE__ */ v(zs, {
26336
26341
  "aria-label": n("page.sections"),
26337
26342
  onKeyDown: S,
26338
- children: DO.map((e) => /* @__PURE__ */ v(Bs, {
26339
- id: kO(e.id),
26343
+ children: OO.map((e) => /* @__PURE__ */ v(Bs, {
26344
+ id: AO(e.id),
26340
26345
  value: e.id,
26341
- "aria-controls": AO(e.id),
26346
+ "aria-controls": jO(e.id),
26342
26347
  children: n(`page.tabs.${e.id}`)
26343
26348
  }, e.id))
26344
26349
  })
26345
26350
  }), /* @__PURE__ */ y("div", {
26346
26351
  className: "min-h-[400px]",
26347
26352
  role: "tabpanel",
26348
- id: AO(c),
26349
- "aria-labelledby": kO(c),
26353
+ id: jO(c),
26354
+ "aria-labelledby": AO(c),
26350
26355
  children: [
26351
26356
  c === "catalog" && /* @__PURE__ */ v(QE, {
26352
26357
  trpc: e,
@@ -26358,20 +26363,20 @@ function jO({ trpc: e }) {
26358
26363
  m(e), b("import");
26359
26364
  }
26360
26365
  }),
26361
- c === "installed" && /* @__PURE__ */ v(wO, {
26366
+ c === "installed" && /* @__PURE__ */ v(TO, {
26362
26367
  trpc: e,
26363
26368
  refreshKey: d
26364
26369
  }),
26365
- c === "import" && /* @__PURE__ */ v(hD, {
26370
+ c === "import" && /* @__PURE__ */ v(gD, {
26366
26371
  trpc: e,
26367
26372
  onRegistered: _,
26368
26373
  initialPrefill: p,
26369
26374
  onPrefillConsumed: () => m(null)
26370
26375
  }),
26371
- c === "logs" && /* @__PURE__ */ v(EO, {})
26376
+ c === "logs" && /* @__PURE__ */ v(DO, {})
26372
26377
  ]
26373
26378
  })]
26374
26379
  }) });
26375
26380
  }
26376
26381
  //#endregion
26377
- export { jO as default };
26382
+ export { MO as default };
@@ -1,9 +1,9 @@
1
- import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-NnlrcOyX.mjs";
1
+ import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-Enoo1rWt.mjs";
2
2
  //#region \0virtual:mf-localSharedImportMap:__mfe_internal__addon_model_studio_page
3
3
  var e = {
4
4
  "@camstack/sdk": {
5
5
  name: "@camstack/sdk",
6
- version: "1.2.141",
6
+ version: "1.2.143",
7
7
  scope: ["default"],
8
8
  loaded: !1,
9
9
  from: "addon_model_studio_page",
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.391",
21
+ version: "1.2.393",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_model_studio_page",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.308",
36
+ version: "1.2.310",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_model_studio_page",
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.391",
39
+ version: "1.2.393",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -45,7 +45,7 @@ async function r() {
45
45
  }
46
46
  },
47
47
  "@camstack/sdk": {
48
- version: "1.2.141",
48
+ version: "1.2.143",
49
49
  scope: "default",
50
50
  shareConfig: {
51
51
  singleton: !0,
@@ -81,7 +81,7 @@ async function r() {
81
81
  }
82
82
  },
83
83
  "@camstack/ui-library": {
84
- version: "1.2.308",
84
+ version: "1.2.310",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-NnlrcOyX.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-Enoo1rWt.mjs";
2
2
  export { t as get, e as init };
@@ -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-b-GMdHnG.mjs")).catch((e) => {
2756
+ return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-Z-Bh8ofN.mjs")).catch((e) => {
2757
2757
  throw tr = void 0, e;
2758
2758
  }), tr;
2759
2759
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-model-studio",
3
- "version": "1.1.278",
3
+ "version": "1.1.280",
4
4
  "description": "Custom detection model registry, conversion & distribution for CamStack",
5
5
  "keywords": [
6
6
  "camstack",