@camstack/ui-library 1.2.68 → 1.2.69
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/composites/adaptive-downlink.d.ts +13 -1
- package/dist/composites/model-picker.d.ts +6 -17
- package/dist/generated/system-hooks.d.ts +4 -0
- package/dist/index.cjs +106 -74
- package/dist/index.js +106 -76
- package/package.json +1 -1
|
@@ -2,10 +2,22 @@
|
|
|
2
2
|
* Burst-download the hub's `/adaptive-probe` blob and return Mbps.
|
|
3
3
|
* Used as `hints.downlinkMbps` so adaptive selection is based on a measured
|
|
4
4
|
* path, not viewport size or IP class. Failures return null (caller keeps
|
|
5
|
-
* the default-
|
|
5
|
+
* the default-low / ceiling path and may stay on the lowest rung).
|
|
6
6
|
*/
|
|
7
7
|
export declare const ADAPTIVE_PROBE_PATH = "/adaptive-probe";
|
|
8
8
|
export declare const ADAPTIVE_PROBE_TIMEOUT_MS = 2500;
|
|
9
|
+
export type AdaptiveTier = 'high' | 'mid' | 'low';
|
|
10
|
+
/** Mbps needed to attempt each rung (bitrate / 0.6 headroom, rounded). */
|
|
11
|
+
export declare const DOWNLINK_HIGH_MBPS = 8;
|
|
12
|
+
export declare const DOWNLINK_MID_MBPS = 2.5;
|
|
13
|
+
/** Map a measured downlink onto the adaptive ladder. Mid is a real rung. */
|
|
14
|
+
export declare function suggestedAdaptiveTier(mbps: number): AdaptiveTier;
|
|
15
|
+
/** First connect never carries a cached probe — the broker starts lowest. */
|
|
16
|
+
export declare function stripDownlinkForColdStart<T extends {
|
|
17
|
+
readonly downlinkMbps?: number;
|
|
18
|
+
}>(hints: T): Omit<T, 'downlinkMbps'>;
|
|
19
|
+
/** After a probe, only mid/high justify a make-before-break climb. */
|
|
20
|
+
export declare function shouldUpgradeAfterProbe(mbps: number): boolean;
|
|
9
21
|
export declare function measureDownlinkMbps(origin: string, deps: {
|
|
10
22
|
readonly fetchImpl: (url: string, init: {
|
|
11
23
|
signal: AbortSignal;
|
|
@@ -3,23 +3,12 @@ export type ModelOption = PipelineAddonSchema['models'][number];
|
|
|
3
3
|
/**
|
|
4
4
|
* Shared model picker — the ONE model-selection control across the app.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* views. A pinned custom model hides the grouped catalog entirely (both used
|
|
13
|
-
* to render, and the grouped picker highlighted a family that was NOT the
|
|
14
|
-
* selection); while a catalog model is pinned the custom list stays behind an
|
|
15
|
-
* explicit affordance. A legacy/removed pin is surfaced with an explicit
|
|
16
|
-
* banner rather than a silently mis-highlighted chip.
|
|
17
|
-
*
|
|
18
|
-
* Used by the pipeline stepper (`PipelineStep`), the agent/device step editor
|
|
19
|
-
* (`AgentStepEditor`), and the benchmark — so the picker looks identical
|
|
20
|
-
* everywhere. `value === ''` renders nothing selected (callers that support an
|
|
21
|
-
* "Auto / node default" mode own that affordance and hide this picker while it
|
|
22
|
-
* is active).
|
|
6
|
+
* Provider first (CamStack / Frigate / Scrypted / Custom), then inside that
|
|
7
|
+
* catalog the grouped Family→Tier→Variant selector when entries declare
|
|
8
|
+
* `group`, else a flat `<select>`. The persisted value stays the flat model
|
|
9
|
+
* id. `value === ''` renders nothing selected (callers that support an
|
|
10
|
+
* "Auto / node default" mode own that affordance and hide this picker while
|
|
11
|
+
* it is active).
|
|
23
12
|
*/
|
|
24
13
|
export declare function ModelPicker({ models, value, onChange, disabled, }: {
|
|
25
14
|
readonly models: readonly ModelOption[];
|
|
@@ -1067,6 +1067,10 @@ export declare const usePipelineAnalyticsGetTrack: typeof trpc.pipelineAnalytics
|
|
|
1067
1067
|
export declare const usePipelineAnalyticsListTracks: typeof trpc.pipelineAnalytics.listTracks.useQuery;
|
|
1068
1068
|
/** Generated alias around `trpc.pipelineAnalytics.listRecentTracks.useQuery`. */
|
|
1069
1069
|
export declare const usePipelineAnalyticsListRecentTracks: typeof trpc.pipelineAnalytics.listRecentTracks.useQuery;
|
|
1070
|
+
/** Generated alias around `trpc.pipelineAnalytics.listGroups.useQuery`. */
|
|
1071
|
+
export declare const usePipelineAnalyticsListGroups: typeof trpc.pipelineAnalytics.listGroups.useQuery;
|
|
1072
|
+
/** Generated alias around `trpc.pipelineAnalytics.getGroup.useQuery`. */
|
|
1073
|
+
export declare const usePipelineAnalyticsGetGroup: typeof trpc.pipelineAnalytics.getGroup.useQuery;
|
|
1070
1074
|
/** Generated alias around `trpc.pipelineAnalytics.clearTracks.useMutation`. */
|
|
1071
1075
|
export declare const usePipelineAnalyticsClearTracks: typeof trpc.pipelineAnalytics.clearTracks.useMutation;
|
|
1072
1076
|
/** Generated alias around `trpc.pipelineAnalytics.getMotionEvents.useQuery`. */
|
package/dist/index.cjs
CHANGED
|
@@ -5981,6 +5981,10 @@ var usePipelineAnalyticsGetTrack = trpc.pipelineAnalytics.getTrack.useQuery;
|
|
|
5981
5981
|
var usePipelineAnalyticsListTracks = trpc.pipelineAnalytics.listTracks.useQuery;
|
|
5982
5982
|
/** Generated alias around `trpc.pipelineAnalytics.listRecentTracks.useQuery`. */
|
|
5983
5983
|
var usePipelineAnalyticsListRecentTracks = trpc.pipelineAnalytics.listRecentTracks.useQuery;
|
|
5984
|
+
/** Generated alias around `trpc.pipelineAnalytics.listGroups.useQuery`. */
|
|
5985
|
+
var usePipelineAnalyticsListGroups = trpc.pipelineAnalytics.listGroups.useQuery;
|
|
5986
|
+
/** Generated alias around `trpc.pipelineAnalytics.getGroup.useQuery`. */
|
|
5987
|
+
var usePipelineAnalyticsGetGroup = trpc.pipelineAnalytics.getGroup.useQuery;
|
|
5984
5988
|
/** Generated alias around `trpc.pipelineAnalytics.clearTracks.useMutation`. */
|
|
5985
5989
|
var usePipelineAnalyticsClearTracks = trpc.pipelineAnalytics.clearTracks.useMutation;
|
|
5986
5990
|
/** Generated alias around `trpc.pipelineAnalytics.getMotionEvents.useQuery`. */
|
|
@@ -21865,35 +21869,45 @@ function GroupedModelSelector({ catalog, value, onChange, disabled }) {
|
|
|
21865
21869
|
}
|
|
21866
21870
|
//#endregion
|
|
21867
21871
|
//#region src/composites/model-picker.tsx
|
|
21872
|
+
var PROVIDER_LABEL = {
|
|
21873
|
+
camstack: "CamStack",
|
|
21874
|
+
frigate: "Frigate",
|
|
21875
|
+
scrypted: "Scrypted",
|
|
21876
|
+
custom: "Custom"
|
|
21877
|
+
};
|
|
21878
|
+
function providerOf(model) {
|
|
21879
|
+
return model.provider ?? "camstack";
|
|
21880
|
+
}
|
|
21868
21881
|
/**
|
|
21869
21882
|
* Shared model picker — the ONE model-selection control across the app.
|
|
21870
21883
|
*
|
|
21871
|
-
*
|
|
21872
|
-
*
|
|
21873
|
-
*
|
|
21874
|
-
*
|
|
21875
|
-
*
|
|
21876
|
-
*
|
|
21877
|
-
* views. A pinned custom model hides the grouped catalog entirely (both used
|
|
21878
|
-
* to render, and the grouped picker highlighted a family that was NOT the
|
|
21879
|
-
* selection); while a catalog model is pinned the custom list stays behind an
|
|
21880
|
-
* explicit affordance. A legacy/removed pin is surfaced with an explicit
|
|
21881
|
-
* banner rather than a silently mis-highlighted chip.
|
|
21882
|
-
*
|
|
21883
|
-
* Used by the pipeline stepper (`PipelineStep`), the agent/device step editor
|
|
21884
|
-
* (`AgentStepEditor`), and the benchmark — so the picker looks identical
|
|
21885
|
-
* everywhere. `value === ''` renders nothing selected (callers that support an
|
|
21886
|
-
* "Auto / node default" mode own that affordance and hide this picker while it
|
|
21887
|
-
* is active).
|
|
21884
|
+
* Provider first (CamStack / Frigate / Scrypted / Custom), then inside that
|
|
21885
|
+
* catalog the grouped Family→Tier→Variant selector when entries declare
|
|
21886
|
+
* `group`, else a flat `<select>`. The persisted value stays the flat model
|
|
21887
|
+
* id. `value === ''` renders nothing selected (callers that support an
|
|
21888
|
+
* "Auto / node default" mode own that affordance and hide this picker while
|
|
21889
|
+
* it is active).
|
|
21888
21890
|
*/
|
|
21889
21891
|
function ModelPicker({ models, value, onChange, disabled }) {
|
|
21890
|
-
const
|
|
21891
|
-
|
|
21892
|
-
|
|
21893
|
-
|
|
21892
|
+
const byProvider = (0, react$1.useMemo)(() => {
|
|
21893
|
+
const map = /* @__PURE__ */ new Map();
|
|
21894
|
+
for (const m of models) {
|
|
21895
|
+
const provider = providerOf(m);
|
|
21896
|
+
const list = map.get(provider);
|
|
21897
|
+
if (list) list.push(m);
|
|
21898
|
+
else map.set(provider, [m]);
|
|
21899
|
+
}
|
|
21900
|
+
return map;
|
|
21901
|
+
}, [models]);
|
|
21902
|
+
const presentProviders = (0, react$1.useMemo)(() => _camstack_types.MODEL_PROVIDER_IDS.filter((id) => (byProvider.get(id)?.length ?? 0) > 0), [byProvider]);
|
|
21903
|
+
const defaultProvider = (0, react$1.useMemo)(() => {
|
|
21904
|
+
const pinned = models.find((m) => m.id === value);
|
|
21905
|
+
return pinned ? providerOf(pinned) : void 0;
|
|
21906
|
+
}, [models, value]) ?? (presentProviders.includes("camstack") ? "camstack" : presentProviders[0] ?? "camstack");
|
|
21907
|
+
const [provider, setProvider] = (0, react$1.useState)(defaultProvider);
|
|
21894
21908
|
(0, react$1.useEffect)(() => {
|
|
21895
|
-
|
|
21896
|
-
}, [
|
|
21909
|
+
setProvider(defaultProvider);
|
|
21910
|
+
}, [defaultProvider]);
|
|
21897
21911
|
const unresolvedBanner = value !== "" && !models.some((m) => m.id === value) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
21898
21912
|
className: "rounded border border-amber-500/40 bg-amber-500/10 px-2 py-1.5 text-[10px] text-amber-300",
|
|
21899
21913
|
children: [
|
|
@@ -21905,6 +21919,9 @@ function ModelPicker({ models, value, onChange, disabled }) {
|
|
|
21905
21919
|
") is a legacy/removed model — no longer offered below. Pick a replacement to change it; Save persists whatever is selected here."
|
|
21906
21920
|
]
|
|
21907
21921
|
});
|
|
21922
|
+
const scoped = byProvider.get(provider) ?? [];
|
|
21923
|
+
const grouped = scoped.filter((m) => m.group !== void 0);
|
|
21924
|
+
const ungrouped = scoped.filter((m) => m.group === void 0);
|
|
21908
21925
|
const flatSelect = (opts, selectPlaceholder) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
|
|
21909
21926
|
disabled,
|
|
21910
21927
|
className: "w-full bg-surface border border-border rounded px-2 py-1 text-xs disabled:opacity-50",
|
|
@@ -21919,49 +21936,30 @@ function ModelPicker({ models, value, onChange, disabled }) {
|
|
|
21919
21936
|
children: m.name
|
|
21920
21937
|
}, m.id))]
|
|
21921
21938
|
});
|
|
21922
|
-
const switchButton = (label, target) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
21923
|
-
type: "button",
|
|
21924
|
-
disabled,
|
|
21925
|
-
onClick: () => setView(target),
|
|
21926
|
-
className: "text-[10px] text-primary hover:underline disabled:opacity-50",
|
|
21927
|
-
children: label
|
|
21928
|
-
});
|
|
21929
|
-
if (!hasGroups) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
21930
|
-
className: "space-y-2",
|
|
21931
|
-
children: [unresolvedBanner, flatSelect(models, "— select a model —")]
|
|
21932
|
-
});
|
|
21933
|
-
if (view === "custom" && ungrouped.length > 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
21934
|
-
className: "space-y-2",
|
|
21935
|
-
children: [
|
|
21936
|
-
unresolvedBanner,
|
|
21937
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
21938
|
-
className: "flex items-center justify-between",
|
|
21939
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
21940
|
-
className: "text-[10px] uppercase tracking-widest text-foreground-subtle",
|
|
21941
|
-
children: "Custom / ungrouped model"
|
|
21942
|
-
}), switchButton("Choose from catalog instead", "catalog")]
|
|
21943
|
-
}),
|
|
21944
|
-
flatSelect(ungrouped, "— custom / ungrouped model —"),
|
|
21945
|
-
customSelected && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
21946
|
-
className: "text-[10px] text-foreground-subtle",
|
|
21947
|
-
children: "A custom model is pinned — the catalog selection is hidden while it is active."
|
|
21948
|
-
})
|
|
21949
|
-
]
|
|
21950
|
-
});
|
|
21951
21939
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
21952
21940
|
className: "space-y-3",
|
|
21953
21941
|
children: [
|
|
21954
21942
|
unresolvedBanner,
|
|
21955
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
21956
|
-
|
|
21943
|
+
presentProviders.length > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
21944
|
+
className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
|
|
21945
|
+
children: "Provider"
|
|
21946
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
21947
|
+
className: "flex flex-wrap gap-1.5",
|
|
21948
|
+
children: presentProviders.map((id) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
21949
|
+
type: "button",
|
|
21950
|
+
disabled,
|
|
21951
|
+
onClick: () => setProvider(id),
|
|
21952
|
+
className: cn("rounded-full px-3 py-1 text-[11px] font-medium border transition-colors", id === provider ? "border-primary bg-primary/10 text-primary" : "border-border bg-background text-foreground-subtle hover:text-foreground hover:border-foreground-subtle/40", disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"),
|
|
21953
|
+
children: PROVIDER_LABEL[id]
|
|
21954
|
+
}, id))
|
|
21955
|
+
})] }),
|
|
21956
|
+
grouped.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(GroupedModelSelector, {
|
|
21957
|
+
catalog: grouped,
|
|
21957
21958
|
value,
|
|
21958
21959
|
onChange,
|
|
21959
21960
|
disabled
|
|
21960
21961
|
}),
|
|
21961
|
-
ungrouped.length > 0 &&
|
|
21962
|
-
className: "flex justify-end",
|
|
21963
|
-
children: switchButton("Use a custom model…", "custom")
|
|
21964
|
-
})
|
|
21962
|
+
ungrouped.length > 0 && flatSelect(ungrouped, grouped.length > 0 ? "— other models —" : "— select a model —")
|
|
21965
21963
|
]
|
|
21966
21964
|
});
|
|
21967
21965
|
}
|
|
@@ -24268,10 +24266,25 @@ function nextReconnectAction(attempt, random = Math.random) {
|
|
|
24268
24266
|
* Burst-download the hub's `/adaptive-probe` blob and return Mbps.
|
|
24269
24267
|
* Used as `hints.downlinkMbps` so adaptive selection is based on a measured
|
|
24270
24268
|
* path, not viewport size or IP class. Failures return null (caller keeps
|
|
24271
|
-
* the default-
|
|
24269
|
+
* the default-low / ceiling path and may stay on the lowest rung).
|
|
24272
24270
|
*/
|
|
24273
24271
|
var ADAPTIVE_PROBE_PATH = "/adaptive-probe";
|
|
24274
24272
|
var ADAPTIVE_PROBE_TIMEOUT_MS = 2500;
|
|
24273
|
+
/** Map a measured downlink onto the adaptive ladder. Mid is a real rung. */
|
|
24274
|
+
function suggestedAdaptiveTier(mbps) {
|
|
24275
|
+
if (mbps >= 8) return "high";
|
|
24276
|
+
if (mbps >= 2.5) return "mid";
|
|
24277
|
+
return "low";
|
|
24278
|
+
}
|
|
24279
|
+
/** First connect never carries a cached probe — the broker starts lowest. */
|
|
24280
|
+
function stripDownlinkForColdStart(hints) {
|
|
24281
|
+
const { downlinkMbps: _ignored, ...rest } = hints;
|
|
24282
|
+
return rest;
|
|
24283
|
+
}
|
|
24284
|
+
/** After a probe, only mid/high justify a make-before-break climb. */
|
|
24285
|
+
function shouldUpgradeAfterProbe(mbps) {
|
|
24286
|
+
return suggestedAdaptiveTier(mbps) !== "low";
|
|
24287
|
+
}
|
|
24275
24288
|
async function measureDownlinkMbps(origin, deps) {
|
|
24276
24289
|
const base = origin.replace(/\/+$/, "");
|
|
24277
24290
|
const ctrl = new AbortController();
|
|
@@ -24370,6 +24383,14 @@ async function measuredDownlinkMbps() {
|
|
|
24370
24383
|
};
|
|
24371
24384
|
return mbps;
|
|
24372
24385
|
}
|
|
24386
|
+
function mergePlayerHints(autoHints, override, downlinkMbps, coldStart) {
|
|
24387
|
+
const merged = {
|
|
24388
|
+
...autoHints,
|
|
24389
|
+
...downlinkMbps !== void 0 ? { downlinkMbps } : {},
|
|
24390
|
+
...override
|
|
24391
|
+
};
|
|
24392
|
+
return coldStart ? stripDownlinkForColdStart(merged) : merged;
|
|
24393
|
+
}
|
|
24373
24394
|
var FIRST_FRAME_TIMEOUT_MS = 8e3;
|
|
24374
24395
|
function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, muted: initialMuted = true, showControls = true, showStats = false, onPlaybackStats, onClientNetworkSample, onConnectTiming, className = "", onStateChange, onError, onReconnectAttempt, overlay, createSession, sendAnswer, handleOffer, getIceServers, addIceCandidate, getIceCandidates, closeSession, getSessionState, reoffer, posterUrl, hintsOverride, reconnectSignal, onControlChannel, onVideoElement }) {
|
|
24375
24396
|
const videoRef = (0, react$1.useRef)(null);
|
|
@@ -24402,6 +24423,8 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
24402
24423
|
/** Highest `pendingRenegotiation.epoch` already acted on — act at most once
|
|
24403
24424
|
* per epoch so a poll that re-reports the same pending change is a no-op. */
|
|
24404
24425
|
const lastEpochRef = (0, react$1.useRef)(0);
|
|
24426
|
+
/** True once this adaptive session already climbed after the cold-start probe. */
|
|
24427
|
+
const probeUpgradeRef = (0, react$1.useRef)(false);
|
|
24405
24428
|
/** True while a background re-offer PeerConnection is being built — guards
|
|
24406
24429
|
* against a second poll firing a parallel renegotiation. */
|
|
24407
24430
|
const renegotiatingRef = (0, react$1.useRef)(false);
|
|
@@ -24515,7 +24538,7 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
24515
24538
|
tick();
|
|
24516
24539
|
}, SESSION_STATE_POLL_MS);
|
|
24517
24540
|
}, [getSessionState, reoffer]);
|
|
24518
|
-
const connectServerOffer = (0, react$1.useCallback)(async (seamless = false) => {
|
|
24541
|
+
const connectServerOffer = (0, react$1.useCallback)(async (seamless = false, withDownlink = seamless) => {
|
|
24519
24542
|
if (!mountedRef.current || !createSession || !sendAnswer) return;
|
|
24520
24543
|
const oldPc = seamless ? pcRef.current : null;
|
|
24521
24544
|
const oldSessions = seamless ? new Set(sessionIdsRef.current) : null;
|
|
@@ -24525,14 +24548,16 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
24525
24548
|
const abort = new AbortController();
|
|
24526
24549
|
connectAbortRef.current = abort;
|
|
24527
24550
|
try {
|
|
24528
|
-
const
|
|
24529
|
-
const
|
|
24530
|
-
const { sessionId, sdpOffer, iceServers } = await createSession({
|
|
24531
|
-
...autoHints,
|
|
24532
|
-
...downlinkMbps !== void 0 ? { downlinkMbps } : {},
|
|
24533
|
-
...hintsOverride
|
|
24534
|
-
});
|
|
24551
|
+
const probePromise = !withDownlink ? measuredDownlinkMbps() : void 0;
|
|
24552
|
+
const { sessionId, sdpOffer, iceServers } = await createSession(mergePlayerHints(computeClientHints(containerRef.current), hintsOverride, withDownlink ? await measuredDownlinkMbps() : void 0, !withDownlink));
|
|
24535
24553
|
sessionIdsRef.current.add(sessionId);
|
|
24554
|
+
if (probePromise !== void 0) probePromise.then((mbps) => {
|
|
24555
|
+
if (mbps === void 0 || !shouldUpgradeAfterProbe(mbps)) return;
|
|
24556
|
+
if (!mountedRef.current || abort.signal.aborted) return;
|
|
24557
|
+
if (probeUpgradeRef.current) return;
|
|
24558
|
+
probeUpgradeRef.current = true;
|
|
24559
|
+
connectServerOffer(true, true);
|
|
24560
|
+
});
|
|
24536
24561
|
if (!mountedRef.current || abort.signal.aborted) {
|
|
24537
24562
|
closeSession?.(sessionId).catch(() => {});
|
|
24538
24563
|
sessionIdsRef.current.delete(sessionId);
|
|
@@ -24702,7 +24727,7 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
24702
24727
|
updateState,
|
|
24703
24728
|
onError
|
|
24704
24729
|
]);
|
|
24705
|
-
const connectClientOffer = (0, react$1.useCallback)(async (seamless = false) => {
|
|
24730
|
+
const connectClientOffer = (0, react$1.useCallback)(async (seamless = false, withDownlink = seamless) => {
|
|
24706
24731
|
if (!mountedRef.current || !handleOffer) return;
|
|
24707
24732
|
const oldPc = seamless ? pcRef.current : null;
|
|
24708
24733
|
const oldSessions = seamless ? new Set(sessionIdsRef.current) : null;
|
|
@@ -24715,6 +24740,7 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
24715
24740
|
const ms = () => Math.round(performance.now() - t0);
|
|
24716
24741
|
const timing = {};
|
|
24717
24742
|
try {
|
|
24743
|
+
const probePromise = !withDownlink ? measuredDownlinkMbps() : void 0;
|
|
24718
24744
|
const iceServers = await getIceServers?.();
|
|
24719
24745
|
timing.iceServersMs = ms();
|
|
24720
24746
|
if (!mountedRef.current || abort.signal.aborted) return;
|
|
@@ -24822,17 +24848,20 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
24822
24848
|
await pc.setLocalDescription(offer);
|
|
24823
24849
|
timing.localSetMs = ms();
|
|
24824
24850
|
if (!mountedRef.current || abort.signal.aborted) return;
|
|
24825
|
-
const downlinkMbps = await measuredDownlinkMbps();
|
|
24826
|
-
const clientOfferHints =
|
|
24827
|
-
...computeClientHints(containerRef.current),
|
|
24828
|
-
...downlinkMbps !== void 0 ? { downlinkMbps } : {},
|
|
24829
|
-
...hintsOverride
|
|
24830
|
-
};
|
|
24851
|
+
const downlinkMbps = withDownlink ? await measuredDownlinkMbps() : void 0;
|
|
24852
|
+
const clientOfferHints = mergePlayerHints(computeClientHints(containerRef.current), hintsOverride, downlinkMbps, !withDownlink);
|
|
24831
24853
|
const signalingStart = ms();
|
|
24832
24854
|
const { sessionId: sid, sdpAnswer } = await handleOffer(pc.localDescription?.sdp ?? offer.sdp ?? "", void 0, clientOfferHints);
|
|
24833
24855
|
timing.signalingRttMs = ms() - signalingStart;
|
|
24834
24856
|
sessionId = sid;
|
|
24835
24857
|
sessionIdsRef.current.add(sid);
|
|
24858
|
+
if (probePromise !== void 0) probePromise.then((mbps) => {
|
|
24859
|
+
if (mbps === void 0 || !shouldUpgradeAfterProbe(mbps)) return;
|
|
24860
|
+
if (!mountedRef.current || abort.signal.aborted) return;
|
|
24861
|
+
if (probeUpgradeRef.current) return;
|
|
24862
|
+
probeUpgradeRef.current = true;
|
|
24863
|
+
connectClientOffer(true, true);
|
|
24864
|
+
});
|
|
24836
24865
|
activeSessionIdRef.current = sid;
|
|
24837
24866
|
if (!mountedRef.current || abort.signal.aborted) {
|
|
24838
24867
|
closeSession?.(sid).catch(() => {});
|
|
@@ -25143,6 +25172,7 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
25143
25172
|
if (!serverChanged && !keyChanged) return;
|
|
25144
25173
|
if (!mountedRef.current) return;
|
|
25145
25174
|
reconnectAttemptsRef.current = 0;
|
|
25175
|
+
probeUpgradeRef.current = false;
|
|
25146
25176
|
if (serverChanged) {
|
|
25147
25177
|
cleanup();
|
|
25148
25178
|
connect();
|
|
@@ -49695,6 +49725,7 @@ exports.usePipelineAnalyticsGetDeviceSettingsContribution = usePipelineAnalytics
|
|
|
49695
49725
|
exports.usePipelineAnalyticsGetEventDensity = usePipelineAnalyticsGetEventDensity;
|
|
49696
49726
|
exports.usePipelineAnalyticsGetEventMedia = usePipelineAnalyticsGetEventMedia;
|
|
49697
49727
|
exports.usePipelineAnalyticsGetEventStoreFootprint = usePipelineAnalyticsGetEventStoreFootprint;
|
|
49728
|
+
exports.usePipelineAnalyticsGetGroup = usePipelineAnalyticsGetGroup;
|
|
49698
49729
|
exports.usePipelineAnalyticsGetKeyEvents = usePipelineAnalyticsGetKeyEvents;
|
|
49699
49730
|
exports.usePipelineAnalyticsGetMotionEvents = usePipelineAnalyticsGetMotionEvents;
|
|
49700
49731
|
exports.usePipelineAnalyticsGetObjectEmbeddingRebuildStatus = usePipelineAnalyticsGetObjectEmbeddingRebuildStatus;
|
|
@@ -49709,6 +49740,7 @@ exports.usePipelineAnalyticsGetTrainingExportSummary = usePipelineAnalyticsGetTr
|
|
|
49709
49740
|
exports.usePipelineAnalyticsGetTrainingExportUrl = usePipelineAnalyticsGetTrainingExportUrl;
|
|
49710
49741
|
exports.usePipelineAnalyticsListEventKinds = usePipelineAnalyticsListEventKinds;
|
|
49711
49742
|
exports.usePipelineAnalyticsListEventKindsBatch = usePipelineAnalyticsListEventKindsBatch;
|
|
49743
|
+
exports.usePipelineAnalyticsListGroups = usePipelineAnalyticsListGroups;
|
|
49712
49744
|
exports.usePipelineAnalyticsListOpsLog = usePipelineAnalyticsListOpsLog;
|
|
49713
49745
|
exports.usePipelineAnalyticsListRecentTracks = usePipelineAnalyticsListRecentTracks;
|
|
49714
49746
|
exports.usePipelineAnalyticsListRetrainAnnotations = usePipelineAnalyticsListRetrainAnnotations;
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ import * as __mfHostReactDOMClient from "react-dom/client";
|
|
|
13
13
|
import { createRoot } from "react-dom/client";
|
|
14
14
|
import * as __mfHostTrpcClient from "@trpc/client";
|
|
15
15
|
import { createTRPCClient, createWSClient, httpLink, splitLink, wsLink } from "@trpc/client";
|
|
16
|
-
import { ALL_CAPABILITY_DEFINITIONS, CAM_PROFILE_ORDER, DEFAULT_EVENTS_BAND_BUFFER_SEC, DEFAULT_EVENT_COLOR, DEVICE_TYPE_CONTROL_KIND, DeviceExportStatusSchema, DeviceFeature, DeviceRole, DeviceType, EVENT_TAXONOMY, EventCategory, ExposedDeviceSchema, KNOWN_CAP_NAMES, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, RecordingConfigSchema, RecordingStatusSchema, SourceInfoSchema, TIMEZONES, buildModelVariantGroups, canConvertUnit, clusterStepSettingFieldsFor, createDeviceProxy, createLazyTrpcSource, createSliceHandle, deriveRecordingMode, describeModelVariant, findTimezone, resolveDeviceControlKind, resolveRecordingProfiles, resolveVariantModelId, resolveViewableDeviceIds, selectAssignedProfileSlots, tryConvertUnit } from "@camstack/types";
|
|
16
|
+
import { ALL_CAPABILITY_DEFINITIONS, CAM_PROFILE_ORDER, DEFAULT_EVENTS_BAND_BUFFER_SEC, DEFAULT_EVENT_COLOR, DEVICE_TYPE_CONTROL_KIND, DeviceExportStatusSchema, DeviceFeature, DeviceRole, DeviceType, EVENT_TAXONOMY, EventCategory, ExposedDeviceSchema, KNOWN_CAP_NAMES, MODEL_PROVIDER_IDS, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, RecordingConfigSchema, RecordingStatusSchema, SourceInfoSchema, TIMEZONES, buildModelVariantGroups, canConvertUnit, clusterStepSettingFieldsFor, createDeviceProxy, createLazyTrpcSource, createSliceHandle, deriveRecordingMode, describeModelVariant, findTimezone, resolveDeviceControlKind, resolveRecordingProfiles, resolveVariantModelId, resolveViewableDeviceIds, selectAssignedProfileSlots, tryConvertUnit } from "@camstack/types";
|
|
17
17
|
import { createSystem } from "@camstack/sdk";
|
|
18
18
|
import { z } from "zod";
|
|
19
19
|
//#region node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
@@ -5957,6 +5957,10 @@ var usePipelineAnalyticsGetTrack = trpc.pipelineAnalytics.getTrack.useQuery;
|
|
|
5957
5957
|
var usePipelineAnalyticsListTracks = trpc.pipelineAnalytics.listTracks.useQuery;
|
|
5958
5958
|
/** Generated alias around `trpc.pipelineAnalytics.listRecentTracks.useQuery`. */
|
|
5959
5959
|
var usePipelineAnalyticsListRecentTracks = trpc.pipelineAnalytics.listRecentTracks.useQuery;
|
|
5960
|
+
/** Generated alias around `trpc.pipelineAnalytics.listGroups.useQuery`. */
|
|
5961
|
+
var usePipelineAnalyticsListGroups = trpc.pipelineAnalytics.listGroups.useQuery;
|
|
5962
|
+
/** Generated alias around `trpc.pipelineAnalytics.getGroup.useQuery`. */
|
|
5963
|
+
var usePipelineAnalyticsGetGroup = trpc.pipelineAnalytics.getGroup.useQuery;
|
|
5960
5964
|
/** Generated alias around `trpc.pipelineAnalytics.clearTracks.useMutation`. */
|
|
5961
5965
|
var usePipelineAnalyticsClearTracks = trpc.pipelineAnalytics.clearTracks.useMutation;
|
|
5962
5966
|
/** Generated alias around `trpc.pipelineAnalytics.getMotionEvents.useQuery`. */
|
|
@@ -21841,35 +21845,45 @@ function GroupedModelSelector({ catalog, value, onChange, disabled }) {
|
|
|
21841
21845
|
}
|
|
21842
21846
|
//#endregion
|
|
21843
21847
|
//#region src/composites/model-picker.tsx
|
|
21848
|
+
var PROVIDER_LABEL = {
|
|
21849
|
+
camstack: "CamStack",
|
|
21850
|
+
frigate: "Frigate",
|
|
21851
|
+
scrypted: "Scrypted",
|
|
21852
|
+
custom: "Custom"
|
|
21853
|
+
};
|
|
21854
|
+
function providerOf(model) {
|
|
21855
|
+
return model.provider ?? "camstack";
|
|
21856
|
+
}
|
|
21844
21857
|
/**
|
|
21845
21858
|
* Shared model picker — the ONE model-selection control across the app.
|
|
21846
21859
|
*
|
|
21847
|
-
*
|
|
21848
|
-
*
|
|
21849
|
-
*
|
|
21850
|
-
*
|
|
21851
|
-
*
|
|
21852
|
-
*
|
|
21853
|
-
* views. A pinned custom model hides the grouped catalog entirely (both used
|
|
21854
|
-
* to render, and the grouped picker highlighted a family that was NOT the
|
|
21855
|
-
* selection); while a catalog model is pinned the custom list stays behind an
|
|
21856
|
-
* explicit affordance. A legacy/removed pin is surfaced with an explicit
|
|
21857
|
-
* banner rather than a silently mis-highlighted chip.
|
|
21858
|
-
*
|
|
21859
|
-
* Used by the pipeline stepper (`PipelineStep`), the agent/device step editor
|
|
21860
|
-
* (`AgentStepEditor`), and the benchmark — so the picker looks identical
|
|
21861
|
-
* everywhere. `value === ''` renders nothing selected (callers that support an
|
|
21862
|
-
* "Auto / node default" mode own that affordance and hide this picker while it
|
|
21863
|
-
* is active).
|
|
21860
|
+
* Provider first (CamStack / Frigate / Scrypted / Custom), then inside that
|
|
21861
|
+
* catalog the grouped Family→Tier→Variant selector when entries declare
|
|
21862
|
+
* `group`, else a flat `<select>`. The persisted value stays the flat model
|
|
21863
|
+
* id. `value === ''` renders nothing selected (callers that support an
|
|
21864
|
+
* "Auto / node default" mode own that affordance and hide this picker while
|
|
21865
|
+
* it is active).
|
|
21864
21866
|
*/
|
|
21865
21867
|
function ModelPicker({ models, value, onChange, disabled }) {
|
|
21866
|
-
const
|
|
21867
|
-
|
|
21868
|
-
|
|
21869
|
-
|
|
21868
|
+
const byProvider = useMemo(() => {
|
|
21869
|
+
const map = /* @__PURE__ */ new Map();
|
|
21870
|
+
for (const m of models) {
|
|
21871
|
+
const provider = providerOf(m);
|
|
21872
|
+
const list = map.get(provider);
|
|
21873
|
+
if (list) list.push(m);
|
|
21874
|
+
else map.set(provider, [m]);
|
|
21875
|
+
}
|
|
21876
|
+
return map;
|
|
21877
|
+
}, [models]);
|
|
21878
|
+
const presentProviders = useMemo(() => MODEL_PROVIDER_IDS.filter((id) => (byProvider.get(id)?.length ?? 0) > 0), [byProvider]);
|
|
21879
|
+
const defaultProvider = useMemo(() => {
|
|
21880
|
+
const pinned = models.find((m) => m.id === value);
|
|
21881
|
+
return pinned ? providerOf(pinned) : void 0;
|
|
21882
|
+
}, [models, value]) ?? (presentProviders.includes("camstack") ? "camstack" : presentProviders[0] ?? "camstack");
|
|
21883
|
+
const [provider, setProvider] = useState(defaultProvider);
|
|
21870
21884
|
useEffect(() => {
|
|
21871
|
-
|
|
21872
|
-
}, [
|
|
21885
|
+
setProvider(defaultProvider);
|
|
21886
|
+
}, [defaultProvider]);
|
|
21873
21887
|
const unresolvedBanner = value !== "" && !models.some((m) => m.id === value) && /* @__PURE__ */ jsxs("div", {
|
|
21874
21888
|
className: "rounded border border-amber-500/40 bg-amber-500/10 px-2 py-1.5 text-[10px] text-amber-300",
|
|
21875
21889
|
children: [
|
|
@@ -21881,6 +21895,9 @@ function ModelPicker({ models, value, onChange, disabled }) {
|
|
|
21881
21895
|
") is a legacy/removed model — no longer offered below. Pick a replacement to change it; Save persists whatever is selected here."
|
|
21882
21896
|
]
|
|
21883
21897
|
});
|
|
21898
|
+
const scoped = byProvider.get(provider) ?? [];
|
|
21899
|
+
const grouped = scoped.filter((m) => m.group !== void 0);
|
|
21900
|
+
const ungrouped = scoped.filter((m) => m.group === void 0);
|
|
21884
21901
|
const flatSelect = (opts, selectPlaceholder) => /* @__PURE__ */ jsxs("select", {
|
|
21885
21902
|
disabled,
|
|
21886
21903
|
className: "w-full bg-surface border border-border rounded px-2 py-1 text-xs disabled:opacity-50",
|
|
@@ -21895,49 +21912,30 @@ function ModelPicker({ models, value, onChange, disabled }) {
|
|
|
21895
21912
|
children: m.name
|
|
21896
21913
|
}, m.id))]
|
|
21897
21914
|
});
|
|
21898
|
-
const switchButton = (label, target) => /* @__PURE__ */ jsx("button", {
|
|
21899
|
-
type: "button",
|
|
21900
|
-
disabled,
|
|
21901
|
-
onClick: () => setView(target),
|
|
21902
|
-
className: "text-[10px] text-primary hover:underline disabled:opacity-50",
|
|
21903
|
-
children: label
|
|
21904
|
-
});
|
|
21905
|
-
if (!hasGroups) return /* @__PURE__ */ jsxs("div", {
|
|
21906
|
-
className: "space-y-2",
|
|
21907
|
-
children: [unresolvedBanner, flatSelect(models, "— select a model —")]
|
|
21908
|
-
});
|
|
21909
|
-
if (view === "custom" && ungrouped.length > 0) return /* @__PURE__ */ jsxs("div", {
|
|
21910
|
-
className: "space-y-2",
|
|
21911
|
-
children: [
|
|
21912
|
-
unresolvedBanner,
|
|
21913
|
-
/* @__PURE__ */ jsxs("div", {
|
|
21914
|
-
className: "flex items-center justify-between",
|
|
21915
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
21916
|
-
className: "text-[10px] uppercase tracking-widest text-foreground-subtle",
|
|
21917
|
-
children: "Custom / ungrouped model"
|
|
21918
|
-
}), switchButton("Choose from catalog instead", "catalog")]
|
|
21919
|
-
}),
|
|
21920
|
-
flatSelect(ungrouped, "— custom / ungrouped model —"),
|
|
21921
|
-
customSelected && /* @__PURE__ */ jsx("div", {
|
|
21922
|
-
className: "text-[10px] text-foreground-subtle",
|
|
21923
|
-
children: "A custom model is pinned — the catalog selection is hidden while it is active."
|
|
21924
|
-
})
|
|
21925
|
-
]
|
|
21926
|
-
});
|
|
21927
21915
|
return /* @__PURE__ */ jsxs("div", {
|
|
21928
21916
|
className: "space-y-3",
|
|
21929
21917
|
children: [
|
|
21930
21918
|
unresolvedBanner,
|
|
21931
|
-
/* @__PURE__ */ jsx(
|
|
21932
|
-
|
|
21919
|
+
presentProviders.length > 1 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
21920
|
+
className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
|
|
21921
|
+
children: "Provider"
|
|
21922
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
21923
|
+
className: "flex flex-wrap gap-1.5",
|
|
21924
|
+
children: presentProviders.map((id) => /* @__PURE__ */ jsx("button", {
|
|
21925
|
+
type: "button",
|
|
21926
|
+
disabled,
|
|
21927
|
+
onClick: () => setProvider(id),
|
|
21928
|
+
className: cn("rounded-full px-3 py-1 text-[11px] font-medium border transition-colors", id === provider ? "border-primary bg-primary/10 text-primary" : "border-border bg-background text-foreground-subtle hover:text-foreground hover:border-foreground-subtle/40", disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"),
|
|
21929
|
+
children: PROVIDER_LABEL[id]
|
|
21930
|
+
}, id))
|
|
21931
|
+
})] }),
|
|
21932
|
+
grouped.length > 0 && /* @__PURE__ */ jsx(GroupedModelSelector, {
|
|
21933
|
+
catalog: grouped,
|
|
21933
21934
|
value,
|
|
21934
21935
|
onChange,
|
|
21935
21936
|
disabled
|
|
21936
21937
|
}),
|
|
21937
|
-
ungrouped.length > 0 &&
|
|
21938
|
-
className: "flex justify-end",
|
|
21939
|
-
children: switchButton("Use a custom model…", "custom")
|
|
21940
|
-
})
|
|
21938
|
+
ungrouped.length > 0 && flatSelect(ungrouped, grouped.length > 0 ? "— other models —" : "— select a model —")
|
|
21941
21939
|
]
|
|
21942
21940
|
});
|
|
21943
21941
|
}
|
|
@@ -24244,10 +24242,25 @@ function nextReconnectAction(attempt, random = Math.random) {
|
|
|
24244
24242
|
* Burst-download the hub's `/adaptive-probe` blob and return Mbps.
|
|
24245
24243
|
* Used as `hints.downlinkMbps` so adaptive selection is based on a measured
|
|
24246
24244
|
* path, not viewport size or IP class. Failures return null (caller keeps
|
|
24247
|
-
* the default-
|
|
24245
|
+
* the default-low / ceiling path and may stay on the lowest rung).
|
|
24248
24246
|
*/
|
|
24249
24247
|
var ADAPTIVE_PROBE_PATH = "/adaptive-probe";
|
|
24250
24248
|
var ADAPTIVE_PROBE_TIMEOUT_MS = 2500;
|
|
24249
|
+
/** Map a measured downlink onto the adaptive ladder. Mid is a real rung. */
|
|
24250
|
+
function suggestedAdaptiveTier(mbps) {
|
|
24251
|
+
if (mbps >= 8) return "high";
|
|
24252
|
+
if (mbps >= 2.5) return "mid";
|
|
24253
|
+
return "low";
|
|
24254
|
+
}
|
|
24255
|
+
/** First connect never carries a cached probe — the broker starts lowest. */
|
|
24256
|
+
function stripDownlinkForColdStart(hints) {
|
|
24257
|
+
const { downlinkMbps: _ignored, ...rest } = hints;
|
|
24258
|
+
return rest;
|
|
24259
|
+
}
|
|
24260
|
+
/** After a probe, only mid/high justify a make-before-break climb. */
|
|
24261
|
+
function shouldUpgradeAfterProbe(mbps) {
|
|
24262
|
+
return suggestedAdaptiveTier(mbps) !== "low";
|
|
24263
|
+
}
|
|
24251
24264
|
async function measureDownlinkMbps(origin, deps) {
|
|
24252
24265
|
const base = origin.replace(/\/+$/, "");
|
|
24253
24266
|
const ctrl = new AbortController();
|
|
@@ -24346,6 +24359,14 @@ async function measuredDownlinkMbps() {
|
|
|
24346
24359
|
};
|
|
24347
24360
|
return mbps;
|
|
24348
24361
|
}
|
|
24362
|
+
function mergePlayerHints(autoHints, override, downlinkMbps, coldStart) {
|
|
24363
|
+
const merged = {
|
|
24364
|
+
...autoHints,
|
|
24365
|
+
...downlinkMbps !== void 0 ? { downlinkMbps } : {},
|
|
24366
|
+
...override
|
|
24367
|
+
};
|
|
24368
|
+
return coldStart ? stripDownlinkForColdStart(merged) : merged;
|
|
24369
|
+
}
|
|
24349
24370
|
var FIRST_FRAME_TIMEOUT_MS = 8e3;
|
|
24350
24371
|
function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, muted: initialMuted = true, showControls = true, showStats = false, onPlaybackStats, onClientNetworkSample, onConnectTiming, className = "", onStateChange, onError, onReconnectAttempt, overlay, createSession, sendAnswer, handleOffer, getIceServers, addIceCandidate, getIceCandidates, closeSession, getSessionState, reoffer, posterUrl, hintsOverride, reconnectSignal, onControlChannel, onVideoElement }) {
|
|
24351
24372
|
const videoRef = useRef(null);
|
|
@@ -24378,6 +24399,8 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
24378
24399
|
/** Highest `pendingRenegotiation.epoch` already acted on — act at most once
|
|
24379
24400
|
* per epoch so a poll that re-reports the same pending change is a no-op. */
|
|
24380
24401
|
const lastEpochRef = useRef(0);
|
|
24402
|
+
/** True once this adaptive session already climbed after the cold-start probe. */
|
|
24403
|
+
const probeUpgradeRef = useRef(false);
|
|
24381
24404
|
/** True while a background re-offer PeerConnection is being built — guards
|
|
24382
24405
|
* against a second poll firing a parallel renegotiation. */
|
|
24383
24406
|
const renegotiatingRef = useRef(false);
|
|
@@ -24491,7 +24514,7 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
24491
24514
|
tick();
|
|
24492
24515
|
}, SESSION_STATE_POLL_MS);
|
|
24493
24516
|
}, [getSessionState, reoffer]);
|
|
24494
|
-
const connectServerOffer = useCallback(async (seamless = false) => {
|
|
24517
|
+
const connectServerOffer = useCallback(async (seamless = false, withDownlink = seamless) => {
|
|
24495
24518
|
if (!mountedRef.current || !createSession || !sendAnswer) return;
|
|
24496
24519
|
const oldPc = seamless ? pcRef.current : null;
|
|
24497
24520
|
const oldSessions = seamless ? new Set(sessionIdsRef.current) : null;
|
|
@@ -24501,14 +24524,16 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
24501
24524
|
const abort = new AbortController();
|
|
24502
24525
|
connectAbortRef.current = abort;
|
|
24503
24526
|
try {
|
|
24504
|
-
const
|
|
24505
|
-
const
|
|
24506
|
-
const { sessionId, sdpOffer, iceServers } = await createSession({
|
|
24507
|
-
...autoHints,
|
|
24508
|
-
...downlinkMbps !== void 0 ? { downlinkMbps } : {},
|
|
24509
|
-
...hintsOverride
|
|
24510
|
-
});
|
|
24527
|
+
const probePromise = !withDownlink ? measuredDownlinkMbps() : void 0;
|
|
24528
|
+
const { sessionId, sdpOffer, iceServers } = await createSession(mergePlayerHints(computeClientHints(containerRef.current), hintsOverride, withDownlink ? await measuredDownlinkMbps() : void 0, !withDownlink));
|
|
24511
24529
|
sessionIdsRef.current.add(sessionId);
|
|
24530
|
+
if (probePromise !== void 0) probePromise.then((mbps) => {
|
|
24531
|
+
if (mbps === void 0 || !shouldUpgradeAfterProbe(mbps)) return;
|
|
24532
|
+
if (!mountedRef.current || abort.signal.aborted) return;
|
|
24533
|
+
if (probeUpgradeRef.current) return;
|
|
24534
|
+
probeUpgradeRef.current = true;
|
|
24535
|
+
connectServerOffer(true, true);
|
|
24536
|
+
});
|
|
24512
24537
|
if (!mountedRef.current || abort.signal.aborted) {
|
|
24513
24538
|
closeSession?.(sessionId).catch(() => {});
|
|
24514
24539
|
sessionIdsRef.current.delete(sessionId);
|
|
@@ -24678,7 +24703,7 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
24678
24703
|
updateState,
|
|
24679
24704
|
onError
|
|
24680
24705
|
]);
|
|
24681
|
-
const connectClientOffer = useCallback(async (seamless = false) => {
|
|
24706
|
+
const connectClientOffer = useCallback(async (seamless = false, withDownlink = seamless) => {
|
|
24682
24707
|
if (!mountedRef.current || !handleOffer) return;
|
|
24683
24708
|
const oldPc = seamless ? pcRef.current : null;
|
|
24684
24709
|
const oldSessions = seamless ? new Set(sessionIdsRef.current) : null;
|
|
@@ -24691,6 +24716,7 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
24691
24716
|
const ms = () => Math.round(performance.now() - t0);
|
|
24692
24717
|
const timing = {};
|
|
24693
24718
|
try {
|
|
24719
|
+
const probePromise = !withDownlink ? measuredDownlinkMbps() : void 0;
|
|
24694
24720
|
const iceServers = await getIceServers?.();
|
|
24695
24721
|
timing.iceServersMs = ms();
|
|
24696
24722
|
if (!mountedRef.current || abort.signal.aborted) return;
|
|
@@ -24798,17 +24824,20 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
24798
24824
|
await pc.setLocalDescription(offer);
|
|
24799
24825
|
timing.localSetMs = ms();
|
|
24800
24826
|
if (!mountedRef.current || abort.signal.aborted) return;
|
|
24801
|
-
const downlinkMbps = await measuredDownlinkMbps();
|
|
24802
|
-
const clientOfferHints =
|
|
24803
|
-
...computeClientHints(containerRef.current),
|
|
24804
|
-
...downlinkMbps !== void 0 ? { downlinkMbps } : {},
|
|
24805
|
-
...hintsOverride
|
|
24806
|
-
};
|
|
24827
|
+
const downlinkMbps = withDownlink ? await measuredDownlinkMbps() : void 0;
|
|
24828
|
+
const clientOfferHints = mergePlayerHints(computeClientHints(containerRef.current), hintsOverride, downlinkMbps, !withDownlink);
|
|
24807
24829
|
const signalingStart = ms();
|
|
24808
24830
|
const { sessionId: sid, sdpAnswer } = await handleOffer(pc.localDescription?.sdp ?? offer.sdp ?? "", void 0, clientOfferHints);
|
|
24809
24831
|
timing.signalingRttMs = ms() - signalingStart;
|
|
24810
24832
|
sessionId = sid;
|
|
24811
24833
|
sessionIdsRef.current.add(sid);
|
|
24834
|
+
if (probePromise !== void 0) probePromise.then((mbps) => {
|
|
24835
|
+
if (mbps === void 0 || !shouldUpgradeAfterProbe(mbps)) return;
|
|
24836
|
+
if (!mountedRef.current || abort.signal.aborted) return;
|
|
24837
|
+
if (probeUpgradeRef.current) return;
|
|
24838
|
+
probeUpgradeRef.current = true;
|
|
24839
|
+
connectClientOffer(true, true);
|
|
24840
|
+
});
|
|
24812
24841
|
activeSessionIdRef.current = sid;
|
|
24813
24842
|
if (!mountedRef.current || abort.signal.aborted) {
|
|
24814
24843
|
closeSession?.(sid).catch(() => {});
|
|
@@ -25119,6 +25148,7 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
|
|
|
25119
25148
|
if (!serverChanged && !keyChanged) return;
|
|
25120
25149
|
if (!mountedRef.current) return;
|
|
25121
25150
|
reconnectAttemptsRef.current = 0;
|
|
25151
|
+
probeUpgradeRef.current = false;
|
|
25122
25152
|
if (serverChanged) {
|
|
25123
25153
|
cleanup();
|
|
25124
25154
|
connect();
|
|
@@ -48724,4 +48754,4 @@ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-d_A4kO-M.js").t
|
|
|
48724
48754
|
/** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
|
|
48725
48755
|
var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-DNSLc6ww.js").then((m) => ({ default: m.PrivacyMaskSettings })));
|
|
48726
48756
|
//#endregion
|
|
48727
|
-
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, 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, 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, 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, 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, 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, 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, statusIcons, statusLine, stepHasModelForFormat, stepModelOptions, stripParentNamePrefix, Trash2 as t, tabForSelector, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, 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, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, 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, 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, useDeviceManagerGetChildren, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, 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, useMetricsProviderDumpHeapSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetProcessStats, useMetricsProviderKillProcess, 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, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, 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, 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, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, 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, 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, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetStatus, useRecordingGetStorageMigrationMoveStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingListRelocateJobs, useRecordingLocateSegment, useRecordingPauseForStorageMigration, useRecordingPlanStorageRebalance, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingRefreshStorageLocationsForMigration, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingResumeForStorageMigration, useRecordingSetDeviceConfig, useRecordingStartStorageMigrationMove, useRecordingStartStorageRebalance, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, 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, useStorageMigrationPlan, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, 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, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, 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, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|
|
48757
|
+
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, 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, 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, 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, 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, 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, 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, statusIcons, statusLine, stepHasModelForFormat, stepModelOptions, stripParentNamePrefix, Trash2 as t, tabForSelector, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, 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, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, 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, 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, useDeviceManagerGetChildren, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, 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, useMetricsProviderDumpHeapSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetProcessStats, useMetricsProviderKillProcess, 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, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, 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, 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, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetGroup, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListGroups, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, 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, 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, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetStatus, useRecordingGetStorageMigrationMoveStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingListRelocateJobs, useRecordingLocateSegment, useRecordingPauseForStorageMigration, useRecordingPlanStorageRebalance, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingRefreshStorageLocationsForMigration, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingResumeForStorageMigration, useRecordingSetDeviceConfig, useRecordingStartStorageMigrationMove, useRecordingStartStorageRebalance, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, 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, useStorageMigrationPlan, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, 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, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, 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, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|