@camstack/ui-library 1.2.376 → 1.2.377

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
@@ -3447,6 +3447,58 @@ var RefreshCw = createLucideIcon("refresh-cw", [
3447
3447
  * This source code is licensed under the ISC license.
3448
3448
  * See the LICENSE file in the root directory of this source tree.
3449
3449
  */
3450
+ var Repeat1 = createLucideIcon("repeat-1", [
3451
+ ["path", {
3452
+ d: "m17 2 4 4-4 4",
3453
+ key: "nntrym"
3454
+ }],
3455
+ ["path", {
3456
+ d: "M3 11v-1a4 4 0 0 1 4-4h14",
3457
+ key: "84bu3i"
3458
+ }],
3459
+ ["path", {
3460
+ d: "m7 22-4-4 4-4",
3461
+ key: "1wqhfi"
3462
+ }],
3463
+ ["path", {
3464
+ d: "M21 13v1a4 4 0 0 1-4 4H3",
3465
+ key: "1rx37r"
3466
+ }],
3467
+ ["path", {
3468
+ d: "M11 10h1v4",
3469
+ key: "70cz1p"
3470
+ }]
3471
+ ]);
3472
+ /**
3473
+ * @license lucide-react v0.576.0 - ISC
3474
+ *
3475
+ * This source code is licensed under the ISC license.
3476
+ * See the LICENSE file in the root directory of this source tree.
3477
+ */
3478
+ var Repeat = createLucideIcon("repeat", [
3479
+ ["path", {
3480
+ d: "m17 2 4 4-4 4",
3481
+ key: "nntrym"
3482
+ }],
3483
+ ["path", {
3484
+ d: "M3 11v-1a4 4 0 0 1 4-4h14",
3485
+ key: "84bu3i"
3486
+ }],
3487
+ ["path", {
3488
+ d: "m7 22-4-4 4-4",
3489
+ key: "1wqhfi"
3490
+ }],
3491
+ ["path", {
3492
+ d: "M21 13v1a4 4 0 0 1-4 4H3",
3493
+ key: "1rx37r"
3494
+ }]
3495
+ ]);
3496
+ /**
3497
+ * @license lucide-react v0.576.0 - ISC
3498
+ *
3499
+ * This source code is licensed under the ISC license.
3500
+ * See the LICENSE file in the root directory of this source tree.
3501
+ */
3450
3502
  var RotateCcw = createLucideIcon("rotate-ccw", [["path", {
3451
3503
  d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",
3452
3504
  key: "1357e3"
@@ -3822,6 +3874,34 @@ var Ship = createLucideIcon("ship", [
3822
3874
  * This source code is licensed under the ISC license.
3823
3875
  * See the LICENSE file in the root directory of this source tree.
3824
3876
  */
3877
+ var Shuffle = createLucideIcon("shuffle", [
3878
+ ["path", {
3879
+ d: "m18 14 4 4-4 4",
3880
+ key: "10pe0f"
3881
+ }],
3882
+ ["path", {
3883
+ d: "m18 2 4 4-4 4",
3884
+ key: "pucp1d"
3885
+ }],
3886
+ ["path", {
3887
+ d: "M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22",
3888
+ key: "1ailkh"
3889
+ }],
3890
+ ["path", {
3891
+ d: "M2 6h1.972a4 4 0 0 1 3.6 2.2",
3892
+ key: "km57vx"
3893
+ }],
3894
+ ["path", {
3895
+ d: "M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45",
3896
+ key: "os18l9"
3897
+ }]
3898
+ ]);
3899
+ /**
3900
+ * @license lucide-react v0.576.0 - ISC
3901
+ *
3902
+ * This source code is licensed under the ISC license.
3903
+ * See the LICENSE file in the root directory of this source tree.
3904
+ */
3825
3905
  var Siren = createLucideIcon("siren", [
3826
3906
  ["path", {
3827
3907
  d: "M7 18v-6a5 5 0 1 1 10 0v6",
@@ -5970,7 +6050,7 @@ function lucideExportName(key) {
5970
6050
  function loadIconGlyphs() {
5971
6051
  if (fullTable !== void 0) return Promise.resolve();
5972
6052
  if (failure$1 !== void 0) return Promise.reject(failure$1);
5973
- pending ??= import("./icons-e-xohmFb.js").then((module) => {
6053
+ pending ??= import("./icons-cIFSolkx.js").then((module) => {
5974
6054
  fullTable = module;
5975
6055
  publish();
5976
6056
  }, (error) => {
@@ -27737,6 +27817,92 @@ function NavigationPanel({ deviceId }) {
27737
27817
  });
27738
27818
  }
27739
27819
  //#endregion
27820
+ //#region src/composites/cap-settings/PowerMeterLine.tsx
27821
+ /**
27822
+ * PowerMeterLine — the ONE place a device's electrical draw is shown (D1004):
27823
+ * a slim line directly under the device page's hero card, for every device
27824
+ * bound to the `power-meter` capability, whatever its type. The cap declares
27825
+ * `ui: { kind:'widget', widgetId:'host/power-meter-line', placement:'hero' }`;
27826
+ * no device-controls hero card draws watts itself
27827
+ * (`scripts/check-no-hero-self-drawn-power.ts`).
27828
+ *
27829
+ * A reading the device never reported is not drawn as a number: no slice, or
27830
+ * a slice with neither power nor energy, renders nothing; a missing field
27831
+ * (power but no energy, or the reverse) is simply absent, never `0` or `NaN`.
27832
+ */
27833
+ /** A finite number, or null: the one gate between a slice field and the screen. */
27834
+ function known(value) {
27835
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
27836
+ }
27837
+ /** Whole watts below a kilowatt, one decimal above. */
27838
+ function formatPowerWatts(watts) {
27839
+ return Math.abs(watts) >= 1e3 ? {
27840
+ value: (watts / 1e3).toFixed(1),
27841
+ unit: "kW"
27842
+ } : {
27843
+ value: String(Math.round(watts)),
27844
+ unit: "W"
27845
+ };
27846
+ }
27847
+ /** Two decimals under 100 kWh, whole kWh above. */
27848
+ function formatEnergyKwh(kwh) {
27849
+ return Math.abs(kwh) >= 100 ? String(Math.round(kwh)) : kwh.toFixed(2);
27850
+ }
27851
+ function PowerMeterLine({ deviceId }) {
27852
+ const t = useUiText();
27853
+ const { slice } = useDeviceCapability({
27854
+ trpc: useSystem().trpcClient,
27855
+ deviceId,
27856
+ cap: (d) => d.powerMeter,
27857
+ slice: (d) => d.state.powerMeter
27858
+ });
27859
+ const power = known(slice?.power);
27860
+ const energy = known(slice?.energy);
27861
+ if (power === null && energy === null) return null;
27862
+ const drawing = power !== null && power > 0;
27863
+ const shown = power === null ? null : formatPowerWatts(power);
27864
+ return /* @__PURE__ */ jsxs("div", {
27865
+ "data-testid": "power-meter-line",
27866
+ className: "flex items-center gap-3 rounded-lg border border-border bg-surface px-3 py-2",
27867
+ children: [
27868
+ /* @__PURE__ */ jsxs("span", {
27869
+ className: "relative flex h-5 w-5 shrink-0 items-center justify-center",
27870
+ children: [drawing && /* @__PURE__ */ jsx("span", {
27871
+ "aria-hidden": "true",
27872
+ "data-testid": "power-meter-pulse",
27873
+ className: "absolute inset-0 rounded-full bg-primary/20 motion-safe:animate-pulse"
27874
+ }), /* @__PURE__ */ jsx(Zap, {
27875
+ className: cn("relative h-3.5 w-3.5", drawing ? "text-primary" : "text-foreground-subtle"),
27876
+ "aria-hidden": true
27877
+ })]
27878
+ }),
27879
+ shown !== null && /* @__PURE__ */ jsxs("span", {
27880
+ "data-testid": "power-meter-power",
27881
+ className: "flex items-baseline gap-1 tabular-nums",
27882
+ children: [/* @__PURE__ */ jsx("span", {
27883
+ className: "text-lg font-semibold text-foreground",
27884
+ children: shown.value
27885
+ }), /* @__PURE__ */ jsx("span", {
27886
+ className: "text-xs text-foreground-muted",
27887
+ children: shown.unit
27888
+ })]
27889
+ }),
27890
+ energy !== null && /* @__PURE__ */ jsxs("span", {
27891
+ "data-testid": "power-meter-energy",
27892
+ className: "ml-auto flex items-baseline gap-1 tabular-nums",
27893
+ title: t("uiLibrary.powerMeterLine.energy", "Energy"),
27894
+ children: [/* @__PURE__ */ jsx("span", {
27895
+ className: "text-sm text-foreground-muted",
27896
+ children: formatEnergyKwh(energy)
27897
+ }), /* @__PURE__ */ jsx("span", {
27898
+ className: "text-xs text-foreground-subtle",
27899
+ children: "kWh"
27900
+ })]
27901
+ })
27902
+ ]
27903
+ });
27904
+ }
27905
+ //#endregion
27740
27906
  //#region src/lib/cap-error.ts
27741
27907
  /**
27742
27908
  * Shared capability-error utilities for the admin UI.
@@ -30710,11 +30876,12 @@ function RecordingPanel({ deviceId }) {
30710
30876
  * `type:'widget'` ConfigField. `WidgetSlot` resolves these BEFORE the
30711
30877
  * Module-Federation `WidgetRegistry`. ids are namespaced `host/<name>`. */
30712
30878
  var HOST_WIDGETS = {
30713
- "host/motion-zones-grid": lazy(() => import("./MotionZonesSettings-Zcfa5c9l.js").then((m) => ({ default: m.MotionZonesSettings }))),
30714
- "host/privacy-mask-grid": lazy(() => import("./PrivacyMaskSettings-B_X42yzN.js").then((m) => ({ default: m.PrivacyMaskSettings }))),
30879
+ "host/motion-zones-grid": lazy(() => import("./MotionZonesSettings-BvpjmW6y.js").then((m) => ({ default: m.MotionZonesSettings }))),
30880
+ "host/privacy-mask-grid": lazy(() => import("./PrivacyMaskSettings-D7o4tx8e.js").then((m) => ({ default: m.PrivacyMaskSettings }))),
30715
30881
  "host/ptz-panel": PtzPanel,
30716
30882
  "host/navigation-panel": NavigationPanel,
30717
30883
  "host/consumables-panel": ConsumablesPanel,
30884
+ "host/power-meter-line": PowerMeterLine,
30718
30885
  "host/ptz-autotrack": AutotrackSection,
30719
30886
  "host/recording-panel": RecordingPanel,
30720
30887
  "host/camera-grid-layout": CameraGridLayoutEditor,
@@ -37051,8 +37218,8 @@ function pickWifiIcon(signalPercent) {
37051
37218
  }
37052
37219
  function signalColor(signalPercent) {
37053
37220
  if (signalPercent === null) return "text-foreground-subtle";
37054
- if (signalPercent <= 20) return "text-rose-400";
37055
- if (signalPercent <= 50) return "text-amber-400";
37221
+ if (signalPercent <= 20) return "text-danger";
37222
+ if (signalPercent <= 50) return "text-warning";
37056
37223
  return "text-foreground-subtle";
37057
37224
  }
37058
37225
  function NetworkLinkBadge({ status, className }) {
@@ -37063,15 +37230,16 @@ function NetworkLinkBadge({ status, className }) {
37063
37230
  title: t("uiLibrary.networkLinkBadge.ethernet", "Network: ethernet"),
37064
37231
  children: /* @__PURE__ */ jsx(Cable, { className: "h-3.5 w-3.5" })
37065
37232
  });
37066
- const Icon = status.type === "cellular" ? RadioTower : pickWifiIcon(status.signal);
37067
- const signal = status.signal === null ? null : Math.round(status.signal);
37233
+ const reading = typeof status.signal === "number" && Number.isFinite(status.signal) ? status.signal : null;
37234
+ const Icon = status.type === "cellular" ? RadioTower : pickWifiIcon(reading);
37235
+ const signal = reading === null ? null : Math.round(reading);
37068
37236
  const networkText = status.ssid ? t("uiLibrary.networkLinkBadge.typeSsid", "Network: {{type}} ({{ssid}})", {
37069
37237
  type: status.type,
37070
37238
  ssid: status.ssid
37071
37239
  }) : t("uiLibrary.networkLinkBadge.type", "Network: {{type}}", { type: status.type });
37072
37240
  const title = signal === null ? networkText : `${networkText} · ${t("uiLibrary.networkLinkBadge.signal", "signal {{percent}}%", { percent: signal })}`;
37073
37241
  return /* @__PURE__ */ jsxs("span", {
37074
- className: cn("inline-flex items-center gap-1 text-[10px] font-medium", signalColor(status.signal), className),
37242
+ className: cn("inline-flex items-center gap-1 text-[10px] font-medium", signalColor(reading), className),
37075
37243
  title,
37076
37244
  children: [/* @__PURE__ */ jsx(Icon, { className: "h-3.5 w-3.5" }), signal !== null && /* @__PURE__ */ jsxs("span", { children: [signal, "%"] })]
37077
37245
  });
@@ -48758,29 +48926,179 @@ function ClimatePanel({ trpc, deviceId, features: _features, layout, optimistic
48758
48926
  });
48759
48927
  }
48760
48928
  //#endregion
48929
+ //#region src/composites/device-controls/media-player-view.ts
48930
+ /**
48931
+ * The state → view mapping of the media-player hero card, kept pure so it can
48932
+ * be specified without rendering.
48933
+ *
48934
+ * Two questions are answered separately. POWER is whether the device is on
48935
+ * (`off` / `standby` / on); RUNNING is what a powered device is doing
48936
+ * (`playing` / `paused` / `buffering` / `idle`). A status that never arrived
48937
+ * is `unknown` for both, and an unknown state is never drawn as off: it is
48938
+ * its own look. A value the driver only guesses (infrared has no feedback)
48939
+ * carries an `assumed` flag so the card can draw it as a guess.
48940
+ *
48941
+ * The controls are derived from what the device exposes — the status fields
48942
+ * it fills and the `DeviceFeature` flags it declares — never from a vendor.
48943
+ */
48944
+ var NO_TRANSPORT = {
48945
+ playPause: false,
48946
+ previous: false,
48947
+ next: false,
48948
+ stop: false
48949
+ };
48950
+ /** Whether the status carries any activity the device actually reported. */
48951
+ function runningOf(state) {
48952
+ switch (state) {
48953
+ case "playing":
48954
+ case "paused":
48955
+ case "buffering":
48956
+ case "idle": return state;
48957
+ case void 0: return "unknown";
48958
+ default: return "none";
48959
+ }
48960
+ }
48961
+ function artworkOf(status) {
48962
+ const url = status.currentMedia?.imageUrl?.trim() ?? "";
48963
+ return url === "" ? null : url;
48964
+ }
48965
+ function powerOf(state) {
48966
+ if (state === void 0) return "unknown";
48967
+ if (state === "off") return "off";
48968
+ if (state === "standby") return "standby";
48969
+ return "on";
48970
+ }
48971
+ /**
48972
+ * A slice from before `assumedFields` existed (stateSource assumed, no list)
48973
+ * means the whole state is a guess; with a list, only the named fields are.
48974
+ */
48975
+ function isAssumed(status, field) {
48976
+ if (status.stateSource !== "assumed") return false;
48977
+ const listed = status.assumedFields ?? [];
48978
+ return listed.length === 0 || listed.includes(field);
48979
+ }
48980
+ var UNKNOWN_VIEW = {
48981
+ power: "unknown",
48982
+ runningReading: "unknown",
48983
+ running: "unknown",
48984
+ stateAssumed: false,
48985
+ canSwitchPower: false,
48986
+ transport: NO_TRANSPORT,
48987
+ seek: false,
48988
+ volume: "none",
48989
+ volumeAssumed: false,
48990
+ volumeKnown: false,
48991
+ muteKnown: false,
48992
+ artworkUrl: null,
48993
+ mute: false,
48994
+ muteAssumed: false,
48995
+ source: null,
48996
+ sourceAssumed: false,
48997
+ shuffle: false,
48998
+ repeat: false
48999
+ };
49000
+ function readingOf(running) {
49001
+ if (running === true) return "running";
49002
+ if (running === false) return "idle";
49003
+ return "unknown";
49004
+ }
49005
+ function deriveMediaPlayerView(status, features, extras = {}) {
49006
+ const runningReading = readingOf(extras.running);
49007
+ const view = deriveFromStatus(status, features);
49008
+ const guessed = status === void 0 || status.state === void 0 || view.stateAssumed;
49009
+ if (runningReading === "unknown" || !guessed) return {
49010
+ ...view,
49011
+ runningReading
49012
+ };
49013
+ if (runningReading === "idle") return {
49014
+ ...UNKNOWN_VIEW,
49015
+ power: "off",
49016
+ running: "none",
49017
+ canSwitchPower: view.canSwitchPower,
49018
+ runningReading
49019
+ };
49020
+ return {
49021
+ ...status === void 0 ? view : deriveFromStatus(status.state === void 0 || status.state === "off" || status.state === "standby" ? {
49022
+ ...status,
49023
+ state: "on"
49024
+ } : status, features),
49025
+ power: "on",
49026
+ stateAssumed: false,
49027
+ runningReading
49028
+ };
49029
+ }
49030
+ function deriveFromStatus(status, features) {
49031
+ const has = (f) => features?.includes(f) ?? false;
49032
+ const canSwitchPower = has(DeviceFeature.MediaPlayerPower);
49033
+ if (status === void 0 || status.state === void 0) return {
49034
+ ...UNKNOWN_VIEW,
49035
+ canSwitchPower
49036
+ };
49037
+ const power = powerOf(status.state);
49038
+ const running = runningOf(status.state);
49039
+ const base = {
49040
+ ...UNKNOWN_VIEW,
49041
+ power,
49042
+ running,
49043
+ stateAssumed: isAssumed(status, "state"),
49044
+ canSwitchPower
49045
+ };
49046
+ if (power !== "on") return base;
49047
+ const hasTransportFeature = has(DeviceFeature.MediaPlayerNext) || has(DeviceFeature.MediaPlayerPrevious) || has(DeviceFeature.MediaPlayerStop) || has(DeviceFeature.MediaPlayerSeek);
49048
+ const volume = has(DeviceFeature.MediaPlayerVolume) ? "slider" : has(DeviceFeature.MediaPlayerVolumeStep) ? "steps" : "none";
49049
+ const sourceName = typeof status.source === "string" ? status.source.trim() : "";
49050
+ const options = status.availableSources ?? [];
49051
+ const hasSource = sourceName !== "" || options.length > 0;
49052
+ return {
49053
+ ...base,
49054
+ transport: {
49055
+ playPause: running !== "none" || hasTransportFeature,
49056
+ previous: has(DeviceFeature.MediaPlayerPrevious),
49057
+ next: has(DeviceFeature.MediaPlayerNext),
49058
+ stop: has(DeviceFeature.MediaPlayerStop)
49059
+ },
49060
+ seek: has(DeviceFeature.MediaPlayerSeek) && status.duration !== null && status.duration > 0,
49061
+ volume,
49062
+ volumeAssumed: isAssumed(status, "volumeLevel"),
49063
+ mute: has(DeviceFeature.MediaPlayerMute) || volume === "slider" && status.isMuted !== null,
49064
+ volumeKnown: status.volumeLevel !== null,
49065
+ muteKnown: status.isMuted !== null,
49066
+ artworkUrl: artworkOf(status),
49067
+ muteAssumed: isAssumed(status, "isMuted"),
49068
+ source: hasSource ? {
49069
+ current: sourceName,
49070
+ options,
49071
+ selectable: has(DeviceFeature.MediaPlayerSelectSource) && options.length > 1
49072
+ } : null,
49073
+ sourceAssumed: isAssumed(status, "source"),
49074
+ shuffle: has(DeviceFeature.MediaPlayerShuffle) && status.shuffle !== null,
49075
+ repeat: has(DeviceFeature.MediaPlayerRepeat) && status.repeat !== null
49076
+ };
49077
+ }
49078
+ //#endregion
48761
49079
  //#region src/composites/device-controls/media-player-panel.tsx
48762
49080
  /**
48763
49081
  * Exhaustive colour map — one entry per MediaPlayerState.
48764
49082
  * Build fails if a state is added and not reflected here.
48765
49083
  */
48766
49084
  var STATE_COLOR = {
48767
- playing: "border-green-400 bg-green-50 dark:bg-green-950",
48768
- paused: "border-amber-400 bg-amber-50 dark:bg-amber-950",
48769
- buffering: "border-blue-400 bg-blue-50 dark:bg-blue-950",
48770
- on: "border-slate-400 bg-slate-50 dark:bg-slate-950",
48771
- idle: "border-slate-400 bg-slate-50 dark:bg-slate-950",
48772
- off: "border-zinc-300 bg-zinc-50 dark:bg-zinc-900",
48773
- standby: "border-zinc-300 bg-zinc-50 dark:bg-zinc-900"
49085
+ playing: "border-success/50 bg-success/10",
49086
+ paused: "border-warning/50 bg-warning/10",
49087
+ buffering: "border-info/50 bg-info/10",
49088
+ on: "border-foreground-subtle/40 bg-surface-hover",
49089
+ idle: "border-foreground-subtle/40 bg-surface-hover",
49090
+ off: "border-border bg-surface",
49091
+ standby: "border-border bg-surface"
48774
49092
  };
48775
49093
  /** Dot indicator colour (small circle) per state. */
48776
49094
  var STATE_DOT_COLOR = {
48777
- playing: "bg-green-500",
48778
- paused: "bg-amber-400",
48779
- buffering: "bg-blue-400",
48780
- on: "bg-slate-400",
48781
- idle: "bg-slate-400",
48782
- off: "bg-zinc-300",
48783
- standby: "bg-zinc-300"
49095
+ playing: "bg-success",
49096
+ paused: "bg-warning",
49097
+ buffering: "bg-info",
49098
+ on: "bg-foreground-subtle",
49099
+ idle: "bg-foreground-subtle",
49100
+ off: "bg-border",
49101
+ standby: "bg-border"
48784
49102
  };
48785
49103
  /** Exhaustive tuple of valid repeat values — single source of truth. */
48786
49104
  var REPEAT_VALUES = [
@@ -48804,7 +49122,7 @@ function toggleAction$1(state) {
48804
49122
  if (state === "playing" || state === "buffering") return "pause";
48805
49123
  return "play";
48806
49124
  }
48807
- function MediaPlayerPanel({ trpc, deviceId, features: _features, layout, optimistic }) {
49125
+ function MediaPlayerPanel({ trpc, deviceId, features, layout, optimistic }) {
48808
49126
  const t = useUiText();
48809
49127
  const { cap, slice, available } = useDeviceCapability({
48810
49128
  trpc,
@@ -48814,6 +49132,7 @@ function MediaPlayerPanel({ trpc, deviceId, features: _features, layout, optimis
48814
49132
  });
48815
49133
  const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
48816
49134
  if (display === void 0) return null;
49135
+ const declared = deriveMediaPlayerView(display, features, {});
48817
49136
  const busy = !available;
48818
49137
  const action = toggleAction$1(display.state);
48819
49138
  return /* @__PURE__ */ jsxs("div", {
@@ -48868,7 +49187,7 @@ function MediaPlayerPanel({ trpc, deviceId, features: _features, layout, optimis
48868
49187
  children: "⏭"
48869
49188
  })]
48870
49189
  }),
48871
- display.volumeLevel !== null && /* @__PURE__ */ jsxs("label", {
49190
+ (declared.volume === "slider" || display.volumeLevel !== null) && /* @__PURE__ */ jsxs("label", {
48872
49191
  className: "flex items-center gap-2 text-xs text-foreground-subtle",
48873
49192
  children: [
48874
49193
  /* @__PURE__ */ jsx("span", { children: t("uiLibrary.mediaPlayerPanel.vol", "Vol") }),
@@ -48878,7 +49197,7 @@ function MediaPlayerPanel({ trpc, deviceId, features: _features, layout, optimis
48878
49197
  min: 0,
48879
49198
  max: 100,
48880
49199
  step: 1,
48881
- value: display.volumeLevel,
49200
+ value: display.volumeLevel ?? 0,
48882
49201
  disabled: busy,
48883
49202
  onChange: (e) => {
48884
49203
  const volumeLevel = Number(e.target.value);
@@ -48886,25 +49205,25 @@ function MediaPlayerPanel({ trpc, deviceId, features: _features, layout, optimis
48886
49205
  if (!busy) cap?.setVolume({ volumeLevel });
48887
49206
  }
48888
49207
  }),
48889
- /* @__PURE__ */ jsxs("span", {
49208
+ /* @__PURE__ */ jsx("span", {
48890
49209
  className: "tabular-nums w-8 text-right",
48891
- children: [display.volumeLevel, "%"]
49210
+ children: display.volumeLevel === null ? "—" : `${display.volumeLevel}%`
48892
49211
  })
48893
49212
  ]
48894
49213
  }),
48895
- display.isMuted !== null && /* @__PURE__ */ jsx("button", {
49214
+ (declared.mute || display.isMuted !== null) && /* @__PURE__ */ jsx("button", {
48896
49215
  type: "button",
48897
49216
  "aria-label": display.isMuted ? t("uiLibrary.mediaPlayerPanel.unmute", "Unmute") : t("uiLibrary.mediaPlayerPanel.mute", "Mute"),
48898
49217
  disabled: busy,
48899
49218
  onClick: (e) => {
48900
49219
  e.stopPropagation();
48901
- if (!busy && display.isMuted !== null) {
48902
- const muted = !display.isMuted;
49220
+ if (!busy) {
49221
+ const muted = display.isMuted === null ? true : !display.isMuted;
48903
49222
  applyOptimistic({ isMuted: muted });
48904
49223
  cap?.setMute({ muted });
48905
49224
  }
48906
49225
  },
48907
- className: cn("inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs transition-colors", display.isMuted ? "bg-amber-400 text-amber-950" : "text-foreground-subtle hover:text-foreground hover:bg-surface-hover", busy && "opacity-40 cursor-not-allowed"),
49226
+ className: cn("inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs transition-colors", display.isMuted ? "bg-warning-fill text-warning-on" : "text-foreground-subtle hover:text-foreground hover:bg-surface-hover", busy && "opacity-40 cursor-not-allowed"),
48908
49227
  children: display.isMuted ? "🔇" : "🔊"
48909
49228
  }),
48910
49229
  display.availableSources.length > 0 && /* @__PURE__ */ jsxs("label", {
@@ -48943,7 +49262,7 @@ function MediaPlayerPanel({ trpc, deviceId, features: _features, layout, optimis
48943
49262
  cap?.setShuffle({ shuffle });
48944
49263
  }
48945
49264
  },
48946
- className: cn("inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs transition-colors", display.shuffle ? "bg-green-400 text-green-950" : "text-foreground-subtle hover:text-foreground hover:bg-surface-hover", busy && "opacity-40 cursor-not-allowed"),
49265
+ className: cn("inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs transition-colors", display.shuffle ? "bg-success-fill text-success-on" : "text-foreground-subtle hover:text-foreground hover:bg-surface-hover", busy && "opacity-40 cursor-not-allowed"),
48947
49266
  children: ["⇌ ", t("uiLibrary.mediaPlayerPanel.shuffle", "Shuffle")]
48948
49267
  }),
48949
49268
  display.repeat !== null && /* @__PURE__ */ jsxs("label", {
@@ -55587,7 +55906,7 @@ function SwingToggle({ axis, on, busy, onToggle }) {
55587
55906
  * "Run N min".
55588
55907
  * - HeaterHeroCard (device-detail hero): the glowing heat backdrop (the same
55589
55908
  * rising streaks a heating air conditioner draws) while it is on, the
55590
- * on/off switch, the power draw when the plug measures one, and the timed
55909
+ * on/off switch and the timed
55591
55910
  * run (number, unit, Run, countdown, Cancel).
55592
55911
  *
55593
55912
  * Every reading may be unknown (`null`) and is drawn as a dash, never as zero.
@@ -55609,12 +55928,6 @@ function useHeater({ trpc, deviceId, optimistic }) {
55609
55928
  cap: (d) => d.runningState,
55610
55929
  slice: (d) => d.state.runningState
55611
55930
  });
55612
- const power = useDeviceCapability({
55613
- trpc,
55614
- deviceId,
55615
- cap: (d) => d.powerMeter,
55616
- slice: (d) => d.state.powerMeter
55617
- });
55618
55931
  const timer = useDeviceCapability({
55619
55932
  trpc,
55620
55933
  deviceId,
@@ -55628,7 +55941,6 @@ function useHeater({ trpc, deviceId, optimistic }) {
55628
55941
  available,
55629
55942
  applyOptimistic,
55630
55943
  running: running.slice,
55631
- power: power.slice,
55632
55944
  timer
55633
55945
  };
55634
55946
  }
@@ -55671,11 +55983,10 @@ function HeaterInlineControl(props) {
55671
55983
  }
55672
55984
  function HeaterHeroCard(props) {
55673
55985
  const t = useUiText();
55674
- const { cap, display, available, applyOptimistic, running, power, timer } = useHeater(props);
55986
+ const { cap, display, available, applyOptimistic, running, timer } = useHeater(props);
55675
55987
  if (cap === void 0 || display === void 0) return null;
55676
55988
  const on = display.on === true;
55677
55989
  const heating = running?.running ?? on;
55678
- const watts = power?.power ?? null;
55679
55990
  return /* @__PURE__ */ jsxs("div", {
55680
55991
  className: "relative flex flex-col items-stretch gap-3 overflow-hidden rounded-lg border border-border bg-surface p-4",
55681
55992
  children: [
@@ -55693,21 +56004,13 @@ function HeaterHeroCard(props) {
55693
56004
  })
55694
56005
  }), /* @__PURE__ */ jsxs("div", {
55695
56006
  className: "relative z-10 flex flex-col items-center gap-1",
55696
- children: [
55697
- /* @__PURE__ */ jsx(Flame, {
55698
- className: cn("h-8 w-8", heating ? "text-warning" : "text-foreground-subtle"),
55699
- "aria-hidden": true
55700
- }),
55701
- /* @__PURE__ */ jsx("span", {
55702
- className: "text-sm font-medium text-foreground",
55703
- children: heating ? t("uiLibrary.heater.heating", "Heating") : t("uiLibrary.heater.off", "Off")
55704
- }),
55705
- /* @__PURE__ */ jsx("span", {
55706
- className: "text-xs tabular-nums text-foreground-muted",
55707
- "data-testid": "heater-watts",
55708
- children: watts === null ? "—" : `${Math.round(watts)} W`
55709
- })
55710
- ]
56007
+ children: [/* @__PURE__ */ jsx(Flame, {
56008
+ className: cn("h-8 w-8", heating ? "text-warning" : "text-foreground-subtle"),
56009
+ "aria-hidden": true
56010
+ }), /* @__PURE__ */ jsx("span", {
56011
+ className: "text-sm font-medium text-foreground",
56012
+ children: heating ? t("uiLibrary.heater.heating", "Heating") : t("uiLibrary.heater.off", "Off")
56013
+ })]
55711
56014
  })]
55712
56015
  }),
55713
56016
  /* @__PURE__ */ jsxs("label", {
@@ -56152,17 +56455,16 @@ function DishwasherHeroCard(props) {
56152
56455
  * Appliance card for a `DeviceType.Washer` / `DeviceType.Dryer` device.
56153
56456
  *
56154
56457
  * These appliances have no program surface: what is worth showing is whether
56155
- * the cycle is running (the `running-state` cap), for how long, and what the
56156
- * appliance draws right now (the `power-meter` cap). Both slices are read
56157
- * straight from the device; neither is required.
56458
+ * the cycle is running (the `running-state` cap) and for how long. The draw
56459
+ * is NOT drawn here: the `power-meter` cap's hero widget shows it under every
56460
+ * hero card (D1004).
56158
56461
  * - ApplianceInlineControl (device-list row): the running badge round the
56159
- * drum icon, plus the live watts when there are any.
56462
+ * drum icon.
56160
56463
  * - ApplianceHeroCard (device-detail hero): the drum (turning only while a
56161
- * cycle runs), the state, the phase, the dwell and the power.
56464
+ * cycle runs), the state, the phase and the dwell.
56162
56465
  *
56163
56466
  * UNKNOWN IS NOT OFF (D393). `running: null` is drawn as "Unknown" and the
56164
- * drum stays still and unbadged; a missing watt reading is a dash, never
56165
- * "0 W". A slice that has not landed hides its row instead of faking a value.
56467
+ * drum stays still and unbadged.
56166
56468
  */
56167
56469
  var KEYFRAMES = `
56168
56470
  @keyframes apl-tumble { to { transform: rotate(360deg) } }
@@ -56171,10 +56473,6 @@ var KEYFRAMES = `
56171
56473
  .apl-drum-run { animation: none !important; }
56172
56474
  }
56173
56475
  `;
56174
- /** Whole watts, or a dash when the appliance has not reported a reading. */
56175
- function formatWatts(power) {
56176
- return power === void 0 || !Number.isFinite(power) ? "—" : `${Math.round(power)} W`;
56177
- }
56178
56476
  /** The state to a person: running / idle, or why there is none (unknown). */
56179
56477
  function applianceStateLabel(running, t) {
56180
56478
  if (running === true) return {
@@ -56197,10 +56495,7 @@ function dwellText(running, since, now, t) {
56197
56495
  return "minutes" in duration ? t("uiLibrary.appliance.forMinutes", "for {{count}} min", { count: duration.minutes }) : t("uiLibrary.appliance.forHours", "for {{count}} h", { count: duration.hours });
56198
56496
  }
56199
56497
  function useApplianceState(props) {
56200
- return {
56201
- running: useDeviceState(props.trpc, props.deviceId, (s) => s.runningState),
56202
- power: useDeviceState(props.trpc, props.deviceId, (s) => s.powerMeter)
56203
- };
56498
+ return { running: useDeviceState(props.trpc, props.deviceId, (s) => s.runningState) };
56204
56499
  }
56205
56500
  /** The drum: a ring with a few items in it, turning only while a cycle runs. */
56206
56501
  function Drum({ running }) {
@@ -56222,7 +56517,7 @@ function Drum({ running }) {
56222
56517
  }
56223
56518
  function ApplianceHeroCard(props) {
56224
56519
  const t = useUiText();
56225
- const { running, power } = useApplianceState(props);
56520
+ const { running } = useApplianceState(props);
56226
56521
  const state = running?.running ?? null;
56227
56522
  const meta = applianceStateLabel(state, t);
56228
56523
  const phase = running?.phase?.trim() ?? "";
@@ -56234,50 +56529,35 @@ function ApplianceHeroCard(props) {
56234
56529
  /* @__PURE__ */ jsx(Drum, { running: state }),
56235
56530
  /* @__PURE__ */ jsxs("div", {
56236
56531
  className: "flex min-w-0 flex-1 flex-col gap-2",
56237
- children: [
56238
- /* @__PURE__ */ jsxs("div", {
56239
- className: "flex flex-wrap items-baseline gap-x-2",
56240
- children: [/* @__PURE__ */ jsx("span", {
56241
- "data-testid": "appliance-state",
56242
- className: cn("text-3xl font-semibold", meta.tone),
56243
- children: meta.label
56244
- }), dwell !== null && /* @__PURE__ */ jsx("span", {
56245
- className: "text-sm tabular-nums text-foreground-subtle",
56246
- children: dwell
56247
- })]
56248
- }),
56249
- phase !== "" && state !== null && /* @__PURE__ */ jsx("span", {
56250
- className: "text-sm text-foreground-subtle",
56251
- children: phase
56252
- }),
56253
- power !== void 0 && /* @__PURE__ */ jsxs("span", {
56254
- "data-testid": "appliance-power",
56255
- className: "inline-flex items-center gap-1 text-sm tabular-nums text-foreground-muted",
56256
- title: power.power === void 0 ? t("uiLibrary.appliance.powerUnknown", "Power unknown") : void 0,
56257
- children: [/* @__PURE__ */ jsx(Zap, {
56258
- className: "h-3.5 w-3.5",
56259
- "aria-hidden": true
56260
- }), formatWatts(power.power)]
56261
- })
56262
- ]
56532
+ children: [/* @__PURE__ */ jsxs("div", {
56533
+ className: "flex flex-wrap items-baseline gap-x-2",
56534
+ children: [/* @__PURE__ */ jsx("span", {
56535
+ "data-testid": "appliance-state",
56536
+ className: cn("text-3xl font-semibold", meta.tone),
56537
+ children: meta.label
56538
+ }), dwell !== null && /* @__PURE__ */ jsx("span", {
56539
+ className: "text-sm tabular-nums text-foreground-subtle",
56540
+ children: dwell
56541
+ })]
56542
+ }), phase !== "" && state !== null && /* @__PURE__ */ jsx("span", {
56543
+ className: "text-sm text-foreground-subtle",
56544
+ children: phase
56545
+ })]
56263
56546
  })
56264
56547
  ]
56265
56548
  });
56266
56549
  }
56267
56550
  function ApplianceInlineControl(props) {
56268
- const { running, power } = useApplianceState(props);
56269
- return /* @__PURE__ */ jsxs("div", {
56551
+ const { running } = useApplianceState(props);
56552
+ return /* @__PURE__ */ jsx("div", {
56270
56553
  className: "inline-flex items-center gap-1.5 max-w-full",
56271
- children: [/* @__PURE__ */ jsx(RunningBadge, {
56554
+ children: /* @__PURE__ */ jsx(RunningBadge, {
56272
56555
  running: running?.running ?? null,
56273
56556
  children: /* @__PURE__ */ jsx(WashingMachine, {
56274
56557
  className: "h-4 w-4 text-foreground-muted",
56275
56558
  "aria-hidden": true
56276
56559
  })
56277
- }), power !== void 0 && /* @__PURE__ */ jsx("span", {
56278
- className: "text-xs tabular-nums text-foreground-subtle",
56279
- children: formatWatts(power.power)
56280
- })]
56560
+ })
56281
56561
  });
56282
56562
  }
56283
56563
  //#endregion
@@ -57242,6 +57522,106 @@ function SwitchHeroCard({ trpc, deviceId, optimistic }) {
57242
57522
  });
57243
57523
  }
57244
57524
  //#endregion
57525
+ //#region src/composites/device-controls/media-player-hero-parts.tsx
57526
+ /**
57527
+ * The animated parts of the media-player hero: the power orb and the running
57528
+ * indicator. Motion is transform / opacity only, plays only while the state
57529
+ * says so, and stops under `prefers-reduced-motion` (the state is still told
57530
+ * by colour, icon and text, never by motion alone).
57531
+ */
57532
+ var MEDIA_HERO_KEYFRAMES = `
57533
+ @keyframes mph-eq { 0%, 100% { transform: scaleY(.3) } 50% { transform: scaleY(1) } }
57534
+ @keyframes mph-halo { 0% { transform: scale(.92); opacity: .55 } 100% { transform: scale(1.4); opacity: 0 } }
57535
+ .mph-eq { transform-origin: bottom; animation: mph-eq 1s ease-in-out infinite; }
57536
+ .mph-eq:nth-child(2) { animation-duration: .8s; animation-delay: -.3s; }
57537
+ .mph-eq:nth-child(3) { animation-duration: 1.2s; animation-delay: -.6s; }
57538
+ .mph-eq:nth-child(4) { animation-duration: .9s; animation-delay: -.1s; }
57539
+ .mph-halo { animation: mph-halo 2.8s ease-out infinite; }
57540
+ @keyframes mph-in { from { opacity: 0 } to { opacity: 1 } }
57541
+ @keyframes mph-out { from { opacity: 1 } to { opacity: 0 } }
57542
+ .mph-fade-in { animation: mph-in .6s ease-out both; }
57543
+ .mph-fade-out { animation: mph-out .6s ease-out both; }
57544
+ @media (prefers-reduced-motion: reduce) {
57545
+ .mph-eq, .mph-halo, .mph-fade-in, .mph-fade-out { animation: none !important; }
57546
+ .mph-fade-out { opacity: 0; }
57547
+ .mph-eq:nth-child(odd) { transform: scaleY(.6); }
57548
+ .mph-halo { opacity: 0; }
57549
+ }
57550
+ `;
57551
+ var ORB_TONE = {
57552
+ on: "border-success bg-success/15 text-success shadow-lg shadow-success/30",
57553
+ standby: "border-warning bg-warning/10 text-warning",
57554
+ off: "border-border bg-surface-hover text-foreground-subtle",
57555
+ unknown: "border-dashed border-border bg-transparent text-foreground-subtle"
57556
+ };
57557
+ /** The device's power: a glowing ring when on, amber in standby, flat when off, dashed when unknown. */
57558
+ function PowerOrb({ power, onPress, label, busy }) {
57559
+ const body = /* @__PURE__ */ jsx(Fragment$1, { children: power === "unknown" ? /* @__PURE__ */ jsx(CircleQuestionMark, {
57560
+ className: "h-7 w-7",
57561
+ "aria-hidden": "true"
57562
+ }) : /* @__PURE__ */ jsx(Power, {
57563
+ className: "h-7 w-7",
57564
+ "aria-hidden": "true"
57565
+ }) });
57566
+ const classes = cn("relative z-10 inline-flex h-16 w-16 items-center justify-center rounded-full border-2", "transition-all duration-500 motion-reduce:transition-none", ORB_TONE[power]);
57567
+ return /* @__PURE__ */ jsxs("div", {
57568
+ className: "relative flex h-20 w-20 items-center justify-center",
57569
+ "data-power": power,
57570
+ children: [power === "on" && /* @__PURE__ */ jsx("span", {
57571
+ "aria-hidden": "true",
57572
+ "data-testid": "media-power-halo",
57573
+ className: "mph-halo absolute h-16 w-16 rounded-full bg-success/25"
57574
+ }), onPress === void 0 ? /* @__PURE__ */ jsx("span", {
57575
+ className: classes,
57576
+ "data-testid": "media-power",
57577
+ role: "img",
57578
+ "aria-label": label,
57579
+ children: body
57580
+ }) : /* @__PURE__ */ jsx("button", {
57581
+ type: "button",
57582
+ "aria-label": label,
57583
+ title: label,
57584
+ disabled: busy,
57585
+ "data-testid": "media-power",
57586
+ onClick: (e) => {
57587
+ e.stopPropagation();
57588
+ if (!busy) onPress();
57589
+ },
57590
+ className: cn(classes, "hover:brightness-110 active:scale-95", busy && "cursor-not-allowed opacity-40"),
57591
+ children: body
57592
+ })]
57593
+ });
57594
+ }
57595
+ var EQ_BARS = [
57596
+ 0,
57597
+ 1,
57598
+ 2,
57599
+ 3
57600
+ ];
57601
+ /** Equalizer while playing, a spinner while buffering, a pause glyph when paused; nothing otherwise. */
57602
+ function RunningIndicator({ running }) {
57603
+ if (running === "playing") return /* @__PURE__ */ jsx("span", {
57604
+ className: "inline-flex h-4 items-end gap-0.5 text-primary",
57605
+ "data-testid": "media-running",
57606
+ "data-running": "playing",
57607
+ "aria-hidden": "true",
57608
+ children: EQ_BARS.map((bar) => /* @__PURE__ */ jsx("span", { className: "mph-eq h-4 w-1 rounded-full bg-primary" }, bar))
57609
+ });
57610
+ if (running === "buffering") return /* @__PURE__ */ jsx(LoaderCircle, {
57611
+ className: "h-4 w-4 animate-spin text-foreground-muted motion-reduce:animate-none",
57612
+ "data-testid": "media-running",
57613
+ "data-running": "buffering",
57614
+ "aria-hidden": "true"
57615
+ });
57616
+ if (running === "paused") return /* @__PURE__ */ jsx(Pause, {
57617
+ className: "h-4 w-4 text-foreground-muted",
57618
+ "data-testid": "media-running",
57619
+ "data-running": "paused",
57620
+ "aria-hidden": "true"
57621
+ });
57622
+ return null;
57623
+ }
57624
+ //#endregion
57245
57625
  //#region src/composites/device-controls/media-player-hero-card.tsx
57246
57626
  /** Which states map to play() vs pause() on the central transport button. */
57247
57627
  function toggleAction(state) {
@@ -57258,12 +57638,50 @@ function formatClock(ms) {
57258
57638
  const total = Math.floor(ms / 1e3);
57259
57639
  return `${Math.floor(total / 60)}:${(total % 60).toString().padStart(2, "0")}`;
57260
57640
  }
57261
- function NowPlaying({ title, subtitle }) {
57641
+ var NEXT_REPEAT = {
57642
+ off: "all",
57643
+ all: "one",
57644
+ one: "off"
57645
+ };
57646
+ /** The artwork of what is playing; a change cross-fades from the previous cover. */
57647
+ function Artwork({ url }) {
57648
+ const [shown, setShown] = useState(url);
57649
+ const [previous, setPrevious] = useState(null);
57650
+ const [failed, setFailed] = useState(null);
57651
+ const last = useRef(url);
57652
+ useEffect(() => {
57653
+ if (last.current === url) return;
57654
+ setPrevious(last.current);
57655
+ setShown(url);
57656
+ last.current = url;
57657
+ const timer = setTimeout(() => setPrevious(null), 700);
57658
+ return () => clearTimeout(timer);
57659
+ }, [url]);
57660
+ return /* @__PURE__ */ jsxs("div", {
57661
+ "data-testid": "media-artwork",
57662
+ className: "relative h-40 w-40 overflow-hidden rounded-lg border border-border bg-surface-hover",
57663
+ children: [previous !== null && /* @__PURE__ */ jsx("img", {
57664
+ src: previous,
57665
+ alt: "",
57666
+ className: "mph-fade-out absolute inset-0 h-full w-full object-cover"
57667
+ }), shown !== null && failed !== shown ? /* @__PURE__ */ jsx("img", {
57668
+ src: shown,
57669
+ alt: "",
57670
+ "data-testid": "media-artwork-img",
57671
+ className: "mph-fade-in absolute inset-0 h-full w-full object-cover",
57672
+ onError: () => setFailed(shown)
57673
+ }, shown) : /* @__PURE__ */ jsx(Music, {
57674
+ className: "absolute inset-0 m-auto h-8 w-8 text-foreground-subtle",
57675
+ "aria-hidden": "true"
57676
+ })]
57677
+ });
57678
+ }
57679
+ function NowPlaying({ title, subtitle, artworkUrl }) {
57262
57680
  const t = useUiText();
57263
57681
  return /* @__PURE__ */ jsxs("div", {
57264
- className: "flex flex-col items-center gap-1 text-center",
57682
+ className: "flex flex-col items-center gap-2 text-center",
57265
57683
  children: [
57266
- /* @__PURE__ */ jsx(Music, {
57684
+ artworkUrl !== null ? /* @__PURE__ */ jsx(Artwork, { url: artworkUrl }) : /* @__PURE__ */ jsx(Music, {
57267
57685
  className: "h-6 w-6 text-foreground-subtle",
57268
57686
  "aria-hidden": "true"
57269
57687
  }),
@@ -57287,18 +57705,23 @@ var STATE_LABEL$1 = {
57287
57705
  buffering: "Buffering",
57288
57706
  standby: "Standby"
57289
57707
  };
57290
- function StateLine({ state, assumed, source }) {
57708
+ function StateLine({ state, assumed, source, running }) {
57291
57709
  const t = useUiText();
57292
57710
  return /* @__PURE__ */ jsxs("div", {
57293
57711
  className: "flex flex-wrap items-center justify-center gap-2 text-xs text-foreground-muted",
57294
57712
  "data-testid": "media-state",
57295
57713
  children: [
57296
- STATE_LABEL$1[state] !== void 0 && /* @__PURE__ */ jsx("span", {
57714
+ running,
57715
+ state === void 0 ? /* @__PURE__ */ jsx("span", {
57716
+ className: "font-medium text-foreground-subtle",
57717
+ "data-testid": "media-state-unknown",
57718
+ children: t("uiLibrary.mediaPlayerHero.state.unknown", "State unknown")
57719
+ }) : /* @__PURE__ */ jsx("span", {
57297
57720
  className: "font-medium text-foreground",
57298
57721
  children: t(`uiLibrary.mediaPlayerHero.state.${state}`, STATE_LABEL$1[state])
57299
57722
  }),
57300
57723
  assumed && /* @__PURE__ */ jsx("span", {
57301
- className: "rounded border border-border px-1.5 py-0.5 text-[11px] text-foreground-subtle",
57724
+ className: "rounded border border-dashed border-border px-1.5 py-0.5 text-[11px] text-foreground-subtle",
57302
57725
  title: t("uiLibrary.mediaPlayerHero.assumedHint", "No feedback from the device: this is what was last sent."),
57303
57726
  "data-testid": "media-assumed",
57304
57727
  children: t("uiLibrary.mediaPlayerHero.assumed", "assumed")
@@ -57310,33 +57733,40 @@ function StateLine({ state, assumed, source }) {
57310
57733
  ]
57311
57734
  });
57312
57735
  }
57313
- function TransportButton({ label, busy, onPress, children, primary }) {
57736
+ function TransportButton({ label, busy, onPress, children, primary, active, testId }) {
57314
57737
  return /* @__PURE__ */ jsx("button", {
57315
57738
  type: "button",
57316
57739
  "aria-label": label,
57740
+ "aria-pressed": active,
57317
57741
  title: label,
57318
57742
  disabled: busy,
57743
+ "data-testid": testId,
57319
57744
  onClick: (e) => {
57320
57745
  e.stopPropagation();
57321
57746
  if (!busy) onPress();
57322
57747
  },
57323
- className: cn("inline-flex items-center justify-center rounded-full transition-colors", primary ? "h-12 w-12 bg-primary text-primary-foreground hover:bg-primary/90 shadow-md" : "h-10 w-10 text-foreground-muted hover:bg-surface-hover", busy && "opacity-40 cursor-not-allowed"),
57748
+ className: cn("inline-flex items-center justify-center rounded-full transition-colors", primary ? "h-12 w-12 bg-primary text-primary-foreground hover:bg-primary/90 shadow-md" : "h-10 w-10 text-foreground-muted hover:bg-surface-hover", active === true && "bg-primary/15 text-primary", busy && "opacity-40 cursor-not-allowed"),
57324
57749
  children
57325
57750
  });
57326
57751
  }
57327
57752
  /**
57328
- * MediaPlayerHeroCard — now-playing hero for MediaPlayer devices.
57753
+ * MediaPlayerHeroCard — the state of a MediaPlayer device and every control it
57754
+ * exposes, drawn from `deriveMediaPlayerView` (the state → view mapping and
57755
+ * its spec live in `media-player-view.ts`).
57329
57756
  *
57330
- * Renders (Spec §3):
57331
- * - Now-playing block: cover glyph + title + artist/album.
57332
- * - Seek GripTrack with a native range overlay (gated on DeviceFeature
57333
- * MediaPlayerSeek + a known duration).
57334
- * - Transport row: SkipBack / Play-Pause / SkipForward (lucide icons). Skip
57335
- * buttons are gated on MediaPlayerPrevious / MediaPlayerNext.
57336
- * - Volume GripTrack with a native range overlay + mute toggle (gated on a
57337
- * non-null volume surface + DeviceFeature.MediaPlayerVolume).
57757
+ * - Power orb: glowing when on, amber in standby, flat when off, dashed with a
57758
+ * question mark while the state is unknown (never drawn as off). It is the
57759
+ * power switch when the device declares `MediaPlayerPower`.
57760
+ * - Running line: equalizer while playing, spinner while buffering, pause
57761
+ * glyph when paused; a value the driver only guesses carries an "assumed" mark.
57762
+ * - Only while the device is on: now-playing, seek, transport (previous /
57763
+ * play-pause / stop / next), volume (slider with mute, or steps when the
57764
+ * device has no level reading), the source (a picker when it can switch),
57765
+ * shuffle and repeat. Each appears only when the status fills it or a
57766
+ * `DeviceFeature` declares it — no per-vendor list.
57338
57767
  *
57339
57768
  * Cap-gated on `media-player` — returns null when the device lacks the cap.
57769
+ * Motion respects `prefers-reduced-motion`.
57340
57770
  */
57341
57771
  function MediaPlayerHeroCard({ trpc, deviceId, features, optimistic }) {
57342
57772
  const t = useUiText();
@@ -57347,15 +57777,24 @@ function MediaPlayerHeroCard({ trpc, deviceId, features, optimistic }) {
57347
57777
  slice: (d) => d.state.mediaPlayer
57348
57778
  });
57349
57779
  const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
57780
+ const runningSlice = useDeviceState(trpc, deviceId, (st) => st.runningState);
57350
57781
  if (cap === void 0) return null;
57351
- if (display === void 0) return null;
57782
+ const view = deriveMediaPlayerView(display, features, { running: runningSlice?.running });
57352
57783
  const busy = !available;
57353
- const action = toggleAction(display.state);
57354
- const supportsSeek = (features?.includes(DeviceFeature.MediaPlayerSeek) ?? false) && display.duration !== null && display.duration > 0;
57355
- const supportsNext = features?.includes(DeviceFeature.MediaPlayerNext) ?? false;
57356
- const supportsPrevious = features?.includes(DeviceFeature.MediaPlayerPrevious) ?? false;
57357
- const volumeLevel = display.volumeLevel;
57358
- const supportsVolume = (features?.includes(DeviceFeature.MediaPlayerVolume) ?? false) && volumeLevel !== null;
57784
+ const status = display;
57785
+ const powered = status !== void 0 && view.power === "on";
57786
+ const action = toggleAction(status?.state ?? "off");
57787
+ const switchPower = () => {
57788
+ if (busy) return;
57789
+ if (view.power === "on") {
57790
+ applyOptimistic({ state: "off" });
57791
+ cap.turnOff({});
57792
+ } else {
57793
+ applyOptimistic({ state: "on" });
57794
+ cap.turnOn({});
57795
+ }
57796
+ };
57797
+ const powerLabel = powerLabelOf(view.power, t);
57359
57798
  const handleToggle = () => {
57360
57799
  if (busy) return;
57361
57800
  if (action === "play") {
@@ -57366,25 +57805,60 @@ function MediaPlayerHeroCard({ trpc, deviceId, features, optimistic }) {
57366
57805
  cap.pause({});
57367
57806
  }
57368
57807
  };
57369
- const title = display.currentMedia?.title ?? null;
57370
- const subtitle = display.currentMedia?.artist ?? display.currentMedia?.album ?? null;
57371
- const hasNowPlaying = title !== null || subtitle !== null;
57372
- const isAssumed = display.stateSource === "assumed";
57373
- const source = typeof display.source === "string" ? display.source.trim() : "";
57374
- const seekFraction = progressFraction(display.position, display.duration);
57808
+ const title = status?.currentMedia?.title ?? null;
57809
+ const subtitle = status?.currentMedia?.artist ?? status?.currentMedia?.album ?? null;
57810
+ const hasNowPlaying = powered && (title !== null || subtitle !== null || view.artworkUrl !== null);
57811
+ const assumedAny = view.stateAssumed || view.volumeAssumed || view.muteAssumed || view.sourceAssumed;
57812
+ const sourceText = powered && view.source !== null && !view.source.selectable ? view.source.current : "";
57813
+ const volumeLevel = status?.volumeLevel ?? null;
57375
57814
  return /* @__PURE__ */ jsxs("div", {
57376
- className: "flex flex-col items-stretch gap-4 rounded-lg border border-border bg-surface p-6",
57815
+ className: cn("flex flex-col items-stretch gap-4 rounded-lg border bg-surface p-6", "transition-colors duration-500 motion-reduce:transition-none", view.power === "on" ? "border-success/40" : "border-border"),
57816
+ "data-testid": "media-hero",
57817
+ "data-power": view.power,
57377
57818
  children: [
57378
- /* @__PURE__ */ jsx(StateLine, {
57379
- state: display.state,
57380
- assumed: isAssumed,
57381
- source
57819
+ /* @__PURE__ */ jsx("style", { children: MEDIA_HERO_KEYFRAMES }),
57820
+ /* @__PURE__ */ jsxs("div", {
57821
+ className: "flex flex-col items-center gap-2",
57822
+ children: [/* @__PURE__ */ jsx(PowerOrb, {
57823
+ power: view.power,
57824
+ label: powerLabel,
57825
+ busy,
57826
+ onPress: view.canSwitchPower ? switchPower : void 0
57827
+ }), /* @__PURE__ */ jsx(StateLine, {
57828
+ state: status?.state,
57829
+ assumed: assumedAny,
57830
+ source: sourceText,
57831
+ running: /* @__PURE__ */ jsx(RunningIndicator, { running: view.running })
57832
+ })]
57382
57833
  }),
57383
57834
  hasNowPlaying && /* @__PURE__ */ jsx(NowPlaying, {
57384
57835
  title,
57385
- subtitle
57836
+ subtitle,
57837
+ artworkUrl: view.artworkUrl
57838
+ }),
57839
+ powered && view.source !== null && view.source.selectable && /* @__PURE__ */ jsxs("div", {
57840
+ "data-testid": "media-source-select",
57841
+ className: "flex items-center gap-2",
57842
+ children: [/* @__PURE__ */ jsx("span", {
57843
+ className: "text-xs text-foreground-subtle",
57844
+ children: t("uiLibrary.mediaPlayerHero.source", "Source")
57845
+ }), /* @__PURE__ */ jsx(Select, {
57846
+ "aria-label": t("uiLibrary.mediaPlayerHero.source", "Source"),
57847
+ value: view.source.current,
57848
+ disabled: busy,
57849
+ wrapperClassName: "relative min-w-0 flex-1",
57850
+ options: view.source.options.map((o) => ({
57851
+ value: o,
57852
+ label: o
57853
+ })),
57854
+ onChange: (e) => {
57855
+ if (busy) return;
57856
+ applyOptimistic({ source: e.target.value });
57857
+ cap.selectSource({ source: e.target.value });
57858
+ }
57859
+ })]
57386
57860
  }),
57387
- supportsSeek && /* @__PURE__ */ jsxs("div", {
57861
+ powered && view.seek && status !== void 0 && /* @__PURE__ */ jsxs("div", {
57388
57862
  "data-testid": "media-seek",
57389
57863
  className: "flex flex-col gap-1",
57390
57864
  children: [/* @__PURE__ */ jsxs("label", {
@@ -57398,10 +57872,10 @@ function MediaPlayerHeroCard({ trpc, deviceId, features, optimistic }) {
57398
57872
  "aria-label": t("uiLibrary.mediaPlayerHero.seek", "Seek"),
57399
57873
  type: "range",
57400
57874
  min: 0,
57401
- max: display.duration ?? 0,
57875
+ max: status.duration ?? 0,
57402
57876
  step: 1e3,
57403
57877
  className: "absolute inset-0 h-4 w-full cursor-pointer opacity-0",
57404
- value: display.position ?? 0,
57878
+ value: status.position ?? 0,
57405
57879
  disabled: busy,
57406
57880
  onChange: (e) => {
57407
57881
  if (busy) return;
@@ -57412,18 +57886,19 @@ function MediaPlayerHeroCard({ trpc, deviceId, features, optimistic }) {
57412
57886
  }),
57413
57887
  /* @__PURE__ */ jsx("div", {
57414
57888
  className: "pointer-events-none",
57415
- children: /* @__PURE__ */ jsx(GripTrack, { fraction: seekFraction })
57889
+ children: /* @__PURE__ */ jsx(GripTrack, { fraction: progressFraction(status.position, status.duration) })
57416
57890
  })
57417
57891
  ]
57418
57892
  }), /* @__PURE__ */ jsxs("div", {
57419
57893
  className: "flex justify-between text-[11px] tabular-nums text-foreground-subtle",
57420
- children: [/* @__PURE__ */ jsx("span", { children: formatClock(display.position) }), /* @__PURE__ */ jsx("span", { children: formatClock(display.duration) })]
57894
+ children: [/* @__PURE__ */ jsx("span", { children: formatClock(status.position) }), /* @__PURE__ */ jsx("span", { children: formatClock(status.duration) })]
57421
57895
  })]
57422
57896
  }),
57423
- /* @__PURE__ */ jsxs("div", {
57897
+ powered && view.transport.playPause && /* @__PURE__ */ jsxs("div", {
57424
57898
  className: "flex items-center justify-center gap-4",
57899
+ "data-testid": "media-transport",
57425
57900
  children: [
57426
- supportsPrevious && /* @__PURE__ */ jsx(TransportButton, {
57901
+ view.transport.previous && /* @__PURE__ */ jsx(TransportButton, {
57427
57902
  label: t("uiLibrary.mediaPlayerHero.previous", "Previous"),
57428
57903
  busy,
57429
57904
  onPress: () => void cap.previous({}),
@@ -57445,7 +57920,16 @@ function MediaPlayerHeroCard({ trpc, deviceId, features, optimistic }) {
57445
57920
  "aria-hidden": "true"
57446
57921
  })
57447
57922
  }),
57448
- supportsNext && /* @__PURE__ */ jsx(TransportButton, {
57923
+ view.transport.stop && /* @__PURE__ */ jsx(TransportButton, {
57924
+ label: t("uiLibrary.mediaPlayerHero.stop", "Stop"),
57925
+ busy,
57926
+ onPress: () => void cap.stop({}),
57927
+ children: /* @__PURE__ */ jsx(Square, {
57928
+ className: "h-4 w-4",
57929
+ "aria-hidden": "true"
57930
+ })
57931
+ }),
57932
+ view.transport.next && /* @__PURE__ */ jsx(TransportButton, {
57449
57933
  label: t("uiLibrary.mediaPlayerHero.next", "Next"),
57450
57934
  busy,
57451
57935
  onPress: () => void cap.next({}),
@@ -57456,24 +57940,24 @@ function MediaPlayerHeroCard({ trpc, deviceId, features, optimistic }) {
57456
57940
  })
57457
57941
  ]
57458
57942
  }),
57459
- supportsVolume && volumeLevel !== null && /* @__PURE__ */ jsxs("div", {
57943
+ powered && view.volume === "slider" && /* @__PURE__ */ jsxs("div", {
57460
57944
  "data-testid": "media-volume",
57461
57945
  className: "flex items-center gap-2",
57462
57946
  children: [
57463
- /* @__PURE__ */ jsx("button", {
57947
+ view.mute && /* @__PURE__ */ jsx("button", {
57464
57948
  type: "button",
57465
- "aria-label": display.isMuted === true ? t("uiLibrary.mediaPlayerHero.unmute", "Unmute") : t("uiLibrary.mediaPlayerHero.mute", "Mute"),
57466
- title: display.isMuted === true ? t("uiLibrary.mediaPlayerHero.unmute", "Unmute") : t("uiLibrary.mediaPlayerHero.mute", "Mute"),
57949
+ "aria-label": status?.isMuted === true ? t("uiLibrary.mediaPlayerHero.unmute", "Unmute") : t("uiLibrary.mediaPlayerHero.mute", "Mute"),
57950
+ title: status?.isMuted === true ? t("uiLibrary.mediaPlayerHero.unmute", "Unmute") : t("uiLibrary.mediaPlayerHero.mute", "Mute"),
57467
57951
  disabled: busy,
57468
57952
  onClick: (e) => {
57469
57953
  e.stopPropagation();
57470
- if (busy || display.isMuted === null) return;
57471
- const muted = !display.isMuted;
57954
+ if (busy) return;
57955
+ const muted = status?.isMuted === null || status === void 0 ? true : !status.isMuted;
57472
57956
  applyOptimistic({ isMuted: muted });
57473
57957
  cap.setMute({ muted });
57474
57958
  },
57475
57959
  className: cn("inline-flex h-7 w-7 items-center justify-center rounded text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors", busy && "opacity-40 cursor-not-allowed"),
57476
- children: display.isMuted === true ? /* @__PURE__ */ jsx(VolumeX, {
57960
+ children: status?.isMuted === true ? /* @__PURE__ */ jsx(VolumeX, {
57477
57961
  className: "h-4 w-4",
57478
57962
  "aria-hidden": "true"
57479
57963
  }) : /* @__PURE__ */ jsx(Volume2, {
@@ -57495,7 +57979,7 @@ function MediaPlayerHeroCard({ trpc, deviceId, features, optimistic }) {
57495
57979
  max: 100,
57496
57980
  step: 1,
57497
57981
  className: "absolute inset-0 h-4 w-full cursor-pointer opacity-0",
57498
- value: volumeLevel,
57982
+ value: volumeLevel ?? 0,
57499
57983
  disabled: busy,
57500
57984
  onChange: (e) => {
57501
57985
  if (busy) return;
@@ -57506,19 +57990,92 @@ function MediaPlayerHeroCard({ trpc, deviceId, features, optimistic }) {
57506
57990
  }),
57507
57991
  /* @__PURE__ */ jsx("div", {
57508
57992
  className: "pointer-events-none",
57509
- children: /* @__PURE__ */ jsx(GripTrack, { fraction: volumeLevel / 100 })
57993
+ children: /* @__PURE__ */ jsx("div", {
57994
+ className: cn(volumeLevel === null && "opacity-40"),
57995
+ "data-testid": "media-volume-track",
57996
+ "data-known": volumeLevel !== null,
57997
+ children: /* @__PURE__ */ jsx(GripTrack, { fraction: status?.isMuted === true || volumeLevel === null ? 0 : volumeLevel / 100 })
57998
+ })
57510
57999
  })
57511
58000
  ]
57512
58001
  }),
57513
- /* @__PURE__ */ jsxs("span", {
58002
+ /* @__PURE__ */ jsx("span", {
57514
58003
  className: "w-9 text-right text-[11px] tabular-nums text-foreground-subtle",
57515
- children: [volumeLevel, "%"]
58004
+ children: volumeLevel === null ? "—" : `${volumeLevel}%`
57516
58005
  })
57517
58006
  ]
58007
+ }),
58008
+ powered && view.volume === "steps" && /* @__PURE__ */ jsxs("div", {
58009
+ "data-testid": "media-volume-steps",
58010
+ className: "flex items-center justify-center gap-3 text-xs text-foreground-subtle",
58011
+ children: [
58012
+ /* @__PURE__ */ jsx(TransportButton, {
58013
+ label: t("uiLibrary.mediaPlayerHero.volumeDown", "Volume down"),
58014
+ busy,
58015
+ onPress: () => void cap.volumeDown({ steps: 1 }),
58016
+ children: /* @__PURE__ */ jsx(Minus, {
58017
+ className: "h-4 w-4",
58018
+ "aria-hidden": "true"
58019
+ })
58020
+ }),
58021
+ /* @__PURE__ */ jsx(Volume2, {
58022
+ className: "h-4 w-4",
58023
+ "aria-hidden": "true"
58024
+ }),
58025
+ /* @__PURE__ */ jsx(TransportButton, {
58026
+ label: t("uiLibrary.mediaPlayerHero.volumeUp", "Volume up"),
58027
+ busy,
58028
+ onPress: () => void cap.volumeUp({ steps: 1 }),
58029
+ children: /* @__PURE__ */ jsx(Plus, {
58030
+ className: "h-4 w-4",
58031
+ "aria-hidden": "true"
58032
+ })
58033
+ })
58034
+ ]
58035
+ }),
58036
+ powered && status !== void 0 && (view.shuffle || view.repeat) && /* @__PURE__ */ jsxs("div", {
58037
+ className: "flex items-center justify-center gap-2",
58038
+ "data-testid": "media-modes",
58039
+ children: [view.shuffle && status.shuffle !== null && /* @__PURE__ */ jsx(TransportButton, {
58040
+ label: t("uiLibrary.mediaPlayerHero.shuffle", "Shuffle"),
58041
+ busy,
58042
+ active: status.shuffle,
58043
+ onPress: () => {
58044
+ const shuffle = !status.shuffle;
58045
+ applyOptimistic({ shuffle });
58046
+ cap.setShuffle({ shuffle });
58047
+ },
58048
+ children: /* @__PURE__ */ jsx(Shuffle, {
58049
+ className: "h-4 w-4",
58050
+ "aria-hidden": "true"
58051
+ })
58052
+ }), view.repeat && status.repeat !== null && /* @__PURE__ */ jsx(TransportButton, {
58053
+ label: t("uiLibrary.mediaPlayerHero.repeat", "Repeat"),
58054
+ busy,
58055
+ active: status.repeat !== "off",
58056
+ onPress: () => {
58057
+ if (status.repeat === null) return;
58058
+ const repeat = NEXT_REPEAT[status.repeat];
58059
+ applyOptimistic({ repeat });
58060
+ cap.setRepeat({ repeat });
58061
+ },
58062
+ children: status.repeat === "one" ? /* @__PURE__ */ jsx(Repeat1, {
58063
+ className: "h-4 w-4",
58064
+ "aria-hidden": "true"
58065
+ }) : /* @__PURE__ */ jsx(Repeat, {
58066
+ className: "h-4 w-4",
58067
+ "aria-hidden": "true"
58068
+ })
58069
+ })]
57518
58070
  })
57519
58071
  ]
57520
58072
  });
57521
58073
  }
58074
+ function powerLabelOf(power, t) {
58075
+ if (power === "on") return t("uiLibrary.mediaPlayerHero.turnOff", "Turn off");
58076
+ if (power === "unknown") return t("uiLibrary.mediaPlayerHero.powerUnknown", "Power state unknown");
58077
+ return t("uiLibrary.mediaPlayerHero.turnOn", "Turn on");
58078
+ }
57522
58079
  //#endregion
57523
58080
  //#region src/composites/device-controls/alarm-hero-card.tsx
57524
58081
  var ALARM_STATE_CONFIG = {
@@ -73092,7 +73649,7 @@ function TimelineSlider({ markers, bands = [], selectedId = null, step = 5, aria
73092
73649
  }
73093
73650
  //#endregion
73094
73651
  //#region src/ui-library-version.ts
73095
- var uiLibraryVersion = "1.2.376";
73652
+ var uiLibraryVersion = "1.2.377";
73096
73653
  //#endregion
73097
73654
  //#region src/hooks/use-account-unit-preferences.ts
73098
73655
  /**
@@ -74036,12 +74593,12 @@ var statusIcons = {
74036
74593
  * Render inside `<Suspense>` at all call sites. */
74037
74594
  var MaskShapeCanvas = lazy(() => import("./MaskShapeCanvas-C9cJlxvG.js").then((m) => ({ default: m.MaskShapeCanvas })));
74038
74595
  /** Lazy-wrapped `MotionZonesSettings` — code-split off the main bundle. */
74039
- var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-Zcfa5c9l.js").then((m) => ({ default: m.MotionZonesSettings })));
74596
+ var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-BvpjmW6y.js").then((m) => ({ default: m.MotionZonesSettings })));
74040
74597
  /** Lazy-wrapped `SceneMonitorEditor` — code-split off the main bundle for the
74041
74598
  * same reason: it mounts `MaskShapeCanvas`, which chains react-konva. Render
74042
74599
  * inside `<Suspense>`; the admin-ui `/scenes` dialog is its only caller. */
74043
- var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-C8YXVzYI.js").then((m) => ({ default: m.SceneMonitorEditor })));
74600
+ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-BwelmHlF.js").then((m) => ({ default: m.SceneMonitorEditor })));
74044
74601
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
74045
- var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-B_X42yzN.js").then((m) => ({ default: m.PrivacyMaskSettings })));
74602
+ var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-D7o4tx8e.js").then((m) => ({ default: m.PrivacyMaskSettings })));
74046
74603
  //#endregion
74047
- export { Ship as $, CloudSnow as $n, Activity as $r, Lock as $t, Trash2 as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, FlashlightOff as An, AppShell, Bot as Ar, ArcKnob, Phone as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, Sunrise 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, Droplets as Bn, BottomSheet, BatteryLow as Br, Breadcrumb, BrightnessPanel, BrokerPickerSlotProvider, MoveHorizontal 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, Grid2x2 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, Cast as Cr, PowerOff as Ct, CustomFieldRenderersProvider, TriangleAlert as D, DATA_RECORDS_KIND_PARAM, DATA_RECORDS_OWNER_PARAM, DATA_RECORD_FACET_GROUPS, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEFAULT_UNIT_PREFERENCES, 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, DisclosureChevron, DiscoveryPanel, DisplayPaletteProvider, Funnel as Dn, DoorbellRecentPanel, Bus as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Plane as Dt, DummyHeroCard, DummyInline, Truck as E, EMPTY_DATA_TABLE_FILTER, EMPTY_HISTORY_PANELS, EVENT_KIND_ICONS, EmptyState, Gamepad2 as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Cable as Er, ErrorBox, Play as Et, EventKindGlyph, EventStream, ExtensionsPanel, Timer as F, FALLBACK_SCOPE, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FileInput, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, Eye as Fn, FormField$1 as FormField, Bell as Fr, Network as Ft, Sprout as G, GAP_INTERVAL_FACTOR, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Dog as Gn, ArrowUp as Gr, GripTrack, GroupedModelSelector, GroupedTilePicker, Minimize2 as Gt, SunMedium 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, Download as Hn, HotkeyProvider, HotkeyScope, HoverZoomImage, Bath as Hr, Moon as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, TimerOff as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, EyeOff as In, InferenceConfigSelector, Input, BellRing as Ir, Navigation as It, ItemFormDialog, Smartphone as J, Cpu as Jn, ArrowLeft as Jr, Menu as Jt, Sparkles as K, KebabMenu, KeyValueList, Database as Kn, ArrowUpToLine as Kr, Mic as Kt, Thermometer as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, ExternalLink as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, Battery as Lr, Music as Lt, Tractor as M, MEDIA_GRID, MINUTES_PER_DAY, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, Film as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, Blinds as Mr, PawPrint as Mt, ToggleRight as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, Feather as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, Bird as Nr, Pause as Nt, TrendingDown as O, OCCUPANCY_KEY, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, Footprints as On, OptionSelect, Bug as Or, Pipette 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, Fan as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, Bike as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Package as Pt, PtzPanel, Siren as Q, CloudSun as Qn, AirVent as Qr, QrCode, Mail as Qt, QuantityValueInput, Target as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RESOLUTION_BUCKET_MS, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, Radio, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, Eraser as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, BatteryWarning as Rr, Move 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, Slider, GripHorizontal as Sn, SnapshotButton, SortHeaderButton, Sparkline, Cat as Sr, Power 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, TEMPERATURE_SCALES, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, Textarea, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimeSeriesChart, TimelineSlider, TimezoneSelector, Gauge as Tn, Tooltip, TooltipContent, TooltipTrigger, Camera as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Plus as Tt, Star as U, UNIT_PREFERENCES_NAMESPACE, UiTextProvider, UiTrans, DoorOpen as Un, UnitPicker, UnitPreferencesFromServer, UnitPreferencesProvider, Ban as Ur, MonitorPlay as Ut, Sun as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, ViewSwitch, Droplet as Vn, VodPlaybackProvider, BatteryFull as Vr, MousePointerClick as Vt, Square as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, DoorClosed as Wn, Baby as Wr, Minus as Wt, SkipForward as X, Cog as Xn, ArrowDownToLine as Xr, Maximize2 as Xt, SlidersHorizontal as Y, Copy as Yn, ArrowDown as Yr, Megaphone as Yt, SkipBack as Z, Cloud as Zn, ZoneEditingProvider, AlarmSmoke as Zr, MapPin as Zt, Vibrate as _, Heater as _n, ChevronRight as _r, Radio$1 as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, alignSeries, allDeviceTypeFilterOptions, Link2 as an, anchorNow, applyFleetQueryDefaults, applyPickerFilters, CircleX as ar, ariaSortForColumn, assignNodeColorId, Settings as at, axisTicks, User as b, badgeFor, binaryBatteryIsLow, bindsToModel, Hand as bn, booleanLabels, boundsInPicked, Check as br, QrCode$1 as bt, bucketTotals, buildColorByNodeId, buildDataRecordRows, buildPeerConnectionConfig, buildStepTreeFromSchema, buildSubjectPath, buildTimeSeriesModel, Wifi as c, catalogHasDraft, chartKeys, chartSeriesStyle, childEntityId, childListName, chipOverflow, chunk, clampMinute, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, consumableItemLevel, consumableLevelBarClass, consumableLevelLabel, consumableLevelVariant, containerChildToRef, countableDevices, coverHighlight, coverageLine, CirclePlus as cr, createAddonI18n, createSharedContext, createTheme, ScrollText 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, detectPlatform, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceNameNouns, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, Info as dn, dockBox, CircleCheck as dr, draftFromQuery, Sailboat as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, LockOpen as en, encodeCustomWindow, encodeSeriesRef, energyBuckets, ensureMfHostInit, CloudRain as er, Shield as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOccupancyLines, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, Inbox as fn, foldDeviceName, formatChartBytes, formatChartNumber, formatChartValue, formatControlDateTime, formatDeviceName, formatLastSeen, formatNumeric, formatSettingValue, formatSpan, formatTimeLabel, CircleCheckBig as fr, freezeVerdict, Router as ft, fuzzyMatch, Volume2 as g, gapThresholdMs, getClassColor, getPhaseVisual, History as gn, ChevronUp as gr, groupAgentColumns, groupChildrenByLayout, groupDeviceSeries, groupPickerDevices, groupPickerDevicesBy, RefreshCw as gt, VolumeX as h, hardwareLabel, historyPageHref, House as hn, ChevronsDownUp as hr, RotateCcw as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humanizeName, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, ListChecks as in, indexDeviceNames, initialScrubState, insertAtSelection, Clapperboard as ir, isAbsentProvider, isByteUnit, isConsumableLevelField, isDataTableFilterActive, isDeviceNameStock, isDrawableSubjectPath, isFieldVisible, isGroupExpanded, isHistoryWindowId, isKeychainFieldValue, isModelScopedField, isPickableUnit, isRedactedSecret, isRefusal, isSecretField, isValueField, Share2 as it, TrainFront as j, Flame as jn, Bone as jr, Pencil as jt, TrendingUp as k, Flashlight as kn, Box as kr, Pin as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, linePoints, LayoutGrid as ln, loadIconGlyphs, loadRemoteBundle, CirclePause as lr, Scan as lt, lucideExportName, WashingMachine as m, makeScrubBridge, mapRootDetectorPlacements, matchesCombo, mergeSecretForSubmit, metadataEntries, metadataString, minuteFromPointer, ImageOff as mn, mountAddonPage, mountPath, ChevronsUpDown as mr, RotateCw as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, niceMax, niceRange, LoaderCircle as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, normalizeSelection, nounSpecFor, CloudFog as nr, ShieldCheck as nt, Workflow as o, occupancyFacets, occupancyLines, offListSelections, Lightbulb as on, openTopLayer, optionSearchText as optionSelectSearchText, CircleStop as or, orphanDeviceLabel, Server as ot, outsideBounds, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseCapKey, parseCombo, parseConsumableLevel, parseIceCandidate, parsePickerGroupBy, parseProducerKey, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, Image as pn, CircleAlert as pr, preferenceForQuantity, previousWindow, projectSubjectPath, providerIcons, Route as pt, Snowflake as q, Crosshair as qn, ArrowRight as qr, MessageSquare as qt, quantityStoredUnit, quantityUnitChoices, Zap as r, readHistory, readHistoryPanels, readItemId, readStoredGroupBy, readUnitPreferences, 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, List as rn, roiTooLarge, rootSourceState, routerBasename, Clock as rr, ShieldAlert 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, Leaf as sn, snapMinute, sortRows, sortRowsByColumn, CircleQuestionMark as sr, Search as st, stackBuckets, stackSeries, stateAt, stateRow, stateStyle, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, storedToPicked, stripDeviceParentPrefix, stripParentNamePrefix, subjectPathSampleFromBox, subjectPathSvgPoints, summarizeHubCandidates, swatchFillClass, swatchLineClass, ZoomOut as t, tabForSelector, themeToCss, themeToRootCss, timeInState, LocateFixed as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, CloudLightning as tr, trainingRefusalText, translateAddonKey, trpc, ShieldOff as tt, typeLabel, typedToStored, WifiOff as u, uiLibraryVersion, Laugh as un, unitAxes, CircleDot as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAccountUnitPreferences, useActionSourceListActions, useActionSourceRunAction, useActionSourceStopAction, useActionsCreate, useActionsDelete, useActionsGet, useActionsGetLinks, useActionsGetTraces, useActionsList, useActionsListForCamera, useActionsRun, useActionsSetLinks, useActionsStop, useActionsUpdate, useAddonPagesListPages, useAddonSettingsGetDeclaredSettingsKeys, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationFormSchema, useAddonSettingsGetIntegrationSettings, useAddonSettingsUnsetStoredSettingsKeys, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetPackageDocs, useAddonsGetVersions, useAddonsInstallPackage, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, 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, useBoardKeySourceGetBoardKey, useBoardKeySourceListBoards, useBoardKeySourceListSources, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPickerSlot, 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, useCoreBlocksGetAutomationRunState, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTraces, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksReportAutomationRun, 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, useDeviceExportExposeEntity, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListExposedEntities, useDeviceExportListSupportedDeviceKinds, useDeviceExportListSupportedEntityKinds, useDeviceExportUnexposeDevice, useDeviceExportUnexposeEntity, 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, useDeviceManagerDismissDiscoveryProposal, 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, useDeviceManagerListDiscoveryProposals, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerReportDiscoveryObservations, useDeviceManagerRunDeviceAction, useDeviceManagerRunDiscoverySweep, 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, useDeviceProviderClassifyDiscoveryHits, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryModes, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceRunsGetCurrentRun, useDeviceRunsGetRun, useDeviceRunsListRuns, useDeviceSeriesList, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDiscoveredOptions, useDishwasherGetOptions, useDishwasherGetStatus, useDishwasherPause, useDishwasherResume, useDishwasherSetChildLock, useDishwasherSetExtraDry, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetIntensiveZone, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, useDishwasherSetVarioSpeedPlus, useDishwasherStart, useDishwasherStop, useDisplayIconResolver, useDisplayPaletteGetPalette, useDisplayPaletteListPresets, useDisplayPaletteSetPalette, useDisplayPaletteView, useDoNotDisturbGetStatus, useDoNotDisturbSetEnabled, 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, useFanPresetsApplyPreset, useFanPresetsCapturePreset, useFanPresetsGetPresets, useFanPresetsSetPresets, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useGroupActiveGetStatus, useGroupCommandsGetStatus, useGroupStatusGetStatus, useHeatingValveGetStatus, useHistoryPanels, useHistoryReader, useHistoryReads, useHotkey, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationInstancesCreateInstance, useIntegrationInstancesDeleteInstance, useIntegrationInstancesDescribe, useIntegrationInstancesGetInstance, useIntegrationInstancesInstanceFormSchema, useIntegrationInstancesListInstances, useIntegrationInstancesSetInstanceEnabled, useIntegrationInstancesTestInstance, useIntegrationInstancesUpdateInstance, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIrTransmitterGetInfo, useIrTransmitterSend, 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, useLocalNetworkGetScanSubnets, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkScanNetwork, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetScanSubnets, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLocalNetworkUseStoredUploadedCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useLockDoorSensor, useMediaPlayerChannelDown, useMediaPlayerChannelUp, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMediaPlayerTurnOff, useMediaPlayerTurnOn, useMediaPlayerVolumeDown, useMediaPlayerVolumeUp, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMeterGetStatus, 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, usePetFountainGetStatus, usePetFountainResetDailyConsumption, usePetFountainSetPump, 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, usePlatformProbeGetCapabilities, usePlatformProbeGetHardware, usePlatformProbeRescanAccelerators, usePlatformProbeResolveHwAccel, usePlatformProbeResolveInferenceConfig, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePowerSourceForceRestart, usePowerSourceGetStatus, usePowerSourcePowerOff, usePowerSourcePowerOn, 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, usePumpCycleGetStatus, usePumpCycleSetEnabled, usePumpCycleSetOffMinutes, usePumpCycleSetOnMinutes, 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, useRegisteredHotkeys, useRemoteComponent, useRemoteGetAssumedStatus, useRemoteGetConfig, useRemoteLayoutComponentsListComponents, useRemoteListCommands, useRemoteSendCommand, useRemoteSendMediaCommand, useRemoteSetConfig, useRoleDisplayDefaults, useRunningStateGetStatus, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useSchedulersConflicts, useSchedulersCreate, useSchedulersDelete, useSchedulersGet, useSchedulersGetStatus, useSchedulersGetTraces, useSchedulersList, useSchedulersPreview, useSchedulersSetEnabled, useSchedulersUpdate, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useSearchFieldHotkey, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetLaunchOverrides, useServerManagementGetServerPackageStatus, useServerManagementInstallDesktopUpdate, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useServerManagementSetLaunchOverrides, 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, useSystemDebugWatch, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTemplateCreate, useTemplateDelete, useTemplateGet, useTemplateList, useTemplateUpdate, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useTimedRunCancel, useTimedRunGetStatus, useTimedRunRunFor, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListCanaryTargets, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUnitPreferences, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetAdminBootstrapStatus, 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, Save as ut, UtensilsCrossed as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, Hash as vn, ChevronLeft as vr, RadioTower as vt, Undo2 as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withHiddenChart, withPanel, withResolvedParentDetail, withUseRootModel, withoutModelScopedFields, withoutPanel, GraduationCap as wn, Car as wr, writeStoredGroupBy, Plug as wt, UserCheck as x, Hammer as xn, ChartLine as xr, Puzzle as xt, Users as y, HardDrive as yn, ChevronDown as yr, Radar as yt, Tag as z, EllipsisVertical as zn, BatteryMedium as zr, MoveVertical as zt };
74604
+ export { Shuffle as $, Cog as $n, ArrowDownToLine as $r, Maximize2 as $t, Trash2 as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Funnel as An, AppShell, Bus as Ar, ArcKnob, Plane as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, Sunrise 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, ExternalLink as Bn, BottomSheet, Battery as Br, Breadcrumb, BrightnessPanel, BrokerPickerSlotProvider, Music 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, Hand 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, Check as Cr, QrCode$1 as Ct, CustomFieldRenderersProvider, TriangleAlert as D, DATA_RECORDS_KIND_PARAM, DATA_RECORDS_OWNER_PARAM, DATA_RECORD_FACET_GROUPS, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEFAULT_UNIT_PREFERENCES, 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, DisclosureChevron, DiscoveryPanel, DisplayPaletteProvider, GraduationCap as Dn, DoorbellRecentPanel, Car as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Plug as Dt, DummyHeroCard, DummyInline, Truck as E, EMPTY_DATA_TABLE_FILTER, EMPTY_HISTORY_PANELS, EVENT_KIND_ICONS, EmptyState, Grid2x2 as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Cast as Er, ErrorBox, PowerOff as Et, EventKindGlyph, EventStream, ExtensionsPanel, Timer as F, FALLBACK_SCOPE, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FileInput, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, Film as Fn, FormField$1 as FormField, Blinds as Fr, PawPrint as Ft, Sprout as G, GAP_INTERVAL_FACTOR, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Download as Gn, Bath as Gr, GripTrack, GroupedModelSelector, GroupedTilePicker, Moon as Gt, SunMedium 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, EllipsisVertical as Hn, HotkeyProvider, HotkeyScope, HoverZoomImage, BatteryMedium as Hr, MoveVertical as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, TimerOff as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, Feather as In, InferenceConfigSelector, Input, Bird as Ir, Pause as It, ItemFormDialog, Smartphone as J, Dog as Jn, ArrowUp as Jr, Minimize2 as Jt, Sparkles as K, KebabMenu, KeyValueList, DoorOpen as Kn, Ban as Kr, MonitorPlay as Kt, Thermometer as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, Fan as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, Bike as Lr, Package as Lt, Tractor as M, MEDIA_GRID, MINUTES_PER_DAY, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, Flashlight as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, Box as Mr, Pin as Mt, ToggleRight as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, FlashlightOff as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, Bot as Nr, Phone as Nt, TrendingDown as O, OCCUPANCY_KEY, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, Gauge as On, OptionSelect, Camera as Or, Plus 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, Flame as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PowerMeterLine, Bone as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Pencil as Pt, PtzPanel, Siren as Q, Copy as Qn, ArrowDown as Qr, QrCode, Megaphone as Qt, QuantityValueInput, Target as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RESOLUTION_BUCKET_MS, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, Radio, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, Eye as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, Bell as Rr, Network 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, Slider, HardDrive as Sn, SnapshotButton, SortHeaderButton, Sparkline, ChevronDown as Sr, Radar 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, TEMPERATURE_SCALES, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, Textarea, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimeSeriesChart, TimelineSlider, TimezoneSelector, GripHorizontal as Tn, Tooltip, TooltipContent, TooltipTrigger, Cat as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Power as Tt, Star as U, UNIT_PREFERENCES_NAMESPACE, UiTextProvider, UiTrans, Droplets as Un, UnitPicker, UnitPreferencesFromServer, UnitPreferencesProvider, BatteryLow as Ur, MoveHorizontal as Ut, Sun as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, ViewSwitch, Eraser as Vn, VodPlaybackProvider, BatteryWarning as Vr, Move as Vt, Square as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Droplet as Wn, BatteryFull as Wr, MousePointerClick as Wt, SkipForward as X, Crosshair as Xn, ArrowRight as Xr, MessageSquare as Xt, SlidersHorizontal as Y, Database as Yn, ArrowUpToLine as Yr, Mic as Yt, SkipBack as Z, Cpu as Zn, ZoneEditingProvider, ArrowLeft as Zr, Menu as Zt, Vibrate as _, ImageOff as _n, ChevronsUpDown as _r, Repeat as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, alignSeries, allDeviceTypeFilterOptions, LoaderCircle as an, anchorNow, applyFleetQueryDefaults, applyPickerFilters, CloudFog as ar, ariaSortForColumn, assignNodeColorId, Share2 as at, axisTicks, User as b, badgeFor, binaryBatteryIsLow, bindsToModel, Heater as bn, booleanLabels, boundsInPicked, ChevronRight as br, Radio$1 as bt, bucketTotals, buildColorByNodeId, buildDataRecordRows, buildPeerConnectionConfig, buildStepTreeFromSchema, buildSubjectPath, buildTimeSeriesModel, Wifi as c, catalogHasDraft, chartKeys, chartSeriesStyle, childEntityId, childListName, chipOverflow, chunk, clampMinute, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, consumableItemLevel, consumableLevelBarClass, consumableLevelLabel, consumableLevelVariant, containerChildToRef, countableDevices, coverHighlight, coverageLine, CircleX as cr, createAddonI18n, createSharedContext, createTheme, Search 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, detectPlatform, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceNameNouns, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, Leaf as dn, dockBox, CirclePlus as dr, draftFromQuery, Save as dt, effectivePageSize, AlarmSmoke as ei, emptyDevicesWidens, emptySessionRun, MapPin as en, encodeCustomWindow, encodeSeriesRef, energyBuckets, ensureMfHostInit, Cloud as er, Ship as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOccupancyLines, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, LayoutGrid as fn, foldDeviceName, formatChartBytes, formatChartNumber, formatChartValue, formatControlDateTime, formatDeviceName, formatLastSeen, formatNumeric, formatSettingValue, formatSpan, formatTimeLabel, CirclePause as fr, freezeVerdict, Sailboat as ft, fuzzyMatch, Volume2 as g, gapThresholdMs, getClassColor, getPhaseVisual, Image as gn, CircleAlert as gr, groupAgentColumns, groupChildrenByLayout, groupDeviceSeries, groupPickerDevices, groupPickerDevicesBy, RotateCcw as gt, VolumeX as h, hardwareLabel, historyPageHref, Inbox as hn, CircleCheckBig as hr, RotateCw as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humanizeName, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, LocateFixed as in, indexDeviceNames, initialScrubState, insertAtSelection, CloudLightning as ir, isAbsentProvider, isByteUnit, isConsumableLevelField, isDataTableFilterActive, isDeviceNameStock, isDrawableSubjectPath, isFieldVisible, isGroupExpanded, isHistoryWindowId, isKeychainFieldValue, isModelScopedField, isPickableUnit, isRedactedSecret, isRefusal, isSecretField, isValueField, ShieldAlert as it, TrainFront as j, Footprints as jn, Bug as jr, Pipette as jt, TrendingUp as k, Gamepad2 as kn, Cable as kr, Play as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, linePoints, Link2 as ln, loadIconGlyphs, loadRemoteBundle, CircleStop as lr, ScrollText as lt, lucideExportName, WashingMachine as m, makeScrubBridge, mapRootDetectorPlacements, matchesCombo, mergeSecretForSubmit, metadataEntries, metadataString, minuteFromPointer, Info as mn, mountAddonPage, mountPath, CircleCheck as mr, Route as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, Activity as ni, niceMax, niceRange, Lock as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, normalizeSelection, nounSpecFor, CloudSnow as nr, ShieldOff as nt, Workflow as o, occupancyFacets, occupancyLines, offListSelections, List as on, openTopLayer, optionSearchText as optionSelectSearchText, Clock as or, orphanDeviceLabel, Settings as ot, outsideBounds, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseCapKey, parseCombo, parseConsumableLevel, parseIceCandidate, parsePickerGroupBy, parseProducerKey, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, Laugh as pn, CircleDot as pr, preferenceForQuantity, previousWindow, projectSubjectPath, providerIcons, Router as pt, Snowflake as q, DoorClosed as qn, Baby as qr, Minus as qt, quantityStoredUnit, quantityUnitChoices, Zap as r, readHistory, readHistoryPanels, readItemId, readStoredGroupBy, readUnitPreferences, 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, LockOpen as rn, roiTooLarge, rootSourceState, routerBasename, CloudRain as rr, ShieldCheck 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, ListChecks as sn, snapMinute, sortRows, sortRowsByColumn, Clapperboard as sr, Server as st, stackBuckets, stackSeries, stateAt, stateRow, stateStyle, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, storedToPicked, stripDeviceParentPrefix, stripParentNamePrefix, subjectPathSampleFromBox, subjectPathSvgPoints, summarizeHubCandidates, swatchFillClass, swatchLineClass, ZoomOut as t, tabForSelector, themeToCss, themeToRootCss, AirVent as ti, timeInState, Mail as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, CloudSun as tr, trainingRefusalText, translateAddonKey, trpc, Shield as tt, typeLabel, typedToStored, WifiOff as u, uiLibraryVersion, Lightbulb as un, unitAxes, CircleQuestionMark as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAccountUnitPreferences, useActionSourceListActions, useActionSourceRunAction, useActionSourceStopAction, useActionsCreate, useActionsDelete, useActionsGet, useActionsGetLinks, useActionsGetTraces, useActionsList, useActionsListForCamera, useActionsRun, useActionsSetLinks, useActionsStop, useActionsUpdate, useAddonPagesListPages, useAddonSettingsGetDeclaredSettingsKeys, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationFormSchema, useAddonSettingsGetIntegrationSettings, useAddonSettingsUnsetStoredSettingsKeys, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetPackageDocs, useAddonsGetVersions, useAddonsInstallPackage, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, 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, useBoardKeySourceGetBoardKey, useBoardKeySourceListBoards, useBoardKeySourceListSources, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPickerSlot, 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, useCoreBlocksGetAutomationRunState, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTraces, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksReportAutomationRun, 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, useDeviceExportExposeEntity, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListExposedEntities, useDeviceExportListSupportedDeviceKinds, useDeviceExportListSupportedEntityKinds, useDeviceExportUnexposeDevice, useDeviceExportUnexposeEntity, 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, useDeviceManagerDismissDiscoveryProposal, 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, useDeviceManagerListDiscoveryProposals, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerReportDiscoveryObservations, useDeviceManagerRunDeviceAction, useDeviceManagerRunDiscoverySweep, 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, useDeviceProviderClassifyDiscoveryHits, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryModes, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceRunsGetCurrentRun, useDeviceRunsGetRun, useDeviceRunsListRuns, useDeviceSeriesList, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDiscoveredOptions, useDishwasherGetOptions, useDishwasherGetStatus, useDishwasherPause, useDishwasherResume, useDishwasherSetChildLock, useDishwasherSetExtraDry, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetIntensiveZone, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, useDishwasherSetVarioSpeedPlus, useDishwasherStart, useDishwasherStop, useDisplayIconResolver, useDisplayPaletteGetPalette, useDisplayPaletteListPresets, useDisplayPaletteSetPalette, useDisplayPaletteView, useDoNotDisturbGetStatus, useDoNotDisturbSetEnabled, 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, useFanPresetsApplyPreset, useFanPresetsCapturePreset, useFanPresetsGetPresets, useFanPresetsSetPresets, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useGroupActiveGetStatus, useGroupCommandsGetStatus, useGroupStatusGetStatus, useHeatingValveGetStatus, useHistoryPanels, useHistoryReader, useHistoryReads, useHotkey, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationInstancesCreateInstance, useIntegrationInstancesDeleteInstance, useIntegrationInstancesDescribe, useIntegrationInstancesGetInstance, useIntegrationInstancesInstanceFormSchema, useIntegrationInstancesListInstances, useIntegrationInstancesSetInstanceEnabled, useIntegrationInstancesTestInstance, useIntegrationInstancesUpdateInstance, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIrTransmitterGetInfo, useIrTransmitterSend, 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, useLocalNetworkGetScanSubnets, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkScanNetwork, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetScanSubnets, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLocalNetworkUseStoredUploadedCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useLockDoorSensor, useMediaPlayerChannelDown, useMediaPlayerChannelUp, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMediaPlayerTurnOff, useMediaPlayerTurnOn, useMediaPlayerVolumeDown, useMediaPlayerVolumeUp, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMeterGetStatus, 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, usePetFountainGetStatus, usePetFountainResetDailyConsumption, usePetFountainSetPump, 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, usePlatformProbeGetCapabilities, usePlatformProbeGetHardware, usePlatformProbeRescanAccelerators, usePlatformProbeResolveHwAccel, usePlatformProbeResolveInferenceConfig, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePowerSourceForceRestart, usePowerSourceGetStatus, usePowerSourcePowerOff, usePowerSourcePowerOn, 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, usePumpCycleGetStatus, usePumpCycleSetEnabled, usePumpCycleSetOffMinutes, usePumpCycleSetOnMinutes, 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, useRegisteredHotkeys, useRemoteComponent, useRemoteGetAssumedStatus, useRemoteGetConfig, useRemoteLayoutComponentsListComponents, useRemoteListCommands, useRemoteSendCommand, useRemoteSendMediaCommand, useRemoteSetConfig, useRoleDisplayDefaults, useRunningStateGetStatus, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useSchedulersConflicts, useSchedulersCreate, useSchedulersDelete, useSchedulersGet, useSchedulersGetStatus, useSchedulersGetTraces, useSchedulersList, useSchedulersPreview, useSchedulersSetEnabled, useSchedulersUpdate, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useSearchFieldHotkey, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetLaunchOverrides, useServerManagementGetServerPackageStatus, useServerManagementInstallDesktopUpdate, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useServerManagementSetLaunchOverrides, 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, useSystemDebugWatch, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTemplateCreate, useTemplateDelete, useTemplateGet, useTemplateList, useTemplateUpdate, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useTimedRunCancel, useTimedRunGetStatus, useTimedRunRunFor, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListCanaryTargets, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUnitPreferences, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetAdminBootstrapStatus, 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, Scan as ut, UtensilsCrossed as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, House as vn, ChevronsDownUp as vr, Repeat1 as vt, Undo2 as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withHiddenChart, withPanel, withResolvedParentDetail, withUseRootModel, withoutModelScopedFields, withoutPanel, Hammer as wn, ChartLine as wr, writeStoredGroupBy, Puzzle as wt, UserCheck as x, Hash as xn, ChevronLeft as xr, RadioTower as xt, Users as y, History as yn, ChevronUp as yr, RefreshCw as yt, Tag as z, EyeOff as zn, BellRing as zr, Navigation as zt };