@camstack/ui-library 1.1.27 → 1.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import * as __mfHostReact from "react";
3
3
  import React, { Fragment, Suspense, createContext, createElement, forwardRef, lazy, useCallback, useContext, useEffect, useId, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
4
4
  import * as __mfHostReactJsxRuntime from "react/jsx-runtime";
5
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
- import { ALL_CAPABILITY_DEFINITIONS, DeviceExportStatusSchema, DeviceFeature, DeviceRole, DeviceType, EventCategory, ExposedDeviceSchema, KNOWN_CAP_NAMES, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, RecordingConfigSchema, RecordingStatusSchema, SourceInfoSchema, TIMEZONES, canConvertUnit, createDeviceProxy, createLazyTrpcSource, createSliceHandle, findTimezone, tryConvertUnit } from "@camstack/types";
6
+ import { ALL_CAPABILITY_DEFINITIONS, DeviceExportStatusSchema, DeviceFeature, DeviceRole, DeviceType, EventCategory, ExposedDeviceSchema, KNOWN_CAP_NAMES, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, RecordingConfigSchema, RecordingStatusSchema, SourceInfoSchema, TIMEZONES, buildModelVariantGroups, canConvertUnit, createDeviceProxy, createLazyTrpcSource, createSliceHandle, describeModelVariant, findTimezone, resolveVariantModelId, tryConvertUnit } from "@camstack/types";
7
7
  import * as __mfHostReactDOM from "react-dom";
8
8
  import { createPortal } from "react-dom";
9
9
  import * as __mfHostReactDOMClient from "react-dom/client";
@@ -3724,37 +3724,41 @@ function mirror(input) {
3724
3724
  });
3725
3725
  continue;
3726
3726
  }
3727
- const srcModel = findModel(targetAddon, srcCfg.modelId);
3728
- const canUseSource = srcModel !== null && Boolean(srcModel.formats[target.engine.format]);
3729
3727
  let chosenModelId;
3730
3728
  let outcome;
3731
- if (canUseSource) {
3732
- chosenModelId = srcCfg.modelId;
3729
+ if (srcCfg.modelId === void 0) {
3730
+ chosenModelId = void 0;
3733
3731
  outcome = "exact";
3734
3732
  } else {
3735
- const fallback = firstModelFor(targetAddon, target.engine.format);
3736
- if (!fallback) {
3737
- out.push({
3738
- addonId,
3739
- outcome: "skip",
3740
- modelId: null,
3741
- reason: "no compatible model for target format",
3742
- patch: null
3743
- });
3744
- continue;
3733
+ const srcModel = findModel(targetAddon, srcCfg.modelId);
3734
+ if (srcModel !== null && Boolean(srcModel.formats[target.engine.format])) {
3735
+ chosenModelId = srcCfg.modelId;
3736
+ outcome = "exact";
3737
+ } else {
3738
+ const fallback = firstModelFor(targetAddon, target.engine.format);
3739
+ if (!fallback) {
3740
+ out.push({
3741
+ addonId,
3742
+ outcome: "skip",
3743
+ modelId: null,
3744
+ reason: "no compatible model for target format",
3745
+ patch: null
3746
+ });
3747
+ continue;
3748
+ }
3749
+ chosenModelId = fallback.id;
3750
+ outcome = "mapped";
3745
3751
  }
3746
- chosenModelId = fallback.id;
3747
- outcome = "mapped";
3748
3752
  }
3749
3753
  const patch = {
3750
3754
  enabled: srcCfg.enabled,
3751
- modelId: chosenModelId,
3755
+ ...chosenModelId ? { modelId: chosenModelId } : {},
3752
3756
  settings: dropModelSpecific(srcCfg.settings, targetAddon)
3753
3757
  };
3754
3758
  out.push({
3755
3759
  addonId,
3756
3760
  outcome,
3757
- modelId: chosenModelId,
3761
+ modelId: chosenModelId ?? null,
3758
3762
  patch
3759
3763
  });
3760
3764
  }
@@ -13244,10 +13248,11 @@ function modelsForStep(schema) {
13244
13248
  name: m.name
13245
13249
  }));
13246
13250
  }
13247
- function PipelineStep({ step, schema, allSchemas: _allSchemas, depth: _depth = 0, onChange, onDelete: _onDelete, readOnly = false, toggleMode = "simple", overrideState = null, onOverrideChange, inheritedEnabled, hideModelAndSettings = false }) {
13251
+ function PipelineStep({ step, schema, allSchemas: _allSchemas, depth: _depth = 0, onChange, onDelete: _onDelete, readOnly = false, toggleMode = "simple", overrideState = null, onOverrideChange, inheritedEnabled, hideModelAndSettings = false, allowAutoModel = false }) {
13248
13252
  const [expanded, setExpanded] = useState(false);
13249
13253
  const models = modelsForStep(schema);
13250
- if (models.length > 0 && !models.some((m) => m.id === step.modelId) && !readOnly) {
13254
+ const isAutoSentinel = allowAutoModel && step.modelId === "";
13255
+ if (models.length > 0 && !isAutoSentinel && !models.some((m) => m.id === step.modelId) && !readOnly) {
13251
13256
  const fallback = (schema?.defaultModelId ? models.find((m) => m.id === schema.defaultModelId) : null) ?? models[0];
13252
13257
  if (fallback && fallback.id !== step.modelId) queueMicrotask(() => onChange({
13253
13258
  ...step,
@@ -13332,59 +13337,28 @@ function PipelineStep({ step, schema, allSchemas: _allSchemas, depth: _depth = 0
13332
13337
  children: "Model and detection settings are managed per agent — open the Pipeline page for this camera's agent to edit them."
13333
13338
  }) : /* @__PURE__ */ jsxs("div", {
13334
13339
  className: "space-y-3",
13335
- children: [
13336
- /* @__PURE__ */ jsx(ConfigSelect, {
13337
- label: "Model",
13338
- value: step.modelId,
13339
- disabled: readOnly,
13340
- options: models.map((m) => ({
13341
- value: m.id,
13342
- label: m.name
13343
- })),
13344
- onChange: (v) => onChange({
13345
- ...step,
13346
- modelId: v
13347
- })
13348
- }),
13349
- step.slot === "audio-classifier" && step.engine && /* @__PURE__ */ jsx(ConfigSelect, {
13350
- label: "Runtime",
13351
- value: `${step.engine.runtime}/${step.engine.backend}`,
13352
- disabled: readOnly,
13353
- options: [
13354
- {
13355
- value: "node/cpu",
13356
- label: "Node.js — ONNX CPU"
13357
- },
13358
- {
13359
- value: "node/coreml",
13360
- label: "Node.js — Apple SoundAnalysis (macOS)"
13361
- },
13362
- {
13363
- value: "python/cpu",
13364
- label: "Python — ONNX CPU"
13365
- }
13366
- ],
13367
- onChange: (v) => {
13368
- const [runtime, backend] = v.split("/");
13369
- const format = backend === "coreml" ? "coreml" : "onnx";
13370
- onChange({
13371
- ...step,
13372
- engine: {
13373
- runtime,
13374
- backend,
13375
- format
13376
- }
13377
- });
13378
- }
13379
- }),
13380
- schema?.configSchema?.map((field) => /* @__PURE__ */ jsx(ConfigSchemaField, {
13381
- field,
13382
- allFields: schema.configSchema ?? [],
13383
- step,
13384
- disabled: readOnly,
13385
- onChange
13386
- }, field.key))
13387
- ]
13340
+ children: [/* @__PURE__ */ jsx(ConfigSelect, {
13341
+ label: "Model",
13342
+ value: step.modelId,
13343
+ disabled: readOnly,
13344
+ options: [...allowAutoModel ? [{
13345
+ value: "",
13346
+ label: "Auto (node default)"
13347
+ }] : [], ...models.map((m) => ({
13348
+ value: m.id,
13349
+ label: m.name
13350
+ }))],
13351
+ onChange: (v) => onChange({
13352
+ ...step,
13353
+ modelId: v
13354
+ })
13355
+ }), schema?.configSchema?.map((field) => /* @__PURE__ */ jsx(ConfigSchemaField, {
13356
+ field,
13357
+ allFields: schema.configSchema ?? [],
13358
+ step,
13359
+ disabled: readOnly,
13360
+ onChange
13361
+ }, field.key))]
13388
13362
  })
13389
13363
  });
13390
13364
  }
@@ -13583,7 +13557,200 @@ function ThreeStateButton({ label, active, variant, subtext, onClick }) {
13583
13557
  });
13584
13558
  }
13585
13559
  //#endregion
13560
+ //#region src/composites/grouped-model-selector.tsx
13561
+ /**
13562
+ * GroupedModelSelector — the shared Family → Tier → Variant model picker.
13563
+ *
13564
+ * The catalog is a FLAT list of models (ids like `yolo26s`, `yolo26s-int8`);
13565
+ * this folds it into a `family → tier → variant` tree (see
13566
+ * `buildModelVariantGroups` in `@camstack/types`) so the operator picks
13567
+ * "YOLO26 → Small → Int8" instead of scanning a flat dropdown of every
13568
+ * size×quantization. The selected value stays the flat model id.
13569
+ *
13570
+ * Parameterised on the minimal `ModelVariantSource` shape so BOTH the config-UI
13571
+ * catalog (`ModelCatalogEntry`) and the pipeline/device steppers
13572
+ * (`PipelineModelOption`) drive the same component. Legacy / ungrouped models
13573
+ * never appear here (the grouping helpers skip them).
13574
+ */
13575
+ function Chip({ active, onClick, disabled, children, title }) {
13576
+ return /* @__PURE__ */ jsx("button", {
13577
+ type: "button",
13578
+ onClick,
13579
+ disabled,
13580
+ title,
13581
+ className: cn("rounded-full px-3 py-1 text-[11px] font-medium border transition-colors", active ? "border-primary bg-primary/10 text-primary" : "border-border bg-background text-foreground-subtle hover:text-foreground hover:border-foreground-subtle/40", disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"),
13582
+ children
13583
+ });
13584
+ }
13585
+ function GroupedModelSelector({ catalog, value, onChange, disabled }) {
13586
+ const families = buildModelVariantGroups(catalog);
13587
+ const current = describeModelVariant(catalog, value);
13588
+ const activeFamily = families.find((f) => f.family === current?.family)?.family ?? families[0]?.family ?? "";
13589
+ const family = families.find((f) => f.family === activeFamily) ?? families[0];
13590
+ if (!family) return null;
13591
+ const activeTier = family.tiers.find((t) => t.tier === current?.tier)?.tier ?? family.tiers[0]?.tier ?? "";
13592
+ const tier = family.tiers.find((t) => t.tier === activeTier) ?? family.tiers[0];
13593
+ if (!tier) return null;
13594
+ const resolutions = [...new Set(tier.options.map((o) => o.resolution))].sort((a, b) => (b ?? Infinity) - (a ?? Infinity));
13595
+ const selectedResolution = resolutions.includes(current?.resolution) ? current?.resolution : resolutions[0];
13596
+ const variantOptions = tier.options.filter((o) => o.resolution === selectedResolution);
13597
+ const resLabel = (r) => r === void 0 ? "640 · native" : `${r}`;
13598
+ const selectTier = (tierId) => {
13599
+ const t = family.tiers.find((x) => x.tier === tierId);
13600
+ if (!t) return;
13601
+ onChange((t.options.find((o) => o.precision === (current?.precision ?? "fp32") && o.optimization === (current?.optimization ?? "standard") && o.resolution === current?.resolution) ?? t.options[0]).modelId);
13602
+ };
13603
+ const selectResolution = (resolution) => {
13604
+ const opts = tier.options.filter((o) => o.resolution === resolution);
13605
+ const pick = opts.find((o) => o.precision === (current?.precision ?? "fp32") && o.optimization === (current?.optimization ?? "standard")) ?? opts[0];
13606
+ if (pick) onChange(pick.modelId);
13607
+ };
13608
+ const selectVariant = (opt) => {
13609
+ const id = resolveVariantModelId(catalog, {
13610
+ family: family.family,
13611
+ tier: tier.tier,
13612
+ precision: opt.precision,
13613
+ optimization: opt.optimization,
13614
+ resolution: opt.resolution
13615
+ });
13616
+ if (id) onChange(id);
13617
+ };
13618
+ const selectedOption = tier.options.find((o) => o.modelId === value) ?? null;
13619
+ return /* @__PURE__ */ jsxs("div", {
13620
+ className: "space-y-3",
13621
+ children: [
13622
+ families.length > 1 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
13623
+ className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
13624
+ children: "Family"
13625
+ }), /* @__PURE__ */ jsx("div", {
13626
+ className: "flex flex-wrap gap-1.5",
13627
+ children: families.map((f) => /* @__PURE__ */ jsx(Chip, {
13628
+ active: f.family === family.family,
13629
+ disabled,
13630
+ onClick: () => onChange(f.tiers[0]?.baseModelId ?? ""),
13631
+ children: f.label
13632
+ }, f.family))
13633
+ })] }),
13634
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("p", {
13635
+ className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
13636
+ children: [family.label, " — size"]
13637
+ }), /* @__PURE__ */ jsx("div", {
13638
+ className: "grid grid-cols-2 gap-1.5 sm:grid-cols-4",
13639
+ children: family.tiers.map((t) => {
13640
+ const active = t.tier === tier.tier;
13641
+ const base = t.options.find((o) => o.modelId === t.baseModelId) ?? t.options[0];
13642
+ return /* @__PURE__ */ jsxs("button", {
13643
+ type: "button",
13644
+ disabled,
13645
+ onClick: () => selectTier(t.tier),
13646
+ className: cn("rounded-lg border px-2 py-2 text-left transition-all", active ? "border-primary bg-primary/5 ring-1 ring-primary/30" : "border-border bg-background hover:border-foreground-subtle/40", disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"),
13647
+ children: [/* @__PURE__ */ jsxs("div", {
13648
+ className: "flex items-center gap-1",
13649
+ children: [/* @__PURE__ */ jsx("span", {
13650
+ className: "text-xs font-semibold text-foreground",
13651
+ children: t.label
13652
+ }), active && /* @__PURE__ */ jsx(Check, { className: "h-3 w-3 text-primary" })]
13653
+ }), /* @__PURE__ */ jsxs("span", {
13654
+ className: "text-[10px] text-foreground-subtle",
13655
+ children: [
13656
+ "~",
13657
+ base?.sizeMB ?? 0,
13658
+ " MB"
13659
+ ]
13660
+ })]
13661
+ }, t.tier);
13662
+ })
13663
+ })] }),
13664
+ resolutions.length > 1 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
13665
+ className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
13666
+ children: "Resolution"
13667
+ }), /* @__PURE__ */ jsx("div", {
13668
+ className: "flex flex-wrap gap-1.5",
13669
+ children: resolutions.map((r) => /* @__PURE__ */ jsx(Chip, {
13670
+ active: r === selectedResolution,
13671
+ disabled,
13672
+ title: r === void 0 ? "native (best accuracy)" : `${r}×${r} (faster)`,
13673
+ onClick: () => selectResolution(r),
13674
+ children: resLabel(r)
13675
+ }, r ?? "native"))
13676
+ })] }),
13677
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
13678
+ className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
13679
+ children: "Variant"
13680
+ }), /* @__PURE__ */ jsx("div", {
13681
+ className: "flex flex-wrap gap-1.5",
13682
+ children: variantOptions.map((opt) => /* @__PURE__ */ jsx(Chip, {
13683
+ active: opt.modelId === value,
13684
+ disabled,
13685
+ title: `${opt.formats.join(", ")} · ~${opt.sizeMB} MB`,
13686
+ onClick: () => selectVariant(opt),
13687
+ children: /* @__PURE__ */ jsxs("span", {
13688
+ className: "inline-flex items-center gap-1",
13689
+ children: [opt.optimization === "fast" && /* @__PURE__ */ jsx(Zap, { className: "h-3 w-3" }), opt.label]
13690
+ })
13691
+ }, opt.modelId))
13692
+ })] }),
13693
+ /* @__PURE__ */ jsxs("div", {
13694
+ className: "flex items-center gap-2 text-[10px] text-foreground-subtle pt-0.5",
13695
+ children: [
13696
+ /* @__PURE__ */ jsx(Cpu, { className: "h-3 w-3" }),
13697
+ /* @__PURE__ */ jsx("span", {
13698
+ className: "font-mono",
13699
+ children: value || "—"
13700
+ }),
13701
+ selectedOption && /* @__PURE__ */ jsxs("span", { children: [
13702
+ "· ",
13703
+ selectedOption.formats.join(", "),
13704
+ " · ~",
13705
+ selectedOption.sizeMB,
13706
+ " MB"
13707
+ ] })
13708
+ ]
13709
+ })
13710
+ ]
13711
+ });
13712
+ }
13713
+ //#endregion
13586
13714
  //#region src/composites/agent-step-editor.tsx
13715
+ /**
13716
+ * Shared model picker for the step editor — renders the grouped
13717
+ * Family→Tier→Variant selector when the step's models declare variant groups
13718
+ * (yolo26 …), else a flat `<select>` (face / plate / classifier catalogs and
13719
+ * custom models). Same component both the agent-default and per-device-override
13720
+ * modes use, so the picker looks identical across the pipeline stepper, the
13721
+ * device stepper and the cluster matrix.
13722
+ */
13723
+ function ModelPicker({ models, value, onChange, disabled }) {
13724
+ const hasGroups = useMemo(() => buildModelVariantGroups(models).length > 0, [models]);
13725
+ const ungrouped = useMemo(() => models.filter((m) => m.group === void 0), [models]);
13726
+ const flatSelect = (opts, selectPlaceholder) => /* @__PURE__ */ jsxs("select", {
13727
+ disabled,
13728
+ className: "w-full bg-surface border border-border rounded px-2 py-1 text-xs disabled:opacity-50",
13729
+ value: opts.some((m) => m.id === value) ? value : "",
13730
+ onChange: (e) => onChange(e.target.value),
13731
+ children: [selectPlaceholder !== void 0 && /* @__PURE__ */ jsx("option", {
13732
+ value: "",
13733
+ disabled: true,
13734
+ children: selectPlaceholder
13735
+ }), opts.map((m) => /* @__PURE__ */ jsx("option", {
13736
+ value: m.id,
13737
+ children: m.name
13738
+ }, m.id))]
13739
+ });
13740
+ if (!hasGroups) return flatSelect(models);
13741
+ return /* @__PURE__ */ jsxs("div", {
13742
+ className: "space-y-3",
13743
+ children: [/* @__PURE__ */ jsx(GroupedModelSelector, {
13744
+ catalog: models,
13745
+ value,
13746
+ onChange,
13747
+ disabled
13748
+ }), ungrouped.length > 0 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
13749
+ className: "text-[10px] uppercase tracking-widest text-foreground-subtle mb-1",
13750
+ children: "Other models"
13751
+ }), flatSelect(ungrouped, "— custom / ungrouped model —")] })]
13752
+ });
13753
+ }
13587
13754
  function buildDisplayStep(addon, cfg) {
13588
13755
  return {
13589
13756
  addonId: addon.id,
@@ -13592,7 +13759,7 @@ function buildDisplayStep(addon, cfg) {
13592
13759
  inputClasses: [...addon.inputClasses],
13593
13760
  outputClasses: [...addon.outputClasses],
13594
13761
  enabled: cfg.enabled,
13595
- modelId: cfg.modelId,
13762
+ modelId: cfg.modelId ?? addon.defaultModelId,
13596
13763
  children: [],
13597
13764
  settings: { ...cfg.settings }
13598
13765
  };
@@ -13630,14 +13797,10 @@ function AgentModeEditor({ addon, agentDefault, modelsForFormat, onChangeAgentCo
13630
13797
  /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
13631
13798
  className: "text-[10px] uppercase tracking-widest text-foreground-subtle mb-1",
13632
13799
  children: "Model"
13633
- }), /* @__PURE__ */ jsx("select", {
13634
- className: "w-full bg-surface border border-border rounded px-2 py-1 text-xs",
13635
- value: agentDefault.modelId,
13636
- onChange: (e) => update({ modelId: e.target.value }),
13637
- children: modelsForFormat.map((m) => /* @__PURE__ */ jsx("option", {
13638
- value: m.id,
13639
- children: m.name
13640
- }, m.id))
13800
+ }), /* @__PURE__ */ jsx(ModelPicker, {
13801
+ models: modelsForFormat,
13802
+ value: agentDefault.modelId ?? "",
13803
+ onChange: (modelId) => update({ modelId })
13641
13804
  })] }),
13642
13805
  (addon.configSchema?.length ?? 0) > 0 && /* @__PURE__ */ jsxs("div", {
13643
13806
  className: "pt-2 border-t border-border/50 space-y-3",
@@ -13728,15 +13891,11 @@ function DeviceModeEditor({ addon, agentDefault, agentNodeId, currentPatch, mode
13728
13891
  children: "Override"
13729
13892
  })]
13730
13893
  }),
13731
- /* @__PURE__ */ jsx("select", {
13894
+ /* @__PURE__ */ jsx(ModelPicker, {
13895
+ models: modelsForFormat,
13732
13896
  disabled: !modelOverridden,
13733
- className: "w-full bg-surface border border-border rounded px-2 py-1 text-xs disabled:opacity-50",
13734
- value: modelOverridden ? currentPatch?.modelId ?? agentDefault.modelId : agentDefault.modelId,
13735
- onChange: (e) => setModel(e.target.value),
13736
- children: modelsForFormat.map((m) => /* @__PURE__ */ jsx("option", {
13737
- value: m.id,
13738
- children: m.name
13739
- }, m.id))
13897
+ value: (modelOverridden ? currentPatch?.modelId ?? agentDefault.modelId : agentDefault.modelId) ?? "",
13898
+ onChange: (modelId) => setModel(modelId)
13740
13899
  }),
13741
13900
  !modelOverridden && /* @__PURE__ */ jsxs("div", {
13742
13901
  className: "text-[10px] text-foreground-subtle mt-1",
@@ -13916,17 +14075,33 @@ function QuickToggle({ enabled, onChange, disabled }) {
13916
14075
  function renderCellContent(state) {
13917
14076
  if (state.kind === "enabled") return /* @__PURE__ */ jsxs("span", {
13918
14077
  className: "flex min-w-0 items-center gap-1",
13919
- children: [/* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-emerald-500 shrink-0" }), /* @__PURE__ */ jsx("span", {
13920
- className: "font-mono text-foreground truncate",
13921
- children: state.modelId
13922
- })]
14078
+ title: state.overridden ? "override" : void 0,
14079
+ children: [
14080
+ /* @__PURE__ */ jsx("span", { className: cn("h-1.5 w-1.5 rounded-full shrink-0", state.overridden ? "bg-amber-500" : "bg-emerald-500") }),
14081
+ /* @__PURE__ */ jsx("span", {
14082
+ className: "font-mono text-foreground truncate",
14083
+ children: state.modelId
14084
+ }),
14085
+ state.overridden && /* @__PURE__ */ jsx("span", {
14086
+ className: "ml-auto shrink-0 text-[8px] font-semibold uppercase text-amber-500",
14087
+ children: "ovr"
14088
+ })
14089
+ ]
13923
14090
  });
13924
14091
  if (state.kind === "disabled") return /* @__PURE__ */ jsxs("span", {
13925
14092
  className: "flex min-w-0 items-center gap-1 text-foreground-subtle",
13926
- children: [/* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full border border-foreground-subtle/60 shrink-0" }), /* @__PURE__ */ jsx("span", {
13927
- className: "truncate",
13928
- children: "off"
13929
- })]
14093
+ title: state.overridden ? "override" : void 0,
14094
+ children: [
14095
+ /* @__PURE__ */ jsx("span", { className: cn("h-1.5 w-1.5 rounded-full shrink-0", state.overridden ? "bg-amber-500" : "border border-foreground-subtle/60") }),
14096
+ /* @__PURE__ */ jsx("span", {
14097
+ className: "truncate",
14098
+ children: "off"
14099
+ }),
14100
+ state.overridden && /* @__PURE__ */ jsx("span", {
14101
+ className: "ml-auto shrink-0 text-[8px] font-semibold uppercase text-amber-500",
14102
+ children: "ovr"
14103
+ })
14104
+ ]
13930
14105
  });
13931
14106
  return /* @__PURE__ */ jsxs("span", {
13932
14107
  className: "flex min-w-0 items-center gap-1 text-foreground-subtle/70",
@@ -15573,6 +15748,22 @@ function usePTZ(trpc, deviceId, hookOptions) {
15573
15748
  refreshPresets,
15574
15749
  wrap
15575
15750
  ]),
15751
+ updatePreset: useCallback(async (presetId) => {
15752
+ if (!ptz) return;
15753
+ await wrap(async () => {
15754
+ const existing = presets.find((p) => p.id === presetId);
15755
+ await ptz.savePreset({
15756
+ presetId,
15757
+ name: existing?.name ?? ""
15758
+ });
15759
+ await refreshPresets();
15760
+ });
15761
+ }, [
15762
+ ptz,
15763
+ presets,
15764
+ refreshPresets,
15765
+ wrap
15766
+ ]),
15576
15767
  deletePreset: useCallback(async (presetId) => {
15577
15768
  if (!ptz) return;
15578
15769
  await wrap(async () => {
@@ -15667,10 +15858,13 @@ function DPadButton({ direction, icon: Icon, disabled, className, variant, onMov
15667
15858
  });
15668
15859
  }
15669
15860
  function PTZOverlay({ controls, mode = "overlay", showPresets, showZoom = true, showHome = true, className }) {
15670
- const { move, startContinuous, stopContinuous, zoom, goHome, goToPreset, savePreset, deletePreset, presets, options, busy, error } = controls;
15861
+ const { move, startContinuous, stopContinuous, zoom, goHome, goToPreset, savePreset, updatePreset, deletePreset, presets, options, busy, error } = controls;
15671
15862
  const confirm = useConfirm();
15672
15863
  const [presetsOpen, setPresetsOpen] = useState(false);
15673
15864
  const [presetName, setPresetName] = useState("");
15865
+ const presetTriggerRef = useRef(null);
15866
+ const presetMenuRef = useRef(null);
15867
+ const [menuPos, setMenuPos] = useState(null);
15674
15868
  const isPanel = mode === "panel";
15675
15869
  const zoomVisible = showZoom && (options?.hasZoom ?? true);
15676
15870
  const supportsPresets = options?.supportsPresets ?? presets.length > 0;
@@ -15696,6 +15890,51 @@ function PTZOverlay({ controls, mode = "overlay", showPresets, showZoom = true,
15696
15890
  })) return;
15697
15891
  await deletePreset(presetId);
15698
15892
  }, [confirm, deletePreset]);
15893
+ const handleUpdatePreset = useCallback(async (presetId, label) => {
15894
+ if (!await confirm({
15895
+ title: "Update preset",
15896
+ message: `Overwrite preset "${label}" with the camera's current position?`,
15897
+ confirmLabel: "Update"
15898
+ })) return;
15899
+ await updatePreset(presetId);
15900
+ }, [confirm, updatePreset]);
15901
+ useLayoutEffect(() => {
15902
+ if (!presetsOpen) {
15903
+ setMenuPos(null);
15904
+ return;
15905
+ }
15906
+ const reposition = () => {
15907
+ const rect = presetTriggerRef.current?.getBoundingClientRect();
15908
+ if (rect) setMenuPos({
15909
+ top: rect.bottom + 4,
15910
+ right: window.innerWidth - rect.right
15911
+ });
15912
+ };
15913
+ reposition();
15914
+ window.addEventListener("resize", reposition);
15915
+ window.addEventListener("scroll", reposition, true);
15916
+ return () => {
15917
+ window.removeEventListener("resize", reposition);
15918
+ window.removeEventListener("scroll", reposition, true);
15919
+ };
15920
+ }, [presetsOpen]);
15921
+ useEffect(() => {
15922
+ if (!presetsOpen) return;
15923
+ const onPointerDown = (e) => {
15924
+ const target = e.target;
15925
+ if (presetMenuRef.current?.contains(target) || presetTriggerRef.current?.contains(target)) return;
15926
+ setPresetsOpen(false);
15927
+ };
15928
+ const onKey = (e) => {
15929
+ if (e.key === "Escape") setPresetsOpen(false);
15930
+ };
15931
+ document.addEventListener("mousedown", onPointerDown);
15932
+ document.addEventListener("keydown", onKey);
15933
+ return () => {
15934
+ document.removeEventListener("mousedown", onPointerDown);
15935
+ document.removeEventListener("keydown", onKey);
15936
+ };
15937
+ }, [presetsOpen]);
15699
15938
  const containerClass = isPanel ? "flex flex-col items-stretch gap-2 w-full h-full p-3" : "pointer-events-auto absolute top-3 right-3 z-10 flex flex-col items-end gap-2";
15700
15939
  const rowClass = isPanel ? cn("flex items-center gap-3 rounded-lg p-2", busy && "ring-1 ring-primary/40") : cn("flex items-center gap-2 rounded-lg border border-white/30 bg-zinc-900/90 backdrop-blur-md p-2 shadow-lg shadow-black/40", busy && "ring-1 ring-primary/40");
15701
15940
  const sideButtonSize = isPanel ? "h-9 w-9" : "h-7 w-7";
@@ -15796,14 +16035,22 @@ function PTZOverlay({ controls, mode = "overlay", showPresets, showZoom = true,
15796
16035
  presetsVisible && /* @__PURE__ */ jsxs("div", {
15797
16036
  className: "relative",
15798
16037
  children: [/* @__PURE__ */ jsxs("button", {
16038
+ ref: presetTriggerRef,
15799
16039
  type: "button",
15800
16040
  onClick: () => setPresetsOpen((v) => !v),
15801
16041
  disabled: busy,
15802
16042
  className: cn("flex items-center gap-1 rounded px-2 text-[10px] disabled:opacity-40", isPanel ? "h-9 text-foreground hover:bg-surface-hover" : "h-7 text-white hover:bg-white/15"),
15803
16043
  title: "Presets",
15804
16044
  children: ["Presets", /* @__PURE__ */ jsx(ChevronDown, { className: cn("h-3 w-3 transition-transform", presetsOpen && "rotate-180") })]
15805
- }), presetsOpen && /* @__PURE__ */ jsxs("div", {
15806
- className: cn("absolute right-0 top-full mt-1 rounded-lg shadow-xl py-1 z-20", presetManagementVisible ? "min-w-[220px]" : "min-w-[140px]", isPanel ? "bg-surface border border-border" : "border border-white/30 bg-zinc-900/95 backdrop-blur-md"),
16045
+ }), presetsOpen && menuPos && createPortal(/* @__PURE__ */ jsxs("div", {
16046
+ ref: presetMenuRef,
16047
+ style: {
16048
+ position: "fixed",
16049
+ top: menuPos.top,
16050
+ right: menuPos.right,
16051
+ zIndex: 60
16052
+ },
16053
+ className: cn("rounded-lg shadow-xl py-1", presetManagementVisible ? "min-w-[220px]" : "min-w-[140px]", isPanel ? "bg-surface border border-border" : "border border-white/30 bg-zinc-900/95 backdrop-blur-md"),
15807
16054
  children: [
15808
16055
  presets.length === 0 && /* @__PURE__ */ jsx("div", {
15809
16056
  className: cn("px-3 py-1.5 text-[10px]", isPanel ? "text-foreground-subtle" : "text-white/60"),
@@ -15820,14 +16067,21 @@ function PTZOverlay({ controls, mode = "overlay", showPresets, showZoom = true,
15820
16067
  disabled: busy,
15821
16068
  className: cn("flex-1 px-3 py-1.5 text-left text-[10px] disabled:opacity-40", isPanel ? "text-foreground" : "text-white"),
15822
16069
  children: p.name || p.id
15823
- }), presetManagementVisible && /* @__PURE__ */ jsx("button", {
16070
+ }), presetManagementVisible && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("button", {
16071
+ type: "button",
16072
+ onClick: () => void handleUpdatePreset(p.id, p.name || p.id),
16073
+ disabled: busy,
16074
+ title: `Overwrite "${p.name || p.id}" with current position`,
16075
+ className: cn("flex h-5 w-5 shrink-0 items-center justify-center rounded", "text-foreground-subtle hover:bg-primary/15 hover:text-primary disabled:opacity-40"),
16076
+ children: /* @__PURE__ */ jsx(Crosshair, { className: "h-3 w-3" })
16077
+ }), /* @__PURE__ */ jsx("button", {
15824
16078
  type: "button",
15825
16079
  onClick: () => void handleDeletePreset(p.id, p.name || p.id),
15826
16080
  disabled: busy,
15827
16081
  title: `Delete preset ${p.name || p.id}`,
15828
16082
  className: cn("mr-1 flex h-5 w-5 shrink-0 items-center justify-center rounded", "text-foreground-subtle hover:bg-danger/15 hover:text-danger disabled:opacity-40"),
15829
16083
  children: /* @__PURE__ */ jsx(X, { className: "h-3 w-3" })
15830
- })]
16084
+ })] })]
15831
16085
  }, p.id)),
15832
16086
  presetManagementVisible && /* @__PURE__ */ jsxs(Fragment$1, { children: [
15833
16087
  presets.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("my-1 h-px", isPanel ? "bg-border" : "bg-white/15") }),
@@ -15863,7 +16117,7 @@ function PTZOverlay({ controls, mode = "overlay", showPresets, showZoom = true,
15863
16117
  })
15864
16118
  ] })
15865
16119
  ]
15866
- })]
16120
+ }), document.body)]
15867
16121
  })
15868
16122
  ]
15869
16123
  })]
@@ -17680,6 +17934,8 @@ var usePipelineExecutorGetEngineProvisioning = trpc.pipelineExecutor.getEnginePr
17680
17934
  var usePipelineExecutorGetVideoPipelineSteps = trpc.pipelineExecutor.getVideoPipelineSteps.useQuery;
17681
17935
  /** Generated alias around `trpc.pipelineExecutor.setVideoPipelineSteps.useMutation`. */
17682
17936
  var usePipelineExecutorSetVideoPipelineSteps = trpc.pipelineExecutor.setVideoPipelineSteps.useMutation;
17937
+ /** Generated alias around `trpc.pipelineExecutor.resetToDefault.useMutation`. */
17938
+ var usePipelineExecutorResetToDefault = trpc.pipelineExecutor.resetToDefault.useMutation;
17683
17939
  /** Generated alias around `trpc.pipelineExecutor.getSchema.useQuery`. */
17684
17940
  var usePipelineExecutorGetSchema = trpc.pipelineExecutor.getSchema.useQuery;
17685
17941
  /** Generated alias around `trpc.pipelineExecutor.getGlobalSteps.useQuery`. */
@@ -17688,6 +17944,8 @@ var usePipelineExecutorGetGlobalSteps = trpc.pipelineExecutor.getGlobalSteps.use
17688
17944
  var usePipelineExecutorGetGlobalPipelineConfig = trpc.pipelineExecutor.getGlobalPipelineConfig.useQuery;
17689
17945
  /** Generated alias around `trpc.pipelineExecutor.getOrchestratorConfigSchema.useQuery`. */
17690
17946
  var usePipelineExecutorGetOrchestratorConfigSchema = trpc.pipelineExecutor.getOrchestratorConfigSchema.useQuery;
17947
+ /** Generated alias around `trpc.pipelineExecutor.validatePipeline.useQuery`. */
17948
+ var usePipelineExecutorValidatePipeline = trpc.pipelineExecutor.validatePipeline.useQuery;
17691
17949
  /** Generated alias around `trpc.pipelineExecutor.listTemplates.useQuery`. */
17692
17950
  var usePipelineExecutorListTemplates = trpc.pipelineExecutor.listTemplates.useQuery;
17693
17951
  /** Generated alias around `trpc.pipelineExecutor.saveTemplate.useMutation`. */
@@ -17758,6 +18016,8 @@ var usePipelineOrchestratorGetCameraMetrics = trpc.pipelineOrchestrator.getCamer
17758
18016
  var usePipelineOrchestratorGetCapabilityBindings = trpc.pipelineOrchestrator.getCapabilityBindings.useQuery;
17759
18017
  /** Generated alias around `trpc.pipelineOrchestrator.setCapabilityBinding.useMutation`. */
17760
18018
  var usePipelineOrchestratorSetCapabilityBinding = trpc.pipelineOrchestrator.setCapabilityBinding.useMutation;
18019
+ /** Generated alias around `trpc.pipelineOrchestrator.getIngestOwner.useQuery`. */
18020
+ var usePipelineOrchestratorGetIngestOwner = trpc.pipelineOrchestrator.getIngestOwner.useQuery;
17761
18021
  /** Generated alias around `trpc.pipelineOrchestrator.assignDecoder.useMutation`. */
17762
18022
  var usePipelineOrchestratorAssignDecoder = trpc.pipelineOrchestrator.assignDecoder.useMutation;
17763
18023
  /** Generated alias around `trpc.pipelineOrchestrator.unassignDecoder.useMutation`. */
@@ -17790,6 +18050,8 @@ var usePipelineOrchestratorSetAgentMaxCameras = trpc.pipelineOrchestrator.setAge
17790
18050
  var usePipelineOrchestratorSetAgentDetectWeight = trpc.pipelineOrchestrator.setAgentDetectWeight.useMutation;
17791
18051
  /** Generated alias around `trpc.pipelineOrchestrator.setAgentCapabilities.useMutation`. */
17792
18052
  var usePipelineOrchestratorSetAgentCapabilities = trpc.pipelineOrchestrator.setAgentCapabilities.useMutation;
18053
+ /** Generated alias around `trpc.pipelineOrchestrator.setAgentReachableHost.useMutation`. */
18054
+ var usePipelineOrchestratorSetAgentReachableHost = trpc.pipelineOrchestrator.setAgentReachableHost.useMutation;
17793
18055
  /** Generated alias around `trpc.pipelineOrchestrator.getCameraSettings.useQuery`. */
17794
18056
  var usePipelineOrchestratorGetCameraSettings = trpc.pipelineOrchestrator.getCameraSettings.useQuery;
17795
18057
  /** Generated alias around `trpc.pipelineOrchestrator.setCameraStepToggle.useMutation`. */
@@ -17964,10 +18226,6 @@ var useSnapshotGetDeviceSettingsContribution = trpc.snapshot.getDeviceSettingsCo
17964
18226
  var useSnapshotGetDeviceLiveContribution = trpc.snapshot.getDeviceLiveContribution.useQuery;
17965
18227
  /** Generated alias around `trpc.snapshot.applyDeviceSettingsPatch.useMutation`. */
17966
18228
  var useSnapshotApplyDeviceSettingsPatch = trpc.snapshot.applyDeviceSettingsPatch.useMutation;
17967
- /** Generated alias around `trpc.snapshotProvider.supportsDevice.useQuery`. */
17968
- var useSnapshotProviderSupportsDevice = trpc.snapshotProvider.supportsDevice.useQuery;
17969
- /** Generated alias around `trpc.snapshotProvider.getSnapshot.useQuery`. */
17970
- var useSnapshotProviderGetSnapshot = trpc.snapshotProvider.getSnapshot.useQuery;
17971
18229
  /** Generated alias around `trpc.storage.resolve.useQuery`. */
17972
18230
  var useStorageResolve = trpc.storage.resolve.useQuery;
17973
18231
  /** Generated alias around `trpc.storage.write.useMutation`. */
@@ -30018,10 +30276,11 @@ function PlaceholderStep({ addon, onClick }) {
30018
30276
  })
30019
30277
  });
30020
30278
  }
30021
- function PipelineBuilder({ schema, steps, onChange, templates, selectedTemplateId, onSelectTemplate, onSaveTemplate, onUpdateTemplate, onDeleteTemplate, readOnly = false, excludeAddons = [], hideTemplates = false, showOnlyEnabled = false, showSlotLabels = false, toggleMode = "simple", overrides = {}, onOverrideChange, inheritedEnabledByAddon = {}, hideModelAndSettings = false }) {
30279
+ function PipelineBuilder({ schema, steps, onChange, templates, selectedTemplateId, onSelectTemplate, onSaveTemplate, onUpdateTemplate, onDeleteTemplate, readOnly = false, excludeAddons = [], hideTemplates = false, showOnlyEnabled = false, showSlotLabels = false, toggleMode = "simple", overrides = {}, onOverrideChange, inheritedEnabledByAddon = {}, hideModelAndSettings = false, allowAutoModel = false }) {
30022
30280
  const stepExtraProps = (addonId) => ({
30023
30281
  toggleMode,
30024
30282
  hideModelAndSettings,
30283
+ allowAutoModel,
30025
30284
  ...toggleMode === "threeState" ? {
30026
30285
  overrideState: overrides[addonId] !== void 0 ? overrides[addonId] : null,
30027
30286
  onOverrideChange: onOverrideChange ? (next) => onOverrideChange(addonId, next) : void 0,
@@ -33254,7 +33513,7 @@ function ScheduleBandsEditor({ schedules, onChange }) {
33254
33513
  className: "space-y-2",
33255
33514
  children: [schedules.length === 0 ? /* @__PURE__ */ jsx("p", {
33256
33515
  className: "text-[11px] text-foreground-subtle",
33257
- children: "Sempre (24/7) — aggiungi una fascia per limitare gli orari."
33516
+ children: "Always (24/7) — add a band to restrict hours."
33258
33517
  }) : schedules.map((band, i) => /* @__PURE__ */ jsx(BandRow, {
33259
33518
  band,
33260
33519
  onChange: (b) => replaceAt(i, b),
@@ -33263,7 +33522,7 @@ function ScheduleBandsEditor({ schedules, onChange }) {
33263
33522
  type: "button",
33264
33523
  onClick: addBand,
33265
33524
  className: "flex items-center gap-1 rounded-md bg-surface-hover px-2 py-1 text-[11px] text-foreground-subtle hover:text-foreground",
33266
- children: [/* @__PURE__ */ jsx(Plus, { className: "h-3 w-3" }), " Aggiungi fascia"]
33525
+ children: [/* @__PURE__ */ jsx(Plus, { className: "h-3 w-3" }), " Add band"]
33267
33526
  })]
33268
33527
  });
33269
33528
  }
@@ -33273,18 +33532,18 @@ function BandRow({ band, onChange, onRemove }) {
33273
33532
  children: [
33274
33533
  /* @__PURE__ */ jsx("span", {
33275
33534
  className: "flex-1",
33276
- children: "Sempre"
33535
+ children: "Always"
33277
33536
  }),
33278
33537
  /* @__PURE__ */ jsx("button", {
33279
33538
  type: "button",
33280
33539
  onClick: () => onChange(newBand()),
33281
33540
  className: "text-foreground-subtle hover:text-foreground underline",
33282
- children: "imposta fascia"
33541
+ children: "Set band"
33283
33542
  }),
33284
33543
  /* @__PURE__ */ jsx("button", {
33285
33544
  type: "button",
33286
33545
  onClick: onRemove,
33287
- "aria-label": "Rimuovi fascia",
33546
+ "aria-label": "Remove band",
33288
33547
  className: "text-foreground-subtle hover:text-red-500",
33289
33548
  children: /* @__PURE__ */ jsx(Trash2, { className: "h-3.5 w-3.5" })
33290
33549
  })
@@ -33329,7 +33588,7 @@ function BandRow({ band, onChange, onRemove }) {
33329
33588
  /* @__PURE__ */ jsx("button", {
33330
33589
  type: "button",
33331
33590
  onClick: onRemove,
33332
- "aria-label": "Rimuovi fascia",
33591
+ "aria-label": "Remove band",
33333
33592
  className: "text-foreground-subtle hover:text-red-500",
33334
33593
  children: /* @__PURE__ */ jsx(Trash2, { className: "h-3.5 w-3.5" })
33335
33594
  })
@@ -33345,7 +33604,7 @@ function BandRow({ band, onChange, onRemove }) {
33345
33604
  }, d.value);
33346
33605
  }), days.length === 0 ? /* @__PURE__ */ jsx("span", {
33347
33606
  className: "self-center text-[10px] text-foreground-subtle",
33348
- children: "tutti i giorni"
33607
+ children: "every day"
33349
33608
  }) : null]
33350
33609
  })]
33351
33610
  });
@@ -33391,7 +33650,7 @@ function RecordingSettings({ initial, saving, onSave }) {
33391
33650
  });
33392
33651
  const numOrUndef = (v) => v === "" ? void 0 : Number(v);
33393
33652
  const toggleProfile = (p) => {
33394
- const cur = common.profiles ?? [];
33653
+ const cur = common.profiles ?? [...PROFILES];
33395
33654
  const next = cur.includes(p) ? cur.filter((x) => x !== p) : [...cur, p];
33396
33655
  setCommon({
33397
33656
  ...common,
@@ -33569,7 +33828,7 @@ function RecordingSettings({ initial, saving, onSave }) {
33569
33828
  return /* @__PURE__ */ jsx("button", {
33570
33829
  type: "button",
33571
33830
  onClick: () => toggleProfile(p),
33572
- className: `rounded px-2 py-1 ${(common.profiles ?? []).includes(p) ? "bg-primary text-primary-foreground" : "bg-surface-hover text-foreground-subtle"}`,
33831
+ className: `rounded px-2 py-1 ${common.profiles == null || common.profiles.includes(p) ? "bg-primary text-primary-foreground" : "bg-surface-hover text-foreground-subtle"}`,
33573
33832
  children: p
33574
33833
  }, p);
33575
33834
  })]
@@ -34112,7 +34371,7 @@ function CoverageTrack({ windowFrom, windowTo, spans, playheadMs, onSeek, onScru
34112
34371
  const left = pctForMs(s.startMs, windowFrom, windowTo);
34113
34372
  const right = pctForMs(s.endMs, windowFrom, windowTo);
34114
34373
  return /* @__PURE__ */ jsx("div", {
34115
- "data-testid": "coverage-fascia",
34374
+ "data-testid": "coverage-band",
34116
34375
  className: "absolute inset-y-0 bg-gradient-to-b from-primary to-primary/80",
34117
34376
  style: {
34118
34377
  left: `${left}%`,
@@ -45024,4 +45283,4 @@ var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-NcxxQN8r.js")
45024
45283
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
45025
45284
  var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-APgPLF7p.js").then((m) => ({ default: m.PrivacyMaskSettings })));
45026
45285
  //#endregion
45027
- export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EmptyState, ErrorBox, EventStream, FILL, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, MotionZonesSettings, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECORDED_PLAYBACK_MODES, RIGHT, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, ScopePicker, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, Tooltip, TooltipContent, TooltipTrigger, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, allDeviceTypeFilterOptions, buildStepTreeFromSchema, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, deviceRoleMeta, deviceRoleMetaOf, deviceTypeMeta, deviceTypeMetaOf, ensureMfHostInit, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupChildrenByLayout, hardwareLabel, humidifierTint, createLucideIcon as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextSort, normalizeForSearch, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, EyeOff as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolvePrimaryChild, resolveSensorDisplay, scrubReducer, serializeRecordedCommand, shouldCommit, shouldEmit, sortRows, statusIcons, stripParentNamePrefix, Trash2 as t, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdateFrameworkPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerClassify, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupDelete, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useColorGetStatus, useColorSetColor, useConfirm, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetChildren, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDeviceLinks, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useEventsGetEventClipUrl, useEventsGetEventThumbnail, useEventsGetEvents, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetPreferred, useLocalNetworkList, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkSetAllowedAddresses, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderDumpHeapSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetProcessStats, useMetricsProviderKillProcess, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsClearTracks, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsSearchObjectEvents, usePipelineExecutorCacheFrameInPool, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDetect, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorReprobeEngine, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignDecoder, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDecoderAssignment, usePipelineOrchestratorGetDecoderAssignments, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorRebalance, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentAddonDefaults, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignDecoder, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerReportMotion, usePlateGalleryCorrectPlateText, usePlateGalleryDeletePlate, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetStatus, useRecordingGetStorageUsage, useRecordingLocateSegment, useRecordingPruneFootage, useRecordingReadSegmentBytes, useRecordingRescanStorage, useRecordingSetDeviceConfig, useRemoteComponent, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetStatus, useSnapshotInvalidateCache, useSnapshotProviderGetSnapshot, useSnapshotProviderSupportsDevice, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetRetentionConfig, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetRetentionConfig, useTamperGetStatus, useTemperatureSensorGetStatus, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
45286
+ export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EmptyState, ErrorBox, EventStream, FILL, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, GroupedModelSelector, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, MotionZonesSettings, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECORDED_PLAYBACK_MODES, RIGHT, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, ScopePicker, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, Tooltip, TooltipContent, TooltipTrigger, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, allDeviceTypeFilterOptions, buildStepTreeFromSchema, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, deviceRoleMeta, deviceRoleMetaOf, deviceTypeMeta, deviceTypeMetaOf, ensureMfHostInit, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupChildrenByLayout, hardwareLabel, humidifierTint, createLucideIcon as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextSort, normalizeForSearch, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, EyeOff as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolvePrimaryChild, resolveSensorDisplay, scrubReducer, serializeRecordedCommand, shouldCommit, shouldEmit, sortRows, statusIcons, stripParentNamePrefix, Trash2 as t, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdateFrameworkPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerClassify, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupDelete, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useColorGetStatus, useColorSetColor, useConfirm, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetChildren, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDeviceLinks, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useEventsGetEventClipUrl, useEventsGetEventThumbnail, useEventsGetEvents, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetPreferred, useLocalNetworkList, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkSetAllowedAddresses, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderDumpHeapSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetProcessStats, useMetricsProviderKillProcess, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsClearTracks, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsSearchObjectEvents, usePipelineExecutorCacheFrameInPool, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDetect, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorReprobeEngine, usePipelineExecutorResetToDefault, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignDecoder, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDecoderAssignment, usePipelineOrchestratorGetDecoderAssignments, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorRebalance, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentAddonDefaults, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignDecoder, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerReportMotion, usePlateGalleryCorrectPlateText, usePlateGalleryDeletePlate, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetStatus, useRecordingGetStorageUsage, useRecordingLocateSegment, useRecordingPruneFootage, useRecordingReadSegmentBytes, useRecordingRescanStorage, useRecordingSetDeviceConfig, useRemoteComponent, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetStatus, useSnapshotInvalidateCache, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetRetentionConfig, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetRetentionConfig, useTamperGetStatus, useTemperatureSensorGetStatus, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };