@camstack/addon-provider-hikvision 1.2.20 → 1.2.21

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 (3) hide show
  1. package/dist/addon.js +1844 -19
  2. package/dist/addon.mjs +1844 -19
  3. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -3004,6 +3004,9 @@ function handlePipeResult(left, next, ctx) {
3004
3004
  fallback: left.fallback
3005
3005
  }, ctx);
3006
3006
  }
3007
+ var $ZodPreprocess = /*@__PURE__*/ $constructor("$ZodPreprocess", (inst, def) => {
3008
+ $ZodPipe.init(inst, def);
3009
+ });
3007
3010
  var $ZodReadonly = /*@__PURE__*/ $constructor("$ZodReadonly", (inst, def) => {
3008
3011
  $ZodType.init(inst, def);
3009
3012
  defineLazy(inst._zod, "propValues", () => def.innerType._zod.propValues);
@@ -5189,6 +5192,10 @@ function pipe(in_, out) {
5189
5192
  out
5190
5193
  });
5191
5194
  }
5195
+ var ZodPreprocess = /*@__PURE__*/ $constructor("ZodPreprocess", (inst, def) => {
5196
+ ZodPipe.init(inst, def);
5197
+ $ZodPreprocess.init(inst, def);
5198
+ });
5192
5199
  var ZodReadonly = /*@__PURE__*/ $constructor("ZodReadonly", (inst, def) => {
5193
5200
  $ZodReadonly.init(inst, def);
5194
5201
  ZodType.init(inst, def);
@@ -5247,6 +5254,13 @@ function _instanceof(cls, params = {}) {
5247
5254
  };
5248
5255
  return inst;
5249
5256
  }
5257
+ function preprocess(fn, schema) {
5258
+ return new ZodPreprocess({
5259
+ type: "pipe",
5260
+ in: transform(fn),
5261
+ out: schema
5262
+ });
5263
+ }
5250
5264
  //#endregion
5251
5265
  //#region ../../node_modules/zod/v4/classic/compat.js
5252
5266
  /** @deprecated Use the raw string literal codes instead, e.g. "invalid_type". */
@@ -15686,7 +15700,87 @@ var MethodAccessSchema = _enum([
15686
15700
  var AllowedProviderSchema = union([literal("*"), array(string())]);
15687
15701
  var AllowedDevicesSchema = record(string(), union([literal("*"), array(string())]));
15688
15702
  var CapScopeSchema = _enum(["device", "system"]);
15689
- var TokenScopeSchema = discriminatedUnion("type", [
15703
+ /**
15704
+ * DeviceSelector (scope model v3 — 2026-08-12).
15705
+ *
15706
+ * A `device` grant no longer carries a frozen list of deviceIds. It carries
15707
+ * a SELECTOR the matcher resolves against the live fleet, so the grant can be
15708
+ * DYNAMIC: a `types:['camera']` selector automatically covers a camera added
15709
+ * AFTER the grant was minted — no re-grant, no re-login.
15710
+ *
15711
+ * - `all` — every device in the deployment. The broad viewer/operator
15712
+ * lever without a `category` grant (a `category` grant also covers device
15713
+ * caps that carry no deviceId; `all` is specifically the device set).
15714
+ * - `ids` — an explicit deviceId list. This is what a v2 `device:[…]`
15715
+ * grant migrates to (see {@link TokenScopeSchema}); STATIC — a new camera
15716
+ * is NOT covered until the grant is edited.
15717
+ * - `types` — every device of a `DeviceType` (e.g. every `camera`).
15718
+ * DYNAMIC. A device that changes type, or a new device of the type,
15719
+ * re-resolves on the next request.
15720
+ * - `locations` — every device whose operator-assigned `location` label is
15721
+ * in the set (e.g. "Garden", "Front door"). DYNAMIC. A device with a
15722
+ * null/unset location matches NO `locations` selector.
15723
+ */
15724
+ var DeviceSelectorSchema = discriminatedUnion("kind", [
15725
+ object({ kind: literal("all") }),
15726
+ object({
15727
+ kind: literal("ids"),
15728
+ ids: array(number().int()).min(1)
15729
+ }),
15730
+ object({
15731
+ kind: literal("types"),
15732
+ types: array(_enum(DeviceType)).min(1)
15733
+ }),
15734
+ object({
15735
+ kind: literal("locations"),
15736
+ locations: array(string().min(1)).min(1)
15737
+ })
15738
+ ]);
15739
+ var DeviceTokenScopeSchema = object({
15740
+ type: literal("device"),
15741
+ /** The device SET this grant covers — resolved against the live fleet. */
15742
+ selector: DeviceSelectorSchema,
15743
+ access: array(MethodAccessSchema).min(1),
15744
+ /**
15745
+ * Whether a grant on a PARENT device transparently covers its accessory
15746
+ * CHILDREN (siren / floodlight / PIR) via the persisted-parentage walk.
15747
+ * Direction is parent → children ONLY.
15748
+ *
15749
+ * Absent → the matcher DERIVES it from the access flavour: `view`
15750
+ * inherits (a camera viewer sees the camera's accessories), `create` /
15751
+ * `delete` do NOT (actuating/removing a child is an explicit act the
15752
+ * operator must grant on the child, not inherit from the parent). Set it
15753
+ * explicitly to override that default per grant.
15754
+ */
15755
+ includeLinked: boolean().optional()
15756
+ });
15757
+ /**
15758
+ * v2 → v3 lazy migration. A pre-v3 `device` grant carried
15759
+ * `targets: string[]` (stringified deviceIds); it rewrites to the equivalent
15760
+ * `selector: {kind:'ids', ids}`. Applied as a `preprocess` so it runs on
15761
+ * EVERY parse path — stored records AND the JWT-carried scope arrays
15762
+ * normalised at the request boundary ({@link normalizeTokenScopes} in
15763
+ * `device-selector.ts`). Chosen over a one-time DB migration because a
15764
+ * migration cannot reach a JWT already in a client's hands; parse-time
15765
+ * migration covers both without a flag day. No cast — the raw object is read
15766
+ * through `Reflect.get` (its static type is `unknown`).
15767
+ */
15768
+ function migrateLegacyTokenScope(raw) {
15769
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw)) return raw;
15770
+ if (Reflect.get(raw, "type") !== "device") return raw;
15771
+ if (Reflect.get(raw, "selector") !== void 0) return raw;
15772
+ const targets = Reflect.get(raw, "targets");
15773
+ if (!Array.isArray(targets)) return raw;
15774
+ return {
15775
+ type: "device",
15776
+ selector: {
15777
+ kind: "ids",
15778
+ ids: targets.map((t) => typeof t === "string" ? Number(t) : t).filter((n) => typeof n === "number" && Number.isInteger(n))
15779
+ },
15780
+ access: Reflect.get(raw, "access")
15781
+ };
15782
+ }
15783
+ var TokenScopeSchema = preprocess(migrateLegacyTokenScope, discriminatedUnion("type", [
15690
15784
  object({
15691
15785
  type: literal("category"),
15692
15786
  target: CapScopeSchema,
@@ -15702,18 +15796,8 @@ var TokenScopeSchema = discriminatedUnion("type", [
15702
15796
  target: string(),
15703
15797
  access: array(MethodAccessSchema).min(1)
15704
15798
  }),
15705
- object({
15706
- type: literal("device"),
15707
- /**
15708
- * One or more deviceIds (serialised as strings for wire-format
15709
- * consistency with the rest of the union). Matcher accepts if
15710
- * `input.deviceId` ∈ `targets`. Array shape avoids the row-explosion
15711
- * of one scope-per-device when granting access to a set of cameras.
15712
- */
15713
- targets: array(string()).min(1),
15714
- access: array(MethodAccessSchema).min(1)
15715
- })
15716
- ]);
15799
+ DeviceTokenScopeSchema
15800
+ ]));
15717
15801
  object({
15718
15802
  id: string(),
15719
15803
  username: string(),
@@ -17769,7 +17853,7 @@ var detectionFpsField = {
17769
17853
  var occupancyRecheckSecField = {
17770
17854
  min: 0,
17771
17855
  max: 300,
17772
- default: 30,
17856
+ default: 300,
17773
17857
  step: 5
17774
17858
  };
17775
17859
  var occupancyRecheckFramesField = {
@@ -23135,7 +23219,41 @@ var intercomCapability = {
23135
23219
  status: {
23136
23220
  schema: IntercomStatusSchema,
23137
23221
  kind: "command-driven"
23138
- }
23222
+ },
23223
+ /**
23224
+ * Runtime-state slice — mirrored by the kernel.
23225
+ *
23226
+ * The cap declared `status` and nothing else, so the only two sources an
23227
+ * exporter has for a value — the `device.state-changed` slice event and the
23228
+ * `deviceState.getAllSnapshots` snapshot, both built from runtime state —
23229
+ * carried nothing for `intercom`. A talk-back entity in Home Assistant would
23230
+ * have been published and never received a value, which is the defect the
23231
+ * export's two classification tables exist to prevent (177 of them, once), so
23232
+ * `intercom` was excluded rather than exported.
23233
+ *
23234
+ * The shape is the status shape: there is exactly one truth about talk-back
23235
+ * and duplicating it into a second schema is how two halves of one capability
23236
+ * come to disagree. Providers write it through
23237
+ * `this.runtimeState.setCapState('intercom', …)` at the four points that open
23238
+ * and close a session, and seed it at registration so the slice exists before
23239
+ * the first session rather than after it.
23240
+ *
23241
+ * **Bound, named rather than hidden:** `talking` mirrors the provider's own
23242
+ * session handle, so a session torn down by a transport death that never
23243
+ * reaches `stopSession` / `endTalkSession` leaves it latched until the next
23244
+ * session or the next restart. That is why the slice is `session` and not
23245
+ * `restored` — a restart must never restore "talking".
23246
+ */
23247
+ runtimeState: IntercomStatusSchema,
23248
+ /**
23249
+ * Runtime-state durability: **session** — `talking` describes a live audio
23250
+ * session, which by definition does not survive the process that held it.
23251
+ * Restoring it would publish a camera as talking to nobody.
23252
+ *
23253
+ * See `RuntimeStateDurability`. Enforced by
23254
+ * `scripts/check-runtime-state-durability.ts`.
23255
+ */
23256
+ durability: "session"
23139
23257
  };
23140
23258
  /**
23141
23259
  * Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
@@ -25966,7 +26084,7 @@ method(object({
25966
26084
  toMs: number()
25967
26085
  }), RecordingAvailabilitySchema, {
25968
26086
  kind: "query",
25969
- auth: "admin"
26087
+ auth: "protected"
25970
26088
  }), method(object({
25971
26089
  deviceId: number(),
25972
26090
  fromMs: number(),
@@ -25974,14 +26092,14 @@ method(object({
25974
26092
  tzOffsetMinutes: number()
25975
26093
  }), RecordingDaysSchema, {
25976
26094
  kind: "query",
25977
- auth: "admin"
26095
+ auth: "protected"
25978
26096
  }), method(object({
25979
26097
  deviceId: number(),
25980
26098
  fromMs: number(),
25981
26099
  toMs: number()
25982
26100
  }), RecordingManifestSchema, {
25983
26101
  kind: "query",
25984
- auth: "admin"
26102
+ auth: "protected"
25985
26103
  }), method(object({}), RecordingStorageUsageSchema, {
25986
26104
  kind: "query",
25987
26105
  auth: "admin"
@@ -28457,6 +28575,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
28457
28575
  humiditySensor: humiditySensorCapability,
28458
28576
  image: imageCapability,
28459
28577
  imageSettings: imageSettingsCapability,
28578
+ intercom: intercomCapability,
28460
28579
  lawnMowerControl: lawnMowerControlCapability,
28461
28580
  lockControl: lockControlCapability,
28462
28581
  mediaPlayer: mediaPlayerCapability,
@@ -34944,6 +35063,1678 @@ Object.freeze({
34944
35063
  access: "create"
34945
35064
  }
34946
35065
  });
35066
+ Object.freeze({
35067
+ "accessories.setChildHidden": [{
35068
+ name: "childDeviceId",
35069
+ form: "single",
35070
+ optional: false
35071
+ }, {
35072
+ name: "deviceId",
35073
+ form: "single",
35074
+ optional: false
35075
+ }],
35076
+ "addonSettings.getDeviceSettings": [{
35077
+ name: "deviceId",
35078
+ form: "single",
35079
+ optional: false
35080
+ }],
35081
+ "addonSettings.updateDeviceSettings": [{
35082
+ name: "deviceId",
35083
+ form: "single",
35084
+ optional: false
35085
+ }],
35086
+ "alarmPanel.arm": [{
35087
+ name: "deviceId",
35088
+ form: "single",
35089
+ optional: false
35090
+ }],
35091
+ "alarmPanel.disarm": [{
35092
+ name: "deviceId",
35093
+ form: "single",
35094
+ optional: false
35095
+ }],
35096
+ "alarmPanel.trigger": [{
35097
+ name: "deviceId",
35098
+ form: "single",
35099
+ optional: false
35100
+ }],
35101
+ "audioAnalysis.resolveDeviceSettings": [{
35102
+ name: "deviceId",
35103
+ form: "single",
35104
+ optional: false
35105
+ }],
35106
+ "audioAnalyzer.classify": [{
35107
+ name: "deviceId",
35108
+ form: "single",
35109
+ optional: true
35110
+ }],
35111
+ "audioMetrics.getCurrentSnapshot": [{
35112
+ name: "deviceId",
35113
+ form: "single",
35114
+ optional: false
35115
+ }],
35116
+ "audioMetrics.getHistory": [{
35117
+ name: "deviceId",
35118
+ form: "single",
35119
+ optional: false
35120
+ }],
35121
+ "automationControl.disable": [{
35122
+ name: "deviceId",
35123
+ form: "single",
35124
+ optional: false
35125
+ }],
35126
+ "automationControl.enable": [{
35127
+ name: "deviceId",
35128
+ form: "single",
35129
+ optional: false
35130
+ }],
35131
+ "automationControl.trigger": [{
35132
+ name: "deviceId",
35133
+ form: "single",
35134
+ optional: false
35135
+ }],
35136
+ "battery.wakeForStream": [{
35137
+ name: "deviceId",
35138
+ form: "single",
35139
+ optional: false
35140
+ }],
35141
+ "brightness.setBrightness": [{
35142
+ name: "deviceId",
35143
+ form: "single",
35144
+ optional: false
35145
+ }],
35146
+ "button.press": [{
35147
+ name: "deviceId",
35148
+ form: "single",
35149
+ optional: false
35150
+ }],
35151
+ "cameraCredentials.getCredentials": [{
35152
+ name: "deviceId",
35153
+ form: "single",
35154
+ optional: false
35155
+ }],
35156
+ "cameraStreams.getBrokerStreams": [{
35157
+ name: "deviceId",
35158
+ form: "single",
35159
+ optional: false
35160
+ }],
35161
+ "cameraStreams.getCameraStreams": [{
35162
+ name: "deviceId",
35163
+ form: "single",
35164
+ optional: false
35165
+ }],
35166
+ "cameraStreams.getProfileRtspEntries": [{
35167
+ name: "deviceId",
35168
+ form: "single",
35169
+ optional: false
35170
+ }],
35171
+ "cameraStreams.getRtspEntries": [{
35172
+ name: "deviceId",
35173
+ form: "single",
35174
+ optional: false
35175
+ }],
35176
+ "cameraStreams.pickStream": [{
35177
+ name: "deviceId",
35178
+ form: "single",
35179
+ optional: false
35180
+ }],
35181
+ "climateControl.setFanMode": [{
35182
+ name: "deviceId",
35183
+ form: "single",
35184
+ optional: false
35185
+ }],
35186
+ "climateControl.setMode": [{
35187
+ name: "deviceId",
35188
+ form: "single",
35189
+ optional: false
35190
+ }],
35191
+ "climateControl.setPreset": [{
35192
+ name: "deviceId",
35193
+ form: "single",
35194
+ optional: false
35195
+ }],
35196
+ "climateControl.setSwingHorizontal": [{
35197
+ name: "deviceId",
35198
+ form: "single",
35199
+ optional: false
35200
+ }],
35201
+ "climateControl.setSwingVertical": [{
35202
+ name: "deviceId",
35203
+ form: "single",
35204
+ optional: false
35205
+ }],
35206
+ "climateControl.setTarget": [{
35207
+ name: "deviceId",
35208
+ form: "single",
35209
+ optional: false
35210
+ }],
35211
+ "climateControl.setTargetHumidity": [{
35212
+ name: "deviceId",
35213
+ form: "single",
35214
+ optional: false
35215
+ }],
35216
+ "climateControl.setTargetRange": [{
35217
+ name: "deviceId",
35218
+ form: "single",
35219
+ optional: false
35220
+ }],
35221
+ "color.setColor": [{
35222
+ name: "deviceId",
35223
+ form: "single",
35224
+ optional: false
35225
+ }],
35226
+ "consumables.reset": [{
35227
+ name: "deviceId",
35228
+ form: "single",
35229
+ optional: false
35230
+ }],
35231
+ "control.setValue": [{
35232
+ name: "deviceId",
35233
+ form: "single",
35234
+ optional: false
35235
+ }],
35236
+ "cover.close": [{
35237
+ name: "deviceId",
35238
+ form: "single",
35239
+ optional: false
35240
+ }],
35241
+ "cover.open": [{
35242
+ name: "deviceId",
35243
+ form: "single",
35244
+ optional: false
35245
+ }],
35246
+ "cover.setPosition": [{
35247
+ name: "deviceId",
35248
+ form: "single",
35249
+ optional: false
35250
+ }],
35251
+ "cover.setTiltPosition": [{
35252
+ name: "deviceId",
35253
+ form: "single",
35254
+ optional: false
35255
+ }],
35256
+ "cover.stop": [{
35257
+ name: "deviceId",
35258
+ form: "single",
35259
+ optional: false
35260
+ }],
35261
+ "dayNight.getOptions": [{
35262
+ name: "deviceId",
35263
+ form: "single",
35264
+ optional: false
35265
+ }],
35266
+ "dayNight.setSettings": [{
35267
+ name: "deviceId",
35268
+ form: "single",
35269
+ optional: false
35270
+ }],
35271
+ "decoder.createSession": [{
35272
+ name: "deviceId",
35273
+ form: "single",
35274
+ optional: true
35275
+ }],
35276
+ "deviceAdoption.release": [{
35277
+ name: "camDeviceId",
35278
+ form: "single",
35279
+ optional: false
35280
+ }],
35281
+ "deviceAdoption.resync": [{
35282
+ name: "camDeviceId",
35283
+ form: "single",
35284
+ optional: false
35285
+ }],
35286
+ "deviceDiscovery.adoptDevice": [{
35287
+ name: "deviceId",
35288
+ form: "single",
35289
+ optional: false
35290
+ }],
35291
+ "deviceDiscovery.listDiscovered": [{
35292
+ name: "deviceId",
35293
+ form: "single",
35294
+ optional: false
35295
+ }],
35296
+ "deviceDiscovery.refreshDiscovery": [{
35297
+ name: "deviceId",
35298
+ form: "single",
35299
+ optional: false
35300
+ }],
35301
+ "deviceDiscovery.releaseDevice": [{
35302
+ name: "childDeviceId",
35303
+ form: "single",
35304
+ optional: false
35305
+ }, {
35306
+ name: "deviceId",
35307
+ form: "single",
35308
+ optional: false
35309
+ }],
35310
+ "deviceManager.adoptionRelease": [{
35311
+ name: "camDeviceId",
35312
+ form: "single",
35313
+ optional: false
35314
+ }],
35315
+ "deviceManager.adoptionResync": [{
35316
+ name: "camDeviceId",
35317
+ form: "single",
35318
+ optional: false
35319
+ }],
35320
+ "deviceManager.applyInitialMeta": [{
35321
+ name: "deviceId",
35322
+ form: "single",
35323
+ optional: false
35324
+ }, {
35325
+ name: "linkDeviceId",
35326
+ form: "single",
35327
+ optional: true
35328
+ }],
35329
+ "deviceManager.disable": [{
35330
+ name: "deviceId",
35331
+ form: "single",
35332
+ optional: false
35333
+ }],
35334
+ "deviceManager.enable": [{
35335
+ name: "deviceId",
35336
+ form: "single",
35337
+ optional: false
35338
+ }],
35339
+ "deviceManager.getBindings": [{
35340
+ name: "deviceId",
35341
+ form: "single",
35342
+ optional: false
35343
+ }],
35344
+ "deviceManager.getChildren": [{
35345
+ name: "parentDeviceId",
35346
+ form: "single",
35347
+ optional: false
35348
+ }],
35349
+ "deviceManager.getConfigSchema": [{
35350
+ name: "deviceId",
35351
+ form: "single",
35352
+ optional: false
35353
+ }],
35354
+ "deviceManager.getDevice": [{
35355
+ name: "deviceId",
35356
+ form: "single",
35357
+ optional: false
35358
+ }],
35359
+ "deviceManager.getDeviceAggregate": [{
35360
+ name: "deviceId",
35361
+ form: "single",
35362
+ optional: false
35363
+ }],
35364
+ "deviceManager.getDeviceLiveInfoAggregate": [{
35365
+ name: "deviceId",
35366
+ form: "single",
35367
+ optional: false
35368
+ }],
35369
+ "deviceManager.getDeviceSettingsAggregate": [{
35370
+ name: "deviceId",
35371
+ form: "single",
35372
+ optional: false
35373
+ }],
35374
+ "deviceManager.getDeviceStatusAggregate": [{
35375
+ name: "deviceId",
35376
+ form: "single",
35377
+ optional: false
35378
+ }],
35379
+ "deviceManager.getDeviceStatusAggregateBatch": [{
35380
+ name: "deviceIds",
35381
+ form: "array",
35382
+ optional: false
35383
+ }],
35384
+ "deviceManager.getLinkedDevices": [{
35385
+ name: "deviceId",
35386
+ form: "single",
35387
+ optional: false
35388
+ }],
35389
+ "deviceManager.getSettingsSchema": [{
35390
+ name: "deviceId",
35391
+ form: "single",
35392
+ optional: false
35393
+ }],
35394
+ "deviceManager.getStreamProfileMap": [{
35395
+ name: "deviceId",
35396
+ form: "single",
35397
+ optional: false
35398
+ }],
35399
+ "deviceManager.getStreamSources": [{
35400
+ name: "deviceId",
35401
+ form: "single",
35402
+ optional: false
35403
+ }],
35404
+ "deviceManager.getWireableFields": [{
35405
+ name: "deviceId",
35406
+ form: "single",
35407
+ optional: false
35408
+ }],
35409
+ "deviceManager.loadConfig": [{
35410
+ name: "deviceId",
35411
+ form: "single",
35412
+ optional: false
35413
+ }],
35414
+ "deviceManager.loadMeta": [{
35415
+ name: "deviceId",
35416
+ form: "single",
35417
+ optional: false
35418
+ }],
35419
+ "deviceManager.loadRuntimeState": [{
35420
+ name: "deviceId",
35421
+ form: "single",
35422
+ optional: false
35423
+ }],
35424
+ "deviceManager.persistConfig": [{
35425
+ name: "deviceId",
35426
+ form: "single",
35427
+ optional: false
35428
+ }],
35429
+ "deviceManager.probeStreams": [{
35430
+ name: "deviceId",
35431
+ form: "single",
35432
+ optional: false
35433
+ }],
35434
+ "deviceManager.registerDevice": [{
35435
+ name: "parentDeviceId",
35436
+ form: "single",
35437
+ optional: true
35438
+ }],
35439
+ "deviceManager.remove": [{
35440
+ name: "deviceId",
35441
+ form: "single",
35442
+ optional: false
35443
+ }],
35444
+ "deviceManager.removeDevice": [{
35445
+ name: "deviceId",
35446
+ form: "single",
35447
+ optional: false
35448
+ }],
35449
+ "deviceManager.runDeviceAction": [{
35450
+ name: "deviceId",
35451
+ form: "single",
35452
+ optional: false
35453
+ }],
35454
+ "deviceManager.setChildLayout": [{
35455
+ name: "deviceId",
35456
+ form: "single",
35457
+ optional: false
35458
+ }],
35459
+ "deviceManager.setDisabled": [{
35460
+ name: "deviceId",
35461
+ form: "single",
35462
+ optional: false
35463
+ }],
35464
+ "deviceManager.setDisplay": [{
35465
+ name: "deviceId",
35466
+ form: "single",
35467
+ optional: false
35468
+ }],
35469
+ "deviceManager.setIntegrationId": [{
35470
+ name: "deviceId",
35471
+ form: "single",
35472
+ optional: false
35473
+ }],
35474
+ "deviceManager.setLinkDeviceId": [{
35475
+ name: "deviceId",
35476
+ form: "single",
35477
+ optional: false
35478
+ }, {
35479
+ name: "linkDeviceId",
35480
+ form: "single",
35481
+ optional: true
35482
+ }],
35483
+ "deviceManager.setLocation": [{
35484
+ name: "deviceId",
35485
+ form: "single",
35486
+ optional: false
35487
+ }],
35488
+ "deviceManager.setMetadata": [{
35489
+ name: "deviceId",
35490
+ form: "single",
35491
+ optional: false
35492
+ }],
35493
+ "deviceManager.setName": [{
35494
+ name: "deviceId",
35495
+ form: "single",
35496
+ optional: false
35497
+ }],
35498
+ "deviceManager.setPrimaryChildEntityId": [{
35499
+ name: "deviceId",
35500
+ form: "single",
35501
+ optional: false
35502
+ }],
35503
+ "deviceManager.setRole": [{
35504
+ name: "deviceId",
35505
+ form: "single",
35506
+ optional: false
35507
+ }],
35508
+ "deviceManager.setStreamProfileMap": [{
35509
+ name: "deviceId",
35510
+ form: "single",
35511
+ optional: false
35512
+ }],
35513
+ "deviceManager.setType": [{
35514
+ name: "deviceId",
35515
+ form: "single",
35516
+ optional: false
35517
+ }],
35518
+ "deviceManager.setWrapperActive": [{
35519
+ name: "deviceId",
35520
+ form: "single",
35521
+ optional: false
35522
+ }],
35523
+ "deviceManager.testField": [{
35524
+ name: "deviceId",
35525
+ form: "single",
35526
+ optional: false
35527
+ }],
35528
+ "deviceManager.updateConfig": [{
35529
+ name: "deviceId",
35530
+ form: "single",
35531
+ optional: false
35532
+ }],
35533
+ "deviceManager.updateDeviceField": [{
35534
+ name: "deviceId",
35535
+ form: "single",
35536
+ optional: false
35537
+ }],
35538
+ "deviceManager.updateDeviceFieldsBatch": [{
35539
+ name: "deviceId",
35540
+ form: "single",
35541
+ optional: false
35542
+ }],
35543
+ "deviceOps.getConfigEntries": [{
35544
+ name: "deviceId",
35545
+ form: "single",
35546
+ optional: false
35547
+ }],
35548
+ "deviceOps.getRawState": [{
35549
+ name: "deviceId",
35550
+ form: "single",
35551
+ optional: false
35552
+ }],
35553
+ "deviceOps.getSettingsSchema": [{
35554
+ name: "deviceId",
35555
+ form: "single",
35556
+ optional: false
35557
+ }],
35558
+ "deviceOps.getStreamSources": [{
35559
+ name: "deviceId",
35560
+ form: "single",
35561
+ optional: false
35562
+ }],
35563
+ "deviceOps.removeDevice": [{
35564
+ name: "deviceId",
35565
+ form: "single",
35566
+ optional: false
35567
+ }],
35568
+ "deviceOps.runAction": [{
35569
+ name: "deviceId",
35570
+ form: "single",
35571
+ optional: false
35572
+ }],
35573
+ "deviceOps.setConfig": [{
35574
+ name: "deviceId",
35575
+ form: "single",
35576
+ optional: false
35577
+ }],
35578
+ "deviceState.getCapSlice": [{
35579
+ name: "deviceId",
35580
+ form: "single",
35581
+ optional: false
35582
+ }],
35583
+ "deviceState.getSnapshot": [{
35584
+ name: "deviceId",
35585
+ form: "single",
35586
+ optional: false
35587
+ }],
35588
+ "deviceState.setCapSlice": [{
35589
+ name: "deviceId",
35590
+ form: "single",
35591
+ optional: false
35592
+ }],
35593
+ "events.getEventClipUrl": [{
35594
+ name: "deviceId",
35595
+ form: "single",
35596
+ optional: false
35597
+ }],
35598
+ "events.getEvents": [{
35599
+ name: "deviceId",
35600
+ form: "single",
35601
+ optional: false
35602
+ }],
35603
+ "events.getEventThumbnail": [{
35604
+ name: "deviceId",
35605
+ form: "single",
35606
+ optional: false
35607
+ }],
35608
+ "faceGallery.getFaceByTrack": [{
35609
+ name: "deviceId",
35610
+ form: "single",
35611
+ optional: false
35612
+ }],
35613
+ "faceGallery.listRecentFaces": [{
35614
+ name: "deviceId",
35615
+ form: "single",
35616
+ optional: true
35617
+ }],
35618
+ "fanControl.setDirection": [{
35619
+ name: "deviceId",
35620
+ form: "single",
35621
+ optional: false
35622
+ }],
35623
+ "fanControl.setOscillating": [{
35624
+ name: "deviceId",
35625
+ form: "single",
35626
+ optional: false
35627
+ }],
35628
+ "fanControl.setPercentage": [{
35629
+ name: "deviceId",
35630
+ form: "single",
35631
+ optional: false
35632
+ }],
35633
+ "fanControl.setPreset": [{
35634
+ name: "deviceId",
35635
+ form: "single",
35636
+ optional: false
35637
+ }],
35638
+ "humidifier.setMode": [{
35639
+ name: "deviceId",
35640
+ form: "single",
35641
+ optional: false
35642
+ }],
35643
+ "humidifier.setOn": [{
35644
+ name: "deviceId",
35645
+ form: "single",
35646
+ optional: false
35647
+ }],
35648
+ "humidifier.setTargetHumidity": [{
35649
+ name: "deviceId",
35650
+ form: "single",
35651
+ optional: false
35652
+ }],
35653
+ "imageSettings.getOptions": [{
35654
+ name: "deviceId",
35655
+ form: "single",
35656
+ optional: false
35657
+ }],
35658
+ "imageSettings.setSettings": [{
35659
+ name: "deviceId",
35660
+ form: "single",
35661
+ optional: false
35662
+ }],
35663
+ "intercom.endTalkSession": [{
35664
+ name: "deviceId",
35665
+ form: "single",
35666
+ optional: false
35667
+ }],
35668
+ "intercom.handleAnswer": [{
35669
+ name: "deviceId",
35670
+ form: "single",
35671
+ optional: false
35672
+ }],
35673
+ "intercom.pushTalkAudio": [{
35674
+ name: "deviceId",
35675
+ form: "single",
35676
+ optional: false
35677
+ }],
35678
+ "intercom.startSession": [{
35679
+ name: "deviceId",
35680
+ form: "single",
35681
+ optional: false
35682
+ }],
35683
+ "intercom.startTalkSession": [{
35684
+ name: "deviceId",
35685
+ form: "single",
35686
+ optional: false
35687
+ }],
35688
+ "intercom.stopSession": [{
35689
+ name: "deviceId",
35690
+ form: "single",
35691
+ optional: false
35692
+ }],
35693
+ "lawnMowerControl.dock": [{
35694
+ name: "deviceId",
35695
+ form: "single",
35696
+ optional: false
35697
+ }],
35698
+ "lawnMowerControl.pause": [{
35699
+ name: "deviceId",
35700
+ form: "single",
35701
+ optional: false
35702
+ }],
35703
+ "lawnMowerControl.startMowing": [{
35704
+ name: "deviceId",
35705
+ form: "single",
35706
+ optional: false
35707
+ }],
35708
+ "lockControl.lock": [{
35709
+ name: "deviceId",
35710
+ form: "single",
35711
+ optional: false
35712
+ }],
35713
+ "lockControl.open": [{
35714
+ name: "deviceId",
35715
+ form: "single",
35716
+ optional: false
35717
+ }],
35718
+ "lockControl.unlock": [{
35719
+ name: "deviceId",
35720
+ form: "single",
35721
+ optional: false
35722
+ }],
35723
+ "mediaPlayer.next": [{
35724
+ name: "deviceId",
35725
+ form: "single",
35726
+ optional: false
35727
+ }],
35728
+ "mediaPlayer.pause": [{
35729
+ name: "deviceId",
35730
+ form: "single",
35731
+ optional: false
35732
+ }],
35733
+ "mediaPlayer.play": [{
35734
+ name: "deviceId",
35735
+ form: "single",
35736
+ optional: false
35737
+ }],
35738
+ "mediaPlayer.playMedia": [{
35739
+ name: "deviceId",
35740
+ form: "single",
35741
+ optional: false
35742
+ }],
35743
+ "mediaPlayer.previous": [{
35744
+ name: "deviceId",
35745
+ form: "single",
35746
+ optional: false
35747
+ }],
35748
+ "mediaPlayer.seek": [{
35749
+ name: "deviceId",
35750
+ form: "single",
35751
+ optional: false
35752
+ }],
35753
+ "mediaPlayer.selectSource": [{
35754
+ name: "deviceId",
35755
+ form: "single",
35756
+ optional: false
35757
+ }],
35758
+ "mediaPlayer.setMute": [{
35759
+ name: "deviceId",
35760
+ form: "single",
35761
+ optional: false
35762
+ }],
35763
+ "mediaPlayer.setRepeat": [{
35764
+ name: "deviceId",
35765
+ form: "single",
35766
+ optional: false
35767
+ }],
35768
+ "mediaPlayer.setShuffle": [{
35769
+ name: "deviceId",
35770
+ form: "single",
35771
+ optional: false
35772
+ }],
35773
+ "mediaPlayer.setVolume": [{
35774
+ name: "deviceId",
35775
+ form: "single",
35776
+ optional: false
35777
+ }],
35778
+ "mediaPlayer.stop": [{
35779
+ name: "deviceId",
35780
+ form: "single",
35781
+ optional: false
35782
+ }],
35783
+ "motion.isDetected": [{
35784
+ name: "deviceId",
35785
+ form: "single",
35786
+ optional: false
35787
+ }],
35788
+ "motionDetection.analyze": [{
35789
+ name: "deviceId",
35790
+ form: "single",
35791
+ optional: false
35792
+ }],
35793
+ "motionDetection.removeCamera": [{
35794
+ name: "deviceId",
35795
+ form: "single",
35796
+ optional: false
35797
+ }],
35798
+ "motionTrigger.setMotionTrigger": [{
35799
+ name: "deviceId",
35800
+ form: "single",
35801
+ optional: false
35802
+ }],
35803
+ "motionZones.getOptions": [{
35804
+ name: "deviceId",
35805
+ form: "single",
35806
+ optional: false
35807
+ }],
35808
+ "motionZones.setZone": [{
35809
+ name: "deviceId",
35810
+ form: "single",
35811
+ optional: false
35812
+ }],
35813
+ "nativeObjectDetection.setEnabled": [{
35814
+ name: "deviceId",
35815
+ form: "single",
35816
+ optional: false
35817
+ }],
35818
+ "networkQuality.getDeviceStats": [{
35819
+ name: "deviceId",
35820
+ form: "single",
35821
+ optional: false
35822
+ }],
35823
+ "networkQuality.reportClientStats": [{
35824
+ name: "deviceId",
35825
+ form: "single",
35826
+ optional: false
35827
+ }],
35828
+ "notificationRules.setDeviceMuted": [{
35829
+ name: "deviceId",
35830
+ form: "single",
35831
+ optional: false
35832
+ }],
35833
+ "notifier.cancel": [{
35834
+ name: "deviceId",
35835
+ form: "single",
35836
+ optional: false
35837
+ }],
35838
+ "notifier.send": [{
35839
+ name: "deviceId",
35840
+ form: "single",
35841
+ optional: false
35842
+ }],
35843
+ "osd.setOverlay": [{
35844
+ name: "deviceId",
35845
+ form: "single",
35846
+ optional: false
35847
+ }],
35848
+ "osdManager.clearSlotBinding": [{
35849
+ name: "deviceId",
35850
+ form: "single",
35851
+ optional: false
35852
+ }],
35853
+ "osdManager.copyDeviceConfiguration": [{
35854
+ name: "sourceDeviceId",
35855
+ form: "single",
35856
+ optional: false
35857
+ }, {
35858
+ name: "targetDeviceId",
35859
+ form: "single",
35860
+ optional: false
35861
+ }],
35862
+ "osdManager.getDeviceOsd": [{
35863
+ name: "deviceId",
35864
+ form: "single",
35865
+ optional: false
35866
+ }],
35867
+ "osdManager.getSourceCatalog": [{
35868
+ name: "deviceId",
35869
+ form: "single",
35870
+ optional: false
35871
+ }],
35872
+ "osdManager.previewSlot": [{
35873
+ name: "deviceId",
35874
+ form: "single",
35875
+ optional: false
35876
+ }],
35877
+ "osdManager.renderDevice": [{
35878
+ name: "deviceId",
35879
+ form: "single",
35880
+ optional: false
35881
+ }],
35882
+ "osdManager.setSlotBinding": [{
35883
+ name: "deviceId",
35884
+ form: "single",
35885
+ optional: false
35886
+ }],
35887
+ "petFeeder.callPet": [{
35888
+ name: "deviceId",
35889
+ form: "single",
35890
+ optional: false
35891
+ }],
35892
+ "petFeeder.cancelFeed": [{
35893
+ name: "deviceId",
35894
+ form: "single",
35895
+ optional: false
35896
+ }],
35897
+ "petFeeder.feed": [{
35898
+ name: "deviceId",
35899
+ form: "single",
35900
+ optional: false
35901
+ }],
35902
+ "petFeeder.markFoodReplenished": [{
35903
+ name: "deviceId",
35904
+ form: "single",
35905
+ optional: false
35906
+ }],
35907
+ "petFeeder.playSound": [{
35908
+ name: "deviceId",
35909
+ form: "single",
35910
+ optional: false
35911
+ }],
35912
+ "petFeeder.resetDesiccant": [{
35913
+ name: "deviceId",
35914
+ form: "single",
35915
+ optional: false
35916
+ }],
35917
+ "petFeeder.setChildLock": [{
35918
+ name: "deviceId",
35919
+ form: "single",
35920
+ optional: false
35921
+ }],
35922
+ "petFeeder.setFeedSound": [{
35923
+ name: "deviceId",
35924
+ form: "single",
35925
+ optional: false
35926
+ }],
35927
+ "petFeeder.setIndicatorLight": [{
35928
+ name: "deviceId",
35929
+ form: "single",
35930
+ optional: false
35931
+ }],
35932
+ "petFeeder.setVolume": [{
35933
+ name: "deviceId",
35934
+ form: "single",
35935
+ optional: false
35936
+ }],
35937
+ "pipelineAnalytics.clearTracks": [{
35938
+ name: "deviceId",
35939
+ form: "single",
35940
+ optional: false
35941
+ }],
35942
+ "pipelineAnalytics.completeRetrainTrack": [{
35943
+ name: "deviceId",
35944
+ form: "single",
35945
+ optional: false
35946
+ }],
35947
+ "pipelineAnalytics.deleteDeviceEvents": [{
35948
+ name: "deviceId",
35949
+ form: "single",
35950
+ optional: false
35951
+ }],
35952
+ "pipelineAnalytics.deleteTracks": [{
35953
+ name: "deviceId",
35954
+ form: "single",
35955
+ optional: false
35956
+ }],
35957
+ "pipelineAnalytics.deselectRetrainFrame": [{
35958
+ name: "deviceId",
35959
+ form: "single",
35960
+ optional: false
35961
+ }],
35962
+ "pipelineAnalytics.getActiveTracks": [{
35963
+ name: "deviceId",
35964
+ form: "single",
35965
+ optional: false
35966
+ }],
35967
+ "pipelineAnalytics.getAudioEvents": [{
35968
+ name: "deviceId",
35969
+ form: "single",
35970
+ optional: false
35971
+ }],
35972
+ "pipelineAnalytics.getEventDensity": [{
35973
+ name: "deviceId",
35974
+ form: "single",
35975
+ optional: false
35976
+ }],
35977
+ "pipelineAnalytics.getKeyEvents": [{
35978
+ name: "deviceId",
35979
+ form: "single",
35980
+ optional: false
35981
+ }],
35982
+ "pipelineAnalytics.getMotionEvents": [{
35983
+ name: "deviceId",
35984
+ form: "single",
35985
+ optional: false
35986
+ }],
35987
+ "pipelineAnalytics.getObjectEvents": [{
35988
+ name: "deviceId",
35989
+ form: "single",
35990
+ optional: false
35991
+ }],
35992
+ "pipelineAnalytics.getRetrainExportUrl": [{
35993
+ name: "deviceIds",
35994
+ form: "array",
35995
+ optional: true
35996
+ }],
35997
+ "pipelineAnalytics.getSensorEvents": [{
35998
+ name: "deviceId",
35999
+ form: "single",
36000
+ optional: false
36001
+ }],
36002
+ "pipelineAnalytics.getTrack": [{
36003
+ name: "deviceId",
36004
+ form: "single",
36005
+ optional: false
36006
+ }],
36007
+ "pipelineAnalytics.getTrainingExportSummary": [{
36008
+ name: "deviceIds",
36009
+ form: "array",
36010
+ optional: true
36011
+ }],
36012
+ "pipelineAnalytics.getTrainingExportUrl": [{
36013
+ name: "deviceIds",
36014
+ form: "array",
36015
+ optional: true
36016
+ }],
36017
+ "pipelineAnalytics.listEventKinds": [{
36018
+ name: "deviceId",
36019
+ form: "single",
36020
+ optional: false
36021
+ }],
36022
+ "pipelineAnalytics.listEventKindsBatch": [{
36023
+ name: "deviceIds",
36024
+ form: "array",
36025
+ optional: false
36026
+ }],
36027
+ "pipelineAnalytics.listOpsLog": [{
36028
+ name: "deviceId",
36029
+ form: "single",
36030
+ optional: true
36031
+ }],
36032
+ "pipelineAnalytics.listRecentTracks": [{
36033
+ name: "deviceIds",
36034
+ form: "array",
36035
+ optional: false
36036
+ }],
36037
+ "pipelineAnalytics.listRetrainStaging": [{
36038
+ name: "deviceIds",
36039
+ form: "array",
36040
+ optional: true
36041
+ }],
36042
+ "pipelineAnalytics.listTracks": [{
36043
+ name: "deviceId",
36044
+ form: "single",
36045
+ optional: false
36046
+ }],
36047
+ "pipelineAnalytics.proposeRetrainAnnotations": [{
36048
+ name: "deviceId",
36049
+ form: "single",
36050
+ optional: false
36051
+ }],
36052
+ "pipelineAnalytics.pruneEventsBefore": [{
36053
+ name: "deviceId",
36054
+ form: "single",
36055
+ optional: false
36056
+ }],
36057
+ "pipelineAnalytics.pruneTracksBefore": [{
36058
+ name: "deviceId",
36059
+ form: "single",
36060
+ optional: false
36061
+ }],
36062
+ "pipelineAnalytics.rebuildObjectEmbeddings": [{
36063
+ name: "deviceId",
36064
+ form: "single",
36065
+ optional: true
36066
+ }],
36067
+ "pipelineAnalytics.restageRetrainTrack": [{
36068
+ name: "deviceId",
36069
+ form: "single",
36070
+ optional: false
36071
+ }],
36072
+ "pipelineAnalytics.saveRetrainAnnotations": [{
36073
+ name: "deviceId",
36074
+ form: "single",
36075
+ optional: false
36076
+ }],
36077
+ "pipelineAnalytics.searchObjectEvents": [{
36078
+ name: "deviceId",
36079
+ form: "single",
36080
+ optional: true
36081
+ }],
36082
+ "pipelineAnalytics.selectRetrainFrames": [{
36083
+ name: "deviceId",
36084
+ form: "single",
36085
+ optional: false
36086
+ }],
36087
+ "pipelineAnalytics.setTrackFlags": [{
36088
+ name: "deviceId",
36089
+ form: "single",
36090
+ optional: false
36091
+ }],
36092
+ "pipelineAnalytics.wipeAllAnalytics": [{
36093
+ name: "deviceId",
36094
+ form: "single",
36095
+ optional: false
36096
+ }],
36097
+ "pipelineExecutor.runPipeline": [{
36098
+ name: "deviceId",
36099
+ form: "single",
36100
+ optional: true
36101
+ }],
36102
+ "pipelineExecutor.runPipelineBatch": [{
36103
+ name: "deviceId",
36104
+ form: "single",
36105
+ optional: true
36106
+ }],
36107
+ "pipelineOrchestrator.assignAudio": [{
36108
+ name: "deviceId",
36109
+ form: "single",
36110
+ optional: false
36111
+ }],
36112
+ "pipelineOrchestrator.assignPipeline": [{
36113
+ name: "deviceId",
36114
+ form: "single",
36115
+ optional: false
36116
+ }],
36117
+ "pipelineOrchestrator.getAudioAssignment": [{
36118
+ name: "deviceId",
36119
+ form: "single",
36120
+ optional: false
36121
+ }],
36122
+ "pipelineOrchestrator.getCameraMetrics": [{
36123
+ name: "deviceId",
36124
+ form: "single",
36125
+ optional: false
36126
+ }],
36127
+ "pipelineOrchestrator.getCameraSettings": [{
36128
+ name: "deviceId",
36129
+ form: "single",
36130
+ optional: false
36131
+ }],
36132
+ "pipelineOrchestrator.getCameraStatus": [{
36133
+ name: "deviceId",
36134
+ form: "single",
36135
+ optional: false
36136
+ }],
36137
+ "pipelineOrchestrator.getCameraStatuses": [{
36138
+ name: "deviceIds",
36139
+ form: "array",
36140
+ optional: true
36141
+ }],
36142
+ "pipelineOrchestrator.getCameraStepOverrides": [{
36143
+ name: "deviceId",
36144
+ form: "single",
36145
+ optional: false
36146
+ }],
36147
+ "pipelineOrchestrator.getCameraSwitches": [{
36148
+ name: "deviceId",
36149
+ form: "single",
36150
+ optional: false
36151
+ }],
36152
+ "pipelineOrchestrator.getPipelineAssignment": [{
36153
+ name: "deviceId",
36154
+ form: "single",
36155
+ optional: false
36156
+ }],
36157
+ "pipelineOrchestrator.getPipelineDevicePin": [{
36158
+ name: "deviceId",
36159
+ form: "single",
36160
+ optional: false
36161
+ }],
36162
+ "pipelineOrchestrator.resolvePipeline": [{
36163
+ name: "deviceId",
36164
+ form: "single",
36165
+ optional: false
36166
+ }],
36167
+ "pipelineOrchestrator.setCameraPipelineForAgent": [{
36168
+ name: "deviceId",
36169
+ form: "single",
36170
+ optional: false
36171
+ }],
36172
+ "pipelineOrchestrator.setCameraStepOverride": [{
36173
+ name: "deviceId",
36174
+ form: "single",
36175
+ optional: false
36176
+ }],
36177
+ "pipelineOrchestrator.setCameraStepToggle": [{
36178
+ name: "deviceId",
36179
+ form: "single",
36180
+ optional: false
36181
+ }],
36182
+ "pipelineOrchestrator.setCameraSwitch": [{
36183
+ name: "deviceId",
36184
+ form: "single",
36185
+ optional: false
36186
+ }],
36187
+ "pipelineOrchestrator.setPipelineDevicePin": [{
36188
+ name: "deviceId",
36189
+ form: "single",
36190
+ optional: false
36191
+ }],
36192
+ "pipelineOrchestrator.unassignAudio": [{
36193
+ name: "deviceId",
36194
+ form: "single",
36195
+ optional: false
36196
+ }],
36197
+ "pipelineOrchestrator.unassignPipeline": [{
36198
+ name: "deviceId",
36199
+ form: "single",
36200
+ optional: false
36201
+ }],
36202
+ "pipelineRunner.attachCamera": [{
36203
+ name: "deviceId",
36204
+ form: "single",
36205
+ optional: false
36206
+ }],
36207
+ "pipelineRunner.detachCamera": [{
36208
+ name: "deviceId",
36209
+ form: "single",
36210
+ optional: false
36211
+ }],
36212
+ "pipelineRunner.getCameraMetrics": [{
36213
+ name: "deviceId",
36214
+ form: "single",
36215
+ optional: false
36216
+ }],
36217
+ "pipelineRunner.reportMotion": [{
36218
+ name: "deviceId",
36219
+ form: "single",
36220
+ optional: false
36221
+ }],
36222
+ "pipelineRunner.runDetailSubtree": [{
36223
+ name: "deviceId",
36224
+ form: "single",
36225
+ optional: false
36226
+ }],
36227
+ "pipelineRunner.runStatelessStep": [{
36228
+ name: "sourceDeviceId",
36229
+ form: "single",
36230
+ optional: false
36231
+ }],
36232
+ "plateGallery.getPlateByTrack": [{
36233
+ name: "deviceId",
36234
+ form: "single",
36235
+ optional: false
36236
+ }],
36237
+ "plateGallery.listPlates": [{
36238
+ name: "deviceId",
36239
+ form: "single",
36240
+ optional: true
36241
+ }],
36242
+ "privacyMask.getOptions": [{
36243
+ name: "deviceId",
36244
+ form: "single",
36245
+ optional: false
36246
+ }],
36247
+ "privacyMask.setAudioEnabled": [{
36248
+ name: "deviceId",
36249
+ form: "single",
36250
+ optional: false
36251
+ }],
36252
+ "privacyMask.setMask": [{
36253
+ name: "deviceId",
36254
+ form: "single",
36255
+ optional: false
36256
+ }],
36257
+ "ptz.continuousMove": [{
36258
+ name: "deviceId",
36259
+ form: "single",
36260
+ optional: false
36261
+ }],
36262
+ "ptz.deletePreset": [{
36263
+ name: "deviceId",
36264
+ form: "single",
36265
+ optional: false
36266
+ }],
36267
+ "ptz.getOptions": [{
36268
+ name: "deviceId",
36269
+ form: "single",
36270
+ optional: false
36271
+ }],
36272
+ "ptz.getPosition": [{
36273
+ name: "deviceId",
36274
+ form: "single",
36275
+ optional: false
36276
+ }],
36277
+ "ptz.getPresets": [{
36278
+ name: "deviceId",
36279
+ form: "single",
36280
+ optional: false
36281
+ }],
36282
+ "ptz.goHome": [{
36283
+ name: "deviceId",
36284
+ form: "single",
36285
+ optional: false
36286
+ }],
36287
+ "ptz.goToPreset": [{
36288
+ name: "deviceId",
36289
+ form: "single",
36290
+ optional: false
36291
+ }],
36292
+ "ptz.move": [{
36293
+ name: "deviceId",
36294
+ form: "single",
36295
+ optional: false
36296
+ }],
36297
+ "ptz.savePreset": [{
36298
+ name: "deviceId",
36299
+ form: "single",
36300
+ optional: false
36301
+ }],
36302
+ "ptz.setAutofocus": [{
36303
+ name: "deviceId",
36304
+ form: "single",
36305
+ optional: false
36306
+ }],
36307
+ "ptz.stop": [{
36308
+ name: "deviceId",
36309
+ form: "single",
36310
+ optional: false
36311
+ }],
36312
+ "ptzAutotrack.getSettings": [{
36313
+ name: "deviceId",
36314
+ form: "single",
36315
+ optional: false
36316
+ }],
36317
+ "ptzAutotrack.getStatus": [{
36318
+ name: "deviceId",
36319
+ form: "single",
36320
+ optional: false
36321
+ }],
36322
+ "ptzAutotrack.setEnabled": [{
36323
+ name: "deviceId",
36324
+ form: "single",
36325
+ optional: false
36326
+ }],
36327
+ "ptzAutotrack.setSettings": [{
36328
+ name: "deviceId",
36329
+ form: "single",
36330
+ optional: false
36331
+ }],
36332
+ "reboot.reboot": [{
36333
+ name: "deviceId",
36334
+ form: "single",
36335
+ optional: false
36336
+ }],
36337
+ "recording.deleteFootprint": [{
36338
+ name: "deviceId",
36339
+ form: "single",
36340
+ optional: false
36341
+ }],
36342
+ "recording.getAvailability": [{
36343
+ name: "deviceId",
36344
+ form: "single",
36345
+ optional: false
36346
+ }],
36347
+ "recording.getDaysWithRecordings": [{
36348
+ name: "deviceId",
36349
+ form: "single",
36350
+ optional: false
36351
+ }],
36352
+ "recording.getDeviceConfig": [{
36353
+ name: "deviceId",
36354
+ form: "single",
36355
+ optional: false
36356
+ }],
36357
+ "recording.getPlaybackManifest": [{
36358
+ name: "deviceId",
36359
+ form: "single",
36360
+ optional: false
36361
+ }],
36362
+ "recording.listOpsLog": [{
36363
+ name: "deviceId",
36364
+ form: "single",
36365
+ optional: true
36366
+ }],
36367
+ "recording.locateSegment": [{
36368
+ name: "deviceId",
36369
+ form: "single",
36370
+ optional: false
36371
+ }],
36372
+ "recording.pruneFootage": [{
36373
+ name: "deviceId",
36374
+ form: "single",
36375
+ optional: false
36376
+ }],
36377
+ "recording.readGopBytes": [{
36378
+ name: "deviceId",
36379
+ form: "single",
36380
+ optional: false
36381
+ }],
36382
+ "recording.readSegmentBytes": [{
36383
+ name: "deviceId",
36384
+ form: "single",
36385
+ optional: false
36386
+ }],
36387
+ "recording.relocateFootage": [{
36388
+ name: "deviceId",
36389
+ form: "single",
36390
+ optional: true
36391
+ }],
36392
+ "recording.renderClip": [{
36393
+ name: "deviceId",
36394
+ form: "single",
36395
+ optional: false
36396
+ }],
36397
+ "recording.renderGif": [{
36398
+ name: "deviceId",
36399
+ form: "single",
36400
+ optional: false
36401
+ }],
36402
+ "recording.rescanStorage": [{
36403
+ name: "deviceId",
36404
+ form: "single",
36405
+ optional: false
36406
+ }],
36407
+ "recording.setDeviceConfig": [{
36408
+ name: "deviceId",
36409
+ form: "single",
36410
+ optional: false
36411
+ }],
36412
+ "recording.startStorageMigrationMove": [{
36413
+ name: "deviceId",
36414
+ form: "single",
36415
+ optional: true
36416
+ }],
36417
+ "recordingExport.createExport": [{
36418
+ name: "deviceId",
36419
+ form: "single",
36420
+ optional: false
36421
+ }],
36422
+ "recordingExport.listExports": [{
36423
+ name: "deviceId",
36424
+ form: "single",
36425
+ optional: true
36426
+ }],
36427
+ "sceneMonitor.captureReference": [{
36428
+ name: "deviceId",
36429
+ form: "single",
36430
+ optional: false
36431
+ }],
36432
+ "sceneMonitor.createScene": [{
36433
+ name: "deviceId",
36434
+ form: "single",
36435
+ optional: false
36436
+ }],
36437
+ "sceneMonitor.deleteReference": [{
36438
+ name: "deviceId",
36439
+ form: "single",
36440
+ optional: false
36441
+ }],
36442
+ "sceneMonitor.deleteScene": [{
36443
+ name: "deviceId",
36444
+ form: "single",
36445
+ optional: false
36446
+ }],
36447
+ "sceneMonitor.listScenes": [{
36448
+ name: "deviceId",
36449
+ form: "single",
36450
+ optional: false
36451
+ }],
36452
+ "sceneMonitor.recheckNow": [{
36453
+ name: "deviceId",
36454
+ form: "single",
36455
+ optional: false
36456
+ }],
36457
+ "sceneMonitor.updateScene": [{
36458
+ name: "deviceId",
36459
+ form: "single",
36460
+ optional: false
36461
+ }],
36462
+ "scriptRunner.run": [{
36463
+ name: "deviceId",
36464
+ form: "single",
36465
+ optional: false
36466
+ }],
36467
+ "scriptRunner.stop": [{
36468
+ name: "deviceId",
36469
+ form: "single",
36470
+ optional: false
36471
+ }],
36472
+ "snapshot.getSnapshot": [{
36473
+ name: "deviceId",
36474
+ form: "single",
36475
+ optional: false
36476
+ }],
36477
+ "snapshot.getSnapshotOverview": [{
36478
+ name: "deviceIds",
36479
+ form: "array",
36480
+ optional: false
36481
+ }],
36482
+ "snapshot.invalidateCache": [{
36483
+ name: "deviceId",
36484
+ form: "single",
36485
+ optional: false
36486
+ }],
36487
+ "streamBroker.acquireEgressTranscode": [{
36488
+ name: "deviceId",
36489
+ form: "single",
36490
+ optional: false
36491
+ }],
36492
+ "streamBroker.assignProfile": [{
36493
+ name: "deviceId",
36494
+ form: "single",
36495
+ optional: false
36496
+ }],
36497
+ "streamBroker.getDeviceAudioMute": [{
36498
+ name: "deviceId",
36499
+ form: "single",
36500
+ optional: false
36501
+ }],
36502
+ "streamBroker.getStreamWithCodec": [{
36503
+ name: "deviceId",
36504
+ form: "single",
36505
+ optional: false
36506
+ }],
36507
+ "streamBroker.produceEventMedia": [{
36508
+ name: "deviceId",
36509
+ form: "single",
36510
+ optional: false
36511
+ }],
36512
+ "streamBroker.publishCameraStream": [{
36513
+ name: "deviceId",
36514
+ form: "single",
36515
+ optional: false
36516
+ }],
36517
+ "streamBroker.renderPreBufferClip": [{
36518
+ name: "deviceId",
36519
+ form: "single",
36520
+ optional: false
36521
+ }],
36522
+ "streamBroker.restartProfile": [{
36523
+ name: "deviceId",
36524
+ form: "single",
36525
+ optional: false
36526
+ }],
36527
+ "streamBroker.retractCameraStream": [{
36528
+ name: "deviceId",
36529
+ form: "single",
36530
+ optional: false
36531
+ }],
36532
+ "streamBroker.setDeviceAudioMute": [{
36533
+ name: "deviceId",
36534
+ form: "single",
36535
+ optional: false
36536
+ }],
36537
+ "streamBroker.unassignProfile": [{
36538
+ name: "deviceId",
36539
+ form: "single",
36540
+ optional: false
36541
+ }],
36542
+ "streamCatalog.getCatalog": [{
36543
+ name: "deviceId",
36544
+ form: "single",
36545
+ optional: false
36546
+ }],
36547
+ "streamParams.getConfigSchema": [{
36548
+ name: "deviceId",
36549
+ form: "single",
36550
+ optional: false
36551
+ }],
36552
+ "streamParams.getOptions": [{
36553
+ name: "deviceId",
36554
+ form: "single",
36555
+ optional: false
36556
+ }],
36557
+ "streamParams.setProfile": [{
36558
+ name: "deviceId",
36559
+ form: "single",
36560
+ optional: false
36561
+ }],
36562
+ "switch.setState": [{
36563
+ name: "deviceId",
36564
+ form: "single",
36565
+ optional: false
36566
+ }],
36567
+ "vacuumControl.locate": [{
36568
+ name: "deviceId",
36569
+ form: "single",
36570
+ optional: false
36571
+ }],
36572
+ "vacuumControl.pause": [{
36573
+ name: "deviceId",
36574
+ form: "single",
36575
+ optional: false
36576
+ }],
36577
+ "vacuumControl.returnToBase": [{
36578
+ name: "deviceId",
36579
+ form: "single",
36580
+ optional: false
36581
+ }],
36582
+ "vacuumControl.setFanSpeed": [{
36583
+ name: "deviceId",
36584
+ form: "single",
36585
+ optional: false
36586
+ }],
36587
+ "vacuumControl.start": [{
36588
+ name: "deviceId",
36589
+ form: "single",
36590
+ optional: false
36591
+ }],
36592
+ "vacuumControl.stop": [{
36593
+ name: "deviceId",
36594
+ form: "single",
36595
+ optional: false
36596
+ }],
36597
+ "valve.close": [{
36598
+ name: "deviceId",
36599
+ form: "single",
36600
+ optional: false
36601
+ }],
36602
+ "valve.open": [{
36603
+ name: "deviceId",
36604
+ form: "single",
36605
+ optional: false
36606
+ }],
36607
+ "valve.setPosition": [{
36608
+ name: "deviceId",
36609
+ form: "single",
36610
+ optional: false
36611
+ }],
36612
+ "valve.stop": [{
36613
+ name: "deviceId",
36614
+ form: "single",
36615
+ optional: false
36616
+ }],
36617
+ "videoclips.getClipPlayback": [{
36618
+ name: "deviceId",
36619
+ form: "single",
36620
+ optional: false
36621
+ }],
36622
+ "videoclips.listClips": [{
36623
+ name: "deviceId",
36624
+ form: "single",
36625
+ optional: false
36626
+ }],
36627
+ "waterHeater.setAway": [{
36628
+ name: "deviceId",
36629
+ form: "single",
36630
+ optional: false
36631
+ }],
36632
+ "waterHeater.setOperationMode": [{
36633
+ name: "deviceId",
36634
+ form: "single",
36635
+ optional: false
36636
+ }],
36637
+ "waterHeater.setTargetTemp": [{
36638
+ name: "deviceId",
36639
+ form: "single",
36640
+ optional: false
36641
+ }],
36642
+ "webrtcSession.addIceCandidate": [{
36643
+ name: "deviceId",
36644
+ form: "single",
36645
+ optional: false
36646
+ }],
36647
+ "webrtcSession.closeSession": [{
36648
+ name: "deviceId",
36649
+ form: "single",
36650
+ optional: false
36651
+ }],
36652
+ "webrtcSession.createSession": [{
36653
+ name: "deviceId",
36654
+ form: "single",
36655
+ optional: false
36656
+ }],
36657
+ "webrtcSession.getIceCandidates": [{
36658
+ name: "deviceId",
36659
+ form: "single",
36660
+ optional: false
36661
+ }],
36662
+ "webrtcSession.getSessionState": [{
36663
+ name: "deviceId",
36664
+ form: "single",
36665
+ optional: false
36666
+ }],
36667
+ "webrtcSession.handleAnswer": [{
36668
+ name: "deviceId",
36669
+ form: "single",
36670
+ optional: false
36671
+ }],
36672
+ "webrtcSession.handleOffer": [{
36673
+ name: "deviceId",
36674
+ form: "single",
36675
+ optional: false
36676
+ }],
36677
+ "webrtcSession.hasAdaptiveBitrate": [{
36678
+ name: "deviceId",
36679
+ form: "single",
36680
+ optional: false
36681
+ }],
36682
+ "webrtcSession.listStreams": [{
36683
+ name: "deviceId",
36684
+ form: "single",
36685
+ optional: false
36686
+ }],
36687
+ "zoneAnalytics.getCameraHistory": [{
36688
+ name: "deviceId",
36689
+ form: "single",
36690
+ optional: false
36691
+ }],
36692
+ "zoneAnalytics.getCurrentSnapshot": [{
36693
+ name: "deviceId",
36694
+ form: "single",
36695
+ optional: false
36696
+ }],
36697
+ "zoneAnalytics.getUnzonedHistory": [{
36698
+ name: "deviceId",
36699
+ form: "single",
36700
+ optional: false
36701
+ }],
36702
+ "zoneAnalytics.getZoneHistory": [{
36703
+ name: "deviceId",
36704
+ form: "single",
36705
+ optional: false
36706
+ }],
36707
+ "zoneRules.listRules": [{
36708
+ name: "deviceId",
36709
+ form: "single",
36710
+ optional: false
36711
+ }],
36712
+ "zoneRules.setRules": [{
36713
+ name: "deviceId",
36714
+ form: "single",
36715
+ optional: false
36716
+ }],
36717
+ "zones.addZone": [{
36718
+ name: "deviceId",
36719
+ form: "single",
36720
+ optional: false
36721
+ }],
36722
+ "zones.listZones": [{
36723
+ name: "deviceId",
36724
+ form: "single",
36725
+ optional: false
36726
+ }],
36727
+ "zones.removeZone": [{
36728
+ name: "deviceId",
36729
+ form: "single",
36730
+ optional: false
36731
+ }],
36732
+ "zones.updateZone": [{
36733
+ name: "deviceId",
36734
+ form: "single",
36735
+ optional: false
36736
+ }]
36737
+ });
34947
36738
  Object.freeze({
34948
36739
  "broker": "broker",
34949
36740
  "device-export": "device-export",
@@ -39738,6 +41529,29 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
39738
41529
  * operator flips `twoWayAudioMode`) noop once the cap is already
39739
41530
  * registered.
39740
41531
  */
41532
+ /**
41533
+ * Mirror talk-back into the `intercom` runtime-state slice.
41534
+ *
41535
+ * The cap's `status` is command-driven and nothing reads it: every consumer
41536
+ * outside this process — the admin UI, the Home Assistant export — sees a
41537
+ * capability only through the runtime-state slice, via the
41538
+ * `device.state-changed` event or the `deviceState.getAllSnapshots`
41539
+ * snapshot. Without this write the `intercom` entity Home Assistant
41540
+ * publishes would exist and never receive a value, which is exactly the
41541
+ * defect that kept the capability out of the export.
41542
+ *
41543
+ * Called at the four points that open or close a session — and seeded at
41544
+ * registration, so the slice says `talking: false` from boot rather than
41545
+ * only after the first session.
41546
+ */
41547
+ publishIntercomState(talking) {
41548
+ const previous = this.getCapSlice(intercomCapability);
41549
+ this.setCapSlice(intercomCapability, {
41550
+ talking,
41551
+ lastSessionAt: talking ? Date.now() : previous?.lastSessionAt ?? null,
41552
+ ability: previous?.ability ?? null
41553
+ });
41554
+ }
39741
41555
  registerIntercomIfSupported() {
39742
41556
  if (this.intercomRegistered) return;
39743
41557
  if (!this.intercomEnabled()) return;
@@ -39762,7 +41576,14 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
39762
41576
  deviceTag: `camera-${this.id}`
39763
41577
  })
39764
41578
  });
39765
- return this.intercomOrchestrator.start();
41579
+ try {
41580
+ const opened = await this.intercomOrchestrator.start();
41581
+ this.publishIntercomState(true);
41582
+ return opened;
41583
+ } catch (err) {
41584
+ this.publishIntercomState(false);
41585
+ throw err;
41586
+ }
39766
41587
  },
39767
41588
  handleAnswer: async ({ deviceId, sessionId, sdpAnswer }) => {
39768
41589
  if (deviceId !== this.id) return;
@@ -39773,6 +41594,7 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
39773
41594
  if (deviceId !== this.id) return;
39774
41595
  if (!this.intercomOrchestrator) return;
39775
41596
  await this.intercomOrchestrator.stop(sessionId);
41597
+ this.publishIntercomState(false);
39776
41598
  },
39777
41599
  startTalkSession: async ({ deviceId }) => {
39778
41600
  if (deviceId !== this.id) throw new Error(`HikvisionCamera: intercom deviceId mismatch, expected ${this.id}, got ${deviceId}`);
@@ -39797,6 +41619,7 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
39797
41619
  lastSequenceNumber: -1,
39798
41620
  opusDecode: null
39799
41621
  };
41622
+ this.publishIntercomState(true);
39800
41623
  this.ctx.logger.info("intercom talk session opened", {
39801
41624
  tags: { deviceId: this.id },
39802
41625
  meta: {
@@ -39933,6 +41756,7 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
39933
41756
  }
39934
41757
  });
39935
41758
  });
41759
+ this.publishIntercomState(false);
39936
41760
  this.ctx.logger.info("intercom talk session closed", {
39937
41761
  tags: { deviceId: this.id },
39938
41762
  meta: {
@@ -39942,6 +41766,7 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
39942
41766
  });
39943
41767
  }
39944
41768
  });
41769
+ this.publishIntercomState(false);
39945
41770
  this.ctx.logger.info("intercom cap registered (ISAPI two-way audio)", { tags: { deviceId: this.id } });
39946
41771
  }
39947
41772
  /**