@camstack/types 1.1.32 → 1.1.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.
Files changed (54) hide show
  1. package/dist/addon.js +1 -1
  2. package/dist/addon.mjs +1 -1
  3. package/dist/capabilities/addons.cap.d.ts +1 -1
  4. package/dist/capabilities/alerts.cap.d.ts +5 -5
  5. package/dist/capabilities/camera-streams.cap.d.ts +5 -5
  6. package/dist/capabilities/cap-router-predicates.d.ts +32 -0
  7. package/dist/capabilities/capability-definition.d.ts +18 -13
  8. package/dist/capabilities/consumables.cap.d.ts +1 -1
  9. package/dist/capabilities/custom-model-registry.cap.d.ts +38 -0
  10. package/dist/capabilities/index.d.ts +8 -15
  11. package/dist/capabilities/integrations.cap.d.ts +1 -1
  12. package/dist/capabilities/model-convert.cap.d.ts +22 -3
  13. package/dist/capabilities/model-distributor.cap.d.ts +38 -0
  14. package/dist/capabilities/network-quality.cap.d.ts +1 -1
  15. package/dist/capabilities/nodes.cap.d.ts +1 -1
  16. package/dist/capabilities/pipeline-executor.cap.d.ts +161 -8
  17. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +87 -44
  18. package/dist/capabilities/pipeline-runner.cap.d.ts +10 -69
  19. package/dist/capabilities/snapshot.cap.d.ts +3 -3
  20. package/dist/capabilities/stream-broker.cap.d.ts +9 -1
  21. package/dist/capabilities/system.cap.d.ts +1 -1
  22. package/dist/capabilities/toast.cap.d.ts +1 -1
  23. package/dist/capabilities/webrtc-session.cap.d.ts +15 -1
  24. package/dist/device/index.d.ts +2 -0
  25. package/dist/device/reachability-poll.d.ts +90 -0
  26. package/dist/encode-profile.d.ts +2 -2
  27. package/dist/enums/event-category.d.ts +12 -0
  28. package/dist/generated/addon-api.d.ts +771 -643
  29. package/dist/generated/capability-router-map.d.ts +4 -16
  30. package/dist/generated/device-proxy.d.ts +0 -2
  31. package/dist/generated/method-access-map.d.ts +1 -1
  32. package/dist/generated/system-proxy.d.ts +2 -2
  33. package/dist/index.d.ts +3 -3
  34. package/dist/index.js +568 -350
  35. package/dist/index.mjs +551 -344
  36. package/dist/interfaces/capability.d.ts +0 -7
  37. package/dist/interfaces/event-bus.d.ts +9 -0
  38. package/dist/interfaces/pipeline-executor-capability.d.ts +14 -1
  39. package/dist/interfaces/pipeline-runner-capability.d.ts +11 -11
  40. package/dist/interfaces/recording-config.d.ts +2 -2
  41. package/dist/{sleep-CZDdRBua.mjs → sleep-Cc14_yxc.mjs} +12 -4
  42. package/dist/{sleep-Dirr8nGw.js → sleep-DmP-uxoe.js} +12 -4
  43. package/dist/types/agent-pipeline-settings.d.ts +18 -6
  44. package/dist/types/camera-pipeline.d.ts +17 -3
  45. package/dist/types/model-variant-groups.d.ts +100 -0
  46. package/dist/types/models.d.ts +63 -3
  47. package/package.json +1 -1
  48. package/dist/capabilities/restreamer.cap.d.ts +0 -54
  49. package/dist/capabilities/snapshot-provider.cap.d.ts +0 -43
  50. package/dist/capabilities/streaming-engine.cap.d.ts +0 -61
  51. package/dist/capabilities/webrtc.cap.d.ts +0 -75
  52. package/dist/interfaces/restreamer.d.ts +0 -23
  53. package/dist/interfaces/streaming.d.ts +0 -28
  54. package/dist/interfaces/webrtc-provider.d.ts +0 -34
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as SubscribeAudioChunksResultSchema, A as ReadinessRegistry, B as CamStreamResolutionSchema, C as asJsonObject, D as parseJsonObject, E as parseJsonArray, F as BrokerStatsSchema, G as FrameHandleFormatSchema, H as DecodedAudioChunkSchema, I as BrokerStatusSchema, J as ProfileSlotSchema, K as FrameHandleSchema, L as CAM_PROFILE_ORDER, M as emitDownForOwnedCaps, N as readinessKey, O as parseJsonUnknown, P as scopeKey, Q as SubscribeAudioChunksInputSchema, R as CamProfileSchema, S as asJsonArray, T as asString, U as DecodedFrameSchema, V as CameraStreamSchema, W as EncodedPacketSchema, X as StreamSourceEntrySchema, Y as ProfileSlotStatusSchema, Z as StreamSourceSchema, _ as ChargingStatus, a as adminUiCapability, at as selectAssignedProfileSlots, b as DeviceType, c as createMirrorSource, ct as createDurableState, d as DEVICE_STATUS_METHOD, dt as isEvent, et as SubscribeFramesInputSchema, f as event, ft as WELL_KNOWN_TABS, g as resolveCapMount, gt as DisposerChain, h as method, ht as EventCategory, i as deviceOpsCapability, it as parseProfileBrokerId, j as ReadinessTimeoutError, k as DATAPLANE_SECRET_HEADER, l as createSliceHandle, lt as createEvent, m as isDeviceConfigCap, mt as hydrateSchema, n as sleepCancellable, nt as makeProfileBrokerId, o as createDeviceProxy, ot as BaseAddon, p as expandCapMethods, pt as WELL_KNOWN_TAB_MAP, q as ProfileRtspEntrySchema, r as RawStateResultSchema, rt as makeSourceBrokerId, s as createLazyTrpcSource, st as normalizeAddonInitResult, t as sleep, tt as SubscribeFramesResultSchema, u as DEVICE_SETTINGS_CONTRIBUTION_METHODS, ut as emitReadiness, v as DeviceFeature, w as asNumber, x as asBoolean, y as DeviceRole, z as CamStreamKindSchema } from "./sleep-CZDdRBua.mjs";
1
+ import { $ as SubscribeAudioChunksResultSchema, A as ReadinessRegistry, B as CamStreamResolutionSchema, C as asJsonObject, D as parseJsonObject, E as parseJsonArray, F as BrokerStatsSchema, G as FrameHandleFormatSchema, H as DecodedAudioChunkSchema, I as BrokerStatusSchema, J as ProfileSlotSchema, K as FrameHandleSchema, L as CAM_PROFILE_ORDER, M as emitDownForOwnedCaps, N as readinessKey, O as parseJsonUnknown, P as scopeKey, Q as SubscribeAudioChunksInputSchema, R as CamProfileSchema, S as asJsonArray, T as asString, U as DecodedFrameSchema, V as CameraStreamSchema, W as EncodedPacketSchema, X as StreamSourceEntrySchema, Y as ProfileSlotStatusSchema, Z as StreamSourceSchema, _ as ChargingStatus, a as adminUiCapability, at as selectAssignedProfileSlots, b as DeviceType, c as createMirrorSource, ct as createDurableState, d as DEVICE_STATUS_METHOD, dt as isEvent, et as SubscribeFramesInputSchema, f as event, ft as WELL_KNOWN_TABS, g as resolveCapMount, gt as DisposerChain, h as method, ht as EventCategory, i as deviceOpsCapability, it as parseProfileBrokerId, j as ReadinessTimeoutError, k as DATAPLANE_SECRET_HEADER, l as createSliceHandle, lt as createEvent, m as isDeviceConfigCap, mt as hydrateSchema, n as sleepCancellable, nt as makeProfileBrokerId, o as createDeviceProxy, ot as BaseAddon, p as expandCapMethods, pt as WELL_KNOWN_TAB_MAP, q as ProfileRtspEntrySchema, r as RawStateResultSchema, rt as makeSourceBrokerId, s as createLazyTrpcSource, st as normalizeAddonInitResult, t as sleep, tt as SubscribeFramesResultSchema, u as DEVICE_SETTINGS_CONTRIBUTION_METHODS, ut as emitReadiness, v as DeviceFeature, w as asNumber, x as asBoolean, y as DeviceRole, z as CamStreamKindSchema } from "./sleep-Cc14_yxc.mjs";
2
2
  import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/health/wiring-health.ts
@@ -114,6 +114,36 @@ var ModelFormatsSchema = z.object({
114
114
  tflite: ModelFormatEntrySchema.optional(),
115
115
  pt: ModelFormatEntrySchema.optional()
116
116
  });
117
+ /**
118
+ * Variant-selector grouping axes. Shared by the full `ModelCatalogEntry` and by
119
+ * the reduced `PipelineModelOption` returned in `pipeline.getSchema()` so the
120
+ * grouped Family→Tier→Variant picker renders identically in the config UI and
121
+ * in the pipeline/device steppers. The flat `id` stays the source of truth for
122
+ * resolution/download/persistence; this is a presentation overlay resolved back
123
+ * to an `id`.
124
+ */
125
+ var ModelVariantGroupSchema = z.object({
126
+ /** Top-level family, e.g. `yolo26` (later `d-fine`, `rf-detr`). */
127
+ family: z.string(),
128
+ /** Size within the family, e.g. `n` | `s` | `m` | `l`. */
129
+ tier: z.string(),
130
+ /** Quantization axis. Omit ⇒ the fp32 base build. */
131
+ precision: z.enum(["fp32", "int8"]).optional(),
132
+ /**
133
+ * Speed-optimization axis. Omit ⇒ the standard build. `fast` marks a
134
+ * latency-optimized export (e.g. ReLU-activation variant) — the slot the
135
+ * future performance variants plug into.
136
+ */
137
+ optimization: z.enum(["standard", "fast"]).optional(),
138
+ /**
139
+ * Input-resolution axis (square input side, px). Omit ⇒ the family's native
140
+ * resolution (640 for yolo26). Reduced-input builds (320 / 256) are a big,
141
+ * cheap latency lever — especially on Apple ANE and the Intel N100 — at a
142
+ * small-object accuracy cost. Mirrors the model's `inputSize` but lifted onto
143
+ * the group so the selector can offer it as a variant axis.
144
+ */
145
+ resolution: z.number().int().positive().optional()
146
+ });
117
147
  var ModelCatalogEntrySchema = z.object({
118
148
  id: z.string(),
119
149
  name: z.string(),
@@ -143,7 +173,43 @@ var ModelCatalogEntrySchema = z.object({
143
173
  * Auxiliary files required at runtime (labels JSON, charset dict, etc.).
144
174
  * Downloaded into the same modelsDir alongside the model file.
145
175
  */
146
- extraFiles: z.array(ModelExtraFileSchema).readonly().optional()
176
+ extraFiles: z.array(ModelExtraFileSchema).readonly().optional(),
177
+ /**
178
+ * LEGACY entry — retained in the catalog so a persisted operator selection
179
+ * still RESOLVES (and can be re-activated), but hidden from the selectable
180
+ * model list and excluded from the auto format-default pick. Set on the
181
+ * superseded / consolidated models (older lineages, redundant fp16 IRs) so
182
+ * the active lineup stays the coherent curated ladder without deleting a
183
+ * model anyone may still be pinned to. `resolveModelForFormat` keeps honoring
184
+ * an explicit legacy id that has a build for the node's format.
185
+ */
186
+ legacy: z.boolean().optional(),
187
+ /**
188
+ * Measured quality/latency metadata — populated from the benchmark addon on
189
+ * the real node classes. Absent = not yet measured (most entries today; the
190
+ * catalog historically carried only `sizeMB`, a poor cross-architecture
191
+ * speed proxy). `p95LatencyMs` is keyed by node class (e.g. `n100`, `mac`).
192
+ */
193
+ metrics: z.object({
194
+ map50: z.number().optional(),
195
+ p95LatencyMs: z.record(z.string(), z.number()).optional()
196
+ }).optional(),
197
+ /**
198
+ * SPDX-ish license id of the model weights (e.g. `AGPL-3.0` for Ultralytics
199
+ * YOLO26, `GPL-3.0` for YOLOv9, `Apache-2.0` for D-FINE/RF-DETR). Matters for
200
+ * the retraining addon and any future commercial distribution.
201
+ */
202
+ license: z.string().optional(),
203
+ /**
204
+ * Variant-selector grouping. The UI groups models by `family` + `tier` and
205
+ * offers `precision` / `optimization` as variant axes WITHIN a tier — so all
206
+ * of a family's sizes and quantizations collapse into one grouped picker
207
+ * instead of a flat list of `yolo26s`, `yolo26s-int8`, … Absent ⇒ ungrouped
208
+ * (legacy / custom models) — never shown in the grouped selector. The flat
209
+ * `id` stays the source of truth for resolution/download/persistence; grouping
210
+ * is a presentation overlay resolved back to an `id`.
211
+ */
212
+ group: ModelVariantGroupSchema.optional()
147
213
  });
148
214
  var ConvertTargetSchema = z.discriminatedUnion("format", [z.object({
149
215
  format: z.literal("openvino"),
@@ -186,6 +252,139 @@ var ConvertResultSchema = z.object({
186
252
  artifacts: z.array(ConvertArtifactSchema).readonly()
187
253
  });
188
254
  //#endregion
255
+ //#region src/types/model-variant-groups.ts
256
+ var FORMAT_KEYS = [
257
+ "onnx",
258
+ "coreml",
259
+ "openvino",
260
+ "tflite",
261
+ "pt"
262
+ ];
263
+ function familyLabel(family) {
264
+ return family.toUpperCase();
265
+ }
266
+ /** Strip a leading family label from a base model name → clean tier label. */
267
+ function tierLabel(family, baseName) {
268
+ const fl = familyLabel(family);
269
+ const stripped = baseName.replace(new RegExp(`^${fl}\\s+`, "i"), "").trim();
270
+ return stripped.length > 0 ? stripped : baseName;
271
+ }
272
+ function variantLabel(precision, optimization) {
273
+ const parts = [];
274
+ if (optimization === "fast") parts.push("Fast");
275
+ parts.push(precision === "int8" ? "Int8" : "Standard");
276
+ return parts.join(" · ");
277
+ }
278
+ function entryFormats(entry) {
279
+ return FORMAT_KEYS.filter((f) => entry.formats[f] !== void 0);
280
+ }
281
+ function smallestSizeMB(entry) {
282
+ const sizes = FORMAT_KEYS.map((f) => entry.formats[f]?.sizeMB).filter((n) => typeof n === "number");
283
+ return sizes.length > 0 ? Math.min(...sizes) : 0;
284
+ }
285
+ var TIER_ORDER = [
286
+ "n",
287
+ "s",
288
+ "m",
289
+ "l",
290
+ "x"
291
+ ];
292
+ var PRECISION_ORDER = ["fp32", "int8"];
293
+ /**
294
+ * Fold a flat catalog into the `family → tier → variant` tree. Deterministic
295
+ * ordering: tiers by the canonical size ladder (unknown tiers appended
296
+ * alphabetically), variants standard-before-int8 and fast last.
297
+ */
298
+ function buildModelVariantGroups(models) {
299
+ const byFamily = /* @__PURE__ */ new Map();
300
+ for (const m of models) {
301
+ if (m.legacy === true || m.group === void 0) continue;
302
+ const { family, tier } = m.group;
303
+ const tiers = byFamily.get(family) ?? /* @__PURE__ */ new Map();
304
+ const entries = tiers.get(tier) ?? [];
305
+ entries.push(m);
306
+ tiers.set(tier, entries);
307
+ byFamily.set(family, tiers);
308
+ }
309
+ const families = [];
310
+ for (const [family, tiers] of byFamily) {
311
+ const tierList = [];
312
+ for (const [tier, entries] of tiers) {
313
+ const options = entries.map((e) => {
314
+ const precision = e.group?.precision ?? "fp32";
315
+ const optimization = e.group?.optimization ?? "standard";
316
+ return {
317
+ modelId: e.id,
318
+ precision,
319
+ optimization,
320
+ resolution: e.group?.resolution,
321
+ label: variantLabel(precision, optimization),
322
+ formats: entryFormats(e),
323
+ sizeMB: smallestSizeMB(e)
324
+ };
325
+ }).toSorted((a, b) => {
326
+ if (a.resolution !== b.resolution) return (b.resolution ?? Infinity) - (a.resolution ?? Infinity);
327
+ if (a.optimization !== b.optimization) return a.optimization === "fast" ? 1 : -1;
328
+ return PRECISION_ORDER.indexOf(a.precision) - PRECISION_ORDER.indexOf(b.precision);
329
+ });
330
+ const base = options.find((o) => o.precision === "fp32" && o.optimization === "standard" && o.resolution === void 0) ?? options[0];
331
+ if (base === void 0) continue;
332
+ const baseEntry = entries.find((e) => e.id === base.modelId);
333
+ tierList.push({
334
+ tier,
335
+ label: baseEntry ? tierLabel(family, baseEntry.name) : tier.toUpperCase(),
336
+ baseModelId: base.modelId,
337
+ options
338
+ });
339
+ }
340
+ tierList.sort((a, b) => {
341
+ const ia = TIER_ORDER.indexOf(a.tier);
342
+ const ib = TIER_ORDER.indexOf(b.tier);
343
+ if (ia !== -1 && ib !== -1) return ia - ib;
344
+ if (ia !== -1) return -1;
345
+ if (ib !== -1) return 1;
346
+ return a.tier.localeCompare(b.tier);
347
+ });
348
+ families.push({
349
+ family,
350
+ label: familyLabel(family),
351
+ tiers: tierList
352
+ });
353
+ }
354
+ families.sort((a, b) => a.family.localeCompare(b.family));
355
+ return families;
356
+ }
357
+ /**
358
+ * Map a grouped selection back to a flat catalog model id. Returns `null` when
359
+ * no entry matches (the UI then falls back to the tier base / format default).
360
+ * `precision`/`optimization` default to `fp32`/`standard` (the base build).
361
+ */
362
+ function resolveVariantModelId(models, selection) {
363
+ const precision = selection.precision ?? "fp32";
364
+ const optimization = selection.optimization ?? "standard";
365
+ for (const m of models) {
366
+ if (m.group === void 0) continue;
367
+ if (m.group.family !== selection.family || m.group.tier !== selection.tier) continue;
368
+ if ((m.group.precision ?? "fp32") !== precision) continue;
369
+ if ((m.group.optimization ?? "standard") !== optimization) continue;
370
+ if (m.group.resolution !== selection.resolution) continue;
371
+ return m.id;
372
+ }
373
+ return null;
374
+ }
375
+ /** Inverse: describe a flat model id as a grouped selection, or `null`. */
376
+ function describeModelVariant(models, modelId) {
377
+ const entry = models.find((m) => m.id === modelId);
378
+ if (entry?.group === void 0) return null;
379
+ return {
380
+ family: entry.group.family,
381
+ tier: entry.group.tier,
382
+ precision: entry.group.precision ?? "fp32",
383
+ optimization: entry.group.optimization ?? "standard",
384
+ resolution: entry.group.resolution
385
+ };
386
+ }
387
+ //#endregion
189
388
  //#region src/interfaces/addon.ts
190
389
  var DEFAULT_ADDON_PLACEMENT = "hub-only";
191
390
  /**
@@ -571,8 +770,8 @@ var RecordingModeSchema = z.enum([
571
770
  "onAudioThreshold"
572
771
  ]);
573
772
  /**
574
- * First-class, authoritative per-camera storage mode — the netta choice the UI
575
- * reads directly (never inferred from `rules`):
773
+ * First-class, authoritative per-camera storage mode — the explicit choice the
774
+ * UI reads directly (never inferred from `rules`):
576
775
  * - `off` — not recording.
577
776
  * - `events` — record only around triggers (motion / audio threshold),
578
777
  * with pre/post-buffer.
@@ -1608,7 +1807,7 @@ async function runInferenceStep(fn, timeoutMs) {
1608
1807
  const t0 = performance.now();
1609
1808
  try {
1610
1809
  return {
1611
- output: timeoutMs !== void 0 ? await withTimeout(fn(), timeoutMs) : await fn(),
1810
+ output: timeoutMs !== void 0 ? await withTimeout$1(fn(), timeoutMs) : await fn(),
1612
1811
  durationMs: roundMs(performance.now() - t0),
1613
1812
  ok: true
1614
1813
  };
@@ -1626,7 +1825,7 @@ function roundMs(ms) {
1626
1825
  return Math.round(ms * 100) / 100;
1627
1826
  }
1628
1827
  /** Reject a promise if it exceeds the given timeout */
1629
- function withTimeout(promise, ms) {
1828
+ function withTimeout$1(promise, ms) {
1630
1829
  return new Promise((resolve, reject) => {
1631
1830
  const timer = setTimeout(() => reject(/* @__PURE__ */ new Error(`Inference timeout after ${ms}ms`)), ms);
1632
1831
  promise.then((v) => {
@@ -3588,6 +3787,111 @@ function createRuntimeStateBridge(params) {
3588
3787
  };
3589
3788
  }
3590
3789
  //#endregion
3790
+ //#region src/device/reachability-poll.ts
3791
+ /**
3792
+ * Shared control-plane reachability poller for camera devices.
3793
+ *
3794
+ * `device.online` must reflect CONTROL-PLANE REACHABILITY — "can we talk to
3795
+ * the camera's management API right now" — NOT whether video happens to be
3796
+ * flowing through the stream broker. A camera that dials on-demand (no
3797
+ * consumer attached) is fully reachable yet has no active stream; driving
3798
+ * `online` from stream health falsely marks it OFFLINE.
3799
+ *
3800
+ * Every camera provider owns a cheap control-plane round-trip (Hikvision
3801
+ * ISAPI `getDeviceInfo`, Amcrest Dahua CGI `getDeviceInfo`, ONVIF
3802
+ * `getDeviceInformation`, RTSP `OPTIONS`/TCP-connect). Each provider passes
3803
+ * that round-trip as a `probe: () => Promise<boolean>` and this helper runs
3804
+ * the loop, applies hysteresis, and drives the device's `online` setter.
3805
+ *
3806
+ * Hysteresis rules (avoid flapping on a single dropped packet):
3807
+ * - mark ONLINE immediately on the first successful probe;
3808
+ * - mark OFFLINE only after {@link REACHABILITY_FAILURES_TO_OFFLINE}
3809
+ * CONSECUTIVE failures.
3810
+ *
3811
+ * Robustness rules:
3812
+ * - each probe is bounded by {@link REACHABILITY_PROBE_TIMEOUT_MS} so a hung
3813
+ * control channel can't wedge the loop;
3814
+ * - a single in-flight probe at a time — a slow probe never stacks up;
3815
+ * - the loop never throws (a rejected/thrown probe counts as a failure);
3816
+ * - `isEnabled()` gates each tick so a soft-disabled device isn't polled.
3817
+ */
3818
+ /** Poll cadence — probe every camera's control plane on this interval. */
3819
+ var REACHABILITY_POLL_INTERVAL_MS = 3e4;
3820
+ /**
3821
+ * Consecutive failures required before flipping `online` to `false`.
3822
+ * ONLINE is asserted on the first success; OFFLINE waits for N misses so a
3823
+ * single transient timeout doesn't flap the flag.
3824
+ */
3825
+ var REACHABILITY_FAILURES_TO_OFFLINE = 3;
3826
+ /** Per-probe timeout — an unreachable/hung control channel resolves as a miss. */
3827
+ var REACHABILITY_PROBE_TIMEOUT_MS = 1e4;
3828
+ /** Reject after `ms`; always clears its own timer. */
3829
+ async function withTimeout(promise, ms, label) {
3830
+ let timer;
3831
+ const timeout = new Promise((_resolve, reject) => {
3832
+ timer = setTimeout(() => reject(/* @__PURE__ */ new Error(`${label} timed out after ${String(ms)}ms`)), ms);
3833
+ });
3834
+ try {
3835
+ return await Promise.race([promise, timeout]);
3836
+ } finally {
3837
+ if (timer !== void 0) clearTimeout(timer);
3838
+ }
3839
+ }
3840
+ /**
3841
+ * Start the reachability poll loop. Returns a handle whose `stop()` clears the
3842
+ * timer and prevents any further ticks. Start on device activation, stop on
3843
+ * device teardown (`removeDevice`) so no timer leaks.
3844
+ */
3845
+ function startReachabilityPoll(options) {
3846
+ const intervalMs = options.intervalMs ?? 3e4;
3847
+ const failuresToOffline = options.failuresToOffline ?? 3;
3848
+ const probeTimeoutMs = options.probeTimeoutMs ?? 1e4;
3849
+ const runImmediately = options.runImmediately ?? true;
3850
+ let stopped = false;
3851
+ let running = false;
3852
+ let consecutiveFailures = 0;
3853
+ let timer;
3854
+ const tick = async () => {
3855
+ if (stopped) return;
3856
+ if (running) return;
3857
+ if (options.isEnabled && !options.isEnabled()) return;
3858
+ running = true;
3859
+ try {
3860
+ const reachable = await withTimeout(Promise.resolve().then(options.probe), probeTimeoutMs, "reachability probe");
3861
+ if (stopped) return;
3862
+ if (reachable) {
3863
+ consecutiveFailures = 0;
3864
+ options.setOnline(true);
3865
+ } else registerFailure("probe resolved unreachable");
3866
+ } catch (error) {
3867
+ if (stopped) return;
3868
+ registerFailure(error instanceof Error ? error.message : "probe threw");
3869
+ } finally {
3870
+ running = false;
3871
+ }
3872
+ };
3873
+ const registerFailure = (reason) => {
3874
+ consecutiveFailures += 1;
3875
+ options.logger?.debug("reachability probe failed", {
3876
+ reason,
3877
+ consecutiveFailures,
3878
+ failuresToOffline
3879
+ });
3880
+ if (consecutiveFailures >= failuresToOffline) options.setOnline(false);
3881
+ };
3882
+ timer = setInterval(() => {
3883
+ tick();
3884
+ }, intervalMs);
3885
+ if (typeof timer === "object" && timer !== null && "unref" in timer) timer.unref();
3886
+ if (runImmediately) tick();
3887
+ return { stop: () => {
3888
+ if (stopped) return;
3889
+ stopped = true;
3890
+ if (timer !== void 0) clearInterval(timer);
3891
+ timer = void 0;
3892
+ } };
3893
+ }
3894
+ //#endregion
3591
3895
  //#region src/notification/format-transcode.ts
3592
3896
  /** Strip a small, safe subset of Markdown down to plain text. */
3593
3897
  function markdownToText(md) {
@@ -4477,42 +4781,14 @@ onBrightnessChanged: { data: z.object({
4477
4781
  runtimeState: BrightnessStatusSchema
4478
4782
  };
4479
4783
  //#endregion
4480
- //#region src/capabilities/streaming-engine.cap.ts
4784
+ //#region src/capabilities/stream-broker.cap.ts
4785
+ /** Stream delivery format. (Relocated from the retired `streaming-engine` cap.) */
4481
4786
  var StreamFormatSchema = z.enum([
4482
4787
  "webrtc",
4483
4788
  "hls",
4484
4789
  "mjpeg",
4485
4790
  "rtsp"
4486
4791
  ]);
4487
- var StreamInfoSchema = z.object({
4488
- streamId: z.string(),
4489
- format: StreamFormatSchema,
4490
- url: z.string().nullable(),
4491
- active: z.boolean()
4492
- });
4493
- var streamingEngineCapability = {
4494
- name: "streaming-engine",
4495
- scope: "system",
4496
- mode: "singleton",
4497
- internal: true,
4498
- methods: {
4499
- registerStream: method(z.object({
4500
- streamId: z.string(),
4501
- sourceUrl: z.string(),
4502
- codec: z.string().optional()
4503
- }), z.void(), { kind: "mutation" }),
4504
- unregisterStream: method(z.object({ streamId: z.string() }), z.void(), { kind: "mutation" }),
4505
- getStreamUrl: method(z.object({
4506
- streamId: z.string(),
4507
- format: StreamFormatSchema
4508
- }), z.string().nullable()),
4509
- listStreams: method(z.void(), z.array(StreamInfoSchema))
4510
- },
4511
- /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
4512
- mount: { kind: "skip" }
4513
- };
4514
- //#endregion
4515
- //#region src/capabilities/stream-broker.cap.ts
4516
4792
  var RtspRestreamEntrySchema = z.object({
4517
4793
  brokerId: z.string(),
4518
4794
  url: z.string(),
@@ -5506,37 +5782,7 @@ var consumablesCapability = {
5506
5782
  scope: "device",
5507
5783
  deviceNative: true,
5508
5784
  mode: "singleton",
5509
- deviceTypes: [
5510
- DeviceType.Camera,
5511
- DeviceType.Hub,
5512
- DeviceType.Light,
5513
- DeviceType.Siren,
5514
- DeviceType.Switch,
5515
- DeviceType.Sensor,
5516
- DeviceType.Thermostat,
5517
- DeviceType.Button,
5518
- DeviceType.EventEmitter,
5519
- DeviceType.Update,
5520
- DeviceType.Generic,
5521
- DeviceType.Notifier,
5522
- DeviceType.Script,
5523
- DeviceType.Automation,
5524
- DeviceType.Lock,
5525
- DeviceType.Cover,
5526
- DeviceType.Valve,
5527
- DeviceType.Humidifier,
5528
- DeviceType.WaterHeater,
5529
- DeviceType.Fan,
5530
- DeviceType.MediaPlayer,
5531
- DeviceType.AlarmPanel,
5532
- DeviceType.Control,
5533
- DeviceType.Presence,
5534
- DeviceType.Weather,
5535
- DeviceType.Vacuum,
5536
- DeviceType.LawnMower,
5537
- DeviceType.Container,
5538
- DeviceType.Image
5539
- ],
5785
+ deviceTypes: Object.values(DeviceType),
5540
5786
  deviceConfig: { ui: {
5541
5787
  kind: "widget",
5542
5788
  widgetId: "host/consumables-panel",
@@ -7302,7 +7548,6 @@ var PipelineDefaultStepSchema = z.lazy(() => z.object({
7302
7548
  enabled: z.boolean(),
7303
7549
  modelId: z.string(),
7304
7550
  children: z.array(PipelineDefaultStepSchema).readonly(),
7305
- engine: PipelineEngineChoiceSchema.optional(),
7306
7551
  group: z.string().optional(),
7307
7552
  settings: z.record(z.string(), z.unknown()).optional()
7308
7553
  }));
@@ -7327,7 +7572,9 @@ var PipelineModelOptionSchema = z.object({
7327
7572
  formats: z.record(z.string(), z.object({
7328
7573
  downloaded: z.boolean(),
7329
7574
  sizeMB: z.number()
7330
- }))
7575
+ })),
7576
+ group: ModelVariantGroupSchema.optional(),
7577
+ legacy: z.boolean().optional()
7331
7578
  });
7332
7579
  var ConfigFieldBridge = z.custom();
7333
7580
  var PipelineAddonSchemaSchema = z.object({
@@ -7378,15 +7625,42 @@ var EngineProvisioningSchema = z.object({
7378
7625
  ]),
7379
7626
  progress: z.number().optional(),
7380
7627
  error: z.string().optional(),
7381
- nextRetryAt: z.number().optional()
7628
+ nextRetryAt: z.number().optional(),
7629
+ /**
7630
+ * Gate A (config-correctness gate at engine change): human-readable
7631
+ * config issues surfaced EAGERLY when the node's engine changes — model
7632
+ * substitutions ("chose X, running Y") and zero-build steps ("no model
7633
+ * has a <format> build"). Additive/optional: informational only, never
7634
+ * enforced here — `assertEngineReady` (readiness) still gates inference.
7635
+ * Absent/empty when the node-default tree resolves cleanly.
7636
+ */
7637
+ configIssues: z.array(z.string()).optional()
7382
7638
  });
7383
7639
  var PipelineStepInputSchema = z.lazy(() => z.object({
7384
7640
  addonId: z.string(),
7385
- modelId: z.string(),
7641
+ modelId: z.string().optional(),
7386
7642
  enabled: z.boolean().default(true),
7387
7643
  children: z.array(PipelineStepInputSchema).optional(),
7388
7644
  settings: z.record(z.string(), z.unknown()).optional()
7389
7645
  }));
7646
+ var ModelSubstitutionSchema = z.object({
7647
+ addonId: z.string(),
7648
+ chosen: z.string(),
7649
+ running: z.string(),
7650
+ format: z.string()
7651
+ });
7652
+ var PipelineValidationIssueSchema = z.object({
7653
+ addonId: z.string(),
7654
+ kind: z.enum(["unknown-addon", "no-format-build"]),
7655
+ detail: z.string()
7656
+ });
7657
+ var PipelineValidationResultSchema = z.object({
7658
+ ok: z.boolean(),
7659
+ issues: z.array(PipelineValidationIssueSchema).readonly(),
7660
+ substitutions: z.array(ModelSubstitutionSchema).readonly(),
7661
+ /** The node's `currentEngine.format` this validation ran against. */
7662
+ format: z.string()
7663
+ });
7390
7664
  var ReferenceImageEntrySchema = z.object({
7391
7665
  filename: z.string(),
7392
7666
  stepIds: z.array(z.string()).readonly().optional()
@@ -7499,10 +7773,45 @@ var pipelineExecutorCapability = {
7499
7773
  kind: "mutation",
7500
7774
  auth: "admin"
7501
7775
  }),
7776
+ /**
7777
+ * Reset ONE node's detection-pipeline to its factory defaults, forcing
7778
+ * regeneration of the (now hardware-aware) default object-detection
7779
+ * model. `nodeId` is the ROUTING key — the generated cap-router strips
7780
+ * it (default `nodeIdMode: 'routing'`, same as `getSelectedEngine` /
7781
+ * `getDefaultSteps`) and dispatches to that node, so the provider method
7782
+ * runs ON the target node and receives no `nodeId`.
7783
+ *
7784
+ * Clears the node's persisted global pipeline seed (`pipelineSteps`) +
7785
+ * legacy engine blob (`pipelineEngine`) and every device's per-camera
7786
+ * step overrides, then re-seeds the hardware-aware default tree. Returns
7787
+ * the regenerated object-detection model id (null when the default tree
7788
+ * has no detector for this node's engine format) so the caller can
7789
+ * verify the reset without a second round-trip.
7790
+ */
7791
+ resetToDefault: method(z.object({ nodeId: z.string() }), z.object({
7792
+ success: z.literal(true),
7793
+ regeneratedModelId: z.string().nullable()
7794
+ }), {
7795
+ kind: "mutation",
7796
+ auth: "admin"
7797
+ }),
7502
7798
  getSchema: method(z.void(), PipelineSchemaSchema),
7503
7799
  getGlobalSteps: method(z.void(), z.array(PipelineDefaultStepSchema).readonly().nullable()),
7504
7800
  getGlobalPipelineConfig: method(z.void(), PipelineConfigBridge),
7505
7801
  getOrchestratorConfigSchema: method(z.void(), ConfigUISchemaBridge),
7802
+ /**
7803
+ * Gate B (pre-init config-correctness gate). PURE COMPUTE against this
7804
+ * node's `currentEngine.format` — resolves `steps` the same way the
7805
+ * runtime dispatch path would, and reports what WOULD happen without
7806
+ * touching any node-global state. Called by the orchestrator at attach
7807
+ * time (`attachOn`), node-pinned to the TARGET node, so config problems
7808
+ * surface BEFORE `pipelineRunner.attachCamera` rather than at the first
7809
+ * per-frame resolve. `ok` is false iff `issues` is non-empty (both
7810
+ * `unknown-addon` and `no-format-build` are HARD issues); `substitutions`
7811
+ * is informational (a degraded-but-loadable model swap) and never
7812
+ * affects `ok`. Never throws.
7813
+ */
7814
+ validatePipeline: method(z.object({ steps: z.array(PipelineStepInputSchema) }), PipelineValidationResultSchema),
7506
7815
  listTemplates: method(z.void(), z.array(PipelineTemplateSchema$1).readonly()),
7507
7816
  saveTemplate: method(z.object({
7508
7817
  name: z.string(),
@@ -7889,6 +8198,13 @@ var RunnerFrameSourceSchema = z.discriminatedUnion("kind", [z.object({ kind: z.l
7889
8198
  kind: z.literal("remote-restream"),
7890
8199
  /** The camera's source-owner node (slice 1: always the hub). */
7891
8200
  ownerNodeId: z.string(),
8201
+ /**
8202
+ * The owner's LAN-reachable host, resolved by the orchestrator from the
8203
+ * per-node `reachableHost` override (Cluster UI). When present the runner
8204
+ * dials THIS host for the owner's restream, in preference to the
8205
+ * `CAMSTACK_HUB_URL`-derived default. Absent → auto-detect fallback.
8206
+ */
8207
+ ownerReachableHost: z.string().optional(),
7892
8208
  /** Operator override for the owner host the runner dials. */
7893
8209
  hubHostnameOverride: z.string().optional()
7894
8210
  })]).describe("Per-camera frame-source mode for the runner (P2c)");
@@ -7897,13 +8213,11 @@ var RunnerFrameSourceSchema = z.discriminatedUnion("kind", [z.object({ kind: z.l
7897
8213
  * specific runner instance via `attachCamera`. Carries everything the
7898
8214
  * runner needs to subscribe to the local broker and execute inference.
7899
8215
  *
7900
- * Stateless-pipeline model: the full pipeline content (`engine`, `steps`,
7901
- * optional `audio`) travels with the attach payload. The runner keeps it
7902
- * in RAM for the lifetime of the attach — on rebalance, edit, or
7903
- * restart the orchestrator re-sends the latest snapshot.
7904
- *
7905
- * `engine`/`steps`/`audio` are optional during the additive migration
7906
- * window; once orchestrator + UI are migrated they become required.
8216
+ * Stateless-pipeline model: the pipeline content (`steps`, optional
8217
+ * `audio`) travels with the attach payload. The runner keeps it in RAM
8218
+ * for the lifetime of the attach — on rebalance, edit, or restart the
8219
+ * orchestrator re-sends the latest snapshot. Engine is NOT carried: it is
8220
+ * node-local, resolved by the executing runner at dispatch time.
7907
8221
  */
7908
8222
  var RunnerCameraConfigSchema = z.object({
7909
8223
  deviceId: z.number(),
@@ -7954,14 +8268,11 @@ var RunnerCameraConfigSchema = z.object({
7954
8268
  */
7955
8269
  motionSources: MotionSourcesSchema.default(["analyzer"]),
7956
8270
  pipelineEnabled: z.boolean().default(true),
7957
- /** Engine choice for video steps (runtime+backend+format). */
7958
- engine: PipelineEngineChoiceSchema.optional(),
7959
8271
  /** Ordered tree of video steps. Absent → runner skips video detection. */
7960
8272
  steps: z.array(PipelineStepInputSchema).readonly().optional(),
7961
8273
  /** Audio classification branch. `enabled:false` disables, null skips. */
7962
8274
  audio: z.object({
7963
- engine: PipelineEngineChoiceSchema,
7964
- modelId: z.string(),
8275
+ modelId: z.string().optional(),
7965
8276
  enabled: z.boolean()
7966
8277
  }).nullable().optional(),
7967
8278
  /**
@@ -12253,10 +12564,12 @@ function createSystemProxy(api) {
12253
12564
  getEngineProvisioning: (input) => dispatch("pipelineExecutor", "getEngineProvisioning", "query", input),
12254
12565
  getVideoPipelineSteps: (input) => dispatch("pipelineExecutor", "getVideoPipelineSteps", "query", input),
12255
12566
  setVideoPipelineSteps: (input) => dispatch("pipelineExecutor", "setVideoPipelineSteps", "mutation", input),
12567
+ resetToDefault: (input) => dispatch("pipelineExecutor", "resetToDefault", "mutation", input),
12256
12568
  getSchema: (input) => dispatch("pipelineExecutor", "getSchema", "query", input),
12257
12569
  getGlobalSteps: (input) => dispatch("pipelineExecutor", "getGlobalSteps", "query", input),
12258
12570
  getGlobalPipelineConfig: (input) => dispatch("pipelineExecutor", "getGlobalPipelineConfig", "query", input),
12259
12571
  getOrchestratorConfigSchema: (input) => dispatch("pipelineExecutor", "getOrchestratorConfigSchema", "query", input),
12572
+ validatePipeline: (input) => dispatch("pipelineExecutor", "validatePipeline", "query", input),
12260
12573
  listTemplates: (input) => dispatch("pipelineExecutor", "listTemplates", "query", input),
12261
12574
  saveTemplate: (input) => dispatch("pipelineExecutor", "saveTemplate", "mutation", input),
12262
12575
  updateTemplate: (input) => dispatch("pipelineExecutor", "updateTemplate", "mutation", input),
@@ -12288,6 +12601,7 @@ function createSystemProxy(api) {
12288
12601
  getGlobalMetrics: (input) => dispatch("pipelineOrchestrator", "getGlobalMetrics", "query", input),
12289
12602
  getCapabilityBindings: (input) => dispatch("pipelineOrchestrator", "getCapabilityBindings", "query", input),
12290
12603
  setCapabilityBinding: (input) => dispatch("pipelineOrchestrator", "setCapabilityBinding", "mutation", input),
12604
+ getIngestOwner: (input) => dispatch("pipelineOrchestrator", "getIngestOwner", "query", input),
12291
12605
  getDecoderAssignments: (input) => dispatch("pipelineOrchestrator", "getDecoderAssignments", "query", input),
12292
12606
  getAudioNodeLoad: (input) => dispatch("pipelineOrchestrator", "getAudioNodeLoad", "query", input),
12293
12607
  getAgentSettings: (input) => dispatch("pipelineOrchestrator", "getAgentSettings", "query", input),
@@ -12297,6 +12611,7 @@ function createSystemProxy(api) {
12297
12611
  setAgentMaxCameras: (input) => dispatch("pipelineOrchestrator", "setAgentMaxCameras", "mutation", input),
12298
12612
  setAgentDetectWeight: (input) => dispatch("pipelineOrchestrator", "setAgentDetectWeight", "mutation", input),
12299
12613
  setAgentCapabilities: (input) => dispatch("pipelineOrchestrator", "setAgentCapabilities", "mutation", input),
12614
+ setAgentReachableHost: (input) => dispatch("pipelineOrchestrator", "setAgentReachableHost", "mutation", input),
12300
12615
  getCameraStatuses: (input) => dispatch("pipelineOrchestrator", "getCameraStatuses", "query", input),
12301
12616
  listTemplates: (input) => dispatch("pipelineOrchestrator", "listTemplates", "query", input),
12302
12617
  saveTemplate: (input) => dispatch("pipelineOrchestrator", "saveTemplate", "mutation", input),
@@ -14409,6 +14724,65 @@ var cameraPipelineConfigCapability = {
14409
14724
  methods: {}
14410
14725
  };
14411
14726
  //#endregion
14727
+ //#region src/capabilities/cap-router-predicates.ts
14728
+ /**
14729
+ * Shared cap-router predicates — the SINGLE source for the structural Zod-shape
14730
+ * checks + naming used by BOTH the runtime cap-router builder
14731
+ * (`@camstack/system` `cap-router-builder.ts` + the server's
14732
+ * `cap-router-runtime.ts`) AND the codegen scripts (`scripts/generate-cap-*.ts`).
14733
+ *
14734
+ * These used to be independently reimplemented on each side, held in sync only
14735
+ * by "must stay byte-identical" comments — a live drift risk. Consolidating them
14736
+ * here (next to `resolveCapMount` / `expandCapMethods`, the other shared model)
14737
+ * makes the two paths provably agree. Each predicate accepts both Zod 4
14738
+ * (`_def.type`) and legacy Zod 3 (`_def.typeName` / `constructor.name`) shapes.
14739
+ */
14740
+ /** `z.void()` — input carries no data. */
14741
+ function isVoidInput(schema) {
14742
+ const def = schema._def;
14743
+ return schema.constructor?.name === "ZodVoid" || def?.type === "void" || def?.typeName === "ZodVoid";
14744
+ }
14745
+ /** `z.object()` — supports `.loose()` for out-of-band `nodeId`/`addonId` keys. */
14746
+ function isObjectInput(schema) {
14747
+ const def = schema._def;
14748
+ return schema.constructor?.name === "ZodObject" || def?.type === "object" || def?.typeName === "ZodObject";
14749
+ }
14750
+ /**
14751
+ * Structural "is this Zod schema an array output" check — bottoms out at
14752
+ * `ZodArray` through the canonical Zod 4 wrappers (readonly/optional/nullable/
14753
+ * default). Bounded unwrap guards against a malformed/cyclic schema.
14754
+ */
14755
+ function isArrayOutputSchema(schema) {
14756
+ let cur = schema;
14757
+ for (let depth = 0; depth < 8 && cur != null; depth += 1) {
14758
+ const def = cur._def;
14759
+ const ctor = cur.constructor?.name;
14760
+ if (ctor === "ZodArray" || def?.type === "array") return true;
14761
+ if (!(ctor === "ZodReadonly" || def?.type === "readonly" || ctor === "ZodOptional" || def?.type === "optional" || ctor === "ZodNullable" || def?.type === "nullable" || ctor === "ZodDefault" || def?.type === "default") || def?.innerType == null) return false;
14762
+ cur = def.innerType;
14763
+ }
14764
+ return false;
14765
+ }
14766
+ /**
14767
+ * Apply `.loose()` to an object input schema when available (Zod 4) so the
14768
+ * router accepts the out-of-band `nodeId`/`addonId` selector keys without
14769
+ * stripping them. Falls back to the schema unchanged when `.loose()` is absent.
14770
+ */
14771
+ function looseSchema(schema) {
14772
+ const loose = schema.loose;
14773
+ return typeof loose === "function" ? loose.call(schema) : schema;
14774
+ }
14775
+ /** Auth level → base-procedure key. `superAdmin` collapses to `admin`. */
14776
+ function procedureAuthKey(auth) {
14777
+ if (auth === "public") return "public";
14778
+ if (auth === "admin" || auth === "superAdmin") return "admin";
14779
+ return "protected";
14780
+ }
14781
+ /** kebab-case cap name → camelCase router-map key. */
14782
+ function kebabToCamel(s) {
14783
+ return s.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
14784
+ }
14785
+ //#endregion
14412
14786
  //#region src/capabilities/custom-actions.ts
14413
14787
  /**
14414
14788
  * Identity — preserves literal types for downstream inference.
@@ -17197,11 +17571,11 @@ var pipelineAnalyticsCapability = {
17197
17571
  //#endregion
17198
17572
  //#region src/capabilities/pipeline-orchestrator.cap.ts
17199
17573
  var CameraPipelineConfigSchema = z.object({
17200
- engine: PipelineEngineChoiceSchema,
17574
+ engine: PipelineEngineChoiceSchema.optional(),
17201
17575
  steps: z.array(PipelineStepInputSchema).readonly(),
17202
17576
  audio: z.object({
17203
- engine: PipelineEngineChoiceSchema,
17204
- modelId: z.string(),
17577
+ engine: PipelineEngineChoiceSchema.optional(),
17578
+ modelId: z.string().optional(),
17205
17579
  enabled: z.boolean(),
17206
17580
  settings: z.record(z.string(), z.unknown()).readonly().optional()
17207
17581
  }).nullable().optional()
@@ -17216,7 +17590,7 @@ var PipelineTemplateSchema = z.object({
17216
17590
  });
17217
17591
  var AgentAddonConfigSchema = z.object({
17218
17592
  enabled: z.boolean(),
17219
- modelId: z.string(),
17593
+ modelId: z.string().optional(),
17220
17594
  settings: z.record(z.string(), z.unknown()).readonly()
17221
17595
  });
17222
17596
  var AgentPipelineSettingsSchema = z.object({
@@ -17231,7 +17605,15 @@ var AgentPipelineSettingsSchema = z.object({
17231
17605
  /** Node is eligible to run audio-analyzer sessions. */
17232
17606
  audio: z.boolean().optional(),
17233
17607
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
17234
- ingest: z.boolean().optional()
17608
+ ingest: z.boolean().optional(),
17609
+ /**
17610
+ * Operator override for the LAN host a cross-node decoder dials to reach
17611
+ * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
17612
+ * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
17613
+ * it already uses to reach the hub). Set this only when the auto-detected
17614
+ * address is wrong (multi-homed host, NAT, custom interface).
17615
+ */
17616
+ reachableHost: z.string().optional()
17235
17617
  });
17236
17618
  var CameraPipelineForAgentSchema = z.object({
17237
17619
  steps: z.array(PipelineStepInputSchema).readonly(),
@@ -17337,6 +17719,15 @@ var GlobalMetricsSchema = z.object({
17337
17719
  * capability providers.
17338
17720
  */
17339
17721
  var CapabilityBindingsSchema = z.record(z.string(), z.string());
17722
+ /**
17723
+ * The cluster's single camera-source owner (`clusterRoles.ingestNode`) plus
17724
+ * its LAN-reachable host, if one is registered. See `getIngestOwner`.
17725
+ */
17726
+ var IngestOwnerSchema = z.object({
17727
+ ownerNodeId: z.string(),
17728
+ reachableHost: z.string().optional(),
17729
+ configIssue: z.string().optional()
17730
+ });
17340
17731
  /** Stream entry surfaced from the stream-catalog for one device. */
17341
17732
  var CameraSourceStreamSchema = z.object({
17342
17733
  camStreamId: z.string(),
@@ -17353,6 +17744,14 @@ var CameraAssignmentStatusSchema = z.object({
17353
17744
  detectionNodeId: z.string().nullable(),
17354
17745
  decoderNodeId: z.string().nullable(),
17355
17746
  audioNodeId: z.string().nullable(),
17747
+ /**
17748
+ * The node that OWNS this camera's physical source pull (dials the RTSP and
17749
+ * hosts the broker/restream) — the cluster ingest owner today
17750
+ * (`clusterRoles.ingestNode`), per-camera once source assignment lands. Lets
17751
+ * the UI show WHERE a camera is sourced without SSH/logs, and is the node the
17752
+ * broker block below was read from (pinned). Nullable only pre-wiring.
17753
+ */
17754
+ sourceNodeId: z.string().nullable(),
17356
17755
  pinned: z.object({
17357
17756
  detection: z.boolean(),
17358
17757
  decoder: z.boolean(),
@@ -17559,6 +17958,14 @@ var pipelineOrchestratorCapability = {
17559
17958
  kind: "mutation",
17560
17959
  auth: "admin"
17561
17960
  }),
17961
+ /**
17962
+ * The cluster's single camera-source owner — resolved UNCONDITIONALLY
17963
+ * from `clusterRoles.ingestNode` (NOT the detection-decode
17964
+ * `remoteSourcingNodes` knob). Consumers (recorder/snapshot/audio) pin
17965
+ * their broker calls to `ownerNodeId` and dial `reachableHost` when
17966
+ * present. Defaults to `{ ownerNodeId: 'hub' }`.
17967
+ */
17968
+ getIngestOwner: method(z.void(), IngestOwnerSchema),
17562
17969
  /** Pin a device's decoder to a specific node. */
17563
17970
  assignDecoder: method(z.object({
17564
17971
  deviceId: z.number(),
@@ -17705,6 +18112,22 @@ var pipelineOrchestratorCapability = {
17705
18112
  kind: "mutation",
17706
18113
  auth: "admin"
17707
18114
  }),
18115
+ /**
18116
+ * Set (or clear) the operator override for the LAN host a cross-node
18117
+ * decoder dials to reach this node's restream. Pass a non-empty string to
18118
+ * override the auto-detected address (the runner's `CAMSTACK_HUB_URL`
18119
+ * default); pass `null` or an empty string to clear it and revert to
18120
+ * auto-detect. Applied on the next dispatch cycle — takes effect for new
18121
+ * cross-node attaches; existing attaches keep their current host until
18122
+ * re-dispatched.
18123
+ */
18124
+ setAgentReachableHost: method(z.object({
18125
+ agentNodeId: z.string(),
18126
+ reachableHost: z.string().nullable()
18127
+ }), z.object({ success: z.literal(true) }), {
18128
+ kind: "mutation",
18129
+ auth: "admin"
18130
+ }),
17708
18131
  /** Read one camera's settings. Null when never touched (inherits agent defaults fully). */
17709
18132
  getCameraSettings: method(z.object({ deviceId: z.number() }), CameraPipelineSettingsSchema.nullable()),
17710
18133
  /** Set or clear the 3-state toggle for one (camera, addonId). Pass `enabled: null` to clear and revert to agent default. */
@@ -17797,36 +18220,6 @@ var pipelineOrchestratorCapability = {
17797
18220
  }
17798
18221
  };
17799
18222
  //#endregion
17800
- //#region src/capabilities/restreamer.cap.ts
17801
- var RegisteredStreamSchema = z.object({
17802
- streamId: z.string(),
17803
- label: z.string().optional(),
17804
- codec: z.string(),
17805
- type: z.enum(["video", "audio"]),
17806
- sourceUrl: z.string()
17807
- });
17808
- var ExposedResourceSchema = z.object({
17809
- streamId: z.string(),
17810
- format: z.string(),
17811
- value: z.string()
17812
- });
17813
- var restreamerCapability = {
17814
- name: "restreamer",
17815
- scope: "system",
17816
- mode: "collection",
17817
- internal: true,
17818
- methods: {
17819
- registerDevice: method(z.object({
17820
- deviceId: z.number(),
17821
- streams: z.array(RegisteredStreamSchema).readonly()
17822
- }), z.void(), { kind: "mutation" }),
17823
- unregisterDevice: method(z.object({ deviceId: z.number() }), z.void(), { kind: "mutation" }),
17824
- getExposedResources: method(z.object({ deviceId: z.number() }), z.array(ExposedResourceSchema).readonly())
17825
- },
17826
- /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
17827
- mount: { kind: "skip" }
17828
- };
17829
- //#endregion
17830
18223
  //#region src/capabilities/settings-store.cap.ts
17831
18224
  /**
17832
18225
  * Query filter for settings-store collections.
@@ -18054,9 +18447,9 @@ var smtpProviderCapability = {
18054
18447
  /**
18055
18448
  * A single device snapshot returned as base64 JPEG/PNG.
18056
18449
  *
18057
- * Shared with the `snapshot-provider` collection cap the orchestrator
18058
- * receives the same shape from each native provider and from the
18059
- * broker-based fallback.
18450
+ * The `SnapshotAddon` wrapper returns this shape whether the frame came from
18451
+ * the device-native provider (onboard capture) or from the stream-broker
18452
+ * prebuffer fallback.
18060
18453
  */
18061
18454
  var SnapshotImageSchema = z.object({
18062
18455
  base64: z.string(),
@@ -18132,38 +18525,6 @@ var snapshotCapability = {
18132
18525
  }
18133
18526
  };
18134
18527
  //#endregion
18135
- //#region src/capabilities/snapshot-provider.cap.ts
18136
- /**
18137
- * snapshot-provider — collection of native snapshot implementations.
18138
- *
18139
- * Device provider addons (ONVIF, Frigate, etc.) register here
18140
- * when they can capture frames through a protocol-native path (e.g.
18141
- * ONVIF GetSnapshotUri, Frigate /api/<cam>/latest.jpg). The `snapshot`
18142
- * singleton orchestrator iterates over the collection, asking each
18143
- * provider whether it supports the requested device, and calls the
18144
- * first matching one.
18145
- *
18146
- * If no provider in the collection supports a device, the orchestrator
18147
- * falls back to `stream-broker.grabFrame` (universal fallback).
18148
- *
18149
- * Public tRPC router (auto-mounted) so out-of-process addons, agents,
18150
- * and advanced clients can bypass the orchestrator when needed.
18151
- */
18152
- var snapshotProviderCapability = {
18153
- name: "snapshot-provider",
18154
- scope: "system",
18155
- mode: "collection",
18156
- methods: {
18157
- supportsDevice: method(z.object({ deviceId: z.number() }), z.boolean()),
18158
- getSnapshot: method(z.object({
18159
- deviceId: z.number(),
18160
- streamId: z.string().optional()
18161
- }), SnapshotImageSchema.nullable())
18162
- },
18163
- /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
18164
- mount: { kind: "custom" }
18165
- };
18166
- //#endregion
18167
18528
  //#region src/capabilities/sso-bridge.cap.ts
18168
18529
  /**
18169
18530
  * `sso-bridge` — internal hub-only cap that lets SSO-style auth
@@ -18698,11 +19059,12 @@ var videoclipsCapability = {
18698
19059
  }
18699
19060
  };
18700
19061
  //#endregion
18701
- //#region src/capabilities/webrtc.cap.ts
19062
+ //#region src/capabilities/webrtc-session.cap.ts
18702
19063
  /**
18703
- * Optional client-side hints sent at session creation to help the
18704
- * provider pick the best native source. All fields are optional —
18705
- * a viewer that knows nothing still gets a sane default.
19064
+ * Optional client-side hints sent at session creation to help the provider
19065
+ * pick the best native source. All fields optional — a viewer that knows
19066
+ * nothing still gets a sane default. (Relocated from the retired `webrtc`
19067
+ * collection cap; this `webrtc-session` cap is the live signaling surface.)
18706
19068
  */
18707
19069
  var webrtcClientHintsSchema = z.object({
18708
19070
  viewportWidth: z.number().int().positive().optional(),
@@ -18713,51 +19075,6 @@ var webrtcClientHintsSchema = z.object({
18713
19075
  /** Hard tier override; takes precedence over scoring when registered. */
18714
19076
  prefersTier: z.string().optional()
18715
19077
  }).partial();
18716
- var webrtcCapability = {
18717
- name: "webrtc",
18718
- scope: "system",
18719
- mode: "collection",
18720
- internal: true,
18721
- methods: {
18722
- handleOffer: method(z.object({
18723
- streamId: z.string(),
18724
- sdpOffer: z.string()
18725
- }), z.string(), { kind: "mutation" }),
18726
- supportsStream: method(z.object({ streamId: z.string() }), z.boolean()),
18727
- registerStream: method(z.object({
18728
- streamId: z.string(),
18729
- codec: z.string()
18730
- }), z.void(), { kind: "mutation" }),
18731
- unregisterStream: method(z.object({ streamId: z.string() }), z.void(), { kind: "mutation" }),
18732
- /**
18733
- * Two-step server-offer signaling. `hints` is optional — providers
18734
- * that don't care about adaptive source selection ignore it.
18735
- */
18736
- createSession: method(z.object({
18737
- streamId: z.string(),
18738
- hints: webrtcClientHintsSchema.optional()
18739
- }), z.object({
18740
- sessionId: z.string(),
18741
- sdpOffer: z.string()
18742
- }), { kind: "mutation" }),
18743
- handleAnswer: method(z.object({
18744
- sessionId: z.string(),
18745
- sdpAnswer: z.string()
18746
- }), z.void(), { kind: "mutation" }),
18747
- closeSession: method(z.object({ sessionId: z.string() }), z.void(), { kind: "mutation" }),
18748
- /**
18749
- * Whether this provider supports adaptive bitrate for the given stream.
18750
- * Currently always false — adaptive selection is one-shot at session
18751
- * start, not in-session encoder switching. Phase 5 plans to layer
18752
- * encoder-driven adaptation on top.
18753
- */
18754
- hasAdaptiveBitrate: method(z.object({ streamId: z.string() }), z.boolean())
18755
- },
18756
- /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
18757
- mount: { kind: "skip" }
18758
- };
18759
- //#endregion
18760
- //#region src/capabilities/webrtc-session.cap.ts
18761
19078
  /**
18762
19079
  * Discriminated target for a WebRTC session. The client sends this
18763
19080
  * structured object instead of building / parsing brokerId strings;
@@ -19030,7 +19347,7 @@ var webrtcSessionCapability = {
19030
19347
  }).nullable() }))
19031
19348
  },
19032
19349
  /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
19033
- mount: { kind: "custom" }
19350
+ mount: { kind: "server-provided" }
19034
19351
  };
19035
19352
  //#endregion
19036
19353
  //#region src/capabilities/accessories.cap.ts
@@ -19709,7 +20026,7 @@ var addonsCapability = {
19709
20026
  }), LogStreamEntrySchema, { kind: "subscription" })
19710
20027
  },
19711
20028
  /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
19712
- mount: { kind: "service-backed" }
20029
+ mount: { kind: "server-provided" }
19713
20030
  };
19714
20031
  //#endregion
19715
20032
  //#region src/capabilities/button.cap.ts
@@ -20125,7 +20442,7 @@ var integrationsCapability = {
20125
20442
  })
20126
20443
  },
20127
20444
  /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
20128
- mount: { kind: "service-backed" }
20445
+ mount: { kind: "server-provided" }
20129
20446
  };
20130
20447
  //#endregion
20131
20448
  //#region src/capabilities/intercom.cap.ts
@@ -20772,7 +21089,7 @@ var networkQualityCapability = {
20772
21089
  }), z.void(), { kind: "mutation" })
20773
21090
  },
20774
21091
  /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
20775
- mount: { kind: "service-backed" }
21092
+ mount: { kind: "server-provided" }
20776
21093
  };
20777
21094
  //#endregion
20778
21095
  //#region src/capabilities/nodes.cap.ts
@@ -20964,7 +21281,7 @@ var nodesCapability = {
20964
21281
  })
20965
21282
  },
20966
21283
  /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
20967
- mount: { kind: "service-backed" }
21284
+ mount: { kind: "server-provided" }
20968
21285
  };
20969
21286
  //#endregion
20970
21287
  //#region src/capabilities/osd.cap.ts
@@ -21958,7 +22275,7 @@ var systemCapability = {
21958
22275
  })
21959
22276
  },
21960
22277
  /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
21961
- mount: { kind: "service-backed" }
22278
+ mount: { kind: "server-provided" }
21962
22279
  };
21963
22280
  //#endregion
21964
22281
  //#region src/capabilities/toast.cap.ts
@@ -21998,7 +22315,7 @@ var toastCapability = {
21998
22315
  mode: "singleton",
21999
22316
  methods: { onToast: method(z.void(), ToastSchema, { kind: "subscription" }) },
22000
22317
  /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
22001
- mount: { kind: "service-backed" }
22318
+ mount: { kind: "server-provided" }
22002
22319
  };
22003
22320
  //#endregion
22004
22321
  //#region src/capabilities/user-management.cap.ts
@@ -22378,13 +22695,11 @@ var CAPABILITY_NAMES = {
22378
22695
  ptzAutotrack: "ptz-autotrack",
22379
22696
  reboot: "reboot",
22380
22697
  recording: "recording",
22381
- restreamer: "restreamer",
22382
22698
  scriptRunner: "script-runner",
22383
22699
  settingsStore: "settings-store",
22384
22700
  smoke: "smoke",
22385
22701
  smtpProvider: "smtp-provider",
22386
22702
  snapshot: "snapshot",
22387
- snapshotProvider: "snapshot-provider",
22388
22703
  ssoBridge: "sso-bridge",
22389
22704
  storage: "storage",
22390
22705
  storageEvictable: "storage-evictable",
@@ -22392,7 +22707,6 @@ var CAPABILITY_NAMES = {
22392
22707
  streamBroker: "stream-broker",
22393
22708
  streamCatalog: "stream-catalog",
22394
22709
  streamParams: "stream-params",
22395
- streamingEngine: "streaming-engine",
22396
22710
  switch: "switch",
22397
22711
  system: "system",
22398
22712
  tamper: "tamper",
@@ -22408,7 +22722,6 @@ var CAPABILITY_NAMES = {
22408
22722
  videoclips: "videoclips",
22409
22723
  waterHeater: "water-heater",
22410
22724
  weather: "weather",
22411
- webrtc: "webrtc",
22412
22725
  webrtcSession: "webrtc-session",
22413
22726
  zoneAnalytics: "zone-analytics",
22414
22727
  zoneRules: "zone-rules",
@@ -22832,10 +23145,6 @@ var CAPABILITY_ROUTER_KEYS = [
22832
23145
  key: "recording",
22833
23146
  name: "recording"
22834
23147
  },
22835
- {
22836
- key: "restreamer",
22837
- name: "restreamer"
22838
- },
22839
23148
  {
22840
23149
  key: "scriptRunner",
22841
23150
  name: "script-runner"
@@ -22856,10 +23165,6 @@ var CAPABILITY_ROUTER_KEYS = [
22856
23165
  key: "snapshot",
22857
23166
  name: "snapshot"
22858
23167
  },
22859
- {
22860
- key: "snapshotProvider",
22861
- name: "snapshot-provider"
22862
- },
22863
23168
  {
22864
23169
  key: "ssoBridge",
22865
23170
  name: "sso-bridge"
@@ -22888,10 +23193,6 @@ var CAPABILITY_ROUTER_KEYS = [
22888
23193
  key: "streamParams",
22889
23194
  name: "stream-params"
22890
23195
  },
22891
- {
22892
- key: "streamingEngine",
22893
- name: "streaming-engine"
22894
- },
22895
23196
  {
22896
23197
  key: "switch",
22897
23198
  name: "switch"
@@ -22952,10 +23253,6 @@ var CAPABILITY_ROUTER_KEYS = [
22952
23253
  key: "weather",
22953
23254
  name: "weather"
22954
23255
  },
22955
- {
22956
- key: "webrtc",
22957
- name: "webrtc"
22958
- },
22959
23256
  {
22960
23257
  key: "webrtcSession",
22961
23258
  name: "webrtc-session"
@@ -23087,13 +23384,11 @@ var ALL_CAPABILITY_DEFINITIONS = [
23087
23384
  ptzAutotrackCapability,
23088
23385
  rebootCapability,
23089
23386
  recordingCapability,
23090
- restreamerCapability,
23091
23387
  scriptRunnerCapability,
23092
23388
  settingsStoreCapability,
23093
23389
  smokeCapability,
23094
23390
  smtpProviderCapability,
23095
23391
  snapshotCapability,
23096
- snapshotProviderCapability,
23097
23392
  ssoBridgeCapability,
23098
23393
  storageCapability,
23099
23394
  storageEvictableCapability,
@@ -23101,7 +23396,6 @@ var ALL_CAPABILITY_DEFINITIONS = [
23101
23396
  streamBrokerCapability,
23102
23397
  streamCatalogCapability,
23103
23398
  streamParamsCapability,
23104
- streamingEngineCapability,
23105
23399
  switchCapability,
23106
23400
  systemCapability,
23107
23401
  tamperCapability,
@@ -23117,7 +23411,6 @@ var ALL_CAPABILITY_DEFINITIONS = [
23117
23411
  videoclipsCapability,
23118
23412
  waterHeaterCapability,
23119
23413
  weatherCapability,
23120
- webrtcCapability,
23121
23414
  webrtcSessionCapability,
23122
23415
  zoneAnalyticsCapability,
23123
23416
  zoneRulesCapability,
@@ -25968,6 +26261,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
25968
26261
  addonId: null,
25969
26262
  access: "create"
25970
26263
  },
26264
+ "pipelineExecutor.resetToDefault": {
26265
+ capName: "pipeline-executor",
26266
+ capScope: "system",
26267
+ addonId: null,
26268
+ access: "delete"
26269
+ },
25971
26270
  "pipelineExecutor.runAudioTest": {
25972
26271
  capName: "pipeline-executor",
25973
26272
  capScope: "system",
@@ -26016,6 +26315,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
26016
26315
  addonId: null,
26017
26316
  access: "create"
26018
26317
  },
26318
+ "pipelineExecutor.validatePipeline": {
26319
+ capName: "pipeline-executor",
26320
+ capScope: "system",
26321
+ addonId: null,
26322
+ access: "view"
26323
+ },
26019
26324
  "pipelineOrchestrator.assignAudio": {
26020
26325
  capName: "pipeline-orchestrator",
26021
26326
  capScope: "system",
@@ -26124,6 +26429,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
26124
26429
  addonId: null,
26125
26430
  access: "view"
26126
26431
  },
26432
+ "pipelineOrchestrator.getIngestOwner": {
26433
+ capName: "pipeline-orchestrator",
26434
+ capScope: "system",
26435
+ addonId: null,
26436
+ access: "view"
26437
+ },
26127
26438
  "pipelineOrchestrator.getPipelineAssignment": {
26128
26439
  capName: "pipeline-orchestrator",
26129
26440
  capScope: "system",
@@ -26196,6 +26507,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
26196
26507
  addonId: null,
26197
26508
  access: "create"
26198
26509
  },
26510
+ "pipelineOrchestrator.setAgentReachableHost": {
26511
+ capName: "pipeline-orchestrator",
26512
+ capScope: "system",
26513
+ addonId: null,
26514
+ access: "create"
26515
+ },
26199
26516
  "pipelineOrchestrator.setCameraPipelineForAgent": {
26200
26517
  capName: "pipeline-orchestrator",
26201
26518
  capScope: "system",
@@ -26526,24 +26843,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
26526
26843
  addonId: null,
26527
26844
  access: "create"
26528
26845
  },
26529
- "restreamer.getExposedResources": {
26530
- capName: "restreamer",
26531
- capScope: "system",
26532
- addonId: null,
26533
- access: "view"
26534
- },
26535
- "restreamer.registerDevice": {
26536
- capName: "restreamer",
26537
- capScope: "system",
26538
- addonId: null,
26539
- access: "create"
26540
- },
26541
- "restreamer.unregisterDevice": {
26542
- capName: "restreamer",
26543
- capScope: "system",
26544
- addonId: null,
26545
- access: "delete"
26546
- },
26547
26846
  "scriptRunner.run": {
26548
26847
  capName: "script-runner",
26549
26848
  capScope: "device",
@@ -26646,18 +26945,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
26646
26945
  addonId: null,
26647
26946
  access: "create"
26648
26947
  },
26649
- "snapshotProvider.getSnapshot": {
26650
- capName: "snapshot-provider",
26651
- capScope: "system",
26652
- addonId: null,
26653
- access: "view"
26654
- },
26655
- "snapshotProvider.supportsDevice": {
26656
- capName: "snapshot-provider",
26657
- capScope: "system",
26658
- addonId: null,
26659
- access: "view"
26660
- },
26661
26948
  "ssoBridge.signBridgeToken": {
26662
26949
  capName: "sso-bridge",
26663
26950
  capScope: "system",
@@ -27084,30 +27371,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
27084
27371
  addonId: null,
27085
27372
  access: "view"
27086
27373
  },
27087
- "streamingEngine.getStreamUrl": {
27088
- capName: "streaming-engine",
27089
- capScope: "system",
27090
- addonId: null,
27091
- access: "view"
27092
- },
27093
- "streamingEngine.listStreams": {
27094
- capName: "streaming-engine",
27095
- capScope: "system",
27096
- addonId: null,
27097
- access: "view"
27098
- },
27099
- "streamingEngine.registerStream": {
27100
- capName: "streaming-engine",
27101
- capScope: "system",
27102
- addonId: null,
27103
- access: "create"
27104
- },
27105
- "streamingEngine.unregisterStream": {
27106
- capName: "streaming-engine",
27107
- capScope: "system",
27108
- addonId: null,
27109
- access: "delete"
27110
- },
27111
27374
  "streamParams.getConfigSchema": {
27112
27375
  capName: "stream-params",
27113
27376
  capScope: "device",
@@ -27474,54 +27737,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
27474
27737
  addonId: null,
27475
27738
  access: "create"
27476
27739
  },
27477
- "webrtc.closeSession": {
27478
- capName: "webrtc",
27479
- capScope: "system",
27480
- addonId: null,
27481
- access: "create"
27482
- },
27483
- "webrtc.createSession": {
27484
- capName: "webrtc",
27485
- capScope: "system",
27486
- addonId: null,
27487
- access: "create"
27488
- },
27489
- "webrtc.handleAnswer": {
27490
- capName: "webrtc",
27491
- capScope: "system",
27492
- addonId: null,
27493
- access: "create"
27494
- },
27495
- "webrtc.handleOffer": {
27496
- capName: "webrtc",
27497
- capScope: "system",
27498
- addonId: null,
27499
- access: "create"
27500
- },
27501
- "webrtc.hasAdaptiveBitrate": {
27502
- capName: "webrtc",
27503
- capScope: "system",
27504
- addonId: null,
27505
- access: "view"
27506
- },
27507
- "webrtc.registerStream": {
27508
- capName: "webrtc",
27509
- capScope: "system",
27510
- addonId: null,
27511
- access: "create"
27512
- },
27513
- "webrtc.supportsStream": {
27514
- capName: "webrtc",
27515
- capScope: "system",
27516
- addonId: null,
27517
- access: "view"
27518
- },
27519
- "webrtc.unregisterStream": {
27520
- capName: "webrtc",
27521
- capScope: "system",
27522
- addonId: null,
27523
- access: "delete"
27524
- },
27525
27740
  "webrtcSession.addIceCandidate": {
27526
27741
  capName: "webrtc-session",
27527
27742
  capScope: "device",
@@ -27722,12 +27937,10 @@ var KNOWN_CAP_NAMES = [
27722
27937
  "ptz-autotrack",
27723
27938
  "reboot",
27724
27939
  "recording",
27725
- "restreamer",
27726
27940
  "script-runner",
27727
27941
  "settings-store",
27728
27942
  "smtp-provider",
27729
27943
  "snapshot",
27730
- "snapshot-provider",
27731
27944
  "sso-bridge",
27732
27945
  "storage",
27733
27946
  "storage-evictable",
@@ -27735,7 +27948,6 @@ var KNOWN_CAP_NAMES = [
27735
27948
  "stream-broker",
27736
27949
  "stream-catalog",
27737
27950
  "stream-params",
27738
- "streaming-engine",
27739
27951
  "switch",
27740
27952
  "system",
27741
27953
  "toast",
@@ -27747,7 +27959,6 @@ var KNOWN_CAP_NAMES = [
27747
27959
  "valve",
27748
27960
  "videoclips",
27749
27961
  "water-heater",
27750
- "webrtc",
27751
27962
  "webrtc-session",
27752
27963
  "zone-analytics",
27753
27964
  "zone-rules",
@@ -27855,22 +28066,18 @@ var SYSTEM_CAP_NAMES = [
27855
28066
  "plate-gallery",
27856
28067
  "platform-probe",
27857
28068
  "recording",
27858
- "restreamer",
27859
28069
  "settings-store",
27860
28070
  "smtp-provider",
27861
- "snapshot-provider",
27862
28071
  "sso-bridge",
27863
28072
  "storage",
27864
28073
  "storage-evictable",
27865
28074
  "storage-provider",
27866
28075
  "stream-broker",
27867
- "streaming-engine",
27868
28076
  "system",
27869
28077
  "toast",
27870
28078
  "turn-provider",
27871
28079
  "user-management",
27872
- "user-passkeys",
27873
- "webrtc"
28080
+ "user-passkeys"
27874
28081
  ];
27875
28082
  //#endregion
27876
28083
  //#region src/generated/scope-presets.ts
@@ -28427,4 +28634,4 @@ function scoreRuntimes(hw) {
28427
28634
  };
28428
28635
  }
28429
28636
  //#endregion
28430
- export { ACCESSORY_LABEL, ALL_CAPABILITY_DEFINITIONS, APPLE_SA_TO_MACRO, AUDIO_BACKEND_CHOICES, AUDIO_MACRO_LABELS, AccessoriesStatusSchema, AccessoryKind, AddBrokerInputSchema, AddonAutoUpdateSchema, AddonListItemSchema, AddonPageDeclarationSchema, AddonPageInfoSchema, AdoptInputSchema as AdoptionAdoptInputSchema, AdoptResultSchema as AdoptionAdoptResultSchema, AdoptionFilterSchema, GetCandidateInputSchema as AdoptionGetCandidateInputSchema, ListCandidatesInputSchema as AdoptionListCandidatesInputSchema, ListCandidatesOutputSchema as AdoptionListCandidatesOutputSchema, ReleaseInputSchema as AdoptionReleaseInputSchema, AdoptionStatusSchema, AgentLoadSummarySchema, AirQualitySensorStatusSchema, AlarmArmModeSchema, AlarmPanelStatusSchema, AlarmStateSchema, AlertSchema, AlertSeveritySchema, AlertSourceSchema, AlertStatusSchema, AmbientLightSensorStatusSchema, ApiKeyRecordSchema, ApiKeySummarySchema, ArchiveEntrySchema, ArchiveManifestSchema, AttachmentMediaTypeSchema, AttachmentSchema, AudioAnalysisResultSchema, AudioAnalysisSettingsSchema, AudioChunkInputSchema, AudioClassSummarySchema, AudioClassificationLabelSchema, AudioClassificationResultSchema, AudioCodecInfoSchema, AudioDecodeSessionConfigSchema, AudioEncodeSchema, AudioEncodeSessionConfigSchema, AudioEncodedChunkSchema, AudioEventSchema, AudioLevelSchema, AudioMetricsHistoryPointSchema, AudioMetricsHistorySchema, AudioMetricsSnapshotSchema, AudioPcmChunkSchema, AuthResultSchema, AutoUpdateSettingsSchema, AutomationControlStatusSchema, AvailableIntegrationTypeSchema, BACKEND_TO_FORMAT, BATTERY_DEVICE_PROFILE, BacklightModeSchema, BackupDestinationInfoSchema, BackupEntrySchema, BaseAddon, BaseDevice, BaseDeviceProvider, BatteryStatusSchema, BinaryStatusSchema, BoundingBoxSchema, BrightnessStatusSchema, AddInputSchema as BrokerAddInputSchema, BrokerAudioClientSchema, BrokerClientsSchema, BrokerConnectionDetailsSchema, BrokerConsumerAttributionSchema, BrokerConsumerKindSchema, BrokerDecodedClientSchema, BrokerEncodedClientSchema, GetStateInputSchema as BrokerGetStateInputSchema, BrokerInfoSchema, BrokerProviderInfoSchema, PublishInputSchema as BrokerPublishInputSchema, RegistryStatusSchema as BrokerRegistryStatusSchema, BrokerRtspClientSchema, BrokerStatsSchema, BrokerStatusEnum, BrokerStatusSchema, SubscribeInputSchema as BrokerSubscribeInputSchema, SubscribeResultSchema as BrokerSubscribeResultSchema, TestConnectionResultSchema as BrokerTestConnectionResultSchema, UnsubscribeInputSchema as BrokerUnsubscribeInputSchema, CAM_PROFILE_ORDER, CAPABILITY_NAMES, CAPABILITY_ROUTER_KEYS, CAP_NAMES_WITH_STATUS, CAP_NODE_PIN_CONTEXT_KEY, CAP_PROVIDER_KIND_MAP, COCO_80_LABELS, COCO_TO_MACRO, CamProfileSchema, CamStreamDescriptorSchema, CamStreamKindSchema, CamStreamResolutionSchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraCredentialsSchema, CameraCredentialsStatusSchema, CameraDecoderShmSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionStatusSchema, CameraMetricsSchema, CameraMetricsWithDeviceIdSchema, CameraMotionStatusSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusSchema, CameraStreamSchema, CandidateQueryFilterSchema, CapScopeSchema, CapabilityBindingsSchema, CarbonMonoxideStatusSchema, ChargingStatus, ClientNetworkStatsSchema, ClimateControlStatusSchema, ClipPlaybackSchema, ClipSchema, ClusterAddonNodeDeploymentSchema, ClusterAddonStatusEntrySchema, CollectionColumnSchema, CollectionIndexSchema, ColorStatusSchema, ConfigEntrySchema, ConfigSectionWithValuesSchema, ConfigTabDeclarationSchema, ConnectivityStatusSchema, ConsumableItemSchema, ConsumablesStatusSchema, ContactStatusSchema, ControlKindSchema, ControlStatusSchema, ConvertArtifactSchema, ConvertResultSchema, ConvertTargetSchema, CoverStateSchema, CoverStatusSchema, CreateApiKeyInputSchema, CreateApiKeyResultSchema, CreateIntegrationInputSchema, CreateScopedTokenInputSchema, CreateScopedTokenResultSchema, CreateUserInputSchema, CustomActionInputSchema, CustomModelDescriptorSchema, DATAPLANE_SECRET_HEADER, DEFAULT_ADDON_PLACEMENT, DEFAULT_AUDIO_ANALYZER_CONFIG, DEFAULT_DECODER_HWACCEL_CONFIG, DEFAULT_FEATURES, DEFAULT_RETENTION, DEVICE_CAP_NAMES, DEVICE_PROFILES, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DEVICE_TYPE_INFO, DayNightModeSchema, DayNightOptionsSchema, DayNightSettingsPatchSchema, DayNightStatusSchema, DecodedAudioChunkSchema, DecodedFrameSchema, DecoderAssignmentSchema, DecoderSessionConfigSchema, DecoderStatsSchema, DeleteIntegrationResultSchema, DetectionSourceSchema, DetectorOutputSchema, DeviceCodeSeveritySchema, DeviceConfig, DeviceDiscoveryStatusSchema, ExposeInputSchema as DeviceExportExposeInputSchema, DeviceExportStatusSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, DeviceFeature, DeviceInfoSchema, DeviceNetworkStatsSchema, DeviceRole, DeviceRuntimeState, DeviceStatusSchema, DeviceType, DiscoveredChildDeviceSchema, DiscoveredChildStatusSchema, DiscoveredDeviceSchema, DiscoveredTargetSchema, DisposerChain, DoorbellPressEventSchema, DoorbellStatusSchema, EVENT_PAD_MS, EXPRESSION_BUILTINS, EXPRESSION_BUILTIN_NAMES, EXPRESSION_COMPILE_CACHE_CAPACITY, EXPRESSION_IDENTIFIER_RE, EXPRESSION_INJECTED_NOW, ElementConfigStore, EmbeddingInfoSchema, EmbeddingResultSchema, EncodeProfileSchema, EncodedPacketSchema, EnrichedWidgetMetadataSchema, EnumSensorDateTimeFormatSchema, EnumSensorStatusSchema, EventCategory, EventEmitterStatusSchema, EventFireSchema, EventItemSchema, EventKindSchema, EventSourceType, ExportSetupFieldSchema, ExportSetupSchema, ExposedDeviceSchema, ExposedResourceSchema, ExposureModeSchema, ExpressionEvalError, ExpressionParseError, FanControlStatusSchema, FanDirectionSchema, FeatureManifestSchema, FeatureProbeStatusSchema, FloodStatusSchema, FrameHandleFormatSchema, FrameHandleSchema, FrameInputSchema, GasStatusSchema, GetStreamWithCodecInputSchema, GlobalMetricsSchema, HF_BASE_URL, HF_REPO, HWACCEL_OPTIONS, HealthStatusSchema, HistoryPointSchema, HistoryResolutionEnum, HumidifierStatusSchema, HumiditySensorStatusSchema, HvacModeSchema, ImageRotateSchema, ImageSettingsOptionsSchema, ImageSettingsPatchSchema, ImageSettingsStatusSchema, ImageStatusSchema, InstalledPackageSchema, IntegrationLiteSchema, IntegrationWithStateSchema, IntercomAbilitySchema, IntercomStatusSchema, KNOWN_CAP_NAMES, LabelDefinitionSchema, LawnMowerActivitySchema, LawnMowerControlStatusSchema, LocateSegmentResultSchema, LocationStatSchema, LockControlStatusSchema, LockStateSchema, LogEntrySchema, LogLevelSchema, LogStreamEntrySchema, MACRO_LABELS, MAX_EXPRESSION_AST_NODES, MAX_EXPRESSION_BINDINGS, MAX_EXPRESSION_CALL_ARGS, MAX_EXPRESSION_EVAL_STEPS, MAX_EXPRESSION_SOURCE_LENGTH, METHOD_ACCESS_MAP, MODEL_FORMATS, MaskGridDimsSchema, MaskGridShapeSchema, MaskLineShapeSchema, MaskPointSchema, MaskPolygonShapeSchema, MaskPolygonVerticesSchema, MaskRectShapeSchema, MaskShapeKindSchema, MaskShapeSchema, MediaFileSchema, MediaPlayerRepeatSchema, MediaPlayerStateSchema, MediaPlayerStatusSchema, MeshPeerSchema, MeshStatusSchema, MethodAccessSchema, ModelCatalogEntrySchema, ModelConvertInputSchema, ModelConvertMetadataSchema, ModelDistributeInputSchema, ModelDistributeResultSchema, ModelExtraFileSchema, ModelFormatEntrySchema, ModelFormatsSchema, MotionAnalysisResultSchema, MotionEventSchema, MotionOnMotionChangedDataSchema, MotionRegionSchema, MotionSourceEnum, MotionSourcesSchema, MotionStatusSchema, MotionTriggerRuntimeStateSchema, MotionTriggerStatusSchema, MotionZoneOptionsSchema, MotionZonePatchSchema, MotionZoneRegionSchema, MotionZoneStatusSchema, StatusSchema as MqttBrokerStatusSchema, NativeDetectionSchema, NativeObjectClassEnum, NativeObjectDetectionRuntimeStateSchema, NativeObjectDetectionStatusSchema, NetworkAccessStatusSchema, NetworkAddressSchema, NetworkEndpointSchema, NotificationActionSchema, NotificationFormatSchema, NotificationHistoryEntrySchema, NotificationRuleSchema, NotificationSchema, NotifierStatusSchema, NumericSensorStatusSchema, OauthIntegrationDescriptorSchema, ObjectEventSchema, OrchestratorMetricsSchema, OsdOverlayKindEnum, OsdOverlayPatchSchema, OsdOverlaySchema, OsdPositionEnum, OsdStatusSchema, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, PIPELINE_FLOW_CAPABILITY_NAMES, PIPELINE_OWNER_CAPABILITY_NAMES, PROVIDER_KIND_CAP_NAMES, PYTHON_SCRIPT, PackageUpdateSchema, PackageVersionInfoSchema, PasskeySummarySchema, PcmSampleFormatSchema, PerScopeBreakdownSchema, PetFeederStatusSchema, PickStreamPreferencesSchema, PickStreamRequirementsSchema, PickedCamStreamSchema, PipelineAssignmentSchema, PipelineDefaultStepSchema, PipelineEngineChoiceSchema, PipelineRunResultBridge, PipelineStepInputSchema, PlaceholderReasonSchema, PolygonPointSchema, PowerMeterStatusSchema, PresenceStatusSchema, PressureSensorStatusSchema, PrivacyMaskOptionsSchema, PrivacyMaskPatchSchema, PrivacyMaskRegionSchema, PrivacyMaskShapeSchema, PrivacyMaskStatusSchema, ProfileRtspEntrySchema, ProfileSlotSchema, ProfileSlotStatusSchema, ProviderStatusSchema, PtzAutotrackRuntimeStateSchema, PtzAutotrackSettingsSchema, PtzAutotrackStatusSchema, PtzAutotrackTargetOptionSchema, PtzMoveCommandSchema, PtzPositionSchema, PtzPresetSchema, PtzStatusSchema, QueryFilterSchema, RECOGNITION_TYPES, RESERVED_BINDING_NAMES, RUNTIME_DEFAULTS, RUNTIME_TO_FORMAT, RawStateResultSchema, ReadSegmentBytesResultSchema, ReadinessRegistry, ReadinessTimeoutError, RecordingAvailabilitySchema, RecordingBandModeSchema, RecordingBandSchema, RecordingBandTriggersSchema, RecordingConfigSchema, RecordingDaysSchema, RecordingDeviceUsageSchema, RecordingLocationUsageSchema, RecordingManifestSchema, RecordingModeSchema, RecordingRangeSchema, RecordingRetentionSchema, RecordingRuleSchema, RecordingScheduleSchema, RecordingStatusSchema, RecordingStorageModeSchema, RecordingStorageUsageSchema, RecordingTriggersSchema, RecordingWeekdaySchema, RegisteredStreamSchema, RenderedAsSchema, ReportMotionInputSchema, RingBuffer, RtpSourceSchema, RtspRestreamEntrySchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, SCOPE_PRESETS, SOURCE_INFO_METADATA_KEY, STREAM_PROFILE_META, STREAM_QUALITY_LABELS, SUB_DETECTION_TYPES, SYSTEM_CAP_NAMES, ScopedTokenSchema, ScopedTokenSummarySchema, ScoredObjectEventSchema, ScriptRunnerStatusSchema, SearchResultSchema, SendEmailInputSchema, SendEmailResultSchema, SendResultSchema, SettingsPatchSchema, SettingsRecordSchema, SettingsSchemaWithValuesSchema, SettingsUpdateResultSchema, ShmRingStatsSchema, SmokeStatusSchema, SmtpStatusSchema, SnapshotImageSchema, SourceInfoSchema, SpatialDetectionSchema, SsoBridgeClaimsSchema, StartEmbeddedInputSchema, AbortUploadInputSchema as StorageAbortUploadInputSchema, BeginDownloadInputSchema as StorageBeginDownloadInputSchema, BeginDownloadResultSchema as StorageBeginDownloadResultSchema, BeginUploadInputSchema as StorageBeginUploadInputSchema, BeginUploadResultSchema as StorageBeginUploadResultSchema, EndDownloadInputSchema as StorageEndDownloadInputSchema, FinalizeUploadInputSchema as StorageFinalizeUploadInputSchema, StorageLocationDeclarationSchema, StorageLocationRefSchema, StorageLocationSchema, StorageLocationTypeSchema, ProviderInfoSchema as StorageProviderInfoSchema, ReadChunkInputSchema as StorageReadChunkInputSchema, TestLocationResultSchema as StorageTestLocationResultSchema, WriteChunkInputSchema as StorageWriteChunkInputSchema, StreamCodecSchema, StreamFormatSchema, StreamInfoSchema, StreamNetworkStatsSchema, StreamParamsOptionsSchema, StreamParamsStatusSchema, StreamProfileConfigSchema, StreamProfileOptionsSchema, StreamProfilePatchSchema, StreamProfileSchema, StreamSourceEntrySchema, StreamSourceSchema, SubscribeAudioChunksInputSchema, SubscribeAudioChunksResultSchema, SubscribeFramesInputSchema, SubscribeFramesResultSchema, SwitchStatusSchema, SystemMetricsSchema, SystemMirror, TIMEZONES, TamperStatusSchema, TankStatusSchema, TargetKindCapsSchema, TargetKindLevelSchema, TargetKindSchema, TargetSchema, TemperatureSensorStatusSchema, TestConnectionResultSchema$1 as TestConnectionResultSchema, TestResultSchema, ToastSchema, TokenScopeSchema, TopologyNodeSchema, TopologyProcessSchema, TopologyServiceSchema, TrackSchema, TrackStateSchema, TrackedDetectionSchema, TurnServerSchema, UNIT_TABLE, BrokerInfoSchema$1 as UnifiedBrokerInfoSchema, UnitConversionError, UpdateIntegrationInputSchema, UpdateStatusSchema, UpdateUserInputSchema, UserRecordSchema, UserSummarySchema, VacuumControlStatusSchema, VacuumStateSchema, ValveStateSchema, ValveStatusSchema, VibrationStatusSchema, VideoEncodeSchema, WELL_KNOWN_TABS, WELL_KNOWN_TAB_MAP, WaterHeaterStatusSchema, WeatherStatusSchema, WebrtcStreamChoiceSchema, WebrtcStreamTargetSchema, WhiteBalanceModeSchema, WidgetHostEnum, WidgetMetadataSchema, WidgetRemoteSchema, WidgetSizeEnum, YAMNET_TO_MACRO, ZoneKindEnum, ZoneRuleModeEnum, ZoneRuleSchema, ZoneRuleStageEnum, ZoneRulesArraySchema, ZoneSchema, ZoneScopeBreakdownSchema, accessoriesCapability, accessoryStableId, addonPagesCapability, addonPagesSourceCapability, addonRoutesCapability, addonSettingsCapability, addonWidgetsCapability, addonWidgetsSourceCapability, addonsCapability, adminUiCapability, advancedNotifierCapability, airQualitySensorCapability, alarmPanelCapability, alertsCapability, ambientLightSensorCapability, applyTransform, asBoolean, asJsonArray, asJsonObject, asNumber, asString, audioAnalysisCapability, audioAnalyzerCapability, audioCodecCapability, audioMetricsCapability, authProviderCapability, autoAssignProfiles, automationControlCapability, backupCapability, batteryCapability, bestLocationMatch, binaryCapability, bindAddonActions, brightnessCapability, brokerCapability, buildAddonRouteProvider, buildStreamParamsConfigSchema, buttonCapability, cameraCredentialsCapability, cameraPipelineConfigCapability, cameraStreamsCapability, canConvertUnit, carbonMonoxideCapability, cellsToRects, classifyStream, classifyStreams, climateControlCapability, colorCapability, compileExpression, compileExpressionSafe, connectivityCapability, consumablesCapability, contactCapability, controlCapability, convertUnit, cosineSimilarity, coverCapability, createDeviceProxy, createDurableState, createEvent, createExpressionScope, createLazyTrpcSource, createMirrorSource, createRuntimeStateBridge, createSliceHandle, createSystemProxy, customAction, customModelRegistryCapability, dayNightCapability, decoderCapability, defaultDeviceFor, defineCustomActions, detectionPipelineCapability, deviceAdoptionCapability, deviceCustomAction, deviceDiscoveryCapability, deviceExportCapability, deviceManagerCapability, deviceMatchesProfile, deviceOpsCapability, deviceProviderCapability, deviceStateCapability, deviceStatusCapability, doorbellCapability, embeddingEncoderCapability, emitDownForOwnedCaps, emitReadiness, encodeProfileFromStreamShape, enumSensorCapability, enumerateItemArrayFields, enumerateSchemaFields, errMsg, evaluateAst, evaluateLinkExpression, evaluateZoneRules, event, eventEmitterCapability, eventsCapability, expandCapMethods, extractSourceInfoFromMetadata, faceGalleryCapability, fanControlCapability, featureProbeCapability, filesystemBrowseCapability, findTimezone, floodCapability, formatForBackend, formatForRuntime, frameworkSwapConfirmSchema, frameworkSwapPackageSchema, gasCapability, getAudioMacroClassIds, getByPath, getCapsByProviderKind, hfModelUrl, htmlToText, humidifierCapability, humiditySensorCapability, hydrateSchema, imageCapability, imageSettingsCapability, integrationsCapability, intercomCapability, isAgentOnlyPlacement, isDeployableToAgent, isDeviceConfigCap, isEvent, jobKindSchema, lawnMowerControlCapability, lifecycleJobSchema, lifecycleJobScopeSchema, lifecycleJobStateSchema, lifecycleTaskSchema, localNetworkCapability, locationSimilarity, lockControlCapability, logDestinationCapability, makeProfileBrokerId, makeSourceBrokerId, mapAudioLabelToMacro, markdownToHtmlLite, markdownToText, maskUrlCredentials, mediaPlayerCapability, mergeSourceInfo, meshNetworkCapability, method, metricsProviderCapability, migrateConfigToBands, modelConvertCapability, modelDistributorCapability, modelFormatForRuntime, motionCapability, motionDetectionCapability, motionTriggerCapability, motionZonesCapability, mqttBrokerCapability, nativeObjectDetectionCapability, networkAccessCapability, networkQualityCapability, nodePin, nodesCapability, normalizeAddonInitResult, normalizeUnit, notificationOutputCapability, notifierCapability, numericSensorCapability, oauthIntegrationCapability, osdCapability, parseCameraStreamConfig, parseExpression, parseJsonArray, parseJsonObject, parseJsonUnknown, parseProfileBrokerId, parseStreamParamsFormPatch, pendingFrameworkSwapSchema, petFeederCapability, pickPreferredRtspEntry, pipelineAnalyticsCapability, pipelineExecutorCapability, pipelineOrchestratorCapability, pipelineRunnerCapability, plateGalleryCapability, platformProbeCapability, powerMeterCapability, prepareNotification, presenceCapability, pressureSensorCapability, privacyMaskCapability, ptzAutotrackCapability, ptzCapability, pythonScriptForBackend, readNodePin, readinessKey, rebootCapability, recordingCapability, rectsToCells, requiresPython, resolveAddonExecution, resolveAddonGroup, resolveAddonPlacement, resolveAddonRuntime, resolveCapMount, resolveDetectionRuntime, resolveDeviceProfile, resolveFormat, resolveModelFormat, resolveRunnerId, restreamerCapability, runInferenceStep, runtimeDevices, scopeKey, scoreRuntimes, scriptRunnerCapability, selectAssignedProfileSlots, setByPath, settingsStoreCapability, sleep, sleepCancellable, smokeCapability, smtpProviderCapability, snapshotCapability, snapshotProviderCapability, ssoBridgeCapability, storageCapability, storageEvictableCapability, storageProviderCapability, streamBrokerCapability, streamCatalogCapability, streamParamsCapability, streamPixels, streamQualityLabel, streamingEngineCapability, supportedRuntimes, switchCapability, synthesizeSourceInfo, systemCapability, tamperCapability, taskLogEntrySchema, taskPhaseSchema, taskTargetSchema, temperatureSensorCapability, textToHtml, toDeviceSummary, toExpressionValue, toStreamSourceEntry, toastCapability, tokenize, transcodeBody, tryConvertUnit, turnProviderCapability, unitDimension, unitsForDimension, updateCapability, userManagementCapability, userPasskeysCapability, vacuumControlCapability, validateExpressionSource, valveCapability, vibrationCapability, videoclipsCapability, waterHeaterCapability, weatherCapability, webrtcCapability, webrtcClientHintsSchema, webrtcSessionCapability, wiringAddonHealthSchema, wiringHealthSnapshotSchema, wiringNodeHealthSchema, wiringProbeKindSchema, wiringProbeResultSchema, zodEntriesToConfigUI, zoneAnalyticsCapability, zoneRulesCapability, zonesCapability };
28637
+ export { ACCESSORY_LABEL, ALL_CAPABILITY_DEFINITIONS, APPLE_SA_TO_MACRO, AUDIO_BACKEND_CHOICES, AUDIO_MACRO_LABELS, AccessoriesStatusSchema, AccessoryKind, AddBrokerInputSchema, AddonAutoUpdateSchema, AddonListItemSchema, AddonPageDeclarationSchema, AddonPageInfoSchema, AdoptInputSchema as AdoptionAdoptInputSchema, AdoptResultSchema as AdoptionAdoptResultSchema, AdoptionFilterSchema, GetCandidateInputSchema as AdoptionGetCandidateInputSchema, ListCandidatesInputSchema as AdoptionListCandidatesInputSchema, ListCandidatesOutputSchema as AdoptionListCandidatesOutputSchema, ReleaseInputSchema as AdoptionReleaseInputSchema, AdoptionStatusSchema, AgentLoadSummarySchema, AirQualitySensorStatusSchema, AlarmArmModeSchema, AlarmPanelStatusSchema, AlarmStateSchema, AlertSchema, AlertSeveritySchema, AlertSourceSchema, AlertStatusSchema, AmbientLightSensorStatusSchema, ApiKeyRecordSchema, ApiKeySummarySchema, ArchiveEntrySchema, ArchiveManifestSchema, AttachmentMediaTypeSchema, AttachmentSchema, AudioAnalysisResultSchema, AudioAnalysisSettingsSchema, AudioChunkInputSchema, AudioClassSummarySchema, AudioClassificationLabelSchema, AudioClassificationResultSchema, AudioCodecInfoSchema, AudioDecodeSessionConfigSchema, AudioEncodeSchema, AudioEncodeSessionConfigSchema, AudioEncodedChunkSchema, AudioEventSchema, AudioLevelSchema, AudioMetricsHistoryPointSchema, AudioMetricsHistorySchema, AudioMetricsSnapshotSchema, AudioPcmChunkSchema, AuthResultSchema, AutoUpdateSettingsSchema, AutomationControlStatusSchema, AvailableIntegrationTypeSchema, BACKEND_TO_FORMAT, BATTERY_DEVICE_PROFILE, BacklightModeSchema, BackupDestinationInfoSchema, BackupEntrySchema, BaseAddon, BaseDevice, BaseDeviceProvider, BatteryStatusSchema, BinaryStatusSchema, BoundingBoxSchema, BrightnessStatusSchema, AddInputSchema as BrokerAddInputSchema, BrokerAudioClientSchema, BrokerClientsSchema, BrokerConnectionDetailsSchema, BrokerConsumerAttributionSchema, BrokerConsumerKindSchema, BrokerDecodedClientSchema, BrokerEncodedClientSchema, GetStateInputSchema as BrokerGetStateInputSchema, BrokerInfoSchema, BrokerProviderInfoSchema, PublishInputSchema as BrokerPublishInputSchema, RegistryStatusSchema as BrokerRegistryStatusSchema, BrokerRtspClientSchema, BrokerStatsSchema, BrokerStatusEnum, BrokerStatusSchema, SubscribeInputSchema as BrokerSubscribeInputSchema, SubscribeResultSchema as BrokerSubscribeResultSchema, TestConnectionResultSchema as BrokerTestConnectionResultSchema, UnsubscribeInputSchema as BrokerUnsubscribeInputSchema, CAM_PROFILE_ORDER, CAPABILITY_NAMES, CAPABILITY_ROUTER_KEYS, CAP_NAMES_WITH_STATUS, CAP_NODE_PIN_CONTEXT_KEY, CAP_PROVIDER_KIND_MAP, COCO_80_LABELS, COCO_TO_MACRO, CamProfileSchema, CamStreamDescriptorSchema, CamStreamKindSchema, CamStreamResolutionSchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraCredentialsSchema, CameraCredentialsStatusSchema, CameraDecoderShmSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionStatusSchema, CameraMetricsSchema, CameraMetricsWithDeviceIdSchema, CameraMotionStatusSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusSchema, CameraStreamSchema, CandidateQueryFilterSchema, CapScopeSchema, CapabilityBindingsSchema, CarbonMonoxideStatusSchema, ChargingStatus, ClientNetworkStatsSchema, ClimateControlStatusSchema, ClipPlaybackSchema, ClipSchema, ClusterAddonNodeDeploymentSchema, ClusterAddonStatusEntrySchema, CollectionColumnSchema, CollectionIndexSchema, ColorStatusSchema, ConfigEntrySchema, ConfigSectionWithValuesSchema, ConfigTabDeclarationSchema, ConnectivityStatusSchema, ConsumableItemSchema, ConsumablesStatusSchema, ContactStatusSchema, ControlKindSchema, ControlStatusSchema, ConvertArtifactSchema, ConvertResultSchema, ConvertTargetSchema, CoverStateSchema, CoverStatusSchema, CreateApiKeyInputSchema, CreateApiKeyResultSchema, CreateIntegrationInputSchema, CreateScopedTokenInputSchema, CreateScopedTokenResultSchema, CreateUserInputSchema, CustomActionInputSchema, CustomModelDescriptorSchema, DATAPLANE_SECRET_HEADER, DEFAULT_ADDON_PLACEMENT, DEFAULT_AUDIO_ANALYZER_CONFIG, DEFAULT_DECODER_HWACCEL_CONFIG, DEFAULT_FEATURES, DEFAULT_RETENTION, DEVICE_CAP_NAMES, DEVICE_PROFILES, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DEVICE_TYPE_INFO, DayNightModeSchema, DayNightOptionsSchema, DayNightSettingsPatchSchema, DayNightStatusSchema, DecodedAudioChunkSchema, DecodedFrameSchema, DecoderAssignmentSchema, DecoderSessionConfigSchema, DecoderStatsSchema, DeleteIntegrationResultSchema, DetectionSourceSchema, DetectorOutputSchema, DeviceCodeSeveritySchema, DeviceConfig, DeviceDiscoveryStatusSchema, ExposeInputSchema as DeviceExportExposeInputSchema, DeviceExportStatusSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, DeviceFeature, DeviceInfoSchema, DeviceNetworkStatsSchema, DeviceRole, DeviceRuntimeState, DeviceStatusSchema, DeviceType, DiscoveredChildDeviceSchema, DiscoveredChildStatusSchema, DiscoveredDeviceSchema, DiscoveredTargetSchema, DisposerChain, DoorbellPressEventSchema, DoorbellStatusSchema, EVENT_PAD_MS, EXPRESSION_BUILTINS, EXPRESSION_BUILTIN_NAMES, EXPRESSION_COMPILE_CACHE_CAPACITY, EXPRESSION_IDENTIFIER_RE, EXPRESSION_INJECTED_NOW, ElementConfigStore, EmbeddingInfoSchema, EmbeddingResultSchema, EncodeProfileSchema, EncodedPacketSchema, EnrichedWidgetMetadataSchema, EnumSensorDateTimeFormatSchema, EnumSensorStatusSchema, EventCategory, EventEmitterStatusSchema, EventFireSchema, EventItemSchema, EventKindSchema, EventSourceType, ExportSetupFieldSchema, ExportSetupSchema, ExposedDeviceSchema, ExposureModeSchema, ExpressionEvalError, ExpressionParseError, FanControlStatusSchema, FanDirectionSchema, FeatureManifestSchema, FeatureProbeStatusSchema, FloodStatusSchema, FrameHandleFormatSchema, FrameHandleSchema, FrameInputSchema, GasStatusSchema, GetStreamWithCodecInputSchema, GlobalMetricsSchema, HF_BASE_URL, HF_REPO, HWACCEL_OPTIONS, HealthStatusSchema, HistoryPointSchema, HistoryResolutionEnum, HumidifierStatusSchema, HumiditySensorStatusSchema, HvacModeSchema, ImageRotateSchema, ImageSettingsOptionsSchema, ImageSettingsPatchSchema, ImageSettingsStatusSchema, ImageStatusSchema, IngestOwnerSchema, InstalledPackageSchema, IntegrationLiteSchema, IntegrationWithStateSchema, IntercomAbilitySchema, IntercomStatusSchema, KNOWN_CAP_NAMES, LabelDefinitionSchema, LawnMowerActivitySchema, LawnMowerControlStatusSchema, LocateSegmentResultSchema, LocationStatSchema, LockControlStatusSchema, LockStateSchema, LogEntrySchema, LogLevelSchema, LogStreamEntrySchema, MACRO_LABELS, MAX_EXPRESSION_AST_NODES, MAX_EXPRESSION_BINDINGS, MAX_EXPRESSION_CALL_ARGS, MAX_EXPRESSION_EVAL_STEPS, MAX_EXPRESSION_SOURCE_LENGTH, METHOD_ACCESS_MAP, MODEL_FORMATS, MaskGridDimsSchema, MaskGridShapeSchema, MaskLineShapeSchema, MaskPointSchema, MaskPolygonShapeSchema, MaskPolygonVerticesSchema, MaskRectShapeSchema, MaskShapeKindSchema, MaskShapeSchema, MediaFileSchema, MediaPlayerRepeatSchema, MediaPlayerStateSchema, MediaPlayerStatusSchema, MeshPeerSchema, MeshStatusSchema, MethodAccessSchema, ModelCatalogEntrySchema, ModelConvertInputSchema, ModelConvertMetadataSchema, ModelDistributeInputSchema, ModelDistributeResultSchema, ModelExtraFileSchema, ModelFormatEntrySchema, ModelFormatsSchema, ModelSubstitutionSchema, ModelVariantGroupSchema, MotionAnalysisResultSchema, MotionEventSchema, MotionOnMotionChangedDataSchema, MotionRegionSchema, MotionSourceEnum, MotionSourcesSchema, MotionStatusSchema, MotionTriggerRuntimeStateSchema, MotionTriggerStatusSchema, MotionZoneOptionsSchema, MotionZonePatchSchema, MotionZoneRegionSchema, MotionZoneStatusSchema, StatusSchema as MqttBrokerStatusSchema, NativeDetectionSchema, NativeObjectClassEnum, NativeObjectDetectionRuntimeStateSchema, NativeObjectDetectionStatusSchema, NetworkAccessStatusSchema, NetworkAddressSchema, NetworkEndpointSchema, NotificationActionSchema, NotificationFormatSchema, NotificationHistoryEntrySchema, NotificationRuleSchema, NotificationSchema, NotifierStatusSchema, NumericSensorStatusSchema, OauthIntegrationDescriptorSchema, ObjectEventSchema, OrchestratorMetricsSchema, OsdOverlayKindEnum, OsdOverlayPatchSchema, OsdOverlaySchema, OsdPositionEnum, OsdStatusSchema, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, PIPELINE_FLOW_CAPABILITY_NAMES, PIPELINE_OWNER_CAPABILITY_NAMES, PROVIDER_KIND_CAP_NAMES, PYTHON_SCRIPT, PackageUpdateSchema, PackageVersionInfoSchema, PasskeySummarySchema, PcmSampleFormatSchema, PerScopeBreakdownSchema, PetFeederStatusSchema, PickStreamPreferencesSchema, PickStreamRequirementsSchema, PickedCamStreamSchema, PipelineAssignmentSchema, PipelineDefaultStepSchema, PipelineEngineChoiceSchema, PipelineRunResultBridge, PipelineStepInputSchema, PipelineValidationIssueSchema, PipelineValidationResultSchema, PlaceholderReasonSchema, PolygonPointSchema, PowerMeterStatusSchema, PresenceStatusSchema, PressureSensorStatusSchema, PrivacyMaskOptionsSchema, PrivacyMaskPatchSchema, PrivacyMaskRegionSchema, PrivacyMaskShapeSchema, PrivacyMaskStatusSchema, ProfileRtspEntrySchema, ProfileSlotSchema, ProfileSlotStatusSchema, ProviderStatusSchema, PtzAutotrackRuntimeStateSchema, PtzAutotrackSettingsSchema, PtzAutotrackStatusSchema, PtzAutotrackTargetOptionSchema, PtzMoveCommandSchema, PtzPositionSchema, PtzPresetSchema, PtzStatusSchema, QueryFilterSchema, REACHABILITY_FAILURES_TO_OFFLINE, REACHABILITY_POLL_INTERVAL_MS, REACHABILITY_PROBE_TIMEOUT_MS, RECOGNITION_TYPES, RESERVED_BINDING_NAMES, RUNTIME_DEFAULTS, RUNTIME_TO_FORMAT, RawStateResultSchema, ReadSegmentBytesResultSchema, ReadinessRegistry, ReadinessTimeoutError, RecordingAvailabilitySchema, RecordingBandModeSchema, RecordingBandSchema, RecordingBandTriggersSchema, RecordingConfigSchema, RecordingDaysSchema, RecordingDeviceUsageSchema, RecordingLocationUsageSchema, RecordingManifestSchema, RecordingModeSchema, RecordingRangeSchema, RecordingRetentionSchema, RecordingRuleSchema, RecordingScheduleSchema, RecordingStatusSchema, RecordingStorageModeSchema, RecordingStorageUsageSchema, RecordingTriggersSchema, RecordingWeekdaySchema, RenderedAsSchema, ReportMotionInputSchema, RingBuffer, RtpSourceSchema, RtspRestreamEntrySchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, SCOPE_PRESETS, SOURCE_INFO_METADATA_KEY, STREAM_PROFILE_META, STREAM_QUALITY_LABELS, SUB_DETECTION_TYPES, SYSTEM_CAP_NAMES, ScopedTokenSchema, ScopedTokenSummarySchema, ScoredObjectEventSchema, ScriptRunnerStatusSchema, SearchResultSchema, SendEmailInputSchema, SendEmailResultSchema, SendResultSchema, SettingsPatchSchema, SettingsRecordSchema, SettingsSchemaWithValuesSchema, SettingsUpdateResultSchema, ShmRingStatsSchema, SmokeStatusSchema, SmtpStatusSchema, SnapshotImageSchema, SourceInfoSchema, SpatialDetectionSchema, SsoBridgeClaimsSchema, StartEmbeddedInputSchema, AbortUploadInputSchema as StorageAbortUploadInputSchema, BeginDownloadInputSchema as StorageBeginDownloadInputSchema, BeginDownloadResultSchema as StorageBeginDownloadResultSchema, BeginUploadInputSchema as StorageBeginUploadInputSchema, BeginUploadResultSchema as StorageBeginUploadResultSchema, EndDownloadInputSchema as StorageEndDownloadInputSchema, FinalizeUploadInputSchema as StorageFinalizeUploadInputSchema, StorageLocationDeclarationSchema, StorageLocationRefSchema, StorageLocationSchema, StorageLocationTypeSchema, ProviderInfoSchema as StorageProviderInfoSchema, ReadChunkInputSchema as StorageReadChunkInputSchema, TestLocationResultSchema as StorageTestLocationResultSchema, WriteChunkInputSchema as StorageWriteChunkInputSchema, StreamCodecSchema, StreamFormatSchema, StreamNetworkStatsSchema, StreamParamsOptionsSchema, StreamParamsStatusSchema, StreamProfileConfigSchema, StreamProfileOptionsSchema, StreamProfilePatchSchema, StreamProfileSchema, StreamSourceEntrySchema, StreamSourceSchema, SubscribeAudioChunksInputSchema, SubscribeAudioChunksResultSchema, SubscribeFramesInputSchema, SubscribeFramesResultSchema, SwitchStatusSchema, SystemMetricsSchema, SystemMirror, TIMEZONES, TamperStatusSchema, TankStatusSchema, TargetKindCapsSchema, TargetKindLevelSchema, TargetKindSchema, TargetSchema, TemperatureSensorStatusSchema, TestConnectionResultSchema$1 as TestConnectionResultSchema, TestResultSchema, ToastSchema, TokenScopeSchema, TopologyNodeSchema, TopologyProcessSchema, TopologyServiceSchema, TrackSchema, TrackStateSchema, TrackedDetectionSchema, TurnServerSchema, UNIT_TABLE, BrokerInfoSchema$1 as UnifiedBrokerInfoSchema, UnitConversionError, UpdateIntegrationInputSchema, UpdateStatusSchema, UpdateUserInputSchema, UserRecordSchema, UserSummarySchema, VacuumControlStatusSchema, VacuumStateSchema, ValveStateSchema, ValveStatusSchema, VibrationStatusSchema, VideoEncodeSchema, WELL_KNOWN_TABS, WELL_KNOWN_TAB_MAP, WaterHeaterStatusSchema, WeatherStatusSchema, WebrtcStreamChoiceSchema, WebrtcStreamTargetSchema, WhiteBalanceModeSchema, WidgetHostEnum, WidgetMetadataSchema, WidgetRemoteSchema, WidgetSizeEnum, YAMNET_TO_MACRO, ZoneKindEnum, ZoneRuleModeEnum, ZoneRuleSchema, ZoneRuleStageEnum, ZoneRulesArraySchema, ZoneSchema, ZoneScopeBreakdownSchema, accessoriesCapability, accessoryStableId, addonPagesCapability, addonPagesSourceCapability, addonRoutesCapability, addonSettingsCapability, addonWidgetsCapability, addonWidgetsSourceCapability, addonsCapability, adminUiCapability, advancedNotifierCapability, airQualitySensorCapability, alarmPanelCapability, alertsCapability, ambientLightSensorCapability, applyTransform, asBoolean, asJsonArray, asJsonObject, asNumber, asString, audioAnalysisCapability, audioAnalyzerCapability, audioCodecCapability, audioMetricsCapability, authProviderCapability, autoAssignProfiles, automationControlCapability, backupCapability, batteryCapability, bestLocationMatch, binaryCapability, bindAddonActions, brightnessCapability, brokerCapability, buildAddonRouteProvider, buildModelVariantGroups, buildStreamParamsConfigSchema, buttonCapability, cameraCredentialsCapability, cameraPipelineConfigCapability, cameraStreamsCapability, canConvertUnit, carbonMonoxideCapability, cellsToRects, classifyStream, classifyStreams, climateControlCapability, colorCapability, compileExpression, compileExpressionSafe, connectivityCapability, consumablesCapability, contactCapability, controlCapability, convertUnit, cosineSimilarity, coverCapability, createDeviceProxy, createDurableState, createEvent, createExpressionScope, createLazyTrpcSource, createMirrorSource, createRuntimeStateBridge, createSliceHandle, createSystemProxy, customAction, customModelRegistryCapability, dayNightCapability, decoderCapability, defaultDeviceFor, defineCustomActions, describeModelVariant, detectionPipelineCapability, deviceAdoptionCapability, deviceCustomAction, deviceDiscoveryCapability, deviceExportCapability, deviceManagerCapability, deviceMatchesProfile, deviceOpsCapability, deviceProviderCapability, deviceStateCapability, deviceStatusCapability, doorbellCapability, embeddingEncoderCapability, emitDownForOwnedCaps, emitReadiness, encodeProfileFromStreamShape, enumSensorCapability, enumerateItemArrayFields, enumerateSchemaFields, errMsg, evaluateAst, evaluateLinkExpression, evaluateZoneRules, event, eventEmitterCapability, eventsCapability, expandCapMethods, extractSourceInfoFromMetadata, faceGalleryCapability, fanControlCapability, featureProbeCapability, filesystemBrowseCapability, findTimezone, floodCapability, formatForBackend, formatForRuntime, frameworkSwapConfirmSchema, frameworkSwapPackageSchema, gasCapability, getAudioMacroClassIds, getByPath, getCapsByProviderKind, hfModelUrl, htmlToText, humidifierCapability, humiditySensorCapability, hydrateSchema, imageCapability, imageSettingsCapability, integrationsCapability, intercomCapability, isAgentOnlyPlacement, isArrayOutputSchema, isDeployableToAgent, isDeviceConfigCap, isEvent, isObjectInput, isVoidInput, jobKindSchema, kebabToCamel, lawnMowerControlCapability, lifecycleJobSchema, lifecycleJobScopeSchema, lifecycleJobStateSchema, lifecycleTaskSchema, localNetworkCapability, locationSimilarity, lockControlCapability, logDestinationCapability, looseSchema, makeProfileBrokerId, makeSourceBrokerId, mapAudioLabelToMacro, markdownToHtmlLite, markdownToText, maskUrlCredentials, mediaPlayerCapability, mergeSourceInfo, meshNetworkCapability, method, metricsProviderCapability, migrateConfigToBands, modelConvertCapability, modelDistributorCapability, modelFormatForRuntime, motionCapability, motionDetectionCapability, motionTriggerCapability, motionZonesCapability, mqttBrokerCapability, nativeObjectDetectionCapability, networkAccessCapability, networkQualityCapability, nodePin, nodesCapability, normalizeAddonInitResult, normalizeUnit, notificationOutputCapability, notifierCapability, numericSensorCapability, oauthIntegrationCapability, osdCapability, parseCameraStreamConfig, parseExpression, parseJsonArray, parseJsonObject, parseJsonUnknown, parseProfileBrokerId, parseStreamParamsFormPatch, pendingFrameworkSwapSchema, petFeederCapability, pickPreferredRtspEntry, pipelineAnalyticsCapability, pipelineExecutorCapability, pipelineOrchestratorCapability, pipelineRunnerCapability, plateGalleryCapability, platformProbeCapability, powerMeterCapability, prepareNotification, presenceCapability, pressureSensorCapability, privacyMaskCapability, procedureAuthKey, ptzAutotrackCapability, ptzCapability, pythonScriptForBackend, readNodePin, readinessKey, rebootCapability, recordingCapability, rectsToCells, requiresPython, resolveAddonExecution, resolveAddonGroup, resolveAddonPlacement, resolveAddonRuntime, resolveCapMount, resolveDetectionRuntime, resolveDeviceProfile, resolveFormat, resolveModelFormat, resolveRunnerId, resolveVariantModelId, runInferenceStep, runtimeDevices, scopeKey, scoreRuntimes, scriptRunnerCapability, selectAssignedProfileSlots, setByPath, settingsStoreCapability, sleep, sleepCancellable, smokeCapability, smtpProviderCapability, snapshotCapability, ssoBridgeCapability, startReachabilityPoll, storageCapability, storageEvictableCapability, storageProviderCapability, streamBrokerCapability, streamCatalogCapability, streamParamsCapability, streamPixels, streamQualityLabel, supportedRuntimes, switchCapability, synthesizeSourceInfo, systemCapability, tamperCapability, taskLogEntrySchema, taskPhaseSchema, taskTargetSchema, temperatureSensorCapability, textToHtml, toDeviceSummary, toExpressionValue, toStreamSourceEntry, toastCapability, tokenize, transcodeBody, tryConvertUnit, turnProviderCapability, unitDimension, unitsForDimension, updateCapability, userManagementCapability, userPasskeysCapability, vacuumControlCapability, validateExpressionSource, valveCapability, vibrationCapability, videoclipsCapability, waterHeaterCapability, weatherCapability, webrtcClientHintsSchema, webrtcSessionCapability, wiringAddonHealthSchema, wiringHealthSnapshotSchema, wiringNodeHealthSchema, wiringProbeKindSchema, wiringProbeResultSchema, zodEntriesToConfigUI, zoneAnalyticsCapability, zoneRulesCapability, zonesCapability };