@camstack/ui-library 1.2.301 → 1.2.303

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`. */
@@ -11012,6 +11014,8 @@ var useDishwasherSetVarioSpeedPlus = trpc.dishwasher.setVarioSpeedPlus.useMutati
11012
11014
  var useDishwasherSetChildLock = trpc.dishwasher.setChildLock.useMutation;
11013
11015
  /** Generated alias around `trpc.dishwasher.setOption.useMutation`. */
11014
11016
  var useDishwasherSetOption = trpc.dishwasher.setOption.useMutation;
11017
+ /** Generated alias around `trpc.dishwasher.getOptions.useQuery`. */
11018
+ var useDishwasherGetOptions = trpc.dishwasher.getOptions.useQuery;
11015
11019
  /** Generated alias around `trpc.dishwasher.getStatus.useQuery`. */
11016
11020
  var useDishwasherGetStatus = trpc.dishwasher.getStatus.useQuery;
11017
11021
  /** Generated alias around `trpc.doorbell.getStatus.useQuery`. */
@@ -12338,6 +12342,8 @@ var useStorageMigrationStatus = trpc.storageMigration.status.useQuery;
12338
12342
  var useStorageMigrationCancel = trpc.storageMigration.cancel.useMutation;
12339
12343
  /** Generated alias around `trpc.storageMigration.movers.useQuery`. */
12340
12344
  var useStorageMigrationMovers = trpc.storageMigration.movers.useQuery;
12345
+ /** Generated alias around `trpc.storageMigration.moverClearance.useQuery`. */
12346
+ var useStorageMigrationMoverClearance = trpc.storageMigration.moverClearance.useQuery;
12341
12347
  /** Generated alias around `trpc.storageMigration.residue.useQuery`. */
12342
12348
  var useStorageMigrationResidue = trpc.storageMigration.residue.useQuery;
12343
12349
  /** Generated alias around `trpc.storageMigration.drain.useMutation`. */
@@ -28564,7 +28570,7 @@ var STATUS_DOT_STYLES = {
28564
28570
  idle: "bg-foreground-subtle/40",
28565
28571
  unknown: "bg-foreground-subtle/40"
28566
28572
  };
28567
- function formatDuration(ms) {
28573
+ function formatDuration$1(ms) {
28568
28574
  if (!Number.isFinite(ms) || ms < 0) return "—";
28569
28575
  if (ms < 1e3) return `${ms}ms`;
28570
28576
  const totalSec = Math.round(ms / 1e3);
@@ -28592,7 +28598,7 @@ function ObjectArrayCell({ kind, value }) {
28592
28598
  });
28593
28599
  if (kind === "duration" && typeof value === "number") return /* @__PURE__ */ jsx("span", {
28594
28600
  className: "font-mono text-[11px]",
28595
- children: formatDuration(value)
28601
+ children: formatDuration$1(value)
28596
28602
  });
28597
28603
  if (kind === "timestamp" && typeof value === "number") return /* @__PURE__ */ jsx("span", {
28598
28604
  className: "font-mono text-[11px]",
@@ -35092,7 +35098,7 @@ var ALIGN_CLASS = {
35092
35098
  right: "text-right",
35093
35099
  center: "text-center"
35094
35100
  };
35095
- 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 }) {
35096
35102
  const [innerSort, setInnerSort] = useState(defaultSort ?? null);
35097
35103
  const [innerPage, setInnerPage] = useState(0);
35098
35104
  const sort = sortProp !== void 0 ? sortProp : innerSort;
@@ -35169,7 +35175,8 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
35169
35175
  const key = rowKey ? rowKey(row, rowIndex) : rowIndex;
35170
35176
  const extra = rowClassName?.(row, rowIndex) ?? "";
35171
35177
  const interactive = onRowClick !== void 0;
35172
- 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", {
35173
35180
  onClick: interactive ? () => onRowClick(row, rowIndex) : void 0,
35174
35181
  className: [interactive ? "cursor-pointer hover:bg-primary/5" : "hover:bg-primary/5", extra].filter(Boolean).join(" "),
35175
35182
  children: shownColumns.map((col) => {
@@ -35185,7 +35192,15 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
35185
35192
  children: col.render(row, rowIndex)
35186
35193
  }, col.key);
35187
35194
  })
35188
- }, 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);
35189
35204
  }) })]
35190
35205
  })
35191
35206
  });
@@ -37749,6 +37764,88 @@ function filterDataTableRows(rows, state, config) {
37749
37764
  });
37750
37765
  }
37751
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
37752
37849
  //#region src/composites/data-table-filter-bar.tsx
37753
37850
  /**
37754
37851
  * The controls of one table's filter: a search box and the facet chips.
@@ -37801,7 +37898,18 @@ function DataTableFilterBar({ state, facets, labels, onSearch, onToggleFacet, on
37801
37898
  }, facet.value);
37802
37899
  })
37803
37900
  }),
37804
- 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", {
37805
37913
  role: "group",
37806
37914
  "aria-label": group.label,
37807
37915
  className: "flex flex-wrap items-center gap-1",
@@ -48665,47 +48773,95 @@ function PetFeederHeroCard({ trpc, deviceId, features, optimistic }) {
48665
48773
  *
48666
48774
  * Reads the `dishwasher` cap status slice and renders inline + hero surfaces
48667
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.
48668
48781
  */
48669
- function dishwasherStateMeta(state, t = defaultUiText) {
48670
- switch (state) {
48671
- case "running": return {
48672
- 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"),
48673
48787
  tone: "text-primary"
48674
48788
  };
48675
- case "paused": return {
48676
- label: t("uiLibrary.dishwasher.paused", "Paused"),
48789
+ case "Pause": return {
48790
+ label: t("uiLibrary.dishwasher.op.pause", "Paused"),
48677
48791
  tone: "text-warning"
48678
48792
  };
48679
- case "finished": return {
48680
- label: t("uiLibrary.dishwasher.finished", "Finished"),
48793
+ case "Finished": return {
48794
+ label: t("uiLibrary.dishwasher.op.finished", "Finished"),
48681
48795
  tone: "text-success"
48682
48796
  };
48683
- case "error": return {
48684
- label: t("uiLibrary.dishwasher.error", "Error"),
48685
- tone: "text-destructive"
48797
+ case "Error": return {
48798
+ label: t("uiLibrary.dishwasher.op.error", "Error"),
48799
+ tone: "text-danger"
48686
48800
  };
48687
- case "unavailable": return {
48688
- label: t("uiLibrary.dishwasher.unavailable", "Unavailable"),
48689
- tone: "text-foreground-subtle"
48801
+ case "Aborting": return {
48802
+ label: t("uiLibrary.dishwasher.op.aborting", "Stopping"),
48803
+ tone: "text-warning"
48690
48804
  };
48691
- case "idle": return {
48692
- 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"),
48693
48819
  tone: "text-foreground-subtle"
48694
48820
  };
48695
- case void 0: return {
48821
+ case null: return {
48696
48822
  label: t("uiLibrary.dishwasher.unknown", "Unknown"),
48697
48823
  tone: "text-foreground-subtle"
48698
48824
  };
48699
48825
  }
48700
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
+ }
48701
48841
  function consumableTone(level) {
48702
48842
  switch (level) {
48703
48843
  case "ok": return "text-success";
48704
48844
  case "low": return "text-warning";
48705
- case "empty": return "text-destructive";
48845
+ case "empty": return "text-danger";
48706
48846
  case null: return "text-foreground-subtle";
48707
48847
  }
48708
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
+ }
48709
48865
  function useDishwasher(trpc, deviceId) {
48710
48866
  return useDeviceCapability({
48711
48867
  trpc,
@@ -48739,13 +48895,11 @@ function ConsumableBadge({ label, level }) {
48739
48895
  ]
48740
48896
  });
48741
48897
  }
48742
- function DishwasherGraphic({ state, progressPercent }) {
48743
- const running = state === "running";
48898
+ function DishwasherGraphic({ running, progressPercent }) {
48744
48899
  const pct = progressPercent != null ? Math.max(0, Math.min(100, progressPercent)) : running ? 40 : 0;
48745
48900
  return /* @__PURE__ */ jsxs("div", {
48746
48901
  "aria-hidden": "true",
48747
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",
48748
- style: { boxShadow: "inset 0 0 0 2px rgba(255,255,255,.06)" },
48749
48903
  children: [/* @__PURE__ */ jsx("div", {
48750
48904
  className: cn("absolute inset-x-0 bottom-0 bg-primary/25 transition-[height] duration-500", running && "animate-pulse"),
48751
48905
  style: { height: `${pct}%` }
@@ -48755,20 +48909,21 @@ function DishwasherGraphic({ state, progressPercent }) {
48755
48909
  })]
48756
48910
  });
48757
48911
  }
48758
- function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48912
+ function DishwasherPanel({ trpc, deviceId, layout }) {
48759
48913
  const t = useUiText();
48760
48914
  const { cap, slice, available } = useDishwasher(trpc, deviceId);
48761
- const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
48762
48915
  if (cap === void 0) return null;
48763
- if (display === void 0) return null;
48764
- const busy = !available;
48916
+ if (slice === void 0) return null;
48917
+ const display = slice;
48918
+ const link = display.availability === "available";
48919
+ const busy = !available || !link;
48765
48920
  const optionTogglesLocked = display.childLock === true;
48766
- const meta = dishwasherStateMeta(display.state, t);
48767
- const running = display.state === "running";
48768
- const paused = display.state === "paused";
48769
- const press = (fn, patch) => {
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) => {
48770
48926
  if (busy) return;
48771
- applyOptimistic(patch);
48772
48927
  fn();
48773
48928
  };
48774
48929
  if (layout === "compact") {
@@ -48777,7 +48932,7 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48777
48932
  return /* @__PURE__ */ jsxs("div", {
48778
48933
  className: "inline-flex items-center gap-1.5 max-w-full",
48779
48934
  children: [
48780
- display.doorOpen && /* @__PURE__ */ jsx("span", {
48935
+ display.doorOpen === true && /* @__PURE__ */ jsx("span", {
48781
48936
  className: "inline-flex text-warning shrink-0",
48782
48937
  title: t("uiLibrary.dishwasher.doorOpen", "Door open"),
48783
48938
  "aria-label": t("uiLibrary.dishwasher.doorOpen", "Door open"),
@@ -48790,15 +48945,11 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48790
48945
  display.program != null && /* @__PURE__ */ jsx("span", {
48791
48946
  className: "text-xs text-foreground-subtle truncate max-w-[7rem]",
48792
48947
  title: display.program,
48793
- children: display.program
48948
+ children: featureLabel(display.program)
48794
48949
  }),
48795
- display.remainingMinutes != null && /* @__PURE__ */ jsxs("span", {
48950
+ display.remainingSeconds != null && /* @__PURE__ */ jsxs("span", {
48796
48951
  className: "inline-flex items-center gap-0.5 text-xs text-foreground-subtle tabular-nums shrink-0",
48797
- children: [
48798
- /* @__PURE__ */ jsx(Timer, { className: "h-3 w-3" }),
48799
- display.remainingMinutes,
48800
- "m"
48801
- ]
48952
+ children: [/* @__PURE__ */ jsx(Timer, { className: "h-3 w-3" }), formatDuration(display.remainingSeconds, t)]
48802
48953
  }),
48803
48954
  saltWarn && /* @__PURE__ */ jsx("span", {
48804
48955
  className: cn("text-[10px] font-medium shrink-0", consumableTone(display.saltLevel)),
@@ -48810,19 +48961,16 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48810
48961
  }),
48811
48962
  /* @__PURE__ */ jsx(DishwasherIconButton, {
48812
48963
  label: t("uiLibrary.dishwasher.start", "Start"),
48813
- busy: busy || !display.remoteStartAllowed,
48964
+ busy: busy || !startable,
48814
48965
  active: running,
48815
- onClick: () => press(() => cap.start({}), {
48816
- state: "running",
48817
- remoteStartAllowed: false
48818
- }),
48966
+ onClick: () => press(() => cap.start({})),
48819
48967
  children: /* @__PURE__ */ jsx(Play, { className: "h-3 w-3" })
48820
48968
  }),
48821
48969
  /* @__PURE__ */ jsx(DishwasherIconButton, {
48822
- label: t("uiLibrary.dishwasher.pause", "Pause"),
48823
- busy: busy || !running,
48970
+ label: paused ? t("uiLibrary.dishwasher.resume", "Resume") : t("uiLibrary.dishwasher.pause", "Pause"),
48971
+ busy: busy || !(running || paused),
48824
48972
  active: paused,
48825
- onClick: () => press(() => cap.pause({}), { state: "paused" }),
48973
+ onClick: () => press(() => paused ? cap.resume({}) : cap.pause({})),
48826
48974
  children: /* @__PURE__ */ jsx(Pause, { className: "h-3 w-3" })
48827
48975
  })
48828
48976
  ]
@@ -48835,7 +48983,7 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48835
48983
  /* @__PURE__ */ jsxs("div", {
48836
48984
  className: "flex items-start gap-4",
48837
48985
  children: [/* @__PURE__ */ jsx(DishwasherGraphic, {
48838
- state: display.state,
48986
+ running,
48839
48987
  progressPercent: display.progressPercent
48840
48988
  }), /* @__PURE__ */ jsxs("div", {
48841
48989
  className: "flex min-w-0 flex-1 flex-col gap-2",
@@ -48845,14 +48993,23 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48845
48993
  children: [/* @__PURE__ */ jsx("span", {
48846
48994
  className: cn("text-3xl font-semibold", meta.tone),
48847
48995
  children: meta.label
48848
- }), !display.powerOn && /* @__PURE__ */ jsx("span", {
48996
+ }), display.powerOn === false && /* @__PURE__ */ jsx("span", {
48849
48997
  className: "text-xs font-medium text-foreground-subtle",
48850
48998
  children: t("uiLibrary.dishwasher.powerOff", "Power off")
48851
48999
  })]
48852
49000
  }),
48853
49001
  display.program != null && /* @__PURE__ */ jsx("span", {
48854
49002
  className: "text-sm text-foreground-subtle",
48855
- 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) })
48856
49013
  }),
48857
49014
  display.progressPercent != null && /* @__PURE__ */ jsxs("div", {
48858
49015
  className: "flex items-center gap-2",
@@ -48878,53 +49035,52 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48878
49035
  label: t("uiLibrary.dishwasher.rinseAid", "Rinse aid"),
48879
49036
  level: display.rinseAidLevel
48880
49037
  }),
48881
- display.doorOpen && /* @__PURE__ */ jsxs("span", {
49038
+ display.doorOpen === true && /* @__PURE__ */ jsxs("span", {
48882
49039
  className: "inline-flex items-center gap-1 text-xs text-warning",
48883
49040
  children: [/* @__PURE__ */ jsx(DoorOpen, { className: "h-3.5 w-3.5" }), t("uiLibrary.dishwasher.doorOpen", "Door open")]
48884
- })
49041
+ }),
49042
+ display.activeEvents.map((event) => /* @__PURE__ */ jsx("span", {
49043
+ className: "text-xs text-warning",
49044
+ title: event,
49045
+ children: featureLabel(event)
49046
+ }, event))
48885
49047
  ]
48886
49048
  }),
48887
- display.errorCode != null && display.errorCode !== 0 && /* @__PURE__ */ jsxs("div", {
48888
- className: "inline-flex items-center gap-1 text-xs text-destructive",
48889
- 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") })]
48890
49052
  }),
48891
49053
  /* @__PURE__ */ jsxs("div", {
48892
49054
  className: "flex flex-wrap items-center gap-2",
48893
49055
  children: [
48894
49056
  /* @__PURE__ */ jsx(DishwasherIconButton, {
48895
49057
  label: t("uiLibrary.dishwasher.start", "Start"),
48896
- busy: busy || !display.remoteStartAllowed,
49058
+ busy: busy || !startable,
48897
49059
  active: running,
48898
- onClick: () => press(() => cap.start({}), {
48899
- state: "running",
48900
- remoteStartAllowed: false
48901
- }),
49060
+ onClick: () => press(() => cap.start({})),
48902
49061
  children: /* @__PURE__ */ jsx(Play, { className: "h-4 w-4" })
48903
49062
  }),
48904
49063
  /* @__PURE__ */ jsx(DishwasherIconButton, {
48905
- label: t("uiLibrary.dishwasher.pause", "Pause"),
48906
- busy: busy || !running,
49064
+ label: paused ? t("uiLibrary.dishwasher.resume", "Resume") : t("uiLibrary.dishwasher.pause", "Pause"),
49065
+ busy: busy || !(running || paused),
48907
49066
  active: paused,
48908
- onClick: () => press(() => cap.pause({}), { state: "paused" }),
49067
+ onClick: () => press(() => paused ? cap.resume({}) : cap.pause({})),
48909
49068
  children: /* @__PURE__ */ jsx(Pause, { className: "h-4 w-4" })
48910
49069
  }),
48911
49070
  /* @__PURE__ */ jsx(DishwasherIconButton, {
48912
49071
  label: t("uiLibrary.dishwasher.stop", "Stop"),
48913
- busy,
49072
+ busy: busy || !(running || paused),
48914
49073
  active: false,
48915
- onClick: () => press(() => cap.stop({}), {
48916
- state: "idle",
48917
- remainingMinutes: null
48918
- }),
49074
+ onClick: () => press(() => cap.stop({})),
48919
49075
  children: /* @__PURE__ */ jsx(Square, { className: "h-3.5 w-3.5" })
48920
49076
  }),
48921
49077
  /* @__PURE__ */ jsx(DishwasherIconButton, {
48922
49078
  label: t("uiLibrary.dishwasher.power", "Power"),
48923
- busy,
48924
- active: display.powerOn,
49079
+ busy: busy || display.powerOn === null,
49080
+ active: display.powerOn === true,
48925
49081
  onClick: () => {
48926
- const next = !display.powerOn;
48927
- press(() => cap.setPower({ on: next }), { powerOn: next });
49082
+ const next = display.powerOn !== true;
49083
+ press(() => cap.setPower({ on: next }));
48928
49084
  },
48929
49085
  children: /* @__PURE__ */ jsx(Power, { className: "h-4 w-4" })
48930
49086
  })
@@ -48940,24 +49096,23 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48940
49096
  children: t("uiLibrary.dishwasher.program", "Program")
48941
49097
  }), /* @__PURE__ */ jsxs("select", {
48942
49098
  "aria-label": t("uiLibrary.dishwasher.program", "Program"),
48943
- value: display.program ?? "",
49099
+ value: display.selectedProgram ?? "",
48944
49100
  disabled: busy,
48945
49101
  onChange: (e) => {
48946
49102
  const program = e.target.value;
48947
49103
  if (!program) return;
48948
- applyOptimistic({ program });
48949
49104
  cap.setProgram({ program });
48950
49105
  },
48951
49106
  onClick: (e) => {
48952
49107
  e.stopPropagation();
48953
49108
  },
48954
49109
  className: "flex-1 rounded border border-border bg-surface px-2 py-1 text-foreground disabled:opacity-50",
48955
- children: [display.program == null && /* @__PURE__ */ jsx("option", {
49110
+ children: [display.selectedProgram == null && /* @__PURE__ */ jsx("option", {
48956
49111
  value: "",
48957
49112
  children: "—"
48958
49113
  }), programs.map((p) => /* @__PURE__ */ jsx("option", {
48959
49114
  value: p,
48960
- children: p
49115
+ children: featureLabel(p)
48961
49116
  }, p))]
48962
49117
  })]
48963
49118
  }),
@@ -48967,77 +49122,80 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
48967
49122
  /* @__PURE__ */ jsx(ToggleRow, {
48968
49123
  label: t("uiLibrary.dishwasher.halfLoad", "Half load"),
48969
49124
  checked: display.halfLoad,
49125
+ shown: link,
48970
49126
  busy: busy || optionTogglesLocked,
48971
- onChange: (on) => {
48972
- applyOptimistic({ halfLoad: on });
48973
- cap.setHalfLoad({ on });
48974
- }
49127
+ onChange: (on) => void cap.setHalfLoad({ on })
48975
49128
  }),
48976
49129
  /* @__PURE__ */ jsx(ToggleRow, {
48977
49130
  label: t("uiLibrary.dishwasher.hygienePlus", "Hygiene plus"),
48978
49131
  checked: display.hygienePlus,
49132
+ shown: link,
48979
49133
  busy: busy || optionTogglesLocked,
48980
- onChange: (on) => {
48981
- applyOptimistic({ hygienePlus: on });
48982
- cap.setHygienePlus({ on });
48983
- }
49134
+ onChange: (on) => void cap.setHygienePlus({ on })
48984
49135
  }),
48985
49136
  /* @__PURE__ */ jsx(ToggleRow, {
48986
49137
  label: t("uiLibrary.dishwasher.extraDry", "Extra dry"),
48987
49138
  checked: display.extraDry,
49139
+ shown: link,
48988
49140
  busy: busy || optionTogglesLocked,
48989
- onChange: (on) => {
48990
- applyOptimistic({ extraDry: on });
48991
- cap.setExtraDry({ on });
48992
- }
49141
+ onChange: (on) => void cap.setExtraDry({ on })
48993
49142
  }),
48994
49143
  /* @__PURE__ */ jsx(ToggleRow, {
48995
49144
  label: t("uiLibrary.dishwasher.intensiveZone", "Intensive zone"),
48996
49145
  checked: display.intensiveZone,
49146
+ shown: link,
48997
49147
  busy: busy || optionTogglesLocked,
48998
- onChange: (on) => {
48999
- applyOptimistic({ intensiveZone: on });
49000
- cap.setIntensiveZone({ on });
49001
- }
49148
+ onChange: (on) => void cap.setIntensiveZone({ on })
49002
49149
  }),
49003
49150
  /* @__PURE__ */ jsx(ToggleRow, {
49004
49151
  label: t("uiLibrary.dishwasher.varioSpeedPlus", "VarioSpeed+"),
49005
49152
  checked: display.varioSpeedPlus,
49153
+ shown: link,
49006
49154
  busy: busy || optionTogglesLocked,
49007
- onChange: (on) => {
49008
- applyOptimistic({ varioSpeedPlus: on });
49009
- cap.setVarioSpeedPlus({ on });
49010
- }
49155
+ onChange: (on) => void cap.setVarioSpeedPlus({ on })
49011
49156
  }),
49012
49157
  /* @__PURE__ */ jsx(ToggleRow, {
49013
49158
  label: t("uiLibrary.dishwasher.childLock", "Child lock"),
49014
49159
  checked: display.childLock,
49160
+ shown: link,
49015
49161
  busy,
49016
- onChange: (on) => {
49017
- applyOptimistic({ childLock: on });
49018
- cap.setChildLock({ on });
49019
- }
49162
+ onChange: (on) => void cap.setChildLock({ on })
49020
49163
  })
49021
49164
  ]
49022
49165
  })
49023
49166
  ]
49024
49167
  });
49025
49168
  }
49026
- 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;
49027
49177
  return /* @__PURE__ */ jsxs("label", {
49028
49178
  className: "inline-flex items-center gap-2 cursor-pointer",
49029
- children: [/* @__PURE__ */ jsx("input", {
49030
- type: "checkbox",
49031
- checked,
49032
- disabled: busy,
49033
- onChange: (e) => {
49034
- onChange(e.target.checked);
49035
- },
49036
- onClick: (e) => {
49037
- e.stopPropagation();
49038
- },
49039
- className: "rounded border-border"
49040
- }), /* @__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
+ ]
49041
49199
  });
49042
49200
  }
49043
49201
  function DishwasherInlineControl(props) {
@@ -54669,88 +54827,6 @@ function PageSizeSelect({ value, options, onChange, ariaLabel }) {
54669
54827
  });
54670
54828
  }
54671
54829
  //#endregion
54672
- //#region src/composites/device-list/multi-select.tsx
54673
- /**
54674
- * Compact multi-select dropdown — a single chip-sized trigger ("Label · N")
54675
- * that opens a checklist. Self-contained (outside-click / Escape dismiss), so
54676
- * it stays compressed regardless of how many options exist or how little
54677
- * horizontal room the container has. Shared by the device list's generic-mode
54678
- * type filter and any other multi-select needs.
54679
- */
54680
- function MultiSelectDropdown({ label, options, selected, onChange }) {
54681
- const t = useUiText();
54682
- const [open, setOpen] = useState(false);
54683
- const rootRef = useRef(null);
54684
- useEffect(() => {
54685
- if (!open) return;
54686
- const onOutside = (e) => {
54687
- const target = e.target instanceof Node ? e.target : null;
54688
- if (target && rootRef.current && !rootRef.current.contains(target)) setOpen(false);
54689
- };
54690
- const onKey = (e) => {
54691
- if (e.key === "Escape") setOpen(false);
54692
- };
54693
- document.addEventListener("mousedown", onOutside);
54694
- document.addEventListener("touchstart", onOutside);
54695
- document.addEventListener("keydown", onKey);
54696
- return () => {
54697
- document.removeEventListener("mousedown", onOutside);
54698
- document.removeEventListener("touchstart", onOutside);
54699
- document.removeEventListener("keydown", onKey);
54700
- };
54701
- }, [open]);
54702
- const selectedSet = new Set(selected);
54703
- const count = selected.length;
54704
- const toggle = (id) => {
54705
- const next = new Set(selectedSet);
54706
- if (next.has(id)) next.delete(id);
54707
- else next.add(id);
54708
- onChange(options.filter((o) => next.has(o.id)).map((o) => o.id));
54709
- };
54710
- return /* @__PURE__ */ jsxs("div", {
54711
- ref: rootRef,
54712
- className: "relative",
54713
- children: [/* @__PURE__ */ jsxs("button", {
54714
- type: "button",
54715
- onClick: () => setOpen((v) => !v),
54716
- "aria-haspopup": "listbox",
54717
- "aria-expanded": open,
54718
- 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"}`,
54719
- children: [/* @__PURE__ */ jsxs("span", { children: [label, count > 0 ? ` · ${String(count)}` : ""] }), /* @__PURE__ */ jsx(ChevronDown, { className: `h-3 w-3 transition-transform ${open ? "rotate-180" : ""}` })]
54720
- }), open && /* @__PURE__ */ jsxs("div", {
54721
- role: "listbox",
54722
- 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",
54723
- children: [count > 0 && /* @__PURE__ */ jsx("button", {
54724
- type: "button",
54725
- onClick: () => onChange([]),
54726
- 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",
54727
- children: t("uiLibrary.multiSelect.clear", "Clear selection")
54728
- }), options.map((o) => {
54729
- const active = selectedSet.has(o.id);
54730
- const Icon = o.icon;
54731
- return /* @__PURE__ */ jsxs("button", {
54732
- type: "button",
54733
- role: "option",
54734
- "aria-selected": active,
54735
- onClick: () => toggle(o.id),
54736
- className: "flex w-full items-center gap-2 px-3 py-1.5 text-left text-[10.5px] text-foreground hover:bg-surface-hover",
54737
- children: [
54738
- /* @__PURE__ */ jsx("span", {
54739
- className: `flex h-3.5 w-3.5 items-center justify-center rounded border shrink-0 ${active ? "border-primary bg-primary" : "border-border"}`,
54740
- children: active && /* @__PURE__ */ jsx(Check, { className: "h-2.5 w-2.5 text-primary-foreground" })
54741
- }),
54742
- Icon && /* @__PURE__ */ jsx(Icon, { className: "h-3.5 w-3.5 shrink-0 text-foreground-subtle" }),
54743
- /* @__PURE__ */ jsx("span", {
54744
- className: "truncate",
54745
- children: o.label
54746
- })
54747
- ]
54748
- }, o.id);
54749
- })]
54750
- })]
54751
- });
54752
- }
54753
- //#endregion
54754
54830
  //#region src/composites/device-list/type-filter.tsx
54755
54831
  /**
54756
54832
  * Shared, multi-select type filter that adapts to its OWN available width
@@ -59443,19 +59519,35 @@ function objectFromJson(text) {
59443
59519
  return null;
59444
59520
  }
59445
59521
  }
59446
- function RecordEntrySecretField({ label, required, value, disabled, onPatch }) {
59447
- const [shown, setShown] = useState(false);
59448
- 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 }) {
59449
59538
  return /* @__PURE__ */ jsx(FormField$1, {
59450
59539
  label,
59451
59540
  required,
59452
- children: /* @__PURE__ */ jsx(PasswordInput, {
59453
- value: secretDisplayValue(value),
59454
- onValueChange: (text) => onPatch(mergeSecretForSubmit(text, value)),
59455
- shown,
59456
- onToggleShown: () => setShown((s) => !s),
59457
- disabled,
59458
- 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
59459
59551
  })
59460
59552
  });
59461
59553
  }
@@ -59463,6 +59555,7 @@ function SchemaField(props) {
59463
59555
  const { path, name, node, value, secretPaths, required, disabled, onPatch } = props;
59464
59556
  const label = labelFor(name, node);
59465
59557
  if (isSecretField(path, secretPaths, node)) return /* @__PURE__ */ jsx(RecordEntrySecretField, {
59558
+ name,
59466
59559
  label,
59467
59560
  required,
59468
59561
  value,
@@ -59612,7 +59705,7 @@ function defaultBody(schema) {
59612
59705
  }
59613
59706
  return out;
59614
59707
  }
59615
- function RecordEntriesPanel({ kind }) {
59708
+ function RecordEntriesPanel({ kind, rowActions, extraColumns = [], showUpdated = true, minWidthPx }) {
59616
59709
  const t = useUiText();
59617
59710
  const queryClient = useQueryClient();
59618
59711
  const confirm = useConfirm();
@@ -59685,41 +59778,51 @@ function RecordEntriesPanel({ kind }) {
59685
59778
  })
59686
59779
  })
59687
59780
  },
59688
- {
59781
+ ...showUpdated ? [{
59689
59782
  key: "updated",
59690
59783
  header: t("uiLibrary.recordEntries.colUpdated", "Updated"),
59691
59784
  nowrap: true,
59692
59785
  render: (row) => /* @__PURE__ */ jsx("span", {
59693
59786
  className: "text-[11px] text-foreground-subtle",
59694
- children: new Date(row.updatedAt).toLocaleString()
59787
+ title: new Date(row.updatedAt).toLocaleString(),
59788
+ children: new Date(row.updatedAt).toLocaleDateString()
59695
59789
  })
59696
- },
59790
+ }] : [],
59791
+ ...extraColumns,
59697
59792
  {
59698
59793
  key: "actions",
59699
59794
  header: "",
59700
59795
  align: "right",
59701
59796
  nowrap: true,
59797
+ width: "w-px",
59702
59798
  render: (row) => /* @__PURE__ */ jsxs("span", {
59703
59799
  className: "flex justify-end gap-1",
59704
- children: [/* @__PURE__ */ jsx(Button, {
59705
- size: "sm",
59706
- variant: "ghost",
59707
- type: "button",
59708
- onClick: () => openEdit(row),
59709
- children: /* @__PURE__ */ jsx(Pencil, { className: "h-3.5 w-3.5" })
59710
- }), /* @__PURE__ */ jsx(Button, {
59711
- size: "sm",
59712
- variant: "ghost",
59713
- type: "button",
59714
- onClick: () => void onDelete(row),
59715
- children: /* @__PURE__ */ jsx(Trash2, { className: "h-3.5 w-3.5 text-danger" })
59716
- })]
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
+ ]
59717
59817
  })
59718
59818
  }
59719
59819
  ];
59720
59820
  }, [
59821
+ extraColumns,
59721
59822
  onDelete,
59722
59823
  openEdit,
59824
+ rowActions,
59825
+ showUpdated,
59723
59826
  t
59724
59827
  ]);
59725
59828
  const dialogOpen = formUrl.state.mode !== "closed";
@@ -59767,6 +59870,7 @@ function RecordEntriesPanel({ kind }) {
59767
59870
  title: t("uiLibrary.recordEntries.emptyTitle", "No entries yet"),
59768
59871
  description: t("uiLibrary.recordEntries.emptyDescription", "Add the first row for this kind.")
59769
59872
  }) : /* @__PURE__ */ jsx(DataTable, {
59873
+ ...minWidthPx !== void 0 ? { minWidthPx } : {},
59770
59874
  columns,
59771
59875
  rows: entries,
59772
59876
  rowKey: (r) => r.id,
@@ -59797,73 +59901,6 @@ function RecordEntriesPanel({ kind }) {
59797
59901
  });
59798
59902
  }
59799
59903
  //#endregion
59800
- //#region src/composites/record-entries/record-entries-hub.tsx
59801
- var RECORD_ENTRY_OWNER_PARAM = "entryOwner";
59802
- var RECORD_ENTRY_KIND_PARAM = "entryKind";
59803
- function kindKey$1(k) {
59804
- return `${k.owner}/${k.kind}`;
59805
- }
59806
- function RecordEntriesHub({ filter }) {
59807
- const t = useUiText();
59808
- const kindsQuery = useRecordEntriesListEntryKinds({}, { staleTime: 3e4 });
59809
- const [ownerParam, setOwner] = useUrlQueryParam(RECORD_ENTRY_OWNER_PARAM);
59810
- const [kindParam, setKind] = useUrlQueryParam(RECORD_ENTRY_KIND_PARAM);
59811
- const kinds = useMemo(() => {
59812
- return (kindsQuery.data?.kinds ?? []).filter((k) => {
59813
- if (filter?.owner !== void 0 && k.owner !== filter.owner) return false;
59814
- if (filter?.kind !== void 0 && k.kind !== filter.kind) return false;
59815
- return true;
59816
- });
59817
- }, [
59818
- filter?.kind,
59819
- filter?.owner,
59820
- kindsQuery.data?.kinds
59821
- ]);
59822
- const active = useMemo(() => {
59823
- if (kinds.length === 0) return null;
59824
- return kinds.find((k) => k.owner === ownerParam && k.kind === kindParam) ?? kinds[0] ?? null;
59825
- }, [
59826
- kindParam,
59827
- kinds,
59828
- ownerParam
59829
- ]);
59830
- const selectKind = (k) => {
59831
- setOwner(k.owner);
59832
- setKind(k.kind);
59833
- };
59834
- if (kindsQuery.isError) return /* @__PURE__ */ jsx(ErrorBox, { message: kindsQuery.error instanceof Error ? kindsQuery.error.message : t("uiLibrary.recordEntries.kindsFailed", "Could not load entry kinds") });
59835
- if (kindsQuery.isPending) return /* @__PURE__ */ jsx("div", {
59836
- className: "flex justify-center py-10 text-foreground-subtle",
59837
- children: /* @__PURE__ */ jsx(LoaderCircle, { className: "h-5 w-5 animate-spin" })
59838
- });
59839
- if (kinds.length === 0) return /* @__PURE__ */ jsx(EmptyState, {
59840
- title: t("uiLibrary.recordEntries.noKindsTitle", "No entry kinds"),
59841
- description: t("uiLibrary.recordEntries.noKindsDescription", "No addon has declared an entry record kind yet.")
59842
- });
59843
- const activeKey = active === null ? "" : kindKey$1(active);
59844
- return /* @__PURE__ */ jsxs("div", {
59845
- className: "space-y-4",
59846
- children: [kinds.length > 1 && /* @__PURE__ */ jsx(Tabs, {
59847
- appearance: "pills",
59848
- value: activeKey,
59849
- onValueChange: (key) => {
59850
- const found = kinds.find((k) => kindKey$1(k) === key);
59851
- if (found !== void 0) selectKind(found);
59852
- },
59853
- children: /* @__PURE__ */ jsx(TabsList, {
59854
- className: "flex flex-wrap gap-1",
59855
- children: kinds.map((k) => /* @__PURE__ */ jsxs(TabsTrigger, {
59856
- value: kindKey$1(k),
59857
- children: [k.title, k.rows > 0 ? ` (${k.rows})` : ""]
59858
- }, kindKey$1(k)))
59859
- })
59860
- }), active !== null && /* @__PURE__ */ jsxs("div", { children: [kinds.length === 1 && /* @__PURE__ */ jsx("h3", {
59861
- className: "mb-2 text-sm font-semibold text-foreground",
59862
- children: active.title
59863
- }), /* @__PURE__ */ jsx(RecordEntriesPanel, { kind: active })] })]
59864
- });
59865
- }
59866
- //#endregion
59867
59904
  //#region src/composites/storage-records/storage-records-panel.tsx
59868
59905
  function StorageRecordsPanel({ kind }) {
59869
59906
  const t = useUiText();
@@ -59987,47 +60024,143 @@ function StorageRecordsPanel({ kind }) {
59987
60024
  });
59988
60025
  }
59989
60026
  //#endregion
59990
- //#region src/composites/storage-records/storage-records-hub.tsx
59991
- var STORAGE_RECORDS_OWNER_PARAM = "recordsOwner";
59992
- var STORAGE_RECORDS_KIND_PARAM = "recordsKind";
59993
- function kindKey(k) {
59994
- 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}`;
59995
60030
  }
60031
+ function dataRecordType(kind) {
60032
+ return kind.entry ? "entry" : "record";
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";
59996
60096
  function formatBytes(n) {
59997
60097
  if (n === null) return "—";
59998
60098
  if (n < 1024) return `${n} B`;
59999
60099
  if (n < 1024 * 1024) return `${(n / 1024).toFixed(1)} KiB`;
60000
60100
  return `${(n / (1024 * 1024)).toFixed(1)} MiB`;
60001
60101
  }
60002
- 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() {
60003
60147
  const t = useUiText();
60004
60148
  const kindsQuery = trpc.storageAdmin.listKinds.useQuery({}, { staleTime: 3e4 });
60005
- const [ownerParam, setOwner] = useUrlQueryParam(STORAGE_RECORDS_OWNER_PARAM);
60006
- const [kindParam, setKind] = useUrlQueryParam(STORAGE_RECORDS_KIND_PARAM);
60007
- const kinds = kindsQuery.data?.kinds ?? [];
60008
- const filter = useDataTableFilter(kinds, {
60009
- searchText: (row) => [
60010
- row.owner,
60011
- row.kind,
60012
- row.class,
60013
- row.database,
60014
- row.state
60015
- ],
60016
- facetGroups: [{
60017
- id: "owner",
60018
- value: (row) => row.owner
60019
- }, {
60020
- id: "database",
60021
- value: (row) => row.database
60022
- }]
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
60023
60157
  });
60024
60158
  const active = useMemo(() => {
60025
- if (kinds.length === 0) return null;
60026
- 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;
60027
60160
  }, [
60028
60161
  kindParam,
60029
- kinds,
60030
- ownerParam
60162
+ ownerParam,
60163
+ rows
60031
60164
  ]);
60032
60165
  const selectKind = useCallback((k) => {
60033
60166
  setOwner(k.owner);
@@ -60037,72 +60170,87 @@ function StorageRecordsHub() {
60037
60170
  return [
60038
60171
  {
60039
60172
  key: "kind",
60040
- header: t("uiLibrary.storageRecords.colKind", "Kind"),
60173
+ header: t("uiLibrary.dataRecords.colKind", "Kind"),
60041
60174
  render: (row) => /* @__PURE__ */ jsxs("span", {
60042
- className: "font-mono text-xs",
60043
- children: [
60044
- row.owner,
60045
- "/",
60046
- row.kind
60047
- ]
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]
60048
60183
  }),
60049
- sortValue: (row) => kindKey(row)
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")
60196
+ }),
60197
+ sortValue: (row) => row.kind.entry ? "entry" : "record"
60050
60198
  },
60051
60199
  {
60052
60200
  key: "database",
60053
- header: t("uiLibrary.storageRecords.colDatabase", "DB"),
60201
+ header: t("uiLibrary.dataRecords.colDatabase", "DB"),
60054
60202
  nowrap: true,
60055
60203
  render: (row) => /* @__PURE__ */ jsx(Badge, {
60056
60204
  variant: "neutral",
60057
60205
  style: "outline",
60058
- children: row.database
60206
+ children: row.kind.database
60059
60207
  }),
60060
- sortValue: (row) => row.database
60208
+ sortValue: (row) => row.kind.database
60061
60209
  },
60062
60210
  {
60063
60211
  key: "class",
60064
- header: t("uiLibrary.storageRecords.colClass", "Class"),
60212
+ header: t("uiLibrary.dataRecords.colClass", "Class"),
60065
60213
  nowrap: true,
60066
60214
  render: (row) => /* @__PURE__ */ jsx("span", {
60067
60215
  className: "text-xs text-foreground-muted",
60068
- children: row.class
60216
+ children: row.kind.class
60069
60217
  }),
60070
- sortValue: (row) => row.class
60218
+ sortValue: (row) => row.kind.class
60071
60219
  },
60072
60220
  {
60073
60221
  key: "state",
60074
- header: t("uiLibrary.storageRecords.colState", "State"),
60222
+ header: t("uiLibrary.dataRecords.colState", "State"),
60075
60223
  nowrap: true,
60076
60224
  render: (row) => /* @__PURE__ */ jsx(Badge, {
60077
- variant: row.state === "declared" ? "default" : "neutral",
60078
- children: row.state
60225
+ variant: row.kind.state === "declared" ? "default" : "neutral",
60226
+ children: row.kind.state
60079
60227
  }),
60080
- sortValue: (row) => row.state
60228
+ sortValue: (row) => row.kind.state
60081
60229
  },
60082
60230
  {
60083
60231
  key: "rows",
60084
- header: t("uiLibrary.storageRecords.colRows", "Rows"),
60232
+ header: t("uiLibrary.dataRecords.colRows", "Rows"),
60085
60233
  align: "right",
60086
60234
  nowrap: true,
60087
60235
  render: (row) => /* @__PURE__ */ jsx("span", {
60088
60236
  className: "font-mono text-xs tabular-nums",
60089
- children: row.rows === null ? "—" : row.rows
60237
+ children: row.kind.rows === null ? "—" : row.kind.rows
60090
60238
  }),
60091
- sortValue: (row) => row.rows ?? -1
60239
+ sortValue: (row) => row.kind.rows ?? -1
60092
60240
  },
60093
60241
  {
60094
60242
  key: "bytes",
60095
- header: t("uiLibrary.storageRecords.colSize", "Est. size"),
60243
+ header: t("uiLibrary.dataRecords.colSize", "Est. size"),
60096
60244
  align: "right",
60097
60245
  nowrap: true,
60098
60246
  render: (row) => /* @__PURE__ */ jsx("span", {
60099
60247
  className: "text-xs text-foreground-subtle",
60100
- children: formatBytes(row.bytesEstimate)
60248
+ children: formatBytes(row.kind.bytesEstimate)
60101
60249
  }),
60102
- sortValue: (row) => row.bytesEstimate ?? -1
60250
+ sortValue: (row) => row.kind.bytesEstimate ?? -1
60103
60251
  },
60104
60252
  {
60105
- key: "inspect",
60253
+ key: "open",
60106
60254
  header: "",
60107
60255
  align: "right",
60108
60256
  nowrap: true,
@@ -60110,12 +60258,12 @@ function StorageRecordsHub() {
60110
60258
  return /* @__PURE__ */ jsx(Button, {
60111
60259
  type: "button",
60112
60260
  size: "sm",
60113
- variant: active !== null && kindKey(active) === kindKey(row) ? "primary" : "outline",
60114
- onClick: () => selectKind(row),
60115
- 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")
60116
60264
  });
60117
60265
  },
60118
- notSortableReason: t("uiLibrary.storageRecords.actionColumn", "Actions")
60266
+ notSortableReason: t("uiLibrary.dataRecords.actionColumn", "Actions")
60119
60267
  }
60120
60268
  ];
60121
60269
  }, [
@@ -60123,14 +60271,14 @@ function StorageRecordsHub() {
60123
60271
  selectKind,
60124
60272
  t
60125
60273
  ]);
60126
- 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") });
60127
60275
  if (kindsQuery.isPending) return /* @__PURE__ */ jsx("div", {
60128
60276
  className: "flex justify-center py-10 text-foreground-subtle",
60129
60277
  children: /* @__PURE__ */ jsx(LoaderCircle, { className: "h-5 w-5 animate-spin" })
60130
60278
  });
60131
- if (kinds.length === 0) return /* @__PURE__ */ jsx(EmptyState, {
60132
- title: t("uiLibrary.storageRecords.noKindsTitle", "No record kinds"),
60133
- 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.")
60134
60282
  });
60135
60283
  return /* @__PURE__ */ jsxs("div", {
60136
60284
  className: "space-y-4",
@@ -60140,13 +60288,15 @@ function StorageRecordsHub() {
60140
60288
  facets: filter.facets,
60141
60289
  groups: filter.groups.map((g) => ({
60142
60290
  ...g,
60143
- 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)
60144
60294
  })),
60145
60295
  labels: {
60146
- searchPlaceholder: t("uiLibrary.storageRecords.search", "Search kinds…"),
60147
- searchLabel: t("uiLibrary.storageRecords.searchLabel", "Search record kinds"),
60148
- facetsLabel: t("uiLibrary.storageRecords.facetsLabel", "Filter record kinds"),
60149
- 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")
60150
60300
  },
60151
60301
  onSearch: filter.setSearch,
60152
60302
  onToggleFacet: filter.toggleFacet,
@@ -60156,15 +60306,20 @@ function StorageRecordsHub() {
60156
60306
  /* @__PURE__ */ jsx(DataTable, {
60157
60307
  columns,
60158
60308
  rows: filter.rows,
60159
- rowKey: (k) => kindKey(k),
60309
+ rowKey: (r) => dataRecordKey(r.kind),
60160
60310
  maxBodyHeight: TABLE_SCROLL_MAX_H,
60161
60311
  defaultSort: {
60162
60312
  columnKey: "kind",
60163
60313
  dir: "asc"
60164
60314
  },
60165
- emptyMessage: t("uiLibrary.storageRecords.noMatch", "No kinds match the filter")
60315
+ emptyMessage: t("uiLibrary.dataRecords.noMatch", "No kinds match the filter")
60166
60316
  }),
60167
- 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
60168
60323
  ]
60169
60324
  });
60170
60325
  }
@@ -64449,4 +64604,4 @@ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-30H29vN4.js").t
64449
64604
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
64450
64605
  var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-C9wfHkiB.js").then((m) => ({ default: m.PrivacyMaskSettings })));
64451
64606
  //#endregion
64452
- 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, 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, 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 };