@camstack/types 1.2.16 → 1.2.18

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 (64) hide show
  1. package/dist/addon.d.ts +1 -0
  2. package/dist/addon.js +266 -2
  3. package/dist/addon.mjs +265 -3
  4. package/dist/capabilities/addons.cap.d.ts +7 -7
  5. package/dist/capabilities/broker.cap.d.ts +8 -8
  6. package/dist/capabilities/camera-streams.cap.d.ts +5 -5
  7. package/dist/capabilities/climate-control.cap.d.ts +8 -8
  8. package/dist/capabilities/day-night.cap.d.ts +8 -8
  9. package/dist/capabilities/decoder.cap.d.ts +2 -2
  10. package/dist/capabilities/device-manager.cap.d.ts +24 -2
  11. package/dist/capabilities/face-gallery.cap.d.ts +1 -1
  12. package/dist/capabilities/image-settings.cap.d.ts +16 -16
  13. package/dist/capabilities/index.d.ts +2 -2
  14. package/dist/capabilities/intercom.cap.d.ts +6 -6
  15. package/dist/capabilities/lawn-mower-control.cap.d.ts +4 -4
  16. package/dist/capabilities/llm-runtime.cap.d.ts +3 -3
  17. package/dist/capabilities/llm.cap.d.ts +4 -4
  18. package/dist/capabilities/local-network.cap.d.ts +38 -0
  19. package/dist/capabilities/media-player.cap.d.ts +9 -9
  20. package/dist/capabilities/metrics-provider.cap.d.ts +2 -2
  21. package/dist/capabilities/mqtt-broker.cap.d.ts +3 -3
  22. package/dist/capabilities/notification-output.cap.d.ts +4 -0
  23. package/dist/capabilities/notification-rules.cap.d.ts +378 -18
  24. package/dist/capabilities/pipeline-analytics.cap.d.ts +133 -27
  25. package/dist/capabilities/pipeline-executor.cap.d.ts +2 -2
  26. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +15 -15
  27. package/dist/capabilities/pipeline-runner.cap.d.ts +2 -2
  28. package/dist/capabilities/recording-export.cap.d.ts +7 -7
  29. package/dist/capabilities/recording.cap.d.ts +102 -129
  30. package/dist/capabilities/schemas/orchestrator-metrics.d.ts +2 -2
  31. package/dist/capabilities/schemas/streaming-shared.d.ts +4 -4
  32. package/dist/capabilities/storage-provider.cap.d.ts +44 -0
  33. package/dist/capabilities/storage.cap.d.ts +17 -1
  34. package/dist/capabilities/stream-broker.cap.d.ts +58 -12
  35. package/dist/capabilities/webrtc-session.cap.d.ts +6 -6
  36. package/dist/enums/event-category.d.ts +13 -0
  37. package/dist/enums.js +1 -1
  38. package/dist/enums.mjs +1 -1
  39. package/dist/{event-category-Cdyife4p.js → event-category-39bpf1r_.js} +13 -0
  40. package/dist/{event-category-BLcNejAE.mjs → event-category-Bz24uP1U.mjs} +13 -0
  41. package/dist/generated/addon-api.d.ts +5358 -30965
  42. package/dist/generated/cap-input-defaults.d.ts +29 -0
  43. package/dist/generated/device-proxy.d.ts +2 -2
  44. package/dist/generated/method-access-map.d.ts +1 -1
  45. package/dist/generated/system-proxy.d.ts +3 -3
  46. package/dist/index.d.ts +2 -1
  47. package/dist/index.js +724 -138
  48. package/dist/index.mjs +711 -135
  49. package/dist/interfaces/addon.d.ts +9 -0
  50. package/dist/interfaces/ops-log.d.ts +2 -0
  51. package/dist/interfaces/recording-config.d.ts +33 -91
  52. package/dist/interfaces/relocate.d.ts +55 -0
  53. package/dist/interfaces/storage-location-declaration.d.ts +1 -1
  54. package/dist/interfaces/storage-location.d.ts +4 -0
  55. package/dist/interfaces/stream-broker.d.ts +1 -1
  56. package/dist/lifecycle/job.d.ts +6 -6
  57. package/dist/node.js +1 -0
  58. package/dist/node.mjs +1 -0
  59. package/dist/notification/condition-taxonomy.d.ts +61 -0
  60. package/dist/notification/format-transcode.d.ts +12 -1
  61. package/dist/{sleep-C3ceNSsf.mjs → sleep-B_Uaqbai.mjs} +7 -1
  62. package/dist/{sleep-DRg9F6JJ.js → sleep-DETsT9rJ.js} +7 -1
  63. package/package.json +1 -1
  64. package/dist/interfaces/recording-config-migrate.d.ts +0 -12
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { $ as ProfileSlotSchema, A as parseJsonUnknown, B as BrokerStatsSchema, C as asBoolean, Ct as DisposerChain, D as asString, E as asNumber, F as ReadinessRegistry, G as CamStreamResolutionSchema, H as CAM_PROFILE_ORDER, I as ReadinessTimeoutError, J as DecodedFrameSchema, K as CameraStreamSchema, L as emitDownForOwnedCaps, M as nodePin, N as readNodePin, O as parseJsonArray, P as DATAPLANE_SECRET_HEADER, Q as ProfileRtspEntrySchema, R as readinessKey, S as DeviceType, St as resolveHydratedFieldValue, T as asJsonObject, U as CamProfileSchema, V as BrokerStatusSchema, W as CamStreamKindSchema, X as FrameHandleFormatSchema, Y as EncodedPacketSchema, Z as FrameHandleSchema, _ as resolveCapMount, _t as WELL_KNOWN_TABS, a as viewerUiCapability, at as SubscribeFramesInputSchema, b as DeviceFeature, bt as collectHydratedFieldValues, c as createLazyTrpcSource, ct as makeSourceBrokerId, d as DEVICE_SETTINGS_CONTRIBUTION_METHODS, dt as BaseAddon, et as ProfileSlotStatusSchema, f as DEVICE_STATUS_METHOD, ft as normalizeAddonInitResult, g as method, gt as isEvent, h as isDeviceConfigCap, ht as emitReadiness, i as deviceOpsCapability, it as SubscribeAudioChunksResultSchema, j as CAP_NODE_PIN_CONTEXT_KEY, k as parseJsonObject, l as createMirrorSource, lt as parseProfileBrokerId, m as expandCapMethods, mt as createEvent, n as sleepCancellable, nt as StreamSourceSchema, o as adminUiCapability, ot as SubscribeFramesResultSchema, p as event, pt as createDurableState, q as DecodedAudioChunkSchema, r as RawStateResultSchema, rt as SubscribeAudioChunksInputSchema, s as createDeviceProxy, st as makeProfileBrokerId, t as sleep, tt as StreamSourceEntrySchema, u as createSliceHandle, ut as selectAssignedProfileSlots, v as systemMethod, vt as WELL_KNOWN_TAB_MAP, w as asJsonArray, x as DeviceRole, xt as hydrateSchema, y as ChargingStatus, yt as collectHydratedFieldEntries, z as scopeKey } from "./sleep-C3ceNSsf.mjs";
2
- import { t as EventCategory } from "./event-category-BLcNejAE.mjs";
1
+ import { $ as ProfileSlotSchema, A as parseJsonUnknown, B as BrokerStatsSchema, C as asBoolean, Ct as DisposerChain, D as asString, E as asNumber, F as ReadinessRegistry, G as CamStreamResolutionSchema, H as CAM_PROFILE_ORDER, I as ReadinessTimeoutError, J as DecodedFrameSchema, K as CameraStreamSchema, L as emitDownForOwnedCaps, M as nodePin, N as readNodePin, O as parseJsonArray, P as DATAPLANE_SECRET_HEADER, Q as ProfileRtspEntrySchema, R as readinessKey, S as DeviceType, St as resolveHydratedFieldValue, T as asJsonObject, U as CamProfileSchema, V as BrokerStatusSchema, W as CamStreamKindSchema, X as FrameHandleFormatSchema, Y as EncodedPacketSchema, Z as FrameHandleSchema, _ as resolveCapMount, _t as WELL_KNOWN_TABS, a as viewerUiCapability, at as SubscribeFramesInputSchema, b as DeviceFeature, bt as collectHydratedFieldValues, c as createLazyTrpcSource, ct as makeSourceBrokerId, d as DEVICE_SETTINGS_CONTRIBUTION_METHODS, dt as BaseAddon, et as ProfileSlotStatusSchema, f as DEVICE_STATUS_METHOD, ft as normalizeAddonInitResult, g as method, gt as isEvent, h as isDeviceConfigCap, ht as emitReadiness, i as deviceOpsCapability, it as SubscribeAudioChunksResultSchema, j as CAP_NODE_PIN_CONTEXT_KEY, k as parseJsonObject, l as createMirrorSource, lt as parseProfileBrokerId, m as expandCapMethods, mt as createEvent, n as sleepCancellable, nt as StreamSourceSchema, o as adminUiCapability, ot as SubscribeFramesResultSchema, p as event, pt as createDurableState, q as DecodedAudioChunkSchema, r as RawStateResultSchema, rt as SubscribeAudioChunksInputSchema, s as createDeviceProxy, st as makeProfileBrokerId, t as sleep, tt as StreamSourceEntrySchema, u as createSliceHandle, ut as selectAssignedProfileSlots, v as systemMethod, vt as WELL_KNOWN_TAB_MAP, w as asJsonArray, x as DeviceRole, xt as hydrateSchema, y as ChargingStatus, yt as collectHydratedFieldEntries, z as scopeKey } from "./sleep-B_Uaqbai.mjs";
2
+ import { t as EventCategory } from "./event-category-Bz24uP1U.mjs";
3
3
  import { EventSourceType } from "./enums.mjs";
4
4
  import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
5
5
  import { z } from "zod";
@@ -791,35 +791,22 @@ var EVENT_PAD_MS = {
791
791
  */
792
792
  var RecordingWeekdaySchema = z.number().int().min(0).max(6);
793
793
  var HHMM = /^([01]\d|2[0-3]):[0-5]\d$/;
794
- var RecordingScheduleSchema = z.discriminatedUnion("kind", [z.object({ kind: z.literal("always") }), z.object({
795
- kind: z.literal("timeOfDay"),
796
- start: z.string().regex(HHMM),
797
- end: z.string().regex(HHMM),
798
- /** Restrict to these weekdays; omit = every day. */
799
- days: z.array(RecordingWeekdaySchema).optional()
800
- })]);
801
- var RecordingModeSchema = z.enum([
802
- "continuous",
803
- "onMotion",
804
- "onAudioThreshold"
805
- ]);
806
794
  /**
807
- * First-class, authoritative per-camera storage mode — the explicit choice the
808
- * UI reads directly (never inferred from `rules`):
809
- * - `off` — not recording.
810
- * - `events` — record only around triggers (motion / audio threshold),
811
- * with pre/post-buffer.
812
- * - `continuous` — record 24/7 within the schedule.
795
+ * DERIVED per-camera storage summary — the single field cheap consumers read
796
+ * (the viewer's status dot, the camera list) instead of walking `bands`:
797
+ * - `off` — no band covers the camera (or it is disabled).
798
+ * - `events` — every band records around triggers only.
799
+ * - `continuous` — at least one band records continuously.
813
800
  *
814
- * `mode` compiles one-way to the internal `rules[]` consumed by the policy
815
- * engine (see `compileRules`); `rules[]` is never authored directly anymore.
801
+ * NEVER authored: the recorder stamps it from the authoritative `bands` on
802
+ * every save (`activeModeForConfig`). Writing it has no effect.
816
803
  */
817
804
  var RecordingStorageModeSchema = z.enum([
818
805
  "off",
819
806
  "events",
820
807
  "continuous"
821
808
  ]);
822
- /** Which detectors trigger an `events`-mode recording. */
809
+ /** Which detectors trigger an `events`-mode band. */
823
810
  var RecordingTriggersSchema = z.object({
824
811
  motion: z.boolean().optional(),
825
812
  audioThresholdDbfs: z.number().optional()
@@ -855,18 +842,6 @@ var RecordingBandSchema = z.object({
855
842
  preBufferSec: z.number().min(0).optional(),
856
843
  postBufferSec: z.number().min(0).optional()
857
844
  });
858
- var RecordingRuleSchema = z.object({
859
- schedule: RecordingScheduleSchema,
860
- mode: RecordingModeSchema,
861
- /** Seconds of footage to retain BEFORE a trigger (applied at keep/discard). */
862
- preBufferSec: z.number().min(0).default(0),
863
- /** Keep recording until this many seconds after the last trigger. */
864
- postBufferSec: z.number().min(0).default(0),
865
- /** Each new trigger restarts the post-buffer window. */
866
- resetTimeoutOnNewEvent: z.boolean().default(true),
867
- /** onAudioThreshold only — dBFS level that counts as a trigger. */
868
- thresholdDbfs: z.number().optional()
869
- });
870
845
  /**
871
846
  * Per-device retention overrides. Every field is optional; an unset or `0`
872
847
  * value inherits the node-wide recorder default. Only footage-lifetime limits
@@ -959,40 +934,28 @@ function resolveScrubThumbnailGeometry(preset) {
959
934
  /**
960
935
  * The full per-camera recording intent — the wire shape of a RecordingTarget.
961
936
  *
962
- * `mode` is the authoritative storage choice; `schedule`/`triggers`/`pre`/`post`
963
- * are its mode-specific parameters. `rules` is a DEPRECATED authoring input kept
964
- * only for transition + migration (`migrateRulesToMode`); the policy engine
965
- * consumes the compiled output of `compileRules(config)`, never `rules` directly.
937
+ * `bands` is the ONLY authored recording intent: what to record, when, and on
938
+ * which trigger. `mode` is a derived summary the recorder stamps on save; every
939
+ * other field is a storage knob (profiles, segment length, retention, scrub).
940
+ *
941
+ * STRICT on purpose: the legacy authoring surface (`schedule`/`schedules`/
942
+ * `triggers`/`preBufferSec`/`postBufferSec`/`rules`) was retired 2026-07-30.
943
+ * A stale caller must fail loudly — silently stripping its legacy intent would
944
+ * persist a band-less config, i.e. silently stop recording the camera.
966
945
  */
967
946
  var RecordingConfigSchema = z.object({
968
947
  enabled: z.boolean(),
969
- /** Authoritative storage mode. Absent on legacy targets derived once via
970
- * `migrateRulesToMode`, then persisted. */
948
+ /** DERIVED summary of `bands`, stamped by the recorder on every save.
949
+ * Authoring it has no effect — see {@link RecordingStorageModeSchema}. */
971
950
  mode: RecordingStorageModeSchema.optional(),
972
951
  profiles: z.array(CamProfileSchema).optional(),
973
952
  segmentSeconds: z.number().int().positive().optional(),
974
- /** Shared recording time-bands for `events` & `continuous` — record only when
975
- * the wall-clock falls inside one of these windows. Omit or empty = always.
976
- * `continuous` compiles to one rule per band; `events` to band × trigger. */
977
- schedules: z.array(RecordingScheduleSchema).optional(),
978
- /** Legacy single-band predecessor of `schedules`. Read-compat only — it is
979
- * normalized into `schedules` on read and never written going forward. (Not
980
- * tagged `@deprecated`: the normalization paths must read it cast-free.) */
981
- schedule: RecordingScheduleSchema.optional(),
982
- /** `events`-mode only — which detectors trigger a recording. */
983
- triggers: RecordingTriggersSchema.optional(),
984
- /** `events`-mode only — seconds retained before / after a trigger. */
985
- preBufferSec: z.number().min(0).optional(),
986
- postBufferSec: z.number().min(0).optional(),
987
- /** DEPRECATED authoring input; retained for migration/transition. */
988
- rules: z.array(RecordingRuleSchema).optional(),
989
953
  /**
990
- * AUTHORITATIVE mode-per-band recording model (recorder). When present it
991
- * is the single source of truth; the legacy `mode`/`schedules`/`schedule`/
992
- * `triggers`/`rules` fields above are kept for READ-COMPAT only and are
993
- * derived into bands once via `migrateConfigToBands`.
954
+ * AUTHORITATIVE mode-per-band recording model the single source of truth
955
+ * the recorder's band engine consumes. An empty array = record nothing;
956
+ * "off" is the absence of a covering band, never a band value.
994
957
  */
995
- bands: z.array(RecordingBandSchema).optional(),
958
+ bands: z.array(RecordingBandSchema).default([]),
996
959
  retention: RecordingRetentionSchema.optional(),
997
960
  /**
998
961
  * Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
@@ -1000,62 +963,30 @@ var RecordingConfigSchema = z.object({
1000
963
  * windows only — existing sheets are immutable, and each window's index
1001
964
  * carries its own tile dims so mixed-preset history renders correctly.
1002
965
  */
1003
- scrubThumbnails: ScrubThumbnailPresetSchema.optional()
1004
- });
1005
- //#endregion
1006
- //#region src/interfaces/recording-config-migrate.ts
1007
- /** All seven weekdays (0 = Sunday 6 = Saturday), used when a schedule omits a
1008
- * weekday filter. */
1009
- var ALL_DAYS = [
1010
- 0,
1011
- 1,
1012
- 2,
1013
- 3,
1014
- 4,
1015
- 5,
1016
- 6
1017
- ];
1018
- /** Full-day span used to represent an `always` schedule as a band. The `HHMM`
1019
- * regex maxes out at 23:59, so a 00:00–23:59 same-day span all-day (the band
1020
- * engine treats `end > start` as a normal, non-wrapping span). */
1021
- var ALL_DAY_START = "00:00";
1022
- var ALL_DAY_END = "23:59";
1023
- function bandFromSchedule(schedule, mode, config) {
1024
- const days = schedule.kind === "timeOfDay" && schedule.days ? schedule.days : [...ALL_DAYS];
1025
- const start = schedule.kind === "timeOfDay" ? schedule.start : ALL_DAY_START;
1026
- const end = schedule.kind === "timeOfDay" ? schedule.end : ALL_DAY_END;
1027
- if (mode === "continuous") return {
1028
- days,
1029
- start,
1030
- end,
1031
- mode
1032
- };
1033
- return {
1034
- days,
1035
- start,
1036
- end,
1037
- mode,
1038
- ...config.triggers ? { triggers: config.triggers } : {},
1039
- ...config.preBufferSec !== void 0 ? { preBufferSec: config.preBufferSec } : {},
1040
- ...config.postBufferSec !== void 0 ? { postBufferSec: config.postBufferSec } : {}
1041
- };
1042
- }
1043
- /**
1044
- * One-way migration from the legacy recording-config shape to the authoritative
1045
- * mode-per-band model. Pure (no clock access).
1046
- *
1047
- * - If `config.bands` is present, it is authoritative and returned as-is.
1048
- * - Otherwise the result is derived from the legacy fields: a disabled config or
1049
- * `mode: 'off'` yields no bands; every legacy schedule maps to one band whose
1050
- * mode is `continuous` when `config.mode === 'continuous'`, else `events`
1051
- * (carrying `triggers`/`preBufferSec`/`postBufferSec`).
1052
- */
1053
- function migrateConfigToBands(config) {
1054
- if (config.bands) return config.bands;
1055
- if (!config.enabled || config.mode === "off") return [];
1056
- const schedules = config.schedules ?? (config.schedule ? [config.schedule] : [{ kind: "always" }]);
1057
- const bandMode = config.mode === "continuous" ? "continuous" : "events";
1058
- return schedules.map((schedule) => bandFromSchedule(schedule, bandMode, config));
966
+ scrubThumbnails: ScrubThumbnailPresetSchema.optional(),
967
+ /**
968
+ * OPT-IN thumbnail-strip generation for this camera: every keyframe of the
969
+ * low recording saved as a JPEG (the fast-drag scrub depth), a derived
970
+ * cache that eviction reclaims with the footage. Absent/false = no strips
971
+ * are written and scrub reads exact keyframes at every velocity.
972
+ */
973
+ stripsEnabled: z.boolean().optional()
974
+ }).strict();
975
+ /**
976
+ * Derive the {@link RecordingStorageModeSchema} summary from the authoritative
977
+ * bands: `continuous` when any band records continuously, `events` when a band
978
+ * exists at all, else `off`. Pure.
979
+ *
980
+ * THE one definition: the recorder stamps `config.mode` with it on save and
981
+ * reports it as the cap's `activeMode`, and the settings UI reads it back to
982
+ * decide which authoring tab a config opens in. Two copies would drift, and the
983
+ * symptom (a status dot disagreeing with what is being recorded) is exactly the
984
+ * bug this field was added to fix.
985
+ */
986
+ function deriveRecordingMode(config) {
987
+ if (!config.enabled || config.bands.length === 0) return "off";
988
+ if (config.bands.some((band) => band.mode === "continuous")) return "continuous";
989
+ return "events";
1059
990
  }
1060
991
  //#endregion
1061
992
  //#region src/interfaces/ops-log.ts
@@ -1077,7 +1008,8 @@ var OpsLogOpSchema = z.enum([
1077
1008
  "prune",
1078
1009
  "manual-delete",
1079
1010
  "rescan",
1080
- "retention-run"
1011
+ "retention-run",
1012
+ "relocate"
1081
1013
  ]);
1082
1014
  /** Why the operation ran. */
1083
1015
  var OpsLogReasonSchema = z.enum([
@@ -1123,6 +1055,57 @@ var OPS_LOG_RING_DEFAULT_MAX = 500;
1123
1055
  /** Default page size for a `listOpsLog` query when the caller omits `limit`. */
1124
1056
  var OPS_LOG_DEFAULT_LIMIT = 200;
1125
1057
  //#endregion
1058
+ //#region src/interfaces/relocate.ts
1059
+ /**
1060
+ * Entity-relocation job state (storage entity-routing spec, Phase 4).
1061
+ *
1062
+ * One shape shared by the recorder's `relocateFootage` (segments + strips) and
1063
+ * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
1064
+ * page renders both movers with one component. Jobs are in-RAM (a restart
1065
+ * forgets them — re-running is safe by construction: copy-if-absent, delete
1066
+ * after verify) and each completed/failed run also lands one durable ops-log
1067
+ * row on the owning addon's surface.
1068
+ */
1069
+ var RelocateJobStateSchema = z.enum([
1070
+ "running",
1071
+ "done",
1072
+ "failed",
1073
+ "cancelled"
1074
+ ]);
1075
+ var RelocateJobSchema = z.object({
1076
+ jobId: z.string(),
1077
+ state: RelocateJobStateSchema,
1078
+ /** Source location — for media relocation this is informational ('*': rows
1079
+ * move from wherever they are to the target). */
1080
+ fromLocationId: z.string(),
1081
+ toLocationId: z.string(),
1082
+ /** Scoped device, or null = every device. */
1083
+ deviceId: z.number().nullable(),
1084
+ /** What the job moves (owner-addon specific: segments/strips or media). */
1085
+ entities: z.array(z.string()),
1086
+ filesMoved: z.number().int(),
1087
+ bytesMoved: z.number().int(),
1088
+ /** Total files discovered up front; null while (or when) unknown. */
1089
+ filesTotal: z.number().int().nullable(),
1090
+ startedAt: z.number(),
1091
+ finishedAt: z.number().nullable(),
1092
+ error: z.string().nullable()
1093
+ });
1094
+ var RelocateFootageInputSchema = z.object({
1095
+ deviceId: z.number().optional(),
1096
+ fromLocationId: z.string(),
1097
+ toLocationId: z.string(),
1098
+ entities: z.array(z.enum(["segments", "strips"])).optional(),
1099
+ /** Copy throttle in MB/s (default 40) — the drain is a background chore,
1100
+ * never allowed to starve live writers. */
1101
+ throttleMbps: z.number().min(1).max(1e3).optional()
1102
+ });
1103
+ var RelocateMediaInputSchema = z.object({
1104
+ deviceId: z.number().optional(),
1105
+ toLocationId: z.string(),
1106
+ throttleMbps: z.number().min(1).max(1e3).optional()
1107
+ });
1108
+ //#endregion
1126
1109
  //#region src/interfaces/logging.ts
1127
1110
  /**
1128
1111
  * Severity ordering. Declared once here because it had already been re-declared
@@ -1196,6 +1179,13 @@ var StorageLocationSchema = z.object({
1196
1179
  nodeId: z.string().optional(),
1197
1180
  isDefault: z.boolean().default(false),
1198
1181
  isSystem: z.boolean().default(false),
1182
+ /** COMPUTED at read time by the orchestrator (statfs of the backing volume
1183
+ * for node-local locations it can reach) — never persisted, absent when the
1184
+ * volume is remote/unreachable. The single capacity truth every UI reads. */
1185
+ capacity: z.object({
1186
+ totalBytes: z.number(),
1187
+ availableBytes: z.number()
1188
+ }).nullable().optional(),
1199
1189
  createdAt: z.number(),
1200
1190
  updatedAt: z.number()
1201
1191
  });
@@ -4343,9 +4333,20 @@ var DEGRADE_ORDER = {
4343
4333
  "markdown"
4344
4334
  ]
4345
4335
  };
4346
- /** Pick the best target format the kind supports for a given source format. */
4336
+ /**
4337
+ * Pick the best target format the kind supports for a given source format.
4338
+ *
4339
+ * TOLERANT of a source outside the union. `NotificationSchema.format` carries
4340
+ * `.default('text')`, but that default only runs where the schema is PARSED —
4341
+ * the tRPC router. A cap call arriving from another addon (`ctx.api`) skips
4342
+ * that parse, so `format` reaches here `undefined`, and the bare
4343
+ * `DEGRADE_ORDER[source]` threw `is not iterable`. That broke the one promise
4344
+ * the degrade path makes ("never throws — degradation is reported, never
4345
+ * surfaced as an error") and dead-lettered every Notification-Center delivery
4346
+ * for a day (2026-07-30). An unknown source degrades like `text`.
4347
+ */
4347
4348
  function resolveFormat(source, supported) {
4348
- for (const candidate of DEGRADE_ORDER[source]) if (supported.includes(candidate)) return candidate;
4349
+ for (const candidate of DEGRADE_ORDER[source] ?? DEGRADE_ORDER.text) if (supported.includes(candidate)) return candidate;
4349
4350
  return supported[0] ?? "text";
4350
4351
  }
4351
4352
  /** Transcode a body between formats. */
@@ -4392,7 +4393,7 @@ function resolveLevel(levels, n) {
4392
4393
  })[0]);
4393
4394
  }
4394
4395
  function splitBody(body, maxLen) {
4395
- if (maxLen <= 0 || body.length <= maxLen) return [body];
4396
+ if (!Number.isFinite(maxLen) || maxLen <= 0 || body.length <= maxLen) return [body];
4396
4397
  const parts = [];
4397
4398
  for (let i = 0; i < body.length; i += maxLen) parts.push(body.slice(i, i + maxLen));
4398
4399
  return parts;
@@ -4476,6 +4477,114 @@ function prepareNotification(caps, n) {
4476
4477
  };
4477
4478
  }
4478
4479
  //#endregion
4480
+ //#region src/notification/condition-taxonomy.ts
4481
+ /** Condition ids that render the class picker (video macros/subs + audio). */
4482
+ var CLASS_CONDITION_IDS = new Set(["classes", "classesExclude"]);
4483
+ /** Condition ids that render the sensor/control label picker. */
4484
+ var LABEL_CONDITION_IDS = new Set(["sensorKinds"]);
4485
+ function toOption(entry) {
4486
+ return {
4487
+ value: entry.kind,
4488
+ label: entry.label
4489
+ };
4490
+ }
4491
+ /**
4492
+ * Group detection entries by their macro. A macro entry (`parentKind === null`)
4493
+ * opens its own group and is itself the first option in it; subs fall under
4494
+ * their `parentKind`. First-appearance order is preserved, which is why
4495
+ * `buildNcTaxonomy` emits macros before their subs.
4496
+ */
4497
+ function groupVideoClasses(videoClasses) {
4498
+ const order = [];
4499
+ const byKey = /* @__PURE__ */ new Map();
4500
+ const ensure = (key, fallbackLabel) => {
4501
+ const existing = byKey.get(key);
4502
+ if (existing !== void 0) return existing;
4503
+ const created = {
4504
+ fallbackLabel,
4505
+ options: []
4506
+ };
4507
+ byKey.set(key, created);
4508
+ order.push(key);
4509
+ return created;
4510
+ };
4511
+ for (const entry of videoClasses) {
4512
+ const key = entry.parentKind ?? entry.kind;
4513
+ const group = ensure(key, entry.parentKind === null ? entry.label : key);
4514
+ group.options.push(toOption(entry));
4515
+ if (entry.parentKind === null) group.fallbackLabel = entry.label;
4516
+ }
4517
+ return order.flatMap((key) => {
4518
+ const group = byKey.get(key);
4519
+ return group === void 0 ? [] : [{
4520
+ key,
4521
+ fallbackLabel: group.fallbackLabel,
4522
+ options: group.options
4523
+ }];
4524
+ });
4525
+ }
4526
+ /** Group sensor/control labels by their category parent (`sensor` | `control`). */
4527
+ function groupLabels(labels) {
4528
+ const order = [];
4529
+ const byKey = /* @__PURE__ */ new Map();
4530
+ for (const entry of labels) {
4531
+ const key = entry.parentKind ?? "other";
4532
+ const existing = byKey.get(key);
4533
+ if (existing === void 0) {
4534
+ byKey.set(key, [toOption(entry)]);
4535
+ order.push(key);
4536
+ } else existing.push(toOption(entry));
4537
+ }
4538
+ return order.flatMap((key) => {
4539
+ const options = byKey.get(key);
4540
+ return options === void 0 ? [] : [{
4541
+ key,
4542
+ fallbackLabel: key,
4543
+ options
4544
+ }];
4545
+ });
4546
+ }
4547
+ /**
4548
+ * Build the grouped picker model for a condition id, or `null` when the
4549
+ * condition has no fixed vocabulary (→ free-text tag input).
4550
+ */
4551
+ function pickerForCondition(conditionId, taxonomy) {
4552
+ if (!taxonomy) return null;
4553
+ if (CLASS_CONDITION_IDS.has(conditionId)) {
4554
+ const groups = groupVideoClasses(taxonomy.videoClasses);
4555
+ if (taxonomy.audioKinds.length > 0) groups.push({
4556
+ key: "audio",
4557
+ fallbackLabel: "Audio",
4558
+ options: taxonomy.audioKinds.map(toOption)
4559
+ });
4560
+ return groups.length > 0 ? { groups } : null;
4561
+ }
4562
+ if (LABEL_CONDITION_IDS.has(conditionId)) {
4563
+ const groups = groupLabels(taxonomy.labels);
4564
+ return groups.length > 0 ? { groups } : null;
4565
+ }
4566
+ return null;
4567
+ }
4568
+ /** All option values across a picker's groups (for custom-value detection). */
4569
+ function knownValues(picker) {
4570
+ const set = /* @__PURE__ */ new Set();
4571
+ for (const group of picker.groups) for (const option of group.options) set.add(option.value);
4572
+ return set;
4573
+ }
4574
+ /**
4575
+ * The condition ids shown in the ALWAYS-VISIBLE area of a rule editor. Every
4576
+ * other catalog descriptor is advanced and lives behind an expander.
4577
+ *
4578
+ * Shared for the same reason as the picker model: two surfaces disagreeing
4579
+ * about what counts as "basic" is a worse outcome than either choice.
4580
+ */
4581
+ var NC_BASE_CONDITION_KEYS = ["devices", "classes"];
4582
+ var BASE_CONDITION_SET = new Set(NC_BASE_CONDITION_KEYS);
4583
+ /** True when a condition key belongs to the BASE surface. */
4584
+ function isBaseConditionKey(key) {
4585
+ return BASE_CONDITION_SET.has(key);
4586
+ }
4587
+ //#endregion
4479
4588
  //#region src/capabilities/mask-shape.ts
4480
4589
  /**
4481
4590
  * Shared geometry vocabulary for on-frame shape caps — privacy-mask,
@@ -4648,6 +4757,29 @@ var NcOccupancyConditionSchema = z.object({
4648
4757
  count: z.number().int().min(0).default(1),
4649
4758
  sustainSeconds: z.number().int().min(0).max(3600).default(15)
4650
4759
  });
4760
+ /**
4761
+ * Which zone-crossing DIRECTION a rule accepts (`ObjectEvent.zoneCrossing`).
4762
+ *
4763
+ * The values are not symmetric, and deliberately so — the absent value has to
4764
+ * mean exactly what every rule authored before this condition existed already
4765
+ * does:
4766
+ * - `enter` — entries and every NON-crossing record (movement state,
4767
+ * package, sensor). Exits are rejected. **This is the absent behaviour**:
4768
+ * an operator who never asked for exits must not start receiving them.
4769
+ * - `exit` — ONLY an exit crossing. A record that is not a crossing at all
4770
+ * fails closed, because "the car left the drive" is a question about a
4771
+ * boundary, not about a detection.
4772
+ * - `any` — no direction filter; entries, exits and non-crossings alike.
4773
+ *
4774
+ * A rule asking for a direction should normally also scope `zones`, which the
4775
+ * engine evaluates against the crossed zone as well as the current membership
4776
+ * (an exit's membership no longer contains the zone it just left).
4777
+ */
4778
+ var NcCrossingSchema = z.enum([
4779
+ "enter",
4780
+ "exit",
4781
+ "any"
4782
+ ]);
4651
4783
  /** Admin-zone membership condition (zone IDs as stamped by the ZoneEngine). */
4652
4784
  var NcZoneConditionSchema = z.object({
4653
4785
  ids: z.array(z.string().min(1)).min(1),
@@ -4672,6 +4804,13 @@ var NcConditionsSchema = z.object({
4672
4804
  /** Veto zones — any hit fails the rule. */
4673
4805
  zonesExclude: z.array(z.string().min(1)).optional(),
4674
4806
  /**
4807
+ * Zone-crossing direction. IMMEDIATE only — a crossing is a per-event fact
4808
+ * and a closed track carries none, so a `track-end` rule asking for one
4809
+ * fails closed (use `zones`, which tests `zonesVisited`). ABSENT = `enter`,
4810
+ * which is exactly today's behaviour. See {@link NcCrossingSchema}.
4811
+ */
4812
+ crossing: NcCrossingSchema.optional(),
4813
+ /**
4675
4814
  * Exact (case-insensitive) match on the record's collapsed `label`
4676
4815
  * (identity name / plate text / subclass).
4677
4816
  */
@@ -4806,17 +4945,85 @@ var NcRuleTargetSchema = z.object({
4806
4945
  * - `keyFrame` — the clean scene frame (no subject box).
4807
4946
  * - `none` — no attachment.
4808
4947
  */
4809
- var NcMediaPolicySchema = z.object({ attach: z.enum([
4810
- "best",
4811
- "best-matching",
4812
- "keyFrame",
4813
- "none"
4814
- ]).default("best") });
4948
+ /**
4949
+ * WHAT THE PICTURE SHOWS — chosen explicitly, because the implicit ladders
4950
+ * conflate it with the selection strategy and betray the request: asking for
4951
+ * the clean scene frame on an object-event owner used to start at
4952
+ * `fullFrameBoxed`, i.e. the annotated frame (2026-07-30).
4953
+ * - `cropped` — the subject, tight. What "who is at the door" wants.
4954
+ * - `full` — the clean scene, no annotation. What "what is going on" wants.
4955
+ * - `boxed` — the scene WITH the detection boxes drawn, for verifying what
4956
+ * the pipeline actually saw.
4957
+ */
4958
+ var NcMediaFrameSchema = z.enum([
4959
+ "cropped",
4960
+ "full",
4961
+ "boxed"
4962
+ ]);
4963
+ var NcMediaPolicySchema = z.object({
4964
+ attach: z.enum([
4965
+ "best",
4966
+ "best-matching",
4967
+ "keyFrame",
4968
+ "none"
4969
+ ]).default("best"),
4970
+ /** What the still shows. Absent = `cropped` (the historical `best` shape). */
4971
+ frame: NcMediaFrameSchema.optional(),
4972
+ /** Crop the attached still to the rule's condition-zone bbox (padded) —
4973
+ * "show me the ZONE", not the whole scene or the subject crop. */
4974
+ zoneCrop: z.boolean().optional(),
4975
+ /**
4976
+ * Also attach a short GIF cut from the stream broker's clip ring around the
4977
+ * event — NOT from the recording, so the camera does not have to be
4978
+ * recording, and the window sits AROUND the moment instead of a segment
4979
+ * behind it. Fail-closed: a window the ring does not cover contributes no
4980
+ * gif, never a failed notification.
4981
+ */
4982
+ gif: z.boolean().optional(),
4983
+ /**
4984
+ * Also attach a short MP4 CLIP of the same cut. Same source and the same
4985
+ * fail-closed rule as `gif`. Prefer it where the backend takes video
4986
+ * (telegram, discord, zentik, webhook); backends that do not are handled by
4987
+ * the degrade engine, which drops the video and keeps the still.
4988
+ */
4989
+ clip: z.boolean().optional(),
4990
+ /** Seconds of footage BEFORE / AFTER the event instant. Defaults 3 / 7. */
4991
+ clipPreRollSec: z.number().int().min(0).max(30).optional(),
4992
+ clipPostRollSec: z.number().int().min(0).max(30).optional(),
4993
+ /**
4994
+ * Which stream profile the footage is cut from. Absent = the CHEAPEST
4995
+ * assigned profile: a notification is watched on a phone, so the 4K
4996
+ * rendition would burn CPU to produce a file the client downscales anyway.
4997
+ * A profile that is not assigned falls back to the cheapest, and the render
4998
+ * reports which one actually ran.
4999
+ */
5000
+ profile: CamProfileSchema.optional()
5001
+ });
5002
+ /**
5003
+ * Cooldown GRANULARITY over the subject's class — how much a fired
5004
+ * notification suppresses.
5005
+ * - `shared` (default, and the absent value) — one window for the whole
5006
+ * rule/scope: a cat silences the next dog for `cooldownSec`.
5007
+ * - `per-class` — an independent window per detected class, so cat→dog fires
5008
+ * at once and cat→cat still waits.
5009
+ *
5010
+ * AUDIO subjects are ALWAYS per-class regardless of this setting: a scream
5011
+ * must not be swallowed by a bark's window (the precedent this generalizes —
5012
+ * see `cooldownKey` in the rule engine).
5013
+ */
5014
+ var NcThrottleGranularitySchema = z.enum(["shared", "per-class"]);
4815
5015
  /** Throttle — cooldown survives restarts (rebuilt from the outbox on boot). */
4816
5016
  var NcThrottleSchema = z.object({
4817
5017
  cooldownSec: z.number().int().min(0).max(86400).default(60),
4818
5018
  /** `rule` = one shared cooldown; `rule-device` = per-camera cooldown. */
4819
- scope: z.enum(["rule", "rule-device"]).default("rule-device")
5019
+ scope: z.enum(["rule", "rule-device"]).default("rule-device"),
5020
+ /**
5021
+ * Class granularity of the cooldown key. Optional rather than defaulted:
5022
+ * a Zod default does NOT run on the addon→addon cap path, so a persisted
5023
+ * rule authored before this field simply carries none — and the engine
5024
+ * reads absent as `shared`, the pre-existing behaviour.
5025
+ */
5026
+ granularity: NcThrottleGranularitySchema.optional()
4820
5027
  });
4821
5028
  /** Client-supplied rule fields (server stamps id/createdBy/createdAt/updatedAt). */
4822
5029
  var NcRuleInputSchema = z.object({
@@ -4825,7 +5032,19 @@ var NcRuleInputSchema = z.object({
4825
5032
  delivery: NcDeliverySchema,
4826
5033
  conditions: NcConditionsSchema.default({}),
4827
5034
  schedule: NcScheduleSchema.optional(),
4828
- targets: z.array(NcRuleTargetSchema).min(1),
5035
+ /** May be empty when `targetUsers` addresses at least one user — the
5036
+ * "at least one addressee" invariant is enforced by the provider, because
5037
+ * a cross-field refine here would break `NcRulePatchSchema.partial()`. */
5038
+ targets: z.array(NcRuleTargetSchema),
5039
+ /**
5040
+ * USERS this rule addresses in addition to `targets` (Phase 4). At fire
5041
+ * time each user fans out to the personal targets they own
5042
+ * (`config.ownerUserId`), filtered by that user's `allowedDevices` for the
5043
+ * firing camera — a user is never notified about a device they cannot open.
5044
+ * Per-user opt-outs (`disabledTargetIds`) still apply to the fanned-out
5045
+ * targets.
5046
+ */
5047
+ targetUsers: z.array(z.string()).optional(),
4829
5048
  media: NcMediaPolicySchema.default({ attach: "best" }),
4830
5049
  throttle: NcThrottleSchema.default({
4831
5050
  cooldownSec: 60,
@@ -4912,6 +5131,7 @@ var NcConditionDescriptorSchema = z.object({
4912
5131
  "schedule",
4913
5132
  "plateMatcher",
4914
5133
  "packagePhase",
5134
+ "crossingSelect",
4915
5135
  "polygonDraw",
4916
5136
  "occupancy"
4917
5137
  ]),
@@ -5016,6 +5236,16 @@ var NC_CONDITION_CATALOG = [
5016
5236
  ],
5017
5237
  phase: "P1"
5018
5238
  },
5239
+ {
5240
+ id: "crossing",
5241
+ group: "zones",
5242
+ label: "Zone crossing",
5243
+ valueType: "crossingSelect",
5244
+ operator: "in",
5245
+ appliesTo: ["immediate"],
5246
+ phase: "P1",
5247
+ description: "Direction of the zone crossing: enter (the default, and what every rule authored before this did) / exit / any. An exit rule matches only crossings."
5248
+ },
5019
5249
  {
5020
5250
  id: "labelEquals",
5021
5251
  group: "label",
@@ -5300,7 +5530,20 @@ var notificationRulesCapability = {
5300
5530
  kind: "mutation",
5301
5531
  auth: "admin"
5302
5532
  }),
5303
- getConditionCatalog: method(z.object({}), z.object({ catalog: z.array(NcConditionDescriptorSchema) })),
5533
+ /**
5534
+ * The machine-readable condition surface a rule editor renders from, plus
5535
+ * the picker VOCABULARY those conditions draw on.
5536
+ *
5537
+ * `taxonomy` is optional so an older provider that only returns `catalog`
5538
+ * still validates; a client that receives none keeps free-text inputs.
5539
+ * It was previously served ONLY on the `nc.getConditionCatalog` bridge
5540
+ * action, which is why the viewer had grouped pickers and the admin UI —
5541
+ * which reaches this cap — was stuck typing `person` from memory.
5542
+ */
5543
+ getConditionCatalog: method(z.object({}), z.object({
5544
+ catalog: z.array(NcConditionDescriptorSchema),
5545
+ taxonomy: NcTaxonomySchema.optional()
5546
+ })),
5304
5547
  /**
5305
5548
  * Queryable delivery history — a read-only view over the durable outbox
5306
5549
  * (fired rule, subject summary, target, status, timestamps, error on a
@@ -6389,6 +6632,48 @@ var streamBrokerCapability = {
6389
6632
  kind: "mutation",
6390
6633
  auth: "admin"
6391
6634
  }),
6635
+ /**
6636
+ * Render a short GIF or MP4 from the broker's PRE-BUFFER around an instant.
6637
+ *
6638
+ * The pre-buffer is the only source that already holds the seconds BEFORE
6639
+ * an event (it is what it exists for — "when an addon needs the last N
6640
+ * seconds of video for clip creation"). Cutting from recorded segments
6641
+ * cannot: only finalized segments are addressable and the one covering the
6642
+ * moment is still being written, so a segment-sourced clip is either
6643
+ * delayed or shows the approach instead of the event (operator,
6644
+ * 2026-07-30). It also means a camera does not have to be RECORDING to
6645
+ * produce a notification clip.
6646
+ *
6647
+ * Returns muxed BYTES, never packets: the frame plane never crosses a
6648
+ * process boundary at frame rate (D9/D18) — this is one compressed,
6649
+ * on-demand payload per notification.
6650
+ *
6651
+ * Waits up to `postRollSec` for the tail to accumulate, so the window is
6652
+ * CENTRED on `aroundMs`.
6653
+ */
6654
+ renderPreBufferClip: method(z.object({
6655
+ deviceId: z.number(),
6656
+ /** Absent = the LOWEST assigned profile — a notification attachment is
6657
+ * watched on a phone, and the cheap rendition is the right default. */
6658
+ profile: CamProfileSchema.optional(),
6659
+ aroundMs: z.number(),
6660
+ preRollSec: z.number().min(0).max(20).default(3),
6661
+ postRollSec: z.number().min(0).max(20).default(5),
6662
+ format: z.enum(["gif", "mp4"]).default("gif"),
6663
+ maxWidth: z.number().int().min(120).max(1920).default(480),
6664
+ /** GIF only — MP4 keeps the source cadence. */
6665
+ fps: z.number().int().min(1).max(15).default(5)
6666
+ }), z.object({
6667
+ base64: z.string(),
6668
+ mime: z.string(),
6669
+ bytes: z.number().int(),
6670
+ /** The profile actually rendered (what the default resolved to). */
6671
+ profile: CamProfileSchema,
6672
+ durationMs: z.number()
6673
+ }), {
6674
+ kind: "mutation",
6675
+ auth: "admin"
6676
+ }),
6392
6677
  listAllCameraStreams: method(z.void(), z.array(CameraStreamSchema).readonly()),
6393
6678
  listAllProfileSlots: method(z.void(), z.array(ProfileSlotSchema).readonly()),
6394
6679
  getBrokerStats: method(z.object({ brokerId: z.string() }), BrokerStatsSchema),
@@ -14361,7 +14646,8 @@ function createSystemProxy(api) {
14361
14646
  discoverAllProviders: (input) => dispatch("deviceManager", "discoverAllProviders", "mutation", input),
14362
14647
  discoverProvider: (input) => dispatch("deviceManager", "discoverProvider", "mutation", input),
14363
14648
  providerCreationType: (input) => dispatch("deviceManager", "providerCreationType", "query", input),
14364
- providerDiscoveryParamsSchema: (input) => dispatch("deviceManager", "providerDiscoveryParamsSchema", "query", input)
14649
+ providerDiscoveryParamsSchema: (input) => dispatch("deviceManager", "providerDiscoveryParamsSchema", "query", input),
14650
+ getDeviceStatusAggregateBatch: (input) => dispatch("deviceManager", "getDeviceStatusAggregateBatch", "query", input)
14365
14651
  },
14366
14652
  deviceProvider: {
14367
14653
  start: (input) => dispatch("deviceProvider", "start", "mutation", input),
@@ -14432,6 +14718,8 @@ function createSystemProxy(api) {
14432
14718
  list: (input) => dispatch("localNetwork", "list", "query", input),
14433
14719
  getPreferred: (input) => dispatch("localNetwork", "getPreferred", "query", input),
14434
14720
  getConnectionEndpoints: (input) => dispatch("localNetwork", "getConnectionEndpoints", "query", input),
14721
+ getNotificationEndpoint: (input) => dispatch("localNetwork", "getNotificationEndpoint", "query", input),
14722
+ setNotificationEndpoint: (input) => dispatch("localNetwork", "setNotificationEndpoint", "mutation", input),
14435
14723
  getAllowedAddresses: (input) => dispatch("localNetwork", "getAllowedAddresses", "query", input),
14436
14724
  setAllowedAddresses: (input) => dispatch("localNetwork", "setAllowedAddresses", "mutation", input),
14437
14725
  resetAllowlistToBestMatch: (input) => dispatch("localNetwork", "resetAllowlistToBestMatch", "mutation", input)
@@ -14602,7 +14890,10 @@ function createSystemProxy(api) {
14602
14890
  },
14603
14891
  recording: {
14604
14892
  getStorageUsage: (input) => dispatch("recording", "getStorageUsage", "query", input),
14605
- listOpsLog: (input) => dispatch("recording", "listOpsLog", "query", input)
14893
+ listOpsLog: (input) => dispatch("recording", "listOpsLog", "query", input),
14894
+ relocateFootage: (input) => dispatch("recording", "relocateFootage", "mutation", input),
14895
+ getRelocateStatus: (input) => dispatch("recording", "getRelocateStatus", "query", input),
14896
+ cancelRelocate: (input) => dispatch("recording", "cancelRelocate", "mutation", input)
14606
14897
  },
14607
14898
  recordingExport: {
14608
14899
  getExport: (input) => dispatch("recordingExport", "getExport", "query", input),
@@ -18373,7 +18664,29 @@ var deviceManagerCapability = {
18373
18664
  getDeviceStatusAggregate: method(z.object({
18374
18665
  deviceId: z.number(),
18375
18666
  caps: z.array(z.string()).readonly().optional()
18376
- }), z.record(z.string(), z.unknown().nullable()))
18667
+ }), z.record(z.string(), z.unknown().nullable())),
18668
+ /**
18669
+ * The same aggregate, for a LIST of devices in one round-trip.
18670
+ *
18671
+ * The viewer's camera list is the caller this exists for. Each card asked
18672
+ * for its own badges — battery here, recording mode there — so a ten-camera
18673
+ * install issued N separate procedures per reconcile, each its own message
18674
+ * on the one WebSocket that also carries the WebRTC signalling (the client
18675
+ * has no `httpBatchLink`, so there is no transport-level batching to lean
18676
+ * on: collapsing has to happen at the procedure level, which is here).
18677
+ *
18678
+ * Keyed by device id as a STRING — a JSON object cannot key by number, and
18679
+ * pretending otherwise is how a record survives the wire only in tests.
18680
+ * The per-device value is exactly what `getDeviceStatusAggregate` returns,
18681
+ * so a caller can move between the two without reshaping anything.
18682
+ *
18683
+ * `caps` matters more here than in the single call: a client that needs two
18684
+ * caps should not pay for every status-carrying cap × every device.
18685
+ */
18686
+ getDeviceStatusAggregateBatch: method(z.object({
18687
+ deviceIds: z.array(z.number()).readonly(),
18688
+ caps: z.array(z.string()).readonly().optional()
18689
+ }), z.record(z.string(), z.record(z.string(), z.unknown().nullable())))
18377
18690
  }
18378
18691
  };
18379
18692
  //#endregion
@@ -19644,6 +19957,36 @@ var TargetKindSchema = z.object({
19644
19957
  icon: z.string(),
19645
19958
  /** Stamped by each provider so the concat-fanned catalog stays routable. */
19646
19959
  addonId: z.string(),
19960
+ /**
19961
+ * URL of the kind's bundled BRAND icon, served by the providing addon over
19962
+ * its own `addon-routes` surface (`/addon/<addonId>/icons/<kind>`). Absent
19963
+ * when the addon bundles no icon for that kind — the client then falls back
19964
+ * to a neutral glyph rather than rendering the raw `icon` NAME as text.
19965
+ *
19966
+ * Root-relative on purpose: it resolves against whatever origin serves a web
19967
+ * client, and a native client joins it onto its own hub base.
19968
+ *
19969
+ * DECLARED here deliberately. It used to travel as an undeclared passthrough
19970
+ * field that survived only because the runtime cap-router forwards provider
19971
+ * output verbatim — so every consumer had to re-declare it by hand to stop
19972
+ * its own Zod parse from stripping it, and the whole arrangement would have
19973
+ * broken silently the moment output validation was tightened anywhere.
19974
+ */
19975
+ iconUrl: z.string().optional(),
19976
+ /**
19977
+ * Media type of {@link iconUrl} (`image/svg+xml`, `image/png`, …).
19978
+ *
19979
+ * The server knows this and therefore says it, because the client cannot
19980
+ * safely guess: a React-Native client renders SVG and raster through two
19981
+ * DIFFERENT components (`react-native-svg` vs `expo-image` — expo-image does
19982
+ * not decode SVG on iOS/Android), so without this it silently fell back to a
19983
+ * placeholder glyph for every vector icon while the web build looked fine.
19984
+ *
19985
+ * Absent when {@link iconUrl} is absent, or for a legacy provider that has
19986
+ * not been updated — a client that cannot determine the type should prefer
19987
+ * its raster path, which is the safe default for an unknown image.
19988
+ */
19989
+ iconMediaType: z.string().optional(),
19647
19990
  configSchema: ConfigSchemaPassthrough,
19648
19991
  supportsDiscovery: z.boolean(),
19649
19992
  caps: TargetKindCapsSchema
@@ -20117,6 +20460,37 @@ var MotionEventSchema = z.object({
20117
20460
  * Absent on legacy rows ⇒ treat as `pipeline`.
20118
20461
  */
20119
20462
  var DetectionSourceSchema = z.enum(["pipeline", "onboard"]);
20463
+ /**
20464
+ * Which WAY a subject crossed a zone boundary. An entry and an exit are two
20465
+ * different notifications ("the parcel arrived" / "the car left the drive"),
20466
+ * and until this existed they were indistinguishable on the persisted record —
20467
+ * which is why exits were computed and dropped at the emit boundary rather
20468
+ * than doubling every zone-scoped rule.
20469
+ */
20470
+ var ZoneCrossingDirectionSchema = z.enum(["enter", "exit"]);
20471
+ /**
20472
+ * The confirmed zone crossing that produced an object event. Present ONLY on
20473
+ * an event emitted BY a crossing (`zone.enter` / `zone.exit`); a movement-state
20474
+ * event (`object.entering` / `leaving` / `stationary` / `loitering`) and an
20475
+ * appearance event carry none, so a rule asking for a direction fails closed
20476
+ * on them.
20477
+ *
20478
+ * Exactly ONE crossing per event: the emitter turns each confirmed crossing
20479
+ * into its own event, so a frame in which a track enters A while leaving B
20480
+ * produces two events with two directions — never one ambiguous row.
20481
+ *
20482
+ * `zoneId` is load-bearing for an EXIT: the event's `zones` list is the
20483
+ * membership the box has NOW, and by definition it no longer contains the zone
20484
+ * that was just left. Without the id here, a zone-scoped rule could never match
20485
+ * the exit it asked for.
20486
+ */
20487
+ var ZoneCrossingSchema = z.object({
20488
+ direction: ZoneCrossingDirectionSchema,
20489
+ /** Admin zone id crossed. */
20490
+ zoneId: z.string(),
20491
+ /** Zone display name at crossing time (falls back to the id). */
20492
+ zoneName: z.string().optional()
20493
+ });
20120
20494
  var ObjectEventSchema = z.object({
20121
20495
  ...BaseEventFields,
20122
20496
  kind: z.literal("object"),
@@ -20143,6 +20517,12 @@ var ObjectEventSchema = z.object({
20143
20517
  zones: z.array(z.string()).readonly().optional(),
20144
20518
  /** Omitted in slim projection. */
20145
20519
  state: TrackStateSchema.optional(),
20520
+ /**
20521
+ * The zone crossing this event IS, when it is one. Absent on every other
20522
+ * event kind (movement state, appearance, package) — see
20523
+ * {@link ZoneCrossingSchema}. Omitted in slim projection.
20524
+ */
20525
+ zoneCrossing: ZoneCrossingSchema.optional(),
20146
20526
  /** Detection-frame dimensions in pixels — let consumers normalize the
20147
20527
  * pixel-space `bbox` onto a displayed image. Omitted in slim projection. */
20148
20528
  frameWidth: z.number().optional(),
@@ -20522,6 +20902,23 @@ var pipelineAnalyticsCapability = {
20522
20902
  }),
20523
20903
  /** The events ops-log rows (newest-first), optionally scoped to one camera.
20524
20904
  * Backed by a declared pipeline-analytics SQLite collection. */
20905
+ /**
20906
+ * Move event-media blobs onto `toLocationId` (entity-routing spec Phase
20907
+ * 4): per-row copy → stamp row.locationId → delete old blob. Rows already
20908
+ * at the target are skipped, so a re-run resumes. Single-flight.
20909
+ */
20910
+ relocateMedia: method(RelocateMediaInputSchema, z.object({ jobId: z.string() }), {
20911
+ kind: "mutation",
20912
+ auth: "admin"
20913
+ }),
20914
+ getMediaRelocateStatus: method(z.object({}), z.array(RelocateJobSchema).readonly(), {
20915
+ kind: "query",
20916
+ auth: "admin"
20917
+ }),
20918
+ cancelMediaRelocate: method(z.object({ jobId: z.string() }), z.object({ cancelled: z.boolean() }), {
20919
+ kind: "mutation",
20920
+ auth: "admin"
20921
+ }),
20525
20922
  listOpsLog: method(OpsLogQueryInputSchema, z.array(OpsLogEntrySchema).readonly(), {
20526
20923
  kind: "query",
20527
20924
  auth: "admin"
@@ -24159,6 +24556,17 @@ var ConnectionEndpointSchema = z.object({
24159
24556
  priority: z.number()
24160
24557
  });
24161
24558
  var GetConnectionEndpointsResultSchema = z.object({ endpoints: z.array(ConnectionEndpointSchema).readonly() });
24559
+ /**
24560
+ * The chosen outbound endpoint for notification artifacts. `baseUrl: null` =
24561
+ * AUTO (resolved from the candidate ranking at send time); `resolved` reports
24562
+ * what AUTO currently picks, so the UI can show the effective value either way.
24563
+ */
24564
+ var NotificationEndpointSchema = z.object({
24565
+ /** The operator's explicit choice, or null for AUTO. */
24566
+ baseUrl: z.string().nullable(),
24567
+ /** What the ranking currently resolves to (null when nothing is reachable). */
24568
+ resolved: z.string().nullable()
24569
+ });
24162
24570
  var AllowedAddressesSchema = z.object({
24163
24571
  /**
24164
24572
  * Allowlist of interface addresses operators have explicitly opted
@@ -24210,6 +24618,26 @@ var localNetworkCapability = {
24210
24618
  scheme: z.enum(["http", "https"]).optional()
24211
24619
  }), GetConnectionEndpointsResultSchema),
24212
24620
  /**
24621
+ * The endpoint OUTBOUND artifacts must be addressed by — notification
24622
+ * attachment links and deep links. `baseUrl: null` means AUTO: the first
24623
+ * public candidate (a configured origin, then a connected tunnel, then the
24624
+ * LAN), never loopback.
24625
+ *
24626
+ * Why an explicit marker: the automatic ranking cannot know which of
24627
+ * several reachable addresses the RECIPIENT can actually open. A link is
24628
+ * consumed on someone's phone, off the LAN, possibly hours later — and a
24629
+ * link nobody can open is worse than no link, because the notification
24630
+ * arrives advertising media that 404s.
24631
+ */
24632
+ getNotificationEndpoint: method(z.void(), NotificationEndpointSchema),
24633
+ /**
24634
+ * Mark which endpoint notification artifacts use. `baseUrl: null` restores
24635
+ * AUTO. The value is stored verbatim (not an index into the candidate
24636
+ * list): interfaces come and go, and an index would silently re-point at a
24637
+ * different address after a reboot.
24638
+ */
24639
+ setNotificationEndpoint: method(z.object({ baseUrl: z.string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }),
24640
+ /**
24213
24641
  * Read the operator's allowlist. Empty = "auto" (no filter). Used
24214
24642
  * by the admin UI's address selector to seed its checkbox state.
24215
24643
  */
@@ -25321,7 +25749,12 @@ var RecordingDeviceUsageSchema = z.object({
25321
25749
  var RecordingLocationUsageSchema = z.object({
25322
25750
  /** StorageLocation id; null for the legacy/degraded single-root fallback. */
25323
25751
  locationId: z.string().nullable(),
25324
- /** Bytes of recordings stored on this location. */
25752
+ /** Every location id sharing this row's PHYSICAL volume (aliases). One row
25753
+ * is emitted per physical disk (2026-07-29): two locations on one root
25754
+ * previously rendered as two identical "disks" with a nonsensical used
25755
+ * split — hydrate attribution across aliases is arbitrary by nature. */
25756
+ locationIds: z.array(z.string()).optional(),
25757
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
25325
25758
  usedBytes: z.number(),
25326
25759
  /** Free bytes on the location's volume; null when capacity is unknown (remote). */
25327
25760
  availableBytes: z.number().nullable(),
@@ -25477,6 +25910,77 @@ var recordingCapability = {
25477
25910
  listOpsLog: method(OpsLogQueryInputSchema, z.array(OpsLogEntrySchema).readonly(), {
25478
25911
  kind: "query",
25479
25912
  auth: "admin"
25913
+ }),
25914
+ /**
25915
+ * Move footage (segments and/or strips) from one recordings location to
25916
+ * another — the drain workflow's mover (entity-routing spec Phase 4).
25917
+ * Throttled copy → size-verify → delete source → index refresh; resumable
25918
+ * by construction (copy-if-absent). Single-flight: one job at a time.
25919
+ */
25920
+ /**
25921
+ * Render a short GIF from recorded footage around `aroundMs` (low profile,
25922
+ * palette-free ffmpeg gif). Synchronous — the window is a few seconds of
25923
+ * `low`, rendering in ~1-2s. Built for notification attachments: the
25924
+ * caller gets bytes, nothing persists. Fails when no footage covers the
25925
+ * window (camera not recording → caller skips the attachment).
25926
+ */
25927
+ renderGif: method(z.object({
25928
+ deviceId: z.number(),
25929
+ aroundMs: z.number(),
25930
+ preRollSec: z.number().min(0).max(30).default(2),
25931
+ postRollSec: z.number().min(0).max(30).default(5),
25932
+ maxWidth: z.number().int().min(120).max(1280).default(480),
25933
+ fps: z.number().int().min(1).max(15).default(5)
25934
+ }), z.object({
25935
+ gifBase64: z.string(),
25936
+ fromMs: z.number(),
25937
+ toMs: z.number()
25938
+ }), {
25939
+ kind: "mutation",
25940
+ auth: "admin"
25941
+ }),
25942
+ /**
25943
+ * Render a short MP4 clip from recorded footage around `aroundMs` — the
25944
+ * "send a clip, not a gif" notification attachment. Same window, source
25945
+ * and fail-closed contract as {@link renderGif}: no footage covering the
25946
+ * window ⇒ it throws and the caller ships no attachment. Re-encoded (never
25947
+ * stream-copied) so a concat across segments with different encoder
25948
+ * parameters still plays. Silent by contract.
25949
+ *
25950
+ * The returned window is SEGMENT-GRANULAR: the source playlist is built
25951
+ * from whole segments, so the clip starts at or before `fromMs` and ends
25952
+ * at or after `toMs` — overshoot bounded by one segment per side (an 8 s
25953
+ * ask over 4 s segments measured 12 s). `fromMs`/`toMs` report the window
25954
+ * ASKED for, not the encoded duration.
25955
+ */
25956
+ renderClip: method(z.object({
25957
+ deviceId: z.number(),
25958
+ aroundMs: z.number(),
25959
+ preRollSec: z.number().min(0).max(30).default(3),
25960
+ postRollSec: z.number().min(0).max(30).default(7),
25961
+ maxWidth: z.number().int().min(160).max(1920).default(640)
25962
+ }), z.object({
25963
+ clipBase64: z.string(),
25964
+ mime: z.string(),
25965
+ fromMs: z.number(),
25966
+ toMs: z.number(),
25967
+ bytes: z.number().int()
25968
+ }), {
25969
+ kind: "mutation",
25970
+ auth: "admin"
25971
+ }),
25972
+ relocateFootage: method(RelocateFootageInputSchema, z.object({ jobId: z.string() }), {
25973
+ kind: "mutation",
25974
+ auth: "admin"
25975
+ }),
25976
+ /** Every known relocate job (in-RAM, newest-first). */
25977
+ getRelocateStatus: method(z.object({}), z.array(RelocateJobSchema).readonly(), {
25978
+ kind: "query",
25979
+ auth: "admin"
25980
+ }),
25981
+ cancelRelocate: method(z.object({ jobId: z.string() }), z.object({ cancelled: z.boolean() }), {
25982
+ kind: "mutation",
25983
+ auth: "admin"
25480
25984
  })
25481
25985
  }
25482
25986
  };
@@ -28415,6 +28919,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
28415
28919
  addonId: null,
28416
28920
  access: "view"
28417
28921
  },
28922
+ "deviceManager.getDeviceStatusAggregateBatch": {
28923
+ capName: "device-manager",
28924
+ capScope: "system",
28925
+ addonId: null,
28926
+ access: "view"
28927
+ },
28418
28928
  "deviceManager.getLinkedDevices": {
28419
28929
  capName: "device-manager",
28420
28930
  capScope: "system",
@@ -29309,6 +29819,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
29309
29819
  addonId: null,
29310
29820
  access: "view"
29311
29821
  },
29822
+ "localNetwork.getNotificationEndpoint": {
29823
+ capName: "local-network",
29824
+ capScope: "system",
29825
+ addonId: null,
29826
+ access: "view"
29827
+ },
29312
29828
  "localNetwork.getPreferred": {
29313
29829
  capName: "local-network",
29314
29830
  capScope: "system",
@@ -29333,6 +29849,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
29333
29849
  addonId: null,
29334
29850
  access: "create"
29335
29851
  },
29852
+ "localNetwork.setNotificationEndpoint": {
29853
+ capName: "local-network",
29854
+ capScope: "system",
29855
+ addonId: null,
29856
+ access: "create"
29857
+ },
29336
29858
  "lockControl.lock": {
29337
29859
  capName: "lock-control",
29338
29860
  capScope: "device",
@@ -29975,6 +30497,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
29975
30497
  addonId: null,
29976
30498
  access: "create"
29977
30499
  },
30500
+ "pipelineAnalytics.cancelMediaRelocate": {
30501
+ capName: "pipeline-analytics",
30502
+ capScope: "device",
30503
+ addonId: null,
30504
+ access: "create"
30505
+ },
29978
30506
  "pipelineAnalytics.clearTracks": {
29979
30507
  capName: "pipeline-analytics",
29980
30508
  capScope: "device",
@@ -30029,6 +30557,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
30029
30557
  addonId: null,
30030
30558
  access: "view"
30031
30559
  },
30560
+ "pipelineAnalytics.getMediaRelocateStatus": {
30561
+ capName: "pipeline-analytics",
30562
+ capScope: "device",
30563
+ addonId: null,
30564
+ access: "view"
30565
+ },
30032
30566
  "pipelineAnalytics.getMotionEvents": {
30033
30567
  capName: "pipeline-analytics",
30034
30568
  capScope: "device",
@@ -30101,6 +30635,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
30101
30635
  addonId: null,
30102
30636
  access: "create"
30103
30637
  },
30638
+ "pipelineAnalytics.relocateMedia": {
30639
+ capName: "pipeline-analytics",
30640
+ capScope: "device",
30641
+ addonId: null,
30642
+ access: "create"
30643
+ },
30104
30644
  "pipelineAnalytics.searchObjectEvents": {
30105
30645
  capName: "pipeline-analytics",
30106
30646
  capScope: "device",
@@ -30863,6 +31403,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
30863
31403
  addonId: null,
30864
31404
  access: "create"
30865
31405
  },
31406
+ "recording.cancelRelocate": {
31407
+ capName: "recording",
31408
+ capScope: "system",
31409
+ addonId: null,
31410
+ access: "create"
31411
+ },
30866
31412
  "recording.deleteFootprint": {
30867
31413
  capName: "recording",
30868
31414
  capScope: "system",
@@ -30893,6 +31439,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
30893
31439
  addonId: null,
30894
31440
  access: "view"
30895
31441
  },
31442
+ "recording.getRelocateStatus": {
31443
+ capName: "recording",
31444
+ capScope: "system",
31445
+ addonId: null,
31446
+ access: "view"
31447
+ },
30896
31448
  "recording.getStorageUsage": {
30897
31449
  capName: "recording",
30898
31450
  capScope: "system",
@@ -30923,6 +31475,24 @@ var METHOD_ACCESS_MAP = Object.freeze({
30923
31475
  addonId: null,
30924
31476
  access: "view"
30925
31477
  },
31478
+ "recording.relocateFootage": {
31479
+ capName: "recording",
31480
+ capScope: "system",
31481
+ addonId: null,
31482
+ access: "create"
31483
+ },
31484
+ "recording.renderClip": {
31485
+ capName: "recording",
31486
+ capScope: "system",
31487
+ addonId: null,
31488
+ access: "create"
31489
+ },
31490
+ "recording.renderGif": {
31491
+ capName: "recording",
31492
+ capScope: "system",
31493
+ addonId: null,
31494
+ access: "create"
31495
+ },
30926
31496
  "recording.rescanStorage": {
30927
31497
  capName: "recording",
30928
31498
  capScope: "system",
@@ -31517,6 +32087,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
31517
32087
  addonId: null,
31518
32088
  access: "create"
31519
32089
  },
32090
+ "streamBroker.renderPreBufferClip": {
32091
+ capName: "stream-broker",
32092
+ capScope: "system",
32093
+ addonId: null,
32094
+ access: "create"
32095
+ },
31520
32096
  "streamBroker.restartProfile": {
31521
32097
  capName: "stream-broker",
31522
32098
  capScope: "system",
@@ -32964,4 +33540,4 @@ function enumerateInferenceDevices(hw) {
32964
33540
  return out;
32965
33541
  }
32966
33542
  //#endregion
32967
- 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_EVENT_COLOR, DEFAULT_FEATURES, DEFAULT_RETENTION, DEFAULT_SCRUB_THUMBNAIL_PRESET, DEVICE_BACKEND_TO_FORMAT, DEVICE_CAP_NAMES, DEVICE_PROFILES, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DEVICE_TYPE_CONTROL_KIND, DEVICE_TYPE_INFO, DayNightModeSchema, DayNightOptionsSchema, DayNightSettingsPatchSchema, DayNightStatusSchema, DecodedAudioChunkSchema, DecodedFrameSchema, DecoderSessionConfigSchema, DecoderStatsSchema, DeleteIntegrationResultSchema, DetectionSourceSchema, DeviceCodeSeveritySchema, DeviceConfig, DeviceDiscoveryStatusSchema, ExposeInputSchema as DeviceExportExposeInputSchema, DeviceExportStatusSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, DeviceFeature, DeviceInfoSchema, DeviceLinkModeSchema, DeviceNetworkStatsSchema, DeviceRole, DeviceRuntimeState, DeviceStatusSchema, DeviceType, DiscoveredChildDeviceSchema, DiscoveredChildStatusSchema, DiscoveredDeviceSchema, DiscoveredTargetSchema, DisposerChain, DoorbellPressEventSchema, DoorbellStatusSchema, EVENTFUL_CAP_NAMES, EVENT_KIND_BY_CAP, EVENT_PAD_MS, EVENT_TAXONOMY, 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, EventKindCategorySchema, EventKindDescriptorSchema, EventKindIconSchema, EventKindSchema, EventSourceType, ExportDownloadSchema, ExportOptionsSchema, ExportRecordSchema, ExportSetupFieldSchema, ExportSetupSchema, ExportSpeedSchema, ExportStateSchema, ExportTimelapseSchema, 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, KeyEventSchema, LOG_LEVEL_RANK, LabelDefinitionSchema, LawnMowerActivitySchema, LawnMowerControlStatusSchema, LinkedDeviceSchema, LlmDefaultSchema, LlmDefaultSelectorSchema, LlmErrorCodeSchema, LlmGenerateBaseInputSchema, LlmGenerateErrSchema, LlmGenerateOkSchema, LlmGenerateResultSchema, LlmImageSchema, LlmNodeModelSchema, LlmProfileKindDescriptorSchema, LlmProfileKindSchema, LlmProfileSchema, LlmRuntimeCompleteInputSchema, LlmRuntimeDiskUsageSchema, LlmRuntimeNodeSchema, LlmRuntimeStatusSchema, LlmUsageRollupSchema, LlmUsageSchema, LocateSegmentResultSchema, LocationStatSchema, LockControlStatusSchema, LockStateSchema, LogEntrySchema, LogLevelSchema, LogStreamEntrySchema, LoginMethodContributionSchema, LoginStageEnum, 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, MOTION_TRIGGER_FEATURE, ManagedModelCatalogEntrySchema, ManagedModelRefSchema, ManagedRuntimeConfigSchema, 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, NC_CONDITION_CATALOG, NC_HISTORY_LIMIT_DEFAULT, NC_HISTORY_LIMIT_MAX, NC_MAX_PER_TRACK_IMMEDIATE, NC_TAXONOMY, NativeCropBboxSchema, NativeCropRefSchema, NativeCropResultSchema, NativeDetectionSchema, NativeObjectClassEnum, NativeObjectDetectionRuntimeStateSchema, NativeObjectDetectionStatusSchema, NcConditionDescriptorSchema, NcConditionsSchema, NcDeliverySchema, NcHistoryEntrySchema, NcHistoryFilterSchema, NcHistoryRecordKindSchema, NcHistoryStatusSchema, NcHistorySubjectSchema, NcMediaPolicySchema, NcOccupancyConditionSchema, NcPlateMatcherSchema, NcRuleInputSchema, NcRulePatchSchema, NcRuleSchema, NcRuleTargetSchema, NcScheduleSchema, NcScheduleWindowSchema, NcTaxonomyEntrySchema, NcTaxonomySchema, NcTestResultSchema, NcThrottleSchema, NcZoneConditionSchema, NetworkAccessStatusSchema, NetworkAddressSchema, NetworkEndpointSchema, NotificationActionSchema, NotificationFormatSchema, NotificationSchema, NotifierStatusSchema, NumericSensorStatusSchema, OPS_LOG_DEFAULT_LIMIT, OPS_LOG_RING_DEFAULT_MAX, OauthIntegrationDescriptorSchema, ObjectEventSchema, OpsLogDomainSchema, OpsLogEntrySchema, OpsLogOpSchema, OpsLogQueryInputSchema, OpsLogReasonSchema, 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, PasskeyLoginMethodSchema, 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, PtzOptionsSchema, 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, RecentTracksPageSchema, RecentTracksQueryInput, RecordingAvailabilitySchema, RecordingBandModeSchema, RecordingBandSchema, RecordingBandTriggersSchema, RecordingConfigSchema, RecordingDaysSchema, RecordingDeviceUsageSchema, RecordingLocationUsageSchema, RecordingManifestSchema, RecordingModeSchema, RecordingRangeSchema, RecordingRetentionSchema, RecordingRuleSchema, RecordingScheduleSchema, RecordingStatusSchema, RecordingStorageModeSchema, RecordingStorageUsageSchema, RecordingTriggersSchema, RecordingWeekdaySchema, RedirectLoginMethodSchema, RenderedAsSchema, ReportMotionInputSchema, RingBuffer, RtpSourceSchema, RtspRestreamEntrySchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerInferenceDeviceSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, SCOPE_PRESETS, SCRUB_THUMBNAIL_PRESETS, SCRUB_THUMBNAIL_PRESET_LABELS, SCRUB_THUMBNAIL_PRESET_ORDER, SENSOR_FEATURES, SENSOR_MAP, SOURCE_INFO_METADATA_KEY, STREAM_PROFILE_META, STREAM_QUALITY_LABELS, SUB_DETECTION_TYPES, SYSTEM_CAP_NAMES, SceneCheckSchema, SceneConditionSchema, SceneMonitorSchema, SceneMonitorStateSchema, SceneMonitorStatusSchema, SceneReferenceSchema, ScopedTokenSchema, ScopedTokenSummarySchema, ScoredObjectEventSchema, ScriptRunnerStatusSchema, ScrubThumbnailPresetSchema, SearchResultSchema, SendEmailInputSchema, SendEmailResultSchema, SendResultSchema, SensorEventSchema, ServerBootModeSchema, ServerPackageStatusSchema, ServerRollbackInfoSchema, ServerUpdateActionResultSchema, ServerUpdateCheckResultSchema, ServerUpdateStateSchema, SettingsPatchSchema, SettingsRecordSchema, SettingsSchemaWithValuesSchema, SettingsUpdateResultSchema, ShmRingStatsSchema, SmokeStatusSchema, SmtpStatusSchema, SnapshotImageSchema, SourceInfoSchema, SpatialDetectionSchema, SsoBridgeClaimsSchema, StartEmbeddedInputSchema, StationaryObjectSchema, 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, TAXONOMY_COLORS, TIMEZONES, TamperStatusSchema, TankStatusSchema, TargetKindCapsSchema, TargetKindLevelSchema, TargetKindSchema, TargetSchema, TemperatureSensorStatusSchema, TerminalProfileInfoSchema, TerminalSessionInfoSchema, TestConnectionResultSchema$1 as TestConnectionResultSchema, TestResultSchema, TimelapseRuleInputSchema, TimelapseRulePatchSchema, TimelapseRuleSchema, TimelapseTemplateSchema, ToastSchema, TokenScopeSchema, TopologyNodeSchema, TopologyProcessSchema, TopologyServiceSchema, TrackCascadeCountsSchema, TrackEnvelopeSchema, TrackProjectionSchema, TrackSchema, TrackStateSchema, TrackZoneFilterSchema, 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, WidgetLoginMethodSchema, WidgetMetadataSchema, WidgetRemoteSchema, WidgetSizeEnum, YAMNET_TO_MACRO, ZoneKindEnum, ZoneRuleModeEnum, ZoneRuleSchema, ZoneRuleStageEnum, ZoneRulesArraySchema, ZoneSchema, ZoneScopeBreakdownSchema, accessoriesCapability, accessoryStableId, addonPagesCapability, addonPagesSourceCapability, addonRoutesCapability, addonSettingsCapability, addonWidgetsCapability, addonWidgetsSourceCapability, addonsCapability, adminUiCapability, 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, buildEventKindDescriptor, buildModelVariantGroups, buildNcTaxonomy, buildStreamParamsConfigSchema, buttonCapability, cameraCredentialsCapability, cameraPipelineConfigCapability, cameraStreamsCapability, canConvertUnit, carbonMonoxideCapability, cellsToRects, classifyStream, classifyStreams, climateControlCapability, collectHydratedFieldEntries, collectHydratedFieldValues, colorCapability, colorForKind, 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, deviceBackendToFormat, deviceCustomAction, deviceDiscoveryCapability, deviceExportCapability, deviceManagerCapability, deviceMatchesProfile, deviceOpsCapability, deviceProviderCapability, deviceStateCapability, deviceStatusCapability, doorbellCapability, embeddingEncoderCapability, emitDownForOwnedCaps, emitReadiness, encodeProfileFromStreamShape, enumSensorCapability, enumerateInferenceDevices, enumerateItemArrayFields, enumerateSchemaFields, errMsg, evaluateAst, evaluateLinkExpression, evaluateZoneRules, event, eventEmitterCapability, eventsCapability, expandCapMethods, extractNestedAddonId, extractSourceInfoFromMetadata, faceGalleryCapability, fanControlCapability, featureProbeCapability, filesystemBrowseCapability, findTimezone, floodCapability, formatForBackend, formatForRuntime, gasCapability, getAudioMacroClassIds, getByPath, getCapsByProviderKind, getTaxonomyEntry, hasMotionTrigger, hfModelUrl, htmlToText, humidifierCapability, humiditySensorCapability, hydrateSchema, imageCapability, imageSettingsCapability, integrationsCapability, intercomCapability, isAgentOnlyPlacement, isArrayOutputSchema, isCollectionArrayMethod, isDeployableToAgent, isDeviceConfigCap, isEvent, isNode, isObjectInput, isVoidInput, jobKindSchema, kebabToCamel, lawnMowerControlCapability, lifecycleJobSchema, lifecycleJobScopeSchema, lifecycleJobStateSchema, lifecycleTaskSchema, llmCapability, llmRuntimeCapability, localNetworkCapability, locationSimilarity, lockControlCapability, logDestinationCapability, logLevelAtMost, loginMethodCapability, 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, notificationRulesCapability, notifierCapability, numericSensorCapability, oauthIntegrationCapability, objectInputDeclaresAddonId, osdCapability, parseCameraStreamConfig, parseExpression, parseJsonArray, parseJsonObject, parseJsonUnknown, parseProfileBrokerId, parseStreamParamsFormPatch, petFeederCapability, pickAccessoryControl, pickPreferredRtspEntry, pipelineAnalyticsCapability, pipelineExecutorCapability, pipelineOrchestratorCapability, pipelineRunnerCapability, plateGalleryCapability, platformProbeCapability, powerMeterCapability, prepareNotification, presenceCapability, pressureSensorCapability, privacyMaskCapability, procedureAuthKey, ptzAutotrackCapability, ptzCapability, pythonScriptForBackend, readNodePin, readinessKey, rebootCapability, recordingCapability, recordingExportCapability, rectsToCells, requiresPython, resolveAddonExecution, resolveAddonGroup, resolveAddonPlacement, resolveAddonRuntime, resolveCapMount, resolveDetectionRuntime, resolveDeviceControlKind, resolveDeviceProfile, resolveFormat, resolveHydratedFieldValue, resolveModelFormat, resolveMutate, resolveRunnerId, resolveScrubThumbnailGeometry, resolveVariantModelId, runInferenceStep, runtimeDevices, sceneMonitorCapability, scopeKey, scoreRuntimes, scriptRunnerCapability, selectAssignedProfileSlots, serverManagementCapability, setByPath, settingsStoreCapability, sleep, sleepCancellable, smokeCapability, smtpProviderCapability, snapshotCapability, ssoBridgeCapability, startReachabilityPoll, storageCapability, storageEvictableCapability, storageProviderCapability, streamBrokerCapability, streamCatalogCapability, streamParamsCapability, streamPixels, streamQualityLabel, subKindsOf, supportedRuntimes, switchCapability, synthesizeSourceInfo, systemCapability, tamperCapability, taskLogEntrySchema, taskPhaseSchema, taskTargetSchema, temperatureSensorCapability, terminalSessionCapability, textToHtml, toDeviceSummary, toExpressionValue, toStreamSourceEntry, toastCapability, tokenize, transcodeBody, tryConvertUnit, turnProviderCapability, unitDimension, unitsForDimension, updateCapability, userManagementCapability, userPasskeysCapability, vacuumControlCapability, validateExpressionSource, valveCapability, vibrationCapability, videoclipsCapability, viewerUiCapability, waterHeaterCapability, weatherCapability, webrtcClientHintsSchema, webrtcSessionCapability, wiringAddonHealthSchema, wiringHealthSnapshotSchema, wiringNodeHealthSchema, wiringProbeKindSchema, wiringProbeResultSchema, zodEntriesToConfigUI, zoneAnalyticsCapability, zoneRulesCapability, zonesCapability };
33543
+ 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_EVENT_COLOR, DEFAULT_FEATURES, DEFAULT_RETENTION, DEFAULT_SCRUB_THUMBNAIL_PRESET, DEVICE_BACKEND_TO_FORMAT, DEVICE_CAP_NAMES, DEVICE_PROFILES, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DEVICE_TYPE_CONTROL_KIND, DEVICE_TYPE_INFO, DayNightModeSchema, DayNightOptionsSchema, DayNightSettingsPatchSchema, DayNightStatusSchema, DecodedAudioChunkSchema, DecodedFrameSchema, DecoderSessionConfigSchema, DecoderStatsSchema, DeleteIntegrationResultSchema, DetectionSourceSchema, DeviceCodeSeveritySchema, DeviceConfig, DeviceDiscoveryStatusSchema, ExposeInputSchema as DeviceExportExposeInputSchema, DeviceExportStatusSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, DeviceFeature, DeviceInfoSchema, DeviceLinkModeSchema, DeviceNetworkStatsSchema, DeviceRole, DeviceRuntimeState, DeviceStatusSchema, DeviceType, DiscoveredChildDeviceSchema, DiscoveredChildStatusSchema, DiscoveredDeviceSchema, DiscoveredTargetSchema, DisposerChain, DoorbellPressEventSchema, DoorbellStatusSchema, EVENTFUL_CAP_NAMES, EVENT_KIND_BY_CAP, EVENT_PAD_MS, EVENT_TAXONOMY, 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, EventKindCategorySchema, EventKindDescriptorSchema, EventKindIconSchema, EventKindSchema, EventSourceType, ExportDownloadSchema, ExportOptionsSchema, ExportRecordSchema, ExportSetupFieldSchema, ExportSetupSchema, ExportSpeedSchema, ExportStateSchema, ExportTimelapseSchema, 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, KeyEventSchema, LOG_LEVEL_RANK, LabelDefinitionSchema, LawnMowerActivitySchema, LawnMowerControlStatusSchema, LinkedDeviceSchema, LlmDefaultSchema, LlmDefaultSelectorSchema, LlmErrorCodeSchema, LlmGenerateBaseInputSchema, LlmGenerateErrSchema, LlmGenerateOkSchema, LlmGenerateResultSchema, LlmImageSchema, LlmNodeModelSchema, LlmProfileKindDescriptorSchema, LlmProfileKindSchema, LlmProfileSchema, LlmRuntimeCompleteInputSchema, LlmRuntimeDiskUsageSchema, LlmRuntimeNodeSchema, LlmRuntimeStatusSchema, LlmUsageRollupSchema, LlmUsageSchema, LocateSegmentResultSchema, LocationStatSchema, LockControlStatusSchema, LockStateSchema, LogEntrySchema, LogLevelSchema, LogStreamEntrySchema, LoginMethodContributionSchema, LoginStageEnum, 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, MOTION_TRIGGER_FEATURE, ManagedModelCatalogEntrySchema, ManagedModelRefSchema, ManagedRuntimeConfigSchema, 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, NC_BASE_CONDITION_KEYS, NC_CONDITION_CATALOG, NC_HISTORY_LIMIT_DEFAULT, NC_HISTORY_LIMIT_MAX, NC_MAX_PER_TRACK_IMMEDIATE, NC_TAXONOMY, NativeCropBboxSchema, NativeCropRefSchema, NativeCropResultSchema, NativeDetectionSchema, NativeObjectClassEnum, NativeObjectDetectionRuntimeStateSchema, NativeObjectDetectionStatusSchema, NcConditionDescriptorSchema, NcConditionsSchema, NcCrossingSchema, NcDeliverySchema, NcHistoryEntrySchema, NcHistoryFilterSchema, NcHistoryRecordKindSchema, NcHistoryStatusSchema, NcHistorySubjectSchema, NcMediaFrameSchema, NcMediaPolicySchema, NcOccupancyConditionSchema, NcPlateMatcherSchema, NcRuleInputSchema, NcRulePatchSchema, NcRuleSchema, NcRuleTargetSchema, NcScheduleSchema, NcScheduleWindowSchema, NcTaxonomyEntrySchema, NcTaxonomySchema, NcTestResultSchema, NcThrottleGranularitySchema, NcThrottleSchema, NcZoneConditionSchema, NetworkAccessStatusSchema, NetworkAddressSchema, NetworkEndpointSchema, NotificationActionSchema, NotificationFormatSchema, NotificationSchema, NotifierStatusSchema, NumericSensorStatusSchema, OPS_LOG_DEFAULT_LIMIT, OPS_LOG_RING_DEFAULT_MAX, OauthIntegrationDescriptorSchema, ObjectEventSchema, OpsLogDomainSchema, OpsLogEntrySchema, OpsLogOpSchema, OpsLogQueryInputSchema, OpsLogReasonSchema, 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, PasskeyLoginMethodSchema, 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, PtzOptionsSchema, 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, RecentTracksPageSchema, RecentTracksQueryInput, RecordingAvailabilitySchema, RecordingBandModeSchema, RecordingBandSchema, RecordingBandTriggersSchema, RecordingConfigSchema, RecordingDaysSchema, RecordingDeviceUsageSchema, RecordingLocationUsageSchema, RecordingManifestSchema, RecordingRangeSchema, RecordingRetentionSchema, RecordingStatusSchema, RecordingStorageModeSchema, RecordingStorageUsageSchema, RecordingTriggersSchema, RecordingWeekdaySchema, RedirectLoginMethodSchema, RelocateFootageInputSchema, RelocateJobSchema, RelocateJobStateSchema, RelocateMediaInputSchema, RenderedAsSchema, ReportMotionInputSchema, RingBuffer, RtpSourceSchema, RtspRestreamEntrySchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerInferenceDeviceSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, SCOPE_PRESETS, SCRUB_THUMBNAIL_PRESETS, SCRUB_THUMBNAIL_PRESET_LABELS, SCRUB_THUMBNAIL_PRESET_ORDER, SENSOR_FEATURES, SENSOR_MAP, SOURCE_INFO_METADATA_KEY, STREAM_PROFILE_META, STREAM_QUALITY_LABELS, SUB_DETECTION_TYPES, SYSTEM_CAP_NAMES, SceneCheckSchema, SceneConditionSchema, SceneMonitorSchema, SceneMonitorStateSchema, SceneMonitorStatusSchema, SceneReferenceSchema, ScopedTokenSchema, ScopedTokenSummarySchema, ScoredObjectEventSchema, ScriptRunnerStatusSchema, ScrubThumbnailPresetSchema, SearchResultSchema, SendEmailInputSchema, SendEmailResultSchema, SendResultSchema, SensorEventSchema, ServerBootModeSchema, ServerPackageStatusSchema, ServerRollbackInfoSchema, ServerUpdateActionResultSchema, ServerUpdateCheckResultSchema, ServerUpdateStateSchema, SettingsPatchSchema, SettingsRecordSchema, SettingsSchemaWithValuesSchema, SettingsUpdateResultSchema, ShmRingStatsSchema, SmokeStatusSchema, SmtpStatusSchema, SnapshotImageSchema, SourceInfoSchema, SpatialDetectionSchema, SsoBridgeClaimsSchema, StartEmbeddedInputSchema, StationaryObjectSchema, 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, TAXONOMY_COLORS, TIMEZONES, TamperStatusSchema, TankStatusSchema, TargetKindCapsSchema, TargetKindLevelSchema, TargetKindSchema, TargetSchema, TemperatureSensorStatusSchema, TerminalProfileInfoSchema, TerminalSessionInfoSchema, TestConnectionResultSchema$1 as TestConnectionResultSchema, TestResultSchema, TimelapseRuleInputSchema, TimelapseRulePatchSchema, TimelapseRuleSchema, TimelapseTemplateSchema, ToastSchema, TokenScopeSchema, TopologyNodeSchema, TopologyProcessSchema, TopologyServiceSchema, TrackCascadeCountsSchema, TrackEnvelopeSchema, TrackProjectionSchema, TrackSchema, TrackStateSchema, TrackZoneFilterSchema, 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, WidgetLoginMethodSchema, WidgetMetadataSchema, WidgetRemoteSchema, WidgetSizeEnum, YAMNET_TO_MACRO, ZoneCrossingDirectionSchema, ZoneCrossingSchema, ZoneKindEnum, ZoneRuleModeEnum, ZoneRuleSchema, ZoneRuleStageEnum, ZoneRulesArraySchema, ZoneSchema, ZoneScopeBreakdownSchema, accessoriesCapability, accessoryStableId, addonPagesCapability, addonPagesSourceCapability, addonRoutesCapability, addonSettingsCapability, addonWidgetsCapability, addonWidgetsSourceCapability, addonsCapability, adminUiCapability, 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, buildEventKindDescriptor, buildModelVariantGroups, buildNcTaxonomy, buildStreamParamsConfigSchema, buttonCapability, cameraCredentialsCapability, cameraPipelineConfigCapability, cameraStreamsCapability, canConvertUnit, carbonMonoxideCapability, cellsToRects, classifyStream, classifyStreams, climateControlCapability, collectHydratedFieldEntries, collectHydratedFieldValues, colorCapability, colorForKind, compileExpression, compileExpressionSafe, connectivityCapability, consumablesCapability, contactCapability, controlCapability, convertUnit, cosineSimilarity, coverCapability, createDeviceProxy, createDurableState, createEvent, createExpressionScope, createLazyTrpcSource, createMirrorSource, createRuntimeStateBridge, createSliceHandle, createSystemProxy, customAction, customModelRegistryCapability, dayNightCapability, decoderCapability, defaultDeviceFor, defineCustomActions, deriveRecordingMode, describeModelVariant, detectionPipelineCapability, deviceAdoptionCapability, deviceBackendToFormat, deviceCustomAction, deviceDiscoveryCapability, deviceExportCapability, deviceManagerCapability, deviceMatchesProfile, deviceOpsCapability, deviceProviderCapability, deviceStateCapability, deviceStatusCapability, doorbellCapability, embeddingEncoderCapability, emitDownForOwnedCaps, emitReadiness, encodeProfileFromStreamShape, enumSensorCapability, enumerateInferenceDevices, enumerateItemArrayFields, enumerateSchemaFields, errMsg, evaluateAst, evaluateLinkExpression, evaluateZoneRules, event, eventEmitterCapability, eventsCapability, expandCapMethods, extractNestedAddonId, extractSourceInfoFromMetadata, faceGalleryCapability, fanControlCapability, featureProbeCapability, filesystemBrowseCapability, findTimezone, floodCapability, formatForBackend, formatForRuntime, gasCapability, getAudioMacroClassIds, getByPath, getCapsByProviderKind, getTaxonomyEntry, hasMotionTrigger, hfModelUrl, htmlToText, humidifierCapability, humiditySensorCapability, hydrateSchema, imageCapability, imageSettingsCapability, integrationsCapability, intercomCapability, isAgentOnlyPlacement, isArrayOutputSchema, isBaseConditionKey, isCollectionArrayMethod, isDeployableToAgent, isDeviceConfigCap, isEvent, isNode, isObjectInput, isVoidInput, jobKindSchema, kebabToCamel, knownValues, lawnMowerControlCapability, lifecycleJobSchema, lifecycleJobScopeSchema, lifecycleJobStateSchema, lifecycleTaskSchema, llmCapability, llmRuntimeCapability, localNetworkCapability, locationSimilarity, lockControlCapability, logDestinationCapability, logLevelAtMost, loginMethodCapability, looseSchema, makeProfileBrokerId, makeSourceBrokerId, mapAudioLabelToMacro, markdownToHtmlLite, markdownToText, maskUrlCredentials, mediaPlayerCapability, mergeSourceInfo, meshNetworkCapability, method, metricsProviderCapability, modelConvertCapability, modelDistributorCapability, modelFormatForRuntime, motionCapability, motionDetectionCapability, motionTriggerCapability, motionZonesCapability, mqttBrokerCapability, nativeObjectDetectionCapability, networkAccessCapability, networkQualityCapability, nodePin, nodesCapability, normalizeAddonInitResult, normalizeUnit, notificationOutputCapability, notificationRulesCapability, notifierCapability, numericSensorCapability, oauthIntegrationCapability, objectInputDeclaresAddonId, osdCapability, parseCameraStreamConfig, parseExpression, parseJsonArray, parseJsonObject, parseJsonUnknown, parseProfileBrokerId, parseStreamParamsFormPatch, petFeederCapability, pickAccessoryControl, pickPreferredRtspEntry, pickerForCondition, pipelineAnalyticsCapability, pipelineExecutorCapability, pipelineOrchestratorCapability, pipelineRunnerCapability, plateGalleryCapability, platformProbeCapability, powerMeterCapability, prepareNotification, presenceCapability, pressureSensorCapability, privacyMaskCapability, procedureAuthKey, ptzAutotrackCapability, ptzCapability, pythonScriptForBackend, readNodePin, readinessKey, rebootCapability, recordingCapability, recordingExportCapability, rectsToCells, requiresPython, resolveAddonExecution, resolveAddonGroup, resolveAddonPlacement, resolveAddonRuntime, resolveCapMount, resolveDetectionRuntime, resolveDeviceControlKind, resolveDeviceProfile, resolveFormat, resolveHydratedFieldValue, resolveModelFormat, resolveMutate, resolveRunnerId, resolveScrubThumbnailGeometry, resolveVariantModelId, runInferenceStep, runtimeDevices, sceneMonitorCapability, scopeKey, scoreRuntimes, scriptRunnerCapability, selectAssignedProfileSlots, serverManagementCapability, setByPath, settingsStoreCapability, sleep, sleepCancellable, smokeCapability, smtpProviderCapability, snapshotCapability, ssoBridgeCapability, startReachabilityPoll, storageCapability, storageEvictableCapability, storageProviderCapability, streamBrokerCapability, streamCatalogCapability, streamParamsCapability, streamPixels, streamQualityLabel, subKindsOf, supportedRuntimes, switchCapability, synthesizeSourceInfo, systemCapability, tamperCapability, taskLogEntrySchema, taskPhaseSchema, taskTargetSchema, temperatureSensorCapability, terminalSessionCapability, textToHtml, toDeviceSummary, toExpressionValue, toStreamSourceEntry, toastCapability, tokenize, transcodeBody, tryConvertUnit, turnProviderCapability, unitDimension, unitsForDimension, updateCapability, userManagementCapability, userPasskeysCapability, vacuumControlCapability, validateExpressionSource, valveCapability, vibrationCapability, videoclipsCapability, viewerUiCapability, waterHeaterCapability, weatherCapability, webrtcClientHintsSchema, webrtcSessionCapability, wiringAddonHealthSchema, wiringHealthSnapshotSchema, wiringNodeHealthSchema, wiringProbeKindSchema, wiringProbeResultSchema, zodEntriesToConfigUI, zoneAnalyticsCapability, zoneRulesCapability, zonesCapability };