@camstack/addon-provider-reolink 1.2.26 → 1.2.27

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.mjs CHANGED
@@ -3019,6 +3019,9 @@ function handlePipeResult(left, next, ctx) {
3019
3019
  fallback: left.fallback
3020
3020
  }, ctx);
3021
3021
  }
3022
+ var $ZodPreprocess = /*@__PURE__*/ $constructor("$ZodPreprocess", (inst, def) => {
3023
+ $ZodPipe.init(inst, def);
3024
+ });
3022
3025
  var $ZodReadonly = /*@__PURE__*/ $constructor("$ZodReadonly", (inst, def) => {
3023
3026
  $ZodType.init(inst, def);
3024
3027
  defineLazy(inst._zod, "propValues", () => def.innerType._zod.propValues);
@@ -5204,6 +5207,10 @@ function pipe(in_, out) {
5204
5207
  out
5205
5208
  });
5206
5209
  }
5210
+ var ZodPreprocess = /*@__PURE__*/ $constructor("ZodPreprocess", (inst, def) => {
5211
+ ZodPipe.init(inst, def);
5212
+ $ZodPreprocess.init(inst, def);
5213
+ });
5207
5214
  var ZodReadonly$16 = /*@__PURE__*/ $constructor("ZodReadonly", (inst, def) => {
5208
5215
  $ZodReadonly.init(inst, def);
5209
5216
  ZodType$16.init(inst, def);
@@ -5262,6 +5269,13 @@ function _instanceof(cls, params = {}) {
5262
5269
  };
5263
5270
  return inst;
5264
5271
  }
5272
+ function preprocess(fn, schema) {
5273
+ return new ZodPreprocess({
5274
+ type: "pipe",
5275
+ in: transform(fn),
5276
+ out: schema
5277
+ });
5278
+ }
5265
5279
  //#endregion
5266
5280
  //#region ../../node_modules/zod/v4/classic/compat.js
5267
5281
  /** @deprecated Use the raw string literal codes instead, e.g. "invalid_type". */
@@ -15725,7 +15739,87 @@ var MethodAccessSchema = _enum([
15725
15739
  var AllowedProviderSchema = union([literal("*"), array(string())]);
15726
15740
  var AllowedDevicesSchema = record(string(), union([literal("*"), array(string())]));
15727
15741
  var CapScopeSchema = _enum(["device", "system"]);
15728
- var TokenScopeSchema = discriminatedUnion("type", [
15742
+ /**
15743
+ * DeviceSelector (scope model v3 — 2026-08-12).
15744
+ *
15745
+ * A `device` grant no longer carries a frozen list of deviceIds. It carries
15746
+ * a SELECTOR the matcher resolves against the live fleet, so the grant can be
15747
+ * DYNAMIC: a `types:['camera']` selector automatically covers a camera added
15748
+ * AFTER the grant was minted — no re-grant, no re-login.
15749
+ *
15750
+ * - `all` — every device in the deployment. The broad viewer/operator
15751
+ * lever without a `category` grant (a `category` grant also covers device
15752
+ * caps that carry no deviceId; `all` is specifically the device set).
15753
+ * - `ids` — an explicit deviceId list. This is what a v2 `device:[…]`
15754
+ * grant migrates to (see {@link TokenScopeSchema}); STATIC — a new camera
15755
+ * is NOT covered until the grant is edited.
15756
+ * - `types` — every device of a `DeviceType` (e.g. every `camera`).
15757
+ * DYNAMIC. A device that changes type, or a new device of the type,
15758
+ * re-resolves on the next request.
15759
+ * - `locations` — every device whose operator-assigned `location` label is
15760
+ * in the set (e.g. "Garden", "Front door"). DYNAMIC. A device with a
15761
+ * null/unset location matches NO `locations` selector.
15762
+ */
15763
+ var DeviceSelectorSchema = discriminatedUnion("kind", [
15764
+ object({ kind: literal("all") }),
15765
+ object({
15766
+ kind: literal("ids"),
15767
+ ids: array(number().int()).min(1)
15768
+ }),
15769
+ object({
15770
+ kind: literal("types"),
15771
+ types: array(_enum(DeviceType)).min(1)
15772
+ }),
15773
+ object({
15774
+ kind: literal("locations"),
15775
+ locations: array(string().min(1)).min(1)
15776
+ })
15777
+ ]);
15778
+ var DeviceTokenScopeSchema = object({
15779
+ type: literal("device"),
15780
+ /** The device SET this grant covers — resolved against the live fleet. */
15781
+ selector: DeviceSelectorSchema,
15782
+ access: array(MethodAccessSchema).min(1),
15783
+ /**
15784
+ * Whether a grant on a PARENT device transparently covers its accessory
15785
+ * CHILDREN (siren / floodlight / PIR) via the persisted-parentage walk.
15786
+ * Direction is parent → children ONLY.
15787
+ *
15788
+ * Absent → the matcher DERIVES it from the access flavour: `view`
15789
+ * inherits (a camera viewer sees the camera's accessories), `create` /
15790
+ * `delete` do NOT (actuating/removing a child is an explicit act the
15791
+ * operator must grant on the child, not inherit from the parent). Set it
15792
+ * explicitly to override that default per grant.
15793
+ */
15794
+ includeLinked: boolean().optional()
15795
+ });
15796
+ /**
15797
+ * v2 → v3 lazy migration. A pre-v3 `device` grant carried
15798
+ * `targets: string[]` (stringified deviceIds); it rewrites to the equivalent
15799
+ * `selector: {kind:'ids', ids}`. Applied as a `preprocess` so it runs on
15800
+ * EVERY parse path — stored records AND the JWT-carried scope arrays
15801
+ * normalised at the request boundary ({@link normalizeTokenScopes} in
15802
+ * `device-selector.ts`). Chosen over a one-time DB migration because a
15803
+ * migration cannot reach a JWT already in a client's hands; parse-time
15804
+ * migration covers both without a flag day. No cast — the raw object is read
15805
+ * through `Reflect.get` (its static type is `unknown`).
15806
+ */
15807
+ function migrateLegacyTokenScope(raw) {
15808
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw)) return raw;
15809
+ if (Reflect.get(raw, "type") !== "device") return raw;
15810
+ if (Reflect.get(raw, "selector") !== void 0) return raw;
15811
+ const targets = Reflect.get(raw, "targets");
15812
+ if (!Array.isArray(targets)) return raw;
15813
+ return {
15814
+ type: "device",
15815
+ selector: {
15816
+ kind: "ids",
15817
+ ids: targets.map((t) => typeof t === "string" ? Number(t) : t).filter((n) => typeof n === "number" && Number.isInteger(n))
15818
+ },
15819
+ access: Reflect.get(raw, "access")
15820
+ };
15821
+ }
15822
+ var TokenScopeSchema = preprocess(migrateLegacyTokenScope, discriminatedUnion("type", [
15729
15823
  object({
15730
15824
  type: literal("category"),
15731
15825
  target: CapScopeSchema,
@@ -15741,18 +15835,8 @@ var TokenScopeSchema = discriminatedUnion("type", [
15741
15835
  target: string(),
15742
15836
  access: array(MethodAccessSchema).min(1)
15743
15837
  }),
15744
- object({
15745
- type: literal("device"),
15746
- /**
15747
- * One or more deviceIds (serialised as strings for wire-format
15748
- * consistency with the rest of the union). Matcher accepts if
15749
- * `input.deviceId` ∈ `targets`. Array shape avoids the row-explosion
15750
- * of one scope-per-device when granting access to a set of cameras.
15751
- */
15752
- targets: array(string()).min(1),
15753
- access: array(MethodAccessSchema).min(1)
15754
- })
15755
- ]);
15838
+ DeviceTokenScopeSchema
15839
+ ]));
15756
15840
  object({
15757
15841
  id: string(),
15758
15842
  username: string(),
@@ -17808,7 +17892,7 @@ var detectionFpsField = {
17808
17892
  var occupancyRecheckSecField = {
17809
17893
  min: 0,
17810
17894
  max: 300,
17811
- default: 30,
17895
+ default: 300,
17812
17896
  step: 5
17813
17897
  };
17814
17898
  var occupancyRecheckFramesField = {
@@ -23174,7 +23258,41 @@ var intercomCapability = {
23174
23258
  status: {
23175
23259
  schema: IntercomStatusSchema,
23176
23260
  kind: "command-driven"
23177
- }
23261
+ },
23262
+ /**
23263
+ * Runtime-state slice — mirrored by the kernel.
23264
+ *
23265
+ * The cap declared `status` and nothing else, so the only two sources an
23266
+ * exporter has for a value — the `device.state-changed` slice event and the
23267
+ * `deviceState.getAllSnapshots` snapshot, both built from runtime state —
23268
+ * carried nothing for `intercom`. A talk-back entity in Home Assistant would
23269
+ * have been published and never received a value, which is the defect the
23270
+ * export's two classification tables exist to prevent (177 of them, once), so
23271
+ * `intercom` was excluded rather than exported.
23272
+ *
23273
+ * The shape is the status shape: there is exactly one truth about talk-back
23274
+ * and duplicating it into a second schema is how two halves of one capability
23275
+ * come to disagree. Providers write it through
23276
+ * `this.runtimeState.setCapState('intercom', …)` at the four points that open
23277
+ * and close a session, and seed it at registration so the slice exists before
23278
+ * the first session rather than after it.
23279
+ *
23280
+ * **Bound, named rather than hidden:** `talking` mirrors the provider's own
23281
+ * session handle, so a session torn down by a transport death that never
23282
+ * reaches `stopSession` / `endTalkSession` leaves it latched until the next
23283
+ * session or the next restart. That is why the slice is `session` and not
23284
+ * `restored` — a restart must never restore "talking".
23285
+ */
23286
+ runtimeState: IntercomStatusSchema,
23287
+ /**
23288
+ * Runtime-state durability: **session** — `talking` describes a live audio
23289
+ * session, which by definition does not survive the process that held it.
23290
+ * Restoring it would publish a camera as talking to nobody.
23291
+ *
23292
+ * See `RuntimeStateDurability`. Enforced by
23293
+ * `scripts/check-runtime-state-durability.ts`.
23294
+ */
23295
+ durability: "session"
23178
23296
  };
23179
23297
  /**
23180
23298
  * Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
@@ -25959,7 +26077,7 @@ method(object({
25959
26077
  toMs: number()
25960
26078
  }), RecordingAvailabilitySchema, {
25961
26079
  kind: "query",
25962
- auth: "admin"
26080
+ auth: "protected"
25963
26081
  }), method(object({
25964
26082
  deviceId: number(),
25965
26083
  fromMs: number(),
@@ -25967,14 +26085,14 @@ method(object({
25967
26085
  tzOffsetMinutes: number()
25968
26086
  }), RecordingDaysSchema, {
25969
26087
  kind: "query",
25970
- auth: "admin"
26088
+ auth: "protected"
25971
26089
  }), method(object({
25972
26090
  deviceId: number(),
25973
26091
  fromMs: number(),
25974
26092
  toMs: number()
25975
26093
  }), RecordingManifestSchema, {
25976
26094
  kind: "query",
25977
- auth: "admin"
26095
+ auth: "protected"
25978
26096
  }), method(object({}), RecordingStorageUsageSchema, {
25979
26097
  kind: "query",
25980
26098
  auth: "admin"
@@ -28450,6 +28568,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
28450
28568
  humiditySensor: humiditySensorCapability,
28451
28569
  image: imageCapability,
28452
28570
  imageSettings: imageSettingsCapability,
28571
+ intercom: intercomCapability,
28453
28572
  lawnMowerControl: lawnMowerControlCapability,
28454
28573
  lockControl: lockControlCapability,
28455
28574
  mediaPlayer: mediaPlayerCapability,
@@ -34871,6 +34990,1678 @@ Object.freeze({
34871
34990
  access: "create"
34872
34991
  }
34873
34992
  });
34993
+ Object.freeze({
34994
+ "accessories.setChildHidden": [{
34995
+ name: "childDeviceId",
34996
+ form: "single",
34997
+ optional: false
34998
+ }, {
34999
+ name: "deviceId",
35000
+ form: "single",
35001
+ optional: false
35002
+ }],
35003
+ "addonSettings.getDeviceSettings": [{
35004
+ name: "deviceId",
35005
+ form: "single",
35006
+ optional: false
35007
+ }],
35008
+ "addonSettings.updateDeviceSettings": [{
35009
+ name: "deviceId",
35010
+ form: "single",
35011
+ optional: false
35012
+ }],
35013
+ "alarmPanel.arm": [{
35014
+ name: "deviceId",
35015
+ form: "single",
35016
+ optional: false
35017
+ }],
35018
+ "alarmPanel.disarm": [{
35019
+ name: "deviceId",
35020
+ form: "single",
35021
+ optional: false
35022
+ }],
35023
+ "alarmPanel.trigger": [{
35024
+ name: "deviceId",
35025
+ form: "single",
35026
+ optional: false
35027
+ }],
35028
+ "audioAnalysis.resolveDeviceSettings": [{
35029
+ name: "deviceId",
35030
+ form: "single",
35031
+ optional: false
35032
+ }],
35033
+ "audioAnalyzer.classify": [{
35034
+ name: "deviceId",
35035
+ form: "single",
35036
+ optional: true
35037
+ }],
35038
+ "audioMetrics.getCurrentSnapshot": [{
35039
+ name: "deviceId",
35040
+ form: "single",
35041
+ optional: false
35042
+ }],
35043
+ "audioMetrics.getHistory": [{
35044
+ name: "deviceId",
35045
+ form: "single",
35046
+ optional: false
35047
+ }],
35048
+ "automationControl.disable": [{
35049
+ name: "deviceId",
35050
+ form: "single",
35051
+ optional: false
35052
+ }],
35053
+ "automationControl.enable": [{
35054
+ name: "deviceId",
35055
+ form: "single",
35056
+ optional: false
35057
+ }],
35058
+ "automationControl.trigger": [{
35059
+ name: "deviceId",
35060
+ form: "single",
35061
+ optional: false
35062
+ }],
35063
+ "battery.wakeForStream": [{
35064
+ name: "deviceId",
35065
+ form: "single",
35066
+ optional: false
35067
+ }],
35068
+ "brightness.setBrightness": [{
35069
+ name: "deviceId",
35070
+ form: "single",
35071
+ optional: false
35072
+ }],
35073
+ "button.press": [{
35074
+ name: "deviceId",
35075
+ form: "single",
35076
+ optional: false
35077
+ }],
35078
+ "cameraCredentials.getCredentials": [{
35079
+ name: "deviceId",
35080
+ form: "single",
35081
+ optional: false
35082
+ }],
35083
+ "cameraStreams.getBrokerStreams": [{
35084
+ name: "deviceId",
35085
+ form: "single",
35086
+ optional: false
35087
+ }],
35088
+ "cameraStreams.getCameraStreams": [{
35089
+ name: "deviceId",
35090
+ form: "single",
35091
+ optional: false
35092
+ }],
35093
+ "cameraStreams.getProfileRtspEntries": [{
35094
+ name: "deviceId",
35095
+ form: "single",
35096
+ optional: false
35097
+ }],
35098
+ "cameraStreams.getRtspEntries": [{
35099
+ name: "deviceId",
35100
+ form: "single",
35101
+ optional: false
35102
+ }],
35103
+ "cameraStreams.pickStream": [{
35104
+ name: "deviceId",
35105
+ form: "single",
35106
+ optional: false
35107
+ }],
35108
+ "climateControl.setFanMode": [{
35109
+ name: "deviceId",
35110
+ form: "single",
35111
+ optional: false
35112
+ }],
35113
+ "climateControl.setMode": [{
35114
+ name: "deviceId",
35115
+ form: "single",
35116
+ optional: false
35117
+ }],
35118
+ "climateControl.setPreset": [{
35119
+ name: "deviceId",
35120
+ form: "single",
35121
+ optional: false
35122
+ }],
35123
+ "climateControl.setSwingHorizontal": [{
35124
+ name: "deviceId",
35125
+ form: "single",
35126
+ optional: false
35127
+ }],
35128
+ "climateControl.setSwingVertical": [{
35129
+ name: "deviceId",
35130
+ form: "single",
35131
+ optional: false
35132
+ }],
35133
+ "climateControl.setTarget": [{
35134
+ name: "deviceId",
35135
+ form: "single",
35136
+ optional: false
35137
+ }],
35138
+ "climateControl.setTargetHumidity": [{
35139
+ name: "deviceId",
35140
+ form: "single",
35141
+ optional: false
35142
+ }],
35143
+ "climateControl.setTargetRange": [{
35144
+ name: "deviceId",
35145
+ form: "single",
35146
+ optional: false
35147
+ }],
35148
+ "color.setColor": [{
35149
+ name: "deviceId",
35150
+ form: "single",
35151
+ optional: false
35152
+ }],
35153
+ "consumables.reset": [{
35154
+ name: "deviceId",
35155
+ form: "single",
35156
+ optional: false
35157
+ }],
35158
+ "control.setValue": [{
35159
+ name: "deviceId",
35160
+ form: "single",
35161
+ optional: false
35162
+ }],
35163
+ "cover.close": [{
35164
+ name: "deviceId",
35165
+ form: "single",
35166
+ optional: false
35167
+ }],
35168
+ "cover.open": [{
35169
+ name: "deviceId",
35170
+ form: "single",
35171
+ optional: false
35172
+ }],
35173
+ "cover.setPosition": [{
35174
+ name: "deviceId",
35175
+ form: "single",
35176
+ optional: false
35177
+ }],
35178
+ "cover.setTiltPosition": [{
35179
+ name: "deviceId",
35180
+ form: "single",
35181
+ optional: false
35182
+ }],
35183
+ "cover.stop": [{
35184
+ name: "deviceId",
35185
+ form: "single",
35186
+ optional: false
35187
+ }],
35188
+ "dayNight.getOptions": [{
35189
+ name: "deviceId",
35190
+ form: "single",
35191
+ optional: false
35192
+ }],
35193
+ "dayNight.setSettings": [{
35194
+ name: "deviceId",
35195
+ form: "single",
35196
+ optional: false
35197
+ }],
35198
+ "decoder.createSession": [{
35199
+ name: "deviceId",
35200
+ form: "single",
35201
+ optional: true
35202
+ }],
35203
+ "deviceAdoption.release": [{
35204
+ name: "camDeviceId",
35205
+ form: "single",
35206
+ optional: false
35207
+ }],
35208
+ "deviceAdoption.resync": [{
35209
+ name: "camDeviceId",
35210
+ form: "single",
35211
+ optional: false
35212
+ }],
35213
+ "deviceDiscovery.adoptDevice": [{
35214
+ name: "deviceId",
35215
+ form: "single",
35216
+ optional: false
35217
+ }],
35218
+ "deviceDiscovery.listDiscovered": [{
35219
+ name: "deviceId",
35220
+ form: "single",
35221
+ optional: false
35222
+ }],
35223
+ "deviceDiscovery.refreshDiscovery": [{
35224
+ name: "deviceId",
35225
+ form: "single",
35226
+ optional: false
35227
+ }],
35228
+ "deviceDiscovery.releaseDevice": [{
35229
+ name: "childDeviceId",
35230
+ form: "single",
35231
+ optional: false
35232
+ }, {
35233
+ name: "deviceId",
35234
+ form: "single",
35235
+ optional: false
35236
+ }],
35237
+ "deviceManager.adoptionRelease": [{
35238
+ name: "camDeviceId",
35239
+ form: "single",
35240
+ optional: false
35241
+ }],
35242
+ "deviceManager.adoptionResync": [{
35243
+ name: "camDeviceId",
35244
+ form: "single",
35245
+ optional: false
35246
+ }],
35247
+ "deviceManager.applyInitialMeta": [{
35248
+ name: "deviceId",
35249
+ form: "single",
35250
+ optional: false
35251
+ }, {
35252
+ name: "linkDeviceId",
35253
+ form: "single",
35254
+ optional: true
35255
+ }],
35256
+ "deviceManager.disable": [{
35257
+ name: "deviceId",
35258
+ form: "single",
35259
+ optional: false
35260
+ }],
35261
+ "deviceManager.enable": [{
35262
+ name: "deviceId",
35263
+ form: "single",
35264
+ optional: false
35265
+ }],
35266
+ "deviceManager.getBindings": [{
35267
+ name: "deviceId",
35268
+ form: "single",
35269
+ optional: false
35270
+ }],
35271
+ "deviceManager.getChildren": [{
35272
+ name: "parentDeviceId",
35273
+ form: "single",
35274
+ optional: false
35275
+ }],
35276
+ "deviceManager.getConfigSchema": [{
35277
+ name: "deviceId",
35278
+ form: "single",
35279
+ optional: false
35280
+ }],
35281
+ "deviceManager.getDevice": [{
35282
+ name: "deviceId",
35283
+ form: "single",
35284
+ optional: false
35285
+ }],
35286
+ "deviceManager.getDeviceAggregate": [{
35287
+ name: "deviceId",
35288
+ form: "single",
35289
+ optional: false
35290
+ }],
35291
+ "deviceManager.getDeviceLiveInfoAggregate": [{
35292
+ name: "deviceId",
35293
+ form: "single",
35294
+ optional: false
35295
+ }],
35296
+ "deviceManager.getDeviceSettingsAggregate": [{
35297
+ name: "deviceId",
35298
+ form: "single",
35299
+ optional: false
35300
+ }],
35301
+ "deviceManager.getDeviceStatusAggregate": [{
35302
+ name: "deviceId",
35303
+ form: "single",
35304
+ optional: false
35305
+ }],
35306
+ "deviceManager.getDeviceStatusAggregateBatch": [{
35307
+ name: "deviceIds",
35308
+ form: "array",
35309
+ optional: false
35310
+ }],
35311
+ "deviceManager.getLinkedDevices": [{
35312
+ name: "deviceId",
35313
+ form: "single",
35314
+ optional: false
35315
+ }],
35316
+ "deviceManager.getSettingsSchema": [{
35317
+ name: "deviceId",
35318
+ form: "single",
35319
+ optional: false
35320
+ }],
35321
+ "deviceManager.getStreamProfileMap": [{
35322
+ name: "deviceId",
35323
+ form: "single",
35324
+ optional: false
35325
+ }],
35326
+ "deviceManager.getStreamSources": [{
35327
+ name: "deviceId",
35328
+ form: "single",
35329
+ optional: false
35330
+ }],
35331
+ "deviceManager.getWireableFields": [{
35332
+ name: "deviceId",
35333
+ form: "single",
35334
+ optional: false
35335
+ }],
35336
+ "deviceManager.loadConfig": [{
35337
+ name: "deviceId",
35338
+ form: "single",
35339
+ optional: false
35340
+ }],
35341
+ "deviceManager.loadMeta": [{
35342
+ name: "deviceId",
35343
+ form: "single",
35344
+ optional: false
35345
+ }],
35346
+ "deviceManager.loadRuntimeState": [{
35347
+ name: "deviceId",
35348
+ form: "single",
35349
+ optional: false
35350
+ }],
35351
+ "deviceManager.persistConfig": [{
35352
+ name: "deviceId",
35353
+ form: "single",
35354
+ optional: false
35355
+ }],
35356
+ "deviceManager.probeStreams": [{
35357
+ name: "deviceId",
35358
+ form: "single",
35359
+ optional: false
35360
+ }],
35361
+ "deviceManager.registerDevice": [{
35362
+ name: "parentDeviceId",
35363
+ form: "single",
35364
+ optional: true
35365
+ }],
35366
+ "deviceManager.remove": [{
35367
+ name: "deviceId",
35368
+ form: "single",
35369
+ optional: false
35370
+ }],
35371
+ "deviceManager.removeDevice": [{
35372
+ name: "deviceId",
35373
+ form: "single",
35374
+ optional: false
35375
+ }],
35376
+ "deviceManager.runDeviceAction": [{
35377
+ name: "deviceId",
35378
+ form: "single",
35379
+ optional: false
35380
+ }],
35381
+ "deviceManager.setChildLayout": [{
35382
+ name: "deviceId",
35383
+ form: "single",
35384
+ optional: false
35385
+ }],
35386
+ "deviceManager.setDisabled": [{
35387
+ name: "deviceId",
35388
+ form: "single",
35389
+ optional: false
35390
+ }],
35391
+ "deviceManager.setDisplay": [{
35392
+ name: "deviceId",
35393
+ form: "single",
35394
+ optional: false
35395
+ }],
35396
+ "deviceManager.setIntegrationId": [{
35397
+ name: "deviceId",
35398
+ form: "single",
35399
+ optional: false
35400
+ }],
35401
+ "deviceManager.setLinkDeviceId": [{
35402
+ name: "deviceId",
35403
+ form: "single",
35404
+ optional: false
35405
+ }, {
35406
+ name: "linkDeviceId",
35407
+ form: "single",
35408
+ optional: true
35409
+ }],
35410
+ "deviceManager.setLocation": [{
35411
+ name: "deviceId",
35412
+ form: "single",
35413
+ optional: false
35414
+ }],
35415
+ "deviceManager.setMetadata": [{
35416
+ name: "deviceId",
35417
+ form: "single",
35418
+ optional: false
35419
+ }],
35420
+ "deviceManager.setName": [{
35421
+ name: "deviceId",
35422
+ form: "single",
35423
+ optional: false
35424
+ }],
35425
+ "deviceManager.setPrimaryChildEntityId": [{
35426
+ name: "deviceId",
35427
+ form: "single",
35428
+ optional: false
35429
+ }],
35430
+ "deviceManager.setRole": [{
35431
+ name: "deviceId",
35432
+ form: "single",
35433
+ optional: false
35434
+ }],
35435
+ "deviceManager.setStreamProfileMap": [{
35436
+ name: "deviceId",
35437
+ form: "single",
35438
+ optional: false
35439
+ }],
35440
+ "deviceManager.setType": [{
35441
+ name: "deviceId",
35442
+ form: "single",
35443
+ optional: false
35444
+ }],
35445
+ "deviceManager.setWrapperActive": [{
35446
+ name: "deviceId",
35447
+ form: "single",
35448
+ optional: false
35449
+ }],
35450
+ "deviceManager.testField": [{
35451
+ name: "deviceId",
35452
+ form: "single",
35453
+ optional: false
35454
+ }],
35455
+ "deviceManager.updateConfig": [{
35456
+ name: "deviceId",
35457
+ form: "single",
35458
+ optional: false
35459
+ }],
35460
+ "deviceManager.updateDeviceField": [{
35461
+ name: "deviceId",
35462
+ form: "single",
35463
+ optional: false
35464
+ }],
35465
+ "deviceManager.updateDeviceFieldsBatch": [{
35466
+ name: "deviceId",
35467
+ form: "single",
35468
+ optional: false
35469
+ }],
35470
+ "deviceOps.getConfigEntries": [{
35471
+ name: "deviceId",
35472
+ form: "single",
35473
+ optional: false
35474
+ }],
35475
+ "deviceOps.getRawState": [{
35476
+ name: "deviceId",
35477
+ form: "single",
35478
+ optional: false
35479
+ }],
35480
+ "deviceOps.getSettingsSchema": [{
35481
+ name: "deviceId",
35482
+ form: "single",
35483
+ optional: false
35484
+ }],
35485
+ "deviceOps.getStreamSources": [{
35486
+ name: "deviceId",
35487
+ form: "single",
35488
+ optional: false
35489
+ }],
35490
+ "deviceOps.removeDevice": [{
35491
+ name: "deviceId",
35492
+ form: "single",
35493
+ optional: false
35494
+ }],
35495
+ "deviceOps.runAction": [{
35496
+ name: "deviceId",
35497
+ form: "single",
35498
+ optional: false
35499
+ }],
35500
+ "deviceOps.setConfig": [{
35501
+ name: "deviceId",
35502
+ form: "single",
35503
+ optional: false
35504
+ }],
35505
+ "deviceState.getCapSlice": [{
35506
+ name: "deviceId",
35507
+ form: "single",
35508
+ optional: false
35509
+ }],
35510
+ "deviceState.getSnapshot": [{
35511
+ name: "deviceId",
35512
+ form: "single",
35513
+ optional: false
35514
+ }],
35515
+ "deviceState.setCapSlice": [{
35516
+ name: "deviceId",
35517
+ form: "single",
35518
+ optional: false
35519
+ }],
35520
+ "events.getEventClipUrl": [{
35521
+ name: "deviceId",
35522
+ form: "single",
35523
+ optional: false
35524
+ }],
35525
+ "events.getEvents": [{
35526
+ name: "deviceId",
35527
+ form: "single",
35528
+ optional: false
35529
+ }],
35530
+ "events.getEventThumbnail": [{
35531
+ name: "deviceId",
35532
+ form: "single",
35533
+ optional: false
35534
+ }],
35535
+ "faceGallery.getFaceByTrack": [{
35536
+ name: "deviceId",
35537
+ form: "single",
35538
+ optional: false
35539
+ }],
35540
+ "faceGallery.listRecentFaces": [{
35541
+ name: "deviceId",
35542
+ form: "single",
35543
+ optional: true
35544
+ }],
35545
+ "fanControl.setDirection": [{
35546
+ name: "deviceId",
35547
+ form: "single",
35548
+ optional: false
35549
+ }],
35550
+ "fanControl.setOscillating": [{
35551
+ name: "deviceId",
35552
+ form: "single",
35553
+ optional: false
35554
+ }],
35555
+ "fanControl.setPercentage": [{
35556
+ name: "deviceId",
35557
+ form: "single",
35558
+ optional: false
35559
+ }],
35560
+ "fanControl.setPreset": [{
35561
+ name: "deviceId",
35562
+ form: "single",
35563
+ optional: false
35564
+ }],
35565
+ "humidifier.setMode": [{
35566
+ name: "deviceId",
35567
+ form: "single",
35568
+ optional: false
35569
+ }],
35570
+ "humidifier.setOn": [{
35571
+ name: "deviceId",
35572
+ form: "single",
35573
+ optional: false
35574
+ }],
35575
+ "humidifier.setTargetHumidity": [{
35576
+ name: "deviceId",
35577
+ form: "single",
35578
+ optional: false
35579
+ }],
35580
+ "imageSettings.getOptions": [{
35581
+ name: "deviceId",
35582
+ form: "single",
35583
+ optional: false
35584
+ }],
35585
+ "imageSettings.setSettings": [{
35586
+ name: "deviceId",
35587
+ form: "single",
35588
+ optional: false
35589
+ }],
35590
+ "intercom.endTalkSession": [{
35591
+ name: "deviceId",
35592
+ form: "single",
35593
+ optional: false
35594
+ }],
35595
+ "intercom.handleAnswer": [{
35596
+ name: "deviceId",
35597
+ form: "single",
35598
+ optional: false
35599
+ }],
35600
+ "intercom.pushTalkAudio": [{
35601
+ name: "deviceId",
35602
+ form: "single",
35603
+ optional: false
35604
+ }],
35605
+ "intercom.startSession": [{
35606
+ name: "deviceId",
35607
+ form: "single",
35608
+ optional: false
35609
+ }],
35610
+ "intercom.startTalkSession": [{
35611
+ name: "deviceId",
35612
+ form: "single",
35613
+ optional: false
35614
+ }],
35615
+ "intercom.stopSession": [{
35616
+ name: "deviceId",
35617
+ form: "single",
35618
+ optional: false
35619
+ }],
35620
+ "lawnMowerControl.dock": [{
35621
+ name: "deviceId",
35622
+ form: "single",
35623
+ optional: false
35624
+ }],
35625
+ "lawnMowerControl.pause": [{
35626
+ name: "deviceId",
35627
+ form: "single",
35628
+ optional: false
35629
+ }],
35630
+ "lawnMowerControl.startMowing": [{
35631
+ name: "deviceId",
35632
+ form: "single",
35633
+ optional: false
35634
+ }],
35635
+ "lockControl.lock": [{
35636
+ name: "deviceId",
35637
+ form: "single",
35638
+ optional: false
35639
+ }],
35640
+ "lockControl.open": [{
35641
+ name: "deviceId",
35642
+ form: "single",
35643
+ optional: false
35644
+ }],
35645
+ "lockControl.unlock": [{
35646
+ name: "deviceId",
35647
+ form: "single",
35648
+ optional: false
35649
+ }],
35650
+ "mediaPlayer.next": [{
35651
+ name: "deviceId",
35652
+ form: "single",
35653
+ optional: false
35654
+ }],
35655
+ "mediaPlayer.pause": [{
35656
+ name: "deviceId",
35657
+ form: "single",
35658
+ optional: false
35659
+ }],
35660
+ "mediaPlayer.play": [{
35661
+ name: "deviceId",
35662
+ form: "single",
35663
+ optional: false
35664
+ }],
35665
+ "mediaPlayer.playMedia": [{
35666
+ name: "deviceId",
35667
+ form: "single",
35668
+ optional: false
35669
+ }],
35670
+ "mediaPlayer.previous": [{
35671
+ name: "deviceId",
35672
+ form: "single",
35673
+ optional: false
35674
+ }],
35675
+ "mediaPlayer.seek": [{
35676
+ name: "deviceId",
35677
+ form: "single",
35678
+ optional: false
35679
+ }],
35680
+ "mediaPlayer.selectSource": [{
35681
+ name: "deviceId",
35682
+ form: "single",
35683
+ optional: false
35684
+ }],
35685
+ "mediaPlayer.setMute": [{
35686
+ name: "deviceId",
35687
+ form: "single",
35688
+ optional: false
35689
+ }],
35690
+ "mediaPlayer.setRepeat": [{
35691
+ name: "deviceId",
35692
+ form: "single",
35693
+ optional: false
35694
+ }],
35695
+ "mediaPlayer.setShuffle": [{
35696
+ name: "deviceId",
35697
+ form: "single",
35698
+ optional: false
35699
+ }],
35700
+ "mediaPlayer.setVolume": [{
35701
+ name: "deviceId",
35702
+ form: "single",
35703
+ optional: false
35704
+ }],
35705
+ "mediaPlayer.stop": [{
35706
+ name: "deviceId",
35707
+ form: "single",
35708
+ optional: false
35709
+ }],
35710
+ "motion.isDetected": [{
35711
+ name: "deviceId",
35712
+ form: "single",
35713
+ optional: false
35714
+ }],
35715
+ "motionDetection.analyze": [{
35716
+ name: "deviceId",
35717
+ form: "single",
35718
+ optional: false
35719
+ }],
35720
+ "motionDetection.removeCamera": [{
35721
+ name: "deviceId",
35722
+ form: "single",
35723
+ optional: false
35724
+ }],
35725
+ "motionTrigger.setMotionTrigger": [{
35726
+ name: "deviceId",
35727
+ form: "single",
35728
+ optional: false
35729
+ }],
35730
+ "motionZones.getOptions": [{
35731
+ name: "deviceId",
35732
+ form: "single",
35733
+ optional: false
35734
+ }],
35735
+ "motionZones.setZone": [{
35736
+ name: "deviceId",
35737
+ form: "single",
35738
+ optional: false
35739
+ }],
35740
+ "nativeObjectDetection.setEnabled": [{
35741
+ name: "deviceId",
35742
+ form: "single",
35743
+ optional: false
35744
+ }],
35745
+ "networkQuality.getDeviceStats": [{
35746
+ name: "deviceId",
35747
+ form: "single",
35748
+ optional: false
35749
+ }],
35750
+ "networkQuality.reportClientStats": [{
35751
+ name: "deviceId",
35752
+ form: "single",
35753
+ optional: false
35754
+ }],
35755
+ "notificationRules.setDeviceMuted": [{
35756
+ name: "deviceId",
35757
+ form: "single",
35758
+ optional: false
35759
+ }],
35760
+ "notifier.cancel": [{
35761
+ name: "deviceId",
35762
+ form: "single",
35763
+ optional: false
35764
+ }],
35765
+ "notifier.send": [{
35766
+ name: "deviceId",
35767
+ form: "single",
35768
+ optional: false
35769
+ }],
35770
+ "osd.setOverlay": [{
35771
+ name: "deviceId",
35772
+ form: "single",
35773
+ optional: false
35774
+ }],
35775
+ "osdManager.clearSlotBinding": [{
35776
+ name: "deviceId",
35777
+ form: "single",
35778
+ optional: false
35779
+ }],
35780
+ "osdManager.copyDeviceConfiguration": [{
35781
+ name: "sourceDeviceId",
35782
+ form: "single",
35783
+ optional: false
35784
+ }, {
35785
+ name: "targetDeviceId",
35786
+ form: "single",
35787
+ optional: false
35788
+ }],
35789
+ "osdManager.getDeviceOsd": [{
35790
+ name: "deviceId",
35791
+ form: "single",
35792
+ optional: false
35793
+ }],
35794
+ "osdManager.getSourceCatalog": [{
35795
+ name: "deviceId",
35796
+ form: "single",
35797
+ optional: false
35798
+ }],
35799
+ "osdManager.previewSlot": [{
35800
+ name: "deviceId",
35801
+ form: "single",
35802
+ optional: false
35803
+ }],
35804
+ "osdManager.renderDevice": [{
35805
+ name: "deviceId",
35806
+ form: "single",
35807
+ optional: false
35808
+ }],
35809
+ "osdManager.setSlotBinding": [{
35810
+ name: "deviceId",
35811
+ form: "single",
35812
+ optional: false
35813
+ }],
35814
+ "petFeeder.callPet": [{
35815
+ name: "deviceId",
35816
+ form: "single",
35817
+ optional: false
35818
+ }],
35819
+ "petFeeder.cancelFeed": [{
35820
+ name: "deviceId",
35821
+ form: "single",
35822
+ optional: false
35823
+ }],
35824
+ "petFeeder.feed": [{
35825
+ name: "deviceId",
35826
+ form: "single",
35827
+ optional: false
35828
+ }],
35829
+ "petFeeder.markFoodReplenished": [{
35830
+ name: "deviceId",
35831
+ form: "single",
35832
+ optional: false
35833
+ }],
35834
+ "petFeeder.playSound": [{
35835
+ name: "deviceId",
35836
+ form: "single",
35837
+ optional: false
35838
+ }],
35839
+ "petFeeder.resetDesiccant": [{
35840
+ name: "deviceId",
35841
+ form: "single",
35842
+ optional: false
35843
+ }],
35844
+ "petFeeder.setChildLock": [{
35845
+ name: "deviceId",
35846
+ form: "single",
35847
+ optional: false
35848
+ }],
35849
+ "petFeeder.setFeedSound": [{
35850
+ name: "deviceId",
35851
+ form: "single",
35852
+ optional: false
35853
+ }],
35854
+ "petFeeder.setIndicatorLight": [{
35855
+ name: "deviceId",
35856
+ form: "single",
35857
+ optional: false
35858
+ }],
35859
+ "petFeeder.setVolume": [{
35860
+ name: "deviceId",
35861
+ form: "single",
35862
+ optional: false
35863
+ }],
35864
+ "pipelineAnalytics.clearTracks": [{
35865
+ name: "deviceId",
35866
+ form: "single",
35867
+ optional: false
35868
+ }],
35869
+ "pipelineAnalytics.completeRetrainTrack": [{
35870
+ name: "deviceId",
35871
+ form: "single",
35872
+ optional: false
35873
+ }],
35874
+ "pipelineAnalytics.deleteDeviceEvents": [{
35875
+ name: "deviceId",
35876
+ form: "single",
35877
+ optional: false
35878
+ }],
35879
+ "pipelineAnalytics.deleteTracks": [{
35880
+ name: "deviceId",
35881
+ form: "single",
35882
+ optional: false
35883
+ }],
35884
+ "pipelineAnalytics.deselectRetrainFrame": [{
35885
+ name: "deviceId",
35886
+ form: "single",
35887
+ optional: false
35888
+ }],
35889
+ "pipelineAnalytics.getActiveTracks": [{
35890
+ name: "deviceId",
35891
+ form: "single",
35892
+ optional: false
35893
+ }],
35894
+ "pipelineAnalytics.getAudioEvents": [{
35895
+ name: "deviceId",
35896
+ form: "single",
35897
+ optional: false
35898
+ }],
35899
+ "pipelineAnalytics.getEventDensity": [{
35900
+ name: "deviceId",
35901
+ form: "single",
35902
+ optional: false
35903
+ }],
35904
+ "pipelineAnalytics.getKeyEvents": [{
35905
+ name: "deviceId",
35906
+ form: "single",
35907
+ optional: false
35908
+ }],
35909
+ "pipelineAnalytics.getMotionEvents": [{
35910
+ name: "deviceId",
35911
+ form: "single",
35912
+ optional: false
35913
+ }],
35914
+ "pipelineAnalytics.getObjectEvents": [{
35915
+ name: "deviceId",
35916
+ form: "single",
35917
+ optional: false
35918
+ }],
35919
+ "pipelineAnalytics.getRetrainExportUrl": [{
35920
+ name: "deviceIds",
35921
+ form: "array",
35922
+ optional: true
35923
+ }],
35924
+ "pipelineAnalytics.getSensorEvents": [{
35925
+ name: "deviceId",
35926
+ form: "single",
35927
+ optional: false
35928
+ }],
35929
+ "pipelineAnalytics.getTrack": [{
35930
+ name: "deviceId",
35931
+ form: "single",
35932
+ optional: false
35933
+ }],
35934
+ "pipelineAnalytics.getTrainingExportSummary": [{
35935
+ name: "deviceIds",
35936
+ form: "array",
35937
+ optional: true
35938
+ }],
35939
+ "pipelineAnalytics.getTrainingExportUrl": [{
35940
+ name: "deviceIds",
35941
+ form: "array",
35942
+ optional: true
35943
+ }],
35944
+ "pipelineAnalytics.listEventKinds": [{
35945
+ name: "deviceId",
35946
+ form: "single",
35947
+ optional: false
35948
+ }],
35949
+ "pipelineAnalytics.listEventKindsBatch": [{
35950
+ name: "deviceIds",
35951
+ form: "array",
35952
+ optional: false
35953
+ }],
35954
+ "pipelineAnalytics.listOpsLog": [{
35955
+ name: "deviceId",
35956
+ form: "single",
35957
+ optional: true
35958
+ }],
35959
+ "pipelineAnalytics.listRecentTracks": [{
35960
+ name: "deviceIds",
35961
+ form: "array",
35962
+ optional: false
35963
+ }],
35964
+ "pipelineAnalytics.listRetrainStaging": [{
35965
+ name: "deviceIds",
35966
+ form: "array",
35967
+ optional: true
35968
+ }],
35969
+ "pipelineAnalytics.listTracks": [{
35970
+ name: "deviceId",
35971
+ form: "single",
35972
+ optional: false
35973
+ }],
35974
+ "pipelineAnalytics.proposeRetrainAnnotations": [{
35975
+ name: "deviceId",
35976
+ form: "single",
35977
+ optional: false
35978
+ }],
35979
+ "pipelineAnalytics.pruneEventsBefore": [{
35980
+ name: "deviceId",
35981
+ form: "single",
35982
+ optional: false
35983
+ }],
35984
+ "pipelineAnalytics.pruneTracksBefore": [{
35985
+ name: "deviceId",
35986
+ form: "single",
35987
+ optional: false
35988
+ }],
35989
+ "pipelineAnalytics.rebuildObjectEmbeddings": [{
35990
+ name: "deviceId",
35991
+ form: "single",
35992
+ optional: true
35993
+ }],
35994
+ "pipelineAnalytics.restageRetrainTrack": [{
35995
+ name: "deviceId",
35996
+ form: "single",
35997
+ optional: false
35998
+ }],
35999
+ "pipelineAnalytics.saveRetrainAnnotations": [{
36000
+ name: "deviceId",
36001
+ form: "single",
36002
+ optional: false
36003
+ }],
36004
+ "pipelineAnalytics.searchObjectEvents": [{
36005
+ name: "deviceId",
36006
+ form: "single",
36007
+ optional: true
36008
+ }],
36009
+ "pipelineAnalytics.selectRetrainFrames": [{
36010
+ name: "deviceId",
36011
+ form: "single",
36012
+ optional: false
36013
+ }],
36014
+ "pipelineAnalytics.setTrackFlags": [{
36015
+ name: "deviceId",
36016
+ form: "single",
36017
+ optional: false
36018
+ }],
36019
+ "pipelineAnalytics.wipeAllAnalytics": [{
36020
+ name: "deviceId",
36021
+ form: "single",
36022
+ optional: false
36023
+ }],
36024
+ "pipelineExecutor.runPipeline": [{
36025
+ name: "deviceId",
36026
+ form: "single",
36027
+ optional: true
36028
+ }],
36029
+ "pipelineExecutor.runPipelineBatch": [{
36030
+ name: "deviceId",
36031
+ form: "single",
36032
+ optional: true
36033
+ }],
36034
+ "pipelineOrchestrator.assignAudio": [{
36035
+ name: "deviceId",
36036
+ form: "single",
36037
+ optional: false
36038
+ }],
36039
+ "pipelineOrchestrator.assignPipeline": [{
36040
+ name: "deviceId",
36041
+ form: "single",
36042
+ optional: false
36043
+ }],
36044
+ "pipelineOrchestrator.getAudioAssignment": [{
36045
+ name: "deviceId",
36046
+ form: "single",
36047
+ optional: false
36048
+ }],
36049
+ "pipelineOrchestrator.getCameraMetrics": [{
36050
+ name: "deviceId",
36051
+ form: "single",
36052
+ optional: false
36053
+ }],
36054
+ "pipelineOrchestrator.getCameraSettings": [{
36055
+ name: "deviceId",
36056
+ form: "single",
36057
+ optional: false
36058
+ }],
36059
+ "pipelineOrchestrator.getCameraStatus": [{
36060
+ name: "deviceId",
36061
+ form: "single",
36062
+ optional: false
36063
+ }],
36064
+ "pipelineOrchestrator.getCameraStatuses": [{
36065
+ name: "deviceIds",
36066
+ form: "array",
36067
+ optional: true
36068
+ }],
36069
+ "pipelineOrchestrator.getCameraStepOverrides": [{
36070
+ name: "deviceId",
36071
+ form: "single",
36072
+ optional: false
36073
+ }],
36074
+ "pipelineOrchestrator.getCameraSwitches": [{
36075
+ name: "deviceId",
36076
+ form: "single",
36077
+ optional: false
36078
+ }],
36079
+ "pipelineOrchestrator.getPipelineAssignment": [{
36080
+ name: "deviceId",
36081
+ form: "single",
36082
+ optional: false
36083
+ }],
36084
+ "pipelineOrchestrator.getPipelineDevicePin": [{
36085
+ name: "deviceId",
36086
+ form: "single",
36087
+ optional: false
36088
+ }],
36089
+ "pipelineOrchestrator.resolvePipeline": [{
36090
+ name: "deviceId",
36091
+ form: "single",
36092
+ optional: false
36093
+ }],
36094
+ "pipelineOrchestrator.setCameraPipelineForAgent": [{
36095
+ name: "deviceId",
36096
+ form: "single",
36097
+ optional: false
36098
+ }],
36099
+ "pipelineOrchestrator.setCameraStepOverride": [{
36100
+ name: "deviceId",
36101
+ form: "single",
36102
+ optional: false
36103
+ }],
36104
+ "pipelineOrchestrator.setCameraStepToggle": [{
36105
+ name: "deviceId",
36106
+ form: "single",
36107
+ optional: false
36108
+ }],
36109
+ "pipelineOrchestrator.setCameraSwitch": [{
36110
+ name: "deviceId",
36111
+ form: "single",
36112
+ optional: false
36113
+ }],
36114
+ "pipelineOrchestrator.setPipelineDevicePin": [{
36115
+ name: "deviceId",
36116
+ form: "single",
36117
+ optional: false
36118
+ }],
36119
+ "pipelineOrchestrator.unassignAudio": [{
36120
+ name: "deviceId",
36121
+ form: "single",
36122
+ optional: false
36123
+ }],
36124
+ "pipelineOrchestrator.unassignPipeline": [{
36125
+ name: "deviceId",
36126
+ form: "single",
36127
+ optional: false
36128
+ }],
36129
+ "pipelineRunner.attachCamera": [{
36130
+ name: "deviceId",
36131
+ form: "single",
36132
+ optional: false
36133
+ }],
36134
+ "pipelineRunner.detachCamera": [{
36135
+ name: "deviceId",
36136
+ form: "single",
36137
+ optional: false
36138
+ }],
36139
+ "pipelineRunner.getCameraMetrics": [{
36140
+ name: "deviceId",
36141
+ form: "single",
36142
+ optional: false
36143
+ }],
36144
+ "pipelineRunner.reportMotion": [{
36145
+ name: "deviceId",
36146
+ form: "single",
36147
+ optional: false
36148
+ }],
36149
+ "pipelineRunner.runDetailSubtree": [{
36150
+ name: "deviceId",
36151
+ form: "single",
36152
+ optional: false
36153
+ }],
36154
+ "pipelineRunner.runStatelessStep": [{
36155
+ name: "sourceDeviceId",
36156
+ form: "single",
36157
+ optional: false
36158
+ }],
36159
+ "plateGallery.getPlateByTrack": [{
36160
+ name: "deviceId",
36161
+ form: "single",
36162
+ optional: false
36163
+ }],
36164
+ "plateGallery.listPlates": [{
36165
+ name: "deviceId",
36166
+ form: "single",
36167
+ optional: true
36168
+ }],
36169
+ "privacyMask.getOptions": [{
36170
+ name: "deviceId",
36171
+ form: "single",
36172
+ optional: false
36173
+ }],
36174
+ "privacyMask.setAudioEnabled": [{
36175
+ name: "deviceId",
36176
+ form: "single",
36177
+ optional: false
36178
+ }],
36179
+ "privacyMask.setMask": [{
36180
+ name: "deviceId",
36181
+ form: "single",
36182
+ optional: false
36183
+ }],
36184
+ "ptz.continuousMove": [{
36185
+ name: "deviceId",
36186
+ form: "single",
36187
+ optional: false
36188
+ }],
36189
+ "ptz.deletePreset": [{
36190
+ name: "deviceId",
36191
+ form: "single",
36192
+ optional: false
36193
+ }],
36194
+ "ptz.getOptions": [{
36195
+ name: "deviceId",
36196
+ form: "single",
36197
+ optional: false
36198
+ }],
36199
+ "ptz.getPosition": [{
36200
+ name: "deviceId",
36201
+ form: "single",
36202
+ optional: false
36203
+ }],
36204
+ "ptz.getPresets": [{
36205
+ name: "deviceId",
36206
+ form: "single",
36207
+ optional: false
36208
+ }],
36209
+ "ptz.goHome": [{
36210
+ name: "deviceId",
36211
+ form: "single",
36212
+ optional: false
36213
+ }],
36214
+ "ptz.goToPreset": [{
36215
+ name: "deviceId",
36216
+ form: "single",
36217
+ optional: false
36218
+ }],
36219
+ "ptz.move": [{
36220
+ name: "deviceId",
36221
+ form: "single",
36222
+ optional: false
36223
+ }],
36224
+ "ptz.savePreset": [{
36225
+ name: "deviceId",
36226
+ form: "single",
36227
+ optional: false
36228
+ }],
36229
+ "ptz.setAutofocus": [{
36230
+ name: "deviceId",
36231
+ form: "single",
36232
+ optional: false
36233
+ }],
36234
+ "ptz.stop": [{
36235
+ name: "deviceId",
36236
+ form: "single",
36237
+ optional: false
36238
+ }],
36239
+ "ptzAutotrack.getSettings": [{
36240
+ name: "deviceId",
36241
+ form: "single",
36242
+ optional: false
36243
+ }],
36244
+ "ptzAutotrack.getStatus": [{
36245
+ name: "deviceId",
36246
+ form: "single",
36247
+ optional: false
36248
+ }],
36249
+ "ptzAutotrack.setEnabled": [{
36250
+ name: "deviceId",
36251
+ form: "single",
36252
+ optional: false
36253
+ }],
36254
+ "ptzAutotrack.setSettings": [{
36255
+ name: "deviceId",
36256
+ form: "single",
36257
+ optional: false
36258
+ }],
36259
+ "reboot.reboot": [{
36260
+ name: "deviceId",
36261
+ form: "single",
36262
+ optional: false
36263
+ }],
36264
+ "recording.deleteFootprint": [{
36265
+ name: "deviceId",
36266
+ form: "single",
36267
+ optional: false
36268
+ }],
36269
+ "recording.getAvailability": [{
36270
+ name: "deviceId",
36271
+ form: "single",
36272
+ optional: false
36273
+ }],
36274
+ "recording.getDaysWithRecordings": [{
36275
+ name: "deviceId",
36276
+ form: "single",
36277
+ optional: false
36278
+ }],
36279
+ "recording.getDeviceConfig": [{
36280
+ name: "deviceId",
36281
+ form: "single",
36282
+ optional: false
36283
+ }],
36284
+ "recording.getPlaybackManifest": [{
36285
+ name: "deviceId",
36286
+ form: "single",
36287
+ optional: false
36288
+ }],
36289
+ "recording.listOpsLog": [{
36290
+ name: "deviceId",
36291
+ form: "single",
36292
+ optional: true
36293
+ }],
36294
+ "recording.locateSegment": [{
36295
+ name: "deviceId",
36296
+ form: "single",
36297
+ optional: false
36298
+ }],
36299
+ "recording.pruneFootage": [{
36300
+ name: "deviceId",
36301
+ form: "single",
36302
+ optional: false
36303
+ }],
36304
+ "recording.readGopBytes": [{
36305
+ name: "deviceId",
36306
+ form: "single",
36307
+ optional: false
36308
+ }],
36309
+ "recording.readSegmentBytes": [{
36310
+ name: "deviceId",
36311
+ form: "single",
36312
+ optional: false
36313
+ }],
36314
+ "recording.relocateFootage": [{
36315
+ name: "deviceId",
36316
+ form: "single",
36317
+ optional: true
36318
+ }],
36319
+ "recording.renderClip": [{
36320
+ name: "deviceId",
36321
+ form: "single",
36322
+ optional: false
36323
+ }],
36324
+ "recording.renderGif": [{
36325
+ name: "deviceId",
36326
+ form: "single",
36327
+ optional: false
36328
+ }],
36329
+ "recording.rescanStorage": [{
36330
+ name: "deviceId",
36331
+ form: "single",
36332
+ optional: false
36333
+ }],
36334
+ "recording.setDeviceConfig": [{
36335
+ name: "deviceId",
36336
+ form: "single",
36337
+ optional: false
36338
+ }],
36339
+ "recording.startStorageMigrationMove": [{
36340
+ name: "deviceId",
36341
+ form: "single",
36342
+ optional: true
36343
+ }],
36344
+ "recordingExport.createExport": [{
36345
+ name: "deviceId",
36346
+ form: "single",
36347
+ optional: false
36348
+ }],
36349
+ "recordingExport.listExports": [{
36350
+ name: "deviceId",
36351
+ form: "single",
36352
+ optional: true
36353
+ }],
36354
+ "sceneMonitor.captureReference": [{
36355
+ name: "deviceId",
36356
+ form: "single",
36357
+ optional: false
36358
+ }],
36359
+ "sceneMonitor.createScene": [{
36360
+ name: "deviceId",
36361
+ form: "single",
36362
+ optional: false
36363
+ }],
36364
+ "sceneMonitor.deleteReference": [{
36365
+ name: "deviceId",
36366
+ form: "single",
36367
+ optional: false
36368
+ }],
36369
+ "sceneMonitor.deleteScene": [{
36370
+ name: "deviceId",
36371
+ form: "single",
36372
+ optional: false
36373
+ }],
36374
+ "sceneMonitor.listScenes": [{
36375
+ name: "deviceId",
36376
+ form: "single",
36377
+ optional: false
36378
+ }],
36379
+ "sceneMonitor.recheckNow": [{
36380
+ name: "deviceId",
36381
+ form: "single",
36382
+ optional: false
36383
+ }],
36384
+ "sceneMonitor.updateScene": [{
36385
+ name: "deviceId",
36386
+ form: "single",
36387
+ optional: false
36388
+ }],
36389
+ "scriptRunner.run": [{
36390
+ name: "deviceId",
36391
+ form: "single",
36392
+ optional: false
36393
+ }],
36394
+ "scriptRunner.stop": [{
36395
+ name: "deviceId",
36396
+ form: "single",
36397
+ optional: false
36398
+ }],
36399
+ "snapshot.getSnapshot": [{
36400
+ name: "deviceId",
36401
+ form: "single",
36402
+ optional: false
36403
+ }],
36404
+ "snapshot.getSnapshotOverview": [{
36405
+ name: "deviceIds",
36406
+ form: "array",
36407
+ optional: false
36408
+ }],
36409
+ "snapshot.invalidateCache": [{
36410
+ name: "deviceId",
36411
+ form: "single",
36412
+ optional: false
36413
+ }],
36414
+ "streamBroker.acquireEgressTranscode": [{
36415
+ name: "deviceId",
36416
+ form: "single",
36417
+ optional: false
36418
+ }],
36419
+ "streamBroker.assignProfile": [{
36420
+ name: "deviceId",
36421
+ form: "single",
36422
+ optional: false
36423
+ }],
36424
+ "streamBroker.getDeviceAudioMute": [{
36425
+ name: "deviceId",
36426
+ form: "single",
36427
+ optional: false
36428
+ }],
36429
+ "streamBroker.getStreamWithCodec": [{
36430
+ name: "deviceId",
36431
+ form: "single",
36432
+ optional: false
36433
+ }],
36434
+ "streamBroker.produceEventMedia": [{
36435
+ name: "deviceId",
36436
+ form: "single",
36437
+ optional: false
36438
+ }],
36439
+ "streamBroker.publishCameraStream": [{
36440
+ name: "deviceId",
36441
+ form: "single",
36442
+ optional: false
36443
+ }],
36444
+ "streamBroker.renderPreBufferClip": [{
36445
+ name: "deviceId",
36446
+ form: "single",
36447
+ optional: false
36448
+ }],
36449
+ "streamBroker.restartProfile": [{
36450
+ name: "deviceId",
36451
+ form: "single",
36452
+ optional: false
36453
+ }],
36454
+ "streamBroker.retractCameraStream": [{
36455
+ name: "deviceId",
36456
+ form: "single",
36457
+ optional: false
36458
+ }],
36459
+ "streamBroker.setDeviceAudioMute": [{
36460
+ name: "deviceId",
36461
+ form: "single",
36462
+ optional: false
36463
+ }],
36464
+ "streamBroker.unassignProfile": [{
36465
+ name: "deviceId",
36466
+ form: "single",
36467
+ optional: false
36468
+ }],
36469
+ "streamCatalog.getCatalog": [{
36470
+ name: "deviceId",
36471
+ form: "single",
36472
+ optional: false
36473
+ }],
36474
+ "streamParams.getConfigSchema": [{
36475
+ name: "deviceId",
36476
+ form: "single",
36477
+ optional: false
36478
+ }],
36479
+ "streamParams.getOptions": [{
36480
+ name: "deviceId",
36481
+ form: "single",
36482
+ optional: false
36483
+ }],
36484
+ "streamParams.setProfile": [{
36485
+ name: "deviceId",
36486
+ form: "single",
36487
+ optional: false
36488
+ }],
36489
+ "switch.setState": [{
36490
+ name: "deviceId",
36491
+ form: "single",
36492
+ optional: false
36493
+ }],
36494
+ "vacuumControl.locate": [{
36495
+ name: "deviceId",
36496
+ form: "single",
36497
+ optional: false
36498
+ }],
36499
+ "vacuumControl.pause": [{
36500
+ name: "deviceId",
36501
+ form: "single",
36502
+ optional: false
36503
+ }],
36504
+ "vacuumControl.returnToBase": [{
36505
+ name: "deviceId",
36506
+ form: "single",
36507
+ optional: false
36508
+ }],
36509
+ "vacuumControl.setFanSpeed": [{
36510
+ name: "deviceId",
36511
+ form: "single",
36512
+ optional: false
36513
+ }],
36514
+ "vacuumControl.start": [{
36515
+ name: "deviceId",
36516
+ form: "single",
36517
+ optional: false
36518
+ }],
36519
+ "vacuumControl.stop": [{
36520
+ name: "deviceId",
36521
+ form: "single",
36522
+ optional: false
36523
+ }],
36524
+ "valve.close": [{
36525
+ name: "deviceId",
36526
+ form: "single",
36527
+ optional: false
36528
+ }],
36529
+ "valve.open": [{
36530
+ name: "deviceId",
36531
+ form: "single",
36532
+ optional: false
36533
+ }],
36534
+ "valve.setPosition": [{
36535
+ name: "deviceId",
36536
+ form: "single",
36537
+ optional: false
36538
+ }],
36539
+ "valve.stop": [{
36540
+ name: "deviceId",
36541
+ form: "single",
36542
+ optional: false
36543
+ }],
36544
+ "videoclips.getClipPlayback": [{
36545
+ name: "deviceId",
36546
+ form: "single",
36547
+ optional: false
36548
+ }],
36549
+ "videoclips.listClips": [{
36550
+ name: "deviceId",
36551
+ form: "single",
36552
+ optional: false
36553
+ }],
36554
+ "waterHeater.setAway": [{
36555
+ name: "deviceId",
36556
+ form: "single",
36557
+ optional: false
36558
+ }],
36559
+ "waterHeater.setOperationMode": [{
36560
+ name: "deviceId",
36561
+ form: "single",
36562
+ optional: false
36563
+ }],
36564
+ "waterHeater.setTargetTemp": [{
36565
+ name: "deviceId",
36566
+ form: "single",
36567
+ optional: false
36568
+ }],
36569
+ "webrtcSession.addIceCandidate": [{
36570
+ name: "deviceId",
36571
+ form: "single",
36572
+ optional: false
36573
+ }],
36574
+ "webrtcSession.closeSession": [{
36575
+ name: "deviceId",
36576
+ form: "single",
36577
+ optional: false
36578
+ }],
36579
+ "webrtcSession.createSession": [{
36580
+ name: "deviceId",
36581
+ form: "single",
36582
+ optional: false
36583
+ }],
36584
+ "webrtcSession.getIceCandidates": [{
36585
+ name: "deviceId",
36586
+ form: "single",
36587
+ optional: false
36588
+ }],
36589
+ "webrtcSession.getSessionState": [{
36590
+ name: "deviceId",
36591
+ form: "single",
36592
+ optional: false
36593
+ }],
36594
+ "webrtcSession.handleAnswer": [{
36595
+ name: "deviceId",
36596
+ form: "single",
36597
+ optional: false
36598
+ }],
36599
+ "webrtcSession.handleOffer": [{
36600
+ name: "deviceId",
36601
+ form: "single",
36602
+ optional: false
36603
+ }],
36604
+ "webrtcSession.hasAdaptiveBitrate": [{
36605
+ name: "deviceId",
36606
+ form: "single",
36607
+ optional: false
36608
+ }],
36609
+ "webrtcSession.listStreams": [{
36610
+ name: "deviceId",
36611
+ form: "single",
36612
+ optional: false
36613
+ }],
36614
+ "zoneAnalytics.getCameraHistory": [{
36615
+ name: "deviceId",
36616
+ form: "single",
36617
+ optional: false
36618
+ }],
36619
+ "zoneAnalytics.getCurrentSnapshot": [{
36620
+ name: "deviceId",
36621
+ form: "single",
36622
+ optional: false
36623
+ }],
36624
+ "zoneAnalytics.getUnzonedHistory": [{
36625
+ name: "deviceId",
36626
+ form: "single",
36627
+ optional: false
36628
+ }],
36629
+ "zoneAnalytics.getZoneHistory": [{
36630
+ name: "deviceId",
36631
+ form: "single",
36632
+ optional: false
36633
+ }],
36634
+ "zoneRules.listRules": [{
36635
+ name: "deviceId",
36636
+ form: "single",
36637
+ optional: false
36638
+ }],
36639
+ "zoneRules.setRules": [{
36640
+ name: "deviceId",
36641
+ form: "single",
36642
+ optional: false
36643
+ }],
36644
+ "zones.addZone": [{
36645
+ name: "deviceId",
36646
+ form: "single",
36647
+ optional: false
36648
+ }],
36649
+ "zones.listZones": [{
36650
+ name: "deviceId",
36651
+ form: "single",
36652
+ optional: false
36653
+ }],
36654
+ "zones.removeZone": [{
36655
+ name: "deviceId",
36656
+ form: "single",
36657
+ optional: false
36658
+ }],
36659
+ "zones.updateZone": [{
36660
+ name: "deviceId",
36661
+ form: "single",
36662
+ optional: false
36663
+ }]
36664
+ });
34874
36665
  Object.freeze({
34875
36666
  "broker": "broker",
34876
36667
  "device-export": "device-export",
@@ -228798,6 +230589,29 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
228798
230589
  * UX without falsely claiming readiness when audio decode isn't
228799
230590
  * available.
228800
230591
  */
230592
+ /**
230593
+ * Mirror talk-back into the `intercom` runtime-state slice.
230594
+ *
230595
+ * The cap's `status` is command-driven and nothing reads it: every consumer
230596
+ * outside this process — the admin UI, the Home Assistant export — sees a
230597
+ * capability only through the runtime-state slice, via the
230598
+ * `device.state-changed` event or the `deviceState.getAllSnapshots`
230599
+ * snapshot. Without this write the `intercom` entity Home Assistant
230600
+ * publishes would exist and never receive a value, which is exactly the
230601
+ * defect that kept the capability out of the export.
230602
+ *
230603
+ * Called at the four points that open or close a session — and seeded at
230604
+ * registration, so the slice says `talking: false` from boot rather than
230605
+ * only after the first session.
230606
+ */
230607
+ publishIntercomState(talking) {
230608
+ const previous = this.getCapSlice(intercomCapability);
230609
+ this.setCapSlice(intercomCapability, {
230610
+ talking,
230611
+ lastSessionAt: talking ? Date.now() : previous?.lastSessionAt ?? null,
230612
+ ability: previous?.ability ?? null
230613
+ });
230614
+ }
228801
230615
  registerIntercomIfSupported() {
228802
230616
  if (this.intercomRegistered) return;
228803
230617
  const probe = this.getProbeFlags();
@@ -228832,7 +230646,14 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
228832
230646
  ...this.config.get("intercomMaxBacklogMs") !== void 0 ? { maxBacklogMs: this.config.get("intercomMaxBacklogMs") } : {},
228833
230647
  ...this.config.get("intercomGain") !== void 0 ? { outputGain: this.config.get("intercomGain") } : {}
228834
230648
  });
228835
- return this.intercomOrchestrator.start();
230649
+ try {
230650
+ const opened = await this.intercomOrchestrator.start();
230651
+ this.publishIntercomState(true);
230652
+ return opened;
230653
+ } catch (err) {
230654
+ this.publishIntercomState(false);
230655
+ throw err;
230656
+ }
228836
230657
  },
228837
230658
  handleAnswer: async ({ deviceId, sessionId, sdpAnswer }) => {
228838
230659
  if (deviceId !== this.id) return;
@@ -228843,6 +230664,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
228843
230664
  if (deviceId !== this.id) return;
228844
230665
  if (!this.intercomOrchestrator) return;
228845
230666
  await this.intercomOrchestrator.stop(sessionId);
230667
+ this.publishIntercomState(false);
228846
230668
  },
228847
230669
  startTalkSession: async ({ deviceId }) => {
228848
230670
  if (deviceId !== this.id) throw new Error(`ReolinkCamera: intercom deviceId mismatch, expected ${this.id}, got ${deviceId}`);
@@ -228873,6 +230695,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
228873
230695
  lastSequenceNumber: -1,
228874
230696
  opusDecode: null
228875
230697
  };
230698
+ this.publishIntercomState(true);
228876
230699
  this.ctx.logger.info("intercom talk session opened", {
228877
230700
  tags: { deviceId: this.id },
228878
230701
  meta: {
@@ -229000,6 +230823,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
229000
230823
  }
229001
230824
  });
229002
230825
  });
230826
+ this.publishIntercomState(false);
229003
230827
  this.ctx.logger.info("intercom talk session closed", {
229004
230828
  tags: { deviceId: this.id },
229005
230829
  meta: {
@@ -229009,6 +230833,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
229009
230833
  });
229010
230834
  }
229011
230835
  });
230836
+ this.publishIntercomState(false);
229012
230837
  this.ctx.logger.info("intercom cap registered (WebRTC + audio-codec wiring active)", { tags: { deviceId: this.id } });
229013
230838
  }
229014
230839
  /**