@camstack/ui-library 1.1.44 → 1.1.46
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/device-item/status-dot.d.ts +2 -1
- package/dist/composites/device-step-matrix.d.ts +5 -8
- package/dist/composites/index.d.ts +4 -1
- package/dist/composites/model-picker.d.ts +25 -0
- package/dist/composites/pipeline-matrix-shared.d.ts +64 -0
- package/dist/composites/pipeline-tree-matrix.d.ts +5 -8
- package/dist/generated/system-hooks.d.ts +8 -4
- package/dist/index.cjs +400 -277
- package/dist/index.js +394 -276
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3751,7 +3751,6 @@ function mirror(input) {
|
|
|
3751
3751
|
}
|
|
3752
3752
|
}
|
|
3753
3753
|
const patch = {
|
|
3754
|
-
enabled: srcCfg.enabled,
|
|
3755
3754
|
...chosenModelId ? { modelId: chosenModelId } : {},
|
|
3756
3755
|
settings: dropModelSpecific(srcCfg.settings, targetAddon)
|
|
3757
3756
|
};
|
|
@@ -13850,6 +13849,228 @@ function buildStepTreeFromSchema(schema) {
|
|
|
13850
13849
|
return [...roots, ...audioRoots];
|
|
13851
13850
|
}
|
|
13852
13851
|
//#endregion
|
|
13852
|
+
//#region src/composites/grouped-model-selector.tsx
|
|
13853
|
+
/**
|
|
13854
|
+
* GroupedModelSelector — the shared Family → Tier → Variant model picker.
|
|
13855
|
+
*
|
|
13856
|
+
* The catalog is a FLAT list of models (ids like `yolo26s`, `yolo26s-int8`);
|
|
13857
|
+
* this folds it into a `family → tier → variant` tree (see
|
|
13858
|
+
* `buildModelVariantGroups` in `@camstack/types`) so the operator picks
|
|
13859
|
+
* "YOLO26 → Small → Int8" instead of scanning a flat dropdown of every
|
|
13860
|
+
* size×quantization. The selected value stays the flat model id.
|
|
13861
|
+
*
|
|
13862
|
+
* Parameterised on the minimal `ModelVariantSource` shape so BOTH the config-UI
|
|
13863
|
+
* catalog (`ModelCatalogEntry`) and the pipeline/device steppers
|
|
13864
|
+
* (`PipelineModelOption`) drive the same component. Legacy / ungrouped models
|
|
13865
|
+
* never appear here (the grouping helpers skip them).
|
|
13866
|
+
*/
|
|
13867
|
+
function Chip({ active, onClick, disabled, children, title }) {
|
|
13868
|
+
return /* @__PURE__ */ jsx("button", {
|
|
13869
|
+
type: "button",
|
|
13870
|
+
onClick,
|
|
13871
|
+
disabled,
|
|
13872
|
+
title,
|
|
13873
|
+
className: cn("rounded-full px-3 py-1 text-[11px] font-medium border transition-colors", active ? "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"),
|
|
13874
|
+
children
|
|
13875
|
+
});
|
|
13876
|
+
}
|
|
13877
|
+
function GroupedModelSelector({ catalog, value, onChange, disabled }) {
|
|
13878
|
+
const families = buildModelVariantGroups(catalog);
|
|
13879
|
+
const current = describeModelVariant(catalog, value);
|
|
13880
|
+
const activeFamily = families.find((f) => f.family === current?.family)?.family ?? families[0]?.family ?? "";
|
|
13881
|
+
const family = families.find((f) => f.family === activeFamily) ?? families[0];
|
|
13882
|
+
if (!family) return null;
|
|
13883
|
+
const activeTier = family.tiers.find((t) => t.tier === current?.tier)?.tier ?? family.tiers[0]?.tier ?? "";
|
|
13884
|
+
const tier = family.tiers.find((t) => t.tier === activeTier) ?? family.tiers[0];
|
|
13885
|
+
if (!tier) return null;
|
|
13886
|
+
const resolutions = [...new Set(tier.options.map((o) => o.resolution))].sort((a, b) => (b ?? Infinity) - (a ?? Infinity));
|
|
13887
|
+
const selectedResolution = resolutions.includes(current?.resolution) ? current?.resolution : resolutions[0];
|
|
13888
|
+
const variantOptions = tier.options.filter((o) => o.resolution === selectedResolution);
|
|
13889
|
+
const resLabel = (r) => r === void 0 ? "640 · native" : `${r}`;
|
|
13890
|
+
const selectTier = (tierId) => {
|
|
13891
|
+
const t = family.tiers.find((x) => x.tier === tierId);
|
|
13892
|
+
if (!t) return;
|
|
13893
|
+
onChange((t.options.find((o) => o.precision === (current?.precision ?? "fp32") && o.optimization === (current?.optimization ?? "standard") && o.resolution === current?.resolution) ?? t.options[0]).modelId);
|
|
13894
|
+
};
|
|
13895
|
+
const selectResolution = (resolution) => {
|
|
13896
|
+
const opts = tier.options.filter((o) => o.resolution === resolution);
|
|
13897
|
+
const pick = opts.find((o) => o.precision === (current?.precision ?? "fp32") && o.optimization === (current?.optimization ?? "standard")) ?? opts[0];
|
|
13898
|
+
if (pick) onChange(pick.modelId);
|
|
13899
|
+
};
|
|
13900
|
+
const selectVariant = (opt) => {
|
|
13901
|
+
const id = resolveVariantModelId(catalog, {
|
|
13902
|
+
family: family.family,
|
|
13903
|
+
tier: tier.tier,
|
|
13904
|
+
precision: opt.precision,
|
|
13905
|
+
optimization: opt.optimization,
|
|
13906
|
+
resolution: opt.resolution
|
|
13907
|
+
});
|
|
13908
|
+
if (id) onChange(id);
|
|
13909
|
+
};
|
|
13910
|
+
const selectedOption = tier.options.find((o) => o.modelId === value) ?? null;
|
|
13911
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
13912
|
+
className: "space-y-3",
|
|
13913
|
+
children: [
|
|
13914
|
+
families.length > 1 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
13915
|
+
className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
|
|
13916
|
+
children: "Family"
|
|
13917
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
13918
|
+
className: "flex flex-wrap gap-1.5",
|
|
13919
|
+
children: families.map((f) => /* @__PURE__ */ jsx(Chip, {
|
|
13920
|
+
active: f.family === family.family,
|
|
13921
|
+
disabled,
|
|
13922
|
+
onClick: () => onChange(f.tiers[0]?.baseModelId ?? ""),
|
|
13923
|
+
children: f.label
|
|
13924
|
+
}, f.family))
|
|
13925
|
+
})] }),
|
|
13926
|
+
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("p", {
|
|
13927
|
+
className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
|
|
13928
|
+
children: [family.label, " — size"]
|
|
13929
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
13930
|
+
className: "grid grid-cols-2 gap-1.5 sm:grid-cols-4",
|
|
13931
|
+
children: family.tiers.map((t) => {
|
|
13932
|
+
const active = t.tier === tier.tier;
|
|
13933
|
+
const base = t.options.find((o) => o.modelId === t.baseModelId) ?? t.options[0];
|
|
13934
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
13935
|
+
type: "button",
|
|
13936
|
+
disabled,
|
|
13937
|
+
onClick: () => selectTier(t.tier),
|
|
13938
|
+
className: cn("rounded-lg border px-2 py-2 text-left transition-all", active ? "border-primary bg-primary/5 ring-1 ring-primary/30" : "border-border bg-background hover:border-foreground-subtle/40", disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"),
|
|
13939
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
13940
|
+
className: "flex items-center gap-1",
|
|
13941
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
13942
|
+
className: "text-xs font-semibold text-foreground",
|
|
13943
|
+
children: t.label
|
|
13944
|
+
}), active && /* @__PURE__ */ jsx(Check, { className: "h-3 w-3 text-primary" })]
|
|
13945
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
13946
|
+
className: "text-[10px] text-foreground-subtle",
|
|
13947
|
+
children: [
|
|
13948
|
+
"~",
|
|
13949
|
+
base?.sizeMB ?? 0,
|
|
13950
|
+
" MB"
|
|
13951
|
+
]
|
|
13952
|
+
})]
|
|
13953
|
+
}, t.tier);
|
|
13954
|
+
})
|
|
13955
|
+
})] }),
|
|
13956
|
+
resolutions.length > 1 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
13957
|
+
className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
|
|
13958
|
+
children: "Resolution"
|
|
13959
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
13960
|
+
className: "flex flex-wrap gap-1.5",
|
|
13961
|
+
children: resolutions.map((r) => /* @__PURE__ */ jsx(Chip, {
|
|
13962
|
+
active: r === selectedResolution,
|
|
13963
|
+
disabled,
|
|
13964
|
+
title: r === void 0 ? "native (best accuracy)" : `${r}×${r} (faster)`,
|
|
13965
|
+
onClick: () => selectResolution(r),
|
|
13966
|
+
children: resLabel(r)
|
|
13967
|
+
}, r ?? "native"))
|
|
13968
|
+
})] }),
|
|
13969
|
+
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
13970
|
+
className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
|
|
13971
|
+
children: "Variant"
|
|
13972
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
13973
|
+
className: "flex flex-wrap gap-1.5",
|
|
13974
|
+
children: variantOptions.map((opt) => /* @__PURE__ */ jsx(Chip, {
|
|
13975
|
+
active: opt.modelId === value,
|
|
13976
|
+
disabled,
|
|
13977
|
+
title: `${opt.formats.join(", ")} · ~${opt.sizeMB} MB`,
|
|
13978
|
+
onClick: () => selectVariant(opt),
|
|
13979
|
+
children: /* @__PURE__ */ jsxs("span", {
|
|
13980
|
+
className: "inline-flex items-center gap-1",
|
|
13981
|
+
children: [opt.optimization === "fast" && /* @__PURE__ */ jsx(Zap, { className: "h-3 w-3" }), opt.label]
|
|
13982
|
+
})
|
|
13983
|
+
}, opt.modelId))
|
|
13984
|
+
})] }),
|
|
13985
|
+
/* @__PURE__ */ jsxs("div", {
|
|
13986
|
+
className: "flex items-center gap-2 text-[10px] text-foreground-subtle pt-0.5",
|
|
13987
|
+
children: [
|
|
13988
|
+
/* @__PURE__ */ jsx(Cpu, { className: "h-3 w-3" }),
|
|
13989
|
+
/* @__PURE__ */ jsx("span", {
|
|
13990
|
+
className: "font-mono",
|
|
13991
|
+
children: value || "—"
|
|
13992
|
+
}),
|
|
13993
|
+
selectedOption && /* @__PURE__ */ jsxs("span", { children: [
|
|
13994
|
+
"· ",
|
|
13995
|
+
selectedOption.formats.join(", "),
|
|
13996
|
+
" · ~",
|
|
13997
|
+
selectedOption.sizeMB,
|
|
13998
|
+
" MB"
|
|
13999
|
+
] })
|
|
14000
|
+
]
|
|
14001
|
+
})
|
|
14002
|
+
]
|
|
14003
|
+
});
|
|
14004
|
+
}
|
|
14005
|
+
//#endregion
|
|
14006
|
+
//#region src/composites/model-picker.tsx
|
|
14007
|
+
/**
|
|
14008
|
+
* Shared model picker — the ONE model-selection control across the app.
|
|
14009
|
+
*
|
|
14010
|
+
* Renders the grouped Family→Tier→Resolution→Variant selector
|
|
14011
|
+
* ({@link GroupedModelSelector}) when the step's models declare variant groups
|
|
14012
|
+
* (yolo26 / yolov9 …), else a flat `<select>` (face / plate / classifier
|
|
14013
|
+
* catalogs and operator-registered custom models). Custom / ungrouped ids stay
|
|
14014
|
+
* selectable via an "Other models" flat select alongside the grouped picker, and
|
|
14015
|
+
* a legacy/removed pin is surfaced with an explicit banner rather than a
|
|
14016
|
+
* silently mis-highlighted chip.
|
|
14017
|
+
*
|
|
14018
|
+
* Used by the pipeline stepper (`PipelineStep`), the agent/device step editor
|
|
14019
|
+
* (`AgentStepEditor`), and the benchmark — so the picker looks identical
|
|
14020
|
+
* everywhere. `value === ''` renders nothing selected (callers that support an
|
|
14021
|
+
* "Auto / node default" mode own that affordance and hide this picker while it
|
|
14022
|
+
* is active).
|
|
14023
|
+
*/
|
|
14024
|
+
function ModelPicker({ models, value, onChange, disabled }) {
|
|
14025
|
+
const hasGroups = useMemo(() => buildModelVariantGroups(models).length > 0, [models]);
|
|
14026
|
+
const ungrouped = useMemo(() => models.filter((m) => m.group === void 0), [models]);
|
|
14027
|
+
const unresolvedBanner = value !== "" && !models.some((m) => m.id === value) && /* @__PURE__ */ jsxs("div", {
|
|
14028
|
+
className: "rounded border border-amber-500/40 bg-amber-500/10 px-2 py-1.5 text-[10px] text-amber-300",
|
|
14029
|
+
children: [
|
|
14030
|
+
"Current pin (",
|
|
14031
|
+
/* @__PURE__ */ jsx("span", {
|
|
14032
|
+
className: "font-mono",
|
|
14033
|
+
children: value
|
|
14034
|
+
}),
|
|
14035
|
+
") is a legacy/removed model — no longer offered below. Pick a replacement to change it; Save persists whatever is selected here."
|
|
14036
|
+
]
|
|
14037
|
+
});
|
|
14038
|
+
const flatSelect = (opts, selectPlaceholder) => /* @__PURE__ */ jsxs("select", {
|
|
14039
|
+
disabled,
|
|
14040
|
+
className: "w-full bg-surface border border-border rounded px-2 py-1 text-xs disabled:opacity-50",
|
|
14041
|
+
value: opts.some((m) => m.id === value) ? value : "",
|
|
14042
|
+
onChange: (e) => onChange(e.target.value),
|
|
14043
|
+
children: [selectPlaceholder !== void 0 && /* @__PURE__ */ jsx("option", {
|
|
14044
|
+
value: "",
|
|
14045
|
+
disabled: true,
|
|
14046
|
+
children: selectPlaceholder
|
|
14047
|
+
}), opts.map((m) => /* @__PURE__ */ jsx("option", {
|
|
14048
|
+
value: m.id,
|
|
14049
|
+
children: m.name
|
|
14050
|
+
}, m.id))]
|
|
14051
|
+
});
|
|
14052
|
+
if (!hasGroups) return /* @__PURE__ */ jsxs("div", {
|
|
14053
|
+
className: "space-y-2",
|
|
14054
|
+
children: [unresolvedBanner, flatSelect(models)]
|
|
14055
|
+
});
|
|
14056
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
14057
|
+
className: "space-y-3",
|
|
14058
|
+
children: [
|
|
14059
|
+
unresolvedBanner,
|
|
14060
|
+
/* @__PURE__ */ jsx(GroupedModelSelector, {
|
|
14061
|
+
catalog: models,
|
|
14062
|
+
value,
|
|
14063
|
+
onChange,
|
|
14064
|
+
disabled
|
|
14065
|
+
}),
|
|
14066
|
+
ungrouped.length > 0 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
|
|
14067
|
+
className: "text-[10px] uppercase tracking-widest text-foreground-subtle mb-1",
|
|
14068
|
+
children: "Other models"
|
|
14069
|
+
}), flatSelect(ungrouped, "— custom / ungrouped model —")] })
|
|
14070
|
+
]
|
|
14071
|
+
});
|
|
14072
|
+
}
|
|
14073
|
+
//#endregion
|
|
13853
14074
|
//#region src/composites/pipeline-step.tsx
|
|
13854
14075
|
/**
|
|
13855
14076
|
* PipelineStep — single step card in the pipeline builder.
|
|
@@ -13859,11 +14080,7 @@ function buildStepTreeFromSchema(schema) {
|
|
|
13859
14080
|
* (Model → Confidence), children recursively.
|
|
13860
14081
|
*/
|
|
13861
14082
|
function modelsForStep(schema) {
|
|
13862
|
-
|
|
13863
|
-
return schema.models.map((m) => ({
|
|
13864
|
-
id: m.id,
|
|
13865
|
-
name: m.name
|
|
13866
|
-
}));
|
|
14083
|
+
return schema?.models ?? [];
|
|
13867
14084
|
}
|
|
13868
14085
|
function PipelineStep({ step, schema, allSchemas: _allSchemas, depth: _depth = 0, onChange, onDelete: _onDelete, readOnly = false, toggleMode = "simple", overrideState = null, onOverrideChange, inheritedEnabled, hideModelAndSettings = false, allowAutoModel = false }) {
|
|
13869
14086
|
const [expanded, setExpanded] = useState(false);
|
|
@@ -13954,21 +14171,35 @@ function PipelineStep({ step, schema, allSchemas: _allSchemas, depth: _depth = 0
|
|
|
13954
14171
|
children: "Model and detection settings are managed per agent — open the Pipeline page for this camera's agent to edit them."
|
|
13955
14172
|
}) : /* @__PURE__ */ jsxs("div", {
|
|
13956
14173
|
className: "space-y-3",
|
|
13957
|
-
children: [/* @__PURE__ */
|
|
13958
|
-
|
|
13959
|
-
|
|
13960
|
-
|
|
13961
|
-
|
|
13962
|
-
|
|
13963
|
-
|
|
13964
|
-
|
|
13965
|
-
|
|
13966
|
-
|
|
13967
|
-
|
|
13968
|
-
|
|
13969
|
-
|
|
13970
|
-
|
|
13971
|
-
|
|
14174
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
14175
|
+
className: "space-y-2",
|
|
14176
|
+
children: [
|
|
14177
|
+
/* @__PURE__ */ jsx("label", {
|
|
14178
|
+
className: "block text-[10px] font-medium text-foreground-subtle uppercase tracking-wide",
|
|
14179
|
+
children: "Model"
|
|
14180
|
+
}),
|
|
14181
|
+
allowAutoModel && /* @__PURE__ */ jsxs("label", {
|
|
14182
|
+
className: "flex items-center gap-2 text-[11px] text-foreground-subtle",
|
|
14183
|
+
children: [/* @__PURE__ */ jsx("input", {
|
|
14184
|
+
type: "checkbox",
|
|
14185
|
+
checked: isAutoSentinel,
|
|
14186
|
+
disabled: readOnly,
|
|
14187
|
+
onChange: (e) => onChange({
|
|
14188
|
+
...step,
|
|
14189
|
+
modelId: e.target.checked ? "" : schema?.defaultModelId ?? models[0]?.id ?? ""
|
|
14190
|
+
})
|
|
14191
|
+
}), "Auto (node default)"]
|
|
14192
|
+
}),
|
|
14193
|
+
!isAutoSentinel && /* @__PURE__ */ jsx(ModelPicker, {
|
|
14194
|
+
models,
|
|
14195
|
+
value: step.modelId,
|
|
14196
|
+
disabled: readOnly,
|
|
14197
|
+
onChange: (id) => onChange({
|
|
14198
|
+
...step,
|
|
14199
|
+
modelId: id
|
|
14200
|
+
})
|
|
14201
|
+
})
|
|
14202
|
+
]
|
|
13972
14203
|
}), schema?.configSchema?.map((field) => /* @__PURE__ */ jsx(ConfigSchemaField, {
|
|
13973
14204
|
field,
|
|
13974
14205
|
allFields: schema.configSchema ?? [],
|
|
@@ -14174,218 +14405,7 @@ function ThreeStateButton({ label, active, variant, subtext, onClick }) {
|
|
|
14174
14405
|
});
|
|
14175
14406
|
}
|
|
14176
14407
|
//#endregion
|
|
14177
|
-
//#region src/composites/grouped-model-selector.tsx
|
|
14178
|
-
/**
|
|
14179
|
-
* GroupedModelSelector — the shared Family → Tier → Variant model picker.
|
|
14180
|
-
*
|
|
14181
|
-
* The catalog is a FLAT list of models (ids like `yolo26s`, `yolo26s-int8`);
|
|
14182
|
-
* this folds it into a `family → tier → variant` tree (see
|
|
14183
|
-
* `buildModelVariantGroups` in `@camstack/types`) so the operator picks
|
|
14184
|
-
* "YOLO26 → Small → Int8" instead of scanning a flat dropdown of every
|
|
14185
|
-
* size×quantization. The selected value stays the flat model id.
|
|
14186
|
-
*
|
|
14187
|
-
* Parameterised on the minimal `ModelVariantSource` shape so BOTH the config-UI
|
|
14188
|
-
* catalog (`ModelCatalogEntry`) and the pipeline/device steppers
|
|
14189
|
-
* (`PipelineModelOption`) drive the same component. Legacy / ungrouped models
|
|
14190
|
-
* never appear here (the grouping helpers skip them).
|
|
14191
|
-
*/
|
|
14192
|
-
function Chip({ active, onClick, disabled, children, title }) {
|
|
14193
|
-
return /* @__PURE__ */ jsx("button", {
|
|
14194
|
-
type: "button",
|
|
14195
|
-
onClick,
|
|
14196
|
-
disabled,
|
|
14197
|
-
title,
|
|
14198
|
-
className: cn("rounded-full px-3 py-1 text-[11px] font-medium border transition-colors", active ? "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"),
|
|
14199
|
-
children
|
|
14200
|
-
});
|
|
14201
|
-
}
|
|
14202
|
-
function GroupedModelSelector({ catalog, value, onChange, disabled }) {
|
|
14203
|
-
const families = buildModelVariantGroups(catalog);
|
|
14204
|
-
const current = describeModelVariant(catalog, value);
|
|
14205
|
-
const activeFamily = families.find((f) => f.family === current?.family)?.family ?? families[0]?.family ?? "";
|
|
14206
|
-
const family = families.find((f) => f.family === activeFamily) ?? families[0];
|
|
14207
|
-
if (!family) return null;
|
|
14208
|
-
const activeTier = family.tiers.find((t) => t.tier === current?.tier)?.tier ?? family.tiers[0]?.tier ?? "";
|
|
14209
|
-
const tier = family.tiers.find((t) => t.tier === activeTier) ?? family.tiers[0];
|
|
14210
|
-
if (!tier) return null;
|
|
14211
|
-
const resolutions = [...new Set(tier.options.map((o) => o.resolution))].sort((a, b) => (b ?? Infinity) - (a ?? Infinity));
|
|
14212
|
-
const selectedResolution = resolutions.includes(current?.resolution) ? current?.resolution : resolutions[0];
|
|
14213
|
-
const variantOptions = tier.options.filter((o) => o.resolution === selectedResolution);
|
|
14214
|
-
const resLabel = (r) => r === void 0 ? "640 · native" : `${r}`;
|
|
14215
|
-
const selectTier = (tierId) => {
|
|
14216
|
-
const t = family.tiers.find((x) => x.tier === tierId);
|
|
14217
|
-
if (!t) return;
|
|
14218
|
-
onChange((t.options.find((o) => o.precision === (current?.precision ?? "fp32") && o.optimization === (current?.optimization ?? "standard") && o.resolution === current?.resolution) ?? t.options[0]).modelId);
|
|
14219
|
-
};
|
|
14220
|
-
const selectResolution = (resolution) => {
|
|
14221
|
-
const opts = tier.options.filter((o) => o.resolution === resolution);
|
|
14222
|
-
const pick = opts.find((o) => o.precision === (current?.precision ?? "fp32") && o.optimization === (current?.optimization ?? "standard")) ?? opts[0];
|
|
14223
|
-
if (pick) onChange(pick.modelId);
|
|
14224
|
-
};
|
|
14225
|
-
const selectVariant = (opt) => {
|
|
14226
|
-
const id = resolveVariantModelId(catalog, {
|
|
14227
|
-
family: family.family,
|
|
14228
|
-
tier: tier.tier,
|
|
14229
|
-
precision: opt.precision,
|
|
14230
|
-
optimization: opt.optimization,
|
|
14231
|
-
resolution: opt.resolution
|
|
14232
|
-
});
|
|
14233
|
-
if (id) onChange(id);
|
|
14234
|
-
};
|
|
14235
|
-
const selectedOption = tier.options.find((o) => o.modelId === value) ?? null;
|
|
14236
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
14237
|
-
className: "space-y-3",
|
|
14238
|
-
children: [
|
|
14239
|
-
families.length > 1 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
14240
|
-
className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
|
|
14241
|
-
children: "Family"
|
|
14242
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
14243
|
-
className: "flex flex-wrap gap-1.5",
|
|
14244
|
-
children: families.map((f) => /* @__PURE__ */ jsx(Chip, {
|
|
14245
|
-
active: f.family === family.family,
|
|
14246
|
-
disabled,
|
|
14247
|
-
onClick: () => onChange(f.tiers[0]?.baseModelId ?? ""),
|
|
14248
|
-
children: f.label
|
|
14249
|
-
}, f.family))
|
|
14250
|
-
})] }),
|
|
14251
|
-
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("p", {
|
|
14252
|
-
className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
|
|
14253
|
-
children: [family.label, " — size"]
|
|
14254
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
14255
|
-
className: "grid grid-cols-2 gap-1.5 sm:grid-cols-4",
|
|
14256
|
-
children: family.tiers.map((t) => {
|
|
14257
|
-
const active = t.tier === tier.tier;
|
|
14258
|
-
const base = t.options.find((o) => o.modelId === t.baseModelId) ?? t.options[0];
|
|
14259
|
-
return /* @__PURE__ */ jsxs("button", {
|
|
14260
|
-
type: "button",
|
|
14261
|
-
disabled,
|
|
14262
|
-
onClick: () => selectTier(t.tier),
|
|
14263
|
-
className: cn("rounded-lg border px-2 py-2 text-left transition-all", active ? "border-primary bg-primary/5 ring-1 ring-primary/30" : "border-border bg-background hover:border-foreground-subtle/40", disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"),
|
|
14264
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
14265
|
-
className: "flex items-center gap-1",
|
|
14266
|
-
children: [/* @__PURE__ */ jsx("span", {
|
|
14267
|
-
className: "text-xs font-semibold text-foreground",
|
|
14268
|
-
children: t.label
|
|
14269
|
-
}), active && /* @__PURE__ */ jsx(Check, { className: "h-3 w-3 text-primary" })]
|
|
14270
|
-
}), /* @__PURE__ */ jsxs("span", {
|
|
14271
|
-
className: "text-[10px] text-foreground-subtle",
|
|
14272
|
-
children: [
|
|
14273
|
-
"~",
|
|
14274
|
-
base?.sizeMB ?? 0,
|
|
14275
|
-
" MB"
|
|
14276
|
-
]
|
|
14277
|
-
})]
|
|
14278
|
-
}, t.tier);
|
|
14279
|
-
})
|
|
14280
|
-
})] }),
|
|
14281
|
-
resolutions.length > 1 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
14282
|
-
className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
|
|
14283
|
-
children: "Resolution"
|
|
14284
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
14285
|
-
className: "flex flex-wrap gap-1.5",
|
|
14286
|
-
children: resolutions.map((r) => /* @__PURE__ */ jsx(Chip, {
|
|
14287
|
-
active: r === selectedResolution,
|
|
14288
|
-
disabled,
|
|
14289
|
-
title: r === void 0 ? "native (best accuracy)" : `${r}×${r} (faster)`,
|
|
14290
|
-
onClick: () => selectResolution(r),
|
|
14291
|
-
children: resLabel(r)
|
|
14292
|
-
}, r ?? "native"))
|
|
14293
|
-
})] }),
|
|
14294
|
-
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
14295
|
-
className: "text-[10px] uppercase tracking-wide text-foreground-subtle mb-1.5",
|
|
14296
|
-
children: "Variant"
|
|
14297
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
14298
|
-
className: "flex flex-wrap gap-1.5",
|
|
14299
|
-
children: variantOptions.map((opt) => /* @__PURE__ */ jsx(Chip, {
|
|
14300
|
-
active: opt.modelId === value,
|
|
14301
|
-
disabled,
|
|
14302
|
-
title: `${opt.formats.join(", ")} · ~${opt.sizeMB} MB`,
|
|
14303
|
-
onClick: () => selectVariant(opt),
|
|
14304
|
-
children: /* @__PURE__ */ jsxs("span", {
|
|
14305
|
-
className: "inline-flex items-center gap-1",
|
|
14306
|
-
children: [opt.optimization === "fast" && /* @__PURE__ */ jsx(Zap, { className: "h-3 w-3" }), opt.label]
|
|
14307
|
-
})
|
|
14308
|
-
}, opt.modelId))
|
|
14309
|
-
})] }),
|
|
14310
|
-
/* @__PURE__ */ jsxs("div", {
|
|
14311
|
-
className: "flex items-center gap-2 text-[10px] text-foreground-subtle pt-0.5",
|
|
14312
|
-
children: [
|
|
14313
|
-
/* @__PURE__ */ jsx(Cpu, { className: "h-3 w-3" }),
|
|
14314
|
-
/* @__PURE__ */ jsx("span", {
|
|
14315
|
-
className: "font-mono",
|
|
14316
|
-
children: value || "—"
|
|
14317
|
-
}),
|
|
14318
|
-
selectedOption && /* @__PURE__ */ jsxs("span", { children: [
|
|
14319
|
-
"· ",
|
|
14320
|
-
selectedOption.formats.join(", "),
|
|
14321
|
-
" · ~",
|
|
14322
|
-
selectedOption.sizeMB,
|
|
14323
|
-
" MB"
|
|
14324
|
-
] })
|
|
14325
|
-
]
|
|
14326
|
-
})
|
|
14327
|
-
]
|
|
14328
|
-
});
|
|
14329
|
-
}
|
|
14330
|
-
//#endregion
|
|
14331
14408
|
//#region src/composites/agent-step-editor.tsx
|
|
14332
|
-
/**
|
|
14333
|
-
* Shared model picker for the step editor — renders the grouped
|
|
14334
|
-
* Family→Tier→Variant selector when the step's models declare variant groups
|
|
14335
|
-
* (yolo26 …), else a flat `<select>` (face / plate / classifier catalogs and
|
|
14336
|
-
* custom models). Same component both the agent-default and per-device-override
|
|
14337
|
-
* modes use, so the picker looks identical across the pipeline stepper, the
|
|
14338
|
-
* device stepper and the cluster matrix.
|
|
14339
|
-
*/
|
|
14340
|
-
function ModelPicker({ models, value, onChange, disabled }) {
|
|
14341
|
-
const hasGroups = useMemo(() => buildModelVariantGroups(models).length > 0, [models]);
|
|
14342
|
-
const ungrouped = useMemo(() => models.filter((m) => m.group === void 0), [models]);
|
|
14343
|
-
const unresolvedBanner = value !== "" && !models.some((m) => m.id === value) && /* @__PURE__ */ jsxs("div", {
|
|
14344
|
-
className: "rounded border border-amber-500/40 bg-amber-500/10 px-2 py-1.5 text-[10px] text-amber-300",
|
|
14345
|
-
children: [
|
|
14346
|
-
"Current pin (",
|
|
14347
|
-
/* @__PURE__ */ jsx("span", {
|
|
14348
|
-
className: "font-mono",
|
|
14349
|
-
children: value
|
|
14350
|
-
}),
|
|
14351
|
-
") is a legacy/removed model — no longer offered below. Pick a replacement to change it; Save persists whatever is selected here."
|
|
14352
|
-
]
|
|
14353
|
-
});
|
|
14354
|
-
const flatSelect = (opts, selectPlaceholder) => /* @__PURE__ */ jsxs("select", {
|
|
14355
|
-
disabled,
|
|
14356
|
-
className: "w-full bg-surface border border-border rounded px-2 py-1 text-xs disabled:opacity-50",
|
|
14357
|
-
value: opts.some((m) => m.id === value) ? value : "",
|
|
14358
|
-
onChange: (e) => onChange(e.target.value),
|
|
14359
|
-
children: [selectPlaceholder !== void 0 && /* @__PURE__ */ jsx("option", {
|
|
14360
|
-
value: "",
|
|
14361
|
-
disabled: true,
|
|
14362
|
-
children: selectPlaceholder
|
|
14363
|
-
}), opts.map((m) => /* @__PURE__ */ jsx("option", {
|
|
14364
|
-
value: m.id,
|
|
14365
|
-
children: m.name
|
|
14366
|
-
}, m.id))]
|
|
14367
|
-
});
|
|
14368
|
-
if (!hasGroups) return /* @__PURE__ */ jsxs("div", {
|
|
14369
|
-
className: "space-y-2",
|
|
14370
|
-
children: [unresolvedBanner, flatSelect(models)]
|
|
14371
|
-
});
|
|
14372
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
14373
|
-
className: "space-y-3",
|
|
14374
|
-
children: [
|
|
14375
|
-
unresolvedBanner,
|
|
14376
|
-
/* @__PURE__ */ jsx(GroupedModelSelector, {
|
|
14377
|
-
catalog: models,
|
|
14378
|
-
value,
|
|
14379
|
-
onChange,
|
|
14380
|
-
disabled
|
|
14381
|
-
}),
|
|
14382
|
-
ungrouped.length > 0 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
|
|
14383
|
-
className: "text-[10px] uppercase tracking-widest text-foreground-subtle mb-1",
|
|
14384
|
-
children: "Other models"
|
|
14385
|
-
}), flatSelect(ungrouped, "— custom / ungrouped model —")] })
|
|
14386
|
-
]
|
|
14387
|
-
});
|
|
14388
|
-
}
|
|
14389
14409
|
function buildDisplayStep(addon, cfg) {
|
|
14390
14410
|
return {
|
|
14391
14411
|
addonId: addon.id,
|
|
@@ -14445,14 +14465,14 @@ function DeviceModeEditor({ addon, agentDefault, agentNodeId, currentPatch, mode
|
|
|
14445
14465
|
onChangePatch?.(hasAnyField ? next : null);
|
|
14446
14466
|
};
|
|
14447
14467
|
const setModel = (modelId) => {
|
|
14448
|
-
const {
|
|
14468
|
+
const { modelId: _prev, ...rest } = currentPatch ?? {};
|
|
14449
14469
|
commitPatch(modelId === void 0 ? rest : {
|
|
14450
14470
|
...rest,
|
|
14451
14471
|
modelId
|
|
14452
14472
|
});
|
|
14453
14473
|
};
|
|
14454
14474
|
const setSettings = (settings) => {
|
|
14455
|
-
const {
|
|
14475
|
+
const { settings: _prev, ...rest } = currentPatch ?? {};
|
|
14456
14476
|
commitPatch(settings === void 0 ? rest : {
|
|
14457
14477
|
...rest,
|
|
14458
14478
|
settings
|
|
@@ -14573,6 +14593,42 @@ function AgentStepEditor(props) {
|
|
|
14573
14593
|
onChangePatch
|
|
14574
14594
|
});
|
|
14575
14595
|
}
|
|
14596
|
+
//#endregion
|
|
14597
|
+
//#region src/composites/pipeline-matrix-shared.tsx
|
|
14598
|
+
/**
|
|
14599
|
+
* Stable column identity. Plain per-node columns key by `agentNodeId` (so the
|
|
14600
|
+
* rendered `key` is byte-identical to the pre-C7.4 matrix); device sub-columns
|
|
14601
|
+
* disambiguate with their `deviceKey`. MUST be used everywhere a React `key`,
|
|
14602
|
+
* selection compare, or column identity is derived.
|
|
14603
|
+
*/
|
|
14604
|
+
function agentColumnKey(a) {
|
|
14605
|
+
return a.deviceKey !== void 0 ? `${a.agentNodeId}::${a.deviceKey}` : a.agentNodeId;
|
|
14606
|
+
}
|
|
14607
|
+
/**
|
|
14608
|
+
* Coalesce CONSECUTIVE columns that share an `agentNodeId` into node groups.
|
|
14609
|
+
* Order-preserving: the flat column order is untouched, so body cells still map
|
|
14610
|
+
* 1:1 to `agents`. A run of length 1 is a plain (ungrouped) node header.
|
|
14611
|
+
*/
|
|
14612
|
+
function groupAgentColumns(agents) {
|
|
14613
|
+
const groups = [];
|
|
14614
|
+
for (const col of agents) {
|
|
14615
|
+
const last = groups[groups.length - 1];
|
|
14616
|
+
if (last && last.agentNodeId === col.agentNodeId) {
|
|
14617
|
+
const columns = [...last.columns, col];
|
|
14618
|
+
groups[groups.length - 1] = {
|
|
14619
|
+
...last,
|
|
14620
|
+
columns,
|
|
14621
|
+
grouped: columns.length > 1
|
|
14622
|
+
};
|
|
14623
|
+
} else groups.push({
|
|
14624
|
+
agentNodeId: col.agentNodeId,
|
|
14625
|
+
engineLabel: col.engineLabel,
|
|
14626
|
+
columns: [col],
|
|
14627
|
+
grouped: false
|
|
14628
|
+
});
|
|
14629
|
+
}
|
|
14630
|
+
return groups;
|
|
14631
|
+
}
|
|
14576
14632
|
function flattenTree(nodes) {
|
|
14577
14633
|
const out = [];
|
|
14578
14634
|
const walk = (list, depth) => {
|
|
@@ -14651,6 +14707,41 @@ function ClassChips({ inputs, outputs }) {
|
|
|
14651
14707
|
]
|
|
14652
14708
|
});
|
|
14653
14709
|
}
|
|
14710
|
+
/**
|
|
14711
|
+
* Grouped node header (C7.4): a node super-label spanning its device
|
|
14712
|
+
* sub-columns, with a per-device sub-label row beneath. Rendered ONLY for a
|
|
14713
|
+
* node expanded into 2+ device sub-columns; a single plain column keeps each
|
|
14714
|
+
* matrix's own byte-identical single-header markup. The spanning cell uses
|
|
14715
|
+
* `gridColumn: span N` so it aligns to its N body columns; the inner flex row
|
|
14716
|
+
* gives each device its own equal-width, padded sub-label slot.
|
|
14717
|
+
*/
|
|
14718
|
+
function GroupedAgentHeader({ group }) {
|
|
14719
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
14720
|
+
className: "sticky top-0 z-10 min-w-0 border-b border-l border-border bg-muted/60",
|
|
14721
|
+
style: { gridColumn: `span ${group.columns.length}` },
|
|
14722
|
+
children: [
|
|
14723
|
+
/* @__PURE__ */ jsx("div", {
|
|
14724
|
+
className: "truncate px-3 pt-2 text-xs font-semibold text-foreground",
|
|
14725
|
+
children: group.agentNodeId
|
|
14726
|
+
}),
|
|
14727
|
+
/* @__PURE__ */ jsx("div", {
|
|
14728
|
+
className: "truncate px-3 text-[10px] text-foreground-subtle",
|
|
14729
|
+
children: group.engineLabel
|
|
14730
|
+
}),
|
|
14731
|
+
/* @__PURE__ */ jsx("div", {
|
|
14732
|
+
className: "mt-1 flex border-t border-border/50",
|
|
14733
|
+
children: group.columns.map((c, i) => /* @__PURE__ */ jsx("div", {
|
|
14734
|
+
className: cn("min-w-0 flex-1 px-3 py-1", i > 0 && "border-l border-border/50"),
|
|
14735
|
+
title: c.deviceLabel ?? c.deviceKey,
|
|
14736
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
14737
|
+
className: "truncate text-[10px] font-medium text-foreground/90",
|
|
14738
|
+
children: c.deviceLabel ?? c.deviceKey
|
|
14739
|
+
})
|
|
14740
|
+
}, agentColumnKey(c)))
|
|
14741
|
+
})
|
|
14742
|
+
]
|
|
14743
|
+
});
|
|
14744
|
+
}
|
|
14654
14745
|
/** Step label (slot heading + addon name + class chips), shared by both views. */
|
|
14655
14746
|
function StepLabel({ node }) {
|
|
14656
14747
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -14753,13 +14844,13 @@ function GridRow({ node, depth, agents, getCellState, onCellClick, selectedCell,
|
|
|
14753
14844
|
})
|
|
14754
14845
|
})]
|
|
14755
14846
|
}), agents.map((a) => {
|
|
14756
|
-
const state = getCellState(node.addonId, a
|
|
14847
|
+
const state = getCellState(node.addonId, a);
|
|
14757
14848
|
return /* @__PURE__ */ jsx("button", {
|
|
14758
14849
|
type: "button",
|
|
14759
|
-
onClick: () => onCellClick(node.addonId, a
|
|
14760
|
-
className: cellButtonClass(state, selectedCell
|
|
14850
|
+
onClick: () => onCellClick(node.addonId, a),
|
|
14851
|
+
className: cellButtonClass(state, selectedCell !== null && selectedCell.addonId === node.addonId && agentColumnKey(selectedCell) === agentColumnKey(a), "min-w-0 overflow-hidden px-3 py-1.5 border-b border-l border-border"),
|
|
14761
14852
|
children: renderCellContent(state)
|
|
14762
|
-
}, a
|
|
14853
|
+
}, agentColumnKey(a));
|
|
14763
14854
|
})] });
|
|
14764
14855
|
}
|
|
14765
14856
|
/**
|
|
@@ -14771,7 +14862,8 @@ function GridRow({ node, depth, agents, getCellState, onCellClick, selectedCell,
|
|
|
14771
14862
|
function MatrixGrid$1({ rows, agents, getCellState, onCellClick, selectedCell, onToggleEnabled }) {
|
|
14772
14863
|
const gridTemplate = `${STEP_COL_REM$1}rem repeat(${agents.length}, 13rem)`;
|
|
14773
14864
|
const showToggle = onToggleEnabled !== void 0 && agents.length === 1;
|
|
14774
|
-
const onlyAgent = agents[0]
|
|
14865
|
+
const onlyAgent = agents[0];
|
|
14866
|
+
const groups = groupAgentColumns(agents);
|
|
14775
14867
|
return /* @__PURE__ */ jsx("div", {
|
|
14776
14868
|
className: "overflow-auto border border-border rounded",
|
|
14777
14869
|
children: /* @__PURE__ */ jsxs("div", {
|
|
@@ -14782,16 +14874,16 @@ function MatrixGrid$1({ rows, agents, getCellState, onCellClick, selectedCell, o
|
|
|
14782
14874
|
className: "sticky top-0 left-0 z-20 bg-muted/60 px-3 py-2 text-[10px] uppercase tracking-widest text-foreground-subtle border-b border-border",
|
|
14783
14875
|
children: "Step"
|
|
14784
14876
|
}),
|
|
14785
|
-
|
|
14877
|
+
groups.map((group) => group.grouped ? /* @__PURE__ */ jsx(GroupedAgentHeader, { group }, group.agentNodeId) : group.columns.map((col) => /* @__PURE__ */ jsxs("div", {
|
|
14786
14878
|
className: "sticky top-0 z-10 min-w-0 bg-muted/60 px-3 py-2 border-b border-l border-border",
|
|
14787
14879
|
children: [/* @__PURE__ */ jsx("div", {
|
|
14788
14880
|
className: "text-xs font-semibold text-foreground truncate",
|
|
14789
|
-
children:
|
|
14881
|
+
children: col.agentNodeId
|
|
14790
14882
|
}), /* @__PURE__ */ jsx("div", {
|
|
14791
14883
|
className: "text-[10px] text-foreground-subtle truncate",
|
|
14792
|
-
children:
|
|
14884
|
+
children: col.engineLabel
|
|
14793
14885
|
})]
|
|
14794
|
-
},
|
|
14886
|
+
}, agentColumnKey(col)))),
|
|
14795
14887
|
rows.map(({ node, depth }) => {
|
|
14796
14888
|
const cellState = showToggle && onlyAgent !== void 0 ? getCellState(node.addonId, onlyAgent) : null;
|
|
14797
14889
|
return /* @__PURE__ */ jsx(GridRow, {
|
|
@@ -14827,14 +14919,14 @@ function StackedCards({ rows, agents, getCellState, onCellClick, selectedCell, o
|
|
|
14827
14919
|
className: "bg-muted/60 px-3 py-2 border-b border-border",
|
|
14828
14920
|
children: [/* @__PURE__ */ jsx("div", {
|
|
14829
14921
|
className: "text-xs font-semibold text-foreground truncate",
|
|
14830
|
-
children: a.agentNodeId
|
|
14922
|
+
children: a.deviceLabel ? `${a.agentNodeId} · ${a.deviceLabel}` : a.agentNodeId
|
|
14831
14923
|
}), /* @__PURE__ */ jsx("div", {
|
|
14832
14924
|
className: "text-[10px] text-foreground-subtle truncate",
|
|
14833
14925
|
children: a.engineLabel
|
|
14834
14926
|
})]
|
|
14835
14927
|
}), /* @__PURE__ */ jsx("ul", { children: rows.map(({ node, depth }) => {
|
|
14836
|
-
const state = getCellState(node.addonId, a
|
|
14837
|
-
const isSelected = selectedCell
|
|
14928
|
+
const state = getCellState(node.addonId, a);
|
|
14929
|
+
const isSelected = selectedCell !== null && selectedCell.addonId === node.addonId && agentColumnKey(selectedCell) === agentColumnKey(a);
|
|
14838
14930
|
const toggleProps = showToggle && state !== null ? {
|
|
14839
14931
|
enabled: state.kind === "enabled",
|
|
14840
14932
|
onChange: (next) => onToggleEnabled?.(node.addonId, next),
|
|
@@ -14846,7 +14938,7 @@ function StackedCards({ rows, agents, getCellState, onCellClick, selectedCell, o
|
|
|
14846
14938
|
className: "flex items-center gap-2",
|
|
14847
14939
|
children: [/* @__PURE__ */ jsxs("button", {
|
|
14848
14940
|
type: "button",
|
|
14849
|
-
onClick: () => onCellClick(node.addonId, a
|
|
14941
|
+
onClick: () => onCellClick(node.addonId, a),
|
|
14850
14942
|
className: cellButtonClass(state, isSelected, "flex flex-1 min-w-0 items-start justify-between gap-3 px-3 py-2"),
|
|
14851
14943
|
style: { paddingLeft: `${12 + depth * 14}px` },
|
|
14852
14944
|
children: [/* @__PURE__ */ jsx(StepLabel, { node }), /* @__PURE__ */ jsx("span", {
|
|
@@ -14864,7 +14956,7 @@ function StackedCards({ rows, agents, getCellState, onCellClick, selectedCell, o
|
|
|
14864
14956
|
})
|
|
14865
14957
|
}, node.addonId);
|
|
14866
14958
|
}) })]
|
|
14867
|
-
}, a
|
|
14959
|
+
}, agentColumnKey(a)))
|
|
14868
14960
|
});
|
|
14869
14961
|
}
|
|
14870
14962
|
function PipelineTreeMatrix({ tree, agents, getCellState, onCellClick, selectedCell, onToggleEnabled }) {
|
|
@@ -14985,11 +15077,12 @@ function StepGateCell({ node, depth, gate, busy, onSet }) {
|
|
|
14985
15077
|
}
|
|
14986
15078
|
/**
|
|
14987
15079
|
* Agents-scoped node selector for the B fallback. Styled like the shared
|
|
14988
|
-
* `NodePicker` but driven by THIS matrix's
|
|
15080
|
+
* `NodePicker` but driven by THIS matrix's NODE set — the cluster-wide
|
|
14989
15081
|
* NodePicker can list nodes (e.g. the hub) that own no pipeline column here,
|
|
14990
|
-
* which would let the operator select a node the matrix can't show.
|
|
15082
|
+
* which would let the operator select a node the matrix can't show. Selects a
|
|
15083
|
+
* NODE (grouping its device sub-columns), never a raw device column.
|
|
14991
15084
|
*/
|
|
14992
|
-
function NodeSelectorBar({
|
|
15085
|
+
function NodeSelectorBar({ nodes, selected, onSelect }) {
|
|
14993
15086
|
return /* @__PURE__ */ jsxs("div", {
|
|
14994
15087
|
className: "flex flex-wrap items-center gap-1.5",
|
|
14995
15088
|
role: "tablist",
|
|
@@ -15002,7 +15095,7 @@ function NodeSelectorBar({ agents, selected, onSelect }) {
|
|
|
15002
15095
|
}),
|
|
15003
15096
|
/* @__PURE__ */ jsx("div", {
|
|
15004
15097
|
className: "flex overflow-hidden rounded-md border border-border text-[11px] font-medium",
|
|
15005
|
-
children:
|
|
15098
|
+
children: nodes.map((a, idx) => {
|
|
15006
15099
|
const isSelected = a.agentNodeId === selected;
|
|
15007
15100
|
return /* @__PURE__ */ jsx("button", {
|
|
15008
15101
|
type: "button",
|
|
@@ -15020,6 +15113,7 @@ function NodeSelectorBar({ agents, selected, onSelect }) {
|
|
|
15020
15113
|
}
|
|
15021
15114
|
function MatrixGrid({ tree, agents, gateFor, getCellState, onCellClick, selectedCell, onSetGate, gateBusy, single }) {
|
|
15022
15115
|
const rows = useMemo(() => flattenTree(tree), [tree]);
|
|
15116
|
+
const groups = useMemo(() => groupAgentColumns(agents), [agents]);
|
|
15023
15117
|
const gridTemplate = single ? `minmax(0, 1.35fr) repeat(${agents.length}, minmax(0, 1fr))` : `${STEP_COL_REM}rem repeat(${agents.length}, 13rem)`;
|
|
15024
15118
|
return /* @__PURE__ */ jsx("div", {
|
|
15025
15119
|
className: cn("rounded border border-border", single ? "overflow-hidden" : "overflow-auto"),
|
|
@@ -15031,16 +15125,16 @@ function MatrixGrid({ tree, agents, gateFor, getCellState, onCellClick, selected
|
|
|
15031
15125
|
className: "sticky left-0 top-0 z-20 border-b border-border bg-muted/60 px-3 py-2 text-[10px] uppercase tracking-widest text-foreground-subtle",
|
|
15032
15126
|
children: "Step · gate"
|
|
15033
15127
|
}),
|
|
15034
|
-
|
|
15128
|
+
groups.map((group) => group.grouped ? /* @__PURE__ */ jsx(GroupedAgentHeader, { group }, group.agentNodeId) : group.columns.map((col) => /* @__PURE__ */ jsxs("div", {
|
|
15035
15129
|
className: "sticky top-0 z-10 min-w-0 border-b border-l border-border bg-muted/60 px-3 py-2",
|
|
15036
15130
|
children: [/* @__PURE__ */ jsx("div", {
|
|
15037
15131
|
className: "truncate text-xs font-semibold text-foreground",
|
|
15038
|
-
children:
|
|
15132
|
+
children: col.agentNodeId
|
|
15039
15133
|
}), /* @__PURE__ */ jsx("div", {
|
|
15040
15134
|
className: "truncate text-[10px] text-foreground-subtle",
|
|
15041
|
-
children:
|
|
15135
|
+
children: col.engineLabel
|
|
15042
15136
|
})]
|
|
15043
|
-
},
|
|
15137
|
+
}, agentColumnKey(col)))),
|
|
15044
15138
|
rows.map(({ node, depth }) => /* @__PURE__ */ jsx(MatrixRow, {
|
|
15045
15139
|
node,
|
|
15046
15140
|
depth,
|
|
@@ -15064,16 +15158,16 @@ function MatrixRow({ node, depth, agents, gate, getCellState, onCellClick, selec
|
|
|
15064
15158
|
busy: gateBusy,
|
|
15065
15159
|
onSet: (next) => onSetGate(node.addonId, next)
|
|
15066
15160
|
}), agents.map((a) => {
|
|
15067
|
-
const state = getCellState(node.addonId, a
|
|
15068
|
-
const isSelected = selectedCell
|
|
15161
|
+
const state = getCellState(node.addonId, a);
|
|
15162
|
+
const isSelected = selectedCell !== null && selectedCell.addonId === node.addonId && agentColumnKey(selectedCell) === agentColumnKey(a);
|
|
15069
15163
|
const actionable = state.kind === "enabled" || state.kind === "skip";
|
|
15070
15164
|
return /* @__PURE__ */ jsx("button", {
|
|
15071
15165
|
type: "button",
|
|
15072
15166
|
disabled: !actionable,
|
|
15073
|
-
onClick: () => onCellClick(node.addonId, a
|
|
15167
|
+
onClick: () => onCellClick(node.addonId, a),
|
|
15074
15168
|
className: cellButtonClass(state, isSelected, cn("min-w-0 overflow-hidden border-b border-l border-border px-3 py-2", !actionable && "cursor-default hover:bg-transparent")),
|
|
15075
15169
|
children: renderCellContent(state)
|
|
15076
|
-
}, a
|
|
15170
|
+
}, agentColumnKey(a));
|
|
15077
15171
|
})] });
|
|
15078
15172
|
}
|
|
15079
15173
|
function DeviceStepMatrix({ tree, agents, gateFor, getCellState, onCellClick, selectedCell, onSetGate, gateBusy, fallbackNodeId, onFallbackNodeChange }) {
|
|
@@ -15088,17 +15182,18 @@ function DeviceStepMatrix({ tree, agents, gateFor, getCellState, onCellClick, se
|
|
|
15088
15182
|
RO?.observe(el);
|
|
15089
15183
|
return () => RO?.disconnect();
|
|
15090
15184
|
}, []);
|
|
15091
|
-
const
|
|
15185
|
+
const nodes = useMemo(() => groupAgentColumns(agents), [agents]);
|
|
15186
|
+
const single = shouldUseSingleNode(width, nodes.length, STEP_COL_PX);
|
|
15092
15187
|
const selectedNode = useMemo(() => {
|
|
15093
|
-
if (
|
|
15094
|
-
return
|
|
15095
|
-
}, [
|
|
15096
|
-
const shownAgents = single && selectedNode ?
|
|
15188
|
+
if (nodes.length === 0) return null;
|
|
15189
|
+
return nodes.find((n) => n.agentNodeId === fallbackNodeId) ?? nodes[0] ?? null;
|
|
15190
|
+
}, [nodes, fallbackNodeId]);
|
|
15191
|
+
const shownAgents = single && selectedNode ? selectedNode.columns : agents;
|
|
15097
15192
|
return /* @__PURE__ */ jsxs("div", {
|
|
15098
15193
|
ref: containerRef,
|
|
15099
15194
|
className: "w-full space-y-2",
|
|
15100
15195
|
children: [single && selectedNode && /* @__PURE__ */ jsx(NodeSelectorBar, {
|
|
15101
|
-
|
|
15196
|
+
nodes,
|
|
15102
15197
|
selected: selectedNode.agentNodeId,
|
|
15103
15198
|
onSelect: onFallbackNodeChange
|
|
15104
15199
|
}), /* @__PURE__ */ jsx(MatrixGrid, {
|
|
@@ -18826,8 +18921,6 @@ var usePipelineExecutorGetAvailableEngines = trpc.pipelineExecutor.getAvailableE
|
|
|
18826
18921
|
var usePipelineExecutorGetSelectedEngine = trpc.pipelineExecutor.getSelectedEngine.useQuery;
|
|
18827
18922
|
/** Generated alias around `trpc.pipelineExecutor.getDefaultSteps.useQuery`. */
|
|
18828
18923
|
var usePipelineExecutorGetDefaultSteps = trpc.pipelineExecutor.getDefaultSteps.useQuery;
|
|
18829
|
-
/** Generated alias around `trpc.pipelineExecutor.reprobeEngine.useMutation`. */
|
|
18830
|
-
var usePipelineExecutorReprobeEngine = trpc.pipelineExecutor.reprobeEngine.useMutation;
|
|
18831
18924
|
/** Generated alias around `trpc.pipelineExecutor.getEngineProvisioning.useQuery`. */
|
|
18832
18925
|
var usePipelineExecutorGetEngineProvisioning = trpc.pipelineExecutor.getEngineProvisioning.useQuery;
|
|
18833
18926
|
/** Generated alias around `trpc.pipelineExecutor.getVideoPipelineSteps.useQuery`. */
|
|
@@ -18898,6 +18991,10 @@ var usePipelineExecutorGetDetectionConfigSchema = trpc.pipelineExecutor.getDetec
|
|
|
18898
18991
|
var usePipelineOrchestratorAssignPipeline = trpc.pipelineOrchestrator.assignPipeline.useMutation;
|
|
18899
18992
|
/** Generated alias around `trpc.pipelineOrchestrator.unassignPipeline.useMutation`. */
|
|
18900
18993
|
var usePipelineOrchestratorUnassignPipeline = trpc.pipelineOrchestrator.unassignPipeline.useMutation;
|
|
18994
|
+
/** Generated alias around `trpc.pipelineOrchestrator.setPipelineDevicePin.useMutation`. */
|
|
18995
|
+
var usePipelineOrchestratorSetPipelineDevicePin = trpc.pipelineOrchestrator.setPipelineDevicePin.useMutation;
|
|
18996
|
+
/** Generated alias around `trpc.pipelineOrchestrator.getPipelineDevicePin.useQuery`. */
|
|
18997
|
+
var usePipelineOrchestratorGetPipelineDevicePin = trpc.pipelineOrchestrator.getPipelineDevicePin.useQuery;
|
|
18901
18998
|
/** Generated alias around `trpc.pipelineOrchestrator.rebalance.useMutation`. */
|
|
18902
18999
|
var usePipelineOrchestratorRebalance = trpc.pipelineOrchestrator.rebalance.useMutation;
|
|
18903
19000
|
/** Generated alias around `trpc.pipelineOrchestrator.getPipelineAssignments.useQuery`. */
|
|
@@ -18930,8 +19027,6 @@ var usePipelineOrchestratorGetAudioAssignments = trpc.pipelineOrchestrator.getAu
|
|
|
18930
19027
|
var usePipelineOrchestratorGetAgentSettings = trpc.pipelineOrchestrator.getAgentSettings.useQuery;
|
|
18931
19028
|
/** Generated alias around `trpc.pipelineOrchestrator.listAgentSettings.useQuery`. */
|
|
18932
19029
|
var usePipelineOrchestratorListAgentSettings = trpc.pipelineOrchestrator.listAgentSettings.useQuery;
|
|
18933
|
-
/** Generated alias around `trpc.pipelineOrchestrator.setAgentAddonDefaults.useMutation`. */
|
|
18934
|
-
var usePipelineOrchestratorSetAgentAddonDefaults = trpc.pipelineOrchestrator.setAgentAddonDefaults.useMutation;
|
|
18935
19030
|
/** Generated alias around `trpc.pipelineOrchestrator.removeAgentSettings.useMutation`. */
|
|
18936
19031
|
var usePipelineOrchestratorRemoveAgentSettings = trpc.pipelineOrchestrator.removeAgentSettings.useMutation;
|
|
18937
19032
|
/** Generated alias around `trpc.pipelineOrchestrator.setAgentMaxCameras.useMutation`. */
|
|
@@ -18942,6 +19037,10 @@ var usePipelineOrchestratorSetAgentDetectWeight = trpc.pipelineOrchestrator.setA
|
|
|
18942
19037
|
var usePipelineOrchestratorSetAgentCapabilities = trpc.pipelineOrchestrator.setAgentCapabilities.useMutation;
|
|
18943
19038
|
/** Generated alias around `trpc.pipelineOrchestrator.setAgentReachableHost.useMutation`. */
|
|
18944
19039
|
var usePipelineOrchestratorSetAgentReachableHost = trpc.pipelineOrchestrator.setAgentReachableHost.useMutation;
|
|
19040
|
+
/** Generated alias around `trpc.pipelineOrchestrator.setAgentInferenceDevices.useMutation`. */
|
|
19041
|
+
var usePipelineOrchestratorSetAgentInferenceDevices = trpc.pipelineOrchestrator.setAgentInferenceDevices.useMutation;
|
|
19042
|
+
/** Generated alias around `trpc.pipelineOrchestrator.getNodeInferenceDevices.useQuery`. */
|
|
19043
|
+
var usePipelineOrchestratorGetNodeInferenceDevices = trpc.pipelineOrchestrator.getNodeInferenceDevices.useQuery;
|
|
18945
19044
|
/** Generated alias around `trpc.pipelineOrchestrator.resetNodePipelineDefaults.useMutation`. */
|
|
18946
19045
|
var usePipelineOrchestratorResetNodePipelineDefaults = trpc.pipelineOrchestrator.resetNodePipelineDefaults.useMutation;
|
|
18947
19046
|
/** Generated alias around `trpc.pipelineOrchestrator.getCameraSettings.useQuery`. */
|
|
@@ -28803,15 +28902,34 @@ function DeviceItemPreview({ trpc, device, status, enabled, showStatusPills = fa
|
|
|
28803
28902
|
}
|
|
28804
28903
|
//#endregion
|
|
28805
28904
|
//#region src/composites/device-item/status-dot.tsx
|
|
28905
|
+
/** The states that breathe (are "alive"). Offline + disabled are static. */
|
|
28906
|
+
function isAlive(status) {
|
|
28907
|
+
return status === "online" || status === "recording-continuous" || status === "recording-events";
|
|
28908
|
+
}
|
|
28806
28909
|
function resolveTitle(status, lastChangedAt) {
|
|
28807
|
-
|
|
28808
|
-
|
|
28809
|
-
|
|
28810
|
-
|
|
28910
|
+
switch (status) {
|
|
28911
|
+
case "disabled": return "Disabled";
|
|
28912
|
+
case "online": return "Online";
|
|
28913
|
+
case "recording-continuous": return "Recording · always";
|
|
28914
|
+
case "recording-events": return "Recording · on motion";
|
|
28915
|
+
case "offline": {
|
|
28916
|
+
const lastSeen = formatLastSeen(lastChangedAt);
|
|
28917
|
+
return lastSeen === null ? "Offline" : `Offline · last seen ${lastSeen}`;
|
|
28918
|
+
}
|
|
28919
|
+
}
|
|
28920
|
+
}
|
|
28921
|
+
function colorClass(status) {
|
|
28922
|
+
switch (status) {
|
|
28923
|
+
case "disabled": return "bg-black ring-1 ring-foreground-subtle/60";
|
|
28924
|
+
case "offline": return "bg-foreground-subtle";
|
|
28925
|
+
case "recording-continuous": return "bg-danger";
|
|
28926
|
+
case "recording-events": return "bg-info";
|
|
28927
|
+
case "online": return "bg-success";
|
|
28928
|
+
}
|
|
28811
28929
|
}
|
|
28812
28930
|
function StatusDot({ status, lastChangedAt }) {
|
|
28813
28931
|
return /* @__PURE__ */ jsx("span", {
|
|
28814
|
-
className: cn("h-1.5 w-1.5 rounded-full flex-shrink-0", status
|
|
28932
|
+
className: cn("h-1.5 w-1.5 rounded-full flex-shrink-0", colorClass(status), isAlive(status) && "animate-pulse"),
|
|
28815
28933
|
title: resolveTitle(status, lastChangedAt)
|
|
28816
28934
|
});
|
|
28817
28935
|
}
|
|
@@ -46907,4 +47025,4 @@ var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-NcxxQN8r.js")
|
|
|
46907
47025
|
/** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
|
|
46908
47026
|
var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-APgPLF7p.js").then((m) => ({ default: m.PrivacyMaskSettings })));
|
|
46909
47027
|
//#endregion
|
|
46910
|
-
export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, 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, DeviceStepMatrix, Dialog, 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, 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, RECORDED_PLAYBACK_MODES, RIGHT, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, ScopePicker, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, 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, allDeviceTypeFilterOptions, buildStepTreeFromSchema, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ensureMfHostInit, eventKindLabel, filterDeviceOptions, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupChildrenByLayout, hardwareLabel, humidifierTint, createLucideIcon as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextSort, normalizeForSearch, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, EyeOff as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, statusIcons, stripParentNamePrefix, Trash2 as t, 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, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, 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, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, 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, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetChildren, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, 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, useDeviceManagerSetDeviceLinks, 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, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetPreferred, useLocalNetworkList, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkSetAllowedAddresses, 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, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsClearTracks, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListTracks, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsWipeAllAnalytics, 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, usePipelineExecutorReprobeEngine, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorRebalance, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentAddonDefaults, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, usePipelineRunnerRunDetailSubtree, 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, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingLocateSegment, useRecordingPruneFootage, useRecordingReadSegmentBytes, useRecordingRescanStorage, useRecordingSetDeviceConfig, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorRecheckNow, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetRetentionConfig, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetRetentionConfig, useTamperGetStatus, useTemperatureSensorGetStatus, 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, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|
|
47028
|
+
export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, 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, DeviceStepMatrix, Dialog, 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, RECORDED_PLAYBACK_MODES, RIGHT, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, ScopePicker, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, 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, agentColumnKey, allDeviceTypeFilterOptions, buildStepTreeFromSchema, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ensureMfHostInit, eventKindLabel, filterDeviceOptions, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, hardwareLabel, humidifierTint, createLucideIcon as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextSort, normalizeForSearch, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, EyeOff as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, statusIcons, stripParentNamePrefix, Trash2 as t, 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, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, 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, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, 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, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetChildren, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, 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, useDeviceManagerSetDeviceLinks, 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, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetPreferred, useLocalNetworkList, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkSetAllowedAddresses, 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, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsClearTracks, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListTracks, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsWipeAllAnalytics, 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, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorRebalance, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, usePipelineRunnerRunDetailSubtree, 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, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingLocateSegment, useRecordingPruneFootage, useRecordingReadSegmentBytes, useRecordingRescanStorage, useRecordingSetDeviceConfig, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorRecheckNow, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetRetentionConfig, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetRetentionConfig, useTamperGetStatus, useTemperatureSensorGetStatus, 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, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|