@camstack/addon-provider-wyze 0.2.123 → 0.2.124
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 +599 -140
- package/dist/addon.mjs +599 -140
- package/package.json +1 -3
package/dist/addon.mjs
CHANGED
|
@@ -7433,7 +7433,7 @@ function errMsg(err) {
|
|
|
7433
7433
|
return String(err);
|
|
7434
7434
|
}
|
|
7435
7435
|
//#endregion
|
|
7436
|
-
//#region ../types/dist/composition-
|
|
7436
|
+
//#region ../types/dist/composition-Bzr7GwgP.mjs
|
|
7437
7437
|
/**
|
|
7438
7438
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
7439
7439
|
*
|
|
@@ -7487,20 +7487,20 @@ function portable(target) {
|
|
|
7487
7487
|
}
|
|
7488
7488
|
portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
|
|
7489
7489
|
/**
|
|
7490
|
-
*
|
|
7491
|
-
*
|
|
7490
|
+
* THE table "which boolean of this device type counts as HIGH", and the
|
|
7491
|
+
* pure evaluator of its EDGE.
|
|
7492
7492
|
*
|
|
7493
|
-
*
|
|
7494
|
-
*
|
|
7495
|
-
*
|
|
7496
|
-
*
|
|
7497
|
-
*
|
|
7498
|
-
*
|
|
7493
|
+
* ONE table for everyone who asks "is this device HIGH?": the
|
|
7494
|
+
* recorder's `RecordingTriggers.sensorDeviceIds` trigger, the post-analysis
|
|
7495
|
+
* sensor markers, the orchestrator's camera-sensors bridge and
|
|
7496
|
+
* the sources of a composite doorbell (`doorbellFeatureSources`, D671).
|
|
7497
|
+
* A second copy would diverge at the first cap added, and the symptom — "the
|
|
7498
|
+
* sensor rings the doorbell but does not record" — is exactly D62.
|
|
7499
7499
|
*
|
|
7500
|
-
* ⚠
|
|
7501
|
-
*
|
|
7502
|
-
*
|
|
7503
|
-
*
|
|
7500
|
+
* ⚠ NOT `DEVICE_STATE_READERS` (`catalogs/device-state-vocabulary.ts`), and the
|
|
7501
|
+
* two must not be unified: that one answers "what is the state WORD for a
|
|
7502
|
+
* rule" (and includes `presence`, `cover`, `alarm-panel`), this one "which
|
|
7503
|
+
* boolean's EDGE counts". Deliberately different vocabularies.
|
|
7504
7504
|
*/
|
|
7505
7505
|
/**
|
|
7506
7506
|
* Known binary / switch source caps → the boolean slice field whose
|
|
@@ -7521,6 +7521,8 @@ var SOURCE_CAP_ACTIVE_FIELD = {
|
|
|
7521
7521
|
vibration: "detected",
|
|
7522
7522
|
tamper: "tampered"
|
|
7523
7523
|
};
|
|
7524
|
+
/** Cap names whose presence in a device's bindings qualify it as a source. */
|
|
7525
|
+
var SOURCE_CAPS = Object.keys(SOURCE_CAP_ACTIVE_FIELD);
|
|
7524
7526
|
/**
|
|
7525
7527
|
* Error types for the safe expression engine. Two distinct classes so callers
|
|
7526
7528
|
* can tell a compile-time (grammar) failure from a runtime (evaluation)
|
|
@@ -9127,22 +9129,22 @@ var CLASS_MAP_MACRO_TARGETS = [
|
|
|
9127
9129
|
"package"
|
|
9128
9130
|
];
|
|
9129
9131
|
/**
|
|
9130
|
-
*
|
|
9131
|
-
*
|
|
9132
|
+
* The FIRST-LEVEL macro classes: those an object detector emits and that
|
|
9133
|
+
* an operator can select.
|
|
9132
9134
|
*
|
|
9133
|
-
*
|
|
9135
|
+
* They are the three offered by the `object-detection` step
|
|
9134
9136
|
* (`addon-pipeline/src/detection-pipeline/registry/step-definitions.ts`,
|
|
9135
|
-
* `enabledMacroClasses`). `package`
|
|
9136
|
-
* `MACRO_LABELS` —
|
|
9137
|
-
* `package-detection`,
|
|
9138
|
-
*
|
|
9137
|
+
* `enabledMacroClasses`). `package` is in {@link CLASS_MAP_MACRO_TARGETS} and in
|
|
9138
|
+
* `MACRO_LABELS` — it is a true macro — but NOT here: it belongs to the step
|
|
9139
|
+
* `package-detection`, whose enablement is driven by zones, and offering the
|
|
9140
|
+
* same word twice has already made an operator turn on the COCO proxy
|
|
9139
9141
|
* (suitcase/backpack/handbag) lasciando spento il detector dedicato.
|
|
9140
9142
|
*
|
|
9141
|
-
*
|
|
9142
|
-
*
|
|
9143
|
-
* (`types/detection.ts`);
|
|
9144
|
-
* (`RecordingTriggers.objectClasses`)
|
|
9145
|
-
*
|
|
9143
|
+
* ONE list. Before today the same three were hand-written in the step's offer
|
|
9144
|
+
* and a second time as the union `FirstLevelMacro`
|
|
9145
|
+
* (`types/detection.ts`); a third copy for the recording trigger
|
|
9146
|
+
* (`RecordingTriggers.objectClasses`) would have made the later divergence
|
|
9147
|
+
* invisible.
|
|
9146
9148
|
*/
|
|
9147
9149
|
var FIRST_LEVEL_MACRO_CLASSES = [
|
|
9148
9150
|
"person",
|
|
@@ -9207,17 +9209,17 @@ var RecordingStorageModeSchema = _enum([
|
|
|
9207
9209
|
"on-device-decision"
|
|
9208
9210
|
]);
|
|
9209
9211
|
/**
|
|
9210
|
-
*
|
|
9211
|
-
*
|
|
9212
|
+
* The macro classes that can open a recording window — the same
|
|
9213
|
+
* three offered by the `object-detection` step, from ONE list
|
|
9212
9214
|
* ({@link FIRST_LEVEL_MACRO_CLASSES}).
|
|
9213
9215
|
*/
|
|
9214
9216
|
var RecordingObjectTriggerClassSchema = _enum(FIRST_LEVEL_MACRO_CLASSES);
|
|
9215
9217
|
/**
|
|
9216
|
-
* True
|
|
9218
|
+
* True when `values` does not repeat an element.
|
|
9217
9219
|
*
|
|
9218
|
-
*
|
|
9219
|
-
*
|
|
9220
|
-
*
|
|
9220
|
+
* A duplicate is not harmless: every entry of `objectClasses` / `sensorDeviceIds`
|
|
9221
|
+
* becomes a SOURCE in `bandTriggerSources`, and the same source twice
|
|
9222
|
+
* would count its windows twice in `segmentMissedByMs`.
|
|
9221
9223
|
*/
|
|
9222
9224
|
var noDuplicates = (values) => new Set(values).size === values.length;
|
|
9223
9225
|
/** Which detectors trigger an `events`-mode band. */
|
|
@@ -9225,34 +9227,34 @@ var RecordingTriggersSchema = object({
|
|
|
9225
9227
|
motion: boolean().optional(),
|
|
9226
9228
|
audioThresholdDbfs: number().optional(),
|
|
9227
9229
|
/**
|
|
9228
|
-
*
|
|
9229
|
-
*
|
|
9230
|
-
*
|
|
9231
|
-
*
|
|
9230
|
+
* The macro classes whose detection opens a window. ABSENT = the source
|
|
9231
|
+
* is not listened to; an EMPTY array is rejected, because "events band, object
|
|
9232
|
+
* trigger on, no class" is the same shape "enabled and records
|
|
9233
|
+
* nothing, forever" that `eventsBandCanEverDemand` is written against.
|
|
9232
9234
|
*
|
|
9233
|
-
*
|
|
9234
|
-
*
|
|
9235
|
-
* `minConfidence<Macro>`
|
|
9236
|
-
* (`source: 'onboard'`)
|
|
9237
|
-
*
|
|
9235
|
+
* The signal read is ALREADY FILTERED: only `source: 'pipeline'` detections, i.e.
|
|
9236
|
+
* those that went through `enabledMacroClasses`, the
|
|
9237
|
+
* `minConfidence<Macro>` and the full-frame guard. The camera's onboard AI
|
|
9238
|
+
* (`source: 'onboard'`) goes through none of those gates and does NOT open
|
|
9239
|
+
* windows — see `recorder/object-trigger.ts`.
|
|
9238
9240
|
*/
|
|
9239
9241
|
objectClasses: array(RecordingObjectTriggerClassSchema).min(1).refine(noDuplicates, { message: "objectClasses must not repeat a class" }).optional(),
|
|
9240
9242
|
/**
|
|
9241
|
-
*
|
|
9242
|
-
*
|
|
9243
|
+
* The LINKED devices whose RISING EDGE opens a window. Absent = the source
|
|
9244
|
+
* is not listened to; an empty array is rejected for the same reason as
|
|
9243
9245
|
* `objectClasses`.
|
|
9244
9246
|
*
|
|
9245
|
-
*
|
|
9246
|
-
*
|
|
9247
|
-
*
|
|
9248
|
-
*
|
|
9249
|
-
* device (D12) —
|
|
9247
|
+
* These are SOURCE device ids, not cameras: the band names them, so the
|
|
9248
|
+
* hot path (`DeviceStateChanged`, at bus rate across the whole fleet)
|
|
9249
|
+
* does no RPC. The OFFER from which the operator picks them is another question, and
|
|
9250
|
+
* is resolved with `deviceManager.getLinkedDevices` + `getBindingsBatch` per
|
|
9251
|
+
* device (D12) — never a global list of caps.
|
|
9250
9252
|
*
|
|
9251
|
-
*
|
|
9252
|
-
* `SOURCE_CAP_ACTIVE_FIELD` (`catalogs/sensor-active-state.ts`)
|
|
9253
|
-
*
|
|
9254
|
-
*
|
|
9255
|
-
*
|
|
9253
|
+
* What "high" means depends on the device TYPE and is not decided here:
|
|
9254
|
+
* `SOURCE_CAP_ACTIVE_FIELD` (`catalogs/sensor-active-state.ts`) is THE table,
|
|
9255
|
+
* the same one as the composite doorbell (D671). And it is the EDGE, not
|
|
9256
|
+
* the level: a contact found already open at runner restart does not
|
|
9257
|
+
* record.
|
|
9256
9258
|
*/
|
|
9257
9259
|
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
9258
9260
|
});
|
|
@@ -10329,7 +10331,7 @@ var DecoderSessionConfigSchema = object({
|
|
|
10329
10331
|
* - **VALUE** — at which level, for which scope, until when. That stays ONE
|
|
10330
10332
|
* thing: the logging settings document on the `system` cap. Two authorities
|
|
10331
10333
|
* over the values is the exact defect
|
|
10332
|
-
* `docs/design/plans/2026-08-26-
|
|
10334
|
+
* `docs/design/plans/2026-08-26-per-component-logging.md` was written to
|
|
10333
10335
|
* remove; re-introducing it from the cure side would be grotesque.
|
|
10334
10336
|
*
|
|
10335
10337
|
* Nothing in this file reads a clock, an env var or a store. The registry is
|
|
@@ -12040,7 +12042,7 @@ var BrokerStatusEnum = _enum([
|
|
|
12040
12042
|
"unreachable",
|
|
12041
12043
|
"error"
|
|
12042
12044
|
]);
|
|
12043
|
-
var BrokerInfoSchema
|
|
12045
|
+
var BrokerInfoSchema = object({
|
|
12044
12046
|
/** Stable broker id. Persisted; survives addon restarts. */
|
|
12045
12047
|
id: string(),
|
|
12046
12048
|
/** Addon id of the provider that OWNS this broker.
|
|
@@ -12173,7 +12175,7 @@ var GetStateInputSchema = object({
|
|
|
12173
12175
|
* HA: entity_id (returns the cached entity state). */
|
|
12174
12176
|
key: string()
|
|
12175
12177
|
});
|
|
12176
|
-
method(ListInputSchema, array(BrokerInfoSchema
|
|
12178
|
+
method(ListInputSchema, array(BrokerInfoSchema)), method(GetInputSchema, BrokerInfoSchema.nullable()), method(_void(), array(BrokerProviderInfoSchema), { auth: "admin" }), method(AddInputSchema, AddResultSchema, {
|
|
12177
12179
|
kind: "mutation",
|
|
12178
12180
|
auth: "admin"
|
|
12179
12181
|
}), method(RemoveInputSchema, _void(), {
|
|
@@ -13884,7 +13886,7 @@ method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
|
13884
13886
|
*
|
|
13885
13887
|
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
13886
13888
|
* was wrong — corrected 2026-08-26 after the hop map
|
|
13887
|
-
* (`docs/design/2026-08-26-
|
|
13889
|
+
* (`docs/design/2026-08-26-topic-hop-map.md`) traced the path.
|
|
13888
13890
|
* There is **no Zod parse at all** between the door and the engine: the
|
|
13889
13891
|
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
13890
13892
|
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
@@ -15991,7 +15993,7 @@ method(object({
|
|
|
15991
15993
|
* per-device window, `KeyFrameCaptureLog`, `bumpCropMetric`. Every one of them
|
|
15992
15994
|
* ends in a log line, and a log line is the thing the operator asked to stop
|
|
15993
15995
|
* needing: *"possiamo armare questi errori intanto? Così al prossimo giro
|
|
15994
|
-
* ricontrolliamo tutti questi punti"
|
|
15996
|
+
* ricontrolliamo tutti questi punti"* [can we instrument these errors in the meantime? That way next round we recheck all these points]. Reading them meant grepping Loki and
|
|
15995
15997
|
* hand-correlating timestamps, which is how a 22% thumbnail gap and a 3-hour
|
|
15996
15998
|
* media blackout were both diagnosed. The counters stay; this is where they can
|
|
15997
15999
|
* be READ.
|
|
@@ -17367,7 +17369,7 @@ var BrokerStatusSchema$1 = _enum([
|
|
|
17367
17369
|
"unreachable",
|
|
17368
17370
|
"tls-error"
|
|
17369
17371
|
]);
|
|
17370
|
-
var BrokerInfoSchema = object({
|
|
17372
|
+
var BrokerInfoSchema$1 = object({
|
|
17371
17373
|
id: string(),
|
|
17372
17374
|
name: string(),
|
|
17373
17375
|
url: string(),
|
|
@@ -17430,7 +17432,7 @@ var StatusSchema = object({
|
|
|
17430
17432
|
brokerCount: number(),
|
|
17431
17433
|
embeddedRunning: boolean()
|
|
17432
17434
|
});
|
|
17433
|
-
method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }), method(AddBrokerInputSchema, AddBrokerResultSchema, {
|
|
17435
|
+
method(_void(), array(BrokerInfoSchema$1)), method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }), method(AddBrokerInputSchema, AddBrokerResultSchema, {
|
|
17434
17436
|
kind: "mutation",
|
|
17435
17437
|
auth: "admin"
|
|
17436
17438
|
}), method(IdInputSchema, _void(), {
|
|
@@ -19644,78 +19646,16 @@ var NcRuleInputSchema = object({
|
|
|
19644
19646
|
*/
|
|
19645
19647
|
confirm: NcConfirmSchema.optional(),
|
|
19646
19648
|
/**
|
|
19647
|
-
*
|
|
19648
|
-
*
|
|
19649
|
-
*
|
|
19650
|
-
*
|
|
19651
|
-
*
|
|
19652
|
-
*
|
|
19653
|
-
*
|
|
19654
|
-
*
|
|
19655
|
-
*
|
|
19656
|
-
* Only two honest answers exist, and this flag picks between them. It has
|
|
19657
|
-
* effect ONLY on a rule that declares a recognition scope
|
|
19658
|
-
* ({@link NcConditions.identities} or {@link NcConditions.plates}) — on any
|
|
19659
|
-
* other rule there is nothing to wait for and the flag is inert.
|
|
19660
|
-
*
|
|
19661
|
-
* | value | what happens |
|
|
19662
|
-
* | --- | --- |
|
|
19663
|
-
* | `true` | the rule stops firing on the object event and fires at TRACK CLOSE instead, once, with the name — later, and complete |
|
|
19664
|
-
* | absent / `false` | it fires at once WITHOUT the name, and if recognition lands before the track closes a SECOND, "…is Gianluca" notification follows (one per track, per rule, per target) |
|
|
19665
|
-
*
|
|
19666
|
-
* `.optional()` and deliberately NOT `.default()`: a Zod default does not run
|
|
19667
|
-
* on the addon cap path, and absent has to keep meaning exactly what every
|
|
19668
|
-
* rule authored before this field meant.
|
|
19669
|
-
*
|
|
19670
|
-
* The cost of `true` is stated here because the editor states it too: a rule
|
|
19671
|
-
* that waits also inherits track-close SEMANTICS — its `zones` condition
|
|
19672
|
-
* tests every zone the track visited and a `crossing` condition can no longer
|
|
19673
|
-
* be satisfied, because a closed track carries no crossing.
|
|
19649
|
+
* IMMEDIATE GROUPED (D692): the first matching subject opens a window of this many
|
|
19650
|
+
* seconds; the rule sends ONE message when the window closes — early, once every
|
|
19651
|
+
* subject in it is final, never before {@link NC_GROUPING_MIN_SEC} — naming everybody
|
|
19652
|
+
* the rule matched, with one mosaic tile per subject.
|
|
19653
|
+
* Absent = plain immediate (one message per track, at the first match).
|
|
19654
|
+
* Only an `immediate` DETECTION rule may carry it (`ruleGroupingApplies`, enforced on
|
|
19655
|
+
* save by the hub's grouping guard). `.optional()`, never `.default()`: the addon cap
|
|
19656
|
+
* path does not run Zod defaults.
|
|
19674
19657
|
*/
|
|
19675
|
-
|
|
19676
|
-
/**
|
|
19677
|
-
* GROUP a burst of subjects into ONE notification that grows.
|
|
19678
|
-
*
|
|
19679
|
-
* Seconds of quiet after the last matching subject before the burst is
|
|
19680
|
-
* considered over. While it is open, the first subject enqueues immediately —
|
|
19681
|
-
* **exactly as today, with no added latency** — and every real growth (a new
|
|
19682
|
-
* subject, or a name confirmed on one already in it) REPLACES that
|
|
19683
|
-
* notification with an updated one naming everybody. The push carries the
|
|
19684
|
-
* group's own coalescing tag, so the phone replaces rather than stacks.
|
|
19685
|
-
*
|
|
19686
|
-
* `0` / absent = off, and off is today's behaviour byte for byte.
|
|
19687
|
-
*
|
|
19688
|
-
* ### Why an idle cutoff and not a window
|
|
19689
|
-
*
|
|
19690
|
-
* The measured seven-person arrival on device 590 spans 110 s with every
|
|
19691
|
-
* internal gap under 30 s. A 12 s fixed window cuts it into three groups; an
|
|
19692
|
-
* idle cutoff holds it as one and ends it when the arrival actually ends.
|
|
19693
|
-
* 30 s is a widely shipped value for the same decision.
|
|
19694
|
-
*
|
|
19695
|
-
* ### What it replaces
|
|
19696
|
-
*
|
|
19697
|
-
* The blind cooldown, which collapses a burst by DISCARDING it. Measured on
|
|
19698
|
-
* device 615 / *Persona su Uscio* over six days: 116 qualifying tracks → 74
|
|
19699
|
-
* notifications, **44 (37.9%) suppressed outright**, 23 of them overlapping a
|
|
19700
|
-
* track that did fire and 7 carrying a confirmed identity nobody heard about.
|
|
19701
|
-
* A group collapses the same volume by MERGING, so the cooldown becomes a
|
|
19702
|
-
* budget over GROUPS — which is what it always meant — and a growth is never
|
|
19703
|
-
* throttled by the window its own first member spent.
|
|
19704
|
-
*
|
|
19705
|
-
* ### Interaction with {@link waitForEnhancement}
|
|
19706
|
-
*
|
|
19707
|
-
* They compose, and the order matters. `waitForEnhancement` defers the rule to
|
|
19708
|
-
* TRACK CLOSE, so with both set the group is opened by the first member to
|
|
19709
|
-
* CLOSE — already carrying its name — and grows as later members close. That
|
|
19710
|
-
* is later, and complete. With grouping alone the group opens on the first
|
|
19711
|
-
* object event and picks up names as they are confirmed, through the growth
|
|
19712
|
-
* path. Neither combination fires twice for one subject.
|
|
19713
|
-
*
|
|
19714
|
-
* `.optional()` and deliberately NOT `.default()`: a Zod default does not run
|
|
19715
|
-
* on the addon cap path, so absent must keep meaning what it meant before this
|
|
19716
|
-
* field existed.
|
|
19717
|
-
*/
|
|
19718
|
-
groupIdleSec: number().int().min(0).max(600).optional()
|
|
19658
|
+
groupingSec: number().int().min(5).max(60).optional()
|
|
19719
19659
|
});
|
|
19720
19660
|
/**
|
|
19721
19661
|
* Partial patch for `updateRule` — any subset of the input fields, plus the
|
|
@@ -19763,9 +19703,10 @@ var NcRuleClearableKeySchema = _enum([
|
|
|
19763
19703
|
"targetUsers",
|
|
19764
19704
|
"snoozeOptions",
|
|
19765
19705
|
"snoozeAllowGlobal",
|
|
19766
|
-
"waitForEnhancement",
|
|
19767
19706
|
"actions",
|
|
19768
19707
|
"confirm",
|
|
19708
|
+
"groupingSec",
|
|
19709
|
+
"waitForEnhancement",
|
|
19769
19710
|
"groupIdleSec"
|
|
19770
19711
|
]);
|
|
19771
19712
|
var NcRuleUpdateInputSchema = object({
|
|
@@ -19787,9 +19728,25 @@ var NcRuleSchema = NcRuleInputSchema.extend({
|
|
|
19787
19728
|
*/
|
|
19788
19729
|
disabledTargetIds: array(string()).default([])
|
|
19789
19730
|
});
|
|
19731
|
+
/**
|
|
19732
|
+
* The state-summary SECTIONS (D647 / D698): the D637 kind groups that report a
|
|
19733
|
+
* still-true state. `backups-exports` and `alarm` are not sections — a completed
|
|
19734
|
+
* job is not an open state, and the alarm stays instant.
|
|
19735
|
+
*/
|
|
19736
|
+
var NcStateSummarySectionIdSchema = _enum([
|
|
19737
|
+
"device-state",
|
|
19738
|
+
"streams",
|
|
19739
|
+
"battery",
|
|
19740
|
+
"consumables",
|
|
19741
|
+
"tanks",
|
|
19742
|
+
"detection-blind",
|
|
19743
|
+
"nodes",
|
|
19744
|
+
"addons",
|
|
19745
|
+
"updates"
|
|
19746
|
+
]);
|
|
19790
19747
|
/** One section of a previewed state summary. `unavailable` = its state could not be read. */
|
|
19791
19748
|
var NcStateSummaryPreviewSectionSchema = object({
|
|
19792
|
-
id:
|
|
19749
|
+
id: NcStateSummarySectionIdSchema,
|
|
19793
19750
|
status: _enum(["read", "unavailable"]),
|
|
19794
19751
|
items: number().int().nonnegative(),
|
|
19795
19752
|
reason: string().optional()
|
|
@@ -19799,7 +19756,7 @@ var NcStateSummaryPreviewSectionSchema = object({
|
|
|
19799
19756
|
* a `rule` split (no `section`), one section's on a `section` split.
|
|
19800
19757
|
*/
|
|
19801
19758
|
var NcStateSummaryPreviewRowSchema = object({
|
|
19802
|
-
section:
|
|
19759
|
+
section: NcStateSummarySectionIdSchema.optional(),
|
|
19803
19760
|
/** The section's name on a per-section row; every reported section's, joined, on a combined one. */
|
|
19804
19761
|
title: string(),
|
|
19805
19762
|
text: string(),
|
|
@@ -21698,14 +21655,14 @@ var TrackSchema = object({
|
|
|
21698
21655
|
* `derive-returned-null tile=standin`,
|
|
21699
21656
|
* `native-tile tile=native no-key-frame-at-close`, …) written at close and
|
|
21700
21657
|
* CLEARED by the late-keyFrame upgrade when a native tile lands after all.
|
|
21701
|
-
* The operator-facing answer to "perché manca l'immagine?" on a track whose
|
|
21658
|
+
* The operator-facing answer to "perché manca l'immagine?" [why is the image missing?] on a track whose
|
|
21702
21659
|
* tile is a face/plate stand-in, a raster crop, or an icon.
|
|
21703
21660
|
*
|
|
21704
21661
|
* **`no-key-frame-at-close` (D400).** The line used to be written ONLY when
|
|
21705
21662
|
* the TILE ranked below native, so a track whose thumbnail landed natively
|
|
21706
21663
|
* while its key frame missed carried no reason at all — three of the four
|
|
21707
21664
|
* `MISSING_KEYFRAME` tracks in the 2026-09-07 operator audit were exactly
|
|
21708
|
-
* that shape, and their "niente ultimo" had no cause anywhere on the row.
|
|
21665
|
+
* that shape, and their "niente ultimo" [no last frame] had no cause anywhere on the row.
|
|
21709
21666
|
* The key frame is the head of a cascade (`keyFrame ⇒ keyFrameSmall ⇒ the
|
|
21710
21667
|
* lastFrame copy source`), so its absence is now on this line whatever the
|
|
21711
21668
|
* tile ended up being.
|
|
@@ -21792,7 +21749,7 @@ var MotionEventSchema = object({
|
|
|
21792
21749
|
/**
|
|
21793
21750
|
* Ms offsets from `timestamp` (the episode's own first rising edge, so the
|
|
21794
21751
|
* first entry is always `0`) of every genuine off→on transition the
|
|
21795
|
-
* episode saw — "ogni evento on si deve salvare" (D475). NOT one entry per
|
|
21752
|
+
* episode saw — "ogni evento on si deve salvare" [every ON event must be saved] (D475). NOT one entry per
|
|
21796
21753
|
* push: a firmware source that keepalives at ~1 Hz for the whole burst
|
|
21797
21754
|
* (Reolink, Hikvision) produces exactly one edge; a source that reports an
|
|
21798
21755
|
* explicit `false` mid-episode and then resumes before the quiet window
|
|
@@ -22316,6 +22273,7 @@ var KeyEventSchema = object({
|
|
|
22316
22273
|
bestEventId: string(),
|
|
22317
22274
|
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
22318
22275
|
windowMs: number().optional(),
|
|
22276
|
+
audioLabels: array(TrackAudioLabelSchema).readonly().optional(),
|
|
22319
22277
|
...TrackFlagFields,
|
|
22320
22278
|
...TrackRetrainFields
|
|
22321
22279
|
});
|
|
@@ -27201,7 +27159,7 @@ var ClipPlaybackSchema = object({
|
|
|
27201
27159
|
* **One authorised yes is one wake.** `next-natural` — take the clip the next
|
|
27202
27160
|
* time the camera is awake for its own reasons — is deliberately not a member:
|
|
27203
27161
|
* it was proposed, it is free on the battery, and the operator declined it on
|
|
27204
|
-
* 2026-09-20 (*"Quando un export viene richiesto si sveglia la camera."
|
|
27162
|
+
* 2026-09-20 (*"Quando un export viene richiesto si sveglia la camera."* [When an export is requested the camera wakes up],
|
|
27205
27163
|
* D558 "Considered and not taken").
|
|
27206
27164
|
*/
|
|
27207
27165
|
var ClipWakeSchema = _enum(["authorised"]);
|
|
@@ -27462,7 +27420,7 @@ DeviceType.Camera, method(object({
|
|
|
27462
27420
|
* It replaced `sources?: string[]`, a VIEW filter over source ids that
|
|
27463
27421
|
* assumed the answer was a fan-out over everything a camera has. The
|
|
27464
27422
|
* operator settled otherwise on 2026-09-20 — *"l'utilizzatore è uno
|
|
27465
|
-
* solo"* — so the list is asked of one provider at a time and there is
|
|
27423
|
+
* solo"* [there is only one user] — so the list is asked of one provider at a time and there is
|
|
27466
27424
|
* nothing to filter out of it.
|
|
27467
27425
|
*/
|
|
27468
27426
|
provider: string().min(1)
|
|
@@ -35460,7 +35418,7 @@ var ReadGopBytesResultSchema = object({
|
|
|
35460
35418
|
/**
|
|
35461
35419
|
* A time WINDOW of one finalized segment, cut by byte range — the multi-GOP
|
|
35462
35420
|
* twin of {@link ReadGopBytesResultSchema}'s single instant. Built for the
|
|
35463
|
-
* replay clip's `recording` source (`docs/design/plans/2026-08-26-replay-
|
|
35421
|
+
* replay clip's `recording` source (`docs/design/plans/2026-08-26-clip-replay-on-pipeline.md`):
|
|
35464
35422
|
* a replay needs several seconds of native pixels, not one frame.
|
|
35465
35423
|
*
|
|
35466
35424
|
* `ok.data` is standalone-demuxable, same as a GOP read. `ok.reachesRequestedEnd`
|
|
@@ -38824,6 +38782,7 @@ var zoneRulesCapability = {
|
|
|
38824
38782
|
*/
|
|
38825
38783
|
durability: "restored"
|
|
38826
38784
|
};
|
|
38785
|
+
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
38827
38786
|
/**
|
|
38828
38787
|
* Accessory device helpers — shared across drivers.
|
|
38829
38788
|
*
|
|
@@ -48910,6 +48869,11 @@ Object.freeze({
|
|
|
48910
48869
|
}
|
|
48911
48870
|
});
|
|
48912
48871
|
Object.freeze({
|
|
48872
|
+
"accessories.getStatus": [{
|
|
48873
|
+
name: "deviceId",
|
|
48874
|
+
form: "single",
|
|
48875
|
+
optional: false
|
|
48876
|
+
}],
|
|
48913
48877
|
"accessories.setChildHidden": [{
|
|
48914
48878
|
name: "childDeviceId",
|
|
48915
48879
|
form: "single",
|
|
@@ -48929,6 +48893,11 @@ Object.freeze({
|
|
|
48929
48893
|
form: "single",
|
|
48930
48894
|
optional: false
|
|
48931
48895
|
}],
|
|
48896
|
+
"airQualitySensor.getStatus": [{
|
|
48897
|
+
name: "deviceId",
|
|
48898
|
+
form: "single",
|
|
48899
|
+
optional: false
|
|
48900
|
+
}],
|
|
48932
48901
|
"alarmPanel.arm": [{
|
|
48933
48902
|
name: "deviceId",
|
|
48934
48903
|
form: "single",
|
|
@@ -48939,11 +48908,36 @@ Object.freeze({
|
|
|
48939
48908
|
form: "single",
|
|
48940
48909
|
optional: false
|
|
48941
48910
|
}],
|
|
48911
|
+
"alarmPanel.getStatus": [{
|
|
48912
|
+
name: "deviceId",
|
|
48913
|
+
form: "single",
|
|
48914
|
+
optional: false
|
|
48915
|
+
}],
|
|
48942
48916
|
"alarmPanel.trigger": [{
|
|
48943
48917
|
name: "deviceId",
|
|
48944
48918
|
form: "single",
|
|
48945
48919
|
optional: false
|
|
48946
48920
|
}],
|
|
48921
|
+
"ambientLightSensor.getStatus": [{
|
|
48922
|
+
name: "deviceId",
|
|
48923
|
+
form: "single",
|
|
48924
|
+
optional: false
|
|
48925
|
+
}],
|
|
48926
|
+
"audioAnalysis.applyDeviceSettingsPatch": [{
|
|
48927
|
+
name: "deviceId",
|
|
48928
|
+
form: "single",
|
|
48929
|
+
optional: false
|
|
48930
|
+
}],
|
|
48931
|
+
"audioAnalysis.getDeviceLiveContribution": [{
|
|
48932
|
+
name: "deviceId",
|
|
48933
|
+
form: "single",
|
|
48934
|
+
optional: false
|
|
48935
|
+
}],
|
|
48936
|
+
"audioAnalysis.getDeviceSettingsContribution": [{
|
|
48937
|
+
name: "deviceId",
|
|
48938
|
+
form: "single",
|
|
48939
|
+
optional: false
|
|
48940
|
+
}],
|
|
48947
48941
|
"audioAnalysis.resolveDeviceSettings": [{
|
|
48948
48942
|
name: "deviceId",
|
|
48949
48943
|
form: "single",
|
|
@@ -48984,16 +48978,36 @@ Object.freeze({
|
|
|
48984
48978
|
form: "single",
|
|
48985
48979
|
optional: false
|
|
48986
48980
|
}],
|
|
48981
|
+
"automationControl.getStatus": [{
|
|
48982
|
+
name: "deviceId",
|
|
48983
|
+
form: "single",
|
|
48984
|
+
optional: false
|
|
48985
|
+
}],
|
|
48987
48986
|
"automationControl.trigger": [{
|
|
48988
48987
|
name: "deviceId",
|
|
48989
48988
|
form: "single",
|
|
48990
48989
|
optional: false
|
|
48991
48990
|
}],
|
|
48991
|
+
"battery.getStatus": [{
|
|
48992
|
+
name: "deviceId",
|
|
48993
|
+
form: "single",
|
|
48994
|
+
optional: false
|
|
48995
|
+
}],
|
|
48992
48996
|
"battery.wakeForStream": [{
|
|
48993
48997
|
name: "deviceId",
|
|
48994
48998
|
form: "single",
|
|
48995
48999
|
optional: false
|
|
48996
49000
|
}],
|
|
49001
|
+
"binary.getStatus": [{
|
|
49002
|
+
name: "deviceId",
|
|
49003
|
+
form: "single",
|
|
49004
|
+
optional: false
|
|
49005
|
+
}],
|
|
49006
|
+
"brightness.getStatus": [{
|
|
49007
|
+
name: "deviceId",
|
|
49008
|
+
form: "single",
|
|
49009
|
+
optional: false
|
|
49010
|
+
}],
|
|
48997
49011
|
"brightness.setBrightness": [{
|
|
48998
49012
|
name: "deviceId",
|
|
48999
49013
|
form: "single",
|
|
@@ -49009,6 +49023,26 @@ Object.freeze({
|
|
|
49009
49023
|
form: "single",
|
|
49010
49024
|
optional: false
|
|
49011
49025
|
}],
|
|
49026
|
+
"cameraCredentials.getStatus": [{
|
|
49027
|
+
name: "deviceId",
|
|
49028
|
+
form: "single",
|
|
49029
|
+
optional: false
|
|
49030
|
+
}],
|
|
49031
|
+
"cameraGridLayout.applyDeviceSettingsPatch": [{
|
|
49032
|
+
name: "deviceId",
|
|
49033
|
+
form: "single",
|
|
49034
|
+
optional: false
|
|
49035
|
+
}],
|
|
49036
|
+
"cameraGridLayout.getDeviceLiveContribution": [{
|
|
49037
|
+
name: "deviceId",
|
|
49038
|
+
form: "single",
|
|
49039
|
+
optional: false
|
|
49040
|
+
}],
|
|
49041
|
+
"cameraGridLayout.getDeviceSettingsContribution": [{
|
|
49042
|
+
name: "deviceId",
|
|
49043
|
+
form: "single",
|
|
49044
|
+
optional: false
|
|
49045
|
+
}],
|
|
49012
49046
|
"cameraGridLayout.getLayout": [{
|
|
49013
49047
|
name: "deviceId",
|
|
49014
49048
|
form: "single",
|
|
@@ -49024,6 +49058,21 @@ Object.freeze({
|
|
|
49024
49058
|
form: "single",
|
|
49025
49059
|
optional: false
|
|
49026
49060
|
}],
|
|
49061
|
+
"cameraPipelineConfig.applyDeviceSettingsPatch": [{
|
|
49062
|
+
name: "deviceId",
|
|
49063
|
+
form: "single",
|
|
49064
|
+
optional: false
|
|
49065
|
+
}],
|
|
49066
|
+
"cameraPipelineConfig.getDeviceLiveContribution": [{
|
|
49067
|
+
name: "deviceId",
|
|
49068
|
+
form: "single",
|
|
49069
|
+
optional: false
|
|
49070
|
+
}],
|
|
49071
|
+
"cameraPipelineConfig.getDeviceSettingsContribution": [{
|
|
49072
|
+
name: "deviceId",
|
|
49073
|
+
form: "single",
|
|
49074
|
+
optional: false
|
|
49075
|
+
}],
|
|
49027
49076
|
"cameraStreams.getBrokerStreams": [{
|
|
49028
49077
|
name: "deviceId",
|
|
49029
49078
|
form: "single",
|
|
@@ -49049,6 +49098,16 @@ Object.freeze({
|
|
|
49049
49098
|
form: "single",
|
|
49050
49099
|
optional: false
|
|
49051
49100
|
}],
|
|
49101
|
+
"carbonMonoxide.getStatus": [{
|
|
49102
|
+
name: "deviceId",
|
|
49103
|
+
form: "single",
|
|
49104
|
+
optional: false
|
|
49105
|
+
}],
|
|
49106
|
+
"climateControl.getStatus": [{
|
|
49107
|
+
name: "deviceId",
|
|
49108
|
+
form: "single",
|
|
49109
|
+
optional: false
|
|
49110
|
+
}],
|
|
49052
49111
|
"climateControl.setFanMode": [{
|
|
49053
49112
|
name: "deviceId",
|
|
49054
49113
|
form: "single",
|
|
@@ -49089,16 +49148,41 @@ Object.freeze({
|
|
|
49089
49148
|
form: "single",
|
|
49090
49149
|
optional: false
|
|
49091
49150
|
}],
|
|
49151
|
+
"color.getStatus": [{
|
|
49152
|
+
name: "deviceId",
|
|
49153
|
+
form: "single",
|
|
49154
|
+
optional: false
|
|
49155
|
+
}],
|
|
49092
49156
|
"color.setColor": [{
|
|
49093
49157
|
name: "deviceId",
|
|
49094
49158
|
form: "single",
|
|
49095
49159
|
optional: false
|
|
49096
49160
|
}],
|
|
49161
|
+
"connectivity.getStatus": [{
|
|
49162
|
+
name: "deviceId",
|
|
49163
|
+
form: "single",
|
|
49164
|
+
optional: false
|
|
49165
|
+
}],
|
|
49166
|
+
"consumables.getStatus": [{
|
|
49167
|
+
name: "deviceId",
|
|
49168
|
+
form: "single",
|
|
49169
|
+
optional: false
|
|
49170
|
+
}],
|
|
49097
49171
|
"consumables.reset": [{
|
|
49098
49172
|
name: "deviceId",
|
|
49099
49173
|
form: "single",
|
|
49100
49174
|
optional: false
|
|
49101
49175
|
}],
|
|
49176
|
+
"contact.getStatus": [{
|
|
49177
|
+
name: "deviceId",
|
|
49178
|
+
form: "single",
|
|
49179
|
+
optional: false
|
|
49180
|
+
}],
|
|
49181
|
+
"control.getStatus": [{
|
|
49182
|
+
name: "deviceId",
|
|
49183
|
+
form: "single",
|
|
49184
|
+
optional: false
|
|
49185
|
+
}],
|
|
49102
49186
|
"control.setValue": [{
|
|
49103
49187
|
name: "deviceId",
|
|
49104
49188
|
form: "single",
|
|
@@ -49109,6 +49193,11 @@ Object.freeze({
|
|
|
49109
49193
|
form: "single",
|
|
49110
49194
|
optional: false
|
|
49111
49195
|
}],
|
|
49196
|
+
"cover.getStatus": [{
|
|
49197
|
+
name: "deviceId",
|
|
49198
|
+
form: "single",
|
|
49199
|
+
optional: false
|
|
49200
|
+
}],
|
|
49112
49201
|
"cover.open": [{
|
|
49113
49202
|
name: "deviceId",
|
|
49114
49203
|
form: "single",
|
|
@@ -49134,6 +49223,11 @@ Object.freeze({
|
|
|
49134
49223
|
form: "single",
|
|
49135
49224
|
optional: false
|
|
49136
49225
|
}],
|
|
49226
|
+
"dayNight.getStatus": [{
|
|
49227
|
+
name: "deviceId",
|
|
49228
|
+
form: "single",
|
|
49229
|
+
optional: false
|
|
49230
|
+
}],
|
|
49137
49231
|
"dayNight.setSettings": [{
|
|
49138
49232
|
name: "deviceId",
|
|
49139
49233
|
form: "single",
|
|
@@ -49144,11 +49238,31 @@ Object.freeze({
|
|
|
49144
49238
|
form: "single",
|
|
49145
49239
|
optional: true
|
|
49146
49240
|
}],
|
|
49241
|
+
"detectionPipeline.applyDeviceSettingsPatch": [{
|
|
49242
|
+
name: "deviceId",
|
|
49243
|
+
form: "single",
|
|
49244
|
+
optional: false
|
|
49245
|
+
}],
|
|
49246
|
+
"detectionPipeline.getDeviceLiveContribution": [{
|
|
49247
|
+
name: "deviceId",
|
|
49248
|
+
form: "single",
|
|
49249
|
+
optional: false
|
|
49250
|
+
}],
|
|
49251
|
+
"detectionPipeline.getDeviceSettingsContribution": [{
|
|
49252
|
+
name: "deviceId",
|
|
49253
|
+
form: "single",
|
|
49254
|
+
optional: false
|
|
49255
|
+
}],
|
|
49147
49256
|
"deviceAdminLink.getAdminLink": [{
|
|
49148
49257
|
name: "deviceId",
|
|
49149
49258
|
form: "single",
|
|
49150
49259
|
optional: false
|
|
49151
49260
|
}],
|
|
49261
|
+
"deviceAdoption.getStatus": [{
|
|
49262
|
+
name: "deviceId",
|
|
49263
|
+
form: "single",
|
|
49264
|
+
optional: false
|
|
49265
|
+
}],
|
|
49152
49266
|
"deviceAdoption.release": [{
|
|
49153
49267
|
name: "camDeviceId",
|
|
49154
49268
|
form: "single",
|
|
@@ -49164,6 +49278,11 @@ Object.freeze({
|
|
|
49164
49278
|
form: "single",
|
|
49165
49279
|
optional: false
|
|
49166
49280
|
}],
|
|
49281
|
+
"deviceDiscovery.getStatus": [{
|
|
49282
|
+
name: "deviceId",
|
|
49283
|
+
form: "single",
|
|
49284
|
+
optional: false
|
|
49285
|
+
}],
|
|
49167
49286
|
"deviceDiscovery.listDiscovered": [{
|
|
49168
49287
|
name: "deviceId",
|
|
49169
49288
|
form: "single",
|
|
@@ -49183,6 +49302,21 @@ Object.freeze({
|
|
|
49183
49302
|
form: "single",
|
|
49184
49303
|
optional: false
|
|
49185
49304
|
}],
|
|
49305
|
+
"deviceExport.applyDeviceSettingsPatch": [{
|
|
49306
|
+
name: "deviceId",
|
|
49307
|
+
form: "single",
|
|
49308
|
+
optional: false
|
|
49309
|
+
}],
|
|
49310
|
+
"deviceExport.getDeviceLiveContribution": [{
|
|
49311
|
+
name: "deviceId",
|
|
49312
|
+
form: "single",
|
|
49313
|
+
optional: false
|
|
49314
|
+
}],
|
|
49315
|
+
"deviceExport.getDeviceSettingsContribution": [{
|
|
49316
|
+
name: "deviceId",
|
|
49317
|
+
form: "single",
|
|
49318
|
+
optional: false
|
|
49319
|
+
}],
|
|
49186
49320
|
"deviceExtension.listCandidates": [{
|
|
49187
49321
|
name: "deviceId",
|
|
49188
49322
|
form: "single",
|
|
@@ -49531,6 +49665,26 @@ Object.freeze({
|
|
|
49531
49665
|
form: "single",
|
|
49532
49666
|
optional: false
|
|
49533
49667
|
}],
|
|
49668
|
+
"deviceStatus.getStatus": [{
|
|
49669
|
+
name: "deviceId",
|
|
49670
|
+
form: "single",
|
|
49671
|
+
optional: false
|
|
49672
|
+
}],
|
|
49673
|
+
"doorbell.getStatus": [{
|
|
49674
|
+
name: "deviceId",
|
|
49675
|
+
form: "single",
|
|
49676
|
+
optional: false
|
|
49677
|
+
}],
|
|
49678
|
+
"enumSensor.getStatus": [{
|
|
49679
|
+
name: "deviceId",
|
|
49680
|
+
form: "single",
|
|
49681
|
+
optional: false
|
|
49682
|
+
}],
|
|
49683
|
+
"eventEmitter.getStatus": [{
|
|
49684
|
+
name: "deviceId",
|
|
49685
|
+
form: "single",
|
|
49686
|
+
optional: false
|
|
49687
|
+
}],
|
|
49534
49688
|
"faceGallery.getFaceByTrack": [{
|
|
49535
49689
|
name: "deviceId",
|
|
49536
49690
|
form: "single",
|
|
@@ -49545,6 +49699,11 @@ Object.freeze({
|
|
|
49545
49699
|
form: "array",
|
|
49546
49700
|
optional: true
|
|
49547
49701
|
}],
|
|
49702
|
+
"fanControl.getStatus": [{
|
|
49703
|
+
name: "deviceId",
|
|
49704
|
+
form: "single",
|
|
49705
|
+
optional: false
|
|
49706
|
+
}],
|
|
49548
49707
|
"fanControl.setDirection": [{
|
|
49549
49708
|
name: "deviceId",
|
|
49550
49709
|
form: "single",
|
|
@@ -49565,6 +49724,26 @@ Object.freeze({
|
|
|
49565
49724
|
form: "single",
|
|
49566
49725
|
optional: false
|
|
49567
49726
|
}],
|
|
49727
|
+
"featureProbe.getStatus": [{
|
|
49728
|
+
name: "deviceId",
|
|
49729
|
+
form: "single",
|
|
49730
|
+
optional: false
|
|
49731
|
+
}],
|
|
49732
|
+
"flood.getStatus": [{
|
|
49733
|
+
name: "deviceId",
|
|
49734
|
+
form: "single",
|
|
49735
|
+
optional: false
|
|
49736
|
+
}],
|
|
49737
|
+
"gas.getStatus": [{
|
|
49738
|
+
name: "deviceId",
|
|
49739
|
+
form: "single",
|
|
49740
|
+
optional: false
|
|
49741
|
+
}],
|
|
49742
|
+
"humidifier.getStatus": [{
|
|
49743
|
+
name: "deviceId",
|
|
49744
|
+
form: "single",
|
|
49745
|
+
optional: false
|
|
49746
|
+
}],
|
|
49568
49747
|
"humidifier.setMode": [{
|
|
49569
49748
|
name: "deviceId",
|
|
49570
49749
|
form: "single",
|
|
@@ -49580,11 +49759,26 @@ Object.freeze({
|
|
|
49580
49759
|
form: "single",
|
|
49581
49760
|
optional: false
|
|
49582
49761
|
}],
|
|
49762
|
+
"humiditySensor.getStatus": [{
|
|
49763
|
+
name: "deviceId",
|
|
49764
|
+
form: "single",
|
|
49765
|
+
optional: false
|
|
49766
|
+
}],
|
|
49767
|
+
"image.getStatus": [{
|
|
49768
|
+
name: "deviceId",
|
|
49769
|
+
form: "single",
|
|
49770
|
+
optional: false
|
|
49771
|
+
}],
|
|
49583
49772
|
"imageSettings.getOptions": [{
|
|
49584
49773
|
name: "deviceId",
|
|
49585
49774
|
form: "single",
|
|
49586
49775
|
optional: false
|
|
49587
49776
|
}],
|
|
49777
|
+
"imageSettings.getStatus": [{
|
|
49778
|
+
name: "deviceId",
|
|
49779
|
+
form: "single",
|
|
49780
|
+
optional: false
|
|
49781
|
+
}],
|
|
49588
49782
|
"imageSettings.setSettings": [{
|
|
49589
49783
|
name: "deviceId",
|
|
49590
49784
|
form: "single",
|
|
@@ -49595,6 +49789,11 @@ Object.freeze({
|
|
|
49595
49789
|
form: "single",
|
|
49596
49790
|
optional: false
|
|
49597
49791
|
}],
|
|
49792
|
+
"intercom.getStatus": [{
|
|
49793
|
+
name: "deviceId",
|
|
49794
|
+
form: "single",
|
|
49795
|
+
optional: false
|
|
49796
|
+
}],
|
|
49598
49797
|
"intercom.handleAnswer": [{
|
|
49599
49798
|
name: "deviceId",
|
|
49600
49799
|
form: "single",
|
|
@@ -49625,6 +49824,11 @@ Object.freeze({
|
|
|
49625
49824
|
form: "single",
|
|
49626
49825
|
optional: false
|
|
49627
49826
|
}],
|
|
49827
|
+
"lawnMowerControl.getStatus": [{
|
|
49828
|
+
name: "deviceId",
|
|
49829
|
+
form: "single",
|
|
49830
|
+
optional: false
|
|
49831
|
+
}],
|
|
49628
49832
|
"lawnMowerControl.pause": [{
|
|
49629
49833
|
name: "deviceId",
|
|
49630
49834
|
form: "single",
|
|
@@ -49635,6 +49839,11 @@ Object.freeze({
|
|
|
49635
49839
|
form: "single",
|
|
49636
49840
|
optional: false
|
|
49637
49841
|
}],
|
|
49842
|
+
"lockControl.getStatus": [{
|
|
49843
|
+
name: "deviceId",
|
|
49844
|
+
form: "single",
|
|
49845
|
+
optional: false
|
|
49846
|
+
}],
|
|
49638
49847
|
"lockControl.lock": [{
|
|
49639
49848
|
name: "deviceId",
|
|
49640
49849
|
form: "single",
|
|
@@ -49650,6 +49859,11 @@ Object.freeze({
|
|
|
49650
49859
|
form: "single",
|
|
49651
49860
|
optional: false
|
|
49652
49861
|
}],
|
|
49862
|
+
"mediaPlayer.getStatus": [{
|
|
49863
|
+
name: "deviceId",
|
|
49864
|
+
form: "single",
|
|
49865
|
+
optional: false
|
|
49866
|
+
}],
|
|
49653
49867
|
"mediaPlayer.next": [{
|
|
49654
49868
|
name: "deviceId",
|
|
49655
49869
|
form: "single",
|
|
@@ -49710,6 +49924,11 @@ Object.freeze({
|
|
|
49710
49924
|
form: "single",
|
|
49711
49925
|
optional: false
|
|
49712
49926
|
}],
|
|
49927
|
+
"motion.getStatus": [{
|
|
49928
|
+
name: "deviceId",
|
|
49929
|
+
form: "single",
|
|
49930
|
+
optional: false
|
|
49931
|
+
}],
|
|
49713
49932
|
"motion.isDetected": [{
|
|
49714
49933
|
name: "deviceId",
|
|
49715
49934
|
form: "single",
|
|
@@ -49720,11 +49939,31 @@ Object.freeze({
|
|
|
49720
49939
|
form: "single",
|
|
49721
49940
|
optional: false
|
|
49722
49941
|
}],
|
|
49942
|
+
"motionDetection.applyDeviceSettingsPatch": [{
|
|
49943
|
+
name: "deviceId",
|
|
49944
|
+
form: "single",
|
|
49945
|
+
optional: false
|
|
49946
|
+
}],
|
|
49947
|
+
"motionDetection.getDeviceLiveContribution": [{
|
|
49948
|
+
name: "deviceId",
|
|
49949
|
+
form: "single",
|
|
49950
|
+
optional: false
|
|
49951
|
+
}],
|
|
49952
|
+
"motionDetection.getDeviceSettingsContribution": [{
|
|
49953
|
+
name: "deviceId",
|
|
49954
|
+
form: "single",
|
|
49955
|
+
optional: false
|
|
49956
|
+
}],
|
|
49723
49957
|
"motionDetection.removeCamera": [{
|
|
49724
49958
|
name: "deviceId",
|
|
49725
49959
|
form: "single",
|
|
49726
49960
|
optional: false
|
|
49727
49961
|
}],
|
|
49962
|
+
"motionTrigger.getStatus": [{
|
|
49963
|
+
name: "deviceId",
|
|
49964
|
+
form: "single",
|
|
49965
|
+
optional: false
|
|
49966
|
+
}],
|
|
49728
49967
|
"motionTrigger.setMotionTrigger": [{
|
|
49729
49968
|
name: "deviceId",
|
|
49730
49969
|
form: "single",
|
|
@@ -49735,6 +49974,11 @@ Object.freeze({
|
|
|
49735
49974
|
form: "single",
|
|
49736
49975
|
optional: false
|
|
49737
49976
|
}],
|
|
49977
|
+
"motionZones.getStatus": [{
|
|
49978
|
+
name: "deviceId",
|
|
49979
|
+
form: "single",
|
|
49980
|
+
optional: false
|
|
49981
|
+
}],
|
|
49738
49982
|
"motionZones.setZone": [{
|
|
49739
49983
|
name: "deviceId",
|
|
49740
49984
|
form: "single",
|
|
@@ -49745,6 +49989,11 @@ Object.freeze({
|
|
|
49745
49989
|
form: "single",
|
|
49746
49990
|
optional: false
|
|
49747
49991
|
}],
|
|
49992
|
+
"nativeObjectDetection.getStatus": [{
|
|
49993
|
+
name: "deviceId",
|
|
49994
|
+
form: "single",
|
|
49995
|
+
optional: false
|
|
49996
|
+
}],
|
|
49748
49997
|
"nativeObjectDetection.setEnabled": [{
|
|
49749
49998
|
name: "deviceId",
|
|
49750
49999
|
form: "single",
|
|
@@ -49760,6 +50009,11 @@ Object.freeze({
|
|
|
49760
50009
|
form: "single",
|
|
49761
50010
|
optional: false
|
|
49762
50011
|
}],
|
|
50012
|
+
"navigation.getStatus": [{
|
|
50013
|
+
name: "deviceId",
|
|
50014
|
+
form: "single",
|
|
50015
|
+
optional: false
|
|
50016
|
+
}],
|
|
49763
50017
|
"navigation.goToPoint": [{
|
|
49764
50018
|
name: "deviceId",
|
|
49765
50019
|
form: "single",
|
|
@@ -49805,6 +50059,11 @@ Object.freeze({
|
|
|
49805
50059
|
form: "single",
|
|
49806
50060
|
optional: false
|
|
49807
50061
|
}],
|
|
50062
|
+
"networkLink.getStatus": [{
|
|
50063
|
+
name: "deviceId",
|
|
50064
|
+
form: "single",
|
|
50065
|
+
optional: false
|
|
50066
|
+
}],
|
|
49808
50067
|
"networkQuality.getDeviceStats": [{
|
|
49809
50068
|
name: "deviceId",
|
|
49810
50069
|
form: "single",
|
|
@@ -49830,11 +50089,26 @@ Object.freeze({
|
|
|
49830
50089
|
form: "single",
|
|
49831
50090
|
optional: false
|
|
49832
50091
|
}],
|
|
50092
|
+
"notifier.getStatus": [{
|
|
50093
|
+
name: "deviceId",
|
|
50094
|
+
form: "single",
|
|
50095
|
+
optional: false
|
|
50096
|
+
}],
|
|
49833
50097
|
"notifier.send": [{
|
|
49834
50098
|
name: "deviceId",
|
|
49835
50099
|
form: "single",
|
|
49836
50100
|
optional: false
|
|
49837
50101
|
}],
|
|
50102
|
+
"numericSensor.getStatus": [{
|
|
50103
|
+
name: "deviceId",
|
|
50104
|
+
form: "single",
|
|
50105
|
+
optional: false
|
|
50106
|
+
}],
|
|
50107
|
+
"osd.getStatus": [{
|
|
50108
|
+
name: "deviceId",
|
|
50109
|
+
form: "single",
|
|
50110
|
+
optional: false
|
|
50111
|
+
}],
|
|
49838
50112
|
"osd.setOverlay": [{
|
|
49839
50113
|
name: "deviceId",
|
|
49840
50114
|
form: "single",
|
|
@@ -49894,6 +50168,11 @@ Object.freeze({
|
|
|
49894
50168
|
form: "single",
|
|
49895
50169
|
optional: false
|
|
49896
50170
|
}],
|
|
50171
|
+
"petFeeder.getStatus": [{
|
|
50172
|
+
name: "deviceId",
|
|
50173
|
+
form: "single",
|
|
50174
|
+
optional: false
|
|
50175
|
+
}],
|
|
49897
50176
|
"petFeeder.markFoodReplenished": [{
|
|
49898
50177
|
name: "deviceId",
|
|
49899
50178
|
form: "single",
|
|
@@ -49929,6 +50208,11 @@ Object.freeze({
|
|
|
49929
50208
|
form: "single",
|
|
49930
50209
|
optional: false
|
|
49931
50210
|
}],
|
|
50211
|
+
"pipelineAnalytics.applyDeviceSettingsPatch": [{
|
|
50212
|
+
name: "deviceId",
|
|
50213
|
+
form: "single",
|
|
50214
|
+
optional: false
|
|
50215
|
+
}],
|
|
49932
50216
|
"pipelineAnalytics.clearTrackRelation": [{
|
|
49933
50217
|
name: "deviceId",
|
|
49934
50218
|
form: "single",
|
|
@@ -49969,6 +50253,16 @@ Object.freeze({
|
|
|
49969
50253
|
form: "single",
|
|
49970
50254
|
optional: false
|
|
49971
50255
|
}],
|
|
50256
|
+
"pipelineAnalytics.getDeviceLiveContribution": [{
|
|
50257
|
+
name: "deviceId",
|
|
50258
|
+
form: "single",
|
|
50259
|
+
optional: false
|
|
50260
|
+
}],
|
|
50261
|
+
"pipelineAnalytics.getDeviceSettingsContribution": [{
|
|
50262
|
+
name: "deviceId",
|
|
50263
|
+
form: "single",
|
|
50264
|
+
optional: false
|
|
50265
|
+
}],
|
|
49972
50266
|
"pipelineAnalytics.getEventDensity": [{
|
|
49973
50267
|
name: "deviceId",
|
|
49974
50268
|
form: "single",
|
|
@@ -50184,6 +50478,11 @@ Object.freeze({
|
|
|
50184
50478
|
form: "single",
|
|
50185
50479
|
optional: true
|
|
50186
50480
|
}],
|
|
50481
|
+
"pipelineOrchestrator.applyDeviceSettingsPatch": [{
|
|
50482
|
+
name: "deviceId",
|
|
50483
|
+
form: "single",
|
|
50484
|
+
optional: false
|
|
50485
|
+
}],
|
|
50187
50486
|
"pipelineOrchestrator.assignAudio": [{
|
|
50188
50487
|
name: "deviceId",
|
|
50189
50488
|
form: "single",
|
|
@@ -50229,6 +50528,16 @@ Object.freeze({
|
|
|
50229
50528
|
form: "single",
|
|
50230
50529
|
optional: false
|
|
50231
50530
|
}],
|
|
50531
|
+
"pipelineOrchestrator.getDeviceLiveContribution": [{
|
|
50532
|
+
name: "deviceId",
|
|
50533
|
+
form: "single",
|
|
50534
|
+
optional: false
|
|
50535
|
+
}],
|
|
50536
|
+
"pipelineOrchestrator.getDeviceSettingsContribution": [{
|
|
50537
|
+
name: "deviceId",
|
|
50538
|
+
form: "single",
|
|
50539
|
+
optional: false
|
|
50540
|
+
}],
|
|
50232
50541
|
"pipelineOrchestrator.getPipelineAssignment": [{
|
|
50233
50542
|
name: "deviceId",
|
|
50234
50543
|
form: "single",
|
|
@@ -50349,11 +50658,31 @@ Object.freeze({
|
|
|
50349
50658
|
form: "single",
|
|
50350
50659
|
optional: true
|
|
50351
50660
|
}],
|
|
50661
|
+
"powerMeter.getStatus": [{
|
|
50662
|
+
name: "deviceId",
|
|
50663
|
+
form: "single",
|
|
50664
|
+
optional: false
|
|
50665
|
+
}],
|
|
50666
|
+
"presence.getStatus": [{
|
|
50667
|
+
name: "deviceId",
|
|
50668
|
+
form: "single",
|
|
50669
|
+
optional: false
|
|
50670
|
+
}],
|
|
50671
|
+
"pressureSensor.getStatus": [{
|
|
50672
|
+
name: "deviceId",
|
|
50673
|
+
form: "single",
|
|
50674
|
+
optional: false
|
|
50675
|
+
}],
|
|
50352
50676
|
"privacyMask.getOptions": [{
|
|
50353
50677
|
name: "deviceId",
|
|
50354
50678
|
form: "single",
|
|
50355
50679
|
optional: false
|
|
50356
50680
|
}],
|
|
50681
|
+
"privacyMask.getStatus": [{
|
|
50682
|
+
name: "deviceId",
|
|
50683
|
+
form: "single",
|
|
50684
|
+
optional: false
|
|
50685
|
+
}],
|
|
50357
50686
|
"privacyMask.setAudioEnabled": [{
|
|
50358
50687
|
name: "deviceId",
|
|
50359
50688
|
form: "single",
|
|
@@ -50404,6 +50733,11 @@ Object.freeze({
|
|
|
50404
50733
|
form: "single",
|
|
50405
50734
|
optional: false
|
|
50406
50735
|
}],
|
|
50736
|
+
"ptz.getStatus": [{
|
|
50737
|
+
name: "deviceId",
|
|
50738
|
+
form: "single",
|
|
50739
|
+
optional: false
|
|
50740
|
+
}],
|
|
50407
50741
|
"ptz.goHome": [{
|
|
50408
50742
|
name: "deviceId",
|
|
50409
50743
|
form: "single",
|
|
@@ -50494,6 +50828,11 @@ Object.freeze({
|
|
|
50494
50828
|
form: "single",
|
|
50495
50829
|
optional: false
|
|
50496
50830
|
}],
|
|
50831
|
+
"recordingArchive.applyDeviceSettingsPatch": [{
|
|
50832
|
+
name: "deviceId",
|
|
50833
|
+
form: "single",
|
|
50834
|
+
optional: false
|
|
50835
|
+
}],
|
|
50497
50836
|
"recordingArchive.deleteFootprint": [{
|
|
50498
50837
|
name: "deviceId",
|
|
50499
50838
|
form: "single",
|
|
@@ -50514,6 +50853,21 @@ Object.freeze({
|
|
|
50514
50853
|
form: "single",
|
|
50515
50854
|
optional: false
|
|
50516
50855
|
}],
|
|
50856
|
+
"recordingArchive.getDeviceLiveContribution": [{
|
|
50857
|
+
name: "deviceId",
|
|
50858
|
+
form: "single",
|
|
50859
|
+
optional: false
|
|
50860
|
+
}],
|
|
50861
|
+
"recordingArchive.getDeviceSettingsContribution": [{
|
|
50862
|
+
name: "deviceId",
|
|
50863
|
+
form: "single",
|
|
50864
|
+
optional: false
|
|
50865
|
+
}],
|
|
50866
|
+
"recordingArchive.getStatus": [{
|
|
50867
|
+
name: "deviceId",
|
|
50868
|
+
form: "single",
|
|
50869
|
+
optional: false
|
|
50870
|
+
}],
|
|
50517
50871
|
"recordingArchive.listOpsLog": [{
|
|
50518
50872
|
name: "deviceId",
|
|
50519
50873
|
form: "single",
|
|
@@ -50599,6 +50953,11 @@ Object.freeze({
|
|
|
50599
50953
|
form: "single",
|
|
50600
50954
|
optional: false
|
|
50601
50955
|
}],
|
|
50956
|
+
"recordingOnboard.getStatus": [{
|
|
50957
|
+
name: "deviceId",
|
|
50958
|
+
form: "single",
|
|
50959
|
+
optional: false
|
|
50960
|
+
}],
|
|
50602
50961
|
"recordingOnboard.setSettings": [{
|
|
50603
50962
|
name: "deviceId",
|
|
50604
50963
|
form: "single",
|
|
@@ -50629,6 +50988,11 @@ Object.freeze({
|
|
|
50629
50988
|
form: "single",
|
|
50630
50989
|
optional: false
|
|
50631
50990
|
}],
|
|
50991
|
+
"sceneMonitor.getStatus": [{
|
|
50992
|
+
name: "deviceId",
|
|
50993
|
+
form: "single",
|
|
50994
|
+
optional: false
|
|
50995
|
+
}],
|
|
50632
50996
|
"sceneMonitor.listScenes": [{
|
|
50633
50997
|
name: "deviceId",
|
|
50634
50998
|
form: "single",
|
|
@@ -50654,6 +51018,11 @@ Object.freeze({
|
|
|
50654
51018
|
form: "single",
|
|
50655
51019
|
optional: false
|
|
50656
51020
|
}],
|
|
51021
|
+
"scriptRunner.getStatus": [{
|
|
51022
|
+
name: "deviceId",
|
|
51023
|
+
form: "single",
|
|
51024
|
+
optional: false
|
|
51025
|
+
}],
|
|
50657
51026
|
"scriptRunner.run": [{
|
|
50658
51027
|
name: "deviceId",
|
|
50659
51028
|
form: "single",
|
|
@@ -50664,11 +51033,31 @@ Object.freeze({
|
|
|
50664
51033
|
form: "single",
|
|
50665
51034
|
optional: false
|
|
50666
51035
|
}],
|
|
51036
|
+
"smoke.getStatus": [{
|
|
51037
|
+
name: "deviceId",
|
|
51038
|
+
form: "single",
|
|
51039
|
+
optional: false
|
|
51040
|
+
}],
|
|
51041
|
+
"snapshot.applyDeviceSettingsPatch": [{
|
|
51042
|
+
name: "deviceId",
|
|
51043
|
+
form: "single",
|
|
51044
|
+
optional: false
|
|
51045
|
+
}],
|
|
50667
51046
|
"snapshot.getDebugState": [{
|
|
50668
51047
|
name: "deviceId",
|
|
50669
51048
|
form: "single",
|
|
50670
51049
|
optional: false
|
|
50671
51050
|
}],
|
|
51051
|
+
"snapshot.getDeviceLiveContribution": [{
|
|
51052
|
+
name: "deviceId",
|
|
51053
|
+
form: "single",
|
|
51054
|
+
optional: false
|
|
51055
|
+
}],
|
|
51056
|
+
"snapshot.getDeviceSettingsContribution": [{
|
|
51057
|
+
name: "deviceId",
|
|
51058
|
+
form: "single",
|
|
51059
|
+
optional: false
|
|
51060
|
+
}],
|
|
50672
51061
|
"snapshot.getSnapshot": [{
|
|
50673
51062
|
name: "deviceId",
|
|
50674
51063
|
form: "single",
|
|
@@ -50685,6 +51074,11 @@ Object.freeze({
|
|
|
50685
51074
|
form: "array",
|
|
50686
51075
|
optional: false
|
|
50687
51076
|
}],
|
|
51077
|
+
"snapshot.getStatus": [{
|
|
51078
|
+
name: "deviceId",
|
|
51079
|
+
form: "single",
|
|
51080
|
+
optional: false
|
|
51081
|
+
}],
|
|
50688
51082
|
"snapshot.invalidateCache": [{
|
|
50689
51083
|
name: "deviceId",
|
|
50690
51084
|
form: "single",
|
|
@@ -50695,6 +51089,11 @@ Object.freeze({
|
|
|
50695
51089
|
form: "single",
|
|
50696
51090
|
optional: false
|
|
50697
51091
|
}],
|
|
51092
|
+
"streamBroker.applyDeviceSettingsPatch": [{
|
|
51093
|
+
name: "deviceId",
|
|
51094
|
+
form: "single",
|
|
51095
|
+
optional: false
|
|
51096
|
+
}],
|
|
50698
51097
|
"streamBroker.assignProfile": [{
|
|
50699
51098
|
name: "deviceId",
|
|
50700
51099
|
form: "single",
|
|
@@ -50710,6 +51109,16 @@ Object.freeze({
|
|
|
50710
51109
|
form: "single",
|
|
50711
51110
|
optional: false
|
|
50712
51111
|
}],
|
|
51112
|
+
"streamBroker.getDeviceLiveContribution": [{
|
|
51113
|
+
name: "deviceId",
|
|
51114
|
+
form: "single",
|
|
51115
|
+
optional: false
|
|
51116
|
+
}],
|
|
51117
|
+
"streamBroker.getDeviceSettingsContribution": [{
|
|
51118
|
+
name: "deviceId",
|
|
51119
|
+
form: "single",
|
|
51120
|
+
optional: false
|
|
51121
|
+
}],
|
|
50713
51122
|
"streamBroker.getStreamWithCodec": [{
|
|
50714
51123
|
name: "deviceId",
|
|
50715
51124
|
form: "single",
|
|
@@ -50770,16 +51179,46 @@ Object.freeze({
|
|
|
50770
51179
|
form: "single",
|
|
50771
51180
|
optional: false
|
|
50772
51181
|
}],
|
|
51182
|
+
"streamParams.getStatus": [{
|
|
51183
|
+
name: "deviceId",
|
|
51184
|
+
form: "single",
|
|
51185
|
+
optional: false
|
|
51186
|
+
}],
|
|
50773
51187
|
"streamParams.setProfile": [{
|
|
50774
51188
|
name: "deviceId",
|
|
50775
51189
|
form: "single",
|
|
50776
51190
|
optional: false
|
|
50777
51191
|
}],
|
|
51192
|
+
"switch.getStatus": [{
|
|
51193
|
+
name: "deviceId",
|
|
51194
|
+
form: "single",
|
|
51195
|
+
optional: false
|
|
51196
|
+
}],
|
|
50778
51197
|
"switch.setState": [{
|
|
50779
51198
|
name: "deviceId",
|
|
50780
51199
|
form: "single",
|
|
50781
51200
|
optional: false
|
|
50782
51201
|
}],
|
|
51202
|
+
"tamper.getStatus": [{
|
|
51203
|
+
name: "deviceId",
|
|
51204
|
+
form: "single",
|
|
51205
|
+
optional: false
|
|
51206
|
+
}],
|
|
51207
|
+
"temperatureSensor.getStatus": [{
|
|
51208
|
+
name: "deviceId",
|
|
51209
|
+
form: "single",
|
|
51210
|
+
optional: false
|
|
51211
|
+
}],
|
|
51212
|
+
"update.getStatus": [{
|
|
51213
|
+
name: "deviceId",
|
|
51214
|
+
form: "single",
|
|
51215
|
+
optional: false
|
|
51216
|
+
}],
|
|
51217
|
+
"vacuumControl.getStatus": [{
|
|
51218
|
+
name: "deviceId",
|
|
51219
|
+
form: "single",
|
|
51220
|
+
optional: false
|
|
51221
|
+
}],
|
|
50783
51222
|
"vacuumControl.locate": [{
|
|
50784
51223
|
name: "deviceId",
|
|
50785
51224
|
form: "single",
|
|
@@ -50815,6 +51254,11 @@ Object.freeze({
|
|
|
50815
51254
|
form: "single",
|
|
50816
51255
|
optional: false
|
|
50817
51256
|
}],
|
|
51257
|
+
"valve.getStatus": [{
|
|
51258
|
+
name: "deviceId",
|
|
51259
|
+
form: "single",
|
|
51260
|
+
optional: false
|
|
51261
|
+
}],
|
|
50818
51262
|
"valve.open": [{
|
|
50819
51263
|
name: "deviceId",
|
|
50820
51264
|
form: "single",
|
|
@@ -50830,6 +51274,11 @@ Object.freeze({
|
|
|
50830
51274
|
form: "single",
|
|
50831
51275
|
optional: false
|
|
50832
51276
|
}],
|
|
51277
|
+
"vibration.getStatus": [{
|
|
51278
|
+
name: "deviceId",
|
|
51279
|
+
form: "single",
|
|
51280
|
+
optional: false
|
|
51281
|
+
}],
|
|
50833
51282
|
"videoclips.dialClipStream": [{
|
|
50834
51283
|
name: "deviceId",
|
|
50835
51284
|
form: "single",
|
|
@@ -50865,6 +51314,11 @@ Object.freeze({
|
|
|
50865
51314
|
form: "single",
|
|
50866
51315
|
optional: false
|
|
50867
51316
|
}],
|
|
51317
|
+
"waterHeater.getStatus": [{
|
|
51318
|
+
name: "deviceId",
|
|
51319
|
+
form: "single",
|
|
51320
|
+
optional: false
|
|
51321
|
+
}],
|
|
50868
51322
|
"waterHeater.setAway": [{
|
|
50869
51323
|
name: "deviceId",
|
|
50870
51324
|
form: "single",
|
|
@@ -50880,6 +51334,11 @@ Object.freeze({
|
|
|
50880
51334
|
form: "single",
|
|
50881
51335
|
optional: false
|
|
50882
51336
|
}],
|
|
51337
|
+
"weather.getStatus": [{
|
|
51338
|
+
name: "deviceId",
|
|
51339
|
+
form: "single",
|
|
51340
|
+
optional: false
|
|
51341
|
+
}],
|
|
50883
51342
|
"webrtcSession.addIceCandidate": [{
|
|
50884
51343
|
name: "deviceId",
|
|
50885
51344
|
form: "single",
|
|
@@ -51617,7 +52076,7 @@ var PreviewTextField = string().max(200);
|
|
|
51617
52076
|
* Whether the notification's preview is a STILL or a short animation.
|
|
51618
52077
|
*
|
|
51619
52078
|
* The operator's ask, verbatim: *"inviato come gif o video (come per le altre
|
|
51620
|
-
* rule)"* — the other rules already offer an animated preview, and a ten-hour
|
|
52079
|
+
* rule)"* [sent as a gif or video (as for the other rules)] — the other rules already offer an animated preview, and a ten-hour
|
|
51621
52080
|
* night reads better as three seconds of motion than as one frame of it. Both
|
|
51622
52081
|
* modes get the SAME treatment (blurred frame, large centred title); `'gif'`
|
|
51623
52082
|
* simply applies it to a dozen frames sampled across the render and assembles
|