@camstack/types 1.2.68 → 1.2.70
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 +1 -1
- package/dist/addon.mjs +1 -1
- package/dist/capabilities/intercom.cap.d.ts +46 -0
- package/dist/capabilities/notification-rules.cap.d.ts +10 -0
- package/dist/capabilities/oauth-integration.cap.d.ts +30 -6
- package/dist/capabilities/pipeline-analytics.cap.d.ts +25 -0
- package/dist/capabilities/sso-bridge.cap.d.ts +45 -9
- package/dist/capabilities/user-management.cap.d.ts +300 -60
- package/dist/generated/addon-api.d.ts +126 -0
- package/dist/generated/device-local-state.d.ts +3 -0
- package/dist/generated/device-proxy.d.ts +1 -0
- package/dist/generated/method-device-selectors.d.ts +27 -0
- package/dist/generated/runtime-state-durability.d.ts +1 -1
- package/dist/generated/scope-presets.d.ts +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +2310 -37
- package/dist/index.mjs +2299 -38
- package/dist/schemas/access-roles.d.ts +92 -0
- package/dist/schemas/auth-records.d.ts +104 -9
- package/dist/schemas/device-selector.d.ts +88 -0
- package/dist/{sleep-CSgK0rNX.mjs → sleep-CwERnGrD.mjs} +1 -0
- package/dist/{sleep-Dh1EJSqF.js → sleep-YuacOD41.js} +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_event_category = require("./event-category-DxZbWydC.js");
|
|
3
|
-
const require_sleep = require("./sleep-
|
|
3
|
+
const require_sleep = require("./sleep-YuacOD41.js");
|
|
4
4
|
const require_canonical_hash = require("./canonical-hash-DNV8S5ET.js");
|
|
5
5
|
const require_enums = require("./enums.js");
|
|
6
6
|
const require_err_msg = require("./err-msg-COpsHMw2.js");
|
|
@@ -12068,7 +12068,16 @@ var NcScheduleSchema = zod.z.object({
|
|
|
12068
12068
|
});
|
|
12069
12069
|
/** Fuzzy plate matcher — OCR noise makes exact match useless (spec row 12/13). */
|
|
12070
12070
|
var NcPlateMatcherSchema = zod.z.object({
|
|
12071
|
-
|
|
12071
|
+
/**
|
|
12072
|
+
* Plate texts (or gallery vehicle names) to match. EMPTY = **any plate the
|
|
12073
|
+
* pipeline could read** — the plate half of "no selection = no narrowing",
|
|
12074
|
+
* and the switch that says this rule is about vehicles that were IDENTIFIED
|
|
12075
|
+
* rather than merely seen. A subject carrying no plate still fails.
|
|
12076
|
+
*
|
|
12077
|
+
* The `.min(1)` this used to carry made that state unauthorable; nothing has
|
|
12078
|
+
* ever persisted an empty list, so widening it cannot change an existing rule.
|
|
12079
|
+
*/
|
|
12080
|
+
values: zod.z.array(zod.z.string().min(1)),
|
|
12072
12081
|
/** Max Levenshtein distance after normalization (uppercase alphanumeric). */
|
|
12073
12082
|
maxDistance: zod.z.number().int().min(0).max(3).default(1)
|
|
12074
12083
|
});
|
|
@@ -12330,18 +12339,47 @@ var NcConditionsSchema = zod.z.object({
|
|
|
12330
12339
|
*/
|
|
12331
12340
|
labelEquals: zod.z.array(zod.z.string().min(1)).optional(),
|
|
12332
12341
|
/**
|
|
12333
|
-
*
|
|
12334
|
-
*
|
|
12335
|
-
*
|
|
12342
|
+
* KNOWN FACES — the rule's identity scope, and the switch that says the rule
|
|
12343
|
+
* is about recognised people at all.
|
|
12344
|
+
*
|
|
12345
|
+
* Three states, and the empty one is the point:
|
|
12346
|
+
*
|
|
12347
|
+
* | value | meaning |
|
|
12348
|
+
* | --- | --- |
|
|
12349
|
+
* | absent | the rule does not care who it is; an unrecognised person matches |
|
|
12350
|
+
* | `[]` | **only known faces** — any identity in the gallery, nobody in particular |
|
|
12351
|
+
* | a list | only these identities |
|
|
12352
|
+
*
|
|
12353
|
+
* `[]` is the repo-wide "no selection = no narrowing" reading (an absent
|
|
12354
|
+
* `devices` list is every device), applied one level down: the operator has
|
|
12355
|
+
* turned the face scope ON and narrowed it to nothing, which is every known
|
|
12356
|
+
* face. No second field states the same thing — a switch that can disagree
|
|
12357
|
+
* with the list under it is worse than no switch (D62).
|
|
12358
|
+
*
|
|
12359
|
+
* MEMBERS ARE FACE-GALLERY `Identity.id`s (uuid), not display names. A name is
|
|
12360
|
+
* renameable, and a rule authored on "Gianluca" went silently dark the moment
|
|
12361
|
+
* the operator fixed the spelling. The id reaches the record on
|
|
12362
|
+
* `LabelAttribution.identityId`; the name is what the editor shows and what
|
|
12363
|
+
* `{{label}}` renders.
|
|
12364
|
+
*
|
|
12365
|
+
* Rules written before this carry NAMES, and are resolved to ids lazily at
|
|
12366
|
+
* load (`NcRuleStore.load`) against the live gallery — a name nothing answers
|
|
12367
|
+
* for is left as it stands and reported, never dropped. The engine also
|
|
12368
|
+
* accepts a display-name hit as a compatibility leg, so a rule whose
|
|
12369
|
+
* migration could not resolve keeps matching exactly what it matched before.
|
|
12336
12370
|
*/
|
|
12337
12371
|
identities: zod.z.array(zod.z.string().min(1)).optional(),
|
|
12338
|
-
/**
|
|
12372
|
+
/**
|
|
12373
|
+
* KNOWN PLATES / VEHICLES — the plate mirror of {@link identities}, including
|
|
12374
|
+
* the empty-list reading: `values: []` is "any plate the OCR could read",
|
|
12375
|
+
* a non-empty list is those plates (fuzzily). See {@link NcPlateMatcherSchema}.
|
|
12376
|
+
*/
|
|
12339
12377
|
plates: NcPlateMatcherSchema.optional(),
|
|
12340
12378
|
/**
|
|
12341
|
-
* Identity EXCLUDE — mirror of {@link identities} with `notIn` semantics
|
|
12342
|
-
*
|
|
12343
|
-
* identity
|
|
12344
|
-
*
|
|
12379
|
+
* Identity EXCLUDE — mirror of {@link identities} with `notIn` semantics, and
|
|
12380
|
+
* the same id members and the same lazy name→id migration. A record with NO
|
|
12381
|
+
* identity passes (nothing to exclude), unlike the include variant which
|
|
12382
|
+
* fails on an unrecognised subject. An EMPTY list excludes nobody.
|
|
12345
12383
|
*/
|
|
12346
12384
|
identitiesExclude: zod.z.array(zod.z.string().min(1)).optional(),
|
|
12347
12385
|
/**
|
|
@@ -12734,7 +12772,37 @@ var NcRuleInputSchema = zod.z.object({
|
|
|
12734
12772
|
* a rule that predates the gate must keep delivering byte-for-byte as it
|
|
12735
12773
|
* did, and absent is the only way to say that without a migration.
|
|
12736
12774
|
*/
|
|
12737
|
-
confirm: NcConfirmSchema.optional()
|
|
12775
|
+
confirm: NcConfirmSchema.optional(),
|
|
12776
|
+
/**
|
|
12777
|
+
* WAIT for face/plate recognition before saying anything.
|
|
12778
|
+
*
|
|
12779
|
+
* A notification's TEXT is frozen at enqueue and its media is re-resolved at
|
|
12780
|
+
* send; the identity is neither. A face is confirmed after `confirmFrames`
|
|
12781
|
+
* agreeing observations — p50 **11.4 s** after the track was first seen,
|
|
12782
|
+
* measured on this hub — and an `immediate` rule enqueues on the first object
|
|
12783
|
+
* event, seconds before that. So "Gianluca è arrivato" is unsayable on the
|
|
12784
|
+
* immediate path, and no amount of media re-resolution fixes a sentence.
|
|
12785
|
+
*
|
|
12786
|
+
* Only two honest answers exist, and this flag picks between them. It has
|
|
12787
|
+
* effect ONLY on a rule that declares a recognition scope
|
|
12788
|
+
* ({@link NcConditions.identities} or {@link NcConditions.plates}) — on any
|
|
12789
|
+
* other rule there is nothing to wait for and the flag is inert.
|
|
12790
|
+
*
|
|
12791
|
+
* | value | what happens |
|
|
12792
|
+
* | --- | --- |
|
|
12793
|
+
* | `true` | the rule stops firing on the object event and fires at TRACK CLOSE instead, once, with the name — later, and complete |
|
|
12794
|
+
* | 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) |
|
|
12795
|
+
*
|
|
12796
|
+
* `.optional()` and deliberately NOT `.default()`: a Zod default does not run
|
|
12797
|
+
* on the addon cap path, and absent has to keep meaning exactly what every
|
|
12798
|
+
* rule authored before this field meant.
|
|
12799
|
+
*
|
|
12800
|
+
* The cost of `true` is stated here because the editor states it too: a rule
|
|
12801
|
+
* that waits also inherits track-close SEMANTICS — its `zones` condition
|
|
12802
|
+
* tests every zone the track visited and a `crossing` condition can no longer
|
|
12803
|
+
* be satisfied, because a closed track carries no crossing.
|
|
12804
|
+
*/
|
|
12805
|
+
waitForEnhancement: zod.z.boolean().optional()
|
|
12738
12806
|
});
|
|
12739
12807
|
/**
|
|
12740
12808
|
* Partial patch for `updateRule` — any subset of the input fields, plus the
|
|
@@ -13078,32 +13146,32 @@ var NC_CONDITION_CATALOG = [
|
|
|
13078
13146
|
{
|
|
13079
13147
|
id: "identities",
|
|
13080
13148
|
group: "label",
|
|
13081
|
-
label: "
|
|
13149
|
+
label: "Known faces",
|
|
13082
13150
|
valueType: "stringList",
|
|
13083
13151
|
operator: "in",
|
|
13084
13152
|
appliesTo: ["immediate", "track-end"],
|
|
13085
13153
|
phase: "P1",
|
|
13086
|
-
description: "
|
|
13154
|
+
description: "Only recognised people. Selecting NOBODY means every identity in the face gallery; selecting some narrows to those. Matched on the gallery id, so renaming a person does not break the rule. On immediate delivery the name is not known yet when the notification is enqueued — see the rule’s \"wait for recognition\" switch."
|
|
13087
13155
|
},
|
|
13088
13156
|
{
|
|
13089
13157
|
id: "plates",
|
|
13090
13158
|
group: "label",
|
|
13091
|
-
label: "
|
|
13159
|
+
label: "Known plates",
|
|
13092
13160
|
valueType: "plateMatcher",
|
|
13093
13161
|
operator: "fuzzyIn",
|
|
13094
13162
|
appliesTo: ["immediate", "track-end"],
|
|
13095
13163
|
phase: "P1",
|
|
13096
|
-
description: "Levenshtein-
|
|
13164
|
+
description: "Only vehicles whose plate was read. Selecting NO plate means any readable plate; listed plates are matched Levenshtein-tolerantly, because OCR noise makes an exact match useless."
|
|
13097
13165
|
},
|
|
13098
13166
|
{
|
|
13099
13167
|
id: "identitiesExclude",
|
|
13100
13168
|
group: "label",
|
|
13101
|
-
label: "Excluded
|
|
13169
|
+
label: "Excluded faces",
|
|
13102
13170
|
valueType: "stringList",
|
|
13103
13171
|
operator: "notIn",
|
|
13104
13172
|
appliesTo: ["immediate", "track-end"],
|
|
13105
13173
|
phase: "P1",
|
|
13106
|
-
description: "Veto by identity
|
|
13174
|
+
description: "Veto by identity (mirror of Known faces, same gallery ids). A subject nobody recognised passes — there is nothing to exclude."
|
|
13107
13175
|
},
|
|
13108
13176
|
{
|
|
13109
13177
|
id: "minLabelConfidence",
|
|
@@ -13758,7 +13826,87 @@ var MethodAccessSchema = zod.z.enum([
|
|
|
13758
13826
|
var AllowedProviderSchema = zod.z.union([zod.z.literal("*"), zod.z.array(zod.z.string())]);
|
|
13759
13827
|
var AllowedDevicesSchema = zod.z.record(zod.z.string(), zod.z.union([zod.z.literal("*"), zod.z.array(zod.z.string())]));
|
|
13760
13828
|
var CapScopeSchema = zod.z.enum(["device", "system"]);
|
|
13761
|
-
|
|
13829
|
+
/**
|
|
13830
|
+
* DeviceSelector (scope model v3 — 2026-08-12).
|
|
13831
|
+
*
|
|
13832
|
+
* A `device` grant no longer carries a frozen list of deviceIds. It carries
|
|
13833
|
+
* a SELECTOR the matcher resolves against the live fleet, so the grant can be
|
|
13834
|
+
* DYNAMIC: a `types:['camera']` selector automatically covers a camera added
|
|
13835
|
+
* AFTER the grant was minted — no re-grant, no re-login.
|
|
13836
|
+
*
|
|
13837
|
+
* - `all` — every device in the deployment. The broad viewer/operator
|
|
13838
|
+
* lever without a `category` grant (a `category` grant also covers device
|
|
13839
|
+
* caps that carry no deviceId; `all` is specifically the device set).
|
|
13840
|
+
* - `ids` — an explicit deviceId list. This is what a v2 `device:[…]`
|
|
13841
|
+
* grant migrates to (see {@link TokenScopeSchema}); STATIC — a new camera
|
|
13842
|
+
* is NOT covered until the grant is edited.
|
|
13843
|
+
* - `types` — every device of a `DeviceType` (e.g. every `camera`).
|
|
13844
|
+
* DYNAMIC. A device that changes type, or a new device of the type,
|
|
13845
|
+
* re-resolves on the next request.
|
|
13846
|
+
* - `locations` — every device whose operator-assigned `location` label is
|
|
13847
|
+
* in the set (e.g. "Garden", "Front door"). DYNAMIC. A device with a
|
|
13848
|
+
* null/unset location matches NO `locations` selector.
|
|
13849
|
+
*/
|
|
13850
|
+
var DeviceSelectorSchema = zod.z.discriminatedUnion("kind", [
|
|
13851
|
+
zod.z.object({ kind: zod.z.literal("all") }),
|
|
13852
|
+
zod.z.object({
|
|
13853
|
+
kind: zod.z.literal("ids"),
|
|
13854
|
+
ids: zod.z.array(zod.z.number().int()).min(1)
|
|
13855
|
+
}),
|
|
13856
|
+
zod.z.object({
|
|
13857
|
+
kind: zod.z.literal("types"),
|
|
13858
|
+
types: zod.z.array(zod.z.enum(require_sleep.DeviceType)).min(1)
|
|
13859
|
+
}),
|
|
13860
|
+
zod.z.object({
|
|
13861
|
+
kind: zod.z.literal("locations"),
|
|
13862
|
+
locations: zod.z.array(zod.z.string().min(1)).min(1)
|
|
13863
|
+
})
|
|
13864
|
+
]);
|
|
13865
|
+
var DeviceTokenScopeSchema = zod.z.object({
|
|
13866
|
+
type: zod.z.literal("device"),
|
|
13867
|
+
/** The device SET this grant covers — resolved against the live fleet. */
|
|
13868
|
+
selector: DeviceSelectorSchema,
|
|
13869
|
+
access: zod.z.array(MethodAccessSchema).min(1),
|
|
13870
|
+
/**
|
|
13871
|
+
* Whether a grant on a PARENT device transparently covers its accessory
|
|
13872
|
+
* CHILDREN (siren / floodlight / PIR) via the persisted-parentage walk.
|
|
13873
|
+
* Direction is parent → children ONLY.
|
|
13874
|
+
*
|
|
13875
|
+
* Absent → the matcher DERIVES it from the access flavour: `view`
|
|
13876
|
+
* inherits (a camera viewer sees the camera's accessories), `create` /
|
|
13877
|
+
* `delete` do NOT (actuating/removing a child is an explicit act the
|
|
13878
|
+
* operator must grant on the child, not inherit from the parent). Set it
|
|
13879
|
+
* explicitly to override that default per grant.
|
|
13880
|
+
*/
|
|
13881
|
+
includeLinked: zod.z.boolean().optional()
|
|
13882
|
+
});
|
|
13883
|
+
/**
|
|
13884
|
+
* v2 → v3 lazy migration. A pre-v3 `device` grant carried
|
|
13885
|
+
* `targets: string[]` (stringified deviceIds); it rewrites to the equivalent
|
|
13886
|
+
* `selector: {kind:'ids', ids}`. Applied as a `preprocess` so it runs on
|
|
13887
|
+
* EVERY parse path — stored records AND the JWT-carried scope arrays
|
|
13888
|
+
* normalised at the request boundary ({@link normalizeTokenScopes} in
|
|
13889
|
+
* `device-selector.ts`). Chosen over a one-time DB migration because a
|
|
13890
|
+
* migration cannot reach a JWT already in a client's hands; parse-time
|
|
13891
|
+
* migration covers both without a flag day. No cast — the raw object is read
|
|
13892
|
+
* through `Reflect.get` (its static type is `unknown`).
|
|
13893
|
+
*/
|
|
13894
|
+
function migrateLegacyTokenScope(raw) {
|
|
13895
|
+
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) return raw;
|
|
13896
|
+
if (Reflect.get(raw, "type") !== "device") return raw;
|
|
13897
|
+
if (Reflect.get(raw, "selector") !== void 0) return raw;
|
|
13898
|
+
const targets = Reflect.get(raw, "targets");
|
|
13899
|
+
if (!Array.isArray(targets)) return raw;
|
|
13900
|
+
return {
|
|
13901
|
+
type: "device",
|
|
13902
|
+
selector: {
|
|
13903
|
+
kind: "ids",
|
|
13904
|
+
ids: targets.map((t) => typeof t === "string" ? Number(t) : t).filter((n) => typeof n === "number" && Number.isInteger(n))
|
|
13905
|
+
},
|
|
13906
|
+
access: Reflect.get(raw, "access")
|
|
13907
|
+
};
|
|
13908
|
+
}
|
|
13909
|
+
var TokenScopeSchema = zod.z.preprocess(migrateLegacyTokenScope, zod.z.discriminatedUnion("type", [
|
|
13762
13910
|
zod.z.object({
|
|
13763
13911
|
type: zod.z.literal("category"),
|
|
13764
13912
|
target: CapScopeSchema,
|
|
@@ -13774,18 +13922,8 @@ var TokenScopeSchema = zod.z.discriminatedUnion("type", [
|
|
|
13774
13922
|
target: zod.z.string(),
|
|
13775
13923
|
access: zod.z.array(MethodAccessSchema).min(1)
|
|
13776
13924
|
}),
|
|
13777
|
-
|
|
13778
|
-
|
|
13779
|
-
/**
|
|
13780
|
-
* One or more deviceIds (serialised as strings for wire-format
|
|
13781
|
-
* consistency with the rest of the union). Matcher accepts if
|
|
13782
|
-
* `input.deviceId` ∈ `targets`. Array shape avoids the row-explosion
|
|
13783
|
-
* of one scope-per-device when granting access to a set of cameras.
|
|
13784
|
-
*/
|
|
13785
|
-
targets: zod.z.array(zod.z.string()).min(1),
|
|
13786
|
-
access: zod.z.array(MethodAccessSchema).min(1)
|
|
13787
|
-
})
|
|
13788
|
-
]);
|
|
13925
|
+
DeviceTokenScopeSchema
|
|
13926
|
+
]));
|
|
13789
13927
|
var UserRecordSchema = zod.z.object({
|
|
13790
13928
|
id: zod.z.string(),
|
|
13791
13929
|
username: zod.z.string(),
|
|
@@ -14264,7 +14402,21 @@ var LabelTierSchema = zod.z.union([zod.z.literal(1), zod.z.literal(2)]);
|
|
|
14264
14402
|
var LabelAttributionSchema = zod.z.object({
|
|
14265
14403
|
stepId: zod.z.string(),
|
|
14266
14404
|
modelId: zod.z.string().optional(),
|
|
14267
|
-
decidedAt: zod.z.number()
|
|
14405
|
+
decidedAt: zod.z.number(),
|
|
14406
|
+
/**
|
|
14407
|
+
* The GALLERY id behind a recognised tier-2 label — a face-gallery
|
|
14408
|
+
* `Identity.id` or a plate-gallery `Vehicle.id` (both `randomUUID`).
|
|
14409
|
+
*
|
|
14410
|
+
* The text alone is a DISPLAY NAME, and a display name is renameable: a
|
|
14411
|
+
* notification rule authored on "Gianluca" stopped matching the moment the
|
|
14412
|
+
* operator fixed the spelling in the gallery, and nothing said so. The id is
|
|
14413
|
+
* the thing that does not move, so it is what a rule matches on
|
|
14414
|
+
* (`NcConditions.identities`) and the text is what a human is shown.
|
|
14415
|
+
*
|
|
14416
|
+
* Absent when the label names no gallery row — a plate the OCR read but no
|
|
14417
|
+
* vehicle claims, a sub-class, a species, any tier-1 value.
|
|
14418
|
+
*/
|
|
14419
|
+
identityId: zod.z.string().optional()
|
|
14268
14420
|
});
|
|
14269
14421
|
/**
|
|
14270
14422
|
* The TIERED label model (roadmap 4g), spread into `TrackSchema` and
|
|
@@ -23387,7 +23539,41 @@ var intercomCapability = {
|
|
|
23387
23539
|
status: {
|
|
23388
23540
|
schema: IntercomStatusSchema,
|
|
23389
23541
|
kind: "command-driven"
|
|
23390
|
-
}
|
|
23542
|
+
},
|
|
23543
|
+
/**
|
|
23544
|
+
* Runtime-state slice — mirrored by the kernel.
|
|
23545
|
+
*
|
|
23546
|
+
* The cap declared `status` and nothing else, so the only two sources an
|
|
23547
|
+
* exporter has for a value — the `device.state-changed` slice event and the
|
|
23548
|
+
* `deviceState.getAllSnapshots` snapshot, both built from runtime state —
|
|
23549
|
+
* carried nothing for `intercom`. A talk-back entity in Home Assistant would
|
|
23550
|
+
* have been published and never received a value, which is the defect the
|
|
23551
|
+
* export's two classification tables exist to prevent (177 of them, once), so
|
|
23552
|
+
* `intercom` was excluded rather than exported.
|
|
23553
|
+
*
|
|
23554
|
+
* The shape is the status shape: there is exactly one truth about talk-back
|
|
23555
|
+
* and duplicating it into a second schema is how two halves of one capability
|
|
23556
|
+
* come to disagree. Providers write it through
|
|
23557
|
+
* `this.runtimeState.setCapState('intercom', …)` at the four points that open
|
|
23558
|
+
* and close a session, and seed it at registration so the slice exists before
|
|
23559
|
+
* the first session rather than after it.
|
|
23560
|
+
*
|
|
23561
|
+
* **Bound, named rather than hidden:** `talking` mirrors the provider's own
|
|
23562
|
+
* session handle, so a session torn down by a transport death that never
|
|
23563
|
+
* reaches `stopSession` / `endTalkSession` leaves it latched until the next
|
|
23564
|
+
* session or the next restart. That is why the slice is `session` and not
|
|
23565
|
+
* `restored` — a restart must never restore "talking".
|
|
23566
|
+
*/
|
|
23567
|
+
runtimeState: IntercomStatusSchema,
|
|
23568
|
+
/**
|
|
23569
|
+
* Runtime-state durability: **session** — `talking` describes a live audio
|
|
23570
|
+
* session, which by definition does not survive the process that held it.
|
|
23571
|
+
* Restoring it would publish a camera as talking to nobody.
|
|
23572
|
+
*
|
|
23573
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23574
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23575
|
+
*/
|
|
23576
|
+
durability: "session"
|
|
23391
23577
|
};
|
|
23392
23578
|
//#endregion
|
|
23393
23579
|
//#region src/capabilities/lawn-mower-control.cap.ts
|
|
@@ -26651,7 +26837,7 @@ var recordingCapability = {
|
|
|
26651
26837
|
toMs: zod.z.number()
|
|
26652
26838
|
}), RecordingAvailabilitySchema, {
|
|
26653
26839
|
kind: "query",
|
|
26654
|
-
auth: "
|
|
26840
|
+
auth: "protected"
|
|
26655
26841
|
}),
|
|
26656
26842
|
/** Which calendar days in [fromMs,toMs) have ≥1 recorded segment, bucketed by
|
|
26657
26843
|
* the client's local day (`tzOffsetMinutes` = minutes to add to UTC). Drives
|
|
@@ -26663,7 +26849,7 @@ var recordingCapability = {
|
|
|
26663
26849
|
tzOffsetMinutes: zod.z.number()
|
|
26664
26850
|
}), RecordingDaysSchema, {
|
|
26665
26851
|
kind: "query",
|
|
26666
|
-
auth: "
|
|
26852
|
+
auth: "protected"
|
|
26667
26853
|
}),
|
|
26668
26854
|
getPlaybackManifest: require_sleep.method(zod.z.object({
|
|
26669
26855
|
deviceId: zod.z.number(),
|
|
@@ -26671,7 +26857,7 @@ var recordingCapability = {
|
|
|
26671
26857
|
toMs: zod.z.number()
|
|
26672
26858
|
}), RecordingManifestSchema, {
|
|
26673
26859
|
kind: "query",
|
|
26674
|
-
auth: "
|
|
26860
|
+
auth: "protected"
|
|
26675
26861
|
}),
|
|
26676
26862
|
getStorageUsage: require_sleep.method(zod.z.object({}), RecordingStorageUsageSchema, {
|
|
26677
26863
|
kind: "query",
|
|
@@ -29648,6 +29834,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
29648
29834
|
humiditySensor: humiditySensorCapability,
|
|
29649
29835
|
image: imageCapability,
|
|
29650
29836
|
imageSettings: imageSettingsCapability,
|
|
29837
|
+
intercom: intercomCapability,
|
|
29651
29838
|
lawnMowerControl: lawnMowerControlCapability,
|
|
29652
29839
|
lockControl: lockControlCapability,
|
|
29653
29840
|
mediaPlayer: mediaPlayerCapability,
|
|
@@ -38763,6 +38950,1808 @@ var SYSTEM_CAP_NAMES = [
|
|
|
38763
38950
|
"viewer-ui"
|
|
38764
38951
|
];
|
|
38765
38952
|
//#endregion
|
|
38953
|
+
//#region src/generated/method-device-selectors.ts
|
|
38954
|
+
var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
38955
|
+
"accessories.setChildHidden": [{
|
|
38956
|
+
name: "childDeviceId",
|
|
38957
|
+
form: "single",
|
|
38958
|
+
optional: false
|
|
38959
|
+
}, {
|
|
38960
|
+
name: "deviceId",
|
|
38961
|
+
form: "single",
|
|
38962
|
+
optional: false
|
|
38963
|
+
}],
|
|
38964
|
+
"addonSettings.getDeviceSettings": [{
|
|
38965
|
+
name: "deviceId",
|
|
38966
|
+
form: "single",
|
|
38967
|
+
optional: false
|
|
38968
|
+
}],
|
|
38969
|
+
"addonSettings.updateDeviceSettings": [{
|
|
38970
|
+
name: "deviceId",
|
|
38971
|
+
form: "single",
|
|
38972
|
+
optional: false
|
|
38973
|
+
}],
|
|
38974
|
+
"alarmPanel.arm": [{
|
|
38975
|
+
name: "deviceId",
|
|
38976
|
+
form: "single",
|
|
38977
|
+
optional: false
|
|
38978
|
+
}],
|
|
38979
|
+
"alarmPanel.disarm": [{
|
|
38980
|
+
name: "deviceId",
|
|
38981
|
+
form: "single",
|
|
38982
|
+
optional: false
|
|
38983
|
+
}],
|
|
38984
|
+
"alarmPanel.trigger": [{
|
|
38985
|
+
name: "deviceId",
|
|
38986
|
+
form: "single",
|
|
38987
|
+
optional: false
|
|
38988
|
+
}],
|
|
38989
|
+
"audioAnalysis.resolveDeviceSettings": [{
|
|
38990
|
+
name: "deviceId",
|
|
38991
|
+
form: "single",
|
|
38992
|
+
optional: false
|
|
38993
|
+
}],
|
|
38994
|
+
"audioAnalyzer.classify": [{
|
|
38995
|
+
name: "deviceId",
|
|
38996
|
+
form: "single",
|
|
38997
|
+
optional: true
|
|
38998
|
+
}],
|
|
38999
|
+
"audioMetrics.getCurrentSnapshot": [{
|
|
39000
|
+
name: "deviceId",
|
|
39001
|
+
form: "single",
|
|
39002
|
+
optional: false
|
|
39003
|
+
}],
|
|
39004
|
+
"audioMetrics.getHistory": [{
|
|
39005
|
+
name: "deviceId",
|
|
39006
|
+
form: "single",
|
|
39007
|
+
optional: false
|
|
39008
|
+
}],
|
|
39009
|
+
"automationControl.disable": [{
|
|
39010
|
+
name: "deviceId",
|
|
39011
|
+
form: "single",
|
|
39012
|
+
optional: false
|
|
39013
|
+
}],
|
|
39014
|
+
"automationControl.enable": [{
|
|
39015
|
+
name: "deviceId",
|
|
39016
|
+
form: "single",
|
|
39017
|
+
optional: false
|
|
39018
|
+
}],
|
|
39019
|
+
"automationControl.trigger": [{
|
|
39020
|
+
name: "deviceId",
|
|
39021
|
+
form: "single",
|
|
39022
|
+
optional: false
|
|
39023
|
+
}],
|
|
39024
|
+
"battery.wakeForStream": [{
|
|
39025
|
+
name: "deviceId",
|
|
39026
|
+
form: "single",
|
|
39027
|
+
optional: false
|
|
39028
|
+
}],
|
|
39029
|
+
"brightness.setBrightness": [{
|
|
39030
|
+
name: "deviceId",
|
|
39031
|
+
form: "single",
|
|
39032
|
+
optional: false
|
|
39033
|
+
}],
|
|
39034
|
+
"button.press": [{
|
|
39035
|
+
name: "deviceId",
|
|
39036
|
+
form: "single",
|
|
39037
|
+
optional: false
|
|
39038
|
+
}],
|
|
39039
|
+
"cameraCredentials.getCredentials": [{
|
|
39040
|
+
name: "deviceId",
|
|
39041
|
+
form: "single",
|
|
39042
|
+
optional: false
|
|
39043
|
+
}],
|
|
39044
|
+
"cameraStreams.getBrokerStreams": [{
|
|
39045
|
+
name: "deviceId",
|
|
39046
|
+
form: "single",
|
|
39047
|
+
optional: false
|
|
39048
|
+
}],
|
|
39049
|
+
"cameraStreams.getCameraStreams": [{
|
|
39050
|
+
name: "deviceId",
|
|
39051
|
+
form: "single",
|
|
39052
|
+
optional: false
|
|
39053
|
+
}],
|
|
39054
|
+
"cameraStreams.getProfileRtspEntries": [{
|
|
39055
|
+
name: "deviceId",
|
|
39056
|
+
form: "single",
|
|
39057
|
+
optional: false
|
|
39058
|
+
}],
|
|
39059
|
+
"cameraStreams.getRtspEntries": [{
|
|
39060
|
+
name: "deviceId",
|
|
39061
|
+
form: "single",
|
|
39062
|
+
optional: false
|
|
39063
|
+
}],
|
|
39064
|
+
"cameraStreams.pickStream": [{
|
|
39065
|
+
name: "deviceId",
|
|
39066
|
+
form: "single",
|
|
39067
|
+
optional: false
|
|
39068
|
+
}],
|
|
39069
|
+
"climateControl.setFanMode": [{
|
|
39070
|
+
name: "deviceId",
|
|
39071
|
+
form: "single",
|
|
39072
|
+
optional: false
|
|
39073
|
+
}],
|
|
39074
|
+
"climateControl.setMode": [{
|
|
39075
|
+
name: "deviceId",
|
|
39076
|
+
form: "single",
|
|
39077
|
+
optional: false
|
|
39078
|
+
}],
|
|
39079
|
+
"climateControl.setPreset": [{
|
|
39080
|
+
name: "deviceId",
|
|
39081
|
+
form: "single",
|
|
39082
|
+
optional: false
|
|
39083
|
+
}],
|
|
39084
|
+
"climateControl.setSwingHorizontal": [{
|
|
39085
|
+
name: "deviceId",
|
|
39086
|
+
form: "single",
|
|
39087
|
+
optional: false
|
|
39088
|
+
}],
|
|
39089
|
+
"climateControl.setSwingVertical": [{
|
|
39090
|
+
name: "deviceId",
|
|
39091
|
+
form: "single",
|
|
39092
|
+
optional: false
|
|
39093
|
+
}],
|
|
39094
|
+
"climateControl.setTarget": [{
|
|
39095
|
+
name: "deviceId",
|
|
39096
|
+
form: "single",
|
|
39097
|
+
optional: false
|
|
39098
|
+
}],
|
|
39099
|
+
"climateControl.setTargetHumidity": [{
|
|
39100
|
+
name: "deviceId",
|
|
39101
|
+
form: "single",
|
|
39102
|
+
optional: false
|
|
39103
|
+
}],
|
|
39104
|
+
"climateControl.setTargetRange": [{
|
|
39105
|
+
name: "deviceId",
|
|
39106
|
+
form: "single",
|
|
39107
|
+
optional: false
|
|
39108
|
+
}],
|
|
39109
|
+
"color.setColor": [{
|
|
39110
|
+
name: "deviceId",
|
|
39111
|
+
form: "single",
|
|
39112
|
+
optional: false
|
|
39113
|
+
}],
|
|
39114
|
+
"consumables.reset": [{
|
|
39115
|
+
name: "deviceId",
|
|
39116
|
+
form: "single",
|
|
39117
|
+
optional: false
|
|
39118
|
+
}],
|
|
39119
|
+
"control.setValue": [{
|
|
39120
|
+
name: "deviceId",
|
|
39121
|
+
form: "single",
|
|
39122
|
+
optional: false
|
|
39123
|
+
}],
|
|
39124
|
+
"cover.close": [{
|
|
39125
|
+
name: "deviceId",
|
|
39126
|
+
form: "single",
|
|
39127
|
+
optional: false
|
|
39128
|
+
}],
|
|
39129
|
+
"cover.open": [{
|
|
39130
|
+
name: "deviceId",
|
|
39131
|
+
form: "single",
|
|
39132
|
+
optional: false
|
|
39133
|
+
}],
|
|
39134
|
+
"cover.setPosition": [{
|
|
39135
|
+
name: "deviceId",
|
|
39136
|
+
form: "single",
|
|
39137
|
+
optional: false
|
|
39138
|
+
}],
|
|
39139
|
+
"cover.setTiltPosition": [{
|
|
39140
|
+
name: "deviceId",
|
|
39141
|
+
form: "single",
|
|
39142
|
+
optional: false
|
|
39143
|
+
}],
|
|
39144
|
+
"cover.stop": [{
|
|
39145
|
+
name: "deviceId",
|
|
39146
|
+
form: "single",
|
|
39147
|
+
optional: false
|
|
39148
|
+
}],
|
|
39149
|
+
"dayNight.getOptions": [{
|
|
39150
|
+
name: "deviceId",
|
|
39151
|
+
form: "single",
|
|
39152
|
+
optional: false
|
|
39153
|
+
}],
|
|
39154
|
+
"dayNight.setSettings": [{
|
|
39155
|
+
name: "deviceId",
|
|
39156
|
+
form: "single",
|
|
39157
|
+
optional: false
|
|
39158
|
+
}],
|
|
39159
|
+
"decoder.createSession": [{
|
|
39160
|
+
name: "deviceId",
|
|
39161
|
+
form: "single",
|
|
39162
|
+
optional: true
|
|
39163
|
+
}],
|
|
39164
|
+
"deviceAdoption.release": [{
|
|
39165
|
+
name: "camDeviceId",
|
|
39166
|
+
form: "single",
|
|
39167
|
+
optional: false
|
|
39168
|
+
}],
|
|
39169
|
+
"deviceAdoption.resync": [{
|
|
39170
|
+
name: "camDeviceId",
|
|
39171
|
+
form: "single",
|
|
39172
|
+
optional: false
|
|
39173
|
+
}],
|
|
39174
|
+
"deviceDiscovery.adoptDevice": [{
|
|
39175
|
+
name: "deviceId",
|
|
39176
|
+
form: "single",
|
|
39177
|
+
optional: false
|
|
39178
|
+
}],
|
|
39179
|
+
"deviceDiscovery.listDiscovered": [{
|
|
39180
|
+
name: "deviceId",
|
|
39181
|
+
form: "single",
|
|
39182
|
+
optional: false
|
|
39183
|
+
}],
|
|
39184
|
+
"deviceDiscovery.refreshDiscovery": [{
|
|
39185
|
+
name: "deviceId",
|
|
39186
|
+
form: "single",
|
|
39187
|
+
optional: false
|
|
39188
|
+
}],
|
|
39189
|
+
"deviceDiscovery.releaseDevice": [{
|
|
39190
|
+
name: "childDeviceId",
|
|
39191
|
+
form: "single",
|
|
39192
|
+
optional: false
|
|
39193
|
+
}, {
|
|
39194
|
+
name: "deviceId",
|
|
39195
|
+
form: "single",
|
|
39196
|
+
optional: false
|
|
39197
|
+
}],
|
|
39198
|
+
"deviceManager.adoptionRelease": [{
|
|
39199
|
+
name: "camDeviceId",
|
|
39200
|
+
form: "single",
|
|
39201
|
+
optional: false
|
|
39202
|
+
}],
|
|
39203
|
+
"deviceManager.adoptionResync": [{
|
|
39204
|
+
name: "camDeviceId",
|
|
39205
|
+
form: "single",
|
|
39206
|
+
optional: false
|
|
39207
|
+
}],
|
|
39208
|
+
"deviceManager.applyInitialMeta": [{
|
|
39209
|
+
name: "deviceId",
|
|
39210
|
+
form: "single",
|
|
39211
|
+
optional: false
|
|
39212
|
+
}, {
|
|
39213
|
+
name: "linkDeviceId",
|
|
39214
|
+
form: "single",
|
|
39215
|
+
optional: true
|
|
39216
|
+
}],
|
|
39217
|
+
"deviceManager.disable": [{
|
|
39218
|
+
name: "deviceId",
|
|
39219
|
+
form: "single",
|
|
39220
|
+
optional: false
|
|
39221
|
+
}],
|
|
39222
|
+
"deviceManager.enable": [{
|
|
39223
|
+
name: "deviceId",
|
|
39224
|
+
form: "single",
|
|
39225
|
+
optional: false
|
|
39226
|
+
}],
|
|
39227
|
+
"deviceManager.getBindings": [{
|
|
39228
|
+
name: "deviceId",
|
|
39229
|
+
form: "single",
|
|
39230
|
+
optional: false
|
|
39231
|
+
}],
|
|
39232
|
+
"deviceManager.getChildren": [{
|
|
39233
|
+
name: "parentDeviceId",
|
|
39234
|
+
form: "single",
|
|
39235
|
+
optional: false
|
|
39236
|
+
}],
|
|
39237
|
+
"deviceManager.getConfigSchema": [{
|
|
39238
|
+
name: "deviceId",
|
|
39239
|
+
form: "single",
|
|
39240
|
+
optional: false
|
|
39241
|
+
}],
|
|
39242
|
+
"deviceManager.getDevice": [{
|
|
39243
|
+
name: "deviceId",
|
|
39244
|
+
form: "single",
|
|
39245
|
+
optional: false
|
|
39246
|
+
}],
|
|
39247
|
+
"deviceManager.getDeviceAggregate": [{
|
|
39248
|
+
name: "deviceId",
|
|
39249
|
+
form: "single",
|
|
39250
|
+
optional: false
|
|
39251
|
+
}],
|
|
39252
|
+
"deviceManager.getDeviceLiveInfoAggregate": [{
|
|
39253
|
+
name: "deviceId",
|
|
39254
|
+
form: "single",
|
|
39255
|
+
optional: false
|
|
39256
|
+
}],
|
|
39257
|
+
"deviceManager.getDeviceSettingsAggregate": [{
|
|
39258
|
+
name: "deviceId",
|
|
39259
|
+
form: "single",
|
|
39260
|
+
optional: false
|
|
39261
|
+
}],
|
|
39262
|
+
"deviceManager.getDeviceStatusAggregate": [{
|
|
39263
|
+
name: "deviceId",
|
|
39264
|
+
form: "single",
|
|
39265
|
+
optional: false
|
|
39266
|
+
}],
|
|
39267
|
+
"deviceManager.getDeviceStatusAggregateBatch": [{
|
|
39268
|
+
name: "deviceIds",
|
|
39269
|
+
form: "array",
|
|
39270
|
+
optional: false
|
|
39271
|
+
}],
|
|
39272
|
+
"deviceManager.getLinkedDevices": [{
|
|
39273
|
+
name: "deviceId",
|
|
39274
|
+
form: "single",
|
|
39275
|
+
optional: false
|
|
39276
|
+
}],
|
|
39277
|
+
"deviceManager.getSettingsSchema": [{
|
|
39278
|
+
name: "deviceId",
|
|
39279
|
+
form: "single",
|
|
39280
|
+
optional: false
|
|
39281
|
+
}],
|
|
39282
|
+
"deviceManager.getStreamProfileMap": [{
|
|
39283
|
+
name: "deviceId",
|
|
39284
|
+
form: "single",
|
|
39285
|
+
optional: false
|
|
39286
|
+
}],
|
|
39287
|
+
"deviceManager.getStreamSources": [{
|
|
39288
|
+
name: "deviceId",
|
|
39289
|
+
form: "single",
|
|
39290
|
+
optional: false
|
|
39291
|
+
}],
|
|
39292
|
+
"deviceManager.getWireableFields": [{
|
|
39293
|
+
name: "deviceId",
|
|
39294
|
+
form: "single",
|
|
39295
|
+
optional: false
|
|
39296
|
+
}],
|
|
39297
|
+
"deviceManager.loadConfig": [{
|
|
39298
|
+
name: "deviceId",
|
|
39299
|
+
form: "single",
|
|
39300
|
+
optional: false
|
|
39301
|
+
}],
|
|
39302
|
+
"deviceManager.loadMeta": [{
|
|
39303
|
+
name: "deviceId",
|
|
39304
|
+
form: "single",
|
|
39305
|
+
optional: false
|
|
39306
|
+
}],
|
|
39307
|
+
"deviceManager.loadRuntimeState": [{
|
|
39308
|
+
name: "deviceId",
|
|
39309
|
+
form: "single",
|
|
39310
|
+
optional: false
|
|
39311
|
+
}],
|
|
39312
|
+
"deviceManager.persistConfig": [{
|
|
39313
|
+
name: "deviceId",
|
|
39314
|
+
form: "single",
|
|
39315
|
+
optional: false
|
|
39316
|
+
}],
|
|
39317
|
+
"deviceManager.probeStreams": [{
|
|
39318
|
+
name: "deviceId",
|
|
39319
|
+
form: "single",
|
|
39320
|
+
optional: false
|
|
39321
|
+
}],
|
|
39322
|
+
"deviceManager.registerDevice": [{
|
|
39323
|
+
name: "parentDeviceId",
|
|
39324
|
+
form: "single",
|
|
39325
|
+
optional: true
|
|
39326
|
+
}],
|
|
39327
|
+
"deviceManager.remove": [{
|
|
39328
|
+
name: "deviceId",
|
|
39329
|
+
form: "single",
|
|
39330
|
+
optional: false
|
|
39331
|
+
}],
|
|
39332
|
+
"deviceManager.removeDevice": [{
|
|
39333
|
+
name: "deviceId",
|
|
39334
|
+
form: "single",
|
|
39335
|
+
optional: false
|
|
39336
|
+
}],
|
|
39337
|
+
"deviceManager.runDeviceAction": [{
|
|
39338
|
+
name: "deviceId",
|
|
39339
|
+
form: "single",
|
|
39340
|
+
optional: false
|
|
39341
|
+
}],
|
|
39342
|
+
"deviceManager.setChildLayout": [{
|
|
39343
|
+
name: "deviceId",
|
|
39344
|
+
form: "single",
|
|
39345
|
+
optional: false
|
|
39346
|
+
}],
|
|
39347
|
+
"deviceManager.setDisabled": [{
|
|
39348
|
+
name: "deviceId",
|
|
39349
|
+
form: "single",
|
|
39350
|
+
optional: false
|
|
39351
|
+
}],
|
|
39352
|
+
"deviceManager.setDisplay": [{
|
|
39353
|
+
name: "deviceId",
|
|
39354
|
+
form: "single",
|
|
39355
|
+
optional: false
|
|
39356
|
+
}],
|
|
39357
|
+
"deviceManager.setIntegrationId": [{
|
|
39358
|
+
name: "deviceId",
|
|
39359
|
+
form: "single",
|
|
39360
|
+
optional: false
|
|
39361
|
+
}],
|
|
39362
|
+
"deviceManager.setLinkDeviceId": [{
|
|
39363
|
+
name: "deviceId",
|
|
39364
|
+
form: "single",
|
|
39365
|
+
optional: false
|
|
39366
|
+
}, {
|
|
39367
|
+
name: "linkDeviceId",
|
|
39368
|
+
form: "single",
|
|
39369
|
+
optional: true
|
|
39370
|
+
}],
|
|
39371
|
+
"deviceManager.setLocation": [{
|
|
39372
|
+
name: "deviceId",
|
|
39373
|
+
form: "single",
|
|
39374
|
+
optional: false
|
|
39375
|
+
}],
|
|
39376
|
+
"deviceManager.setMetadata": [{
|
|
39377
|
+
name: "deviceId",
|
|
39378
|
+
form: "single",
|
|
39379
|
+
optional: false
|
|
39380
|
+
}],
|
|
39381
|
+
"deviceManager.setName": [{
|
|
39382
|
+
name: "deviceId",
|
|
39383
|
+
form: "single",
|
|
39384
|
+
optional: false
|
|
39385
|
+
}],
|
|
39386
|
+
"deviceManager.setPrimaryChildEntityId": [{
|
|
39387
|
+
name: "deviceId",
|
|
39388
|
+
form: "single",
|
|
39389
|
+
optional: false
|
|
39390
|
+
}],
|
|
39391
|
+
"deviceManager.setRole": [{
|
|
39392
|
+
name: "deviceId",
|
|
39393
|
+
form: "single",
|
|
39394
|
+
optional: false
|
|
39395
|
+
}],
|
|
39396
|
+
"deviceManager.setStreamProfileMap": [{
|
|
39397
|
+
name: "deviceId",
|
|
39398
|
+
form: "single",
|
|
39399
|
+
optional: false
|
|
39400
|
+
}],
|
|
39401
|
+
"deviceManager.setType": [{
|
|
39402
|
+
name: "deviceId",
|
|
39403
|
+
form: "single",
|
|
39404
|
+
optional: false
|
|
39405
|
+
}],
|
|
39406
|
+
"deviceManager.setWrapperActive": [{
|
|
39407
|
+
name: "deviceId",
|
|
39408
|
+
form: "single",
|
|
39409
|
+
optional: false
|
|
39410
|
+
}],
|
|
39411
|
+
"deviceManager.testField": [{
|
|
39412
|
+
name: "deviceId",
|
|
39413
|
+
form: "single",
|
|
39414
|
+
optional: false
|
|
39415
|
+
}],
|
|
39416
|
+
"deviceManager.updateConfig": [{
|
|
39417
|
+
name: "deviceId",
|
|
39418
|
+
form: "single",
|
|
39419
|
+
optional: false
|
|
39420
|
+
}],
|
|
39421
|
+
"deviceManager.updateDeviceField": [{
|
|
39422
|
+
name: "deviceId",
|
|
39423
|
+
form: "single",
|
|
39424
|
+
optional: false
|
|
39425
|
+
}],
|
|
39426
|
+
"deviceManager.updateDeviceFieldsBatch": [{
|
|
39427
|
+
name: "deviceId",
|
|
39428
|
+
form: "single",
|
|
39429
|
+
optional: false
|
|
39430
|
+
}],
|
|
39431
|
+
"deviceOps.getConfigEntries": [{
|
|
39432
|
+
name: "deviceId",
|
|
39433
|
+
form: "single",
|
|
39434
|
+
optional: false
|
|
39435
|
+
}],
|
|
39436
|
+
"deviceOps.getRawState": [{
|
|
39437
|
+
name: "deviceId",
|
|
39438
|
+
form: "single",
|
|
39439
|
+
optional: false
|
|
39440
|
+
}],
|
|
39441
|
+
"deviceOps.getSettingsSchema": [{
|
|
39442
|
+
name: "deviceId",
|
|
39443
|
+
form: "single",
|
|
39444
|
+
optional: false
|
|
39445
|
+
}],
|
|
39446
|
+
"deviceOps.getStreamSources": [{
|
|
39447
|
+
name: "deviceId",
|
|
39448
|
+
form: "single",
|
|
39449
|
+
optional: false
|
|
39450
|
+
}],
|
|
39451
|
+
"deviceOps.removeDevice": [{
|
|
39452
|
+
name: "deviceId",
|
|
39453
|
+
form: "single",
|
|
39454
|
+
optional: false
|
|
39455
|
+
}],
|
|
39456
|
+
"deviceOps.runAction": [{
|
|
39457
|
+
name: "deviceId",
|
|
39458
|
+
form: "single",
|
|
39459
|
+
optional: false
|
|
39460
|
+
}],
|
|
39461
|
+
"deviceOps.setConfig": [{
|
|
39462
|
+
name: "deviceId",
|
|
39463
|
+
form: "single",
|
|
39464
|
+
optional: false
|
|
39465
|
+
}],
|
|
39466
|
+
"deviceState.getCapSlice": [{
|
|
39467
|
+
name: "deviceId",
|
|
39468
|
+
form: "single",
|
|
39469
|
+
optional: false
|
|
39470
|
+
}],
|
|
39471
|
+
"deviceState.getSnapshot": [{
|
|
39472
|
+
name: "deviceId",
|
|
39473
|
+
form: "single",
|
|
39474
|
+
optional: false
|
|
39475
|
+
}],
|
|
39476
|
+
"deviceState.setCapSlice": [{
|
|
39477
|
+
name: "deviceId",
|
|
39478
|
+
form: "single",
|
|
39479
|
+
optional: false
|
|
39480
|
+
}],
|
|
39481
|
+
"events.getEventClipUrl": [{
|
|
39482
|
+
name: "deviceId",
|
|
39483
|
+
form: "single",
|
|
39484
|
+
optional: false
|
|
39485
|
+
}],
|
|
39486
|
+
"events.getEvents": [{
|
|
39487
|
+
name: "deviceId",
|
|
39488
|
+
form: "single",
|
|
39489
|
+
optional: false
|
|
39490
|
+
}],
|
|
39491
|
+
"events.getEventThumbnail": [{
|
|
39492
|
+
name: "deviceId",
|
|
39493
|
+
form: "single",
|
|
39494
|
+
optional: false
|
|
39495
|
+
}],
|
|
39496
|
+
"faceGallery.getFaceByTrack": [{
|
|
39497
|
+
name: "deviceId",
|
|
39498
|
+
form: "single",
|
|
39499
|
+
optional: false
|
|
39500
|
+
}],
|
|
39501
|
+
"faceGallery.listRecentFaces": [{
|
|
39502
|
+
name: "deviceId",
|
|
39503
|
+
form: "single",
|
|
39504
|
+
optional: true
|
|
39505
|
+
}],
|
|
39506
|
+
"fanControl.setDirection": [{
|
|
39507
|
+
name: "deviceId",
|
|
39508
|
+
form: "single",
|
|
39509
|
+
optional: false
|
|
39510
|
+
}],
|
|
39511
|
+
"fanControl.setOscillating": [{
|
|
39512
|
+
name: "deviceId",
|
|
39513
|
+
form: "single",
|
|
39514
|
+
optional: false
|
|
39515
|
+
}],
|
|
39516
|
+
"fanControl.setPercentage": [{
|
|
39517
|
+
name: "deviceId",
|
|
39518
|
+
form: "single",
|
|
39519
|
+
optional: false
|
|
39520
|
+
}],
|
|
39521
|
+
"fanControl.setPreset": [{
|
|
39522
|
+
name: "deviceId",
|
|
39523
|
+
form: "single",
|
|
39524
|
+
optional: false
|
|
39525
|
+
}],
|
|
39526
|
+
"humidifier.setMode": [{
|
|
39527
|
+
name: "deviceId",
|
|
39528
|
+
form: "single",
|
|
39529
|
+
optional: false
|
|
39530
|
+
}],
|
|
39531
|
+
"humidifier.setOn": [{
|
|
39532
|
+
name: "deviceId",
|
|
39533
|
+
form: "single",
|
|
39534
|
+
optional: false
|
|
39535
|
+
}],
|
|
39536
|
+
"humidifier.setTargetHumidity": [{
|
|
39537
|
+
name: "deviceId",
|
|
39538
|
+
form: "single",
|
|
39539
|
+
optional: false
|
|
39540
|
+
}],
|
|
39541
|
+
"imageSettings.getOptions": [{
|
|
39542
|
+
name: "deviceId",
|
|
39543
|
+
form: "single",
|
|
39544
|
+
optional: false
|
|
39545
|
+
}],
|
|
39546
|
+
"imageSettings.setSettings": [{
|
|
39547
|
+
name: "deviceId",
|
|
39548
|
+
form: "single",
|
|
39549
|
+
optional: false
|
|
39550
|
+
}],
|
|
39551
|
+
"intercom.endTalkSession": [{
|
|
39552
|
+
name: "deviceId",
|
|
39553
|
+
form: "single",
|
|
39554
|
+
optional: false
|
|
39555
|
+
}],
|
|
39556
|
+
"intercom.handleAnswer": [{
|
|
39557
|
+
name: "deviceId",
|
|
39558
|
+
form: "single",
|
|
39559
|
+
optional: false
|
|
39560
|
+
}],
|
|
39561
|
+
"intercom.pushTalkAudio": [{
|
|
39562
|
+
name: "deviceId",
|
|
39563
|
+
form: "single",
|
|
39564
|
+
optional: false
|
|
39565
|
+
}],
|
|
39566
|
+
"intercom.startSession": [{
|
|
39567
|
+
name: "deviceId",
|
|
39568
|
+
form: "single",
|
|
39569
|
+
optional: false
|
|
39570
|
+
}],
|
|
39571
|
+
"intercom.startTalkSession": [{
|
|
39572
|
+
name: "deviceId",
|
|
39573
|
+
form: "single",
|
|
39574
|
+
optional: false
|
|
39575
|
+
}],
|
|
39576
|
+
"intercom.stopSession": [{
|
|
39577
|
+
name: "deviceId",
|
|
39578
|
+
form: "single",
|
|
39579
|
+
optional: false
|
|
39580
|
+
}],
|
|
39581
|
+
"lawnMowerControl.dock": [{
|
|
39582
|
+
name: "deviceId",
|
|
39583
|
+
form: "single",
|
|
39584
|
+
optional: false
|
|
39585
|
+
}],
|
|
39586
|
+
"lawnMowerControl.pause": [{
|
|
39587
|
+
name: "deviceId",
|
|
39588
|
+
form: "single",
|
|
39589
|
+
optional: false
|
|
39590
|
+
}],
|
|
39591
|
+
"lawnMowerControl.startMowing": [{
|
|
39592
|
+
name: "deviceId",
|
|
39593
|
+
form: "single",
|
|
39594
|
+
optional: false
|
|
39595
|
+
}],
|
|
39596
|
+
"lockControl.lock": [{
|
|
39597
|
+
name: "deviceId",
|
|
39598
|
+
form: "single",
|
|
39599
|
+
optional: false
|
|
39600
|
+
}],
|
|
39601
|
+
"lockControl.open": [{
|
|
39602
|
+
name: "deviceId",
|
|
39603
|
+
form: "single",
|
|
39604
|
+
optional: false
|
|
39605
|
+
}],
|
|
39606
|
+
"lockControl.unlock": [{
|
|
39607
|
+
name: "deviceId",
|
|
39608
|
+
form: "single",
|
|
39609
|
+
optional: false
|
|
39610
|
+
}],
|
|
39611
|
+
"mediaPlayer.next": [{
|
|
39612
|
+
name: "deviceId",
|
|
39613
|
+
form: "single",
|
|
39614
|
+
optional: false
|
|
39615
|
+
}],
|
|
39616
|
+
"mediaPlayer.pause": [{
|
|
39617
|
+
name: "deviceId",
|
|
39618
|
+
form: "single",
|
|
39619
|
+
optional: false
|
|
39620
|
+
}],
|
|
39621
|
+
"mediaPlayer.play": [{
|
|
39622
|
+
name: "deviceId",
|
|
39623
|
+
form: "single",
|
|
39624
|
+
optional: false
|
|
39625
|
+
}],
|
|
39626
|
+
"mediaPlayer.playMedia": [{
|
|
39627
|
+
name: "deviceId",
|
|
39628
|
+
form: "single",
|
|
39629
|
+
optional: false
|
|
39630
|
+
}],
|
|
39631
|
+
"mediaPlayer.previous": [{
|
|
39632
|
+
name: "deviceId",
|
|
39633
|
+
form: "single",
|
|
39634
|
+
optional: false
|
|
39635
|
+
}],
|
|
39636
|
+
"mediaPlayer.seek": [{
|
|
39637
|
+
name: "deviceId",
|
|
39638
|
+
form: "single",
|
|
39639
|
+
optional: false
|
|
39640
|
+
}],
|
|
39641
|
+
"mediaPlayer.selectSource": [{
|
|
39642
|
+
name: "deviceId",
|
|
39643
|
+
form: "single",
|
|
39644
|
+
optional: false
|
|
39645
|
+
}],
|
|
39646
|
+
"mediaPlayer.setMute": [{
|
|
39647
|
+
name: "deviceId",
|
|
39648
|
+
form: "single",
|
|
39649
|
+
optional: false
|
|
39650
|
+
}],
|
|
39651
|
+
"mediaPlayer.setRepeat": [{
|
|
39652
|
+
name: "deviceId",
|
|
39653
|
+
form: "single",
|
|
39654
|
+
optional: false
|
|
39655
|
+
}],
|
|
39656
|
+
"mediaPlayer.setShuffle": [{
|
|
39657
|
+
name: "deviceId",
|
|
39658
|
+
form: "single",
|
|
39659
|
+
optional: false
|
|
39660
|
+
}],
|
|
39661
|
+
"mediaPlayer.setVolume": [{
|
|
39662
|
+
name: "deviceId",
|
|
39663
|
+
form: "single",
|
|
39664
|
+
optional: false
|
|
39665
|
+
}],
|
|
39666
|
+
"mediaPlayer.stop": [{
|
|
39667
|
+
name: "deviceId",
|
|
39668
|
+
form: "single",
|
|
39669
|
+
optional: false
|
|
39670
|
+
}],
|
|
39671
|
+
"motion.isDetected": [{
|
|
39672
|
+
name: "deviceId",
|
|
39673
|
+
form: "single",
|
|
39674
|
+
optional: false
|
|
39675
|
+
}],
|
|
39676
|
+
"motionDetection.analyze": [{
|
|
39677
|
+
name: "deviceId",
|
|
39678
|
+
form: "single",
|
|
39679
|
+
optional: false
|
|
39680
|
+
}],
|
|
39681
|
+
"motionDetection.removeCamera": [{
|
|
39682
|
+
name: "deviceId",
|
|
39683
|
+
form: "single",
|
|
39684
|
+
optional: false
|
|
39685
|
+
}],
|
|
39686
|
+
"motionTrigger.setMotionTrigger": [{
|
|
39687
|
+
name: "deviceId",
|
|
39688
|
+
form: "single",
|
|
39689
|
+
optional: false
|
|
39690
|
+
}],
|
|
39691
|
+
"motionZones.getOptions": [{
|
|
39692
|
+
name: "deviceId",
|
|
39693
|
+
form: "single",
|
|
39694
|
+
optional: false
|
|
39695
|
+
}],
|
|
39696
|
+
"motionZones.setZone": [{
|
|
39697
|
+
name: "deviceId",
|
|
39698
|
+
form: "single",
|
|
39699
|
+
optional: false
|
|
39700
|
+
}],
|
|
39701
|
+
"nativeObjectDetection.setEnabled": [{
|
|
39702
|
+
name: "deviceId",
|
|
39703
|
+
form: "single",
|
|
39704
|
+
optional: false
|
|
39705
|
+
}],
|
|
39706
|
+
"networkQuality.getDeviceStats": [{
|
|
39707
|
+
name: "deviceId",
|
|
39708
|
+
form: "single",
|
|
39709
|
+
optional: false
|
|
39710
|
+
}],
|
|
39711
|
+
"networkQuality.reportClientStats": [{
|
|
39712
|
+
name: "deviceId",
|
|
39713
|
+
form: "single",
|
|
39714
|
+
optional: false
|
|
39715
|
+
}],
|
|
39716
|
+
"notificationRules.setDeviceMuted": [{
|
|
39717
|
+
name: "deviceId",
|
|
39718
|
+
form: "single",
|
|
39719
|
+
optional: false
|
|
39720
|
+
}],
|
|
39721
|
+
"notifier.cancel": [{
|
|
39722
|
+
name: "deviceId",
|
|
39723
|
+
form: "single",
|
|
39724
|
+
optional: false
|
|
39725
|
+
}],
|
|
39726
|
+
"notifier.send": [{
|
|
39727
|
+
name: "deviceId",
|
|
39728
|
+
form: "single",
|
|
39729
|
+
optional: false
|
|
39730
|
+
}],
|
|
39731
|
+
"osd.setOverlay": [{
|
|
39732
|
+
name: "deviceId",
|
|
39733
|
+
form: "single",
|
|
39734
|
+
optional: false
|
|
39735
|
+
}],
|
|
39736
|
+
"osdManager.clearSlotBinding": [{
|
|
39737
|
+
name: "deviceId",
|
|
39738
|
+
form: "single",
|
|
39739
|
+
optional: false
|
|
39740
|
+
}],
|
|
39741
|
+
"osdManager.copyDeviceConfiguration": [{
|
|
39742
|
+
name: "sourceDeviceId",
|
|
39743
|
+
form: "single",
|
|
39744
|
+
optional: false
|
|
39745
|
+
}, {
|
|
39746
|
+
name: "targetDeviceId",
|
|
39747
|
+
form: "single",
|
|
39748
|
+
optional: false
|
|
39749
|
+
}],
|
|
39750
|
+
"osdManager.getDeviceOsd": [{
|
|
39751
|
+
name: "deviceId",
|
|
39752
|
+
form: "single",
|
|
39753
|
+
optional: false
|
|
39754
|
+
}],
|
|
39755
|
+
"osdManager.getSourceCatalog": [{
|
|
39756
|
+
name: "deviceId",
|
|
39757
|
+
form: "single",
|
|
39758
|
+
optional: false
|
|
39759
|
+
}],
|
|
39760
|
+
"osdManager.previewSlot": [{
|
|
39761
|
+
name: "deviceId",
|
|
39762
|
+
form: "single",
|
|
39763
|
+
optional: false
|
|
39764
|
+
}],
|
|
39765
|
+
"osdManager.renderDevice": [{
|
|
39766
|
+
name: "deviceId",
|
|
39767
|
+
form: "single",
|
|
39768
|
+
optional: false
|
|
39769
|
+
}],
|
|
39770
|
+
"osdManager.setSlotBinding": [{
|
|
39771
|
+
name: "deviceId",
|
|
39772
|
+
form: "single",
|
|
39773
|
+
optional: false
|
|
39774
|
+
}],
|
|
39775
|
+
"petFeeder.callPet": [{
|
|
39776
|
+
name: "deviceId",
|
|
39777
|
+
form: "single",
|
|
39778
|
+
optional: false
|
|
39779
|
+
}],
|
|
39780
|
+
"petFeeder.cancelFeed": [{
|
|
39781
|
+
name: "deviceId",
|
|
39782
|
+
form: "single",
|
|
39783
|
+
optional: false
|
|
39784
|
+
}],
|
|
39785
|
+
"petFeeder.feed": [{
|
|
39786
|
+
name: "deviceId",
|
|
39787
|
+
form: "single",
|
|
39788
|
+
optional: false
|
|
39789
|
+
}],
|
|
39790
|
+
"petFeeder.markFoodReplenished": [{
|
|
39791
|
+
name: "deviceId",
|
|
39792
|
+
form: "single",
|
|
39793
|
+
optional: false
|
|
39794
|
+
}],
|
|
39795
|
+
"petFeeder.playSound": [{
|
|
39796
|
+
name: "deviceId",
|
|
39797
|
+
form: "single",
|
|
39798
|
+
optional: false
|
|
39799
|
+
}],
|
|
39800
|
+
"petFeeder.resetDesiccant": [{
|
|
39801
|
+
name: "deviceId",
|
|
39802
|
+
form: "single",
|
|
39803
|
+
optional: false
|
|
39804
|
+
}],
|
|
39805
|
+
"petFeeder.setChildLock": [{
|
|
39806
|
+
name: "deviceId",
|
|
39807
|
+
form: "single",
|
|
39808
|
+
optional: false
|
|
39809
|
+
}],
|
|
39810
|
+
"petFeeder.setFeedSound": [{
|
|
39811
|
+
name: "deviceId",
|
|
39812
|
+
form: "single",
|
|
39813
|
+
optional: false
|
|
39814
|
+
}],
|
|
39815
|
+
"petFeeder.setIndicatorLight": [{
|
|
39816
|
+
name: "deviceId",
|
|
39817
|
+
form: "single",
|
|
39818
|
+
optional: false
|
|
39819
|
+
}],
|
|
39820
|
+
"petFeeder.setVolume": [{
|
|
39821
|
+
name: "deviceId",
|
|
39822
|
+
form: "single",
|
|
39823
|
+
optional: false
|
|
39824
|
+
}],
|
|
39825
|
+
"pipelineAnalytics.clearTracks": [{
|
|
39826
|
+
name: "deviceId",
|
|
39827
|
+
form: "single",
|
|
39828
|
+
optional: false
|
|
39829
|
+
}],
|
|
39830
|
+
"pipelineAnalytics.completeRetrainTrack": [{
|
|
39831
|
+
name: "deviceId",
|
|
39832
|
+
form: "single",
|
|
39833
|
+
optional: false
|
|
39834
|
+
}],
|
|
39835
|
+
"pipelineAnalytics.deleteDeviceEvents": [{
|
|
39836
|
+
name: "deviceId",
|
|
39837
|
+
form: "single",
|
|
39838
|
+
optional: false
|
|
39839
|
+
}],
|
|
39840
|
+
"pipelineAnalytics.deleteTracks": [{
|
|
39841
|
+
name: "deviceId",
|
|
39842
|
+
form: "single",
|
|
39843
|
+
optional: false
|
|
39844
|
+
}],
|
|
39845
|
+
"pipelineAnalytics.deselectRetrainFrame": [{
|
|
39846
|
+
name: "deviceId",
|
|
39847
|
+
form: "single",
|
|
39848
|
+
optional: false
|
|
39849
|
+
}],
|
|
39850
|
+
"pipelineAnalytics.getActiveTracks": [{
|
|
39851
|
+
name: "deviceId",
|
|
39852
|
+
form: "single",
|
|
39853
|
+
optional: false
|
|
39854
|
+
}],
|
|
39855
|
+
"pipelineAnalytics.getAudioEvents": [{
|
|
39856
|
+
name: "deviceId",
|
|
39857
|
+
form: "single",
|
|
39858
|
+
optional: false
|
|
39859
|
+
}],
|
|
39860
|
+
"pipelineAnalytics.getEventDensity": [{
|
|
39861
|
+
name: "deviceId",
|
|
39862
|
+
form: "single",
|
|
39863
|
+
optional: false
|
|
39864
|
+
}],
|
|
39865
|
+
"pipelineAnalytics.getKeyEvents": [{
|
|
39866
|
+
name: "deviceId",
|
|
39867
|
+
form: "single",
|
|
39868
|
+
optional: false
|
|
39869
|
+
}],
|
|
39870
|
+
"pipelineAnalytics.getMotionEvents": [{
|
|
39871
|
+
name: "deviceId",
|
|
39872
|
+
form: "single",
|
|
39873
|
+
optional: false
|
|
39874
|
+
}],
|
|
39875
|
+
"pipelineAnalytics.getObjectEvents": [{
|
|
39876
|
+
name: "deviceId",
|
|
39877
|
+
form: "single",
|
|
39878
|
+
optional: false
|
|
39879
|
+
}],
|
|
39880
|
+
"pipelineAnalytics.getRetrainExportUrl": [{
|
|
39881
|
+
name: "deviceIds",
|
|
39882
|
+
form: "array",
|
|
39883
|
+
optional: true
|
|
39884
|
+
}],
|
|
39885
|
+
"pipelineAnalytics.getSensorEvents": [{
|
|
39886
|
+
name: "deviceId",
|
|
39887
|
+
form: "single",
|
|
39888
|
+
optional: false
|
|
39889
|
+
}],
|
|
39890
|
+
"pipelineAnalytics.getTrack": [{
|
|
39891
|
+
name: "deviceId",
|
|
39892
|
+
form: "single",
|
|
39893
|
+
optional: false
|
|
39894
|
+
}],
|
|
39895
|
+
"pipelineAnalytics.getTrainingExportSummary": [{
|
|
39896
|
+
name: "deviceIds",
|
|
39897
|
+
form: "array",
|
|
39898
|
+
optional: true
|
|
39899
|
+
}],
|
|
39900
|
+
"pipelineAnalytics.getTrainingExportUrl": [{
|
|
39901
|
+
name: "deviceIds",
|
|
39902
|
+
form: "array",
|
|
39903
|
+
optional: true
|
|
39904
|
+
}],
|
|
39905
|
+
"pipelineAnalytics.listEventKinds": [{
|
|
39906
|
+
name: "deviceId",
|
|
39907
|
+
form: "single",
|
|
39908
|
+
optional: false
|
|
39909
|
+
}],
|
|
39910
|
+
"pipelineAnalytics.listEventKindsBatch": [{
|
|
39911
|
+
name: "deviceIds",
|
|
39912
|
+
form: "array",
|
|
39913
|
+
optional: false
|
|
39914
|
+
}],
|
|
39915
|
+
"pipelineAnalytics.listOpsLog": [{
|
|
39916
|
+
name: "deviceId",
|
|
39917
|
+
form: "single",
|
|
39918
|
+
optional: true
|
|
39919
|
+
}],
|
|
39920
|
+
"pipelineAnalytics.listRecentTracks": [{
|
|
39921
|
+
name: "deviceIds",
|
|
39922
|
+
form: "array",
|
|
39923
|
+
optional: false
|
|
39924
|
+
}],
|
|
39925
|
+
"pipelineAnalytics.listRetrainStaging": [{
|
|
39926
|
+
name: "deviceIds",
|
|
39927
|
+
form: "array",
|
|
39928
|
+
optional: true
|
|
39929
|
+
}],
|
|
39930
|
+
"pipelineAnalytics.listTracks": [{
|
|
39931
|
+
name: "deviceId",
|
|
39932
|
+
form: "single",
|
|
39933
|
+
optional: false
|
|
39934
|
+
}],
|
|
39935
|
+
"pipelineAnalytics.proposeRetrainAnnotations": [{
|
|
39936
|
+
name: "deviceId",
|
|
39937
|
+
form: "single",
|
|
39938
|
+
optional: false
|
|
39939
|
+
}],
|
|
39940
|
+
"pipelineAnalytics.pruneEventsBefore": [{
|
|
39941
|
+
name: "deviceId",
|
|
39942
|
+
form: "single",
|
|
39943
|
+
optional: false
|
|
39944
|
+
}],
|
|
39945
|
+
"pipelineAnalytics.pruneTracksBefore": [{
|
|
39946
|
+
name: "deviceId",
|
|
39947
|
+
form: "single",
|
|
39948
|
+
optional: false
|
|
39949
|
+
}],
|
|
39950
|
+
"pipelineAnalytics.rebuildObjectEmbeddings": [{
|
|
39951
|
+
name: "deviceId",
|
|
39952
|
+
form: "single",
|
|
39953
|
+
optional: true
|
|
39954
|
+
}],
|
|
39955
|
+
"pipelineAnalytics.restageRetrainTrack": [{
|
|
39956
|
+
name: "deviceId",
|
|
39957
|
+
form: "single",
|
|
39958
|
+
optional: false
|
|
39959
|
+
}],
|
|
39960
|
+
"pipelineAnalytics.saveRetrainAnnotations": [{
|
|
39961
|
+
name: "deviceId",
|
|
39962
|
+
form: "single",
|
|
39963
|
+
optional: false
|
|
39964
|
+
}],
|
|
39965
|
+
"pipelineAnalytics.searchObjectEvents": [{
|
|
39966
|
+
name: "deviceId",
|
|
39967
|
+
form: "single",
|
|
39968
|
+
optional: true
|
|
39969
|
+
}],
|
|
39970
|
+
"pipelineAnalytics.selectRetrainFrames": [{
|
|
39971
|
+
name: "deviceId",
|
|
39972
|
+
form: "single",
|
|
39973
|
+
optional: false
|
|
39974
|
+
}],
|
|
39975
|
+
"pipelineAnalytics.setTrackFlags": [{
|
|
39976
|
+
name: "deviceId",
|
|
39977
|
+
form: "single",
|
|
39978
|
+
optional: false
|
|
39979
|
+
}],
|
|
39980
|
+
"pipelineAnalytics.wipeAllAnalytics": [{
|
|
39981
|
+
name: "deviceId",
|
|
39982
|
+
form: "single",
|
|
39983
|
+
optional: false
|
|
39984
|
+
}],
|
|
39985
|
+
"pipelineExecutor.runPipeline": [{
|
|
39986
|
+
name: "deviceId",
|
|
39987
|
+
form: "single",
|
|
39988
|
+
optional: true
|
|
39989
|
+
}],
|
|
39990
|
+
"pipelineExecutor.runPipelineBatch": [{
|
|
39991
|
+
name: "deviceId",
|
|
39992
|
+
form: "single",
|
|
39993
|
+
optional: true
|
|
39994
|
+
}],
|
|
39995
|
+
"pipelineOrchestrator.assignAudio": [{
|
|
39996
|
+
name: "deviceId",
|
|
39997
|
+
form: "single",
|
|
39998
|
+
optional: false
|
|
39999
|
+
}],
|
|
40000
|
+
"pipelineOrchestrator.assignPipeline": [{
|
|
40001
|
+
name: "deviceId",
|
|
40002
|
+
form: "single",
|
|
40003
|
+
optional: false
|
|
40004
|
+
}],
|
|
40005
|
+
"pipelineOrchestrator.getAudioAssignment": [{
|
|
40006
|
+
name: "deviceId",
|
|
40007
|
+
form: "single",
|
|
40008
|
+
optional: false
|
|
40009
|
+
}],
|
|
40010
|
+
"pipelineOrchestrator.getCameraMetrics": [{
|
|
40011
|
+
name: "deviceId",
|
|
40012
|
+
form: "single",
|
|
40013
|
+
optional: false
|
|
40014
|
+
}],
|
|
40015
|
+
"pipelineOrchestrator.getCameraSettings": [{
|
|
40016
|
+
name: "deviceId",
|
|
40017
|
+
form: "single",
|
|
40018
|
+
optional: false
|
|
40019
|
+
}],
|
|
40020
|
+
"pipelineOrchestrator.getCameraStatus": [{
|
|
40021
|
+
name: "deviceId",
|
|
40022
|
+
form: "single",
|
|
40023
|
+
optional: false
|
|
40024
|
+
}],
|
|
40025
|
+
"pipelineOrchestrator.getCameraStatuses": [{
|
|
40026
|
+
name: "deviceIds",
|
|
40027
|
+
form: "array",
|
|
40028
|
+
optional: true
|
|
40029
|
+
}],
|
|
40030
|
+
"pipelineOrchestrator.getCameraStepOverrides": [{
|
|
40031
|
+
name: "deviceId",
|
|
40032
|
+
form: "single",
|
|
40033
|
+
optional: false
|
|
40034
|
+
}],
|
|
40035
|
+
"pipelineOrchestrator.getCameraSwitches": [{
|
|
40036
|
+
name: "deviceId",
|
|
40037
|
+
form: "single",
|
|
40038
|
+
optional: false
|
|
40039
|
+
}],
|
|
40040
|
+
"pipelineOrchestrator.getPipelineAssignment": [{
|
|
40041
|
+
name: "deviceId",
|
|
40042
|
+
form: "single",
|
|
40043
|
+
optional: false
|
|
40044
|
+
}],
|
|
40045
|
+
"pipelineOrchestrator.getPipelineDevicePin": [{
|
|
40046
|
+
name: "deviceId",
|
|
40047
|
+
form: "single",
|
|
40048
|
+
optional: false
|
|
40049
|
+
}],
|
|
40050
|
+
"pipelineOrchestrator.resolvePipeline": [{
|
|
40051
|
+
name: "deviceId",
|
|
40052
|
+
form: "single",
|
|
40053
|
+
optional: false
|
|
40054
|
+
}],
|
|
40055
|
+
"pipelineOrchestrator.setCameraPipelineForAgent": [{
|
|
40056
|
+
name: "deviceId",
|
|
40057
|
+
form: "single",
|
|
40058
|
+
optional: false
|
|
40059
|
+
}],
|
|
40060
|
+
"pipelineOrchestrator.setCameraStepOverride": [{
|
|
40061
|
+
name: "deviceId",
|
|
40062
|
+
form: "single",
|
|
40063
|
+
optional: false
|
|
40064
|
+
}],
|
|
40065
|
+
"pipelineOrchestrator.setCameraStepToggle": [{
|
|
40066
|
+
name: "deviceId",
|
|
40067
|
+
form: "single",
|
|
40068
|
+
optional: false
|
|
40069
|
+
}],
|
|
40070
|
+
"pipelineOrchestrator.setCameraSwitch": [{
|
|
40071
|
+
name: "deviceId",
|
|
40072
|
+
form: "single",
|
|
40073
|
+
optional: false
|
|
40074
|
+
}],
|
|
40075
|
+
"pipelineOrchestrator.setPipelineDevicePin": [{
|
|
40076
|
+
name: "deviceId",
|
|
40077
|
+
form: "single",
|
|
40078
|
+
optional: false
|
|
40079
|
+
}],
|
|
40080
|
+
"pipelineOrchestrator.unassignAudio": [{
|
|
40081
|
+
name: "deviceId",
|
|
40082
|
+
form: "single",
|
|
40083
|
+
optional: false
|
|
40084
|
+
}],
|
|
40085
|
+
"pipelineOrchestrator.unassignPipeline": [{
|
|
40086
|
+
name: "deviceId",
|
|
40087
|
+
form: "single",
|
|
40088
|
+
optional: false
|
|
40089
|
+
}],
|
|
40090
|
+
"pipelineRunner.attachCamera": [{
|
|
40091
|
+
name: "deviceId",
|
|
40092
|
+
form: "single",
|
|
40093
|
+
optional: false
|
|
40094
|
+
}],
|
|
40095
|
+
"pipelineRunner.detachCamera": [{
|
|
40096
|
+
name: "deviceId",
|
|
40097
|
+
form: "single",
|
|
40098
|
+
optional: false
|
|
40099
|
+
}],
|
|
40100
|
+
"pipelineRunner.getCameraMetrics": [{
|
|
40101
|
+
name: "deviceId",
|
|
40102
|
+
form: "single",
|
|
40103
|
+
optional: false
|
|
40104
|
+
}],
|
|
40105
|
+
"pipelineRunner.reportMotion": [{
|
|
40106
|
+
name: "deviceId",
|
|
40107
|
+
form: "single",
|
|
40108
|
+
optional: false
|
|
40109
|
+
}],
|
|
40110
|
+
"pipelineRunner.runDetailSubtree": [{
|
|
40111
|
+
name: "deviceId",
|
|
40112
|
+
form: "single",
|
|
40113
|
+
optional: false
|
|
40114
|
+
}],
|
|
40115
|
+
"pipelineRunner.runStatelessStep": [{
|
|
40116
|
+
name: "sourceDeviceId",
|
|
40117
|
+
form: "single",
|
|
40118
|
+
optional: false
|
|
40119
|
+
}],
|
|
40120
|
+
"plateGallery.getPlateByTrack": [{
|
|
40121
|
+
name: "deviceId",
|
|
40122
|
+
form: "single",
|
|
40123
|
+
optional: false
|
|
40124
|
+
}],
|
|
40125
|
+
"plateGallery.listPlates": [{
|
|
40126
|
+
name: "deviceId",
|
|
40127
|
+
form: "single",
|
|
40128
|
+
optional: true
|
|
40129
|
+
}],
|
|
40130
|
+
"privacyMask.getOptions": [{
|
|
40131
|
+
name: "deviceId",
|
|
40132
|
+
form: "single",
|
|
40133
|
+
optional: false
|
|
40134
|
+
}],
|
|
40135
|
+
"privacyMask.setAudioEnabled": [{
|
|
40136
|
+
name: "deviceId",
|
|
40137
|
+
form: "single",
|
|
40138
|
+
optional: false
|
|
40139
|
+
}],
|
|
40140
|
+
"privacyMask.setMask": [{
|
|
40141
|
+
name: "deviceId",
|
|
40142
|
+
form: "single",
|
|
40143
|
+
optional: false
|
|
40144
|
+
}],
|
|
40145
|
+
"ptz.continuousMove": [{
|
|
40146
|
+
name: "deviceId",
|
|
40147
|
+
form: "single",
|
|
40148
|
+
optional: false
|
|
40149
|
+
}],
|
|
40150
|
+
"ptz.deletePreset": [{
|
|
40151
|
+
name: "deviceId",
|
|
40152
|
+
form: "single",
|
|
40153
|
+
optional: false
|
|
40154
|
+
}],
|
|
40155
|
+
"ptz.getOptions": [{
|
|
40156
|
+
name: "deviceId",
|
|
40157
|
+
form: "single",
|
|
40158
|
+
optional: false
|
|
40159
|
+
}],
|
|
40160
|
+
"ptz.getPosition": [{
|
|
40161
|
+
name: "deviceId",
|
|
40162
|
+
form: "single",
|
|
40163
|
+
optional: false
|
|
40164
|
+
}],
|
|
40165
|
+
"ptz.getPresets": [{
|
|
40166
|
+
name: "deviceId",
|
|
40167
|
+
form: "single",
|
|
40168
|
+
optional: false
|
|
40169
|
+
}],
|
|
40170
|
+
"ptz.goHome": [{
|
|
40171
|
+
name: "deviceId",
|
|
40172
|
+
form: "single",
|
|
40173
|
+
optional: false
|
|
40174
|
+
}],
|
|
40175
|
+
"ptz.goToPreset": [{
|
|
40176
|
+
name: "deviceId",
|
|
40177
|
+
form: "single",
|
|
40178
|
+
optional: false
|
|
40179
|
+
}],
|
|
40180
|
+
"ptz.move": [{
|
|
40181
|
+
name: "deviceId",
|
|
40182
|
+
form: "single",
|
|
40183
|
+
optional: false
|
|
40184
|
+
}],
|
|
40185
|
+
"ptz.savePreset": [{
|
|
40186
|
+
name: "deviceId",
|
|
40187
|
+
form: "single",
|
|
40188
|
+
optional: false
|
|
40189
|
+
}],
|
|
40190
|
+
"ptz.setAutofocus": [{
|
|
40191
|
+
name: "deviceId",
|
|
40192
|
+
form: "single",
|
|
40193
|
+
optional: false
|
|
40194
|
+
}],
|
|
40195
|
+
"ptz.stop": [{
|
|
40196
|
+
name: "deviceId",
|
|
40197
|
+
form: "single",
|
|
40198
|
+
optional: false
|
|
40199
|
+
}],
|
|
40200
|
+
"ptzAutotrack.getSettings": [{
|
|
40201
|
+
name: "deviceId",
|
|
40202
|
+
form: "single",
|
|
40203
|
+
optional: false
|
|
40204
|
+
}],
|
|
40205
|
+
"ptzAutotrack.getStatus": [{
|
|
40206
|
+
name: "deviceId",
|
|
40207
|
+
form: "single",
|
|
40208
|
+
optional: false
|
|
40209
|
+
}],
|
|
40210
|
+
"ptzAutotrack.setEnabled": [{
|
|
40211
|
+
name: "deviceId",
|
|
40212
|
+
form: "single",
|
|
40213
|
+
optional: false
|
|
40214
|
+
}],
|
|
40215
|
+
"ptzAutotrack.setSettings": [{
|
|
40216
|
+
name: "deviceId",
|
|
40217
|
+
form: "single",
|
|
40218
|
+
optional: false
|
|
40219
|
+
}],
|
|
40220
|
+
"reboot.reboot": [{
|
|
40221
|
+
name: "deviceId",
|
|
40222
|
+
form: "single",
|
|
40223
|
+
optional: false
|
|
40224
|
+
}],
|
|
40225
|
+
"recording.deleteFootprint": [{
|
|
40226
|
+
name: "deviceId",
|
|
40227
|
+
form: "single",
|
|
40228
|
+
optional: false
|
|
40229
|
+
}],
|
|
40230
|
+
"recording.getAvailability": [{
|
|
40231
|
+
name: "deviceId",
|
|
40232
|
+
form: "single",
|
|
40233
|
+
optional: false
|
|
40234
|
+
}],
|
|
40235
|
+
"recording.getDaysWithRecordings": [{
|
|
40236
|
+
name: "deviceId",
|
|
40237
|
+
form: "single",
|
|
40238
|
+
optional: false
|
|
40239
|
+
}],
|
|
40240
|
+
"recording.getDeviceConfig": [{
|
|
40241
|
+
name: "deviceId",
|
|
40242
|
+
form: "single",
|
|
40243
|
+
optional: false
|
|
40244
|
+
}],
|
|
40245
|
+
"recording.getPlaybackManifest": [{
|
|
40246
|
+
name: "deviceId",
|
|
40247
|
+
form: "single",
|
|
40248
|
+
optional: false
|
|
40249
|
+
}],
|
|
40250
|
+
"recording.listOpsLog": [{
|
|
40251
|
+
name: "deviceId",
|
|
40252
|
+
form: "single",
|
|
40253
|
+
optional: true
|
|
40254
|
+
}],
|
|
40255
|
+
"recording.locateSegment": [{
|
|
40256
|
+
name: "deviceId",
|
|
40257
|
+
form: "single",
|
|
40258
|
+
optional: false
|
|
40259
|
+
}],
|
|
40260
|
+
"recording.pruneFootage": [{
|
|
40261
|
+
name: "deviceId",
|
|
40262
|
+
form: "single",
|
|
40263
|
+
optional: false
|
|
40264
|
+
}],
|
|
40265
|
+
"recording.readGopBytes": [{
|
|
40266
|
+
name: "deviceId",
|
|
40267
|
+
form: "single",
|
|
40268
|
+
optional: false
|
|
40269
|
+
}],
|
|
40270
|
+
"recording.readSegmentBytes": [{
|
|
40271
|
+
name: "deviceId",
|
|
40272
|
+
form: "single",
|
|
40273
|
+
optional: false
|
|
40274
|
+
}],
|
|
40275
|
+
"recording.relocateFootage": [{
|
|
40276
|
+
name: "deviceId",
|
|
40277
|
+
form: "single",
|
|
40278
|
+
optional: true
|
|
40279
|
+
}],
|
|
40280
|
+
"recording.renderClip": [{
|
|
40281
|
+
name: "deviceId",
|
|
40282
|
+
form: "single",
|
|
40283
|
+
optional: false
|
|
40284
|
+
}],
|
|
40285
|
+
"recording.renderGif": [{
|
|
40286
|
+
name: "deviceId",
|
|
40287
|
+
form: "single",
|
|
40288
|
+
optional: false
|
|
40289
|
+
}],
|
|
40290
|
+
"recording.rescanStorage": [{
|
|
40291
|
+
name: "deviceId",
|
|
40292
|
+
form: "single",
|
|
40293
|
+
optional: false
|
|
40294
|
+
}],
|
|
40295
|
+
"recording.setDeviceConfig": [{
|
|
40296
|
+
name: "deviceId",
|
|
40297
|
+
form: "single",
|
|
40298
|
+
optional: false
|
|
40299
|
+
}],
|
|
40300
|
+
"recording.startStorageMigrationMove": [{
|
|
40301
|
+
name: "deviceId",
|
|
40302
|
+
form: "single",
|
|
40303
|
+
optional: true
|
|
40304
|
+
}],
|
|
40305
|
+
"recordingExport.createExport": [{
|
|
40306
|
+
name: "deviceId",
|
|
40307
|
+
form: "single",
|
|
40308
|
+
optional: false
|
|
40309
|
+
}],
|
|
40310
|
+
"recordingExport.listExports": [{
|
|
40311
|
+
name: "deviceId",
|
|
40312
|
+
form: "single",
|
|
40313
|
+
optional: true
|
|
40314
|
+
}],
|
|
40315
|
+
"sceneMonitor.captureReference": [{
|
|
40316
|
+
name: "deviceId",
|
|
40317
|
+
form: "single",
|
|
40318
|
+
optional: false
|
|
40319
|
+
}],
|
|
40320
|
+
"sceneMonitor.createScene": [{
|
|
40321
|
+
name: "deviceId",
|
|
40322
|
+
form: "single",
|
|
40323
|
+
optional: false
|
|
40324
|
+
}],
|
|
40325
|
+
"sceneMonitor.deleteReference": [{
|
|
40326
|
+
name: "deviceId",
|
|
40327
|
+
form: "single",
|
|
40328
|
+
optional: false
|
|
40329
|
+
}],
|
|
40330
|
+
"sceneMonitor.deleteScene": [{
|
|
40331
|
+
name: "deviceId",
|
|
40332
|
+
form: "single",
|
|
40333
|
+
optional: false
|
|
40334
|
+
}],
|
|
40335
|
+
"sceneMonitor.listScenes": [{
|
|
40336
|
+
name: "deviceId",
|
|
40337
|
+
form: "single",
|
|
40338
|
+
optional: false
|
|
40339
|
+
}],
|
|
40340
|
+
"sceneMonitor.recheckNow": [{
|
|
40341
|
+
name: "deviceId",
|
|
40342
|
+
form: "single",
|
|
40343
|
+
optional: false
|
|
40344
|
+
}],
|
|
40345
|
+
"sceneMonitor.updateScene": [{
|
|
40346
|
+
name: "deviceId",
|
|
40347
|
+
form: "single",
|
|
40348
|
+
optional: false
|
|
40349
|
+
}],
|
|
40350
|
+
"scriptRunner.run": [{
|
|
40351
|
+
name: "deviceId",
|
|
40352
|
+
form: "single",
|
|
40353
|
+
optional: false
|
|
40354
|
+
}],
|
|
40355
|
+
"scriptRunner.stop": [{
|
|
40356
|
+
name: "deviceId",
|
|
40357
|
+
form: "single",
|
|
40358
|
+
optional: false
|
|
40359
|
+
}],
|
|
40360
|
+
"snapshot.getSnapshot": [{
|
|
40361
|
+
name: "deviceId",
|
|
40362
|
+
form: "single",
|
|
40363
|
+
optional: false
|
|
40364
|
+
}],
|
|
40365
|
+
"snapshot.getSnapshotOverview": [{
|
|
40366
|
+
name: "deviceIds",
|
|
40367
|
+
form: "array",
|
|
40368
|
+
optional: false
|
|
40369
|
+
}],
|
|
40370
|
+
"snapshot.invalidateCache": [{
|
|
40371
|
+
name: "deviceId",
|
|
40372
|
+
form: "single",
|
|
40373
|
+
optional: false
|
|
40374
|
+
}],
|
|
40375
|
+
"streamBroker.acquireEgressTranscode": [{
|
|
40376
|
+
name: "deviceId",
|
|
40377
|
+
form: "single",
|
|
40378
|
+
optional: false
|
|
40379
|
+
}],
|
|
40380
|
+
"streamBroker.assignProfile": [{
|
|
40381
|
+
name: "deviceId",
|
|
40382
|
+
form: "single",
|
|
40383
|
+
optional: false
|
|
40384
|
+
}],
|
|
40385
|
+
"streamBroker.getDeviceAudioMute": [{
|
|
40386
|
+
name: "deviceId",
|
|
40387
|
+
form: "single",
|
|
40388
|
+
optional: false
|
|
40389
|
+
}],
|
|
40390
|
+
"streamBroker.getStreamWithCodec": [{
|
|
40391
|
+
name: "deviceId",
|
|
40392
|
+
form: "single",
|
|
40393
|
+
optional: false
|
|
40394
|
+
}],
|
|
40395
|
+
"streamBroker.produceEventMedia": [{
|
|
40396
|
+
name: "deviceId",
|
|
40397
|
+
form: "single",
|
|
40398
|
+
optional: false
|
|
40399
|
+
}],
|
|
40400
|
+
"streamBroker.publishCameraStream": [{
|
|
40401
|
+
name: "deviceId",
|
|
40402
|
+
form: "single",
|
|
40403
|
+
optional: false
|
|
40404
|
+
}],
|
|
40405
|
+
"streamBroker.renderPreBufferClip": [{
|
|
40406
|
+
name: "deviceId",
|
|
40407
|
+
form: "single",
|
|
40408
|
+
optional: false
|
|
40409
|
+
}],
|
|
40410
|
+
"streamBroker.restartProfile": [{
|
|
40411
|
+
name: "deviceId",
|
|
40412
|
+
form: "single",
|
|
40413
|
+
optional: false
|
|
40414
|
+
}],
|
|
40415
|
+
"streamBroker.retractCameraStream": [{
|
|
40416
|
+
name: "deviceId",
|
|
40417
|
+
form: "single",
|
|
40418
|
+
optional: false
|
|
40419
|
+
}],
|
|
40420
|
+
"streamBroker.setDeviceAudioMute": [{
|
|
40421
|
+
name: "deviceId",
|
|
40422
|
+
form: "single",
|
|
40423
|
+
optional: false
|
|
40424
|
+
}],
|
|
40425
|
+
"streamBroker.unassignProfile": [{
|
|
40426
|
+
name: "deviceId",
|
|
40427
|
+
form: "single",
|
|
40428
|
+
optional: false
|
|
40429
|
+
}],
|
|
40430
|
+
"streamCatalog.getCatalog": [{
|
|
40431
|
+
name: "deviceId",
|
|
40432
|
+
form: "single",
|
|
40433
|
+
optional: false
|
|
40434
|
+
}],
|
|
40435
|
+
"streamParams.getConfigSchema": [{
|
|
40436
|
+
name: "deviceId",
|
|
40437
|
+
form: "single",
|
|
40438
|
+
optional: false
|
|
40439
|
+
}],
|
|
40440
|
+
"streamParams.getOptions": [{
|
|
40441
|
+
name: "deviceId",
|
|
40442
|
+
form: "single",
|
|
40443
|
+
optional: false
|
|
40444
|
+
}],
|
|
40445
|
+
"streamParams.setProfile": [{
|
|
40446
|
+
name: "deviceId",
|
|
40447
|
+
form: "single",
|
|
40448
|
+
optional: false
|
|
40449
|
+
}],
|
|
40450
|
+
"switch.setState": [{
|
|
40451
|
+
name: "deviceId",
|
|
40452
|
+
form: "single",
|
|
40453
|
+
optional: false
|
|
40454
|
+
}],
|
|
40455
|
+
"vacuumControl.locate": [{
|
|
40456
|
+
name: "deviceId",
|
|
40457
|
+
form: "single",
|
|
40458
|
+
optional: false
|
|
40459
|
+
}],
|
|
40460
|
+
"vacuumControl.pause": [{
|
|
40461
|
+
name: "deviceId",
|
|
40462
|
+
form: "single",
|
|
40463
|
+
optional: false
|
|
40464
|
+
}],
|
|
40465
|
+
"vacuumControl.returnToBase": [{
|
|
40466
|
+
name: "deviceId",
|
|
40467
|
+
form: "single",
|
|
40468
|
+
optional: false
|
|
40469
|
+
}],
|
|
40470
|
+
"vacuumControl.setFanSpeed": [{
|
|
40471
|
+
name: "deviceId",
|
|
40472
|
+
form: "single",
|
|
40473
|
+
optional: false
|
|
40474
|
+
}],
|
|
40475
|
+
"vacuumControl.start": [{
|
|
40476
|
+
name: "deviceId",
|
|
40477
|
+
form: "single",
|
|
40478
|
+
optional: false
|
|
40479
|
+
}],
|
|
40480
|
+
"vacuumControl.stop": [{
|
|
40481
|
+
name: "deviceId",
|
|
40482
|
+
form: "single",
|
|
40483
|
+
optional: false
|
|
40484
|
+
}],
|
|
40485
|
+
"valve.close": [{
|
|
40486
|
+
name: "deviceId",
|
|
40487
|
+
form: "single",
|
|
40488
|
+
optional: false
|
|
40489
|
+
}],
|
|
40490
|
+
"valve.open": [{
|
|
40491
|
+
name: "deviceId",
|
|
40492
|
+
form: "single",
|
|
40493
|
+
optional: false
|
|
40494
|
+
}],
|
|
40495
|
+
"valve.setPosition": [{
|
|
40496
|
+
name: "deviceId",
|
|
40497
|
+
form: "single",
|
|
40498
|
+
optional: false
|
|
40499
|
+
}],
|
|
40500
|
+
"valve.stop": [{
|
|
40501
|
+
name: "deviceId",
|
|
40502
|
+
form: "single",
|
|
40503
|
+
optional: false
|
|
40504
|
+
}],
|
|
40505
|
+
"videoclips.getClipPlayback": [{
|
|
40506
|
+
name: "deviceId",
|
|
40507
|
+
form: "single",
|
|
40508
|
+
optional: false
|
|
40509
|
+
}],
|
|
40510
|
+
"videoclips.listClips": [{
|
|
40511
|
+
name: "deviceId",
|
|
40512
|
+
form: "single",
|
|
40513
|
+
optional: false
|
|
40514
|
+
}],
|
|
40515
|
+
"waterHeater.setAway": [{
|
|
40516
|
+
name: "deviceId",
|
|
40517
|
+
form: "single",
|
|
40518
|
+
optional: false
|
|
40519
|
+
}],
|
|
40520
|
+
"waterHeater.setOperationMode": [{
|
|
40521
|
+
name: "deviceId",
|
|
40522
|
+
form: "single",
|
|
40523
|
+
optional: false
|
|
40524
|
+
}],
|
|
40525
|
+
"waterHeater.setTargetTemp": [{
|
|
40526
|
+
name: "deviceId",
|
|
40527
|
+
form: "single",
|
|
40528
|
+
optional: false
|
|
40529
|
+
}],
|
|
40530
|
+
"webrtcSession.addIceCandidate": [{
|
|
40531
|
+
name: "deviceId",
|
|
40532
|
+
form: "single",
|
|
40533
|
+
optional: false
|
|
40534
|
+
}],
|
|
40535
|
+
"webrtcSession.closeSession": [{
|
|
40536
|
+
name: "deviceId",
|
|
40537
|
+
form: "single",
|
|
40538
|
+
optional: false
|
|
40539
|
+
}],
|
|
40540
|
+
"webrtcSession.createSession": [{
|
|
40541
|
+
name: "deviceId",
|
|
40542
|
+
form: "single",
|
|
40543
|
+
optional: false
|
|
40544
|
+
}],
|
|
40545
|
+
"webrtcSession.getIceCandidates": [{
|
|
40546
|
+
name: "deviceId",
|
|
40547
|
+
form: "single",
|
|
40548
|
+
optional: false
|
|
40549
|
+
}],
|
|
40550
|
+
"webrtcSession.getSessionState": [{
|
|
40551
|
+
name: "deviceId",
|
|
40552
|
+
form: "single",
|
|
40553
|
+
optional: false
|
|
40554
|
+
}],
|
|
40555
|
+
"webrtcSession.handleAnswer": [{
|
|
40556
|
+
name: "deviceId",
|
|
40557
|
+
form: "single",
|
|
40558
|
+
optional: false
|
|
40559
|
+
}],
|
|
40560
|
+
"webrtcSession.handleOffer": [{
|
|
40561
|
+
name: "deviceId",
|
|
40562
|
+
form: "single",
|
|
40563
|
+
optional: false
|
|
40564
|
+
}],
|
|
40565
|
+
"webrtcSession.hasAdaptiveBitrate": [{
|
|
40566
|
+
name: "deviceId",
|
|
40567
|
+
form: "single",
|
|
40568
|
+
optional: false
|
|
40569
|
+
}],
|
|
40570
|
+
"webrtcSession.listStreams": [{
|
|
40571
|
+
name: "deviceId",
|
|
40572
|
+
form: "single",
|
|
40573
|
+
optional: false
|
|
40574
|
+
}],
|
|
40575
|
+
"zoneAnalytics.getCameraHistory": [{
|
|
40576
|
+
name: "deviceId",
|
|
40577
|
+
form: "single",
|
|
40578
|
+
optional: false
|
|
40579
|
+
}],
|
|
40580
|
+
"zoneAnalytics.getCurrentSnapshot": [{
|
|
40581
|
+
name: "deviceId",
|
|
40582
|
+
form: "single",
|
|
40583
|
+
optional: false
|
|
40584
|
+
}],
|
|
40585
|
+
"zoneAnalytics.getUnzonedHistory": [{
|
|
40586
|
+
name: "deviceId",
|
|
40587
|
+
form: "single",
|
|
40588
|
+
optional: false
|
|
40589
|
+
}],
|
|
40590
|
+
"zoneAnalytics.getZoneHistory": [{
|
|
40591
|
+
name: "deviceId",
|
|
40592
|
+
form: "single",
|
|
40593
|
+
optional: false
|
|
40594
|
+
}],
|
|
40595
|
+
"zoneRules.listRules": [{
|
|
40596
|
+
name: "deviceId",
|
|
40597
|
+
form: "single",
|
|
40598
|
+
optional: false
|
|
40599
|
+
}],
|
|
40600
|
+
"zoneRules.setRules": [{
|
|
40601
|
+
name: "deviceId",
|
|
40602
|
+
form: "single",
|
|
40603
|
+
optional: false
|
|
40604
|
+
}],
|
|
40605
|
+
"zones.addZone": [{
|
|
40606
|
+
name: "deviceId",
|
|
40607
|
+
form: "single",
|
|
40608
|
+
optional: false
|
|
40609
|
+
}],
|
|
40610
|
+
"zones.listZones": [{
|
|
40611
|
+
name: "deviceId",
|
|
40612
|
+
form: "single",
|
|
40613
|
+
optional: false
|
|
40614
|
+
}],
|
|
40615
|
+
"zones.removeZone": [{
|
|
40616
|
+
name: "deviceId",
|
|
40617
|
+
form: "single",
|
|
40618
|
+
optional: false
|
|
40619
|
+
}],
|
|
40620
|
+
"zones.updateZone": [{
|
|
40621
|
+
name: "deviceId",
|
|
40622
|
+
form: "single",
|
|
40623
|
+
optional: false
|
|
40624
|
+
}]
|
|
40625
|
+
});
|
|
40626
|
+
/** Cap-method paths that carry a device reference AND live on a system-scope
|
|
40627
|
+
* cap — the set the v3 device check newly reaches. */
|
|
40628
|
+
var SYSTEM_SCOPE_DEVICE_METHODS = [
|
|
40629
|
+
"addonSettings.getDeviceSettings",
|
|
40630
|
+
"addonSettings.updateDeviceSettings",
|
|
40631
|
+
"audioAnalyzer.classify",
|
|
40632
|
+
"decoder.createSession",
|
|
40633
|
+
"deviceAdoption.release",
|
|
40634
|
+
"deviceAdoption.resync",
|
|
40635
|
+
"deviceManager.adoptionRelease",
|
|
40636
|
+
"deviceManager.adoptionResync",
|
|
40637
|
+
"deviceManager.applyInitialMeta",
|
|
40638
|
+
"deviceManager.disable",
|
|
40639
|
+
"deviceManager.enable",
|
|
40640
|
+
"deviceManager.getBindings",
|
|
40641
|
+
"deviceManager.getChildren",
|
|
40642
|
+
"deviceManager.getConfigSchema",
|
|
40643
|
+
"deviceManager.getDevice",
|
|
40644
|
+
"deviceManager.getDeviceAggregate",
|
|
40645
|
+
"deviceManager.getDeviceLiveInfoAggregate",
|
|
40646
|
+
"deviceManager.getDeviceSettingsAggregate",
|
|
40647
|
+
"deviceManager.getDeviceStatusAggregate",
|
|
40648
|
+
"deviceManager.getDeviceStatusAggregateBatch",
|
|
40649
|
+
"deviceManager.getLinkedDevices",
|
|
40650
|
+
"deviceManager.getSettingsSchema",
|
|
40651
|
+
"deviceManager.getStreamProfileMap",
|
|
40652
|
+
"deviceManager.getStreamSources",
|
|
40653
|
+
"deviceManager.getWireableFields",
|
|
40654
|
+
"deviceManager.loadConfig",
|
|
40655
|
+
"deviceManager.loadMeta",
|
|
40656
|
+
"deviceManager.loadRuntimeState",
|
|
40657
|
+
"deviceManager.persistConfig",
|
|
40658
|
+
"deviceManager.probeStreams",
|
|
40659
|
+
"deviceManager.registerDevice",
|
|
40660
|
+
"deviceManager.remove",
|
|
40661
|
+
"deviceManager.removeDevice",
|
|
40662
|
+
"deviceManager.runDeviceAction",
|
|
40663
|
+
"deviceManager.setChildLayout",
|
|
40664
|
+
"deviceManager.setDisabled",
|
|
40665
|
+
"deviceManager.setDisplay",
|
|
40666
|
+
"deviceManager.setIntegrationId",
|
|
40667
|
+
"deviceManager.setLinkDeviceId",
|
|
40668
|
+
"deviceManager.setLocation",
|
|
40669
|
+
"deviceManager.setMetadata",
|
|
40670
|
+
"deviceManager.setName",
|
|
40671
|
+
"deviceManager.setPrimaryChildEntityId",
|
|
40672
|
+
"deviceManager.setRole",
|
|
40673
|
+
"deviceManager.setStreamProfileMap",
|
|
40674
|
+
"deviceManager.setType",
|
|
40675
|
+
"deviceManager.setWrapperActive",
|
|
40676
|
+
"deviceManager.testField",
|
|
40677
|
+
"deviceManager.updateConfig",
|
|
40678
|
+
"deviceManager.updateDeviceField",
|
|
40679
|
+
"deviceManager.updateDeviceFieldsBatch",
|
|
40680
|
+
"deviceState.getCapSlice",
|
|
40681
|
+
"deviceState.getSnapshot",
|
|
40682
|
+
"deviceState.setCapSlice",
|
|
40683
|
+
"faceGallery.getFaceByTrack",
|
|
40684
|
+
"faceGallery.listRecentFaces",
|
|
40685
|
+
"networkQuality.getDeviceStats",
|
|
40686
|
+
"networkQuality.reportClientStats",
|
|
40687
|
+
"notificationRules.setDeviceMuted",
|
|
40688
|
+
"osdManager.clearSlotBinding",
|
|
40689
|
+
"osdManager.copyDeviceConfiguration",
|
|
40690
|
+
"osdManager.getDeviceOsd",
|
|
40691
|
+
"osdManager.getSourceCatalog",
|
|
40692
|
+
"osdManager.previewSlot",
|
|
40693
|
+
"osdManager.renderDevice",
|
|
40694
|
+
"osdManager.setSlotBinding",
|
|
40695
|
+
"pipelineExecutor.runPipeline",
|
|
40696
|
+
"pipelineExecutor.runPipelineBatch",
|
|
40697
|
+
"pipelineOrchestrator.assignAudio",
|
|
40698
|
+
"pipelineOrchestrator.assignPipeline",
|
|
40699
|
+
"pipelineOrchestrator.getAudioAssignment",
|
|
40700
|
+
"pipelineOrchestrator.getCameraMetrics",
|
|
40701
|
+
"pipelineOrchestrator.getCameraSettings",
|
|
40702
|
+
"pipelineOrchestrator.getCameraStatus",
|
|
40703
|
+
"pipelineOrchestrator.getCameraStatuses",
|
|
40704
|
+
"pipelineOrchestrator.getCameraStepOverrides",
|
|
40705
|
+
"pipelineOrchestrator.getCameraSwitches",
|
|
40706
|
+
"pipelineOrchestrator.getPipelineAssignment",
|
|
40707
|
+
"pipelineOrchestrator.getPipelineDevicePin",
|
|
40708
|
+
"pipelineOrchestrator.resolvePipeline",
|
|
40709
|
+
"pipelineOrchestrator.setCameraPipelineForAgent",
|
|
40710
|
+
"pipelineOrchestrator.setCameraStepOverride",
|
|
40711
|
+
"pipelineOrchestrator.setCameraStepToggle",
|
|
40712
|
+
"pipelineOrchestrator.setCameraSwitch",
|
|
40713
|
+
"pipelineOrchestrator.setPipelineDevicePin",
|
|
40714
|
+
"pipelineOrchestrator.unassignAudio",
|
|
40715
|
+
"pipelineOrchestrator.unassignPipeline",
|
|
40716
|
+
"pipelineRunner.attachCamera",
|
|
40717
|
+
"pipelineRunner.detachCamera",
|
|
40718
|
+
"pipelineRunner.getCameraMetrics",
|
|
40719
|
+
"pipelineRunner.reportMotion",
|
|
40720
|
+
"pipelineRunner.runDetailSubtree",
|
|
40721
|
+
"pipelineRunner.runStatelessStep",
|
|
40722
|
+
"plateGallery.getPlateByTrack",
|
|
40723
|
+
"plateGallery.listPlates",
|
|
40724
|
+
"recording.deleteFootprint",
|
|
40725
|
+
"recording.getAvailability",
|
|
40726
|
+
"recording.getDaysWithRecordings",
|
|
40727
|
+
"recording.getDeviceConfig",
|
|
40728
|
+
"recording.getPlaybackManifest",
|
|
40729
|
+
"recording.listOpsLog",
|
|
40730
|
+
"recording.locateSegment",
|
|
40731
|
+
"recording.pruneFootage",
|
|
40732
|
+
"recording.readGopBytes",
|
|
40733
|
+
"recording.readSegmentBytes",
|
|
40734
|
+
"recording.relocateFootage",
|
|
40735
|
+
"recording.renderClip",
|
|
40736
|
+
"recording.renderGif",
|
|
40737
|
+
"recording.rescanStorage",
|
|
40738
|
+
"recording.setDeviceConfig",
|
|
40739
|
+
"recording.startStorageMigrationMove",
|
|
40740
|
+
"recordingExport.createExport",
|
|
40741
|
+
"recordingExport.listExports",
|
|
40742
|
+
"streamBroker.acquireEgressTranscode",
|
|
40743
|
+
"streamBroker.assignProfile",
|
|
40744
|
+
"streamBroker.getDeviceAudioMute",
|
|
40745
|
+
"streamBroker.getStreamWithCodec",
|
|
40746
|
+
"streamBroker.produceEventMedia",
|
|
40747
|
+
"streamBroker.publishCameraStream",
|
|
40748
|
+
"streamBroker.renderPreBufferClip",
|
|
40749
|
+
"streamBroker.restartProfile",
|
|
40750
|
+
"streamBroker.retractCameraStream",
|
|
40751
|
+
"streamBroker.setDeviceAudioMute",
|
|
40752
|
+
"streamBroker.unassignProfile"
|
|
40753
|
+
];
|
|
40754
|
+
//#endregion
|
|
38766
40755
|
//#region src/generated/provider-kind-map.ts
|
|
38767
40756
|
var CAP_PROVIDER_KIND_MAP = Object.freeze({
|
|
38768
40757
|
"broker": "broker",
|
|
@@ -38796,7 +40785,7 @@ function getCapsByProviderKind(kind) {
|
|
|
38796
40785
|
//#region src/generated/runtime-state-durability.ts
|
|
38797
40786
|
/**
|
|
38798
40787
|
* Per-cap runtime-state policy, projected from every `*.cap.ts` that declares
|
|
38799
|
-
* `runtimeState`.
|
|
40788
|
+
* `runtimeState`. 63 caps: 33 `restored`, 30 `session`.
|
|
38800
40789
|
*
|
|
38801
40790
|
* A cap absent from this map has no runtime-state slice at all. A cap PRESENT
|
|
38802
40791
|
* with `durability: 'session'` has one and has decided not to keep it.
|
|
@@ -38926,6 +40915,10 @@ var RUNTIME_STATE_POLICY = {
|
|
|
38926
40915
|
durability: "restored",
|
|
38927
40916
|
volatileFields: ["lastFetchedAt"]
|
|
38928
40917
|
},
|
|
40918
|
+
"intercom": {
|
|
40919
|
+
durability: "session",
|
|
40920
|
+
volatileFields: []
|
|
40921
|
+
},
|
|
38929
40922
|
"lawn-mower-control": {
|
|
38930
40923
|
durability: "session",
|
|
38931
40924
|
volatileFields: []
|
|
@@ -39112,7 +41105,7 @@ var SCOPE_PRESETS = [
|
|
|
39112
41105
|
{
|
|
39113
41106
|
id: "camera-viewer",
|
|
39114
41107
|
label: "Camera viewer",
|
|
39115
|
-
description: "Read-only over every device — live streams, recordings, motion events, battery state.
|
|
41108
|
+
description: "Read-only over every device — live streams, recordings, motion events, battery state. Pair with a `device` grant (an `ids` / `types` / `locations` selector) to restrict to specific cameras.",
|
|
39116
41109
|
rows: [{
|
|
39117
41110
|
type: "category",
|
|
39118
41111
|
target: "device",
|
|
@@ -39129,6 +41122,28 @@ var SCOPE_PRESETS = [
|
|
|
39129
41122
|
access: ["view", "create"]
|
|
39130
41123
|
}]
|
|
39131
41124
|
},
|
|
41125
|
+
{
|
|
41126
|
+
id: "full-management",
|
|
41127
|
+
label: "Full management",
|
|
41128
|
+
description: "Complete device + system control short of admin: view/create/delete on every device and every system capability. Use for a trusted operator who manages the whole deployment but should not hold the admin bypass.",
|
|
41129
|
+
rows: [{
|
|
41130
|
+
type: "category",
|
|
41131
|
+
target: "device",
|
|
41132
|
+
access: [
|
|
41133
|
+
"view",
|
|
41134
|
+
"create",
|
|
41135
|
+
"delete"
|
|
41136
|
+
]
|
|
41137
|
+
}, {
|
|
41138
|
+
type: "category",
|
|
41139
|
+
target: "system",
|
|
41140
|
+
access: [
|
|
41141
|
+
"view",
|
|
41142
|
+
"create",
|
|
41143
|
+
"delete"
|
|
41144
|
+
]
|
|
41145
|
+
}]
|
|
41146
|
+
},
|
|
39132
41147
|
{
|
|
39133
41148
|
id: "cli-deployer",
|
|
39134
41149
|
label: "CLI deployer",
|
|
@@ -41125,6 +43140,252 @@ function pickNativeLeaseOverride(view) {
|
|
|
41125
43140
|
return readNativeLeaseOverride(flat);
|
|
41126
43141
|
}
|
|
41127
43142
|
//#endregion
|
|
43143
|
+
//#region src/schemas/access-roles.ts
|
|
43144
|
+
/**
|
|
43145
|
+
* Ordered widest-last — the panel renders them top to bottom and the operator
|
|
43146
|
+
* reads the list as an escalation.
|
|
43147
|
+
*/
|
|
43148
|
+
var ACCESS_ROLES = [
|
|
43149
|
+
{
|
|
43150
|
+
id: "viewer",
|
|
43151
|
+
label: "View",
|
|
43152
|
+
description: "Watch live and recorded video, browse events and read device state. Cannot change anything.",
|
|
43153
|
+
deviceAccess: ["view"],
|
|
43154
|
+
systemAccess: ["view"]
|
|
43155
|
+
},
|
|
43156
|
+
{
|
|
43157
|
+
id: "operator",
|
|
43158
|
+
label: "Operate",
|
|
43159
|
+
description: "Everything View does, plus acting on a device: PTZ, lights, sirens, locks, and snoozing notifications. Cannot delete.",
|
|
43160
|
+
deviceAccess: ["view", "create"],
|
|
43161
|
+
systemAccess: ["view", "create"]
|
|
43162
|
+
},
|
|
43163
|
+
{
|
|
43164
|
+
id: "manager",
|
|
43165
|
+
label: "Full management",
|
|
43166
|
+
description: "Everything Operate does, plus deleting devices, recordings and events. Short of admin — no user or cluster administration.",
|
|
43167
|
+
deviceAccess: [
|
|
43168
|
+
"view",
|
|
43169
|
+
"create",
|
|
43170
|
+
"delete"
|
|
43171
|
+
],
|
|
43172
|
+
systemAccess: [
|
|
43173
|
+
"view",
|
|
43174
|
+
"create",
|
|
43175
|
+
"delete"
|
|
43176
|
+
]
|
|
43177
|
+
}
|
|
43178
|
+
];
|
|
43179
|
+
/** Look a role up by id. Throws on an unknown id — the union makes that
|
|
43180
|
+
* unreachable from typed callers, and a silent fallback would grant the
|
|
43181
|
+
* wrong thing. */
|
|
43182
|
+
function roleSpec(id) {
|
|
43183
|
+
const found = ACCESS_ROLES.find((r) => r.id === id);
|
|
43184
|
+
if (!found) throw new Error(`Unknown access role '${id}'`);
|
|
43185
|
+
return found;
|
|
43186
|
+
}
|
|
43187
|
+
/**
|
|
43188
|
+
* Compose an assignment into the grants the matcher reads.
|
|
43189
|
+
*
|
|
43190
|
+
* `includeLinked` is written explicitly in BOTH directions on purpose. Absent,
|
|
43191
|
+
* the matcher derives it from the access flavour (`view` inherits, `create` /
|
|
43192
|
+
* `delete` do not), so an omitted `false` would silently re-grant the
|
|
43193
|
+
* accessories the operator just excluded, and the panel would be lying about
|
|
43194
|
+
* its own toggle.
|
|
43195
|
+
*/
|
|
43196
|
+
function buildRoleScopes(assignment) {
|
|
43197
|
+
const spec = roleSpec(assignment.roleId);
|
|
43198
|
+
return [{
|
|
43199
|
+
type: "device",
|
|
43200
|
+
selector: assignment.selector,
|
|
43201
|
+
access: [...spec.deviceAccess],
|
|
43202
|
+
includeLinked: assignment.includeLinked
|
|
43203
|
+
}, {
|
|
43204
|
+
type: "category",
|
|
43205
|
+
target: "system",
|
|
43206
|
+
access: [...spec.systemAccess]
|
|
43207
|
+
}];
|
|
43208
|
+
}
|
|
43209
|
+
/** Set equality over access arrays — grants round-trip through JSON and Zod
|
|
43210
|
+
* with no order guarantee. */
|
|
43211
|
+
function sameAccess(a, b) {
|
|
43212
|
+
if (a.length !== b.length) return false;
|
|
43213
|
+
const set = new Set(a);
|
|
43214
|
+
return b.every((x) => set.has(x));
|
|
43215
|
+
}
|
|
43216
|
+
/**
|
|
43217
|
+
* Recover the assignment behind a grant set, or `null` when the grants are
|
|
43218
|
+
* not something this panel authored.
|
|
43219
|
+
*
|
|
43220
|
+
* `null` is not an error — it is the "Advanced" case, and the panel MUST show
|
|
43221
|
+
* it as such rather than defaulting the radio to a role the user does not
|
|
43222
|
+
* have. Silently rendering an unrecognised grant set as "View" would make the
|
|
43223
|
+
* next save a downgrade nobody asked for.
|
|
43224
|
+
*
|
|
43225
|
+
* Strict by design: exactly the two rows `buildRoleScopes` writes, an
|
|
43226
|
+
* explicit `includeLinked`, and device/system access that agree on a single
|
|
43227
|
+
* role. Anything else belongs in the raw editor.
|
|
43228
|
+
*/
|
|
43229
|
+
function detectAccessRole(scopes) {
|
|
43230
|
+
if (scopes.length !== 2) return null;
|
|
43231
|
+
const deviceRows = scopes.filter((s) => s.type === "device");
|
|
43232
|
+
const systemRows = scopes.filter((s) => s.type === "category" && s.target === "system");
|
|
43233
|
+
if (deviceRows.length !== 1 || systemRows.length !== 1) return null;
|
|
43234
|
+
const [deviceRow] = deviceRows;
|
|
43235
|
+
const [systemRow] = systemRows;
|
|
43236
|
+
if (deviceRow === void 0 || systemRow === void 0) return null;
|
|
43237
|
+
if (deviceRow.type !== "device") return null;
|
|
43238
|
+
if (deviceRow.includeLinked === void 0) return null;
|
|
43239
|
+
const spec = ACCESS_ROLES.find((r) => sameAccess(r.deviceAccess, deviceRow.access) && sameAccess(r.systemAccess, systemRow.access));
|
|
43240
|
+
if (!spec) return null;
|
|
43241
|
+
return {
|
|
43242
|
+
roleId: spec.id,
|
|
43243
|
+
selector: deviceRow.selector,
|
|
43244
|
+
includeLinked: deviceRow.includeLinked
|
|
43245
|
+
};
|
|
43246
|
+
}
|
|
43247
|
+
//#endregion
|
|
43248
|
+
//#region src/schemas/device-selector.ts
|
|
43249
|
+
/** Ancestor-walk bound — defence-in-depth against a corrupt parentage cycle. */
|
|
43250
|
+
var MAX_ANCESTOR_HOPS = 8;
|
|
43251
|
+
/**
|
|
43252
|
+
* Does `selector` cover `device` DIRECTLY (no inheritance)? Inheritance is
|
|
43253
|
+
* layered on by the resolver/matcher, which tests this against a device's
|
|
43254
|
+
* ancestors too.
|
|
43255
|
+
*/
|
|
43256
|
+
function deviceSelectorMatches(selector, device) {
|
|
43257
|
+
switch (selector.kind) {
|
|
43258
|
+
case "all": return true;
|
|
43259
|
+
case "ids": return selector.ids.includes(device.id);
|
|
43260
|
+
case "types": return selector.types.some((t) => String(t) === device.type);
|
|
43261
|
+
case "locations": return device.location !== null && selector.locations.includes(device.location);
|
|
43262
|
+
}
|
|
43263
|
+
}
|
|
43264
|
+
/** Whether a `category:device` grant covers `access` (the broad lever). */
|
|
43265
|
+
function hasBroadDeviceGrant(scopes, access) {
|
|
43266
|
+
return scopes.some((s) => s.type === "category" && s.target === "device" && s.access.includes(access));
|
|
43267
|
+
}
|
|
43268
|
+
/** The `device`-typed scopes granting `access`. */
|
|
43269
|
+
function deviceScopesFor(scopes, access) {
|
|
43270
|
+
return scopes.filter((s) => s.type === "device" && s.access.includes(access));
|
|
43271
|
+
}
|
|
43272
|
+
/** Whether inheritance applies for a grant at `access` (view inherits, others
|
|
43273
|
+
* don't, unless the grant overrides via `includeLinked`). */
|
|
43274
|
+
function scopeInherits(scope, access) {
|
|
43275
|
+
return scope.includeLinked ?? access === "view";
|
|
43276
|
+
}
|
|
43277
|
+
/** Ancestors (parent, grandparent, …) of `deviceId` within a fleet map. */
|
|
43278
|
+
function ancestorsOf(deviceId, byId) {
|
|
43279
|
+
const out = [];
|
|
43280
|
+
let current = deviceId;
|
|
43281
|
+
for (let hop = 0; hop < MAX_ANCESTOR_HOPS; hop++) {
|
|
43282
|
+
const parent = current === null ? null : byId.get(current)?.parentDeviceId ?? null;
|
|
43283
|
+
if (parent === null || parent === current) break;
|
|
43284
|
+
out.push(parent);
|
|
43285
|
+
current = parent;
|
|
43286
|
+
}
|
|
43287
|
+
return out;
|
|
43288
|
+
}
|
|
43289
|
+
/**
|
|
43290
|
+
* Resolve the set of deviceIds the caller may reach at `access`, expanded
|
|
43291
|
+
* against the live `fleet`. A `category:device` grant returns the whole
|
|
43292
|
+
* fleet. Device selectors are matched per device — directly, or (when the
|
|
43293
|
+
* grant inherits) against an ancestor, so a parent grant covers its
|
|
43294
|
+
* accessories.
|
|
43295
|
+
*/
|
|
43296
|
+
function resolveViewableDeviceIds(scopes, fleet, access) {
|
|
43297
|
+
if (hasBroadDeviceGrant(scopes, access)) return new Set(fleet.map((d) => d.id));
|
|
43298
|
+
const byId = /* @__PURE__ */ new Map();
|
|
43299
|
+
for (const d of fleet) byId.set(d.id, d);
|
|
43300
|
+
const grants = deviceScopesFor(scopes, access);
|
|
43301
|
+
const out = /* @__PURE__ */ new Set();
|
|
43302
|
+
for (const d of fleet) for (const grant of grants) {
|
|
43303
|
+
if (deviceSelectorMatches(grant.selector, d)) {
|
|
43304
|
+
out.add(d.id);
|
|
43305
|
+
break;
|
|
43306
|
+
}
|
|
43307
|
+
if (scopeInherits(grant, access)) {
|
|
43308
|
+
if (ancestorsOf(d.id, byId).some((ancestorId) => {
|
|
43309
|
+
const ancestor = byId.get(ancestorId);
|
|
43310
|
+
return ancestor !== void 0 && deviceSelectorMatches(grant.selector, ancestor);
|
|
43311
|
+
})) {
|
|
43312
|
+
out.add(d.id);
|
|
43313
|
+
break;
|
|
43314
|
+
}
|
|
43315
|
+
}
|
|
43316
|
+
}
|
|
43317
|
+
return out;
|
|
43318
|
+
}
|
|
43319
|
+
/**
|
|
43320
|
+
* Normalise a raw scope array read off a JWT payload or a stored record into
|
|
43321
|
+
* validated v3 `TokenScope`s, migrating any v2 `device:targets` grant on the
|
|
43322
|
+
* way (via {@link TokenScopeSchema}'s preprocess). Applied at the request
|
|
43323
|
+
* boundary (`resolveUser`) so the enforcement matcher only ever sees v3.
|
|
43324
|
+
*
|
|
43325
|
+
* Per-ITEM parse (not whole-array) so a single malformed scope is dropped
|
|
43326
|
+
* without discarding the caller's valid grants — losing a good grant reads as
|
|
43327
|
+
* a lockout, and a lockout reads as broken. A non-array input yields `[]`
|
|
43328
|
+
* (fail closed).
|
|
43329
|
+
*/
|
|
43330
|
+
function normalizeTokenScopes(raw) {
|
|
43331
|
+
if (!Array.isArray(raw)) return [];
|
|
43332
|
+
const out = [];
|
|
43333
|
+
for (const item of raw) {
|
|
43334
|
+
const parsed = TokenScopeSchema.safeParse(item);
|
|
43335
|
+
if (parsed.success) out.push(parsed.data);
|
|
43336
|
+
}
|
|
43337
|
+
return out;
|
|
43338
|
+
}
|
|
43339
|
+
var ALL_ACCESS = [
|
|
43340
|
+
"view",
|
|
43341
|
+
"create",
|
|
43342
|
+
"delete"
|
|
43343
|
+
];
|
|
43344
|
+
function deviceReach(scopes, fleet, access, isAdmin) {
|
|
43345
|
+
if (isAdmin) return {
|
|
43346
|
+
all: true,
|
|
43347
|
+
deviceCount: fleet.length
|
|
43348
|
+
};
|
|
43349
|
+
return {
|
|
43350
|
+
all: hasBroadDeviceGrant(scopes, access) || deviceScopesFor(scopes, access).some((s) => s.selector.kind === "all"),
|
|
43351
|
+
deviceCount: resolveViewableDeviceIds(scopes, fleet, access).size
|
|
43352
|
+
};
|
|
43353
|
+
}
|
|
43354
|
+
function capabilityGrants(scopes) {
|
|
43355
|
+
const out = [];
|
|
43356
|
+
for (const s of scopes) if (s.type === "capability") out.push({
|
|
43357
|
+
name: s.target,
|
|
43358
|
+
access: s.access
|
|
43359
|
+
});
|
|
43360
|
+
return out;
|
|
43361
|
+
}
|
|
43362
|
+
function addonGrants(scopes) {
|
|
43363
|
+
const out = [];
|
|
43364
|
+
for (const s of scopes) if (s.type === "addon") out.push({
|
|
43365
|
+
name: s.target,
|
|
43366
|
+
access: s.access
|
|
43367
|
+
});
|
|
43368
|
+
return out;
|
|
43369
|
+
}
|
|
43370
|
+
/** Build the {@link EffectiveScope} for a caller from their scopes + the fleet. */
|
|
43371
|
+
function summarizeEffectiveScope(scopes, fleet, isAdmin) {
|
|
43372
|
+
const device = {
|
|
43373
|
+
view: deviceReach(scopes, fleet, "view", isAdmin),
|
|
43374
|
+
create: deviceReach(scopes, fleet, "create", isAdmin),
|
|
43375
|
+
delete: deviceReach(scopes, fleet, "delete", isAdmin)
|
|
43376
|
+
};
|
|
43377
|
+
const system = isAdmin ? ALL_ACCESS : ALL_ACCESS.filter((a) => scopes.some((s) => s.type === "category" && s.target === "system" && s.access.includes(a)));
|
|
43378
|
+
return {
|
|
43379
|
+
isAdmin,
|
|
43380
|
+
allDevicesViewable: device.view.all,
|
|
43381
|
+
viewableDeviceCount: device.view.deviceCount,
|
|
43382
|
+
device,
|
|
43383
|
+
system,
|
|
43384
|
+
capabilities: capabilityGrants(scopes),
|
|
43385
|
+
addons: addonGrants(scopes)
|
|
43386
|
+
};
|
|
43387
|
+
}
|
|
43388
|
+
//#endregion
|
|
41128
43389
|
//#region src/types/device-type.ts
|
|
41129
43390
|
var DEVICE_TYPE_INFO = { ["camera"]: {
|
|
41130
43391
|
type: "camera",
|
|
@@ -42436,6 +44697,7 @@ function enumerateInferenceDevices(hw) {
|
|
|
42436
44697
|
}
|
|
42437
44698
|
//#endregion
|
|
42438
44699
|
exports.ACCESSORY_LABEL = ACCESSORY_LABEL;
|
|
44700
|
+
exports.ACCESS_ROLES = ACCESS_ROLES;
|
|
42439
44701
|
exports.ALEXA_EGRESS_PROFILE = ALEXA_EGRESS_PROFILE;
|
|
42440
44702
|
exports.ALL_CAPABILITY_DEFINITIONS = ALL_CAPABILITY_DEFINITIONS;
|
|
42441
44703
|
exports.APPLE_SA_TO_MACRO = APPLE_SA_TO_MACRO;
|
|
@@ -42682,6 +44944,7 @@ exports.DeviceInfoSchema = DeviceInfoSchema;
|
|
|
42682
44944
|
exports.DeviceNetworkStatsSchema = DeviceNetworkStatsSchema;
|
|
42683
44945
|
exports.DeviceRole = require_sleep.DeviceRole;
|
|
42684
44946
|
exports.DeviceRuntimeState = DeviceRuntimeState;
|
|
44947
|
+
exports.DeviceSelectorSchema = DeviceSelectorSchema;
|
|
42685
44948
|
exports.DeviceStatusSchema = DeviceStatusSchema;
|
|
42686
44949
|
exports.DeviceType = require_sleep.DeviceType;
|
|
42687
44950
|
exports.DiscoveredChildDeviceSchema = DiscoveredChildDeviceSchema;
|
|
@@ -42831,6 +45094,7 @@ exports.MAX_EXPRESSION_CALL_ARGS = MAX_EXPRESSION_CALL_ARGS;
|
|
|
42831
45094
|
exports.MAX_EXPRESSION_EVAL_STEPS = MAX_EXPRESSION_EVAL_STEPS;
|
|
42832
45095
|
exports.MAX_EXPRESSION_SOURCE_LENGTH = MAX_EXPRESSION_SOURCE_LENGTH;
|
|
42833
45096
|
exports.METHOD_ACCESS_MAP = METHOD_ACCESS_MAP;
|
|
45097
|
+
exports.METHOD_DEVICE_SELECTORS = METHOD_DEVICE_SELECTORS;
|
|
42834
45098
|
exports.MODEL_FORMATS = MODEL_FORMATS;
|
|
42835
45099
|
exports.MOTION_TRIGGER_FEATURE = MOTION_TRIGGER_FEATURE;
|
|
42836
45100
|
exports.ManagedModelCatalogEntrySchema = ManagedModelCatalogEntrySchema;
|
|
@@ -43129,6 +45393,7 @@ exports.STREAM_PROFILE_META = STREAM_PROFILE_META;
|
|
|
43129
45393
|
exports.STREAM_QUALITY_LABELS = STREAM_QUALITY_LABELS;
|
|
43130
45394
|
exports.SUB_DETECTION_TYPES = SUB_DETECTION_TYPES;
|
|
43131
45395
|
exports.SYSTEM_CAP_NAMES = SYSTEM_CAP_NAMES;
|
|
45396
|
+
exports.SYSTEM_SCOPE_DEVICE_METHODS = SYSTEM_SCOPE_DEVICE_METHODS;
|
|
43132
45397
|
exports.SceneCheckSchema = SceneCheckSchema;
|
|
43133
45398
|
exports.SceneConditionSchema = SceneConditionSchema;
|
|
43134
45399
|
exports.SceneMonitorSchema = SceneMonitorSchema;
|
|
@@ -43351,6 +45616,7 @@ exports.buildFfmpegArgs = require_canonical_hash.buildFfmpegArgs;
|
|
|
43351
45616
|
exports.buildInputArgs = require_canonical_hash.buildInputArgs;
|
|
43352
45617
|
exports.buildModelVariantGroups = buildModelVariantGroups;
|
|
43353
45618
|
exports.buildNcTaxonomy = buildNcTaxonomy;
|
|
45619
|
+
exports.buildRoleScopes = buildRoleScopes;
|
|
43354
45620
|
exports.buildStreamParamsConfigSchema = buildStreamParamsConfigSchema;
|
|
43355
45621
|
exports.buildVideoArgs = require_canonical_hash.buildVideoArgs;
|
|
43356
45622
|
exports.buttonCapability = buttonCapability;
|
|
@@ -43408,6 +45674,7 @@ exports.deriveCameraSwitches = deriveCameraSwitches;
|
|
|
43408
45674
|
exports.deriveDetailCropRect = deriveDetailCropRect;
|
|
43409
45675
|
exports.deriveRecordingMode = deriveRecordingMode;
|
|
43410
45676
|
exports.describeModelVariant = describeModelVariant;
|
|
45677
|
+
exports.detectAccessRole = detectAccessRole;
|
|
43411
45678
|
exports.detectionPipelineCapability = detectionPipelineCapability;
|
|
43412
45679
|
exports.deviceAdoptionCapability = deviceAdoptionCapability;
|
|
43413
45680
|
exports.deviceBackendToFormat = deviceBackendToFormat;
|
|
@@ -43418,6 +45685,7 @@ exports.deviceManagerCapability = deviceManagerCapability;
|
|
|
43418
45685
|
exports.deviceMatchesProfile = deviceMatchesProfile;
|
|
43419
45686
|
exports.deviceOpsCapability = require_sleep.deviceOpsCapability;
|
|
43420
45687
|
exports.deviceProviderCapability = deviceProviderCapability;
|
|
45688
|
+
exports.deviceSelectorMatches = deviceSelectorMatches;
|
|
43421
45689
|
exports.deviceStateCapability = deviceStateCapability;
|
|
43422
45690
|
exports.deviceStatusCapability = deviceStatusCapability;
|
|
43423
45691
|
exports.doorbellCapability = doorbellCapability;
|
|
@@ -43530,6 +45798,7 @@ exports.nodePin = require_sleep.nodePin;
|
|
|
43530
45798
|
exports.nodesCapability = nodesCapability;
|
|
43531
45799
|
exports.normalizeAddonInitResult = require_sleep.normalizeAddonInitResult;
|
|
43532
45800
|
exports.normalizeAudioLabel = normalizeAudioLabel;
|
|
45801
|
+
exports.normalizeTokenScopes = normalizeTokenScopes;
|
|
43533
45802
|
exports.normalizeUnit = normalizeUnit;
|
|
43534
45803
|
exports.notificationOutputCapability = notificationOutputCapability;
|
|
43535
45804
|
exports.notificationRulesCapability = notificationRulesCapability;
|
|
@@ -43597,10 +45866,13 @@ exports.resolveMutate = resolveMutate;
|
|
|
43597
45866
|
exports.resolveRunnerId = resolveRunnerId;
|
|
43598
45867
|
exports.resolveScrubThumbnailGeometry = resolveScrubThumbnailGeometry;
|
|
43599
45868
|
exports.resolveVariantModelId = resolveVariantModelId;
|
|
45869
|
+
exports.resolveViewableDeviceIds = resolveViewableDeviceIds;
|
|
45870
|
+
exports.roleSpec = roleSpec;
|
|
43600
45871
|
exports.runInferenceStep = runInferenceStep;
|
|
43601
45872
|
exports.runtimeDevices = runtimeDevices;
|
|
43602
45873
|
exports.runtimeStatePolicyFor = runtimeStatePolicyFor;
|
|
43603
45874
|
exports.sceneMonitorCapability = sceneMonitorCapability;
|
|
45875
|
+
exports.scopeInherits = scopeInherits;
|
|
43604
45876
|
exports.scopeKey = require_sleep.scopeKey;
|
|
43605
45877
|
exports.scopesAllowAddon = scopesAllowAddon;
|
|
43606
45878
|
exports.scopesAllowDeviceCap = scopesAllowDeviceCap;
|
|
@@ -43629,6 +45901,7 @@ exports.streamPixels = streamPixels;
|
|
|
43629
45901
|
exports.streamQualityLabel = streamQualityLabel;
|
|
43630
45902
|
exports.subKindsOf = subKindsOf;
|
|
43631
45903
|
exports.summarisePrivacyAudio = summarisePrivacyAudio;
|
|
45904
|
+
exports.summarizeEffectiveScope = summarizeEffectiveScope;
|
|
43632
45905
|
exports.supportedRuntimes = supportedRuntimes;
|
|
43633
45906
|
exports.switchCapability = switchCapability;
|
|
43634
45907
|
exports.switchedOffIds = switchedOffIds;
|