@camstack/ui-library 1.2.300 → 1.2.302

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
@@ -10992,6 +10992,8 @@ var useDeviceStatusGetStatus = trpc.deviceStatus.getStatus.useQuery;
10992
10992
  var useDishwasherStart = trpc.dishwasher.start.useMutation;
10993
10993
  /** Generated alias around `trpc.dishwasher.pause.useMutation`. */
10994
10994
  var useDishwasherPause = trpc.dishwasher.pause.useMutation;
10995
+ /** Generated alias around `trpc.dishwasher.resume.useMutation`. */
10996
+ var useDishwasherResume = trpc.dishwasher.resume.useMutation;
10995
10997
  /** Generated alias around `trpc.dishwasher.stop.useMutation`. */
10996
10998
  var useDishwasherStop = trpc.dishwasher.stop.useMutation;
10997
10999
  /** Generated alias around `trpc.dishwasher.setProgram.useMutation`. */
@@ -11002,8 +11004,18 @@ var useDishwasherSetPower = trpc.dishwasher.setPower.useMutation;
11002
11004
  var useDishwasherSetHalfLoad = trpc.dishwasher.setHalfLoad.useMutation;
11003
11005
  /** Generated alias around `trpc.dishwasher.setHygienePlus.useMutation`. */
11004
11006
  var useDishwasherSetHygienePlus = trpc.dishwasher.setHygienePlus.useMutation;
11007
+ /** Generated alias around `trpc.dishwasher.setExtraDry.useMutation`. */
11008
+ var useDishwasherSetExtraDry = trpc.dishwasher.setExtraDry.useMutation;
11009
+ /** Generated alias around `trpc.dishwasher.setIntensiveZone.useMutation`. */
11010
+ var useDishwasherSetIntensiveZone = trpc.dishwasher.setIntensiveZone.useMutation;
11011
+ /** Generated alias around `trpc.dishwasher.setVarioSpeedPlus.useMutation`. */
11012
+ var useDishwasherSetVarioSpeedPlus = trpc.dishwasher.setVarioSpeedPlus.useMutation;
11013
+ /** Generated alias around `trpc.dishwasher.setChildLock.useMutation`. */
11014
+ var useDishwasherSetChildLock = trpc.dishwasher.setChildLock.useMutation;
11005
11015
  /** Generated alias around `trpc.dishwasher.setOption.useMutation`. */
11006
11016
  var useDishwasherSetOption = trpc.dishwasher.setOption.useMutation;
11017
+ /** Generated alias around `trpc.dishwasher.getOptions.useQuery`. */
11018
+ var useDishwasherGetOptions = trpc.dishwasher.getOptions.useQuery;
11007
11019
  /** Generated alias around `trpc.dishwasher.getStatus.useQuery`. */
11008
11020
  var useDishwasherGetStatus = trpc.dishwasher.getStatus.useQuery;
11009
11021
  /** Generated alias around `trpc.doorbell.getStatus.useQuery`. */
@@ -12330,6 +12342,8 @@ var useStorageMigrationStatus = trpc.storageMigration.status.useQuery;
12330
12342
  var useStorageMigrationCancel = trpc.storageMigration.cancel.useMutation;
12331
12343
  /** Generated alias around `trpc.storageMigration.movers.useQuery`. */
12332
12344
  var useStorageMigrationMovers = trpc.storageMigration.movers.useQuery;
12345
+ /** Generated alias around `trpc.storageMigration.moverClearance.useQuery`. */
12346
+ var useStorageMigrationMoverClearance = trpc.storageMigration.moverClearance.useQuery;
12333
12347
  /** Generated alias around `trpc.storageMigration.residue.useQuery`. */
12334
12348
  var useStorageMigrationResidue = trpc.storageMigration.residue.useQuery;
12335
12349
  /** Generated alias around `trpc.storageMigration.drain.useMutation`. */
@@ -28556,7 +28570,7 @@ var STATUS_DOT_STYLES = {
28556
28570
  idle: "bg-foreground-subtle/40",
28557
28571
  unknown: "bg-foreground-subtle/40"
28558
28572
  };
28559
- function formatDuration(ms) {
28573
+ function formatDuration$1(ms) {
28560
28574
  if (!Number.isFinite(ms) || ms < 0) return "—";
28561
28575
  if (ms < 1e3) return `${ms}ms`;
28562
28576
  const totalSec = Math.round(ms / 1e3);
@@ -28584,7 +28598,7 @@ function ObjectArrayCell({ kind, value }) {
28584
28598
  });
28585
28599
  if (kind === "duration" && typeof value === "number") return /* @__PURE__ */ jsx("span", {
28586
28600
  className: "font-mono text-[11px]",
28587
- children: formatDuration(value)
28601
+ children: formatDuration$1(value)
28588
28602
  });
28589
28603
  if (kind === "timestamp" && typeof value === "number") return /* @__PURE__ */ jsx("span", {
28590
28604
  className: "font-mono text-[11px]",
@@ -35084,7 +35098,7 @@ var ALIGN_CLASS = {
35084
35098
  right: "text-right",
35085
35099
  center: "text-center"
35086
35100
  };
35087
- function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyMessage, className, bordered = true, rowClassName, maxBodyHeight, fill = false, defaultSort, sort: sortProp, onSortChange, pageSize, page: pageProp, onPageChange, paginationLabels = DEFAULT_PAGINATION_LABELS, selection }) {
35101
+ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyMessage, className, bordered = true, rowClassName, maxBodyHeight, fill = false, defaultSort, sort: sortProp, onSortChange, pageSize, page: pageProp, onPageChange, paginationLabels = DEFAULT_PAGINATION_LABELS, selection, renderExpanded, isExpanded }) {
35088
35102
  const [innerSort, setInnerSort] = useState(defaultSort ?? null);
35089
35103
  const [innerPage, setInnerPage] = useState(0);
35090
35104
  const sort = sortProp !== void 0 ? sortProp : innerSort;
@@ -35161,7 +35175,8 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
35161
35175
  const key = rowKey ? rowKey(row, rowIndex) : rowIndex;
35162
35176
  const extra = rowClassName?.(row, rowIndex) ?? "";
35163
35177
  const interactive = onRowClick !== void 0;
35164
- return /* @__PURE__ */ jsx("tr", {
35178
+ const detail = renderExpanded !== void 0 && isExpanded?.(row) === true ? renderExpanded(row, rowIndex) : null;
35179
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("tr", {
35165
35180
  onClick: interactive ? () => onRowClick(row, rowIndex) : void 0,
35166
35181
  className: [interactive ? "cursor-pointer hover:bg-primary/5" : "hover:bg-primary/5", extra].filter(Boolean).join(" "),
35167
35182
  children: shownColumns.map((col) => {
@@ -35177,7 +35192,15 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
35177
35192
  children: col.render(row, rowIndex)
35178
35193
  }, col.key);
35179
35194
  })
35180
- }, key);
35195
+ }), detail !== null && /* @__PURE__ */ jsx("tr", {
35196
+ "data-expanded-row": "",
35197
+ className: "bg-surface",
35198
+ children: /* @__PURE__ */ jsx("td", {
35199
+ colSpan: shownColumns.length,
35200
+ className: "border-b border-border px-3 py-2",
35201
+ children: detail
35202
+ })
35203
+ })] }, key);
35181
35204
  }) })]
35182
35205
  })
35183
35206
  });
@@ -37741,6 +37764,88 @@ function filterDataTableRows(rows, state, config) {
37741
37764
  });
37742
37765
  }
37743
37766
  //#endregion
37767
+ //#region src/composites/device-list/multi-select.tsx
37768
+ /**
37769
+ * Compact multi-select dropdown — a single chip-sized trigger ("Label · N")
37770
+ * that opens a checklist. Self-contained (outside-click / Escape dismiss), so
37771
+ * it stays compressed regardless of how many options exist or how little
37772
+ * horizontal room the container has. Shared by the device list's generic-mode
37773
+ * type filter and any other multi-select needs.
37774
+ */
37775
+ function MultiSelectDropdown({ label, options, selected, onChange }) {
37776
+ const t = useUiText();
37777
+ const [open, setOpen] = useState(false);
37778
+ const rootRef = useRef(null);
37779
+ useEffect(() => {
37780
+ if (!open) return;
37781
+ const onOutside = (e) => {
37782
+ const target = e.target instanceof Node ? e.target : null;
37783
+ if (target && rootRef.current && !rootRef.current.contains(target)) setOpen(false);
37784
+ };
37785
+ const onKey = (e) => {
37786
+ if (e.key === "Escape") setOpen(false);
37787
+ };
37788
+ document.addEventListener("mousedown", onOutside);
37789
+ document.addEventListener("touchstart", onOutside);
37790
+ document.addEventListener("keydown", onKey);
37791
+ return () => {
37792
+ document.removeEventListener("mousedown", onOutside);
37793
+ document.removeEventListener("touchstart", onOutside);
37794
+ document.removeEventListener("keydown", onKey);
37795
+ };
37796
+ }, [open]);
37797
+ const selectedSet = new Set(selected);
37798
+ const count = selected.length;
37799
+ const toggle = (id) => {
37800
+ const next = new Set(selectedSet);
37801
+ if (next.has(id)) next.delete(id);
37802
+ else next.add(id);
37803
+ onChange(options.filter((o) => next.has(o.id)).map((o) => o.id));
37804
+ };
37805
+ return /* @__PURE__ */ jsxs("div", {
37806
+ ref: rootRef,
37807
+ className: "relative",
37808
+ children: [/* @__PURE__ */ jsxs("button", {
37809
+ type: "button",
37810
+ onClick: () => setOpen((v) => !v),
37811
+ "aria-haspopup": "listbox",
37812
+ "aria-expanded": open,
37813
+ className: `inline-flex items-center gap-1.5 h-7 px-2.5 rounded-full border text-[10.5px] font-medium transition-colors ${count > 0 ? "border-primary/40 bg-primary/15 text-primary" : "border-border bg-surface text-foreground-subtle hover:text-foreground hover:bg-surface-hover"}`,
37814
+ children: [/* @__PURE__ */ jsxs("span", { children: [label, count > 0 ? ` · ${String(count)}` : ""] }), /* @__PURE__ */ jsx(ChevronDown, { className: `h-3 w-3 transition-transform ${open ? "rotate-180" : ""}` })]
37815
+ }), open && /* @__PURE__ */ jsxs("div", {
37816
+ role: "listbox",
37817
+ className: "absolute left-0 top-full mt-1 z-30 min-w-[180px] max-h-72 overflow-y-auto rounded-lg border border-border bg-surface shadow-xl py-1",
37818
+ children: [count > 0 && /* @__PURE__ */ jsx("button", {
37819
+ type: "button",
37820
+ onClick: () => onChange([]),
37821
+ className: "flex w-full items-center px-3 py-1.5 text-left text-[10.5px] text-foreground-subtle hover:bg-surface-hover hover:text-foreground",
37822
+ children: t("uiLibrary.multiSelect.clear", "Clear selection")
37823
+ }), options.map((o) => {
37824
+ const active = selectedSet.has(o.id);
37825
+ const Icon = o.icon;
37826
+ return /* @__PURE__ */ jsxs("button", {
37827
+ type: "button",
37828
+ role: "option",
37829
+ "aria-selected": active,
37830
+ onClick: () => toggle(o.id),
37831
+ className: "flex w-full items-center gap-2 px-3 py-1.5 text-left text-[10.5px] text-foreground hover:bg-surface-hover",
37832
+ children: [
37833
+ /* @__PURE__ */ jsx("span", {
37834
+ className: `flex h-3.5 w-3.5 items-center justify-center rounded border shrink-0 ${active ? "border-primary bg-primary" : "border-border"}`,
37835
+ children: active && /* @__PURE__ */ jsx(Check, { className: "h-2.5 w-2.5 text-primary-foreground" })
37836
+ }),
37837
+ Icon && /* @__PURE__ */ jsx(Icon, { className: "h-3.5 w-3.5 shrink-0 text-foreground-subtle" }),
37838
+ /* @__PURE__ */ jsx("span", {
37839
+ className: "truncate",
37840
+ children: o.label
37841
+ })
37842
+ ]
37843
+ }, o.id);
37844
+ })]
37845
+ })]
37846
+ });
37847
+ }
37848
+ //#endregion
37744
37849
  //#region src/composites/data-table-filter-bar.tsx
37745
37850
  /**
37746
37851
  * The controls of one table's filter: a search box and the facet chips.
@@ -37793,7 +37898,18 @@ function DataTableFilterBar({ state, facets, labels, onSearch, onToggleFacet, on
37793
37898
  }, facet.value);
37794
37899
  })
37795
37900
  }),
37796
- groups.filter((group) => group.facets.length > 1).map((group) => /* @__PURE__ */ jsxs("div", {
37901
+ groups.filter((group) => group.facets.length > 1).map((group) => group.display === "menu" ? /* @__PURE__ */ jsx(MultiSelectDropdown, {
37902
+ label: group.label,
37903
+ options: group.facets.map((facet) => ({
37904
+ id: facet.value,
37905
+ label: `${group.facetLabel ? group.facetLabel(facet.value) : facet.value} (${String(facet.count)})`
37906
+ })),
37907
+ selected: group.selected,
37908
+ onChange: (next) => {
37909
+ const chosen = new Set(next);
37910
+ for (const facet of group.facets) if (chosen.has(facet.value) !== group.selected.includes(facet.value)) onToggleGroupFacet?.(group.id, facet.value);
37911
+ }
37912
+ }, group.id) : /* @__PURE__ */ jsxs("div", {
37797
37913
  role: "group",
37798
37914
  "aria-label": group.label,
37799
37915
  className: "flex flex-wrap items-center gap-1",
@@ -48657,47 +48773,95 @@ function PetFeederHeroCard({ trpc, deviceId, features, optimistic }) {
48657
48773
  *
48658
48774
  * Reads the `dishwasher` cap status slice and renders inline + hero surfaces
48659
48775
  * mirroring vacuum-control / pet-feeder patterns.
48776
+ *
48777
+ * UNKNOWN IS NOT OFF. The slice carries `null` for everything the appliance has not
48778
+ * reported, and this view renders that as "—" / a disabled control, never as an unchecked
48779
+ * box or a zero. It also does not echo a command before the appliance confirms it: the
48780
+ * slice moves when the appliance says so.
48660
48781
  */
48661
- function dishwasherStateMeta(state, t = defaultUiText) {
48662
- switch (state) {
48663
- case "running": return {
48664
- label: t("uiLibrary.dishwasher.running", "Running"),
48782
+ /** What the operation state is called to a person, and how it is toned. */
48783
+ function dishwasherOperationMeta(operationState, t = defaultUiText) {
48784
+ switch (operationState) {
48785
+ case "Run": return {
48786
+ label: t("uiLibrary.dishwasher.op.run", "Running"),
48665
48787
  tone: "text-primary"
48666
48788
  };
48667
- case "paused": return {
48668
- label: t("uiLibrary.dishwasher.paused", "Paused"),
48789
+ case "Pause": return {
48790
+ label: t("uiLibrary.dishwasher.op.pause", "Paused"),
48669
48791
  tone: "text-warning"
48670
48792
  };
48671
- case "finished": return {
48672
- label: t("uiLibrary.dishwasher.finished", "Finished"),
48793
+ case "Finished": return {
48794
+ label: t("uiLibrary.dishwasher.op.finished", "Finished"),
48673
48795
  tone: "text-success"
48674
48796
  };
48675
- case "error": return {
48676
- label: t("uiLibrary.dishwasher.error", "Error"),
48677
- tone: "text-destructive"
48797
+ case "Error": return {
48798
+ label: t("uiLibrary.dishwasher.op.error", "Error"),
48799
+ tone: "text-danger"
48678
48800
  };
48679
- case "unavailable": return {
48680
- label: t("uiLibrary.dishwasher.unavailable", "Unavailable"),
48681
- tone: "text-foreground-subtle"
48801
+ case "Aborting": return {
48802
+ label: t("uiLibrary.dishwasher.op.aborting", "Stopping"),
48803
+ tone: "text-warning"
48682
48804
  };
48683
- case "idle": return {
48684
- label: t("uiLibrary.dishwasher.idle", "Idle"),
48805
+ case "ActionRequired": return {
48806
+ label: t("uiLibrary.dishwasher.op.actionRequired", "Action required"),
48807
+ tone: "text-warning"
48808
+ };
48809
+ case "DelayedStart": return {
48810
+ label: t("uiLibrary.dishwasher.op.delayedStart", "Delayed start"),
48811
+ tone: "text-primary"
48812
+ };
48813
+ case "Ready": return {
48814
+ label: t("uiLibrary.dishwasher.op.ready", "Ready"),
48815
+ tone: "text-foreground"
48816
+ };
48817
+ case "Inactive": return {
48818
+ label: t("uiLibrary.dishwasher.op.inactive", "Inactive"),
48685
48819
  tone: "text-foreground-subtle"
48686
48820
  };
48687
- case void 0: return {
48821
+ case null: return {
48688
48822
  label: t("uiLibrary.dishwasher.unknown", "Unknown"),
48689
48823
  tone: "text-foreground-subtle"
48690
48824
  };
48691
48825
  }
48692
48826
  }
48827
+ /** The headline for the whole slice: the appliance's state, or why there is none. */
48828
+ function dishwasherHeadline(status, t = defaultUiText) {
48829
+ switch (status.availability) {
48830
+ case "offline": return {
48831
+ label: t("uiLibrary.dishwasher.offline", "Offline"),
48832
+ tone: "text-foreground-subtle"
48833
+ };
48834
+ case "description-missing": return {
48835
+ label: t("uiLibrary.dishwasher.descriptionMissing", "Waiting for the appliance profile"),
48836
+ tone: "text-warning"
48837
+ };
48838
+ case "available": return dishwasherOperationMeta(status.operationState, t);
48839
+ }
48840
+ }
48693
48841
  function consumableTone(level) {
48694
48842
  switch (level) {
48695
48843
  case "ok": return "text-success";
48696
48844
  case "low": return "text-warning";
48697
- case "empty": return "text-destructive";
48845
+ case "empty": return "text-danger";
48698
48846
  case null: return "text-foreground-subtle";
48699
48847
  }
48700
48848
  }
48849
+ /** Last segment of a feature key, spaced out: `Dishcare.Dishwasher.Program.Eco50` -> `Eco50`. */
48850
+ function featureLabel(key) {
48851
+ return (key.split(".").pop() ?? key).replace(/([a-z0-9])([A-Z])/g, "$1 $2");
48852
+ }
48853
+ /** Whole seconds as a short duration: `1 h 24 min`, `42 min`, `30 s`. */
48854
+ function formatDuration(seconds, t = defaultUiText) {
48855
+ if (seconds < 60) return t("uiLibrary.dishwasher.durationSeconds", "{{n}} s", { n: seconds });
48856
+ const minutes = Math.round(seconds / 60);
48857
+ if (minutes < 60) return t("uiLibrary.dishwasher.durationMinutes", "{{n}} min", { n: minutes });
48858
+ const hours = Math.floor(minutes / 60);
48859
+ const rest = minutes % 60;
48860
+ return rest === 0 ? t("uiLibrary.dishwasher.durationHours", "{{n}} h", { n: hours }) : t("uiLibrary.dishwasher.durationHoursMinutes", "{{h}} h {{m}} min", {
48861
+ h: hours,
48862
+ m: rest
48863
+ });
48864
+ }
48701
48865
  function useDishwasher(trpc, deviceId) {
48702
48866
  return useDeviceCapability({
48703
48867
  trpc,
@@ -48731,13 +48895,11 @@ function ConsumableBadge({ label, level }) {
48731
48895
  ]
48732
48896
  });
48733
48897
  }
48734
- function DishwasherGraphic({ state, progressPercent }) {
48735
- const running = state === "running";
48898
+ function DishwasherGraphic({ running, progressPercent }) {
48736
48899
  const pct = progressPercent != null ? Math.max(0, Math.min(100, progressPercent)) : running ? 40 : 0;
48737
48900
  return /* @__PURE__ */ jsxs("div", {
48738
48901
  "aria-hidden": "true",
48739
48902
  className: "relative w-28 h-36 rounded border-2 border-border bg-gradient-to-b from-surface-hover to-surface overflow-hidden flex-shrink-0",
48740
- style: { boxShadow: "inset 0 0 0 2px rgba(255,255,255,.06)" },
48741
48903
  children: [/* @__PURE__ */ jsx("div", {
48742
48904
  className: cn("absolute inset-x-0 bottom-0 bg-primary/25 transition-[height] duration-500", running && "animate-pulse"),
48743
48905
  style: { height: `${pct}%` }
@@ -48747,61 +48909,73 @@ function DishwasherGraphic({ state, progressPercent }) {
48747
48909
  })]
48748
48910
  });
48749
48911
  }
48750
- function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48912
+ function DishwasherPanel({ trpc, deviceId, layout }) {
48751
48913
  const t = useUiText();
48752
48914
  const { cap, slice, available } = useDishwasher(trpc, deviceId);
48753
- const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
48754
48915
  if (cap === void 0) return null;
48755
- if (display === void 0) return null;
48756
- const busy = !available;
48757
- const meta = dishwasherStateMeta(display.state, t);
48758
- const running = display.state === "running";
48759
- const paused = display.state === "paused";
48760
- const press = (fn, patch) => {
48916
+ if (slice === void 0) return null;
48917
+ const display = slice;
48918
+ const link = display.availability === "available";
48919
+ const busy = !available || !link;
48920
+ const optionTogglesLocked = display.childLock === true;
48921
+ const meta = dishwasherHeadline(display, t);
48922
+ const running = display.operationState === "Run";
48923
+ const paused = display.operationState === "Pause";
48924
+ const startable = display.remoteStartAllowed === true && display.selectedProgram !== null;
48925
+ const press = (fn) => {
48761
48926
  if (busy) return;
48762
- applyOptimistic(patch);
48763
48927
  fn();
48764
48928
  };
48765
- if (layout === "compact") return /* @__PURE__ */ jsxs("div", {
48766
- className: "inline-flex items-center gap-1",
48767
- children: [
48768
- display.doorOpen && /* @__PURE__ */ jsx("span", {
48769
- className: "inline-flex text-warning",
48770
- title: t("uiLibrary.dishwasher.doorOpen", "Door open"),
48771
- "aria-label": t("uiLibrary.dishwasher.doorOpen", "Door open"),
48772
- children: /* @__PURE__ */ jsx(DoorOpen, { className: "h-3.5 w-3.5" })
48773
- }),
48774
- /* @__PURE__ */ jsx("span", {
48775
- className: cn("text-xs font-medium tabular-nums", meta.tone),
48776
- children: meta.label
48777
- }),
48778
- display.remainingMinutes != null && /* @__PURE__ */ jsxs("span", {
48779
- className: "inline-flex items-center gap-0.5 text-xs text-foreground-subtle tabular-nums",
48780
- children: [
48781
- /* @__PURE__ */ jsx(Timer, { className: "h-3 w-3" }),
48782
- display.remainingMinutes,
48783
- "m"
48784
- ]
48785
- }),
48786
- /* @__PURE__ */ jsx(DishwasherIconButton, {
48787
- label: t("uiLibrary.dishwasher.start", "Start"),
48788
- busy: busy || !display.remoteStartAllowed,
48789
- active: running,
48790
- onClick: () => press(() => cap.start({}), {
48791
- state: "running",
48792
- remoteStartAllowed: false
48929
+ if (layout === "compact") {
48930
+ const saltWarn = display.saltLevel === "low" || display.saltLevel === "empty";
48931
+ const rinseWarn = display.rinseAidLevel === "low" || display.rinseAidLevel === "empty";
48932
+ return /* @__PURE__ */ jsxs("div", {
48933
+ className: "inline-flex items-center gap-1.5 max-w-full",
48934
+ children: [
48935
+ display.doorOpen === true && /* @__PURE__ */ jsx("span", {
48936
+ className: "inline-flex text-warning shrink-0",
48937
+ title: t("uiLibrary.dishwasher.doorOpen", "Door open"),
48938
+ "aria-label": t("uiLibrary.dishwasher.doorOpen", "Door open"),
48939
+ children: /* @__PURE__ */ jsx(DoorOpen, { className: "h-3.5 w-3.5" })
48793
48940
  }),
48794
- children: /* @__PURE__ */ jsx(Play, { className: "h-3 w-3" })
48795
- }),
48796
- /* @__PURE__ */ jsx(DishwasherIconButton, {
48797
- label: t("uiLibrary.dishwasher.pause", "Pause"),
48798
- busy: busy || !running,
48799
- active: paused,
48800
- onClick: () => press(() => cap.pause({}), { state: "paused" }),
48801
- children: /* @__PURE__ */ jsx(Pause, { className: "h-3 w-3" })
48802
- })
48803
- ]
48804
- });
48941
+ /* @__PURE__ */ jsx("span", {
48942
+ className: cn("text-xs font-medium tabular-nums shrink-0", meta.tone),
48943
+ children: meta.label
48944
+ }),
48945
+ display.program != null && /* @__PURE__ */ jsx("span", {
48946
+ className: "text-xs text-foreground-subtle truncate max-w-[7rem]",
48947
+ title: display.program,
48948
+ children: featureLabel(display.program)
48949
+ }),
48950
+ display.remainingSeconds != null && /* @__PURE__ */ jsxs("span", {
48951
+ className: "inline-flex items-center gap-0.5 text-xs text-foreground-subtle tabular-nums shrink-0",
48952
+ children: [/* @__PURE__ */ jsx(Timer, { className: "h-3 w-3" }), formatDuration(display.remainingSeconds, t)]
48953
+ }),
48954
+ saltWarn && /* @__PURE__ */ jsx("span", {
48955
+ className: cn("text-[10px] font-medium shrink-0", consumableTone(display.saltLevel)),
48956
+ children: t("uiLibrary.dishwasher.salt", "Salt")
48957
+ }),
48958
+ rinseWarn && /* @__PURE__ */ jsx("span", {
48959
+ className: cn("text-[10px] font-medium shrink-0", consumableTone(display.rinseAidLevel)),
48960
+ children: t("uiLibrary.dishwasher.rinseAid", "Rinse")
48961
+ }),
48962
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48963
+ label: t("uiLibrary.dishwasher.start", "Start"),
48964
+ busy: busy || !startable,
48965
+ active: running,
48966
+ onClick: () => press(() => cap.start({})),
48967
+ children: /* @__PURE__ */ jsx(Play, { className: "h-3 w-3" })
48968
+ }),
48969
+ /* @__PURE__ */ jsx(DishwasherIconButton, {
48970
+ label: paused ? t("uiLibrary.dishwasher.resume", "Resume") : t("uiLibrary.dishwasher.pause", "Pause"),
48971
+ busy: busy || !(running || paused),
48972
+ active: paused,
48973
+ onClick: () => press(() => paused ? cap.resume({}) : cap.pause({})),
48974
+ children: /* @__PURE__ */ jsx(Pause, { className: "h-3 w-3" })
48975
+ })
48976
+ ]
48977
+ });
48978
+ }
48805
48979
  const programs = display.availablePrograms;
48806
48980
  return /* @__PURE__ */ jsxs("div", {
48807
48981
  className: "flex flex-col gap-3 rounded-lg border border-border bg-surface p-4",
@@ -48809,7 +48983,7 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48809
48983
  /* @__PURE__ */ jsxs("div", {
48810
48984
  className: "flex items-start gap-4",
48811
48985
  children: [/* @__PURE__ */ jsx(DishwasherGraphic, {
48812
- state: display.state,
48986
+ running,
48813
48987
  progressPercent: display.progressPercent
48814
48988
  }), /* @__PURE__ */ jsxs("div", {
48815
48989
  className: "flex min-w-0 flex-1 flex-col gap-2",
@@ -48819,14 +48993,23 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48819
48993
  children: [/* @__PURE__ */ jsx("span", {
48820
48994
  className: cn("text-3xl font-semibold", meta.tone),
48821
48995
  children: meta.label
48822
- }), !display.powerOn && /* @__PURE__ */ jsx("span", {
48996
+ }), display.powerOn === false && /* @__PURE__ */ jsx("span", {
48823
48997
  className: "text-xs font-medium text-foreground-subtle",
48824
48998
  children: t("uiLibrary.dishwasher.powerOff", "Power off")
48825
48999
  })]
48826
49000
  }),
48827
49001
  display.program != null && /* @__PURE__ */ jsx("span", {
48828
49002
  className: "text-sm text-foreground-subtle",
48829
- children: display.program
49003
+ title: display.program,
49004
+ children: featureLabel(display.program)
49005
+ }),
49006
+ display.remainingSeconds != null && /* @__PURE__ */ jsxs("span", {
49007
+ className: "inline-flex items-center gap-1 text-sm text-foreground-subtle tabular-nums",
49008
+ children: [/* @__PURE__ */ jsx(Timer, { className: "h-3.5 w-3.5" }), t("uiLibrary.dishwasher.remaining", "{{time}} left", { time: formatDuration(display.remainingSeconds, t) })]
49009
+ }),
49010
+ display.delayedStartSeconds != null && display.delayedStartSeconds > 0 && /* @__PURE__ */ jsx("span", {
49011
+ className: "text-xs text-foreground-subtle tabular-nums",
49012
+ children: t("uiLibrary.dishwasher.startsIn", "Starts in {{time}}", { time: formatDuration(display.delayedStartSeconds, t) })
48830
49013
  }),
48831
49014
  display.progressPercent != null && /* @__PURE__ */ jsxs("div", {
48832
49015
  className: "flex items-center gap-2",
@@ -48852,53 +49035,52 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48852
49035
  label: t("uiLibrary.dishwasher.rinseAid", "Rinse aid"),
48853
49036
  level: display.rinseAidLevel
48854
49037
  }),
48855
- display.doorOpen && /* @__PURE__ */ jsxs("span", {
49038
+ display.doorOpen === true && /* @__PURE__ */ jsxs("span", {
48856
49039
  className: "inline-flex items-center gap-1 text-xs text-warning",
48857
49040
  children: [/* @__PURE__ */ jsx(DoorOpen, { className: "h-3.5 w-3.5" }), t("uiLibrary.dishwasher.doorOpen", "Door open")]
48858
- })
49041
+ }),
49042
+ display.activeEvents.map((event) => /* @__PURE__ */ jsx("span", {
49043
+ className: "text-xs text-warning",
49044
+ title: event,
49045
+ children: featureLabel(event)
49046
+ }, event))
48859
49047
  ]
48860
49048
  }),
48861
- display.errorCode != null && display.errorCode !== 0 && /* @__PURE__ */ jsxs("div", {
48862
- className: "inline-flex items-center gap-1 text-xs text-destructive",
48863
- children: [/* @__PURE__ */ jsx(TriangleAlert, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ jsx("span", { children: display.errorLabel ?? t("uiLibrary.dishwasher.errorCode", "Error {{code}}", { code: display.errorCode }) })]
49049
+ display.operationState === "Error" && /* @__PURE__ */ jsxs("div", {
49050
+ className: "inline-flex items-center gap-1 text-xs text-danger",
49051
+ children: [/* @__PURE__ */ jsx(TriangleAlert, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ jsx("span", { children: display.errorLabel != null ? featureLabel(display.errorLabel) : display.errorCode != null ? t("uiLibrary.dishwasher.errorCode", "Error {{code}}", { code: display.errorCode }) : t("uiLibrary.dishwasher.op.error", "Error") })]
48864
49052
  }),
48865
49053
  /* @__PURE__ */ jsxs("div", {
48866
49054
  className: "flex flex-wrap items-center gap-2",
48867
49055
  children: [
48868
49056
  /* @__PURE__ */ jsx(DishwasherIconButton, {
48869
49057
  label: t("uiLibrary.dishwasher.start", "Start"),
48870
- busy: busy || !display.remoteStartAllowed,
49058
+ busy: busy || !startable,
48871
49059
  active: running,
48872
- onClick: () => press(() => cap.start({}), {
48873
- state: "running",
48874
- remoteStartAllowed: false
48875
- }),
49060
+ onClick: () => press(() => cap.start({})),
48876
49061
  children: /* @__PURE__ */ jsx(Play, { className: "h-4 w-4" })
48877
49062
  }),
48878
49063
  /* @__PURE__ */ jsx(DishwasherIconButton, {
48879
- label: t("uiLibrary.dishwasher.pause", "Pause"),
48880
- busy: busy || !running,
49064
+ label: paused ? t("uiLibrary.dishwasher.resume", "Resume") : t("uiLibrary.dishwasher.pause", "Pause"),
49065
+ busy: busy || !(running || paused),
48881
49066
  active: paused,
48882
- onClick: () => press(() => cap.pause({}), { state: "paused" }),
49067
+ onClick: () => press(() => paused ? cap.resume({}) : cap.pause({})),
48883
49068
  children: /* @__PURE__ */ jsx(Pause, { className: "h-4 w-4" })
48884
49069
  }),
48885
49070
  /* @__PURE__ */ jsx(DishwasherIconButton, {
48886
49071
  label: t("uiLibrary.dishwasher.stop", "Stop"),
48887
- busy,
49072
+ busy: busy || !(running || paused),
48888
49073
  active: false,
48889
- onClick: () => press(() => cap.stop({}), {
48890
- state: "idle",
48891
- remainingMinutes: null
48892
- }),
49074
+ onClick: () => press(() => cap.stop({})),
48893
49075
  children: /* @__PURE__ */ jsx(Square, { className: "h-3.5 w-3.5" })
48894
49076
  }),
48895
49077
  /* @__PURE__ */ jsx(DishwasherIconButton, {
48896
49078
  label: t("uiLibrary.dishwasher.power", "Power"),
48897
- busy,
48898
- active: display.powerOn,
49079
+ busy: busy || display.powerOn === null,
49080
+ active: display.powerOn === true,
48899
49081
  onClick: () => {
48900
- const next = !display.powerOn;
48901
- press(() => cap.setPower({ on: next }), { powerOn: next });
49082
+ const next = display.powerOn !== true;
49083
+ press(() => cap.setPower({ on: next }));
48902
49084
  },
48903
49085
  children: /* @__PURE__ */ jsx(Power, { className: "h-4 w-4" })
48904
49086
  })
@@ -48914,65 +49096,106 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48914
49096
  children: t("uiLibrary.dishwasher.program", "Program")
48915
49097
  }), /* @__PURE__ */ jsxs("select", {
48916
49098
  "aria-label": t("uiLibrary.dishwasher.program", "Program"),
48917
- value: display.program ?? "",
49099
+ value: display.selectedProgram ?? "",
48918
49100
  disabled: busy,
48919
49101
  onChange: (e) => {
48920
49102
  const program = e.target.value;
48921
49103
  if (!program) return;
48922
- applyOptimistic({ program });
48923
49104
  cap.setProgram({ program });
48924
49105
  },
48925
49106
  onClick: (e) => {
48926
49107
  e.stopPropagation();
48927
49108
  },
48928
49109
  className: "flex-1 rounded border border-border bg-surface px-2 py-1 text-foreground disabled:opacity-50",
48929
- children: [display.program == null && /* @__PURE__ */ jsx("option", {
49110
+ children: [display.selectedProgram == null && /* @__PURE__ */ jsx("option", {
48930
49111
  value: "",
48931
49112
  children: "—"
48932
49113
  }), programs.map((p) => /* @__PURE__ */ jsx("option", {
48933
49114
  value: p,
48934
- children: p
49115
+ children: featureLabel(p)
48935
49116
  }, p))]
48936
49117
  })]
48937
49118
  }),
48938
49119
  /* @__PURE__ */ jsxs("div", {
48939
49120
  className: "flex flex-wrap gap-4 text-xs",
48940
- children: [/* @__PURE__ */ jsx(ToggleRow, {
48941
- label: t("uiLibrary.dishwasher.halfLoad", "Half load"),
48942
- checked: display.halfLoad,
48943
- busy,
48944
- onChange: (on) => {
48945
- applyOptimistic({ halfLoad: on });
48946
- cap.setHalfLoad({ on });
48947
- }
48948
- }), /* @__PURE__ */ jsx(ToggleRow, {
48949
- label: t("uiLibrary.dishwasher.hygienePlus", "Hygiene plus"),
48950
- checked: display.hygienePlus,
48951
- busy,
48952
- onChange: (on) => {
48953
- applyOptimistic({ hygienePlus: on });
48954
- cap.setHygienePlus({ on });
48955
- }
48956
- })]
49121
+ children: [
49122
+ /* @__PURE__ */ jsx(ToggleRow, {
49123
+ label: t("uiLibrary.dishwasher.halfLoad", "Half load"),
49124
+ checked: display.halfLoad,
49125
+ shown: link,
49126
+ busy: busy || optionTogglesLocked,
49127
+ onChange: (on) => void cap.setHalfLoad({ on })
49128
+ }),
49129
+ /* @__PURE__ */ jsx(ToggleRow, {
49130
+ label: t("uiLibrary.dishwasher.hygienePlus", "Hygiene plus"),
49131
+ checked: display.hygienePlus,
49132
+ shown: link,
49133
+ busy: busy || optionTogglesLocked,
49134
+ onChange: (on) => void cap.setHygienePlus({ on })
49135
+ }),
49136
+ /* @__PURE__ */ jsx(ToggleRow, {
49137
+ label: t("uiLibrary.dishwasher.extraDry", "Extra dry"),
49138
+ checked: display.extraDry,
49139
+ shown: link,
49140
+ busy: busy || optionTogglesLocked,
49141
+ onChange: (on) => void cap.setExtraDry({ on })
49142
+ }),
49143
+ /* @__PURE__ */ jsx(ToggleRow, {
49144
+ label: t("uiLibrary.dishwasher.intensiveZone", "Intensive zone"),
49145
+ checked: display.intensiveZone,
49146
+ shown: link,
49147
+ busy: busy || optionTogglesLocked,
49148
+ onChange: (on) => void cap.setIntensiveZone({ on })
49149
+ }),
49150
+ /* @__PURE__ */ jsx(ToggleRow, {
49151
+ label: t("uiLibrary.dishwasher.varioSpeedPlus", "VarioSpeed+"),
49152
+ checked: display.varioSpeedPlus,
49153
+ shown: link,
49154
+ busy: busy || optionTogglesLocked,
49155
+ onChange: (on) => void cap.setVarioSpeedPlus({ on })
49156
+ }),
49157
+ /* @__PURE__ */ jsx(ToggleRow, {
49158
+ label: t("uiLibrary.dishwasher.childLock", "Child lock"),
49159
+ checked: display.childLock,
49160
+ shown: link,
49161
+ busy,
49162
+ onChange: (on) => void cap.setChildLock({ on })
49163
+ })
49164
+ ]
48957
49165
  })
48958
49166
  ]
48959
49167
  });
48960
49168
  }
48961
- function ToggleRow({ label, checked, busy, onChange }) {
49169
+ /**
49170
+ * One boolean setting. `checked === null` is "the appliance has not said": on a reachable
49171
+ * appliance that means it does not offer the setting (hidden); on an unreachable one the
49172
+ * setting is shown but disabled and marked unknown — never as an unchecked box.
49173
+ */
49174
+ function ToggleRow({ label, checked, shown, busy, onChange }) {
49175
+ const t = useUiText();
49176
+ if (checked === null && shown) return null;
48962
49177
  return /* @__PURE__ */ jsxs("label", {
48963
49178
  className: "inline-flex items-center gap-2 cursor-pointer",
48964
- children: [/* @__PURE__ */ jsx("input", {
48965
- type: "checkbox",
48966
- checked,
48967
- disabled: busy,
48968
- onChange: (e) => {
48969
- onChange(e.target.checked);
48970
- },
48971
- onClick: (e) => {
48972
- e.stopPropagation();
48973
- },
48974
- className: "rounded border-border"
48975
- }), /* @__PURE__ */ jsx("span", { children: label })]
49179
+ children: [
49180
+ /* @__PURE__ */ jsx("input", {
49181
+ type: "checkbox",
49182
+ checked: checked === true,
49183
+ "aria-checked": checked === null ? "mixed" : checked,
49184
+ disabled: busy || checked === null,
49185
+ onChange: (e) => {
49186
+ onChange(e.target.checked);
49187
+ },
49188
+ onClick: (e) => {
49189
+ e.stopPropagation();
49190
+ },
49191
+ className: "rounded border-border"
49192
+ }),
49193
+ /* @__PURE__ */ jsx("span", { children: label }),
49194
+ checked === null && /* @__PURE__ */ jsx("span", {
49195
+ className: "text-foreground-subtle",
49196
+ children: t("uiLibrary.dishwasher.unknownValue", "—")
49197
+ })
49198
+ ]
48976
49199
  });
48977
49200
  }
48978
49201
  function DishwasherInlineControl(props) {
@@ -54604,88 +54827,6 @@ function PageSizeSelect({ value, options, onChange, ariaLabel }) {
54604
54827
  });
54605
54828
  }
54606
54829
  //#endregion
54607
- //#region src/composites/device-list/multi-select.tsx
54608
- /**
54609
- * Compact multi-select dropdown — a single chip-sized trigger ("Label · N")
54610
- * that opens a checklist. Self-contained (outside-click / Escape dismiss), so
54611
- * it stays compressed regardless of how many options exist or how little
54612
- * horizontal room the container has. Shared by the device list's generic-mode
54613
- * type filter and any other multi-select needs.
54614
- */
54615
- function MultiSelectDropdown({ label, options, selected, onChange }) {
54616
- const t = useUiText();
54617
- const [open, setOpen] = useState(false);
54618
- const rootRef = useRef(null);
54619
- useEffect(() => {
54620
- if (!open) return;
54621
- const onOutside = (e) => {
54622
- const target = e.target instanceof Node ? e.target : null;
54623
- if (target && rootRef.current && !rootRef.current.contains(target)) setOpen(false);
54624
- };
54625
- const onKey = (e) => {
54626
- if (e.key === "Escape") setOpen(false);
54627
- };
54628
- document.addEventListener("mousedown", onOutside);
54629
- document.addEventListener("touchstart", onOutside);
54630
- document.addEventListener("keydown", onKey);
54631
- return () => {
54632
- document.removeEventListener("mousedown", onOutside);
54633
- document.removeEventListener("touchstart", onOutside);
54634
- document.removeEventListener("keydown", onKey);
54635
- };
54636
- }, [open]);
54637
- const selectedSet = new Set(selected);
54638
- const count = selected.length;
54639
- const toggle = (id) => {
54640
- const next = new Set(selectedSet);
54641
- if (next.has(id)) next.delete(id);
54642
- else next.add(id);
54643
- onChange(options.filter((o) => next.has(o.id)).map((o) => o.id));
54644
- };
54645
- return /* @__PURE__ */ jsxs("div", {
54646
- ref: rootRef,
54647
- className: "relative",
54648
- children: [/* @__PURE__ */ jsxs("button", {
54649
- type: "button",
54650
- onClick: () => setOpen((v) => !v),
54651
- "aria-haspopup": "listbox",
54652
- "aria-expanded": open,
54653
- className: `inline-flex items-center gap-1.5 h-7 px-2.5 rounded-full border text-[10.5px] font-medium transition-colors ${count > 0 ? "border-primary/40 bg-primary/15 text-primary" : "border-border bg-surface text-foreground-subtle hover:text-foreground hover:bg-surface-hover"}`,
54654
- children: [/* @__PURE__ */ jsxs("span", { children: [label, count > 0 ? ` · ${String(count)}` : ""] }), /* @__PURE__ */ jsx(ChevronDown, { className: `h-3 w-3 transition-transform ${open ? "rotate-180" : ""}` })]
54655
- }), open && /* @__PURE__ */ jsxs("div", {
54656
- role: "listbox",
54657
- className: "absolute left-0 top-full mt-1 z-30 min-w-[180px] max-h-72 overflow-y-auto rounded-lg border border-border bg-surface shadow-xl py-1",
54658
- children: [count > 0 && /* @__PURE__ */ jsx("button", {
54659
- type: "button",
54660
- onClick: () => onChange([]),
54661
- className: "flex w-full items-center px-3 py-1.5 text-left text-[10.5px] text-foreground-subtle hover:bg-surface-hover hover:text-foreground",
54662
- children: t("uiLibrary.multiSelect.clear", "Clear selection")
54663
- }), options.map((o) => {
54664
- const active = selectedSet.has(o.id);
54665
- const Icon = o.icon;
54666
- return /* @__PURE__ */ jsxs("button", {
54667
- type: "button",
54668
- role: "option",
54669
- "aria-selected": active,
54670
- onClick: () => toggle(o.id),
54671
- className: "flex w-full items-center gap-2 px-3 py-1.5 text-left text-[10.5px] text-foreground hover:bg-surface-hover",
54672
- children: [
54673
- /* @__PURE__ */ jsx("span", {
54674
- className: `flex h-3.5 w-3.5 items-center justify-center rounded border shrink-0 ${active ? "border-primary bg-primary" : "border-border"}`,
54675
- children: active && /* @__PURE__ */ jsx(Check, { className: "h-2.5 w-2.5 text-primary-foreground" })
54676
- }),
54677
- Icon && /* @__PURE__ */ jsx(Icon, { className: "h-3.5 w-3.5 shrink-0 text-foreground-subtle" }),
54678
- /* @__PURE__ */ jsx("span", {
54679
- className: "truncate",
54680
- children: o.label
54681
- })
54682
- ]
54683
- }, o.id);
54684
- })]
54685
- })]
54686
- });
54687
- }
54688
- //#endregion
54689
54830
  //#region src/composites/device-list/type-filter.tsx
54690
54831
  /**
54691
54832
  * Shared, multi-select type filter that adapts to its OWN available width
@@ -59378,19 +59519,35 @@ function objectFromJson(text) {
59378
59519
  return null;
59379
59520
  }
59380
59521
  }
59381
- function RecordEntrySecretField({ label, required, value, disabled, onPatch }) {
59382
- const [shown, setShown] = useState(false);
59383
- const stored = isRedactedSecret(value);
59522
+ /**
59523
+ * What the secret control is hydrated with. A read hands a stored secret as a
59524
+ * VIEW (`{ $secret: <row ref>, set: true }`) the control reveals by ref through
59525
+ * the host's audited reveal; the legacy redaction token is "set, no ref" (it
59526
+ * can be replaced but not revealed); anything else is "nothing stored".
59527
+ */
59528
+ function hydratedSecret(value) {
59529
+ if (isSecretFieldView(value) || isSecretClear(value)) return value;
59530
+ if (isRedactedSecret(value)) return {
59531
+ $secret: null,
59532
+ v: 1,
59533
+ set: true
59534
+ };
59535
+ return null;
59536
+ }
59537
+ function RecordEntrySecretField({ name, label, required, value, disabled, onPatch }) {
59384
59538
  return /* @__PURE__ */ jsx(FormField$1, {
59385
59539
  label,
59386
59540
  required,
59387
- children: /* @__PURE__ */ jsx(PasswordInput, {
59388
- value: secretDisplayValue(value),
59389
- onValueChange: (text) => onPatch(mergeSecretForSubmit(text, value)),
59390
- shown,
59391
- onToggleShown: () => setShown((s) => !s),
59392
- disabled,
59393
- placeholder: stored ? SECRET_MASK_PLACEHOLDER : `Enter ${label.toLowerCase()}`
59541
+ children: /* @__PURE__ */ jsx(SecretFieldControl, {
59542
+ field: {
59543
+ type: "password",
59544
+ key: name,
59545
+ label,
59546
+ required
59547
+ },
59548
+ value: hydratedSecret(value),
59549
+ onChange: onPatch,
59550
+ disabled
59394
59551
  })
59395
59552
  });
59396
59553
  }
@@ -59398,6 +59555,7 @@ function SchemaField(props) {
59398
59555
  const { path, name, node, value, secretPaths, required, disabled, onPatch } = props;
59399
59556
  const label = labelFor(name, node);
59400
59557
  if (isSecretField(path, secretPaths, node)) return /* @__PURE__ */ jsx(RecordEntrySecretField, {
59558
+ name,
59401
59559
  label,
59402
59560
  required,
59403
59561
  value,
@@ -59547,7 +59705,7 @@ function defaultBody(schema) {
59547
59705
  }
59548
59706
  return out;
59549
59707
  }
59550
- function RecordEntriesPanel({ kind }) {
59708
+ function RecordEntriesPanel({ kind, rowActions, extraColumns = [], showUpdated = true, minWidthPx }) {
59551
59709
  const t = useUiText();
59552
59710
  const queryClient = useQueryClient();
59553
59711
  const confirm = useConfirm();
@@ -59620,41 +59778,51 @@ function RecordEntriesPanel({ kind }) {
59620
59778
  })
59621
59779
  })
59622
59780
  },
59623
- {
59781
+ ...showUpdated ? [{
59624
59782
  key: "updated",
59625
59783
  header: t("uiLibrary.recordEntries.colUpdated", "Updated"),
59626
59784
  nowrap: true,
59627
59785
  render: (row) => /* @__PURE__ */ jsx("span", {
59628
59786
  className: "text-[11px] text-foreground-subtle",
59629
- children: new Date(row.updatedAt).toLocaleString()
59787
+ title: new Date(row.updatedAt).toLocaleString(),
59788
+ children: new Date(row.updatedAt).toLocaleDateString()
59630
59789
  })
59631
- },
59790
+ }] : [],
59791
+ ...extraColumns,
59632
59792
  {
59633
59793
  key: "actions",
59634
59794
  header: "",
59635
59795
  align: "right",
59636
59796
  nowrap: true,
59797
+ width: "w-px",
59637
59798
  render: (row) => /* @__PURE__ */ jsxs("span", {
59638
59799
  className: "flex justify-end gap-1",
59639
- children: [/* @__PURE__ */ jsx(Button, {
59640
- size: "sm",
59641
- variant: "ghost",
59642
- type: "button",
59643
- onClick: () => openEdit(row),
59644
- children: /* @__PURE__ */ jsx(Pencil, { className: "h-3.5 w-3.5" })
59645
- }), /* @__PURE__ */ jsx(Button, {
59646
- size: "sm",
59647
- variant: "ghost",
59648
- type: "button",
59649
- onClick: () => void onDelete(row),
59650
- children: /* @__PURE__ */ jsx(Trash2, { className: "h-3.5 w-3.5 text-danger" })
59651
- })]
59800
+ children: [
59801
+ rowActions?.(row),
59802
+ /* @__PURE__ */ jsx(Button, {
59803
+ size: "sm",
59804
+ variant: "ghost",
59805
+ type: "button",
59806
+ onClick: () => openEdit(row),
59807
+ children: /* @__PURE__ */ jsx(Pencil, { className: "h-3.5 w-3.5" })
59808
+ }),
59809
+ /* @__PURE__ */ jsx(Button, {
59810
+ size: "sm",
59811
+ variant: "ghost",
59812
+ type: "button",
59813
+ onClick: () => void onDelete(row),
59814
+ children: /* @__PURE__ */ jsx(Trash2, { className: "h-3.5 w-3.5 text-danger" })
59815
+ })
59816
+ ]
59652
59817
  })
59653
59818
  }
59654
59819
  ];
59655
59820
  }, [
59821
+ extraColumns,
59656
59822
  onDelete,
59657
59823
  openEdit,
59824
+ rowActions,
59825
+ showUpdated,
59658
59826
  t
59659
59827
  ]);
59660
59828
  const dialogOpen = formUrl.state.mode !== "closed";
@@ -59702,6 +59870,7 @@ function RecordEntriesPanel({ kind }) {
59702
59870
  title: t("uiLibrary.recordEntries.emptyTitle", "No entries yet"),
59703
59871
  description: t("uiLibrary.recordEntries.emptyDescription", "Add the first row for this kind.")
59704
59872
  }) : /* @__PURE__ */ jsx(DataTable, {
59873
+ ...minWidthPx !== void 0 ? { minWidthPx } : {},
59705
59874
  columns,
59706
59875
  rows: entries,
59707
59876
  rowKey: (r) => r.id,
@@ -59732,73 +59901,6 @@ function RecordEntriesPanel({ kind }) {
59732
59901
  });
59733
59902
  }
59734
59903
  //#endregion
59735
- //#region src/composites/record-entries/record-entries-hub.tsx
59736
- var RECORD_ENTRY_OWNER_PARAM = "entryOwner";
59737
- var RECORD_ENTRY_KIND_PARAM = "entryKind";
59738
- function kindKey$1(k) {
59739
- return `${k.owner}/${k.kind}`;
59740
- }
59741
- function RecordEntriesHub({ filter }) {
59742
- const t = useUiText();
59743
- const kindsQuery = useRecordEntriesListEntryKinds({}, { staleTime: 3e4 });
59744
- const [ownerParam, setOwner] = useUrlQueryParam(RECORD_ENTRY_OWNER_PARAM);
59745
- const [kindParam, setKind] = useUrlQueryParam(RECORD_ENTRY_KIND_PARAM);
59746
- const kinds = useMemo(() => {
59747
- return (kindsQuery.data?.kinds ?? []).filter((k) => {
59748
- if (filter?.owner !== void 0 && k.owner !== filter.owner) return false;
59749
- if (filter?.kind !== void 0 && k.kind !== filter.kind) return false;
59750
- return true;
59751
- });
59752
- }, [
59753
- filter?.kind,
59754
- filter?.owner,
59755
- kindsQuery.data?.kinds
59756
- ]);
59757
- const active = useMemo(() => {
59758
- if (kinds.length === 0) return null;
59759
- return kinds.find((k) => k.owner === ownerParam && k.kind === kindParam) ?? kinds[0] ?? null;
59760
- }, [
59761
- kindParam,
59762
- kinds,
59763
- ownerParam
59764
- ]);
59765
- const selectKind = (k) => {
59766
- setOwner(k.owner);
59767
- setKind(k.kind);
59768
- };
59769
- if (kindsQuery.isError) return /* @__PURE__ */ jsx(ErrorBox, { message: kindsQuery.error instanceof Error ? kindsQuery.error.message : t("uiLibrary.recordEntries.kindsFailed", "Could not load entry kinds") });
59770
- if (kindsQuery.isPending) return /* @__PURE__ */ jsx("div", {
59771
- className: "flex justify-center py-10 text-foreground-subtle",
59772
- children: /* @__PURE__ */ jsx(LoaderCircle, { className: "h-5 w-5 animate-spin" })
59773
- });
59774
- if (kinds.length === 0) return /* @__PURE__ */ jsx(EmptyState, {
59775
- title: t("uiLibrary.recordEntries.noKindsTitle", "No entry kinds"),
59776
- description: t("uiLibrary.recordEntries.noKindsDescription", "No addon has declared an entry record kind yet.")
59777
- });
59778
- const activeKey = active === null ? "" : kindKey$1(active);
59779
- return /* @__PURE__ */ jsxs("div", {
59780
- className: "space-y-4",
59781
- children: [kinds.length > 1 && /* @__PURE__ */ jsx(Tabs, {
59782
- appearance: "pills",
59783
- value: activeKey,
59784
- onValueChange: (key) => {
59785
- const found = kinds.find((k) => kindKey$1(k) === key);
59786
- if (found !== void 0) selectKind(found);
59787
- },
59788
- children: /* @__PURE__ */ jsx(TabsList, {
59789
- className: "flex flex-wrap gap-1",
59790
- children: kinds.map((k) => /* @__PURE__ */ jsxs(TabsTrigger, {
59791
- value: kindKey$1(k),
59792
- children: [k.title, k.rows > 0 ? ` (${k.rows})` : ""]
59793
- }, kindKey$1(k)))
59794
- })
59795
- }), active !== null && /* @__PURE__ */ jsxs("div", { children: [kinds.length === 1 && /* @__PURE__ */ jsx("h3", {
59796
- className: "mb-2 text-sm font-semibold text-foreground",
59797
- children: active.title
59798
- }), /* @__PURE__ */ jsx(RecordEntriesPanel, { kind: active })] })]
59799
- });
59800
- }
59801
- //#endregion
59802
59904
  //#region src/composites/storage-records/storage-records-panel.tsx
59803
59905
  function StorageRecordsPanel({ kind }) {
59804
59906
  const t = useUiText();
@@ -59922,47 +60024,143 @@ function StorageRecordsPanel({ kind }) {
59922
60024
  });
59923
60025
  }
59924
60026
  //#endregion
59925
- //#region src/composites/storage-records/storage-records-hub.tsx
59926
- var STORAGE_RECORDS_OWNER_PARAM = "recordsOwner";
59927
- var STORAGE_RECORDS_KIND_PARAM = "recordsKind";
59928
- function kindKey(k) {
59929
- return `${k.owner}/${k.kind}`;
60027
+ //#region src/composites/data-records/data-records-model.ts
60028
+ function dataRecordKey(kind) {
60029
+ return `${kind.owner}/${kind.kind}`;
60030
+ }
60031
+ function dataRecordType(kind) {
60032
+ return kind.entry ? "entry" : "record";
59930
60033
  }
60034
+ /** `unknown` is a kind whose count was not asked for or could not be read — never "empty". */
60035
+ function dataRecordContents(kind) {
60036
+ if (kind.rows === null) return "unknown";
60037
+ return kind.rows > 0 ? "has-rows" : "empty";
60038
+ }
60039
+ /**
60040
+ * Join the declared kinds with the entry catalog. A pending/failed catalog
60041
+ * (`undefined`) leaves titles `null`; it never changes which kinds are listed.
60042
+ */
60043
+ function buildDataRecordRows(kinds, entryKinds) {
60044
+ const titles = /* @__PURE__ */ new Map();
60045
+ for (const entry of entryKinds ?? []) titles.set(dataRecordKey(entry), entry.title);
60046
+ return kinds.map((kind) => ({
60047
+ kind,
60048
+ entryTitle: kind.entry ? titles.get(dataRecordKey(kind)) ?? null : null
60049
+ }));
60050
+ }
60051
+ var DATA_RECORD_FACET_GROUPS = [
60052
+ {
60053
+ id: "kind",
60054
+ value: (row) => dataRecordKey(row.kind)
60055
+ },
60056
+ {
60057
+ id: "owner",
60058
+ value: (row) => row.kind.owner
60059
+ },
60060
+ {
60061
+ id: "type",
60062
+ value: (row) => dataRecordType(row.kind)
60063
+ },
60064
+ {
60065
+ id: "database",
60066
+ value: (row) => row.kind.database
60067
+ },
60068
+ {
60069
+ id: "class",
60070
+ value: (row) => row.kind.class
60071
+ },
60072
+ {
60073
+ id: "state",
60074
+ value: (row) => row.kind.state
60075
+ },
60076
+ {
60077
+ id: "contents",
60078
+ value: (row) => dataRecordContents(row.kind)
60079
+ }
60080
+ ];
60081
+ function dataRecordSearchText(row) {
60082
+ const { kind } = row;
60083
+ return [
60084
+ kind.owner,
60085
+ kind.kind,
60086
+ kind.class,
60087
+ kind.database,
60088
+ kind.state,
60089
+ row.entryTitle ?? ""
60090
+ ];
60091
+ }
60092
+ //#endregion
60093
+ //#region src/composites/data-records/data-records-hub.tsx
60094
+ var DATA_RECORDS_OWNER_PARAM = "recordsOwner";
60095
+ var DATA_RECORDS_KIND_PARAM = "recordsKind";
59931
60096
  function formatBytes(n) {
59932
60097
  if (n === null) return "—";
59933
60098
  if (n < 1024) return `${n} B`;
59934
60099
  if (n < 1024 * 1024) return `${(n / 1024).toFixed(1)} KiB`;
59935
60100
  return `${(n / (1024 * 1024)).toFixed(1)} MiB`;
59936
60101
  }
59937
- function StorageRecordsHub() {
60102
+ function groupLabel(id, t) {
60103
+ switch (id) {
60104
+ case "kind": return t("uiLibrary.dataRecords.facetKind", "Kind");
60105
+ case "owner": return t("uiLibrary.dataRecords.facetOwner", "Owner");
60106
+ case "type": return t("uiLibrary.dataRecords.facetType", "Type");
60107
+ case "database": return t("uiLibrary.dataRecords.facetDatabase", "Database");
60108
+ case "class": return t("uiLibrary.dataRecords.facetClass", "Class");
60109
+ case "state": return t("uiLibrary.dataRecords.facetState", "State");
60110
+ default: return t("uiLibrary.dataRecords.facetContents", "Contents");
60111
+ }
60112
+ }
60113
+ function facetCaption(groupId, value, t) {
60114
+ if (groupId === "type") return value === "entry" ? t("uiLibrary.dataRecords.typeEntry", "Entries (editable)") : t("uiLibrary.dataRecords.typeRecord", "Records (read-only)");
60115
+ if (groupId === "contents") {
60116
+ if (value === "has-rows") return t("uiLibrary.dataRecords.contentsHasRows", "Has rows");
60117
+ if (value === "empty") return t("uiLibrary.dataRecords.contentsEmpty", "Empty");
60118
+ return t("uiLibrary.dataRecords.contentsUnknown", "Count unknown");
60119
+ }
60120
+ return value;
60121
+ }
60122
+ /** Entry kinds open the editable list; every other kind opens the read-only preview. */
60123
+ function KindDetail({ kind, entryKinds, entryKindsPending, entryKindsError }) {
60124
+ const t = useUiText();
60125
+ if (!kind.entry) return /* @__PURE__ */ jsx(StorageRecordsPanel, { kind });
60126
+ if (entryKindsPending) return /* @__PURE__ */ jsx("div", {
60127
+ className: "flex justify-center py-8 text-foreground-subtle",
60128
+ children: /* @__PURE__ */ jsx(LoaderCircle, { className: "h-5 w-5 animate-spin" })
60129
+ });
60130
+ if (entryKindsError !== null) return /* @__PURE__ */ jsx(ErrorBox, { message: entryKindsError });
60131
+ const info = entryKinds?.find((e) => dataRecordKey(e) === dataRecordKey(kind));
60132
+ if (info === void 0) return /* @__PURE__ */ jsx(ErrorBox, { message: t("uiLibrary.dataRecords.entryKindMissing", "This entry kind is not served by the entries service.") });
60133
+ return /* @__PURE__ */ jsxs("div", {
60134
+ className: "space-y-2",
60135
+ children: [/* @__PURE__ */ jsx("h3", {
60136
+ className: "text-sm font-semibold text-foreground",
60137
+ children: info.title
60138
+ }), /* @__PURE__ */ jsx(RecordEntriesPanel, { kind: info })]
60139
+ });
60140
+ }
60141
+ /**
60142
+ * System → Data → Records: every declared record kind in ONE table with
60143
+ * compact filters; an entry kind opens its editable list, any other kind its
60144
+ * read-only row preview. Selection is in `?recordsOwner=&recordsKind=`.
60145
+ */
60146
+ function DataRecordsHub() {
59938
60147
  const t = useUiText();
59939
60148
  const kindsQuery = trpc.storageAdmin.listKinds.useQuery({}, { staleTime: 3e4 });
59940
- const [ownerParam, setOwner] = useUrlQueryParam(STORAGE_RECORDS_OWNER_PARAM);
59941
- const [kindParam, setKind] = useUrlQueryParam(STORAGE_RECORDS_KIND_PARAM);
59942
- const kinds = kindsQuery.data?.kinds ?? [];
59943
- const filter = useDataTableFilter(kinds, {
59944
- searchText: (row) => [
59945
- row.owner,
59946
- row.kind,
59947
- row.class,
59948
- row.database,
59949
- row.state
59950
- ],
59951
- facetGroups: [{
59952
- id: "owner",
59953
- value: (row) => row.owner
59954
- }, {
59955
- id: "database",
59956
- value: (row) => row.database
59957
- }]
60149
+ const entryKindsQuery = useRecordEntriesListEntryKinds({}, { staleTime: 3e4 });
60150
+ const [ownerParam, setOwner] = useUrlQueryParam(DATA_RECORDS_OWNER_PARAM);
60151
+ const [kindParam, setKind] = useUrlQueryParam(DATA_RECORDS_KIND_PARAM);
60152
+ const entryKinds = entryKindsQuery.data?.kinds;
60153
+ const rows = useMemo(() => buildDataRecordRows(kindsQuery.data?.kinds ?? [], entryKinds), [entryKinds, kindsQuery.data?.kinds]);
60154
+ const filter = useDataTableFilter(rows, {
60155
+ searchText: dataRecordSearchText,
60156
+ facetGroups: DATA_RECORD_FACET_GROUPS
59958
60157
  });
59959
60158
  const active = useMemo(() => {
59960
- if (kinds.length === 0) return null;
59961
- return kinds.find((k) => k.owner === ownerParam && k.kind === kindParam) ?? null;
60159
+ return rows.find((r) => r.kind.owner === ownerParam && r.kind.kind === kindParam)?.kind ?? null;
59962
60160
  }, [
59963
60161
  kindParam,
59964
- kinds,
59965
- ownerParam
60162
+ ownerParam,
60163
+ rows
59966
60164
  ]);
59967
60165
  const selectKind = useCallback((k) => {
59968
60166
  setOwner(k.owner);
@@ -59972,72 +60170,87 @@ function StorageRecordsHub() {
59972
60170
  return [
59973
60171
  {
59974
60172
  key: "kind",
59975
- header: t("uiLibrary.storageRecords.colKind", "Kind"),
60173
+ header: t("uiLibrary.dataRecords.colKind", "Kind"),
59976
60174
  render: (row) => /* @__PURE__ */ jsxs("span", {
59977
- className: "font-mono text-xs",
59978
- children: [
59979
- row.owner,
59980
- "/",
59981
- row.kind
59982
- ]
60175
+ className: "flex flex-col",
60176
+ children: [/* @__PURE__ */ jsx("span", {
60177
+ className: "font-mono text-xs",
60178
+ children: dataRecordKey(row.kind)
60179
+ }), row.entryTitle !== null ? /* @__PURE__ */ jsx("span", {
60180
+ className: "text-[11px] text-foreground-subtle",
60181
+ children: row.entryTitle
60182
+ }) : null]
60183
+ }),
60184
+ sortValue: (row) => dataRecordKey(row.kind)
60185
+ },
60186
+ {
60187
+ key: "type",
60188
+ header: t("uiLibrary.dataRecords.colType", "Type"),
60189
+ nowrap: true,
60190
+ render: (row) => row.kind.entry ? /* @__PURE__ */ jsx(Badge, {
60191
+ variant: "info",
60192
+ children: t("uiLibrary.dataRecords.badgeEntry", "Entry")
60193
+ }) : /* @__PURE__ */ jsx(Badge, {
60194
+ variant: "neutral",
60195
+ children: t("uiLibrary.dataRecords.badgeRecord", "Record")
59983
60196
  }),
59984
- sortValue: (row) => kindKey(row)
60197
+ sortValue: (row) => row.kind.entry ? "entry" : "record"
59985
60198
  },
59986
60199
  {
59987
60200
  key: "database",
59988
- header: t("uiLibrary.storageRecords.colDatabase", "DB"),
60201
+ header: t("uiLibrary.dataRecords.colDatabase", "DB"),
59989
60202
  nowrap: true,
59990
60203
  render: (row) => /* @__PURE__ */ jsx(Badge, {
59991
60204
  variant: "neutral",
59992
60205
  style: "outline",
59993
- children: row.database
60206
+ children: row.kind.database
59994
60207
  }),
59995
- sortValue: (row) => row.database
60208
+ sortValue: (row) => row.kind.database
59996
60209
  },
59997
60210
  {
59998
60211
  key: "class",
59999
- header: t("uiLibrary.storageRecords.colClass", "Class"),
60212
+ header: t("uiLibrary.dataRecords.colClass", "Class"),
60000
60213
  nowrap: true,
60001
60214
  render: (row) => /* @__PURE__ */ jsx("span", {
60002
60215
  className: "text-xs text-foreground-muted",
60003
- children: row.class
60216
+ children: row.kind.class
60004
60217
  }),
60005
- sortValue: (row) => row.class
60218
+ sortValue: (row) => row.kind.class
60006
60219
  },
60007
60220
  {
60008
60221
  key: "state",
60009
- header: t("uiLibrary.storageRecords.colState", "State"),
60222
+ header: t("uiLibrary.dataRecords.colState", "State"),
60010
60223
  nowrap: true,
60011
60224
  render: (row) => /* @__PURE__ */ jsx(Badge, {
60012
- variant: row.state === "declared" ? "default" : "neutral",
60013
- children: row.state
60225
+ variant: row.kind.state === "declared" ? "default" : "neutral",
60226
+ children: row.kind.state
60014
60227
  }),
60015
- sortValue: (row) => row.state
60228
+ sortValue: (row) => row.kind.state
60016
60229
  },
60017
60230
  {
60018
60231
  key: "rows",
60019
- header: t("uiLibrary.storageRecords.colRows", "Rows"),
60232
+ header: t("uiLibrary.dataRecords.colRows", "Rows"),
60020
60233
  align: "right",
60021
60234
  nowrap: true,
60022
60235
  render: (row) => /* @__PURE__ */ jsx("span", {
60023
60236
  className: "font-mono text-xs tabular-nums",
60024
- children: row.rows === null ? "—" : row.rows
60237
+ children: row.kind.rows === null ? "—" : row.kind.rows
60025
60238
  }),
60026
- sortValue: (row) => row.rows ?? -1
60239
+ sortValue: (row) => row.kind.rows ?? -1
60027
60240
  },
60028
60241
  {
60029
60242
  key: "bytes",
60030
- header: t("uiLibrary.storageRecords.colSize", "Est. size"),
60243
+ header: t("uiLibrary.dataRecords.colSize", "Est. size"),
60031
60244
  align: "right",
60032
60245
  nowrap: true,
60033
60246
  render: (row) => /* @__PURE__ */ jsx("span", {
60034
60247
  className: "text-xs text-foreground-subtle",
60035
- children: formatBytes(row.bytesEstimate)
60248
+ children: formatBytes(row.kind.bytesEstimate)
60036
60249
  }),
60037
- sortValue: (row) => row.bytesEstimate ?? -1
60250
+ sortValue: (row) => row.kind.bytesEstimate ?? -1
60038
60251
  },
60039
60252
  {
60040
- key: "inspect",
60253
+ key: "open",
60041
60254
  header: "",
60042
60255
  align: "right",
60043
60256
  nowrap: true,
@@ -60045,12 +60258,12 @@ function StorageRecordsHub() {
60045
60258
  return /* @__PURE__ */ jsx(Button, {
60046
60259
  type: "button",
60047
60260
  size: "sm",
60048
- variant: active !== null && kindKey(active) === kindKey(row) ? "primary" : "outline",
60049
- onClick: () => selectKind(row),
60050
- children: t("uiLibrary.storageRecords.viewRows", "View rows")
60261
+ variant: active !== null && dataRecordKey(active) === dataRecordKey(row.kind) ? "primary" : "outline",
60262
+ onClick: () => selectKind(row.kind),
60263
+ children: row.kind.entry ? t("uiLibrary.dataRecords.manage", "Manage") : t("uiLibrary.dataRecords.viewRows", "View rows")
60051
60264
  });
60052
60265
  },
60053
- notSortableReason: t("uiLibrary.storageRecords.actionColumn", "Actions")
60266
+ notSortableReason: t("uiLibrary.dataRecords.actionColumn", "Actions")
60054
60267
  }
60055
60268
  ];
60056
60269
  }, [
@@ -60058,14 +60271,14 @@ function StorageRecordsHub() {
60058
60271
  selectKind,
60059
60272
  t
60060
60273
  ]);
60061
- if (kindsQuery.isError) return /* @__PURE__ */ jsx(ErrorBox, { message: kindsQuery.error instanceof Error ? kindsQuery.error.message : t("uiLibrary.storageRecords.kindsFailed", "Could not load record kinds") });
60274
+ if (kindsQuery.isError) return /* @__PURE__ */ jsx(ErrorBox, { message: kindsQuery.error instanceof Error ? kindsQuery.error.message : t("uiLibrary.dataRecords.kindsFailed", "Could not load record kinds") });
60062
60275
  if (kindsQuery.isPending) return /* @__PURE__ */ jsx("div", {
60063
60276
  className: "flex justify-center py-10 text-foreground-subtle",
60064
60277
  children: /* @__PURE__ */ jsx(LoaderCircle, { className: "h-5 w-5 animate-spin" })
60065
60278
  });
60066
- if (kinds.length === 0) return /* @__PURE__ */ jsx(EmptyState, {
60067
- title: t("uiLibrary.storageRecords.noKindsTitle", "No record kinds"),
60068
- description: t("uiLibrary.storageRecords.noKindsDescription", "No addon has declared a record kind on this hub yet.")
60279
+ if (rows.length === 0) return /* @__PURE__ */ jsx(EmptyState, {
60280
+ title: t("uiLibrary.dataRecords.noKindsTitle", "No record kinds"),
60281
+ description: t("uiLibrary.dataRecords.noKindsDescription", "No addon has declared a record kind on this hub yet.")
60069
60282
  });
60070
60283
  return /* @__PURE__ */ jsxs("div", {
60071
60284
  className: "space-y-4",
@@ -60075,13 +60288,15 @@ function StorageRecordsHub() {
60075
60288
  facets: filter.facets,
60076
60289
  groups: filter.groups.map((g) => ({
60077
60290
  ...g,
60078
- label: g.id === "owner" ? t("uiLibrary.storageRecords.facetOwner", "Owner") : t("uiLibrary.storageRecords.facetDatabase", "Database")
60291
+ label: groupLabel(g.id, t),
60292
+ display: "menu",
60293
+ facetLabel: (value) => facetCaption(g.id, value, t)
60079
60294
  })),
60080
60295
  labels: {
60081
- searchPlaceholder: t("uiLibrary.storageRecords.search", "Search kinds…"),
60082
- searchLabel: t("uiLibrary.storageRecords.searchLabel", "Search record kinds"),
60083
- facetsLabel: t("uiLibrary.storageRecords.facetsLabel", "Filter record kinds"),
60084
- clearLabel: t("uiLibrary.storageRecords.clearFilters", "Clear filters")
60296
+ searchPlaceholder: t("uiLibrary.dataRecords.search", "Search kinds…"),
60297
+ searchLabel: t("uiLibrary.dataRecords.searchLabel", "Search record kinds"),
60298
+ facetsLabel: t("uiLibrary.dataRecords.facetsLabel", "Filter record kinds"),
60299
+ clearLabel: t("uiLibrary.dataRecords.clearFilters", "Clear filters")
60085
60300
  },
60086
60301
  onSearch: filter.setSearch,
60087
60302
  onToggleFacet: filter.toggleFacet,
@@ -60091,15 +60306,20 @@ function StorageRecordsHub() {
60091
60306
  /* @__PURE__ */ jsx(DataTable, {
60092
60307
  columns,
60093
60308
  rows: filter.rows,
60094
- rowKey: (k) => kindKey(k),
60309
+ rowKey: (r) => dataRecordKey(r.kind),
60095
60310
  maxBodyHeight: TABLE_SCROLL_MAX_H,
60096
60311
  defaultSort: {
60097
60312
  columnKey: "kind",
60098
60313
  dir: "asc"
60099
60314
  },
60100
- emptyMessage: t("uiLibrary.storageRecords.noMatch", "No kinds match the filter")
60315
+ emptyMessage: t("uiLibrary.dataRecords.noMatch", "No kinds match the filter")
60101
60316
  }),
60102
- active !== null ? /* @__PURE__ */ jsx(StorageRecordsPanel, { kind: active }) : null
60317
+ active !== null ? /* @__PURE__ */ jsx(KindDetail, {
60318
+ kind: active,
60319
+ entryKinds,
60320
+ entryKindsPending: entryKindsQuery.isPending,
60321
+ entryKindsError: entryKindsQuery.isError ? entryKindsQuery.error instanceof Error ? entryKindsQuery.error.message : t("uiLibrary.dataRecords.entryKindsFailed", "Could not load entry kinds") : null
60322
+ }) : null
60103
60323
  ]
60104
60324
  });
60105
60325
  }
@@ -64384,4 +64604,4 @@ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-30H29vN4.js").t
64384
64604
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
64385
64605
  var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-C9wfHkiB.js").then((m) => ({ default: m.PrivacyMaskSettings })));
64386
64606
  //#endregion
64387
- export { ShieldOff as $, Clock as $n, LoaderCircle as $t, TrainFront as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Feather as An, AppShell, Bell as Ar, ArcKnob, Pause as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, SunMedium as B, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BatteryBadge, DoorClosed as Bn, BottomSheet, ArrowUp as Br, Breadcrumb, BrightnessPanel, MonitorPlay as Bt, Button, ButtonControl, ButtonHeroCard, Undo2 as C, 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, Funnel as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Bug as Cr, Play as Ct, CustomFieldRenderersProvider, TrendingDown as D, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, FlashlightOff as Dn, DoorbellRecentPanel, Blinds as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Phone as Dt, DummyHeroCard, DummyInline, TriangleAlert as E, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EmptyState, Flashlight as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Bone as Er, ErrorBox, Pin as Et, EventKindGlyph, EventStream, ExtensionsPanel, Thermometer as F, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, EllipsisVertical as Fn, FormField$1 as FormField, BatteryLow as Fr, Move as Ft, Snowflake as G, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Copy as Gn, ArrowDownToLine as Gr, GripTrack, GroupedModelSelector, Menu as Gt, Square as H, HOST_WIDGETS, HUB_SESSION_RUN_MS, HlsVideo, Database as Hn, HoverZoomImage, ArrowRight as Hr, Minimize2 as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Target as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, Droplets as In, InferenceConfigSelector, Input, BatteryFull as Ir, MoveVertical as It, ItemFormDialog, SkipForward as J, CloudSun as Jn, Activity as Jr, MapPin as Jt, Smartphone as K, KebabMenu, KeyValueList, Cog as Kn, AlarmSmoke as Kr, Megaphone as Kt, Tag as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, Droplet as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, Bath as Lr, MoveHorizontal as Lt, ToggleRight as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, Eye as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, Battery as Mr, Network as Mt, ToggleLeft as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, EyeOff as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, BatteryWarning as Nr, Navigation as Nt, TrendingUp as O, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, Flame as On, OptionSelect, Bird as Or, Pencil as Ot, Timer as P, PAGE_SIZE_ALL, PHASE_CONFIG, PICKER_CHIP_LIMIT, PICKER_DEFAULT_GROUP_BY, PICKER_GROUP_BY_MODES, PICKER_GROUP_COLLAPSE_AT, PICKER_NONE_KEY, PICKER_NOUN_PLURAL, PICKER_NO_FILTERS, PICKER_PAGE_SIZE, PICKER_SEARCH_DEBOUNCE_MS, PICKER_WINDOW, PRIORITY, PTZOverlay, PageHeader, PageShell, PageSizeSelect, Pagination, PasswordInput, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, ExternalLink as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, BatteryMedium as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Music as Pt, PtzPanel, Shield as Q, CloudFog as Qn, QrCode, LocateFixed as Qt, Sunrise as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RECORD_ENTRY_KIND_PARAM, RECORD_ENTRY_OWNER_PARAM, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordEntriesHub, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, Download as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, Ban as Rr, MousePointerClick as Rt, RunReport, Unlink2 as S, SCENE_CAPTURE_VARIANTS, SECRET_MASK_PLACEHOLDER, SECRET_REVEAL_MS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, STEP_DOCK_WIDTH_PX, STORAGE_RECORDS_KIND_PARAM, STORAGE_RECORDS_OWNER_PARAM, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, Gamepad2 as Sn, SnapshotButton, SortHeaderButton, Bus as Sr, Plus as St, StableTabPanel, StatCard, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StorageRecordsHub, StorageRecordsPanel, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Truck as T, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, FlaskConical as Tn, Tooltip, TooltipContent, TooltipTrigger, Bot as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Pipette as Tt, Sprout as U, UiTextProvider, UiTrans, Crosshair as Un, UnitPicker, ArrowLeft as Ur, Mic as Ut, Star as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, Dog as Vn, VodPlaybackProvider, ArrowUpToLine as Vr, Minus as Vt, Sparkles as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Cpu as Wn, ArrowDown as Wr, MessageSquare as Wt, Siren as X, CloudRain as Xn, Lock as Xt, SkipBack as Y, CloudSnow as Yn, Mail as Yt, Ship as Z, CloudLightning as Zn, ZoneEditingProvider, LockOpen as Zt, UtensilsCrossed as _, Hammer as _n, Cat as _r, QrCode$1 as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, allDeviceTypeFilterOptions, LayoutGrid as an, applyFleetQueryDefaults, applyPickerFilters, CirclePause as ar, ariaSortForColumn, assignNodeColorId, Search as at, UserCheck as b, badgeFor, bindsToModel, GraduationCap as bn, Camera as br, PowerOff as bt, buildColorByNodeId, buildPeerConnectionConfig, buildStepTreeFromSchema, Wifi as c, catalogHasDraft, childEntityId, childListName, chipOverflow, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, containerChildToRef, countableDevices, coverHighlight, coverageLine, CircleCheckBig as cr, createAddonI18n, createSharedContext, createTheme, Save as ct, currentAddonLanguage, cursorFractionFor, WifiLow as d, darkColors, dataTableFacetGroups, dataTableFacets, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, defaultUiText, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ImageOff as dn, dockBox, ChevronsDownUp as dr, draftFromQuery, RotateCw as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, List as en, ensureMfHostInit, Clapperboard as er, ShieldCheck as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, House as fn, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, ChevronUp as fr, freezeVerdict, RotateCcw as ft, fuzzyMatch, Vibrate as g, getClassColor, getPhaseVisual, Hand as gn, Check as gr, groupAgentColumns, groupChildrenByLayout, groupPickerDevices, groupPickerDevicesBy, Radar as gt, Volume2 as h, hardwareLabel, HardDrive as hn, ChevronDown as hr, RadioTower as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, Leaf as in, initialScrubState, insertAtSelection, CirclePlus as ir, isAbsentProvider, isDataTableFilterActive, isFieldVisible, isGroupExpanded, isKeychainFieldValue, isRedactedSecret, isSecretField, isValueField, Server as it, Tractor as j, Fan as jn, BellRing as jr, Package as jt, Trash2 as k, Film as kn, Bike as kr, PawPrint as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, Inbox as ln, loadIconGlyphs, loadRemoteBundle, CircleAlert as lr, Sailboat as lt, lucideExportName, VolumeX as m, makeScrubBridge, mapRootDetectorPlacements, mergeSecretForSubmit, metadataEntries, metadataString, mirror, Hash as mn, mountAddonPage, mountPath, ChevronLeft as mr, Radio as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, Link2 as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, CircleStop as nr, Share2 as nt, Workflow as o, offListSelections, Laugh as on, openTopLayer, optionSearchText as optionSelectSearchText, CircleDot as or, orphanDeviceLabel, ScrollText as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseIceCandidate, parsePickerGroupBy, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, Heater as pn, ChevronRight as pr, providerIcons, RefreshCw as pt, SlidersHorizontal as q, Cloud as qn, AirVent as qr, Maximize2 as qt, Zap as r, readStoredGroupBy, reduceSessionRun, registerAddonBundle, renderMarkup, renderTagged, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, retrainReviewBadgeLook, Lightbulb as rn, roiTooLarge, rootSourceState, routerBasename, CircleQuestionMark as rr, Settings as rt, Wind as s, sameLocationSuggestions, scrubReducer, searchSteps, secretDisplayValue, secretSubmitValue, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, settingsModelIdFor, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Info as sn, sortRows, sortRowsByColumn, CircleCheck as sr, Scan as st, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, summarizeHubCandidates, ZoomOut as t, tabForSelector, tankAlert, themeToCss, themeToRootCss, ListChecks as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, CircleX as tr, trainingRefusalText, translateAddonKey, trpc, ShieldAlert as tt, typeLabel, WifiOff as u, Image as un, ChevronsUpDown as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupCheckBackupKey, useBackupDelete, useBackupDeleteSchedule, useBackupDisableEncryption, useBackupGetEncryption, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListAvailableDatabases, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupSetupEncryption, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCalendarsGetPreferences, useCalendarsListCalendars, useCalendarsListEvents, useCalendarsSetCalendarPreference, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksCreateComposition, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderGetInfo, useDecoderReprobeHwaccel, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceCredentialsDeleteDeviceCredential, useDeviceCredentialsGetDeviceCaStatus, useDeviceCredentialsGetDeviceCertificateSettings, useDeviceCredentialsListDeviceCredentials, useDeviceCredentialsRenameDeviceCredential, useDeviceCredentialsRevokeDeviceCredential, useDeviceCredentialsSetDeviceCertificateSettings, useDeviceCredentialsStartEnrollment, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceHistoryDeclareSeries, useDeviceHistoryGetDeviceEnabled, useDeviceHistoryGetStatus, useDeviceHistoryListNodeSeries, useDeviceHistoryListSeries, useDeviceHistoryQuery, useDeviceHistoryQueryNode, useDeviceHistoryRecord, useDeviceHistoryRecordBuckets, useDeviceHistorySetDeviceEnabled, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCleanupDeletedDevicesData, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerGetWrapperActivation, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeletedSince, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDishwasherGetStatus, useDishwasherPause, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, useDishwasherStart, useDishwasherStop, useDisplayIconResolver, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHeatingValveGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useItemFormUrl, useKeychainAdminAcknowledgeReset, useKeychainAdminDeleteOrphans, useKeychainAdminDownloadRecoveryKey, useKeychainAdminImportSecret, useKeychainAdminListAudit, useKeychainAdminListSecrets, useKeychainAdminPurgeRetiredKeys, useKeychainAdminResetKeychain, useKeychainAdminResetReport, useKeychainAdminReveal, useKeychainAdminRotateMasterKey, useKeychainAdminSetSystemSecret, useKeychainAdminStatus, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmMigrateRawSecrets, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkAddCustomAddress, useLocalNetworkDownloadCa, useLocalNetworkGetAddresses, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetHubAddresses, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLocalNetworkUseStoredUploadedCertificate, 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, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputGetTarget, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputProbeTargetConfig, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesActivateAlarmProfile, useNotificationRulesCancelSnooze, useNotificationRulesCreateAlarmProfile, useNotificationRulesCreateRule, useNotificationRulesCreateSequence, useNotificationRulesCreateSnooze, useNotificationRulesDeleteAlarmProfile, useNotificationRulesDeleteRule, useNotificationRulesDeleteSequence, useNotificationRulesGetAlarmConfig, useNotificationRulesGetAlarmSensors, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetSequence, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSequences, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesRenameAlarmProfile, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotificationRulesUpdateSequence, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOidcConnectionsConnectionFormSchema, useOidcConnectionsCreateConnection, useOidcConnectionsDeleteConnection, useOidcConnectionsListConnections, useOidcConnectionsUpdateConnection, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerSetSlotCameraEnabled, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsAddRetrainFrameFromRecording, usePipelineAnalyticsAddRetrainFramesToCollection, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsBackfillRetrainOrigins, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsCreateRetrainCollection, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteRetrainCollection, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainCorpusKpi, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainAssistProfiles, usePipelineAnalyticsListRetrainCollectionFrames, usePipelineAnalyticsListRetrainCollections, usePipelineAnalyticsListRetrainCorpusPage, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOfferRetrainArchive, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsProposeRetrainAnnotationsWithLlm, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRemoveRetrainFrameFromCollection, usePipelineAnalyticsRenameRetrainCollection, usePipelineAnalyticsResolveRetrainTrainingCorpus, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetRetrainFrameComplete, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineAnalyticsWriteRetrainArchive, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorClearModelBoundDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorValidatePipeline, usePipelineOrchestratorAbortNodeBenchmark, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteNodeBenchmarkResult, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeBenchmarkCandidates, usePipelineOrchestratorGetNodeBenchmarkPreflight, usePipelineOrchestratorGetNodeBenchmarkStatus, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListNodeBenchmarkResults, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraDetectionSource, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorStartNodeBenchmark, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAbortNodeBench, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetNodeBenchStatus, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePipelineRunnerStartNodeBench, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordEntriesDeleteEntry, useRecordEntriesListEntries, useRecordEntriesListEntryKinds, useRecordEntriesPutEntry, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreTransact, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSettingsStoreUpsertMany, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStoredGroupBy, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetLiveViewerCounts, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementMigrateRawSecrets, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionApplyDownlinkProbe, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, Route as ut, Users as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, GripHorizontal as vn, Cast as vr, Puzzle as vt, Type as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withResolvedParentDetail, withUseRootModel, Footprints as wn, Box as wr, writeStoredGroupBy, Plane as wt, Upload as x, Gauge as xn, Cable as xr, Plug as xt, User as y, Grid2x2 as yn, Car as yr, Power as yt, Sun as z, DoorOpen as zn, Baby as zr, Moon as zt };
64607
+ export { ShieldOff as $, Clock as $n, LoaderCircle as $t, TrainFront as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Feather as An, AppShell, Bell as Ar, ArcKnob, Pause as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, SunMedium as B, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BatteryBadge, DoorClosed as Bn, BottomSheet, ArrowUp as Br, Breadcrumb, BrightnessPanel, MonitorPlay as Bt, Button, ButtonControl, ButtonHeroCard, Undo2 as C, 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, Funnel as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Bug as Cr, Play as Ct, CustomFieldRenderersProvider, TrendingDown as D, DATA_RECORDS_KIND_PARAM, DATA_RECORDS_OWNER_PARAM, DATA_RECORD_FACET_GROUPS, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DataRecordsHub, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, FlashlightOff as Dn, DoorbellRecentPanel, Blinds as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Phone as Dt, DummyHeroCard, DummyInline, TriangleAlert as E, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EmptyState, Flashlight as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Bone as Er, ErrorBox, Pin as Et, EventKindGlyph, EventStream, ExtensionsPanel, Thermometer as F, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, EllipsisVertical as Fn, FormField$1 as FormField, BatteryLow as Fr, Move as Ft, Snowflake as G, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Copy as Gn, ArrowDownToLine as Gr, GripTrack, GroupedModelSelector, Menu as Gt, Square as H, HOST_WIDGETS, HUB_SESSION_RUN_MS, HlsVideo, Database as Hn, HoverZoomImage, ArrowRight as Hr, Minimize2 as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Target as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, Droplets as In, InferenceConfigSelector, Input, BatteryFull as Ir, MoveVertical as It, ItemFormDialog, SkipForward as J, CloudSun as Jn, Activity as Jr, MapPin as Jt, Smartphone as K, KebabMenu, KeyValueList, Cog as Kn, AlarmSmoke as Kr, Megaphone as Kt, Tag as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, Droplet as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, Bath as Lr, MoveHorizontal as Lt, ToggleRight as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, Eye as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, Battery as Mr, Network as Mt, ToggleLeft as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, EyeOff as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, BatteryWarning as Nr, Navigation as Nt, TrendingUp as O, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, Flame as On, OptionSelect, Bird as Or, Pencil as Ot, Timer as P, PAGE_SIZE_ALL, PHASE_CONFIG, PICKER_CHIP_LIMIT, PICKER_DEFAULT_GROUP_BY, PICKER_GROUP_BY_MODES, PICKER_GROUP_COLLAPSE_AT, PICKER_NONE_KEY, PICKER_NOUN_PLURAL, PICKER_NO_FILTERS, PICKER_PAGE_SIZE, PICKER_SEARCH_DEBOUNCE_MS, PICKER_WINDOW, PRIORITY, PTZOverlay, PageHeader, PageShell, PageSizeSelect, Pagination, PasswordInput, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, ExternalLink as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, BatteryMedium as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Music as Pt, PtzPanel, Shield as Q, CloudFog as Qn, QrCode, LocateFixed as Qt, Sunrise as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, Download as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, Ban as Rr, MousePointerClick as Rt, RunReport, Unlink2 as S, SCENE_CAPTURE_VARIANTS, SECRET_MASK_PLACEHOLDER, SECRET_REVEAL_MS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, STEP_DOCK_WIDTH_PX, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, Gamepad2 as Sn, SnapshotButton, SortHeaderButton, Bus as Sr, Plus as St, StableTabPanel, StatCard, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StorageRecordsPanel, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Truck as T, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, FlaskConical as Tn, Tooltip, TooltipContent, TooltipTrigger, Bot as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Pipette as Tt, Sprout as U, UiTextProvider, UiTrans, Crosshair as Un, UnitPicker, ArrowLeft as Ur, Mic as Ut, Star as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, Dog as Vn, VodPlaybackProvider, ArrowUpToLine as Vr, Minus as Vt, Sparkles as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Cpu as Wn, ArrowDown as Wr, MessageSquare as Wt, Siren as X, CloudRain as Xn, Lock as Xt, SkipBack as Y, CloudSnow as Yn, Mail as Yt, Ship as Z, CloudLightning as Zn, ZoneEditingProvider, LockOpen as Zt, UtensilsCrossed as _, Hammer as _n, Cat as _r, QrCode$1 as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, allDeviceTypeFilterOptions, LayoutGrid as an, applyFleetQueryDefaults, applyPickerFilters, CirclePause as ar, ariaSortForColumn, assignNodeColorId, Search as at, UserCheck as b, badgeFor, bindsToModel, GraduationCap as bn, Camera as br, PowerOff as bt, buildColorByNodeId, buildDataRecordRows, buildPeerConnectionConfig, buildStepTreeFromSchema, Wifi as c, catalogHasDraft, childEntityId, childListName, chipOverflow, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, containerChildToRef, countableDevices, coverHighlight, coverageLine, CircleCheckBig as cr, createAddonI18n, createSharedContext, createTheme, Save as ct, currentAddonLanguage, cursorFractionFor, WifiLow as d, darkColors, dataRecordContents, dataRecordKey, dataRecordSearchText, dataRecordType, dataTableFacetGroups, dataTableFacets, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, defaultUiText, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ImageOff as dn, dockBox, ChevronsDownUp as dr, draftFromQuery, RotateCw as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, List as en, ensureMfHostInit, Clapperboard as er, ShieldCheck as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, House as fn, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, ChevronUp as fr, freezeVerdict, RotateCcw as ft, fuzzyMatch, Vibrate as g, getClassColor, getPhaseVisual, Hand as gn, Check as gr, groupAgentColumns, groupChildrenByLayout, groupPickerDevices, groupPickerDevicesBy, Radar as gt, Volume2 as h, hardwareLabel, HardDrive as hn, ChevronDown as hr, RadioTower as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, Leaf as in, initialScrubState, insertAtSelection, CirclePlus as ir, isAbsentProvider, isDataTableFilterActive, isFieldVisible, isGroupExpanded, isKeychainFieldValue, isRedactedSecret, isSecretField, isValueField, Server as it, Tractor as j, Fan as jn, BellRing as jr, Package as jt, Trash2 as k, Film as kn, Bike as kr, PawPrint as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, Inbox as ln, loadIconGlyphs, loadRemoteBundle, CircleAlert as lr, Sailboat as lt, lucideExportName, VolumeX as m, makeScrubBridge, mapRootDetectorPlacements, mergeSecretForSubmit, metadataEntries, metadataString, mirror, Hash as mn, mountAddonPage, mountPath, ChevronLeft as mr, Radio as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, Link2 as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, CircleStop as nr, Share2 as nt, Workflow as o, offListSelections, Laugh as on, openTopLayer, optionSearchText as optionSelectSearchText, CircleDot as or, orphanDeviceLabel, ScrollText as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseIceCandidate, parsePickerGroupBy, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, Heater as pn, ChevronRight as pr, providerIcons, RefreshCw as pt, SlidersHorizontal as q, Cloud as qn, AirVent as qr, Maximize2 as qt, Zap as r, readStoredGroupBy, reduceSessionRun, registerAddonBundle, renderMarkup, renderTagged, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, retrainReviewBadgeLook, Lightbulb as rn, roiTooLarge, rootSourceState, routerBasename, CircleQuestionMark as rr, Settings as rt, Wind as s, sameLocationSuggestions, scrubReducer, searchSteps, secretDisplayValue, secretSubmitValue, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, settingsModelIdFor, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Info as sn, sortRows, sortRowsByColumn, CircleCheck as sr, Scan as st, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, summarizeHubCandidates, ZoomOut as t, tabForSelector, tankAlert, themeToCss, themeToRootCss, ListChecks as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, CircleX as tr, trainingRefusalText, translateAddonKey, trpc, ShieldAlert as tt, typeLabel, WifiOff as u, Image as un, ChevronsUpDown as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupCheckBackupKey, useBackupDelete, useBackupDeleteSchedule, useBackupDisableEncryption, useBackupGetEncryption, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListAvailableDatabases, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupSetupEncryption, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCalendarsGetPreferences, useCalendarsListCalendars, useCalendarsListEvents, useCalendarsSetCalendarPreference, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksCreateComposition, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderGetInfo, useDecoderReprobeHwaccel, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceCredentialsDeleteDeviceCredential, useDeviceCredentialsGetDeviceCaStatus, useDeviceCredentialsGetDeviceCertificateSettings, useDeviceCredentialsListDeviceCredentials, useDeviceCredentialsRenameDeviceCredential, useDeviceCredentialsRevokeDeviceCredential, useDeviceCredentialsSetDeviceCertificateSettings, useDeviceCredentialsStartEnrollment, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceHistoryDeclareSeries, useDeviceHistoryGetDeviceEnabled, useDeviceHistoryGetStatus, useDeviceHistoryListNodeSeries, useDeviceHistoryListSeries, useDeviceHistoryQuery, useDeviceHistoryQueryNode, useDeviceHistoryRecord, useDeviceHistoryRecordBuckets, useDeviceHistorySetDeviceEnabled, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCleanupDeletedDevicesData, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerGetWrapperActivation, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeletedSince, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDishwasherGetOptions, useDishwasherGetStatus, useDishwasherPause, useDishwasherResume, useDishwasherSetChildLock, useDishwasherSetExtraDry, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetIntensiveZone, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, useDishwasherSetVarioSpeedPlus, useDishwasherStart, useDishwasherStop, useDisplayIconResolver, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHeatingValveGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useItemFormUrl, useKeychainAdminAcknowledgeReset, useKeychainAdminDeleteOrphans, useKeychainAdminDownloadRecoveryKey, useKeychainAdminImportSecret, useKeychainAdminListAudit, useKeychainAdminListSecrets, useKeychainAdminPurgeRetiredKeys, useKeychainAdminResetKeychain, useKeychainAdminResetReport, useKeychainAdminReveal, useKeychainAdminRotateMasterKey, useKeychainAdminSetSystemSecret, useKeychainAdminStatus, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmMigrateRawSecrets, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkAddCustomAddress, useLocalNetworkDownloadCa, useLocalNetworkGetAddresses, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetHubAddresses, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLocalNetworkUseStoredUploadedCertificate, 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, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputGetTarget, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputProbeTargetConfig, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesActivateAlarmProfile, useNotificationRulesCancelSnooze, useNotificationRulesCreateAlarmProfile, useNotificationRulesCreateRule, useNotificationRulesCreateSequence, useNotificationRulesCreateSnooze, useNotificationRulesDeleteAlarmProfile, useNotificationRulesDeleteRule, useNotificationRulesDeleteSequence, useNotificationRulesGetAlarmConfig, useNotificationRulesGetAlarmSensors, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetSequence, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSequences, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesRenameAlarmProfile, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotificationRulesUpdateSequence, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOidcConnectionsConnectionFormSchema, useOidcConnectionsCreateConnection, useOidcConnectionsDeleteConnection, useOidcConnectionsListConnections, useOidcConnectionsUpdateConnection, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerSetSlotCameraEnabled, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsAddRetrainFrameFromRecording, usePipelineAnalyticsAddRetrainFramesToCollection, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsBackfillRetrainOrigins, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsCreateRetrainCollection, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteRetrainCollection, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainCorpusKpi, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainAssistProfiles, usePipelineAnalyticsListRetrainCollectionFrames, usePipelineAnalyticsListRetrainCollections, usePipelineAnalyticsListRetrainCorpusPage, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOfferRetrainArchive, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsProposeRetrainAnnotationsWithLlm, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRemoveRetrainFrameFromCollection, usePipelineAnalyticsRenameRetrainCollection, usePipelineAnalyticsResolveRetrainTrainingCorpus, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetRetrainFrameComplete, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineAnalyticsWriteRetrainArchive, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorClearModelBoundDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorValidatePipeline, usePipelineOrchestratorAbortNodeBenchmark, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteNodeBenchmarkResult, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeBenchmarkCandidates, usePipelineOrchestratorGetNodeBenchmarkPreflight, usePipelineOrchestratorGetNodeBenchmarkStatus, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListNodeBenchmarkResults, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraDetectionSource, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorStartNodeBenchmark, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAbortNodeBench, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetNodeBenchStatus, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePipelineRunnerStartNodeBench, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordEntriesDeleteEntry, useRecordEntriesListEntries, useRecordEntriesListEntryKinds, useRecordEntriesPutEntry, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreTransact, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSettingsStoreUpsertMany, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMoverClearance, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStoredGroupBy, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetLiveViewerCounts, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementMigrateRawSecrets, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionApplyDownlinkProbe, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, Route as ut, Users as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, GripHorizontal as vn, Cast as vr, Puzzle as vt, Type as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withResolvedParentDetail, withUseRootModel, Footprints as wn, Box as wr, writeStoredGroupBy, Plane as wt, Upload as x, Gauge as xn, Cable as xr, Plug as xt, User as y, Grid2x2 as yn, Car as yr, Power as yt, Sun as z, DoorOpen as zn, Baby as zr, Moon as zt };