@camstack/ui-library 1.2.122 → 1.2.124
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/{SceneMonitorEditor-DN2ILWCf.cjs → SceneMonitorEditor-BS1yQFA3.cjs} +1 -1
- package/dist/{SceneMonitorEditor-d_A4kO-M.js → SceneMonitorEditor-Cfln0dgZ.js} +2 -2
- package/dist/composites/cap-settings/RecordingBandsEditor.d.ts +13 -0
- package/dist/composites/cap-settings/SceneReferenceGallery.d.ts +1 -1
- package/dist/hooks/use-device-snapshot.d.ts +4 -2
- package/dist/index.cjs +163 -8
- package/dist/index.js +156 -9
- package/dist/lib/hub-mount.d.ts +56 -0
- package/dist/lib/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -33,7 +33,7 @@ var Settings2 = require_index.createLucideIcon("settings-2", [
|
|
|
33
33
|
//#endregion
|
|
34
34
|
//#region src/composites/cap-settings/SceneReferenceGallery.tsx
|
|
35
35
|
/** The hub-proxied prefix for the pipeline-analytics event-media data plane. */
|
|
36
|
-
var SCENE_MEDIA_BASE = "/addon/pipeline-analytics/event-media";
|
|
36
|
+
var SCENE_MEDIA_BASE = require_index.hubPath$1("/addon/pipeline-analytics/event-media");
|
|
37
37
|
/**
|
|
38
38
|
* Flatten `states[].references[]` into per-condition groups while keeping each
|
|
39
39
|
* reference's `(stateId, index)` — the pair `deleteReference` takes.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SCENE_CAPTURE_VARIANTS, TEXT_HINT, a as ImageOff, badgeFor, c as createLucideIcon, coverageLine, isAbsentProvider, r as RotateCcw, roiTooLarge, s as Camera, statusLine, t as Trash2, useDeviceProxy, useDeviceSnapshotImage, useDeviceStateSlice, useSystem, variantLabel } from "./index.js";
|
|
1
|
+
import { SCENE_CAPTURE_VARIANTS, TEXT_HINT, a as ImageOff, badgeFor, c as createLucideIcon, coverageLine, hubPath, isAbsentProvider, r as RotateCcw, roiTooLarge, s as Camera, statusLine, t as Trash2, useDeviceProxy, useDeviceSnapshotImage, useDeviceStateSlice, useSystem, variantLabel } from "./index.js";
|
|
2
2
|
import { MaskShapeCanvas } from "./MaskShapeCanvas-DI4BY7W2.js";
|
|
3
3
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -33,7 +33,7 @@ var Settings2 = createLucideIcon("settings-2", [
|
|
|
33
33
|
//#endregion
|
|
34
34
|
//#region src/composites/cap-settings/SceneReferenceGallery.tsx
|
|
35
35
|
/** The hub-proxied prefix for the pipeline-analytics event-media data plane. */
|
|
36
|
-
var SCENE_MEDIA_BASE = "/addon/pipeline-analytics/event-media";
|
|
36
|
+
var SCENE_MEDIA_BASE = hubPath("/addon/pipeline-analytics/event-media");
|
|
37
37
|
/**
|
|
38
38
|
* Flatten `states[].references[]` into per-condition groups while keeping each
|
|
39
39
|
* reference's `(stateId, index)` — the pair `deleteReference` takes.
|
|
@@ -22,5 +22,18 @@ export declare function RecordingBandsEditor({ bands, onChange, sensorContext, }
|
|
|
22
22
|
export interface RecordingSensorContext {
|
|
23
23
|
readonly cameraId: number;
|
|
24
24
|
readonly location: string | null;
|
|
25
|
+
/**
|
|
26
|
+
* Does this camera publish its own `recording-signal` — the LEVEL an events
|
|
27
|
+
* band can follow (`RecordingTriggers.deviceSignal`)? Asked of the camera's
|
|
28
|
+
* bindings by the host. Absent = the host did not ask; the control is then
|
|
29
|
+
* offered only to switch OFF a band that already listens.
|
|
30
|
+
*/
|
|
31
|
+
readonly deviceSignal?: DeviceSignalPresence;
|
|
25
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* What the host knows about the camera's `recording-signal` binding. Four
|
|
35
|
+
* states, not a boolean (D315): `pending` and `unknown` must render as
|
|
36
|
+
* "not yet known", never as "this camera has no signal".
|
|
37
|
+
*/
|
|
38
|
+
export type DeviceSignalPresence = 'pending' | 'present' | 'absent' | 'unknown';
|
|
26
39
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SceneMonitor, SceneReference } from '@camstack/types';
|
|
2
2
|
/** The hub-proxied prefix for the pipeline-analytics event-media data plane. */
|
|
3
|
-
export declare const SCENE_MEDIA_BASE
|
|
3
|
+
export declare const SCENE_MEDIA_BASE: string;
|
|
4
4
|
/** One reference, with the coordinates `deleteReference` addresses it by. */
|
|
5
5
|
export interface SceneReferenceTile {
|
|
6
6
|
readonly stateId: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
/** The hub-proxied path prefix for the snapshot image data plane
|
|
1
|
+
/** The hub-proxied path prefix for the snapshot image data plane, composed
|
|
2
|
+
* below on `baseUrl` or, for the same-origin case, on the page's mount. */
|
|
2
3
|
export declare const SNAPSHOT_MEDIA_PATH = "/addon/snapshot/media";
|
|
3
4
|
export interface DeviceSnapshotImage {
|
|
4
5
|
/** Image URL ready for `<img src>`, or `null` when there is no device. */
|
|
@@ -22,7 +23,8 @@ export interface UseDeviceSnapshotOptions {
|
|
|
22
23
|
* captured** — which is how a 28 px thumbnail came to cost a megabyte.
|
|
23
24
|
*/
|
|
24
25
|
readonly width?: number;
|
|
25
|
-
/** Absolute hub base. Omit in the admin UI, which is same-origin with the
|
|
26
|
+
/** Absolute hub base. Omit in the admin UI, which is same-origin with the
|
|
27
|
+
* hub — the path then follows the page's mount (`hub-mount.ts`). */
|
|
26
28
|
readonly baseUrl?: string;
|
|
27
29
|
}
|
|
28
30
|
export declare function useDeviceSnapshotImage(deviceId: number | null, options?: UseDeviceSnapshotOptions): DeviceSnapshotImage;
|
package/dist/index.cjs
CHANGED
|
@@ -15232,6 +15232,111 @@ function ensureMfHostInit() {
|
|
|
15232
15232
|
});
|
|
15233
15233
|
}
|
|
15234
15234
|
//#endregion
|
|
15235
|
+
//#region src/lib/hub-mount.ts
|
|
15236
|
+
/**
|
|
15237
|
+
* Where the hub is, from inside a page the hub served.
|
|
15238
|
+
*
|
|
15239
|
+
* The admin UI is not always at the hub's root. The Home Assistant component
|
|
15240
|
+
* frames it through a same-origin relay — `https://<ha>/api/camstack/p/<grant>/…`
|
|
15241
|
+
* → `https://<hub>:4443/…` — so the browser never has to trust the hub's
|
|
15242
|
+
* local certificate. The relay sends `X-Forwarded-Prefix` and the hub
|
|
15243
|
+
* injects two things into the shell it serves for that request:
|
|
15244
|
+
*
|
|
15245
|
+
* <base href="<prefix>/">
|
|
15246
|
+
* <meta name="camstack-mount" content="<prefix>/">
|
|
15247
|
+
*
|
|
15248
|
+
* This module is the ONE reader of that fact. Every URL the page composes
|
|
15249
|
+
* toward the hub — tRPC HTTP and WS, `/api/webrtc`, `/addon/…` data planes,
|
|
15250
|
+
* `/api/addon-assets`, MF remote entries, `<img src>` — goes through it:
|
|
15251
|
+
*
|
|
15252
|
+
* - `hubPath('/api/x')` → `/api/x` at the root, `/<prefix>/api/x` under one.
|
|
15253
|
+
* A same-origin path; the default for fetch, `<img>`, links.
|
|
15254
|
+
* - `hubOrigin()` → `https://host` or `https://host/<prefix>`; the
|
|
15255
|
+
* `serverUrl` handed to the SDK and the players (they append `/trpc`,
|
|
15256
|
+
* `/api/webrtc`, `/adaptive-probe` themselves).
|
|
15257
|
+
* - `hubUrl()` / `hubWsUrl()` — absolute http(s) / ws(s) forms.
|
|
15258
|
+
* - `routerBasename()` → `''` or `/<prefix>`, for `<BrowserRouter>`.
|
|
15259
|
+
*
|
|
15260
|
+
* Why not `window.location.origin` + a literal: `<base>` does not apply to a
|
|
15261
|
+
* root-absolute path, so `'/api/x'` leaves the relay and lands on HA's own
|
|
15262
|
+
* `/api/x`. And why not `document.baseURI` alone: without a `<base>` it is
|
|
15263
|
+
* the DOCUMENT's URL, so `/devices/5` would read as a mount of `/devices/`.
|
|
15264
|
+
* The meta is the authority; a `<base>` element is accepted on its own for a
|
|
15265
|
+
* host that injects only that.
|
|
15266
|
+
*
|
|
15267
|
+
* `scripts/check-hub-paths-through-mount.ts` keeps every other module from
|
|
15268
|
+
* spelling a hub path directly.
|
|
15269
|
+
*/
|
|
15270
|
+
var MOUNT_META_NAME = "camstack-mount";
|
|
15271
|
+
/** A clean absolute path: no scheme, no `//`, no `..`, no query. */
|
|
15272
|
+
var MOUNT_PATH_RE = /^\/(?:[A-Za-z0-9_\-.]+\/)*$/;
|
|
15273
|
+
var resolvedMount = null;
|
|
15274
|
+
function normaliseMount(raw) {
|
|
15275
|
+
if (raw === null || raw === void 0 || raw === "") return null;
|
|
15276
|
+
const withSlash = raw.endsWith("/") ? raw : `${raw}/`;
|
|
15277
|
+
if (!MOUNT_PATH_RE.test(withSlash)) return null;
|
|
15278
|
+
if (withSlash.includes("/../") || withSlash.includes("/./")) return null;
|
|
15279
|
+
return withSlash;
|
|
15280
|
+
}
|
|
15281
|
+
function readMountFromDocument() {
|
|
15282
|
+
if (typeof document === "undefined") return "/";
|
|
15283
|
+
const fromMeta = normaliseMount(document.querySelector(`meta[name="${MOUNT_META_NAME}"]`)?.getAttribute("content"));
|
|
15284
|
+
if (fromMeta !== null) return fromMeta;
|
|
15285
|
+
if (document.querySelector("base[href]") !== null) try {
|
|
15286
|
+
const url = new URL(document.baseURI);
|
|
15287
|
+
if (url.origin === window.location.origin) {
|
|
15288
|
+
const fromBase = normaliseMount(url.pathname);
|
|
15289
|
+
if (fromBase !== null) return fromBase;
|
|
15290
|
+
}
|
|
15291
|
+
} catch {}
|
|
15292
|
+
return "/";
|
|
15293
|
+
}
|
|
15294
|
+
/**
|
|
15295
|
+
* The path the app is mounted at, with a trailing slash: `/` or `/<prefix>/`.
|
|
15296
|
+
* Resolved once — the shell is the only thing that can say where it lives,
|
|
15297
|
+
* and it says so before any script runs.
|
|
15298
|
+
*/
|
|
15299
|
+
function mountPath() {
|
|
15300
|
+
if (resolvedMount === null) resolvedMount = readMountFromDocument();
|
|
15301
|
+
return resolvedMount;
|
|
15302
|
+
}
|
|
15303
|
+
/** `<BrowserRouter basename>`: the mount without its trailing slash. */
|
|
15304
|
+
function routerBasename() {
|
|
15305
|
+
return mountPath().replace(/\/$/, "");
|
|
15306
|
+
}
|
|
15307
|
+
function isAbsoluteUrl(value) {
|
|
15308
|
+
return /^[a-z][a-z0-9+.-]*:/i.test(value) || value.startsWith("//");
|
|
15309
|
+
}
|
|
15310
|
+
/**
|
|
15311
|
+
* A same-origin path under the mount. Absolute URLs and paths already under
|
|
15312
|
+
* the mount pass through unchanged, so a server-stamped `bundleUrl` can be
|
|
15313
|
+
* wrapped without knowing whether it was.
|
|
15314
|
+
*/
|
|
15315
|
+
function hubPath(pathname) {
|
|
15316
|
+
if (isAbsoluteUrl(pathname)) return pathname;
|
|
15317
|
+
const mount = mountPath();
|
|
15318
|
+
const relative = pathname.replace(/^\/+/, "");
|
|
15319
|
+
if (mount !== "/" && (pathname === routerBasename() || pathname.startsWith(mount))) return pathname;
|
|
15320
|
+
return `${mount}${relative}`;
|
|
15321
|
+
}
|
|
15322
|
+
/** The absolute hub base with no trailing slash — the SDK's `serverUrl`. */
|
|
15323
|
+
function hubOrigin() {
|
|
15324
|
+
return `${typeof window !== "undefined" ? window.location.origin : ""}${routerBasename()}`;
|
|
15325
|
+
}
|
|
15326
|
+
/** An absolute http(s) URL for a hub path. */
|
|
15327
|
+
function hubUrl(pathname) {
|
|
15328
|
+
if (isAbsoluteUrl(pathname)) return pathname;
|
|
15329
|
+
return `${hubOrigin()}${hubPath(pathname).slice(routerBasename().length)}`;
|
|
15330
|
+
}
|
|
15331
|
+
/** The ws(s) twin of {@link hubUrl}. */
|
|
15332
|
+
function hubWsUrl(pathname) {
|
|
15333
|
+
return hubUrl(pathname).replace(/^http/, "ws");
|
|
15334
|
+
}
|
|
15335
|
+
/** Tests mutate `<head>` between cases; production resolves once. */
|
|
15336
|
+
function resetHubMountForTests() {
|
|
15337
|
+
resolvedMount = null;
|
|
15338
|
+
}
|
|
15339
|
+
//#endregion
|
|
15235
15340
|
//#region src/contexts/widget-registry.tsx
|
|
15236
15341
|
/**
|
|
15237
15342
|
* WidgetRegistry — admin-ui side of the addon-widgets system.
|
|
@@ -15332,7 +15437,7 @@ async function loadRemoteBundle(remoteName, exposedModule, entryUrl) {
|
|
|
15332
15437
|
ensureMfHostInit();
|
|
15333
15438
|
registerRemotes([{
|
|
15334
15439
|
name: remoteName,
|
|
15335
|
-
entry: entryUrl,
|
|
15440
|
+
entry: hubPath(entryUrl),
|
|
15336
15441
|
type: "module"
|
|
15337
15442
|
}], { force: false });
|
|
15338
15443
|
registeredRemotes.add(remoteName);
|
|
@@ -17412,6 +17517,11 @@ function BandRow({ band, onChange, onRemove, sensorContext }) {
|
|
|
17412
17517
|
}, cls);
|
|
17413
17518
|
})]
|
|
17414
17519
|
}),
|
|
17520
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DeviceSignalTrigger, {
|
|
17521
|
+
presence: sensorContext?.deviceSignal,
|
|
17522
|
+
checked: band.triggers?.deviceSignal === true,
|
|
17523
|
+
onChange: (on) => setTriggers({ deviceSignal: on ? true : void 0 })
|
|
17524
|
+
}),
|
|
17415
17525
|
sensorContext !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DeviceMultiSelectField, {
|
|
17416
17526
|
field: sensorPickerField(sensorContext),
|
|
17417
17527
|
value: (band.triggers?.sensorDeviceIds ?? []).map(String),
|
|
@@ -17457,6 +17567,34 @@ function BandRow({ band, onChange, onRemove, sensorContext }) {
|
|
|
17457
17567
|
]
|
|
17458
17568
|
});
|
|
17459
17569
|
}
|
|
17570
|
+
/**
|
|
17571
|
+
* The `deviceSignal` control. Offered when the camera is KNOWN to publish the
|
|
17572
|
+
* signal; shown disabled while that is not yet known (a control that vanishes
|
|
17573
|
+
* while a query is in flight reads as "this camera cannot do it"); and, for a
|
|
17574
|
+
* band that already listens, always offered so the operator can switch it
|
|
17575
|
+
* off — whatever the host knows today.
|
|
17576
|
+
*/
|
|
17577
|
+
function DeviceSignalTrigger({ presence, checked, onChange }) {
|
|
17578
|
+
const settled = presence === "present" || checked;
|
|
17579
|
+
if (!settled && presence !== "pending" && presence !== "unknown") return null;
|
|
17580
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
17581
|
+
className: "flex items-center gap-2 text-xs",
|
|
17582
|
+
children: [
|
|
17583
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
17584
|
+
type: "checkbox",
|
|
17585
|
+
"aria-label": "Device signal",
|
|
17586
|
+
checked,
|
|
17587
|
+
disabled: !settled,
|
|
17588
|
+
onChange: (e) => onChange(e.target.checked)
|
|
17589
|
+
}),
|
|
17590
|
+
"Device signal",
|
|
17591
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
17592
|
+
className: "text-foreground-subtle",
|
|
17593
|
+
children: presence === "pending" ? "checking the camera…" : presence === "unknown" ? "could not check the camera" : presence === "absent" ? "not offered by this camera" : "records for as long as the device reports it is in function"
|
|
17594
|
+
})
|
|
17595
|
+
]
|
|
17596
|
+
});
|
|
17597
|
+
}
|
|
17460
17598
|
//#endregion
|
|
17461
17599
|
//#region src/composites/cap-settings/RecordingSettings.tsx
|
|
17462
17600
|
var MODES = [
|
|
@@ -19152,6 +19290,8 @@ function RecordingPanel({ deviceId }) {
|
|
|
19152
19290
|
const statusQuery = useRecordingGetStatus({ deviceId });
|
|
19153
19291
|
const configQuery = useRecordingGetDeviceConfig({ deviceId });
|
|
19154
19292
|
const cameraLocation = useDeviceManagerGetDevice({ deviceId }).data?.location ?? null;
|
|
19293
|
+
const bindingsQuery = useDeviceManagerGetBindings({ deviceId });
|
|
19294
|
+
const deviceSignal = bindingsQuery.status === "pending" ? "pending" : bindingsQuery.status === "error" ? "unknown" : bindingsQuery.data.entries.some((e) => e.capName === "recording-signal") ? "present" : "absent";
|
|
19155
19295
|
const setConfig = useRecordingSetDeviceConfig();
|
|
19156
19296
|
const rescanStorage = useRecordingRescanStorage();
|
|
19157
19297
|
const { data: profileSlots } = useStreamBrokerListAllProfileSlots(void 0, { staleTime: 3e4 });
|
|
@@ -19199,7 +19339,8 @@ function RecordingPanel({ deviceId }) {
|
|
|
19199
19339
|
onSave: saveConfig,
|
|
19200
19340
|
sensorContext: {
|
|
19201
19341
|
cameraId: deviceId,
|
|
19202
|
-
location: cameraLocation
|
|
19342
|
+
location: cameraLocation,
|
|
19343
|
+
deviceSignal
|
|
19203
19344
|
}
|
|
19204
19345
|
}, JSON.stringify(resolvedConfig)) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
19205
19346
|
className: "px-1 py-2 text-xs text-foreground-subtle",
|
|
@@ -25188,7 +25329,12 @@ function stripDownlinkForColdStart(hints) {
|
|
|
25188
25329
|
function shouldUpgradeAfterProbe(mbps) {
|
|
25189
25330
|
return suggestedAdaptiveTier(mbps) !== "low";
|
|
25190
25331
|
}
|
|
25191
|
-
/**
|
|
25332
|
+
/**
|
|
25333
|
+
* An http(s) base — origin plus any path prefix, no trailing slash — or null
|
|
25334
|
+
* for anything that cannot serve the probe. The prefix is kept because a hub
|
|
25335
|
+
* reached through a path-mounted relay (`https://<ha>/api/camstack/p/<g>`)
|
|
25336
|
+
* serves `/adaptive-probe` UNDER that prefix; the bare origin is the relay.
|
|
25337
|
+
*/
|
|
25192
25338
|
function httpOrigin(value) {
|
|
25193
25339
|
if (value === void 0 || value === "") return null;
|
|
25194
25340
|
let parsed;
|
|
@@ -25198,7 +25344,7 @@ function httpOrigin(value) {
|
|
|
25198
25344
|
return null;
|
|
25199
25345
|
}
|
|
25200
25346
|
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") return null;
|
|
25201
|
-
return parsed.origin
|
|
25347
|
+
return `${parsed.origin}${parsed.pathname.replace(/\/+$/, "")}`;
|
|
25202
25348
|
}
|
|
25203
25349
|
/**
|
|
25204
25350
|
* The origin `/adaptive-probe` must be fetched from — the HUB, not the page.
|
|
@@ -25334,7 +25480,7 @@ var DOWNLINK_TTL_MS = 3e4;
|
|
|
25334
25480
|
*/
|
|
25335
25481
|
/** The origin the probe WILL use, for the client's own decision log. */
|
|
25336
25482
|
function probeOriginFor(serverUrl) {
|
|
25337
|
-
return resolveProbeOrigin(serverUrl, typeof window !== "undefined" ?
|
|
25483
|
+
return resolveProbeOrigin(serverUrl, typeof window !== "undefined" ? hubOrigin() : void 0);
|
|
25338
25484
|
}
|
|
25339
25485
|
async function measuredDownlinkMbps(serverUrl) {
|
|
25340
25486
|
const origin = probeOriginFor(serverUrl);
|
|
@@ -42694,7 +42840,8 @@ function useDeviceNetworkLink(trpc, deviceId) {
|
|
|
42694
42840
|
* revalidate a stale URL rather than treating it as immutable, so the URL stays
|
|
42695
42841
|
* stable and does NOT need a version parameter.
|
|
42696
42842
|
*/
|
|
42697
|
-
/** The hub-proxied path prefix for the snapshot image data plane
|
|
42843
|
+
/** The hub-proxied path prefix for the snapshot image data plane, composed
|
|
42844
|
+
* below on `baseUrl` or, for the same-origin case, on the page's mount. */
|
|
42698
42845
|
var SNAPSHOT_MEDIA_PATH = "/addon/snapshot/media";
|
|
42699
42846
|
function useDeviceSnapshotImage(deviceId, options = {}) {
|
|
42700
42847
|
const { width, baseUrl } = options;
|
|
@@ -42702,7 +42849,7 @@ function useDeviceSnapshotImage(deviceId, options = {}) {
|
|
|
42702
42849
|
return {
|
|
42703
42850
|
src: (0, react$1.useMemo)(() => {
|
|
42704
42851
|
if (deviceId === null || deviceId <= 0) return null;
|
|
42705
|
-
const base = baseUrl !== void 0 ? baseUrl.replace(/\/+$/, "") :
|
|
42852
|
+
const base = baseUrl !== void 0 ? baseUrl.replace(/\/+$/, "") : routerBasename();
|
|
42706
42853
|
const params = new URLSearchParams();
|
|
42707
42854
|
if (width !== void 0 && Number.isInteger(width) && width > 0) params.set("w", String(width));
|
|
42708
42855
|
if (refreshNonce > 0) {
|
|
@@ -50135,7 +50282,7 @@ var MotionZonesSettings = (0, react$1.lazy)(() => Promise.resolve().then(() => r
|
|
|
50135
50282
|
/** Lazy-wrapped `SceneMonitorEditor` — code-split off the main bundle for the
|
|
50136
50283
|
* same reason: it mounts `MaskShapeCanvas`, which chains react-konva. Render
|
|
50137
50284
|
* inside `<Suspense>`; the admin-ui `/scenes` dialog is its only caller. */
|
|
50138
|
-
var SceneMonitorEditor = (0, react$1.lazy)(() => Promise.resolve().then(() => require("./SceneMonitorEditor-
|
|
50285
|
+
var SceneMonitorEditor = (0, react$1.lazy)(() => Promise.resolve().then(() => require("./SceneMonitorEditor-BS1yQFA3.cjs")).then((m) => ({ default: m.SceneMonitorEditor })));
|
|
50139
50286
|
/** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
|
|
50140
50287
|
var PrivacyMaskSettings = (0, react$1.lazy)(() => Promise.resolve().then(() => require("./PrivacyMaskSettings-Oo7gyB4E.cjs")).then((m) => ({ default: m.PrivacyMaskSettings })));
|
|
50141
50288
|
//#endregion
|
|
@@ -50465,6 +50612,11 @@ exports.getPhaseVisual = getPhaseVisual;
|
|
|
50465
50612
|
exports.groupAgentColumns = groupAgentColumns;
|
|
50466
50613
|
exports.groupChildrenByLayout = groupChildrenByLayout;
|
|
50467
50614
|
exports.hardwareLabel = hardwareLabel;
|
|
50615
|
+
exports.hubOrigin = hubOrigin;
|
|
50616
|
+
exports.hubPath = hubPath;
|
|
50617
|
+
exports.hubPath$1 = hubPath;
|
|
50618
|
+
exports.hubUrl = hubUrl;
|
|
50619
|
+
exports.hubWsUrl = hubWsUrl;
|
|
50468
50620
|
exports.humanDuration = humanDuration;
|
|
50469
50621
|
exports.humidifierTint = humidifierTint;
|
|
50470
50622
|
exports.initialScrubState = initialScrubState;
|
|
@@ -50479,6 +50631,7 @@ exports.metadataEntries = metadataEntries;
|
|
|
50479
50631
|
exports.metadataString = metadataString;
|
|
50480
50632
|
exports.mirror = mirror;
|
|
50481
50633
|
exports.mountAddonPage = mountAddonPage;
|
|
50634
|
+
exports.mountPath = mountPath;
|
|
50482
50635
|
exports.nextReconnectAction = nextReconnectAction;
|
|
50483
50636
|
exports.nextSort = nextSort;
|
|
50484
50637
|
exports.nextSortDirection = nextSortDirection;
|
|
@@ -50487,6 +50640,7 @@ exports.normalizeForSearch = normalizeForSearch;
|
|
|
50487
50640
|
exports.overrideEntityIdFromLink = overrideEntityIdFromLink;
|
|
50488
50641
|
exports.parseRecordedServerMessage = parseRecordedServerMessage;
|
|
50489
50642
|
exports.providerIcons = providerIcons;
|
|
50643
|
+
exports.resetHubMountForTests = resetHubMountForTests;
|
|
50490
50644
|
exports.resolveContainerPrimary = resolveContainerPrimary;
|
|
50491
50645
|
exports.resolveControlAlign = resolveControlAlign;
|
|
50492
50646
|
exports.resolveDeviceControl = resolveDeviceControl;
|
|
@@ -50500,6 +50654,7 @@ exports.resolveStepDefaultModel = resolveStepDefaultModel;
|
|
|
50500
50654
|
exports.resolveTableLayout = resolveTableLayout;
|
|
50501
50655
|
exports.roiTooLarge = roiTooLarge;
|
|
50502
50656
|
exports.roiTooLarge$1 = roiTooLarge;
|
|
50657
|
+
exports.routerBasename = routerBasename;
|
|
50503
50658
|
exports.scrubReducer = scrubReducer;
|
|
50504
50659
|
exports.selectedDeviceOptions = selectedDeviceOptions;
|
|
50505
50660
|
exports.serializeRecordedCommand = serializeRecordedCommand;
|
package/dist/index.js
CHANGED
|
@@ -15208,6 +15208,111 @@ function ensureMfHostInit() {
|
|
|
15208
15208
|
});
|
|
15209
15209
|
}
|
|
15210
15210
|
//#endregion
|
|
15211
|
+
//#region src/lib/hub-mount.ts
|
|
15212
|
+
/**
|
|
15213
|
+
* Where the hub is, from inside a page the hub served.
|
|
15214
|
+
*
|
|
15215
|
+
* The admin UI is not always at the hub's root. The Home Assistant component
|
|
15216
|
+
* frames it through a same-origin relay — `https://<ha>/api/camstack/p/<grant>/…`
|
|
15217
|
+
* → `https://<hub>:4443/…` — so the browser never has to trust the hub's
|
|
15218
|
+
* local certificate. The relay sends `X-Forwarded-Prefix` and the hub
|
|
15219
|
+
* injects two things into the shell it serves for that request:
|
|
15220
|
+
*
|
|
15221
|
+
* <base href="<prefix>/">
|
|
15222
|
+
* <meta name="camstack-mount" content="<prefix>/">
|
|
15223
|
+
*
|
|
15224
|
+
* This module is the ONE reader of that fact. Every URL the page composes
|
|
15225
|
+
* toward the hub — tRPC HTTP and WS, `/api/webrtc`, `/addon/…` data planes,
|
|
15226
|
+
* `/api/addon-assets`, MF remote entries, `<img src>` — goes through it:
|
|
15227
|
+
*
|
|
15228
|
+
* - `hubPath('/api/x')` → `/api/x` at the root, `/<prefix>/api/x` under one.
|
|
15229
|
+
* A same-origin path; the default for fetch, `<img>`, links.
|
|
15230
|
+
* - `hubOrigin()` → `https://host` or `https://host/<prefix>`; the
|
|
15231
|
+
* `serverUrl` handed to the SDK and the players (they append `/trpc`,
|
|
15232
|
+
* `/api/webrtc`, `/adaptive-probe` themselves).
|
|
15233
|
+
* - `hubUrl()` / `hubWsUrl()` — absolute http(s) / ws(s) forms.
|
|
15234
|
+
* - `routerBasename()` → `''` or `/<prefix>`, for `<BrowserRouter>`.
|
|
15235
|
+
*
|
|
15236
|
+
* Why not `window.location.origin` + a literal: `<base>` does not apply to a
|
|
15237
|
+
* root-absolute path, so `'/api/x'` leaves the relay and lands on HA's own
|
|
15238
|
+
* `/api/x`. And why not `document.baseURI` alone: without a `<base>` it is
|
|
15239
|
+
* the DOCUMENT's URL, so `/devices/5` would read as a mount of `/devices/`.
|
|
15240
|
+
* The meta is the authority; a `<base>` element is accepted on its own for a
|
|
15241
|
+
* host that injects only that.
|
|
15242
|
+
*
|
|
15243
|
+
* `scripts/check-hub-paths-through-mount.ts` keeps every other module from
|
|
15244
|
+
* spelling a hub path directly.
|
|
15245
|
+
*/
|
|
15246
|
+
var MOUNT_META_NAME = "camstack-mount";
|
|
15247
|
+
/** A clean absolute path: no scheme, no `//`, no `..`, no query. */
|
|
15248
|
+
var MOUNT_PATH_RE = /^\/(?:[A-Za-z0-9_\-.]+\/)*$/;
|
|
15249
|
+
var resolvedMount = null;
|
|
15250
|
+
function normaliseMount(raw) {
|
|
15251
|
+
if (raw === null || raw === void 0 || raw === "") return null;
|
|
15252
|
+
const withSlash = raw.endsWith("/") ? raw : `${raw}/`;
|
|
15253
|
+
if (!MOUNT_PATH_RE.test(withSlash)) return null;
|
|
15254
|
+
if (withSlash.includes("/../") || withSlash.includes("/./")) return null;
|
|
15255
|
+
return withSlash;
|
|
15256
|
+
}
|
|
15257
|
+
function readMountFromDocument() {
|
|
15258
|
+
if (typeof document === "undefined") return "/";
|
|
15259
|
+
const fromMeta = normaliseMount(document.querySelector(`meta[name="${MOUNT_META_NAME}"]`)?.getAttribute("content"));
|
|
15260
|
+
if (fromMeta !== null) return fromMeta;
|
|
15261
|
+
if (document.querySelector("base[href]") !== null) try {
|
|
15262
|
+
const url = new URL(document.baseURI);
|
|
15263
|
+
if (url.origin === window.location.origin) {
|
|
15264
|
+
const fromBase = normaliseMount(url.pathname);
|
|
15265
|
+
if (fromBase !== null) return fromBase;
|
|
15266
|
+
}
|
|
15267
|
+
} catch {}
|
|
15268
|
+
return "/";
|
|
15269
|
+
}
|
|
15270
|
+
/**
|
|
15271
|
+
* The path the app is mounted at, with a trailing slash: `/` or `/<prefix>/`.
|
|
15272
|
+
* Resolved once — the shell is the only thing that can say where it lives,
|
|
15273
|
+
* and it says so before any script runs.
|
|
15274
|
+
*/
|
|
15275
|
+
function mountPath() {
|
|
15276
|
+
if (resolvedMount === null) resolvedMount = readMountFromDocument();
|
|
15277
|
+
return resolvedMount;
|
|
15278
|
+
}
|
|
15279
|
+
/** `<BrowserRouter basename>`: the mount without its trailing slash. */
|
|
15280
|
+
function routerBasename() {
|
|
15281
|
+
return mountPath().replace(/\/$/, "");
|
|
15282
|
+
}
|
|
15283
|
+
function isAbsoluteUrl(value) {
|
|
15284
|
+
return /^[a-z][a-z0-9+.-]*:/i.test(value) || value.startsWith("//");
|
|
15285
|
+
}
|
|
15286
|
+
/**
|
|
15287
|
+
* A same-origin path under the mount. Absolute URLs and paths already under
|
|
15288
|
+
* the mount pass through unchanged, so a server-stamped `bundleUrl` can be
|
|
15289
|
+
* wrapped without knowing whether it was.
|
|
15290
|
+
*/
|
|
15291
|
+
function hubPath(pathname) {
|
|
15292
|
+
if (isAbsoluteUrl(pathname)) return pathname;
|
|
15293
|
+
const mount = mountPath();
|
|
15294
|
+
const relative = pathname.replace(/^\/+/, "");
|
|
15295
|
+
if (mount !== "/" && (pathname === routerBasename() || pathname.startsWith(mount))) return pathname;
|
|
15296
|
+
return `${mount}${relative}`;
|
|
15297
|
+
}
|
|
15298
|
+
/** The absolute hub base with no trailing slash — the SDK's `serverUrl`. */
|
|
15299
|
+
function hubOrigin() {
|
|
15300
|
+
return `${typeof window !== "undefined" ? window.location.origin : ""}${routerBasename()}`;
|
|
15301
|
+
}
|
|
15302
|
+
/** An absolute http(s) URL for a hub path. */
|
|
15303
|
+
function hubUrl(pathname) {
|
|
15304
|
+
if (isAbsoluteUrl(pathname)) return pathname;
|
|
15305
|
+
return `${hubOrigin()}${hubPath(pathname).slice(routerBasename().length)}`;
|
|
15306
|
+
}
|
|
15307
|
+
/** The ws(s) twin of {@link hubUrl}. */
|
|
15308
|
+
function hubWsUrl(pathname) {
|
|
15309
|
+
return hubUrl(pathname).replace(/^http/, "ws");
|
|
15310
|
+
}
|
|
15311
|
+
/** Tests mutate `<head>` between cases; production resolves once. */
|
|
15312
|
+
function resetHubMountForTests() {
|
|
15313
|
+
resolvedMount = null;
|
|
15314
|
+
}
|
|
15315
|
+
//#endregion
|
|
15211
15316
|
//#region src/contexts/widget-registry.tsx
|
|
15212
15317
|
/**
|
|
15213
15318
|
* WidgetRegistry — admin-ui side of the addon-widgets system.
|
|
@@ -15308,7 +15413,7 @@ async function loadRemoteBundle(remoteName, exposedModule, entryUrl) {
|
|
|
15308
15413
|
ensureMfHostInit();
|
|
15309
15414
|
registerRemotes([{
|
|
15310
15415
|
name: remoteName,
|
|
15311
|
-
entry: entryUrl,
|
|
15416
|
+
entry: hubPath(entryUrl),
|
|
15312
15417
|
type: "module"
|
|
15313
15418
|
}], { force: false });
|
|
15314
15419
|
registeredRemotes.add(remoteName);
|
|
@@ -17388,6 +17493,11 @@ function BandRow({ band, onChange, onRemove, sensorContext }) {
|
|
|
17388
17493
|
}, cls);
|
|
17389
17494
|
})]
|
|
17390
17495
|
}),
|
|
17496
|
+
/* @__PURE__ */ jsx(DeviceSignalTrigger, {
|
|
17497
|
+
presence: sensorContext?.deviceSignal,
|
|
17498
|
+
checked: band.triggers?.deviceSignal === true,
|
|
17499
|
+
onChange: (on) => setTriggers({ deviceSignal: on ? true : void 0 })
|
|
17500
|
+
}),
|
|
17391
17501
|
sensorContext !== void 0 ? /* @__PURE__ */ jsx(DeviceMultiSelectField, {
|
|
17392
17502
|
field: sensorPickerField(sensorContext),
|
|
17393
17503
|
value: (band.triggers?.sensorDeviceIds ?? []).map(String),
|
|
@@ -17433,6 +17543,34 @@ function BandRow({ band, onChange, onRemove, sensorContext }) {
|
|
|
17433
17543
|
]
|
|
17434
17544
|
});
|
|
17435
17545
|
}
|
|
17546
|
+
/**
|
|
17547
|
+
* The `deviceSignal` control. Offered when the camera is KNOWN to publish the
|
|
17548
|
+
* signal; shown disabled while that is not yet known (a control that vanishes
|
|
17549
|
+
* while a query is in flight reads as "this camera cannot do it"); and, for a
|
|
17550
|
+
* band that already listens, always offered so the operator can switch it
|
|
17551
|
+
* off — whatever the host knows today.
|
|
17552
|
+
*/
|
|
17553
|
+
function DeviceSignalTrigger({ presence, checked, onChange }) {
|
|
17554
|
+
const settled = presence === "present" || checked;
|
|
17555
|
+
if (!settled && presence !== "pending" && presence !== "unknown") return null;
|
|
17556
|
+
return /* @__PURE__ */ jsxs("label", {
|
|
17557
|
+
className: "flex items-center gap-2 text-xs",
|
|
17558
|
+
children: [
|
|
17559
|
+
/* @__PURE__ */ jsx("input", {
|
|
17560
|
+
type: "checkbox",
|
|
17561
|
+
"aria-label": "Device signal",
|
|
17562
|
+
checked,
|
|
17563
|
+
disabled: !settled,
|
|
17564
|
+
onChange: (e) => onChange(e.target.checked)
|
|
17565
|
+
}),
|
|
17566
|
+
"Device signal",
|
|
17567
|
+
/* @__PURE__ */ jsx("span", {
|
|
17568
|
+
className: "text-foreground-subtle",
|
|
17569
|
+
children: presence === "pending" ? "checking the camera…" : presence === "unknown" ? "could not check the camera" : presence === "absent" ? "not offered by this camera" : "records for as long as the device reports it is in function"
|
|
17570
|
+
})
|
|
17571
|
+
]
|
|
17572
|
+
});
|
|
17573
|
+
}
|
|
17436
17574
|
//#endregion
|
|
17437
17575
|
//#region src/composites/cap-settings/RecordingSettings.tsx
|
|
17438
17576
|
var MODES = [
|
|
@@ -19128,6 +19266,8 @@ function RecordingPanel({ deviceId }) {
|
|
|
19128
19266
|
const statusQuery = useRecordingGetStatus({ deviceId });
|
|
19129
19267
|
const configQuery = useRecordingGetDeviceConfig({ deviceId });
|
|
19130
19268
|
const cameraLocation = useDeviceManagerGetDevice({ deviceId }).data?.location ?? null;
|
|
19269
|
+
const bindingsQuery = useDeviceManagerGetBindings({ deviceId });
|
|
19270
|
+
const deviceSignal = bindingsQuery.status === "pending" ? "pending" : bindingsQuery.status === "error" ? "unknown" : bindingsQuery.data.entries.some((e) => e.capName === "recording-signal") ? "present" : "absent";
|
|
19131
19271
|
const setConfig = useRecordingSetDeviceConfig();
|
|
19132
19272
|
const rescanStorage = useRecordingRescanStorage();
|
|
19133
19273
|
const { data: profileSlots } = useStreamBrokerListAllProfileSlots(void 0, { staleTime: 3e4 });
|
|
@@ -19175,7 +19315,8 @@ function RecordingPanel({ deviceId }) {
|
|
|
19175
19315
|
onSave: saveConfig,
|
|
19176
19316
|
sensorContext: {
|
|
19177
19317
|
cameraId: deviceId,
|
|
19178
|
-
location: cameraLocation
|
|
19318
|
+
location: cameraLocation,
|
|
19319
|
+
deviceSignal
|
|
19179
19320
|
}
|
|
19180
19321
|
}, JSON.stringify(resolvedConfig)) : /* @__PURE__ */ jsx("div", {
|
|
19181
19322
|
className: "px-1 py-2 text-xs text-foreground-subtle",
|
|
@@ -25164,7 +25305,12 @@ function stripDownlinkForColdStart(hints) {
|
|
|
25164
25305
|
function shouldUpgradeAfterProbe(mbps) {
|
|
25165
25306
|
return suggestedAdaptiveTier(mbps) !== "low";
|
|
25166
25307
|
}
|
|
25167
|
-
/**
|
|
25308
|
+
/**
|
|
25309
|
+
* An http(s) base — origin plus any path prefix, no trailing slash — or null
|
|
25310
|
+
* for anything that cannot serve the probe. The prefix is kept because a hub
|
|
25311
|
+
* reached through a path-mounted relay (`https://<ha>/api/camstack/p/<g>`)
|
|
25312
|
+
* serves `/adaptive-probe` UNDER that prefix; the bare origin is the relay.
|
|
25313
|
+
*/
|
|
25168
25314
|
function httpOrigin(value) {
|
|
25169
25315
|
if (value === void 0 || value === "") return null;
|
|
25170
25316
|
let parsed;
|
|
@@ -25174,7 +25320,7 @@ function httpOrigin(value) {
|
|
|
25174
25320
|
return null;
|
|
25175
25321
|
}
|
|
25176
25322
|
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") return null;
|
|
25177
|
-
return parsed.origin
|
|
25323
|
+
return `${parsed.origin}${parsed.pathname.replace(/\/+$/, "")}`;
|
|
25178
25324
|
}
|
|
25179
25325
|
/**
|
|
25180
25326
|
* The origin `/adaptive-probe` must be fetched from — the HUB, not the page.
|
|
@@ -25310,7 +25456,7 @@ var DOWNLINK_TTL_MS = 3e4;
|
|
|
25310
25456
|
*/
|
|
25311
25457
|
/** The origin the probe WILL use, for the client's own decision log. */
|
|
25312
25458
|
function probeOriginFor(serverUrl) {
|
|
25313
|
-
return resolveProbeOrigin(serverUrl, typeof window !== "undefined" ?
|
|
25459
|
+
return resolveProbeOrigin(serverUrl, typeof window !== "undefined" ? hubOrigin() : void 0);
|
|
25314
25460
|
}
|
|
25315
25461
|
async function measuredDownlinkMbps(serverUrl) {
|
|
25316
25462
|
const origin = probeOriginFor(serverUrl);
|
|
@@ -42670,7 +42816,8 @@ function useDeviceNetworkLink(trpc, deviceId) {
|
|
|
42670
42816
|
* revalidate a stale URL rather than treating it as immutable, so the URL stays
|
|
42671
42817
|
* stable and does NOT need a version parameter.
|
|
42672
42818
|
*/
|
|
42673
|
-
/** The hub-proxied path prefix for the snapshot image data plane
|
|
42819
|
+
/** The hub-proxied path prefix for the snapshot image data plane, composed
|
|
42820
|
+
* below on `baseUrl` or, for the same-origin case, on the page's mount. */
|
|
42674
42821
|
var SNAPSHOT_MEDIA_PATH = "/addon/snapshot/media";
|
|
42675
42822
|
function useDeviceSnapshotImage(deviceId, options = {}) {
|
|
42676
42823
|
const { width, baseUrl } = options;
|
|
@@ -42678,7 +42825,7 @@ function useDeviceSnapshotImage(deviceId, options = {}) {
|
|
|
42678
42825
|
return {
|
|
42679
42826
|
src: useMemo(() => {
|
|
42680
42827
|
if (deviceId === null || deviceId <= 0) return null;
|
|
42681
|
-
const base = baseUrl !== void 0 ? baseUrl.replace(/\/+$/, "") :
|
|
42828
|
+
const base = baseUrl !== void 0 ? baseUrl.replace(/\/+$/, "") : routerBasename();
|
|
42682
42829
|
const params = new URLSearchParams();
|
|
42683
42830
|
if (width !== void 0 && Number.isInteger(width) && width > 0) params.set("w", String(width));
|
|
42684
42831
|
if (refreshNonce > 0) {
|
|
@@ -50111,8 +50258,8 @@ var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-DNdnFHso.js")
|
|
|
50111
50258
|
/** Lazy-wrapped `SceneMonitorEditor` — code-split off the main bundle for the
|
|
50112
50259
|
* same reason: it mounts `MaskShapeCanvas`, which chains react-konva. Render
|
|
50113
50260
|
* inside `<Suspense>`; the admin-ui `/scenes` dialog is its only caller. */
|
|
50114
|
-
var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-
|
|
50261
|
+
var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-Cfln0dgZ.js").then((m) => ({ default: m.SceneMonitorEditor })));
|
|
50115
50262
|
/** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
|
|
50116
50263
|
var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-DNSLc6ww.js").then((m) => ({ default: m.PrivacyMaskSettings })));
|
|
50117
50264
|
//#endregion
|
|
50118
|
-
export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EVENT_KIND_ICONS, EmptyState, ErrorBox, EventKindGlyph, EventStream, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, GroupedModelSelector, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NAVIGATION_DRIVE_INTERVAL_MS, NavigationPanel, NetworkLinkBadge, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SCENE_CAPTURE_VARIANTS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, SortHeaderButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, Tooltip, TooltipContent, TooltipTrigger, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, ImageOff as a, agentColumnKey, allDeviceTypeFilterOptions, applyFleetQueryDefaults, ariaSortForColumn, badgeFor, buildStepTreeFromSchema, createLucideIcon as c, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, coverageLine, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, describeDeviceSelector, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ensureMfHostInit, eventKindLabel, filterDeviceOptions, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, hardwareLabel, humanDuration, humidifierTint, Mic as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, normalizeForSearch, EyeOff as o, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, RotateCcw as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, roiTooLarge, Camera as s, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, sortRowsByColumn, statusIcons, statusLine, stepHasModelForFormat, stepModelOptions, stripParentNamePrefix, Trash2 as t, tabForSelector, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerClassify, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRenameLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellApplyDeviceSettingsPatch, useDoorbellEvents, useDoorbellGetDeviceLiveContribution, useDoorbellGetDeviceSettingsContribution, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useEventsGetEventClipUrl, useEventsGetEventThumbnail, useEventsGetEvents, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkDownloadCa, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesCancelSnooze, useNotificationRulesCreateRule, useNotificationRulesCreateSnooze, useNotificationRulesDeleteRule, useNotificationRulesGetAlarmConfig, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSnoozes, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetSummary, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListSummaries, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsRunReplayFrameProcessor, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingCancelRelocateJob, useRecordingCancelStorageMigrationMove, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetAvailabilityBatch, useRecordingGetDaysWithRecordings, useRecordingGetDaysWithRecordingsBatch, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlacement, useRecordingGetPlaybackManifest, useRecordingGetRelocateResidue, useRecordingGetStatus, useRecordingGetStorageMigrationMoveStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingListRelocateJobs, useRecordingLocateSegment, useRecordingPauseForStorageMigration, useRecordingPlanStorageRebalance, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingReadWindowBytes, useRecordingReconcileLedgerAgainstDisk, useRecordingRefreshStorageLocationsForMigration, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingResumeForStorageMigration, useRecordingSetDeviceConfig, useRecordingSetDevicePlacement, useRecordingStartStorageMigrationMove, useRecordingStartStorageRebalance, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|
|
50265
|
+
export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EVENT_KIND_ICONS, EmptyState, ErrorBox, EventKindGlyph, EventStream, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, GroupedModelSelector, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NAVIGATION_DRIVE_INTERVAL_MS, NavigationPanel, NetworkLinkBadge, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SCENE_CAPTURE_VARIANTS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, SortHeaderButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, Tooltip, TooltipContent, TooltipTrigger, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, ImageOff as a, agentColumnKey, allDeviceTypeFilterOptions, applyFleetQueryDefaults, ariaSortForColumn, badgeFor, buildStepTreeFromSchema, createLucideIcon as c, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, coverageLine, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, describeDeviceSelector, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ensureMfHostInit, eventKindLabel, filterDeviceOptions, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, hardwareLabel, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, Mic as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, mountPath, Square as n, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, normalizeForSearch, EyeOff as o, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, RotateCcw as r, resetHubMountForTests, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, roiTooLarge, routerBasename, Camera as s, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, sortRowsByColumn, statusIcons, statusLine, stepHasModelForFormat, stepModelOptions, stripParentNamePrefix, Trash2 as t, tabForSelector, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerClassify, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRenameLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellApplyDeviceSettingsPatch, useDoorbellEvents, useDoorbellGetDeviceLiveContribution, useDoorbellGetDeviceSettingsContribution, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useEventsGetEventClipUrl, useEventsGetEventThumbnail, useEventsGetEvents, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkDownloadCa, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesCancelSnooze, useNotificationRulesCreateRule, useNotificationRulesCreateSnooze, useNotificationRulesDeleteRule, useNotificationRulesGetAlarmConfig, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSnoozes, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetSummary, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListSummaries, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsRunReplayFrameProcessor, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingCancelRelocateJob, useRecordingCancelStorageMigrationMove, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetAvailabilityBatch, useRecordingGetDaysWithRecordings, useRecordingGetDaysWithRecordingsBatch, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlacement, useRecordingGetPlaybackManifest, useRecordingGetRelocateResidue, useRecordingGetStatus, useRecordingGetStorageMigrationMoveStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingListRelocateJobs, useRecordingLocateSegment, useRecordingPauseForStorageMigration, useRecordingPlanStorageRebalance, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingReadWindowBytes, useRecordingReconcileLedgerAgainstDisk, useRecordingRefreshStorageLocationsForMigration, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingResumeForStorageMigration, useRecordingSetDeviceConfig, useRecordingSetDevicePlacement, useRecordingStartStorageMigrationMove, useRecordingStartStorageRebalance, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the hub is, from inside a page the hub served.
|
|
3
|
+
*
|
|
4
|
+
* The admin UI is not always at the hub's root. The Home Assistant component
|
|
5
|
+
* frames it through a same-origin relay — `https://<ha>/api/camstack/p/<grant>/…`
|
|
6
|
+
* → `https://<hub>:4443/…` — so the browser never has to trust the hub's
|
|
7
|
+
* local certificate. The relay sends `X-Forwarded-Prefix` and the hub
|
|
8
|
+
* injects two things into the shell it serves for that request:
|
|
9
|
+
*
|
|
10
|
+
* <base href="<prefix>/">
|
|
11
|
+
* <meta name="camstack-mount" content="<prefix>/">
|
|
12
|
+
*
|
|
13
|
+
* This module is the ONE reader of that fact. Every URL the page composes
|
|
14
|
+
* toward the hub — tRPC HTTP and WS, `/api/webrtc`, `/addon/…` data planes,
|
|
15
|
+
* `/api/addon-assets`, MF remote entries, `<img src>` — goes through it:
|
|
16
|
+
*
|
|
17
|
+
* - `hubPath('/api/x')` → `/api/x` at the root, `/<prefix>/api/x` under one.
|
|
18
|
+
* A same-origin path; the default for fetch, `<img>`, links.
|
|
19
|
+
* - `hubOrigin()` → `https://host` or `https://host/<prefix>`; the
|
|
20
|
+
* `serverUrl` handed to the SDK and the players (they append `/trpc`,
|
|
21
|
+
* `/api/webrtc`, `/adaptive-probe` themselves).
|
|
22
|
+
* - `hubUrl()` / `hubWsUrl()` — absolute http(s) / ws(s) forms.
|
|
23
|
+
* - `routerBasename()` → `''` or `/<prefix>`, for `<BrowserRouter>`.
|
|
24
|
+
*
|
|
25
|
+
* Why not `window.location.origin` + a literal: `<base>` does not apply to a
|
|
26
|
+
* root-absolute path, so `'/api/x'` leaves the relay and lands on HA's own
|
|
27
|
+
* `/api/x`. And why not `document.baseURI` alone: without a `<base>` it is
|
|
28
|
+
* the DOCUMENT's URL, so `/devices/5` would read as a mount of `/devices/`.
|
|
29
|
+
* The meta is the authority; a `<base>` element is accepted on its own for a
|
|
30
|
+
* host that injects only that.
|
|
31
|
+
*
|
|
32
|
+
* `scripts/check-hub-paths-through-mount.ts` keeps every other module from
|
|
33
|
+
* spelling a hub path directly.
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* The path the app is mounted at, with a trailing slash: `/` or `/<prefix>/`.
|
|
37
|
+
* Resolved once — the shell is the only thing that can say where it lives,
|
|
38
|
+
* and it says so before any script runs.
|
|
39
|
+
*/
|
|
40
|
+
export declare function mountPath(): string;
|
|
41
|
+
/** `<BrowserRouter basename>`: the mount without its trailing slash. */
|
|
42
|
+
export declare function routerBasename(): string;
|
|
43
|
+
/**
|
|
44
|
+
* A same-origin path under the mount. Absolute URLs and paths already under
|
|
45
|
+
* the mount pass through unchanged, so a server-stamped `bundleUrl` can be
|
|
46
|
+
* wrapped without knowing whether it was.
|
|
47
|
+
*/
|
|
48
|
+
export declare function hubPath(pathname: string): string;
|
|
49
|
+
/** The absolute hub base with no trailing slash — the SDK's `serverUrl`. */
|
|
50
|
+
export declare function hubOrigin(): string;
|
|
51
|
+
/** An absolute http(s) URL for a hub path. */
|
|
52
|
+
export declare function hubUrl(pathname: string): string;
|
|
53
|
+
/** The ws(s) twin of {@link hubUrl}. */
|
|
54
|
+
export declare function hubWsUrl(pathname: string): string;
|
|
55
|
+
/** Tests mutate `<head>` between cases; production resolves once. */
|
|
56
|
+
export declare function resetHubMountForTests(): void;
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export { PHASE_CONFIG, getPhaseVisual } from './phase-config';
|
|
|
13
13
|
export type { PhaseVisual } from './phase-config';
|
|
14
14
|
export { createSharedContext } from './shared-context';
|
|
15
15
|
export { ensureMfHostInit } from './mf-runtime-init';
|
|
16
|
+
export { hubOrigin, hubPath, hubUrl, hubWsUrl, mountPath, resetHubMountForTests, routerBasename, } from './hub-mount';
|
|
16
17
|
export { serializeRecordedCommand, parseRecordedServerMessage, RECORDED_PLAYBACK_MODES, } from './recorded-control-protocol';
|
|
17
18
|
export type { RecordedControlCommand, RecordedPlaybackMode, RecordedServerMessage, } from './recorded-control-protocol';
|
|
18
19
|
export { scrubReducer, initialScrubState, shouldEmit, shouldCommit, cursorFractionFor, makeScrubBridge, useScrubController, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, } from './scrub-controller';
|