@camstack/ui-library 1.2.32 → 1.2.34

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.
@@ -13,8 +13,8 @@ export { DeviceStepMatrix } from './device-step-matrix';
13
13
  export type { DeviceStepMatrixProps, StepGate } from './device-step-matrix';
14
14
  export { shouldUseSingleNode, agentColumnKey, groupAgentColumns } from './pipeline-matrix-shared';
15
15
  export type { AgentColumnGroup, AgentColumnIdentity, MatrixSelectedCell, } from './pipeline-matrix-shared';
16
- export { resolveStepDefaultModel } from './resolve-step-default-model';
17
- export type { StepModelCatalog } from './resolve-step-default-model';
16
+ export { resolveStepDefaultModel, resolveEffectiveDefaultModel, resolveEffectiveStepModel, stepHasModelForFormat, stepModelOptions, } from './resolve-step-default-model';
17
+ export type { EffectiveStepModelInput, StepModelCatalog, StepModelFormatBuilds, } from './resolve-step-default-model';
18
18
  export { NodePicker } from './node-picker';
19
19
  export type { NodePickerProps } from './node-picker';
20
20
  export * from './status-badge';
@@ -1,5 +1,20 @@
1
1
  /**
2
- * resolve-step-default-model — the pure, UI-side mirror of the runner's
2
+ * resolve-step-default-model — the ONE step-model primitive every admin-ui
3
+ * surface that shows or edits a step's model consumes. Two questions, two
4
+ * exported answers, no local copies:
5
+ *
6
+ * - which models may this step run on this device? → `stepModelOptions`
7
+ * (and its boolean form `stepHasModelForFormat`);
8
+ * - which model does it ACTUALLY run right now? → `resolveEffectiveStepModel`
9
+ * (override → base → `resolveEffectiveDefaultModel`).
10
+ *
11
+ * Consumers: `AgentStepEditor` (the drawer picker), `NodeDeviceStepsMatrix`
12
+ * (per-node base), `DeviceStepOverrideTab` (per-camera override), the Models
13
+ * page and `pipeline-mirror`. They are views of the same decision and drifted
14
+ * apart once already — see `resolveEffectiveDefaultModel` for the bite.
15
+ * `scripts/check-step-model-single-owner.ts` is what stops the next copy.
16
+ *
17
+ * The rest of this file is the pure, UI-side mirror of the runner's
3
18
  * `getDefaultModelForFormat` (`@camstack/addon-pipeline`
4
19
  * `registry/step-definitions.ts`). The steps×device matrices need to show, per
5
20
  * cell, the model a STEP would actually run on a device's engine format — but
@@ -37,3 +52,64 @@ export interface StepModelCatalog {
37
52
  readonly defaultModelIdByFormat?: Readonly<Record<string, string>>;
38
53
  }
39
54
  export declare function resolveStepDefaultModel(catalog: StepModelCatalog, format: string): string;
55
+ /**
56
+ * The model a matrix CELL shows as this step's effective default on `device`.
57
+ *
58
+ * The device's ELECTED model (`device.defaultModelId`, the per-device
59
+ * object-detection election) applies ONLY when this step's catalog actually
60
+ * contains it — `slot === 'detector'` alone is too wide, because
61
+ * package-detection shares the detector slot with the root step. Bit live
62
+ * 2026-08-08: rfdetr-package became the package step's default and every
63
+ * matrix cell still showed the device's yolo as the "selected" model, because
64
+ * the election was applied slot-wide. Membership is the principled gate: an
65
+ * elected model this step cannot run is never displayed for it.
66
+ */
67
+ export declare function resolveEffectiveDefaultModel(catalog: StepModelCatalog & {
68
+ readonly slot?: string;
69
+ }, device: {
70
+ readonly format?: string;
71
+ readonly defaultModelId?: string;
72
+ } | null | undefined): string | undefined;
73
+ /**
74
+ * The minimal model shape option-derivation needs: a per-format build map.
75
+ * `PipelineAddonSchema['models'][number]` is structurally assignable, and the
76
+ * generic below returns the CALLER's element type so a picker still receives
77
+ * `name` / `group` / `sizeMB`.
78
+ */
79
+ export interface StepModelFormatBuilds {
80
+ readonly formats: Readonly<Record<string, unknown>>;
81
+ }
82
+ /**
83
+ * The models a step may run on an engine `format` — the ONE derivation of the
84
+ * option list. An unknown format yields NOTHING rather than everything: a
85
+ * picker that offered a model with no build for the device would write a pin
86
+ * the runner cannot honour.
87
+ */
88
+ export declare function stepModelOptions<M extends StepModelFormatBuilds>(models: readonly M[], format: string | undefined): readonly M[];
89
+ /** Can this step run on `format` at all? (`false` ⇒ the caller renders "⚠ skip"/"—".) */
90
+ export declare function stepHasModelForFormat(models: readonly StepModelFormatBuilds[], format: string | undefined): boolean;
91
+ /** The layers a surface may pin, outermost first. Both are optional per surface. */
92
+ export interface EffectiveStepModelInput {
93
+ readonly catalog: StepModelCatalog & {
94
+ readonly slot?: string;
95
+ };
96
+ readonly device: {
97
+ readonly format?: string;
98
+ readonly defaultModelId?: string;
99
+ } | null | undefined;
100
+ /** Per-camera override (`stepOverridesByDevice[node][deviceKey][step].modelId`). */
101
+ readonly override?: string | undefined;
102
+ /** Per-(node,device) base (`inferenceDevices[node][deviceKey].steps[step].modelId`). */
103
+ readonly base?: string | undefined;
104
+ }
105
+ /**
106
+ * The model a step ACTUALLY runs for a (device, camera) — the whole effective
107
+ * chain in one place: per-camera override → per-(node,device) base → the
108
+ * resolved default (`resolveEffectiveDefaultModel`).
109
+ *
110
+ * Every surface calls this: the matrix cell, and the drawer's picker seed. They
111
+ * are the same number, and the only way to keep them the same number is to have
112
+ * one function produce it. A surface that owns fewer layers omits them (the node
113
+ * matrix passes no `override`) — it does NOT get its own resolver.
114
+ */
115
+ export declare function resolveEffectiveStepModel(input: EffectiveStepModelInput): string | undefined;
@@ -1083,6 +1083,28 @@ export declare const usePipelineAnalyticsListOpsLog: typeof trpc.pipelineAnalyti
1083
1083
  export declare const usePipelineAnalyticsGetTrainingExportSummary: typeof trpc.pipelineAnalytics.getTrainingExportSummary.useQuery;
1084
1084
  /** Generated alias around `trpc.pipelineAnalytics.getTrainingExportUrl.useQuery`. */
1085
1085
  export declare const usePipelineAnalyticsGetTrainingExportUrl: typeof trpc.pipelineAnalytics.getTrainingExportUrl.useQuery;
1086
+ /** Generated alias around `trpc.pipelineAnalytics.listRetrainStaging.useQuery`. */
1087
+ export declare const usePipelineAnalyticsListRetrainStaging: typeof trpc.pipelineAnalytics.listRetrainStaging.useQuery;
1088
+ /** Generated alias around `trpc.pipelineAnalytics.listRetrainFrames.useQuery`. */
1089
+ export declare const usePipelineAnalyticsListRetrainFrames: typeof trpc.pipelineAnalytics.listRetrainFrames.useQuery;
1090
+ /** Generated alias around `trpc.pipelineAnalytics.selectRetrainFrames.useMutation`. */
1091
+ export declare const usePipelineAnalyticsSelectRetrainFrames: typeof trpc.pipelineAnalytics.selectRetrainFrames.useMutation;
1092
+ /** Generated alias around `trpc.pipelineAnalytics.deselectRetrainFrame.useMutation`. */
1093
+ export declare const usePipelineAnalyticsDeselectRetrainFrame: typeof trpc.pipelineAnalytics.deselectRetrainFrame.useMutation;
1094
+ /** Generated alias around `trpc.pipelineAnalytics.getRetrainFrameImage.useQuery`. */
1095
+ export declare const usePipelineAnalyticsGetRetrainFrameImage: typeof trpc.pipelineAnalytics.getRetrainFrameImage.useQuery;
1096
+ /** Generated alias around `trpc.pipelineAnalytics.proposeRetrainAnnotations.useMutation`. */
1097
+ export declare const usePipelineAnalyticsProposeRetrainAnnotations: typeof trpc.pipelineAnalytics.proposeRetrainAnnotations.useMutation;
1098
+ /** Generated alias around `trpc.pipelineAnalytics.listRetrainAnnotations.useQuery`. */
1099
+ export declare const usePipelineAnalyticsListRetrainAnnotations: typeof trpc.pipelineAnalytics.listRetrainAnnotations.useQuery;
1100
+ /** Generated alias around `trpc.pipelineAnalytics.saveRetrainAnnotations.useMutation`. */
1101
+ export declare const usePipelineAnalyticsSaveRetrainAnnotations: typeof trpc.pipelineAnalytics.saveRetrainAnnotations.useMutation;
1102
+ /** Generated alias around `trpc.pipelineAnalytics.completeRetrainTrack.useMutation`. */
1103
+ export declare const usePipelineAnalyticsCompleteRetrainTrack: typeof trpc.pipelineAnalytics.completeRetrainTrack.useMutation;
1104
+ /** Generated alias around `trpc.pipelineAnalytics.restageRetrainTrack.useMutation`. */
1105
+ export declare const usePipelineAnalyticsRestageRetrainTrack: typeof trpc.pipelineAnalytics.restageRetrainTrack.useMutation;
1106
+ /** Generated alias around `trpc.pipelineAnalytics.getRetrainExportUrl.useQuery`. */
1107
+ export declare const usePipelineAnalyticsGetRetrainExportUrl: typeof trpc.pipelineAnalytics.getRetrainExportUrl.useQuery;
1086
1108
  /** Generated alias around `trpc.pipelineAnalytics.getEventMedia.useQuery`. */
1087
1109
  export declare const usePipelineAnalyticsGetEventMedia: typeof trpc.pipelineAnalytics.getEventMedia.useQuery;
1088
1110
  /** Generated alias around `trpc.pipelineAnalytics.getTrackMedia.useQuery`. */
@@ -1551,6 +1573,10 @@ export declare const useStreamBrokerAssignProfile: typeof trpc.streamBroker.assi
1551
1573
  export declare const useStreamBrokerUnassignProfile: typeof trpc.streamBroker.unassignProfile.useMutation;
1552
1574
  /** Generated alias around `trpc.streamBroker.renderPreBufferClip.useMutation`. */
1553
1575
  export declare const useStreamBrokerRenderPreBufferClip: typeof trpc.streamBroker.renderPreBufferClip.useMutation;
1576
+ /** Generated alias around `trpc.streamBroker.produceEventMedia.useMutation`. */
1577
+ export declare const useStreamBrokerProduceEventMedia: typeof trpc.streamBroker.produceEventMedia.useMutation;
1578
+ /** Generated alias around `trpc.streamBroker.fetchEventMedia.useMutation`. */
1579
+ export declare const useStreamBrokerFetchEventMedia: typeof trpc.streamBroker.fetchEventMedia.useMutation;
1554
1580
  /** Generated alias around `trpc.streamBroker.listAllCameraStreams.useQuery`. */
1555
1581
  export declare const useStreamBrokerListAllCameraStreams: typeof trpc.streamBroker.listAllCameraStreams.useQuery;
1556
1582
  /** Generated alias around `trpc.streamBroker.listAllProfileSlots.useQuery`. */
package/dist/index.cjs CHANGED
@@ -3733,6 +3733,62 @@ var CHIP_BASE = "inline-flex items-center gap-1 rounded-full border px-1.5 py-0.
3733
3733
  var CHIP_ACTIVE = "border-primary/50 bg-primary/15 text-primary";
3734
3734
  var CHIP_INACTIVE = "border-border bg-surface text-foreground-subtle hover:bg-surface-hover";
3735
3735
  //#endregion
3736
+ //#region src/composites/resolve-step-default-model.ts
3737
+ function resolveStepDefaultModel(catalog, format) {
3738
+ const hasFormatBuild = (modelId) => catalog.models.find((m) => m.id === modelId)?.formats[format] !== void 0;
3739
+ const declared = catalog.defaultModelIdByFormat?.[format];
3740
+ if (declared !== void 0 && hasFormatBuild(declared)) return declared;
3741
+ if (hasFormatBuild(catalog.defaultModelId)) return catalog.defaultModelId;
3742
+ const available = catalog.models.filter((m) => m.formats[format] !== void 0 && m.legacy !== true);
3743
+ if (available.length === 0) return catalog.defaultModelId;
3744
+ return [...available].toSorted((a, b) => (a.formats[format]?.sizeMB ?? Infinity) - (b.formats[format]?.sizeMB ?? Infinity))[0].id;
3745
+ }
3746
+ /**
3747
+ * The model a matrix CELL shows as this step's effective default on `device`.
3748
+ *
3749
+ * The device's ELECTED model (`device.defaultModelId`, the per-device
3750
+ * object-detection election) applies ONLY when this step's catalog actually
3751
+ * contains it — `slot === 'detector'` alone is too wide, because
3752
+ * package-detection shares the detector slot with the root step. Bit live
3753
+ * 2026-08-08: rfdetr-package became the package step's default and every
3754
+ * matrix cell still showed the device's yolo as the "selected" model, because
3755
+ * the election was applied slot-wide. Membership is the principled gate: an
3756
+ * elected model this step cannot run is never displayed for it.
3757
+ */
3758
+ function resolveEffectiveDefaultModel(catalog, device) {
3759
+ const format = device?.format;
3760
+ if (format === void 0) return void 0;
3761
+ const elected = device?.defaultModelId;
3762
+ return catalog.slot === "detector" && elected !== void 0 && catalog.models.some((m) => m.id === elected) ? elected : resolveStepDefaultModel(catalog, format);
3763
+ }
3764
+ /**
3765
+ * The models a step may run on an engine `format` — the ONE derivation of the
3766
+ * option list. An unknown format yields NOTHING rather than everything: a
3767
+ * picker that offered a model with no build for the device would write a pin
3768
+ * the runner cannot honour.
3769
+ */
3770
+ function stepModelOptions(models, format) {
3771
+ if (format === void 0) return [];
3772
+ return models.filter((m) => m.formats[format] !== void 0);
3773
+ }
3774
+ /** Can this step run on `format` at all? (`false` ⇒ the caller renders "⚠ skip"/"—".) */
3775
+ function stepHasModelForFormat(models, format) {
3776
+ return stepModelOptions(models, format).length > 0;
3777
+ }
3778
+ /**
3779
+ * The model a step ACTUALLY runs for a (device, camera) — the whole effective
3780
+ * chain in one place: per-camera override → per-(node,device) base → the
3781
+ * resolved default (`resolveEffectiveDefaultModel`).
3782
+ *
3783
+ * Every surface calls this: the matrix cell, and the drawer's picker seed. They
3784
+ * are the same number, and the only way to keep them the same number is to have
3785
+ * one function produce it. A surface that owns fewer layers omits them (the node
3786
+ * matrix passes no `override`) — it does NOT get its own resolver.
3787
+ */
3788
+ function resolveEffectiveStepModel(input) {
3789
+ return input.override ?? input.base ?? resolveEffectiveDefaultModel(input.catalog, input.device);
3790
+ }
3791
+ //#endregion
3736
3792
  //#region src/lib/pipeline-mirror.ts
3737
3793
  function findAddonInCatalog(catalog, addonId) {
3738
3794
  for (const slot of catalog.slots) for (const addon of slot.addons) if (addon.id === addonId) return addon;
@@ -3741,8 +3797,20 @@ function findAddonInCatalog(catalog, addonId) {
3741
3797
  function findModel(addon, modelId) {
3742
3798
  return addon.models.find((m) => m.id === modelId) ?? null;
3743
3799
  }
3744
- function firstModelFor(addon, format) {
3745
- return addon.models.find((m) => Boolean(m.formats[format])) ?? null;
3800
+ /**
3801
+ * The model to adopt on the target when the source's pin has no build there.
3802
+ *
3803
+ * Options come from the shared step-model primitive, and the CHOICE is the
3804
+ * step's own resolved default for that format — not "the first entry in the
3805
+ * array", which is how a mirror could land on `yolov8n-package` for a step
3806
+ * whose declared default is `rfdetr-package`, disagreeing with the very cell
3807
+ * the steps matrix renders right after the mirror.
3808
+ */
3809
+ function fallbackModelFor(addon, format) {
3810
+ const options = stepModelOptions(addon.models, format);
3811
+ if (options.length === 0) return null;
3812
+ const resolved = resolveStepDefaultModel(addon, format);
3813
+ return options.find((m) => m.id === resolved) ?? options[0] ?? null;
3746
3814
  }
3747
3815
  function dropModelSpecific(settings, targetAddon) {
3748
3816
  const allowedKeys = new Set((targetAddon.configSchema ?? []).map((f) => f.key));
@@ -3783,11 +3851,11 @@ function mirror(input) {
3783
3851
  outcome = "exact";
3784
3852
  } else {
3785
3853
  const srcModel = findModel(targetAddon, srcCfg.modelId);
3786
- if (srcModel !== null && Boolean(srcModel.formats[target.engine.format])) {
3854
+ if (srcModel !== null && stepModelOptions([srcModel], target.engine.format).length > 0) {
3787
3855
  chosenModelId = srcCfg.modelId;
3788
3856
  outcome = "exact";
3789
3857
  } else {
3790
- const fallback = firstModelFor(targetAddon, target.engine.format);
3858
+ const fallback = fallbackModelFor(targetAddon, target.engine.format);
3791
3859
  if (!fallback) {
3792
3860
  out.push({
3793
3861
  addonId,
@@ -12995,8 +13063,18 @@ function DialogTrigger({ children, ...props }) {
12995
13063
  * is capped to the viewport (`w-[calc(100vw-2rem)]`) rather than a bare
12996
13064
  * `w-full` (which would overflow/clip a centered dialog); the per-variant
12997
13065
  * `max-w-*` keeps small dialogs small while the cap prevents overflow.
12998
- */
12999
- var contentVariants = cva("fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 m-0 w-[calc(100vw-2rem)] bg-background-elevated text-foreground border border-border rounded-lg p-4 backdrop:bg-black/50 backdrop:backdrop-blur-sm max-h-[calc(100dvh-2rem)] overflow-y-auto [&:not([open])]:hidden", {
13066
+ *
13067
+ * Height is capped against the SAFE viewport, not the raw one. A top-layer
13068
+ * `fixed` dialog is viewport-relative, and under `viewport-fit=cover` the
13069
+ * viewport extends behind the iOS notch/Dynamic Island and home indicator —
13070
+ * so a dialog tall enough to hit its `max-h` put its header under the clock.
13071
+ * Because the box is centred on the viewport (not on the safe area), the cap
13072
+ * has to subtract TWICE the LARGER of the two insets for the box to clear
13073
+ * both edges; using each inset once would still overflow the taller side
13074
+ * whenever they are asymmetric (they are: ~59px top vs ~34px bottom). Every
13075
+ * term collapses to the previous `100dvh - 2rem` where the insets are 0.
13076
+ */
13077
+ var contentVariants = cva("fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 m-0 w-[calc(100vw-2rem)] bg-background-elevated text-foreground border border-border rounded-lg p-4 backdrop:bg-black/50 backdrop:backdrop-blur-sm max-h-[calc(100dvh-2rem-2*max(env(safe-area-inset-top),env(safe-area-inset-bottom)))] overflow-y-auto [&:not([open])]:hidden", {
13000
13078
  variants: {
13001
13079
  width: {
13002
13080
  sm: "max-w-sm",
@@ -13005,7 +13083,7 @@ var contentVariants = cva("fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-
13005
13083
  },
13006
13084
  placement: {
13007
13085
  center: "",
13008
- "sheet-on-mobile": "bottom-0 left-0 right-0 top-auto w-full max-w-full translate-x-0 translate-y-0 rounded-b-none max-h-[92dvh] md:left-1/2 md:top-1/2 md:-translate-x-1/2 md:-translate-y-1/2 md:rounded-lg md:bottom-auto md:max-h-[calc(100dvh-2rem)]"
13086
+ "sheet-on-mobile": "bottom-0 left-0 right-0 top-auto w-full max-w-full translate-x-0 translate-y-0 rounded-b-none max-h-[92dvh] pb-[calc(1rem+env(safe-area-inset-bottom))] md:left-1/2 md:top-1/2 md:-translate-x-1/2 md:-translate-y-1/2 md:rounded-lg md:bottom-auto md:pb-4 md:max-h-[calc(100dvh-2rem-2*max(env(safe-area-inset-top),env(safe-area-inset-bottom)))]"
13009
13087
  }
13010
13088
  },
13011
13089
  compoundVariants: [
@@ -13331,7 +13409,7 @@ function BottomSheet({ open, onClose, title, children, className }) {
13331
13409
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
13332
13410
  role: "dialog",
13333
13411
  "aria-modal": "true",
13334
- className: cn("fixed inset-x-0 bottom-0 z-50 flex flex-col bg-background-elevated border-t border-border rounded-t-xl shadow-2xl transition-transform duration-200 ease-out", "max-h-[80dvh]", open ? "translate-y-0" : "translate-y-full", className),
13412
+ className: cn("fixed inset-x-0 bottom-0 z-50 flex flex-col bg-background-elevated border-t border-border rounded-t-xl shadow-2xl transition-transform duration-200 ease-out pb-[env(safe-area-inset-bottom)]", "max-h-[80dvh]", open ? "translate-y-0" : "translate-y-full", className),
13335
13413
  children: [
13336
13414
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
13337
13415
  className: "flex justify-center pt-2 pb-1",
@@ -13574,7 +13652,7 @@ function FloatingPanel({ title, onClose, children, defaultWidth = 360, defaultHe
13574
13652
  };
13575
13653
  }, [minWidth, minHeight]);
13576
13654
  if (isMobile) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
13577
- className: cn("fixed inset-x-0 bottom-0 z-50 rounded-t-xl border-t border-border bg-background-elevated shadow-2xl flex flex-col overflow-hidden", className),
13655
+ className: cn("fixed inset-x-0 bottom-0 z-50 rounded-t-xl border-t border-border bg-background-elevated shadow-2xl flex flex-col overflow-hidden pb-[env(safe-area-inset-bottom)]", className),
13578
13656
  style: { maxHeight: "60dvh" },
13579
13657
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
13580
13658
  className: "flex items-center justify-between gap-2 px-3 py-2 border-b border-border shrink-0 bg-surface",
@@ -14221,7 +14299,7 @@ function ModelPicker({ models, value, onChange, disabled }) {
14221
14299
  });
14222
14300
  if (!hasGroups) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
14223
14301
  className: "space-y-2",
14224
- children: [unresolvedBanner, flatSelect(models)]
14302
+ children: [unresolvedBanner, flatSelect(models, "— select a model —")]
14225
14303
  });
14226
14304
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
14227
14305
  className: "space-y-3",
@@ -14748,7 +14826,7 @@ function DeviceModeEditor({ addon, agentDefault, agentNodeId, currentPatch, mode
14748
14826
  }
14749
14827
  function AgentStepEditor(props) {
14750
14828
  const { mode, addon, agentDefault, agentNodeId, currentPatch, onChangeAgentConfig, onChangePatch, engineFormat, effectiveModelId } = props;
14751
- const modelsForFormat = (0, react$1.useMemo)(() => addon.models.filter((m) => Boolean(m.formats[engineFormat])), [addon.models, engineFormat]);
14829
+ const modelsForFormat = (0, react$1.useMemo)(() => stepModelOptions(addon.models, engineFormat), [addon.models, engineFormat]);
14752
14830
  if (mode === "agent") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AgentModeEditor, {
14753
14831
  addon,
14754
14832
  agentDefault,
@@ -15420,17 +15498,6 @@ function DeviceStepMatrix({ tree, agents, gateFor, getCellState, onCellClick, se
15420
15498
  });
15421
15499
  }
15422
15500
  //#endregion
15423
- //#region src/composites/resolve-step-default-model.ts
15424
- function resolveStepDefaultModel(catalog, format) {
15425
- const hasFormatBuild = (modelId) => catalog.models.find((m) => m.id === modelId)?.formats[format] !== void 0;
15426
- const declared = catalog.defaultModelIdByFormat?.[format];
15427
- if (declared !== void 0 && hasFormatBuild(declared)) return declared;
15428
- if (hasFormatBuild(catalog.defaultModelId)) return catalog.defaultModelId;
15429
- const available = catalog.models.filter((m) => m.formats[format] !== void 0 && m.legacy !== true);
15430
- if (available.length === 0) return catalog.defaultModelId;
15431
- return [...available].toSorted((a, b) => (a.formats[format]?.sizeMB ?? Infinity) - (b.formats[format]?.sizeMB ?? Infinity))[0].id;
15432
- }
15433
- //#endregion
15434
15501
  //#region src/trpc-react.ts
15435
15502
  /**
15436
15503
  * Shared typed React Query proxy for the backend AppRouter.
@@ -19240,6 +19307,28 @@ var usePipelineAnalyticsListOpsLog = trpc.pipelineAnalytics.listOpsLog.useQuery;
19240
19307
  var usePipelineAnalyticsGetTrainingExportSummary = trpc.pipelineAnalytics.getTrainingExportSummary.useQuery;
19241
19308
  /** Generated alias around `trpc.pipelineAnalytics.getTrainingExportUrl.useQuery`. */
19242
19309
  var usePipelineAnalyticsGetTrainingExportUrl = trpc.pipelineAnalytics.getTrainingExportUrl.useQuery;
19310
+ /** Generated alias around `trpc.pipelineAnalytics.listRetrainStaging.useQuery`. */
19311
+ var usePipelineAnalyticsListRetrainStaging = trpc.pipelineAnalytics.listRetrainStaging.useQuery;
19312
+ /** Generated alias around `trpc.pipelineAnalytics.listRetrainFrames.useQuery`. */
19313
+ var usePipelineAnalyticsListRetrainFrames = trpc.pipelineAnalytics.listRetrainFrames.useQuery;
19314
+ /** Generated alias around `trpc.pipelineAnalytics.selectRetrainFrames.useMutation`. */
19315
+ var usePipelineAnalyticsSelectRetrainFrames = trpc.pipelineAnalytics.selectRetrainFrames.useMutation;
19316
+ /** Generated alias around `trpc.pipelineAnalytics.deselectRetrainFrame.useMutation`. */
19317
+ var usePipelineAnalyticsDeselectRetrainFrame = trpc.pipelineAnalytics.deselectRetrainFrame.useMutation;
19318
+ /** Generated alias around `trpc.pipelineAnalytics.getRetrainFrameImage.useQuery`. */
19319
+ var usePipelineAnalyticsGetRetrainFrameImage = trpc.pipelineAnalytics.getRetrainFrameImage.useQuery;
19320
+ /** Generated alias around `trpc.pipelineAnalytics.proposeRetrainAnnotations.useMutation`. */
19321
+ var usePipelineAnalyticsProposeRetrainAnnotations = trpc.pipelineAnalytics.proposeRetrainAnnotations.useMutation;
19322
+ /** Generated alias around `trpc.pipelineAnalytics.listRetrainAnnotations.useQuery`. */
19323
+ var usePipelineAnalyticsListRetrainAnnotations = trpc.pipelineAnalytics.listRetrainAnnotations.useQuery;
19324
+ /** Generated alias around `trpc.pipelineAnalytics.saveRetrainAnnotations.useMutation`. */
19325
+ var usePipelineAnalyticsSaveRetrainAnnotations = trpc.pipelineAnalytics.saveRetrainAnnotations.useMutation;
19326
+ /** Generated alias around `trpc.pipelineAnalytics.completeRetrainTrack.useMutation`. */
19327
+ var usePipelineAnalyticsCompleteRetrainTrack = trpc.pipelineAnalytics.completeRetrainTrack.useMutation;
19328
+ /** Generated alias around `trpc.pipelineAnalytics.restageRetrainTrack.useMutation`. */
19329
+ var usePipelineAnalyticsRestageRetrainTrack = trpc.pipelineAnalytics.restageRetrainTrack.useMutation;
19330
+ /** Generated alias around `trpc.pipelineAnalytics.getRetrainExportUrl.useQuery`. */
19331
+ var usePipelineAnalyticsGetRetrainExportUrl = trpc.pipelineAnalytics.getRetrainExportUrl.useQuery;
19243
19332
  /** Generated alias around `trpc.pipelineAnalytics.getEventMedia.useQuery`. */
19244
19333
  var usePipelineAnalyticsGetEventMedia = trpc.pipelineAnalytics.getEventMedia.useQuery;
19245
19334
  /** Generated alias around `trpc.pipelineAnalytics.getTrackMedia.useQuery`. */
@@ -19708,6 +19797,10 @@ var useStreamBrokerAssignProfile = trpc.streamBroker.assignProfile.useMutation;
19708
19797
  var useStreamBrokerUnassignProfile = trpc.streamBroker.unassignProfile.useMutation;
19709
19798
  /** Generated alias around `trpc.streamBroker.renderPreBufferClip.useMutation`. */
19710
19799
  var useStreamBrokerRenderPreBufferClip = trpc.streamBroker.renderPreBufferClip.useMutation;
19800
+ /** Generated alias around `trpc.streamBroker.produceEventMedia.useMutation`. */
19801
+ var useStreamBrokerProduceEventMedia = trpc.streamBroker.produceEventMedia.useMutation;
19802
+ /** Generated alias around `trpc.streamBroker.fetchEventMedia.useMutation`. */
19803
+ var useStreamBrokerFetchEventMedia = trpc.streamBroker.fetchEventMedia.useMutation;
19711
19804
  /** Generated alias around `trpc.streamBroker.listAllCameraStreams.useQuery`. */
19712
19805
  var useStreamBrokerListAllCameraStreams = trpc.streamBroker.listAllCameraStreams.useQuery;
19713
19806
  /** Generated alias around `trpc.streamBroker.listAllProfileSlots.useQuery`. */
@@ -48229,6 +48322,8 @@ exports.resolveContainerPrimary = resolveContainerPrimary;
48229
48322
  exports.resolveControlAlign = resolveControlAlign;
48230
48323
  exports.resolveDeviceControl = resolveDeviceControl;
48231
48324
  exports.resolveDisplayIcon = resolveDisplayIcon;
48325
+ exports.resolveEffectiveDefaultModel = resolveEffectiveDefaultModel;
48326
+ exports.resolveEffectiveStepModel = resolveEffectiveStepModel;
48232
48327
  exports.resolveEventKindIcon = resolveEventKindIcon;
48233
48328
  exports.resolvePrimaryChild = resolvePrimaryChild;
48234
48329
  exports.resolveSensorDisplay = resolveSensorDisplay;
@@ -48242,6 +48337,8 @@ exports.shouldEmit = shouldEmit;
48242
48337
  exports.shouldUseSingleNode = shouldUseSingleNode;
48243
48338
  exports.sortRows = sortRows;
48244
48339
  exports.statusIcons = statusIcons;
48340
+ exports.stepHasModelForFormat = stepHasModelForFormat;
48341
+ exports.stepModelOptions = stepModelOptions;
48245
48342
  exports.stripParentNamePrefix = stripParentNamePrefix;
48246
48343
  exports.tankAlert = tankAlert;
48247
48344
  exports.themeToCss = require_theme_index.themeToCss$1;
@@ -48799,8 +48896,10 @@ exports.usePetFeederSetVolume = usePetFeederSetVolume;
48799
48896
  exports.usePipelineAnalyticsApplyDeviceSettingsPatch = usePipelineAnalyticsApplyDeviceSettingsPatch;
48800
48897
  exports.usePipelineAnalyticsCancelMediaRelocate = usePipelineAnalyticsCancelMediaRelocate;
48801
48898
  exports.usePipelineAnalyticsClearTracks = usePipelineAnalyticsClearTracks;
48899
+ exports.usePipelineAnalyticsCompleteRetrainTrack = usePipelineAnalyticsCompleteRetrainTrack;
48802
48900
  exports.usePipelineAnalyticsDeleteDeviceEvents = usePipelineAnalyticsDeleteDeviceEvents;
48803
48901
  exports.usePipelineAnalyticsDeleteTracks = usePipelineAnalyticsDeleteTracks;
48902
+ exports.usePipelineAnalyticsDeselectRetrainFrame = usePipelineAnalyticsDeselectRetrainFrame;
48804
48903
  exports.usePipelineAnalyticsGetActiveTracks = usePipelineAnalyticsGetActiveTracks;
48805
48904
  exports.usePipelineAnalyticsGetAudioEvents = usePipelineAnalyticsGetAudioEvents;
48806
48905
  exports.usePipelineAnalyticsGetDeviceLiveContribution = usePipelineAnalyticsGetDeviceLiveContribution;
@@ -48813,6 +48912,8 @@ exports.usePipelineAnalyticsGetMediaRelocateStatus = usePipelineAnalyticsGetMedi
48813
48912
  exports.usePipelineAnalyticsGetMotionEvents = usePipelineAnalyticsGetMotionEvents;
48814
48913
  exports.usePipelineAnalyticsGetObjectEmbeddingRebuildStatus = usePipelineAnalyticsGetObjectEmbeddingRebuildStatus;
48815
48914
  exports.usePipelineAnalyticsGetObjectEvents = usePipelineAnalyticsGetObjectEvents;
48915
+ exports.usePipelineAnalyticsGetRetrainExportUrl = usePipelineAnalyticsGetRetrainExportUrl;
48916
+ exports.usePipelineAnalyticsGetRetrainFrameImage = usePipelineAnalyticsGetRetrainFrameImage;
48816
48917
  exports.usePipelineAnalyticsGetSensorEvents = usePipelineAnalyticsGetSensorEvents;
48817
48918
  exports.usePipelineAnalyticsGetTrack = usePipelineAnalyticsGetTrack;
48818
48919
  exports.usePipelineAnalyticsGetTrackMedia = usePipelineAnalyticsGetTrackMedia;
@@ -48822,14 +48923,21 @@ exports.usePipelineAnalyticsListEventKinds = usePipelineAnalyticsListEventKinds;
48822
48923
  exports.usePipelineAnalyticsListEventKindsBatch = usePipelineAnalyticsListEventKindsBatch;
48823
48924
  exports.usePipelineAnalyticsListOpsLog = usePipelineAnalyticsListOpsLog;
48824
48925
  exports.usePipelineAnalyticsListRecentTracks = usePipelineAnalyticsListRecentTracks;
48926
+ exports.usePipelineAnalyticsListRetrainAnnotations = usePipelineAnalyticsListRetrainAnnotations;
48927
+ exports.usePipelineAnalyticsListRetrainFrames = usePipelineAnalyticsListRetrainFrames;
48928
+ exports.usePipelineAnalyticsListRetrainStaging = usePipelineAnalyticsListRetrainStaging;
48825
48929
  exports.usePipelineAnalyticsListTrackMedia = usePipelineAnalyticsListTrackMedia;
48826
48930
  exports.usePipelineAnalyticsListTracks = usePipelineAnalyticsListTracks;
48931
+ exports.usePipelineAnalyticsProposeRetrainAnnotations = usePipelineAnalyticsProposeRetrainAnnotations;
48827
48932
  exports.usePipelineAnalyticsPruneEvents = usePipelineAnalyticsPruneEvents;
48828
48933
  exports.usePipelineAnalyticsPruneEventsBefore = usePipelineAnalyticsPruneEventsBefore;
48829
48934
  exports.usePipelineAnalyticsPruneTracksBefore = usePipelineAnalyticsPruneTracksBefore;
48830
48935
  exports.usePipelineAnalyticsRebuildObjectEmbeddings = usePipelineAnalyticsRebuildObjectEmbeddings;
48831
48936
  exports.usePipelineAnalyticsRelocateMedia = usePipelineAnalyticsRelocateMedia;
48937
+ exports.usePipelineAnalyticsRestageRetrainTrack = usePipelineAnalyticsRestageRetrainTrack;
48938
+ exports.usePipelineAnalyticsSaveRetrainAnnotations = usePipelineAnalyticsSaveRetrainAnnotations;
48832
48939
  exports.usePipelineAnalyticsSearchObjectEvents = usePipelineAnalyticsSearchObjectEvents;
48940
+ exports.usePipelineAnalyticsSelectRetrainFrames = usePipelineAnalyticsSelectRetrainFrames;
48833
48941
  exports.usePipelineAnalyticsSetTrackFlags = usePipelineAnalyticsSetTrackFlags;
48834
48942
  exports.usePipelineAnalyticsWipeAllAnalytics = usePipelineAnalyticsWipeAllAnalytics;
48835
48943
  exports.usePipelineAnalyticsWipeObjectEmbeddings = usePipelineAnalyticsWipeObjectEmbeddings;
@@ -49062,6 +49170,7 @@ exports.useStorageWriteChunk = useStorageWriteChunk;
49062
49170
  exports.useStreamBrokerAcquireEgressTranscode = useStreamBrokerAcquireEgressTranscode;
49063
49171
  exports.useStreamBrokerApplyDeviceSettingsPatch = useStreamBrokerApplyDeviceSettingsPatch;
49064
49172
  exports.useStreamBrokerAssignProfile = useStreamBrokerAssignProfile;
49173
+ exports.useStreamBrokerFetchEventMedia = useStreamBrokerFetchEventMedia;
49065
49174
  exports.useStreamBrokerGetAllRtspEntries = useStreamBrokerGetAllRtspEntries;
49066
49175
  exports.useStreamBrokerGetBrokerStats = useStreamBrokerGetBrokerStats;
49067
49176
  exports.useStreamBrokerGetDeviceAudioMute = useStreamBrokerGetDeviceAudioMute;
@@ -49078,6 +49187,7 @@ exports.useStreamBrokerListAllCameraStreams = useStreamBrokerListAllCameraStream
49078
49187
  exports.useStreamBrokerListAllProfileSlots = useStreamBrokerListAllProfileSlots;
49079
49188
  exports.useStreamBrokerListClients = useStreamBrokerListClients;
49080
49189
  exports.useStreamBrokerProbeStream = useStreamBrokerProbeStream;
49190
+ exports.useStreamBrokerProduceEventMedia = useStreamBrokerProduceEventMedia;
49081
49191
  exports.useStreamBrokerPublishCameraStream = useStreamBrokerPublishCameraStream;
49082
49192
  exports.useStreamBrokerPullAudioChunks = useStreamBrokerPullAudioChunks;
49083
49193
  exports.useStreamBrokerPullFrameHandles = useStreamBrokerPullFrameHandles;
package/dist/index.js CHANGED
@@ -3709,6 +3709,62 @@ var CHIP_BASE = "inline-flex items-center gap-1 rounded-full border px-1.5 py-0.
3709
3709
  var CHIP_ACTIVE = "border-primary/50 bg-primary/15 text-primary";
3710
3710
  var CHIP_INACTIVE = "border-border bg-surface text-foreground-subtle hover:bg-surface-hover";
3711
3711
  //#endregion
3712
+ //#region src/composites/resolve-step-default-model.ts
3713
+ function resolveStepDefaultModel(catalog, format) {
3714
+ const hasFormatBuild = (modelId) => catalog.models.find((m) => m.id === modelId)?.formats[format] !== void 0;
3715
+ const declared = catalog.defaultModelIdByFormat?.[format];
3716
+ if (declared !== void 0 && hasFormatBuild(declared)) return declared;
3717
+ if (hasFormatBuild(catalog.defaultModelId)) return catalog.defaultModelId;
3718
+ const available = catalog.models.filter((m) => m.formats[format] !== void 0 && m.legacy !== true);
3719
+ if (available.length === 0) return catalog.defaultModelId;
3720
+ return [...available].toSorted((a, b) => (a.formats[format]?.sizeMB ?? Infinity) - (b.formats[format]?.sizeMB ?? Infinity))[0].id;
3721
+ }
3722
+ /**
3723
+ * The model a matrix CELL shows as this step's effective default on `device`.
3724
+ *
3725
+ * The device's ELECTED model (`device.defaultModelId`, the per-device
3726
+ * object-detection election) applies ONLY when this step's catalog actually
3727
+ * contains it — `slot === 'detector'` alone is too wide, because
3728
+ * package-detection shares the detector slot with the root step. Bit live
3729
+ * 2026-08-08: rfdetr-package became the package step's default and every
3730
+ * matrix cell still showed the device's yolo as the "selected" model, because
3731
+ * the election was applied slot-wide. Membership is the principled gate: an
3732
+ * elected model this step cannot run is never displayed for it.
3733
+ */
3734
+ function resolveEffectiveDefaultModel(catalog, device) {
3735
+ const format = device?.format;
3736
+ if (format === void 0) return void 0;
3737
+ const elected = device?.defaultModelId;
3738
+ return catalog.slot === "detector" && elected !== void 0 && catalog.models.some((m) => m.id === elected) ? elected : resolveStepDefaultModel(catalog, format);
3739
+ }
3740
+ /**
3741
+ * The models a step may run on an engine `format` — the ONE derivation of the
3742
+ * option list. An unknown format yields NOTHING rather than everything: a
3743
+ * picker that offered a model with no build for the device would write a pin
3744
+ * the runner cannot honour.
3745
+ */
3746
+ function stepModelOptions(models, format) {
3747
+ if (format === void 0) return [];
3748
+ return models.filter((m) => m.formats[format] !== void 0);
3749
+ }
3750
+ /** Can this step run on `format` at all? (`false` ⇒ the caller renders "⚠ skip"/"—".) */
3751
+ function stepHasModelForFormat(models, format) {
3752
+ return stepModelOptions(models, format).length > 0;
3753
+ }
3754
+ /**
3755
+ * The model a step ACTUALLY runs for a (device, camera) — the whole effective
3756
+ * chain in one place: per-camera override → per-(node,device) base → the
3757
+ * resolved default (`resolveEffectiveDefaultModel`).
3758
+ *
3759
+ * Every surface calls this: the matrix cell, and the drawer's picker seed. They
3760
+ * are the same number, and the only way to keep them the same number is to have
3761
+ * one function produce it. A surface that owns fewer layers omits them (the node
3762
+ * matrix passes no `override`) — it does NOT get its own resolver.
3763
+ */
3764
+ function resolveEffectiveStepModel(input) {
3765
+ return input.override ?? input.base ?? resolveEffectiveDefaultModel(input.catalog, input.device);
3766
+ }
3767
+ //#endregion
3712
3768
  //#region src/lib/pipeline-mirror.ts
3713
3769
  function findAddonInCatalog(catalog, addonId) {
3714
3770
  for (const slot of catalog.slots) for (const addon of slot.addons) if (addon.id === addonId) return addon;
@@ -3717,8 +3773,20 @@ function findAddonInCatalog(catalog, addonId) {
3717
3773
  function findModel(addon, modelId) {
3718
3774
  return addon.models.find((m) => m.id === modelId) ?? null;
3719
3775
  }
3720
- function firstModelFor(addon, format) {
3721
- return addon.models.find((m) => Boolean(m.formats[format])) ?? null;
3776
+ /**
3777
+ * The model to adopt on the target when the source's pin has no build there.
3778
+ *
3779
+ * Options come from the shared step-model primitive, and the CHOICE is the
3780
+ * step's own resolved default for that format — not "the first entry in the
3781
+ * array", which is how a mirror could land on `yolov8n-package` for a step
3782
+ * whose declared default is `rfdetr-package`, disagreeing with the very cell
3783
+ * the steps matrix renders right after the mirror.
3784
+ */
3785
+ function fallbackModelFor(addon, format) {
3786
+ const options = stepModelOptions(addon.models, format);
3787
+ if (options.length === 0) return null;
3788
+ const resolved = resolveStepDefaultModel(addon, format);
3789
+ return options.find((m) => m.id === resolved) ?? options[0] ?? null;
3722
3790
  }
3723
3791
  function dropModelSpecific(settings, targetAddon) {
3724
3792
  const allowedKeys = new Set((targetAddon.configSchema ?? []).map((f) => f.key));
@@ -3759,11 +3827,11 @@ function mirror(input) {
3759
3827
  outcome = "exact";
3760
3828
  } else {
3761
3829
  const srcModel = findModel(targetAddon, srcCfg.modelId);
3762
- if (srcModel !== null && Boolean(srcModel.formats[target.engine.format])) {
3830
+ if (srcModel !== null && stepModelOptions([srcModel], target.engine.format).length > 0) {
3763
3831
  chosenModelId = srcCfg.modelId;
3764
3832
  outcome = "exact";
3765
3833
  } else {
3766
- const fallback = firstModelFor(targetAddon, target.engine.format);
3834
+ const fallback = fallbackModelFor(targetAddon, target.engine.format);
3767
3835
  if (!fallback) {
3768
3836
  out.push({
3769
3837
  addonId,
@@ -12971,8 +13039,18 @@ function DialogTrigger({ children, ...props }) {
12971
13039
  * is capped to the viewport (`w-[calc(100vw-2rem)]`) rather than a bare
12972
13040
  * `w-full` (which would overflow/clip a centered dialog); the per-variant
12973
13041
  * `max-w-*` keeps small dialogs small while the cap prevents overflow.
12974
- */
12975
- var contentVariants = cva("fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 m-0 w-[calc(100vw-2rem)] bg-background-elevated text-foreground border border-border rounded-lg p-4 backdrop:bg-black/50 backdrop:backdrop-blur-sm max-h-[calc(100dvh-2rem)] overflow-y-auto [&:not([open])]:hidden", {
13042
+ *
13043
+ * Height is capped against the SAFE viewport, not the raw one. A top-layer
13044
+ * `fixed` dialog is viewport-relative, and under `viewport-fit=cover` the
13045
+ * viewport extends behind the iOS notch/Dynamic Island and home indicator —
13046
+ * so a dialog tall enough to hit its `max-h` put its header under the clock.
13047
+ * Because the box is centred on the viewport (not on the safe area), the cap
13048
+ * has to subtract TWICE the LARGER of the two insets for the box to clear
13049
+ * both edges; using each inset once would still overflow the taller side
13050
+ * whenever they are asymmetric (they are: ~59px top vs ~34px bottom). Every
13051
+ * term collapses to the previous `100dvh - 2rem` where the insets are 0.
13052
+ */
13053
+ var contentVariants = cva("fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 m-0 w-[calc(100vw-2rem)] bg-background-elevated text-foreground border border-border rounded-lg p-4 backdrop:bg-black/50 backdrop:backdrop-blur-sm max-h-[calc(100dvh-2rem-2*max(env(safe-area-inset-top),env(safe-area-inset-bottom)))] overflow-y-auto [&:not([open])]:hidden", {
12976
13054
  variants: {
12977
13055
  width: {
12978
13056
  sm: "max-w-sm",
@@ -12981,7 +13059,7 @@ var contentVariants = cva("fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-
12981
13059
  },
12982
13060
  placement: {
12983
13061
  center: "",
12984
- "sheet-on-mobile": "bottom-0 left-0 right-0 top-auto w-full max-w-full translate-x-0 translate-y-0 rounded-b-none max-h-[92dvh] md:left-1/2 md:top-1/2 md:-translate-x-1/2 md:-translate-y-1/2 md:rounded-lg md:bottom-auto md:max-h-[calc(100dvh-2rem)]"
13062
+ "sheet-on-mobile": "bottom-0 left-0 right-0 top-auto w-full max-w-full translate-x-0 translate-y-0 rounded-b-none max-h-[92dvh] pb-[calc(1rem+env(safe-area-inset-bottom))] md:left-1/2 md:top-1/2 md:-translate-x-1/2 md:-translate-y-1/2 md:rounded-lg md:bottom-auto md:pb-4 md:max-h-[calc(100dvh-2rem-2*max(env(safe-area-inset-top),env(safe-area-inset-bottom)))]"
12985
13063
  }
12986
13064
  },
12987
13065
  compoundVariants: [
@@ -13307,7 +13385,7 @@ function BottomSheet({ open, onClose, title, children, className }) {
13307
13385
  }), /* @__PURE__ */ jsxs("div", {
13308
13386
  role: "dialog",
13309
13387
  "aria-modal": "true",
13310
- className: cn("fixed inset-x-0 bottom-0 z-50 flex flex-col bg-background-elevated border-t border-border rounded-t-xl shadow-2xl transition-transform duration-200 ease-out", "max-h-[80dvh]", open ? "translate-y-0" : "translate-y-full", className),
13388
+ className: cn("fixed inset-x-0 bottom-0 z-50 flex flex-col bg-background-elevated border-t border-border rounded-t-xl shadow-2xl transition-transform duration-200 ease-out pb-[env(safe-area-inset-bottom)]", "max-h-[80dvh]", open ? "translate-y-0" : "translate-y-full", className),
13311
13389
  children: [
13312
13390
  /* @__PURE__ */ jsx("div", {
13313
13391
  className: "flex justify-center pt-2 pb-1",
@@ -13550,7 +13628,7 @@ function FloatingPanel({ title, onClose, children, defaultWidth = 360, defaultHe
13550
13628
  };
13551
13629
  }, [minWidth, minHeight]);
13552
13630
  if (isMobile) return /* @__PURE__ */ jsxs("div", {
13553
- className: cn("fixed inset-x-0 bottom-0 z-50 rounded-t-xl border-t border-border bg-background-elevated shadow-2xl flex flex-col overflow-hidden", className),
13631
+ className: cn("fixed inset-x-0 bottom-0 z-50 rounded-t-xl border-t border-border bg-background-elevated shadow-2xl flex flex-col overflow-hidden pb-[env(safe-area-inset-bottom)]", className),
13554
13632
  style: { maxHeight: "60dvh" },
13555
13633
  children: [/* @__PURE__ */ jsxs("div", {
13556
13634
  className: "flex items-center justify-between gap-2 px-3 py-2 border-b border-border shrink-0 bg-surface",
@@ -14197,7 +14275,7 @@ function ModelPicker({ models, value, onChange, disabled }) {
14197
14275
  });
14198
14276
  if (!hasGroups) return /* @__PURE__ */ jsxs("div", {
14199
14277
  className: "space-y-2",
14200
- children: [unresolvedBanner, flatSelect(models)]
14278
+ children: [unresolvedBanner, flatSelect(models, "— select a model —")]
14201
14279
  });
14202
14280
  return /* @__PURE__ */ jsxs("div", {
14203
14281
  className: "space-y-3",
@@ -14724,7 +14802,7 @@ function DeviceModeEditor({ addon, agentDefault, agentNodeId, currentPatch, mode
14724
14802
  }
14725
14803
  function AgentStepEditor(props) {
14726
14804
  const { mode, addon, agentDefault, agentNodeId, currentPatch, onChangeAgentConfig, onChangePatch, engineFormat, effectiveModelId } = props;
14727
- const modelsForFormat = useMemo(() => addon.models.filter((m) => Boolean(m.formats[engineFormat])), [addon.models, engineFormat]);
14805
+ const modelsForFormat = useMemo(() => stepModelOptions(addon.models, engineFormat), [addon.models, engineFormat]);
14728
14806
  if (mode === "agent") return /* @__PURE__ */ jsx(AgentModeEditor, {
14729
14807
  addon,
14730
14808
  agentDefault,
@@ -15396,17 +15474,6 @@ function DeviceStepMatrix({ tree, agents, gateFor, getCellState, onCellClick, se
15396
15474
  });
15397
15475
  }
15398
15476
  //#endregion
15399
- //#region src/composites/resolve-step-default-model.ts
15400
- function resolveStepDefaultModel(catalog, format) {
15401
- const hasFormatBuild = (modelId) => catalog.models.find((m) => m.id === modelId)?.formats[format] !== void 0;
15402
- const declared = catalog.defaultModelIdByFormat?.[format];
15403
- if (declared !== void 0 && hasFormatBuild(declared)) return declared;
15404
- if (hasFormatBuild(catalog.defaultModelId)) return catalog.defaultModelId;
15405
- const available = catalog.models.filter((m) => m.formats[format] !== void 0 && m.legacy !== true);
15406
- if (available.length === 0) return catalog.defaultModelId;
15407
- return [...available].toSorted((a, b) => (a.formats[format]?.sizeMB ?? Infinity) - (b.formats[format]?.sizeMB ?? Infinity))[0].id;
15408
- }
15409
- //#endregion
15410
15477
  //#region src/trpc-react.ts
15411
15478
  /**
15412
15479
  * Shared typed React Query proxy for the backend AppRouter.
@@ -19216,6 +19283,28 @@ var usePipelineAnalyticsListOpsLog = trpc.pipelineAnalytics.listOpsLog.useQuery;
19216
19283
  var usePipelineAnalyticsGetTrainingExportSummary = trpc.pipelineAnalytics.getTrainingExportSummary.useQuery;
19217
19284
  /** Generated alias around `trpc.pipelineAnalytics.getTrainingExportUrl.useQuery`. */
19218
19285
  var usePipelineAnalyticsGetTrainingExportUrl = trpc.pipelineAnalytics.getTrainingExportUrl.useQuery;
19286
+ /** Generated alias around `trpc.pipelineAnalytics.listRetrainStaging.useQuery`. */
19287
+ var usePipelineAnalyticsListRetrainStaging = trpc.pipelineAnalytics.listRetrainStaging.useQuery;
19288
+ /** Generated alias around `trpc.pipelineAnalytics.listRetrainFrames.useQuery`. */
19289
+ var usePipelineAnalyticsListRetrainFrames = trpc.pipelineAnalytics.listRetrainFrames.useQuery;
19290
+ /** Generated alias around `trpc.pipelineAnalytics.selectRetrainFrames.useMutation`. */
19291
+ var usePipelineAnalyticsSelectRetrainFrames = trpc.pipelineAnalytics.selectRetrainFrames.useMutation;
19292
+ /** Generated alias around `trpc.pipelineAnalytics.deselectRetrainFrame.useMutation`. */
19293
+ var usePipelineAnalyticsDeselectRetrainFrame = trpc.pipelineAnalytics.deselectRetrainFrame.useMutation;
19294
+ /** Generated alias around `trpc.pipelineAnalytics.getRetrainFrameImage.useQuery`. */
19295
+ var usePipelineAnalyticsGetRetrainFrameImage = trpc.pipelineAnalytics.getRetrainFrameImage.useQuery;
19296
+ /** Generated alias around `trpc.pipelineAnalytics.proposeRetrainAnnotations.useMutation`. */
19297
+ var usePipelineAnalyticsProposeRetrainAnnotations = trpc.pipelineAnalytics.proposeRetrainAnnotations.useMutation;
19298
+ /** Generated alias around `trpc.pipelineAnalytics.listRetrainAnnotations.useQuery`. */
19299
+ var usePipelineAnalyticsListRetrainAnnotations = trpc.pipelineAnalytics.listRetrainAnnotations.useQuery;
19300
+ /** Generated alias around `trpc.pipelineAnalytics.saveRetrainAnnotations.useMutation`. */
19301
+ var usePipelineAnalyticsSaveRetrainAnnotations = trpc.pipelineAnalytics.saveRetrainAnnotations.useMutation;
19302
+ /** Generated alias around `trpc.pipelineAnalytics.completeRetrainTrack.useMutation`. */
19303
+ var usePipelineAnalyticsCompleteRetrainTrack = trpc.pipelineAnalytics.completeRetrainTrack.useMutation;
19304
+ /** Generated alias around `trpc.pipelineAnalytics.restageRetrainTrack.useMutation`. */
19305
+ var usePipelineAnalyticsRestageRetrainTrack = trpc.pipelineAnalytics.restageRetrainTrack.useMutation;
19306
+ /** Generated alias around `trpc.pipelineAnalytics.getRetrainExportUrl.useQuery`. */
19307
+ var usePipelineAnalyticsGetRetrainExportUrl = trpc.pipelineAnalytics.getRetrainExportUrl.useQuery;
19219
19308
  /** Generated alias around `trpc.pipelineAnalytics.getEventMedia.useQuery`. */
19220
19309
  var usePipelineAnalyticsGetEventMedia = trpc.pipelineAnalytics.getEventMedia.useQuery;
19221
19310
  /** Generated alias around `trpc.pipelineAnalytics.getTrackMedia.useQuery`. */
@@ -19684,6 +19773,10 @@ var useStreamBrokerAssignProfile = trpc.streamBroker.assignProfile.useMutation;
19684
19773
  var useStreamBrokerUnassignProfile = trpc.streamBroker.unassignProfile.useMutation;
19685
19774
  /** Generated alias around `trpc.streamBroker.renderPreBufferClip.useMutation`. */
19686
19775
  var useStreamBrokerRenderPreBufferClip = trpc.streamBroker.renderPreBufferClip.useMutation;
19776
+ /** Generated alias around `trpc.streamBroker.produceEventMedia.useMutation`. */
19777
+ var useStreamBrokerProduceEventMedia = trpc.streamBroker.produceEventMedia.useMutation;
19778
+ /** Generated alias around `trpc.streamBroker.fetchEventMedia.useMutation`. */
19779
+ var useStreamBrokerFetchEventMedia = trpc.streamBroker.fetchEventMedia.useMutation;
19687
19780
  /** Generated alias around `trpc.streamBroker.listAllCameraStreams.useQuery`. */
19688
19781
  var useStreamBrokerListAllCameraStreams = trpc.streamBroker.listAllCameraStreams.useQuery;
19689
19782
  /** Generated alias around `trpc.streamBroker.listAllProfileSlots.useQuery`. */
@@ -47883,4 +47976,4 @@ var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-NcxxQN8r.js")
47883
47976
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
47884
47977
  var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-APgPLF7p.js").then((m) => ({ default: m.PrivacyMaskSettings })));
47885
47978
  //#endregion
47886
- export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceSelectField, 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, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, 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, nextReconnectAction, nextSort, normalizeForSearch, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, EyeOff as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, 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, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useColorGetStatus, useColorSetColor, useConfirm, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, 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, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, 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, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkList, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderDumpHeapSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetProcessStats, useMetricsProviderKillProcess, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesCancelSnooze, useNotificationRulesCreateRule, useNotificationRulesCreateSnooze, useNotificationRulesDeleteRule, useNotificationRulesGetAlarmConfig, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSnoozes, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelMediaRelocate, usePipelineAnalyticsClearTracks, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetMediaRelocateStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorRebalance, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingCancelRelocate, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetRelocateStatus, useRecordingGetStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingLocateSegment, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingSetDeviceConfig, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorRecheckNow, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, 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, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetRetentionConfig, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetRetentionConfig, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionClose, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionResize, 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 };
47979
+ export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceSelectField, 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, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, 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, nextReconnectAction, nextSort, normalizeForSearch, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, EyeOff as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, statusIcons, stepHasModelForFormat, stepModelOptions, 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, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useColorGetStatus, useColorSetColor, useConfirm, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, 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, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, 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, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkList, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderDumpHeapSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetProcessStats, useMetricsProviderKillProcess, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesCancelSnooze, useNotificationRulesCreateRule, useNotificationRulesCreateSnooze, useNotificationRulesDeleteRule, useNotificationRulesGetAlarmConfig, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSnoozes, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelMediaRelocate, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetMediaRelocateStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorRebalance, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingCancelRelocate, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetRelocateStatus, useRecordingGetStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingLocateSegment, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingSetDeviceConfig, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorRecheckNow, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, 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, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetRetentionConfig, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetRetentionConfig, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionClose, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionResize, 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 };
@@ -19,6 +19,16 @@ export declare function DialogTrigger({ children, ...props }: HTMLAttributes<HTM
19
19
  * is capped to the viewport (`w-[calc(100vw-2rem)]`) rather than a bare
20
20
  * `w-full` (which would overflow/clip a centered dialog); the per-variant
21
21
  * `max-w-*` keeps small dialogs small while the cap prevents overflow.
22
+ *
23
+ * Height is capped against the SAFE viewport, not the raw one. A top-layer
24
+ * `fixed` dialog is viewport-relative, and under `viewport-fit=cover` the
25
+ * viewport extends behind the iOS notch/Dynamic Island and home indicator —
26
+ * so a dialog tall enough to hit its `max-h` put its header under the clock.
27
+ * Because the box is centred on the viewport (not on the safe area), the cap
28
+ * has to subtract TWICE the LARGER of the two insets for the box to clear
29
+ * both edges; using each inset once would still overflow the taller side
30
+ * whenever they are asymmetric (they are: ~59px top vs ~34px bottom). Every
31
+ * term collapses to the previous `100dvh - 2rem` where the insets are 0.
22
32
  */
23
33
  declare const contentVariants: (props?: ({
24
34
  width?: "sm" | "md" | "lg" | null | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/ui-library",
3
- "version": "1.2.32",
3
+ "version": "1.2.34",
4
4
  "type": "module",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",