@camstack/ui-library 1.2.245 → 1.2.246

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
@@ -1683,41 +1683,6 @@ var CookingPot = createLucideIcon("cooking-pot", [
1683
1683
  * This source code is licensed under the ISC license.
1684
1684
  * See the LICENSE file in the root directory of this source tree.
1685
1685
  */
1686
- var CopyPlus = createLucideIcon("copy-plus", [
1687
- ["line", {
1688
- x1: "15",
1689
- x2: "15",
1690
- y1: "12",
1691
- y2: "18",
1692
- key: "1p7wdc"
1693
- }],
1694
- ["line", {
1695
- x1: "12",
1696
- x2: "18",
1697
- y1: "15",
1698
- y2: "15",
1699
- key: "1nscbv"
1700
- }],
1701
- ["rect", {
1702
- width: "14",
1703
- height: "14",
1704
- x: "8",
1705
- y: "8",
1706
- rx: "2",
1707
- ry: "2",
1708
- key: "17jyea"
1709
- }],
1710
- ["path", {
1711
- d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",
1712
- key: "zix9uf"
1713
- }]
1714
- ]);
1715
- /**
1716
- * @license lucide-react v0.576.0 - ISC
1717
- *
1718
- * This source code is licensed under the ISC license.
1719
- * See the LICENSE file in the root directory of this source tree.
1720
- */
1721
1686
  var Copy = createLucideIcon("copy", [["rect", {
1722
1687
  width: "14",
1723
1688
  height: "14",
@@ -7890,14 +7855,6 @@ var usePipelineExecutorGetGlobalPipelineConfig = trpc.pipelineExecutor.getGlobal
7890
7855
  var usePipelineExecutorGetOrchestratorConfigSchema = trpc.pipelineExecutor.getOrchestratorConfigSchema.useQuery;
7891
7856
  /** Generated alias around `trpc.pipelineExecutor.validatePipeline.useQuery`. */
7892
7857
  var usePipelineExecutorValidatePipeline = trpc.pipelineExecutor.validatePipeline.useQuery;
7893
- /** Generated alias around `trpc.pipelineExecutor.listTemplates.useQuery`. */
7894
- var usePipelineExecutorListTemplates = trpc.pipelineExecutor.listTemplates.useQuery;
7895
- /** Generated alias around `trpc.pipelineExecutor.saveTemplate.useMutation`. */
7896
- var usePipelineExecutorSaveTemplate = trpc.pipelineExecutor.saveTemplate.useMutation;
7897
- /** Generated alias around `trpc.pipelineExecutor.updateTemplate.useMutation`. */
7898
- var usePipelineExecutorUpdateTemplate = trpc.pipelineExecutor.updateTemplate.useMutation;
7899
- /** Generated alias around `trpc.pipelineExecutor.deleteTemplate.useMutation`. */
7900
- var usePipelineExecutorDeleteTemplate = trpc.pipelineExecutor.deleteTemplate.useMutation;
7901
7858
  /** Generated alias around `trpc.pipelineExecutor.getCapabilities.useQuery`. */
7902
7859
  var usePipelineExecutorGetCapabilities = trpc.pipelineExecutor.getCapabilities.useQuery;
7903
7860
  /** Generated alias around `trpc.pipelineExecutor.getAddonModels.useQuery`. */
@@ -8044,14 +8001,6 @@ var usePipelineOrchestratorSetCameraSensors = trpc.pipelineOrchestrator.setCamer
8044
8001
  var usePipelineOrchestratorReconcileFromDisk = trpc.pipelineOrchestrator.reconcileFromDisk.useMutation;
8045
8002
  /** Generated alias around `trpc.pipelineOrchestrator.getReconcileFromDiskStatus.useQuery`. */
8046
8003
  var usePipelineOrchestratorGetReconcileFromDiskStatus = trpc.pipelineOrchestrator.getReconcileFromDiskStatus.useQuery;
8047
- /** Generated alias around `trpc.pipelineOrchestrator.listTemplates.useQuery`. */
8048
- var usePipelineOrchestratorListTemplates = trpc.pipelineOrchestrator.listTemplates.useQuery;
8049
- /** Generated alias around `trpc.pipelineOrchestrator.saveTemplate.useMutation`. */
8050
- var usePipelineOrchestratorSaveTemplate = trpc.pipelineOrchestrator.saveTemplate.useMutation;
8051
- /** Generated alias around `trpc.pipelineOrchestrator.updateTemplate.useMutation`. */
8052
- var usePipelineOrchestratorUpdateTemplate = trpc.pipelineOrchestrator.updateTemplate.useMutation;
8053
- /** Generated alias around `trpc.pipelineOrchestrator.deleteTemplate.useMutation`. */
8054
- var usePipelineOrchestratorDeleteTemplate = trpc.pipelineOrchestrator.deleteTemplate.useMutation;
8055
8004
  /** Generated alias around `trpc.pipelineOrchestrator.getDeviceSettingsContribution.useQuery`. */
8056
8005
  var usePipelineOrchestratorGetDeviceSettingsContribution = trpc.pipelineOrchestrator.getDeviceSettingsContribution.useQuery;
8057
8006
  /** Generated alias around `trpc.pipelineOrchestrator.getDeviceLiveContribution.useQuery`. */
@@ -28722,6 +28671,45 @@ function AddonGlobalSettingsForm({ trpc, addonId, nodeId, title, disabled, onAft
28722
28671
  });
28723
28672
  }
28724
28673
  //#endregion
28674
+ //#region src/composites/accelerator-label.ts
28675
+ function names(device) {
28676
+ const backend = device.backend.toLowerCase();
28677
+ const dev = device.device.toLowerCase();
28678
+ if (device.key === "cpu" || dev === "cpu" || backend === "cpu") return {
28679
+ label: "CPU",
28680
+ short: "CPU"
28681
+ };
28682
+ if (dev === "npu") return {
28683
+ label: "Intel NPU",
28684
+ short: "NPU"
28685
+ };
28686
+ if (dev === "gpu" || dev === "igpu") return {
28687
+ label: "Intel iGPU",
28688
+ short: "iGPU"
28689
+ };
28690
+ if (backend === "edgetpu") return {
28691
+ label: "Coral Edge TPU",
28692
+ short: "Coral"
28693
+ };
28694
+ if (backend === "coreml") return {
28695
+ label: "Apple Neural Engine",
28696
+ short: "ANE"
28697
+ };
28698
+ const pretty = `${device.backend} ${device.device}`.trim().replace(/\b\w/g, (c) => c.toUpperCase());
28699
+ return {
28700
+ label: pretty.length > 0 ? pretty : device.key,
28701
+ short: device.backend || device.key
28702
+ };
28703
+ }
28704
+ /** "Intel NPU", "Apple Neural Engine", "Coral Edge TPU", "CPU" — Auto tune's names too. */
28705
+ function acceleratorLabel(device) {
28706
+ return names(device).label;
28707
+ }
28708
+ /** "NPU", "ANE", "Coral", "CPU" — chips and tabs. */
28709
+ function acceleratorShortLabel(device) {
28710
+ return names(device).short;
28711
+ }
28712
+ //#endregion
28725
28713
  //#region src/composites/grouped-model-selector.tsx
28726
28714
  /**
28727
28715
  * GroupedModelSelector — the shared Family → Tier → Variant model picker.
@@ -29949,9 +29937,9 @@ function RootSuppliedModelNote({ rootModel, stepModelId }) {
29949
29937
  /**
29950
29938
  * AgentStepEditor — one step on ONE accelerator: its model and its settings,
29951
29939
  * as a single node-level layer. Model Studio's "settings for this installed
29952
- * model" dialog uses it. The pipeline pages use the step inspector, which lays
29953
- * the same parts out across accelerators and layers (D754/D756); the settings
29954
- * form here is that inspector's `LayeredSettingsForm` with one layer.
29940
+ * model" dialog uses it. The pipeline pages use the step matrix's panel, which lays
29941
+ * the same parts out across accelerators and layers (D754/D757); the settings
29942
+ * form here is that panel's `LayeredSettingsForm` with one layer.
29955
29943
  */
29956
29944
  function AgentStepEditor({ addon, agentDefault, onChangeAgentConfig, engineFormat, effectiveModelId, rootModel }) {
29957
29945
  const modelsForFormat = useMemo(() => stepModelOptions(addon.models, engineFormat), [addon.models, engineFormat]);
@@ -55381,25 +55369,46 @@ function ClassChips({ inputs, outputs }) {
55381
55369
  * the first column; each device's real format is shown per sub-column instead
55382
55370
  * ("Coral Edge TPU · tflite").
55383
55371
  */
55372
+ /** The per-accelerator lines of a column header: name, format, model, off. */
55373
+ function AgentColumnLines({ column }) {
55374
+ const name = column.deviceLabel ?? column.deviceKey;
55375
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [
55376
+ (name !== void 0 || column.disabled === true) && /* @__PURE__ */ jsxs("div", {
55377
+ className: "flex min-w-0 items-center gap-1",
55378
+ children: [name !== void 0 && /* @__PURE__ */ jsx("span", {
55379
+ className: "truncate text-[10px] font-medium text-foreground/90",
55380
+ children: name
55381
+ }), column.disabled === true && /* @__PURE__ */ jsx("span", {
55382
+ className: "shrink-0 rounded bg-muted px-1 text-[8px] font-semibold uppercase text-foreground-subtle",
55383
+ children: "off"
55384
+ })]
55385
+ }),
55386
+ /* @__PURE__ */ jsx("div", {
55387
+ className: "truncate text-[9px] text-foreground-subtle",
55388
+ children: column.engineLabel
55389
+ }),
55390
+ column.detail !== void 0 && /* @__PURE__ */ jsx("div", {
55391
+ className: "truncate font-mono text-[9px] text-foreground-subtle",
55392
+ title: column.detail,
55393
+ children: column.detail
55394
+ })
55395
+ ] });
55396
+ }
55384
55397
  function GroupedAgentHeader({ group }) {
55398
+ const nodeLabel = group.columns[0]?.nodeLabel ?? group.agentNodeId;
55385
55399
  return /* @__PURE__ */ jsxs("div", {
55400
+ role: "columnheader",
55386
55401
  className: "sticky top-0 z-10 min-w-0 border-b border-l border-border bg-muted/60",
55387
55402
  style: { gridColumn: `span ${group.columns.length}` },
55388
55403
  children: [/* @__PURE__ */ jsx("div", {
55389
55404
  className: "truncate px-3 pt-2 pb-1 text-xs font-semibold text-foreground",
55390
- children: group.agentNodeId
55405
+ children: nodeLabel
55391
55406
  }), /* @__PURE__ */ jsx("div", {
55392
55407
  className: "mt-1 flex border-t border-border/50",
55393
- children: group.columns.map((c, i) => /* @__PURE__ */ jsxs("div", {
55394
- className: cn("min-w-0 flex-1 px-3 py-1", i > 0 && "border-l border-border/50"),
55395
- title: `${c.deviceLabel ?? c.deviceKey} · ${c.engineLabel}`,
55396
- children: [/* @__PURE__ */ jsx("div", {
55397
- className: "truncate text-[10px] font-medium text-foreground/90",
55398
- children: c.deviceLabel ?? c.deviceKey
55399
- }), /* @__PURE__ */ jsx("div", {
55400
- className: "truncate text-[9px] text-foreground-subtle",
55401
- children: c.engineLabel
55402
- })]
55408
+ children: group.columns.map((c, i) => /* @__PURE__ */ jsx("div", {
55409
+ className: cn("min-w-0 flex-1 px-3 py-1", i > 0 && "border-l border-border/50", c.disabled === true && "opacity-70"),
55410
+ title: `${c.deviceLabel ?? c.deviceKey} · ${c.engineLabel}${c.detail ? ` · ${c.detail}` : ""}`,
55411
+ children: /* @__PURE__ */ jsx(AgentColumnLines, { column: c })
55403
55412
  }, agentColumnKey(c)))
55404
55413
  })]
55405
55414
  });
@@ -55503,25 +55512,30 @@ function cellButtonClass(state, isSelected, extra) {
55503
55512
  //#endregion
55504
55513
  //#region src/composites/device-step-matrix.tsx
55505
55514
  /**
55506
- * DeviceStepMatrix — the READ-ONLY "Compare" view of the step inspector
55507
- * (D756): one hierarchical steps × accelerators matrix showing what every
55508
- * accelerator runs for every step, side by side.
55509
- *
55510
- * Column 1 (STICKY): the indented step tree (slot + name + class-flow chips).
55511
- * Columns 2..N (one per accelerator): the model chip, "⚠ skip" when the step
55512
- * runs on the camera but the accelerator has no compatible model, or "—".
55513
- * A click selects that (step, accelerator) in the inspector — the matrix
55514
- * itself edits nothing (it used to host a slide-over editor that scrolled
55515
- * away with the page).
55516
- *
55517
- * Responsive, container-measured (never a global media query, so it also works
55518
- * embedded):
55519
- * A) wide — sticky step column + node columns in an `overflow-x:auto` box, so
55520
- * narrow viewports scroll the NODES sideways while col-1 stays pinned and
55521
- * the page body never scrolls horizontally.
55522
- * B) narrow — below the width needed for ≥2 node columns, collapse to a
55523
- * single-node view: a node selector picks ONE node and the matrix renders
55524
- * `step-tree × that-one-node`.
55515
+ * DeviceStepMatrix — the step × accelerator TABLE of a detection pipeline
55516
+ * (D757): the node's Pipeline tab and the camera's Detection pipeline → Steps
55517
+ * are this matrix, and a click on a cell (or a step's header) opens that step's
55518
+ * settings in a docked panel (`StepDetailDock`) that overlays the page instead
55519
+ * of reflowing the matrix.
55520
+ *
55521
+ * Column 1 (STICKY): the indented step tree — slot, name, class-flow chips,
55522
+ * and an optional badge (the camera's gate). The header is a button: it
55523
+ * opens the step on the selected accelerator.
55524
+ * Columns 2..N: one per accelerator, grouped under their node; the header
55525
+ * names the accelerator, its format, the model it elects, and "off" for a
55526
+ * switched-off one. A cell shows the model that runs there, or "⚠ skip",
55527
+ * "→ iGPU", "root", "cluster", "ovr", "—".
55528
+ *
55529
+ * Keyboard: ONE Tab stop (a roving tabindex over the step headers and cells);
55530
+ * arrows move, Home / End go to the row's ends, Enter or Space opens.
55531
+ *
55532
+ * `reserveRightPx`: the width a docked panel covers at the right of the
55533
+ * viewport. The matrix adds a trailing spacer that wide (so any column can
55534
+ * scroll clear of it) and scrolls the selected cell into the uncovered part —
55535
+ * it never shrinks, so nothing reflows when the panel opens.
55536
+ *
55537
+ * Responsive, container-measured: narrower than the step column plus two
55538
+ * columns, the matrix shows ONE node at a time with a node selector.
55525
55539
  */
55526
55540
  /** The sticky step column. */
55527
55541
  var STEP_COL_REM = 18;
@@ -55532,11 +55546,41 @@ var STEP_COL_PX = STEP_COL_REM * 16;
55532
55546
  * step column and lets the device columns scroll horizontally beside it.
55533
55547
  */
55534
55548
  var STEP_COL_SINGLE_REM = 11;
55535
- function StepCell({ node, depth }) {
55549
+ /** Where a key press moves the roving focus in a `rows × cols` grid. */
55550
+ function nextGridPosition(key, pos, rows, cols) {
55551
+ const clamp = (r, c) => ({
55552
+ r: Math.max(0, Math.min(rows - 1, r)),
55553
+ c: Math.max(0, Math.min(cols - 1, c))
55554
+ });
55555
+ switch (key) {
55556
+ case "ArrowRight": return clamp(pos.r, pos.c + 1);
55557
+ case "ArrowLeft": return clamp(pos.r, pos.c - 1);
55558
+ case "ArrowDown": return clamp(pos.r + 1, pos.c);
55559
+ case "ArrowUp": return clamp(pos.r - 1, pos.c);
55560
+ case "Home": return clamp(pos.r, 0);
55561
+ case "End": return clamp(pos.r, cols - 1);
55562
+ case "PageDown": return clamp(rows - 1, pos.c);
55563
+ case "PageUp": return clamp(0, pos.c);
55564
+ default: return null;
55565
+ }
55566
+ }
55567
+ function StepCell({ node, depth, r, tabbable, selected, badge, onClick, sticky }) {
55536
55568
  return /* @__PURE__ */ jsx("div", {
55537
- className: "sticky left-0 z-10 flex flex-col gap-2 border-b border-border bg-surface px-3 py-2 text-xs min-w-0",
55538
- style: { paddingLeft: `${12 + depth * 14}px` },
55539
- children: /* @__PURE__ */ jsx(StepLabel, { node })
55569
+ role: "rowheader",
55570
+ className: cn("min-w-0 border-b border-border bg-surface", sticky && "sticky left-0 z-10"),
55571
+ children: /* @__PURE__ */ jsxs("button", {
55572
+ type: "button",
55573
+ "data-r": r,
55574
+ "data-c": 0,
55575
+ "data-step": node.addonId,
55576
+ "data-col": "",
55577
+ tabIndex: tabbable ? 0 : -1,
55578
+ "aria-current": selected ? "true" : void 0,
55579
+ onClick: onClick ? (e) => onClick(e.detail === 0) : void 0,
55580
+ className: cn("flex h-full w-full min-w-0 items-start gap-2 px-3 py-2 text-left text-xs outline-none", "hover:bg-muted/40 focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary", selected && "bg-primary/10 shadow-[inset_3px_0_0_var(--color-primary)]"),
55581
+ style: { paddingLeft: `${12 + depth * 14}px` },
55582
+ children: [/* @__PURE__ */ jsx(StepLabel, { node }), badge]
55583
+ })
55540
55584
  });
55541
55585
  }
55542
55586
  /**
@@ -55566,68 +55610,179 @@ function NodeSelectorBar({ nodes, selected, onSelect }) {
55566
55610
  role: "tab",
55567
55611
  "aria-selected": isSelected,
55568
55612
  onClick: () => onSelect(a.agentNodeId),
55569
- title: `${a.agentNodeId} · ${a.engineLabel}`,
55613
+ title: `${a.columns[0]?.nodeLabel ?? a.agentNodeId} · ${a.engineLabel}`,
55570
55614
  className: cn("px-2.5 py-1 transition-colors", isSelected ? "bg-primary/15 text-primary" : "bg-transparent text-foreground-subtle hover:bg-surface-hover hover:text-foreground", idx > 0 && "border-l border-border"),
55571
- children: a.agentNodeId
55615
+ children: a.columns[0]?.nodeLabel ?? a.agentNodeId
55572
55616
  }, a.agentNodeId);
55573
55617
  })
55574
55618
  })
55575
55619
  ]
55576
55620
  });
55577
55621
  }
55578
- function MatrixGrid({ tree, agents, getCellState, onCellClick, selectedCell, single }) {
55622
+ var MatrixGrid = forwardRef(function MatrixGrid({ tree, agents, getCellState, onCellClick, onStepClick, stepBadge, selectedCell, single, reserveRightPx, label }, ref) {
55579
55623
  const rows = useMemo(() => flattenTree(tree), [tree]);
55580
55624
  const groups = useMemo(() => groupAgentColumns(agents), [agents]);
55625
+ const boxRef = useRef(null);
55626
+ const stepColRem = single ? STEP_COL_SINGLE_REM : STEP_COL_REM;
55627
+ const gridTemplate = `${stepColRem}rem repeat(${agents.length}, 13rem)`;
55628
+ const cols = agents.length + 1;
55629
+ const [stickySteps, setStickySteps] = useState(true);
55630
+ useLayoutEffect(() => {
55631
+ const box = boxRef.current;
55632
+ if (!box || reserveRightPx <= 0) {
55633
+ setStickySteps(true);
55634
+ return;
55635
+ }
55636
+ const measure = () => {
55637
+ const left = box.getBoundingClientRect().left;
55638
+ setStickySteps(window.innerWidth - reserveRightPx - left >= stepColRem * 16 + 208 + 24);
55639
+ };
55640
+ measure();
55641
+ window.addEventListener("resize", measure);
55642
+ return () => window.removeEventListener("resize", measure);
55643
+ }, [reserveRightPx, stepColRem]);
55644
+ const selectedPos = useMemo(() => {
55645
+ if (selectedCell === null) return null;
55646
+ const r = rows.findIndex((row) => row.node.addonId === selectedCell.addonId);
55647
+ if (r < 0) return null;
55648
+ const c = agents.findIndex((a) => agentColumnKey(a) === agentColumnKey(selectedCell));
55649
+ return {
55650
+ r,
55651
+ c: c < 0 ? 0 : c + 1
55652
+ };
55653
+ }, [
55654
+ selectedCell,
55655
+ rows,
55656
+ agents
55657
+ ]);
55658
+ const [focusPos, setFocusPos] = useState({
55659
+ r: 0,
55660
+ c: 0
55661
+ });
55662
+ useEffect(() => {
55663
+ if (selectedPos !== null) setFocusPos(selectedPos);
55664
+ }, [selectedPos]);
55665
+ const tab = focusPos.r < rows.length && focusPos.c < cols ? focusPos : {
55666
+ r: 0,
55667
+ c: 0
55668
+ };
55669
+ const focusAt = (r, c) => {
55670
+ boxRef.current?.querySelector(`[data-r="${r}"][data-c="${c}"]`)?.focus();
55671
+ };
55672
+ useImperativeHandle(ref, () => ({ focusCell: (addonId, columnKey) => {
55673
+ const r = rows.findIndex((row) => row.node.addonId === addonId);
55674
+ if (r < 0) return;
55675
+ const index = columnKey === null ? -1 : agents.findIndex((a) => agentColumnKey(a) === columnKey);
55676
+ const c = index < 0 ? 0 : index + 1;
55677
+ setFocusPos({
55678
+ r,
55679
+ c
55680
+ });
55681
+ focusAt(r, c);
55682
+ } }), [rows, agents]);
55683
+ useLayoutEffect(() => {
55684
+ if (selectedPos === null) return;
55685
+ const box = boxRef.current;
55686
+ const el = box?.querySelector(`[data-r="${selectedPos.r}"][data-c="${selectedPos.c}"]`);
55687
+ if (!box || !el) return;
55688
+ if (typeof el.scrollIntoView === "function") el.scrollIntoView({
55689
+ block: "nearest",
55690
+ inline: "nearest"
55691
+ });
55692
+ if (reserveRightPx <= 0) return;
55693
+ const limit = window.innerWidth - reserveRightPx - 12;
55694
+ const right = el.getBoundingClientRect().right;
55695
+ if (right > limit) box.scrollLeft += right - limit;
55696
+ }, [
55697
+ selectedPos,
55698
+ reserveRightPx,
55699
+ stickySteps
55700
+ ]);
55701
+ const onKeyDown = (e) => {
55702
+ if (!(e.target instanceof HTMLElement) || e.target.dataset.r === void 0) return;
55703
+ const pos = {
55704
+ r: Number(e.target.dataset.r),
55705
+ c: Number(e.target.dataset.c)
55706
+ };
55707
+ const next = nextGridPosition(e.key, pos, rows.length, cols);
55708
+ if (next === null) return;
55709
+ e.preventDefault();
55710
+ setFocusPos(next);
55711
+ focusAt(next.r, next.c);
55712
+ };
55581
55713
  return /* @__PURE__ */ jsx("div", {
55714
+ ref: boxRef,
55582
55715
  className: "overflow-auto rounded border border-border",
55583
55716
  children: /* @__PURE__ */ jsxs("div", {
55584
- className: "grid w-max",
55585
- style: { gridTemplateColumns: `${single ? STEP_COL_SINGLE_REM : STEP_COL_REM}rem repeat(${agents.length}, 13rem)` },
55586
- children: [
55587
- /* @__PURE__ */ jsx("div", {
55588
- className: "sticky left-0 top-0 z-20 border-b border-border bg-muted/60 px-3 py-2 text-[10px] uppercase tracking-widest text-foreground-subtle",
55589
- children: "Step"
55590
- }),
55591
- groups.map((group) => group.grouped ? /* @__PURE__ */ jsx(GroupedAgentHeader, { group }, group.agentNodeId) : group.columns.map((col) => /* @__PURE__ */ jsxs("div", {
55592
- className: "sticky top-0 z-10 min-w-0 border-b border-l border-border bg-muted/60 px-3 py-2",
55717
+ className: "flex w-max",
55718
+ children: [/* @__PURE__ */ jsxs("div", {
55719
+ role: "grid",
55720
+ "aria-label": label,
55721
+ "aria-rowcount": rows.length + 1,
55722
+ className: "grid w-max",
55723
+ style: { gridTemplateColumns: gridTemplate },
55724
+ onKeyDown,
55725
+ children: [/* @__PURE__ */ jsxs("div", {
55726
+ role: "row",
55727
+ className: "contents",
55593
55728
  children: [/* @__PURE__ */ jsx("div", {
55594
- className: "truncate text-xs font-semibold text-foreground",
55595
- children: col.agentNodeId
55596
- }), /* @__PURE__ */ jsx("div", {
55597
- className: "truncate text-[10px] text-foreground-subtle",
55598
- children: col.engineLabel
55729
+ role: "columnheader",
55730
+ className: cn("top-0 z-20 border-b border-border bg-muted/60 px-3 py-2 text-[10px] uppercase tracking-widest text-foreground-subtle", stickySteps ? "sticky left-0" : "sticky"),
55731
+ children: "Step"
55732
+ }), groups.map((group) => group.grouped ? /* @__PURE__ */ jsx(GroupedAgentHeader, { group }, group.agentNodeId) : group.columns.map((col) => /* @__PURE__ */ jsxs("div", {
55733
+ role: "columnheader",
55734
+ className: cn("sticky top-0 z-10 min-w-0 border-b border-l border-border bg-muted/60 px-3 py-2", col.disabled === true && "opacity-70"),
55735
+ children: [/* @__PURE__ */ jsx("div", {
55736
+ className: "truncate text-xs font-semibold text-foreground",
55737
+ children: col.nodeLabel ?? col.agentNodeId
55738
+ }), /* @__PURE__ */ jsx(AgentColumnLines, { column: col })]
55739
+ }, agentColumnKey(col))))]
55740
+ }), rows.map(({ node, depth }, r) => /* @__PURE__ */ jsxs("div", {
55741
+ role: "row",
55742
+ className: "contents",
55743
+ children: [/* @__PURE__ */ jsx(StepCell, {
55744
+ node,
55745
+ depth,
55746
+ r,
55747
+ tabbable: tab.r === r && tab.c === 0,
55748
+ selected: selectedCell?.addonId === node.addonId,
55749
+ badge: stepBadge?.(node.addonId),
55750
+ onClick: onStepClick ? (kb) => onStepClick(node.addonId, kb) : void 0,
55751
+ sticky: stickySteps
55752
+ }), agents.map((a, i) => {
55753
+ const state = getCellState(node.addonId, a);
55754
+ const isSelected = selectedCell !== null && selectedCell.addonId === node.addonId && agentColumnKey(selectedCell) === agentColumnKey(a);
55755
+ const actionable = state.kind === "enabled" || state.kind === "skip";
55756
+ return /* @__PURE__ */ jsx("div", {
55757
+ role: "gridcell",
55758
+ className: "min-w-0 border-b border-l border-border",
55759
+ children: /* @__PURE__ */ jsx("button", {
55760
+ type: "button",
55761
+ "data-r": r,
55762
+ "data-c": i + 1,
55763
+ "data-step": node.addonId,
55764
+ "data-col": agentColumnKey(a),
55765
+ tabIndex: tab.r === r && tab.c === i + 1 ? 0 : -1,
55766
+ "aria-disabled": !actionable,
55767
+ "aria-selected": isSelected,
55768
+ onClick: (e) => {
55769
+ if (actionable) onCellClick(node.addonId, a, e.detail === 0);
55770
+ },
55771
+ className: cellButtonClass(state, isSelected, cn("h-full w-full min-w-0 overflow-hidden px-3 py-2 outline-none", "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary", !actionable && "cursor-default hover:bg-transparent", a.disabled === true && "opacity-70")),
55772
+ children: renderCellContent(state)
55773
+ })
55774
+ }, agentColumnKey(a));
55599
55775
  })]
55600
- }, agentColumnKey(col)))),
55601
- rows.map(({ node, depth }) => /* @__PURE__ */ jsx(MatrixRow, {
55602
- node,
55603
- depth,
55604
- agents,
55605
- getCellState,
55606
- onCellClick,
55607
- selectedCell
55608
- }, node.addonId))
55609
- ]
55776
+ }, node.addonId))]
55777
+ }), reserveRightPx > 0 && /* @__PURE__ */ jsx("div", {
55778
+ "aria-hidden": true,
55779
+ style: { width: reserveRightPx },
55780
+ className: "shrink-0"
55781
+ })]
55610
55782
  })
55611
55783
  });
55612
- }
55613
- function MatrixRow({ node, depth, agents, getCellState, onCellClick, selectedCell }) {
55614
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(StepCell, {
55615
- node,
55616
- depth
55617
- }), agents.map((a) => {
55618
- const state = getCellState(node.addonId, a);
55619
- const isSelected = selectedCell !== null && selectedCell.addonId === node.addonId && agentColumnKey(selectedCell) === agentColumnKey(a);
55620
- const actionable = state.kind === "enabled" || state.kind === "skip";
55621
- return /* @__PURE__ */ jsx("button", {
55622
- type: "button",
55623
- disabled: !actionable,
55624
- onClick: () => onCellClick(node.addonId, a),
55625
- className: cellButtonClass(state, isSelected, cn("min-w-0 overflow-hidden border-b border-l border-border px-3 py-2", !actionable && "cursor-default hover:bg-transparent")),
55626
- children: renderCellContent(state)
55627
- }, agentColumnKey(a));
55628
- })] });
55629
- }
55630
- function DeviceStepMatrix({ tree, agents, getCellState, onCellClick, selectedCell, fallbackNodeId, onFallbackNodeChange }) {
55784
+ });
55785
+ var DeviceStepMatrix = forwardRef(function DeviceStepMatrix({ tree, agents, getCellState, onCellClick, selectedCell, fallbackNodeId, onFallbackNodeChange, onStepClick, stepBadge, reserveRightPx = 0, label = "Detection steps" }, ref) {
55631
55786
  const containerRef = useRef(null);
55632
55787
  const [width, setWidth] = useState(0);
55633
55788
  useLayoutEffect(() => {
@@ -55645,6 +55800,15 @@ function DeviceStepMatrix({ tree, agents, getCellState, onCellClick, selectedCel
55645
55800
  if (nodes.length === 0) return null;
55646
55801
  return nodes.find((n) => n.agentNodeId === fallbackNodeId) ?? nodes[0] ?? null;
55647
55802
  }, [nodes, fallbackNodeId]);
55803
+ const selectedNodeId = selectedCell?.agentNodeId;
55804
+ useEffect(() => {
55805
+ if (single && selectedNodeId !== void 0 && selectedNodeId !== fallbackNodeId) onFallbackNodeChange(selectedNodeId);
55806
+ }, [
55807
+ single,
55808
+ selectedNodeId,
55809
+ fallbackNodeId,
55810
+ onFallbackNodeChange
55811
+ ]);
55648
55812
  const shownAgents = single && selectedNode ? selectedNode.columns : agents;
55649
55813
  return /* @__PURE__ */ jsxs("div", {
55650
55814
  ref: containerRef,
@@ -55654,15 +55818,20 @@ function DeviceStepMatrix({ tree, agents, getCellState, onCellClick, selectedCel
55654
55818
  selected: selectedNode.agentNodeId,
55655
55819
  onSelect: onFallbackNodeChange
55656
55820
  }), /* @__PURE__ */ jsx(MatrixGrid, {
55821
+ ref,
55657
55822
  tree,
55658
55823
  agents: shownAgents,
55659
55824
  getCellState,
55660
55825
  onCellClick,
55826
+ onStepClick,
55827
+ stepBadge,
55661
55828
  selectedCell,
55662
- single: single && selectedNode !== null
55829
+ single: single && selectedNode !== null,
55830
+ reserveRightPx,
55831
+ label
55663
55832
  })]
55664
55833
  });
55665
- }
55834
+ });
55666
55835
  //#endregion
55667
55836
  //#region src/composites/discovery-panel.tsx
55668
55837
  function DiscoveryPanel({ deviceId, className = "", onOpenChild }) {
@@ -56601,43 +56770,13 @@ function PhaseIcon({ phase, ...props }) {
56601
56770
  return /* @__PURE__ */ jsx(Icon, { ...props });
56602
56771
  }
56603
56772
  //#endregion
56604
- //#region src/lib/validate-template.ts
56605
- function validateTemplate(steps, schema) {
56606
- const availableAddonIds = new Set(schema.slots.flatMap((s) => s.addons.map((a) => a.id)));
56607
- const warnings = [];
56608
- function validateStep(step) {
56609
- if (!availableAddonIds.has(step.addonId)) {
56610
- warnings.push(`Addon "${step.addonId}" is no longer available — step removed`);
56611
- return null;
56612
- }
56613
- const addon = schema.slots.flatMap((s) => s.addons).find((a) => a.id === step.addonId);
56614
- let modelId = step.modelId;
56615
- if (addon && !addon.models.some((m) => m.id === modelId)) {
56616
- const fallback = addon.defaultModelId;
56617
- warnings.push(`Model "${modelId}" not available for ${step.addonId} — using "${fallback}"`);
56618
- modelId = fallback;
56619
- }
56620
- const validChildren = step.children.map((c) => validateStep(c)).filter((c) => c !== null);
56621
- return {
56622
- ...step,
56623
- modelId,
56624
- children: validChildren
56625
- };
56626
- }
56627
- const validSteps = steps.map((s) => validateStep(s)).filter((s) => s !== null);
56628
- return {
56629
- valid: warnings.length === 0,
56630
- steps: validSteps,
56631
- warnings
56632
- };
56633
- }
56634
- //#endregion
56635
56773
  //#region src/composites/pipeline-builder.tsx
56636
56774
  /**
56637
- * PipelineBuilder — orchestrates the pipeline step tree with template management.
56775
+ * PipelineBuilder — orchestrates the pipeline step tree.
56638
56776
  *
56639
- * Renders: template bar (save/load/delete), step tree from schema with nested
56640
- * children, placeholder steps for disabled addons, all driven by API schema.
56777
+ * Renders the step tree from schema with nested children and placeholder steps
56778
+ * for disabled addons, all driven by API schema. There are no saved pipeline
56779
+ * templates (D759): the tree is the caller's state.
56641
56780
  */
56642
56781
  function buildSchemaMap(schema) {
56643
56782
  const map = /* @__PURE__ */ new Map();
@@ -56689,31 +56828,9 @@ function PlaceholderStep({ addon, onClick }) {
56689
56828
  })
56690
56829
  });
56691
56830
  }
56692
- function PipelineBuilder({ schema, steps, onChange, templates, selectedTemplateId, onSelectTemplate, onSaveTemplate, onUpdateTemplate, onDeleteTemplate, readOnly = false, excludeAddons = [], hideTemplates = false, showOnlyEnabled = false, showSlotLabels = false }) {
56831
+ function PipelineBuilder({ schema, steps, onChange, readOnly = false, excludeAddons = [], showOnlyEnabled = false, showSlotLabels = false }) {
56693
56832
  const excluded = useMemo(() => new Set(excludeAddons), [excludeAddons]);
56694
56833
  const schemaMap = useMemo(() => buildSchemaMap(schema), [schema]);
56695
- const [warnings, setWarnings] = useState([]);
56696
- const dirty = selectedTemplateId ? JSON.stringify(steps) !== JSON.stringify(templates.find((t) => t.id === selectedTemplateId)?.steps) : false;
56697
- function handleSelectTemplate(e) {
56698
- const id = e.target.value || null;
56699
- if (id) {
56700
- const tpl = templates.find((t) => t.id === id);
56701
- if (tpl) setWarnings([...validateTemplate(tpl.steps, schema).warnings]);
56702
- } else setWarnings([]);
56703
- onSelectTemplate(id);
56704
- }
56705
- function handleSave() {
56706
- if (selectedTemplateId) onUpdateTemplate(selectedTemplateId, steps);
56707
- }
56708
- function handleSaveAs() {
56709
- const name = window.prompt("Template name:");
56710
- if (name?.trim()) onSaveTemplate(name.trim(), steps);
56711
- }
56712
- function handleDelete() {
56713
- if (!selectedTemplateId) return;
56714
- const tpl = templates.find((t) => t.id === selectedTemplateId);
56715
- if (tpl && window.confirm(`Delete template "${tpl.name}"?`)) onDeleteTemplate(selectedTemplateId);
56716
- }
56717
56834
  /**
56718
56835
  * When a step is updated, auto-enable the entire ancestor chain if a
56719
56836
  * child/grandchild was just enabled. This ensures enabling face-recognition
@@ -56883,104 +57000,42 @@ function PipelineBuilder({ schema, steps, onChange, templates, selectedTemplateI
56883
57000
  })]
56884
57001
  }, step.addonId);
56885
57002
  }
56886
- const rootSlots = schema.slots.filter((s) => s.parentSlot === null).toSorted((a, b) => a.priority - b.priority);
56887
- return /* @__PURE__ */ jsxs("div", {
57003
+ return /* @__PURE__ */ jsx("div", {
56888
57004
  className: "space-y-4",
56889
- children: [
56890
- !hideTemplates && /* @__PURE__ */ jsx("div", {
56891
- className: "rounded-lg border border-border bg-surface p-3",
56892
- children: /* @__PURE__ */ jsxs("div", {
56893
- className: "flex items-center gap-2",
56894
- children: [
56895
- /* @__PURE__ */ jsx("div", {
56896
- className: "relative flex-1 min-w-0",
56897
- children: /* @__PURE__ */ jsxs("select", {
56898
- value: selectedTemplateId ?? "",
56899
- onChange: handleSelectTemplate,
56900
- className: "w-full rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground focus:outline-none focus:border-primary/50",
56901
- children: [/* @__PURE__ */ jsx("option", {
56902
- value: "",
56903
- children: "No template"
56904
- }), templates.map((t) => /* @__PURE__ */ jsx("option", {
56905
- value: t.id,
56906
- children: t.name
56907
- }, t.id))]
56908
- })
56909
- }),
56910
- dirty && /* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-amber-500 shrink-0" }),
56911
- /* @__PURE__ */ jsx("button", {
56912
- onClick: handleSave,
56913
- disabled: !selectedTemplateId || readOnly,
56914
- title: "Save",
56915
- className: cn("p-2 rounded-lg border border-border transition-colors", selectedTemplateId && !readOnly ? "text-foreground-subtle hover:bg-surface-hover" : "text-foreground-subtle/30 cursor-not-allowed"),
56916
- children: /* @__PURE__ */ jsx(Save, { className: "h-4 w-4" })
56917
- }),
56918
- /* @__PURE__ */ jsx("button", {
56919
- onClick: handleSaveAs,
56920
- disabled: readOnly,
56921
- title: "Save As",
56922
- className: cn("p-2 rounded-lg border border-border transition-colors", !readOnly ? "text-foreground-subtle hover:bg-surface-hover" : "text-foreground-subtle/30 cursor-not-allowed"),
56923
- children: /* @__PURE__ */ jsx(CopyPlus, { className: "h-4 w-4" })
56924
- }),
56925
- /* @__PURE__ */ jsx("button", {
56926
- onClick: handleDelete,
56927
- disabled: !selectedTemplateId || readOnly,
56928
- title: "Delete",
56929
- className: cn("p-2 rounded-lg border border-border transition-colors", selectedTemplateId && !readOnly ? "text-foreground-subtle hover:text-danger" : "text-foreground-subtle/30 cursor-not-allowed"),
56930
- children: /* @__PURE__ */ jsx(Trash2, { className: "h-4 w-4" })
56931
- })
56932
- ]
56933
- })
56934
- }),
56935
- warnings.length > 0 && /* @__PURE__ */ jsxs("div", {
56936
- className: "rounded-lg border border-amber-500/30 bg-amber-500/5 p-3 text-xs text-amber-400 space-y-1",
56937
- children: [/* @__PURE__ */ jsxs("div", {
56938
- className: "flex items-center justify-between",
56939
- children: [/* @__PURE__ */ jsx("span", {
56940
- className: "font-medium",
56941
- children: "Template loaded with warnings:"
56942
- }), /* @__PURE__ */ jsx("button", {
56943
- onClick: () => setWarnings([]),
56944
- className: "text-amber-400/60 hover:text-amber-400",
56945
- children: /* @__PURE__ */ jsx(X, { className: "h-3.5 w-3.5" })
56946
- })]
56947
- }), warnings.map((w, i) => /* @__PURE__ */ jsxs("div", { children: ["• ", w] }, i))]
56948
- }),
56949
- rootSlots.map((slot) => {
56950
- const allSlotSteps = steps.filter((s) => s.slot === slot.id && !excluded.has(s.addonId));
56951
- const slotSteps = showOnlyEnabled ? allSlotSteps.filter((s) => s.enabled) : allSlotSteps;
56952
- const missingRootAddons = showOnlyEnabled ? [] : slot.addons.filter((a) => !existingIds.has(a.id) && !excluded.has(a.id));
56953
- const groups = /* @__PURE__ */ new Map();
56954
- const ungrouped = [];
56955
- for (const step of slotSteps) if (step.group) {
56956
- if (!groups.has(step.group)) groups.set(step.group, []);
56957
- groups.get(step.group).push(step);
56958
- } else ungrouped.push(step);
56959
- return /* @__PURE__ */ jsxs("div", {
56960
- className: "space-y-2",
56961
- children: [
56962
- showSlotLabels && /* @__PURE__ */ jsxs("span", {
56963
- className: "text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/50",
56964
- children: ["Slot: ", slot.label]
56965
- }),
56966
- ungrouped.map((step) => renderStep(step)),
56967
- [...groups.entries()].map(([groupName, groupSteps]) => /* @__PURE__ */ jsxs("div", {
56968
- className: "space-y-2 rounded-lg border border-border/40 p-2",
56969
- children: [/* @__PURE__ */ jsx("span", {
56970
- className: "text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/50 px-1",
56971
- children: groupName
56972
- }), groupSteps.map((step) => renderStep(step))]
56973
- }, groupName)),
56974
- !readOnly && missingRootAddons.map((addon) => /* @__PURE__ */ jsx(PlaceholderStep, {
56975
- addon,
56976
- onClick: () => {
56977
- onChange([...steps, createDefaultStep(addon)]);
56978
- }
56979
- }, addon.id))
56980
- ]
56981
- }, slot.id);
56982
- })
56983
- ]
57005
+ children: schema.slots.filter((s) => s.parentSlot === null).toSorted((a, b) => a.priority - b.priority).map((slot) => {
57006
+ const allSlotSteps = steps.filter((s) => s.slot === slot.id && !excluded.has(s.addonId));
57007
+ const slotSteps = showOnlyEnabled ? allSlotSteps.filter((s) => s.enabled) : allSlotSteps;
57008
+ const missingRootAddons = showOnlyEnabled ? [] : slot.addons.filter((a) => !existingIds.has(a.id) && !excluded.has(a.id));
57009
+ const groups = /* @__PURE__ */ new Map();
57010
+ const ungrouped = [];
57011
+ for (const step of slotSteps) if (step.group) {
57012
+ if (!groups.has(step.group)) groups.set(step.group, []);
57013
+ groups.get(step.group).push(step);
57014
+ } else ungrouped.push(step);
57015
+ return /* @__PURE__ */ jsxs("div", {
57016
+ className: "space-y-2",
57017
+ children: [
57018
+ showSlotLabels && /* @__PURE__ */ jsxs("span", {
57019
+ className: "text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/50",
57020
+ children: ["Slot: ", slot.label]
57021
+ }),
57022
+ ungrouped.map((step) => renderStep(step)),
57023
+ [...groups.entries()].map(([groupName, groupSteps]) => /* @__PURE__ */ jsxs("div", {
57024
+ className: "space-y-2 rounded-lg border border-border/40 p-2",
57025
+ children: [/* @__PURE__ */ jsx("span", {
57026
+ className: "text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/50 px-1",
57027
+ children: groupName
57028
+ }), groupSteps.map((step) => renderStep(step))]
57029
+ }, groupName)),
57030
+ !readOnly && missingRootAddons.map((addon) => /* @__PURE__ */ jsx(PlaceholderStep, {
57031
+ addon,
57032
+ onClick: () => {
57033
+ onChange([...steps, createDefaultStep(addon)]);
57034
+ }
57035
+ }, addon.id))
57036
+ ]
57037
+ }, slot.id);
57038
+ })
56984
57039
  });
56985
57040
  }
56986
57041
  //#endregion
@@ -57769,166 +57824,104 @@ function SegmentedChoice({ label, options, value, onChange }) {
57769
57824
  });
57770
57825
  }
57771
57826
  //#endregion
57772
- //#region src/composites/step-inspector/step-chips.tsx
57773
- function chipText(state) {
57774
- switch (state.kind) {
57775
- case "enabled":
57776
- if (state.suppliedByRoot !== void 0) return "root";
57777
- return state.jumpTo !== void 0 ? `→ ${state.jumpTo}` : state.modelId;
57778
- case "skip": return state.jumpTo !== void 0 ? `→ ${state.jumpTo}` : "skip";
57779
- case "disabled": return "off";
57780
- case "na": return "—";
57781
- }
57782
- }
57783
- /** What a chip MEANS — the full model id, not its shortened text. */
57784
- function chipKey(state) {
57785
- return state.kind === "enabled" ? `${state.modelId}|${chipText(state)}` : chipText(state);
57786
- }
57787
- function chipTone(state, selected) {
57788
- if (selected) return "border-primary/60 text-primary";
57789
- if (state.kind === "skip" && state.jumpTo === void 0) return "border-amber-500/40 text-amber-500";
57790
- if (state.kind === "na" || state.kind === "disabled") return "border-border/60 text-foreground-subtle/70";
57791
- return "border-border text-foreground-subtle";
57792
- }
57793
- function StepChips({ chips, selectedId }) {
57794
- const first = chips[0];
57795
- if (first !== void 0 && chips.length > 1 && chips.every((c) => chipKey(c.state) === chipKey(first.state) && !(c.state.kind === "enabled" && c.state.overridden === true) && chipTone(c.state, c.id === selectedId) === chipTone(first.state, first.id === selectedId)) && first !== void 0) {
57796
- const text = chipText(first.state);
57797
- return /* @__PURE__ */ jsx("span", {
57798
- className: "flex flex-wrap gap-1",
57799
- children: /* @__PURE__ */ jsxs("span", {
57800
- title: `${text} on ${chips.map((c) => c.label).join(", ")}`,
57801
- className: cn("inline-flex max-w-[12rem] items-center gap-1 truncate rounded border px-1 font-mono text-[9px] leading-4", chipTone(first.state, first.id === selectedId)),
57802
- children: [/* @__PURE__ */ jsx("span", {
57803
- className: "truncate",
57804
- children: text
57805
- }), /* @__PURE__ */ jsxs("span", {
57806
- className: "shrink-0 font-sans text-foreground-subtle/80",
57807
- children: ["×", chips.length]
57808
- })]
57809
- })
57810
- });
57811
- }
57812
- return /* @__PURE__ */ jsx("span", {
57813
- className: "flex flex-wrap gap-1",
57814
- children: chips.map((chip) => {
57815
- const overridden = chip.state.kind === "enabled" && chip.state.overridden === true;
57816
- const text = chipText(chip.state);
57817
- return /* @__PURE__ */ jsxs("span", {
57818
- title: `${chip.label}: ${chip.state.kind === "enabled" ? chip.state.modelId : text}${overridden ? " (camera override)" : ""}`,
57819
- className: cn("inline-flex max-w-[9rem] items-center gap-0.5 truncate rounded border px-1 font-mono text-[9px] leading-4", chipTone(chip.state, chip.id === selectedId)),
57820
- children: [/* @__PURE__ */ jsx("span", {
57821
- className: "truncate",
57822
- children: text
57823
- }), overridden && /* @__PURE__ */ jsx("span", {
57824
- className: "text-amber-500",
57825
- "aria-hidden": true,
57826
- children: "•"
57827
- })]
57828
- }, chip.id);
57829
- })
57830
- });
57831
- }
57832
- //#endregion
57833
- //#region src/composites/step-inspector/step-inspector-layout.tsx
57827
+ //#region src/composites/step-inspector/step-detail-dock.tsx
57834
57828
  /**
57835
- * StepInspectorLayout — the master–detail frame of the step inspector.
57829
+ * StepDetailDock — where a step's settings open from the step matrix
57830
+ * (D757): docked to the page's scroll container, never inside the scrolling
57831
+ * content.
57836
57832
  *
57837
- * Desktop: the step list and the inspector side by side, each scrolling on its
57838
- * own, in a block whose height FILLS the page's scroll container below it. So
57839
- * neither pane depends on the page scroll position: the inspector's header and
57840
- * save bar are always on screen, and the selected step stays visible in the
57841
- * list. (The slide-over this replaced was absolutely positioned inside the
57842
- * matrix block — its title and its Save button scrolled away with the page.)
57843
- * In a narrow container (the camera page beside its live view, a tablet) the
57844
- * two panes stack: the list on top, a third of the height.
57833
+ * Desktop: a side panel `position: fixed` over the RIGHT edge of the nearest
57834
+ * scroll container (its top, bottom and right are measured from that box), so
57835
+ * it stays where it is while the matrix scrolls under it, and its header and
57836
+ * save bar are always on screen. It overlays — it never reserves width, so the
57837
+ * matrix does not reflow (the slide-over before D756 reserved 360 px, the
57838
+ * matrix re-measured into a single-node layout, and the clicked cell slid
57839
+ * under the panel). The matrix uses {@link STEP_DOCK_WIDTH_PX} to scroll the
57840
+ * selected column clear of it.
57845
57841
  *
57846
- * Phone: the list flows with the page; the inspector opens as a full-screen
57847
- * sheet with "‹ Steps" to go back.
57842
+ * Phone: a full-screen `Dialog` sheet.
57848
57843
  */
57849
- /** The tallest the inspector block can be without making its scroll container scroll. */
57850
- function fillHeightPx(input) {
57851
- const room = input.scrollerHeight - input.paddingBottom - input.offsetInScroller;
57852
- return Math.max(input.minPx, Math.floor(room));
57844
+ /** Width of the desktop dock — what the matrix keeps clear of it. */
57845
+ var STEP_DOCK_WIDTH_PX = 432;
57846
+ /** The dock's viewport box, from its scroll container's box. */
57847
+ function dockBox(input) {
57848
+ const right = Math.max(0, input.viewportWidth - input.scroller.right);
57849
+ const width = Math.min(input.widthPx, input.scroller.right);
57850
+ return {
57851
+ top: Math.max(0, input.scroller.top),
57852
+ height: Math.max(0, input.scroller.bottom - Math.max(0, input.scroller.top)),
57853
+ right,
57854
+ width
57855
+ };
57853
57856
  }
57854
57857
  function scrollParentOf(el) {
57855
- for (let p = el.parentElement; p !== null; p = p.parentElement) {
57858
+ for (let p = el?.parentElement ?? null; p !== null; p = p.parentElement) {
57856
57859
  const { overflowY } = getComputedStyle(p);
57857
57860
  if (overflowY === "auto" || overflowY === "scroll") return p;
57858
57861
  }
57859
57862
  return null;
57860
57863
  }
57861
- /** Height of the block so that it ends at the bottom of its scroll container. */
57862
- function useFillHeight(enabled, minPx) {
57863
- const ref = useRef(null);
57864
- const [height, setHeight] = useState(null);
57864
+ function useDockBox(anchor, enabled) {
57865
+ const [box, setBox] = useState(null);
57865
57866
  useLayoutEffect(() => {
57866
- const el = ref.current;
57867
- if (!enabled || el === null) return;
57868
- const scroller = scrollParentOf(el);
57867
+ if (!enabled) return;
57868
+ const scroller = scrollParentOf(anchor.current);
57869
57869
  const measure = () => {
57870
- const box = scroller ?? document.documentElement;
57871
- const style = getComputedStyle(box);
57872
- const top = scroller ? scroller.getBoundingClientRect().top : 0;
57873
- const scrollTop = scroller ? scroller.scrollTop : window.scrollY;
57874
- setHeight(fillHeightPx({
57875
- scrollerHeight: scroller ? scroller.clientHeight : window.innerHeight,
57876
- paddingBottom: Number.parseFloat(style.paddingBottom) || 0,
57877
- offsetInScroller: el.getBoundingClientRect().top - top + scrollTop,
57878
- minPx
57870
+ setBox(dockBox({
57871
+ scroller: scroller?.getBoundingClientRect() ?? {
57872
+ top: 0,
57873
+ bottom: window.innerHeight,
57874
+ right: window.innerWidth
57875
+ },
57876
+ viewportWidth: window.innerWidth,
57877
+ widthPx: 432
57879
57878
  }));
57880
57879
  };
57881
57880
  measure();
57882
57881
  const RO = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(measure);
57883
57882
  if (scroller) RO?.observe(scroller);
57884
- if (el.parentElement) RO?.observe(el.parentElement);
57885
57883
  window.addEventListener("resize", measure);
57886
57884
  return () => {
57887
57885
  RO?.disconnect();
57888
57886
  window.removeEventListener("resize", measure);
57889
57887
  };
57890
- }, [enabled, minPx]);
57891
- return {
57892
- ref,
57893
- height
57894
- };
57888
+ }, [anchor, enabled]);
57889
+ return box;
57895
57890
  }
57896
- function StepInspectorLayout({ list, detail, mobileDetailOpen, onMobileClose, minHeightPx = 420, className }) {
57891
+ function StepDetailDock({ open, anchor, onClose, label, children }) {
57897
57892
  const isMobile = useIsMobile();
57898
- const { ref, height } = useFillHeight(!isMobile, minHeightPx);
57899
- if (isMobile) return /* @__PURE__ */ jsxs("div", {
57900
- className: cn("space-y-3", className),
57901
- children: [/* @__PURE__ */ jsx("div", {
57902
- className: SECTION_CARD,
57903
- children: list
57904
- }), /* @__PURE__ */ jsx(Dialog, {
57905
- open: mobileDetailOpen,
57906
- onOpenChange: (open) => !open && onMobileClose(),
57907
- children: /* @__PURE__ */ jsx(DialogContent, {
57908
- placement: "sheet-on-mobile",
57909
- scroll: "body",
57910
- className: "h-[100dvh] max-h-none w-full max-w-full rounded-none border-0 p-0 pt-[env(safe-area-inset-top)] pb-[env(safe-area-inset-bottom)]",
57911
- children: mobileDetailOpen && detail
57912
- })
57913
- })]
57914
- });
57915
- return /* @__PURE__ */ jsx("div", {
57916
- ref,
57917
- className: cn("@container/inspector", className),
57918
- style: height !== null ? { height } : void 0,
57919
- children: /* @__PURE__ */ jsxs("div", {
57920
- className: cn("grid h-full min-h-0 gap-3", "grid-cols-1 grid-rows-[minmax(9rem,32%)_minmax(0,1fr)]", "@xl/inspector:grid-cols-[minmax(14rem,19rem)_minmax(0,1fr)] @xl/inspector:grid-rows-1"),
57921
- children: [/* @__PURE__ */ jsx("div", {
57922
- className: cn(SECTION_CARD, "flex min-h-0 flex-col"),
57923
- children: list
57924
- }), /* @__PURE__ */ jsx("div", {
57925
- className: cn(SECTION_CARD, "flex min-h-0 flex-col"),
57926
- children: detail
57927
- })]
57893
+ const box = useDockBox(anchor, open && !isMobile);
57894
+ if (isMobile) return /* @__PURE__ */ jsx(Dialog, {
57895
+ open,
57896
+ onOpenChange: (next) => !next && onClose(),
57897
+ children: /* @__PURE__ */ jsx(DialogContent, {
57898
+ placement: "sheet-on-mobile",
57899
+ scroll: "body",
57900
+ "aria-label": label,
57901
+ className: "h-[100dvh] max-h-none w-full max-w-full rounded-none border-0 p-0 pt-[env(safe-area-inset-top)] pb-[env(safe-area-inset-bottom)]",
57902
+ children: open && children
57928
57903
  })
57929
57904
  });
57905
+ if (!open) return null;
57906
+ return /* @__PURE__ */ jsx("aside", {
57907
+ "aria-label": label,
57908
+ "data-step-dock": true,
57909
+ className: "fixed z-30 flex flex-col border-l border-border bg-surface shadow-2xl",
57910
+ style: box !== null ? {
57911
+ top: box.top,
57912
+ height: box.height,
57913
+ right: box.right,
57914
+ width: box.width
57915
+ } : {
57916
+ top: 0,
57917
+ bottom: 0,
57918
+ right: 0,
57919
+ width: 432
57920
+ },
57921
+ children
57922
+ });
57930
57923
  }
57931
- /** "‹ Steps" — the phone sheet's way back to the list. */
57924
+ /** "‹ Steps" — the phone sheet's way back to the matrix. */
57932
57925
  function BackToStepsButton({ onClick }) {
57933
57926
  return /* @__PURE__ */ jsxs("button", {
57934
57927
  type: "button",
@@ -58021,192 +58014,6 @@ var StepInspectorPanel = forwardRef(function StepInspectorPanel({ title, subtitl
58021
58014
  });
58022
58015
  });
58023
58016
  //#endregion
58024
- //#region src/composites/step-inspector/step-list.tsx
58025
- /**
58026
- * StepList — the master pane of the step inspector: every detection step of the
58027
- * tree, one compact row each, as ONE tab stop.
58028
- *
58029
- * Keyboard (a listbox with a roving tabindex): ↑/↓/Home/End move the selection,
58030
- * Enter or → hands focus to the inspector, `/` jumps to the search box. The
58031
- * search matches a step's name or any of its field labels, so a question about
58032
- * a knob ("face size", "person") finds the step that owns it; Enter in the box
58033
- * selects the first hit and says which field it matched.
58034
- */
58035
- function matches(text, tokens) {
58036
- const lower = text.toLowerCase();
58037
- return tokens.every((t) => lower.includes(t));
58038
- }
58039
- /** Rows matching `query` (all tokens in the name, or all in one field label). */
58040
- function searchSteps(rows, query) {
58041
- const tokens = query.trim().toLowerCase().split(/\s+/).filter(Boolean);
58042
- if (tokens.length === 0) return rows.map((row) => ({ row }));
58043
- const hits = [];
58044
- for (const row of rows) {
58045
- if (matches(row.name, tokens)) {
58046
- hits.push({ row });
58047
- continue;
58048
- }
58049
- const field = row.fieldLabels.find((l) => matches(l, tokens));
58050
- if (field !== void 0) hits.push({
58051
- row,
58052
- matchedField: field
58053
- });
58054
- }
58055
- return hits;
58056
- }
58057
- var StepList = forwardRef(function StepList({ rows, selectedId, onSelect, onActivate, onPick, label, className }, ref) {
58058
- const [query, setQuery] = useState("");
58059
- const listRef = useRef(null);
58060
- const searchRef = useRef(null);
58061
- const hits = useMemo(() => searchSteps(rows, query), [rows, query]);
58062
- const tabStopId = hits.some((h) => h.row.addonId === selectedId) ? selectedId : hits[0]?.row.addonId ?? null;
58063
- const pendingFocus = useRef(null);
58064
- const tryFocus = (addonId) => {
58065
- const el = listRef.current?.querySelector(`[data-step-id="${addonId}"]`);
58066
- if (!el) return false;
58067
- el.focus();
58068
- return true;
58069
- };
58070
- const focusRow = (addonId) => {
58071
- if (addonId === null) return;
58072
- pendingFocus.current = tryFocus(addonId) ? null : addonId;
58073
- };
58074
- useLayoutEffect(() => {
58075
- if (pendingFocus.current !== null && tryFocus(pendingFocus.current)) pendingFocus.current = null;
58076
- });
58077
- useImperativeHandle(ref, () => ({ focusSelected: () => focusRow(selectedId) }), [selectedId]);
58078
- const move = (index) => {
58079
- const target = hits[Math.max(0, Math.min(hits.length - 1, index))];
58080
- if (target === void 0) return;
58081
- onSelect(target.row.addonId, target.matchedField);
58082
- focusRow(target.row.addonId);
58083
- };
58084
- const onRowKeyDown = (e, index, hit) => {
58085
- switch (e.key) {
58086
- case "ArrowDown":
58087
- e.preventDefault();
58088
- move(index + 1);
58089
- return;
58090
- case "ArrowUp":
58091
- e.preventDefault();
58092
- move(index - 1);
58093
- return;
58094
- case "Home":
58095
- e.preventDefault();
58096
- move(0);
58097
- return;
58098
- case "End":
58099
- e.preventDefault();
58100
- move(hits.length - 1);
58101
- return;
58102
- case "Enter":
58103
- case "ArrowRight":
58104
- e.preventDefault();
58105
- onActivate(hit.row.addonId);
58106
- return;
58107
- case "/":
58108
- e.preventDefault();
58109
- searchRef.current?.focus();
58110
- return;
58111
- default:
58112
- }
58113
- };
58114
- const onSearchKeyDown = (e) => {
58115
- if (e.key === "Enter") {
58116
- e.preventDefault();
58117
- const first = hits[0];
58118
- if (first !== void 0) {
58119
- onSelect(first.row.addonId, first.matchedField);
58120
- onPick?.(first.row.addonId);
58121
- focusRow(first.row.addonId);
58122
- }
58123
- } else if (e.key === "Escape") {
58124
- e.preventDefault();
58125
- setQuery("");
58126
- focusRow(selectedId);
58127
- } else if (e.key === "ArrowDown") {
58128
- e.preventDefault();
58129
- focusRow(tabStopId);
58130
- }
58131
- };
58132
- return /* @__PURE__ */ jsxs("div", {
58133
- className: cn("flex min-h-0 flex-col", className),
58134
- children: [/* @__PURE__ */ jsxs("div", {
58135
- className: "relative shrink-0 border-b border-border p-1.5",
58136
- children: [/* @__PURE__ */ jsx(Search, {
58137
- className: "pointer-events-none absolute left-3.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-foreground-subtle",
58138
- "aria-hidden": true
58139
- }), /* @__PURE__ */ jsx("input", {
58140
- ref: searchRef,
58141
- type: "search",
58142
- value: query,
58143
- onChange: (e) => setQuery(e.target.value),
58144
- onKeyDown: onSearchKeyDown,
58145
- placeholder: "Find a step or setting /",
58146
- "aria-label": "Find a step or setting",
58147
- className: "h-9 w-full rounded-md border border-border bg-background pl-8 pr-2 text-xs text-foreground outline-none focus:border-primary focus:ring-1 focus:ring-primary/30 md:h-8"
58148
- })]
58149
- }), /* @__PURE__ */ jsxs("ul", {
58150
- ref: listRef,
58151
- role: "listbox",
58152
- "aria-label": label,
58153
- className: "min-h-0 flex-1 overflow-y-auto py-1",
58154
- children: [hits.map((hit, index) => {
58155
- const { row } = hit;
58156
- const selected = row.addonId === selectedId;
58157
- return /* @__PURE__ */ jsxs("li", {
58158
- role: "option",
58159
- "aria-selected": selected,
58160
- tabIndex: row.addonId === tabStopId ? 0 : -1,
58161
- "data-step-id": row.addonId,
58162
- onClick: () => {
58163
- onSelect(row.addonId, hit.matchedField);
58164
- onPick?.(row.addonId);
58165
- },
58166
- onKeyDown: (e) => onRowKeyDown(e, index, hit),
58167
- className: cn("cursor-pointer border-l-2 py-1 pl-2.5 pr-3 outline-none transition-colors", "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary", selected ? "border-primary bg-primary/10" : "border-transparent hover:bg-muted/40"),
58168
- children: [
58169
- /* @__PURE__ */ jsxs("div", {
58170
- className: "flex min-w-0 items-baseline gap-2",
58171
- children: [
58172
- /* @__PURE__ */ jsx("span", {
58173
- className: "w-[4.5rem] shrink-0 truncate",
58174
- children: /* @__PURE__ */ jsx(SlotHeading, { slot: row.slot })
58175
- }),
58176
- /* @__PURE__ */ jsxs("span", {
58177
- className: cn("min-w-0 flex-1 truncate text-xs font-medium", selected ? "text-foreground" : "text-foreground/90"),
58178
- style: { paddingLeft: `${row.depth * 12}px` },
58179
- children: [row.depth > 0 && /* @__PURE__ */ jsx("span", {
58180
- className: "mr-1 text-foreground-subtle/60",
58181
- "aria-hidden": true,
58182
- children: "└"
58183
- }), row.name]
58184
- }),
58185
- row.status
58186
- ]
58187
- }),
58188
- hit.matchedField !== void 0 && /* @__PURE__ */ jsxs("div", {
58189
- className: "mt-0.5 truncate pl-[5rem] text-[10px] text-primary",
58190
- children: ["↳ ", hit.matchedField]
58191
- }),
58192
- row.detail !== void 0 && /* @__PURE__ */ jsx("div", {
58193
- className: "mt-0.5 pl-[5rem]",
58194
- children: row.detail
58195
- })
58196
- ]
58197
- }, row.addonId);
58198
- }), hits.length === 0 && /* @__PURE__ */ jsxs("li", {
58199
- className: "px-3 py-4 text-center text-[11px] text-foreground-subtle",
58200
- children: [
58201
- "No step matches “",
58202
- query,
58203
- "”."
58204
- ]
58205
- })]
58206
- })]
58207
- });
58208
- });
58209
- //#endregion
58210
58017
  //#region src/composites/step-inspector/step-model-row.tsx
58211
58018
  var SOURCE_TONE = {
58212
58019
  camera: "border-primary/40 bg-primary/10 text-primary",
@@ -58362,6 +58169,30 @@ function StepModelList({ rows }) {
58362
58169
  });
58363
58170
  }
58364
58171
  //#endregion
58172
+ //#region src/composites/step-inspector/step-search.ts
58173
+ function matches(text, tokens) {
58174
+ const lower = text.toLowerCase();
58175
+ return tokens.every((t) => lower.includes(t));
58176
+ }
58177
+ /** Steps matching `query` (all tokens in the name, or all in one field label). Empty query = all. */
58178
+ function searchSteps(rows, query) {
58179
+ const tokens = query.trim().toLowerCase().split(/\s+/).filter(Boolean);
58180
+ if (tokens.length === 0) return rows.map((row) => ({ addonId: row.addonId }));
58181
+ const hits = [];
58182
+ for (const row of rows) {
58183
+ if (matches(row.name, tokens)) {
58184
+ hits.push({ addonId: row.addonId });
58185
+ continue;
58186
+ }
58187
+ const field = row.fieldLabels.find((l) => matches(l, tokens));
58188
+ if (field !== void 0) hits.push({
58189
+ addonId: row.addonId,
58190
+ matchedField: field
58191
+ });
58192
+ }
58193
+ return hits;
58194
+ }
58195
+ //#endregion
58365
58196
  //#region src/composites/step-tree.ts
58366
58197
  /**
58367
58198
  * Helper: build a StepTreeNode[] from a `PipelineSchema` by chaining on
@@ -61307,4 +61138,4 @@ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-vfWTm6qv.js").t
61307
61138
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
61308
61139
  var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-DMkchqO1.js").then((m) => ({ default: m.PrivacyMaskSettings })));
61309
61140
  //#endregion
61310
- export { AcceleratorTabs, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DataTableFilterBar, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceFilterBar, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EmptyState, EndpointResultsCard, EndpointTestCard, ErrorBox, EventKindGlyph, EventStream, ExtensionsPanel, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, GripTrack, GroupedModelSelector, HOST_WIDGETS, HUB_SESSION_RUN_MS, HlsVideo, HoverZoomImage, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NAVIGATION_DRIVE_INTERVAL_MS, NatResultCard, NavigationPanel, NetworkLinkBadge, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, OptionSelect, 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, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RootModelSourceControl, RootSuppliedModelNote, RunReport, SCENE_CAPTURE_VARIANTS, 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, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SectionCard, SegmentedChoice, Select, SelectedChip, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, SnapshotButton, SortHeaderButton, StatCard, StateValuesStream, StatusBadge, StepChips, StepInspectorLayout, StepInspectorPanel, StepList, StepModelList, StepModelRow, StepTimings, Stepper, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, 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, Tooltip, TooltipContent, TooltipTrigger, UnitPicker, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, MicOff as a, agentColumnKey, allDeviceTypeFilterOptions, applyFleetQueryDefaults, applyPickerFilters, ariaSortForColumn, badgeFor, bindsToModel, buildPeerConnectionConfig, buildStepTreeFromSchema, EyeOff as c, catalogHasDraft, childEntityId, childListName, chipOverflow, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, cn, columnsForContext, compareSrflxMappings, containerChildToRef, countableDevices, coverHighlight, coverageLine, createSharedContext, createTheme, cursorFractionFor, darkColors, dataTableFacets, defaultOfField, defaultTheme, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, draftFromQuery, emptyDevicesWidens, emptySessionRun, ensureMfHostInit, eventKindLabel, fillHeightPx, filterDataTableRows, filterDeviceOptions, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, freezeVerdict, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, groupPickerDevices, groupPickerDevicesBy, hardwareLabel, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, Mic as i, initialScrubState, insertAtSelection, isAbsentProvider, isDataTableFilterActive, isFieldVisible, isGroupExpanded, isValueField, Camera as l, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, modelRowsAreFoldable, mountAddonPage, mountPath, Square as n, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, normalizeForSearch, ImageOff as o, offListSelections, openTopLayer, optionSearchText as optionSelectSearchText, orphanDeviceLabel, overrideEntityIdFromLink, pageRows, parentDetailOf, parseIceCandidate, parsePickerGroupBy, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, providerIcons, RotateCcw as r, readStoredGroupBy, reduceSessionRun, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, roiTooLarge, rootSourceState, routerBasename, Grid2x2 as s, sameLocationSuggestions, scrubReducer, searchSteps, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, settingsModelIdFor, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, sortRows, sortRowsByColumn, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, summarizeHubCandidates, Trash2 as t, tabForSelector, tankAlert, themeToCss, toStationaryOverlayBox, toggleDataTableFacet, togglePickerDevice, togglePickerKey, trpc, typeLabel, createLucideIcon as u, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, 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, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, 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, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, 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, 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, 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, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, 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, 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, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorClearModelBoundDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, 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, 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, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, 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, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, 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, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, 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, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withResolvedParentDetail, withUseRootModel, writeStoredGroupBy };
61141
+ export { AcceleratorTabs, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DataTableFilterBar, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceFilterBar, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EmptyState, EndpointResultsCard, EndpointTestCard, ErrorBox, EventKindGlyph, EventStream, ExtensionsPanel, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, GripTrack, GroupedModelSelector, HOST_WIDGETS, HUB_SESSION_RUN_MS, HlsVideo, HoverZoomImage, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NAVIGATION_DRIVE_INTERVAL_MS, NatResultCard, NavigationPanel, NetworkLinkBadge, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, OptionSelect, 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, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RootModelSourceControl, RootSuppliedModelNote, RunReport, SCENE_CAPTURE_VARIANTS, 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, SectionCard, SegmentedChoice, Select, SelectedChip, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, SnapshotButton, SortHeaderButton, StatCard, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelList, StepModelRow, StepTimings, Stepper, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, 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, Tooltip, TooltipContent, TooltipTrigger, UnitPicker, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, MicOff as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, allDeviceTypeFilterOptions, applyFleetQueryDefaults, applyPickerFilters, ariaSortForColumn, badgeFor, bindsToModel, buildPeerConnectionConfig, buildStepTreeFromSchema, EyeOff as c, catalogHasDraft, childEntityId, childListName, chipOverflow, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, cn, columnsForContext, compareSrflxMappings, containerChildToRef, countableDevices, coverHighlight, coverageLine, createSharedContext, createTheme, cursorFractionFor, darkColors, dataTableFacets, defaultOfField, defaultTheme, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, dockBox, draftFromQuery, emptyDevicesWidens, emptySessionRun, ensureMfHostInit, eventKindLabel, filterDataTableRows, filterDeviceOptions, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, freezeVerdict, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, groupPickerDevices, groupPickerDevicesBy, hardwareLabel, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, Mic as i, initialScrubState, insertAtSelection, isAbsentProvider, isDataTableFilterActive, isFieldVisible, isGroupExpanded, isValueField, Camera as l, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, modelRowsAreFoldable, mountAddonPage, mountPath, Square as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, normalizeForSearch, ImageOff as o, offListSelections, openTopLayer, optionSearchText as optionSelectSearchText, orphanDeviceLabel, overrideEntityIdFromLink, pageRows, parentDetailOf, parseIceCandidate, parsePickerGroupBy, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, providerIcons, RotateCcw as r, readStoredGroupBy, reduceSessionRun, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, roiTooLarge, rootSourceState, routerBasename, Grid2x2 as s, sameLocationSuggestions, scrubReducer, searchSteps, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, settingsModelIdFor, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, sortRows, sortRowsByColumn, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, summarizeHubCandidates, Trash2 as t, tabForSelector, tankAlert, themeToCss, toStationaryOverlayBox, toggleDataTableFacet, togglePickerDevice, togglePickerKey, trpc, typeLabel, createLucideIcon as u, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, 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, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, 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, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, 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, 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, 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, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, 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, 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, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, 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, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, 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, 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, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, 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, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, 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, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, 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, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withResolvedParentDetail, withUseRootModel, writeStoredGroupBy };