@camstack/addon-provider-reolink 1.2.94 → 1.2.96
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.
- package/dist/addon.js +124 -1
- package/dist/addon.mjs +124 -1
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -5433,6 +5433,12 @@ Object.fromEntries([
|
|
|
5433
5433
|
icon: "move",
|
|
5434
5434
|
order: 40
|
|
5435
5435
|
},
|
|
5436
|
+
{
|
|
5437
|
+
id: "navigation",
|
|
5438
|
+
label: "Navigation",
|
|
5439
|
+
icon: "compass",
|
|
5440
|
+
order: 41
|
|
5441
|
+
},
|
|
5436
5442
|
{
|
|
5437
5443
|
id: "consumables",
|
|
5438
5444
|
label: "Consumables",
|
|
@@ -6466,6 +6472,21 @@ var CameraStreamSchema = object({
|
|
|
6466
6472
|
*/
|
|
6467
6473
|
autoEligible: boolean().optional(),
|
|
6468
6474
|
/**
|
|
6475
|
+
* The profile slot the PUBLISHER says this stream is: `low` for a stream
|
|
6476
|
+
* whose only sensible role is the low-bandwidth one, `high` for a main
|
|
6477
|
+
* stream. Consulted by the broker's automatic ranking
|
|
6478
|
+
* (`rankInitialAssignment`) BEFORE the pixel-count heuristic, and only there:
|
|
6479
|
+
* an operator's manual assignment still wins, and an absent hint is the
|
|
6480
|
+
* pixel-ranked default every camera had before this field existed.
|
|
6481
|
+
*
|
|
6482
|
+
* Why it exists: a camera with ONE stream ranked to `mid` — the slot no
|
|
6483
|
+
* storage class is written for on its own (`recordings` is high|mid,
|
|
6484
|
+
* `recordingsLow` is low) and the one profile scrub does not read. The robot
|
|
6485
|
+
* camera's single 720p relay is a `low` in every respect except the slot the
|
|
6486
|
+
* heuristic put it in.
|
|
6487
|
+
*/
|
|
6488
|
+
profileHint: CamProfileSchema.optional(),
|
|
6489
|
+
/**
|
|
6469
6490
|
* Transport-specific opaque metadata. The broker passes it through to
|
|
6470
6491
|
* the source reader without inspecting it. Currently used by
|
|
6471
6492
|
* `pull-rfc4571` streams to carry the upstream SDP (so the reader can
|
|
@@ -8178,7 +8199,22 @@ var RecordingTriggersSchema = object({
|
|
|
8178
8199
|
* il livello: un contatto trovato già aperto al riavvio del runner non fa
|
|
8179
8200
|
* registrare.
|
|
8180
8201
|
*/
|
|
8181
|
-
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
8202
|
+
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional(),
|
|
8203
|
+
/**
|
|
8204
|
+
* La camera registra per tutta la durata del SEGNALE che lei stessa
|
|
8205
|
+
* pubblica — la cap `recording-signal` (`active: true` mentre il device è in
|
|
8206
|
+
* funzione: un robot che pulisce). È un LIVELLO, non un fronte: la finestra
|
|
8207
|
+
* resta aperta finché il segnale è alto e si chiude `postBufferSec` dopo la
|
|
8208
|
+
* caduta, così una pulizia di quaranta minuti è UNA clip.
|
|
8209
|
+
*
|
|
8210
|
+
* Non nomina un device: il segnale è della camera stessa, tenuto fresco dal
|
|
8211
|
+
* suo provider (D224); il recorder lo ascolta su `DeviceStateChanged` e lo
|
|
8212
|
+
* riconcilia leggendo la slice via RPC, con un tetto oltre il quale un
|
|
8213
|
+
* segnale mai abbassato (un evento perso) non può tenere aperta una
|
|
8214
|
+
* registrazione (D11). Vedi `recorder/addon/band-decision.ts`
|
|
8215
|
+
* (`holdTrigger` / `releaseTrigger`).
|
|
8216
|
+
*/
|
|
8217
|
+
deviceSignal: boolean().optional()
|
|
8182
8218
|
});
|
|
8183
8219
|
/**
|
|
8184
8220
|
* Mode of a single recording band — the recorder per-band vocabulary.
|
|
@@ -11923,6 +11959,8 @@ method(object({
|
|
|
11923
11959
|
label: string().optional(),
|
|
11924
11960
|
deviceFeatures: array(string()).optional(),
|
|
11925
11961
|
autoEligible: boolean().optional(),
|
|
11962
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
11963
|
+
profileHint: CamProfileSchema.optional(),
|
|
11926
11964
|
metadata: record(string(), unknown()).optional(),
|
|
11927
11965
|
/** Required when kind === 'derived' — the source camStreamId the
|
|
11928
11966
|
* derived broker reads its encoded plane from.
|
|
@@ -30733,6 +30771,77 @@ method(object({
|
|
|
30733
30771
|
auth: "protected"
|
|
30734
30772
|
});
|
|
30735
30773
|
/**
|
|
30774
|
+
* A camera's own "record me NOW" LEVEL — a signal the device raises while
|
|
30775
|
+
* something it knows about is happening (a robot vacuum cleaning, a machine
|
|
30776
|
+
* running, a gate open) and lowers when it stops.
|
|
30777
|
+
*
|
|
30778
|
+
* It is a level, not an edge. The sensor triggers the recorder already listens
|
|
30779
|
+
* to (`SOURCE_CAP_ACTIVE_FIELD`) fire on a rising edge and record for a fixed
|
|
30780
|
+
* post-buffer; a cleaning lasts forty minutes, and forty minutes of "this is
|
|
30781
|
+
* still happening" cannot be expressed as an edge plus a post-buffer without
|
|
30782
|
+
* either re-triggering on a timer (polling — D224 forbids the consumer keeping
|
|
30783
|
+
* the fact fresh) or picking a post-buffer long enough to cover every job,
|
|
30784
|
+
* which records the dock for that long after every short one. So the recorder
|
|
30785
|
+
* reads the LEVEL: it records for as long as `active` is true, plus the band's
|
|
30786
|
+
* own post-buffer once it falls.
|
|
30787
|
+
*
|
|
30788
|
+
* Who owns the fact: the PROVIDER of the device, which already reads the state
|
|
30789
|
+
* the signal is derived from (the vacuum's lifecycle state, for Dreame). It
|
|
30790
|
+
* writes this slice on every change; consumers subscribe to the kernel's
|
|
30791
|
+
* `DeviceStateChanged` for it and read it back through
|
|
30792
|
+
* `deviceState.getCapSlice` to reconcile — never a second copy, never a poll
|
|
30793
|
+
* against the device (D224, D8/D11).
|
|
30794
|
+
*
|
|
30795
|
+
* Deliberately NOT a `binary` sensor on the camera: a binary sensor is exported
|
|
30796
|
+
* to Home Assistant, HomeKit and the sensor picker as a thing an operator can
|
|
30797
|
+
* bind, and "the camera wants to record" is not a room sensor. It is a fact
|
|
30798
|
+
* about the camera, on the camera.
|
|
30799
|
+
*/
|
|
30800
|
+
var RecordingSignalStatusSchema = object({
|
|
30801
|
+
/** True while the device asks to be recorded. */
|
|
30802
|
+
active: boolean(),
|
|
30803
|
+
/**
|
|
30804
|
+
* Why, in the provider's own vocabulary (a vacuum's `cleaning` / `docked`,
|
|
30805
|
+
* …). Free text for the log line and the UI badge; the recorder never
|
|
30806
|
+
* branches on it.
|
|
30807
|
+
*/
|
|
30808
|
+
reason: string(),
|
|
30809
|
+
/** Ms epoch of the last `active` transition. 0 if never observed. */
|
|
30810
|
+
lastChangedAt: number()
|
|
30811
|
+
});
|
|
30812
|
+
/** The runtime-state slice: the status plus the clock every slice carries. */
|
|
30813
|
+
var RecordingSignalRuntimeStateSchema = RecordingSignalStatusSchema.extend({ lastFetchedAt: number() });
|
|
30814
|
+
var recordingSignalCapability = {
|
|
30815
|
+
name: "recording-signal",
|
|
30816
|
+
scope: "device",
|
|
30817
|
+
deviceNative: true,
|
|
30818
|
+
mode: "singleton",
|
|
30819
|
+
deviceTypes: [DeviceType.Camera],
|
|
30820
|
+
methods: {
|
|
30821
|
+
/** The current level, straight from the slice the provider keeps fresh. */
|
|
30822
|
+
getStatus: method(object({ deviceId: number() }), RecordingSignalStatusSchema) },
|
|
30823
|
+
status: {
|
|
30824
|
+
schema: RecordingSignalStatusSchema,
|
|
30825
|
+
kind: "push",
|
|
30826
|
+
empty: {
|
|
30827
|
+
active: false,
|
|
30828
|
+
reason: "unknown",
|
|
30829
|
+
lastChangedAt: 0
|
|
30830
|
+
}
|
|
30831
|
+
},
|
|
30832
|
+
runtimeState: RecordingSignalRuntimeStateSchema,
|
|
30833
|
+
/**
|
|
30834
|
+
* Runtime-state durability: **session** — a restored `active: true` from
|
|
30835
|
+
* before a restart is exactly the stale level the recorder's reconcile bound
|
|
30836
|
+
* exists to end, and the provider re-derives the true level on activation
|
|
30837
|
+
* anyway. Nothing is lost by forgetting it; a lie is avoided.
|
|
30838
|
+
*
|
|
30839
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
30840
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
30841
|
+
*/
|
|
30842
|
+
durability: "session"
|
|
30843
|
+
};
|
|
30844
|
+
/**
|
|
30736
30845
|
* scene-monitor — device-scoped reference-region state cap. An operator marks
|
|
30737
30846
|
* a rect ROI on a camera frame and names one or more states; the engine
|
|
30738
30847
|
* (pipeline-analytics, designated post-processing node) reports which state is
|
|
@@ -31230,6 +31339,8 @@ var CamStreamDescriptorSchema = object({
|
|
|
31230
31339
|
deviceFeatures: array(string()).optional(),
|
|
31231
31340
|
/** Eligible for automatic profile assignment. Absent = `true`. */
|
|
31232
31341
|
autoEligible: boolean().optional(),
|
|
31342
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
31343
|
+
profileHint: CamProfileSchema.optional(),
|
|
31233
31344
|
/** Transport-specific opaque metadata (e.g. rfc4571 SDP). */
|
|
31234
31345
|
metadata: record(string(), unknown()).optional()
|
|
31235
31346
|
});
|
|
@@ -33582,6 +33693,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
33582
33693
|
pressureSensor: pressureSensorCapability,
|
|
33583
33694
|
privacyMask: privacyMaskCapability,
|
|
33584
33695
|
ptzAutotrack: ptzAutotrackCapability,
|
|
33696
|
+
recordingSignal: recordingSignalCapability,
|
|
33585
33697
|
sceneMonitor: sceneMonitorCapability,
|
|
33586
33698
|
scriptRunner: scriptRunnerCapability,
|
|
33587
33699
|
smoke: smokeCapability,
|
|
@@ -39492,6 +39604,12 @@ Object.freeze({
|
|
|
39492
39604
|
addonId: null,
|
|
39493
39605
|
access: "view"
|
|
39494
39606
|
},
|
|
39607
|
+
"recordingSignal.getStatus": {
|
|
39608
|
+
capName: "recording-signal",
|
|
39609
|
+
capScope: "device",
|
|
39610
|
+
addonId: null,
|
|
39611
|
+
access: "view"
|
|
39612
|
+
},
|
|
39495
39613
|
"sceneMonitor.captureReference": {
|
|
39496
39614
|
capName: "scene-monitor",
|
|
39497
39615
|
capScope: "device",
|
|
@@ -42484,6 +42602,11 @@ Object.freeze({
|
|
|
42484
42602
|
form: "single",
|
|
42485
42603
|
optional: true
|
|
42486
42604
|
}],
|
|
42605
|
+
"recordingSignal.getStatus": [{
|
|
42606
|
+
name: "deviceId",
|
|
42607
|
+
form: "single",
|
|
42608
|
+
optional: false
|
|
42609
|
+
}],
|
|
42487
42610
|
"sceneMonitor.captureReference": [{
|
|
42488
42611
|
name: "deviceId",
|
|
42489
42612
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -5428,6 +5428,12 @@ Object.fromEntries([
|
|
|
5428
5428
|
icon: "move",
|
|
5429
5429
|
order: 40
|
|
5430
5430
|
},
|
|
5431
|
+
{
|
|
5432
|
+
id: "navigation",
|
|
5433
|
+
label: "Navigation",
|
|
5434
|
+
icon: "compass",
|
|
5435
|
+
order: 41
|
|
5436
|
+
},
|
|
5431
5437
|
{
|
|
5432
5438
|
id: "consumables",
|
|
5433
5439
|
label: "Consumables",
|
|
@@ -6461,6 +6467,21 @@ var CameraStreamSchema = object({
|
|
|
6461
6467
|
*/
|
|
6462
6468
|
autoEligible: boolean().optional(),
|
|
6463
6469
|
/**
|
|
6470
|
+
* The profile slot the PUBLISHER says this stream is: `low` for a stream
|
|
6471
|
+
* whose only sensible role is the low-bandwidth one, `high` for a main
|
|
6472
|
+
* stream. Consulted by the broker's automatic ranking
|
|
6473
|
+
* (`rankInitialAssignment`) BEFORE the pixel-count heuristic, and only there:
|
|
6474
|
+
* an operator's manual assignment still wins, and an absent hint is the
|
|
6475
|
+
* pixel-ranked default every camera had before this field existed.
|
|
6476
|
+
*
|
|
6477
|
+
* Why it exists: a camera with ONE stream ranked to `mid` — the slot no
|
|
6478
|
+
* storage class is written for on its own (`recordings` is high|mid,
|
|
6479
|
+
* `recordingsLow` is low) and the one profile scrub does not read. The robot
|
|
6480
|
+
* camera's single 720p relay is a `low` in every respect except the slot the
|
|
6481
|
+
* heuristic put it in.
|
|
6482
|
+
*/
|
|
6483
|
+
profileHint: CamProfileSchema.optional(),
|
|
6484
|
+
/**
|
|
6464
6485
|
* Transport-specific opaque metadata. The broker passes it through to
|
|
6465
6486
|
* the source reader without inspecting it. Currently used by
|
|
6466
6487
|
* `pull-rfc4571` streams to carry the upstream SDP (so the reader can
|
|
@@ -8173,7 +8194,22 @@ var RecordingTriggersSchema = object({
|
|
|
8173
8194
|
* il livello: un contatto trovato già aperto al riavvio del runner non fa
|
|
8174
8195
|
* registrare.
|
|
8175
8196
|
*/
|
|
8176
|
-
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
8197
|
+
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional(),
|
|
8198
|
+
/**
|
|
8199
|
+
* La camera registra per tutta la durata del SEGNALE che lei stessa
|
|
8200
|
+
* pubblica — la cap `recording-signal` (`active: true` mentre il device è in
|
|
8201
|
+
* funzione: un robot che pulisce). È un LIVELLO, non un fronte: la finestra
|
|
8202
|
+
* resta aperta finché il segnale è alto e si chiude `postBufferSec` dopo la
|
|
8203
|
+
* caduta, così una pulizia di quaranta minuti è UNA clip.
|
|
8204
|
+
*
|
|
8205
|
+
* Non nomina un device: il segnale è della camera stessa, tenuto fresco dal
|
|
8206
|
+
* suo provider (D224); il recorder lo ascolta su `DeviceStateChanged` e lo
|
|
8207
|
+
* riconcilia leggendo la slice via RPC, con un tetto oltre il quale un
|
|
8208
|
+
* segnale mai abbassato (un evento perso) non può tenere aperta una
|
|
8209
|
+
* registrazione (D11). Vedi `recorder/addon/band-decision.ts`
|
|
8210
|
+
* (`holdTrigger` / `releaseTrigger`).
|
|
8211
|
+
*/
|
|
8212
|
+
deviceSignal: boolean().optional()
|
|
8177
8213
|
});
|
|
8178
8214
|
/**
|
|
8179
8215
|
* Mode of a single recording band — the recorder per-band vocabulary.
|
|
@@ -11918,6 +11954,8 @@ method(object({
|
|
|
11918
11954
|
label: string().optional(),
|
|
11919
11955
|
deviceFeatures: array(string()).optional(),
|
|
11920
11956
|
autoEligible: boolean().optional(),
|
|
11957
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
11958
|
+
profileHint: CamProfileSchema.optional(),
|
|
11921
11959
|
metadata: record(string(), unknown()).optional(),
|
|
11922
11960
|
/** Required when kind === 'derived' — the source camStreamId the
|
|
11923
11961
|
* derived broker reads its encoded plane from.
|
|
@@ -30728,6 +30766,77 @@ method(object({
|
|
|
30728
30766
|
auth: "protected"
|
|
30729
30767
|
});
|
|
30730
30768
|
/**
|
|
30769
|
+
* A camera's own "record me NOW" LEVEL — a signal the device raises while
|
|
30770
|
+
* something it knows about is happening (a robot vacuum cleaning, a machine
|
|
30771
|
+
* running, a gate open) and lowers when it stops.
|
|
30772
|
+
*
|
|
30773
|
+
* It is a level, not an edge. The sensor triggers the recorder already listens
|
|
30774
|
+
* to (`SOURCE_CAP_ACTIVE_FIELD`) fire on a rising edge and record for a fixed
|
|
30775
|
+
* post-buffer; a cleaning lasts forty minutes, and forty minutes of "this is
|
|
30776
|
+
* still happening" cannot be expressed as an edge plus a post-buffer without
|
|
30777
|
+
* either re-triggering on a timer (polling — D224 forbids the consumer keeping
|
|
30778
|
+
* the fact fresh) or picking a post-buffer long enough to cover every job,
|
|
30779
|
+
* which records the dock for that long after every short one. So the recorder
|
|
30780
|
+
* reads the LEVEL: it records for as long as `active` is true, plus the band's
|
|
30781
|
+
* own post-buffer once it falls.
|
|
30782
|
+
*
|
|
30783
|
+
* Who owns the fact: the PROVIDER of the device, which already reads the state
|
|
30784
|
+
* the signal is derived from (the vacuum's lifecycle state, for Dreame). It
|
|
30785
|
+
* writes this slice on every change; consumers subscribe to the kernel's
|
|
30786
|
+
* `DeviceStateChanged` for it and read it back through
|
|
30787
|
+
* `deviceState.getCapSlice` to reconcile — never a second copy, never a poll
|
|
30788
|
+
* against the device (D224, D8/D11).
|
|
30789
|
+
*
|
|
30790
|
+
* Deliberately NOT a `binary` sensor on the camera: a binary sensor is exported
|
|
30791
|
+
* to Home Assistant, HomeKit and the sensor picker as a thing an operator can
|
|
30792
|
+
* bind, and "the camera wants to record" is not a room sensor. It is a fact
|
|
30793
|
+
* about the camera, on the camera.
|
|
30794
|
+
*/
|
|
30795
|
+
var RecordingSignalStatusSchema = object({
|
|
30796
|
+
/** True while the device asks to be recorded. */
|
|
30797
|
+
active: boolean(),
|
|
30798
|
+
/**
|
|
30799
|
+
* Why, in the provider's own vocabulary (a vacuum's `cleaning` / `docked`,
|
|
30800
|
+
* …). Free text for the log line and the UI badge; the recorder never
|
|
30801
|
+
* branches on it.
|
|
30802
|
+
*/
|
|
30803
|
+
reason: string(),
|
|
30804
|
+
/** Ms epoch of the last `active` transition. 0 if never observed. */
|
|
30805
|
+
lastChangedAt: number()
|
|
30806
|
+
});
|
|
30807
|
+
/** The runtime-state slice: the status plus the clock every slice carries. */
|
|
30808
|
+
var RecordingSignalRuntimeStateSchema = RecordingSignalStatusSchema.extend({ lastFetchedAt: number() });
|
|
30809
|
+
var recordingSignalCapability = {
|
|
30810
|
+
name: "recording-signal",
|
|
30811
|
+
scope: "device",
|
|
30812
|
+
deviceNative: true,
|
|
30813
|
+
mode: "singleton",
|
|
30814
|
+
deviceTypes: [DeviceType.Camera],
|
|
30815
|
+
methods: {
|
|
30816
|
+
/** The current level, straight from the slice the provider keeps fresh. */
|
|
30817
|
+
getStatus: method(object({ deviceId: number() }), RecordingSignalStatusSchema) },
|
|
30818
|
+
status: {
|
|
30819
|
+
schema: RecordingSignalStatusSchema,
|
|
30820
|
+
kind: "push",
|
|
30821
|
+
empty: {
|
|
30822
|
+
active: false,
|
|
30823
|
+
reason: "unknown",
|
|
30824
|
+
lastChangedAt: 0
|
|
30825
|
+
}
|
|
30826
|
+
},
|
|
30827
|
+
runtimeState: RecordingSignalRuntimeStateSchema,
|
|
30828
|
+
/**
|
|
30829
|
+
* Runtime-state durability: **session** — a restored `active: true` from
|
|
30830
|
+
* before a restart is exactly the stale level the recorder's reconcile bound
|
|
30831
|
+
* exists to end, and the provider re-derives the true level on activation
|
|
30832
|
+
* anyway. Nothing is lost by forgetting it; a lie is avoided.
|
|
30833
|
+
*
|
|
30834
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
30835
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
30836
|
+
*/
|
|
30837
|
+
durability: "session"
|
|
30838
|
+
};
|
|
30839
|
+
/**
|
|
30731
30840
|
* scene-monitor — device-scoped reference-region state cap. An operator marks
|
|
30732
30841
|
* a rect ROI on a camera frame and names one or more states; the engine
|
|
30733
30842
|
* (pipeline-analytics, designated post-processing node) reports which state is
|
|
@@ -31225,6 +31334,8 @@ var CamStreamDescriptorSchema = object({
|
|
|
31225
31334
|
deviceFeatures: array(string()).optional(),
|
|
31226
31335
|
/** Eligible for automatic profile assignment. Absent = `true`. */
|
|
31227
31336
|
autoEligible: boolean().optional(),
|
|
31337
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
31338
|
+
profileHint: CamProfileSchema.optional(),
|
|
31228
31339
|
/** Transport-specific opaque metadata (e.g. rfc4571 SDP). */
|
|
31229
31340
|
metadata: record(string(), unknown()).optional()
|
|
31230
31341
|
});
|
|
@@ -33577,6 +33688,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
33577
33688
|
pressureSensor: pressureSensorCapability,
|
|
33578
33689
|
privacyMask: privacyMaskCapability,
|
|
33579
33690
|
ptzAutotrack: ptzAutotrackCapability,
|
|
33691
|
+
recordingSignal: recordingSignalCapability,
|
|
33580
33692
|
sceneMonitor: sceneMonitorCapability,
|
|
33581
33693
|
scriptRunner: scriptRunnerCapability,
|
|
33582
33694
|
smoke: smokeCapability,
|
|
@@ -39487,6 +39599,12 @@ Object.freeze({
|
|
|
39487
39599
|
addonId: null,
|
|
39488
39600
|
access: "view"
|
|
39489
39601
|
},
|
|
39602
|
+
"recordingSignal.getStatus": {
|
|
39603
|
+
capName: "recording-signal",
|
|
39604
|
+
capScope: "device",
|
|
39605
|
+
addonId: null,
|
|
39606
|
+
access: "view"
|
|
39607
|
+
},
|
|
39490
39608
|
"sceneMonitor.captureReference": {
|
|
39491
39609
|
capName: "scene-monitor",
|
|
39492
39610
|
capScope: "device",
|
|
@@ -42479,6 +42597,11 @@ Object.freeze({
|
|
|
42479
42597
|
form: "single",
|
|
42480
42598
|
optional: true
|
|
42481
42599
|
}],
|
|
42600
|
+
"recordingSignal.getStatus": [{
|
|
42601
|
+
name: "deviceId",
|
|
42602
|
+
form: "single",
|
|
42603
|
+
optional: false
|
|
42604
|
+
}],
|
|
42482
42605
|
"sceneMonitor.captureReference": [{
|
|
42483
42606
|
name: "deviceId",
|
|
42484
42607
|
form: "single",
|