@camstack/addon-model-studio 1.1.242 → 1.1.244

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.
Files changed (17) hide show
  1. package/dist/{MotionZonesSettings-D034u7f9.mjs → MotionZonesSettings-BkVlgycN.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-Bh8sccz7.mjs → PrivacyMaskSettings-CT9d5n8e.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-KRSGEVkl.mjs → SceneMonitorEditor-DvJ8k53L.mjs} +3 -3
  4. package/dist/_stub.js +740 -722
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-IOUd1yR1.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-CTzEtpIl.mjs} +3 -3
  6. package/dist/{_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D8NJZxhF.mjs → _virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DM0uZDii.mjs} +1 -1
  7. package/dist/{hostInit-Bvp2b-Ci.mjs → hostInit-Dcpjwa8i.mjs} +2 -2
  8. package/dist/model-studio.addon.js +52 -6
  9. package/dist/model-studio.addon.mjs +52 -6
  10. package/dist/{player-overlays-C9fpIK6c.mjs → player-overlays-UQMduZo5.mjs} +1 -1
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-DI5osE9O.mjs → responsive-DNANOWhM.mjs} +1 -1
  13. package/dist/{scene-monitor-copy-SE_x3tUF.mjs → scene-monitor-copy-DFNO_ypD.mjs} +1 -1
  14. package/dist/{square-DgdMdq1t.mjs → square-B30_H0mO.mjs} +1 -1
  15. package/dist/{trash-2-Br_xhFdH.mjs → trash-2-DwJjdFP6.mjs} +1 -1
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-hd8Mcqu1.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-ZUI7agam.mjs} +1 -1
  17. package/package.json +1 -1
package/dist/_stub.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import "./virtualExposes-CWSi4E_g.mjs";
2
- import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-hd8Mcqu1.mjs";
2
+ import "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-ZUI7agam.mjs";
3
3
  import { _ as e, b as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, n as u, p as d, r as f, t as p, u as m, v as h } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-CHL8loOl.mjs";
4
- import { _ as g, a as _, b as v, c as y, d as b, f as x, g as S, i as C, l as w, m as T, o as E, p as D, r as O, s as k, t as ee, u as A, v as te, y as j } from "./responsive-DI5osE9O.mjs";
5
- import { d as ne, l as re, u as M } from "./scene-monitor-copy-SE_x3tUF.mjs";
6
- import { i as ie, r as ae } from "./player-overlays-C9fpIK6c.mjs";
7
- import { r as oe, t as se } from "./square-DgdMdq1t.mjs";
8
- import { t as N } from "./trash-2-Br_xhFdH.mjs";
9
- import { $ as P, A as ce, B as le, C as F, D as ue, E as de, F as fe, G as pe, H as me, I as he, J as I, K as ge, L as _e, M as ve, N as ye, O as be, P as xe, R as Se, S as Ce, T as we, U as Te, V as Ee, W as De, X as Oe, Y as L, Z as R, _ as ke, a as Ae, b as je, c as Me, d as Ne, et as Pe, f as Fe, h as Ie, i as Le, j as Re, k as ze, l as Be, m as Ve, n as He, nt as Ue, o as We, p as Ge, q as Ke, r as qe, s as Je, t as Ye, tt as Xe, u as Ze, v as Qe, w as $e, x as et, y as tt, z as nt } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D8NJZxhF.mjs";
4
+ import { _ as g, a as _, b as v, c as y, d as b, f as x, g as S, i as C, l as w, m as T, o as E, p as D, r as O, s as k, t as ee, u as A, v as te, y as j } from "./responsive-DNANOWhM.mjs";
5
+ import { d as ne, l as re, u as M } from "./scene-monitor-copy-DFNO_ypD.mjs";
6
+ import { i as ie, r as ae } from "./player-overlays-UQMduZo5.mjs";
7
+ import { r as oe, t as se } from "./square-B30_H0mO.mjs";
8
+ import { t as N } from "./trash-2-DwJjdFP6.mjs";
9
+ import { $ as P, A as ce, B as le, C as F, D as ue, E as de, F as fe, G as pe, H as me, I as he, J as I, K as ge, L as _e, M as ve, N as ye, O as be, P as xe, R as Se, S as Ce, T as we, U as Te, V as Ee, W as De, X as Oe, Y as L, Z as R, _ as ke, a as Ae, b as je, c as Me, d as Ne, et as Pe, f as Fe, h as Ie, i as Le, j as Re, k as ze, l as Be, m as Ve, n as He, nt as Ue, o as We, p as Ge, q as Ke, r as qe, s as Je, t as Ye, tt as Xe, u as Ze, v as Qe, w as $e, x as et, y as tt, z as nt } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DM0uZDii.mjs";
10
10
  import { t as rt } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_trpc_mf_1_react_mf_2_query__loadShare__.js-BvzT760A.mjs";
11
11
  import { n as z, r as B, t as it } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
12
12
  import "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_2_dom__loadShare__.js-C8Ar0nzL.mjs";
@@ -4969,7 +4969,7 @@ function ro({ className: e, ...t }) {
4969
4969
  }
4970
4970
  //#endregion
4971
4971
  //#region ../../node_modules/qrcode.react/lib/esm/index.js
4972
- t(), t(), t(), t(), t(), t(), t(), s(() => import("./MotionZonesSettings-D034u7f9.mjs").then((e) => ({ default: e.MotionZonesSettings }))), s(() => import("./PrivacyMaskSettings-Bh8sccz7.mjs").then((e) => ({ default: e.PrivacyMaskSettings }))), t(), t();
4972
+ t(), t(), t(), t(), t(), t(), t(), s(() => import("./MotionZonesSettings-BkVlgycN.mjs").then((e) => ({ default: e.MotionZonesSettings }))), s(() => import("./PrivacyMaskSettings-CT9d5n8e.mjs").then((e) => ({ default: e.PrivacyMaskSettings }))), t(), t();
4973
4973
  var io = Object.defineProperty, ao = Object.getOwnPropertySymbols, oo = Object.prototype.hasOwnProperty, so = Object.prototype.propertyIsEnumerable, co = (e, t, n) => t in e ? io(e, t, {
4974
4974
  enumerable: !0,
4975
4975
  configurable: !0,
@@ -19104,28 +19104,46 @@ function Qx({ start: e, end: t, className: n, testId: r }) {
19104
19104
  //#endregion
19105
19105
  //#region ../ui-library/src/hooks/use-url-query.ts
19106
19106
  t();
19107
- function $x(e) {
19107
+ var $x = "camstack:url-query";
19108
+ function eS(e) {
19108
19109
  return new URLSearchParams(window.location.search).get(e);
19109
19110
  }
19110
- function eS(e, t) {
19111
+ function tS() {
19112
+ window.dispatchEvent(new Event($x));
19113
+ }
19114
+ function nS(e, t) {
19111
19115
  let n = new URLSearchParams(window.location.search);
19112
19116
  t === null || t === "" ? n.delete(e) : n.set(e, t);
19113
19117
  let r = n.toString(), i = r ? `${window.location.pathname}?${r}` : window.location.pathname;
19114
19118
  window.history.replaceState(null, "", i);
19115
19119
  }
19116
- function tS(e) {
19117
- let [t, r] = a(() => $x(e));
19120
+ var rS = !1;
19121
+ function iS() {
19122
+ if (rS || typeof window > "u") return;
19123
+ rS = !0;
19124
+ let e = window.history.replaceState.bind(window.history), t = window.history.pushState.bind(window.history);
19125
+ window.history.replaceState = (...t) => {
19126
+ e(...t), tS();
19127
+ }, window.history.pushState = (...e) => {
19128
+ t(...e), tS();
19129
+ };
19130
+ }
19131
+ function aS(e) {
19132
+ iS();
19133
+ let [t, r] = a(() => eS(e));
19118
19134
  return m(() => {
19119
- let t = () => r($x(e));
19120
- return window.addEventListener("popstate", t), () => window.removeEventListener("popstate", t);
19135
+ let t = () => r(eS(e));
19136
+ return window.addEventListener("popstate", t), window.addEventListener($x, t), () => {
19137
+ window.removeEventListener("popstate", t), window.removeEventListener($x, t);
19138
+ };
19121
19139
  }, [e]), [t, n((t) => {
19122
- eS(e, t), r(t);
19140
+ nS(e, t), r(t);
19123
19141
  }, [e])];
19124
19142
  }
19125
19143
  //#endregion
19126
19144
  //#region ../ui-library/src/composites/step-inspector/step-inspector-panel.tsx
19127
19145
  t(), t(), t(), G(C, "min-w-0 max-w-full gap-1.5 py-1 pl-1 pr-2.5 text-xs font-normal", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40"), G(O, "font-medium"), t(), t(), t(), t(), t();
19128
- function nS({ dirtyCount: e, saving: t, status: n, error: r, onSave: i, onDiscard: a, scope: o }) {
19146
+ function oS({ dirtyCount: e, saving: t, status: n, error: r, onSave: i, onDiscard: a, scope: o }) {
19129
19147
  let s = e > 0, c = t ? "Saving…" : s ? `${e} unsaved change${e === 1 ? "" : "s"}` : n === "saved" ? "Saved" : n === "error" ? r ?? "Save failed" : "No unsaved changes";
19130
19148
  return /* @__PURE__ */ B("footer", {
19131
19149
  className: "shrink-0 space-y-2 border-t border-border bg-surface px-4 py-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] md:pb-2",
@@ -19196,13 +19214,13 @@ f(function({ title: e, subtitle: t, headerActions: n, headerExtra: i, leading: a
19196
19214
  className: "min-h-0 flex-1 overflow-y-auto overscroll-contain px-4 py-3",
19197
19215
  children: c
19198
19216
  }),
19199
- o !== void 0 && /* @__PURE__ */ z(nS, { ...o })
19217
+ o !== void 0 && /* @__PURE__ */ z(oS, { ...o })
19200
19218
  ]
19201
19219
  });
19202
- }), t(), t(), t(), t(), t(), t(), t(), t(), j("camstack:zone-editing", null), t(), t(), t(), t(), t(), s(() => import("./MaskShapeCanvas-DBaZffFb.mjs").then((e) => ({ default: e.MaskShapeCanvas }))), s(() => import("./MotionZonesSettings-D034u7f9.mjs").then((e) => ({ default: e.MotionZonesSettings }))), s(() => import("./SceneMonitorEditor-KRSGEVkl.mjs").then((e) => ({ default: e.SceneMonitorEditor }))), s(() => import("./PrivacyMaskSettings-Bh8sccz7.mjs").then((e) => ({ default: e.PrivacyMaskSettings })));
19220
+ }), t(), t(), t(), t(), t(), t(), t(), t(), j("camstack:zone-editing", null), t(), t(), t(), t(), t(), s(() => import("./MaskShapeCanvas-DBaZffFb.mjs").then((e) => ({ default: e.MaskShapeCanvas }))), s(() => import("./MotionZonesSettings-BkVlgycN.mjs").then((e) => ({ default: e.MotionZonesSettings }))), s(() => import("./SceneMonitorEditor-DvJ8k53L.mjs").then((e) => ({ default: e.SceneMonitorEditor }))), s(() => import("./PrivacyMaskSettings-CT9d5n8e.mjs").then((e) => ({ default: e.PrivacyMaskSettings })));
19203
19221
  //#endregion
19204
19222
  //#region src/scrypted/scrypted-yolo-manifest-data.json
19205
- var rS = /*#__PURE__*/ JSON.parse("[{\"id\":\"scrypted-yolov9t-relu-coreml\",\"label\":\"Scrypted YOLOv9T ReLU CoreML\",\"family\":\"yolov9t\",\"variant\":\"relu\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9t_relu/scrypted_yolov9t_relu.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"0a8733949d77e3204dba6418e81a11a8cc177015711457ce2c171266f23382d6\"},{\"relativePath\":\"coreml/scrypted_yolov9t_relu/scrypted_yolov9t_relu.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":322229,\"sha256\":\"f5a62f196f1e72a84efa1637119dffb6501621af9cf6f867bc76b4b59c9242a0\"},{\"relativePath\":\"coreml/scrypted_yolov9t_relu/scrypted_yolov9t_relu.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":3797160,\"sha256\":\"b994419b8b68cfd6b89c3c6f3fe6b37458c86cc1d87fcca3df5034476a99dd38\"}],\"sizeMB\":4.12},{\"id\":\"scrypted-yolov9t-relu-onnx\",\"label\":\"Scrypted YOLOv9T ReLU ONNX\",\"family\":\"yolov9t\",\"variant\":\"relu\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9t_relu/scrypted_yolov9t_relu.onnx\",\"size\":8499266,\"sha256\":\"3f11ea2071b27c285b58c16636a44d6a0a27bdd1ca8b64112dfadabd39cfea47\"}],\"sizeMB\":8.5},{\"id\":\"scrypted-yolov9t-relu-test-coreml\",\"label\":\"Scrypted YOLOv9T ReLU test CoreML\",\"family\":\"yolov9t\",\"variant\":\"relu_test\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9t_relu_test/scrypted_yolov9t_relu_test.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"a5e0128b643f1a66f3e07d4b332f9ccbca97ccab75651c794f0b9f1fb41c8491\"},{\"relativePath\":\"coreml/scrypted_yolov9t_relu_test/scrypted_yolov9t_relu_test.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":322229,\"sha256\":\"79f4f647f2a0c79db3b560c84251b48c7ba7cbe9c1fecc9674d1a603a389dfa3\"},{\"relativePath\":\"coreml/scrypted_yolov9t_relu_test/scrypted_yolov9t_relu_test.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":3797160,\"sha256\":\"72efc9dc6af9241b5e5ee7de24a4f55741f6425d0e279d797f0f223e3d355f84\"}],\"sizeMB\":4.12},{\"id\":\"scrypted-yolov9t-relu-test-onnx\",\"label\":\"Scrypted YOLOv9T ReLU test ONNX\",\"family\":\"yolov9t\",\"variant\":\"relu_test\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9t_relu_test/scrypted_yolov9t_relu_test.onnx\",\"size\":8499266,\"sha256\":\"d20aa0e6923a3af7f5e84e3a6d28fb00e8ecd592e3225f986f93bd34b634e2f8\"}],\"sizeMB\":8.5},{\"id\":\"scrypted-yolov9s-relu-coreml\",\"label\":\"Scrypted YOLOv9S ReLU CoreML\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9s_relu/scrypted_yolov9s_relu.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"3bcdb820b82f1e89266f2d11bae1604d3ee4ca6d11dc5bd5c57055ff4157e9f3\"},{\"relativePath\":\"coreml/scrypted_yolov9s_relu/scrypted_yolov9s_relu.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":322664,\"sha256\":\"9a9c3c9cbca406ec2f0418ec867ed6b878ec6d02c16636d30e0bbd83d2ff7c40\"},{\"relativePath\":\"coreml/scrypted_yolov9s_relu/scrypted_yolov9s_relu.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":14190120,\"sha256\":\"fd51eda58a993997268f6a2e424b536ba173207ad7974ab8bee2a8ff76d52dab\"}],\"sizeMB\":14.51},{\"id\":\"scrypted-yolov9s-relu-onnx\",\"label\":\"Scrypted YOLOv9S ReLU ONNX\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9s_relu/scrypted_yolov9s_relu.onnx\",\"size\":29287339,\"sha256\":\"ca0b5bd98d5f59eb2029c6cb5129d53af59873f62a317a028beda463bbb96399\"}],\"sizeMB\":29.29},{\"id\":\"scrypted-yolov9s-relu-test-coreml\",\"label\":\"Scrypted YOLOv9S ReLU test CoreML\",\"family\":\"yolov9s\",\"variant\":\"relu_test\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9s_relu_test/scrypted_yolov9s_relu_test.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"e2d24de0ce7e8573f19572029765e55abc714f36a85175ad7fcb95c001a76653\"},{\"relativePath\":\"coreml/scrypted_yolov9s_relu_test/scrypted_yolov9s_relu_test.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":322664,\"sha256\":\"186b147cdfd15c5ed7a381ec3a426a22cee0b5c52d56f14efd26da06357f5cb0\"},{\"relativePath\":\"coreml/scrypted_yolov9s_relu_test/scrypted_yolov9s_relu_test.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":14190120,\"sha256\":\"e50651924c2cbffd56008a8953569e66c3de69f21807fcf7d825390ce30f21f8\"}],\"sizeMB\":14.51},{\"id\":\"scrypted-yolov9s-relu-test-onnx\",\"label\":\"Scrypted YOLOv9S ReLU test ONNX\",\"family\":\"yolov9s\",\"variant\":\"relu_test\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9s_relu_test/scrypted_yolov9s_relu_test.onnx\",\"size\":29287339,\"sha256\":\"115ddb83333762a0f2599421335678696454a5c3571ade5df9bac8e9cb5fb4cf\"}],\"sizeMB\":29.29},{\"id\":\"scrypted-yolov9m-relu-coreml\",\"label\":\"Scrypted YOLOv9M ReLU CoreML\",\"family\":\"yolov9m\",\"variant\":\"relu\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9m_relu/scrypted_yolov9m_relu.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"c548c6e1ff768b2b01bd71e230aa712a1635ae2baa30e0369557a42fc531ecbf\"},{\"relativePath\":\"coreml/scrypted_yolov9m_relu/scrypted_yolov9m_relu.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":247061,\"sha256\":\"1c40e02fc2a2559cb906ea6cd9da9c730d4a78f5019290cbb38d2fcaae379fe7\"},{\"relativePath\":\"coreml/scrypted_yolov9m_relu/scrypted_yolov9m_relu.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":39880616,\"sha256\":\"4cf938e5bfcc3ee1644813e4eb4702a7de450cc0581df94c719cf43d0ed2e408\"}],\"sizeMB\":40.13},{\"id\":\"scrypted-yolov9m-relu-onnx\",\"label\":\"Scrypted YOLOv9M ReLU ONNX\",\"family\":\"yolov9m\",\"variant\":\"relu\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9m_relu/scrypted_yolov9m_relu.onnx\",\"size\":80380404,\"sha256\":\"e7a81fb33224a0105d2a0a594c3fa43c398c361de623f1d14156ae826e7312d5\"}],\"sizeMB\":80.38},{\"id\":\"scrypted-yolov9m-relu-test-coreml\",\"label\":\"Scrypted YOLOv9M ReLU test CoreML\",\"family\":\"yolov9m\",\"variant\":\"relu_test\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9m_relu_test/scrypted_yolov9m_relu_test.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"8e2684b286d02b4bdf9db1027c84cb89bf8e4830cfb58269f3ec457c5a010650\"},{\"relativePath\":\"coreml/scrypted_yolov9m_relu_test/scrypted_yolov9m_relu_test.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":247061,\"sha256\":\"53d5946e74b13b15c5f8616081c9f15e8a95a5df3d5b45b830fc5a7f49561c16\"},{\"relativePath\":\"coreml/scrypted_yolov9m_relu_test/scrypted_yolov9m_relu_test.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":39880616,\"sha256\":\"69774bf0032c37707601b8cdc1e1820dbd9f8288eb5d6f3879618a5d34ff5199\"}],\"sizeMB\":40.13},{\"id\":\"scrypted-yolov9m-relu-test-onnx\",\"label\":\"Scrypted YOLOv9M ReLU test ONNX\",\"family\":\"yolov9m\",\"variant\":\"relu_test\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9m_relu_test/scrypted_yolov9m_relu_test.onnx\",\"size\":80380404,\"sha256\":\"8bb054f099295909ec518e2a6598d63db24d3f90edc8105a0f016903f2a205a2\"}],\"sizeMB\":80.38},{\"id\":\"scrypted-yolov9c-relu-coreml\",\"label\":\"Scrypted YOLOv9C ReLU CoreML\",\"family\":\"yolov9c\",\"variant\":\"relu\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9c_relu/scrypted_yolov9c_relu.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"813a306ebd69cabfd31f00434f5a961feeca7d237833f3e11805dcf4ad120ba9\"},{\"relativePath\":\"coreml/scrypted_yolov9c_relu/scrypted_yolov9c_relu.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":263210,\"sha256\":\"862f082619075e470738306b0ff0a37ae70a7d08e684ca6a6dfa1971d404e0c3\"},{\"relativePath\":\"coreml/scrypted_yolov9c_relu/scrypted_yolov9c_relu.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":50489960,\"sha256\":\"ed89747e58943758e2a87221d1d404f6a4466cbc039c3c6f96e327cadc403d27\"}],\"sizeMB\":50.75},{\"id\":\"scrypted-yolov9c-relu-onnx\",\"label\":\"Scrypted YOLOv9C ReLU ONNX\",\"family\":\"yolov9c\",\"variant\":\"relu\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9c_relu/scrypted_yolov9c_relu.onnx\",\"size\":101631962,\"sha256\":\"b9372c4428daf4cd944c114b1e80d1a9ff0487d743e53a77216a051cfbef7116\"}],\"sizeMB\":101.63},{\"id\":\"scrypted-yolov9c-relu-test-coreml\",\"label\":\"Scrypted YOLOv9C ReLU test CoreML\",\"family\":\"yolov9c\",\"variant\":\"relu_test\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9c_relu_test/scrypted_yolov9c_relu_test.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"966ef82a93cb0ccf1036a8c9729c065fd372fa9590a97d0945e581cc674f7ad2\"},{\"relativePath\":\"coreml/scrypted_yolov9c_relu_test/scrypted_yolov9c_relu_test.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":263210,\"sha256\":\"08718ecd3e9552d21a702bd8df60911cad0eec7b2ae382466809550f14634711\"},{\"relativePath\":\"coreml/scrypted_yolov9c_relu_test/scrypted_yolov9c_relu_test.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":50489960,\"sha256\":\"fe5936b9430ab4c87f30b148220131d6ec998b2377223d033e2fa2a00e60aada\"}],\"sizeMB\":50.75},{\"id\":\"scrypted-yolov9c-relu-test-onnx\",\"label\":\"Scrypted YOLOv9C ReLU test ONNX\",\"family\":\"yolov9c\",\"variant\":\"relu_test\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9c_relu_test/scrypted_yolov9c_relu_test.onnx\",\"size\":101631962,\"sha256\":\"2f4e2031e8efb4cbc871594338b2e875d78ab4af3ee0258d253273b1aac84742\"}],\"sizeMB\":101.63},{\"id\":\"scrypted-yolov9t-relu-openvino-fp32\",\"label\":\"Scrypted YOLOv9T ReLU OpenVINO FP32\",\"family\":\"yolov9t\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9t_relu/best-converted.xml\",\"size\":628222,\"sha256\":\"01b5a9d02a0f281e1aaf4860e1b0ed3a7f16b9d78975be8ff985ae0ee283d877\"},{\"relativePath\":\"openvino/scrypted_yolov9t_relu/best-converted.bin\",\"size\":7542204,\"sha256\":\"4fe9ce8dbdf94514fdd450cbfc907f257153e4898a0c1489a44e4912d8e32cc7\"}],\"sizeMB\":8.17},{\"id\":\"scrypted-yolov9s-relu-openvino-fp32\",\"label\":\"Scrypted YOLOv9S ReLU OpenVINO FP32\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9s_relu/best-converted.xml\",\"size\":629249,\"sha256\":\"5b4a229bf7229425698b63bd065a403e440a6151a6ddff0034867659cc4a480d\"},{\"relativePath\":\"openvino/scrypted_yolov9s_relu/best-converted.bin\",\"size\":28329724,\"sha256\":\"c030bd219208ea94082578c81f383d4ef9ec45d7150eec1c2c2ff2569cf49b35\"}],\"sizeMB\":28.96},{\"id\":\"scrypted-yolov9m-relu-openvino-fp32\",\"label\":\"Scrypted YOLOv9M ReLU OpenVINO FP32\",\"family\":\"yolov9m\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9m_relu/best-converted.xml\",\"size\":485439,\"sha256\":\"c66f9f1965bf70fd3635d4dfc3cb94c72c06b344c256713237d77706725b9a0c\"},{\"relativePath\":\"openvino/scrypted_yolov9m_relu/best-converted.bin\",\"size\":79717372,\"sha256\":\"dfc2d8952bbca9ad0e116168e3fd5c754e601c327d78c4f4d0d4cae12f0e1d2a\"}],\"sizeMB\":80.2},{\"id\":\"scrypted-yolov9c-relu-openvino-fp32\",\"label\":\"Scrypted YOLOv9C ReLU OpenVINO FP32\",\"family\":\"yolov9c\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9c_relu/best-converted.xml\",\"size\":535047,\"sha256\":\"836c1e998ebf76108ff64d554fdfa07aa72c42624f1a5448701bb409f27b8d68\"},{\"relativePath\":\"openvino/scrypted_yolov9c_relu/best-converted.bin\",\"size\":100942972,\"sha256\":\"11a1b330ac9843b349927977b3c7c7f17bb42af73a7ff102969132f27ab81814\"}],\"sizeMB\":101.48},{\"id\":\"scrypted-yolov9t-relu-openvino-int8\",\"label\":\"Scrypted YOLOv9T ReLU OpenVINO INT8\",\"family\":\"yolov9t\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9t_relu_int8/best-converted.xml\",\"size\":1380379,\"sha256\":\"e5a76bf88ac69fc0ebc50c04b61ff91550dd9c2349af1f6d7e4cac949c640cec\"},{\"relativePath\":\"openvino/scrypted_yolov9t_relu_int8/best-converted.bin\",\"size\":1954956,\"sha256\":\"98fb5b6826d7c6697a585f69ba96754873772d9d61fbed8335aab761e8248659\"}],\"sizeMB\":3.34},{\"id\":\"scrypted-yolov9t-relu-test-openvino-int8\",\"label\":\"Scrypted YOLOv9T ReLU test OpenVINO INT8\",\"family\":\"yolov9t\",\"variant\":\"relu_test\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9t_relu_test_int8/best-converted.xml\",\"size\":1380383,\"sha256\":\"9e4119284e923e08c9929e78fd31e2552e602a552ac538ae99bf34a50dd4d172\"},{\"relativePath\":\"openvino/scrypted_yolov9t_relu_test_int8/best-converted.bin\",\"size\":1954960,\"sha256\":\"efe5b0a2fd2f5ddef5923eeb9e592a7ef14719061bb7605c86e05b35c2c58ea9\"}],\"sizeMB\":3.34},{\"id\":\"scrypted-yolov9s-relu-openvino-int8\",\"label\":\"Scrypted YOLOv9S ReLU OpenVINO INT8\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9s_relu_int8/best-converted.xml\",\"size\":1382088,\"sha256\":\"4e6c24cf24afbab21462f7e1a15bd05b1cbbe5915046000e03c2435d8110bbbf\"},{\"relativePath\":\"openvino/scrypted_yolov9s_relu_int8/best-converted.bin\",\"size\":7197308,\"sha256\":\"23fd3d666a938c41db232d9c6239baec1134716cfb4ed4ddd3d602dd20eb8ac0\"}],\"sizeMB\":8.58},{\"id\":\"scrypted-yolov9s-relu-test-openvino-int8\",\"label\":\"Scrypted YOLOv9S ReLU test OpenVINO INT8\",\"family\":\"yolov9s\",\"variant\":\"relu_test\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9s_relu_test_int8/best-converted.xml\",\"size\":1382092,\"sha256\":\"49865bfeafe7576afce089ba6f5c3e25a9192c8b514eb96265c90fe877795641\"},{\"relativePath\":\"openvino/scrypted_yolov9s_relu_test_int8/best-converted.bin\",\"size\":7197312,\"sha256\":\"78e9d36e6b74754db2b624ea3ec0b3ff57ed6dfed59a4f2225e1a271054597de\"}],\"sizeMB\":8.58},{\"id\":\"scrypted-yolov9m-relu-openvino-int8\",\"label\":\"Scrypted YOLOv9M ReLU OpenVINO INT8\",\"family\":\"yolov9m\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9m_relu_int8/best-converted.xml\",\"size\":1024595,\"sha256\":\"1242ab8d8c73b2e80c5dd541177ade6e102a2684114b059136acb4cad6efb034\"},{\"relativePath\":\"openvino/scrypted_yolov9m_relu_int8/best-converted.bin\",\"size\":20090516,\"sha256\":\"da8e44af8bee66478e6f359e9504bfb13ab4b76f4bd8a2f1b10cfbc22febcf6e\"}],\"sizeMB\":21.12},{\"id\":\"scrypted-yolov9m-relu-test-openvino-int8\",\"label\":\"Scrypted YOLOv9M ReLU test OpenVINO INT8\",\"family\":\"yolov9m\",\"variant\":\"relu_test\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9m_relu_test_int8/best-converted.xml\",\"size\":1024601,\"sha256\":\"24395ae5fdbb321304c865372cd2b905cdc55abb7610520f3963702e2371decb\"},{\"relativePath\":\"openvino/scrypted_yolov9m_relu_test_int8/best-converted.bin\",\"size\":20090520,\"sha256\":\"4360fe0312067f92c49f180c7b8a10271f14d58b8909aa9b96b13af4ab9289aa\"}],\"sizeMB\":21.12},{\"id\":\"scrypted-yolov9c-relu-openvino-int8\",\"label\":\"Scrypted YOLOv9C ReLU OpenVINO INT8\",\"family\":\"yolov9c\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9c_relu_int8/best-converted.xml\",\"size\":1092695,\"sha256\":\"a45c62940120c4301d8fff9fb3b275c29e3618f403ea68a785f2f3220cefec7a\"},{\"relativePath\":\"openvino/scrypted_yolov9c_relu_int8/best-converted.bin\",\"size\":25428280,\"sha256\":\"0643403a56178c3ed1e066c7884458d8ea6780115d662bdc38d10754d7a11c79\"}],\"sizeMB\":26.52},{\"id\":\"scrypted-yolov9c-relu-test-openvino-int8\",\"label\":\"Scrypted YOLOv9C ReLU test OpenVINO INT8\",\"family\":\"yolov9c\",\"variant\":\"relu_test\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9c_relu_test_int8/best-converted.xml\",\"size\":1092695,\"sha256\":\"a8a1899848ebd060af2326d3c8d3c09ea83354f0bedff6cce6fa08b284ea5519\"},{\"relativePath\":\"openvino/scrypted_yolov9c_relu_test_int8/best-converted.bin\",\"size\":25428280,\"sha256\":\"2eb6bb3d0a03a9b239b6f623f9e7bced62eea61fbe4d8ff89c1b3e2e2b7978a2\"}],\"sizeMB\":26.52},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-float16\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite float16\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"float16\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_float16.tflite\",\"size\":14482836,\"sha256\":\"04889db3b81af361c361e41ffa99327330d37b71d680a2f889e6cdf1e94c0d8c\"}],\"sizeMB\":14.48},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-float32\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite float32\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"float32\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_float32.tflite\",\"size\":28777068,\"sha256\":\"f5d7d08fc1d8f2262633d2df4391638e0481740331aaa1837880a47c33001a96\"}],\"sizeMB\":28.78},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-int8\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite int8\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_int8.tflite\",\"size\":7325616,\"sha256\":\"1e9866b16fe80931383bf3c94dc629fe93a37ba3dc1465ea019eb0a50bd428df\"}],\"sizeMB\":7.33},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-integer_quant\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite integer_quant\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"integer_quant\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_integer_quant.tflite\",\"size\":7342552,\"sha256\":\"bc1c902e9a9865637ee2403f70c6bf5c29c695d9163e58ad658feb29bb097ebc\"}],\"sizeMB\":7.34},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-full_integer_quant\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite full_integer_quant\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"full_integer_quant\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_full_integer_quant.tflite\",\"size\":7341704,\"sha256\":\"483ce38dbe33ee5a35f40a82f56c77629a44fa5d95efd8ade9fa97e4d2a261fd\"}],\"sizeMB\":7.34},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-edgetpu\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite edgetpu\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"edgetpu\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_full_integer_quant_edgetpu.tflite\",\"size\":8164480,\"sha256\":\"e1e6b074a3b9fdf19a171baf615553ad375a046aa7de2a3fef9a1950175fab22\"}],\"sizeMB\":8.16}]"), iS = {
19223
+ var sS = /*#__PURE__*/ JSON.parse("[{\"id\":\"scrypted-yolov9t-relu-coreml\",\"label\":\"Scrypted YOLOv9T ReLU CoreML\",\"family\":\"yolov9t\",\"variant\":\"relu\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9t_relu/scrypted_yolov9t_relu.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"0a8733949d77e3204dba6418e81a11a8cc177015711457ce2c171266f23382d6\"},{\"relativePath\":\"coreml/scrypted_yolov9t_relu/scrypted_yolov9t_relu.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":322229,\"sha256\":\"f5a62f196f1e72a84efa1637119dffb6501621af9cf6f867bc76b4b59c9242a0\"},{\"relativePath\":\"coreml/scrypted_yolov9t_relu/scrypted_yolov9t_relu.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":3797160,\"sha256\":\"b994419b8b68cfd6b89c3c6f3fe6b37458c86cc1d87fcca3df5034476a99dd38\"}],\"sizeMB\":4.12},{\"id\":\"scrypted-yolov9t-relu-onnx\",\"label\":\"Scrypted YOLOv9T ReLU ONNX\",\"family\":\"yolov9t\",\"variant\":\"relu\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9t_relu/scrypted_yolov9t_relu.onnx\",\"size\":8499266,\"sha256\":\"3f11ea2071b27c285b58c16636a44d6a0a27bdd1ca8b64112dfadabd39cfea47\"}],\"sizeMB\":8.5},{\"id\":\"scrypted-yolov9t-relu-test-coreml\",\"label\":\"Scrypted YOLOv9T ReLU test CoreML\",\"family\":\"yolov9t\",\"variant\":\"relu_test\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9t_relu_test/scrypted_yolov9t_relu_test.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"a5e0128b643f1a66f3e07d4b332f9ccbca97ccab75651c794f0b9f1fb41c8491\"},{\"relativePath\":\"coreml/scrypted_yolov9t_relu_test/scrypted_yolov9t_relu_test.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":322229,\"sha256\":\"79f4f647f2a0c79db3b560c84251b48c7ba7cbe9c1fecc9674d1a603a389dfa3\"},{\"relativePath\":\"coreml/scrypted_yolov9t_relu_test/scrypted_yolov9t_relu_test.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":3797160,\"sha256\":\"72efc9dc6af9241b5e5ee7de24a4f55741f6425d0e279d797f0f223e3d355f84\"}],\"sizeMB\":4.12},{\"id\":\"scrypted-yolov9t-relu-test-onnx\",\"label\":\"Scrypted YOLOv9T ReLU test ONNX\",\"family\":\"yolov9t\",\"variant\":\"relu_test\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9t_relu_test/scrypted_yolov9t_relu_test.onnx\",\"size\":8499266,\"sha256\":\"d20aa0e6923a3af7f5e84e3a6d28fb00e8ecd592e3225f986f93bd34b634e2f8\"}],\"sizeMB\":8.5},{\"id\":\"scrypted-yolov9s-relu-coreml\",\"label\":\"Scrypted YOLOv9S ReLU CoreML\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9s_relu/scrypted_yolov9s_relu.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"3bcdb820b82f1e89266f2d11bae1604d3ee4ca6d11dc5bd5c57055ff4157e9f3\"},{\"relativePath\":\"coreml/scrypted_yolov9s_relu/scrypted_yolov9s_relu.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":322664,\"sha256\":\"9a9c3c9cbca406ec2f0418ec867ed6b878ec6d02c16636d30e0bbd83d2ff7c40\"},{\"relativePath\":\"coreml/scrypted_yolov9s_relu/scrypted_yolov9s_relu.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":14190120,\"sha256\":\"fd51eda58a993997268f6a2e424b536ba173207ad7974ab8bee2a8ff76d52dab\"}],\"sizeMB\":14.51},{\"id\":\"scrypted-yolov9s-relu-onnx\",\"label\":\"Scrypted YOLOv9S ReLU ONNX\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9s_relu/scrypted_yolov9s_relu.onnx\",\"size\":29287339,\"sha256\":\"ca0b5bd98d5f59eb2029c6cb5129d53af59873f62a317a028beda463bbb96399\"}],\"sizeMB\":29.29},{\"id\":\"scrypted-yolov9s-relu-test-coreml\",\"label\":\"Scrypted YOLOv9S ReLU test CoreML\",\"family\":\"yolov9s\",\"variant\":\"relu_test\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9s_relu_test/scrypted_yolov9s_relu_test.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"e2d24de0ce7e8573f19572029765e55abc714f36a85175ad7fcb95c001a76653\"},{\"relativePath\":\"coreml/scrypted_yolov9s_relu_test/scrypted_yolov9s_relu_test.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":322664,\"sha256\":\"186b147cdfd15c5ed7a381ec3a426a22cee0b5c52d56f14efd26da06357f5cb0\"},{\"relativePath\":\"coreml/scrypted_yolov9s_relu_test/scrypted_yolov9s_relu_test.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":14190120,\"sha256\":\"e50651924c2cbffd56008a8953569e66c3de69f21807fcf7d825390ce30f21f8\"}],\"sizeMB\":14.51},{\"id\":\"scrypted-yolov9s-relu-test-onnx\",\"label\":\"Scrypted YOLOv9S ReLU test ONNX\",\"family\":\"yolov9s\",\"variant\":\"relu_test\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9s_relu_test/scrypted_yolov9s_relu_test.onnx\",\"size\":29287339,\"sha256\":\"115ddb83333762a0f2599421335678696454a5c3571ade5df9bac8e9cb5fb4cf\"}],\"sizeMB\":29.29},{\"id\":\"scrypted-yolov9m-relu-coreml\",\"label\":\"Scrypted YOLOv9M ReLU CoreML\",\"family\":\"yolov9m\",\"variant\":\"relu\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9m_relu/scrypted_yolov9m_relu.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"c548c6e1ff768b2b01bd71e230aa712a1635ae2baa30e0369557a42fc531ecbf\"},{\"relativePath\":\"coreml/scrypted_yolov9m_relu/scrypted_yolov9m_relu.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":247061,\"sha256\":\"1c40e02fc2a2559cb906ea6cd9da9c730d4a78f5019290cbb38d2fcaae379fe7\"},{\"relativePath\":\"coreml/scrypted_yolov9m_relu/scrypted_yolov9m_relu.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":39880616,\"sha256\":\"4cf938e5bfcc3ee1644813e4eb4702a7de450cc0581df94c719cf43d0ed2e408\"}],\"sizeMB\":40.13},{\"id\":\"scrypted-yolov9m-relu-onnx\",\"label\":\"Scrypted YOLOv9M ReLU ONNX\",\"family\":\"yolov9m\",\"variant\":\"relu\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9m_relu/scrypted_yolov9m_relu.onnx\",\"size\":80380404,\"sha256\":\"e7a81fb33224a0105d2a0a594c3fa43c398c361de623f1d14156ae826e7312d5\"}],\"sizeMB\":80.38},{\"id\":\"scrypted-yolov9m-relu-test-coreml\",\"label\":\"Scrypted YOLOv9M ReLU test CoreML\",\"family\":\"yolov9m\",\"variant\":\"relu_test\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9m_relu_test/scrypted_yolov9m_relu_test.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"8e2684b286d02b4bdf9db1027c84cb89bf8e4830cfb58269f3ec457c5a010650\"},{\"relativePath\":\"coreml/scrypted_yolov9m_relu_test/scrypted_yolov9m_relu_test.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":247061,\"sha256\":\"53d5946e74b13b15c5f8616081c9f15e8a95a5df3d5b45b830fc5a7f49561c16\"},{\"relativePath\":\"coreml/scrypted_yolov9m_relu_test/scrypted_yolov9m_relu_test.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":39880616,\"sha256\":\"69774bf0032c37707601b8cdc1e1820dbd9f8288eb5d6f3879618a5d34ff5199\"}],\"sizeMB\":40.13},{\"id\":\"scrypted-yolov9m-relu-test-onnx\",\"label\":\"Scrypted YOLOv9M ReLU test ONNX\",\"family\":\"yolov9m\",\"variant\":\"relu_test\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9m_relu_test/scrypted_yolov9m_relu_test.onnx\",\"size\":80380404,\"sha256\":\"8bb054f099295909ec518e2a6598d63db24d3f90edc8105a0f016903f2a205a2\"}],\"sizeMB\":80.38},{\"id\":\"scrypted-yolov9c-relu-coreml\",\"label\":\"Scrypted YOLOv9C ReLU CoreML\",\"family\":\"yolov9c\",\"variant\":\"relu\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9c_relu/scrypted_yolov9c_relu.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"813a306ebd69cabfd31f00434f5a961feeca7d237833f3e11805dcf4ad120ba9\"},{\"relativePath\":\"coreml/scrypted_yolov9c_relu/scrypted_yolov9c_relu.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":263210,\"sha256\":\"862f082619075e470738306b0ff0a37ae70a7d08e684ca6a6dfa1971d404e0c3\"},{\"relativePath\":\"coreml/scrypted_yolov9c_relu/scrypted_yolov9c_relu.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":50489960,\"sha256\":\"ed89747e58943758e2a87221d1d404f6a4466cbc039c3c6f96e327cadc403d27\"}],\"sizeMB\":50.75},{\"id\":\"scrypted-yolov9c-relu-onnx\",\"label\":\"Scrypted YOLOv9C ReLU ONNX\",\"family\":\"yolov9c\",\"variant\":\"relu\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9c_relu/scrypted_yolov9c_relu.onnx\",\"size\":101631962,\"sha256\":\"b9372c4428daf4cd944c114b1e80d1a9ff0487d743e53a77216a051cfbef7116\"}],\"sizeMB\":101.63},{\"id\":\"scrypted-yolov9c-relu-test-coreml\",\"label\":\"Scrypted YOLOv9C ReLU test CoreML\",\"family\":\"yolov9c\",\"variant\":\"relu_test\",\"format\":\"coreml\",\"precision\":\"fp16\",\"files\":[{\"relativePath\":\"coreml/scrypted_yolov9c_relu_test/scrypted_yolov9c_relu_test.mlpackage/Manifest.json\",\"size\":617,\"sha256\":\"966ef82a93cb0ccf1036a8c9729c065fd372fa9590a97d0945e581cc674f7ad2\"},{\"relativePath\":\"coreml/scrypted_yolov9c_relu_test/scrypted_yolov9c_relu_test.mlpackage/Data/com.apple.CoreML/model.mlmodel\",\"size\":263210,\"sha256\":\"08718ecd3e9552d21a702bd8df60911cad0eec7b2ae382466809550f14634711\"},{\"relativePath\":\"coreml/scrypted_yolov9c_relu_test/scrypted_yolov9c_relu_test.mlpackage/Data/com.apple.CoreML/weights/weight.bin\",\"size\":50489960,\"sha256\":\"fe5936b9430ab4c87f30b148220131d6ec998b2377223d033e2fa2a00e60aada\"}],\"sizeMB\":50.75},{\"id\":\"scrypted-yolov9c-relu-test-onnx\",\"label\":\"Scrypted YOLOv9C ReLU test ONNX\",\"family\":\"yolov9c\",\"variant\":\"relu_test\",\"format\":\"onnx\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"onnx/scrypted_yolov9c_relu_test/scrypted_yolov9c_relu_test.onnx\",\"size\":101631962,\"sha256\":\"2f4e2031e8efb4cbc871594338b2e875d78ab4af3ee0258d253273b1aac84742\"}],\"sizeMB\":101.63},{\"id\":\"scrypted-yolov9t-relu-openvino-fp32\",\"label\":\"Scrypted YOLOv9T ReLU OpenVINO FP32\",\"family\":\"yolov9t\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9t_relu/best-converted.xml\",\"size\":628222,\"sha256\":\"01b5a9d02a0f281e1aaf4860e1b0ed3a7f16b9d78975be8ff985ae0ee283d877\"},{\"relativePath\":\"openvino/scrypted_yolov9t_relu/best-converted.bin\",\"size\":7542204,\"sha256\":\"4fe9ce8dbdf94514fdd450cbfc907f257153e4898a0c1489a44e4912d8e32cc7\"}],\"sizeMB\":8.17},{\"id\":\"scrypted-yolov9s-relu-openvino-fp32\",\"label\":\"Scrypted YOLOv9S ReLU OpenVINO FP32\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9s_relu/best-converted.xml\",\"size\":629249,\"sha256\":\"5b4a229bf7229425698b63bd065a403e440a6151a6ddff0034867659cc4a480d\"},{\"relativePath\":\"openvino/scrypted_yolov9s_relu/best-converted.bin\",\"size\":28329724,\"sha256\":\"c030bd219208ea94082578c81f383d4ef9ec45d7150eec1c2c2ff2569cf49b35\"}],\"sizeMB\":28.96},{\"id\":\"scrypted-yolov9m-relu-openvino-fp32\",\"label\":\"Scrypted YOLOv9M ReLU OpenVINO FP32\",\"family\":\"yolov9m\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9m_relu/best-converted.xml\",\"size\":485439,\"sha256\":\"c66f9f1965bf70fd3635d4dfc3cb94c72c06b344c256713237d77706725b9a0c\"},{\"relativePath\":\"openvino/scrypted_yolov9m_relu/best-converted.bin\",\"size\":79717372,\"sha256\":\"dfc2d8952bbca9ad0e116168e3fd5c754e601c327d78c4f4d0d4cae12f0e1d2a\"}],\"sizeMB\":80.2},{\"id\":\"scrypted-yolov9c-relu-openvino-fp32\",\"label\":\"Scrypted YOLOv9C ReLU OpenVINO FP32\",\"family\":\"yolov9c\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"fp32\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9c_relu/best-converted.xml\",\"size\":535047,\"sha256\":\"836c1e998ebf76108ff64d554fdfa07aa72c42624f1a5448701bb409f27b8d68\"},{\"relativePath\":\"openvino/scrypted_yolov9c_relu/best-converted.bin\",\"size\":100942972,\"sha256\":\"11a1b330ac9843b349927977b3c7c7f17bb42af73a7ff102969132f27ab81814\"}],\"sizeMB\":101.48},{\"id\":\"scrypted-yolov9t-relu-openvino-int8\",\"label\":\"Scrypted YOLOv9T ReLU OpenVINO INT8\",\"family\":\"yolov9t\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9t_relu_int8/best-converted.xml\",\"size\":1380379,\"sha256\":\"e5a76bf88ac69fc0ebc50c04b61ff91550dd9c2349af1f6d7e4cac949c640cec\"},{\"relativePath\":\"openvino/scrypted_yolov9t_relu_int8/best-converted.bin\",\"size\":1954956,\"sha256\":\"98fb5b6826d7c6697a585f69ba96754873772d9d61fbed8335aab761e8248659\"}],\"sizeMB\":3.34},{\"id\":\"scrypted-yolov9t-relu-test-openvino-int8\",\"label\":\"Scrypted YOLOv9T ReLU test OpenVINO INT8\",\"family\":\"yolov9t\",\"variant\":\"relu_test\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9t_relu_test_int8/best-converted.xml\",\"size\":1380383,\"sha256\":\"9e4119284e923e08c9929e78fd31e2552e602a552ac538ae99bf34a50dd4d172\"},{\"relativePath\":\"openvino/scrypted_yolov9t_relu_test_int8/best-converted.bin\",\"size\":1954960,\"sha256\":\"efe5b0a2fd2f5ddef5923eeb9e592a7ef14719061bb7605c86e05b35c2c58ea9\"}],\"sizeMB\":3.34},{\"id\":\"scrypted-yolov9s-relu-openvino-int8\",\"label\":\"Scrypted YOLOv9S ReLU OpenVINO INT8\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9s_relu_int8/best-converted.xml\",\"size\":1382088,\"sha256\":\"4e6c24cf24afbab21462f7e1a15bd05b1cbbe5915046000e03c2435d8110bbbf\"},{\"relativePath\":\"openvino/scrypted_yolov9s_relu_int8/best-converted.bin\",\"size\":7197308,\"sha256\":\"23fd3d666a938c41db232d9c6239baec1134716cfb4ed4ddd3d602dd20eb8ac0\"}],\"sizeMB\":8.58},{\"id\":\"scrypted-yolov9s-relu-test-openvino-int8\",\"label\":\"Scrypted YOLOv9S ReLU test OpenVINO INT8\",\"family\":\"yolov9s\",\"variant\":\"relu_test\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9s_relu_test_int8/best-converted.xml\",\"size\":1382092,\"sha256\":\"49865bfeafe7576afce089ba6f5c3e25a9192c8b514eb96265c90fe877795641\"},{\"relativePath\":\"openvino/scrypted_yolov9s_relu_test_int8/best-converted.bin\",\"size\":7197312,\"sha256\":\"78e9d36e6b74754db2b624ea3ec0b3ff57ed6dfed59a4f2225e1a271054597de\"}],\"sizeMB\":8.58},{\"id\":\"scrypted-yolov9m-relu-openvino-int8\",\"label\":\"Scrypted YOLOv9M ReLU OpenVINO INT8\",\"family\":\"yolov9m\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9m_relu_int8/best-converted.xml\",\"size\":1024595,\"sha256\":\"1242ab8d8c73b2e80c5dd541177ade6e102a2684114b059136acb4cad6efb034\"},{\"relativePath\":\"openvino/scrypted_yolov9m_relu_int8/best-converted.bin\",\"size\":20090516,\"sha256\":\"da8e44af8bee66478e6f359e9504bfb13ab4b76f4bd8a2f1b10cfbc22febcf6e\"}],\"sizeMB\":21.12},{\"id\":\"scrypted-yolov9m-relu-test-openvino-int8\",\"label\":\"Scrypted YOLOv9M ReLU test OpenVINO INT8\",\"family\":\"yolov9m\",\"variant\":\"relu_test\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9m_relu_test_int8/best-converted.xml\",\"size\":1024601,\"sha256\":\"24395ae5fdbb321304c865372cd2b905cdc55abb7610520f3963702e2371decb\"},{\"relativePath\":\"openvino/scrypted_yolov9m_relu_test_int8/best-converted.bin\",\"size\":20090520,\"sha256\":\"4360fe0312067f92c49f180c7b8a10271f14d58b8909aa9b96b13af4ab9289aa\"}],\"sizeMB\":21.12},{\"id\":\"scrypted-yolov9c-relu-openvino-int8\",\"label\":\"Scrypted YOLOv9C ReLU OpenVINO INT8\",\"family\":\"yolov9c\",\"variant\":\"relu\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9c_relu_int8/best-converted.xml\",\"size\":1092695,\"sha256\":\"a45c62940120c4301d8fff9fb3b275c29e3618f403ea68a785f2f3220cefec7a\"},{\"relativePath\":\"openvino/scrypted_yolov9c_relu_int8/best-converted.bin\",\"size\":25428280,\"sha256\":\"0643403a56178c3ed1e066c7884458d8ea6780115d662bdc38d10754d7a11c79\"}],\"sizeMB\":26.52},{\"id\":\"scrypted-yolov9c-relu-test-openvino-int8\",\"label\":\"Scrypted YOLOv9C ReLU test OpenVINO INT8\",\"family\":\"yolov9c\",\"variant\":\"relu_test\",\"format\":\"openvino\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"openvino/scrypted_yolov9c_relu_test_int8/best-converted.xml\",\"size\":1092695,\"sha256\":\"a8a1899848ebd060af2326d3c8d3c09ea83354f0bedff6cce6fa08b284ea5519\"},{\"relativePath\":\"openvino/scrypted_yolov9c_relu_test_int8/best-converted.bin\",\"size\":25428280,\"sha256\":\"2eb6bb3d0a03a9b239b6f623f9e7bced62eea61fbe4d8ff89c1b3e2e2b7978a2\"}],\"sizeMB\":26.52},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-float16\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite float16\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"float16\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_float16.tflite\",\"size\":14482836,\"sha256\":\"04889db3b81af361c361e41ffa99327330d37b71d680a2f889e6cdf1e94c0d8c\"}],\"sizeMB\":14.48},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-float32\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite float32\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"float32\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_float32.tflite\",\"size\":28777068,\"sha256\":\"f5d7d08fc1d8f2262633d2df4391638e0481740331aaa1837880a47c33001a96\"}],\"sizeMB\":28.78},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-int8\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite int8\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"int8\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_int8.tflite\",\"size\":7325616,\"sha256\":\"1e9866b16fe80931383bf3c94dc629fe93a37ba3dc1465ea019eb0a50bd428df\"}],\"sizeMB\":7.33},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-integer_quant\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite integer_quant\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"integer_quant\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_integer_quant.tflite\",\"size\":7342552,\"sha256\":\"bc1c902e9a9865637ee2403f70c6bf5c29c695d9163e58ad658feb29bb097ebc\"}],\"sizeMB\":7.34},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-full_integer_quant\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite full_integer_quant\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"full_integer_quant\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_full_integer_quant.tflite\",\"size\":7341704,\"sha256\":\"483ce38dbe33ee5a35f40a82f56c77629a44fa5d95efd8ade9fa97e4d2a261fd\"}],\"sizeMB\":7.34},{\"id\":\"scrypted-yolov9s-relu-sep-320-tflite-edgetpu\",\"label\":\"Scrypted YOLOv9s ReLU sep 320 TFLite edgetpu\",\"family\":\"yolov9s\",\"variant\":\"relu\",\"format\":\"tflite\",\"precision\":\"edgetpu\",\"files\":[{\"relativePath\":\"tflite/scrypted_yolov9s_relu_sep_320/best_full_integer_quant_edgetpu.tflite\",\"size\":8164480,\"sha256\":\"e1e6b074a3b9fdf19a171baf615553ad375a046aa7de2a3fef9a1950175fab22\"}],\"sizeMB\":8.16}]"), cS = {
19206
19224
  weights: "UNKNOWN",
19207
19225
  code: "GPL-3.0",
19208
19226
  data: {
@@ -19217,7 +19235,7 @@ var rS = /*#__PURE__*/ JSON.parse("[{\"id\":\"scrypted-yolov9t-relu-coreml\",\"l
19217
19235
  attribution: "Scrypted YOLOv9 ReLU detectors, Koushik Dutta (scrypted/plugin-models, repository tagged MIT); trained with the YOLOv9 code of Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao, GPL-3.0 (https://github.com/WongKinYiu/yolov9).",
19218
19236
  modifications: "none: downloaded as published, at a pinned revision",
19219
19237
  hosting: "third-party"
19220
- }, aS = {
19238
+ }, lS = {
19221
19239
  weights: "Apache-2.0",
19222
19240
  code: "Apache-2.0",
19223
19241
  data: {
@@ -19232,45 +19250,45 @@ var rS = /*#__PURE__*/ JSON.parse("[{\"id\":\"scrypted-yolov9t-relu-coreml\",\"l
19232
19250
  url: "https://github.com/google-coral/test_data/blob/master/LICENSE",
19233
19251
  attribution: "Coral Edge TPU models and AIY Vision Birds V1 © Google LLC, Apache-2.0.",
19234
19252
  hosting: "third-party"
19235
- }, oS = /^[0-9a-f]{64}$/, sS = "https://huggingface.co", cS = "scrypted/plugin-models", lS = "187402b20a3be0a7fab9bceee21d857ed6ae0064", uS = [
19253
+ }, uS = /^[0-9a-f]{64}$/, dS = "https://huggingface.co", fS = "scrypted/plugin-models", pS = "187402b20a3be0a7fab9bceee21d857ed6ae0064", mS = [
19236
19254
  "person",
19237
19255
  "vehicle",
19238
19256
  "animal"
19239
- ], dS = {
19257
+ ], hS = {
19240
19258
  mapping: {
19241
19259
  person: "person",
19242
19260
  vehicle: "vehicle",
19243
19261
  animal: "animal"
19244
19262
  },
19245
19263
  preserveOriginal: !1
19246
- }, fS = uS.map((e) => ({
19264
+ }, gS = mS.map((e) => ({
19247
19265
  id: e,
19248
19266
  name: e
19249
- })), pS = [
19267
+ })), _S = [
19250
19268
  "Manifest.json",
19251
19269
  "Data/com.apple.CoreML/model.mlmodel",
19252
19270
  "Data/com.apple.CoreML/weights/weight.bin"
19253
- ], mS = {
19271
+ ], vS = {
19254
19272
  width: 320,
19255
19273
  height: 320
19256
19274
  };
19257
- function hS(e, t) {
19258
- if (e === void 0 || !oS.test(e)) throw Error(`Invalid sha256 for ${t}: expected 64 lowercase hex`);
19275
+ function yS(e, t) {
19276
+ if (e === void 0 || !uS.test(e)) throw Error(`Invalid sha256 for ${t}: expected 64 lowercase hex`);
19259
19277
  return e;
19260
19278
  }
19261
- function gS(e) {
19279
+ function bS(e) {
19262
19280
  if (e.length === 0 || e.startsWith("/") || e.includes("\\") || e.includes("\0") || e.split("/").some((e) => e.length === 0 || e === "." || e === "..")) throw Error(`Unsafe Scrypted relative path: ${e}`);
19263
19281
  return e;
19264
19282
  }
19265
- function _S(e) {
19266
- return `${sS}/${cS}/resolve/${lS}/${gS(e).split("/").map((e) => encodeURIComponent(e)).join("/")}`;
19283
+ function xS(e) {
19284
+ return `${dS}/${fS}/resolve/${pS}/${bS(e).split("/").map((e) => encodeURIComponent(e)).join("/")}`;
19267
19285
  }
19268
- function vS(e) {
19286
+ function SS(e) {
19269
19287
  let t = e.find((e) => e.relativePath.endsWith("/Manifest.json"));
19270
19288
  if (!t) throw Error("CoreML entry is missing Manifest.json");
19271
- return gS(t.relativePath.replace(/\/Manifest\.json$/, ""));
19289
+ return bS(t.relativePath.replace(/\/Manifest\.json$/, ""));
19272
19290
  }
19273
- function yS(e) {
19291
+ function CS(e) {
19274
19292
  let t = e.family.slice(-1), n = e.precision === "int8" || e.precision === "uint8" || e.precision === "integer_quant" || e.precision === "full_integer_quant" || e.precision === "edgetpu", r = {
19275
19293
  family: "yolov9",
19276
19294
  tier: t,
@@ -19290,19 +19308,19 @@ function yS(e) {
19290
19308
  name: s,
19291
19309
  description: c,
19292
19310
  formats: { coreml: {
19293
- url: _S(vS(e.files)),
19311
+ url: xS(SS(e.files)),
19294
19312
  sizeMB: e.sizeMB,
19295
19313
  isDirectory: !0,
19296
- files: [...pS],
19314
+ files: [..._S],
19297
19315
  runtimes: ["python"]
19298
19316
  } },
19299
- inputSize: mS,
19300
- labels: fS,
19317
+ inputSize: vS,
19318
+ labels: gS,
19301
19319
  preprocessMode: "resize",
19302
- classMap: dS,
19320
+ classMap: hS,
19303
19321
  group: r,
19304
19322
  provider: "scrypted",
19305
- license: iS
19323
+ license: cS
19306
19324
  };
19307
19325
  if (e.format === "openvino") {
19308
19326
  let t = e.files.find((e) => e.relativePath.endsWith(".xml")), n = e.files.find((e) => e.relativePath.endsWith(".bin"));
@@ -19313,18 +19331,18 @@ function yS(e) {
19313
19331
  name: s,
19314
19332
  description: c,
19315
19333
  formats: { openvino: {
19316
- url: _S(t.relativePath),
19334
+ url: xS(t.relativePath),
19317
19335
  sizeMB: e.sizeMB,
19318
19336
  files: [i],
19319
19337
  runtimes: ["python"]
19320
19338
  } },
19321
- inputSize: mS,
19322
- labels: fS,
19339
+ inputSize: vS,
19340
+ labels: gS,
19323
19341
  preprocessMode: "resize",
19324
- classMap: dS,
19342
+ classMap: hS,
19325
19343
  group: r,
19326
19344
  provider: "scrypted",
19327
- license: iS
19345
+ license: cS
19328
19346
  };
19329
19347
  }
19330
19348
  let l = e.files[0];
@@ -19334,25 +19352,25 @@ function yS(e) {
19334
19352
  name: s,
19335
19353
  description: c,
19336
19354
  formats: { [e.format]: {
19337
- url: _S(l.relativePath),
19355
+ url: xS(l.relativePath),
19338
19356
  sizeMB: e.sizeMB,
19339
19357
  runtimes: e.format === "tflite" ? ["python"] : void 0
19340
19358
  } },
19341
- inputSize: mS,
19342
- labels: fS,
19359
+ inputSize: vS,
19360
+ labels: gS,
19343
19361
  preprocessMode: "resize",
19344
- classMap: dS,
19362
+ classMap: hS,
19345
19363
  group: r,
19346
19364
  provider: "scrypted",
19347
- license: iS,
19365
+ license: cS,
19348
19366
  ...e.format === "tflite" ? { postprocessor: "yolo-split-dfl" } : {}
19349
19367
  };
19350
19368
  }
19351
- function bS(e) {
19369
+ function wS(e) {
19352
19370
  let t = e.files.map((e) => Object.freeze({
19353
- relativePath: gS(e.relativePath),
19371
+ relativePath: bS(e.relativePath),
19354
19372
  size: e.size,
19355
- sha256: hS(e.sha256, e.relativePath)
19373
+ sha256: yS(e.sha256, e.relativePath)
19356
19374
  }));
19357
19375
  return Object.freeze({
19358
19376
  id: e.id,
@@ -19361,22 +19379,22 @@ function bS(e) {
19361
19379
  variant: e.variant,
19362
19380
  format: e.format,
19363
19381
  precision: e.precision,
19364
- inputSize: mS,
19382
+ inputSize: vS,
19365
19383
  files: Object.freeze(t),
19366
- model: yS({
19384
+ model: CS({
19367
19385
  ...e,
19368
19386
  files: t
19369
19387
  })
19370
19388
  });
19371
19389
  }
19372
- var xS = Object.freeze(rS.map(bS)), SS = [
19390
+ var TS = Object.freeze(sS.map(wS)), ES = [
19373
19391
  "ok",
19374
19392
  "missing",
19375
19393
  "size-changed",
19376
19394
  "unavailable"
19377
19395
  ];
19378
- function CS(e) {
19379
- return SS.includes(e.status) ? {
19396
+ function DS(e) {
19397
+ return ES.includes(e.status) ? {
19380
19398
  manifestId: e.manifestId,
19381
19399
  status: e.status,
19382
19400
  ...e.details === void 0 ? {} : { details: e.details }
@@ -19388,11 +19406,11 @@ function CS(e) {
19388
19406
  }
19389
19407
  //#endregion
19390
19408
  //#region src/model-studio-actions.ts
19391
- var wS = $({
19409
+ var OS = $({
19392
19410
  sha256: Q(),
19393
19411
  bytes: Pb(),
19394
19412
  at: Pb()
19395
- }), TS = kx((e) => {
19413
+ }), kS = kx((e) => {
19396
19414
  if (typeof e != "object" || !e || Array.isArray(e)) return e;
19397
19415
  let t = e;
19398
19416
  return typeof t.formats == "object" && t.formats !== null && !Array.isArray(t.formats) ? { formats: t.formats } : typeof t.format == "string" ? { formats: { [t.format]: {
@@ -19400,15 +19418,15 @@ var wS = $({
19400
19418
  bytes: typeof t.bytes == "number" ? t.bytes : 0,
19401
19419
  at: typeof t.at == "number" ? t.at : 0
19402
19420
  } } } : e;
19403
- }, $({ formats: ex(nx(P), wS) })), ES = $b(Q(), $b(Q(), TS));
19404
- function DS(e) {
19421
+ }, $({ formats: ex(nx(P), OS) })), AS = $b(Q(), $b(Q(), kS));
19422
+ function jS(e) {
19405
19423
  return `frigate-plus-${e}`;
19406
19424
  }
19407
- var OS = $({
19425
+ var MS = $({
19408
19426
  relativePath: Q(),
19409
19427
  size: Pb(),
19410
19428
  sha256: Q().regex(/^[0-9a-f]{64}$/)
19411
- }), kS = $({
19429
+ }), NS = $({
19412
19430
  id: Q(),
19413
19431
  label: Q(),
19414
19432
  family: nx([
@@ -19429,9 +19447,9 @@ var OS = $({
19429
19447
  width: Pb(),
19430
19448
  height: Pb()
19431
19449
  }),
19432
- files: Kb(OS).readonly(),
19450
+ files: Kb(MS).readonly(),
19433
19451
  model: Xe
19434
- }), AS = $({
19452
+ }), PS = $({
19435
19453
  manifestId: Q(),
19436
19454
  status: nx([
19437
19455
  "ok",
@@ -19440,14 +19458,14 @@ var OS = $({
19440
19458
  "unavailable"
19441
19459
  ]),
19442
19460
  details: Q().optional()
19443
- }), jS = $({
19461
+ }), FS = $({
19444
19462
  id: Q(),
19445
19463
  label: Q(),
19446
19464
  format: nx(P),
19447
19465
  sizeMB: Pb(),
19448
19466
  inputSize: Pb(),
19449
19467
  notes: Q()
19450
- }), MS = $({
19468
+ }), IS = $({
19451
19469
  id: Q(),
19452
19470
  name: Q(),
19453
19471
  type: Q(),
@@ -19530,7 +19548,7 @@ Qe({
19530
19548
  sha256: Q(),
19531
19549
  bytes: Pb()
19532
19550
  }), { kind: "mutation" }),
19533
- listAvailability: ke(Wb(), ES),
19551
+ listAvailability: ke(Wb(), AS),
19534
19552
  beginModelUpload: ke($({
19535
19553
  filename: Q(),
19536
19554
  totalBytes: Pb().int().positive()
@@ -19545,7 +19563,7 @@ Qe({
19545
19563
  sha256: Q()
19546
19564
  }), { kind: "mutation" }),
19547
19565
  abortModelUpload: ke($({ uploadId: Q() }), $({ ok: ix(!0) }), { kind: "mutation" }),
19548
- listFrigateCatalog: ke(Wb(), Kb(jS).readonly()),
19566
+ listFrigateCatalog: ke(Wb(), Kb(FS).readonly()),
19549
19567
  importFrigateCatalogModel: ke($({
19550
19568
  catalogId: Q(),
19551
19569
  modelId: Q().optional(),
@@ -19557,8 +19575,8 @@ Qe({
19557
19575
  bytes: Pb()
19558
19576
  }), { kind: "mutation" }),
19559
19577
  listScryptedCatalog: ke(Wb(), $({
19560
- entries: Kb(kS).readonly(),
19561
- drift: Kb(AS).readonly()
19578
+ entries: Kb(NS).readonly(),
19579
+ drift: Kb(PS).readonly()
19562
19580
  })),
19563
19581
  importScryptedCatalogModel: ke($({
19564
19582
  manifestId: Q(),
@@ -19574,7 +19592,7 @@ Qe({
19574
19592
  ok: Rb(),
19575
19593
  error: Q().optional()
19576
19594
  }), { kind: "mutation" }),
19577
- frigatePlusListModels: ke(Wb(), Kb(MS).readonly()),
19595
+ frigatePlusListModels: ke(Wb(), Kb(IS).readonly()),
19578
19596
  importFrigatePlusModel: ke($({
19579
19597
  plusModelId: Q(),
19580
19598
  modelId: Q().optional(),
@@ -19609,10 +19627,10 @@ Qe({
19609
19627
  artifacts: Kb(Te).readonly()
19610
19628
  }), { kind: "mutation" })
19611
19629
  });
19612
- var NS = /[\u0000-\u001f\u007f]/;
19613
- function PS(e) {
19630
+ var LS = /[\u0000-\u001f\u007f]/;
19631
+ function RS(e) {
19614
19632
  let t = e.replace(/\s+/g, " ").trim();
19615
- return t.length === 0 ? { kind: "reset" } : NS.test(t) ? {
19633
+ return t.length === 0 ? { kind: "reset" } : LS.test(t) ? {
19616
19634
  kind: "invalid",
19617
19635
  reason: "The name contains control characters."
19618
19636
  } : t.length > 80 ? {
@@ -19623,30 +19641,30 @@ function PS(e) {
19623
19641
  name: t
19624
19642
  };
19625
19643
  }
19626
- function FS(e) {
19644
+ function zS(e) {
19627
19645
  let t = e.name?.trim() ?? "";
19628
19646
  return t.length > 0 ? t : e.id;
19629
19647
  }
19630
19648
  //#endregion
19631
19649
  //#region src/ui/model-studio-ui.ts
19632
- var IS = "object-detection";
19633
- function LS(e) {
19634
- return e.stepId === IS ? he(e.entry, {
19650
+ var BS = "object-detection";
19651
+ function VS(e) {
19652
+ return e.stepId === BS ? he(e.entry, {
19635
19653
  labels: [],
19636
19654
  classMap: Ie
19637
19655
  }) : [];
19638
19656
  }
19639
- var RS = [
19657
+ var HS = [
19640
19658
  "onnx",
19641
19659
  "coreml",
19642
19660
  "openvino",
19643
19661
  "tflite",
19644
19662
  "pt"
19645
19663
  ];
19646
- function zS(e) {
19647
- return RS.filter((t) => e.formats[t] !== void 0);
19664
+ function US(e) {
19665
+ return HS.filter((t) => e.formats[t] !== void 0);
19648
19666
  }
19649
- function BS(e, t) {
19667
+ function WS(e, t) {
19650
19668
  let n = e[t];
19651
19669
  if (n === void 0) return [];
19652
19670
  let r = [];
@@ -19657,7 +19675,7 @@ function BS(e, t) {
19657
19675
  });
19658
19676
  return r.toSorted((e, t) => e.nodeId.localeCompare(t.nodeId) || e.format.localeCompare(t.format));
19659
19677
  }
19660
- function VS(e) {
19678
+ function GS(e) {
19661
19679
  let t = /* @__PURE__ */ new Set(), n = [];
19662
19680
  for (let r of e.slots) for (let e of r.addons) t.has(e.id) || (t.add(e.id), n.push({
19663
19681
  id: e.id,
@@ -19666,7 +19684,7 @@ function VS(e) {
19666
19684
  }));
19667
19685
  return n;
19668
19686
  }
19669
- function HS(e) {
19687
+ function KS(e) {
19670
19688
  let t = {};
19671
19689
  for (let n of e.slots) for (let e of n.addons) typeof e.defaultModelId != "string" || e.defaultModelId.length === 0 || (t[e.id] = {
19672
19690
  id: e.id,
@@ -19681,7 +19699,7 @@ function HS(e) {
19681
19699
  });
19682
19700
  return t;
19683
19701
  }
19684
- function US(e, t) {
19702
+ function qS(e, t) {
19685
19703
  return {
19686
19704
  format: e,
19687
19705
  sizeMB: t.sizeMB,
@@ -19690,14 +19708,14 @@ function US(e, t) {
19690
19708
  ...t.precision === void 0 ? {} : { precision: t.precision }
19691
19709
  };
19692
19710
  }
19693
- function WS(e) {
19694
- let t = RS.flatMap((t) => {
19711
+ function JS(e) {
19712
+ let t = HS.flatMap((t) => {
19695
19713
  let n = e[t];
19696
- return n === void 0 ? [] : [US(t, n)];
19697
- }), n = Object.entries(e).filter(([e]) => !RS.includes(e)).map(([e, t]) => US(e, t));
19714
+ return n === void 0 ? [] : [qS(t, n)];
19715
+ }), n = Object.entries(e).filter(([e]) => !HS.includes(e)).map(([e, t]) => qS(e, t));
19698
19716
  return [...t, ...n];
19699
19717
  }
19700
- function GS(e) {
19718
+ function YS(e) {
19701
19719
  let t = [];
19702
19720
  for (let n of e.slots) for (let e of n.addons) for (let n of e.models) {
19703
19721
  if (n.legacy === !0) continue;
@@ -19708,29 +19726,29 @@ function GS(e) {
19708
19726
  stepName: e.name,
19709
19727
  modelId: n.id,
19710
19728
  name: n.name,
19711
- formats: WS(n.formats),
19712
- group: qS(r, n.group),
19713
- ...KS(n.suppliesSteps)
19729
+ formats: JS(n.formats),
19730
+ group: ZS(r, n.group),
19731
+ ...XS(n.suppliesSteps)
19714
19732
  });
19715
19733
  }
19716
19734
  return t;
19717
19735
  }
19718
- function KS(e) {
19736
+ function XS(e) {
19719
19737
  return e !== void 0 && e.length > 0 ? { supplies: e } : {};
19720
19738
  }
19721
- function qS(e, t) {
19739
+ function ZS(e, t) {
19722
19740
  if (t !== void 0) return e === "camstack" ? t : {
19723
19741
  ...t,
19724
19742
  family: `${e}:${t.family}`
19725
19743
  };
19726
19744
  }
19727
- function JS(e, t) {
19745
+ function QS(e, t) {
19728
19746
  let n = /^(scrypted|frigate|custom):(.+)$/i.exec(e);
19729
19747
  if (n === null) return t;
19730
19748
  let r = n[2];
19731
19749
  return r === "yolov9" ? "YOLOv9" : r === "yolo26" ? "YOLO26" : r === "ssdlite-mobiledet" ? "SSDLite MobileDet" : r === "yolonas" ? "YOLO-NAS" : r.toUpperCase();
19732
19750
  }
19733
- function YS(e) {
19751
+ function $S(e) {
19734
19752
  let t = /* @__PURE__ */ new Set(), n = [];
19735
19753
  for (let r of e) t.has(r.stepId) || (t.add(r.stepId), n.push({
19736
19754
  id: r.stepId,
@@ -19738,16 +19756,16 @@ function YS(e) {
19738
19756
  }));
19739
19757
  return n;
19740
19758
  }
19741
- function XS(e, t) {
19759
+ function eC(e, t) {
19742
19760
  return e.filter((e) => e.stepId === t);
19743
19761
  }
19744
- function ZS(e) {
19762
+ function tC(e) {
19745
19763
  return e.filter((e) => e.group !== void 0);
19746
19764
  }
19747
- function QS(e) {
19765
+ function nC(e) {
19748
19766
  return e.filter((e) => e.group === void 0);
19749
19767
  }
19750
- function $S(e) {
19768
+ function rC(e) {
19751
19769
  let t = {};
19752
19770
  for (let n of e.formats) t[n.format] = { sizeMB: n.sizeMB };
19753
19771
  return {
@@ -19757,29 +19775,29 @@ function $S(e) {
19757
19775
  formats: t
19758
19776
  };
19759
19777
  }
19760
- function eC(e) {
19778
+ function iC(e) {
19761
19779
  return e <= 0 ? "—" : e >= 1e3 ? `${(e / 1e3).toFixed(2)} GB` : `${e.toFixed(e >= 100 ? 0 : 1)} MB`;
19762
19780
  }
19763
19781
  //#endregion
19764
19782
  //#region src/ui/api.ts
19765
- var tC = "model-studio";
19766
- function nC(e) {
19783
+ var aC = "model-studio";
19784
+ function oC(e) {
19767
19785
  return e;
19768
19786
  }
19769
- function rC(e) {
19770
- return nC(e).addons.custom;
19787
+ function sC(e) {
19788
+ return oC(e).addons.custom;
19771
19789
  }
19772
- async function iC(e, t, n) {
19773
- return rC(e).mutate({
19774
- addonId: tC,
19790
+ async function cC(e, t, n) {
19791
+ return sC(e).mutate({
19792
+ addonId: aC,
19775
19793
  action: t,
19776
19794
  input: n
19777
19795
  });
19778
19796
  }
19779
- function aC(e) {
19797
+ function lC(e) {
19780
19798
  return typeof e == "object" && !!e && !Array.isArray(e);
19781
19799
  }
19782
- function oC(e, t, n) {
19800
+ function uC(e, t, n) {
19783
19801
  let r = [];
19784
19802
  for (let [i, a] of t.entries()) {
19785
19803
  let t = e.safeParse(a);
@@ -19787,7 +19805,7 @@ function oC(e, t, n) {
19787
19805
  }
19788
19806
  return r;
19789
19807
  }
19790
- function sC(e, t, n) {
19808
+ function dC(e, t, n) {
19791
19809
  let r = e.safeParse(t);
19792
19810
  if (!r.success) {
19793
19811
  let e = r.error.issues.map((e) => `${e.path.join(".") || "<root>"}: ${e.message}`).join("; ");
@@ -19795,34 +19813,34 @@ function sC(e, t, n) {
19795
19813
  }
19796
19814
  return r.data;
19797
19815
  }
19798
- function cC(e) {
19799
- return Array.isArray(e) ? oC(pe, e, "listCustomModels") : [];
19816
+ function fC(e) {
19817
+ return Array.isArray(e) ? uC(pe, e, "listCustomModels") : [];
19800
19818
  }
19801
- function lC(e) {
19802
- if (!aC(e)) return {};
19819
+ function pC(e) {
19820
+ if (!lC(e)) return {};
19803
19821
  let t = {};
19804
19822
  for (let [n, r] of Object.entries(e)) {
19805
- if (!aC(r)) {
19823
+ if (!lC(r)) {
19806
19824
  console.warn(`[model-studio] listAvailability: dropping "${n}" — not an object`, r);
19807
19825
  continue;
19808
19826
  }
19809
19827
  let e = {};
19810
19828
  for (let [t, i] of Object.entries(r)) {
19811
- let r = TS.safeParse(i);
19829
+ let r = kS.safeParse(i);
19812
19830
  r.success ? e[t] = r.data : console.warn(`[model-studio] listAvailability: dropping ${n}/${t} — ${r.error.issues.map((e) => `${e.path.join(".") || "<root>"}: ${e.message}`).join("; ")}`);
19813
19831
  }
19814
19832
  t[n] = e;
19815
19833
  }
19816
19834
  return t;
19817
19835
  }
19818
- async function uC(e) {
19819
- return cC(await iC(e, "listCustomModels", void 0));
19836
+ async function mC(e) {
19837
+ return fC(await cC(e, "listCustomModels", void 0));
19820
19838
  }
19821
- async function dC(e) {
19822
- return lC(await iC(e, "listAvailability", void 0));
19839
+ async function hC(e) {
19840
+ return pC(await cC(e, "listAvailability", void 0));
19823
19841
  }
19824
- function fC(e) {
19825
- return Array.isArray(e) ? e.filter(aC).flatMap((e) => {
19842
+ function gC(e) {
19843
+ return Array.isArray(e) ? e.filter(lC).flatMap((e) => {
19826
19844
  let t = e.format === "openvino" || e.format === "coreml" ? e.format : null;
19827
19845
  return t === null ? [] : [{
19828
19846
  format: t,
@@ -19832,104 +19850,104 @@ function fC(e) {
19832
19850
  }];
19833
19851
  }) : [];
19834
19852
  }
19835
- async function pC(e, t) {
19836
- let n = await iC(e, "registerCustomModel", t);
19837
- return aC(n) ? { conversions: fC(n.conversions) } : { conversions: [] };
19853
+ async function _C(e, t) {
19854
+ let n = await cC(e, "registerCustomModel", t);
19855
+ return lC(n) ? { conversions: gC(n.conversions) } : { conversions: [] };
19838
19856
  }
19839
- async function mC(e, t) {
19840
- let n = await iC(e, "renameCustomModel", t);
19841
- if (!aC(n)) throw Error("renameCustomModel: unexpected response shape");
19857
+ async function vC(e, t) {
19858
+ let n = await cC(e, "renameCustomModel", t);
19859
+ if (!lC(n)) throw Error("renameCustomModel: unexpected response shape");
19842
19860
  return {
19843
- modelId: EC(n, "modelId"),
19844
- name: EC(n, "name")
19861
+ modelId: AC(n, "modelId"),
19862
+ name: AC(n, "name")
19845
19863
  };
19846
19864
  }
19847
- async function hC(e, t) {
19848
- await iC(e, "removeModelFromNode", t);
19865
+ async function yC(e, t) {
19866
+ await cC(e, "removeModelFromNode", t);
19849
19867
  }
19850
- async function gC(e, t, n) {
19851
- let r = await iC(e, "ensureModelFormats", {
19868
+ async function bC(e, t, n) {
19869
+ let r = await cC(e, "ensureModelFormats", {
19852
19870
  modelId: t,
19853
19871
  formats: n
19854
19872
  });
19855
- return aC(r) ? { conversions: fC(r.conversions) } : { conversions: [] };
19873
+ return lC(r) ? { conversions: gC(r.conversions) } : { conversions: [] };
19856
19874
  }
19857
- function _C(e) {
19858
- return nC(e).pipelineExecutor.getSchema;
19875
+ function xC(e) {
19876
+ return oC(e).pipelineExecutor.getSchema;
19859
19877
  }
19860
- function vC(e) {
19861
- return aC(e) && Array.isArray(e.slots);
19878
+ function SC(e) {
19879
+ return lC(e) && Array.isArray(e.slots);
19862
19880
  }
19863
- async function yC(e) {
19864
- let t = await _C(e).query();
19865
- if (!vC(t)) throw Error("pipeline schema unavailable — cannot enumerate step ids");
19866
- return VS(t);
19881
+ async function CC(e) {
19882
+ let t = await xC(e).query();
19883
+ if (!SC(t)) throw Error("pipeline schema unavailable — cannot enumerate step ids");
19884
+ return GS(t);
19867
19885
  }
19868
- function bC(e) {
19869
- return aC(e) && Array.isArray(e.slots);
19886
+ function wC(e) {
19887
+ return lC(e) && Array.isArray(e.slots);
19870
19888
  }
19871
- async function xC(e, t) {
19872
- return (await SC(e, t)).seeds;
19889
+ async function TC(e, t) {
19890
+ return (await EC(e, t)).seeds;
19873
19891
  }
19874
- async function SC(e, t) {
19875
- let n = await _C(e).query(t === void 0 ? void 0 : { nodeId: t });
19876
- if (!bC(n)) throw Error("pipeline schema unavailable — cannot list CamStack seeds");
19892
+ async function EC(e, t) {
19893
+ let n = await xC(e).query(t === void 0 ? void 0 : { nodeId: t });
19894
+ if (!wC(n)) throw Error("pipeline schema unavailable — cannot list CamStack seeds");
19877
19895
  return {
19878
- seeds: GS(n),
19879
- stepCatalogs: HS(n)
19896
+ seeds: YS(n),
19897
+ stepCatalogs: KS(n)
19880
19898
  };
19881
19899
  }
19882
- async function CC(e, t) {
19883
- await nC(e).pipelineExecutor.downloadModel.mutate(t);
19900
+ async function DC(e, t) {
19901
+ await oC(e).pipelineExecutor.downloadModel.mutate(t);
19884
19902
  }
19885
- async function wC(e, t) {
19886
- let n = await iC(e, "deleteSeedFromNode", t);
19887
- if (!aC(n) || n.success !== !0) throw Error("deleteSeedFromNode: unexpected response");
19903
+ async function OC(e, t) {
19904
+ let n = await cC(e, "deleteSeedFromNode", t);
19905
+ if (!lC(n) || n.success !== !0) throw Error("deleteSeedFromNode: unexpected response");
19888
19906
  }
19889
- var TC = 512 * 1024;
19890
- function EC(e, t) {
19907
+ var kC = 512 * 1024;
19908
+ function AC(e, t) {
19891
19909
  let n = e[t];
19892
19910
  if (typeof n != "string") throw Error(`upload: missing "${t}" in response`);
19893
19911
  return n;
19894
19912
  }
19895
- async function DC(e, t, n) {
19896
- let r = await iC(e, "beginModelUpload", {
19913
+ async function jC(e, t, n) {
19914
+ let r = await cC(e, "beginModelUpload", {
19897
19915
  filename: t.name,
19898
19916
  totalBytes: t.size
19899
19917
  });
19900
- if (!aC(r)) throw Error("beginModelUpload: unexpected response shape");
19901
- let i = EC(r, "uploadId");
19918
+ if (!lC(r)) throw Error("beginModelUpload: unexpected response shape");
19919
+ let i = AC(r, "uploadId");
19902
19920
  try {
19903
19921
  let r = new Uint8Array(await t.arrayBuffer());
19904
- for (let t = 0; t < r.length; t += TC) await iC(e, "appendModelUpload", {
19922
+ for (let t = 0; t < r.length; t += kC) await cC(e, "appendModelUpload", {
19905
19923
  uploadId: i,
19906
- chunkBase64: OC(r.subarray(t, t + TC))
19907
- }), n?.(Math.min(t + TC, r.length), r.length);
19908
- let a = await iC(e, "commitModelUpload", { uploadId: i });
19909
- if (!aC(a)) throw Error("commitModelUpload: unexpected response shape");
19924
+ chunkBase64: MC(r.subarray(t, t + kC))
19925
+ }), n?.(Math.min(t + kC, r.length), r.length);
19926
+ let a = await cC(e, "commitModelUpload", { uploadId: i });
19927
+ if (!lC(a)) throw Error("commitModelUpload: unexpected response shape");
19910
19928
  return {
19911
- filename: EC(a, "filename"),
19929
+ filename: AC(a, "filename"),
19912
19930
  bytes: typeof a.bytes == "number" ? a.bytes : t.size,
19913
- sha256: EC(a, "sha256")
19931
+ sha256: AC(a, "sha256")
19914
19932
  };
19915
19933
  } catch (t) {
19916
- throw await iC(e, "abortModelUpload", { uploadId: i }).catch(() => void 0), t;
19934
+ throw await cC(e, "abortModelUpload", { uploadId: i }).catch(() => void 0), t;
19917
19935
  }
19918
19936
  }
19919
- function OC(e) {
19937
+ function MC(e) {
19920
19938
  let t = "", n = 32768;
19921
19939
  for (let r = 0; r < e.length; r += n) t += String.fromCharCode(...e.subarray(r, r + n));
19922
19940
  return btoa(t);
19923
19941
  }
19924
- function kC(e) {
19925
- return nC(e).live.onEvent;
19942
+ function NC(e) {
19943
+ return oC(e).live.onEvent;
19926
19944
  }
19927
- function AC(e, t, n) {
19928
- let r = kC(e);
19945
+ function PC(e, t, n) {
19946
+ let r = NC(e);
19929
19947
  try {
19930
19948
  return r.subscribe({ category: "model-convert.progress" }, {
19931
19949
  onData: (e) => {
19932
- let n = aC(e.data) ? e.data : void 0;
19950
+ let n = lC(e.data) ? e.data : void 0;
19933
19951
  n !== void 0 && t({
19934
19952
  phase: typeof n.phase == "string" ? n.phase : "working",
19935
19953
  pct: typeof n.pct == "number" ? n.pct : void 0,
@@ -19944,17 +19962,17 @@ function AC(e, t, n) {
19944
19962
  return n?.(e), null;
19945
19963
  }
19946
19964
  }
19947
- async function jC(e, t) {
19948
- let n = await iC(e, "importFrigateCatalogModel", t);
19949
- if (!aC(n)) throw Error("importFrigateCatalogModel: unexpected response shape");
19965
+ async function FC(e, t) {
19966
+ let n = await cC(e, "importFrigateCatalogModel", t);
19967
+ if (!lC(n)) throw Error("importFrigateCatalogModel: unexpected response shape");
19950
19968
  return {
19951
- modelId: EC(n, "modelId"),
19969
+ modelId: AC(n, "modelId"),
19952
19970
  bytes: typeof n.bytes == "number" ? n.bytes : 0
19953
19971
  };
19954
19972
  }
19955
- async function MC(e) {
19956
- let t = await iC(e, "frigatePlusStatus", void 0);
19957
- return aC(t) ? {
19973
+ async function IC(e) {
19974
+ let t = await cC(e, "frigatePlusStatus", void 0);
19975
+ return lC(t) ? {
19958
19976
  configured: t.configured === !0,
19959
19977
  keyFormatValid: t.keyFormatValid === !0
19960
19978
  } : {
@@ -19962,9 +19980,9 @@ async function MC(e) {
19962
19980
  keyFormatValid: !1
19963
19981
  };
19964
19982
  }
19965
- async function NC(e) {
19966
- let t = await iC(e, "frigatePlusTest", void 0);
19967
- return aC(t) ? {
19983
+ async function LC(e) {
19984
+ let t = await cC(e, "frigatePlusTest", void 0);
19985
+ return lC(t) ? {
19968
19986
  ok: t.ok === !0,
19969
19987
  ...typeof t.error == "string" ? { error: t.error } : {}
19970
19988
  } : {
@@ -19972,70 +19990,70 @@ async function NC(e) {
19972
19990
  error: "unexpected response"
19973
19991
  };
19974
19992
  }
19975
- async function PC(e) {
19976
- let t = await iC(e, "frigatePlusListModels", void 0);
19977
- return Array.isArray(t) ? oC(MS, t, "frigatePlusListModels") : [];
19993
+ async function RC(e) {
19994
+ let t = await cC(e, "frigatePlusListModels", void 0);
19995
+ return Array.isArray(t) ? uC(IS, t, "frigatePlusListModels") : [];
19978
19996
  }
19979
- async function FC(e, t) {
19980
- let n = await iC(e, "importFrigatePlusModel", t);
19981
- if (!aC(n)) throw Error("importFrigatePlusModel: unexpected response shape");
19997
+ async function zC(e, t) {
19998
+ let n = await cC(e, "importFrigatePlusModel", t);
19999
+ if (!lC(n)) throw Error("importFrigatePlusModel: unexpected response shape");
19982
20000
  return {
19983
- modelId: EC(n, "modelId"),
20001
+ modelId: AC(n, "modelId"),
19984
20002
  bytes: typeof n.bytes == "number" ? n.bytes : 0,
19985
- conversions: fC(n.conversions)
20003
+ conversions: gC(n.conversions)
19986
20004
  };
19987
20005
  }
19988
- async function IC(e, t) {
19989
- await nC(e).addonSettings.updateGlobalSettings.mutate({
19990
- addonId: tC,
20006
+ async function BC(e, t) {
20007
+ await oC(e).addonSettings.updateGlobalSettings.mutate({
20008
+ addonId: aC,
19991
20009
  patch: { frigatePlusApiKey: t }
19992
20010
  });
19993
20011
  }
19994
- function LC(e) {
19995
- return aC(e) && Array.isArray(e.devices);
20012
+ function VC(e) {
20013
+ return lC(e) && Array.isArray(e.devices);
19996
20014
  }
19997
- async function RC(e, t) {
19998
- let n = await nC(e).pipelineOrchestrator.getNodeInferenceDevices.query({ nodeId: t });
19999
- return LC(n) ? n.devices : [];
20015
+ async function HC(e, t) {
20016
+ let n = await oC(e).pipelineOrchestrator.getNodeInferenceDevices.query({ nodeId: t });
20017
+ return VC(n) ? n.devices : [];
20000
20018
  }
20001
- async function zC(e, t) {
20002
- let n = await nC(e).pipelineExecutor.listLoadedEngines.query({ nodeId: t });
20003
- return sC(Re.methods.listLoadedEngines.output, n, "listLoadedEngines");
20019
+ async function UC(e, t) {
20020
+ let n = await oC(e).pipelineExecutor.listLoadedEngines.query({ nodeId: t });
20021
+ return dC(Re.methods.listLoadedEngines.output, n, "listLoadedEngines");
20004
20022
  }
20005
- async function BC(e, t) {
20006
- await nC(e).pipelineOrchestrator.setAgentInferenceDevices.mutate(t);
20023
+ async function WC(e, t) {
20024
+ await oC(e).pipelineOrchestrator.setAgentInferenceDevices.mutate(t);
20007
20025
  }
20008
- async function VC(e) {
20009
- return ce(await nC(e).addonSettings.getGlobalSettings.query({ addonId: "pipeline-orchestrator" }));
20026
+ async function GC(e) {
20027
+ return ce(await oC(e).addonSettings.getGlobalSettings.query({ addonId: "pipeline-orchestrator" }));
20010
20028
  }
20011
- async function HC(e, t) {
20012
- await nC(e).addonSettings.updateGlobalSettings.mutate({
20029
+ async function KC(e, t) {
20030
+ await oC(e).addonSettings.updateGlobalSettings.mutate({
20013
20031
  addonId: "pipeline-orchestrator",
20014
20032
  patch: t
20015
20033
  });
20016
20034
  }
20017
- function UC(e) {
20018
- return aC(e) && Array.isArray(e.slots);
20035
+ function qC(e) {
20036
+ return lC(e) && Array.isArray(e.slots);
20019
20037
  }
20020
- async function WC(e, t, n) {
20021
- let r = await _C(e).query(n === void 0 ? void 0 : { nodeId: n });
20022
- if (!UC(r)) return null;
20038
+ async function JC(e, t, n) {
20039
+ let r = await xC(e).query(n === void 0 ? void 0 : { nodeId: n });
20040
+ if (!qC(r)) return null;
20023
20041
  for (let e of r.slots) for (let n of e.addons) if (n.id === t) return n;
20024
20042
  return null;
20025
20043
  }
20026
- async function GC(e) {
20027
- let t = await iC(e, "tfliteSupport", {});
20028
- return !aC(t) || !Array.isArray(t.nodes) ? [] : t.nodes.filter((e) => typeof e == "string");
20044
+ async function YC(e) {
20045
+ let t = await cC(e, "tfliteSupport", {});
20046
+ return !lC(t) || !Array.isArray(t.nodes) ? [] : t.nodes.filter((e) => typeof e == "string");
20029
20047
  }
20030
- async function KC(e) {
20031
- let t = await iC(e, "listScryptedCatalog", void 0);
20032
- return !aC(t) || !Array.isArray(t.entries) || !Array.isArray(t.drift) ? {
20048
+ async function XC(e) {
20049
+ let t = await cC(e, "listScryptedCatalog", void 0);
20050
+ return !lC(t) || !Array.isArray(t.entries) || !Array.isArray(t.drift) ? {
20033
20051
  entries: [],
20034
20052
  drift: []
20035
20053
  } : {
20036
- entries: oC(kS, t.entries, "listScryptedCatalog.entries"),
20037
- drift: t.drift.filter(aC).map((e) => {
20038
- let t = CS({
20054
+ entries: uC(NS, t.entries, "listScryptedCatalog.entries"),
20055
+ drift: t.drift.filter(lC).map((e) => {
20056
+ let t = DS({
20039
20057
  manifestId: typeof e.manifestId == "string" ? e.manifestId : "",
20040
20058
  status: typeof e.status == "string" ? e.status : "",
20041
20059
  ...typeof e.details == "string" ? { details: e.details } : {}
@@ -20048,8 +20066,8 @@ async function KC(e) {
20048
20066
  })
20049
20067
  };
20050
20068
  }
20051
- async function qC(e, t) {
20052
- return sC(pe, await iC(e, "importScryptedCatalogModel", {
20069
+ async function ZC(e, t) {
20070
+ return dC(pe, await cC(e, "importScryptedCatalogModel", {
20053
20071
  manifestId: t.manifestId,
20054
20072
  ...t.name === void 0 ? {} : { name: t.name },
20055
20073
  ...t.targetNodeId === void 0 ? {} : { targetNodeId: t.targetNodeId }
@@ -20057,7 +20075,7 @@ async function qC(e, t) {
20057
20075
  }
20058
20076
  //#endregion
20059
20077
  //#region src/components/NodeSelector.tsx
20060
- function JC({ selectedNodeId: e, onSelect: t }) {
20078
+ function QC({ selectedNodeId: e, onSelect: t }) {
20061
20079
  return /* @__PURE__ */ z(Xx, {
20062
20080
  selectedNodeId: e,
20063
20081
  onSelect: t,
@@ -20067,7 +20085,7 @@ function JC({ selectedNodeId: e, onSelect: t }) {
20067
20085
  }
20068
20086
  //#endregion
20069
20087
  //#region src/components/Form.tsx
20070
- function YC({ label: e, children: t }) {
20088
+ function $C({ label: e, children: t }) {
20071
20089
  return /* @__PURE__ */ B("label", {
20072
20090
  className: "space-y-1 block",
20073
20091
  children: [/* @__PURE__ */ z("span", {
@@ -20076,8 +20094,8 @@ function YC({ label: e, children: t }) {
20076
20094
  }), t]
20077
20095
  });
20078
20096
  }
20079
- function XC({ label: e, value: t, onChange: n, placeholder: r }) {
20080
- return /* @__PURE__ */ z(YC, {
20097
+ function ew({ label: e, value: t, onChange: n, placeholder: r }) {
20098
+ return /* @__PURE__ */ z($C, {
20081
20099
  label: e,
20082
20100
  children: /* @__PURE__ */ z("input", {
20083
20101
  type: "text",
@@ -20088,8 +20106,8 @@ function XC({ label: e, value: t, onChange: n, placeholder: r }) {
20088
20106
  })
20089
20107
  });
20090
20108
  }
20091
- function ZC({ label: e, value: t, onChange: n, min: r, max: i, step: a }) {
20092
- return /* @__PURE__ */ z(YC, {
20109
+ function tw({ label: e, value: t, onChange: n, min: r, max: i, step: a }) {
20110
+ return /* @__PURE__ */ z($C, {
20093
20111
  label: e,
20094
20112
  children: /* @__PURE__ */ z("input", {
20095
20113
  type: "number",
@@ -20107,14 +20125,14 @@ function ZC({ label: e, value: t, onChange: n, min: r, max: i, step: a }) {
20107
20125
  }
20108
20126
  //#endregion
20109
20127
  //#region src/components/ImportProgressModal.tsx
20110
- var QC = {
20128
+ var nw = {
20111
20129
  pending: "bg-surface-hover",
20112
20130
  active: "bg-warning animate-pulse",
20113
20131
  done: "bg-success",
20114
20132
  error: "bg-danger",
20115
20133
  skipped: "bg-surface-hover"
20116
20134
  };
20117
- function $C({ title: e, steps: t, progress: n, logs: r, status: i, errorMessage: a, onClose: o }) {
20135
+ function rw({ title: e, steps: t, progress: n, logs: r, status: i, errorMessage: a, onClose: o }) {
20118
20136
  return /* @__PURE__ */ z("div", {
20119
20137
  className: "fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-4",
20120
20138
  role: "dialog",
@@ -20144,7 +20162,7 @@ function $C({ title: e, steps: t, progress: n, logs: r, status: i, errorMessage:
20144
20162
  className: "space-y-1.5",
20145
20163
  children: t.map((e) => /* @__PURE__ */ B("li", {
20146
20164
  className: "flex items-center gap-2 text-xs",
20147
- children: [/* @__PURE__ */ z("span", { className: `w-1.5 h-1.5 rounded-full shrink-0 ${QC[e.status]}` }), /* @__PURE__ */ B("span", {
20165
+ children: [/* @__PURE__ */ z("span", { className: `w-1.5 h-1.5 rounded-full shrink-0 ${nw[e.status]}` }), /* @__PURE__ */ B("span", {
20148
20166
  className: e.status === "active" ? "text-foreground font-medium" : e.status === "pending" || e.status === "skipped" ? "text-foreground-subtle" : "text-foreground",
20149
20167
  children: [e.label, e.status === "skipped" ? " (skipped)" : ""]
20150
20168
  })]
@@ -20189,7 +20207,7 @@ function $C({ title: e, steps: t, progress: n, logs: r, status: i, errorMessage:
20189
20207
  })
20190
20208
  });
20191
20209
  }
20192
- function ew(e, t, n = 400) {
20210
+ function iw(e, t, n = 400) {
20193
20211
  let r = t.log !== void 0 && t.log.length > 0 ? t.log : t.phase === "log" ? t.detail ?? "" : `[${t.phase}]${t.detail === void 0 ? "" : ` ${t.detail}`}${t.pct === void 0 ? "" : ` ${t.pct.toFixed(0)}%`}`;
20194
20212
  if (r.trim().length === 0) return e;
20195
20213
  let i = [...e, r];
@@ -20197,13 +20215,13 @@ function ew(e, t, n = 400) {
20197
20215
  }
20198
20216
  //#endregion
20199
20217
  //#region src/ui/operation-sessions.ts
20200
- var tw = 80, nw = [], rw = /* @__PURE__ */ new Set();
20201
- function iw() {
20202
- for (let e of rw) e();
20218
+ var aw = 80, ow = [], sw = /* @__PURE__ */ new Set();
20219
+ function cw() {
20220
+ for (let e of sw) e();
20203
20221
  }
20204
- function aw(e) {
20222
+ function lw(e) {
20205
20223
  let t = `op-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
20206
- return nw = [{
20224
+ return ow = [{
20207
20225
  id: t,
20208
20226
  kind: e.kind,
20209
20227
  title: e.title,
@@ -20213,40 +20231,40 @@ function aw(e) {
20213
20231
  status: "running",
20214
20232
  logs: e.logs ?? [],
20215
20233
  startedAt: Date.now()
20216
- }, ...nw].slice(0, tw), iw(), t;
20234
+ }, ...ow].slice(0, aw), cw(), t;
20217
20235
  }
20218
- function ow(e, t) {
20219
- nw = nw.map((n) => n.id === e ? {
20236
+ function uw(e, t) {
20237
+ ow = ow.map((n) => n.id === e ? {
20220
20238
  ...n,
20221
20239
  logs: [...n.logs, t]
20222
- } : n), iw();
20240
+ } : n), cw();
20223
20241
  }
20224
- function sw(e, t) {
20225
- nw = nw.map((n) => n.id === e ? {
20242
+ function dw(e, t) {
20243
+ ow = ow.map((n) => n.id === e ? {
20226
20244
  ...n,
20227
20245
  status: t.status,
20228
20246
  ...t.errorMessage === void 0 ? {} : { errorMessage: t.errorMessage },
20229
20247
  finishedAt: Date.now()
20230
- } : n), iw();
20248
+ } : n), cw();
20231
20249
  }
20232
- function cw(e, t) {
20233
- nw = nw.map((n) => n.id === e ? {
20250
+ function fw(e, t) {
20251
+ ow = ow.map((n) => n.id === e ? {
20234
20252
  ...n,
20235
20253
  logs: t
20236
- } : n), iw();
20254
+ } : n), cw();
20237
20255
  }
20238
20256
  //#endregion
20239
20257
  //#region src/components/OperationModalProvider.tsx
20240
20258
  t();
20241
- var lw = p(null);
20242
- function uw() {
20243
- let e = c(lw);
20259
+ var pw = p(null);
20260
+ function mw() {
20261
+ let e = c(pw);
20244
20262
  if (e === null) throw Error("useOperationModal: missing OperationModalProvider");
20245
20263
  return e;
20246
20264
  }
20247
- function dw({ children: e }) {
20265
+ function hw({ children: e }) {
20248
20266
  let [t, r] = a(null), i = n((e) => {
20249
- let t = e.initialLog === void 0 ? [] : [e.initialLog], n = aw({
20267
+ let t = e.initialLog === void 0 ? [] : [e.initialLog], n = lw({
20250
20268
  kind: e.kind,
20251
20269
  title: e.title,
20252
20270
  ...e.modelId === void 0 ? {} : { modelId: e.modelId },
@@ -20268,27 +20286,27 @@ function dw({ children: e }) {
20268
20286
  steps: t([...n.steps])
20269
20287
  });
20270
20288
  }, []), s = n((e, t) => {
20271
- ow(e, t), r((n) => n === null || n.sessionId !== e ? n : {
20289
+ uw(e, t), r((n) => n === null || n.sessionId !== e ? n : {
20272
20290
  ...n,
20273
20291
  logs: [...n.logs, t]
20274
20292
  });
20275
20293
  }, []), c = n((e, t) => {
20276
20294
  r((n) => {
20277
20295
  if (n === null || n.sessionId !== e) return n;
20278
- let r = ew(n.logs, t);
20279
- return cw(e, r), {
20296
+ let r = iw(n.logs, t);
20297
+ return fw(e, r), {
20280
20298
  ...n,
20281
20299
  progress: t.phase === "log" ? n.progress : t,
20282
20300
  logs: r
20283
20301
  };
20284
20302
  });
20285
20303
  }, []), u = n((e) => {
20286
- sw(e, { status: "success" }), r((t) => t !== null && t.sessionId === e ? {
20304
+ dw(e, { status: "success" }), r((t) => t !== null && t.sessionId === e ? {
20287
20305
  ...t,
20288
20306
  status: "success"
20289
20307
  } : t);
20290
20308
  }, []), d = n((e, t) => {
20291
- sw(e, {
20309
+ dw(e, {
20292
20310
  status: "error",
20293
20311
  errorMessage: t
20294
20312
  }), r((n) => n !== null && n.sessionId === e ? {
@@ -20333,9 +20351,9 @@ function dw({ children: e }) {
20333
20351
  d,
20334
20352
  f
20335
20353
  ]);
20336
- return /* @__PURE__ */ B(lw.Provider, {
20354
+ return /* @__PURE__ */ B(pw.Provider, {
20337
20355
  value: p,
20338
- children: [e, t !== null && /* @__PURE__ */ z($C, {
20356
+ children: [e, t !== null && /* @__PURE__ */ z(rw, {
20339
20357
  title: t.title,
20340
20358
  steps: t.steps,
20341
20359
  progress: t.progress,
@@ -20348,22 +20366,22 @@ function dw({ children: e }) {
20348
20366
  }
20349
20367
  //#endregion
20350
20368
  //#region src/scrypted/scrypted-catalog-selectors.ts
20351
- function fw(e) {
20369
+ function gw(e) {
20352
20370
  return typeof e == "string" ? e.includes("x") || e.includes("×") ? e.replace("×", "x") : e : `${e.width}x${e.height}`;
20353
20371
  }
20354
- function pw(e, t) {
20372
+ function _w(e, t) {
20355
20373
  return e.find((e) => e.manifestId === t)?.status;
20356
20374
  }
20357
- function mw(e) {
20375
+ function vw(e) {
20358
20376
  if (e.imported) return "Already imported on this hub.";
20359
20377
  if (e.registryKnown, e.availabilityKnown, e.driftStatus !== "ok") return e.driftStatus === "missing" ? "Import blocked: remote artifact is missing from the verified tree." : e.driftStatus === "size-changed" ? "Import blocked: remote artifact size no longer matches the verified manifesto." : e.driftStatus === "unavailable" ? "Import blocked: catalog drift is unavailable and cannot be verified." : "Import blocked: catalog drift is unknown and cannot be verified.";
20360
20378
  }
20361
- function hw(e, t) {
20379
+ function yw(e, t) {
20362
20380
  return "has" in e ? e.has(t) : e.includes(t);
20363
20381
  }
20364
20382
  //#endregion
20365
20383
  //#region src/scrypted/scrypted-canonical.ts
20366
- var gw = [
20384
+ var bw = [
20367
20385
  "edgetpu",
20368
20386
  "int8",
20369
20387
  "full_integer_quant",
@@ -20371,99 +20389,99 @@ var gw = [
20371
20389
  "float16",
20372
20390
  "float32"
20373
20391
  ];
20374
- function _w(e) {
20392
+ function xw(e) {
20375
20393
  return /^yolov9([tsmc])$/i.exec(e)?.[1]?.toLowerCase() ?? e;
20376
20394
  }
20377
- function vw(e) {
20395
+ function Sw(e) {
20378
20396
  let t = e.toLowerCase();
20379
20397
  return t === "int8" || t === "uint8" || t === "integer_quant" || t === "full_integer_quant" || t === "edgetpu";
20380
20398
  }
20381
- function yw(e) {
20382
- let t = _w(e.family), n = e.inputSize.width === e.inputSize.height ? e.inputSize.width : Math.max(e.inputSize.width, e.inputSize.height), r = `scrypted-yolov9${t}-${e.variant}`;
20383
- return vw(e.precision) && (r += "-int8"), r += `-${n}`, r;
20399
+ function Cw(e) {
20400
+ let t = xw(e.family), n = e.inputSize.width === e.inputSize.height ? e.inputSize.width : Math.max(e.inputSize.width, e.inputSize.height), r = `scrypted-yolov9${t}-${e.variant}`;
20401
+ return Sw(e.precision) && (r += "-int8"), r += `-${n}`, r;
20384
20402
  }
20385
- function bw(e) {
20386
- let t = xS.filter((t) => t.format === "tflite" && yw(t) === e);
20403
+ function ww(e) {
20404
+ let t = TS.filter((t) => t.format === "tflite" && Cw(t) === e);
20387
20405
  if (t.length !== 0) return t.toSorted((e, t) => {
20388
- let n = gw.indexOf(e.precision.toLowerCase()), r = gw.indexOf(t.precision.toLowerCase());
20406
+ let n = bw.indexOf(e.precision.toLowerCase()), r = bw.indexOf(t.precision.toLowerCase());
20389
20407
  return (n === -1 ? 99 : n) - (r === -1 ? 99 : r);
20390
20408
  })[0];
20391
20409
  }
20392
- function xw(e, t) {
20393
- if (t === "tflite") return bw(e)?.id;
20394
- let n = xS.filter((n) => n.format === t && yw(n) === e);
20410
+ function Tw(e, t) {
20411
+ if (t === "tflite") return ww(e)?.id;
20412
+ let n = TS.filter((n) => n.format === t && Cw(n) === e);
20395
20413
  if (n.length !== 0) return n.toSorted((e, t) => e.files.reduce((e, t) => e + t.size, 0) - t.files.reduce((e, t) => e + t.size, 0))[0]?.id;
20396
20414
  }
20397
20415
  //#endregion
20398
20416
  //#region src/scrypted/scrypted-as-variant-sources.ts
20399
- var Sw = new Set([
20417
+ var Ew = new Set([
20400
20418
  "onnx",
20401
20419
  "openvino",
20402
20420
  "coreml",
20403
20421
  "tflite",
20404
20422
  "pt"
20405
- ]), Cw = {
20423
+ ]), Dw = {
20406
20424
  t: "Tiny",
20407
20425
  s: "Small",
20408
20426
  m: "Medium",
20409
20427
  c: "Compact"
20410
20428
  };
20411
- function ww(e) {
20412
- return Sw.has(e);
20429
+ function Ow(e) {
20430
+ return Ew.has(e);
20413
20431
  }
20414
- function Tw(e) {
20432
+ function kw(e) {
20415
20433
  return /^yolov9([tsmc])$/i.exec(e)?.[1]?.toLowerCase() ?? e;
20416
20434
  }
20417
- function Ew(e) {
20435
+ function Aw(e) {
20418
20436
  let t = e.toLowerCase();
20419
20437
  return t === "int8" || t === "uint8" || t === "integer_quant" || t === "full_integer_quant" || t === "edgetpu" ? "int8" : "fp32";
20420
20438
  }
20421
- function Dw(e) {
20422
- let t = fw(e.inputSize), n = /^(\d+)x(\d+)$/i.exec(t);
20439
+ function jw(e) {
20440
+ let t = gw(e.inputSize), n = /^(\d+)x(\d+)$/i.exec(t);
20423
20441
  if (!n) return;
20424
20442
  let r = Number(n[1]), i = Number(n[2]);
20425
20443
  if (!(!Number.isFinite(r) || !Number.isFinite(i))) return r === i ? r : Math.max(r, i);
20426
20444
  }
20427
- function Ow(e) {
20445
+ function Mw(e) {
20428
20446
  let t = e.model.formats[e.format]?.sizeMB;
20429
20447
  return typeof t == "number" && t > 0 ? t : e.files.reduce((e, t) => e + t.size, 0) / 1e6;
20430
20448
  }
20431
- function kw(e, t) {
20432
- let n = Cw[e] ?? e.toUpperCase();
20449
+ function Nw(e, t) {
20450
+ let n = Dw[e] ?? e.toUpperCase();
20433
20451
  return t === "int8" ? `YOLOv9 ${n} · Int8` : `YOLOv9 ${n}`;
20434
20452
  }
20435
- function Aw(e) {
20453
+ function Pw(e) {
20436
20454
  return [
20437
20455
  "yolov9",
20438
- Tw(e.family),
20456
+ kw(e.family),
20439
20457
  e.variant,
20440
- Ew(e.precision),
20441
- String(Dw(e) ?? "")
20458
+ Aw(e.precision),
20459
+ String(jw(e) ?? "")
20442
20460
  ].join("|");
20443
20461
  }
20444
- function jw(e) {
20445
- return yw(e);
20462
+ function Fw(e) {
20463
+ return Cw(e);
20446
20464
  }
20447
- function Mw(e) {
20465
+ function Iw(e) {
20448
20466
  let t = /* @__PURE__ */ new Map();
20449
20467
  for (let n of e) {
20450
- if (!ww(n.format)) continue;
20451
- let e = Tw(n.family), r = Ew(n.precision), i = Aw(n), a = Ow(n), o = t.get(i);
20468
+ if (!Ow(n.format)) continue;
20469
+ let e = kw(n.family), r = Aw(n.precision), i = Pw(n), a = Mw(n), o = t.get(i);
20452
20470
  if (o) {
20453
20471
  let e = o.formats[n.format];
20454
20472
  (e === void 0 || a < e.sizeMB) && (o.formats[n.format] = { sizeMB: a });
20455
20473
  continue;
20456
20474
  }
20457
20475
  t.set(i, {
20458
- sourceId: jw(n),
20459
- name: kw(e, r),
20476
+ sourceId: Fw(n),
20477
+ name: Nw(e, r),
20460
20478
  formats: { [n.format]: { sizeMB: a } },
20461
20479
  group: {
20462
20480
  family: "yolov9",
20463
20481
  tier: e,
20464
20482
  precision: r,
20465
20483
  ...n.variant === "relu_test" ? { optimization: "test" } : {},
20466
- ...Dw(n) === void 0 ? {} : { resolution: Dw(n) }
20484
+ ...jw(n) === void 0 ? {} : { resolution: jw(n) }
20467
20485
  }
20468
20486
  });
20469
20487
  }
@@ -20476,18 +20494,18 @@ function Mw(e) {
20476
20494
  }
20477
20495
  //#endregion
20478
20496
  //#region src/components/register-shared.tsx
20479
- var Nw = "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 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary motion-reduce:transition-none disabled:opacity-50";
20480
- function Pw(e) {
20497
+ var Lw = "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 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary motion-reduce:transition-none disabled:opacity-50";
20498
+ function Rw(e) {
20481
20499
  return e.count === void 0 ? e.label : `${e.label} (${e.count})`;
20482
20500
  }
20483
- function Fw({ label: e, value: t, options: n, onChange: r, disabled: i = !1, placeholder: a = "Select…", compactWhenSingle: o = !1, formatOption: s = Pw, hint: c }) {
20484
- return n.length === 0 ? null : o && n.length === 1 ? c ? /* @__PURE__ */ z(it, { children: c }) : null : /* @__PURE__ */ B(YC, {
20501
+ function zw({ label: e, value: t, options: n, onChange: r, disabled: i = !1, placeholder: a = "Select…", compactWhenSingle: o = !1, formatOption: s = Rw, hint: c }) {
20502
+ return n.length === 0 ? null : o && n.length === 1 ? c ? /* @__PURE__ */ z(it, { children: c }) : null : /* @__PURE__ */ B($C, {
20485
20503
  label: e,
20486
20504
  children: [/* @__PURE__ */ B("select", {
20487
20505
  value: t,
20488
20506
  onChange: (e) => r(e.target.value),
20489
20507
  disabled: i || n.length === 0,
20490
- className: Nw,
20508
+ className: Lw,
20491
20509
  children: [t === "" && /* @__PURE__ */ z("option", {
20492
20510
  value: "",
20493
20511
  disabled: !0,
@@ -20502,7 +20520,7 @@ function Fw({ label: e, value: t, options: n, onChange: r, disabled: i = !1, pla
20502
20520
  //#endregion
20503
20521
  //#region src/components/SourceModelBrowser.tsx
20504
20522
  t();
20505
- function Iw({ preSelectors: e = [], catalog: t, value: n, onChange: r, title: i, subtitle: o, actionRow: s, renderActionRow: c, footer: l, emptyMessage: u = "No models match the current filters.", testId: d = "source-model-browser" }) {
20523
+ function Bw({ preSelectors: e = [], catalog: t, value: n, onChange: r, title: i, subtitle: o, actionRow: s, renderActionRow: c, footer: l, emptyMessage: u = "No models match the current filters.", testId: d = "source-model-browser" }) {
20506
20524
  let f = Je(t), [p, m] = a({});
20507
20525
  return /* @__PURE__ */ B("div", {
20508
20526
  className: "space-y-3",
@@ -20511,7 +20529,7 @@ function Iw({ preSelectors: e = [], catalog: t, value: n, onChange: r, title: i,
20511
20529
  e.length > 0 && /* @__PURE__ */ z("div", {
20512
20530
  className: "space-y-3",
20513
20531
  "data-testid": "source-pre-selectors",
20514
- children: e.map((e) => /* @__PURE__ */ z(Fw, {
20532
+ children: e.map((e) => /* @__PURE__ */ z(zw, {
20515
20533
  label: e.label,
20516
20534
  value: e.value,
20517
20535
  options: e.options,
@@ -20562,22 +20580,22 @@ function Iw({ preSelectors: e = [], catalog: t, value: n, onChange: r, title: i,
20562
20580
  }
20563
20581
  //#endregion
20564
20582
  //#region src/components/FormatImportRow.tsx
20565
- var Lw = {
20583
+ var Vw = {
20566
20584
  onnx: "ONNX",
20567
20585
  openvino: "OpenVINO",
20568
20586
  coreml: "CoreML",
20569
20587
  tflite: "TFLite",
20570
20588
  pt: "PyTorch"
20571
20589
  };
20572
- function Rw({ entries: e, registeredIds: t, isImported: n, presence: r = [], busyId: i, onImport: a, onDistributeAll: o, distributeBusy: s = !1 }) {
20573
- let c = (e) => n === void 0 ? t === null ? !1 : hw(t, e.id) : n(e), l = t !== null && e.some((e) => c(e));
20590
+ function Hw({ entries: e, registeredIds: t, isImported: n, presence: r = [], busyId: i, onImport: a, onDistributeAll: o, distributeBusy: s = !1 }) {
20591
+ let c = (e) => n === void 0 ? t === null ? !1 : yw(t, e.id) : n(e), l = t !== null && e.some((e) => c(e));
20574
20592
  return /* @__PURE__ */ B("div", {
20575
20593
  className: "space-y-2 pt-1",
20576
20594
  children: [
20577
20595
  /* @__PURE__ */ z("div", {
20578
20596
  className: "flex flex-wrap gap-2",
20579
20597
  children: e.map((e) => {
20580
- let n = c(e), r = mw({
20598
+ let n = c(e), r = vw({
20581
20599
  driftStatus: e.driftStatus ?? "ok",
20582
20600
  imported: n,
20583
20601
  registryKnown: t !== null
@@ -20587,11 +20605,11 @@ function Rw({ entries: e, registeredIds: t, isImported: n, presence: r = [], bus
20587
20605
  children: [
20588
20606
  /* @__PURE__ */ z("span", {
20589
20607
  className: "font-mono text-foreground",
20590
- children: Lw[e.format] ?? e.format
20608
+ children: Vw[e.format] ?? e.format
20591
20609
  }),
20592
20610
  typeof e.sizeMB == "number" && /* @__PURE__ */ z("span", {
20593
20611
  className: "text-foreground-subtle",
20594
- children: eC(e.sizeMB)
20612
+ children: iC(e.sizeMB)
20595
20613
  }),
20596
20614
  n ? /* @__PURE__ */ z("span", {
20597
20615
  className: "text-success",
@@ -20638,11 +20656,11 @@ function Rw({ entries: e, registeredIds: t, isImported: n, presence: r = [], bus
20638
20656
  }
20639
20657
  //#endregion
20640
20658
  //#region src/components/DisplayNameField.tsx
20641
- function zw({ value: e, onChange: t, defaultName: n }) {
20642
- let r = PS(e);
20659
+ function Uw({ value: e, onChange: t, defaultName: n }) {
20660
+ let r = RS(e);
20643
20661
  return /* @__PURE__ */ B("div", {
20644
20662
  className: "space-y-1",
20645
- children: [/* @__PURE__ */ z(YC, {
20663
+ children: [/* @__PURE__ */ z($C, {
20646
20664
  label: "Display name (optional)",
20647
20665
  children: /* @__PURE__ */ z("input", {
20648
20666
  type: "text",
@@ -20658,40 +20676,40 @@ function zw({ value: e, onChange: t, defaultName: n }) {
20658
20676
  })]
20659
20677
  });
20660
20678
  }
20661
- function Bw(e) {
20662
- let t = PS(e);
20679
+ function Ww(e) {
20680
+ let t = RS(e);
20663
20681
  return t.kind === "set" ? t.name : void 0;
20664
20682
  }
20665
- function Vw(e) {
20666
- return PS(e).kind === "invalid";
20683
+ function Gw(e) {
20684
+ return RS(e).kind === "invalid";
20667
20685
  }
20668
20686
  //#endregion
20669
20687
  //#region src/tabs/ScryptedTab.tsx
20670
20688
  t();
20671
- var Hw = [
20689
+ var Kw = [
20672
20690
  "onnx",
20673
20691
  "openvino",
20674
20692
  "coreml",
20675
20693
  "tflite"
20676
- ], Uw = [{
20694
+ ], qw = [{
20677
20695
  value: "relu",
20678
20696
  label: "Standard"
20679
20697
  }, {
20680
20698
  value: "relu_test",
20681
20699
  label: "Test"
20682
20700
  }];
20683
- function Ww({ trpc: e, landNodeId: t, onImported: r }) {
20684
- let i = uw(), [s, c] = a(null), [u, d] = a([]), [f, p] = a(null), [h, g] = a({}), [_, v] = a({}), [y, b] = a(null), [x, S] = a(null), [C, w] = a(null), [T, E] = a("relu"), [D, O] = a(""), [k, ee] = a(""), [A, te] = a(null), [j, ne] = a(""), re = o(0), M = o(!1), ie = t !== void 0 && t.length > 0 ? t : j.length > 0 ? j : void 0, ae = n(async () => {
20701
+ function Jw({ trpc: e, landNodeId: t, onImported: r }) {
20702
+ let i = mw(), [s, c] = a(null), [u, d] = a([]), [f, p] = a(null), [h, g] = a({}), [_, v] = a({}), [y, b] = a(null), [x, S] = a(null), [C, w] = a(null), [T, E] = a("relu"), [D, O] = a(""), [k, ee] = a(""), [A, te] = a(null), [j, ne] = a(""), re = o(0), M = o(!1), ie = t !== void 0 && t.length > 0 ? t : j.length > 0 ? j : void 0, ae = n(async () => {
20685
20703
  let t = ++re.current;
20686
20704
  b(null);
20687
20705
  try {
20688
- let n = KC(e), r = uC(e).then((e) => ({
20706
+ let n = XC(e), r = mC(e).then((e) => ({
20689
20707
  ok: !0,
20690
20708
  value: e
20691
- }), () => ({ ok: !1 })), i = dC(e).then((e) => ({
20709
+ }), () => ({ ok: !1 })), i = hC(e).then((e) => ({
20692
20710
  ok: !0,
20693
20711
  value: e
20694
- }), () => ({ ok: !1 })), a = GC(e).then((e) => e, () => []), [o, s, l, u] = await Promise.all([
20712
+ }), () => ({ ok: !1 })), a = YC(e).then((e) => e, () => []), [o, s, l, u] = await Promise.all([
20695
20713
  n,
20696
20714
  r,
20697
20715
  i,
@@ -20701,12 +20719,12 @@ function Ww({ trpc: e, landNodeId: t, onImported: r }) {
20701
20719
  if (c(o.entries), d(o.drift), te(u), u.length > 0 && ne((e) => e.length > 0 && u.includes(e) ? e : u[0]), s.ok) {
20702
20720
  p(new Set(s.value.map((e) => e.entry.id)));
20703
20721
  let e = {};
20704
- for (let t of s.value) e[t.entry.id] = zS(t.entry);
20722
+ for (let t of s.value) e[t.entry.id] = US(t.entry);
20705
20723
  g(e);
20706
20724
  } else p(null), g({});
20707
20725
  if (l.ok && s.ok) {
20708
20726
  let e = {};
20709
- for (let t of s.value) e[t.entry.id] = BS(l.value, t.entry.id);
20727
+ for (let t of s.value) e[t.entry.id] = WS(l.value, t.entry.id);
20710
20728
  v(e);
20711
20729
  } else v({});
20712
20730
  } catch (e) {
@@ -20717,9 +20735,9 @@ function Ww({ trpc: e, landNodeId: t, onImported: r }) {
20717
20735
  m(() => {
20718
20736
  ae();
20719
20737
  }, [ae]);
20720
- let oe = l(() => (s ?? []).filter((e) => e.variant === T), [s, T]), se = l(() => Mw(oe), [oe]), N = l(() => new Map(se.map((e) => [e.id, e])), [se]), P = D.length > 0 && N.has(D) ? D : se[0]?.id ?? "", ce = n(async (n) => {
20721
- if (M.current || Vw(k)) return;
20722
- let a = Bw(k);
20738
+ let oe = l(() => (s ?? []).filter((e) => e.variant === T), [s, T]), se = l(() => Iw(oe), [oe]), N = l(() => new Map(se.map((e) => [e.id, e])), [se]), P = D.length > 0 && N.has(D) ? D : se[0]?.id ?? "", ce = n(async (n) => {
20739
+ if (M.current || Gw(k)) return;
20740
+ let a = Ww(k);
20723
20741
  M.current = !0, S(n.id), w(null);
20724
20742
  let o = n.format === "tflite" ? ie : t !== void 0 && t.length > 0 ? t : void 0;
20725
20743
  try {
@@ -20740,18 +20758,18 @@ function Ww({ trpc: e, landNodeId: t, onImported: r }) {
20740
20758
  }]],
20741
20759
  initialLog: `Starting ${n.format} import for ${n.canonicalId}…`
20742
20760
  }, async ({ appendLog: t, patchSteps: r }) => {
20743
- if (n.mode === "native") await qC(e, {
20761
+ if (n.mode === "native") await ZC(e, {
20744
20762
  manifestId: n.manifestId,
20745
20763
  ...a === void 0 ? {} : { name: a },
20746
20764
  ...o === void 0 ? {} : { targetNodeId: o }
20747
20765
  }), t(o === void 0 ? `Imported ${n.format} into the registry` : `Imported and landed on ${o}`);
20748
20766
  else {
20749
20767
  let r = f?.has(n.canonicalId) === !0, i = (h[n.canonicalId] ?? []).includes("onnx");
20750
- (!r || !i) && (t("ONNX not present — importing first…"), await qC(e, {
20768
+ (!r || !i) && (t("ONNX not present — importing first…"), await ZC(e, {
20751
20769
  manifestId: n.onnxManifestId,
20752
20770
  ...a === void 0 ? {} : { name: a },
20753
20771
  ...o === void 0 ? {} : { targetNodeId: o }
20754
- })), t(`Converting ONNX → ${n.format}…`), await gC(e, n.canonicalId, [n.format]), t(`Converted to ${n.format}`);
20772
+ })), t(`Converting ONNX → ${n.format}…`), await bC(e, n.canonicalId, [n.format]), t(`Converted to ${n.format}`);
20755
20773
  }
20756
20774
  r((e) => e.map((e) => e.status === "active" || e.status === "pending" ? {
20757
20775
  ...e,
@@ -20792,7 +20810,7 @@ function Ww({ trpc: e, landNodeId: t, onImported: r }) {
20792
20810
  children: "Retry"
20793
20811
  })]
20794
20812
  });
20795
- let le = N.get(P), F = le && s ? qw({
20813
+ let le = N.get(P), F = le && s ? Zw({
20796
20814
  filtered: oe,
20797
20815
  drift: u,
20798
20816
  sourceId: le.id
@@ -20840,14 +20858,14 @@ function Ww({ trpc: e, landNodeId: t, onImported: r }) {
20840
20858
  children: t
20841
20859
  })]
20842
20860
  }),
20843
- /* @__PURE__ */ z(Iw, {
20861
+ /* @__PURE__ */ z(Bw, {
20844
20862
  testId: "scrypted-browser",
20845
20863
  title: "YOLOv9",
20846
20864
  preSelectors: [{
20847
20865
  id: "variant",
20848
20866
  label: "Variant",
20849
20867
  value: T,
20850
- options: Uw.map((e) => ({
20868
+ options: qw.map((e) => ({
20851
20869
  value: e.value,
20852
20870
  label: e.label,
20853
20871
  count: (s ?? []).filter((t) => t.variant === e.value).length
@@ -20863,11 +20881,11 @@ function Ww({ trpc: e, landNodeId: t, onImported: r }) {
20863
20881
  emptyMessage: "No Scrypted artifacts for this variant.",
20864
20882
  actionRow: le && ue.length > 0 ? /* @__PURE__ */ B("div", {
20865
20883
  className: "space-y-2",
20866
- children: [/* @__PURE__ */ z(zw, {
20884
+ children: [/* @__PURE__ */ z(Uw, {
20867
20885
  value: k,
20868
20886
  onChange: ee,
20869
20887
  defaultName: le.name
20870
- }), /* @__PURE__ */ z(Rw, {
20888
+ }), /* @__PURE__ */ z(Hw, {
20871
20889
  entries: ue,
20872
20890
  registeredIds: f,
20873
20891
  isImported: (e) => {
@@ -20886,7 +20904,7 @@ function Ww({ trpc: e, landNodeId: t, onImported: r }) {
20886
20904
  ]
20887
20905
  });
20888
20906
  }
20889
- var Gw = [
20907
+ var Yw = [
20890
20908
  "edgetpu",
20891
20909
  "int8",
20892
20910
  "full_integer_quant",
@@ -20894,25 +20912,25 @@ var Gw = [
20894
20912
  "float16",
20895
20913
  "float32"
20896
20914
  ];
20897
- function Kw(e, t, n) {
20915
+ function Xw(e, t, n) {
20898
20916
  let r = e.filter((e) => e.format === t);
20899
20917
  if (r.length !== 0) {
20900
20918
  if (t === "tflite") {
20901
- let e = xw(n, "tflite");
20919
+ let e = Tw(n, "tflite");
20902
20920
  return (e === void 0 ? void 0 : r.find((t) => t.id === e)) || r.toSorted((e, t) => {
20903
- let n = Gw.indexOf(e.precision.toLowerCase()), r = Gw.indexOf(t.precision.toLowerCase());
20921
+ let n = Yw.indexOf(e.precision.toLowerCase()), r = Yw.indexOf(t.precision.toLowerCase());
20904
20922
  return (n === -1 ? 99 : n) - (r === -1 ? 99 : r);
20905
20923
  })[0];
20906
20924
  }
20907
20925
  return r.toSorted((e, t) => e.files.reduce((e, t) => e + t.size, 0) - t.files.reduce((e, t) => e + t.size, 0))[0];
20908
20926
  }
20909
20927
  }
20910
- function qw(e) {
20911
- let t = e.sourceId, n = e.filtered.filter((e) => jw(e) === t);
20928
+ function Zw(e) {
20929
+ let t = e.sourceId, n = e.filtered.filter((e) => Fw(e) === t);
20912
20930
  if (n.length === 0) return [];
20913
- let r = Kw(n, "onnx", t)?.id ?? xw(t, "onnx"), i = [];
20914
- for (let a of Hw) {
20915
- let o = Kw(n, a, t);
20931
+ let r = Xw(n, "onnx", t)?.id ?? Tw(t, "onnx"), i = [];
20932
+ for (let a of Kw) {
20933
+ let o = Xw(n, a, t);
20916
20934
  if (o) {
20917
20935
  i.push({
20918
20936
  id: `${t}::${a}`,
@@ -20922,7 +20940,7 @@ function qw(e) {
20922
20940
  canonicalId: t,
20923
20941
  onnxManifestId: r ?? o.id,
20924
20942
  sizeMB: o.model.formats[a]?.sizeMB,
20925
- driftStatus: pw(e.drift, o.id)
20943
+ driftStatus: _w(e.drift, o.id)
20926
20944
  });
20927
20945
  continue;
20928
20946
  }
@@ -20940,14 +20958,14 @@ function qw(e) {
20940
20958
  }
20941
20959
  //#endregion
20942
20960
  //#region src/frigate/frigate-import.ts
20943
- function Jw(e, t) {
20961
+ function Qw(e, t) {
20944
20962
  return {
20945
20963
  family: e === "mobiledet" ? "ssdlite-mobiledet" : e,
20946
20964
  tier: "default",
20947
20965
  resolution: t
20948
20966
  };
20949
20967
  }
20950
- var Yw = {
20968
+ var $w = {
20951
20969
  yolov9: {
20952
20970
  type: "yolov9",
20953
20971
  label: "YOLOv9 (ONNX)",
@@ -20976,7 +20994,7 @@ var Yw = {
20976
20994
  notes: "SSDLite MobileDet, EdgeTPU-compiled full-integer TFLite (the Frigate default-model architecture). TFLite_Detection_PostProcess 4-tensor output, decoded by the ssd postprocessor. Requires a Coral (tflite format node)."
20977
20995
  }
20978
20996
  };
20979
- function Xw(e) {
20997
+ function eT(e) {
20980
20998
  let t = e.includes("\n") || !e.includes(",") ? e.split("\n") : e.split(","), n = [];
20981
20999
  for (let e of t) {
20982
21000
  let t = e.trim();
@@ -20986,7 +21004,7 @@ function Xw(e) {
20986
21004
  }
20987
21005
  return n;
20988
21006
  }
20989
- var Zw = [{
21007
+ var tT = [{
20990
21008
  id: "frigate-mobiledet-edgetpu",
20991
21009
  label: "Frigate default — SSDLite MobileDet (EdgeTPU)",
20992
21010
  format: "tflite",
@@ -20995,13 +21013,13 @@ var Zw = [{
20995
21013
  inputSize: 320,
20996
21014
  postprocessor: "ssd",
20997
21015
  labels: /* @__PURE__ */ "person.bicycle.car.motorcycle.airplane.bus.train.car.boat.traffic light.fire hydrant.street sign.stop sign.parking meter.bench.bird.cat.dog.horse.sheep.cow.elephant.bear.zebra.giraffe.hat.backpack.umbrella.shoe.eye glasses.handbag.tie.suitcase.frisbee.skis.snowboard.sports ball.kite.baseball bat.baseball glove.skateboard.surfboard.tennis racket.bottle.plate.wine glass.cup.fork.knife.spoon.bowl.banana.apple.sandwich.orange.broccoli.carrot.hot dog.pizza.donut.cake.chair.couch.potted plant.bed.mirror.dining table.window.desk.toilet.door.tv.laptop.mouse.remote.keyboard.cell phone.microwave.oven.toaster.sink.refrigerator.blender.book.clock.vase.scissors.teddy bear.hair drier.toothbrush.hair brush".split("."),
20998
- license: aS,
21016
+ license: lS,
20999
21017
  notes: "Frigate's default detection model (the one a stock Frigate + Coral install runs). EdgeTPU-compiled full-integer TFLite, 320×320, TFLite_Detection_PostProcess output → ssd decode. Requires a Coral (tflite format) node."
21000
- }], Qw = /^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}:[a-z0-9]{40}$/;
21001
- function $w(e) {
21002
- return Qw.test(e);
21018
+ }], nT = /^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}:[a-z0-9]{40}$/;
21019
+ function rT(e) {
21020
+ return nT.test(e);
21003
21021
  }
21004
- var eT = {
21022
+ var iT = {
21005
21023
  n: "Nano",
21006
21024
  t: "Tiny",
21007
21025
  s: "Small",
@@ -21010,14 +21028,14 @@ var eT = {
21010
21028
  l: "Large",
21011
21029
  x: "Extra large"
21012
21030
  };
21013
- function tT(e) {
21031
+ function aT(e) {
21014
21032
  let t = /^(yolov\d+)([a-z])$/.exec(e);
21015
21033
  if (t !== null) {
21016
21034
  let e = t[2];
21017
21035
  return {
21018
21036
  architecture: t[1],
21019
21037
  weight: e,
21020
- weightLabel: eT[e] ?? e.toUpperCase()
21038
+ weightLabel: iT[e] ?? e.toUpperCase()
21021
21039
  };
21022
21040
  }
21023
21041
  return {
@@ -21026,20 +21044,20 @@ function tT(e) {
21026
21044
  weightLabel: ""
21027
21045
  };
21028
21046
  }
21029
- function nT(e) {
21047
+ function oT(e) {
21030
21048
  let t = e.supportedDetectors;
21031
- return t.includes("onnx") || t.includes("openvino") ? "neural" : t.includes("edgetpu") ? "coral" : t.length === 0 ? lT(e.type).format === "tflite" ? "coral" : "neural" : null;
21049
+ return t.includes("onnx") || t.includes("openvino") ? "neural" : t.includes("edgetpu") ? "coral" : t.length === 0 ? pT(e.type).format === "tflite" ? "coral" : "neural" : null;
21032
21050
  }
21033
- function rT(e) {
21051
+ function sT(e) {
21034
21052
  return e.width !== void 0 && e.height !== void 0 ? `${e.width}x${e.height}` : "";
21035
21053
  }
21036
- var iT = (e, t) => t.trainDate.localeCompare(e.trainDate);
21037
- function aT(e, t) {
21054
+ var cT = (e, t) => t.trainDate.localeCompare(e.trainDate);
21055
+ function lT(e, t) {
21038
21056
  let n = /* @__PURE__ */ new Map();
21039
21057
  for (let r of e) for (let e of t(r)) e !== "" && n.set(e, (n.get(e) ?? 0) + 1);
21040
21058
  return n;
21041
21059
  }
21042
- function oT(e, t, n) {
21060
+ function uT(e, t, n) {
21043
21061
  let r = [
21044
21062
  "kind",
21045
21063
  "release",
@@ -21047,46 +21065,46 @@ function oT(e, t, n) {
21047
21065
  "architecture",
21048
21066
  "weight",
21049
21067
  "dimensions"
21050
- ], i = r.indexOf(n), a = tT(e.name);
21068
+ ], i = r.indexOf(n), a = aT(e.name);
21051
21069
  for (let n = 0; n <= i; n++) {
21052
21070
  let i = r[n];
21053
- if (i === "kind" && t.kind !== void 0 && t.kind === "base" !== e.isBaseModel || i === "release" && t.release !== void 0 && e.baseModel !== t.release || i === "detector" && t.detector !== void 0 && !e.supportedDetectors.includes(t.detector) || i === "architecture" && t.architecture !== void 0 && a.architecture !== t.architecture || i === "weight" && t.weight !== void 0 && a.weight !== t.weight || i === "dimensions" && t.dimensions !== void 0 && rT(e) !== t.dimensions) return !1;
21071
+ if (i === "kind" && t.kind !== void 0 && t.kind === "base" !== e.isBaseModel || i === "release" && t.release !== void 0 && e.baseModel !== t.release || i === "detector" && t.detector !== void 0 && !e.supportedDetectors.includes(t.detector) || i === "architecture" && t.architecture !== void 0 && a.architecture !== t.architecture || i === "weight" && t.weight !== void 0 && a.weight !== t.weight || i === "dimensions" && t.dimensions !== void 0 && sT(e) !== t.dimensions) return !1;
21054
21072
  }
21055
21073
  return !0;
21056
21074
  }
21057
- function sT(e, t) {
21058
- let n = aT(e, (e) => [e.isBaseModel ? "base" : "custom"]);
21075
+ function dT(e, t) {
21076
+ let n = lT(e, (e) => [e.isBaseModel ? "base" : "custom"]);
21059
21077
  return {
21060
21078
  kind: ["custom", "base"].filter((e) => (n.get(e) ?? 0) > 0).map((e) => ({
21061
21079
  value: e,
21062
21080
  label: e === "custom" ? "My trainings" : "Official base",
21063
21081
  count: n.get(e)
21064
21082
  })),
21065
- release: [...aT(e.filter((e) => oT(e, t, "kind")), (e) => [e.baseModel]).entries()].toSorted((e, t) => t[0].localeCompare(e[0], void 0, { numeric: !0 })).map(([e, t]) => ({
21083
+ release: [...lT(e.filter((e) => uT(e, t, "kind")), (e) => [e.baseModel]).entries()].toSorted((e, t) => t[0].localeCompare(e[0], void 0, { numeric: !0 })).map(([e, t]) => ({
21066
21084
  value: e,
21067
21085
  label: e,
21068
21086
  count: t
21069
21087
  })),
21070
21088
  detector: [],
21071
- architecture: [...aT(e.filter((e) => oT(e, t, "detector")), (e) => [tT(e.name).architecture]).entries()].toSorted((e, t) => e[0].localeCompare(t[0])).map(([e, t]) => ({
21089
+ architecture: [...lT(e.filter((e) => uT(e, t, "detector")), (e) => [aT(e.name).architecture]).entries()].toSorted((e, t) => e[0].localeCompare(t[0])).map(([e, t]) => ({
21072
21090
  value: e,
21073
21091
  label: e,
21074
21092
  count: t
21075
21093
  })),
21076
- weight: [...aT(e.filter((e) => oT(e, t, "architecture")), (e) => [tT(e.name).weight]).entries()].toSorted((e, t) => e[0].localeCompare(t[0])).map(([e, t]) => ({
21094
+ weight: [...lT(e.filter((e) => uT(e, t, "architecture")), (e) => [aT(e.name).weight]).entries()].toSorted((e, t) => e[0].localeCompare(t[0])).map(([e, t]) => ({
21077
21095
  value: e,
21078
- label: eT[e] ?? e.toUpperCase(),
21096
+ label: iT[e] ?? e.toUpperCase(),
21079
21097
  count: t
21080
21098
  })),
21081
- dimensions: [...aT(e.filter((e) => oT(e, t, "weight")), (e) => [rT(e)]).entries()].toSorted((e, t) => e[0].localeCompare(t[0], void 0, { numeric: !0 })).map(([e, t]) => ({
21099
+ dimensions: [...lT(e.filter((e) => uT(e, t, "weight")), (e) => [sT(e)]).entries()].toSorted((e, t) => e[0].localeCompare(t[0], void 0, { numeric: !0 })).map(([e, t]) => ({
21082
21100
  value: e,
21083
21101
  label: e.replace("x", "×"),
21084
21102
  count: t
21085
21103
  })),
21086
- entries: e.filter((e) => oT(e, t, "dimensions")).toSorted(iT)
21104
+ entries: e.filter((e) => uT(e, t, "dimensions")).toSorted(cT)
21087
21105
  };
21088
21106
  }
21089
- var cT = {
21107
+ var fT = {
21090
21108
  mobiledet: {
21091
21109
  format: "tflite",
21092
21110
  postprocessor: "ssd",
@@ -21111,8 +21129,8 @@ var cT = {
21111
21129
  extension: ".onnx"
21112
21130
  }
21113
21131
  };
21114
- function lT(e) {
21115
- return cT[e] ?? {
21132
+ function pT(e) {
21133
+ return fT[e] ?? {
21116
21134
  format: "onnx",
21117
21135
  extension: ".onnx"
21118
21136
  };
@@ -21120,12 +21138,12 @@ function lT(e) {
21120
21138
  //#endregion
21121
21139
  //#region src/components/TfliteGate.tsx
21122
21140
  t();
21123
- function uT(e, t) {
21141
+ function mT(e, t) {
21124
21142
  let [n, r] = a(null);
21125
21143
  return m(() => {
21126
21144
  if (!t) return;
21127
21145
  let n = !1;
21128
- return GC(e).then((e) => {
21146
+ return YC(e).then((e) => {
21129
21147
  n || r(e);
21130
21148
  }).catch(() => {
21131
21149
  n || r([]);
@@ -21134,7 +21152,7 @@ function uT(e, t) {
21134
21152
  };
21135
21153
  }, [e, t]), t ? n : [];
21136
21154
  }
21137
- function dT({ nodes: e }) {
21155
+ function hT({ nodes: e }) {
21138
21156
  return e === null ? /* @__PURE__ */ z("div", {
21139
21157
  className: "text-[10px] text-foreground-subtle",
21140
21158
  children: "Checking Coral availability…"
@@ -21152,7 +21170,7 @@ function dT({ nodes: e }) {
21152
21170
  }
21153
21171
  //#endregion
21154
21172
  //#region src/frigate/frigate-as-variant-sources.ts
21155
- var fT = {
21173
+ var gT = {
21156
21174
  n: "Nano",
21157
21175
  t: "Tiny",
21158
21176
  s: "Small",
@@ -21160,30 +21178,30 @@ var fT = {
21160
21178
  c: "Compact",
21161
21179
  l: "Large",
21162
21180
  x: "Extra large"
21163
- }, pT = [
21181
+ }, _T = [
21164
21182
  "onnx",
21165
21183
  "openvino",
21166
21184
  "coreml",
21167
21185
  "tflite"
21168
21186
  ];
21169
- function mT(e) {
21170
- return e.filter((e) => nT(e) !== null);
21187
+ function vT(e) {
21188
+ return e.filter((e) => oT(e) !== null);
21171
21189
  }
21172
- function hT(e) {
21190
+ function yT(e) {
21173
21191
  if (e.width !== void 0 && e.height !== void 0) return e.width === e.height ? e.width : Math.max(e.width, e.height);
21174
- let t = /^(\d+)x(\d+)$/.exec(rT(e));
21192
+ let t = /^(\d+)x(\d+)$/.exec(sT(e));
21175
21193
  if (!t) return;
21176
21194
  let n = Number(t[1]), r = Number(t[2]);
21177
21195
  if (!(!Number.isFinite(n) || !Number.isFinite(r))) return n === r ? n : Math.max(n, r);
21178
21196
  }
21179
- function gT(e, t) {
21197
+ function bT(e, t) {
21180
21198
  if (t.length === 0) return e === "mobiledet" ? "SSDLite MobileDet" : e === "yolonas" ? "YOLO-NAS" : e.toUpperCase();
21181
- let n = fT[t] ?? t.toUpperCase();
21199
+ let n = gT[t] ?? t.toUpperCase();
21182
21200
  return e.startsWith("yolo") ? `${e.replace(/^yolo/i, "YOLO")} ${n}` : `${e} ${n}`;
21183
21201
  }
21184
- var _T = (e, t) => t.trainDate.localeCompare(e.trainDate);
21185
- function vT(e) {
21186
- let t = [...e].toSorted(_T), n = t.find((e) => nT(e) === "neural"), r = t.find((e) => nT(e) === "coral"), i = [];
21202
+ var xT = (e, t) => t.trainDate.localeCompare(e.trainDate);
21203
+ function ST(e) {
21204
+ let t = [...e].toSorted(xT), n = t.find((e) => oT(e) === "neural"), r = t.find((e) => oT(e) === "coral"), i = [];
21187
21205
  return n !== void 0 && (i.push({
21188
21206
  format: "onnx",
21189
21207
  plusModelId: n.id,
@@ -21204,33 +21222,33 @@ function vT(e) {
21204
21222
  plusModelId: r.id,
21205
21223
  via: "download",
21206
21224
  needsCoral: !0
21207
- }), i.toSorted((e, t) => pT.indexOf(e.format) - pT.indexOf(t.format));
21225
+ }), i.toSorted((e, t) => _T.indexOf(e.format) - _T.indexOf(t.format));
21208
21226
  }
21209
- function yT(e) {
21227
+ function CT(e) {
21210
21228
  let t = /* @__PURE__ */ new Map();
21211
21229
  for (let n of e) {
21212
21230
  let e = n.trainDate.slice(0, 10);
21213
21231
  t.set(e, [...t.get(e) ?? [], n]);
21214
21232
  }
21215
21233
  return [...t.entries()].map(([e, t]) => {
21216
- let n = t.toSorted(_T);
21234
+ let n = t.toSorted(xT);
21217
21235
  return {
21218
21236
  key: e,
21219
21237
  trainDate: n[0]?.trainDate ?? "",
21220
21238
  verifiedImages: Math.max(0, ...n.map((e) => e.verifiedImages)),
21221
21239
  builds: n,
21222
- offers: vT(n)
21240
+ offers: ST(n)
21223
21241
  };
21224
21242
  }).filter((e) => e.offers.length > 0).toSorted((e, t) => t.trainDate.localeCompare(e.trainDate));
21225
21243
  }
21226
- function bT(e) {
21244
+ function wT(e) {
21227
21245
  let t = /* @__PURE__ */ new Map();
21228
- for (let n of mT(e)) {
21229
- let e = tT(n.name), r = e.weight.length > 0 ? e.weight : "default", i = hT(n), a = `${n.name}${i === void 0 ? "" : `-${i}`}`, o = t.get(a) ?? {
21246
+ for (let n of vT(e)) {
21247
+ let e = aT(n.name), r = e.weight.length > 0 ? e.weight : "default", i = yT(n), a = `${n.name}${i === void 0 ? "" : `-${i}`}`, o = t.get(a) ?? {
21230
21248
  family: e.architecture,
21231
21249
  tier: r,
21232
21250
  ...i === void 0 ? {} : { resolution: i },
21233
- name: gT(e.architecture, e.weight),
21251
+ name: bT(e.architecture, e.weight),
21234
21252
  builds: []
21235
21253
  };
21236
21254
  t.set(a, {
@@ -21240,7 +21258,7 @@ function bT(e) {
21240
21258
  }
21241
21259
  let n = /* @__PURE__ */ new Map(), r = [];
21242
21260
  for (let [e, i] of t) {
21243
- let t = yT(i.builds), a = t[0];
21261
+ let t = CT(i.builds), a = t[0];
21244
21262
  a !== void 0 && (n.set(e, {
21245
21263
  sourceId: e,
21246
21264
  family: i.family,
@@ -21267,16 +21285,16 @@ function bT(e) {
21267
21285
  //#endregion
21268
21286
  //#region src/tabs/use-plus-import.ts
21269
21287
  t();
21270
- function xT(e) {
21288
+ function TT(e) {
21271
21289
  return e.length === 0 ? "" : ` Engine conversions: ${e.map((e) => e.ok ? `${e.format} ✓${e.nodeId ? ` (${e.nodeId})` : ""}` : `${e.format} ✗ — ${e.error ?? "failed"}`).join("; ")}.`;
21272
21290
  }
21273
- function ST({ trpc: e, onRegistered: t, onError: r, landNodeId: i }) {
21291
+ function ET({ trpc: e, onRegistered: t, onError: r, landNodeId: i }) {
21274
21292
  let [o, s] = a(null), [c, l] = a({}), [u, d] = a({}), [f, p] = a(null), [h, g] = a(null), _ = n(async () => {
21275
21293
  try {
21276
- let [t, n] = await Promise.all([uC(e), dC(e)]);
21294
+ let [t, n] = await Promise.all([mC(e), hC(e)]);
21277
21295
  s(new Set(t.map((e) => e.entry.id)));
21278
21296
  let r = {}, i = {};
21279
- for (let e of t) r[e.entry.id] = zS(e.entry), i[e.entry.id] = BS(n, e.entry.id);
21297
+ for (let e of t) r[e.entry.id] = US(e.entry), i[e.entry.id] = WS(n, e.entry.id);
21280
21298
  l(r), d(i);
21281
21299
  } catch {
21282
21300
  s(null), l({}), d({});
@@ -21286,7 +21304,7 @@ function ST({ trpc: e, onRegistered: t, onError: r, landNodeId: i }) {
21286
21304
  _();
21287
21305
  }, [_]);
21288
21306
  let v = n(async (n, a, s, l) => {
21289
- let u = DS(n);
21307
+ let u = jS(n);
21290
21308
  p(`${u}::${a}`);
21291
21309
  let d = a === "openvino" || a === "coreml", f = [
21292
21310
  {
@@ -21315,7 +21333,7 @@ function ST({ trpc: e, onRegistered: t, onError: r, landNodeId: i }) {
21315
21333
  progress: null,
21316
21334
  logs: [`Starting ${a} import for ${n}…`],
21317
21335
  status: "running",
21318
- sessionId: aw({
21336
+ sessionId: lw({
21319
21337
  kind: d ? "convert" : "import",
21320
21338
  title: `Import ${s} · ${a}`,
21321
21339
  modelId: u,
@@ -21330,9 +21348,9 @@ function ST({ trpc: e, onRegistered: t, onError: r, landNodeId: i }) {
21330
21348
  steps: e([...t.steps])
21331
21349
  });
21332
21350
  }, h = (e) => {
21333
- g((t) => t === null ? t : (ow(t.sessionId, e), {
21351
+ g((t) => t === null ? t : (uw(t.sessionId, e), {
21334
21352
  ...t,
21335
- logs: ew(t.logs, {
21353
+ logs: iw(t.logs, {
21336
21354
  phase: "log",
21337
21355
  log: e
21338
21356
  })
@@ -21342,11 +21360,11 @@ function ST({ trpc: e, onRegistered: t, onError: r, landNodeId: i }) {
21342
21360
  ...n,
21343
21361
  status: t
21344
21362
  } : n));
21345
- }, y = AC(e, (e) => {
21363
+ }, y = PC(e, (e) => {
21346
21364
  g((t) => {
21347
21365
  if (t === null) return t;
21348
- let n = ew(t.logs, e);
21349
- return cw(t.sessionId, n), {
21366
+ let n = iw(t.logs, e);
21367
+ return fw(t.sessionId, n), {
21350
21368
  ...t,
21351
21369
  progress: e.phase === "log" ? t.progress : e,
21352
21370
  logs: n
@@ -21358,7 +21376,7 @@ function ST({ trpc: e, onRegistered: t, onError: r, landNodeId: i }) {
21358
21376
  if (a === "onnx" || a === "tflite") if (i) h(`${a} already in Library`), v("download", "done"), v("register", "done");
21359
21377
  else {
21360
21378
  h(`Downloading native ${a}…`);
21361
- let r = await FC(e, {
21379
+ let r = await zC(e, {
21362
21380
  plusModelId: n,
21363
21381
  ...l === void 0 ? {} : { name: l },
21364
21382
  ensureFormats: [],
@@ -21368,21 +21386,21 @@ function ST({ trpc: e, onRegistered: t, onError: r, landNodeId: i }) {
21368
21386
  }
21369
21387
  else if (d) if (!r) {
21370
21388
  h("ONNX missing — downloading first…");
21371
- let r = await FC(e, {
21389
+ let r = await zC(e, {
21372
21390
  plusModelId: n,
21373
21391
  ...l === void 0 ? {} : { name: l },
21374
21392
  ensureFormats: [a],
21375
21393
  format: "onnx"
21376
21394
  });
21377
- v("download", "done"), v("register", "done"), v("convert", r.conversions.some((e) => e.format === a && e.ok) ? "done" : "error"), h(`Registered ${r.modelId}.${xT(r.conversions)}`), t(`Imported "${r.modelId}" + ${a}.${xT(r.conversions)}`);
21395
+ v("download", "done"), v("register", "done"), v("convert", r.conversions.some((e) => e.format === a && e.ok) ? "done" : "error"), h(`Registered ${r.modelId}.${TT(r.conversions)}`), t(`Imported "${r.modelId}" + ${a}.${TT(r.conversions)}`);
21378
21396
  } else if (i) v("download", "done"), v("register", "done"), v("convert", "done"), h(`${a} already present on ${u}`);
21379
21397
  else {
21380
21398
  v("download", "done"), v("register", "done"), v("convert", "active"), h(`Converting ONNX → ${a} on a capable node…`);
21381
- let n = await gC(e, u, [a]), r = n.conversions.some((e) => e.format === a && e.ok);
21382
- if (v("convert", r ? "done" : "error"), h(`Conversion:${xT(n.conversions)}`), !r) throw Error(n.conversions.find((e) => e.format === a)?.error ?? `${a} conversion failed`);
21383
- t(`Converted "${u}" → ${a}.${xT(n.conversions)}`);
21399
+ let n = await bC(e, u, [a]), r = n.conversions.some((e) => e.format === a && e.ok);
21400
+ if (v("convert", r ? "done" : "error"), h(`Conversion:${TT(n.conversions)}`), !r) throw Error(n.conversions.find((e) => e.format === a)?.error ?? `${a} conversion failed`);
21401
+ t(`Converted "${u}" → ${a}.${TT(n.conversions)}`);
21384
21402
  }
21385
- await _(), g((e) => e === null ? e : (sw(e.sessionId, { status: "success" }), {
21403
+ await _(), g((e) => e === null ? e : (dw(e.sessionId, { status: "success" }), {
21386
21404
  ...e,
21387
21405
  status: "success",
21388
21406
  steps: e.steps.map((e) => e.status === "active" || e.status === "pending" ? {
@@ -21393,7 +21411,7 @@ function ST({ trpc: e, onRegistered: t, onError: r, landNodeId: i }) {
21393
21411
  }));
21394
21412
  } catch (e) {
21395
21413
  let t = e instanceof Error ? e.message : "Import failed";
21396
- g((e) => e === null ? e : (sw(e.sessionId, {
21414
+ g((e) => e === null ? e : (dw(e.sessionId, {
21397
21415
  status: "error",
21398
21416
  errorMessage: t
21399
21417
  }), {
@@ -21430,11 +21448,11 @@ function ST({ trpc: e, onRegistered: t, onError: r, landNodeId: i }) {
21430
21448
  //#endregion
21431
21449
  //#region src/tabs/FrigatePlusCatalog.tsx
21432
21450
  t();
21433
- var CT = ["kind", "release"];
21434
- function wT(e, t) {
21451
+ var DT = ["kind", "release"];
21452
+ function OT(e, t) {
21435
21453
  let n = { ...t };
21436
- for (let t of CT) {
21437
- let r = sT(e, n)[t], i = n[t], a = r[0];
21454
+ for (let t of DT) {
21455
+ let r = dT(e, n)[t], i = n[t], a = r[0];
21438
21456
  a !== void 0 && (i === void 0 || !r.some((e) => e.value === i)) && (n = t === "kind" ? {
21439
21457
  ...n,
21440
21458
  kind: a.value === "base" ? "base" : "custom"
@@ -21445,23 +21463,23 @@ function wT(e, t) {
21445
21463
  }
21446
21464
  return n;
21447
21465
  }
21448
- function TT(e) {
21466
+ function kT(e) {
21449
21467
  return e === null ? "checking Coral…" : e.length === 0 ? "needs a Coral" : void 0;
21450
21468
  }
21451
- function ET({ trpc: e, models: t, onRegistered: n, onError: r, landNodeId: i }) {
21452
- let [o, s] = a({}), [c, u] = a(""), d = ST({
21469
+ function AT({ trpc: e, models: t, onRegistered: n, onError: r, landNodeId: i }) {
21470
+ let [o, s] = a({}), [c, u] = a(""), d = ET({
21453
21471
  trpc: e,
21454
21472
  onRegistered: n,
21455
21473
  onError: r,
21456
21474
  ...i === void 0 ? {} : { landNodeId: i }
21457
- }), f = l(() => mT(t), [t]), p = wT(f, o), m = sT(f, {
21475
+ }), f = l(() => vT(t), [t]), p = OT(f, o), m = dT(f, {
21458
21476
  kind: p.kind,
21459
21477
  release: p.release
21460
- }), h = l(() => bT(m.entries), [
21478
+ }), h = l(() => wT(m.entries), [
21461
21479
  f,
21462
21480
  p.kind,
21463
21481
  p.release
21464
- ]), g = uT(e, l(() => [...h.combos.values()].some((e) => e.trainings.some((e) => e.offers.some((e) => e.format === "tflite"))), [h])), _ = (e, t) => {
21482
+ ]), g = mT(e, l(() => [...h.combos.values()].some((e) => e.trainings.some((e) => e.offers.some((e) => e.format === "tflite"))), [h])), _ = (e, t) => {
21465
21483
  s(e === "kind" ? { kind: t === "base" ? "base" : "custom" } : {
21466
21484
  ...p.kind === void 0 ? {} : { kind: p.kind },
21467
21485
  release: t
@@ -21472,7 +21490,7 @@ function ET({ trpc: e, models: t, onRegistered: n, onError: r, landNodeId: i })
21472
21490
  children: "No models this cluster can run are visible to this account yet — train one on Frigate+."
21473
21491
  });
21474
21492
  let v = h.combos.has(c) ? c : "";
21475
- return /* @__PURE__ */ B(it, { children: [d.modal !== null && /* @__PURE__ */ z($C, {
21493
+ return /* @__PURE__ */ B(it, { children: [d.modal !== null && /* @__PURE__ */ z(rw, {
21476
21494
  title: d.modal.title,
21477
21495
  steps: d.modal.steps,
21478
21496
  progress: d.modal.progress,
@@ -21480,7 +21498,7 @@ function ET({ trpc: e, models: t, onRegistered: n, onError: r, landNodeId: i })
21480
21498
  status: d.modal.status,
21481
21499
  ...d.modal.errorMessage === void 0 ? {} : { errorMessage: d.modal.errorMessage },
21482
21500
  onClose: d.closeModal
21483
- }), /* @__PURE__ */ z(Iw, {
21501
+ }), /* @__PURE__ */ z(Bw, {
21484
21502
  testId: "frigate-browser",
21485
21503
  preSelectors: [{
21486
21504
  id: "kind",
@@ -21503,7 +21521,7 @@ function ET({ trpc: e, models: t, onRegistered: n, onError: r, landNodeId: i })
21503
21521
  emptyMessage: "No Frigate+ models in this release that the cluster can run.",
21504
21522
  renderActionRow: (e) => {
21505
21523
  let t = h.combos.get(e);
21506
- return t === void 0 ? null : /* @__PURE__ */ z(OT, {
21524
+ return t === void 0 ? null : /* @__PURE__ */ z(MT, {
21507
21525
  combo: t,
21508
21526
  tfliteNodes: g,
21509
21527
  registeredIds: d.registeredIds,
@@ -21515,25 +21533,25 @@ function ET({ trpc: e, models: t, onRegistered: n, onError: r, landNodeId: i })
21515
21533
  }
21516
21534
  })] });
21517
21535
  }
21518
- var DT = (e) => `${DS(e.plusModelId)}::${e.format}`;
21519
- function OT({ combo: e, tfliteNodes: t, registeredIds: n, registryFormats: r, presenceByModel: i, busyId: o, onImport: s }) {
21536
+ var jT = (e) => `${jS(e.plusModelId)}::${e.format}`;
21537
+ function MT({ combo: e, tfliteNodes: t, registeredIds: n, registryFormats: r, presenceByModel: i, busyId: o, onImport: s }) {
21520
21538
  let [c, l] = a(e.trainings[0]?.key ?? ""), [u, d] = a("");
21521
21539
  m(() => {
21522
21540
  l(e.trainings[0]?.key ?? "");
21523
21541
  }, [e]);
21524
21542
  let f = e.trainings.find((e) => e.key === c) ?? e.trainings[0], p = f?.builds[0];
21525
21543
  if (f === void 0 || p === void 0) return null;
21526
- let h = f.offers.some((e) => e.format === "onnx"), g = f.offers.some((e) => e.format === "tflite"), _ = TT(t), v = f.offers.map((e) => ({
21527
- id: DT(e),
21544
+ let h = f.offers.some((e) => e.format === "onnx"), g = f.offers.some((e) => e.format === "tflite"), _ = kT(t), v = f.offers.map((e) => ({
21545
+ id: jT(e),
21528
21546
  format: e.format,
21529
21547
  driftStatus: e.needsCoral ? _ ?? "ok" : "ok"
21530
- })), y = [...new Set(f.offers.map((e) => DS(e.plusModelId)))].flatMap((e) => i[e] ?? []), b = `${e.name}${e.resolution === void 0 ? "" : ` ${e.resolution}`}`;
21548
+ })), y = [...new Set(f.offers.map((e) => jS(e.plusModelId)))].flatMap((e) => i[e] ?? []), b = `${e.name}${e.resolution === void 0 ? "" : ` ${e.resolution}`}`;
21531
21549
  return /* @__PURE__ */ B("div", {
21532
21550
  className: "space-y-3",
21533
21551
  "data-testid": "plus-combo-panel",
21534
21552
  "data-combo": e.sourceId,
21535
21553
  children: [
21536
- e.trainings.length > 1 && /* @__PURE__ */ z(Fw, {
21554
+ e.trainings.length > 1 && /* @__PURE__ */ z(zw, {
21537
21555
  label: "Training",
21538
21556
  value: f.key,
21539
21557
  options: e.trainings.map((e) => ({
@@ -21563,7 +21581,7 @@ function OT({ combo: e, tfliteNodes: t, registeredIds: n, registryFormats: r, pr
21563
21581
  }),
21564
21582
  " · input",
21565
21583
  " ",
21566
- rT(p).replace("x", "×"),
21584
+ sT(p).replace("x", "×"),
21567
21585
  f.verifiedImages > 0 ? /* @__PURE__ */ B(it, { children: [
21568
21586
  " · ",
21569
21587
  f.verifiedImages,
@@ -21579,21 +21597,21 @@ function OT({ combo: e, tfliteNodes: t, registeredIds: n, registryFormats: r, pr
21579
21597
  })
21580
21598
  ]
21581
21599
  }),
21582
- g && /* @__PURE__ */ z(dT, { nodes: t }),
21583
- /* @__PURE__ */ z(zw, {
21600
+ g && /* @__PURE__ */ z(hT, { nodes: t }),
21601
+ /* @__PURE__ */ z(Uw, {
21584
21602
  value: u,
21585
21603
  onChange: d,
21586
21604
  defaultName: p.name
21587
21605
  }),
21588
- /* @__PURE__ */ z(Rw, {
21606
+ /* @__PURE__ */ z(Hw, {
21589
21607
  entries: v,
21590
21608
  registeredIds: n,
21591
21609
  isImported: (e) => (r[e.id.split("::")[0] ?? ""] ?? []).includes(e.format),
21592
21610
  presence: y,
21593
21611
  busyId: o,
21594
21612
  onImport: (e) => {
21595
- let t = f.offers.find((t) => DT(t) === e);
21596
- t === void 0 || Vw(u) || s(t, b, Bw(u));
21613
+ let t = f.offers.find((t) => jT(t) === e);
21614
+ t === void 0 || Gw(u) || s(t, b, Ww(u));
21597
21615
  }
21598
21616
  })
21599
21617
  ]
@@ -21602,12 +21620,12 @@ function OT({ combo: e, tfliteNodes: t, registeredIds: n, registryFormats: r, pr
21602
21620
  //#endregion
21603
21621
  //#region src/tabs/FrigateSourceSections.tsx
21604
21622
  t();
21605
- var kT = "https://docs.frigate.video/integrations/plus/";
21606
- function AT({ trpc: e, status: t, onStatusChange: r }) {
21623
+ var NT = "https://docs.frigate.video/integrations/plus/";
21624
+ function PT({ trpc: e, status: t, onStatusChange: r }) {
21607
21625
  let [i, o] = a(""), [s, c] = a(null), [l, u] = a(!1), [d, f] = a(null), [p, m] = a(!1), [h, g] = a(!1), _ = n(async () => {
21608
21626
  m(!0), f(null);
21609
21627
  try {
21610
- let t = await NC(e);
21628
+ let t = await LC(e);
21611
21629
  f(t.ok ? "Connection OK" : t.error ?? "Connection failed");
21612
21630
  } catch (e) {
21613
21631
  f(e instanceof Error ? e.message : "Connection failed");
@@ -21616,13 +21634,13 @@ function AT({ trpc: e, status: t, onStatusChange: r }) {
21616
21634
  }
21617
21635
  }, [e]), v = n(async () => {
21618
21636
  let t = i.trim();
21619
- if (c(null), !$w(t)) {
21637
+ if (c(null), !rT(t)) {
21620
21638
  c("The key does not match the documented \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:40-hex\" format shown in your Frigate+ account.");
21621
21639
  return;
21622
21640
  }
21623
21641
  u(!0);
21624
21642
  try {
21625
- await IC(e, t), o(""), g(!1), r(await MC(e)), await _();
21643
+ await BC(e, t), o(""), g(!1), r(await IC(e)), await _();
21626
21644
  } catch (e) {
21627
21645
  c(e instanceof Error ? e.message : "Failed to save the API key");
21628
21646
  } finally {
@@ -21645,7 +21663,7 @@ function AT({ trpc: e, status: t, onStatusChange: r }) {
21645
21663
  "Required to list your account models.",
21646
21664
  " ",
21647
21665
  /* @__PURE__ */ z("a", {
21648
- href: kT,
21666
+ href: NT,
21649
21667
  target: "_blank",
21650
21668
  rel: "noreferrer",
21651
21669
  className: "text-primary hover:underline",
@@ -21686,7 +21704,7 @@ function AT({ trpc: e, status: t, onStatusChange: r }) {
21686
21704
  y && /* @__PURE__ */ B("div", {
21687
21705
  className: "space-y-1",
21688
21706
  children: [
21689
- /* @__PURE__ */ z(YC, {
21707
+ /* @__PURE__ */ z($C, {
21690
21708
  label: "Frigate+ API key",
21691
21709
  children: /* @__PURE__ */ z("input", {
21692
21710
  type: "password",
@@ -21727,11 +21745,11 @@ function AT({ trpc: e, status: t, onStatusChange: r }) {
21727
21745
  ]
21728
21746
  });
21729
21747
  }
21730
- function jT({ trpc: e, onRegistered: t, onError: r, onPrefillUpload: i, landNodeId: o }) {
21748
+ function FT({ trpc: e, onRegistered: t, onError: r, onPrefillUpload: i, landNodeId: o }) {
21731
21749
  let [s, c] = a(null), [l, u] = a(null), [d, f] = a(!1), p = n(async () => {
21732
21750
  f(!0);
21733
21751
  try {
21734
- u(await PC(e));
21752
+ u(await RC(e));
21735
21753
  } catch (e) {
21736
21754
  r(e instanceof Error ? e.message : "Failed to list Frigate+ models");
21737
21755
  } finally {
@@ -21742,7 +21760,7 @@ function jT({ trpc: e, onRegistered: t, onError: r, onPrefillUpload: i, landNode
21742
21760
  }, [p]);
21743
21761
  return m(() => {
21744
21762
  let t = !1;
21745
- return MC(e).then((e) => {
21763
+ return IC(e).then((e) => {
21746
21764
  t || (c(e), e.configured && p());
21747
21765
  }).catch(() => {
21748
21766
  t || c({
@@ -21758,7 +21776,7 @@ function jT({ trpc: e, onRegistered: t, onError: r, onPrefillUpload: i, landNode
21758
21776
  }) : s.configured ? /* @__PURE__ */ B("div", {
21759
21777
  className: "space-y-3",
21760
21778
  children: [
21761
- /* @__PURE__ */ z(AT, {
21779
+ /* @__PURE__ */ z(PT, {
21762
21780
  trpc: e,
21763
21781
  status: s,
21764
21782
  onStatusChange: h
@@ -21777,7 +21795,7 @@ function jT({ trpc: e, onRegistered: t, onError: r, onPrefillUpload: i, landNode
21777
21795
  className: "text-xs text-foreground-subtle",
21778
21796
  children: "Loading your Frigate+ models…"
21779
21797
  }),
21780
- l !== null && /* @__PURE__ */ z(ET, {
21798
+ l !== null && /* @__PURE__ */ z(AT, {
21781
21799
  models: l,
21782
21800
  trpc: e,
21783
21801
  onRegistered: t,
@@ -21787,7 +21805,7 @@ function jT({ trpc: e, onRegistered: t, onError: r, onPrefillUpload: i, landNode
21787
21805
  ]
21788
21806
  }) : /* @__PURE__ */ B("div", {
21789
21807
  className: "space-y-4",
21790
- children: [/* @__PURE__ */ z(AT, {
21808
+ children: [/* @__PURE__ */ z(PT, {
21791
21809
  trpc: e,
21792
21810
  status: s,
21793
21811
  onStatusChange: h
@@ -21796,7 +21814,7 @@ function jT({ trpc: e, onRegistered: t, onError: r, onPrefillUpload: i, landNode
21796
21814
  children: [/* @__PURE__ */ z("div", {
21797
21815
  className: "text-[11px] text-foreground-subtle",
21798
21816
  children: "Public default (no key required):"
21799
- }), Zw.map((n) => /* @__PURE__ */ z(MT, {
21817
+ }), tT.map((n) => /* @__PURE__ */ z(IT, {
21800
21818
  trpc: e,
21801
21819
  catalogId: n.id,
21802
21820
  onRegistered: t,
@@ -21807,8 +21825,8 @@ function jT({ trpc: e, onRegistered: t, onError: r, onPrefillUpload: i, landNode
21807
21825
  })]
21808
21826
  });
21809
21827
  }
21810
- function MT({ trpc: e, catalogId: t, onRegistered: n, onError: r, onPrefillUpload: i, landNodeId: o }) {
21811
- let s = Zw.find((e) => e.id === t), [c, l] = a(!1), [u, d] = a(""), [f, p] = a(null), h = uT(e, s?.format === "tflite"), [g, _] = a("");
21828
+ function IT({ trpc: e, catalogId: t, onRegistered: n, onError: r, onPrefillUpload: i, landNodeId: o }) {
21829
+ let s = tT.find((e) => e.id === t), [c, l] = a(!1), [u, d] = a(""), [f, p] = a(null), h = mT(e, s?.format === "tflite"), [g, _] = a("");
21812
21830
  if (m(() => {
21813
21831
  if (o !== void 0 && o.length > 0) {
21814
21832
  _(o);
@@ -21824,7 +21842,7 @@ function MT({ trpc: e, catalogId: t, onRegistered: n, onError: r, onPrefillUploa
21824
21842
  return /* @__PURE__ */ B("div", {
21825
21843
  className: "rounded-md border border-border bg-surface px-3 py-2 space-y-2",
21826
21844
  children: [
21827
- f !== null && /* @__PURE__ */ z($C, {
21845
+ f !== null && /* @__PURE__ */ z(rw, {
21828
21846
  title: f.title,
21829
21847
  steps: f.steps,
21830
21848
  progress: f.progress,
@@ -21855,7 +21873,7 @@ function MT({ trpc: e, catalogId: t, onRegistered: n, onError: r, onPrefillUploa
21855
21873
  })
21856
21874
  ]
21857
21875
  }),
21858
- s.format === "tflite" && /* @__PURE__ */ z(dT, { nodes: h }),
21876
+ s.format === "tflite" && /* @__PURE__ */ z(hT, { nodes: h }),
21859
21877
  o === void 0 && s.format === "tflite" && h !== null && h.length > 0 && /* @__PURE__ */ B("label", {
21860
21878
  className: "flex items-center gap-2 text-[11px] text-foreground",
21861
21879
  children: [/* @__PURE__ */ z("span", {
@@ -21878,7 +21896,7 @@ function MT({ trpc: e, catalogId: t, onRegistered: n, onError: r, onPrefillUploa
21878
21896
  children: o
21879
21897
  })]
21880
21898
  }),
21881
- /* @__PURE__ */ z(zw, {
21899
+ /* @__PURE__ */ z(Uw, {
21882
21900
  value: u,
21883
21901
  onChange: d,
21884
21902
  defaultName: s.label
@@ -21888,7 +21906,7 @@ function MT({ trpc: e, catalogId: t, onRegistered: n, onError: r, onPrefillUploa
21888
21906
  children: [/* @__PURE__ */ z("button", {
21889
21907
  onClick: () => {
21890
21908
  l(!0);
21891
- let t = b ? y : void 0, i = `Import ${s.label}`, a = aw({
21909
+ let t = b ? y : void 0, i = `Import ${s.label}`, a = lw({
21892
21910
  kind: "import",
21893
21911
  title: i,
21894
21912
  modelId: s.id,
@@ -21912,14 +21930,14 @@ function MT({ trpc: e, catalogId: t, onRegistered: n, onError: r, onPrefillUploa
21912
21930
  status: "running",
21913
21931
  sessionId: a
21914
21932
  });
21915
- let o = Bw(u);
21916
- jC(e, {
21933
+ let o = Ww(u);
21934
+ FC(e, {
21917
21935
  catalogId: s.id,
21918
21936
  ...o === void 0 ? {} : { name: o },
21919
21937
  ...t === void 0 ? {} : { targetNodeId: t }
21920
21938
  }).then((e) => {
21921
21939
  let r = t === void 0 ? `Registered "${e.modelId}" (${(e.bytes / 1e6).toFixed(1)} MB).` : `Registered "${e.modelId}" and landed on ${t} (${(e.bytes / 1e6).toFixed(1)} MB).`;
21922
- ow(a, r), sw(a, { status: "success" }), p((e) => e === null ? e : {
21940
+ uw(a, r), dw(a, { status: "success" }), p((e) => e === null ? e : {
21923
21941
  ...e,
21924
21942
  status: "success",
21925
21943
  logs: [...e.logs, r],
@@ -21930,7 +21948,7 @@ function MT({ trpc: e, catalogId: t, onRegistered: n, onError: r, onPrefillUploa
21930
21948
  }), n(r);
21931
21949
  }).catch((e) => {
21932
21950
  let t = e instanceof Error ? e.message : "Catalog import failed";
21933
- sw(a, {
21951
+ dw(a, {
21934
21952
  status: "error",
21935
21953
  errorMessage: t
21936
21954
  }), p((e) => e === null ? e : {
@@ -21944,7 +21962,7 @@ function MT({ trpc: e, catalogId: t, onRegistered: n, onError: r, onPrefillUploa
21944
21962
  }), r(t);
21945
21963
  }).finally(() => l(!1));
21946
21964
  },
21947
- disabled: c || v || Vw(u),
21965
+ disabled: c || v || Gw(u),
21948
21966
  className: "px-4 py-1.5 text-xs font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50 transition-colors",
21949
21967
  children: c ? "Importing…" : b ? `Import + land on ${y}` : "Register"
21950
21968
  }), /* @__PURE__ */ z("button", {
@@ -21965,10 +21983,10 @@ function MT({ trpc: e, catalogId: t, onRegistered: n, onError: r, onPrefillUploa
21965
21983
  //#endregion
21966
21984
  //#region src/tabs/CatalogTab.tsx
21967
21985
  t();
21968
- function NT(e) {
21986
+ function LT(e) {
21969
21987
  return e === "scrypted" || e === "frigate" || e === "camstack" ? e : "camstack";
21970
21988
  }
21971
- var PT = [
21989
+ var RT = [
21972
21990
  {
21973
21991
  value: "camstack",
21974
21992
  label: "CamStack"
@@ -21981,11 +21999,11 @@ var PT = [
21981
21999
  value: "frigate",
21982
22000
  label: "Frigate"
21983
22001
  }
21984
- ], FT = new Set(P);
21985
- function IT(e) {
21986
- return FT.has(e);
22002
+ ], zT = new Set(P);
22003
+ function BT(e) {
22004
+ return zT.has(e);
21987
22005
  }
21988
- function LT({ seed: e, nodeId: t, busyKey: n, onDownload: r }) {
22006
+ function VT({ seed: e, nodeId: t, busyKey: n, onDownload: r }) {
21989
22007
  return /* @__PURE__ */ z("div", {
21990
22008
  className: "flex flex-wrap gap-2 pt-1",
21991
22009
  children: e.formats.map((i) => {
@@ -21999,7 +22017,7 @@ function LT({ seed: e, nodeId: t, busyKey: n, onDownload: r }) {
21999
22017
  }),
22000
22018
  /* @__PURE__ */ z("span", {
22001
22019
  className: "text-foreground-subtle",
22002
- children: eC(i.sizeMB)
22020
+ children: iC(i.sizeMB)
22003
22021
  }),
22004
22022
  i.downloaded ? /* @__PURE__ */ B("span", {
22005
22023
  className: "text-success",
@@ -22016,8 +22034,8 @@ function LT({ seed: e, nodeId: t, busyKey: n, onDownload: r }) {
22016
22034
  })
22017
22035
  });
22018
22036
  }
22019
- function RT({ seeds: e, nodeId: t, busyKey: n, selectedByFamily: r, onSelectFamily: i, onDownload: a }) {
22020
- let o = ZS(e), s = QS(e), c = o.map($S), l = Je(c), u = new Map(e.map((e) => [e.modelId, e]));
22037
+ function HT({ seeds: e, nodeId: t, busyKey: n, selectedByFamily: r, onSelectFamily: i, onDownload: a }) {
22038
+ let o = tC(e), s = nC(e), c = o.map(rC), l = Je(c), u = new Map(e.map((e) => [e.modelId, e]));
22021
22039
  return l.length === 0 && s.length === 0 ? null : /* @__PURE__ */ B("div", {
22022
22040
  className: "space-y-3",
22023
22041
  "data-testid": "catalog-provider",
@@ -22033,7 +22051,7 @@ function RT({ seeds: e, nodeId: t, busyKey: n, selectedByFamily: r, onSelectFami
22033
22051
  className: "flex items-baseline justify-between gap-2",
22034
22052
  children: [/* @__PURE__ */ z("span", {
22035
22053
  className: "text-sm font-medium text-foreground",
22036
- children: JS(e.family, e.label)
22054
+ children: QS(e.family, e.label)
22037
22055
  }), /* @__PURE__ */ z("span", {
22038
22056
  className: "text-[10px] font-mono text-foreground-subtle",
22039
22057
  children: s
@@ -22044,7 +22062,7 @@ function RT({ seeds: e, nodeId: t, busyKey: n, selectedByFamily: r, onSelectFami
22044
22062
  value: s,
22045
22063
  onChange: (t) => i(e.family, t)
22046
22064
  }),
22047
- l && /* @__PURE__ */ z(LT, {
22065
+ l && /* @__PURE__ */ z(VT, {
22048
22066
  seed: l,
22049
22067
  nodeId: t,
22050
22068
  busyKey: n,
@@ -22064,7 +22082,7 @@ function RT({ seeds: e, nodeId: t, busyKey: n, selectedByFamily: r, onSelectFami
22064
22082
  className: "text-[10px] font-mono text-foreground-subtle",
22065
22083
  children: e.modelId
22066
22084
  })]
22067
- }), /* @__PURE__ */ z(LT, {
22085
+ }), /* @__PURE__ */ z(VT, {
22068
22086
  seed: e,
22069
22087
  nodeId: t,
22070
22088
  busyKey: n,
@@ -22073,11 +22091,11 @@ function RT({ seeds: e, nodeId: t, busyKey: n, selectedByFamily: r, onSelectFami
22073
22091
  }, `${e.stepId}:${e.modelId}`))]
22074
22092
  });
22075
22093
  }
22076
- function zT({ trpc: e, refreshKey: t, nodeId: r }) {
22094
+ function UT({ trpc: e, refreshKey: t, nodeId: r }) {
22077
22095
  let [i, o] = a([]), [s, c] = a(""), [u, d] = a(!0), [f, p] = a(null), [h, g] = a(null), [_, v] = a(null), [y, b] = a({}), x = n(async () => {
22078
22096
  p(null);
22079
22097
  try {
22080
- let t = await xC(e, r);
22098
+ let t = await TC(e, r);
22081
22099
  o(t), c((e) => e && t.some((t) => t.stepId === e) ? e : t[0]?.stepId ?? "");
22082
22100
  } catch (e) {
22083
22101
  p(e instanceof Error ? e.message : "Failed to load catalog");
@@ -22088,7 +22106,7 @@ function zT({ trpc: e, refreshKey: t, nodeId: r }) {
22088
22106
  m(() => {
22089
22107
  d(!0), x();
22090
22108
  }, [x, t]);
22091
- let S = l(() => YS(i), [i]), C = l(() => XS(i, s).filter((e) => e.provider === "camstack"), [i, s]), w = l(() => Je(ZS(C).map($S)), [C]), T = l(() => {
22109
+ let S = l(() => $S(i), [i]), C = l(() => eC(i, s).filter((e) => e.provider === "camstack"), [i, s]), w = l(() => Je(tC(C).map(rC)), [C]), T = l(() => {
22092
22110
  let e = /* @__PURE__ */ new Map();
22093
22111
  for (let t of C) e.set(t.modelId, t);
22094
22112
  return e;
@@ -22103,8 +22121,8 @@ function zT({ trpc: e, refreshKey: t, nodeId: r }) {
22103
22121
  return !n && Object.keys(e).length === Object.keys(t).length ? e : t;
22104
22122
  });
22105
22123
  }, [w, T]);
22106
- let E = uw(), D = n(async (t, n) => {
22107
- if (IT(n)) {
22124
+ let E = mw(), D = n(async (t, n) => {
22125
+ if (BT(n)) {
22108
22126
  g(`${t.stepId}/${t.modelId}/${n}`), v(null);
22109
22127
  try {
22110
22128
  await E.run({
@@ -22120,7 +22138,7 @@ function zT({ trpc: e, refreshKey: t, nodeId: r }) {
22120
22138
  }],
22121
22139
  initialLog: `Downloading ${t.modelId} (${n}) → ${r}…`
22122
22140
  }, async ({ appendLog: i, patchSteps: a }) => {
22123
- await CC(e, {
22141
+ await DC(e, {
22124
22142
  addonId: t.stepId,
22125
22143
  modelId: t.modelId,
22126
22144
  format: n,
@@ -22156,7 +22174,7 @@ function zT({ trpc: e, refreshKey: t, nodeId: r }) {
22156
22174
  className: "rounded-md border border-danger/30 bg-danger/10 px-3 py-2 text-xs text-danger",
22157
22175
  children: _
22158
22176
  }),
22159
- /* @__PURE__ */ z(YC, {
22177
+ /* @__PURE__ */ z($C, {
22160
22178
  label: "Step",
22161
22179
  children: /* @__PURE__ */ z(Ga, {
22162
22180
  "aria-label": "Step",
@@ -22175,7 +22193,7 @@ function zT({ trpc: e, refreshKey: t, nodeId: r }) {
22175
22193
  C.length === 0 ? /* @__PURE__ */ z("div", {
22176
22194
  className: "rounded-xl border border-border bg-surface text-center text-xs text-foreground-subtle italic py-10",
22177
22195
  children: "No CamStack models for this step."
22178
- }) : /* @__PURE__ */ z(RT, {
22196
+ }) : /* @__PURE__ */ z(HT, {
22179
22197
  seeds: C,
22180
22198
  nodeId: r,
22181
22199
  busyKey: h,
@@ -22189,7 +22207,7 @@ function zT({ trpc: e, refreshKey: t, nodeId: r }) {
22189
22207
  ]
22190
22208
  });
22191
22209
  }
22192
- function BT({ trpc: e, refreshKey: t, source: n, onSourceChange: r, onRegistered: i, onPrefillUpload: o }) {
22210
+ function WT({ trpc: e, refreshKey: t, source: n, onSourceChange: r, onRegistered: i, onPrefillUpload: o }) {
22193
22211
  let [s, c] = a("hub");
22194
22212
  return /* @__PURE__ */ B("div", {
22195
22213
  className: x,
@@ -22204,7 +22222,7 @@ function BT({ trpc: e, refreshKey: t, source: n, onSourceChange: r, onRegistered
22204
22222
  "data-source": n,
22205
22223
  role: "group",
22206
22224
  "aria-label": "Catalog source",
22207
- children: PT.map((e) => /* @__PURE__ */ z("button", {
22225
+ children: RT.map((e) => /* @__PURE__ */ z("button", {
22208
22226
  type: "button",
22209
22227
  "aria-pressed": n === e.value,
22210
22228
  onClick: () => r(e.value),
@@ -22212,22 +22230,22 @@ function BT({ trpc: e, refreshKey: t, source: n, onSourceChange: r, onRegistered
22212
22230
  children: e.label
22213
22231
  }, e.value))
22214
22232
  }),
22215
- end: /* @__PURE__ */ z(JC, {
22233
+ end: /* @__PURE__ */ z(QC, {
22216
22234
  selectedNodeId: s,
22217
22235
  onSelect: c
22218
22236
  })
22219
22237
  }),
22220
- n === "camstack" && /* @__PURE__ */ z(zT, {
22238
+ n === "camstack" && /* @__PURE__ */ z(UT, {
22221
22239
  trpc: e,
22222
22240
  refreshKey: t,
22223
22241
  nodeId: s
22224
22242
  }),
22225
- n === "scrypted" && /* @__PURE__ */ z(Ww, {
22243
+ n === "scrypted" && /* @__PURE__ */ z(Jw, {
22226
22244
  trpc: e,
22227
22245
  landNodeId: s,
22228
22246
  onImported: () => i?.()
22229
22247
  }),
22230
- n === "frigate" && /* @__PURE__ */ z(jT, {
22248
+ n === "frigate" && /* @__PURE__ */ z(FT, {
22231
22249
  trpc: e,
22232
22250
  landNodeId: s,
22233
22251
  onRegistered: (e) => {
@@ -22241,15 +22259,15 @@ function BT({ trpc: e, refreshKey: t, source: n, onSourceChange: r, onRegistered
22241
22259
  }
22242
22260
  //#endregion
22243
22261
  //#region src/ensure-formats.ts
22244
- function VT(e) {
22262
+ function GT(e) {
22245
22263
  return e.length === 0 ? "" : ` Engine conversions: ${e.map((e) => e.ok ? `${e.format} ✓${e.nodeId ? ` (${e.nodeId})` : ""}` : `${e.format} ✗ — ${e.error ?? "failed"}`).join("; ")}.`;
22246
22264
  }
22247
22265
  //#endregion
22248
22266
  //#region src/frigate/registration.ts
22249
- var HT = /^[a-zA-Z0-9._-]+$/;
22250
- function UT(e) {
22251
- let t = e.type === "custom" ? null : Yw[e.type];
22252
- if (!HT.test(e.modelId)) throw Error(`Model id "${e.modelId}" is invalid — letters, digits, dot, underscore, hyphen only`);
22267
+ var KT = /^[a-zA-Z0-9._-]+$/;
22268
+ function qT(e) {
22269
+ let t = e.type === "custom" ? null : $w[e.type];
22270
+ if (!KT.test(e.modelId)) throw Error(`Model id "${e.modelId}" is invalid — letters, digits, dot, underscore, hyphen only`);
22253
22271
  if (!e.name.trim()) throw Error("Display name is required");
22254
22272
  if (!e.stepId.trim()) throw Error("Step is required");
22255
22273
  if (!(e.inputWidth > 0) || !(e.inputHeight > 0)) throw Error("Input size must be positive");
@@ -22281,7 +22299,7 @@ function UT(e) {
22281
22299
  ...e.defaultClassFloors === void 0 ? {} : { defaultClassFloors: { ...e.defaultClassFloors } }
22282
22300
  } : {
22283
22301
  provider: "frigate",
22284
- group: Jw(e.type, e.inputWidth),
22302
+ group: Qw(e.type, e.inputWidth),
22285
22303
  ...F(e.labels),
22286
22304
  defaultClassFloors: Ce("stock", e.defaultClassFloors)
22287
22305
  }
@@ -22294,11 +22312,11 @@ function UT(e) {
22294
22312
  //#endregion
22295
22313
  //#region src/components/StepSelect.tsx
22296
22314
  t();
22297
- function WT({ trpc: e, label: t = "Step", value: n, onChange: r, slots: i }) {
22315
+ function JT({ trpc: e, label: t = "Step", value: n, onChange: r, slots: i }) {
22298
22316
  let [o, s] = a(null), [c, l] = a(null);
22299
22317
  return m(() => {
22300
22318
  let t = !1;
22301
- return yC(e).then((e) => {
22319
+ return CC(e).then((e) => {
22302
22320
  if (t) return;
22303
22321
  let a = i ? e.filter((e) => i.includes(e.slot)) : e;
22304
22322
  s(a), l(null), a.length > 0 && !a.some((e) => e.id === n) && r(a[0].id);
@@ -22307,7 +22325,7 @@ function WT({ trpc: e, label: t = "Step", value: n, onChange: r, slots: i }) {
22307
22325
  }), () => {
22308
22326
  t = !0;
22309
22327
  };
22310
- }, [e]), /* @__PURE__ */ B(YC, {
22328
+ }, [e]), /* @__PURE__ */ B($C, {
22311
22329
  label: t,
22312
22330
  children: [/* @__PURE__ */ B("select", {
22313
22331
  value: n,
@@ -22340,7 +22358,7 @@ function WT({ trpc: e, label: t = "Step", value: n, onChange: r, slots: i }) {
22340
22358
  }
22341
22359
  //#endregion
22342
22360
  //#region src/ui/probe-custom-model.ts
22343
- var GT = {
22361
+ var YT = {
22344
22362
  ".onnx": "onnx",
22345
22363
  ".tflite": "tflite",
22346
22364
  ".pt": "pt",
@@ -22349,30 +22367,30 @@ var GT = {
22349
22367
  ".mlmodel": "coreml",
22350
22368
  ".xml": "openvino"
22351
22369
  };
22352
- function KT(e) {
22370
+ function XT(e) {
22353
22371
  let t = (e.split(/[/?#]/).pop() ?? e).toLowerCase();
22354
22372
  if (t.endsWith(".mlpackage")) return ".mlpackage";
22355
22373
  let n = t.lastIndexOf(".");
22356
22374
  return n >= 0 ? t.slice(n) : "";
22357
22375
  }
22358
- function qT(e) {
22376
+ function ZT(e) {
22359
22377
  return (e.split(/[/?#]/).pop() ?? e).replace(/\.(onnx|tflite|pt|pth|xml|mlmodel|mlpackage)$/i, "");
22360
22378
  }
22361
- function JT(e) {
22379
+ function QT(e) {
22362
22380
  let t = e.trim().toLowerCase().replace(/[^a-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "");
22363
22381
  return t.length > 0 ? t : "custom-model";
22364
22382
  }
22365
- function YT(e) {
22383
+ function $T(e) {
22366
22384
  return /\b640\b/.test(e) || /[_-]640([_-]|$)/.test(e) ? 640 : (/\b320\b/.test(e) || /[_-]320([_-]|$)/.test(e), 320);
22367
22385
  }
22368
- function XT(e) {
22386
+ function eE(e) {
22369
22387
  let t = e.replace(/[_-]+/g, " ").trim();
22370
22388
  return t.length === 0 ? "Custom model" : t.replace(/\b\w/g, (e) => e.toUpperCase());
22371
22389
  }
22372
- function ZT(e) {
22373
- let t = [], n = e.kind === "file" ? e.filename : e.url, r = GT[KT(n)] ?? null;
22390
+ function tE(e) {
22391
+ let t = [], n = e.kind === "file" ? e.filename : e.url, r = YT[XT(n)] ?? null;
22374
22392
  r === null && n.trim().length > 0 && t.push("Could not infer format from extension — pick it below.");
22375
- let i = qT(n), a = JT(i), o = XT(i), s = YT(i);
22393
+ let i = ZT(n), a = QT(i), o = eE(i), s = $T(i);
22376
22394
  s === 640 ? t.push("Input size guessed 640 from the name.") : t.push("Input size default 320 (edit if the model expects another).");
22377
22395
  let c = null;
22378
22396
  return e.kind === "file" && typeof e.bytes == "number" && e.bytes > 0 && (c = Number((e.bytes / 1e6).toFixed(1))), t.push("Decode (postprocessor) is not inferred — choose to match the model output."), {
@@ -22387,13 +22405,13 @@ function ZT(e) {
22387
22405
  //#endregion
22388
22406
  //#region src/tabs/RegisterTab.tsx
22389
22407
  t();
22390
- var QT = [
22408
+ var nE = [
22391
22409
  "onnx",
22392
22410
  "openvino",
22393
22411
  "coreml",
22394
22412
  "tflite",
22395
22413
  "pt"
22396
- ], $T = [
22414
+ ], rE = [
22397
22415
  "yolo",
22398
22416
  "yolonas",
22399
22417
  "ssd",
@@ -22406,24 +22424,24 @@ var QT = [
22406
22424
  "ctc",
22407
22425
  "plate-slots",
22408
22426
  "saliency"
22409
- ], eE = [
22427
+ ], iE = [
22410
22428
  ".onnx",
22411
22429
  ".tflite",
22412
22430
  ".pt"
22413
- ], tE = [{
22431
+ ], aE = [{
22414
22432
  value: "upload",
22415
22433
  label: "Upload file"
22416
22434
  }, {
22417
22435
  value: "url",
22418
22436
  label: "Remote URL"
22419
22437
  }];
22420
- function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsumed: i }) {
22421
- let s = uw(), [c, u] = a("upload"), [d, f] = a(""), [p, h] = a(""), [g, _] = a("object-detection"), [v, y] = a("onnx"), [b, x] = a(""), [S, C] = a(""), [w, T] = a(0), [E, D] = a(320), [O, k] = a(320), [ee, A] = a(""), [te, j] = a(null), [ne, re] = a([]), [M, ie] = a({ state: "idle" }), [ae, oe] = a(!1), [se, N] = a(null), [P, ce] = a(null), le = o(null), F = l(() => Xw(ee), [ee]);
22438
+ function oE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsumed: i }) {
22439
+ let s = mw(), [c, u] = a("upload"), [d, f] = a(""), [p, h] = a(""), [g, _] = a("object-detection"), [v, y] = a("onnx"), [b, x] = a(""), [S, C] = a(""), [w, T] = a(0), [E, D] = a(320), [O, k] = a(320), [ee, A] = a(""), [te, j] = a(null), [ne, re] = a([]), [M, ie] = a({ state: "idle" }), [ae, oe] = a(!1), [se, N] = a(null), [P, ce] = a(null), le = o(null), F = l(() => eT(ee), [ee]);
22422
22440
  m(() => {
22423
22441
  r != null && (u("upload"), y(r.format), x(r.postprocessor ?? ""), D(r.inputSize), k(r.inputSize), A(r.labels.join("\n")), j(r.sourceLabel), N(null), ce(null), i?.());
22424
22442
  }, [r, i]);
22425
22443
  let ue = n((e, t) => {
22426
- let n = ZT(e);
22444
+ let n = tE(e);
22427
22445
  re(n.hints), n.format !== null && y(n.format), D(n.inputSize), k(n.inputSize), (t?.forceId || !d) && f(n.modelId), p || h(n.name), n.sizeMB !== null && e.kind === "url" && T(n.sizeMB);
22428
22446
  }, [d, p]), de = n(async (t) => {
22429
22447
  N(null), ue({
@@ -22437,7 +22455,7 @@ function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsu
22437
22455
  try {
22438
22456
  ie({
22439
22457
  state: "done",
22440
- file: await DC(e, t, (e, t) => {
22458
+ file: await jC(e, t, (e, t) => {
22441
22459
  ie({
22442
22460
  state: "uploading",
22443
22461
  pct: Math.round(e / t * 100)
@@ -22479,13 +22497,13 @@ function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsu
22479
22497
  sizeMB: w
22480
22498
  } : null;
22481
22499
  if (n === null) return N(c === "upload" ? "Upload the model file first" : "Model URL is required");
22482
- if (Vw(p)) return N("The display name is not acceptable");
22500
+ if (Gw(p)) return N("The display name is not acceptable");
22483
22501
  oe(!0);
22484
22502
  try {
22485
- let r = $T.find((e) => e === b), i = UT({
22503
+ let r = rE.find((e) => e === b), i = qT({
22486
22504
  type: "custom",
22487
22505
  modelId: d.trim(),
22488
- name: Bw(p) ?? d.trim(),
22506
+ name: Ww(p) ?? d.trim(),
22489
22507
  stepId: g,
22490
22508
  source: n,
22491
22509
  format: v,
@@ -22510,11 +22528,11 @@ function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsu
22510
22528
  }],
22511
22529
  initialLog: `Registering "${i.entry.name}"…`
22512
22530
  }, async ({ appendLog: t, patchSteps: n }) => {
22513
- let r = await pC(e, i);
22531
+ let r = await _C(e, i);
22514
22532
  n((e) => e.map((e) => e.status === "active" || e.status === "pending" ? {
22515
22533
  ...e,
22516
22534
  status: "done"
22517
- } : e)), t(`Registered for step ${g}.${VT(r.conversions)}`);
22535
+ } : e)), t(`Registered for step ${g}.${GT(r.conversions)}`);
22518
22536
  });
22519
22537
  let a = `Registered "${i.entry.name}".`;
22520
22538
  ce(a), t(a);
@@ -22559,7 +22577,7 @@ function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsu
22559
22577
  children: "Source"
22560
22578
  }), /* @__PURE__ */ z("div", {
22561
22579
  className: "inline-flex rounded-md border border-border overflow-hidden",
22562
- children: tE.map((e) => /* @__PURE__ */ z("button", {
22580
+ children: aE.map((e) => /* @__PURE__ */ z("button", {
22563
22581
  type: "button",
22564
22582
  onClick: () => {
22565
22583
  N(null), ce(null), u(e.value);
@@ -22581,8 +22599,8 @@ function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsu
22581
22599
  ". Upload your exported file below."
22582
22600
  ]
22583
22601
  }),
22584
- c === "upload" ? /* @__PURE__ */ B(YC, {
22585
- label: `Model file (${eE.join(" / ")})`,
22602
+ c === "upload" ? /* @__PURE__ */ B($C, {
22603
+ label: `Model file (${iE.join(" / ")})`,
22586
22604
  children: [
22587
22605
  /* @__PURE__ */ B("div", {
22588
22606
  className: "flex items-center gap-3 flex-wrap",
@@ -22614,7 +22632,7 @@ function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsu
22614
22632
  /* @__PURE__ */ z("input", {
22615
22633
  ref: le,
22616
22634
  type: "file",
22617
- accept: eE.join(","),
22635
+ accept: iE.join(","),
22618
22636
  className: "hidden",
22619
22637
  onChange: (e) => {
22620
22638
  let t = e.target.files?.[0];
@@ -22635,13 +22653,13 @@ function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsu
22635
22653
  className: "grid grid-cols-1 sm:grid-cols-3 gap-3",
22636
22654
  children: [/* @__PURE__ */ z("div", {
22637
22655
  className: "sm:col-span-2",
22638
- children: /* @__PURE__ */ z(XC, {
22656
+ children: /* @__PURE__ */ z(ew, {
22639
22657
  label: "Model URL / HuggingFace path",
22640
22658
  value: S,
22641
22659
  onChange: C,
22642
22660
  placeholder: "https://… or hf://org/repo/model.onnx"
22643
22661
  })
22644
- }), /* @__PURE__ */ z(ZC, {
22662
+ }), /* @__PURE__ */ z(tw, {
22645
22663
  label: "Size (MB)",
22646
22664
  value: w,
22647
22665
  onChange: T,
@@ -22660,12 +22678,12 @@ function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsu
22660
22678
  }),
22661
22679
  /* @__PURE__ */ B("div", {
22662
22680
  className: "grid grid-cols-1 sm:grid-cols-2 gap-3",
22663
- children: [/* @__PURE__ */ z(XC, {
22681
+ children: [/* @__PURE__ */ z(ew, {
22664
22682
  label: "Model id",
22665
22683
  value: d,
22666
22684
  onChange: f,
22667
22685
  placeholder: "my-detector"
22668
- }), /* @__PURE__ */ z(zw, {
22686
+ }), /* @__PURE__ */ z(Uw, {
22669
22687
  value: p,
22670
22688
  onChange: h,
22671
22689
  defaultName: d.trim() || "My Detector"
@@ -22674,18 +22692,18 @@ function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsu
22674
22692
  /* @__PURE__ */ B("div", {
22675
22693
  className: "grid grid-cols-1 sm:grid-cols-3 gap-3",
22676
22694
  children: [
22677
- /* @__PURE__ */ z(WT, {
22695
+ /* @__PURE__ */ z(JT, {
22678
22696
  trpc: e,
22679
22697
  value: g,
22680
22698
  onChange: _
22681
22699
  }),
22682
- /* @__PURE__ */ z(ZC, {
22700
+ /* @__PURE__ */ z(tw, {
22683
22701
  label: "Input width",
22684
22702
  value: E,
22685
22703
  onChange: D,
22686
22704
  min: 1
22687
22705
  }),
22688
- /* @__PURE__ */ z(ZC, {
22706
+ /* @__PURE__ */ z(tw, {
22689
22707
  label: "Input height",
22690
22708
  value: O,
22691
22709
  onChange: k,
@@ -22695,21 +22713,21 @@ function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsu
22695
22713
  }),
22696
22714
  /* @__PURE__ */ B("div", {
22697
22715
  className: "grid grid-cols-1 sm:grid-cols-2 gap-3",
22698
- children: [/* @__PURE__ */ z(YC, {
22716
+ children: [/* @__PURE__ */ z($C, {
22699
22717
  label: "Format",
22700
22718
  children: /* @__PURE__ */ z("select", {
22701
22719
  value: v,
22702
22720
  onChange: (e) => {
22703
- let t = QT.find((t) => t === e.target.value);
22721
+ let t = nE.find((t) => t === e.target.value);
22704
22722
  t !== void 0 && y(t);
22705
22723
  },
22706
22724
  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",
22707
- children: QT.map((e) => /* @__PURE__ */ z("option", {
22725
+ children: nE.map((e) => /* @__PURE__ */ z("option", {
22708
22726
  value: e,
22709
22727
  children: e
22710
22728
  }, e))
22711
22729
  })
22712
- }), /* @__PURE__ */ B(YC, {
22730
+ }), /* @__PURE__ */ B($C, {
22713
22731
  label: "Decode (postprocessor)",
22714
22732
  children: [/* @__PURE__ */ B("select", {
22715
22733
  value: b,
@@ -22718,7 +22736,7 @@ function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsu
22718
22736
  children: [/* @__PURE__ */ z("option", {
22719
22737
  value: "",
22720
22738
  children: "Step default"
22721
- }), $T.map((e) => /* @__PURE__ */ z("option", {
22739
+ }), rE.map((e) => /* @__PURE__ */ z("option", {
22722
22740
  value: e,
22723
22741
  children: e
22724
22742
  }, e))]
@@ -22728,7 +22746,7 @@ function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsu
22728
22746
  })]
22729
22747
  })]
22730
22748
  }),
22731
- /* @__PURE__ */ z(YC, {
22749
+ /* @__PURE__ */ z($C, {
22732
22750
  label: `Labelmap (${F.length} labels — order = model output index)`,
22733
22751
  children: /* @__PURE__ */ z("textarea", {
22734
22752
  value: ee,
@@ -22753,7 +22771,7 @@ function nE({ trpc: e, onRegistered: t, initialPrefill: r = null, onPrefillConsu
22753
22771
  //#endregion
22754
22772
  //#region src/tabs/ImportTab.tsx
22755
22773
  t();
22756
- function rE({ trpc: e, onRegistered: t, initialPrefill: n = null, onPrefillConsumed: r }) {
22774
+ function sE({ trpc: e, onRegistered: t, initialPrefill: n = null, onPrefillConsumed: r }) {
22757
22775
  let [i, o] = a(null), [s, c] = a(null), [l, u] = a(n);
22758
22776
  return m(() => {
22759
22777
  n !== null && u(n);
@@ -22769,7 +22787,7 @@ function rE({ trpc: e, onRegistered: t, initialPrefill: n = null, onPrefillConsu
22769
22787
  className: "rounded-md border border-success/30 bg-success/10 px-3 py-2 text-xs text-success",
22770
22788
  children: s
22771
22789
  }),
22772
- /* @__PURE__ */ z(nE, {
22790
+ /* @__PURE__ */ z(oE, {
22773
22791
  trpc: e,
22774
22792
  onRegistered: (e) => {
22775
22793
  c(e ?? "Registered."), o(null), t();
@@ -22784,7 +22802,7 @@ function rE({ trpc: e, onRegistered: t, initialPrefill: n = null, onPrefillConsu
22784
22802
  }
22785
22803
  //#endregion
22786
22804
  //#region src/ui/installed-activation.ts
22787
- function iE(e, t, n, r, i) {
22805
+ function cE(e, t, n, r, i) {
22788
22806
  if (r == null || de(t)) return [];
22789
22807
  let a = [];
22790
22808
  for (let o of e) o.enabled && i.has(o.format) && Uo(r.models, o.format) && Wo({
@@ -22798,10 +22816,10 @@ function iE(e, t, n, r, i) {
22798
22816
  });
22799
22817
  return a;
22800
22818
  }
22801
- function aE(e, t) {
22819
+ function lE(e, t) {
22802
22820
  return { [Ne(e)]: t };
22803
22821
  }
22804
- function oE(e, t, n) {
22822
+ function uE(e, t, n) {
22805
22823
  let r = Object.keys(t).length > 0;
22806
22824
  return {
22807
22825
  enabled: n ? !0 : e.enabled,
@@ -22810,18 +22828,18 @@ function oE(e, t, n) {
22810
22828
  ...r ? { steps: t } : {}
22811
22829
  };
22812
22830
  }
22813
- function sE(e, t, n, r) {
22831
+ function dE(e, t, n, r) {
22814
22832
  let i = new Set(r), a = {};
22815
22833
  for (let r of e) {
22816
22834
  let e = { ...r.steps };
22817
22835
  i.has(r.key) && (e[t] = {
22818
22836
  ...e[t],
22819
22837
  modelId: n
22820
- }), a[r.key] = oE(r, e, i.has(r.key));
22838
+ }), a[r.key] = uE(r, e, i.has(r.key));
22821
22839
  }
22822
22840
  return a;
22823
22841
  }
22824
- function cE(e, t, n, r, i) {
22842
+ function fE(e, t, n, r, i) {
22825
22843
  let a = {};
22826
22844
  for (let o of e) {
22827
22845
  let e = { ...o.steps };
@@ -22837,52 +22855,52 @@ function cE(e, t, n, r, i) {
22837
22855
  Object.keys(i).length > 0 ? e[t] = i : delete e[t];
22838
22856
  }
22839
22857
  }
22840
- a[o.key] = oE(o, e, o.key === i);
22858
+ a[o.key] = uE(o, e, o.key === i);
22841
22859
  }
22842
22860
  return a;
22843
22861
  }
22844
22862
  //#endregion
22845
22863
  //#region src/ui/installed-inventory.ts
22846
- function lE(e) {
22864
+ function pE(e) {
22847
22865
  return Po(e);
22848
22866
  }
22849
- function uE(e) {
22867
+ function mE(e) {
22850
22868
  return e.map((e) => ({
22851
22869
  value: e.key,
22852
- label: lE(e),
22870
+ label: pE(e),
22853
22871
  enabled: e.enabled
22854
22872
  }));
22855
22873
  }
22856
- var dE = /\[([^\]]+)\]\s*$/;
22857
- function fE(e, t) {
22858
- let n = dE.exec(e.engineKey)?.[1];
22874
+ var hE = /\[([^\]]+)\]\s*$/;
22875
+ function gE(e, t) {
22876
+ let n = hE.exec(e.engineKey)?.[1];
22859
22877
  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;
22860
22878
  }
22861
- function pE(e, t, n, r) {
22879
+ function _E(e, t, n, r) {
22862
22880
  if (e === null) return null;
22863
22881
  let i = `${n}/${r}`;
22864
- return e.some((e) => fE(e, t) && e.modelsLoaded.includes(i));
22882
+ return e.some((e) => gE(e, t) && e.modelsLoaded.includes(i));
22865
22883
  }
22866
- var mE = new Set(["audio-classifier"]);
22867
- function hE(e, t, n) {
22884
+ var vE = new Set(["audio-classifier"]);
22885
+ function yE(e, t, n) {
22868
22886
  return t?.[e] ?? n?.defaultModelId;
22869
22887
  }
22870
- function gE(e, t) {
22888
+ function bE(e, t) {
22871
22889
  if (e.onDisk !== "current") return /* @__PURE__ */ new Set();
22872
22890
  let n = t.stepCatalogs[e.stepId], r = new Set([e.format]);
22873
- return de(e.stepId) ? hE(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(iE(t.devices, e.stepId, e.modelId, n, r).map((e) => e.deviceKey));
22891
+ return de(e.stepId) ? yE(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(cE(t.devices, e.stepId, e.modelId, n, r).map((e) => e.deviceKey));
22874
22892
  }
22875
- function _E(e, t, n) {
22893
+ function xE(e, t, n) {
22876
22894
  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";
22877
22895
  }
22878
- function vE(e, t) {
22879
- let n = gE(e, t), r = t.devices.filter((t) => t.format === e.format).map((r) => ({
22896
+ function SE(e, t) {
22897
+ let n = bE(e, t), r = t.devices.filter((t) => t.format === e.format).map((r) => ({
22880
22898
  deviceKey: r.key,
22881
- label: lE(r),
22899
+ label: pE(r),
22882
22900
  enabled: r.enabled,
22883
- loaded: pE(t.engines, r, e.stepId, e.modelId),
22901
+ loaded: _E(t.engines, r, e.stepId, e.modelId),
22884
22902
  configured: n.has(r.key)
22885
- })).toSorted((e, t) => e.label.localeCompare(t.label)), i = t.stepCatalogs[e.stepId]?.slot, a = _E(r, i !== void 0 && mE.has(i), t.engines !== null);
22903
+ })).toSorted((e, t) => e.label.localeCompare(t.label)), i = t.stepCatalogs[e.stepId]?.slot, a = xE(r, i !== void 0 && vE.has(i), t.engines !== null);
22886
22904
  return {
22887
22905
  ...e,
22888
22906
  key: `${e.stepId}::${e.modelId}::${e.format}`,
@@ -22893,7 +22911,7 @@ function vE(e, t) {
22893
22911
  removable: a === "idle" || a === "unused"
22894
22912
  };
22895
22913
  }
22896
- function yE(e, t, n) {
22914
+ function CE(e, t, n) {
22897
22915
  return t.onDisk === "missing" ? null : {
22898
22916
  stepId: e.stepId,
22899
22917
  modelId: e.modelId,
@@ -22905,17 +22923,17 @@ function yE(e, t, n) {
22905
22923
  ...t.precision === void 0 ? {} : { precision: t.precision },
22906
22924
  onDisk: t.onDisk,
22907
22925
  origin: n.has(e.modelId) ? "registry" : "pipeline",
22908
- ...KS(e.supplies)
22926
+ ...XS(e.supplies)
22909
22927
  };
22910
22928
  }
22911
- function bE(e, t) {
22929
+ function wE(e, t) {
22912
22930
  let n = [];
22913
22931
  for (let r of e.registry) {
22914
22932
  let i = r.entry.id, a = e.availability[i]?.[e.nodeId];
22915
22933
  if (a !== void 0) for (let [e, o] of Object.entries(a.formats)) t.has(`${r.stepId}::${i}::${e}`) || n.push({
22916
22934
  stepId: r.stepId,
22917
22935
  modelId: i,
22918
- name: FS(r.entry),
22936
+ name: zS(r.entry),
22919
22937
  description: r.entry.description,
22920
22938
  provider: we({
22921
22939
  id: i,
@@ -22926,33 +22944,33 @@ function bE(e, t) {
22926
22944
  sizeMB: o.bytes / 1e6,
22927
22945
  onDisk: "current",
22928
22946
  origin: "registry",
22929
- ...KS(LS(r))
22947
+ ...XS(VS(r))
22930
22948
  });
22931
22949
  }
22932
22950
  return n;
22933
22951
  }
22934
- function xE(e) {
22952
+ function TE(e) {
22935
22953
  let t = new Set(e.registry.map((e) => e.entry.id)), n = e.seeds.flatMap((e) => e.formats.flatMap((n) => {
22936
- let r = yE(e, n, t);
22954
+ let r = CE(e, n, t);
22937
22955
  return r === null ? [] : [r];
22938
22956
  })), 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]));
22939
- return [...n, ...bE(e, r)].map((e) => ({
22957
+ return [...n, ...wE(e, r)].map((e) => ({
22940
22958
  ...e,
22941
22959
  description: i.get(e.modelId) ?? e.description
22942
- })).map((t) => vE(t, e)).toSorted((e, t) => e.name.localeCompare(t.name) || e.format.localeCompare(t.format));
22960
+ })).map((t) => SE(t, e)).toSorted((e, t) => e.name.localeCompare(t.name) || e.format.localeCompare(t.format));
22943
22961
  }
22944
- function SE(e, t, n) {
22962
+ function EE(e, t, n) {
22945
22963
  let r = n.device === "all" ? void 0 : t.find((e) => e.key === n.device)?.format;
22946
22964
  return e.filter((e) => !(n.provider !== "all" && e.provider !== n.provider || n.step !== "all" && e.stepId !== n.step || n.device !== "all" && e.format !== r));
22947
22965
  }
22948
- function CE(e) {
22966
+ function DE(e) {
22949
22967
  return e.filter((e) => e.removable).reduce((e, t) => e + t.sizeMB, 0);
22950
22968
  }
22951
- function wE(e, t, n, r) {
22969
+ function OE(e, t, n, r) {
22952
22970
  let i = e.devices.filter((e) => e.enabled && e.format === r).map((r) => ({
22953
22971
  deviceKey: r.key,
22954
- label: lE(r),
22955
- loaded: pE(e.engines, r, t, n)
22972
+ label: pE(r),
22973
+ loaded: _E(e.engines, r, t, n)
22956
22974
  })).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";
22957
22975
  return {
22958
22976
  format: r,
@@ -22961,7 +22979,7 @@ function wE(e, t, n, r) {
22961
22979
  onDisk: o
22962
22980
  };
22963
22981
  }
22964
- function TE(e, t, n) {
22982
+ function kE(e, t, n) {
22965
22983
  return {
22966
22984
  stepId: e,
22967
22985
  modelId: t,
@@ -22974,7 +22992,7 @@ function TE(e, t, n) {
22974
22992
  let r = [...new Set(n.devices.filter((e) => e.enabled).map((e) => e.format))];
22975
22993
  return {
22976
22994
  nodeId: n.nodeId,
22977
- entries: r.map((r) => wE(n, e, t, r))
22995
+ entries: r.map((r) => OE(n, e, t, r))
22978
22996
  };
22979
22997
  })
22980
22998
  };
@@ -22982,7 +23000,7 @@ function TE(e, t, n) {
22982
23000
  //#endregion
22983
23001
  //#region src/components/InstalledSettingsModal.tsx
22984
23002
  t();
22985
- function EE({ trpc: e, nodeId: t, stepId: r, modelId: i, modelName: o, devices: s, deviceKey: c, onClose: l, onDone: u }) {
23003
+ function AE({ trpc: e, nodeId: t, stepId: r, modelId: i, modelName: o, devices: s, deviceKey: c, onClose: l, onDone: u }) {
22986
23004
  let [d, f] = a(!1), [p, h] = a(null), [g, _] = a(null), [v, y] = a({
22987
23005
  enabled: !0,
22988
23006
  modelId: i,
@@ -22990,7 +23008,7 @@ function EE({ trpc: e, nodeId: t, stepId: r, modelId: i, modelName: o, devices:
22990
23008
  }), b = s.find((e) => e.key === c);
22991
23009
  m(() => {
22992
23010
  let n = !1;
22993
- return WC(e, r, t).then((e) => {
23011
+ return JC(e, r, t).then((e) => {
22994
23012
  if (n) return;
22995
23013
  _(e);
22996
23014
  let t = b?.steps?.[r];
@@ -23012,9 +23030,9 @@ function EE({ trpc: e, nodeId: t, stepId: r, modelId: i, modelName: o, devices:
23012
23030
  let x = n(async () => {
23013
23031
  f(!0), h(null);
23014
23032
  try {
23015
- await BC(e, {
23033
+ await WC(e, {
23016
23034
  agentNodeId: t,
23017
- inferenceDevices: cE(s, r, v.modelId ?? i, v.settings ?? {}, c)
23035
+ inferenceDevices: fE(s, r, v.modelId ?? i, v.settings ?? {}, c)
23018
23036
  }), u(), l();
23019
23037
  } catch (e) {
23020
23038
  h(e instanceof Error ? e.message : "Save settings failed");
@@ -23104,12 +23122,12 @@ function EE({ trpc: e, nodeId: t, stepId: r, modelId: i, modelName: o, devices:
23104
23122
  //#endregion
23105
23123
  //#region src/components/installed/use-cluster-placement.ts
23106
23124
  t();
23107
- async function DE(e, t) {
23125
+ async function jE(e, t) {
23108
23126
  try {
23109
23127
  let [n, r, i] = await Promise.all([
23110
- SC(e, t),
23111
- RC(e, t),
23112
- zC(e, t).catch(() => null)
23128
+ EC(e, t),
23129
+ HC(e, t),
23130
+ UC(e, t).catch(() => null)
23113
23131
  ]);
23114
23132
  return {
23115
23133
  nodeId: t,
@@ -23125,11 +23143,11 @@ async function DE(e, t) {
23125
23143
  };
23126
23144
  }
23127
23145
  }
23128
- function OE(e, t, n) {
23146
+ function ME(e, t, n) {
23129
23147
  let [r, i] = a(null), o = t.join("\n");
23130
23148
  return m(() => {
23131
23149
  let t = !1, n = o.length === 0 ? [] : o.split("\n");
23132
- return Promise.all(n.map((t) => DE(e, t))).then((e) => {
23150
+ return Promise.all(n.map((t) => jE(e, t))).then((e) => {
23133
23151
  t || i(e);
23134
23152
  }), () => {
23135
23153
  t = !0;
@@ -23143,14 +23161,14 @@ function OE(e, t, n) {
23143
23161
  //#endregion
23144
23162
  //#region src/components/installed/use-online-node-ids.ts
23145
23163
  t();
23146
- function kE() {
23164
+ function NE() {
23147
23165
  let { nodes: e } = Rr();
23148
23166
  return l(() => e.filter((e) => e.isOnline).map((e) => e.id), [e]);
23149
23167
  }
23150
23168
  //#endregion
23151
23169
  //#region src/components/installed/ClusterModelsSection.tsx
23152
23170
  t();
23153
- function AE({ row: e }) {
23171
+ function PE({ row: e }) {
23154
23172
  if (e.entry === null) return /* @__PURE__ */ z(Ia, {
23155
23173
  variant: "danger",
23156
23174
  className: "text-[10px] px-1.5 py-0",
@@ -23178,7 +23196,7 @@ function AE({ row: e }) {
23178
23196
  })]
23179
23197
  });
23180
23198
  }
23181
- var jE = [
23199
+ var FE = [
23182
23200
  {
23183
23201
  key: "node",
23184
23202
  header: "Node",
@@ -23207,11 +23225,11 @@ var jE = [
23207
23225
  {
23208
23226
  key: "state",
23209
23227
  header: "State",
23210
- render: (e) => /* @__PURE__ */ z(AE, { row: e })
23228
+ render: (e) => /* @__PURE__ */ z(PE, { row: e })
23211
23229
  }
23212
23230
  ];
23213
- function ME(e, t, n) {
23214
- return TE(e.stepId, t, n).nodes.flatMap((e) => e.entries.length === 0 ? [{
23231
+ function IE(e, t, n) {
23232
+ return kE(e.stepId, t, n).nodes.flatMap((e) => e.entries.length === 0 ? [{
23215
23233
  key: e.nodeId,
23216
23234
  nodeId: e.nodeId,
23217
23235
  entry: null,
@@ -23222,7 +23240,7 @@ function ME(e, t, n) {
23222
23240
  entry: t
23223
23241
  })));
23224
23242
  }
23225
- function NE(e, t) {
23243
+ function LE(e, t) {
23226
23244
  let n = new Map(e.options.map((e) => [e.id, e.label]));
23227
23245
  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);
23228
23246
  return [...n].map(([e, t]) => ({
@@ -23230,14 +23248,14 @@ function NE(e, t) {
23230
23248
  label: t
23231
23249
  }));
23232
23250
  }
23233
- function PE({ step: e, current: t, inputs: n, onChange: r }) {
23251
+ function RE({ step: e, current: t, inputs: n, onChange: r }) {
23234
23252
  let [i, o] = a(t);
23235
23253
  m(() => o(t), [t]);
23236
- let s = l(() => n === null ? [] : ME(e, t, n), [
23254
+ let s = l(() => n === null ? [] : IE(e, t, n), [
23237
23255
  e,
23238
23256
  t,
23239
23257
  n
23240
- ]), c = l(() => NE(e, n), [e, n]), u = (e) => c.find((t) => t.id === e)?.label ?? e;
23258
+ ]), c = l(() => LE(e, n), [e, n]), u = (e) => c.find((t) => t.id === e)?.label ?? e;
23241
23259
  return /* @__PURE__ */ B("section", {
23242
23260
  "aria-labelledby": `cluster-${e.stepId}`,
23243
23261
  className: E,
@@ -23290,7 +23308,7 @@ function PE({ step: e, current: t, inputs: n, onChange: r }) {
23290
23308
  /* @__PURE__ */ z("div", {
23291
23309
  className: "p-2 sm:p-3",
23292
23310
  children: /* @__PURE__ */ z(cc, {
23293
- columns: jE,
23311
+ columns: FE,
23294
23312
  rows: s,
23295
23313
  rowKey: (e) => e.key,
23296
23314
  minWidthPx: 420,
@@ -23302,8 +23320,8 @@ function PE({ step: e, current: t, inputs: n, onChange: r }) {
23302
23320
  ]
23303
23321
  });
23304
23322
  }
23305
- function FE({ trpc: e, refreshKey: t, clusterModels: n, onChanged: r, onError: i }) {
23306
- let a = Ha(), o = OE(e, kE(), t), s = async (t, n, o) => {
23323
+ function zE({ trpc: e, refreshKey: t, clusterModels: n, onChanged: r, onError: i }) {
23324
+ let a = Ha(), o = ME(e, NE(), t), s = async (t, n, o) => {
23307
23325
  if (await a({
23308
23326
  title: "Activate cluster-wide?",
23309
23327
  message: `Set "${o}" as the ONE cluster model for ${t}. Shared vector index — every node uses this encoder.`,
@@ -23311,7 +23329,7 @@ function FE({ trpc: e, refreshKey: t, clusterModels: n, onChanged: r, onError: i
23311
23329
  cancelLabel: "Cancel",
23312
23330
  variant: "default"
23313
23331
  })) try {
23314
- await HC(e, aE(t, n)), r();
23332
+ await KC(e, lE(t, n)), r();
23315
23333
  } catch (e) {
23316
23334
  i(e instanceof Error ? e.message : "Activate failed");
23317
23335
  }
@@ -23323,7 +23341,7 @@ function FE({ trpc: e, refreshKey: t, clusterModels: n, onChanged: r, onError: i
23323
23341
  id: "installed-cluster-models",
23324
23342
  className: T,
23325
23343
  children: "Cluster models"
23326
- }), Ge.map((e) => /* @__PURE__ */ z(PE, {
23344
+ }), Ge.map((e) => /* @__PURE__ */ z(RE, {
23327
23345
  step: e,
23328
23346
  current: n?.[e.stepId] ?? e.defaultModelId,
23329
23347
  inputs: o,
@@ -23333,19 +23351,19 @@ function FE({ trpc: e, refreshKey: t, clusterModels: n, onChanged: r, onError: i
23333
23351
  }
23334
23352
  //#endregion
23335
23353
  //#region src/components/FillBadges.tsx
23336
- function IE(e) {
23354
+ function BE(e) {
23337
23355
  if (e.kind === "mask") return "Emits an instance mask with every detection: the Segmentation step can take its masks from this model instead of running its own.";
23338
23356
  if (e.kind === "crop") return e.stepId === "face-detection" ? "Draws face boxes inside people: face detection can refine them for recognition (from a 640 px or larger model input), once \"Use the root model\" is checked on that step." : "Draws plate boxes inside vehicles: plate detection can use them, and the plate reader reads them, once \"Use the root model\" is checked on that step.";
23339
23357
  let t = Le[e.stepId] ? `${e.stepId} takes this model's labels by default — its own model does not run` : `${e.stepId} can take this model's labels`;
23340
23358
  return e.uncovered.length > 0 ? `${t}; this model cannot produce ${e.uncovered.join(", ")}.` : `${t}, for every class.`;
23341
23359
  }
23342
- function LE({ supplies: e }) {
23360
+ function VE({ supplies: e }) {
23343
23361
  return e === void 0 || e.length === 0 ? null : /* @__PURE__ */ z("span", {
23344
23362
  className: "flex flex-wrap gap-1",
23345
23363
  "data-testid": "fill-badges",
23346
23364
  children: e.map((e) => /* @__PURE__ */ z("span", {
23347
23365
  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",
23348
- title: IE(e),
23366
+ title: BE(e),
23349
23367
  children: je(e)
23350
23368
  }, e.stepId))
23351
23369
  });
@@ -23353,7 +23371,7 @@ function LE({ supplies: e }) {
23353
23371
  //#endregion
23354
23372
  //#region src/components/InlineRename.tsx
23355
23373
  t();
23356
- function RE({ name: e, modelId: t, onRename: n, onError: r }) {
23374
+ function HE({ name: e, modelId: t, onRename: n, onError: r }) {
23357
23375
  let [i, o] = a(null), [s, c] = a(!1);
23358
23376
  if (i === null) return /* @__PURE__ */ B("span", {
23359
23377
  className: "flex items-center gap-1 min-w-0",
@@ -23379,7 +23397,7 @@ function RE({ name: e, modelId: t, onRename: n, onError: r }) {
23379
23397
  })
23380
23398
  })]
23381
23399
  });
23382
- let l = PS(i), u = async () => {
23400
+ let l = RS(i), u = async () => {
23383
23401
  if (l.kind !== "invalid") {
23384
23402
  c(!0);
23385
23403
  try {
@@ -23450,19 +23468,19 @@ function RE({ name: e, modelId: t, onRename: n, onError: r }) {
23450
23468
  }
23451
23469
  //#endregion
23452
23470
  //#region src/components/installed/DeviceChips.tsx
23453
- function zE(e) {
23471
+ function UE(e) {
23454
23472
  return e.enabled ? e.loaded === !0 ? e.configured ? "loaded, configured" : "loaded" : e.configured ? "configured, not loaded" : e.loaded === null ? "load state unknown" : "not used" : "off";
23455
23473
  }
23456
- function BE(e) {
23474
+ function WE(e) {
23457
23475
  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";
23458
23476
  }
23459
- function VE({ chip: e }) {
23477
+ function GE({ chip: e }) {
23460
23478
  return /* @__PURE__ */ z("span", {
23461
23479
  "aria-hidden": !0,
23462
23480
  className: G("h-1.5 w-1.5 rounded-full", e.loaded === !0 ? "bg-success" : e.configured ? "border border-primary" : "border border-foreground-subtle/60")
23463
23481
  });
23464
23482
  }
23465
- function HE({ chips: e, onChip: t, disabled: n = !1 }) {
23483
+ function KE({ chips: e, onChip: t, disabled: n = !1 }) {
23466
23484
  return e.length === 0 ? /* @__PURE__ */ z("span", {
23467
23485
  className: "text-[10px] text-foreground-subtle",
23468
23486
  children: "no device of this format"
@@ -23470,15 +23488,15 @@ function HE({ chips: e, onChip: t, disabled: n = !1 }) {
23470
23488
  className: "flex flex-wrap gap-1",
23471
23489
  "data-testid": "installed-device-chips",
23472
23490
  children: e.map((e) => {
23473
- let r = zE(e);
23491
+ let r = UE(e);
23474
23492
  if (!e.enabled) return /* @__PURE__ */ z("span", {
23475
- className: G(C, BE(e), "min-w-[1.75rem] justify-center px-1.5"),
23493
+ className: G(C, WE(e), "min-w-[1.75rem] justify-center px-1.5"),
23476
23494
  "data-device-key": e.deviceKey,
23477
23495
  "data-state": r,
23478
23496
  "aria-label": `${e.label} (${e.deviceKey}): ${r}`,
23479
23497
  title: `${e.deviceKey} — ${r}`
23480
23498
  }, e.deviceKey);
23481
- let i = t !== void 0 && !n, a = G(C, BE(e), i && "hover:border-primary/60"), o = /* @__PURE__ */ B(it, { children: [/* @__PURE__ */ z(VE, { chip: e }), e.label] });
23499
+ let i = t !== void 0 && !n, a = G(C, WE(e), i && "hover:border-primary/60"), o = /* @__PURE__ */ B(it, { children: [/* @__PURE__ */ z(GE, { chip: e }), e.label] });
23482
23500
  return i ? /* @__PURE__ */ z("button", {
23483
23501
  type: "button",
23484
23502
  className: a,
@@ -23501,7 +23519,7 @@ function HE({ chips: e, onChip: t, disabled: n = !1 }) {
23501
23519
  }
23502
23520
  //#endregion
23503
23521
  //#region src/components/installed/UsageBadge.tsx
23504
- var UE = {
23522
+ var qE = {
23505
23523
  "in-use": {
23506
23524
  label: "in use",
23507
23525
  variant: "success",
@@ -23532,30 +23550,30 @@ var UE = {
23532
23550
  variant: "default",
23533
23551
  title: "The loaded-engine read failed: whether a pool holds it cannot be told."
23534
23552
  }
23535
- }, WE = "text-[10px] px-1.5 py-0";
23536
- function GE({ usage: e }) {
23537
- let t = UE[e];
23553
+ }, JE = "text-[10px] px-1.5 py-0";
23554
+ function YE({ usage: e }) {
23555
+ let t = qE[e];
23538
23556
  return /* @__PURE__ */ z(Ia, {
23539
23557
  variant: t.variant,
23540
- className: WE,
23558
+ className: JE,
23541
23559
  title: t.title,
23542
23560
  "data-usage": e,
23543
23561
  children: t.label
23544
23562
  });
23545
23563
  }
23546
- function KE() {
23564
+ function XE() {
23547
23565
  return /* @__PURE__ */ z(Ia, {
23548
23566
  variant: "warning",
23549
23567
  style: "outline",
23550
- className: `${WE} border-warning/40`,
23568
+ className: `${JE} border-warning/40`,
23551
23569
  title: "On disk, but not proven to be the current catalog build: it is replaced the next time the model is needed.",
23552
23570
  children: "stale"
23553
23571
  });
23554
23572
  }
23555
- function qE({ precision: e }) {
23573
+ function ZE({ precision: e }) {
23556
23574
  return /* @__PURE__ */ z(Ia, {
23557
23575
  style: "outline",
23558
- className: `${WE} border-border text-foreground-subtle uppercase`,
23576
+ className: `${JE} border-border text-foreground-subtle uppercase`,
23559
23577
  title: "Numeric precision of this build",
23560
23578
  children: e
23561
23579
  });
@@ -23563,13 +23581,13 @@ function qE({ precision: e }) {
23563
23581
  //#endregion
23564
23582
  //#region src/components/installed/InstalledFilesTable.tsx
23565
23583
  t();
23566
- var JE = {
23584
+ var QE = {
23567
23585
  camstack: "CamStack",
23568
23586
  scrypted: "Scrypted",
23569
23587
  frigate: "Frigate",
23570
23588
  custom: "Custom"
23571
23589
  };
23572
- function YE({ row: e, onRename: t, onError: n }) {
23590
+ function $E({ row: e, onRename: t, onError: n }) {
23573
23591
  return /* @__PURE__ */ B("div", {
23574
23592
  className: "flex min-w-0 flex-col gap-0.5 whitespace-normal",
23575
23593
  "data-testid": "installed-file",
@@ -23577,7 +23595,7 @@ function YE({ row: e, onRename: t, onError: n }) {
23577
23595
  "data-usage": e.usage,
23578
23596
  "data-removable": e.removable ? "true" : "false",
23579
23597
  children: [
23580
- e.renameable ? /* @__PURE__ */ z(RE, {
23598
+ e.renameable ? /* @__PURE__ */ z(HE, {
23581
23599
  name: e.name,
23582
23600
  modelId: e.modelId,
23583
23601
  onRename: t,
@@ -23598,16 +23616,16 @@ function YE({ row: e, onRename: t, onError: n }) {
23598
23616
  children: [
23599
23617
  e.stepId,
23600
23618
  " · ",
23601
- JE[e.provider] ?? e.provider,
23619
+ QE[e.provider] ?? e.provider,
23602
23620
  e.clusterScoped ? " · cluster model" : "",
23603
23621
  e.description ? ` · ${e.description}` : ""
23604
23622
  ]
23605
23623
  }),
23606
- /* @__PURE__ */ z(LE, { supplies: e.supplies })
23624
+ /* @__PURE__ */ z(VE, { supplies: e.supplies })
23607
23625
  ]
23608
23626
  });
23609
23627
  }
23610
- function XE({ row: e }) {
23628
+ function eD({ row: e }) {
23611
23629
  return /* @__PURE__ */ B("span", {
23612
23630
  className: "inline-flex flex-wrap items-center gap-1",
23613
23631
  children: [
@@ -23615,12 +23633,12 @@ function XE({ row: e }) {
23615
23633
  className: "font-mono text-[11px] text-foreground",
23616
23634
  children: e.format
23617
23635
  }),
23618
- e.precision !== void 0 && /* @__PURE__ */ z(qE, { precision: e.precision }),
23619
- e.onDisk === "stale" && /* @__PURE__ */ z(KE, {})
23636
+ e.precision !== void 0 && /* @__PURE__ */ z(ZE, { precision: e.precision }),
23637
+ e.onDisk === "stale" && /* @__PURE__ */ z(XE, {})
23620
23638
  ]
23621
23639
  });
23622
23640
  }
23623
- function ZE({ row: e, busy: t, onRemove: n }) {
23641
+ function tD({ row: e, busy: t, onRemove: n }) {
23624
23642
  return e.removable ? /* @__PURE__ */ B("button", {
23625
23643
  type: "button",
23626
23644
  className: ee,
@@ -23634,7 +23652,7 @@ function ZE({ row: e, busy: t, onRemove: n }) {
23634
23652
  }), "Remove"]
23635
23653
  }) : null;
23636
23654
  }
23637
- function QE() {
23655
+ function nD() {
23638
23656
  let [e, t] = a(/* @__PURE__ */ new Set());
23639
23657
  return {
23640
23658
  busy: e,
@@ -23648,8 +23666,8 @@ function QE() {
23648
23666
  }
23649
23667
  };
23650
23668
  }
23651
- function $E({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onError: a }) {
23652
- let { busy: o, run: s } = QE(), c = (e, t) => {
23669
+ function rD({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onError: a }) {
23670
+ let { busy: o, run: s } = nD(), c = (e, t) => {
23653
23671
  s(e.key, async () => {
23654
23672
  try {
23655
23673
  await t();
@@ -23665,7 +23683,7 @@ function $E({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onE
23665
23683
  header: "Model",
23666
23684
  nowrap: !1,
23667
23685
  sortValue: (e) => e.name,
23668
- render: (e) => /* @__PURE__ */ z(YE, {
23686
+ render: (e) => /* @__PURE__ */ z($E, {
23669
23687
  row: e,
23670
23688
  onRename: (t) => r(e, t),
23671
23689
  onError: a
@@ -23675,7 +23693,7 @@ function $E({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onE
23675
23693
  key: "format",
23676
23694
  header: "Format",
23677
23695
  sortValue: (e) => e.format,
23678
- render: (e) => /* @__PURE__ */ z(XE, { row: e })
23696
+ render: (e) => /* @__PURE__ */ z(eD, { row: e })
23679
23697
  },
23680
23698
  {
23681
23699
  key: "size",
@@ -23684,7 +23702,7 @@ function $E({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onE
23684
23702
  sortValue: (e) => e.sizeMB,
23685
23703
  render: (e) => /* @__PURE__ */ z("span", {
23686
23704
  className: "font-mono text-[11px]",
23687
- children: eC(e.sizeMB)
23705
+ children: iC(e.sizeMB)
23688
23706
  })
23689
23707
  },
23690
23708
  {
@@ -23692,7 +23710,7 @@ function $E({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onE
23692
23710
  header: "Devices",
23693
23711
  nowrap: !1,
23694
23712
  notSortableReason: "A list of devices has no order that means something.",
23695
- render: (e) => /* @__PURE__ */ z(HE, {
23713
+ render: (e) => /* @__PURE__ */ z(KE, {
23696
23714
  chips: e.chips,
23697
23715
  disabled: o.has(e.key),
23698
23716
  onChip: e.clusterScoped || e.origin !== "pipeline" || e.usage === "outside-pools" ? void 0 : (t) => c(e, () => i(e, t))
@@ -23702,12 +23720,12 @@ function $E({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onE
23702
23720
  key: "status",
23703
23721
  header: "Status",
23704
23722
  sortValue: (e) => e.usage,
23705
- render: (e) => /* @__PURE__ */ z(GE, { usage: e.usage })
23723
+ render: (e) => /* @__PURE__ */ z(YE, { usage: e.usage })
23706
23724
  },
23707
23725
  {
23708
23726
  key: "actions",
23709
23727
  align: "right",
23710
- render: (e) => /* @__PURE__ */ z(ZE, {
23728
+ render: (e) => /* @__PURE__ */ z(tD, {
23711
23729
  row: e,
23712
23730
  busy: o.has(e.key),
23713
23731
  onRemove: () => c(e, () => n(e))
@@ -23728,24 +23746,24 @@ function $E({ rows: e, emptyMessage: t, onRemove: n, onRename: r, onChip: i, onE
23728
23746
  }
23729
23747
  //#endregion
23730
23748
  //#region src/components/installed/InstalledFilters.tsx
23731
- var eD = [
23749
+ var iD = [
23732
23750
  "camstack",
23733
23751
  "scrypted",
23734
23752
  "frigate",
23735
23753
  "custom"
23736
- ], tD = {
23754
+ ], aD = {
23737
23755
  camstack: "CamStack",
23738
23756
  scrypted: "Scrypted",
23739
23757
  frigate: "Frigate",
23740
23758
  custom: "Custom"
23741
- }, nD = [{
23759
+ }, oD = [{
23742
23760
  value: "all",
23743
23761
  label: "All"
23744
- }, ...eD.map((e) => ({
23762
+ }, ...iD.map((e) => ({
23745
23763
  value: e,
23746
- label: tD[e]
23764
+ label: aD[e]
23747
23765
  }))];
23748
- function rD(e) {
23766
+ function sD(e) {
23749
23767
  let t = [{
23750
23768
  value: "all",
23751
23769
  label: "All devices"
@@ -23762,7 +23780,7 @@ function rD(e) {
23762
23780
  role: "group",
23763
23781
  "aria-label": "Provider",
23764
23782
  "data-testid": "installed-provider-filter",
23765
- children: nD.map((t) => /* @__PURE__ */ z("button", {
23783
+ children: oD.map((t) => /* @__PURE__ */ z("button", {
23766
23784
  type: "button",
23767
23785
  "aria-pressed": e.provider === t.value,
23768
23786
  onClick: () => e.onProvider(t.value),
@@ -23799,7 +23817,7 @@ function rD(e) {
23799
23817
  ] }),
23800
23818
  end: /* @__PURE__ */ z("div", {
23801
23819
  className: "min-w-0 max-w-full overflow-x-auto",
23802
- children: /* @__PURE__ */ z(JC, {
23820
+ children: /* @__PURE__ */ z(QC, {
23803
23821
  selectedNodeId: e.nodeId,
23804
23822
  onSelect: e.onNode
23805
23823
  })
@@ -23809,27 +23827,27 @@ function rD(e) {
23809
23827
  //#endregion
23810
23828
  //#region src/tabs/InstalledTab.tsx
23811
23829
  t();
23812
- function iD(e) {
23830
+ function cD(e) {
23813
23831
  return e === "camstack" || e === "scrypted" || e === "frigate" || e === "custom" ? e : "all";
23814
23832
  }
23815
- function aD(e) {
23833
+ function lD(e) {
23816
23834
  return e === null || e.length === 0 || e === "all" ? "all" : e;
23817
23835
  }
23818
- var oD = aD, sD = aD;
23819
- function cD(e) {
23836
+ var uD = lD, dD = lD;
23837
+ function fD(e) {
23820
23838
  return e === null || e.length === 0 ? "hub" : e;
23821
23839
  }
23822
- function lD(e) {
23840
+ function pD(e) {
23823
23841
  return P.some((t) => t === e);
23824
23842
  }
23825
- async function uD(e, t) {
23843
+ async function mD(e, t) {
23826
23844
  let [n, r, i, a, o, s] = await Promise.all([
23827
- uC(e),
23828
- dC(e),
23829
- SC(e, t),
23830
- RC(e, t).catch(() => []),
23831
- zC(e, t).catch(() => null),
23832
- VC(e).catch(() => null)
23845
+ mC(e),
23846
+ hC(e),
23847
+ EC(e, t),
23848
+ HC(e, t).catch(() => []),
23849
+ UC(e, t).catch(() => null),
23850
+ GC(e).catch(() => null)
23833
23851
  ]);
23834
23852
  return {
23835
23853
  models: n,
@@ -23841,15 +23859,15 @@ async function uD(e, t) {
23841
23859
  clusterModels: s
23842
23860
  };
23843
23861
  }
23844
- function dD(e, t, r) {
23845
- let [i, a] = tS(e), o = n((e) => a(e === r ? null : e), [a, r]);
23862
+ function hD(e, t, r) {
23863
+ let [i, a] = aS(e), o = n((e) => a(e === r ? null : e), [a, r]);
23846
23864
  return [t(i), o];
23847
23865
  }
23848
- function fD({ trpc: e, refreshKey: t }) {
23849
- let [r, i] = tS("provider"), o = iD(r), s = n((e) => i(e === "all" ? null : e), [i]), [c, u] = dD("type", oD, "all"), [d, f] = dD("device", sD, "all"), [p, h] = dD("node", cD, "hub"), g = Ha(), [_, v] = a(null), [y, b] = a(null), [S, C] = a(0), [w, T] = a(null), E = n(async () => {
23866
+ function gD({ trpc: e, refreshKey: t }) {
23867
+ let [r, i] = aS("provider"), o = cD(r), s = n((e) => i(e === "all" ? null : e), [i]), [c, u] = hD("type", uD, "all"), [d, f] = hD("device", dD, "all"), [p, h] = hD("node", fD, "hub"), g = Ha(), [_, v] = a(null), [y, b] = a(null), [S, C] = a(0), [w, T] = a(null), E = n(async () => {
23850
23868
  b(null);
23851
23869
  try {
23852
- v(await uD(e, p));
23870
+ v(await mD(e, p));
23853
23871
  } catch (e) {
23854
23872
  b(e instanceof Error ? e.message : "Failed to load installed models");
23855
23873
  }
@@ -23859,7 +23877,7 @@ function fD({ trpc: e, refreshKey: t }) {
23859
23877
  }, [E, t]);
23860
23878
  let O = n(async () => {
23861
23879
  await E(), C((e) => e + 1);
23862
- }, [E]), k = l(() => _ === null ? [] : xE({
23880
+ }, [E]), k = l(() => _ === null ? [] : TE({
23863
23881
  nodeId: p,
23864
23882
  seeds: _.seeds,
23865
23883
  stepCatalogs: _.stepCatalogs,
@@ -23868,7 +23886,7 @@ function fD({ trpc: e, refreshKey: t }) {
23868
23886
  clusterModels: _.clusterModels,
23869
23887
  registry: _.models,
23870
23888
  availability: _.availability
23871
- }), [_, p]), ee = _?.devices ?? [], A = l(() => SE(k, ee, {
23889
+ }), [_, p]), ee = _?.devices ?? [], A = l(() => EE(k, ee, {
23872
23890
  provider: o,
23873
23891
  step: c,
23874
23892
  device: d
@@ -23882,20 +23900,20 @@ function fD({ trpc: e, refreshKey: t }) {
23882
23900
  let e = new Set(k.map((e) => e.stepId));
23883
23901
  return c !== "all" && e.add(c), [...e].toSorted((e, t) => e.localeCompare(t));
23884
23902
  }, [k, c]), j = n(async (t) => {
23885
- if (!t.removable || !lD(t.format)) return;
23903
+ if (!t.removable || !pD(t.format)) return;
23886
23904
  let n = {
23887
23905
  modelId: t.modelId,
23888
23906
  format: t.format,
23889
23907
  nodeId: p
23890
23908
  };
23891
- t.origin === "registry" ? await hC(e, n) : await wC(e, {
23909
+ t.origin === "registry" ? await yC(e, n) : await OC(e, {
23892
23910
  ...n,
23893
23911
  addonId: t.stepId
23894
23912
  });
23895
23913
  }, [p, e]), ne = n(async (e) => {
23896
- !e.removable || !lD(e.format) || await g({
23914
+ !e.removable || !pD(e.format) || await g({
23897
23915
  title: "Delete model file?",
23898
- message: `Permanently delete the ${e.format} file of "${e.name}" (${e.modelId}, ${eC(e.sizeMB)}) from ${p}. Its other formats stay. This cannot be undone.`,
23916
+ message: `Permanently delete the ${e.format} file of "${e.name}" (${e.modelId}, ${iC(e.sizeMB)}) from ${p}. Its other formats stay. This cannot be undone.`,
23899
23917
  confirmLabel: "Delete file",
23900
23918
  cancelLabel: "Cancel",
23901
23919
  variant: "danger"
@@ -23910,7 +23928,7 @@ function fD({ trpc: e, refreshKey: t }) {
23910
23928
  let e = re.reduce((e, t) => e + t.sizeMB, 0);
23911
23929
  if (await g({
23912
23930
  title: "Delete unused model files?",
23913
- message: `Permanently delete ${re.length} unused ${re.length === 1 ? "file" : "files"} (${eC(e)}) from ${p}. No enabled device on this node runs these formats. Other formats of each model stay. This cannot be undone.`,
23931
+ message: `Permanently delete ${re.length} unused ${re.length === 1 ? "file" : "files"} (${iC(e)}) from ${p}. No enabled device on this node runs these formats. Other formats of each model stay. This cannot be undone.`,
23914
23932
  confirmLabel: "Delete unused files",
23915
23933
  cancelLabel: "Cancel",
23916
23934
  variant: "danger"
@@ -23925,7 +23943,7 @@ function fD({ trpc: e, refreshKey: t }) {
23925
23943
  O,
23926
23944
  re
23927
23945
  ]), ie = n(async (t, n) => {
23928
- await mC(e, {
23946
+ await vC(e, {
23929
23947
  modelId: t.modelId,
23930
23948
  name: n
23931
23949
  }), await O();
@@ -23943,9 +23961,9 @@ function fD({ trpc: e, refreshKey: t }) {
23943
23961
  confirmLabel: "Activate",
23944
23962
  cancelLabel: "Cancel",
23945
23963
  variant: "default"
23946
- }) && (await BC(e, {
23964
+ }) && (await WC(e, {
23947
23965
  agentNodeId: p,
23948
- inferenceDevices: sE(ee, t.stepId, t.modelId, [n.deviceKey])
23966
+ inferenceDevices: dE(ee, t.stepId, t.modelId, [n.deviceKey])
23949
23967
  }), await O());
23950
23968
  }, [
23951
23969
  g,
@@ -23962,14 +23980,14 @@ function fD({ trpc: e, refreshKey: t }) {
23962
23980
  className: "rounded-md border border-danger/30 bg-danger/10 px-3 py-2 text-xs text-danger",
23963
23981
  children: y
23964
23982
  }),
23965
- /* @__PURE__ */ z(rD, {
23983
+ /* @__PURE__ */ z(sD, {
23966
23984
  provider: o,
23967
23985
  onProvider: s,
23968
23986
  step: c,
23969
23987
  stepOptions: te,
23970
23988
  onStep: u,
23971
23989
  device: d,
23972
- deviceOptions: uE(ee),
23990
+ deviceOptions: mE(ee),
23973
23991
  onDevice: f,
23974
23992
  nodeId: p,
23975
23993
  onNode: h
@@ -23991,10 +24009,10 @@ function fD({ trpc: e, refreshKey: t }) {
23991
24009
  p,
23992
24010
  se ? ` (of ${k.length})` : "",
23993
24011
  " · ",
23994
- eC(oe),
24012
+ iC(oe),
23995
24013
  " on disk ·",
23996
24014
  " ",
23997
- eC(CE(k)),
24015
+ iC(DE(k)),
23998
24016
  " reclaimable",
23999
24017
  _?.engines === null ? " · loaded state unavailable" : ""
24000
24018
  ]
@@ -24010,7 +24028,7 @@ function fD({ trpc: e, refreshKey: t }) {
24010
24028
  ]
24011
24029
  })]
24012
24030
  }),
24013
- /* @__PURE__ */ z($E, {
24031
+ /* @__PURE__ */ z(rD, {
24014
24032
  rows: A,
24015
24033
  emptyMessage: k.length === 0 ? `No model files on ${p}.` : "No files match these filters.",
24016
24034
  onRemove: ne,
@@ -24018,7 +24036,7 @@ function fD({ trpc: e, refreshKey: t }) {
24018
24036
  onChip: ae,
24019
24037
  onError: b
24020
24038
  }),
24021
- /* @__PURE__ */ z(FE, {
24039
+ /* @__PURE__ */ z(zE, {
24022
24040
  trpc: e,
24023
24041
  refreshKey: t + S,
24024
24042
  clusterModels: _?.clusterModels ?? null,
@@ -24026,7 +24044,7 @@ function fD({ trpc: e, refreshKey: t }) {
24026
24044
  onError: b
24027
24045
  })
24028
24046
  ] }),
24029
- w && /* @__PURE__ */ z(EE, {
24047
+ w && /* @__PURE__ */ z(AE, {
24030
24048
  trpc: e,
24031
24049
  nodeId: p,
24032
24050
  stepId: w.row.stepId,
@@ -24042,13 +24060,13 @@ function fD({ trpc: e, refreshKey: t }) {
24042
24060
  }
24043
24061
  //#endregion
24044
24062
  //#region src/tabs/LogsTab.tsx
24045
- var pD = "model-studio";
24046
- function mD() {
24063
+ var _D = "model-studio";
24064
+ function vD() {
24047
24065
  return /* @__PURE__ */ z("div", {
24048
24066
  className: "space-y-3",
24049
24067
  "data-testid": "logs-tab",
24050
24068
  children: /* @__PURE__ */ z(Pl, {
24051
- addonId: pD,
24069
+ addonId: _D,
24052
24070
  limit: 200,
24053
24071
  maxHeight: "max-h-[70vh]",
24054
24072
  showFilters: !0,
@@ -24059,7 +24077,7 @@ function mD() {
24059
24077
  //#endregion
24060
24078
  //#region src/page.tsx
24061
24079
  t();
24062
- var hD = [
24080
+ var yD = [
24063
24081
  {
24064
24082
  id: "catalog",
24065
24083
  label: "Catalog"
@@ -24077,17 +24095,17 @@ var hD = [
24077
24095
  label: "Logs"
24078
24096
  }
24079
24097
  ];
24080
- function gD(e) {
24098
+ function bD(e) {
24081
24099
  return e === "library" ? "installed" : e === "convert" || e === "settings" ? "catalog" : e === "import" || e === "catalog" || e === "installed" || e === "logs" ? e : "catalog";
24082
24100
  }
24083
- function _D(e) {
24101
+ function xD(e) {
24084
24102
  return `model-studio-tab-${e}`;
24085
24103
  }
24086
- function vD(e) {
24104
+ function SD(e) {
24087
24105
  return `model-studio-panel-${e}`;
24088
24106
  }
24089
- function yD({ trpc: e }) {
24090
- let [t, r] = tS("tab"), [i, s] = tS("source"), c = gD(t), l = NT(i), [u, d] = a(0), [f, p] = a(null), h = o(!1), g = n(() => d((e) => e + 1), []), _ = n((e, t = !1) => {
24107
+ function CD({ trpc: e }) {
24108
+ let [t, r] = aS("tab"), [i, s] = aS("source"), c = bD(t), l = LT(i), [u, d] = a(0), [f, p] = a(null), h = o(!1), g = n(() => d((e) => e + 1), []), _ = n((e, t = !1) => {
24091
24109
  r(e === "catalog" ? null : e), e !== "catalog" && i !== null && (e === "import" || e === "logs" || e === "installed") && s(null), t && (h.current = !0);
24092
24110
  }, [
24093
24111
  r,
@@ -24097,7 +24115,7 @@ function yD({ trpc: e }) {
24097
24115
  s(e === "camstack" ? null : e);
24098
24116
  }, [s]);
24099
24117
  return m(() => {
24100
- h.current && (h.current = !1, document.getElementById(_D(c))?.focus());
24118
+ h.current && (h.current = !1, document.getElementById(xD(c))?.focus());
24101
24119
  }, [c]), m(() => {
24102
24120
  t === "convert" && r(null), t === "library" && r("installed"), t === "settings" && (r(null), s("frigate")), c !== "catalog" && i !== null && s(null), c === "catalog" && i === "custom" && (r("import"), s(null));
24103
24121
  }, [
@@ -24106,7 +24124,7 @@ function yD({ trpc: e }) {
24106
24124
  i,
24107
24125
  r,
24108
24126
  s
24109
- ]), /* @__PURE__ */ z(dw, { children: /* @__PURE__ */ B(Zx, {
24127
+ ]), /* @__PURE__ */ z(hw, { children: /* @__PURE__ */ B(Zx, {
24110
24128
  icon: xt,
24111
24129
  title: "Model Studio",
24112
24130
  children: [/* @__PURE__ */ z(Fs, {
@@ -24116,8 +24134,8 @@ function yD({ trpc: e }) {
24116
24134
  },
24117
24135
  children: /* @__PURE__ */ z(Is, {
24118
24136
  "aria-label": "Model Studio sections",
24119
- children: hD.map((e) => /* @__PURE__ */ z(Ls, {
24120
- id: _D(e.id),
24137
+ children: yD.map((e) => /* @__PURE__ */ z(Ls, {
24138
+ id: xD(e.id),
24121
24139
  value: e.id,
24122
24140
  children: e.label
24123
24141
  }, e.id))
@@ -24125,10 +24143,10 @@ function yD({ trpc: e }) {
24125
24143
  }), /* @__PURE__ */ B("div", {
24126
24144
  className: "min-h-[400px]",
24127
24145
  role: "tabpanel",
24128
- id: vD(c),
24129
- "aria-labelledby": _D(c),
24146
+ id: SD(c),
24147
+ "aria-labelledby": xD(c),
24130
24148
  children: [
24131
- c === "catalog" && /* @__PURE__ */ z(BT, {
24149
+ c === "catalog" && /* @__PURE__ */ z(WT, {
24132
24150
  trpc: e,
24133
24151
  refreshKey: u,
24134
24152
  source: l,
@@ -24138,20 +24156,20 @@ function yD({ trpc: e }) {
24138
24156
  p(e), _("import");
24139
24157
  }
24140
24158
  }),
24141
- c === "installed" && /* @__PURE__ */ z(fD, {
24159
+ c === "installed" && /* @__PURE__ */ z(gD, {
24142
24160
  trpc: e,
24143
24161
  refreshKey: u
24144
24162
  }),
24145
- c === "import" && /* @__PURE__ */ z(rE, {
24163
+ c === "import" && /* @__PURE__ */ z(sE, {
24146
24164
  trpc: e,
24147
24165
  onRegistered: g,
24148
24166
  initialPrefill: f,
24149
24167
  onPrefillConsumed: () => p(null)
24150
24168
  }),
24151
- c === "logs" && /* @__PURE__ */ z(mD, {})
24169
+ c === "logs" && /* @__PURE__ */ z(vD, {})
24152
24170
  ]
24153
24171
  })]
24154
24172
  }) });
24155
24173
  }
24156
24174
  //#endregion
24157
- export { yD as default };
24175
+ export { CD as default };