@camstack/addon-post-analysis 1.2.71 → 1.2.73

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.
@@ -2996,6 +2996,9 @@ function handlePipeResult(left, next, ctx) {
2996
2996
  fallback: left.fallback
2997
2997
  }, ctx);
2998
2998
  }
2999
+ var $ZodPreprocess = /*@__PURE__*/ $constructor("$ZodPreprocess", (inst, def) => {
3000
+ $ZodPipe.init(inst, def);
3001
+ });
2999
3002
  var $ZodReadonly = /*@__PURE__*/ $constructor("$ZodReadonly", (inst, def) => {
3000
3003
  $ZodType.init(inst, def);
3001
3004
  defineLazy(inst._zod, "propValues", () => def.innerType._zod.propValues);
@@ -5181,6 +5184,10 @@ function pipe(in_, out) {
5181
5184
  out
5182
5185
  });
5183
5186
  }
5187
+ var ZodPreprocess = /*@__PURE__*/ $constructor("ZodPreprocess", (inst, def) => {
5188
+ ZodPipe.init(inst, def);
5189
+ $ZodPreprocess.init(inst, def);
5190
+ });
5184
5191
  var ZodReadonly = /*@__PURE__*/ $constructor("ZodReadonly", (inst, def) => {
5185
5192
  $ZodReadonly.init(inst, def);
5186
5193
  ZodType.init(inst, def);
@@ -5239,6 +5246,13 @@ function _instanceof(cls, params = {}) {
5239
5246
  };
5240
5247
  return inst;
5241
5248
  }
5249
+ function preprocess(fn, schema) {
5250
+ return new ZodPreprocess({
5251
+ type: "pipe",
5252
+ in: transform(fn),
5253
+ out: schema
5254
+ });
5255
+ }
5242
5256
  //#endregion
5243
5257
  //#region ../../node_modules/zod/v4/classic/compat.js
5244
5258
  /** @deprecated Use the raw string literal codes instead, e.g. "invalid_type". */
@@ -14632,7 +14646,16 @@ var NcScheduleSchema = object({
14632
14646
  });
14633
14647
  /** Fuzzy plate matcher — OCR noise makes exact match useless (spec row 12/13). */
14634
14648
  var NcPlateMatcherSchema = object({
14635
- values: array(string().min(1)).min(1),
14649
+ /**
14650
+ * Plate texts (or gallery vehicle names) to match. EMPTY = **any plate the
14651
+ * pipeline could read** — the plate half of "no selection = no narrowing",
14652
+ * and the switch that says this rule is about vehicles that were IDENTIFIED
14653
+ * rather than merely seen. A subject carrying no plate still fails.
14654
+ *
14655
+ * The `.min(1)` this used to carry made that state unauthorable; nothing has
14656
+ * ever persisted an empty list, so widening it cannot change an existing rule.
14657
+ */
14658
+ values: array(string().min(1)),
14636
14659
  /** Max Levenshtein distance after normalization (uppercase alphanumeric). */
14637
14660
  maxDistance: number().int().min(0).max(3).default(1)
14638
14661
  });
@@ -14871,18 +14894,47 @@ var NcConditionsSchema = object({
14871
14894
  */
14872
14895
  labelEquals: array(string().min(1)).optional(),
14873
14896
  /**
14874
- * Identity matcher. P1 boundary: matched against the record's collapsed
14875
- * `label` (the identity display name propagated by the face pipeline) —
14876
- * identity-ID matching rides in P2 when identity ids reach the record.
14897
+ * KNOWN FACES — the rule's identity scope, and the switch that says the rule
14898
+ * is about recognised people at all.
14899
+ *
14900
+ * Three states, and the empty one is the point:
14901
+ *
14902
+ * | value | meaning |
14903
+ * | --- | --- |
14904
+ * | absent | the rule does not care who it is; an unrecognised person matches |
14905
+ * | `[]` | **only known faces** — any identity in the gallery, nobody in particular |
14906
+ * | a list | only these identities |
14907
+ *
14908
+ * `[]` is the repo-wide "no selection = no narrowing" reading (an absent
14909
+ * `devices` list is every device), applied one level down: the operator has
14910
+ * turned the face scope ON and narrowed it to nothing, which is every known
14911
+ * face. No second field states the same thing — a switch that can disagree
14912
+ * with the list under it is worse than no switch (D62).
14913
+ *
14914
+ * MEMBERS ARE FACE-GALLERY `Identity.id`s (uuid), not display names. A name is
14915
+ * renameable, and a rule authored on "Gianluca" went silently dark the moment
14916
+ * the operator fixed the spelling. The id reaches the record on
14917
+ * `LabelAttribution.identityId`; the name is what the editor shows and what
14918
+ * `{{label}}` renders.
14919
+ *
14920
+ * Rules written before this carry NAMES, and are resolved to ids lazily at
14921
+ * load (`NcRuleStore.load`) against the live gallery — a name nothing answers
14922
+ * for is left as it stands and reported, never dropped. The engine also
14923
+ * accepts a display-name hit as a compatibility leg, so a rule whose
14924
+ * migration could not resolve keeps matching exactly what it matched before.
14877
14925
  */
14878
14926
  identities: array(string().min(1)).optional(),
14879
- /** Fuzzy plate matcher against the record's `label` (plate text). */
14927
+ /**
14928
+ * KNOWN PLATES / VEHICLES — the plate mirror of {@link identities}, including
14929
+ * the empty-list reading: `values: []` is "any plate the OCR could read",
14930
+ * a non-empty list is those plates (fuzzily). See {@link NcPlateMatcherSchema}.
14931
+ */
14880
14932
  plates: NcPlateMatcherSchema.optional(),
14881
14933
  /**
14882
- * Identity EXCLUDE — mirror of {@link identities} with `notIn` semantics.
14883
- * Same P1 boundary: matched against the record's collapsed `label` (the
14884
- * identity display name). A record with NO label passes (nothing to
14885
- * exclude), unlike the include variant which fails on an absent label.
14934
+ * Identity EXCLUDE — mirror of {@link identities} with `notIn` semantics, and
14935
+ * the same id members and the same lazy name→id migration. A record with NO
14936
+ * identity passes (nothing to exclude), unlike the include variant which
14937
+ * fails on an unrecognised subject. An EMPTY list excludes nobody.
14886
14938
  */
14887
14939
  identitiesExclude: array(string().min(1)).optional(),
14888
14940
  /**
@@ -15274,7 +15326,37 @@ var NcRuleInputSchema = object({
15274
15326
  * a rule that predates the gate must keep delivering byte-for-byte as it
15275
15327
  * did, and absent is the only way to say that without a migration.
15276
15328
  */
15277
- confirm: NcConfirmSchema.optional()
15329
+ confirm: NcConfirmSchema.optional(),
15330
+ /**
15331
+ * WAIT for face/plate recognition before saying anything.
15332
+ *
15333
+ * A notification's TEXT is frozen at enqueue and its media is re-resolved at
15334
+ * send; the identity is neither. A face is confirmed after `confirmFrames`
15335
+ * agreeing observations — p50 **11.4 s** after the track was first seen,
15336
+ * measured on this hub — and an `immediate` rule enqueues on the first object
15337
+ * event, seconds before that. So "Gianluca è arrivato" is unsayable on the
15338
+ * immediate path, and no amount of media re-resolution fixes a sentence.
15339
+ *
15340
+ * Only two honest answers exist, and this flag picks between them. It has
15341
+ * effect ONLY on a rule that declares a recognition scope
15342
+ * ({@link NcConditions.identities} or {@link NcConditions.plates}) — on any
15343
+ * other rule there is nothing to wait for and the flag is inert.
15344
+ *
15345
+ * | value | what happens |
15346
+ * | --- | --- |
15347
+ * | `true` | the rule stops firing on the object event and fires at TRACK CLOSE instead, once, with the name — later, and complete |
15348
+ * | absent / `false` | it fires at once WITHOUT the name, and if recognition lands before the track closes a SECOND, "…is Gianluca" notification follows (one per track, per rule, per target) |
15349
+ *
15350
+ * `.optional()` and deliberately NOT `.default()`: a Zod default does not run
15351
+ * on the addon cap path, and absent has to keep meaning exactly what every
15352
+ * rule authored before this field meant.
15353
+ *
15354
+ * The cost of `true` is stated here because the editor states it too: a rule
15355
+ * that waits also inherits track-close SEMANTICS — its `zones` condition
15356
+ * tests every zone the track visited and a `crossing` condition can no longer
15357
+ * be satisfied, because a closed track carries no crossing.
15358
+ */
15359
+ waitForEnhancement: boolean().optional()
15278
15360
  });
15279
15361
  /**
15280
15362
  * Partial patch for `updateRule` — any subset of the input fields, plus the
@@ -15618,32 +15700,32 @@ var NC_CONDITION_CATALOG = [
15618
15700
  {
15619
15701
  id: "identities",
15620
15702
  group: "label",
15621
- label: "Identities",
15703
+ label: "Known faces",
15622
15704
  valueType: "stringList",
15623
15705
  operator: "in",
15624
15706
  appliesTo: ["immediate", "track-end"],
15625
15707
  phase: "P1",
15626
- description: "P1: matched against the identity display name on the record label."
15708
+ description: "Only recognised people. Selecting NOBODY means every identity in the face gallery; selecting some narrows to those. Matched on the gallery id, so renaming a person does not break the rule. On immediate delivery the name is not known yet when the notification is enqueued — see the rule’s \"wait for recognition\" switch."
15627
15709
  },
15628
15710
  {
15629
15711
  id: "plates",
15630
15712
  group: "label",
15631
- label: "License plates",
15713
+ label: "Known plates",
15632
15714
  valueType: "plateMatcher",
15633
15715
  operator: "fuzzyIn",
15634
15716
  appliesTo: ["immediate", "track-end"],
15635
15717
  phase: "P1",
15636
- description: "Levenshtein-tolerant match against the plate text."
15718
+ description: "Only vehicles whose plate was read. Selecting NO plate means any readable plate; listed plates are matched Levenshtein-tolerantly, because OCR noise makes an exact match useless."
15637
15719
  },
15638
15720
  {
15639
15721
  id: "identitiesExclude",
15640
15722
  group: "label",
15641
- label: "Excluded identities",
15723
+ label: "Excluded faces",
15642
15724
  valueType: "stringList",
15643
15725
  operator: "notIn",
15644
15726
  appliesTo: ["immediate", "track-end"],
15645
15727
  phase: "P1",
15646
- description: "Veto by identity display name (mirror of Identities; absent label passes)."
15728
+ description: "Veto by identity (mirror of Known faces, same gallery ids). A subject nobody recognised passes — there is nothing to exclude."
15647
15729
  },
15648
15730
  {
15649
15731
  id: "minLabelConfidence",
@@ -16293,7 +16375,87 @@ var MethodAccessSchema = _enum([
16293
16375
  var AllowedProviderSchema = union([literal("*"), array(string())]);
16294
16376
  var AllowedDevicesSchema = record(string(), union([literal("*"), array(string())]));
16295
16377
  var CapScopeSchema = _enum(["device", "system"]);
16296
- var TokenScopeSchema = discriminatedUnion("type", [
16378
+ /**
16379
+ * DeviceSelector (scope model v3 — 2026-08-12).
16380
+ *
16381
+ * A `device` grant no longer carries a frozen list of deviceIds. It carries
16382
+ * a SELECTOR the matcher resolves against the live fleet, so the grant can be
16383
+ * DYNAMIC: a `types:['camera']` selector automatically covers a camera added
16384
+ * AFTER the grant was minted — no re-grant, no re-login.
16385
+ *
16386
+ * - `all` — every device in the deployment. The broad viewer/operator
16387
+ * lever without a `category` grant (a `category` grant also covers device
16388
+ * caps that carry no deviceId; `all` is specifically the device set).
16389
+ * - `ids` — an explicit deviceId list. This is what a v2 `device:[…]`
16390
+ * grant migrates to (see {@link TokenScopeSchema}); STATIC — a new camera
16391
+ * is NOT covered until the grant is edited.
16392
+ * - `types` — every device of a `DeviceType` (e.g. every `camera`).
16393
+ * DYNAMIC. A device that changes type, or a new device of the type,
16394
+ * re-resolves on the next request.
16395
+ * - `locations` — every device whose operator-assigned `location` label is
16396
+ * in the set (e.g. "Garden", "Front door"). DYNAMIC. A device with a
16397
+ * null/unset location matches NO `locations` selector.
16398
+ */
16399
+ var DeviceSelectorSchema = discriminatedUnion("kind", [
16400
+ object({ kind: literal("all") }),
16401
+ object({
16402
+ kind: literal("ids"),
16403
+ ids: array(number().int()).min(1)
16404
+ }),
16405
+ object({
16406
+ kind: literal("types"),
16407
+ types: array(_enum(DeviceType)).min(1)
16408
+ }),
16409
+ object({
16410
+ kind: literal("locations"),
16411
+ locations: array(string().min(1)).min(1)
16412
+ })
16413
+ ]);
16414
+ var DeviceTokenScopeSchema = object({
16415
+ type: literal("device"),
16416
+ /** The device SET this grant covers — resolved against the live fleet. */
16417
+ selector: DeviceSelectorSchema,
16418
+ access: array(MethodAccessSchema).min(1),
16419
+ /**
16420
+ * Whether a grant on a PARENT device transparently covers its accessory
16421
+ * CHILDREN (siren / floodlight / PIR) via the persisted-parentage walk.
16422
+ * Direction is parent → children ONLY.
16423
+ *
16424
+ * Absent → the matcher DERIVES it from the access flavour: `view`
16425
+ * inherits (a camera viewer sees the camera's accessories), `create` /
16426
+ * `delete` do NOT (actuating/removing a child is an explicit act the
16427
+ * operator must grant on the child, not inherit from the parent). Set it
16428
+ * explicitly to override that default per grant.
16429
+ */
16430
+ includeLinked: boolean().optional()
16431
+ });
16432
+ /**
16433
+ * v2 → v3 lazy migration. A pre-v3 `device` grant carried
16434
+ * `targets: string[]` (stringified deviceIds); it rewrites to the equivalent
16435
+ * `selector: {kind:'ids', ids}`. Applied as a `preprocess` so it runs on
16436
+ * EVERY parse path — stored records AND the JWT-carried scope arrays
16437
+ * normalised at the request boundary ({@link normalizeTokenScopes} in
16438
+ * `device-selector.ts`). Chosen over a one-time DB migration because a
16439
+ * migration cannot reach a JWT already in a client's hands; parse-time
16440
+ * migration covers both without a flag day. No cast — the raw object is read
16441
+ * through `Reflect.get` (its static type is `unknown`).
16442
+ */
16443
+ function migrateLegacyTokenScope(raw) {
16444
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw)) return raw;
16445
+ if (Reflect.get(raw, "type") !== "device") return raw;
16446
+ if (Reflect.get(raw, "selector") !== void 0) return raw;
16447
+ const targets = Reflect.get(raw, "targets");
16448
+ if (!Array.isArray(targets)) return raw;
16449
+ return {
16450
+ type: "device",
16451
+ selector: {
16452
+ kind: "ids",
16453
+ ids: targets.map((t) => typeof t === "string" ? Number(t) : t).filter((n) => typeof n === "number" && Number.isInteger(n))
16454
+ },
16455
+ access: Reflect.get(raw, "access")
16456
+ };
16457
+ }
16458
+ var TokenScopeSchema = preprocess(migrateLegacyTokenScope, discriminatedUnion("type", [
16297
16459
  object({
16298
16460
  type: literal("category"),
16299
16461
  target: CapScopeSchema,
@@ -16309,18 +16471,8 @@ var TokenScopeSchema = discriminatedUnion("type", [
16309
16471
  target: string(),
16310
16472
  access: array(MethodAccessSchema).min(1)
16311
16473
  }),
16312
- object({
16313
- type: literal("device"),
16314
- /**
16315
- * One or more deviceIds (serialised as strings for wire-format
16316
- * consistency with the rest of the union). Matcher accepts if
16317
- * `input.deviceId` ∈ `targets`. Array shape avoids the row-explosion
16318
- * of one scope-per-device when granting access to a set of cameras.
16319
- */
16320
- targets: array(string()).min(1),
16321
- access: array(MethodAccessSchema).min(1)
16322
- })
16323
- ]);
16474
+ DeviceTokenScopeSchema
16475
+ ]));
16324
16476
  object({
16325
16477
  id: string(),
16326
16478
  username: string(),
@@ -16773,7 +16925,21 @@ union([literal(1), literal(2)]);
16773
16925
  var LabelAttributionSchema = object({
16774
16926
  stepId: string(),
16775
16927
  modelId: string().optional(),
16776
- decidedAt: number()
16928
+ decidedAt: number(),
16929
+ /**
16930
+ * The GALLERY id behind a recognised tier-2 label — a face-gallery
16931
+ * `Identity.id` or a plate-gallery `Vehicle.id` (both `randomUUID`).
16932
+ *
16933
+ * The text alone is a DISPLAY NAME, and a display name is renameable: a
16934
+ * notification rule authored on "Gianluca" stopped matching the moment the
16935
+ * operator fixed the spelling in the gallery, and nothing said so. The id is
16936
+ * the thing that does not move, so it is what a rule matches on
16937
+ * (`NcConditions.identities`) and the text is what a human is shown.
16938
+ *
16939
+ * Absent when the label names no gallery row — a plate the OCR read but no
16940
+ * vehicle claims, a sub-class, a species, any tier-1 value.
16941
+ */
16942
+ identityId: string().optional()
16777
16943
  });
16778
16944
  /**
16779
16945
  * The TIERED label model (roadmap 4g), spread into `TrackSchema` and
@@ -24013,54 +24179,139 @@ var TalkAudioCodecSchema = _enum([
24013
24179
  "g711ulaw",
24014
24180
  "g711alaw"
24015
24181
  ]);
24016
- DeviceType.Camera, method(object({ deviceId: number() }), object({
24017
- sessionId: string(),
24018
- sdpOffer: string()
24019
- }), {
24020
- kind: "mutation",
24021
- auth: "admin"
24022
- }), method(object({
24023
- deviceId: number(),
24024
- sessionId: string(),
24025
- sdpAnswer: string()
24026
- }), _void(), {
24027
- kind: "mutation",
24028
- auth: "admin"
24029
- }), method(object({
24030
- deviceId: number(),
24031
- sessionId: string()
24032
- }), _void(), {
24033
- kind: "mutation",
24034
- auth: "admin"
24035
- }), method(object({ deviceId: number() }), object({ sessionId: string() }), {
24036
- kind: "mutation",
24037
- auth: "admin"
24038
- }), method(object({
24039
- deviceId: number(),
24040
- /** Audio bytes for ONE frame, base64-encoded so the payload
24041
- * survives tRPC JSON serialization. */
24042
- audioBase64: string(),
24043
- /** Wire codec of the payload. Omit to let the provider default
24044
- * to its native expected format (s16le @ provider-native rate,
24045
- * mono). See {@link TalkAudioCodecSchema} for the supported set. */
24046
- codec: TalkAudioCodecSchema.optional(),
24047
- /** Sample rate (Hz). REQUIRED for `s16le`; advisory for
24048
- * `opus` (encoder clock); ignored for `g711*` (implied 8000). */
24049
- sampleRate: number().int().positive().optional(),
24050
- /** Channel count. Default 1. */
24051
- channels: number().int().positive().optional(),
24052
- /** Sequence number for ordering / dropping out-of-order frames. */
24053
- sequenceNumber: number().int()
24054
- }), object({ accepted: boolean() }), {
24055
- kind: "mutation",
24056
- auth: "admin"
24057
- }), method(object({ deviceId: number() }), _void(), {
24058
- kind: "mutation",
24059
- auth: "admin"
24060
- }), object({
24061
- deviceId: number(),
24062
- status: IntercomStatusSchema
24063
- });
24182
+ var intercomCapability = {
24183
+ name: "intercom",
24184
+ scope: "device",
24185
+ deviceNative: true,
24186
+ mode: "singleton",
24187
+ deviceTypes: [DeviceType.Camera],
24188
+ methods: {
24189
+ /**
24190
+ * Open a server-side WebRTC audio-only session. Returns an SDP
24191
+ * offer with a single sendonly audio m-line the client answers
24192
+ * (client → server direction). The server wakes battery cams
24193
+ * transparently before opening the upstream talk channel.
24194
+ */
24195
+ startSession: method(object({ deviceId: number() }), object({
24196
+ sessionId: string(),
24197
+ sdpOffer: string()
24198
+ }), {
24199
+ kind: "mutation",
24200
+ auth: "admin"
24201
+ }),
24202
+ handleAnswer: method(object({
24203
+ deviceId: number(),
24204
+ sessionId: string(),
24205
+ sdpAnswer: string()
24206
+ }), _void(), {
24207
+ kind: "mutation",
24208
+ auth: "admin"
24209
+ }),
24210
+ /** Close explicitly. Server also auto-closes on 30s idle. */
24211
+ stopSession: method(object({
24212
+ deviceId: number(),
24213
+ sessionId: string()
24214
+ }), _void(), {
24215
+ kind: "mutation",
24216
+ auth: "admin"
24217
+ }),
24218
+ /**
24219
+ * Open a raw-PCM talk session (no WebRTC SDP plumbing). Used by
24220
+ * non-WebRTC consumers (HomeKit export, Alexa raw audio, test
24221
+ * harnesses) that already have decoded PCM frames and just need a
24222
+ * direct path onto the camera's talk channel. Mutually exclusive
24223
+ * with `startSession` (an active WebRTC session must be stopped
24224
+ * before a raw-PCM session can be opened on the same device, and
24225
+ * vice versa).
24226
+ */
24227
+ startTalkSession: method(object({ deviceId: number() }), object({ sessionId: string() }), {
24228
+ kind: "mutation",
24229
+ auth: "admin"
24230
+ }),
24231
+ /**
24232
+ * Push one chunk of talk-back audio onto the active talk session.
24233
+ * The cap is codec-agnostic: the caller declares (or omits) the
24234
+ * wire format via `codec`; the provider decides between passthrough
24235
+ * (when the wire codec matches the camera's native talk channel),
24236
+ * transcoding via the `audio-codec` cap, or rejecting the call.
24237
+ *
24238
+ * Callers do NOT need to know the camera's wire format or sample
24239
+ * rate — that information lives entirely inside the provider.
24240
+ *
24241
+ * Sequence numbers MUST be monotonic per talk session; older frames
24242
+ * arriving after newer ones are dropped to avoid smearing the
24243
+ * downstream encoder state (G.711 is stateless but IMA ADPCM's
24244
+ * predictor would corrupt with re-ordering).
24245
+ */
24246
+ pushTalkAudio: method(object({
24247
+ deviceId: number(),
24248
+ /** Audio bytes for ONE frame, base64-encoded so the payload
24249
+ * survives tRPC JSON serialization. */
24250
+ audioBase64: string(),
24251
+ /** Wire codec of the payload. Omit to let the provider default
24252
+ * to its native expected format (s16le @ provider-native rate,
24253
+ * mono). See {@link TalkAudioCodecSchema} for the supported set. */
24254
+ codec: TalkAudioCodecSchema.optional(),
24255
+ /** Sample rate (Hz). REQUIRED for `s16le`; advisory for
24256
+ * `opus` (encoder clock); ignored for `g711*` (implied 8000). */
24257
+ sampleRate: number().int().positive().optional(),
24258
+ /** Channel count. Default 1. */
24259
+ channels: number().int().positive().optional(),
24260
+ /** Sequence number for ordering / dropping out-of-order frames. */
24261
+ sequenceNumber: number().int()
24262
+ }), object({ accepted: boolean() }), {
24263
+ kind: "mutation",
24264
+ auth: "admin"
24265
+ }),
24266
+ /** Close the raw-PCM talk session. Idempotent. */
24267
+ endTalkSession: method(object({ deviceId: number() }), _void(), {
24268
+ kind: "mutation",
24269
+ auth: "admin"
24270
+ })
24271
+ },
24272
+ events: { onStatusChanged: { data: object({
24273
+ deviceId: number(),
24274
+ status: IntercomStatusSchema
24275
+ }) } },
24276
+ status: {
24277
+ schema: IntercomStatusSchema,
24278
+ kind: "command-driven"
24279
+ },
24280
+ /**
24281
+ * Runtime-state slice — mirrored by the kernel.
24282
+ *
24283
+ * The cap declared `status` and nothing else, so the only two sources an
24284
+ * exporter has for a value — the `device.state-changed` slice event and the
24285
+ * `deviceState.getAllSnapshots` snapshot, both built from runtime state —
24286
+ * carried nothing for `intercom`. A talk-back entity in Home Assistant would
24287
+ * have been published and never received a value, which is the defect the
24288
+ * export's two classification tables exist to prevent (177 of them, once), so
24289
+ * `intercom` was excluded rather than exported.
24290
+ *
24291
+ * The shape is the status shape: there is exactly one truth about talk-back
24292
+ * and duplicating it into a second schema is how two halves of one capability
24293
+ * come to disagree. Providers write it through
24294
+ * `this.runtimeState.setCapState('intercom', …)` at the four points that open
24295
+ * and close a session, and seed it at registration so the slice exists before
24296
+ * the first session rather than after it.
24297
+ *
24298
+ * **Bound, named rather than hidden:** `talking` mirrors the provider's own
24299
+ * session handle, so a session torn down by a transport death that never
24300
+ * reaches `stopSession` / `endTalkSession` leaves it latched until the next
24301
+ * session or the next restart. That is why the slice is `session` and not
24302
+ * `restored` — a restart must never restore "talking".
24303
+ */
24304
+ runtimeState: IntercomStatusSchema,
24305
+ /**
24306
+ * Runtime-state durability: **session** — `talking` describes a live audio
24307
+ * session, which by definition does not survive the process that held it.
24308
+ * Restoring it would publish a camera as talking to nobody.
24309
+ *
24310
+ * See `RuntimeStateDurability`. Enforced by
24311
+ * `scripts/check-runtime-state-durability.ts`.
24312
+ */
24313
+ durability: "session"
24314
+ };
24064
24315
  /**
24065
24316
  * Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
24066
24317
  * with a mowing lifecycle plus a dock action.
@@ -26791,7 +27042,7 @@ method(object({
26791
27042
  toMs: number()
26792
27043
  }), RecordingAvailabilitySchema, {
26793
27044
  kind: "query",
26794
- auth: "admin"
27045
+ auth: "protected"
26795
27046
  }), method(object({
26796
27047
  deviceId: number(),
26797
27048
  fromMs: number(),
@@ -26799,14 +27050,14 @@ method(object({
26799
27050
  tzOffsetMinutes: number()
26800
27051
  }), RecordingDaysSchema, {
26801
27052
  kind: "query",
26802
- auth: "admin"
27053
+ auth: "protected"
26803
27054
  }), method(object({
26804
27055
  deviceId: number(),
26805
27056
  fromMs: number(),
26806
27057
  toMs: number()
26807
27058
  }), RecordingManifestSchema, {
26808
27059
  kind: "query",
26809
- auth: "admin"
27060
+ auth: "protected"
26810
27061
  }), method(object({}), RecordingStorageUsageSchema, {
26811
27062
  kind: "query",
26812
27063
  auth: "admin"
@@ -29129,6 +29380,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
29129
29380
  humiditySensor: humiditySensorCapability,
29130
29381
  image: imageCapability,
29131
29382
  imageSettings: imageSettingsCapability,
29383
+ intercom: intercomCapability,
29132
29384
  lawnMowerControl: lawnMowerControlCapability,
29133
29385
  lockControl: lockControlCapability,
29134
29386
  mediaPlayer: mediaPlayerCapability,
@@ -35484,6 +35736,1678 @@ Object.freeze({
35484
35736
  access: "create"
35485
35737
  }
35486
35738
  });
35739
+ Object.freeze({
35740
+ "accessories.setChildHidden": [{
35741
+ name: "childDeviceId",
35742
+ form: "single",
35743
+ optional: false
35744
+ }, {
35745
+ name: "deviceId",
35746
+ form: "single",
35747
+ optional: false
35748
+ }],
35749
+ "addonSettings.getDeviceSettings": [{
35750
+ name: "deviceId",
35751
+ form: "single",
35752
+ optional: false
35753
+ }],
35754
+ "addonSettings.updateDeviceSettings": [{
35755
+ name: "deviceId",
35756
+ form: "single",
35757
+ optional: false
35758
+ }],
35759
+ "alarmPanel.arm": [{
35760
+ name: "deviceId",
35761
+ form: "single",
35762
+ optional: false
35763
+ }],
35764
+ "alarmPanel.disarm": [{
35765
+ name: "deviceId",
35766
+ form: "single",
35767
+ optional: false
35768
+ }],
35769
+ "alarmPanel.trigger": [{
35770
+ name: "deviceId",
35771
+ form: "single",
35772
+ optional: false
35773
+ }],
35774
+ "audioAnalysis.resolveDeviceSettings": [{
35775
+ name: "deviceId",
35776
+ form: "single",
35777
+ optional: false
35778
+ }],
35779
+ "audioAnalyzer.classify": [{
35780
+ name: "deviceId",
35781
+ form: "single",
35782
+ optional: true
35783
+ }],
35784
+ "audioMetrics.getCurrentSnapshot": [{
35785
+ name: "deviceId",
35786
+ form: "single",
35787
+ optional: false
35788
+ }],
35789
+ "audioMetrics.getHistory": [{
35790
+ name: "deviceId",
35791
+ form: "single",
35792
+ optional: false
35793
+ }],
35794
+ "automationControl.disable": [{
35795
+ name: "deviceId",
35796
+ form: "single",
35797
+ optional: false
35798
+ }],
35799
+ "automationControl.enable": [{
35800
+ name: "deviceId",
35801
+ form: "single",
35802
+ optional: false
35803
+ }],
35804
+ "automationControl.trigger": [{
35805
+ name: "deviceId",
35806
+ form: "single",
35807
+ optional: false
35808
+ }],
35809
+ "battery.wakeForStream": [{
35810
+ name: "deviceId",
35811
+ form: "single",
35812
+ optional: false
35813
+ }],
35814
+ "brightness.setBrightness": [{
35815
+ name: "deviceId",
35816
+ form: "single",
35817
+ optional: false
35818
+ }],
35819
+ "button.press": [{
35820
+ name: "deviceId",
35821
+ form: "single",
35822
+ optional: false
35823
+ }],
35824
+ "cameraCredentials.getCredentials": [{
35825
+ name: "deviceId",
35826
+ form: "single",
35827
+ optional: false
35828
+ }],
35829
+ "cameraStreams.getBrokerStreams": [{
35830
+ name: "deviceId",
35831
+ form: "single",
35832
+ optional: false
35833
+ }],
35834
+ "cameraStreams.getCameraStreams": [{
35835
+ name: "deviceId",
35836
+ form: "single",
35837
+ optional: false
35838
+ }],
35839
+ "cameraStreams.getProfileRtspEntries": [{
35840
+ name: "deviceId",
35841
+ form: "single",
35842
+ optional: false
35843
+ }],
35844
+ "cameraStreams.getRtspEntries": [{
35845
+ name: "deviceId",
35846
+ form: "single",
35847
+ optional: false
35848
+ }],
35849
+ "cameraStreams.pickStream": [{
35850
+ name: "deviceId",
35851
+ form: "single",
35852
+ optional: false
35853
+ }],
35854
+ "climateControl.setFanMode": [{
35855
+ name: "deviceId",
35856
+ form: "single",
35857
+ optional: false
35858
+ }],
35859
+ "climateControl.setMode": [{
35860
+ name: "deviceId",
35861
+ form: "single",
35862
+ optional: false
35863
+ }],
35864
+ "climateControl.setPreset": [{
35865
+ name: "deviceId",
35866
+ form: "single",
35867
+ optional: false
35868
+ }],
35869
+ "climateControl.setSwingHorizontal": [{
35870
+ name: "deviceId",
35871
+ form: "single",
35872
+ optional: false
35873
+ }],
35874
+ "climateControl.setSwingVertical": [{
35875
+ name: "deviceId",
35876
+ form: "single",
35877
+ optional: false
35878
+ }],
35879
+ "climateControl.setTarget": [{
35880
+ name: "deviceId",
35881
+ form: "single",
35882
+ optional: false
35883
+ }],
35884
+ "climateControl.setTargetHumidity": [{
35885
+ name: "deviceId",
35886
+ form: "single",
35887
+ optional: false
35888
+ }],
35889
+ "climateControl.setTargetRange": [{
35890
+ name: "deviceId",
35891
+ form: "single",
35892
+ optional: false
35893
+ }],
35894
+ "color.setColor": [{
35895
+ name: "deviceId",
35896
+ form: "single",
35897
+ optional: false
35898
+ }],
35899
+ "consumables.reset": [{
35900
+ name: "deviceId",
35901
+ form: "single",
35902
+ optional: false
35903
+ }],
35904
+ "control.setValue": [{
35905
+ name: "deviceId",
35906
+ form: "single",
35907
+ optional: false
35908
+ }],
35909
+ "cover.close": [{
35910
+ name: "deviceId",
35911
+ form: "single",
35912
+ optional: false
35913
+ }],
35914
+ "cover.open": [{
35915
+ name: "deviceId",
35916
+ form: "single",
35917
+ optional: false
35918
+ }],
35919
+ "cover.setPosition": [{
35920
+ name: "deviceId",
35921
+ form: "single",
35922
+ optional: false
35923
+ }],
35924
+ "cover.setTiltPosition": [{
35925
+ name: "deviceId",
35926
+ form: "single",
35927
+ optional: false
35928
+ }],
35929
+ "cover.stop": [{
35930
+ name: "deviceId",
35931
+ form: "single",
35932
+ optional: false
35933
+ }],
35934
+ "dayNight.getOptions": [{
35935
+ name: "deviceId",
35936
+ form: "single",
35937
+ optional: false
35938
+ }],
35939
+ "dayNight.setSettings": [{
35940
+ name: "deviceId",
35941
+ form: "single",
35942
+ optional: false
35943
+ }],
35944
+ "decoder.createSession": [{
35945
+ name: "deviceId",
35946
+ form: "single",
35947
+ optional: true
35948
+ }],
35949
+ "deviceAdoption.release": [{
35950
+ name: "camDeviceId",
35951
+ form: "single",
35952
+ optional: false
35953
+ }],
35954
+ "deviceAdoption.resync": [{
35955
+ name: "camDeviceId",
35956
+ form: "single",
35957
+ optional: false
35958
+ }],
35959
+ "deviceDiscovery.adoptDevice": [{
35960
+ name: "deviceId",
35961
+ form: "single",
35962
+ optional: false
35963
+ }],
35964
+ "deviceDiscovery.listDiscovered": [{
35965
+ name: "deviceId",
35966
+ form: "single",
35967
+ optional: false
35968
+ }],
35969
+ "deviceDiscovery.refreshDiscovery": [{
35970
+ name: "deviceId",
35971
+ form: "single",
35972
+ optional: false
35973
+ }],
35974
+ "deviceDiscovery.releaseDevice": [{
35975
+ name: "childDeviceId",
35976
+ form: "single",
35977
+ optional: false
35978
+ }, {
35979
+ name: "deviceId",
35980
+ form: "single",
35981
+ optional: false
35982
+ }],
35983
+ "deviceManager.adoptionRelease": [{
35984
+ name: "camDeviceId",
35985
+ form: "single",
35986
+ optional: false
35987
+ }],
35988
+ "deviceManager.adoptionResync": [{
35989
+ name: "camDeviceId",
35990
+ form: "single",
35991
+ optional: false
35992
+ }],
35993
+ "deviceManager.applyInitialMeta": [{
35994
+ name: "deviceId",
35995
+ form: "single",
35996
+ optional: false
35997
+ }, {
35998
+ name: "linkDeviceId",
35999
+ form: "single",
36000
+ optional: true
36001
+ }],
36002
+ "deviceManager.disable": [{
36003
+ name: "deviceId",
36004
+ form: "single",
36005
+ optional: false
36006
+ }],
36007
+ "deviceManager.enable": [{
36008
+ name: "deviceId",
36009
+ form: "single",
36010
+ optional: false
36011
+ }],
36012
+ "deviceManager.getBindings": [{
36013
+ name: "deviceId",
36014
+ form: "single",
36015
+ optional: false
36016
+ }],
36017
+ "deviceManager.getChildren": [{
36018
+ name: "parentDeviceId",
36019
+ form: "single",
36020
+ optional: false
36021
+ }],
36022
+ "deviceManager.getConfigSchema": [{
36023
+ name: "deviceId",
36024
+ form: "single",
36025
+ optional: false
36026
+ }],
36027
+ "deviceManager.getDevice": [{
36028
+ name: "deviceId",
36029
+ form: "single",
36030
+ optional: false
36031
+ }],
36032
+ "deviceManager.getDeviceAggregate": [{
36033
+ name: "deviceId",
36034
+ form: "single",
36035
+ optional: false
36036
+ }],
36037
+ "deviceManager.getDeviceLiveInfoAggregate": [{
36038
+ name: "deviceId",
36039
+ form: "single",
36040
+ optional: false
36041
+ }],
36042
+ "deviceManager.getDeviceSettingsAggregate": [{
36043
+ name: "deviceId",
36044
+ form: "single",
36045
+ optional: false
36046
+ }],
36047
+ "deviceManager.getDeviceStatusAggregate": [{
36048
+ name: "deviceId",
36049
+ form: "single",
36050
+ optional: false
36051
+ }],
36052
+ "deviceManager.getDeviceStatusAggregateBatch": [{
36053
+ name: "deviceIds",
36054
+ form: "array",
36055
+ optional: false
36056
+ }],
36057
+ "deviceManager.getLinkedDevices": [{
36058
+ name: "deviceId",
36059
+ form: "single",
36060
+ optional: false
36061
+ }],
36062
+ "deviceManager.getSettingsSchema": [{
36063
+ name: "deviceId",
36064
+ form: "single",
36065
+ optional: false
36066
+ }],
36067
+ "deviceManager.getStreamProfileMap": [{
36068
+ name: "deviceId",
36069
+ form: "single",
36070
+ optional: false
36071
+ }],
36072
+ "deviceManager.getStreamSources": [{
36073
+ name: "deviceId",
36074
+ form: "single",
36075
+ optional: false
36076
+ }],
36077
+ "deviceManager.getWireableFields": [{
36078
+ name: "deviceId",
36079
+ form: "single",
36080
+ optional: false
36081
+ }],
36082
+ "deviceManager.loadConfig": [{
36083
+ name: "deviceId",
36084
+ form: "single",
36085
+ optional: false
36086
+ }],
36087
+ "deviceManager.loadMeta": [{
36088
+ name: "deviceId",
36089
+ form: "single",
36090
+ optional: false
36091
+ }],
36092
+ "deviceManager.loadRuntimeState": [{
36093
+ name: "deviceId",
36094
+ form: "single",
36095
+ optional: false
36096
+ }],
36097
+ "deviceManager.persistConfig": [{
36098
+ name: "deviceId",
36099
+ form: "single",
36100
+ optional: false
36101
+ }],
36102
+ "deviceManager.probeStreams": [{
36103
+ name: "deviceId",
36104
+ form: "single",
36105
+ optional: false
36106
+ }],
36107
+ "deviceManager.registerDevice": [{
36108
+ name: "parentDeviceId",
36109
+ form: "single",
36110
+ optional: true
36111
+ }],
36112
+ "deviceManager.remove": [{
36113
+ name: "deviceId",
36114
+ form: "single",
36115
+ optional: false
36116
+ }],
36117
+ "deviceManager.removeDevice": [{
36118
+ name: "deviceId",
36119
+ form: "single",
36120
+ optional: false
36121
+ }],
36122
+ "deviceManager.runDeviceAction": [{
36123
+ name: "deviceId",
36124
+ form: "single",
36125
+ optional: false
36126
+ }],
36127
+ "deviceManager.setChildLayout": [{
36128
+ name: "deviceId",
36129
+ form: "single",
36130
+ optional: false
36131
+ }],
36132
+ "deviceManager.setDisabled": [{
36133
+ name: "deviceId",
36134
+ form: "single",
36135
+ optional: false
36136
+ }],
36137
+ "deviceManager.setDisplay": [{
36138
+ name: "deviceId",
36139
+ form: "single",
36140
+ optional: false
36141
+ }],
36142
+ "deviceManager.setIntegrationId": [{
36143
+ name: "deviceId",
36144
+ form: "single",
36145
+ optional: false
36146
+ }],
36147
+ "deviceManager.setLinkDeviceId": [{
36148
+ name: "deviceId",
36149
+ form: "single",
36150
+ optional: false
36151
+ }, {
36152
+ name: "linkDeviceId",
36153
+ form: "single",
36154
+ optional: true
36155
+ }],
36156
+ "deviceManager.setLocation": [{
36157
+ name: "deviceId",
36158
+ form: "single",
36159
+ optional: false
36160
+ }],
36161
+ "deviceManager.setMetadata": [{
36162
+ name: "deviceId",
36163
+ form: "single",
36164
+ optional: false
36165
+ }],
36166
+ "deviceManager.setName": [{
36167
+ name: "deviceId",
36168
+ form: "single",
36169
+ optional: false
36170
+ }],
36171
+ "deviceManager.setPrimaryChildEntityId": [{
36172
+ name: "deviceId",
36173
+ form: "single",
36174
+ optional: false
36175
+ }],
36176
+ "deviceManager.setRole": [{
36177
+ name: "deviceId",
36178
+ form: "single",
36179
+ optional: false
36180
+ }],
36181
+ "deviceManager.setStreamProfileMap": [{
36182
+ name: "deviceId",
36183
+ form: "single",
36184
+ optional: false
36185
+ }],
36186
+ "deviceManager.setType": [{
36187
+ name: "deviceId",
36188
+ form: "single",
36189
+ optional: false
36190
+ }],
36191
+ "deviceManager.setWrapperActive": [{
36192
+ name: "deviceId",
36193
+ form: "single",
36194
+ optional: false
36195
+ }],
36196
+ "deviceManager.testField": [{
36197
+ name: "deviceId",
36198
+ form: "single",
36199
+ optional: false
36200
+ }],
36201
+ "deviceManager.updateConfig": [{
36202
+ name: "deviceId",
36203
+ form: "single",
36204
+ optional: false
36205
+ }],
36206
+ "deviceManager.updateDeviceField": [{
36207
+ name: "deviceId",
36208
+ form: "single",
36209
+ optional: false
36210
+ }],
36211
+ "deviceManager.updateDeviceFieldsBatch": [{
36212
+ name: "deviceId",
36213
+ form: "single",
36214
+ optional: false
36215
+ }],
36216
+ "deviceOps.getConfigEntries": [{
36217
+ name: "deviceId",
36218
+ form: "single",
36219
+ optional: false
36220
+ }],
36221
+ "deviceOps.getRawState": [{
36222
+ name: "deviceId",
36223
+ form: "single",
36224
+ optional: false
36225
+ }],
36226
+ "deviceOps.getSettingsSchema": [{
36227
+ name: "deviceId",
36228
+ form: "single",
36229
+ optional: false
36230
+ }],
36231
+ "deviceOps.getStreamSources": [{
36232
+ name: "deviceId",
36233
+ form: "single",
36234
+ optional: false
36235
+ }],
36236
+ "deviceOps.removeDevice": [{
36237
+ name: "deviceId",
36238
+ form: "single",
36239
+ optional: false
36240
+ }],
36241
+ "deviceOps.runAction": [{
36242
+ name: "deviceId",
36243
+ form: "single",
36244
+ optional: false
36245
+ }],
36246
+ "deviceOps.setConfig": [{
36247
+ name: "deviceId",
36248
+ form: "single",
36249
+ optional: false
36250
+ }],
36251
+ "deviceState.getCapSlice": [{
36252
+ name: "deviceId",
36253
+ form: "single",
36254
+ optional: false
36255
+ }],
36256
+ "deviceState.getSnapshot": [{
36257
+ name: "deviceId",
36258
+ form: "single",
36259
+ optional: false
36260
+ }],
36261
+ "deviceState.setCapSlice": [{
36262
+ name: "deviceId",
36263
+ form: "single",
36264
+ optional: false
36265
+ }],
36266
+ "events.getEventClipUrl": [{
36267
+ name: "deviceId",
36268
+ form: "single",
36269
+ optional: false
36270
+ }],
36271
+ "events.getEvents": [{
36272
+ name: "deviceId",
36273
+ form: "single",
36274
+ optional: false
36275
+ }],
36276
+ "events.getEventThumbnail": [{
36277
+ name: "deviceId",
36278
+ form: "single",
36279
+ optional: false
36280
+ }],
36281
+ "faceGallery.getFaceByTrack": [{
36282
+ name: "deviceId",
36283
+ form: "single",
36284
+ optional: false
36285
+ }],
36286
+ "faceGallery.listRecentFaces": [{
36287
+ name: "deviceId",
36288
+ form: "single",
36289
+ optional: true
36290
+ }],
36291
+ "fanControl.setDirection": [{
36292
+ name: "deviceId",
36293
+ form: "single",
36294
+ optional: false
36295
+ }],
36296
+ "fanControl.setOscillating": [{
36297
+ name: "deviceId",
36298
+ form: "single",
36299
+ optional: false
36300
+ }],
36301
+ "fanControl.setPercentage": [{
36302
+ name: "deviceId",
36303
+ form: "single",
36304
+ optional: false
36305
+ }],
36306
+ "fanControl.setPreset": [{
36307
+ name: "deviceId",
36308
+ form: "single",
36309
+ optional: false
36310
+ }],
36311
+ "humidifier.setMode": [{
36312
+ name: "deviceId",
36313
+ form: "single",
36314
+ optional: false
36315
+ }],
36316
+ "humidifier.setOn": [{
36317
+ name: "deviceId",
36318
+ form: "single",
36319
+ optional: false
36320
+ }],
36321
+ "humidifier.setTargetHumidity": [{
36322
+ name: "deviceId",
36323
+ form: "single",
36324
+ optional: false
36325
+ }],
36326
+ "imageSettings.getOptions": [{
36327
+ name: "deviceId",
36328
+ form: "single",
36329
+ optional: false
36330
+ }],
36331
+ "imageSettings.setSettings": [{
36332
+ name: "deviceId",
36333
+ form: "single",
36334
+ optional: false
36335
+ }],
36336
+ "intercom.endTalkSession": [{
36337
+ name: "deviceId",
36338
+ form: "single",
36339
+ optional: false
36340
+ }],
36341
+ "intercom.handleAnswer": [{
36342
+ name: "deviceId",
36343
+ form: "single",
36344
+ optional: false
36345
+ }],
36346
+ "intercom.pushTalkAudio": [{
36347
+ name: "deviceId",
36348
+ form: "single",
36349
+ optional: false
36350
+ }],
36351
+ "intercom.startSession": [{
36352
+ name: "deviceId",
36353
+ form: "single",
36354
+ optional: false
36355
+ }],
36356
+ "intercom.startTalkSession": [{
36357
+ name: "deviceId",
36358
+ form: "single",
36359
+ optional: false
36360
+ }],
36361
+ "intercom.stopSession": [{
36362
+ name: "deviceId",
36363
+ form: "single",
36364
+ optional: false
36365
+ }],
36366
+ "lawnMowerControl.dock": [{
36367
+ name: "deviceId",
36368
+ form: "single",
36369
+ optional: false
36370
+ }],
36371
+ "lawnMowerControl.pause": [{
36372
+ name: "deviceId",
36373
+ form: "single",
36374
+ optional: false
36375
+ }],
36376
+ "lawnMowerControl.startMowing": [{
36377
+ name: "deviceId",
36378
+ form: "single",
36379
+ optional: false
36380
+ }],
36381
+ "lockControl.lock": [{
36382
+ name: "deviceId",
36383
+ form: "single",
36384
+ optional: false
36385
+ }],
36386
+ "lockControl.open": [{
36387
+ name: "deviceId",
36388
+ form: "single",
36389
+ optional: false
36390
+ }],
36391
+ "lockControl.unlock": [{
36392
+ name: "deviceId",
36393
+ form: "single",
36394
+ optional: false
36395
+ }],
36396
+ "mediaPlayer.next": [{
36397
+ name: "deviceId",
36398
+ form: "single",
36399
+ optional: false
36400
+ }],
36401
+ "mediaPlayer.pause": [{
36402
+ name: "deviceId",
36403
+ form: "single",
36404
+ optional: false
36405
+ }],
36406
+ "mediaPlayer.play": [{
36407
+ name: "deviceId",
36408
+ form: "single",
36409
+ optional: false
36410
+ }],
36411
+ "mediaPlayer.playMedia": [{
36412
+ name: "deviceId",
36413
+ form: "single",
36414
+ optional: false
36415
+ }],
36416
+ "mediaPlayer.previous": [{
36417
+ name: "deviceId",
36418
+ form: "single",
36419
+ optional: false
36420
+ }],
36421
+ "mediaPlayer.seek": [{
36422
+ name: "deviceId",
36423
+ form: "single",
36424
+ optional: false
36425
+ }],
36426
+ "mediaPlayer.selectSource": [{
36427
+ name: "deviceId",
36428
+ form: "single",
36429
+ optional: false
36430
+ }],
36431
+ "mediaPlayer.setMute": [{
36432
+ name: "deviceId",
36433
+ form: "single",
36434
+ optional: false
36435
+ }],
36436
+ "mediaPlayer.setRepeat": [{
36437
+ name: "deviceId",
36438
+ form: "single",
36439
+ optional: false
36440
+ }],
36441
+ "mediaPlayer.setShuffle": [{
36442
+ name: "deviceId",
36443
+ form: "single",
36444
+ optional: false
36445
+ }],
36446
+ "mediaPlayer.setVolume": [{
36447
+ name: "deviceId",
36448
+ form: "single",
36449
+ optional: false
36450
+ }],
36451
+ "mediaPlayer.stop": [{
36452
+ name: "deviceId",
36453
+ form: "single",
36454
+ optional: false
36455
+ }],
36456
+ "motion.isDetected": [{
36457
+ name: "deviceId",
36458
+ form: "single",
36459
+ optional: false
36460
+ }],
36461
+ "motionDetection.analyze": [{
36462
+ name: "deviceId",
36463
+ form: "single",
36464
+ optional: false
36465
+ }],
36466
+ "motionDetection.removeCamera": [{
36467
+ name: "deviceId",
36468
+ form: "single",
36469
+ optional: false
36470
+ }],
36471
+ "motionTrigger.setMotionTrigger": [{
36472
+ name: "deviceId",
36473
+ form: "single",
36474
+ optional: false
36475
+ }],
36476
+ "motionZones.getOptions": [{
36477
+ name: "deviceId",
36478
+ form: "single",
36479
+ optional: false
36480
+ }],
36481
+ "motionZones.setZone": [{
36482
+ name: "deviceId",
36483
+ form: "single",
36484
+ optional: false
36485
+ }],
36486
+ "nativeObjectDetection.setEnabled": [{
36487
+ name: "deviceId",
36488
+ form: "single",
36489
+ optional: false
36490
+ }],
36491
+ "networkQuality.getDeviceStats": [{
36492
+ name: "deviceId",
36493
+ form: "single",
36494
+ optional: false
36495
+ }],
36496
+ "networkQuality.reportClientStats": [{
36497
+ name: "deviceId",
36498
+ form: "single",
36499
+ optional: false
36500
+ }],
36501
+ "notificationRules.setDeviceMuted": [{
36502
+ name: "deviceId",
36503
+ form: "single",
36504
+ optional: false
36505
+ }],
36506
+ "notifier.cancel": [{
36507
+ name: "deviceId",
36508
+ form: "single",
36509
+ optional: false
36510
+ }],
36511
+ "notifier.send": [{
36512
+ name: "deviceId",
36513
+ form: "single",
36514
+ optional: false
36515
+ }],
36516
+ "osd.setOverlay": [{
36517
+ name: "deviceId",
36518
+ form: "single",
36519
+ optional: false
36520
+ }],
36521
+ "osdManager.clearSlotBinding": [{
36522
+ name: "deviceId",
36523
+ form: "single",
36524
+ optional: false
36525
+ }],
36526
+ "osdManager.copyDeviceConfiguration": [{
36527
+ name: "sourceDeviceId",
36528
+ form: "single",
36529
+ optional: false
36530
+ }, {
36531
+ name: "targetDeviceId",
36532
+ form: "single",
36533
+ optional: false
36534
+ }],
36535
+ "osdManager.getDeviceOsd": [{
36536
+ name: "deviceId",
36537
+ form: "single",
36538
+ optional: false
36539
+ }],
36540
+ "osdManager.getSourceCatalog": [{
36541
+ name: "deviceId",
36542
+ form: "single",
36543
+ optional: false
36544
+ }],
36545
+ "osdManager.previewSlot": [{
36546
+ name: "deviceId",
36547
+ form: "single",
36548
+ optional: false
36549
+ }],
36550
+ "osdManager.renderDevice": [{
36551
+ name: "deviceId",
36552
+ form: "single",
36553
+ optional: false
36554
+ }],
36555
+ "osdManager.setSlotBinding": [{
36556
+ name: "deviceId",
36557
+ form: "single",
36558
+ optional: false
36559
+ }],
36560
+ "petFeeder.callPet": [{
36561
+ name: "deviceId",
36562
+ form: "single",
36563
+ optional: false
36564
+ }],
36565
+ "petFeeder.cancelFeed": [{
36566
+ name: "deviceId",
36567
+ form: "single",
36568
+ optional: false
36569
+ }],
36570
+ "petFeeder.feed": [{
36571
+ name: "deviceId",
36572
+ form: "single",
36573
+ optional: false
36574
+ }],
36575
+ "petFeeder.markFoodReplenished": [{
36576
+ name: "deviceId",
36577
+ form: "single",
36578
+ optional: false
36579
+ }],
36580
+ "petFeeder.playSound": [{
36581
+ name: "deviceId",
36582
+ form: "single",
36583
+ optional: false
36584
+ }],
36585
+ "petFeeder.resetDesiccant": [{
36586
+ name: "deviceId",
36587
+ form: "single",
36588
+ optional: false
36589
+ }],
36590
+ "petFeeder.setChildLock": [{
36591
+ name: "deviceId",
36592
+ form: "single",
36593
+ optional: false
36594
+ }],
36595
+ "petFeeder.setFeedSound": [{
36596
+ name: "deviceId",
36597
+ form: "single",
36598
+ optional: false
36599
+ }],
36600
+ "petFeeder.setIndicatorLight": [{
36601
+ name: "deviceId",
36602
+ form: "single",
36603
+ optional: false
36604
+ }],
36605
+ "petFeeder.setVolume": [{
36606
+ name: "deviceId",
36607
+ form: "single",
36608
+ optional: false
36609
+ }],
36610
+ "pipelineAnalytics.clearTracks": [{
36611
+ name: "deviceId",
36612
+ form: "single",
36613
+ optional: false
36614
+ }],
36615
+ "pipelineAnalytics.completeRetrainTrack": [{
36616
+ name: "deviceId",
36617
+ form: "single",
36618
+ optional: false
36619
+ }],
36620
+ "pipelineAnalytics.deleteDeviceEvents": [{
36621
+ name: "deviceId",
36622
+ form: "single",
36623
+ optional: false
36624
+ }],
36625
+ "pipelineAnalytics.deleteTracks": [{
36626
+ name: "deviceId",
36627
+ form: "single",
36628
+ optional: false
36629
+ }],
36630
+ "pipelineAnalytics.deselectRetrainFrame": [{
36631
+ name: "deviceId",
36632
+ form: "single",
36633
+ optional: false
36634
+ }],
36635
+ "pipelineAnalytics.getActiveTracks": [{
36636
+ name: "deviceId",
36637
+ form: "single",
36638
+ optional: false
36639
+ }],
36640
+ "pipelineAnalytics.getAudioEvents": [{
36641
+ name: "deviceId",
36642
+ form: "single",
36643
+ optional: false
36644
+ }],
36645
+ "pipelineAnalytics.getEventDensity": [{
36646
+ name: "deviceId",
36647
+ form: "single",
36648
+ optional: false
36649
+ }],
36650
+ "pipelineAnalytics.getKeyEvents": [{
36651
+ name: "deviceId",
36652
+ form: "single",
36653
+ optional: false
36654
+ }],
36655
+ "pipelineAnalytics.getMotionEvents": [{
36656
+ name: "deviceId",
36657
+ form: "single",
36658
+ optional: false
36659
+ }],
36660
+ "pipelineAnalytics.getObjectEvents": [{
36661
+ name: "deviceId",
36662
+ form: "single",
36663
+ optional: false
36664
+ }],
36665
+ "pipelineAnalytics.getRetrainExportUrl": [{
36666
+ name: "deviceIds",
36667
+ form: "array",
36668
+ optional: true
36669
+ }],
36670
+ "pipelineAnalytics.getSensorEvents": [{
36671
+ name: "deviceId",
36672
+ form: "single",
36673
+ optional: false
36674
+ }],
36675
+ "pipelineAnalytics.getTrack": [{
36676
+ name: "deviceId",
36677
+ form: "single",
36678
+ optional: false
36679
+ }],
36680
+ "pipelineAnalytics.getTrainingExportSummary": [{
36681
+ name: "deviceIds",
36682
+ form: "array",
36683
+ optional: true
36684
+ }],
36685
+ "pipelineAnalytics.getTrainingExportUrl": [{
36686
+ name: "deviceIds",
36687
+ form: "array",
36688
+ optional: true
36689
+ }],
36690
+ "pipelineAnalytics.listEventKinds": [{
36691
+ name: "deviceId",
36692
+ form: "single",
36693
+ optional: false
36694
+ }],
36695
+ "pipelineAnalytics.listEventKindsBatch": [{
36696
+ name: "deviceIds",
36697
+ form: "array",
36698
+ optional: false
36699
+ }],
36700
+ "pipelineAnalytics.listOpsLog": [{
36701
+ name: "deviceId",
36702
+ form: "single",
36703
+ optional: true
36704
+ }],
36705
+ "pipelineAnalytics.listRecentTracks": [{
36706
+ name: "deviceIds",
36707
+ form: "array",
36708
+ optional: false
36709
+ }],
36710
+ "pipelineAnalytics.listRetrainStaging": [{
36711
+ name: "deviceIds",
36712
+ form: "array",
36713
+ optional: true
36714
+ }],
36715
+ "pipelineAnalytics.listTracks": [{
36716
+ name: "deviceId",
36717
+ form: "single",
36718
+ optional: false
36719
+ }],
36720
+ "pipelineAnalytics.proposeRetrainAnnotations": [{
36721
+ name: "deviceId",
36722
+ form: "single",
36723
+ optional: false
36724
+ }],
36725
+ "pipelineAnalytics.pruneEventsBefore": [{
36726
+ name: "deviceId",
36727
+ form: "single",
36728
+ optional: false
36729
+ }],
36730
+ "pipelineAnalytics.pruneTracksBefore": [{
36731
+ name: "deviceId",
36732
+ form: "single",
36733
+ optional: false
36734
+ }],
36735
+ "pipelineAnalytics.rebuildObjectEmbeddings": [{
36736
+ name: "deviceId",
36737
+ form: "single",
36738
+ optional: true
36739
+ }],
36740
+ "pipelineAnalytics.restageRetrainTrack": [{
36741
+ name: "deviceId",
36742
+ form: "single",
36743
+ optional: false
36744
+ }],
36745
+ "pipelineAnalytics.saveRetrainAnnotations": [{
36746
+ name: "deviceId",
36747
+ form: "single",
36748
+ optional: false
36749
+ }],
36750
+ "pipelineAnalytics.searchObjectEvents": [{
36751
+ name: "deviceId",
36752
+ form: "single",
36753
+ optional: true
36754
+ }],
36755
+ "pipelineAnalytics.selectRetrainFrames": [{
36756
+ name: "deviceId",
36757
+ form: "single",
36758
+ optional: false
36759
+ }],
36760
+ "pipelineAnalytics.setTrackFlags": [{
36761
+ name: "deviceId",
36762
+ form: "single",
36763
+ optional: false
36764
+ }],
36765
+ "pipelineAnalytics.wipeAllAnalytics": [{
36766
+ name: "deviceId",
36767
+ form: "single",
36768
+ optional: false
36769
+ }],
36770
+ "pipelineExecutor.runPipeline": [{
36771
+ name: "deviceId",
36772
+ form: "single",
36773
+ optional: true
36774
+ }],
36775
+ "pipelineExecutor.runPipelineBatch": [{
36776
+ name: "deviceId",
36777
+ form: "single",
36778
+ optional: true
36779
+ }],
36780
+ "pipelineOrchestrator.assignAudio": [{
36781
+ name: "deviceId",
36782
+ form: "single",
36783
+ optional: false
36784
+ }],
36785
+ "pipelineOrchestrator.assignPipeline": [{
36786
+ name: "deviceId",
36787
+ form: "single",
36788
+ optional: false
36789
+ }],
36790
+ "pipelineOrchestrator.getAudioAssignment": [{
36791
+ name: "deviceId",
36792
+ form: "single",
36793
+ optional: false
36794
+ }],
36795
+ "pipelineOrchestrator.getCameraMetrics": [{
36796
+ name: "deviceId",
36797
+ form: "single",
36798
+ optional: false
36799
+ }],
36800
+ "pipelineOrchestrator.getCameraSettings": [{
36801
+ name: "deviceId",
36802
+ form: "single",
36803
+ optional: false
36804
+ }],
36805
+ "pipelineOrchestrator.getCameraStatus": [{
36806
+ name: "deviceId",
36807
+ form: "single",
36808
+ optional: false
36809
+ }],
36810
+ "pipelineOrchestrator.getCameraStatuses": [{
36811
+ name: "deviceIds",
36812
+ form: "array",
36813
+ optional: true
36814
+ }],
36815
+ "pipelineOrchestrator.getCameraStepOverrides": [{
36816
+ name: "deviceId",
36817
+ form: "single",
36818
+ optional: false
36819
+ }],
36820
+ "pipelineOrchestrator.getCameraSwitches": [{
36821
+ name: "deviceId",
36822
+ form: "single",
36823
+ optional: false
36824
+ }],
36825
+ "pipelineOrchestrator.getPipelineAssignment": [{
36826
+ name: "deviceId",
36827
+ form: "single",
36828
+ optional: false
36829
+ }],
36830
+ "pipelineOrchestrator.getPipelineDevicePin": [{
36831
+ name: "deviceId",
36832
+ form: "single",
36833
+ optional: false
36834
+ }],
36835
+ "pipelineOrchestrator.resolvePipeline": [{
36836
+ name: "deviceId",
36837
+ form: "single",
36838
+ optional: false
36839
+ }],
36840
+ "pipelineOrchestrator.setCameraPipelineForAgent": [{
36841
+ name: "deviceId",
36842
+ form: "single",
36843
+ optional: false
36844
+ }],
36845
+ "pipelineOrchestrator.setCameraStepOverride": [{
36846
+ name: "deviceId",
36847
+ form: "single",
36848
+ optional: false
36849
+ }],
36850
+ "pipelineOrchestrator.setCameraStepToggle": [{
36851
+ name: "deviceId",
36852
+ form: "single",
36853
+ optional: false
36854
+ }],
36855
+ "pipelineOrchestrator.setCameraSwitch": [{
36856
+ name: "deviceId",
36857
+ form: "single",
36858
+ optional: false
36859
+ }],
36860
+ "pipelineOrchestrator.setPipelineDevicePin": [{
36861
+ name: "deviceId",
36862
+ form: "single",
36863
+ optional: false
36864
+ }],
36865
+ "pipelineOrchestrator.unassignAudio": [{
36866
+ name: "deviceId",
36867
+ form: "single",
36868
+ optional: false
36869
+ }],
36870
+ "pipelineOrchestrator.unassignPipeline": [{
36871
+ name: "deviceId",
36872
+ form: "single",
36873
+ optional: false
36874
+ }],
36875
+ "pipelineRunner.attachCamera": [{
36876
+ name: "deviceId",
36877
+ form: "single",
36878
+ optional: false
36879
+ }],
36880
+ "pipelineRunner.detachCamera": [{
36881
+ name: "deviceId",
36882
+ form: "single",
36883
+ optional: false
36884
+ }],
36885
+ "pipelineRunner.getCameraMetrics": [{
36886
+ name: "deviceId",
36887
+ form: "single",
36888
+ optional: false
36889
+ }],
36890
+ "pipelineRunner.reportMotion": [{
36891
+ name: "deviceId",
36892
+ form: "single",
36893
+ optional: false
36894
+ }],
36895
+ "pipelineRunner.runDetailSubtree": [{
36896
+ name: "deviceId",
36897
+ form: "single",
36898
+ optional: false
36899
+ }],
36900
+ "pipelineRunner.runStatelessStep": [{
36901
+ name: "sourceDeviceId",
36902
+ form: "single",
36903
+ optional: false
36904
+ }],
36905
+ "plateGallery.getPlateByTrack": [{
36906
+ name: "deviceId",
36907
+ form: "single",
36908
+ optional: false
36909
+ }],
36910
+ "plateGallery.listPlates": [{
36911
+ name: "deviceId",
36912
+ form: "single",
36913
+ optional: true
36914
+ }],
36915
+ "privacyMask.getOptions": [{
36916
+ name: "deviceId",
36917
+ form: "single",
36918
+ optional: false
36919
+ }],
36920
+ "privacyMask.setAudioEnabled": [{
36921
+ name: "deviceId",
36922
+ form: "single",
36923
+ optional: false
36924
+ }],
36925
+ "privacyMask.setMask": [{
36926
+ name: "deviceId",
36927
+ form: "single",
36928
+ optional: false
36929
+ }],
36930
+ "ptz.continuousMove": [{
36931
+ name: "deviceId",
36932
+ form: "single",
36933
+ optional: false
36934
+ }],
36935
+ "ptz.deletePreset": [{
36936
+ name: "deviceId",
36937
+ form: "single",
36938
+ optional: false
36939
+ }],
36940
+ "ptz.getOptions": [{
36941
+ name: "deviceId",
36942
+ form: "single",
36943
+ optional: false
36944
+ }],
36945
+ "ptz.getPosition": [{
36946
+ name: "deviceId",
36947
+ form: "single",
36948
+ optional: false
36949
+ }],
36950
+ "ptz.getPresets": [{
36951
+ name: "deviceId",
36952
+ form: "single",
36953
+ optional: false
36954
+ }],
36955
+ "ptz.goHome": [{
36956
+ name: "deviceId",
36957
+ form: "single",
36958
+ optional: false
36959
+ }],
36960
+ "ptz.goToPreset": [{
36961
+ name: "deviceId",
36962
+ form: "single",
36963
+ optional: false
36964
+ }],
36965
+ "ptz.move": [{
36966
+ name: "deviceId",
36967
+ form: "single",
36968
+ optional: false
36969
+ }],
36970
+ "ptz.savePreset": [{
36971
+ name: "deviceId",
36972
+ form: "single",
36973
+ optional: false
36974
+ }],
36975
+ "ptz.setAutofocus": [{
36976
+ name: "deviceId",
36977
+ form: "single",
36978
+ optional: false
36979
+ }],
36980
+ "ptz.stop": [{
36981
+ name: "deviceId",
36982
+ form: "single",
36983
+ optional: false
36984
+ }],
36985
+ "ptzAutotrack.getSettings": [{
36986
+ name: "deviceId",
36987
+ form: "single",
36988
+ optional: false
36989
+ }],
36990
+ "ptzAutotrack.getStatus": [{
36991
+ name: "deviceId",
36992
+ form: "single",
36993
+ optional: false
36994
+ }],
36995
+ "ptzAutotrack.setEnabled": [{
36996
+ name: "deviceId",
36997
+ form: "single",
36998
+ optional: false
36999
+ }],
37000
+ "ptzAutotrack.setSettings": [{
37001
+ name: "deviceId",
37002
+ form: "single",
37003
+ optional: false
37004
+ }],
37005
+ "reboot.reboot": [{
37006
+ name: "deviceId",
37007
+ form: "single",
37008
+ optional: false
37009
+ }],
37010
+ "recording.deleteFootprint": [{
37011
+ name: "deviceId",
37012
+ form: "single",
37013
+ optional: false
37014
+ }],
37015
+ "recording.getAvailability": [{
37016
+ name: "deviceId",
37017
+ form: "single",
37018
+ optional: false
37019
+ }],
37020
+ "recording.getDaysWithRecordings": [{
37021
+ name: "deviceId",
37022
+ form: "single",
37023
+ optional: false
37024
+ }],
37025
+ "recording.getDeviceConfig": [{
37026
+ name: "deviceId",
37027
+ form: "single",
37028
+ optional: false
37029
+ }],
37030
+ "recording.getPlaybackManifest": [{
37031
+ name: "deviceId",
37032
+ form: "single",
37033
+ optional: false
37034
+ }],
37035
+ "recording.listOpsLog": [{
37036
+ name: "deviceId",
37037
+ form: "single",
37038
+ optional: true
37039
+ }],
37040
+ "recording.locateSegment": [{
37041
+ name: "deviceId",
37042
+ form: "single",
37043
+ optional: false
37044
+ }],
37045
+ "recording.pruneFootage": [{
37046
+ name: "deviceId",
37047
+ form: "single",
37048
+ optional: false
37049
+ }],
37050
+ "recording.readGopBytes": [{
37051
+ name: "deviceId",
37052
+ form: "single",
37053
+ optional: false
37054
+ }],
37055
+ "recording.readSegmentBytes": [{
37056
+ name: "deviceId",
37057
+ form: "single",
37058
+ optional: false
37059
+ }],
37060
+ "recording.relocateFootage": [{
37061
+ name: "deviceId",
37062
+ form: "single",
37063
+ optional: true
37064
+ }],
37065
+ "recording.renderClip": [{
37066
+ name: "deviceId",
37067
+ form: "single",
37068
+ optional: false
37069
+ }],
37070
+ "recording.renderGif": [{
37071
+ name: "deviceId",
37072
+ form: "single",
37073
+ optional: false
37074
+ }],
37075
+ "recording.rescanStorage": [{
37076
+ name: "deviceId",
37077
+ form: "single",
37078
+ optional: false
37079
+ }],
37080
+ "recording.setDeviceConfig": [{
37081
+ name: "deviceId",
37082
+ form: "single",
37083
+ optional: false
37084
+ }],
37085
+ "recording.startStorageMigrationMove": [{
37086
+ name: "deviceId",
37087
+ form: "single",
37088
+ optional: true
37089
+ }],
37090
+ "recordingExport.createExport": [{
37091
+ name: "deviceId",
37092
+ form: "single",
37093
+ optional: false
37094
+ }],
37095
+ "recordingExport.listExports": [{
37096
+ name: "deviceId",
37097
+ form: "single",
37098
+ optional: true
37099
+ }],
37100
+ "sceneMonitor.captureReference": [{
37101
+ name: "deviceId",
37102
+ form: "single",
37103
+ optional: false
37104
+ }],
37105
+ "sceneMonitor.createScene": [{
37106
+ name: "deviceId",
37107
+ form: "single",
37108
+ optional: false
37109
+ }],
37110
+ "sceneMonitor.deleteReference": [{
37111
+ name: "deviceId",
37112
+ form: "single",
37113
+ optional: false
37114
+ }],
37115
+ "sceneMonitor.deleteScene": [{
37116
+ name: "deviceId",
37117
+ form: "single",
37118
+ optional: false
37119
+ }],
37120
+ "sceneMonitor.listScenes": [{
37121
+ name: "deviceId",
37122
+ form: "single",
37123
+ optional: false
37124
+ }],
37125
+ "sceneMonitor.recheckNow": [{
37126
+ name: "deviceId",
37127
+ form: "single",
37128
+ optional: false
37129
+ }],
37130
+ "sceneMonitor.updateScene": [{
37131
+ name: "deviceId",
37132
+ form: "single",
37133
+ optional: false
37134
+ }],
37135
+ "scriptRunner.run": [{
37136
+ name: "deviceId",
37137
+ form: "single",
37138
+ optional: false
37139
+ }],
37140
+ "scriptRunner.stop": [{
37141
+ name: "deviceId",
37142
+ form: "single",
37143
+ optional: false
37144
+ }],
37145
+ "snapshot.getSnapshot": [{
37146
+ name: "deviceId",
37147
+ form: "single",
37148
+ optional: false
37149
+ }],
37150
+ "snapshot.getSnapshotOverview": [{
37151
+ name: "deviceIds",
37152
+ form: "array",
37153
+ optional: false
37154
+ }],
37155
+ "snapshot.invalidateCache": [{
37156
+ name: "deviceId",
37157
+ form: "single",
37158
+ optional: false
37159
+ }],
37160
+ "streamBroker.acquireEgressTranscode": [{
37161
+ name: "deviceId",
37162
+ form: "single",
37163
+ optional: false
37164
+ }],
37165
+ "streamBroker.assignProfile": [{
37166
+ name: "deviceId",
37167
+ form: "single",
37168
+ optional: false
37169
+ }],
37170
+ "streamBroker.getDeviceAudioMute": [{
37171
+ name: "deviceId",
37172
+ form: "single",
37173
+ optional: false
37174
+ }],
37175
+ "streamBroker.getStreamWithCodec": [{
37176
+ name: "deviceId",
37177
+ form: "single",
37178
+ optional: false
37179
+ }],
37180
+ "streamBroker.produceEventMedia": [{
37181
+ name: "deviceId",
37182
+ form: "single",
37183
+ optional: false
37184
+ }],
37185
+ "streamBroker.publishCameraStream": [{
37186
+ name: "deviceId",
37187
+ form: "single",
37188
+ optional: false
37189
+ }],
37190
+ "streamBroker.renderPreBufferClip": [{
37191
+ name: "deviceId",
37192
+ form: "single",
37193
+ optional: false
37194
+ }],
37195
+ "streamBroker.restartProfile": [{
37196
+ name: "deviceId",
37197
+ form: "single",
37198
+ optional: false
37199
+ }],
37200
+ "streamBroker.retractCameraStream": [{
37201
+ name: "deviceId",
37202
+ form: "single",
37203
+ optional: false
37204
+ }],
37205
+ "streamBroker.setDeviceAudioMute": [{
37206
+ name: "deviceId",
37207
+ form: "single",
37208
+ optional: false
37209
+ }],
37210
+ "streamBroker.unassignProfile": [{
37211
+ name: "deviceId",
37212
+ form: "single",
37213
+ optional: false
37214
+ }],
37215
+ "streamCatalog.getCatalog": [{
37216
+ name: "deviceId",
37217
+ form: "single",
37218
+ optional: false
37219
+ }],
37220
+ "streamParams.getConfigSchema": [{
37221
+ name: "deviceId",
37222
+ form: "single",
37223
+ optional: false
37224
+ }],
37225
+ "streamParams.getOptions": [{
37226
+ name: "deviceId",
37227
+ form: "single",
37228
+ optional: false
37229
+ }],
37230
+ "streamParams.setProfile": [{
37231
+ name: "deviceId",
37232
+ form: "single",
37233
+ optional: false
37234
+ }],
37235
+ "switch.setState": [{
37236
+ name: "deviceId",
37237
+ form: "single",
37238
+ optional: false
37239
+ }],
37240
+ "vacuumControl.locate": [{
37241
+ name: "deviceId",
37242
+ form: "single",
37243
+ optional: false
37244
+ }],
37245
+ "vacuumControl.pause": [{
37246
+ name: "deviceId",
37247
+ form: "single",
37248
+ optional: false
37249
+ }],
37250
+ "vacuumControl.returnToBase": [{
37251
+ name: "deviceId",
37252
+ form: "single",
37253
+ optional: false
37254
+ }],
37255
+ "vacuumControl.setFanSpeed": [{
37256
+ name: "deviceId",
37257
+ form: "single",
37258
+ optional: false
37259
+ }],
37260
+ "vacuumControl.start": [{
37261
+ name: "deviceId",
37262
+ form: "single",
37263
+ optional: false
37264
+ }],
37265
+ "vacuumControl.stop": [{
37266
+ name: "deviceId",
37267
+ form: "single",
37268
+ optional: false
37269
+ }],
37270
+ "valve.close": [{
37271
+ name: "deviceId",
37272
+ form: "single",
37273
+ optional: false
37274
+ }],
37275
+ "valve.open": [{
37276
+ name: "deviceId",
37277
+ form: "single",
37278
+ optional: false
37279
+ }],
37280
+ "valve.setPosition": [{
37281
+ name: "deviceId",
37282
+ form: "single",
37283
+ optional: false
37284
+ }],
37285
+ "valve.stop": [{
37286
+ name: "deviceId",
37287
+ form: "single",
37288
+ optional: false
37289
+ }],
37290
+ "videoclips.getClipPlayback": [{
37291
+ name: "deviceId",
37292
+ form: "single",
37293
+ optional: false
37294
+ }],
37295
+ "videoclips.listClips": [{
37296
+ name: "deviceId",
37297
+ form: "single",
37298
+ optional: false
37299
+ }],
37300
+ "waterHeater.setAway": [{
37301
+ name: "deviceId",
37302
+ form: "single",
37303
+ optional: false
37304
+ }],
37305
+ "waterHeater.setOperationMode": [{
37306
+ name: "deviceId",
37307
+ form: "single",
37308
+ optional: false
37309
+ }],
37310
+ "waterHeater.setTargetTemp": [{
37311
+ name: "deviceId",
37312
+ form: "single",
37313
+ optional: false
37314
+ }],
37315
+ "webrtcSession.addIceCandidate": [{
37316
+ name: "deviceId",
37317
+ form: "single",
37318
+ optional: false
37319
+ }],
37320
+ "webrtcSession.closeSession": [{
37321
+ name: "deviceId",
37322
+ form: "single",
37323
+ optional: false
37324
+ }],
37325
+ "webrtcSession.createSession": [{
37326
+ name: "deviceId",
37327
+ form: "single",
37328
+ optional: false
37329
+ }],
37330
+ "webrtcSession.getIceCandidates": [{
37331
+ name: "deviceId",
37332
+ form: "single",
37333
+ optional: false
37334
+ }],
37335
+ "webrtcSession.getSessionState": [{
37336
+ name: "deviceId",
37337
+ form: "single",
37338
+ optional: false
37339
+ }],
37340
+ "webrtcSession.handleAnswer": [{
37341
+ name: "deviceId",
37342
+ form: "single",
37343
+ optional: false
37344
+ }],
37345
+ "webrtcSession.handleOffer": [{
37346
+ name: "deviceId",
37347
+ form: "single",
37348
+ optional: false
37349
+ }],
37350
+ "webrtcSession.hasAdaptiveBitrate": [{
37351
+ name: "deviceId",
37352
+ form: "single",
37353
+ optional: false
37354
+ }],
37355
+ "webrtcSession.listStreams": [{
37356
+ name: "deviceId",
37357
+ form: "single",
37358
+ optional: false
37359
+ }],
37360
+ "zoneAnalytics.getCameraHistory": [{
37361
+ name: "deviceId",
37362
+ form: "single",
37363
+ optional: false
37364
+ }],
37365
+ "zoneAnalytics.getCurrentSnapshot": [{
37366
+ name: "deviceId",
37367
+ form: "single",
37368
+ optional: false
37369
+ }],
37370
+ "zoneAnalytics.getUnzonedHistory": [{
37371
+ name: "deviceId",
37372
+ form: "single",
37373
+ optional: false
37374
+ }],
37375
+ "zoneAnalytics.getZoneHistory": [{
37376
+ name: "deviceId",
37377
+ form: "single",
37378
+ optional: false
37379
+ }],
37380
+ "zoneRules.listRules": [{
37381
+ name: "deviceId",
37382
+ form: "single",
37383
+ optional: false
37384
+ }],
37385
+ "zoneRules.setRules": [{
37386
+ name: "deviceId",
37387
+ form: "single",
37388
+ optional: false
37389
+ }],
37390
+ "zones.addZone": [{
37391
+ name: "deviceId",
37392
+ form: "single",
37393
+ optional: false
37394
+ }],
37395
+ "zones.listZones": [{
37396
+ name: "deviceId",
37397
+ form: "single",
37398
+ optional: false
37399
+ }],
37400
+ "zones.removeZone": [{
37401
+ name: "deviceId",
37402
+ form: "single",
37403
+ optional: false
37404
+ }],
37405
+ "zones.updateZone": [{
37406
+ name: "deviceId",
37407
+ form: "single",
37408
+ optional: false
37409
+ }]
37410
+ });
35487
37411
  Object.freeze({
35488
37412
  "broker": "broker",
35489
37413
  "device-export": "device-export",
@@ -36037,4 +37961,4 @@ function vectorDimFromBase64(encoded) {
36037
37961
  return Math.floor(Buffer.from(encoded, "base64").byteLength / 4);
36038
37962
  }
36039
37963
  //#endregion
36040
- export { readDeviceStateFrom as $, TimelapseRuleInputSchema as A, customAction as B, NcSnoozeSchema as C, unknown as Ct, RECORDING_EXPORT_MAX_READ_BYTES as D, OpsLogEntrySchema as E, alarmPanelCapability as F, faceGalleryCapability as G, deriveRecordingMode as H, assertTimelapseCadences as I, isScheduleActive as J, hfModelUrl as K, audioMetricsCapability as L, TimelapseRuleSchema as M, TrackSourceSchema as N, RetrainStatusSchema as O, addonWidgetsSourceCapability as P, plateGalleryCapability as Q, buildEventKindDescriptor as R, NcSnoozeInputSchema as S, string as St, NcTaxonomySchema as T, embeddingEncoderCapability as U, defineCustomActions as V, encodeVectorBase64 as W, notificationRulesCapability as X, kebabToCamel as Y, pipelineAnalyticsCapability as Z, NcRuleInputSchema as _, literal as _t, DETECTION_PIPELINE_CAP_NAME as a, errMsg as at, NcRuleTargetSchema as b, partialRecord as bt, EVENT_PAD_MS as c, createEvent as ct, NC_ALARM_SYSTEM_EVENT_KINDS as d, nodePin as dt, readTimelapseGeneratedAt as et, NC_CONDITION_CATALOG as f, sleep as ft, NcConditionDescriptorSchema as g, discriminatedUnion as gt, NC_TAXONOMY as h, boolean as ht, DETECTION_MACRO_CLASSES as i, zoneAnalyticsCapability as it, TimelapseRulePatchSchema as j, TIMELAPSE_DENSE_FLOOR_SEC as k, LabelAttributionSchema as l, hydrateSchema as lt, NC_SNOOZE_MAX_MINUTES as m, array as mt, DEFAULT_EVENT_COLOR as n, vectorDimFromBase64 as nt, DeclaredDevices as o, BaseAddon as ot, NC_DEFAULT_SNOOZE_MINUTES as p, _enum as pt, isDetectionMacroClass as q, DEFAULT_TIMELAPSE_PREVIEW_TEXT as r, videoclipsCapability as rt, EVENT_KIND_BY_CAP as s, DeviceType as st, BaseDevice as t, subKindsOf as tt, MACRO_LABELS as u, isDeviceScopedCap as ut, NcRulePatchSchema as v, number as vt, NcSnoozeSuppressedSchema as w, EventCategory as wt, NcScheduleSchema as x, record as xt, NcRuleSchema as y, object as yt, cosineSimilarity as z };
37964
+ export { plateGalleryCapability as $, TIMELAPSE_DENSE_FLOOR_SEC as A, cosineSimilarity as B, NcSnoozeSchema as C, string as Ct, OpsLogEntrySchema as D, NcTaxonomySchema as E, addonWidgetsSourceCapability as F, encodeVectorBase64 as G, defineCustomActions as H, alarmPanelCapability as I, isDetectionMacroClass as J, faceGalleryCapability as K, assertTimelapseCadences as L, TimelapseRulePatchSchema as M, TimelapseRuleSchema as N, RECORDING_EXPORT_MAX_READ_BYTES as O, TrackSourceSchema as P, pipelineAnalyticsCapability as Q, audioMetricsCapability as R, NcSnoozeInputSchema as S, record as St, NcSystemEventKindSchema as T, EventCategory as Tt, deriveRecordingMode as U, customAction as V, embeddingEncoderCapability as W, kebabToCamel as X, isScheduleActive as Y, notificationRulesCapability as Z, NcRuleInputSchema as _, discriminatedUnion as _t, DETECTION_PIPELINE_CAP_NAME as a, zoneAnalyticsCapability as at, NcRuleTargetSchema as b, object as bt, EVENT_PAD_MS as c, DeviceType as ct, NC_ALARM_SYSTEM_EVENT_KINDS as d, isDeviceScopedCap as dt, readDeviceStateFrom as et, NC_CONDITION_CATALOG as f, nodePin as ft, NcConditionDescriptorSchema as g, boolean as gt, NC_TAXONOMY as h, array as ht, DETECTION_MACRO_CLASSES as i, videoclipsCapability as it, TimelapseRuleInputSchema as j, RetrainStatusSchema as k, LabelAttributionSchema as l, createEvent as lt, NC_SNOOZE_MAX_MINUTES as m, _enum as mt, DEFAULT_EVENT_COLOR as n, subKindsOf as nt, DeclaredDevices as o, errMsg as ot, NC_DEFAULT_SNOOZE_MINUTES as p, sleep as pt, hfModelUrl as q, DEFAULT_TIMELAPSE_PREVIEW_TEXT as r, vectorDimFromBase64 as rt, EVENT_KIND_BY_CAP as s, BaseAddon as st, BaseDevice as t, readTimelapseGeneratedAt as tt, MACRO_LABELS as u, hydrateSchema as ut, NcRulePatchSchema as v, literal as vt, NcSnoozeSuppressedSchema as w, unknown as wt, NcScheduleSchema as x, partialRecord as xt, NcRuleSchema as y, number as yt, buildEventKindDescriptor as z };