@camstack/ui-library 1.2.331 → 1.2.333

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
@@ -16,6 +16,7 @@ import * as __mfHostReactDOMClient from "react-dom/client";
16
16
  import { createRoot } from "react-dom/client";
17
17
  import * as __mfHostTrpcClient from "@trpc/client";
18
18
  import { createTRPCClient, createWSClient, httpLink, splitLink, wsLink } from "@trpc/client";
19
+ import { resolveContainerPrimaryChild as resolveContainerPrimaryChild$1 } from "@camstack/types/client";
19
20
  import { createSystem } from "@camstack/sdk";
20
21
  import { z } from "zod";
21
22
  //#region src/contexts/ui-text.tsx
@@ -4682,6 +4683,40 @@ var VolumeX = createLucideIcon("volume-x", [
4682
4683
  * This source code is licensed under the ISC license.
4683
4684
  * See the LICENSE file in the root directory of this source tree.
4684
4685
  */
4686
+ var WashingMachine = createLucideIcon("washing-machine", [
4687
+ ["path", {
4688
+ d: "M3 6h3",
4689
+ key: "155dbl"
4690
+ }],
4691
+ ["path", {
4692
+ d: "M17 6h.01",
4693
+ key: "e2y6kg"
4694
+ }],
4695
+ ["rect", {
4696
+ width: "18",
4697
+ height: "20",
4698
+ x: "3",
4699
+ y: "2",
4700
+ rx: "2",
4701
+ key: "od3kk9"
4702
+ }],
4703
+ ["circle", {
4704
+ cx: "12",
4705
+ cy: "13",
4706
+ r: "5",
4707
+ key: "nlbqau"
4708
+ }],
4709
+ ["path", {
4710
+ d: "M12 18a2.5 2.5 0 0 0 0-5 2.5 2.5 0 0 1 0-5",
4711
+ key: "17lach"
4712
+ }]
4713
+ ]);
4714
+ /**
4715
+ * @license lucide-react v0.576.0 - ISC
4716
+ *
4717
+ * This source code is licensed under the ISC license.
4718
+ * See the LICENSE file in the root directory of this source tree.
4719
+ */
4685
4720
  var Waves = createLucideIcon("waves", [
4686
4721
  ["path", {
4687
4722
  d: "M2 6c.6.5 1.2 1 2.5 1C7 7 7 5 9.5 5c2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",
@@ -5345,6 +5380,16 @@ var DEVICE_TYPE_META = {
5345
5380
  icon: Waves,
5346
5381
  labelKey: "uiLibrary.deviceMeta.type.dishwasher",
5347
5382
  labelFallback: "Dishwasher"
5383
+ },
5384
+ [DeviceType.Washer]: {
5385
+ icon: WashingMachine,
5386
+ labelKey: "uiLibrary.deviceMeta.type.washer",
5387
+ labelFallback: "Washing machine"
5388
+ },
5389
+ [DeviceType.Dryer]: {
5390
+ icon: Wind,
5391
+ labelKey: "uiLibrary.deviceMeta.type.dryer",
5392
+ labelFallback: "Dryer"
5348
5393
  }
5349
5394
  };
5350
5395
  var DEVICE_ROLE_META = {
@@ -5826,7 +5871,7 @@ function lucideExportName(key) {
5826
5871
  function loadIconGlyphs() {
5827
5872
  if (fullTable !== void 0) return Promise.resolve();
5828
5873
  if (failure$1 !== void 0) return Promise.reject(failure$1);
5829
- pending ??= import("./icons-aFMzvquu.js").then((module) => {
5874
+ pending ??= import("./icons-Bd6sbDsv.js").then((module) => {
5830
5875
  fullTable = module;
5831
5876
  publish();
5832
5877
  }, (error) => {
@@ -14480,6 +14525,9 @@ function AccountSignInField({ field, values, disabled, onAction, onChangeMany })
14480
14525
  if (Object.keys(patch).length > 0) onChangeMany?.(patch);
14481
14526
  const nextChoices = choicesOf(result["choices"]);
14482
14527
  setChoices(nextChoices.length > 1 ? nextChoices : []);
14528
+ const picked = typeof result["gatewayId"] === "string" && result["gatewayId"].length > 0;
14529
+ const summary = typeof result["summary"] === "string" ? result["summary"] : null;
14530
+ if (summary !== null && !picked && nextChoices.length < 2) setError(summary);
14483
14531
  setPhase("idle");
14484
14532
  setPaste("");
14485
14533
  setAttemptId(null);
@@ -19600,6 +19648,1151 @@ function AutotrackSection({ deviceId }) {
19600
19648
  });
19601
19649
  }
19602
19650
  //#endregion
19651
+ //#region src/composites/device-name/device-fleet.tsx
19652
+ /**
19653
+ * One slim fleet, shared. A row reads its parent from this index — never a
19654
+ * `getDevice` per row (the Customize bounded-read rule). `null` is "not
19655
+ * answered yet": a label then keeps the stored name, so a list does not flash
19656
+ * `#id` while the fleet is in flight. An empty array is an answer.
19657
+ */
19658
+ var DeviceNameIndexContext = createContext(null);
19659
+ function useDeviceNameIndex() {
19660
+ return useContext(DeviceNameIndexContext);
19661
+ }
19662
+ function copyDevice(device) {
19663
+ const label = device.display?.label;
19664
+ const trimmed = label === void 0 || label === null ? "" : label.trim();
19665
+ return {
19666
+ id: device.id,
19667
+ name: device.name,
19668
+ type: device.type,
19669
+ stableId: device.stableId,
19670
+ role: device.role ?? null,
19671
+ parentDeviceId: device.parentDeviceId ?? null,
19672
+ location: device.location ?? null,
19673
+ ...trimmed.length > 0 ? { display: { label: trimmed } } : {},
19674
+ ...device.primaryChildEntityId !== void 0 ? { primaryChildEntityId: device.primaryChildEntityId } : {},
19675
+ ...device.userNamed === void 0 ? {} : { userNamed: device.userNamed }
19676
+ };
19677
+ }
19678
+ /** Build the parent/child maps once per fleet answer. */
19679
+ function indexDeviceNames(devices) {
19680
+ const byId = /* @__PURE__ */ new Map();
19681
+ const children = /* @__PURE__ */ new Map();
19682
+ for (const device of devices) {
19683
+ const fields = copyDevice(device);
19684
+ byId.set(fields.id, fields);
19685
+ const parentId = fields.parentDeviceId;
19686
+ if (parentId === null || parentId === void 0 || parentId === fields.id) continue;
19687
+ const list = children.get(parentId);
19688
+ if (list === void 0) children.set(parentId, [fields.id]);
19689
+ else list.push(fields.id);
19690
+ }
19691
+ return {
19692
+ byId,
19693
+ childIds: children
19694
+ };
19695
+ }
19696
+ function DeviceFleetProvider({ devices, children }) {
19697
+ const index = useMemo(() => devices === null ? null : indexDeviceNames(devices), [devices]);
19698
+ return /* @__PURE__ */ jsx(DeviceNameIndexContext.Provider, {
19699
+ value: index,
19700
+ children
19701
+ });
19702
+ }
19703
+ /**
19704
+ * The one `deviceManager.listAll` subscriber for names. Same query key the
19705
+ * pickers already use, so a second observer does not fetch a second fleet.
19706
+ */
19707
+ function DeviceFleetFromServer({ children }) {
19708
+ const query = useDeviceManagerListAll({ projection: "slim" });
19709
+ return /* @__PURE__ */ jsx(DeviceFleetProvider, {
19710
+ devices: query.data === void 0 ? null : query.data,
19711
+ children
19712
+ });
19713
+ }
19714
+ //#endregion
19715
+ //#region src/composites/device-name/format-device-name.ts
19716
+ /**
19717
+ * One display name for a device.
19718
+ *
19719
+ * Canonical copy: `packages/ui-library/src/composites/device-name/format-device-name.ts`.
19720
+ * The viewer mirrors this file; `scripts/check-device-name-in-sync.ts` diffs the two.
19721
+ * Noun strings stay outside — this file only decides which noun to ask for.
19722
+ */
19723
+ /** Middle dot used between a container and its noun, and before a room. */
19724
+ var DEVICE_NAME_JOIN = " · ";
19725
+ var DEVICE_NAME_FORMS = [
19726
+ "compact",
19727
+ "full",
19728
+ "nested",
19729
+ "with-location"
19730
+ ];
19731
+ var PARENT_SEPARATORS = [" — ", " "];
19732
+ /**
19733
+ * Readings that are never what a container is. Matches the comment on
19734
+ * `CONTAINER_CHILD_ROLE_PRIORITY`: battery, temperature, humidity, illuminance,
19735
+ * signal, last-seen, plus numeric and enum. `update` is the same kind of row.
19736
+ */
19737
+ var DIAGNOSTIC_ROLES = new Set([
19738
+ "battery-sensor",
19739
+ "temperature-sensor",
19740
+ "humidity-sensor",
19741
+ "ambient-light-sensor",
19742
+ "connectivity-sensor",
19743
+ "datetime-sensor",
19744
+ "numeric-sensor",
19745
+ "enum-sensor"
19746
+ ]);
19747
+ /** Hyphen, underscore and whitespace fold together — the namesake comparison. */
19748
+ function foldDeviceName(value) {
19749
+ return value.toLowerCase().replace(/[-_\s]+/g, " ").trim();
19750
+ }
19751
+ function sameDeviceName(left, right) {
19752
+ return foldDeviceName(left) === foldDeviceName(right);
19753
+ }
19754
+ /**
19755
+ * Drop a parent prefix. `" — "` before a space, case-insensitive, so a provider
19756
+ * that capitalised the parent differently still strips, and an em-dash child
19757
+ * does not keep a dangling dash.
19758
+ */
19759
+ function stripDeviceParentPrefix(name, parentName) {
19760
+ if (parentName.length === 0) return name;
19761
+ const nameFold = name.toLowerCase();
19762
+ const parentFold = parentName.toLowerCase();
19763
+ for (const separator of PARENT_SEPARATORS) {
19764
+ const prefix = `${parentFold}${separator}`;
19765
+ if (!nameFold.startsWith(prefix)) continue;
19766
+ return name.slice(prefix.length).trim();
19767
+ }
19768
+ return name;
19769
+ }
19770
+ function roleOf(device) {
19771
+ const role = device.role;
19772
+ if (role === void 0 || role === null || role.length === 0) return null;
19773
+ return role;
19774
+ }
19775
+ function isDiagnostic(device) {
19776
+ if (device.type === "update") return true;
19777
+ const role = roleOf(device);
19778
+ return role !== null && DIAGNOSTIC_ROLES.has(role);
19779
+ }
19780
+ function displayLabel(device) {
19781
+ const label = device.display?.label;
19782
+ if (label === void 0 || label === null) return "";
19783
+ return label.trim();
19784
+ }
19785
+ function nounOf(device, parent, nouns) {
19786
+ const caption = displayLabel(device);
19787
+ if (caption.length > 0) return caption;
19788
+ const stripped = stripDeviceParentPrefix(device.name, parent.name);
19789
+ const shown = stripped.length > 0 ? stripped : device.name;
19790
+ if (device.userNamed === true) return shown;
19791
+ if (stripped.length === 0 || sameDeviceName(stripped, parent.name) || nouns.isStockPhrase(shown, roleOf(device), device.type)) return nouns.shortNoun(roleOf(device), device.type);
19792
+ return shown;
19793
+ }
19794
+ function foldsIntoParent(device, parent, noun) {
19795
+ if (sameDeviceName(noun, parent.name)) return true;
19796
+ if (displayLabel(device).length > 0 || device.userNamed === true) return false;
19797
+ return sameDeviceName(stripDeviceParentPrefix(device.name, parent.name), parent.name);
19798
+ }
19799
+ function meaningfulChildCount(siblings) {
19800
+ let count = 0;
19801
+ for (const sibling of siblings) if (!isDiagnostic(sibling)) count += 1;
19802
+ return count;
19803
+ }
19804
+ function isContainerPrimary(device, parent, siblings) {
19805
+ const picked = resolveContainerPrimaryChild$1(siblings.map((sibling) => {
19806
+ const role = roleOf(sibling);
19807
+ return {
19808
+ id: sibling.id,
19809
+ stableId: sibling.stableId,
19810
+ type: sibling.type,
19811
+ name: sibling.name,
19812
+ ...role === null ? {} : { role }
19813
+ };
19814
+ }), parent.primaryChildEntityId, parent.name);
19815
+ return picked !== null && picked.id === device.id;
19816
+ }
19817
+ function childLine(device, parent, siblings, nouns, form) {
19818
+ const noun = nounOf(device, parent, nouns);
19819
+ if (foldsIntoParent(device, parent, noun)) return parent.name;
19820
+ if (form === "compact" && parent.type === "container" && isContainerPrimary(device, parent, siblings) && meaningfulChildCount(siblings) === 1) return parent.name;
19821
+ return `${parent.name}${DEVICE_NAME_JOIN}${noun}`;
19822
+ }
19823
+ function joinLocation(label, location) {
19824
+ if (location === void 0 || location === null) return label;
19825
+ const room = location.trim();
19826
+ if (room.length === 0) return label;
19827
+ if (label.split(" · ").some((segment) => sameDeviceName(segment, room))) return label;
19828
+ return `${label}${DEVICE_NAME_JOIN}${room}`;
19829
+ }
19830
+ function hasParent(device, parent) {
19831
+ if (parent === null) return false;
19832
+ const parentId = device.parentDeviceId;
19833
+ return parentId !== null && parentId !== void 0;
19834
+ }
19835
+ /**
19836
+ * The label for `form`. A top-level device keeps its stored name. A child uses
19837
+ * the noun: `compact` may stand in for the container when this child is what
19838
+ * the container is, `full` always names both unless they fold together,
19839
+ * `nested` is the noun alone, `with-location` is `compact` plus the room.
19840
+ */
19841
+ function formatDeviceName(device, form, context, nouns) {
19842
+ if (!hasParent(device, context.parent)) return form === "with-location" ? joinLocation(device.name, device.location) : device.name;
19843
+ if (form === "nested") return nounOf(device, context.parent, nouns);
19844
+ const line = childLine(device, context.parent, context.siblings, nouns, form === "full" ? "full" : "compact");
19845
+ return form === "with-location" ? joinLocation(line, device.location) : line;
19846
+ }
19847
+ //#endregion
19848
+ //#region src/composites/device-name/device-name-nouns.ts
19849
+ /**
19850
+ * Short nouns and the stock words they replace.
19851
+ *
19852
+ * Long labels are the existing role and type names, both locales, so a stored
19853
+ * "Motion sensor" and a stored "Sensore di movimento" are the same stock word.
19854
+ * The short noun is what a list shows. Where the long label is already one
19855
+ * word it is the short noun. Aliases are provider stock words that are not the
19856
+ * label ("Illumination", "Last seen").
19857
+ */
19858
+ var DEVICE_ROLE_NOUNS = [
19859
+ {
19860
+ id: "siren",
19861
+ key: "uiLibrary.deviceMeta.noun.role.siren",
19862
+ en: "Siren",
19863
+ it: "Sirena",
19864
+ shortEn: "Siren",
19865
+ shortIt: "Sirena",
19866
+ aliases: []
19867
+ },
19868
+ {
19869
+ id: "floodlight",
19870
+ key: "uiLibrary.deviceMeta.noun.role.floodlight",
19871
+ en: "Floodlight",
19872
+ it: "Faro",
19873
+ shortEn: "Floodlight",
19874
+ shortIt: "Faro",
19875
+ aliases: []
19876
+ },
19877
+ {
19878
+ id: "spotlight",
19879
+ key: "uiLibrary.deviceMeta.noun.role.spotlight",
19880
+ en: "Spotlight",
19881
+ it: "Faretto",
19882
+ shortEn: "Spotlight",
19883
+ shortIt: "Faretto",
19884
+ aliases: []
19885
+ },
19886
+ {
19887
+ id: "pir-sensor",
19888
+ key: "uiLibrary.deviceMeta.noun.role.pirSensor",
19889
+ en: "PIR sensor",
19890
+ it: "Sensore PIR",
19891
+ shortEn: "PIR",
19892
+ shortIt: "PIR",
19893
+ aliases: []
19894
+ },
19895
+ {
19896
+ id: "chime",
19897
+ key: "uiLibrary.deviceMeta.noun.role.chime",
19898
+ en: "Chime",
19899
+ it: "Campanello",
19900
+ shortEn: "Chime",
19901
+ shortIt: "Campanello",
19902
+ aliases: []
19903
+ },
19904
+ {
19905
+ id: "autotrack",
19906
+ key: "uiLibrary.deviceMeta.noun.role.autotrack",
19907
+ en: "Auto-track",
19908
+ it: "Auto-tracking",
19909
+ shortEn: "Auto-track",
19910
+ shortIt: "Auto-tracking",
19911
+ aliases: []
19912
+ },
19913
+ {
19914
+ id: "nightvision",
19915
+ key: "uiLibrary.deviceMeta.noun.role.nightvision",
19916
+ en: "Night vision",
19917
+ it: "Visione notturna",
19918
+ shortEn: "Night",
19919
+ shortIt: "Notturna",
19920
+ aliases: []
19921
+ },
19922
+ {
19923
+ id: "privacy-mask",
19924
+ key: "uiLibrary.deviceMeta.noun.role.privacyMask",
19925
+ en: "Privacy mask",
19926
+ it: "Maschera privacy",
19927
+ shortEn: "Privacy",
19928
+ shortIt: "Privacy",
19929
+ aliases: []
19930
+ },
19931
+ {
19932
+ id: "doorbell",
19933
+ key: "uiLibrary.deviceMeta.noun.role.doorbell",
19934
+ en: "Doorbell",
19935
+ it: "Campanello video",
19936
+ shortEn: "Doorbell",
19937
+ shortIt: "Campanello video",
19938
+ aliases: []
19939
+ },
19940
+ {
19941
+ id: "cover-blind",
19942
+ key: "uiLibrary.deviceMeta.noun.role.coverBlind",
19943
+ en: "Blind",
19944
+ it: "Tapparella",
19945
+ shortEn: "Blind",
19946
+ shortIt: "Tapparella",
19947
+ aliases: []
19948
+ },
19949
+ {
19950
+ id: "cover-shutter",
19951
+ key: "uiLibrary.deviceMeta.noun.role.coverShutter",
19952
+ en: "Shutter",
19953
+ it: "Persiana",
19954
+ shortEn: "Shutter",
19955
+ shortIt: "Persiana",
19956
+ aliases: []
19957
+ },
19958
+ {
19959
+ id: "cover-awning",
19960
+ key: "uiLibrary.deviceMeta.noun.role.coverAwning",
19961
+ en: "Awning",
19962
+ it: "Tenda da sole",
19963
+ shortEn: "Awning",
19964
+ shortIt: "Tenda da sole",
19965
+ aliases: []
19966
+ },
19967
+ {
19968
+ id: "cover-curtain",
19969
+ key: "uiLibrary.deviceMeta.noun.role.coverCurtain",
19970
+ en: "Curtain",
19971
+ it: "Tenda",
19972
+ shortEn: "Curtain",
19973
+ shortIt: "Tenda",
19974
+ aliases: []
19975
+ },
19976
+ {
19977
+ id: "cover-garage",
19978
+ key: "uiLibrary.deviceMeta.noun.role.coverGarage",
19979
+ en: "Garage door",
19980
+ it: "Porta del garage",
19981
+ shortEn: "Garage",
19982
+ shortIt: "Garage",
19983
+ aliases: []
19984
+ },
19985
+ {
19986
+ id: "cover-gate",
19987
+ key: "uiLibrary.deviceMeta.noun.role.coverGate",
19988
+ en: "Gate",
19989
+ it: "Cancello",
19990
+ shortEn: "Gate",
19991
+ shortIt: "Cancello",
19992
+ aliases: []
19993
+ },
19994
+ {
19995
+ id: "cover-door",
19996
+ key: "uiLibrary.deviceMeta.noun.role.coverDoor",
19997
+ en: "Door",
19998
+ it: "Porta",
19999
+ shortEn: "Door",
20000
+ shortIt: "Porta",
20001
+ aliases: []
20002
+ },
20003
+ {
20004
+ id: "cover-window",
20005
+ key: "uiLibrary.deviceMeta.noun.role.coverWindow",
20006
+ en: "Window",
20007
+ it: "Finestra",
20008
+ shortEn: "Window",
20009
+ shortIt: "Finestra",
20010
+ aliases: []
20011
+ },
20012
+ {
20013
+ id: "binary-helper",
20014
+ key: "uiLibrary.deviceMeta.noun.role.binaryHelper",
20015
+ en: "Binary helper",
20016
+ it: "Helper binario",
20017
+ shortEn: "Helper",
20018
+ shortIt: "Helper",
20019
+ aliases: []
20020
+ },
20021
+ {
20022
+ id: "outlet",
20023
+ key: "uiLibrary.deviceMeta.noun.role.outlet",
20024
+ en: "Outlet",
20025
+ it: "Presa",
20026
+ shortEn: "Outlet",
20027
+ shortIt: "Presa",
20028
+ aliases: []
20029
+ },
20030
+ {
20031
+ id: "motion-sensor",
20032
+ key: "uiLibrary.deviceMeta.noun.role.motionSensor",
20033
+ en: "Motion sensor",
20034
+ it: "Sensore di movimento",
20035
+ shortEn: "Motion",
20036
+ shortIt: "Movimento",
20037
+ aliases: []
20038
+ },
20039
+ {
20040
+ id: "contact-sensor",
20041
+ key: "uiLibrary.deviceMeta.noun.role.contactSensor",
20042
+ en: "Contact sensor",
20043
+ it: "Sensore di contatto",
20044
+ shortEn: "Contact",
20045
+ shortIt: "Contatto",
20046
+ aliases: []
20047
+ },
20048
+ {
20049
+ id: "leak-sensor",
20050
+ key: "uiLibrary.deviceMeta.noun.role.leakSensor",
20051
+ en: "Leak sensor",
20052
+ it: "Sensore di perdite",
20053
+ shortEn: "Leak",
20054
+ shortIt: "Perdita",
20055
+ aliases: []
20056
+ },
20057
+ {
20058
+ id: "smoke-sensor",
20059
+ key: "uiLibrary.deviceMeta.noun.role.smokeSensor",
20060
+ en: "Smoke sensor",
20061
+ it: "Sensore di fumo",
20062
+ shortEn: "Smoke",
20063
+ shortIt: "Fumo",
20064
+ aliases: []
20065
+ },
20066
+ {
20067
+ id: "co-sensor",
20068
+ key: "uiLibrary.deviceMeta.noun.role.cOSensor",
20069
+ en: "CO sensor",
20070
+ it: "Sensore di CO",
20071
+ shortEn: "CO",
20072
+ shortIt: "CO",
20073
+ aliases: []
20074
+ },
20075
+ {
20076
+ id: "gas-sensor",
20077
+ key: "uiLibrary.deviceMeta.noun.role.gasSensor",
20078
+ en: "Gas sensor",
20079
+ it: "Sensore di gas",
20080
+ shortEn: "Gas",
20081
+ shortIt: "Gas",
20082
+ aliases: []
20083
+ },
20084
+ {
20085
+ id: "tamper-sensor",
20086
+ key: "uiLibrary.deviceMeta.noun.role.tamperSensor",
20087
+ en: "Tamper sensor",
20088
+ it: "Sensore antimanomissione",
20089
+ shortEn: "Tamper",
20090
+ shortIt: "Manomissione",
20091
+ aliases: []
20092
+ },
20093
+ {
20094
+ id: "vibration-sensor",
20095
+ key: "uiLibrary.deviceMeta.noun.role.vibrationSensor",
20096
+ en: "Vibration sensor",
20097
+ it: "Sensore di vibrazione",
20098
+ shortEn: "Vibration",
20099
+ shortIt: "Vibrazione",
20100
+ aliases: []
20101
+ },
20102
+ {
20103
+ id: "connectivity-sensor",
20104
+ key: "uiLibrary.deviceMeta.noun.role.connectivitySensor",
20105
+ en: "Connectivity",
20106
+ it: "Connettività",
20107
+ shortEn: "Connectivity",
20108
+ shortIt: "Connettività",
20109
+ aliases: []
20110
+ },
20111
+ {
20112
+ id: "sound-sensor",
20113
+ key: "uiLibrary.deviceMeta.noun.role.soundSensor",
20114
+ en: "Sound sensor",
20115
+ it: "Sensore acustico",
20116
+ shortEn: "Sound",
20117
+ shortIt: "Suono",
20118
+ aliases: []
20119
+ },
20120
+ {
20121
+ id: "binary-sensor",
20122
+ key: "uiLibrary.deviceMeta.noun.role.binarySensor",
20123
+ en: "Binary sensor",
20124
+ it: "Sensore binario",
20125
+ shortEn: "Binary",
20126
+ shortIt: "Binario",
20127
+ aliases: []
20128
+ },
20129
+ {
20130
+ id: "temperature-sensor",
20131
+ key: "uiLibrary.deviceMeta.noun.role.temperatureSensor",
20132
+ en: "Temperature",
20133
+ it: "Temperatura",
20134
+ shortEn: "Temperature",
20135
+ shortIt: "Temperatura",
20136
+ aliases: []
20137
+ },
20138
+ {
20139
+ id: "humidity-sensor",
20140
+ key: "uiLibrary.deviceMeta.noun.role.humiditySensor",
20141
+ en: "Humidity",
20142
+ it: "Umidità",
20143
+ shortEn: "Humidity",
20144
+ shortIt: "Umidità",
20145
+ aliases: []
20146
+ },
20147
+ {
20148
+ id: "ambient-light-sensor",
20149
+ key: "uiLibrary.deviceMeta.noun.role.ambientLightSensor",
20150
+ en: "Ambient light",
20151
+ it: "Luce ambientale",
20152
+ shortEn: "Light",
20153
+ shortIt: "Luce",
20154
+ aliases: ["Illumination"]
20155
+ },
20156
+ {
20157
+ id: "pressure-sensor",
20158
+ key: "uiLibrary.deviceMeta.noun.role.pressureSensor",
20159
+ en: "Pressure",
20160
+ it: "Pressione",
20161
+ shortEn: "Pressure",
20162
+ shortIt: "Pressione",
20163
+ aliases: []
20164
+ },
20165
+ {
20166
+ id: "wind-sensor",
20167
+ key: "uiLibrary.deviceMeta.noun.role.windSensor",
20168
+ en: "Wind",
20169
+ it: "Vento",
20170
+ shortEn: "Wind",
20171
+ shortIt: "Vento",
20172
+ aliases: []
20173
+ },
20174
+ {
20175
+ id: "rain-sensor",
20176
+ key: "uiLibrary.deviceMeta.noun.role.rainSensor",
20177
+ en: "Rain",
20178
+ it: "Pioggia",
20179
+ shortEn: "Rain",
20180
+ shortIt: "Pioggia",
20181
+ aliases: []
20182
+ },
20183
+ {
20184
+ id: "uv-sensor",
20185
+ key: "uiLibrary.deviceMeta.noun.role.uvSensor",
20186
+ en: "UV index",
20187
+ it: "Indice UV",
20188
+ shortEn: "UV index",
20189
+ shortIt: "Indice UV",
20190
+ aliases: []
20191
+ },
20192
+ {
20193
+ id: "solar-radiation-sensor",
20194
+ key: "uiLibrary.deviceMeta.noun.role.solarRadiationSensor",
20195
+ en: "Solar radiation",
20196
+ it: "Radiazione solare",
20197
+ shortEn: "Solar radiation",
20198
+ shortIt: "Radiazione solare",
20199
+ aliases: []
20200
+ },
20201
+ {
20202
+ id: "soil-moisture-sensor",
20203
+ key: "uiLibrary.deviceMeta.noun.role.soilMoistureSensor",
20204
+ en: "Soil moisture",
20205
+ it: "Umidità del suolo",
20206
+ shortEn: "Soil moisture",
20207
+ shortIt: "Umidità del suolo",
20208
+ aliases: []
20209
+ },
20210
+ {
20211
+ id: "power-sensor",
20212
+ key: "uiLibrary.deviceMeta.noun.role.powerSensor",
20213
+ en: "Power",
20214
+ it: "Potenza",
20215
+ shortEn: "Power",
20216
+ shortIt: "Potenza",
20217
+ aliases: []
20218
+ },
20219
+ {
20220
+ id: "energy-sensor",
20221
+ key: "uiLibrary.deviceMeta.noun.role.energySensor",
20222
+ en: "Energy",
20223
+ it: "Energia",
20224
+ shortEn: "Energy",
20225
+ shortIt: "Energia",
20226
+ aliases: []
20227
+ },
20228
+ {
20229
+ id: "voltage-sensor",
20230
+ key: "uiLibrary.deviceMeta.noun.role.voltageSensor",
20231
+ en: "Voltage",
20232
+ it: "Tensione",
20233
+ shortEn: "Voltage",
20234
+ shortIt: "Tensione",
20235
+ aliases: []
20236
+ },
20237
+ {
20238
+ id: "current-sensor",
20239
+ key: "uiLibrary.deviceMeta.noun.role.currentSensor",
20240
+ en: "Current",
20241
+ it: "Corrente",
20242
+ shortEn: "Current",
20243
+ shortIt: "Corrente",
20244
+ aliases: []
20245
+ },
20246
+ {
20247
+ id: "air-quality-sensor",
20248
+ key: "uiLibrary.deviceMeta.noun.role.airQualitySensor",
20249
+ en: "Air quality",
20250
+ it: "Qualità dell’aria",
20251
+ shortEn: "Air quality",
20252
+ shortIt: "Qualità dell’aria",
20253
+ aliases: []
20254
+ },
20255
+ {
20256
+ id: "battery-sensor",
20257
+ key: "uiLibrary.deviceMeta.noun.role.batterySensor",
20258
+ en: "Battery",
20259
+ it: "Batteria",
20260
+ shortEn: "Battery",
20261
+ shortIt: "Batteria",
20262
+ aliases: []
20263
+ },
20264
+ {
20265
+ id: "numeric-sensor",
20266
+ key: "uiLibrary.deviceMeta.noun.role.numericSensor",
20267
+ en: "Numeric sensor",
20268
+ it: "Sensore numerico",
20269
+ shortEn: "Value",
20270
+ shortIt: "Numerico",
20271
+ aliases: []
20272
+ },
20273
+ {
20274
+ id: "enum-sensor",
20275
+ key: "uiLibrary.deviceMeta.noun.role.enumSensor",
20276
+ en: "Enum sensor",
20277
+ it: "Sensore a stati",
20278
+ shortEn: "State",
20279
+ shortIt: "Stato",
20280
+ aliases: []
20281
+ },
20282
+ {
20283
+ id: "datetime-sensor",
20284
+ key: "uiLibrary.deviceMeta.noun.role.dateTimeSensor",
20285
+ en: "Date / time",
20286
+ it: "Data / ora",
20287
+ shortEn: "Time",
20288
+ shortIt: "Ora",
20289
+ aliases: ["Last seen"]
20290
+ },
20291
+ {
20292
+ id: "generic-sensor",
20293
+ key: "uiLibrary.deviceMeta.noun.role.genericSensor",
20294
+ en: "Sensor",
20295
+ it: "Sensore",
20296
+ shortEn: "Sensor",
20297
+ shortIt: "Sensore",
20298
+ aliases: []
20299
+ },
20300
+ {
20301
+ id: "numeric-control",
20302
+ key: "uiLibrary.deviceMeta.noun.role.numericControl",
20303
+ en: "Numeric control",
20304
+ it: "Controllo numerico",
20305
+ shortEn: "Number",
20306
+ shortIt: "Numero",
20307
+ aliases: []
20308
+ },
20309
+ {
20310
+ id: "select-control",
20311
+ key: "uiLibrary.deviceMeta.noun.role.selectControl",
20312
+ en: "Select control",
20313
+ it: "Controllo a selezione",
20314
+ shortEn: "Select",
20315
+ shortIt: "Selezione",
20316
+ aliases: []
20317
+ },
20318
+ {
20319
+ id: "text-control",
20320
+ key: "uiLibrary.deviceMeta.noun.role.textControl",
20321
+ en: "Text control",
20322
+ it: "Controllo testo",
20323
+ shortEn: "Text",
20324
+ shortIt: "Testo",
20325
+ aliases: []
20326
+ },
20327
+ {
20328
+ id: "datetime-control",
20329
+ key: "uiLibrary.deviceMeta.noun.role.dateTimeControl",
20330
+ en: "Date / time control",
20331
+ it: "Controllo data / ora",
20332
+ shortEn: "Time",
20333
+ shortIt: "Ora",
20334
+ aliases: []
20335
+ },
20336
+ {
20337
+ id: "mobile-push-notifier",
20338
+ key: "uiLibrary.deviceMeta.noun.role.mobilePushNotifier",
20339
+ en: "Mobile push",
20340
+ it: "Push su mobile",
20341
+ shortEn: "Push",
20342
+ shortIt: "Push",
20343
+ aliases: []
20344
+ },
20345
+ {
20346
+ id: "messaging-notifier",
20347
+ key: "uiLibrary.deviceMeta.noun.role.messagingNotifier",
20348
+ en: "Messaging",
20349
+ it: "Messaggistica",
20350
+ shortEn: "Messaging",
20351
+ shortIt: "Messaggistica",
20352
+ aliases: []
20353
+ },
20354
+ {
20355
+ id: "email-notifier",
20356
+ key: "uiLibrary.deviceMeta.noun.role.emailNotifier",
20357
+ en: "Email",
20358
+ it: "Email",
20359
+ shortEn: "Email",
20360
+ shortIt: "Email",
20361
+ aliases: []
20362
+ },
20363
+ {
20364
+ id: "generic-notifier",
20365
+ key: "uiLibrary.deviceMeta.noun.role.genericNotifier",
20366
+ en: "Notifier",
20367
+ it: "Notificatore",
20368
+ shortEn: "Notifier",
20369
+ shortIt: "Notificatore",
20370
+ aliases: []
20371
+ }
20372
+ ];
20373
+ var DEVICE_TYPE_NOUNS = [
20374
+ {
20375
+ id: "camera",
20376
+ key: "uiLibrary.deviceMeta.noun.type.camera",
20377
+ en: "Camera",
20378
+ it: "Telecamera",
20379
+ shortEn: "Camera",
20380
+ shortIt: "Telecamera",
20381
+ aliases: []
20382
+ },
20383
+ {
20384
+ id: "hub",
20385
+ key: "uiLibrary.deviceMeta.noun.type.hub",
20386
+ en: "Hub",
20387
+ it: "Hub",
20388
+ shortEn: "Hub",
20389
+ shortIt: "Hub",
20390
+ aliases: []
20391
+ },
20392
+ {
20393
+ id: "light",
20394
+ key: "uiLibrary.deviceMeta.noun.type.light",
20395
+ en: "Light",
20396
+ it: "Luce",
20397
+ shortEn: "Light",
20398
+ shortIt: "Luce",
20399
+ aliases: []
20400
+ },
20401
+ {
20402
+ id: "siren",
20403
+ key: "uiLibrary.deviceMeta.noun.type.siren",
20404
+ en: "Siren",
20405
+ it: "Sirena",
20406
+ shortEn: "Siren",
20407
+ shortIt: "Sirena",
20408
+ aliases: []
20409
+ },
20410
+ {
20411
+ id: "switch",
20412
+ key: "uiLibrary.deviceMeta.noun.type.switch",
20413
+ en: "Switch",
20414
+ it: "Interruttore",
20415
+ shortEn: "Switch",
20416
+ shortIt: "Interruttore",
20417
+ aliases: []
20418
+ },
20419
+ {
20420
+ id: "sensor",
20421
+ key: "uiLibrary.deviceMeta.noun.type.sensor",
20422
+ en: "Sensor",
20423
+ it: "Sensore",
20424
+ shortEn: "Sensor",
20425
+ shortIt: "Sensore",
20426
+ aliases: []
20427
+ },
20428
+ {
20429
+ id: "thermostat",
20430
+ key: "uiLibrary.deviceMeta.noun.type.thermostat",
20431
+ en: "Thermostat",
20432
+ it: "Termostato",
20433
+ shortEn: "Thermostat",
20434
+ shortIt: "Termostato",
20435
+ aliases: []
20436
+ },
20437
+ {
20438
+ id: "climate",
20439
+ key: "uiLibrary.deviceMeta.noun.type.climate",
20440
+ en: "Air conditioner",
20441
+ it: "Condizionatore",
20442
+ shortEn: "Climate",
20443
+ shortIt: "Condizionatore",
20444
+ aliases: []
20445
+ },
20446
+ {
20447
+ id: "button",
20448
+ key: "uiLibrary.deviceMeta.noun.type.button",
20449
+ en: "Button",
20450
+ it: "Pulsante",
20451
+ shortEn: "Button",
20452
+ shortIt: "Pulsante",
20453
+ aliases: []
20454
+ },
20455
+ {
20456
+ id: "event-emitter",
20457
+ key: "uiLibrary.deviceMeta.noun.type.eventEmitter",
20458
+ en: "Event Emitter",
20459
+ it: "Emettitore di eventi",
20460
+ shortEn: "Event",
20461
+ shortIt: "Evento",
20462
+ aliases: []
20463
+ },
20464
+ {
20465
+ id: "update",
20466
+ key: "uiLibrary.deviceMeta.noun.type.update",
20467
+ en: "Update",
20468
+ it: "Aggiornamento",
20469
+ shortEn: "Update",
20470
+ shortIt: "Aggiornamento",
20471
+ aliases: []
20472
+ },
20473
+ {
20474
+ id: "generic",
20475
+ key: "uiLibrary.deviceMeta.noun.type.generic",
20476
+ en: "Generic",
20477
+ it: "Generico",
20478
+ shortEn: "Generic",
20479
+ shortIt: "Generico",
20480
+ aliases: []
20481
+ },
20482
+ {
20483
+ id: "notifier",
20484
+ key: "uiLibrary.deviceMeta.noun.type.notifier",
20485
+ en: "Notifier",
20486
+ it: "Notificatore",
20487
+ shortEn: "Notifier",
20488
+ shortIt: "Notificatore",
20489
+ aliases: []
20490
+ },
20491
+ {
20492
+ id: "script",
20493
+ key: "uiLibrary.deviceMeta.noun.type.script",
20494
+ en: "Script",
20495
+ it: "Script",
20496
+ shortEn: "Script",
20497
+ shortIt: "Script",
20498
+ aliases: []
20499
+ },
20500
+ {
20501
+ id: "automation",
20502
+ key: "uiLibrary.deviceMeta.noun.type.automation",
20503
+ en: "Automation",
20504
+ it: "Automazione",
20505
+ shortEn: "Automation",
20506
+ shortIt: "Automazione",
20507
+ aliases: []
20508
+ },
20509
+ {
20510
+ id: "lock",
20511
+ key: "uiLibrary.deviceMeta.noun.type.lock",
20512
+ en: "Lock",
20513
+ it: "Serratura",
20514
+ shortEn: "Lock",
20515
+ shortIt: "Serratura",
20516
+ aliases: []
20517
+ },
20518
+ {
20519
+ id: "cover",
20520
+ key: "uiLibrary.deviceMeta.noun.type.cover",
20521
+ en: "Cover",
20522
+ it: "Copertura",
20523
+ shortEn: "Cover",
20524
+ shortIt: "Copertura",
20525
+ aliases: []
20526
+ },
20527
+ {
20528
+ id: "valve",
20529
+ key: "uiLibrary.deviceMeta.noun.type.valve",
20530
+ en: "Valve",
20531
+ it: "Valvola",
20532
+ shortEn: "Valve",
20533
+ shortIt: "Valvola",
20534
+ aliases: []
20535
+ },
20536
+ {
20537
+ id: "humidifier",
20538
+ key: "uiLibrary.deviceMeta.noun.type.humidifier",
20539
+ en: "Humidifier",
20540
+ it: "Umidificatore",
20541
+ shortEn: "Humidifier",
20542
+ shortIt: "Umidificatore",
20543
+ aliases: []
20544
+ },
20545
+ {
20546
+ id: "water-heater",
20547
+ key: "uiLibrary.deviceMeta.noun.type.waterHeater",
20548
+ en: "Water heater",
20549
+ it: "Scaldabagno",
20550
+ shortEn: "Heater",
20551
+ shortIt: "Scaldabagno",
20552
+ aliases: []
20553
+ },
20554
+ {
20555
+ id: "fan",
20556
+ key: "uiLibrary.deviceMeta.noun.type.fan",
20557
+ en: "Fan",
20558
+ it: "Ventilatore",
20559
+ shortEn: "Fan",
20560
+ shortIt: "Ventilatore",
20561
+ aliases: []
20562
+ },
20563
+ {
20564
+ id: "media-player",
20565
+ key: "uiLibrary.deviceMeta.noun.type.mediaPlayer",
20566
+ en: "Media player",
20567
+ it: "Lettore multimediale",
20568
+ shortEn: "Player",
20569
+ shortIt: "Lettore",
20570
+ aliases: []
20571
+ },
20572
+ {
20573
+ id: "alarm-panel",
20574
+ key: "uiLibrary.deviceMeta.noun.type.alarmPanel",
20575
+ en: "Alarm panel",
20576
+ it: "Pannello allarme",
20577
+ shortEn: "Alarm",
20578
+ shortIt: "Allarme",
20579
+ aliases: []
20580
+ },
20581
+ {
20582
+ id: "control",
20583
+ key: "uiLibrary.deviceMeta.noun.type.control",
20584
+ en: "Control",
20585
+ it: "Controllo",
20586
+ shortEn: "Control",
20587
+ shortIt: "Controllo",
20588
+ aliases: []
20589
+ },
20590
+ {
20591
+ id: "presence",
20592
+ key: "uiLibrary.deviceMeta.noun.type.presence",
20593
+ en: "Presence",
20594
+ it: "Presenza",
20595
+ shortEn: "Presence",
20596
+ shortIt: "Presenza",
20597
+ aliases: []
20598
+ },
20599
+ {
20600
+ id: "weather",
20601
+ key: "uiLibrary.deviceMeta.noun.type.weather",
20602
+ en: "Weather",
20603
+ it: "Meteo",
20604
+ shortEn: "Weather",
20605
+ shortIt: "Meteo",
20606
+ aliases: []
20607
+ },
20608
+ {
20609
+ id: "vacuum",
20610
+ key: "uiLibrary.deviceMeta.noun.type.vacuum",
20611
+ en: "Vacuum",
20612
+ it: "Aspirapolvere",
20613
+ shortEn: "Vacuum",
20614
+ shortIt: "Aspirapolvere",
20615
+ aliases: []
20616
+ },
20617
+ {
20618
+ id: "lawn-mower",
20619
+ key: "uiLibrary.deviceMeta.noun.type.lawnMower",
20620
+ en: "Lawn mower",
20621
+ it: "Tagliaerba",
20622
+ shortEn: "Mower",
20623
+ shortIt: "Tagliaerba",
20624
+ aliases: []
20625
+ },
20626
+ {
20627
+ id: "container",
20628
+ key: "uiLibrary.deviceMeta.noun.type.container",
20629
+ en: "Container",
20630
+ it: "Contenitore",
20631
+ shortEn: "Container",
20632
+ shortIt: "Contenitore",
20633
+ aliases: []
20634
+ },
20635
+ {
20636
+ id: "image",
20637
+ key: "uiLibrary.deviceMeta.noun.type.image",
20638
+ en: "Image",
20639
+ it: "Immagine",
20640
+ shortEn: "Image",
20641
+ shortIt: "Immagine",
20642
+ aliases: []
20643
+ },
20644
+ {
20645
+ id: "pet-feeder",
20646
+ key: "uiLibrary.deviceMeta.noun.type.petFeeder",
20647
+ en: "Pet feeder",
20648
+ it: "Distributore di cibo per animali",
20649
+ shortEn: "Feeder",
20650
+ shortIt: "Distributore",
20651
+ aliases: []
20652
+ },
20653
+ {
20654
+ id: "dishwasher",
20655
+ key: "uiLibrary.deviceMeta.noun.type.dishwasher",
20656
+ en: "Dishwasher",
20657
+ it: "Lavastoviglie",
20658
+ shortEn: "Dishwasher",
20659
+ shortIt: "Lavastoviglie",
20660
+ aliases: []
20661
+ }
20662
+ ];
20663
+ var FALLBACK_NOUN = {
20664
+ id: "",
20665
+ key: "uiLibrary.deviceMeta.noun.fallback",
20666
+ en: "Device",
20667
+ it: "Dispositivo",
20668
+ shortEn: "Device",
20669
+ shortIt: "Dispositivo",
20670
+ aliases: []
20671
+ };
20672
+ function findNoun(list, id) {
20673
+ if (id === null || id.length === 0) return void 0;
20674
+ return list.find((spec) => spec.id === id);
20675
+ }
20676
+ /** Role wins when it has a noun; otherwise the type. Unknown types fall back. */
20677
+ function nounSpecFor(role, type) {
20678
+ if (role !== null) {
20679
+ const byRole = findNoun(DEVICE_ROLE_NOUNS, role);
20680
+ if (byRole !== void 0) return byRole;
20681
+ }
20682
+ return findNoun(DEVICE_TYPE_NOUNS, type) ?? FALLBACK_NOUN;
20683
+ }
20684
+ function stockPhrases(role, type) {
20685
+ const phrases = [];
20686
+ const specs = [findNoun(DEVICE_ROLE_NOUNS, role), findNoun(DEVICE_TYPE_NOUNS, type)];
20687
+ for (const spec of specs) {
20688
+ if (spec === void 0) continue;
20689
+ phrases.push(spec.en, spec.it, spec.shortEn, spec.shortIt, ...spec.aliases);
20690
+ }
20691
+ return phrases;
20692
+ }
20693
+ function isDeviceNameStock(text, role, type) {
20694
+ const folded = foldDeviceName(text);
20695
+ if (folded.length === 0) return true;
20696
+ return stockPhrases(role, type).some((phrase) => foldDeviceName(phrase) === folded);
20697
+ }
20698
+ /** Noun table for a locale. Tests and the viewer parity spec use this directly. */
20699
+ function deviceNameNouns(locale) {
20700
+ return {
20701
+ shortNoun(role, type) {
20702
+ const spec = nounSpecFor(role, type);
20703
+ return locale === "it" ? spec.shortIt : spec.shortEn;
20704
+ },
20705
+ isStockPhrase(text, role, type) {
20706
+ return isDeviceNameStock(text, role, type);
20707
+ }
20708
+ };
20709
+ }
20710
+ //#endregion
20711
+ //#region src/composites/device-name/use-device-label.ts
20712
+ /**
20713
+ * `useDeviceLabel` is the string `DeviceName` renders — sort keys, aria
20714
+ * labels, confirm copy and search titles call it instead of painting
20715
+ * `device.name`.
20716
+ */
20717
+ function useDeviceNameNouns() {
20718
+ const t = useUiText();
20719
+ return {
20720
+ shortNoun(role, type) {
20721
+ const spec = nounSpecFor(role, type);
20722
+ return t(spec.key, spec.shortEn);
20723
+ },
20724
+ isStockPhrase(text, role, type) {
20725
+ return isDeviceNameStock(text, role, type);
20726
+ }
20727
+ };
20728
+ }
20729
+ function placeholderParent(id) {
20730
+ return {
20731
+ id,
20732
+ name: `#${String(id)}`,
20733
+ type: "unknown",
20734
+ stableId: "",
20735
+ role: null,
20736
+ parentDeviceId: null
20737
+ };
20738
+ }
20739
+ function parentFromIndex(device, index) {
20740
+ const parentId = device.parentDeviceId;
20741
+ if (parentId === null || parentId === void 0) return null;
20742
+ return index.byId.get(parentId) ?? placeholderParent(parentId);
20743
+ }
20744
+ function siblingsFromIndex(device, index) {
20745
+ const parentId = device.parentDeviceId;
20746
+ if (parentId === null || parentId === void 0) return [];
20747
+ const ids = index.childIds.get(parentId) ?? [];
20748
+ const siblings = [];
20749
+ for (const id of ids) {
20750
+ const row = index.byId.get(id);
20751
+ if (row !== void 0) siblings.push(row);
20752
+ }
20753
+ if (!siblings.some((sibling) => sibling.id === device.id)) siblings.push(device);
20754
+ return siblings;
20755
+ }
20756
+ /**
20757
+ * Label for a device the caller already holds. While the fleet has not
20758
+ * answered and no parent was passed, this is the stored name — not `#id`.
20759
+ */
20760
+ function resolveDeviceLabel(device, form, index, nouns, scope) {
20761
+ const subject = index?.byId.get(device.id) ?? device;
20762
+ const parentId = subject.parentDeviceId;
20763
+ if (parentId !== null && parentId !== void 0 && index === null && scope?.parent === void 0) return subject.name;
20764
+ return formatDeviceName(subject, form, {
20765
+ parent: scope?.parent !== void 0 ? scope.parent : index === null ? null : parentFromIndex(subject, index),
20766
+ siblings: scope?.siblings ?? (index === null ? [] : siblingsFromIndex(subject, index))
20767
+ }, nouns);
20768
+ }
20769
+ function useDeviceLabel(device, form, scope) {
20770
+ return resolveDeviceLabel(device, form, useDeviceNameIndex(), useDeviceNameNouns(), scope);
20771
+ }
20772
+ /** `#id` until the fleet answers, and `#id` when the id is not in it. */
20773
+ function useDeviceLabelById(id, form, pendingName) {
20774
+ const index = useDeviceNameIndex();
20775
+ const nouns = useDeviceNameNouns();
20776
+ if (index === null) return pendingName ?? `#${String(id)}`;
20777
+ const device = index.byId.get(id);
20778
+ if (device === void 0) return `#${String(id)}`;
20779
+ return resolveDeviceLabel(device, form, index, nouns);
20780
+ }
20781
+ //#endregion
20782
+ //#region src/composites/device-name/DeviceName.tsx
20783
+ function DeviceName({ device, form, parent, siblings, className, testId }) {
20784
+ const label = useDeviceLabel(device, form, {
20785
+ ...parent !== void 0 ? { parent } : {},
20786
+ ...siblings !== void 0 ? { siblings } : {}
20787
+ });
20788
+ return /* @__PURE__ */ jsx("span", {
20789
+ className,
20790
+ title: label,
20791
+ "data-testid": testId,
20792
+ children: label
20793
+ });
20794
+ }
20795
+ //#endregion
19603
20796
  //#region src/hooks/use-device-proxy.ts
19604
20797
  /**
19605
20798
  * useDeviceProxy — canonical React entry point for a device.
@@ -20502,6 +21695,9 @@ function GridCellBox({ cell, selected, onSelect, onDragStart }) {
20502
21695
  }, handle))
20503
21696
  });
20504
21697
  }
21698
+ function CameraOptionLabel({ camera }) {
21699
+ return useDeviceLabel(camera, "compact");
21700
+ }
20505
21701
  function CellInspector({ cell, index, cameras, onChange, onRemove }) {
20506
21702
  const t = useUiText();
20507
21703
  return /* @__PURE__ */ jsxs("div", {
@@ -20532,7 +21728,7 @@ function CellInspector({ cell, index, cameras, onChange, onRemove }) {
20532
21728
  className: "flex-1 rounded border border-border bg-transparent px-1 py-0.5",
20533
21729
  children: cameras.map((camera) => /* @__PURE__ */ jsx("option", {
20534
21730
  value: String(camera.id),
20535
- children: camera.name
21731
+ children: /* @__PURE__ */ jsx(CameraOptionLabel, { camera })
20536
21732
  }, camera.id))
20537
21733
  })]
20538
21734
  }),
@@ -28837,8 +30033,8 @@ function RecordingPanel({ deviceId }) {
28837
30033
  * `type:'widget'` ConfigField. `WidgetSlot` resolves these BEFORE the
28838
30034
  * Module-Federation `WidgetRegistry`. ids are namespaced `host/<name>`. */
28839
30035
  var HOST_WIDGETS = {
28840
- "host/motion-zones-grid": lazy(() => import("./MotionZonesSettings-DR1g9ja3.js").then((m) => ({ default: m.MotionZonesSettings }))),
28841
- "host/privacy-mask-grid": lazy(() => import("./PrivacyMaskSettings-C9wfHkiB.js").then((m) => ({ default: m.PrivacyMaskSettings }))),
30036
+ "host/motion-zones-grid": lazy(() => import("./MotionZonesSettings-BCU2NW7w.js").then((m) => ({ default: m.MotionZonesSettings }))),
30037
+ "host/privacy-mask-grid": lazy(() => import("./PrivacyMaskSettings-VntwpB1u.js").then((m) => ({ default: m.PrivacyMaskSettings }))),
28842
30038
  "host/ptz-panel": PtzPanel,
28843
30039
  "host/navigation-panel": NavigationPanel,
28844
30040
  "host/consumables-panel": ConsumablesPanel,
@@ -30989,13 +32185,13 @@ function InfoBox({ field }) {
30989
32185
  children: /* @__PURE__ */ jsxs("div", {
30990
32186
  className: `rounded-md border-l-4 px-3 py-2.5 ${styles.border} ${styles.bg}`,
30991
32187
  children: [field.label && /* @__PURE__ */ jsx("p", {
30992
- className: `text-xs font-semibold mb-0.5 ${styles.text}`,
32188
+ className: field.content.length > 0 ? `text-xs font-semibold mb-0.5 ${styles.text}` : "text-xs text-foreground-subtle leading-relaxed whitespace-pre-line break-words",
30993
32189
  children: field.label
30994
32190
  }), isHtml ? /* @__PURE__ */ jsx("div", {
30995
32191
  className: "text-xs text-foreground-subtle leading-relaxed info-html-content",
30996
32192
  dangerouslySetInnerHTML: { __html: sanitizeInfoHtml(field.content) }
30997
- }) : /* @__PURE__ */ jsx("p", {
30998
- className: "text-xs text-foreground-subtle leading-relaxed whitespace-pre-line",
32193
+ }) : field.content.length > 0 && /* @__PURE__ */ jsx("p", {
32194
+ className: "text-xs text-foreground-subtle leading-relaxed whitespace-pre-line break-words",
30999
32195
  children: field.content
31000
32196
  })]
31001
32197
  })
@@ -48220,17 +49416,19 @@ function SensorHeroInner({ trpc, device }) {
48220
49416
  if (resolution.kind === "quiet") return /* @__PURE__ */ jsx("div", {
48221
49417
  className: "flex flex-col items-center justify-center gap-2 rounded-lg border border-border bg-surface p-4 min-h-[96px]",
48222
49418
  "data-testid": "sensor-hero-quiet",
48223
- children: /* @__PURE__ */ jsx("span", {
48224
- className: "text-sm text-foreground-subtle",
48225
- children: device.name
49419
+ children: /* @__PURE__ */ jsx(DeviceName, {
49420
+ device,
49421
+ form: "full",
49422
+ className: "text-sm text-foreground-subtle"
48226
49423
  })
48227
49424
  });
48228
49425
  const slice = resolution.kind === "value" ? resolution.slice : void 0;
48229
49426
  if (descriptor === void 0 || slice === void 0) return /* @__PURE__ */ jsxs("div", {
48230
49427
  className: "flex flex-col items-center justify-center gap-2 rounded-lg border border-border bg-surface p-4 min-h-[96px]",
48231
- children: [/* @__PURE__ */ jsx("span", {
48232
- className: "text-sm text-foreground-subtle",
48233
- children: device.name
49428
+ children: [/* @__PURE__ */ jsx(DeviceName, {
49429
+ device,
49430
+ form: "full",
49431
+ className: "text-sm text-foreground-subtle"
48234
49432
  }), /* @__PURE__ */ jsx("span", {
48235
49433
  className: "text-xs text-foreground-subtle italic",
48236
49434
  children: t("uiLibrary.sensorHeroCard.awaiting", "Awaiting state…")
@@ -48270,9 +49468,10 @@ function SensorHeroInner({ trpc, device }) {
48270
49468
  "data-testid": "sensor-hero-occupancy",
48271
49469
  children: occupancyOn ? t("uiLibrary.sensorHeroCard.occupied", "Occupied") : t("uiLibrary.sensorHeroCard.clear", "Clear")
48272
49470
  }),
48273
- /* @__PURE__ */ jsx("span", {
48274
- className: "text-sm text-foreground-subtle",
48275
- children: device.name
49471
+ /* @__PURE__ */ jsx(DeviceName, {
49472
+ device,
49473
+ form: "full",
49474
+ className: "text-sm text-foreground-subtle"
48276
49475
  })
48277
49476
  ]
48278
49477
  });
@@ -48287,9 +49486,10 @@ function SensorHeroInner({ trpc, device }) {
48287
49486
  children: [/* @__PURE__ */ jsx("span", {
48288
49487
  className: cn("inline-flex items-center rounded px-3 py-1.5 text-lg font-semibold", active ? "bg-warning/15 text-warning" : "bg-surface-subtle text-foreground-subtle"),
48289
49488
  children: label
48290
- }), /* @__PURE__ */ jsx("span", {
48291
- className: "text-sm text-foreground-subtle",
48292
- children: device.name
49489
+ }), /* @__PURE__ */ jsx(DeviceName, {
49490
+ device,
49491
+ form: "full",
49492
+ className: "text-sm text-foreground-subtle"
48293
49493
  })]
48294
49494
  });
48295
49495
  }
@@ -48297,9 +49497,10 @@ function SensorHeroInner({ trpc, device }) {
48297
49497
  if (!isStringSliceValue(slice)) return null;
48298
49498
  if (slice.value === "") return /* @__PURE__ */ jsxs("div", {
48299
49499
  className: "flex flex-col items-center justify-center gap-2 rounded-lg border border-border bg-surface p-4 min-h-[96px]",
48300
- children: [/* @__PURE__ */ jsx("span", {
48301
- className: "text-sm text-foreground-subtle",
48302
- children: device.name
49500
+ children: [/* @__PURE__ */ jsx(DeviceName, {
49501
+ device,
49502
+ form: "full",
49503
+ className: "text-sm text-foreground-subtle"
48303
49504
  }), /* @__PURE__ */ jsx("span", {
48304
49505
  className: "text-xs text-foreground-subtle italic",
48305
49506
  children: t("uiLibrary.sensorHeroCard.awaiting", "Awaiting state…")
@@ -48311,9 +49512,10 @@ function SensorHeroInner({ trpc, device }) {
48311
49512
  children: [/* @__PURE__ */ jsx("span", {
48312
49513
  className: "text-3xl font-semibold tabular-nums text-foreground",
48313
49514
  children: formatControlDateTime(slice.value, format)
48314
- }), /* @__PURE__ */ jsx("span", {
48315
- className: "text-sm text-foreground-subtle",
48316
- children: device.name
49515
+ }), /* @__PURE__ */ jsx(DeviceName, {
49516
+ device,
49517
+ form: "full",
49518
+ className: "text-sm text-foreground-subtle"
48317
49519
  })]
48318
49520
  });
48319
49521
  }
@@ -48325,9 +49527,10 @@ function SensorHeroInner({ trpc, device }) {
48325
49527
  children: [/* @__PURE__ */ jsx("span", {
48326
49528
  className: "text-xl font-semibold text-foreground",
48327
49529
  children: slice.value
48328
- }), /* @__PURE__ */ jsx("span", {
48329
- className: "text-sm text-foreground-subtle",
48330
- children: device.name
49530
+ }), /* @__PURE__ */ jsx(DeviceName, {
49531
+ device,
49532
+ form: "full",
49533
+ className: "text-sm text-foreground-subtle"
48331
49534
  })]
48332
49535
  });
48333
49536
  }
@@ -48338,9 +49541,10 @@ function SensorHeroInner({ trpc, device }) {
48338
49541
  children: [/* @__PURE__ */ jsx("span", {
48339
49542
  className: cn("inline-flex items-center rounded px-3 py-1.5 text-lg font-semibold", slice.state === "home" ? "bg-success/15 text-success" : "bg-surface-subtle text-foreground-subtle"),
48340
49543
  children: label
48341
- }), /* @__PURE__ */ jsx("span", {
48342
- className: "text-sm text-foreground-subtle",
48343
- children: device.name
49544
+ }), /* @__PURE__ */ jsx(DeviceName, {
49545
+ device,
49546
+ form: "full",
49547
+ className: "text-sm text-foreground-subtle"
48344
49548
  })]
48345
49549
  });
48346
49550
  }
@@ -55095,7 +56299,9 @@ var CONTROL_FILLS = {
55095
56299
  [DeviceType.Container]: false,
55096
56300
  [DeviceType.Image]: false,
55097
56301
  [DeviceType.PetFeeder]: false,
55098
- [DeviceType.Dishwasher]: false
56302
+ [DeviceType.Dishwasher]: false,
56303
+ [DeviceType.Washer]: false,
56304
+ [DeviceType.Dryer]: false
55099
56305
  };
55100
56306
  var DEVICE_TYPE_VALUES = new Set(Object.values(DeviceType));
55101
56307
  /**
@@ -56351,6 +57557,7 @@ function useContainerChildren(deviceId) {
56351
57557
  var SENSOR_VALUE_TYPES = new Set([DeviceType.Sensor, DeviceType.Presence]);
56352
57558
  function DeviceItemActions({ trpc, device, controlPlacement }) {
56353
57559
  const containerChildren = useContainerChildren(device.id);
57560
+ const deviceLabel = useDeviceLabel(device, "compact");
56354
57561
  const placement = controlPlacement ?? "right";
56355
57562
  if (!!device.disabled) return null;
56356
57563
  if (device.type === DeviceType.Container) {
@@ -56406,7 +57613,7 @@ function DeviceItemActions({ trpc, device, controlPlacement }) {
56406
57613
  showReboot && /* @__PURE__ */ jsx(RebootQuickAction, {
56407
57614
  trpc,
56408
57615
  deviceId: device.id,
56409
- deviceName: device.name
57616
+ deviceName: deviceLabel
56410
57617
  }),
56411
57618
  /* @__PURE__ */ jsx(AdminLinkQuickAction, {
56412
57619
  trpc,
@@ -56642,9 +57849,16 @@ function ChildRow$1({ trpc, child, onNavigate, parentName }) {
56642
57849
  running: runningSlice === void 0 || runningSlice.running === null ? null : runningSlice.running,
56643
57850
  children: /* @__PURE__ */ jsx(ChildIcon, { className: "h-3 w-3 text-foreground-subtle flex-shrink-0" })
56644
57851
  }),
56645
- /* @__PURE__ */ jsx("span", {
56646
- className: "text-[10.5px] text-foreground flex-1 truncate",
56647
- children: childListName(child, parentName)
57852
+ /* @__PURE__ */ jsx(DeviceName, {
57853
+ device: child,
57854
+ form: "nested",
57855
+ parent: {
57856
+ id: child.parentDeviceId ?? 0,
57857
+ name: parentName,
57858
+ type: "unknown",
57859
+ stableId: ""
57860
+ },
57861
+ className: "text-[10.5px] text-foreground flex-1 truncate"
56648
57862
  }),
56649
57863
  showMotionTrigger && /* @__PURE__ */ jsx(ChildMotionTriggerToggle, {
56650
57864
  trpc,
@@ -56751,8 +57965,9 @@ function IconAction({ icon: Icon, label, onClick, danger = false }) {
56751
57965
  function DeviceDeleteAction({ device, onDelete }) {
56752
57966
  const t = useUiText();
56753
57967
  const confirm = useConfirm();
57968
+ const deviceLabel = useDeviceLabel(device, "full");
56754
57969
  const requestDelete = async () => {
56755
- const label = device.name.trim() !== "" ? device.name : `#${String(device.id)}`;
57970
+ const label = deviceLabel.trim() !== "" ? deviceLabel : `#${String(device.id)}`;
56756
57971
  if (await confirm({
56757
57972
  title: t("uiLibrary.deviceDeleteAction.title", "Delete device?"),
56758
57973
  message: t("uiLibrary.deviceDeleteAction.message", "This will remove \"{{label}}\" and all its settings. This action cannot be undone.", { label }),
@@ -57035,7 +58250,7 @@ var CHEVRON_SLOT_CLASS = {
57035
58250
  horizontal: "h-3.5 w-3.5",
57036
58251
  stacked: "h-4 w-4 mt-0.5"
57037
58252
  };
57038
- function DeviceItemHeader({ trpc, device, variant, flags, parent, integrationIcon, hasChildren, expanded, onToggleExpand, onNavigateToParent, stacked = false, nameOverflow = "truncate" }) {
58253
+ function DeviceItemHeader({ trpc, device, variant, flags, parent, integrationIcon, hasChildren, expanded, onToggleExpand, onNavigateToParent, stacked = false, nameOverflow = "truncate", nameForm = "compact" }) {
57039
58254
  const t = useUiText();
57040
58255
  const containerChildren = useContainerChildren(device.id);
57041
58256
  const roleDefaults = useRoleDisplayDefaults();
@@ -57046,6 +58261,13 @@ function DeviceItemHeader({ trpc, device, variant, flags, parent, integrationIco
57046
58261
  const slotClass = stacked ? CHEVRON_SLOT_CLASS.stacked : CHEVRON_SLOT_CLASS.horizontal;
57047
58262
  const iconClass = cn("text-foreground-subtle flex-shrink-0", stacked ? "h-4 w-4 mt-0.5" : variant === "minimal" ? "h-3 w-3" : "h-3.5 w-3.5");
57048
58263
  const lineClass = nameOverflow === "scroll" ? NAME_TEXT_CLASS : "truncate";
58264
+ const nameParent = nameForm === "nested" && parent !== null ? {
58265
+ id: parent.id,
58266
+ name: parent.name,
58267
+ type: parent.type ?? "unknown",
58268
+ stableId: ""
58269
+ } : void 0;
58270
+ const parentLabel = useDeviceLabelById(parent?.id ?? 0, "compact", parent?.name);
57049
58271
  return /* @__PURE__ */ jsxs("div", {
57050
58272
  className: cn(stacked ? "flex items-start gap-2 w-full min-w-0" : "flex items-center gap-2 flex-1 min-w-0"),
57051
58273
  children: [
@@ -57076,11 +58298,12 @@ function DeviceItemHeader({ trpc, device, variant, flags, parent, integrationIco
57076
58298
  children: [flags.showIntegrationIcon && integrationIcon && /* @__PURE__ */ jsx("span", {
57077
58299
  className: "flex-shrink-0",
57078
58300
  children: integrationIcon
57079
- }), /* @__PURE__ */ jsx("span", {
57080
- "data-testid": "device-name",
57081
- className: cn("font-semibold text-foreground", stacked ? "text-[13px] leading-snug line-clamp-2 break-words" : cn(lineClass, variant === "minimal" ? "text-[10.5px]" : "text-[11px]")),
57082
- title: device.name,
57083
- children: device.name
58301
+ }), /* @__PURE__ */ jsx(DeviceName, {
58302
+ device,
58303
+ form: nameForm,
58304
+ ...nameParent !== void 0 ? { parent: nameParent } : {},
58305
+ testId: "device-name",
58306
+ className: cn("font-semibold text-foreground", stacked ? "text-[13px] leading-snug line-clamp-2 break-words" : cn(lineClass, variant === "minimal" ? "text-[10.5px]" : "text-[11px]"))
57084
58307
  })]
57085
58308
  }),
57086
58309
  (flags.showId || flags.showStableId) && /* @__PURE__ */ jsxs("div", {
@@ -57109,12 +58332,12 @@ function DeviceItemHeader({ trpc, device, variant, flags, parent, integrationIco
57109
58332
  },
57110
58333
  className: cn("mt-0.5 inline-flex items-center gap-1 text-[9px] text-foreground-subtle hover:text-primary transition-colors", nameOverflow === "scroll" ? "md:max-w-full" : "max-w-full"),
57111
58334
  title: t("uiLibrary.deviceItemHeader.openParent", "Open parent: {{name}} (#{{id}})", {
57112
- name: parent.name,
58335
+ name: parentLabel,
57113
58336
  id: parent.id
57114
58337
  }),
57115
58338
  children: [/* @__PURE__ */ jsx(Network, { className: "h-2.5 w-2.5 shrink-0" }), /* @__PURE__ */ jsx("span", {
57116
58339
  className: lineClass,
57117
- children: t("uiLibrary.deviceItemHeader.under", "Under: {{name}}", { name: parent.name })
58340
+ children: t("uiLibrary.deviceItemHeader.under", "Under: {{name}}", { name: parentLabel })
57118
58341
  })]
57119
58342
  })
57120
58343
  ]
@@ -57243,7 +58466,9 @@ function HoverZoomImage({ src, alt, caption, placeholder = "No image", thumbClas
57243
58466
  * the 288 px hover zoom. */
57244
58467
  var PREVIEW_SNAPSHOT_WIDTH = 480;
57245
58468
  function DeviceItemPreview({ trpc, device, status, enabled, showStatusPills = false }) {
57246
- const snapshot = useDeviceSnapshotImage(enabled && device.online ? device.id : null, { width: PREVIEW_SNAPSHOT_WIDTH });
58469
+ const liveActive = enabled && device.online;
58470
+ const deviceLabel = useDeviceLabel(device, "compact");
58471
+ const snapshot = useDeviceSnapshotImage(liveActive ? device.id : null, { width: PREVIEW_SNAPSHOT_WIDTH });
57247
58472
  const isBatteryOperated = (device.features ?? []).includes("battery-operated");
57248
58473
  const wantPills = showStatusPills && isBatteryOperated && !device.disabled;
57249
58474
  const batteryStatus = useDeviceBattery(trpc, wantPills ? device.id : null);
@@ -57259,7 +58484,7 @@ function DeviceItemPreview({ trpc, device, status, enabled, showStatusPills = fa
57259
58484
  wantLinkPill && /* @__PURE__ */ jsx(NetworkLinkBadge, { status: linkStatus }),
57260
58485
  enabled && /* @__PURE__ */ jsx(HoverZoomImage, {
57261
58486
  src: offline ? null : snapshot.src,
57262
- alt: device.name,
58487
+ alt: deviceLabel,
57263
58488
  placeholder,
57264
58489
  thumbClassName: "h-7 w-7 rounded"
57265
58490
  })
@@ -57482,6 +58707,14 @@ function DeviceItem(props) {
57482
58707
  const flags = resolveFlags(props);
57483
58708
  const variant = props.variant ?? "compact";
57484
58709
  const view = props.view ?? "card";
58710
+ const nameForm = props.isAccessoryRow ? "nested" : "compact";
58711
+ const nameParent = nameForm === "nested" && parent ? {
58712
+ id: parent.id,
58713
+ name: parent.name,
58714
+ type: parent.type ?? "unknown",
58715
+ stableId: ""
58716
+ } : void 0;
58717
+ const rowLabel = useDeviceLabel(device, nameForm, nameParent !== void 0 ? { parent: nameParent } : void 0);
57485
58718
  const enabled = !device.disabled;
57486
58719
  const isCamera = device.isCamera ?? device.type.toLowerCase() === "camera";
57487
58720
  const childrenList = props.children ?? [];
@@ -57557,7 +58790,7 @@ function DeviceItem(props) {
57557
58790
  checked: selection.selected,
57558
58791
  onChange: selection.onToggle,
57559
58792
  onClick: (e) => e.stopPropagation(),
57560
- "aria-label": t("uiLibrary.deviceItem.select", "Select {{name}}", { name: device.name }),
58793
+ "aria-label": t("uiLibrary.deviceItem.select", "Select {{name}}", { name: rowLabel }),
57561
58794
  className: "flex-shrink-0"
57562
58795
  }),
57563
58796
  /* @__PURE__ */ jsx(DeviceItemHeader, {
@@ -57566,6 +58799,7 @@ function DeviceItem(props) {
57566
58799
  variant,
57567
58800
  flags,
57568
58801
  parent: parent ?? null,
58802
+ nameForm,
57569
58803
  integrationIcon: integrationIcon ?? null,
57570
58804
  hasChildren,
57571
58805
  expanded,
@@ -57634,7 +58868,7 @@ function DeviceItem(props) {
57634
58868
  checked: selection.selected,
57635
58869
  onChange: selection.onToggle,
57636
58870
  onClick: (e) => e.stopPropagation(),
57637
- "aria-label": t("uiLibrary.deviceItem.select", "Select {{name}}", { name: device.name }),
58871
+ "aria-label": t("uiLibrary.deviceItem.select", "Select {{name}}", { name: rowLabel }),
57638
58872
  className: "flex-shrink-0 mt-0.5"
57639
58873
  }),
57640
58874
  /* @__PURE__ */ jsx(DeviceItemHeader, {
@@ -57643,6 +58877,7 @@ function DeviceItem(props) {
57643
58877
  variant,
57644
58878
  flags,
57645
58879
  parent: parent ?? null,
58880
+ nameForm,
57646
58881
  integrationIcon: integrationIcon ?? null,
57647
58882
  hasChildren,
57648
58883
  expanded,
@@ -57703,6 +58938,14 @@ function DeviceItemTableRow(props) {
57703
58938
  const t = useUiText();
57704
58939
  const { trpc, device, variant, flags, parent, integrationIcon, accessoryCount, adoptedCount, hasChildren, expanded, onToggleExpand, onNavigate, onRowClick, rowSelects, rowSelected, displayStatus, isCamera, showSnapshot, isAccessoryRow, indentLevel, className, renderRowAction, onDelete, selection, showTypeCell, showManufacturerCell, showFeaturesCell } = props;
57705
58940
  const containerChildren = useContainerChildren(device.id);
58941
+ const nameForm = isAccessoryRow ? "nested" : "compact";
58942
+ const nameParent = nameForm === "nested" && parent ? {
58943
+ id: parent.id,
58944
+ name: parent.name,
58945
+ type: parent.type ?? "unknown",
58946
+ stableId: ""
58947
+ } : void 0;
58948
+ const rowLabel = useDeviceLabel(device, nameForm, nameParent !== void 0 ? { parent: nameParent } : void 0);
57706
58949
  return /* @__PURE__ */ jsxs("tr", {
57707
58950
  onClick: onRowClick,
57708
58951
  ...rowSelects ? {
@@ -57727,7 +58970,7 @@ function DeviceItemTableRow(props) {
57727
58970
  checked: selection.selected,
57728
58971
  onChange: selection.onToggle,
57729
58972
  onClick: (e) => e.stopPropagation(),
57730
- "aria-label": t("uiLibrary.deviceItem.select", "Select {{name}}", { name: device.name }),
58973
+ "aria-label": t("uiLibrary.deviceItem.select", "Select {{name}}", { name: rowLabel }),
57731
58974
  className: "flex-shrink-0"
57732
58975
  }), /* @__PURE__ */ jsx(DeviceItemHeader, {
57733
58976
  trpc,
@@ -57735,6 +58978,7 @@ function DeviceItemTableRow(props) {
57735
58978
  variant,
57736
58979
  flags,
57737
58980
  parent,
58981
+ nameForm,
57738
58982
  integrationIcon,
57739
58983
  hasChildren,
57740
58984
  expanded,
@@ -58473,13 +59717,13 @@ function TableRowGroup({ parent, accessories, hasAccessories, expanded, onToggle
58473
59717
  function AccessorySubRow({ trpc, accessory, parentName, showType, showManufacturer, showFeatures, onNavigate, muted }) {
58474
59718
  return /* @__PURE__ */ jsx(DeviceItem, {
58475
59719
  trpc,
58476
- device: {
58477
- ...accessory,
58478
- name: childListName(accessory, parentName)
58479
- },
59720
+ device: accessory,
58480
59721
  view: "table",
58481
59722
  integrationIcon: null,
58482
- parent: null,
59723
+ parent: accessory.parentDeviceId === null ? null : {
59724
+ id: accessory.parentDeviceId,
59725
+ name: parentName
59726
+ },
58483
59727
  isAccessoryRow: true,
58484
59728
  showChildrenAccordion: false,
58485
59729
  onNavigate: onNavigate ?? void 0,
@@ -59278,6 +60522,15 @@ function DeviceExportSetup({ addonId }) {
59278
60522
  }), status.setup && /* @__PURE__ */ jsx(SetupSection, { setup: status.setup })]
59279
60523
  });
59280
60524
  }
60525
+ function ExportSelectCell({ device, checked, onToggle }) {
60526
+ return /* @__PURE__ */ jsx("input", {
60527
+ type: "checkbox",
60528
+ checked,
60529
+ onChange: onToggle,
60530
+ onClick: (e) => e.stopPropagation(),
60531
+ "aria-label": useUiText()("uiLibrary.deviceExport.select", "Select {{name}}", { name: useDeviceLabel(device, "compact") })
60532
+ });
60533
+ }
59281
60534
  /**
59282
60535
  * Per-row Expose/Exposed toggle. Reflects whether the row's device is exposed
59283
60536
  * to THIS exporter and flips it through the SAME runner the bulk buttons use —
@@ -59289,6 +60542,7 @@ function DeviceExportSetup({ addonId }) {
59289
60542
  */
59290
60543
  function ExportRowToggle({ addonId, device, exposed, busy, onToggle }) {
59291
60544
  const t = useUiText();
60545
+ const deviceLabel = useDeviceLabel(device, "compact");
59292
60546
  const handleClick = (e) => {
59293
60547
  e.stopPropagation();
59294
60548
  if (busy) return;
@@ -59299,7 +60553,7 @@ function ExportRowToggle({ addonId, device, exposed, busy, onToggle }) {
59299
60553
  variant: exposed ? "ghost" : "primary",
59300
60554
  disabled: busy,
59301
60555
  onClick: handleClick,
59302
- "aria-label": exposed ? t("uiLibrary.deviceExport.unexposeDevice", "Unexpose {{name}}", { name: device.name }) : t("uiLibrary.deviceExport.exposeDevice", "Expose {{name}}", { name: device.name }),
60556
+ "aria-label": exposed ? t("uiLibrary.deviceExport.unexposeDevice", "Unexpose {{name}}", { name: deviceLabel }) : t("uiLibrary.deviceExport.exposeDevice", "Expose {{name}}", { name: deviceLabel }),
59303
60557
  title: exposed ? t("uiLibrary.deviceExport.stopTitle", "Stop exposing to \"{{addon}}\"", { addon: addonId }) : t("uiLibrary.deviceExport.exposeTitle", "Expose to \"{{addon}}\"", { addon: addonId }),
59304
60558
  children: exposed ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Unlink2, { className: "mr-1 h-3.5 w-3.5" }), t("uiLibrary.deviceExport.exposed", "Exposed")] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Share2, { className: "mr-1 h-3.5 w-3.5" }), t("uiLibrary.deviceExport.expose", "Expose")] })
59305
60559
  });
@@ -59515,12 +60769,10 @@ function DeviceExportPanel({ addonId, onOpenDevice, showSetup = true }) {
59515
60769
  key: "select",
59516
60770
  header: "",
59517
60771
  headerClassName: "w-8",
59518
- cell: (device) => /* @__PURE__ */ jsx("input", {
59519
- type: "checkbox",
60772
+ cell: (device) => /* @__PURE__ */ jsx(ExportSelectCell, {
60773
+ device,
59520
60774
  checked: selectedIds.has(String(device.id)),
59521
- onChange: () => toggleSelection(String(device.id)),
59522
- onClick: (e) => e.stopPropagation(),
59523
- "aria-label": t("uiLibrary.deviceExport.select", "Select {{name}}", { name: device.name })
60775
+ onToggle: () => toggleSelection(String(device.id))
59524
60776
  })
59525
60777
  },
59526
60778
  {
@@ -59539,9 +60791,10 @@ function DeviceExportPanel({ addonId, onOpenDevice, showSetup = true }) {
59539
60791
  {
59540
60792
  key: "name",
59541
60793
  header: t("uiLibrary.deviceExport.colName", "Name"),
59542
- cell: (device) => /* @__PURE__ */ jsx("span", {
59543
- className: "text-xs font-medium text-foreground",
59544
- children: device.name
60794
+ cell: (device) => /* @__PURE__ */ jsx(DeviceName, {
60795
+ device,
60796
+ form: "compact",
60797
+ className: "text-xs font-medium text-foreground"
59545
60798
  })
59546
60799
  },
59547
60800
  {
@@ -61124,28 +62377,61 @@ function FormField$1({ label, description, error, required, children, orientatio
61124
62377
  }
61125
62378
  //#endregion
61126
62379
  //#region src/composites/grouped-tile-picker.tsx
62380
+ /**
62381
+ * `GroupedTilePicker` — choose ONE "type of thing" from tiles grouped by who
62382
+ * provides it (an AI profile kind, a notification-target kind…): an uppercase
62383
+ * group label, then a grid of icon + label tiles. The pre-modal of a
62384
+ * create-flow whose form depends on the choice.
62385
+ *
62386
+ * The tile is deliberately not a `Button`: a vertical icon-over-label card in
62387
+ * a grid, which toolbar-button chrome fights. One place owns that look so the
62388
+ * pickers stay identical.
62389
+ */
61127
62390
  function GroupedTilePicker({ groups, onPick, emptyMessage }) {
62391
+ const [openKey, setOpenKey] = useState(null);
62392
+ const openTile = openKey === null ? null : groups.flatMap((group) => group.tiles).find((tile) => tile.key === openKey) ?? null;
61128
62393
  return /* @__PURE__ */ jsxs("div", {
61129
62394
  className: "space-y-4",
61130
- children: [groups.length === 0 && /* @__PURE__ */ jsx("p", {
61131
- className: "text-xs text-foreground-subtle",
61132
- children: emptyMessage
61133
- }), groups.map((group) => /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
61134
- className: "mb-1.5 text-[10px] font-semibold uppercase tracking-wider text-foreground-subtle",
61135
- children: group.label
61136
- }), /* @__PURE__ */ jsx("div", {
61137
- className: "grid grid-cols-2 gap-2 sm:grid-cols-3",
61138
- children: group.tiles.map((tile) => /* @__PURE__ */ jsxs("button", {
61139
- type: "button",
61140
- "data-testid": tile.testId,
61141
- onClick: () => onPick(tile.key),
61142
- className: "flex flex-col items-center gap-1.5 rounded-lg border border-border bg-surface px-3 py-3 text-xs transition-colors hover:border-primary/50 hover:bg-surface-hover",
61143
- children: [tile.icon, /* @__PURE__ */ jsx("span", {
61144
- className: "text-center font-medium text-foreground",
61145
- children: tile.label
61146
- })]
61147
- }, tile.key))
61148
- })] }, group.id))]
62395
+ children: [
62396
+ groups.length === 0 && /* @__PURE__ */ jsx("p", {
62397
+ className: "text-xs text-foreground-subtle",
62398
+ children: emptyMessage
62399
+ }),
62400
+ groups.map((group) => /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
62401
+ className: "mb-1.5 text-[10px] font-semibold uppercase tracking-wider text-foreground-subtle",
62402
+ children: group.label
62403
+ }), /* @__PURE__ */ jsx("div", {
62404
+ className: "grid grid-cols-2 gap-2 sm:grid-cols-3",
62405
+ children: group.tiles.map((tile) => /* @__PURE__ */ jsxs("div", {
62406
+ className: "relative",
62407
+ children: [/* @__PURE__ */ jsxs("button", {
62408
+ type: "button",
62409
+ "data-testid": tile.testId,
62410
+ onClick: () => onPick(tile.key),
62411
+ className: "flex h-full w-full flex-col items-center gap-1.5 rounded-lg border border-border bg-surface px-3 py-3 text-xs transition-colors hover:border-primary/50 hover:bg-surface-hover",
62412
+ children: [tile.icon, /* @__PURE__ */ jsx("span", {
62413
+ className: "text-center font-medium text-foreground",
62414
+ children: tile.label
62415
+ })]
62416
+ }), tile.detail !== void 0 && tile.detailLabel !== void 0 && /* @__PURE__ */ jsx("div", {
62417
+ className: "absolute top-1 right-1",
62418
+ children: /* @__PURE__ */ jsx(IconButton, {
62419
+ type: "button",
62420
+ variant: "ghost",
62421
+ size: "sm",
62422
+ icon: Info,
62423
+ "aria-label": tile.detailLabel,
62424
+ onClick: () => setOpenKey((current) => current === tile.key ? null : tile.key)
62425
+ })
62426
+ })]
62427
+ }, tile.key))
62428
+ })] }, group.id)),
62429
+ openTile?.detail !== void 0 && /* @__PURE__ */ jsx(BottomSheet, {
62430
+ open: true,
62431
+ onClose: () => setOpenKey(null),
62432
+ children: openTile.detail
62433
+ })
62434
+ ]
61149
62435
  });
61150
62436
  }
61151
62437
  //#endregion
@@ -66321,6 +67607,26 @@ function deviceGroupTitle(group, t = defaultUiText) {
66321
67607
  function isDeviceNoun(noun) {
66322
67608
  return noun === "camera" || noun === "device";
66323
67609
  }
67610
+ /** Compact label for a device id. String ids (nodes, packages) keep the stored text. */
67611
+ function usePickerDeviceLabel(id, stored) {
67612
+ const lookedUp = useDeviceLabelById(typeof id === "number" ? id : 0, "compact", stored);
67613
+ return typeof id === "number" ? lookedUp : stored;
67614
+ }
67615
+ function PickerDeviceName({ id, stored, className }) {
67616
+ return /* @__PURE__ */ jsx("span", {
67617
+ className,
67618
+ children: usePickerDeviceLabel(id, stored)
67619
+ });
67620
+ }
67621
+ function PickerChip({ id, stored, removed, onRemove }) {
67622
+ const label = usePickerDeviceLabel(id, stored);
67623
+ return /* @__PURE__ */ jsx(SelectedChip, {
67624
+ testId: `picker-chip-${String(id)}`,
67625
+ label,
67626
+ warning: removed,
67627
+ ...onRemove !== void 0 ? { onRemove } : {}
67628
+ });
67629
+ }
66324
67630
  function chipsOf(value, devices, fleet, noun, t) {
66325
67631
  const byId = new Map(devices.map((device) => [device.id, device.name]));
66326
67632
  const orphans = new Map(offListSelections(value, devices, fleet.devices, fleet.state).map((row) => [row.id, row]));
@@ -66356,7 +67662,7 @@ function DevicePicker({ devices: devicesIn, listState, fleet, value, onChange, s
66356
67662
  const t = useUiText();
66357
67663
  const groupTitle = groupTitleProp ?? ((group) => deviceGroupTitle(group, t));
66358
67664
  const lockedNote = lockedNoteProp ?? t("uiLibrary.devicePicker.alreadyAdded", "Already added");
66359
- const devices = useMemo(() => withResolvedParentDetail(devicesIn), [devicesIn]);
67665
+ const devices = useMemo(() => isDeviceNoun(noun) ? devicesIn : withResolvedParentDetail(devicesIn), [devicesIn, noun]);
66360
67666
  const judge = fleet ?? {
66361
67667
  state: listState,
66362
67668
  devices: listState === "answered" ? devices : void 0
@@ -66391,10 +67697,10 @@ function DevicePicker({ devices: devicesIn, listState, fleet, value, onChange, s
66391
67697
  chips.length === 0 ? /* @__PURE__ */ jsx("span", {
66392
67698
  className: "text-[11px] text-foreground-subtle",
66393
67699
  children: emptyLabel ?? (emptyMeansAll ? t("uiLibrary.devicePicker.everyNoRestriction", "Every {{noun}} — no restriction", { noun: pickerNounLabel(noun, t) }) : t("uiLibrary.devicePicker.noneSelected", "None selected"))
66394
- }) : overflow.shown.map((chip) => /* @__PURE__ */ jsx(SelectedChip, {
66395
- testId: `picker-chip-${String(chip.id)}`,
66396
- label: chip.label,
66397
- warning: chip.removed,
67700
+ }) : overflow.shown.map((chip) => /* @__PURE__ */ jsx(PickerChip, {
67701
+ id: chip.id,
67702
+ stored: chip.label,
67703
+ removed: chip.removed,
66398
67704
  ...!disabled ? { onRemove: () => onChange(value.filter((id) => id !== chip.id)) } : {}
66399
67705
  }, chip.id)),
66400
67706
  overflow.hidden > 0 && /* @__PURE__ */ jsx("button", {
@@ -66687,9 +67993,10 @@ function PickerRowView({ row, value, onChange, onToggleGroup, annotate, groupTit
66687
67993
  }), /* @__PURE__ */ jsxs("span", {
66688
67994
  className: "flex min-w-0 flex-1 flex-col",
66689
67995
  children: [
66690
- /* @__PURE__ */ jsx("span", {
66691
- className: "truncate",
66692
- children: row.device.name
67996
+ /* @__PURE__ */ jsx(PickerDeviceName, {
67997
+ id: row.device.id,
67998
+ stored: row.device.name,
67999
+ className: "truncate"
66693
68000
  }),
66694
68001
  second !== void 0 && /* @__PURE__ */ jsx("span", {
66695
68002
  className: "truncate text-[10px] text-foreground-subtle",
@@ -69626,12 +70933,12 @@ var statusIcons = {
69626
70933
  * Render inside `<Suspense>` at all call sites. */
69627
70934
  var MaskShapeCanvas = lazy(() => import("./MaskShapeCanvas-C9cJlxvG.js").then((m) => ({ default: m.MaskShapeCanvas })));
69628
70935
  /** Lazy-wrapped `MotionZonesSettings` — code-split off the main bundle. */
69629
- var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-DR1g9ja3.js").then((m) => ({ default: m.MotionZonesSettings })));
70936
+ var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-BCU2NW7w.js").then((m) => ({ default: m.MotionZonesSettings })));
69630
70937
  /** Lazy-wrapped `SceneMonitorEditor` — code-split off the main bundle for the
69631
70938
  * same reason: it mounts `MaskShapeCanvas`, which chains react-konva. Render
69632
70939
  * inside `<Suspense>`; the admin-ui `/scenes` dialog is its only caller. */
69633
- var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-CrxB3ZPL.js").then((m) => ({ default: m.SceneMonitorEditor })));
70940
+ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-5N2xqurW.js").then((m) => ({ default: m.SceneMonitorEditor })));
69634
70941
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
69635
- var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-C9wfHkiB.js").then((m) => ({ default: m.PrivacyMaskSettings })));
70942
+ var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-VntwpB1u.js").then((m) => ({ default: m.PrivacyMaskSettings })));
69636
70943
  //#endregion
69637
- export { ShieldOff as $, Clock as $n, LoaderCircle as $t, TrainFront as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Feather as An, AppShell, Bike as Ar, ArcKnob, Pause as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, SunMedium as B, BATTERY_BADGE_LOW_KEY, BATTERY_BADGE_NORMAL_KEY, BINARY_BATTERY_LOW_BELOW, BOOLEAN_STATES, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BarSeries, BatteryBadge, DoorClosed as Bn, BottomSheet, Baby as Br, Breadcrumb, BrightnessPanel, MonitorPlay as Bt, Button, ButtonControl, ButtonHeroCard, Undo2 as C, CENTER, CHART_SERIES_TOKENS, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONSUMABLE_LOW_PERCENT, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, ChartFrame, ChartPlaceholder, ChartSwatch, ChartWindowToggle, Checkbox, ChildSectionAccordion, ClimatePanel, Gamepad2 as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumableLevelBadge, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Bus as Cr, Play as Ct, CustomFieldRenderersProvider, TrendingDown as D, DATA_RECORDS_KIND_PARAM, DATA_RECORDS_OWNER_PARAM, DATA_RECORD_FACET_GROUPS, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DataRecordsHub, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceGrid, DeviceHistoryView, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DisplayPaletteProvider, FlashlightOff as Dn, DoorbellRecentPanel, Bone as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Phone as Dt, DummyHeroCard, DummyInline, TriangleAlert as E, EMPTY_DATA_TABLE_FILTER, EMPTY_HISTORY_PANELS, EVENT_KIND_ICONS, EmptyState, Flashlight as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Bot as Er, ErrorBox, Pin as Et, EventKindGlyph, EventStream, ExtensionsPanel, Thermometer as F, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, EllipsisVertical as Fn, FormField$1 as FormField, BatteryMedium as Fr, Move as Ft, Snowflake as G, GAP_INTERVAL_FACTOR, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Copy as Gn, ArrowDown as Gr, GripTrack, GroupedModelSelector, GroupedTilePicker, Menu as Gt, Square as H, HISTORY_PAGE_PATH, HISTORY_PANELS_NAMESPACE, HISTORY_SELECTION_MAX, HISTORY_WINDOW_IDS, HISTORY_WINDOW_MS, HOST_WIDGETS, HUB_SESSION_RUN_MS, HistoryChart, HistoryWindowBar, HlsVideo, Database as Hn, HoverZoomImage, ArrowUpToLine as Hr, Minimize2 as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Target as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, Droplets as In, InferenceConfigSelector, Input, BatteryLow as Ir, MoveVertical as It, ItemFormDialog, SkipForward as J, CloudSun as Jn, AirVent as Jr, MapPin as Jt, Smartphone as K, KebabMenu, KeyValueList, Cog as Kn, ArrowDownToLine as Kr, Megaphone as Kt, Tag as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, Droplet as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, BatteryFull as Lr, MoveHorizontal as Lt, ToggleRight as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, Eye as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, BellRing as Mr, Network as Mt, ToggleLeft as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, EyeOff as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, Battery as Nr, Navigation as Nt, TrendingUp as O, OCCUPANCY_KEY, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, Flame as On, OptionSelect, Blinds as Or, Pencil as Ot, Timer as P, PAGE_SIZE_ALL, PHASE_CONFIG, PICKER_CHIP_LIMIT, PICKER_DEFAULT_GROUP_BY, PICKER_GROUP_BY_MODES, PICKER_GROUP_COLLAPSE_AT, PICKER_NONE_KEY, PICKER_NOUN_PLURAL, PICKER_NO_FILTERS, PICKER_PAGE_SIZE, PICKER_SEARCH_DEBOUNCE_MS, PICKER_WINDOW, PRIORITY, PTZOverlay, PageHeader, PageShell, PageSizeSelect, Pagination, PasswordInput, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, ExternalLink as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, BatteryWarning as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Music as Pt, PtzPanel, Shield as Q, CloudFog as Qn, QrCode, LocateFixed as Qt, Sunrise as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RESOLUTION_BUCKET_MS, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, Download as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, Bath as Rr, MousePointerClick as Rt, RunReport, RunningBadge, RunningStatusLine, Unlink2 as S, SCENE_CAPTURE_VARIANTS, SECRET_MASK_PLACEHOLDER, SECRET_REVEAL_MS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, STEP_DOCK_WIDTH_PX, SUBJECT_PATH_DWELL_EPS, SUBJECT_PATH_FULL_FRAME_COVERAGE, SUBJECT_PATH_MAX_POINTS, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, Gauge as Sn, SnapshotButton, SortHeaderButton, Sparkline, Cable as Sr, Plus as St, StableTabPanel, StatCard, StateTimeline, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StorageRecordsPanel, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Truck as T, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimeSeriesChart, TimezoneSelector, Footprints as Tn, Tooltip, TooltipContent, TooltipTrigger, Box as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Pipette as Tt, Sprout as U, UiTextProvider, UiTrans, Crosshair as Un, UnitPicker, ArrowRight as Ur, Mic as Ut, Star as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, ViewSwitch, Dog as Vn, VodPlaybackProvider, ArrowUp as Vr, Minus as Vt, Sparkles as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Cpu as Wn, ArrowLeft as Wr, MessageSquare as Wt, Siren as X, CloudRain as Xn, Lock as Xt, SkipBack as Y, CloudSnow as Yn, Activity as Yr, Mail as Yt, Ship as Z, CloudLightning as Zn, ZoneEditingProvider, LockOpen as Zt, UtensilsCrossed as _, Hand as _n, ChartLine as _r, QrCode$1 as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, alignSeries, allDeviceTypeFilterOptions, LayoutGrid as an, anchorNow, applyFleetQueryDefaults, applyPickerFilters, CirclePause as ar, ariaSortForColumn, assignNodeColorId, Search as at, axisTicks, UserCheck as b, badgeFor, binaryBatteryIsLow, bindsToModel, Grid2x2 as bn, booleanLabels, Car as br, PowerOff as bt, bucketTotals, buildColorByNodeId, buildDataRecordRows, buildPeerConnectionConfig, buildStepTreeFromSchema, buildSubjectPath, buildTimeSeriesModel, Wifi as c, catalogHasDraft, chartKeys, chartSeriesStyle, childEntityId, childListName, chipOverflow, chunk, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, consumableItemLevel, consumableLevelBarClass, consumableLevelLabel, consumableLevelVariant, containerChildToRef, countableDevices, coverHighlight, coverageLine, CircleCheckBig as cr, createAddonI18n, createSharedContext, createTheme, Save as ct, currentAddonLanguage, cursorFractionFor, WifiLow as d, darkColors, dataRecordContents, dataRecordKey, dataRecordSearchText, dataRecordType, dataTableFacetGroups, dataTableFacets, decodeCustomWindow, decodeSeriesRef, defaultAxisSpec, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, defaultUiText, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ImageOff as dn, dockBox, ChevronsDownUp as dr, draftFromQuery, RotateCw as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, List as en, encodeCustomWindow, encodeSeriesRef, energyBuckets, ensureMfHostInit, Clapperboard as er, ShieldCheck as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOccupancyLines, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, House as fn, formatChartBytes, formatChartNumber, formatChartValue, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, formatSpan, formatTimeLabel, ChevronUp as fr, freezeVerdict, RotateCcw as ft, fuzzyMatch, Vibrate as g, gapThresholdMs, getClassColor, getPhaseVisual, HardDrive as gn, Check as gr, groupAgentColumns, groupChildrenByLayout, groupDeviceSeries, groupPickerDevices, groupPickerDevicesBy, Radar as gt, Volume2 as h, hardwareLabel, historyPageHref, Hash as hn, ChevronDown as hr, RadioTower as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humanizeName, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, Leaf as in, initialScrubState, insertAtSelection, CirclePlus as ir, isAbsentProvider, isByteUnit, isConsumableLevelField, isDataTableFilterActive, isDrawableSubjectPath, isFieldVisible, isGroupExpanded, isHistoryWindowId, isKeychainFieldValue, isModelScopedField, isRedactedSecret, isRefusal, isSecretField, isValueField, Server as it, Tractor as j, Fan as jn, Bell as jr, Package as jt, Trash2 as k, Film as kn, Bird as kr, PawPrint as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, linePoints, Inbox as ln, loadIconGlyphs, loadRemoteBundle, CircleAlert as lr, Sailboat as lt, lucideExportName, VolumeX as m, makeScrubBridge, mapRootDetectorPlacements, mergeSecretForSubmit, metadataEntries, metadataString, Heater as mn, mountAddonPage, mountPath, ChevronLeft as mr, Radio as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, niceMax, niceRange, Link2 as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, normalizeSelection, CircleStop as nr, Share2 as nt, Workflow as o, occupancyFacets, occupancyLines, offListSelections, Laugh as on, openTopLayer, optionSearchText as optionSelectSearchText, CircleDot as or, orphanDeviceLabel, ScrollText as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseCapKey, parseConsumableLevel, parseIceCandidate, parsePickerGroupBy, parseProducerKey, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, History as pn, ChevronRight as pr, previousWindow, projectSubjectPath, providerIcons, RefreshCw as pt, SlidersHorizontal as q, Cloud as qn, AlarmSmoke as qr, Maximize2 as qt, Zap as r, readHistory, readHistoryPanels, readItemId, readStoredGroupBy, reduceSessionRun, registerAddonBundle, renderMarkup, renderTagged, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveHistoryWindow, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, retrainReviewBadgeLook, Lightbulb as rn, roiTooLarge, rootSourceState, routerBasename, CircleQuestionMark as rr, Settings as rt, runningDurationSince, runningStatusParts, Wind as s, sameLocationSuggestions, scrubReducer, searchSteps, secretDisplayValue, secretSubmitValue, segmentsFromChanges, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, seriesRefId, settingsModelIdFor, sharedGapSpans, shiftPoints, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Info as sn, sortRows, sortRowsByColumn, CircleCheck as sr, Scan as st, stackBuckets, stackSeries, stateAt, stateRow, stateStyle, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, subjectPathSampleFromBox, subjectPathSvgPoints, summarizeHubCandidates, swatchFillClass, swatchLineClass, ZoomOut as t, tabForSelector, themeToCss, themeToRootCss, timeInState, ListChecks as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, CircleX as tr, trainingRefusalText, translateAddonKey, trpc, ShieldAlert as tt, typeLabel, WifiOff as u, Image as un, unitAxes, ChevronsUpDown as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetPackageDocs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupCheckBackupKey, useBackupDelete, useBackupDeleteSchedule, useBackupDisableEncryption, useBackupGetEncryption, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListAvailableDatabases, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupSetupEncryption, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCalendarsGetPreferences, useCalendarsListCalendars, useCalendarsListEvents, useCalendarsSetCalendarPreference, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, useCarbonMonoxideGetStatus, useClassPainter, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksCreateComposition, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderGetInfo, useDecoderReprobeHwaccel, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceCredentialsDeleteDeviceCredential, useDeviceCredentialsGetDeviceCaStatus, useDeviceCredentialsGetDeviceCertificateSettings, useDeviceCredentialsListDeviceCredentials, useDeviceCredentialsRenameDeviceCredential, useDeviceCredentialsRevokeDeviceCredential, useDeviceCredentialsSetDeviceCertificateSettings, useDeviceCredentialsStartEnrollment, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceHistoryDeclareSeries, useDeviceHistoryDeleteOrphanSeries, useDeviceHistoryGetDeviceEnabled, useDeviceHistoryGetStatus, useDeviceHistoryListNodeSeries, useDeviceHistoryListOrphanSeries, useDeviceHistoryListSeries, useDeviceHistoryQuery, useDeviceHistoryQueryMany, useDeviceHistoryQueryNode, useDeviceHistoryRecord, useDeviceHistoryRecordBuckets, useDeviceHistorySetDeviceEnabled, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCleanupDeletedDevicesData, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerGetWrapperActivation, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeletedSince, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSeriesList, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDishwasherGetOptions, useDishwasherGetStatus, useDishwasherPause, useDishwasherResume, useDishwasherSetChildLock, useDishwasherSetExtraDry, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetIntensiveZone, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, useDishwasherSetVarioSpeedPlus, useDishwasherStart, useDishwasherStop, useDisplayIconResolver, useDisplayPaletteGetPalette, useDisplayPaletteListPresets, useDisplayPaletteSetPalette, useDisplayPaletteView, 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, useGroupCommandsGetStatus, useGroupStatusGetStatus, useHeatingValveGetStatus, useHistoryPanels, useHistoryReader, useHistoryReads, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useItemFormUrl, useKeychainAdminAcknowledgeReset, useKeychainAdminDeleteOrphans, useKeychainAdminDownloadRecoveryKey, useKeychainAdminImportSecret, useKeychainAdminListAudit, useKeychainAdminListSecrets, useKeychainAdminPurgeRetiredKeys, useKeychainAdminResetKeychain, useKeychainAdminResetReport, useKeychainAdminReveal, useKeychainAdminRotateMasterKey, useKeychainAdminSetSystemSecret, useKeychainAdminStatus, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmMigrateRawSecrets, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkAddCustomAddress, useLocalNetworkDownloadCa, useLocalNetworkGetAddresses, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetHubAddresses, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLocalNetworkUseStoredUploadedCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputGetTarget, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputProbeTargetConfig, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesActivateAlarmProfile, useNotificationRulesCancelSnooze, useNotificationRulesCreateAlarmProfile, useNotificationRulesCreateRule, useNotificationRulesCreateSequence, useNotificationRulesCreateSnooze, useNotificationRulesDeleteAlarmProfile, useNotificationRulesDeleteRule, useNotificationRulesDeleteSequence, useNotificationRulesGetAlarmConfig, useNotificationRulesGetAlarmSensors, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetSequence, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSequences, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesRenameAlarmProfile, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotificationRulesUpdateSequence, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOidcConnectionsConnectionFormSchema, useOidcConnectionsCreateConnection, useOidcConnectionsDeleteConnection, useOidcConnectionsListConnections, useOidcConnectionsUpdateConnection, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerSetSlotCameraEnabled, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePersistedDisclosure, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsAddRetrainFrameFromRecording, usePipelineAnalyticsAddRetrainFramesToCollection, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsBackfillRetrainOrigins, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsCreateRetrainCollection, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteRetrainCollection, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainCorpusKpi, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainAssistProfiles, usePipelineAnalyticsListRetrainCollectionFrames, usePipelineAnalyticsListRetrainCollections, usePipelineAnalyticsListRetrainCorpusPage, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOfferRetrainArchive, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsProposeRetrainAnnotationsWithLlm, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRemoveRetrainFrameFromCollection, usePipelineAnalyticsRenameRetrainCollection, usePipelineAnalyticsResolveRetrainTrainingCorpus, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetRetrainFrameComplete, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineAnalyticsWriteRetrainArchive, usePipelineExecutorCacheFrameInPool, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorValidatePipeline, usePipelineOrchestratorAbortNodeBenchmark, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteNodeBenchmarkResult, usePipelineOrchestratorForgetInferenceDevice, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeBenchmarkCandidates, usePipelineOrchestratorGetNodeBenchmarkPreflight, usePipelineOrchestratorGetNodeBenchmarkStatus, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListNodeBenchmarkResults, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraDetectionSource, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetNodeStepSettings, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorStartNodeBenchmark, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAbortNodeBench, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetNodeBenchStatus, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePipelineRunnerStartNodeBench, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordEntriesDeleteEntry, useRecordEntriesListEntries, useRecordEntriesListEntryKinds, useRecordEntriesPutEntry, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useRunningStateGetStatus, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreTransact, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSettingsStoreUpsertMany, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMoverClearance, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStoredGroupBy, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetLiveViewerCounts, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListCanaryTargets, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListUsers, useUserManagementMigrateRawSecrets, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeOauthSession, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionApplyDownlinkProbe, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, Route as ut, Users as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, Hammer as vn, Cat as vr, Puzzle as vt, Type as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withHiddenChart, withPanel, withResolvedParentDetail, withUseRootModel, withoutModelScopedFields, withoutPanel, Funnel as wn, Bug as wr, writeStoredGroupBy, Plane as wt, Upload as x, GraduationCap as xn, Camera as xr, Plug as xt, User as y, GripHorizontal as yn, Cast as yr, Power as yt, Sun as z, DoorOpen as zn, Ban as zr, Moon as zt };
70944
+ export { Shield as $, CloudFog as $n, LocateFixed as $t, Trash2 as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Film as An, AppShell, Bird as Ar, ArcKnob, PawPrint as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, Sun as B, BATTERY_BADGE_LOW_KEY, BATTERY_BADGE_NORMAL_KEY, BINARY_BATTERY_LOW_BELOW, BOOLEAN_STATES, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BarSeries, BatteryBadge, DoorOpen as Bn, BottomSheet, Ban as Br, Breadcrumb, BrightnessPanel, Moon as Bt, Button, ButtonControl, ButtonHeroCard, Unlink2 as C, CENTER, CHART_SERIES_TOKENS, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONSUMABLE_LOW_PERCENT, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, ChartFrame, ChartPlaceholder, ChartSwatch, ChartWindowToggle, Checkbox, ChildSectionAccordion, ClimatePanel, Gauge as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumableLevelBadge, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Cable as Cr, Plus as Ct, CustomFieldRenderersProvider, TriangleAlert as D, DATA_RECORDS_KIND_PARAM, DATA_RECORDS_OWNER_PARAM, DATA_RECORD_FACET_GROUPS, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_NAME_FORMS, DEVICE_NAME_JOIN, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_ROLE_NOUNS, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DEVICE_TYPE_NOUNS, DataRecordsHub, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceFleetFromServer, DeviceFleetProvider, DeviceGrid, DeviceHistoryView, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceName, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DisplayPaletteProvider, Flashlight as Dn, DoorbellRecentPanel, Bot as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Pin as Dt, DummyHeroCard, DummyInline, Truck as E, EMPTY_DATA_TABLE_FILTER, EMPTY_HISTORY_PANELS, EVENT_KIND_ICONS, EmptyState, Footprints as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Box as Er, ErrorBox, Pipette as Et, EventKindGlyph, EventStream, ExtensionsPanel, Timer as F, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, ExternalLink as Fn, FormField$1 as FormField, BatteryWarning as Fr, Music as Ft, Sparkles as G, GAP_INTERVAL_FACTOR, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Cpu as Gn, ArrowLeft as Gr, GripTrack, GroupedModelSelector, GroupedTilePicker, MessageSquare as Gt, Star as H, HISTORY_PAGE_PATH, HISTORY_PANELS_NAMESPACE, HISTORY_SELECTION_MAX, HISTORY_WINDOW_IDS, HISTORY_WINDOW_MS, HOST_WIDGETS, HUB_SESSION_RUN_MS, HistoryChart, HistoryWindowBar, HlsVideo, Dog as Hn, HoverZoomImage, ArrowUp as Hr, Minus as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Thermometer as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, EllipsisVertical as In, InferenceConfigSelector, Input, BatteryMedium as Ir, Move as It, ItemFormDialog, SlidersHorizontal as J, Cloud as Jn, AlarmSmoke as Jr, Maximize2 as Jt, Snowflake as K, KebabMenu, KeyValueList, Copy as Kn, ArrowDown as Kr, Menu as Kt, Target as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, Droplets as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, BatteryLow as Lr, MoveVertical as Lt, Tractor as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, Fan as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, Bell as Mr, Package as Mt, ToggleRight as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, Eye as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, BellRing as Nr, Network as Nt, TrendingDown as O, OCCUPANCY_KEY, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, FlashlightOff as On, OptionSelect, Bone as Or, Phone as Ot, ToggleLeft as P, PAGE_SIZE_ALL, PHASE_CONFIG, PICKER_CHIP_LIMIT, PICKER_DEFAULT_GROUP_BY, PICKER_GROUP_BY_MODES, PICKER_GROUP_COLLAPSE_AT, PICKER_NONE_KEY, PICKER_NOUN_PLURAL, PICKER_NO_FILTERS, PICKER_PAGE_SIZE, PICKER_SEARCH_DEBOUNCE_MS, PICKER_WINDOW, PRIORITY, PTZOverlay, PageHeader, PageShell, PageSizeSelect, Pagination, PasswordInput, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, EyeOff as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, Battery as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Navigation as Pt, PtzPanel, Ship as Q, CloudLightning as Qn, QrCode, LockOpen as Qt, Tag as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RESOLUTION_BUCKET_MS, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, Droplet as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, BatteryFull as Rr, MoveHorizontal as Rt, RunReport, RunningBadge, RunningStatusLine, Upload as S, SCENE_CAPTURE_VARIANTS, SECRET_MASK_PLACEHOLDER, SECRET_REVEAL_MS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, STEP_DOCK_WIDTH_PX, SUBJECT_PATH_DWELL_EPS, SUBJECT_PATH_FULL_FRAME_COVERAGE, SUBJECT_PATH_MAX_POINTS, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, GraduationCap as Sn, SnapshotButton, SortHeaderButton, Sparkline, Camera as Sr, Plug as St, StableTabPanel, StatCard, StateTimeline, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StorageRecordsPanel, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Type as T, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimeSeriesChart, TimezoneSelector, Funnel as Tn, Tooltip, TooltipContent, TooltipTrigger, Bug as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Plane as Tt, Square as U, UiTextProvider, UiTrans, Database as Un, UnitPicker, ArrowUpToLine as Ur, Minimize2 as Ut, SunMedium as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, ViewSwitch, DoorClosed as Vn, VodPlaybackProvider, Baby as Vr, MonitorPlay as Vt, Sprout as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Crosshair as Wn, ArrowRight as Wr, Mic as Wt, SkipBack as X, CloudSnow as Xn, Activity as Xr, Mail as Xt, SkipForward as Y, CloudSun as Yn, AirVent as Yr, MapPin as Yt, Siren as Z, CloudRain as Zn, ZoneEditingProvider, Lock as Zt, Vibrate as _, HardDrive as _n, Check as _r, Radar as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, alignSeries, allDeviceTypeFilterOptions, Leaf as an, anchorNow, applyFleetQueryDefaults, applyPickerFilters, CirclePlus as ar, ariaSortForColumn, assignNodeColorId, Server as at, axisTicks, User as b, badgeFor, binaryBatteryIsLow, bindsToModel, GripHorizontal as bn, booleanLabels, Cast as br, Power as bt, bucketTotals, buildColorByNodeId, buildDataRecordRows, buildPeerConnectionConfig, buildStepTreeFromSchema, buildSubjectPath, buildTimeSeriesModel, Wifi as c, catalogHasDraft, chartKeys, chartSeriesStyle, childEntityId, childListName, chipOverflow, chunk, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, consumableItemLevel, consumableLevelBarClass, consumableLevelLabel, consumableLevelVariant, containerChildToRef, countableDevices, coverHighlight, coverageLine, CircleCheck as cr, createAddonI18n, createSharedContext, createTheme, Scan as ct, currentAddonLanguage, cursorFractionFor, WifiLow as d, darkColors, dataRecordContents, dataRecordKey, dataRecordSearchText, dataRecordType, dataTableFacetGroups, dataTableFacets, decodeCustomWindow, decodeSeriesRef, defaultAxisSpec, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, defaultUiText, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceNameNouns, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, Image as dn, dockBox, ChevronsUpDown as dr, draftFromQuery, Route as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, LoaderCircle as en, encodeCustomWindow, encodeSeriesRef, energyBuckets, ensureMfHostInit, Clock as er, ShieldOff as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOccupancyLines, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, ImageOff as fn, foldDeviceName, formatChartBytes, formatChartNumber, formatChartValue, formatControlDateTime, formatDeviceName, formatLastSeen, formatNumeric, formatSettingValue, formatSpan, formatTimeLabel, ChevronsDownUp as fr, freezeVerdict, RotateCw as ft, fuzzyMatch, Volume2 as g, gapThresholdMs, getClassColor, getPhaseVisual, Hash as gn, ChevronDown as gr, groupAgentColumns, groupChildrenByLayout, groupDeviceSeries, groupPickerDevices, groupPickerDevicesBy, RadioTower as gt, VolumeX as h, hardwareLabel, historyPageHref, Heater as hn, ChevronLeft as hr, Radio as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humanizeName, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, Lightbulb as in, indexDeviceNames, initialScrubState, insertAtSelection, CircleQuestionMark as ir, isAbsentProvider, isByteUnit, isConsumableLevelField, isDataTableFilterActive, isDeviceNameStock, isDrawableSubjectPath, isFieldVisible, isGroupExpanded, isHistoryWindowId, isKeychainFieldValue, isModelScopedField, isRedactedSecret, isRefusal, isSecretField, isValueField, Settings as it, TrainFront as j, Feather as jn, Bike as jr, Pause as jt, TrendingUp as k, Flame as kn, Blinds as kr, Pencil as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, linePoints, Info as ln, loadIconGlyphs, loadRemoteBundle, CircleCheckBig as lr, Save as lt, lucideExportName, WashingMachine as m, makeScrubBridge, mapRootDetectorPlacements, mergeSecretForSubmit, metadataEntries, metadataString, History as mn, mountAddonPage, mountPath, ChevronRight as mr, RefreshCw as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, niceMax, niceRange, ListChecks as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, normalizeSelection, nounSpecFor, CircleX as nr, ShieldAlert as nt, Workflow as o, occupancyFacets, occupancyLines, offListSelections, LayoutGrid as on, openTopLayer, optionSearchText as optionSelectSearchText, CirclePause as or, orphanDeviceLabel, Search as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseCapKey, parseConsumableLevel, parseIceCandidate, parsePickerGroupBy, parseProducerKey, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, House as pn, ChevronUp as pr, previousWindow, projectSubjectPath, providerIcons, RotateCcw as pt, Smartphone as q, Cog as qn, ArrowDownToLine as qr, Megaphone as qt, Zap as r, readHistory, readHistoryPanels, readItemId, readStoredGroupBy, reduceSessionRun, registerAddonBundle, renderMarkup, renderTagged, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDeviceLabel, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveHistoryWindow, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, retrainReviewBadgeLook, Link2 as rn, roiTooLarge, rootSourceState, routerBasename, CircleStop as rr, Share2 as rt, runningDurationSince, runningStatusParts, Wind as s, sameDeviceName, sameLocationSuggestions, scrubReducer, searchSteps, secretDisplayValue, secretSubmitValue, segmentsFromChanges, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, seriesRefId, settingsModelIdFor, sharedGapSpans, shiftPoints, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Laugh as sn, sortRows, sortRowsByColumn, CircleDot as sr, ScrollText as st, stackBuckets, stackSeries, stateAt, stateRow, stateStyle, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripDeviceParentPrefix, stripParentNamePrefix, subjectPathSampleFromBox, subjectPathSvgPoints, summarizeHubCandidates, swatchFillClass, swatchLineClass, ZoomOut as t, tabForSelector, themeToCss, themeToRootCss, timeInState, List as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, Clapperboard as tr, trainingRefusalText, translateAddonKey, trpc, ShieldCheck as tt, typeLabel, WifiOff as u, Inbox as un, unitAxes, CircleAlert as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetPackageDocs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupCheckBackupKey, useBackupDelete, useBackupDeleteSchedule, useBackupDisableEncryption, useBackupGetEncryption, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListAvailableDatabases, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupSetupEncryption, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCalendarsGetPreferences, useCalendarsListCalendars, useCalendarsListEvents, useCalendarsSetCalendarPreference, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, useCarbonMonoxideGetStatus, useClassPainter, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksCreateComposition, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderGetInfo, useDecoderReprobeHwaccel, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceCredentialsDeleteDeviceCredential, useDeviceCredentialsGetDeviceCaStatus, useDeviceCredentialsGetDeviceCertificateSettings, useDeviceCredentialsListDeviceCredentials, useDeviceCredentialsRenameDeviceCredential, useDeviceCredentialsRevokeDeviceCredential, useDeviceCredentialsSetDeviceCertificateSettings, useDeviceCredentialsStartEnrollment, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceHistoryDeclareSeries, useDeviceHistoryDeleteOrphanSeries, useDeviceHistoryGetDeviceEnabled, useDeviceHistoryGetStatus, useDeviceHistoryListNodeSeries, useDeviceHistoryListOrphanSeries, useDeviceHistoryListSeries, useDeviceHistoryQuery, useDeviceHistoryQueryMany, useDeviceHistoryQueryNode, useDeviceHistoryRecord, useDeviceHistoryRecordBuckets, useDeviceHistorySetDeviceEnabled, useDeviceId, useDeviceLabel, useDeviceLabelById, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCleanupDeletedDevicesData, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerGetWrapperActivation, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeletedSince, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNameIndex, useDeviceNameNouns, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSeriesList, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDishwasherGetOptions, useDishwasherGetStatus, useDishwasherPause, useDishwasherResume, useDishwasherSetChildLock, useDishwasherSetExtraDry, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetIntensiveZone, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, useDishwasherSetVarioSpeedPlus, useDishwasherStart, useDishwasherStop, useDisplayIconResolver, useDisplayPaletteGetPalette, useDisplayPaletteListPresets, useDisplayPaletteSetPalette, useDisplayPaletteView, 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, useGroupCommandsGetStatus, useGroupStatusGetStatus, useHeatingValveGetStatus, useHistoryPanels, useHistoryReader, useHistoryReads, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useItemFormUrl, useKeychainAdminAcknowledgeReset, useKeychainAdminDeleteOrphans, useKeychainAdminDownloadRecoveryKey, useKeychainAdminImportSecret, useKeychainAdminListAudit, useKeychainAdminListSecrets, useKeychainAdminPurgeRetiredKeys, useKeychainAdminResetKeychain, useKeychainAdminResetReport, useKeychainAdminReveal, useKeychainAdminRotateMasterKey, useKeychainAdminSetSystemSecret, useKeychainAdminStatus, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmMigrateRawSecrets, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkAddCustomAddress, useLocalNetworkDownloadCa, useLocalNetworkGetAddresses, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetHubAddresses, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLocalNetworkUseStoredUploadedCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputGetTarget, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputProbeTargetConfig, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesActivateAlarmProfile, useNotificationRulesCancelSnooze, useNotificationRulesCreateAlarmProfile, useNotificationRulesCreateRule, useNotificationRulesCreateSequence, useNotificationRulesCreateSnooze, useNotificationRulesDeleteAlarmProfile, useNotificationRulesDeleteRule, useNotificationRulesDeleteSequence, useNotificationRulesGetAlarmConfig, useNotificationRulesGetAlarmSensors, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetSequence, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSequences, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesRenameAlarmProfile, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotificationRulesUpdateSequence, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOidcConnectionsConnectionFormSchema, useOidcConnectionsCreateConnection, useOidcConnectionsDeleteConnection, useOidcConnectionsListConnections, useOidcConnectionsUpdateConnection, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerSetSlotCameraEnabled, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePersistedDisclosure, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsAddRetrainFrameFromRecording, usePipelineAnalyticsAddRetrainFramesToCollection, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsBackfillRetrainOrigins, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsCreateRetrainCollection, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteRetrainCollection, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainCorpusKpi, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainAssistProfiles, usePipelineAnalyticsListRetrainCollectionFrames, usePipelineAnalyticsListRetrainCollections, usePipelineAnalyticsListRetrainCorpusPage, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOfferRetrainArchive, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsProposeRetrainAnnotationsWithLlm, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRemoveRetrainFrameFromCollection, usePipelineAnalyticsRenameRetrainCollection, usePipelineAnalyticsResolveRetrainTrainingCorpus, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetRetrainFrameComplete, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineAnalyticsWriteRetrainArchive, usePipelineExecutorCacheFrameInPool, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorValidatePipeline, usePipelineOrchestratorAbortNodeBenchmark, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteNodeBenchmarkResult, usePipelineOrchestratorForgetInferenceDevice, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeBenchmarkCandidates, usePipelineOrchestratorGetNodeBenchmarkPreflight, usePipelineOrchestratorGetNodeBenchmarkStatus, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListNodeBenchmarkResults, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraDetectionSource, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetNodeStepSettings, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorStartNodeBenchmark, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAbortNodeBench, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetNodeBenchStatus, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePipelineRunnerStartNodeBench, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordEntriesDeleteEntry, useRecordEntriesListEntries, useRecordEntriesListEntryKinds, useRecordEntriesPutEntry, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useRunningStateGetStatus, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreTransact, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSettingsStoreUpsertMany, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMoverClearance, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStoredGroupBy, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetLiveViewerCounts, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListCanaryTargets, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListUsers, useUserManagementMigrateRawSecrets, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeOauthSession, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, 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, Sailboat as ut, UtensilsCrossed as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, Hand as vn, ChartLine as vr, QrCode$1 as vt, Undo2 as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withHiddenChart, withPanel, withResolvedParentDetail, withUseRootModel, withoutModelScopedFields, withoutPanel, Gamepad2 as wn, Bus as wr, writeStoredGroupBy, Play as wt, UserCheck as x, Grid2x2 as xn, Car as xr, PowerOff as xt, Users as y, Hammer as yn, Cat as yr, Puzzle as yt, Sunrise as z, Download as zn, Bath as zr, MousePointerClick as zt };