camstack 1.2.25 → 1.2.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -14522,7 +14522,7 @@ function date4(params) {
|
|
|
14522
14522
|
// ../../node_modules/zod/v4/classic/external.js
|
|
14523
14523
|
config(en_default());
|
|
14524
14524
|
|
|
14525
|
-
// ../types/dist/sleep-
|
|
14525
|
+
// ../types/dist/sleep-BxO5xNe6.mjs
|
|
14526
14526
|
var WELL_KNOWN_TABS = [
|
|
14527
14527
|
{
|
|
14528
14528
|
id: "overview",
|
|
@@ -15278,6 +15278,15 @@ var deviceOpsCapability = {
|
|
|
15278
15278
|
getRawState: method(external_exports.object({ deviceId: external_exports.number() }), RawStateResultSchema.nullable(), { auth: "protected" })
|
|
15279
15279
|
}
|
|
15280
15280
|
};
|
|
15281
|
+
var BOOT_RECOVERY_BACKOFF_MS = [
|
|
15282
|
+
15e3,
|
|
15283
|
+
6e4,
|
|
15284
|
+
5 * 6e4,
|
|
15285
|
+
15 * 6e4,
|
|
15286
|
+
30 * 6e4,
|
|
15287
|
+
60 * 6e4,
|
|
15288
|
+
90 * 6e4
|
|
15289
|
+
];
|
|
15281
15290
|
function sleep(ms) {
|
|
15282
15291
|
return new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
|
|
15283
15292
|
}
|
|
@@ -18893,6 +18902,8 @@ var QueryFilterSchema = external_exports.object({
|
|
|
18893
18902
|
where: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
18894
18903
|
whereIn: external_exports.record(external_exports.string(), external_exports.array(external_exports.unknown())).optional(),
|
|
18895
18904
|
whereBetween: external_exports.record(external_exports.string(), external_exports.tuple([external_exports.unknown(), external_exports.unknown()])).optional(),
|
|
18905
|
+
/** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
|
|
18906
|
+
whereNot: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
18896
18907
|
orderBy: external_exports.object({
|
|
18897
18908
|
field: external_exports.string(),
|
|
18898
18909
|
direction: external_exports.enum(["asc", "desc"])
|
|
@@ -18903,7 +18914,8 @@ var QueryFilterSchema = external_exports.object({
|
|
|
18903
18914
|
var MutationFilterSchema = external_exports.object({
|
|
18904
18915
|
where: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
18905
18916
|
whereIn: external_exports.record(external_exports.string(), external_exports.array(external_exports.unknown())).optional(),
|
|
18906
|
-
whereBetween: external_exports.record(external_exports.string(), external_exports.tuple([external_exports.unknown(), external_exports.unknown()])).optional()
|
|
18917
|
+
whereBetween: external_exports.record(external_exports.string(), external_exports.tuple([external_exports.unknown(), external_exports.unknown()])).optional(),
|
|
18918
|
+
whereNot: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
18907
18919
|
});
|
|
18908
18920
|
var SettingsRecordSchema = external_exports.object({
|
|
18909
18921
|
id: external_exports.string(),
|
|
@@ -20726,6 +20738,11 @@ var LlmImageSchema = external_exports.object({
|
|
|
20726
20738
|
bytes: external_exports.instanceof(Uint8Array),
|
|
20727
20739
|
mimeType: external_exports.string()
|
|
20728
20740
|
});
|
|
20741
|
+
var LlmRetryPolicySchema = external_exports.object({
|
|
20742
|
+
enabled: external_exports.boolean().default(false),
|
|
20743
|
+
/** Total attempts INCLUDING the first. 1 = no retry. */
|
|
20744
|
+
maxAttempts: external_exports.number().int().min(1).max(5).default(1)
|
|
20745
|
+
});
|
|
20729
20746
|
var LlmGenerateBaseInputSchema = external_exports.object({
|
|
20730
20747
|
/** Collection routing (the notification-output posture). */
|
|
20731
20748
|
addonId: external_exports.string().optional(),
|
|
@@ -20740,7 +20757,34 @@ var LlmGenerateBaseInputSchema = external_exports.object({
|
|
|
20740
20757
|
jsonSchema: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
20741
20758
|
/** Per-call override of the profile default. */
|
|
20742
20759
|
maxTokens: external_exports.number().int().positive().optional(),
|
|
20743
|
-
temperature: external_exports.number().optional()
|
|
20760
|
+
temperature: external_exports.number().optional(),
|
|
20761
|
+
/** Per-call override of the profile default (nucleus sampling). */
|
|
20762
|
+
topP: external_exports.number().min(0).max(1).optional(),
|
|
20763
|
+
/** Per-call override of the profile default (top-k sampling). */
|
|
20764
|
+
topK: external_exports.number().int().positive().optional(),
|
|
20765
|
+
/** Per-call override of `profile.timeoutMs` — the total generation bound. */
|
|
20766
|
+
timeoutMs: external_exports.number().int().positive().optional(),
|
|
20767
|
+
/** Per-call override; beats both the consumer table and the profile. */
|
|
20768
|
+
retry: LlmRetryPolicySchema.optional(),
|
|
20769
|
+
/**
|
|
20770
|
+
* Caller-minted id that makes this generation CANCELLABLE.
|
|
20771
|
+
*
|
|
20772
|
+
* Without it a caller that stops waiting cannot stop the work: the gates race
|
|
20773
|
+
* the call against 8 s and free their own slot when the timer wins, while the
|
|
20774
|
+
* generation upstream keeps running to `profile.timeoutMs` — 60 s by default,
|
|
20775
|
+
* on a single-threaded local model. The per-camera bound then counts WAITS,
|
|
20776
|
+
* not generations, and the real load is unbounded.
|
|
20777
|
+
*
|
|
20778
|
+
* `AbortSignal` cannot cross a process boundary; an id can. Pass one here and
|
|
20779
|
+
* `llm.cancel({ requestId })` tears the socket down.
|
|
20780
|
+
*/
|
|
20781
|
+
requestId: external_exports.string().optional()
|
|
20782
|
+
});
|
|
20783
|
+
var ManagedModelExtraFileSchema = external_exports.object({
|
|
20784
|
+
url: external_exports.string(),
|
|
20785
|
+
filename: external_exports.string(),
|
|
20786
|
+
sizeBytes: external_exports.number(),
|
|
20787
|
+
sha256: external_exports.string().optional()
|
|
20744
20788
|
});
|
|
20745
20789
|
var ManagedModelRefSchema = external_exports.discriminatedUnion("kind", [
|
|
20746
20790
|
external_exports.object({
|
|
@@ -20750,7 +20794,11 @@ var ManagedModelRefSchema = external_exports.discriminatedUnion("kind", [
|
|
|
20750
20794
|
external_exports.object({
|
|
20751
20795
|
kind: external_exports.literal("url"),
|
|
20752
20796
|
url: external_exports.string(),
|
|
20753
|
-
sha256: external_exports.string().optional()
|
|
20797
|
+
sha256: external_exports.string().optional(),
|
|
20798
|
+
/** Picker/status label; the file basename when absent. */
|
|
20799
|
+
label: external_exports.string().optional(),
|
|
20800
|
+
sizeBytes: external_exports.number().optional(),
|
|
20801
|
+
extraFiles: external_exports.array(ManagedModelExtraFileSchema).optional()
|
|
20754
20802
|
}),
|
|
20755
20803
|
external_exports.object({
|
|
20756
20804
|
kind: external_exports.literal("path"),
|
|
@@ -20768,13 +20816,76 @@ var ManagedRuntimeConfigSchema = external_exports.object({
|
|
|
20768
20816
|
gpuLayers: external_exports.number().int().default(0),
|
|
20769
20817
|
/** Default: cpus-2, clamped ≥1 (resolved node-side). */
|
|
20770
20818
|
threads: external_exports.number().int().optional(),
|
|
20771
|
-
/** Concurrent slots. */
|
|
20819
|
+
/** Concurrent slots (`--parallel`). */
|
|
20772
20820
|
parallel: external_exports.number().int().default(1),
|
|
20821
|
+
/** Logical batch size (`-b`). Larger = faster prompt ingest, more RAM. */
|
|
20822
|
+
batchSize: external_exports.number().int().positive().optional(),
|
|
20823
|
+
/** Physical batch / micro-batch (`-ub`). */
|
|
20824
|
+
ubatchSize: external_exports.number().int().positive().optional(),
|
|
20825
|
+
/**
|
|
20826
|
+
* `--flash-attn`. Cuts KV-cache memory on the backends that implement it and
|
|
20827
|
+
* is a no-op elsewhere, so it is offered rather than assumed.
|
|
20828
|
+
*/
|
|
20829
|
+
flashAttention: external_exports.boolean().default(false),
|
|
20830
|
+
/**
|
|
20831
|
+
* `--mlock`. Pins the weights in RAM so the OS cannot page them out mid
|
|
20832
|
+
* inference. Costs the full model size in resident memory — which is exactly
|
|
20833
|
+
* what the RAM budget is counting.
|
|
20834
|
+
*/
|
|
20835
|
+
mlock: external_exports.boolean().default(false),
|
|
20836
|
+
/**
|
|
20837
|
+
* `--no-mmap`. Reads the whole GGUF up front instead of mapping it. Slower to
|
|
20838
|
+
* start, but avoids the page-fault stalls a network or spinning-disk model
|
|
20839
|
+
* store produces on every first token.
|
|
20840
|
+
*/
|
|
20841
|
+
noMmap: external_exports.boolean().default(false),
|
|
20842
|
+
/** `--cache-type-k` / `--cache-type-v` — quantising the KV cache is the
|
|
20843
|
+
* cheapest way to fit a longer context in the same RAM. */
|
|
20844
|
+
cacheTypeK: external_exports.enum([
|
|
20845
|
+
"f32",
|
|
20846
|
+
"f16",
|
|
20847
|
+
"q8_0",
|
|
20848
|
+
"q5_1",
|
|
20849
|
+
"q5_0",
|
|
20850
|
+
"q4_1",
|
|
20851
|
+
"q4_0"
|
|
20852
|
+
]).optional(),
|
|
20853
|
+
cacheTypeV: external_exports.enum([
|
|
20854
|
+
"f32",
|
|
20855
|
+
"f16",
|
|
20856
|
+
"q8_0",
|
|
20857
|
+
"q5_1",
|
|
20858
|
+
"q5_0",
|
|
20859
|
+
"q4_1",
|
|
20860
|
+
"q4_0"
|
|
20861
|
+
]).optional(),
|
|
20862
|
+
/**
|
|
20863
|
+
* Escape hatch for llama-server flags this schema does NOT model — `--jinja`
|
|
20864
|
+
* (which most vision chat templates need and some language-only models
|
|
20865
|
+
* dislike), `--cont-batching`, `--rope-scaling`, …
|
|
20866
|
+
*
|
|
20867
|
+
* It is NOT a second place to set the flags above. A token that collides
|
|
20868
|
+
* with a typed field is REJECTED at start, naming the field that owns it
|
|
20869
|
+
* (`assertNoOwnedFlags`), because two knobs writing the same argv is exactly
|
|
20870
|
+
* the "two switches that disagree" failure this repo has already shipped
|
|
20871
|
+
* twice (D62).
|
|
20872
|
+
*/
|
|
20873
|
+
extraArgs: external_exports.array(external_exports.string()).default([]),
|
|
20773
20874
|
/** Else lazy: first generate boots it. */
|
|
20774
20875
|
autoStart: external_exports.boolean().default(false),
|
|
20775
20876
|
/** 0 = never; frees RAM after quiet periods. */
|
|
20776
20877
|
idleStopMinutes: external_exports.number().int().default(30)
|
|
20777
20878
|
});
|
|
20879
|
+
var LlmDownloadProgressSchema = external_exports.object({
|
|
20880
|
+
phase: external_exports.enum(["downloading", "verifying"]),
|
|
20881
|
+
/** The artifact currently moving, e.g. `mmproj-F16.gguf`. */
|
|
20882
|
+
file: external_exports.string(),
|
|
20883
|
+
fileIndex: external_exports.number().int(),
|
|
20884
|
+
fileCount: external_exports.number().int(),
|
|
20885
|
+
/** Across the WHOLE install, not the current file. */
|
|
20886
|
+
downloadedBytes: external_exports.number(),
|
|
20887
|
+
totalBytes: external_exports.number().optional()
|
|
20888
|
+
});
|
|
20778
20889
|
var LlmRuntimeStatusSchema = external_exports.object({
|
|
20779
20890
|
/** Status is ALWAYS node-qualified. */
|
|
20780
20891
|
nodeId: external_exports.string(),
|
|
@@ -20791,6 +20902,8 @@ var LlmRuntimeStatusSchema = external_exports.object({
|
|
|
20791
20902
|
modelPath: external_exports.string().optional(),
|
|
20792
20903
|
modelId: external_exports.string().optional(),
|
|
20793
20904
|
downloadProgress: external_exports.number().min(0).max(1).optional(),
|
|
20905
|
+
/** Detail behind `downloadProgress`; present for the same lifetime. */
|
|
20906
|
+
download: LlmDownloadProgressSchema.optional(),
|
|
20794
20907
|
lastError: external_exports.string().optional(),
|
|
20795
20908
|
crashesInWindow: external_exports.number(),
|
|
20796
20909
|
/** Child RSS (sampled best-effort). */
|
|
@@ -20801,7 +20914,14 @@ var LlmNodeModelSchema = external_exports.object({
|
|
|
20801
20914
|
file: external_exports.string(),
|
|
20802
20915
|
sizeBytes: external_exports.number(),
|
|
20803
20916
|
catalogId: external_exports.string().optional(),
|
|
20804
|
-
installedAt: external_exports.number().optional()
|
|
20917
|
+
installedAt: external_exports.number().optional(),
|
|
20918
|
+
/**
|
|
20919
|
+
* Absolute path on the node. Present so a file that is on disk but matches
|
|
20920
|
+
* no catalog entry — a custom Hugging Face install, or a GGUF the operator
|
|
20921
|
+
* copied in by hand — is still SELECTABLE, as a `{kind:'path'}` ref. Without
|
|
20922
|
+
* it the picker could list such a file and do nothing with it.
|
|
20923
|
+
*/
|
|
20924
|
+
path: external_exports.string().optional()
|
|
20805
20925
|
});
|
|
20806
20926
|
var LlmRuntimeDiskUsageSchema = external_exports.object({
|
|
20807
20927
|
nodeId: external_exports.string(),
|
|
@@ -20862,10 +20982,47 @@ var LlmProfileSchema = external_exports.object({
|
|
|
20862
20982
|
baseUrl: external_exports.string().optional(),
|
|
20863
20983
|
/** ConfigUISchema type:'password' — never round-trips (spec §5). */
|
|
20864
20984
|
apiKey: external_exports.string().optional(),
|
|
20985
|
+
/** Vision on/off. A vision call against a `false` profile is REFUSED, never
|
|
20986
|
+
* degraded to text — that shipped once and produced a confident answer to a
|
|
20987
|
+
* question about a picture nobody sent. */
|
|
20865
20988
|
supportsVision: external_exports.boolean(),
|
|
20866
20989
|
temperature: external_exports.number().min(0).max(2).optional(),
|
|
20990
|
+
/** Nucleus sampling. Every wire we speak has it. */
|
|
20991
|
+
topP: external_exports.number().min(0).max(1).optional(),
|
|
20992
|
+
/** Top-k sampling. Carried only by the wires that have it — NEITHER OpenAI
|
|
20993
|
+
* wire does, and the client drops it there (measured: the request body gets
|
|
20994
|
+
* `top_p` and no `top_k`). The profile editor hides the field wherever it
|
|
20995
|
+
* would change nothing; `KINDS_WITH_TOP_K` is the single owner of that list. */
|
|
20996
|
+
topK: external_exports.number().int().positive().optional(),
|
|
20867
20997
|
maxTokens: external_exports.number().int().positive().optional(),
|
|
20998
|
+
/** Prompt context window. Advisory for cloud kinds (they enforce their own);
|
|
20999
|
+
* for `managed-local` it is the llama.cpp `--ctx-size` the runtime starts
|
|
21000
|
+
* the model with, so it is the one field that changes a PROCESS. */
|
|
21001
|
+
contextLength: external_exports.number().int().positive().optional(),
|
|
21002
|
+
/** Default system prompt. A caller's `system` REPLACES it (never appends —
|
|
21003
|
+
* two system prompts fighting is worse than either alone). */
|
|
21004
|
+
systemPrompt: external_exports.string().optional(),
|
|
21005
|
+
/** Total generation bound — the only one a unary call has. */
|
|
20868
21006
|
timeoutMs: external_exports.number().int().positive().default(6e4),
|
|
21007
|
+
/** The TCP handshake only — "is the port even open". NOT the wait for
|
|
21008
|
+
* response headers: on the LM Studio / llama-server wire those are written
|
|
21009
|
+
* once the model has finished loading, so they belong to the bound below. */
|
|
21010
|
+
connectTimeoutMs: external_exports.number().int().positive().default(1e4),
|
|
21011
|
+
/** Accepted, but no output yet — response headers included, because a cold
|
|
21012
|
+
* GPU load is exactly what happens before them. */
|
|
21013
|
+
firstTokenTimeoutMs: external_exports.number().int().positive().default(12e4),
|
|
21014
|
+
/** Output started then stopped. */
|
|
21015
|
+
idleTimeoutMs: external_exports.number().int().positive().default(6e4),
|
|
21016
|
+
/** Profile-level default. The per-consumer table and a per-call override
|
|
21017
|
+
* both beat it — see `resolveRetryPolicy`. */
|
|
21018
|
+
retry: LlmRetryPolicySchema.default({
|
|
21019
|
+
enabled: false,
|
|
21020
|
+
maxAttempts: 1
|
|
21021
|
+
}),
|
|
21022
|
+
/** Whether this profile may use tools. The tool-call plumbing rides the
|
|
21023
|
+
* library; the REGISTRY of callable tools is ours and is empty in v1, so a
|
|
21024
|
+
* `true` here buys the wiring, not behaviour, until tools are registered. */
|
|
21025
|
+
toolsEnabled: external_exports.boolean().default(false),
|
|
20869
21026
|
extraHeaders: external_exports.record(external_exports.string(), external_exports.string()).optional(),
|
|
20870
21027
|
/** kind === 'managed-local' only (spec §4). */
|
|
20871
21028
|
runtime: ManagedRuntimeConfigSchema.optional()
|
|
@@ -20910,6 +21067,27 @@ var ManagedModelCatalogEntrySchema = external_exports.object({
|
|
|
20910
21067
|
/** Vision models: companion projector file. */
|
|
20911
21068
|
mmprojUrl: external_exports.string().optional()
|
|
20912
21069
|
});
|
|
21070
|
+
var HfModelResolutionSchema = external_exports.discriminatedUnion("ok", [external_exports.object({
|
|
21071
|
+
ok: external_exports.literal(true),
|
|
21072
|
+
/** Ready to hand to `installModel` unchanged. */
|
|
21073
|
+
model: ManagedModelRefSchema,
|
|
21074
|
+
label: external_exports.string(),
|
|
21075
|
+
repo: external_exports.string(),
|
|
21076
|
+
quantization: external_exports.string(),
|
|
21077
|
+
purpose: external_exports.enum(["text", "vision"]),
|
|
21078
|
+
totalBytes: external_exports.number(),
|
|
21079
|
+
/** mmproj + shards, for the preview: an operator approving 23 GB should
|
|
21080
|
+
* see that 0.9 GB of it is a projector they did not name. */
|
|
21081
|
+
extraFilenames: external_exports.array(external_exports.string())
|
|
21082
|
+
}), external_exports.object({
|
|
21083
|
+
ok: external_exports.literal(false),
|
|
21084
|
+
code: external_exports.string(),
|
|
21085
|
+
message: external_exports.string(),
|
|
21086
|
+
candidates: external_exports.array(external_exports.string()).optional(),
|
|
21087
|
+
/** Set when the refusal was only the ceiling: re-calling with
|
|
21088
|
+
* `maxBytes: requiredBytes` is the operator's explicit override. */
|
|
21089
|
+
requiredBytes: external_exports.number().optional()
|
|
21090
|
+
})]);
|
|
20913
21091
|
var LlmRuntimeNodeSchema = external_exports.object({
|
|
20914
21092
|
nodeId: external_exports.string(),
|
|
20915
21093
|
reachable: external_exports.boolean(),
|
|
@@ -20933,6 +21111,17 @@ var llmCapability = {
|
|
|
20933
21111
|
methods: {
|
|
20934
21112
|
generate: method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }),
|
|
20935
21113
|
generateVision: method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }),
|
|
21114
|
+
/**
|
|
21115
|
+
* Stop a generation started with a `requestId`.
|
|
21116
|
+
*
|
|
21117
|
+
* Idempotent and always successful: cancelling an id that already finished,
|
|
21118
|
+
* never existed, or was cancelled a moment ago is a no-op. A caller that has
|
|
21119
|
+
* given up must never have to handle an error from giving up.
|
|
21120
|
+
*/
|
|
21121
|
+
cancel: method(external_exports.object({
|
|
21122
|
+
addonId: external_exports.string().optional(),
|
|
21123
|
+
requestId: external_exports.string()
|
|
21124
|
+
}), external_exports.void(), { kind: "mutation" }),
|
|
20936
21125
|
listProfileKinds: method(external_exports.object({}), external_exports.array(LlmProfileKindDescriptorSchema)),
|
|
20937
21126
|
listProfiles: method(external_exports.object({}), external_exports.array(LlmProfileSchema)),
|
|
20938
21127
|
upsertProfile: method(external_exports.object({ profile: LlmProfileSchema }), LlmProfileSchema, {
|
|
@@ -20966,6 +21155,25 @@ var llmCapability = {
|
|
|
20966
21155
|
listModelCatalog: method(external_exports.object({}), external_exports.array(ManagedModelCatalogEntrySchema)),
|
|
20967
21156
|
listRuntimeNodes: method(external_exports.object({}), external_exports.array(LlmRuntimeNodeSchema)),
|
|
20968
21157
|
listNodeModels: method(external_exports.object({ nodeId: external_exports.string() }), external_exports.array(LlmNodeModelSchema)),
|
|
21158
|
+
/**
|
|
21159
|
+
* One typed Hugging Face reference → a pinned, verified `ManagedModelRef`.
|
|
21160
|
+
*
|
|
21161
|
+
* Runs on the HUB, not on the target node: resolution needs egress to
|
|
21162
|
+
* huggingface.co, and an agent that cannot reach it still installs fine
|
|
21163
|
+
* through the model-distributor relay. Nothing is downloaded here — this is
|
|
21164
|
+
* a tree read plus a HEAD, so the operator sees the size, the quantization
|
|
21165
|
+
* and the mmproj BEFORE approving a multi-GB pull.
|
|
21166
|
+
*/
|
|
21167
|
+
resolveModelRef: method(external_exports.object({
|
|
21168
|
+
/** `https://huggingface.co/<org>/<repo>/resolve/main/<f>.gguf`,
|
|
21169
|
+
* `<org>/<repo>/<f>.gguf`, `<org>/<repo>` or `<org>/<repo>:<QUANT>`. */
|
|
21170
|
+
ref: external_exports.string(),
|
|
21171
|
+
/** Explicit ceiling override, in bytes. Absent = the built-in ceiling. */
|
|
21172
|
+
maxBytes: external_exports.number().positive().optional()
|
|
21173
|
+
}), HfModelResolutionSchema, {
|
|
21174
|
+
kind: "mutation",
|
|
21175
|
+
auth: "admin"
|
|
21176
|
+
}),
|
|
20969
21177
|
installModel: method(external_exports.object({
|
|
20970
21178
|
nodeId: external_exports.string(),
|
|
20971
21179
|
model: ManagedModelRefSchema
|
|
@@ -22456,6 +22664,8 @@ var NcSystemEventKindSchema = external_exports.enum([
|
|
|
22456
22664
|
"stream-offline",
|
|
22457
22665
|
"node-online",
|
|
22458
22666
|
"node-offline",
|
|
22667
|
+
"node-inference-unavailable",
|
|
22668
|
+
"detection-blind",
|
|
22459
22669
|
"addon-update-available",
|
|
22460
22670
|
"server-update-available",
|
|
22461
22671
|
"alarm-triggered",
|
|
@@ -22508,7 +22718,16 @@ var NcScheduleSchema = external_exports.object({
|
|
|
22508
22718
|
invert: external_exports.boolean().optional()
|
|
22509
22719
|
});
|
|
22510
22720
|
var NcPlateMatcherSchema = external_exports.object({
|
|
22511
|
-
|
|
22721
|
+
/**
|
|
22722
|
+
* Plate texts (or gallery vehicle names) to match. EMPTY = **any plate the
|
|
22723
|
+
* pipeline could read** — the plate half of "no selection = no narrowing",
|
|
22724
|
+
* and the switch that says this rule is about vehicles that were IDENTIFIED
|
|
22725
|
+
* rather than merely seen. A subject carrying no plate still fails.
|
|
22726
|
+
*
|
|
22727
|
+
* The `.min(1)` this used to carry made that state unauthorable; nothing has
|
|
22728
|
+
* ever persisted an empty list, so widening it cannot change an existing rule.
|
|
22729
|
+
*/
|
|
22730
|
+
values: external_exports.array(external_exports.string().min(1)),
|
|
22512
22731
|
/** Max Levenshtein distance after normalization (uppercase alphanumeric). */
|
|
22513
22732
|
maxDistance: external_exports.number().int().min(0).max(3).default(1)
|
|
22514
22733
|
});
|
|
@@ -22527,13 +22746,13 @@ var NcOccupancyConditionSchema = external_exports.object({
|
|
|
22527
22746
|
sustainSeconds: external_exports.number().int().min(0).max(3600).default(15)
|
|
22528
22747
|
});
|
|
22529
22748
|
var NcAudioConditionSchema = external_exports.object({
|
|
22530
|
-
/**
|
|
22749
|
+
/** LABEL MODE: audio macro labels. Present ⇒ fires on the first labelled frame. */
|
|
22531
22750
|
labels: external_exports.array(external_exports.string().min(1)).min(1).optional(),
|
|
22532
|
-
/**
|
|
22751
|
+
/** LEVEL MODE: floor in dBFS (negative-going, `0` = full scale). */
|
|
22533
22752
|
dbThreshold: external_exports.number().min(-96).max(0).optional(),
|
|
22534
|
-
/**
|
|
22753
|
+
/** LEVEL MODE ONLY: percentage of the window's samples that must be hits (1–100). */
|
|
22535
22754
|
hitPercent: external_exports.number().int().min(1).max(100).default(60),
|
|
22536
|
-
/**
|
|
22755
|
+
/** LEVEL MODE ONLY: length of the sampling window in seconds. */
|
|
22537
22756
|
samplingSeconds: external_exports.number().int().min(1).max(300).default(10)
|
|
22538
22757
|
});
|
|
22539
22758
|
var NcCrossingSchema = external_exports.enum([
|
|
@@ -22600,9 +22819,29 @@ var NcDeviceStateConditionSchema = external_exports.object({
|
|
|
22600
22819
|
/** Any of these matches. */
|
|
22601
22820
|
states: external_exports.array(external_exports.string().min(1)).min(1)
|
|
22602
22821
|
});
|
|
22822
|
+
var NcSceneConditionSchema = external_exports.object({
|
|
22823
|
+
/** `SceneMonitor.id` — the uuid the cap mints. The whole lookup key. */
|
|
22824
|
+
sceneId: external_exports.string().min(1),
|
|
22825
|
+
/** The camera the scene lives on. A hint for the editor and the log line. */
|
|
22826
|
+
deviceId: external_exports.number().int().optional(),
|
|
22827
|
+
/** The state the scene must be in for the rule to fire. */
|
|
22828
|
+
requiredState: external_exports.enum(["matched", "diverged"]),
|
|
22829
|
+
/**
|
|
22830
|
+
* Read the LATCH (`true`) or the LIVE verdict (`false`). Absent = follow the
|
|
22831
|
+
* scene's own `emit` field, which is the only place that decision belongs.
|
|
22832
|
+
*/
|
|
22833
|
+
latched: external_exports.boolean().optional()
|
|
22834
|
+
});
|
|
22603
22835
|
var NcConditionsSchema = external_exports.object({
|
|
22604
22836
|
/** Gate on ANOTHER device's current state (the alarm armed, a switch on). */
|
|
22605
22837
|
deviceState: NcDeviceStateConditionSchema.optional(),
|
|
22838
|
+
/**
|
|
22839
|
+
* Gate on a SCENE's state — "only while the bin is still out". Composes with
|
|
22840
|
+
* every trigger (detection, occupancy, audio, sensor, package, track-end);
|
|
22841
|
+
* unlike `occupancy`/`audio` it discriminates nothing. See
|
|
22842
|
+
* {@link NcSceneCondition} and D159.
|
|
22843
|
+
*/
|
|
22844
|
+
scene: NcSceneConditionSchema.optional(),
|
|
22606
22845
|
/** Device scope — absent = all devices. */
|
|
22607
22846
|
devices: external_exports.array(external_exports.number()).optional(),
|
|
22608
22847
|
/** Detector class names (any overlap with the record's class set). */
|
|
@@ -22628,18 +22867,47 @@ var NcConditionsSchema = external_exports.object({
|
|
|
22628
22867
|
*/
|
|
22629
22868
|
labelEquals: external_exports.array(external_exports.string().min(1)).optional(),
|
|
22630
22869
|
/**
|
|
22631
|
-
*
|
|
22632
|
-
*
|
|
22633
|
-
*
|
|
22870
|
+
* KNOWN FACES — the rule's identity scope, and the switch that says the rule
|
|
22871
|
+
* is about recognised people at all.
|
|
22872
|
+
*
|
|
22873
|
+
* Three states, and the empty one is the point:
|
|
22874
|
+
*
|
|
22875
|
+
* | value | meaning |
|
|
22876
|
+
* | --- | --- |
|
|
22877
|
+
* | absent | the rule does not care who it is; an unrecognised person matches |
|
|
22878
|
+
* | `[]` | **only known faces** — any identity in the gallery, nobody in particular |
|
|
22879
|
+
* | a list | only these identities |
|
|
22880
|
+
*
|
|
22881
|
+
* `[]` is the repo-wide "no selection = no narrowing" reading (an absent
|
|
22882
|
+
* `devices` list is every device), applied one level down: the operator has
|
|
22883
|
+
* turned the face scope ON and narrowed it to nothing, which is every known
|
|
22884
|
+
* face. No second field states the same thing — a switch that can disagree
|
|
22885
|
+
* with the list under it is worse than no switch (D62).
|
|
22886
|
+
*
|
|
22887
|
+
* MEMBERS ARE FACE-GALLERY `Identity.id`s (uuid), not display names. A name is
|
|
22888
|
+
* renameable, and a rule authored on "Gianluca" went silently dark the moment
|
|
22889
|
+
* the operator fixed the spelling. The id reaches the record on
|
|
22890
|
+
* `LabelAttribution.identityId`; the name is what the editor shows and what
|
|
22891
|
+
* `{{label}}` renders.
|
|
22892
|
+
*
|
|
22893
|
+
* Rules written before this carry NAMES, and are resolved to ids lazily at
|
|
22894
|
+
* load (`NcRuleStore.load`) against the live gallery — a name nothing answers
|
|
22895
|
+
* for is left as it stands and reported, never dropped. The engine also
|
|
22896
|
+
* accepts a display-name hit as a compatibility leg, so a rule whose
|
|
22897
|
+
* migration could not resolve keeps matching exactly what it matched before.
|
|
22634
22898
|
*/
|
|
22635
22899
|
identities: external_exports.array(external_exports.string().min(1)).optional(),
|
|
22636
|
-
/**
|
|
22900
|
+
/**
|
|
22901
|
+
* KNOWN PLATES / VEHICLES — the plate mirror of {@link identities}, including
|
|
22902
|
+
* the empty-list reading: `values: []` is "any plate the OCR could read",
|
|
22903
|
+
* a non-empty list is those plates (fuzzily). See {@link NcPlateMatcherSchema}.
|
|
22904
|
+
*/
|
|
22637
22905
|
plates: NcPlateMatcherSchema.optional(),
|
|
22638
22906
|
/**
|
|
22639
|
-
* Identity EXCLUDE — mirror of {@link identities} with `notIn` semantics
|
|
22640
|
-
*
|
|
22641
|
-
* identity
|
|
22642
|
-
*
|
|
22907
|
+
* Identity EXCLUDE — mirror of {@link identities} with `notIn` semantics, and
|
|
22908
|
+
* the same id members and the same lazy name→id migration. A record with NO
|
|
22909
|
+
* identity passes (nothing to exclude), unlike the include variant which
|
|
22910
|
+
* fails on an unrecognised subject. An EMPTY list excludes nobody.
|
|
22643
22911
|
*/
|
|
22644
22912
|
identitiesExclude: external_exports.array(external_exports.string().min(1)).optional(),
|
|
22645
22913
|
/**
|
|
@@ -22964,7 +23232,80 @@ var NcRuleInputSchema = external_exports.object({
|
|
|
22964
23232
|
* a rule that predates the gate must keep delivering byte-for-byte as it
|
|
22965
23233
|
* did, and absent is the only way to say that without a migration.
|
|
22966
23234
|
*/
|
|
22967
|
-
confirm: NcConfirmSchema.optional()
|
|
23235
|
+
confirm: NcConfirmSchema.optional(),
|
|
23236
|
+
/**
|
|
23237
|
+
* WAIT for face/plate recognition before saying anything.
|
|
23238
|
+
*
|
|
23239
|
+
* A notification's TEXT is frozen at enqueue and its media is re-resolved at
|
|
23240
|
+
* send; the identity is neither. A face is confirmed after `confirmFrames`
|
|
23241
|
+
* agreeing observations — p50 **11.4 s** after the track was first seen,
|
|
23242
|
+
* measured on this hub — and an `immediate` rule enqueues on the first object
|
|
23243
|
+
* event, seconds before that. So "Gianluca è arrivato" is unsayable on the
|
|
23244
|
+
* immediate path, and no amount of media re-resolution fixes a sentence.
|
|
23245
|
+
*
|
|
23246
|
+
* Only two honest answers exist, and this flag picks between them. It has
|
|
23247
|
+
* effect ONLY on a rule that declares a recognition scope
|
|
23248
|
+
* ({@link NcConditions.identities} or {@link NcConditions.plates}) — on any
|
|
23249
|
+
* other rule there is nothing to wait for and the flag is inert.
|
|
23250
|
+
*
|
|
23251
|
+
* | value | what happens |
|
|
23252
|
+
* | --- | --- |
|
|
23253
|
+
* | `true` | the rule stops firing on the object event and fires at TRACK CLOSE instead, once, with the name — later, and complete |
|
|
23254
|
+
* | 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) |
|
|
23255
|
+
*
|
|
23256
|
+
* `.optional()` and deliberately NOT `.default()`: a Zod default does not run
|
|
23257
|
+
* on the addon cap path, and absent has to keep meaning exactly what every
|
|
23258
|
+
* rule authored before this field meant.
|
|
23259
|
+
*
|
|
23260
|
+
* The cost of `true` is stated here because the editor states it too: a rule
|
|
23261
|
+
* that waits also inherits track-close SEMANTICS — its `zones` condition
|
|
23262
|
+
* tests every zone the track visited and a `crossing` condition can no longer
|
|
23263
|
+
* be satisfied, because a closed track carries no crossing.
|
|
23264
|
+
*/
|
|
23265
|
+
waitForEnhancement: external_exports.boolean().optional(),
|
|
23266
|
+
/**
|
|
23267
|
+
* GROUP a burst of subjects into ONE notification that grows.
|
|
23268
|
+
*
|
|
23269
|
+
* Seconds of quiet after the last matching subject before the burst is
|
|
23270
|
+
* considered over. While it is open, the first subject enqueues immediately —
|
|
23271
|
+
* **exactly as today, with no added latency** — and every real growth (a new
|
|
23272
|
+
* subject, or a name confirmed on one already in it) REPLACES that
|
|
23273
|
+
* notification with an updated one naming everybody. The push carries the
|
|
23274
|
+
* group's own coalescing tag, so the phone replaces rather than stacks.
|
|
23275
|
+
*
|
|
23276
|
+
* `0` / absent = off, and off is today's behaviour byte for byte.
|
|
23277
|
+
*
|
|
23278
|
+
* ### Why an idle cutoff and not a window
|
|
23279
|
+
*
|
|
23280
|
+
* The measured seven-person arrival on device 590 spans 110 s with every
|
|
23281
|
+
* internal gap under 30 s. A 12 s fixed window cuts it into three groups; an
|
|
23282
|
+
* idle cutoff holds it as one and ends it when the arrival actually ends.
|
|
23283
|
+
* 30 is Frigate's shipped value for the same decision.
|
|
23284
|
+
*
|
|
23285
|
+
* ### What it replaces
|
|
23286
|
+
*
|
|
23287
|
+
* The blind cooldown, which collapses a burst by DISCARDING it. Measured on
|
|
23288
|
+
* device 615 / *Persona su Uscio* over six days: 116 qualifying tracks → 74
|
|
23289
|
+
* notifications, **44 (37.9%) suppressed outright**, 23 of them overlapping a
|
|
23290
|
+
* track that did fire and 7 carrying a confirmed identity nobody heard about.
|
|
23291
|
+
* A group collapses the same volume by MERGING, so the cooldown becomes a
|
|
23292
|
+
* budget over GROUPS — which is what it always meant — and a growth is never
|
|
23293
|
+
* throttled by the window its own first member spent.
|
|
23294
|
+
*
|
|
23295
|
+
* ### Interaction with {@link waitForEnhancement}
|
|
23296
|
+
*
|
|
23297
|
+
* They compose, and the order matters. `waitForEnhancement` defers the rule to
|
|
23298
|
+
* TRACK CLOSE, so with both set the group is opened by the first member to
|
|
23299
|
+
* CLOSE — already carrying its name — and grows as later members close. That
|
|
23300
|
+
* is later, and complete. With grouping alone the group opens on the first
|
|
23301
|
+
* object event and picks up names as they are confirmed, through the growth
|
|
23302
|
+
* path. Neither combination fires twice for one subject.
|
|
23303
|
+
*
|
|
23304
|
+
* `.optional()` and deliberately NOT `.default()`: a Zod default does not run
|
|
23305
|
+
* on the addon cap path, so absent must keep meaning what it meant before this
|
|
23306
|
+
* field existed.
|
|
23307
|
+
*/
|
|
23308
|
+
groupIdleSec: external_exports.number().int().min(0).max(600).optional()
|
|
22968
23309
|
});
|
|
22969
23310
|
var NcRulePatchSchema = NcRuleInputSchema.partial().extend({
|
|
22970
23311
|
disabledTargetIds: external_exports.array(external_exports.string()).optional(),
|
|
@@ -23061,6 +23402,7 @@ var NcConditionDescriptorSchema = external_exports.object({
|
|
|
23061
23402
|
"occupancy",
|
|
23062
23403
|
"audio",
|
|
23063
23404
|
"deviceState",
|
|
23405
|
+
"scene",
|
|
23064
23406
|
"systemEvent"
|
|
23065
23407
|
]),
|
|
23066
23408
|
operator: external_exports.enum([
|
|
@@ -23452,7 +23794,55 @@ var MethodAccessSchema = external_exports.enum([
|
|
|
23452
23794
|
var AllowedProviderSchema = external_exports.union([external_exports.literal("*"), external_exports.array(external_exports.string())]);
|
|
23453
23795
|
var AllowedDevicesSchema = external_exports.record(external_exports.string(), external_exports.union([external_exports.literal("*"), external_exports.array(external_exports.string())]));
|
|
23454
23796
|
var CapScopeSchema = external_exports.enum(["device", "system"]);
|
|
23455
|
-
var
|
|
23797
|
+
var DeviceSelectorSchema = external_exports.discriminatedUnion("kind", [
|
|
23798
|
+
external_exports.object({ kind: external_exports.literal("all") }),
|
|
23799
|
+
external_exports.object({
|
|
23800
|
+
kind: external_exports.literal("ids"),
|
|
23801
|
+
ids: external_exports.array(external_exports.number().int()).min(1)
|
|
23802
|
+
}),
|
|
23803
|
+
external_exports.object({
|
|
23804
|
+
kind: external_exports.literal("types"),
|
|
23805
|
+
types: external_exports.array(external_exports.enum(DeviceType)).min(1)
|
|
23806
|
+
}),
|
|
23807
|
+
external_exports.object({
|
|
23808
|
+
kind: external_exports.literal("locations"),
|
|
23809
|
+
locations: external_exports.array(external_exports.string().min(1)).min(1)
|
|
23810
|
+
})
|
|
23811
|
+
]);
|
|
23812
|
+
var DeviceTokenScopeSchema = external_exports.object({
|
|
23813
|
+
type: external_exports.literal("device"),
|
|
23814
|
+
/** The device SET this grant covers — resolved against the live fleet. */
|
|
23815
|
+
selector: DeviceSelectorSchema,
|
|
23816
|
+
access: external_exports.array(MethodAccessSchema).min(1),
|
|
23817
|
+
/**
|
|
23818
|
+
* Whether a grant on a PARENT device transparently covers its accessory
|
|
23819
|
+
* CHILDREN (siren / floodlight / PIR) via the persisted-parentage walk.
|
|
23820
|
+
* Direction is parent → children ONLY.
|
|
23821
|
+
*
|
|
23822
|
+
* Absent → the matcher DERIVES it from the access flavour: `view`
|
|
23823
|
+
* inherits (a camera viewer sees the camera's accessories), `create` /
|
|
23824
|
+
* `delete` do NOT (actuating/removing a child is an explicit act the
|
|
23825
|
+
* operator must grant on the child, not inherit from the parent). Set it
|
|
23826
|
+
* explicitly to override that default per grant.
|
|
23827
|
+
*/
|
|
23828
|
+
includeLinked: external_exports.boolean().optional()
|
|
23829
|
+
});
|
|
23830
|
+
function migrateLegacyTokenScope(raw) {
|
|
23831
|
+
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) return raw;
|
|
23832
|
+
if (Reflect.get(raw, "type") !== "device") return raw;
|
|
23833
|
+
if (Reflect.get(raw, "selector") !== void 0) return raw;
|
|
23834
|
+
const targets = Reflect.get(raw, "targets");
|
|
23835
|
+
if (!Array.isArray(targets)) return raw;
|
|
23836
|
+
return {
|
|
23837
|
+
type: "device",
|
|
23838
|
+
selector: {
|
|
23839
|
+
kind: "ids",
|
|
23840
|
+
ids: targets.map((t) => typeof t === "string" ? Number(t) : t).filter((n) => typeof n === "number" && Number.isInteger(n))
|
|
23841
|
+
},
|
|
23842
|
+
access: Reflect.get(raw, "access")
|
|
23843
|
+
};
|
|
23844
|
+
}
|
|
23845
|
+
var TokenScopeSchema = external_exports.preprocess(migrateLegacyTokenScope, external_exports.discriminatedUnion("type", [
|
|
23456
23846
|
external_exports.object({
|
|
23457
23847
|
type: external_exports.literal("category"),
|
|
23458
23848
|
target: CapScopeSchema,
|
|
@@ -23468,18 +23858,8 @@ var TokenScopeSchema = external_exports.discriminatedUnion("type", [
|
|
|
23468
23858
|
target: external_exports.string(),
|
|
23469
23859
|
access: external_exports.array(MethodAccessSchema).min(1)
|
|
23470
23860
|
}),
|
|
23471
|
-
|
|
23472
|
-
|
|
23473
|
-
/**
|
|
23474
|
-
* One or more deviceIds (serialised as strings for wire-format
|
|
23475
|
-
* consistency with the rest of the union). Matcher accepts if
|
|
23476
|
-
* `input.deviceId` ∈ `targets`. Array shape avoids the row-explosion
|
|
23477
|
-
* of one scope-per-device when granting access to a set of cameras.
|
|
23478
|
-
*/
|
|
23479
|
-
targets: external_exports.array(external_exports.string()).min(1),
|
|
23480
|
-
access: external_exports.array(MethodAccessSchema).min(1)
|
|
23481
|
-
})
|
|
23482
|
-
]);
|
|
23861
|
+
DeviceTokenScopeSchema
|
|
23862
|
+
]));
|
|
23483
23863
|
var UserRecordSchema = external_exports.object({
|
|
23484
23864
|
id: external_exports.string(),
|
|
23485
23865
|
username: external_exports.string(),
|
|
@@ -23724,7 +24104,21 @@ var LabelTierSchema = external_exports.union([external_exports.literal(1), exter
|
|
|
23724
24104
|
var LabelAttributionSchema = external_exports.object({
|
|
23725
24105
|
stepId: external_exports.string(),
|
|
23726
24106
|
modelId: external_exports.string().optional(),
|
|
23727
|
-
decidedAt: external_exports.number()
|
|
24107
|
+
decidedAt: external_exports.number(),
|
|
24108
|
+
/**
|
|
24109
|
+
* The GALLERY id behind a recognised tier-2 label — a face-gallery
|
|
24110
|
+
* `Identity.id` or a plate-gallery `Vehicle.id` (both `randomUUID`).
|
|
24111
|
+
*
|
|
24112
|
+
* The text alone is a DISPLAY NAME, and a display name is renameable: a
|
|
24113
|
+
* notification rule authored on "Gianluca" stopped matching the moment the
|
|
24114
|
+
* operator fixed the spelling in the gallery, and nothing said so. The id is
|
|
24115
|
+
* the thing that does not move, so it is what a rule matches on
|
|
24116
|
+
* (`NcConditions.identities`) and the text is what a human is shown.
|
|
24117
|
+
*
|
|
24118
|
+
* Absent when the label names no gallery row — a plate the OCR read but no
|
|
24119
|
+
* vehicle claims, a sub-class, a species, any tier-1 value.
|
|
24120
|
+
*/
|
|
24121
|
+
identityId: external_exports.string().optional()
|
|
23728
24122
|
});
|
|
23729
24123
|
var TieredLabelFields = {
|
|
23730
24124
|
/** Tier 1 — the sub-class. See {@link LabelTierSchema}. */
|
|
@@ -23834,6 +24228,28 @@ var TrackSchema = external_exports.object({
|
|
|
23834
24228
|
* `=== true` and render nothing otherwise, never infer "no face".
|
|
23835
24229
|
*/
|
|
23836
24230
|
hasFace: external_exports.boolean().optional(),
|
|
24231
|
+
/**
|
|
24232
|
+
* This subject CONTAINS a folded rider — a person the rider-pairing step
|
|
24233
|
+
* ([D34](../decisions/adr-0034.md)) removed from the frame BEFORE the tracker,
|
|
24234
|
+
* so the passage is tracked once and as a VEHICLE.
|
|
24235
|
+
*
|
|
24236
|
+
* It exists because the fold's record was dishonest. D34 and the code both
|
|
24237
|
+
* said "the person is not lost — it is reported so both entities stay on the
|
|
24238
|
+
* record"; in fact the pair went into a per-processor RAM field behind an
|
|
24239
|
+
* accessor nobody called, and every durable surface said `vehicle`, full
|
|
24240
|
+
* stop. This is the composition note that makes the row true.
|
|
24241
|
+
*
|
|
24242
|
+
* A COMPOSITION, never a class and never a label. "This vehicle contains a
|
|
24243
|
+
* person" is not an answer to "what is this" — both label tiers would refuse
|
|
24244
|
+
* a macro token anyway (D89), and correctly. Nothing here changes what the
|
|
24245
|
+
* subject IS: a cyclist stays one vehicle track, occupancy still counts one,
|
|
24246
|
+
* and a `person` rule still does not fire for someone cycling past.
|
|
24247
|
+
*
|
|
24248
|
+
* **Absent ≠ false**, exactly like {@link hasFace}: every row written before
|
|
24249
|
+
* the column, and every hub that predates the field, omits it. Test
|
|
24250
|
+
* `=== true` and render nothing otherwise — never infer "no rider".
|
|
24251
|
+
*/
|
|
24252
|
+
hasRider: external_exports.boolean().optional(),
|
|
23837
24253
|
...TrackFlagFields,
|
|
23838
24254
|
...TrackRetrainFields
|
|
23839
24255
|
});
|
|
@@ -24112,7 +24528,10 @@ var RecentTracksQueryInput = external_exports.object({
|
|
|
24112
24528
|
* Encodes the (lastSeen, trackId) sort position — treat as opaque. */
|
|
24113
24529
|
cursor: external_exports.string().optional(),
|
|
24114
24530
|
/** See {@link TrackProjectionSchema}. Default `full`. */
|
|
24115
|
-
projection: TrackProjectionSchema.optional()
|
|
24531
|
+
projection: TrackProjectionSchema.optional(),
|
|
24532
|
+
/** Include stationary-promoted rows (parked objects). Default false: the
|
|
24533
|
+
* feed lists passages; parking records live on the stationary registry. */
|
|
24534
|
+
includeStationary: external_exports.boolean().optional()
|
|
24116
24535
|
});
|
|
24117
24536
|
var RecentTracksPageSchema = external_exports.object({
|
|
24118
24537
|
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
@@ -24315,7 +24734,11 @@ var pipelineAnalyticsCapability = {
|
|
|
24315
24734
|
zone: TrackZoneFilterSchema.optional(),
|
|
24316
24735
|
/** See {@link TrackProjectionSchema}. Default `full` (backward
|
|
24317
24736
|
* compatible — omitting the field keeps today's exact behaviour). */
|
|
24318
|
-
projection: TrackProjectionSchema.optional()
|
|
24737
|
+
projection: TrackProjectionSchema.optional(),
|
|
24738
|
+
/** Include stationary-promoted rows (parked objects handed to the
|
|
24739
|
+
* stationary registry). Default false: the timeline lists passages,
|
|
24740
|
+
* not parking records (operator decision, 2026-08-15). */
|
|
24741
|
+
includeStationary: external_exports.boolean().optional()
|
|
24319
24742
|
}), external_exports.array(TrackSchema).readonly()),
|
|
24320
24743
|
/**
|
|
24321
24744
|
* Batched cluster-wide track listing — ONE call for the events page /
|
|
@@ -24806,7 +25229,8 @@ var pipelineAnalyticsCapability = {
|
|
|
24806
25229
|
}),
|
|
24807
25230
|
getEventMedia: method(external_exports.object({
|
|
24808
25231
|
eventId: external_exports.string(),
|
|
24809
|
-
kind: MediaFileKindEnum.optional()
|
|
25232
|
+
kind: MediaFileKindEnum.optional(),
|
|
25233
|
+
deviceId: external_exports.number()
|
|
24810
25234
|
}), external_exports.array(MediaFileSchema).readonly()),
|
|
24811
25235
|
/** All media rows owned by a track. `kinds` narrows to a kind subset so a
|
|
24812
25236
|
* client can fetch the SMALL display variants on open and pull the
|
|
@@ -24814,7 +25238,8 @@ var pipelineAnalyticsCapability = {
|
|
|
24814
25238
|
* Absent ⇒ every kind (back-compat). */
|
|
24815
25239
|
getTrackMedia: method(external_exports.object({
|
|
24816
25240
|
trackId: external_exports.string(),
|
|
24817
|
-
kinds: external_exports.array(MediaFileKindEnum).optional()
|
|
25241
|
+
kinds: external_exports.array(MediaFileKindEnum).optional(),
|
|
25242
|
+
deviceId: external_exports.number()
|
|
24818
25243
|
}), external_exports.array(MediaFileSchema).readonly()),
|
|
24819
25244
|
/**
|
|
24820
25245
|
* What media a track HAS, without any of it.
|
|
@@ -24831,7 +25256,10 @@ var pipelineAnalyticsCapability = {
|
|
|
24831
25256
|
* tell a full-resolution variant existed — and the affordance that opens it
|
|
24832
25257
|
* would silently disappear.
|
|
24833
25258
|
*/
|
|
24834
|
-
listTrackMedia: method(external_exports.object({
|
|
25259
|
+
listTrackMedia: method(external_exports.object({
|
|
25260
|
+
trackId: external_exports.string(),
|
|
25261
|
+
deviceId: external_exports.number()
|
|
25262
|
+
}), external_exports.array(MediaFileInfoSchema).readonly()),
|
|
24835
25263
|
/**
|
|
24836
25264
|
* Search object events by text query using CLIP cosine similarity.
|
|
24837
25265
|
* Encodes `text` via the `embedding-encoder` cap, queries the
|
|
@@ -25608,6 +26036,12 @@ var maxSessionHoldMsField = {
|
|
|
25608
26036
|
default: 12e4,
|
|
25609
26037
|
step: 5e3
|
|
25610
26038
|
};
|
|
26039
|
+
var audioMotionWindowMsField = {
|
|
26040
|
+
min: 5e3,
|
|
26041
|
+
max: 6e5,
|
|
26042
|
+
default: 9e4,
|
|
26043
|
+
step: 5e3
|
|
26044
|
+
};
|
|
25611
26045
|
var motionFpsField = {
|
|
25612
26046
|
min: 1,
|
|
25613
26047
|
max: 30,
|
|
@@ -25623,7 +26057,7 @@ var detectionFpsField = {
|
|
|
25623
26057
|
var occupancyRecheckSecField = {
|
|
25624
26058
|
min: 0,
|
|
25625
26059
|
max: 300,
|
|
25626
|
-
default:
|
|
26060
|
+
default: 300,
|
|
25627
26061
|
step: 5
|
|
25628
26062
|
};
|
|
25629
26063
|
var occupancyRecheckFramesField = {
|
|
@@ -25701,6 +26135,27 @@ var RunnerCameraConfigSchema = external_exports.object({
|
|
|
25701
26135
|
* resolved `CameraDetectionConfig`.
|
|
25702
26136
|
*/
|
|
25703
26137
|
maxSessionHoldMs: external_exports.number().min(maxSessionHoldMsField.min).max(maxSessionHoldMsField.max).optional(),
|
|
26138
|
+
/**
|
|
26139
|
+
* Orchestrator-side quiet period (ms) that closes an `audioMode:
|
|
26140
|
+
* 'on-motion'` audio window, measured from the LAST motion event.
|
|
26141
|
+
*
|
|
26142
|
+
* This exists because the falling edge cannot be relied on. Camera-native
|
|
26143
|
+
* providers emit motion as a RISING EDGE ONLY (Reolink's Baichuan push and
|
|
26144
|
+
* its email-push SMTP path both emit `detected: true` and never the
|
|
26145
|
+
* counterpart); only the frame-diff analyzer emits falls. So on an
|
|
26146
|
+
* onboard-only camera a window that closed only on `detected: false` never
|
|
26147
|
+
* closed at all, and `on-motion` silently behaved as `always-on` — on a
|
|
26148
|
+
* battery camera, the one failure mode the mode exists to prevent.
|
|
26149
|
+
*
|
|
26150
|
+
* Every motion event rearms this timer WITHOUT restarting the stream, so a
|
|
26151
|
+
* burst of re-fires costs nothing. A falling edge, when one does arrive,
|
|
26152
|
+
* still closes earlier via `motionCooldownMs` — whichever comes first wins.
|
|
26153
|
+
*
|
|
26154
|
+
* Not consumed by the runner: carried here so it shares the per-camera
|
|
26155
|
+
* device-settings surface with `motionCooldownMs`, exactly like
|
|
26156
|
+
* `maxSessionHoldMs`.
|
|
26157
|
+
*/
|
|
26158
|
+
audioMotionWindowMs: external_exports.number().min(audioMotionWindowMsField.min).max(audioMotionWindowMsField.max).optional(),
|
|
25704
26159
|
motionFps: external_exports.number().min(motionFpsField.min).max(motionFpsField.max).default(motionFpsField.default),
|
|
25705
26160
|
detectionFps: external_exports.number().min(detectionFpsField.min).max(detectionFpsField.max).default(detectionFpsField.default),
|
|
25706
26161
|
motionStreamId: external_exports.string(),
|
|
@@ -25870,6 +26325,25 @@ var RunnerCameraDeviceUIFields = [
|
|
|
25870
26325
|
nullable: true,
|
|
25871
26326
|
nullLabel: "Default"
|
|
25872
26327
|
},
|
|
26328
|
+
{
|
|
26329
|
+
key: "audioMotionWindowMs",
|
|
26330
|
+
type: "slider",
|
|
26331
|
+
label: "Audio window after motion",
|
|
26332
|
+
description: "How long audio keeps being analysed after the last motion event. Each new motion event extends the window without restarting the audio stream.",
|
|
26333
|
+
min: audioMotionWindowMsField.min,
|
|
26334
|
+
max: audioMotionWindowMsField.max,
|
|
26335
|
+
step: audioMotionWindowMsField.step,
|
|
26336
|
+
default: audioMotionWindowMsField.default,
|
|
26337
|
+
showValue: true,
|
|
26338
|
+
unit: "s",
|
|
26339
|
+
displayScale: 1e3,
|
|
26340
|
+
nullable: true,
|
|
26341
|
+
nullLabel: "Default",
|
|
26342
|
+
showWhen: {
|
|
26343
|
+
field: "audioMode",
|
|
26344
|
+
equals: "on-motion"
|
|
26345
|
+
}
|
|
26346
|
+
},
|
|
25873
26347
|
{
|
|
25874
26348
|
key: "onboardMotionDrivesAnalyzer",
|
|
25875
26349
|
type: "boolean",
|
|
@@ -27255,6 +27729,39 @@ var snapshotCapability = {
|
|
|
27255
27729
|
etag: external_exports.string().nullable()
|
|
27256
27730
|
}))),
|
|
27257
27731
|
/**
|
|
27732
|
+
* The full decision chain for ONE device, for the viewer's debug readout —
|
|
27733
|
+
* the answer to "why does this tile show what it shows" in a single poll:
|
|
27734
|
+
* the battery slice the state was derived from, the resolved state + its
|
|
27735
|
+
* reason, the cached frame's identity/age, whether a wake window is open,
|
|
27736
|
+
* and whether a fresh capture is in flight. Cache-only and capture-free:
|
|
27737
|
+
* a debug read must never wake a battery camera.
|
|
27738
|
+
*/
|
|
27739
|
+
getDebugState: systemMethod(external_exports.object({ deviceId: external_exports.number() }), external_exports.object({
|
|
27740
|
+
/** The battery slice as read, or null when the device has none. */
|
|
27741
|
+
battery: external_exports.object({
|
|
27742
|
+
sleeping: external_exports.boolean(),
|
|
27743
|
+
lastUpdated: external_exports.number(),
|
|
27744
|
+
lastContactAt: external_exports.number().optional()
|
|
27745
|
+
}).nullable(),
|
|
27746
|
+
/** The resolved snapshot state (what the overlay decision used). */
|
|
27747
|
+
state: external_exports.object({
|
|
27748
|
+
isBattery: external_exports.boolean(),
|
|
27749
|
+
reason: external_exports.enum([
|
|
27750
|
+
"disabled",
|
|
27751
|
+
"sleeping",
|
|
27752
|
+
"unreachable",
|
|
27753
|
+
"waking"
|
|
27754
|
+
]).nullable()
|
|
27755
|
+
}),
|
|
27756
|
+
/** The cached frame behind the next paint. */
|
|
27757
|
+
frame: external_exports.object({
|
|
27758
|
+
capturedAt: external_exports.number().nullable(),
|
|
27759
|
+
ageMs: external_exports.number().nullable()
|
|
27760
|
+
}),
|
|
27761
|
+
/** A wake window is currently open (the Waking overlay's source). */
|
|
27762
|
+
waking: external_exports.boolean()
|
|
27763
|
+
})),
|
|
27764
|
+
/**
|
|
27258
27765
|
* Signed, expiring links to a CLIENT-SIZED frame — and the demand signal
|
|
27259
27766
|
* that makes those frames current.
|
|
27260
27767
|
*
|
|
@@ -27328,7 +27835,16 @@ var snapshotCapability = {
|
|
|
27328
27835
|
/** A sleeping battery camera: the frame is deliberately stale and will
|
|
27329
27836
|
* NOT refresh in the background. A surface should say so rather than
|
|
27330
27837
|
* present it as current. */
|
|
27331
|
-
sleeping: external_exports.boolean()
|
|
27838
|
+
sleeping: external_exports.boolean(),
|
|
27839
|
+
/** Current device state rendered over the cached frame. State images
|
|
27840
|
+
* remain authoritative even when their photographic background is
|
|
27841
|
+
* old; null means the link must carry a current camera frame. */
|
|
27842
|
+
stateReason: external_exports.enum([
|
|
27843
|
+
"disabled",
|
|
27844
|
+
"sleeping",
|
|
27845
|
+
"unreachable",
|
|
27846
|
+
"waking"
|
|
27847
|
+
]).nullable()
|
|
27332
27848
|
})))
|
|
27333
27849
|
},
|
|
27334
27850
|
status: {
|
|
@@ -29152,6 +29668,25 @@ var BatteryStatusSchema = external_exports.object({
|
|
|
29152
29668
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
29153
29669
|
lastUpdated: external_exports.number(),
|
|
29154
29670
|
/**
|
|
29671
|
+
* Ms epoch of the last time the device PROVED it was reachable — a
|
|
29672
|
+
* completed firmware round-trip, an observed wake, or an inbound push
|
|
29673
|
+
* (firmware event, email). `0`/absent = never since this slice was born.
|
|
29674
|
+
*
|
|
29675
|
+
* This is the ONLY input that separates "asleep" from "gone", and it is
|
|
29676
|
+
* fed exclusively by PASSIVE signals: nothing may write it by reaching
|
|
29677
|
+
* for the radio, because a poll that confirms reachability is the same
|
|
29678
|
+
* poll that drains the battery. See {@link deriveBatteryPresence} — the
|
|
29679
|
+
* single derivation every consumer must use; no surface computes its own.
|
|
29680
|
+
*
|
|
29681
|
+
* It is deliberately NOT a clock in the
|
|
29682
|
+
* `scripts/check-runtime-state-durability.ts` sense: it is the
|
|
29683
|
+
* observation itself, and it is the only thing a 30-hour silence is
|
|
29684
|
+
* visible in. Writers quantise it (see `CONTACT_WRITE_QUANTUM_MS` in the
|
|
29685
|
+
* Reolink provider) so a value that means "recently" cannot cost a
|
|
29686
|
+
* SQLite commit per round-trip.
|
|
29687
|
+
*/
|
|
29688
|
+
lastContactAt: external_exports.number().optional(),
|
|
29689
|
+
/**
|
|
29155
29690
|
* True when the source is a BINARY low-battery indicator (HA
|
|
29156
29691
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
29157
29692
|
* charge level — `percentage` is then a coarse stand-in (100 = normal,
|
|
@@ -31142,7 +31677,41 @@ var intercomCapability = {
|
|
|
31142
31677
|
status: {
|
|
31143
31678
|
schema: IntercomStatusSchema,
|
|
31144
31679
|
kind: "command-driven"
|
|
31145
|
-
}
|
|
31680
|
+
},
|
|
31681
|
+
/**
|
|
31682
|
+
* Runtime-state slice — mirrored by the kernel.
|
|
31683
|
+
*
|
|
31684
|
+
* The cap declared `status` and nothing else, so the only two sources an
|
|
31685
|
+
* exporter has for a value — the `device.state-changed` slice event and the
|
|
31686
|
+
* `deviceState.getAllSnapshots` snapshot, both built from runtime state —
|
|
31687
|
+
* carried nothing for `intercom`. A talk-back entity in Home Assistant would
|
|
31688
|
+
* have been published and never received a value, which is the defect the
|
|
31689
|
+
* export's two classification tables exist to prevent (177 of them, once), so
|
|
31690
|
+
* `intercom` was excluded rather than exported.
|
|
31691
|
+
*
|
|
31692
|
+
* The shape is the status shape: there is exactly one truth about talk-back
|
|
31693
|
+
* and duplicating it into a second schema is how two halves of one capability
|
|
31694
|
+
* come to disagree. Providers write it through
|
|
31695
|
+
* `this.runtimeState.setCapState('intercom', …)` at the four points that open
|
|
31696
|
+
* and close a session, and seed it at registration so the slice exists before
|
|
31697
|
+
* the first session rather than after it.
|
|
31698
|
+
*
|
|
31699
|
+
* **Bound, named rather than hidden:** `talking` mirrors the provider's own
|
|
31700
|
+
* session handle, so a session torn down by a transport death that never
|
|
31701
|
+
* reaches `stopSession` / `endTalkSession` leaves it latched until the next
|
|
31702
|
+
* session or the next restart. That is why the slice is `session` and not
|
|
31703
|
+
* `restored` — a restart must never restore "talking".
|
|
31704
|
+
*/
|
|
31705
|
+
runtimeState: IntercomStatusSchema,
|
|
31706
|
+
/**
|
|
31707
|
+
* Runtime-state durability: **session** — `talking` describes a live audio
|
|
31708
|
+
* session, which by definition does not survive the process that held it.
|
|
31709
|
+
* Restoring it would publish a camera as talking to nobody.
|
|
31710
|
+
*
|
|
31711
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
31712
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
31713
|
+
*/
|
|
31714
|
+
durability: "session"
|
|
31146
31715
|
};
|
|
31147
31716
|
var LawnMowerActivitySchema = external_exports.enum([
|
|
31148
31717
|
"idle",
|
|
@@ -33796,7 +34365,7 @@ var recordingCapability = {
|
|
|
33796
34365
|
toMs: external_exports.number()
|
|
33797
34366
|
}), RecordingAvailabilitySchema, {
|
|
33798
34367
|
kind: "query",
|
|
33799
|
-
auth: "
|
|
34368
|
+
auth: "protected"
|
|
33800
34369
|
}),
|
|
33801
34370
|
/** Which calendar days in [fromMs,toMs) have ≥1 recorded segment, bucketed by
|
|
33802
34371
|
* the client's local day (`tzOffsetMinutes` = minutes to add to UTC). Drives
|
|
@@ -33808,7 +34377,7 @@ var recordingCapability = {
|
|
|
33808
34377
|
tzOffsetMinutes: external_exports.number()
|
|
33809
34378
|
}), RecordingDaysSchema, {
|
|
33810
34379
|
kind: "query",
|
|
33811
|
-
auth: "
|
|
34380
|
+
auth: "protected"
|
|
33812
34381
|
}),
|
|
33813
34382
|
getPlaybackManifest: method(external_exports.object({
|
|
33814
34383
|
deviceId: external_exports.number(),
|
|
@@ -33816,7 +34385,7 @@ var recordingCapability = {
|
|
|
33816
34385
|
toMs: external_exports.number()
|
|
33817
34386
|
}), RecordingManifestSchema, {
|
|
33818
34387
|
kind: "query",
|
|
33819
|
-
auth: "
|
|
34388
|
+
auth: "protected"
|
|
33820
34389
|
}),
|
|
33821
34390
|
getStorageUsage: method(external_exports.object({}), RecordingStorageUsageSchema, {
|
|
33822
34391
|
kind: "query",
|
|
@@ -34161,12 +34730,32 @@ var recordingExportCapability = {
|
|
|
34161
34730
|
}
|
|
34162
34731
|
};
|
|
34163
34732
|
var SceneConditionSchema = external_exports.string();
|
|
34733
|
+
var SceneUncoveredPolicySchema = external_exports.enum(["skip", "judge-anyway"]);
|
|
34734
|
+
var SceneVerdictSchema = external_exports.enum([
|
|
34735
|
+
"matched",
|
|
34736
|
+
"diverged",
|
|
34737
|
+
"unknown"
|
|
34738
|
+
]);
|
|
34739
|
+
var SceneUnavailableSchema = external_exports.enum([
|
|
34740
|
+
"no-reference-for-condition",
|
|
34741
|
+
"view-shifted",
|
|
34742
|
+
"no-vision-profile",
|
|
34743
|
+
"encoder-model-changed",
|
|
34744
|
+
"no-snapshot"
|
|
34745
|
+
]);
|
|
34164
34746
|
var SceneReferenceSchema = external_exports.object({
|
|
34165
34747
|
embedding: external_exports.array(external_exports.number()),
|
|
34166
34748
|
modelId: external_exports.string(),
|
|
34167
34749
|
condition: SceneConditionSchema,
|
|
34168
34750
|
capturedAt: external_exports.number(),
|
|
34169
|
-
thumbnailMediaId: external_exports.string().optional()
|
|
34751
|
+
thumbnailMediaId: external_exports.string().optional(),
|
|
34752
|
+
/** Whole-frame (downscaled) embedding captured alongside the ROI crop. The
|
|
34753
|
+
* anti-view-shift anchor: a bumped camera, a PTZ preset or a re-aim makes the
|
|
34754
|
+
* normalized rect frame a different piece of world, and the scene would
|
|
34755
|
+
* diverge forever with a perfectly plausible cosine. Checked LAZILY, only
|
|
34756
|
+
* when hysteresis is about to flip — one extra encode per candidate
|
|
34757
|
+
* transition, not per poll. */
|
|
34758
|
+
anchorEmbedding: external_exports.array(external_exports.number()).optional()
|
|
34170
34759
|
});
|
|
34171
34760
|
var SceneMonitorStateSchema = external_exports.object({
|
|
34172
34761
|
id: external_exports.string(),
|
|
@@ -34186,6 +34775,18 @@ var SceneCheckSchema = external_exports.discriminatedUnion("mode", [external_exp
|
|
|
34186
34775
|
profileId: external_exports.string().optional(),
|
|
34187
34776
|
hysteresisCount: external_exports.number().int().positive()
|
|
34188
34777
|
})]);
|
|
34778
|
+
var SCENE_DEFAULT_ANCHOR_THRESHOLD = 0.85;
|
|
34779
|
+
var SCENE_DEFAULT_UNCOVERED_POLICY = "skip";
|
|
34780
|
+
var SCENE_CONFIRM_DEFAULT_TIMEOUT_MS = 8e3;
|
|
34781
|
+
var SceneConfirmSchema = external_exports.object({
|
|
34782
|
+
enabled: external_exports.boolean().default(false),
|
|
34783
|
+
prompt: external_exports.string().min(1).max(1e3),
|
|
34784
|
+
profileId: external_exports.string().optional(),
|
|
34785
|
+
timeoutMs: external_exports.number().int().min(1e3).max(2e4).default(SCENE_CONFIRM_DEFAULT_TIMEOUT_MS),
|
|
34786
|
+
maxImagePx: external_exports.number().int().min(64).max(2048).default(448),
|
|
34787
|
+
/** What a timeout / unavailable model means for the PENDING flip. */
|
|
34788
|
+
onTimeout: external_exports.enum(["flip", "hold"]).default("hold")
|
|
34789
|
+
});
|
|
34189
34790
|
var SceneMonitorSchema = external_exports.object({
|
|
34190
34791
|
id: external_exports.string(),
|
|
34191
34792
|
label: external_exports.string(),
|
|
@@ -34204,7 +34805,56 @@ var SceneMonitorSchema = external_exports.object({
|
|
|
34204
34805
|
lastConfidence: external_exports.number().nullable(),
|
|
34205
34806
|
currentCondition: SceneConditionSchema.nullable(),
|
|
34206
34807
|
availability: external_exports.enum(["ok", "unavailable"]),
|
|
34207
|
-
unavailableReason: external_exports.string().nullable()
|
|
34808
|
+
unavailableReason: external_exports.string().nullable(),
|
|
34809
|
+
/** Which state is "the initial screen". `null` until the first capture. */
|
|
34810
|
+
baselineStateId: external_exports.string().nullable(),
|
|
34811
|
+
/** Which boolean drives notification rules and any export. */
|
|
34812
|
+
emit: external_exports.enum(["latched", "live"]).default("latched"),
|
|
34813
|
+
/** Live: does the region match the baseline RIGHT NOW. */
|
|
34814
|
+
verdict: SceneVerdictSchema,
|
|
34815
|
+
/** Has it been `diverged` at least once since `armedAt` — the operator's boolean. */
|
|
34816
|
+
latched: external_exports.boolean(),
|
|
34817
|
+
/** Last reset (or creation). */
|
|
34818
|
+
armedAt: external_exports.number(),
|
|
34819
|
+
divergedAt: external_exports.number().nullable(),
|
|
34820
|
+
restoredAt: external_exports.number().nullable(),
|
|
34821
|
+
/** A check is only COUNTED when the device has been quiet this long. Motion
|
|
34822
|
+
* during the window DISCARDS the observation — a car pulling up in front of
|
|
34823
|
+
* the bin must not be able to spend hysteresis credit. */
|
|
34824
|
+
quietSeconds: external_exports.number().int().min(0).max(3600).default(60),
|
|
34825
|
+
/** An observation only advances the pending count when it is at least this
|
|
34826
|
+
* far from the previously counted one, so N agreeing checks span real time
|
|
34827
|
+
* rather than N adjacent polls inside one occlusion. */
|
|
34828
|
+
minObservationSpacingSec: external_exports.number().int().min(0).max(3600).default(120),
|
|
34829
|
+
/** Vision-model adjudication of a candidate flip. Similarity primary only. */
|
|
34830
|
+
confirm: SceneConfirmSchema.optional(),
|
|
34831
|
+
/** Whole-frame anchor cosine below which a flip is REFUSED as `view-shifted`. */
|
|
34832
|
+
anchorThreshold: external_exports.number().min(0).max(1).default(SCENE_DEFAULT_ANCHOR_THRESHOLD),
|
|
34833
|
+
/** Clear the latch on its own when the scene matches again? Default false —
|
|
34834
|
+
* `restoredAt` and the `scene-restored` edge are recorded regardless, so an
|
|
34835
|
+
* automation can react to the bin coming back without the operator's own
|
|
34836
|
+
* alarm silently clearing itself. */
|
|
34837
|
+
autoRestore: external_exports.boolean().default(false),
|
|
34838
|
+
/** What to do when the current light has no reference of its own. See
|
|
34839
|
+
* {@link SceneUncoveredPolicySchema} — the default makes night OPTIONAL. */
|
|
34840
|
+
onUncoveredCondition: SceneUncoveredPolicySchema.default(SCENE_DEFAULT_UNCOVERED_POLICY),
|
|
34841
|
+
/**
|
|
34842
|
+
* The light whose checks are currently being SAT OUT under
|
|
34843
|
+
* `onUncoveredCondition: 'skip'` — `null` when the scene is checking normally.
|
|
34844
|
+
*
|
|
34845
|
+
* Engine-reported and advisory only: it moves no verdict, no latch and no
|
|
34846
|
+
* hysteresis. It exists so the card can say *"night (IR) — checks paused,
|
|
34847
|
+
* nothing captured in this light"* in the same calm voice as the coverage
|
|
34848
|
+
* line, because the alternative is a scene that silently stops answering
|
|
34849
|
+
* after sunset with nothing anywhere saying why. A skipped check must never
|
|
34850
|
+
* read as a broken one.
|
|
34851
|
+
*/
|
|
34852
|
+
suspendedCondition: SceneConditionSchema.nullable().default(null),
|
|
34853
|
+
/** Named cause when `verdict === 'unknown'`. */
|
|
34854
|
+
unavailable: SceneUnavailableSchema.nullable(),
|
|
34855
|
+
/** Conditions that have at least one comparable reference — the coverage line
|
|
34856
|
+
* ("day ✓ · ir ✓ · dusk ✗") that turns a silent fallback into a visible fact. */
|
|
34857
|
+
coveredConditions: external_exports.array(SceneConditionSchema)
|
|
34208
34858
|
});
|
|
34209
34859
|
var SceneMonitorStatusSchema = external_exports.object({
|
|
34210
34860
|
monitors: external_exports.array(SceneMonitorSchema),
|
|
@@ -34217,12 +34867,6 @@ var sceneMonitorCapability = {
|
|
|
34217
34867
|
kind: "wrapper",
|
|
34218
34868
|
defaultActive: true,
|
|
34219
34869
|
deviceTypes: [DeviceType.Camera],
|
|
34220
|
-
deviceConfig: { ui: {
|
|
34221
|
-
kind: "widget",
|
|
34222
|
-
widgetId: "host/scene-monitor-editor",
|
|
34223
|
-
tab: "scenes",
|
|
34224
|
-
label: "Scenes"
|
|
34225
|
-
} },
|
|
34226
34870
|
methods: {
|
|
34227
34871
|
listScenes: method(external_exports.object({ deviceId: external_exports.number() }), SceneMonitorStatusSchema),
|
|
34228
34872
|
createScene: method(external_exports.object({
|
|
@@ -34253,7 +34897,15 @@ var sceneMonitorCapability = {
|
|
|
34253
34897
|
"both"
|
|
34254
34898
|
]).optional(),
|
|
34255
34899
|
checkIntervalSec: external_exports.number().optional(),
|
|
34256
|
-
check: SceneCheckSchema.optional()
|
|
34900
|
+
check: SceneCheckSchema.optional(),
|
|
34901
|
+
emit: external_exports.enum(["latched", "live"]).optional(),
|
|
34902
|
+
quietSeconds: external_exports.number().int().min(0).max(3600).optional(),
|
|
34903
|
+
minObservationSpacingSec: external_exports.number().int().min(0).max(3600).optional(),
|
|
34904
|
+
anchorThreshold: external_exports.number().min(0).max(1).optional(),
|
|
34905
|
+
autoRestore: external_exports.boolean().optional(),
|
|
34906
|
+
onUncoveredCondition: SceneUncoveredPolicySchema.optional(),
|
|
34907
|
+
/** `null` clears the vision-model adjudicator. */
|
|
34908
|
+
confirm: SceneConfirmSchema.nullable().optional()
|
|
34257
34909
|
})
|
|
34258
34910
|
}), external_exports.void(), {
|
|
34259
34911
|
kind: "mutation",
|
|
@@ -34294,6 +34946,26 @@ var sceneMonitorCapability = {
|
|
|
34294
34946
|
}), external_exports.void(), {
|
|
34295
34947
|
kind: "mutation",
|
|
34296
34948
|
auth: "admin"
|
|
34949
|
+
}),
|
|
34950
|
+
/**
|
|
34951
|
+
* Clear the latch, re-arm, and — by default — RE-CAPTURE the baseline for
|
|
34952
|
+
* the CURRENT condition. The bin never goes back in exactly the same spot;
|
|
34953
|
+
* "reset" in the operator's head means *this is the new normal*, and
|
|
34954
|
+
* re-capture is what makes the feature self-healing against slow drift
|
|
34955
|
+
* instead of failing silently weeks later.
|
|
34956
|
+
*
|
|
34957
|
+
* Reachable from three surfaces on this one mutation: the scene card, a
|
|
34958
|
+
* notification button (an `onTrigger` sequence with a `kind:'cap'` step —
|
|
34959
|
+
* no new Notification-Center code at all), and tRPC for scripts.
|
|
34960
|
+
*/
|
|
34961
|
+
resetScene: method(external_exports.object({
|
|
34962
|
+
deviceId: external_exports.number(),
|
|
34963
|
+
monitorId: external_exports.string(),
|
|
34964
|
+
/** Defaults to TRUE at the provider seam — see `SCENE_RESET_RECAPTURES`. */
|
|
34965
|
+
recapture: external_exports.boolean().optional()
|
|
34966
|
+
}), external_exports.void(), {
|
|
34967
|
+
kind: "mutation",
|
|
34968
|
+
auth: "admin"
|
|
34297
34969
|
})
|
|
34298
34970
|
},
|
|
34299
34971
|
status: {
|
|
@@ -34461,13 +35133,40 @@ var CamStreamDescriptorSchema = external_exports.object({
|
|
|
34461
35133
|
/** Transport-specific opaque metadata (e.g. rfc4571 SDP). */
|
|
34462
35134
|
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
34463
35135
|
});
|
|
35136
|
+
var StreamCatalogStateSchema = external_exports.object({
|
|
35137
|
+
/** The descriptors as last built from a real camera response. Never a guess:
|
|
35138
|
+
* a failed or refused build writes NOTHING, so a restored catalog is always
|
|
35139
|
+
* one the camera itself once produced. */
|
|
35140
|
+
descriptors: external_exports.array(CamStreamDescriptorSchema),
|
|
35141
|
+
/** Ms epoch of the build that produced {@link descriptors}. Lets the wake
|
|
35142
|
+
* path decide whether the camera's own awake window is worth spending on a
|
|
35143
|
+
* re-read. */
|
|
35144
|
+
lastFetchedAt: external_exports.number()
|
|
35145
|
+
});
|
|
34464
35146
|
var streamCatalogCapability = {
|
|
34465
35147
|
name: "stream-catalog",
|
|
34466
35148
|
scope: "device",
|
|
34467
35149
|
deviceNative: true,
|
|
34468
35150
|
mode: "singleton",
|
|
34469
35151
|
deviceTypes: [DeviceType.Camera],
|
|
34470
|
-
methods: { getCatalog: method(external_exports.object({ deviceId: external_exports.number().int().nonnegative() }), external_exports.array(CamStreamDescriptorSchema).readonly()) }
|
|
35152
|
+
methods: { getCatalog: method(external_exports.object({ deviceId: external_exports.number().int().nonnegative() }), external_exports.array(CamStreamDescriptorSchema).readonly()) },
|
|
35153
|
+
runtimeState: StreamCatalogStateSchema,
|
|
35154
|
+
/**
|
|
35155
|
+
* Runtime-state durability: **restored** — see the schema doc. A cold
|
|
35156
|
+
* catalog on a sleeping battery camera is not a slow first frame, it is a
|
|
35157
|
+
* camera that cannot be watched at all until it happens to wake.
|
|
35158
|
+
*
|
|
35159
|
+
* Churn is nil by construction: the slice is written only by a SUCCESSFUL
|
|
35160
|
+
* build, and a build only runs when there is no cached copy (or the copy is
|
|
35161
|
+
* a day old and the camera is awake anyway).
|
|
35162
|
+
*
|
|
35163
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
35164
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
35165
|
+
*/
|
|
35166
|
+
durability: "restored",
|
|
35167
|
+
/** Clock field: written, but excluded from the compare that decides whether
|
|
35168
|
+
* persisting is worth a SQLite commit — the descriptors are the value. */
|
|
35169
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
34471
35170
|
};
|
|
34472
35171
|
var StreamProfileSchema = external_exports.enum([
|
|
34473
35172
|
"main",
|
|
@@ -34686,6 +35385,30 @@ var NetworkAddressSchema = external_exports.object({
|
|
|
34686
35385
|
family: external_exports.string(),
|
|
34687
35386
|
internal: external_exports.boolean()
|
|
34688
35387
|
});
|
|
35388
|
+
var SiteLocationSourceSchema = external_exports.enum(["operator-set", "derived-from-ip"]);
|
|
35389
|
+
var SiteLocationSchema = external_exports.object({
|
|
35390
|
+
/** WGS84 decimal degrees. */
|
|
35391
|
+
latitude: external_exports.number().min(-90).max(90),
|
|
35392
|
+
longitude: external_exports.number().min(-180).max(180),
|
|
35393
|
+
source: SiteLocationSourceSchema,
|
|
35394
|
+
/** Epoch ms the value was last written. */
|
|
35395
|
+
updatedAt: external_exports.number(),
|
|
35396
|
+
/**
|
|
35397
|
+
* Human-readable place the geo-IP service reported ("Napoli, IT"). Display
|
|
35398
|
+
* only — never parsed, never matched on. Absent for an operator-typed value.
|
|
35399
|
+
*/
|
|
35400
|
+
label: external_exports.string().optional()
|
|
35401
|
+
});
|
|
35402
|
+
var SiteLocationStatusSchema = external_exports.object({
|
|
35403
|
+
location: SiteLocationSchema.nullable(),
|
|
35404
|
+
derivationAttemptedAt: external_exports.number().nullable(),
|
|
35405
|
+
/** Why the last derivation failed, for the UI to show instead of a shrug. */
|
|
35406
|
+
derivationError: external_exports.string().nullable()
|
|
35407
|
+
});
|
|
35408
|
+
var SetSiteLocationInputSchema = external_exports.object({
|
|
35409
|
+
latitude: external_exports.number().min(-90).max(90),
|
|
35410
|
+
longitude: external_exports.number().min(-180).max(180)
|
|
35411
|
+
}).nullable();
|
|
34689
35412
|
var systemCapability = {
|
|
34690
35413
|
name: "system",
|
|
34691
35414
|
scope: "system",
|
|
@@ -34703,6 +35426,32 @@ var systemCapability = {
|
|
|
34703
35426
|
forceRetentionCleanup: method(external_exports.void(), external_exports.void(), {
|
|
34704
35427
|
kind: "mutation",
|
|
34705
35428
|
auth: "admin"
|
|
35429
|
+
}),
|
|
35430
|
+
/**
|
|
35431
|
+
* The site coordinates, deriving a default from the hub's public IP on the
|
|
35432
|
+
* FIRST read that finds nothing stored.
|
|
35433
|
+
*
|
|
35434
|
+
* The derivation is one-shot and bounded: one outbound request, a few
|
|
35435
|
+
* seconds, its outcome persisted either way. A hub with no internet pays it
|
|
35436
|
+
* once and never again, and neither boot nor any consumer is blocked on it —
|
|
35437
|
+
* the caller gets `location: null` and degrades exactly as it did before this
|
|
35438
|
+
* method existed.
|
|
35439
|
+
*/
|
|
35440
|
+
getSiteLocation: method(external_exports.void(), SiteLocationStatusSchema),
|
|
35441
|
+
/** Operator input. Always lands as `source: 'operator-set'`. */
|
|
35442
|
+
setSiteLocation: method(SetSiteLocationInputSchema, SiteLocationStatusSchema, {
|
|
35443
|
+
kind: "mutation",
|
|
35444
|
+
auth: "admin"
|
|
35445
|
+
}),
|
|
35446
|
+
/**
|
|
35447
|
+
* Re-run the geo-IP derivation now. The ONLY way a spent or failed
|
|
35448
|
+
* derivation is retried — there is no timer, and no read path retries.
|
|
35449
|
+
* Overwrites an existing `derived-from-ip` value; refuses to clobber an
|
|
35450
|
+
* `operator-set` one.
|
|
35451
|
+
*/
|
|
35452
|
+
detectSiteLocation: method(external_exports.void(), SiteLocationStatusSchema, {
|
|
35453
|
+
kind: "mutation",
|
|
35454
|
+
auth: "admin"
|
|
34706
35455
|
})
|
|
34707
35456
|
},
|
|
34708
35457
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
@@ -35632,6 +36381,7 @@ var BATTERY_DEVICE_PROFILE = {
|
|
|
35632
36381
|
},
|
|
35633
36382
|
settings: {}
|
|
35634
36383
|
};
|
|
36384
|
+
var BATTERY_UNREACHABLE_AFTER_MS = 360 * 6e4;
|
|
35635
36385
|
var METHOD_ACCESS_MAP = Object.freeze({
|
|
35636
36386
|
"accessories.setChildHidden": {
|
|
35637
36387
|
capName: "accessories",
|
|
@@ -37691,6 +38441,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
37691
38441
|
addonId: null,
|
|
37692
38442
|
access: "create"
|
|
37693
38443
|
},
|
|
38444
|
+
"llm.cancel": {
|
|
38445
|
+
capName: "llm",
|
|
38446
|
+
capScope: "system",
|
|
38447
|
+
addonId: null,
|
|
38448
|
+
access: "create"
|
|
38449
|
+
},
|
|
37694
38450
|
"llm.deleteModel": {
|
|
37695
38451
|
capName: "llm",
|
|
37696
38452
|
capScope: "system",
|
|
@@ -37775,6 +38531,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
37775
38531
|
addonId: null,
|
|
37776
38532
|
access: "view"
|
|
37777
38533
|
},
|
|
38534
|
+
"llm.resolveModelRef": {
|
|
38535
|
+
capName: "llm",
|
|
38536
|
+
capScope: "system",
|
|
38537
|
+
addonId: null,
|
|
38538
|
+
access: "create"
|
|
38539
|
+
},
|
|
37778
38540
|
"llm.setDefault": {
|
|
37779
38541
|
capName: "llm",
|
|
37780
38542
|
capScope: "system",
|
|
@@ -39941,6 +40703,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
39941
40703
|
addonId: null,
|
|
39942
40704
|
access: "create"
|
|
39943
40705
|
},
|
|
40706
|
+
"sceneMonitor.resetScene": {
|
|
40707
|
+
capName: "scene-monitor",
|
|
40708
|
+
capScope: "device",
|
|
40709
|
+
addonId: null,
|
|
40710
|
+
access: "delete"
|
|
40711
|
+
},
|
|
39944
40712
|
"sceneMonitor.updateScene": {
|
|
39945
40713
|
capName: "scene-monitor",
|
|
39946
40714
|
capScope: "device",
|
|
@@ -40079,6 +40847,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
40079
40847
|
addonId: null,
|
|
40080
40848
|
access: "view"
|
|
40081
40849
|
},
|
|
40850
|
+
"snapshot.getDebugState": {
|
|
40851
|
+
capName: "snapshot",
|
|
40852
|
+
capScope: "device",
|
|
40853
|
+
addonId: null,
|
|
40854
|
+
access: "view"
|
|
40855
|
+
},
|
|
40082
40856
|
"snapshot.getSnapshot": {
|
|
40083
40857
|
capName: "snapshot",
|
|
40084
40858
|
capScope: "device",
|
|
@@ -40619,6 +41393,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
40619
41393
|
addonId: null,
|
|
40620
41394
|
access: "create"
|
|
40621
41395
|
},
|
|
41396
|
+
"system.detectSiteLocation": {
|
|
41397
|
+
capName: "system",
|
|
41398
|
+
capScope: "system",
|
|
41399
|
+
addonId: null,
|
|
41400
|
+
access: "create"
|
|
41401
|
+
},
|
|
40622
41402
|
"system.featureFlags": {
|
|
40623
41403
|
capName: "system",
|
|
40624
41404
|
capScope: "system",
|
|
@@ -40637,6 +41417,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
40637
41417
|
addonId: null,
|
|
40638
41418
|
access: "view"
|
|
40639
41419
|
},
|
|
41420
|
+
"system.getSiteLocation": {
|
|
41421
|
+
capName: "system",
|
|
41422
|
+
capScope: "system",
|
|
41423
|
+
addonId: null,
|
|
41424
|
+
access: "view"
|
|
41425
|
+
},
|
|
40640
41426
|
"system.health": {
|
|
40641
41427
|
capName: "system",
|
|
40642
41428
|
capScope: "system",
|
|
@@ -40661,6 +41447,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
40661
41447
|
addonId: null,
|
|
40662
41448
|
access: "create"
|
|
40663
41449
|
},
|
|
41450
|
+
"system.setSiteLocation": {
|
|
41451
|
+
capName: "system",
|
|
41452
|
+
capScope: "system",
|
|
41453
|
+
addonId: null,
|
|
41454
|
+
access: "create"
|
|
41455
|
+
},
|
|
40664
41456
|
"terminalSession.adoptLegacyMonitor": {
|
|
40665
41457
|
capName: "terminal-session",
|
|
40666
41458
|
capScope: "system",
|
|
@@ -41232,6 +42024,1709 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
41232
42024
|
access: "create"
|
|
41233
42025
|
}
|
|
41234
42026
|
});
|
|
42027
|
+
var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
42028
|
+
"accessories.setChildHidden": [{
|
|
42029
|
+
name: "childDeviceId",
|
|
42030
|
+
form: "single",
|
|
42031
|
+
optional: false
|
|
42032
|
+
}, {
|
|
42033
|
+
name: "deviceId",
|
|
42034
|
+
form: "single",
|
|
42035
|
+
optional: false
|
|
42036
|
+
}],
|
|
42037
|
+
"addonSettings.getDeviceSettings": [{
|
|
42038
|
+
name: "deviceId",
|
|
42039
|
+
form: "single",
|
|
42040
|
+
optional: false
|
|
42041
|
+
}],
|
|
42042
|
+
"addonSettings.updateDeviceSettings": [{
|
|
42043
|
+
name: "deviceId",
|
|
42044
|
+
form: "single",
|
|
42045
|
+
optional: false
|
|
42046
|
+
}],
|
|
42047
|
+
"alarmPanel.arm": [{
|
|
42048
|
+
name: "deviceId",
|
|
42049
|
+
form: "single",
|
|
42050
|
+
optional: false
|
|
42051
|
+
}],
|
|
42052
|
+
"alarmPanel.disarm": [{
|
|
42053
|
+
name: "deviceId",
|
|
42054
|
+
form: "single",
|
|
42055
|
+
optional: false
|
|
42056
|
+
}],
|
|
42057
|
+
"alarmPanel.trigger": [{
|
|
42058
|
+
name: "deviceId",
|
|
42059
|
+
form: "single",
|
|
42060
|
+
optional: false
|
|
42061
|
+
}],
|
|
42062
|
+
"audioAnalysis.resolveDeviceSettings": [{
|
|
42063
|
+
name: "deviceId",
|
|
42064
|
+
form: "single",
|
|
42065
|
+
optional: false
|
|
42066
|
+
}],
|
|
42067
|
+
"audioAnalyzer.classify": [{
|
|
42068
|
+
name: "deviceId",
|
|
42069
|
+
form: "single",
|
|
42070
|
+
optional: true
|
|
42071
|
+
}],
|
|
42072
|
+
"audioMetrics.getCurrentSnapshot": [{
|
|
42073
|
+
name: "deviceId",
|
|
42074
|
+
form: "single",
|
|
42075
|
+
optional: false
|
|
42076
|
+
}],
|
|
42077
|
+
"audioMetrics.getHistory": [{
|
|
42078
|
+
name: "deviceId",
|
|
42079
|
+
form: "single",
|
|
42080
|
+
optional: false
|
|
42081
|
+
}],
|
|
42082
|
+
"automationControl.disable": [{
|
|
42083
|
+
name: "deviceId",
|
|
42084
|
+
form: "single",
|
|
42085
|
+
optional: false
|
|
42086
|
+
}],
|
|
42087
|
+
"automationControl.enable": [{
|
|
42088
|
+
name: "deviceId",
|
|
42089
|
+
form: "single",
|
|
42090
|
+
optional: false
|
|
42091
|
+
}],
|
|
42092
|
+
"automationControl.trigger": [{
|
|
42093
|
+
name: "deviceId",
|
|
42094
|
+
form: "single",
|
|
42095
|
+
optional: false
|
|
42096
|
+
}],
|
|
42097
|
+
"battery.wakeForStream": [{
|
|
42098
|
+
name: "deviceId",
|
|
42099
|
+
form: "single",
|
|
42100
|
+
optional: false
|
|
42101
|
+
}],
|
|
42102
|
+
"brightness.setBrightness": [{
|
|
42103
|
+
name: "deviceId",
|
|
42104
|
+
form: "single",
|
|
42105
|
+
optional: false
|
|
42106
|
+
}],
|
|
42107
|
+
"button.press": [{
|
|
42108
|
+
name: "deviceId",
|
|
42109
|
+
form: "single",
|
|
42110
|
+
optional: false
|
|
42111
|
+
}],
|
|
42112
|
+
"cameraCredentials.getCredentials": [{
|
|
42113
|
+
name: "deviceId",
|
|
42114
|
+
form: "single",
|
|
42115
|
+
optional: false
|
|
42116
|
+
}],
|
|
42117
|
+
"cameraStreams.getBrokerStreams": [{
|
|
42118
|
+
name: "deviceId",
|
|
42119
|
+
form: "single",
|
|
42120
|
+
optional: false
|
|
42121
|
+
}],
|
|
42122
|
+
"cameraStreams.getCameraStreams": [{
|
|
42123
|
+
name: "deviceId",
|
|
42124
|
+
form: "single",
|
|
42125
|
+
optional: false
|
|
42126
|
+
}],
|
|
42127
|
+
"cameraStreams.getProfileRtspEntries": [{
|
|
42128
|
+
name: "deviceId",
|
|
42129
|
+
form: "single",
|
|
42130
|
+
optional: false
|
|
42131
|
+
}],
|
|
42132
|
+
"cameraStreams.getRtspEntries": [{
|
|
42133
|
+
name: "deviceId",
|
|
42134
|
+
form: "single",
|
|
42135
|
+
optional: false
|
|
42136
|
+
}],
|
|
42137
|
+
"cameraStreams.pickStream": [{
|
|
42138
|
+
name: "deviceId",
|
|
42139
|
+
form: "single",
|
|
42140
|
+
optional: false
|
|
42141
|
+
}],
|
|
42142
|
+
"climateControl.setFanMode": [{
|
|
42143
|
+
name: "deviceId",
|
|
42144
|
+
form: "single",
|
|
42145
|
+
optional: false
|
|
42146
|
+
}],
|
|
42147
|
+
"climateControl.setMode": [{
|
|
42148
|
+
name: "deviceId",
|
|
42149
|
+
form: "single",
|
|
42150
|
+
optional: false
|
|
42151
|
+
}],
|
|
42152
|
+
"climateControl.setPreset": [{
|
|
42153
|
+
name: "deviceId",
|
|
42154
|
+
form: "single",
|
|
42155
|
+
optional: false
|
|
42156
|
+
}],
|
|
42157
|
+
"climateControl.setSwingHorizontal": [{
|
|
42158
|
+
name: "deviceId",
|
|
42159
|
+
form: "single",
|
|
42160
|
+
optional: false
|
|
42161
|
+
}],
|
|
42162
|
+
"climateControl.setSwingVertical": [{
|
|
42163
|
+
name: "deviceId",
|
|
42164
|
+
form: "single",
|
|
42165
|
+
optional: false
|
|
42166
|
+
}],
|
|
42167
|
+
"climateControl.setTarget": [{
|
|
42168
|
+
name: "deviceId",
|
|
42169
|
+
form: "single",
|
|
42170
|
+
optional: false
|
|
42171
|
+
}],
|
|
42172
|
+
"climateControl.setTargetHumidity": [{
|
|
42173
|
+
name: "deviceId",
|
|
42174
|
+
form: "single",
|
|
42175
|
+
optional: false
|
|
42176
|
+
}],
|
|
42177
|
+
"climateControl.setTargetRange": [{
|
|
42178
|
+
name: "deviceId",
|
|
42179
|
+
form: "single",
|
|
42180
|
+
optional: false
|
|
42181
|
+
}],
|
|
42182
|
+
"color.setColor": [{
|
|
42183
|
+
name: "deviceId",
|
|
42184
|
+
form: "single",
|
|
42185
|
+
optional: false
|
|
42186
|
+
}],
|
|
42187
|
+
"consumables.reset": [{
|
|
42188
|
+
name: "deviceId",
|
|
42189
|
+
form: "single",
|
|
42190
|
+
optional: false
|
|
42191
|
+
}],
|
|
42192
|
+
"control.setValue": [{
|
|
42193
|
+
name: "deviceId",
|
|
42194
|
+
form: "single",
|
|
42195
|
+
optional: false
|
|
42196
|
+
}],
|
|
42197
|
+
"cover.close": [{
|
|
42198
|
+
name: "deviceId",
|
|
42199
|
+
form: "single",
|
|
42200
|
+
optional: false
|
|
42201
|
+
}],
|
|
42202
|
+
"cover.open": [{
|
|
42203
|
+
name: "deviceId",
|
|
42204
|
+
form: "single",
|
|
42205
|
+
optional: false
|
|
42206
|
+
}],
|
|
42207
|
+
"cover.setPosition": [{
|
|
42208
|
+
name: "deviceId",
|
|
42209
|
+
form: "single",
|
|
42210
|
+
optional: false
|
|
42211
|
+
}],
|
|
42212
|
+
"cover.setTiltPosition": [{
|
|
42213
|
+
name: "deviceId",
|
|
42214
|
+
form: "single",
|
|
42215
|
+
optional: false
|
|
42216
|
+
}],
|
|
42217
|
+
"cover.stop": [{
|
|
42218
|
+
name: "deviceId",
|
|
42219
|
+
form: "single",
|
|
42220
|
+
optional: false
|
|
42221
|
+
}],
|
|
42222
|
+
"dayNight.getOptions": [{
|
|
42223
|
+
name: "deviceId",
|
|
42224
|
+
form: "single",
|
|
42225
|
+
optional: false
|
|
42226
|
+
}],
|
|
42227
|
+
"dayNight.setSettings": [{
|
|
42228
|
+
name: "deviceId",
|
|
42229
|
+
form: "single",
|
|
42230
|
+
optional: false
|
|
42231
|
+
}],
|
|
42232
|
+
"decoder.createSession": [{
|
|
42233
|
+
name: "deviceId",
|
|
42234
|
+
form: "single",
|
|
42235
|
+
optional: true
|
|
42236
|
+
}],
|
|
42237
|
+
"deviceAdoption.release": [{
|
|
42238
|
+
name: "camDeviceId",
|
|
42239
|
+
form: "single",
|
|
42240
|
+
optional: false
|
|
42241
|
+
}],
|
|
42242
|
+
"deviceAdoption.resync": [{
|
|
42243
|
+
name: "camDeviceId",
|
|
42244
|
+
form: "single",
|
|
42245
|
+
optional: false
|
|
42246
|
+
}],
|
|
42247
|
+
"deviceDiscovery.adoptDevice": [{
|
|
42248
|
+
name: "deviceId",
|
|
42249
|
+
form: "single",
|
|
42250
|
+
optional: false
|
|
42251
|
+
}],
|
|
42252
|
+
"deviceDiscovery.listDiscovered": [{
|
|
42253
|
+
name: "deviceId",
|
|
42254
|
+
form: "single",
|
|
42255
|
+
optional: false
|
|
42256
|
+
}],
|
|
42257
|
+
"deviceDiscovery.refreshDiscovery": [{
|
|
42258
|
+
name: "deviceId",
|
|
42259
|
+
form: "single",
|
|
42260
|
+
optional: false
|
|
42261
|
+
}],
|
|
42262
|
+
"deviceDiscovery.releaseDevice": [{
|
|
42263
|
+
name: "childDeviceId",
|
|
42264
|
+
form: "single",
|
|
42265
|
+
optional: false
|
|
42266
|
+
}, {
|
|
42267
|
+
name: "deviceId",
|
|
42268
|
+
form: "single",
|
|
42269
|
+
optional: false
|
|
42270
|
+
}],
|
|
42271
|
+
"deviceManager.adoptionRelease": [{
|
|
42272
|
+
name: "camDeviceId",
|
|
42273
|
+
form: "single",
|
|
42274
|
+
optional: false
|
|
42275
|
+
}],
|
|
42276
|
+
"deviceManager.adoptionResync": [{
|
|
42277
|
+
name: "camDeviceId",
|
|
42278
|
+
form: "single",
|
|
42279
|
+
optional: false
|
|
42280
|
+
}],
|
|
42281
|
+
"deviceManager.applyInitialMeta": [{
|
|
42282
|
+
name: "deviceId",
|
|
42283
|
+
form: "single",
|
|
42284
|
+
optional: false
|
|
42285
|
+
}, {
|
|
42286
|
+
name: "linkDeviceId",
|
|
42287
|
+
form: "single",
|
|
42288
|
+
optional: true
|
|
42289
|
+
}],
|
|
42290
|
+
"deviceManager.disable": [{
|
|
42291
|
+
name: "deviceId",
|
|
42292
|
+
form: "single",
|
|
42293
|
+
optional: false
|
|
42294
|
+
}],
|
|
42295
|
+
"deviceManager.enable": [{
|
|
42296
|
+
name: "deviceId",
|
|
42297
|
+
form: "single",
|
|
42298
|
+
optional: false
|
|
42299
|
+
}],
|
|
42300
|
+
"deviceManager.getBindings": [{
|
|
42301
|
+
name: "deviceId",
|
|
42302
|
+
form: "single",
|
|
42303
|
+
optional: false
|
|
42304
|
+
}],
|
|
42305
|
+
"deviceManager.getChildren": [{
|
|
42306
|
+
name: "parentDeviceId",
|
|
42307
|
+
form: "single",
|
|
42308
|
+
optional: false
|
|
42309
|
+
}],
|
|
42310
|
+
"deviceManager.getConfigSchema": [{
|
|
42311
|
+
name: "deviceId",
|
|
42312
|
+
form: "single",
|
|
42313
|
+
optional: false
|
|
42314
|
+
}],
|
|
42315
|
+
"deviceManager.getDevice": [{
|
|
42316
|
+
name: "deviceId",
|
|
42317
|
+
form: "single",
|
|
42318
|
+
optional: false
|
|
42319
|
+
}],
|
|
42320
|
+
"deviceManager.getDeviceAggregate": [{
|
|
42321
|
+
name: "deviceId",
|
|
42322
|
+
form: "single",
|
|
42323
|
+
optional: false
|
|
42324
|
+
}],
|
|
42325
|
+
"deviceManager.getDeviceLiveInfoAggregate": [{
|
|
42326
|
+
name: "deviceId",
|
|
42327
|
+
form: "single",
|
|
42328
|
+
optional: false
|
|
42329
|
+
}],
|
|
42330
|
+
"deviceManager.getDeviceSettingsAggregate": [{
|
|
42331
|
+
name: "deviceId",
|
|
42332
|
+
form: "single",
|
|
42333
|
+
optional: false
|
|
42334
|
+
}],
|
|
42335
|
+
"deviceManager.getDeviceStatusAggregate": [{
|
|
42336
|
+
name: "deviceId",
|
|
42337
|
+
form: "single",
|
|
42338
|
+
optional: false
|
|
42339
|
+
}],
|
|
42340
|
+
"deviceManager.getDeviceStatusAggregateBatch": [{
|
|
42341
|
+
name: "deviceIds",
|
|
42342
|
+
form: "array",
|
|
42343
|
+
optional: false
|
|
42344
|
+
}],
|
|
42345
|
+
"deviceManager.getLinkedDevices": [{
|
|
42346
|
+
name: "deviceId",
|
|
42347
|
+
form: "single",
|
|
42348
|
+
optional: false
|
|
42349
|
+
}],
|
|
42350
|
+
"deviceManager.getSettingsSchema": [{
|
|
42351
|
+
name: "deviceId",
|
|
42352
|
+
form: "single",
|
|
42353
|
+
optional: false
|
|
42354
|
+
}],
|
|
42355
|
+
"deviceManager.getStreamProfileMap": [{
|
|
42356
|
+
name: "deviceId",
|
|
42357
|
+
form: "single",
|
|
42358
|
+
optional: false
|
|
42359
|
+
}],
|
|
42360
|
+
"deviceManager.getStreamSources": [{
|
|
42361
|
+
name: "deviceId",
|
|
42362
|
+
form: "single",
|
|
42363
|
+
optional: false
|
|
42364
|
+
}],
|
|
42365
|
+
"deviceManager.getWireableFields": [{
|
|
42366
|
+
name: "deviceId",
|
|
42367
|
+
form: "single",
|
|
42368
|
+
optional: false
|
|
42369
|
+
}],
|
|
42370
|
+
"deviceManager.loadConfig": [{
|
|
42371
|
+
name: "deviceId",
|
|
42372
|
+
form: "single",
|
|
42373
|
+
optional: false
|
|
42374
|
+
}],
|
|
42375
|
+
"deviceManager.loadMeta": [{
|
|
42376
|
+
name: "deviceId",
|
|
42377
|
+
form: "single",
|
|
42378
|
+
optional: false
|
|
42379
|
+
}],
|
|
42380
|
+
"deviceManager.loadRuntimeState": [{
|
|
42381
|
+
name: "deviceId",
|
|
42382
|
+
form: "single",
|
|
42383
|
+
optional: false
|
|
42384
|
+
}],
|
|
42385
|
+
"deviceManager.persistConfig": [{
|
|
42386
|
+
name: "deviceId",
|
|
42387
|
+
form: "single",
|
|
42388
|
+
optional: false
|
|
42389
|
+
}],
|
|
42390
|
+
"deviceManager.probeStreams": [{
|
|
42391
|
+
name: "deviceId",
|
|
42392
|
+
form: "single",
|
|
42393
|
+
optional: false
|
|
42394
|
+
}],
|
|
42395
|
+
"deviceManager.registerDevice": [{
|
|
42396
|
+
name: "parentDeviceId",
|
|
42397
|
+
form: "single",
|
|
42398
|
+
optional: true
|
|
42399
|
+
}],
|
|
42400
|
+
"deviceManager.remove": [{
|
|
42401
|
+
name: "deviceId",
|
|
42402
|
+
form: "single",
|
|
42403
|
+
optional: false
|
|
42404
|
+
}],
|
|
42405
|
+
"deviceManager.removeDevice": [{
|
|
42406
|
+
name: "deviceId",
|
|
42407
|
+
form: "single",
|
|
42408
|
+
optional: false
|
|
42409
|
+
}],
|
|
42410
|
+
"deviceManager.runDeviceAction": [{
|
|
42411
|
+
name: "deviceId",
|
|
42412
|
+
form: "single",
|
|
42413
|
+
optional: false
|
|
42414
|
+
}],
|
|
42415
|
+
"deviceManager.setChildLayout": [{
|
|
42416
|
+
name: "deviceId",
|
|
42417
|
+
form: "single",
|
|
42418
|
+
optional: false
|
|
42419
|
+
}],
|
|
42420
|
+
"deviceManager.setDisabled": [{
|
|
42421
|
+
name: "deviceId",
|
|
42422
|
+
form: "single",
|
|
42423
|
+
optional: false
|
|
42424
|
+
}],
|
|
42425
|
+
"deviceManager.setDisplay": [{
|
|
42426
|
+
name: "deviceId",
|
|
42427
|
+
form: "single",
|
|
42428
|
+
optional: false
|
|
42429
|
+
}],
|
|
42430
|
+
"deviceManager.setIntegrationId": [{
|
|
42431
|
+
name: "deviceId",
|
|
42432
|
+
form: "single",
|
|
42433
|
+
optional: false
|
|
42434
|
+
}],
|
|
42435
|
+
"deviceManager.setLinkDeviceId": [{
|
|
42436
|
+
name: "deviceId",
|
|
42437
|
+
form: "single",
|
|
42438
|
+
optional: false
|
|
42439
|
+
}, {
|
|
42440
|
+
name: "linkDeviceId",
|
|
42441
|
+
form: "single",
|
|
42442
|
+
optional: true
|
|
42443
|
+
}],
|
|
42444
|
+
"deviceManager.setLocation": [{
|
|
42445
|
+
name: "deviceId",
|
|
42446
|
+
form: "single",
|
|
42447
|
+
optional: false
|
|
42448
|
+
}],
|
|
42449
|
+
"deviceManager.setMetadata": [{
|
|
42450
|
+
name: "deviceId",
|
|
42451
|
+
form: "single",
|
|
42452
|
+
optional: false
|
|
42453
|
+
}],
|
|
42454
|
+
"deviceManager.setName": [{
|
|
42455
|
+
name: "deviceId",
|
|
42456
|
+
form: "single",
|
|
42457
|
+
optional: false
|
|
42458
|
+
}],
|
|
42459
|
+
"deviceManager.setPrimaryChildEntityId": [{
|
|
42460
|
+
name: "deviceId",
|
|
42461
|
+
form: "single",
|
|
42462
|
+
optional: false
|
|
42463
|
+
}],
|
|
42464
|
+
"deviceManager.setRole": [{
|
|
42465
|
+
name: "deviceId",
|
|
42466
|
+
form: "single",
|
|
42467
|
+
optional: false
|
|
42468
|
+
}],
|
|
42469
|
+
"deviceManager.setStreamProfileMap": [{
|
|
42470
|
+
name: "deviceId",
|
|
42471
|
+
form: "single",
|
|
42472
|
+
optional: false
|
|
42473
|
+
}],
|
|
42474
|
+
"deviceManager.setType": [{
|
|
42475
|
+
name: "deviceId",
|
|
42476
|
+
form: "single",
|
|
42477
|
+
optional: false
|
|
42478
|
+
}],
|
|
42479
|
+
"deviceManager.setWrapperActive": [{
|
|
42480
|
+
name: "deviceId",
|
|
42481
|
+
form: "single",
|
|
42482
|
+
optional: false
|
|
42483
|
+
}],
|
|
42484
|
+
"deviceManager.testField": [{
|
|
42485
|
+
name: "deviceId",
|
|
42486
|
+
form: "single",
|
|
42487
|
+
optional: false
|
|
42488
|
+
}],
|
|
42489
|
+
"deviceManager.updateConfig": [{
|
|
42490
|
+
name: "deviceId",
|
|
42491
|
+
form: "single",
|
|
42492
|
+
optional: false
|
|
42493
|
+
}],
|
|
42494
|
+
"deviceManager.updateDeviceField": [{
|
|
42495
|
+
name: "deviceId",
|
|
42496
|
+
form: "single",
|
|
42497
|
+
optional: false
|
|
42498
|
+
}],
|
|
42499
|
+
"deviceManager.updateDeviceFieldsBatch": [{
|
|
42500
|
+
name: "deviceId",
|
|
42501
|
+
form: "single",
|
|
42502
|
+
optional: false
|
|
42503
|
+
}],
|
|
42504
|
+
"deviceOps.getConfigEntries": [{
|
|
42505
|
+
name: "deviceId",
|
|
42506
|
+
form: "single",
|
|
42507
|
+
optional: false
|
|
42508
|
+
}],
|
|
42509
|
+
"deviceOps.getRawState": [{
|
|
42510
|
+
name: "deviceId",
|
|
42511
|
+
form: "single",
|
|
42512
|
+
optional: false
|
|
42513
|
+
}],
|
|
42514
|
+
"deviceOps.getSettingsSchema": [{
|
|
42515
|
+
name: "deviceId",
|
|
42516
|
+
form: "single",
|
|
42517
|
+
optional: false
|
|
42518
|
+
}],
|
|
42519
|
+
"deviceOps.getStreamSources": [{
|
|
42520
|
+
name: "deviceId",
|
|
42521
|
+
form: "single",
|
|
42522
|
+
optional: false
|
|
42523
|
+
}],
|
|
42524
|
+
"deviceOps.removeDevice": [{
|
|
42525
|
+
name: "deviceId",
|
|
42526
|
+
form: "single",
|
|
42527
|
+
optional: false
|
|
42528
|
+
}],
|
|
42529
|
+
"deviceOps.runAction": [{
|
|
42530
|
+
name: "deviceId",
|
|
42531
|
+
form: "single",
|
|
42532
|
+
optional: false
|
|
42533
|
+
}],
|
|
42534
|
+
"deviceOps.setConfig": [{
|
|
42535
|
+
name: "deviceId",
|
|
42536
|
+
form: "single",
|
|
42537
|
+
optional: false
|
|
42538
|
+
}],
|
|
42539
|
+
"deviceState.getCapSlice": [{
|
|
42540
|
+
name: "deviceId",
|
|
42541
|
+
form: "single",
|
|
42542
|
+
optional: false
|
|
42543
|
+
}],
|
|
42544
|
+
"deviceState.getSnapshot": [{
|
|
42545
|
+
name: "deviceId",
|
|
42546
|
+
form: "single",
|
|
42547
|
+
optional: false
|
|
42548
|
+
}],
|
|
42549
|
+
"deviceState.setCapSlice": [{
|
|
42550
|
+
name: "deviceId",
|
|
42551
|
+
form: "single",
|
|
42552
|
+
optional: false
|
|
42553
|
+
}],
|
|
42554
|
+
"events.getEventClipUrl": [{
|
|
42555
|
+
name: "deviceId",
|
|
42556
|
+
form: "single",
|
|
42557
|
+
optional: false
|
|
42558
|
+
}],
|
|
42559
|
+
"events.getEvents": [{
|
|
42560
|
+
name: "deviceId",
|
|
42561
|
+
form: "single",
|
|
42562
|
+
optional: false
|
|
42563
|
+
}],
|
|
42564
|
+
"events.getEventThumbnail": [{
|
|
42565
|
+
name: "deviceId",
|
|
42566
|
+
form: "single",
|
|
42567
|
+
optional: false
|
|
42568
|
+
}],
|
|
42569
|
+
"faceGallery.getFaceByTrack": [{
|
|
42570
|
+
name: "deviceId",
|
|
42571
|
+
form: "single",
|
|
42572
|
+
optional: false
|
|
42573
|
+
}],
|
|
42574
|
+
"faceGallery.listRecentFaces": [{
|
|
42575
|
+
name: "deviceId",
|
|
42576
|
+
form: "single",
|
|
42577
|
+
optional: true
|
|
42578
|
+
}],
|
|
42579
|
+
"fanControl.setDirection": [{
|
|
42580
|
+
name: "deviceId",
|
|
42581
|
+
form: "single",
|
|
42582
|
+
optional: false
|
|
42583
|
+
}],
|
|
42584
|
+
"fanControl.setOscillating": [{
|
|
42585
|
+
name: "deviceId",
|
|
42586
|
+
form: "single",
|
|
42587
|
+
optional: false
|
|
42588
|
+
}],
|
|
42589
|
+
"fanControl.setPercentage": [{
|
|
42590
|
+
name: "deviceId",
|
|
42591
|
+
form: "single",
|
|
42592
|
+
optional: false
|
|
42593
|
+
}],
|
|
42594
|
+
"fanControl.setPreset": [{
|
|
42595
|
+
name: "deviceId",
|
|
42596
|
+
form: "single",
|
|
42597
|
+
optional: false
|
|
42598
|
+
}],
|
|
42599
|
+
"humidifier.setMode": [{
|
|
42600
|
+
name: "deviceId",
|
|
42601
|
+
form: "single",
|
|
42602
|
+
optional: false
|
|
42603
|
+
}],
|
|
42604
|
+
"humidifier.setOn": [{
|
|
42605
|
+
name: "deviceId",
|
|
42606
|
+
form: "single",
|
|
42607
|
+
optional: false
|
|
42608
|
+
}],
|
|
42609
|
+
"humidifier.setTargetHumidity": [{
|
|
42610
|
+
name: "deviceId",
|
|
42611
|
+
form: "single",
|
|
42612
|
+
optional: false
|
|
42613
|
+
}],
|
|
42614
|
+
"imageSettings.getOptions": [{
|
|
42615
|
+
name: "deviceId",
|
|
42616
|
+
form: "single",
|
|
42617
|
+
optional: false
|
|
42618
|
+
}],
|
|
42619
|
+
"imageSettings.setSettings": [{
|
|
42620
|
+
name: "deviceId",
|
|
42621
|
+
form: "single",
|
|
42622
|
+
optional: false
|
|
42623
|
+
}],
|
|
42624
|
+
"intercom.endTalkSession": [{
|
|
42625
|
+
name: "deviceId",
|
|
42626
|
+
form: "single",
|
|
42627
|
+
optional: false
|
|
42628
|
+
}],
|
|
42629
|
+
"intercom.handleAnswer": [{
|
|
42630
|
+
name: "deviceId",
|
|
42631
|
+
form: "single",
|
|
42632
|
+
optional: false
|
|
42633
|
+
}],
|
|
42634
|
+
"intercom.pushTalkAudio": [{
|
|
42635
|
+
name: "deviceId",
|
|
42636
|
+
form: "single",
|
|
42637
|
+
optional: false
|
|
42638
|
+
}],
|
|
42639
|
+
"intercom.startSession": [{
|
|
42640
|
+
name: "deviceId",
|
|
42641
|
+
form: "single",
|
|
42642
|
+
optional: false
|
|
42643
|
+
}],
|
|
42644
|
+
"intercom.startTalkSession": [{
|
|
42645
|
+
name: "deviceId",
|
|
42646
|
+
form: "single",
|
|
42647
|
+
optional: false
|
|
42648
|
+
}],
|
|
42649
|
+
"intercom.stopSession": [{
|
|
42650
|
+
name: "deviceId",
|
|
42651
|
+
form: "single",
|
|
42652
|
+
optional: false
|
|
42653
|
+
}],
|
|
42654
|
+
"lawnMowerControl.dock": [{
|
|
42655
|
+
name: "deviceId",
|
|
42656
|
+
form: "single",
|
|
42657
|
+
optional: false
|
|
42658
|
+
}],
|
|
42659
|
+
"lawnMowerControl.pause": [{
|
|
42660
|
+
name: "deviceId",
|
|
42661
|
+
form: "single",
|
|
42662
|
+
optional: false
|
|
42663
|
+
}],
|
|
42664
|
+
"lawnMowerControl.startMowing": [{
|
|
42665
|
+
name: "deviceId",
|
|
42666
|
+
form: "single",
|
|
42667
|
+
optional: false
|
|
42668
|
+
}],
|
|
42669
|
+
"lockControl.lock": [{
|
|
42670
|
+
name: "deviceId",
|
|
42671
|
+
form: "single",
|
|
42672
|
+
optional: false
|
|
42673
|
+
}],
|
|
42674
|
+
"lockControl.open": [{
|
|
42675
|
+
name: "deviceId",
|
|
42676
|
+
form: "single",
|
|
42677
|
+
optional: false
|
|
42678
|
+
}],
|
|
42679
|
+
"lockControl.unlock": [{
|
|
42680
|
+
name: "deviceId",
|
|
42681
|
+
form: "single",
|
|
42682
|
+
optional: false
|
|
42683
|
+
}],
|
|
42684
|
+
"mediaPlayer.next": [{
|
|
42685
|
+
name: "deviceId",
|
|
42686
|
+
form: "single",
|
|
42687
|
+
optional: false
|
|
42688
|
+
}],
|
|
42689
|
+
"mediaPlayer.pause": [{
|
|
42690
|
+
name: "deviceId",
|
|
42691
|
+
form: "single",
|
|
42692
|
+
optional: false
|
|
42693
|
+
}],
|
|
42694
|
+
"mediaPlayer.play": [{
|
|
42695
|
+
name: "deviceId",
|
|
42696
|
+
form: "single",
|
|
42697
|
+
optional: false
|
|
42698
|
+
}],
|
|
42699
|
+
"mediaPlayer.playMedia": [{
|
|
42700
|
+
name: "deviceId",
|
|
42701
|
+
form: "single",
|
|
42702
|
+
optional: false
|
|
42703
|
+
}],
|
|
42704
|
+
"mediaPlayer.previous": [{
|
|
42705
|
+
name: "deviceId",
|
|
42706
|
+
form: "single",
|
|
42707
|
+
optional: false
|
|
42708
|
+
}],
|
|
42709
|
+
"mediaPlayer.seek": [{
|
|
42710
|
+
name: "deviceId",
|
|
42711
|
+
form: "single",
|
|
42712
|
+
optional: false
|
|
42713
|
+
}],
|
|
42714
|
+
"mediaPlayer.selectSource": [{
|
|
42715
|
+
name: "deviceId",
|
|
42716
|
+
form: "single",
|
|
42717
|
+
optional: false
|
|
42718
|
+
}],
|
|
42719
|
+
"mediaPlayer.setMute": [{
|
|
42720
|
+
name: "deviceId",
|
|
42721
|
+
form: "single",
|
|
42722
|
+
optional: false
|
|
42723
|
+
}],
|
|
42724
|
+
"mediaPlayer.setRepeat": [{
|
|
42725
|
+
name: "deviceId",
|
|
42726
|
+
form: "single",
|
|
42727
|
+
optional: false
|
|
42728
|
+
}],
|
|
42729
|
+
"mediaPlayer.setShuffle": [{
|
|
42730
|
+
name: "deviceId",
|
|
42731
|
+
form: "single",
|
|
42732
|
+
optional: false
|
|
42733
|
+
}],
|
|
42734
|
+
"mediaPlayer.setVolume": [{
|
|
42735
|
+
name: "deviceId",
|
|
42736
|
+
form: "single",
|
|
42737
|
+
optional: false
|
|
42738
|
+
}],
|
|
42739
|
+
"mediaPlayer.stop": [{
|
|
42740
|
+
name: "deviceId",
|
|
42741
|
+
form: "single",
|
|
42742
|
+
optional: false
|
|
42743
|
+
}],
|
|
42744
|
+
"motion.isDetected": [{
|
|
42745
|
+
name: "deviceId",
|
|
42746
|
+
form: "single",
|
|
42747
|
+
optional: false
|
|
42748
|
+
}],
|
|
42749
|
+
"motionDetection.analyze": [{
|
|
42750
|
+
name: "deviceId",
|
|
42751
|
+
form: "single",
|
|
42752
|
+
optional: false
|
|
42753
|
+
}],
|
|
42754
|
+
"motionDetection.removeCamera": [{
|
|
42755
|
+
name: "deviceId",
|
|
42756
|
+
form: "single",
|
|
42757
|
+
optional: false
|
|
42758
|
+
}],
|
|
42759
|
+
"motionTrigger.setMotionTrigger": [{
|
|
42760
|
+
name: "deviceId",
|
|
42761
|
+
form: "single",
|
|
42762
|
+
optional: false
|
|
42763
|
+
}],
|
|
42764
|
+
"motionZones.getOptions": [{
|
|
42765
|
+
name: "deviceId",
|
|
42766
|
+
form: "single",
|
|
42767
|
+
optional: false
|
|
42768
|
+
}],
|
|
42769
|
+
"motionZones.setZone": [{
|
|
42770
|
+
name: "deviceId",
|
|
42771
|
+
form: "single",
|
|
42772
|
+
optional: false
|
|
42773
|
+
}],
|
|
42774
|
+
"nativeObjectDetection.setEnabled": [{
|
|
42775
|
+
name: "deviceId",
|
|
42776
|
+
form: "single",
|
|
42777
|
+
optional: false
|
|
42778
|
+
}],
|
|
42779
|
+
"networkQuality.getDeviceStats": [{
|
|
42780
|
+
name: "deviceId",
|
|
42781
|
+
form: "single",
|
|
42782
|
+
optional: false
|
|
42783
|
+
}],
|
|
42784
|
+
"networkQuality.reportClientStats": [{
|
|
42785
|
+
name: "deviceId",
|
|
42786
|
+
form: "single",
|
|
42787
|
+
optional: false
|
|
42788
|
+
}],
|
|
42789
|
+
"notificationRules.setDeviceMuted": [{
|
|
42790
|
+
name: "deviceId",
|
|
42791
|
+
form: "single",
|
|
42792
|
+
optional: false
|
|
42793
|
+
}],
|
|
42794
|
+
"notifier.cancel": [{
|
|
42795
|
+
name: "deviceId",
|
|
42796
|
+
form: "single",
|
|
42797
|
+
optional: false
|
|
42798
|
+
}],
|
|
42799
|
+
"notifier.send": [{
|
|
42800
|
+
name: "deviceId",
|
|
42801
|
+
form: "single",
|
|
42802
|
+
optional: false
|
|
42803
|
+
}],
|
|
42804
|
+
"osd.setOverlay": [{
|
|
42805
|
+
name: "deviceId",
|
|
42806
|
+
form: "single",
|
|
42807
|
+
optional: false
|
|
42808
|
+
}],
|
|
42809
|
+
"osdManager.clearSlotBinding": [{
|
|
42810
|
+
name: "deviceId",
|
|
42811
|
+
form: "single",
|
|
42812
|
+
optional: false
|
|
42813
|
+
}],
|
|
42814
|
+
"osdManager.copyDeviceConfiguration": [{
|
|
42815
|
+
name: "sourceDeviceId",
|
|
42816
|
+
form: "single",
|
|
42817
|
+
optional: false
|
|
42818
|
+
}, {
|
|
42819
|
+
name: "targetDeviceId",
|
|
42820
|
+
form: "single",
|
|
42821
|
+
optional: false
|
|
42822
|
+
}],
|
|
42823
|
+
"osdManager.getDeviceOsd": [{
|
|
42824
|
+
name: "deviceId",
|
|
42825
|
+
form: "single",
|
|
42826
|
+
optional: false
|
|
42827
|
+
}],
|
|
42828
|
+
"osdManager.getSourceCatalog": [{
|
|
42829
|
+
name: "deviceId",
|
|
42830
|
+
form: "single",
|
|
42831
|
+
optional: false
|
|
42832
|
+
}],
|
|
42833
|
+
"osdManager.previewSlot": [{
|
|
42834
|
+
name: "deviceId",
|
|
42835
|
+
form: "single",
|
|
42836
|
+
optional: false
|
|
42837
|
+
}],
|
|
42838
|
+
"osdManager.renderDevice": [{
|
|
42839
|
+
name: "deviceId",
|
|
42840
|
+
form: "single",
|
|
42841
|
+
optional: false
|
|
42842
|
+
}],
|
|
42843
|
+
"osdManager.setSlotBinding": [{
|
|
42844
|
+
name: "deviceId",
|
|
42845
|
+
form: "single",
|
|
42846
|
+
optional: false
|
|
42847
|
+
}],
|
|
42848
|
+
"petFeeder.callPet": [{
|
|
42849
|
+
name: "deviceId",
|
|
42850
|
+
form: "single",
|
|
42851
|
+
optional: false
|
|
42852
|
+
}],
|
|
42853
|
+
"petFeeder.cancelFeed": [{
|
|
42854
|
+
name: "deviceId",
|
|
42855
|
+
form: "single",
|
|
42856
|
+
optional: false
|
|
42857
|
+
}],
|
|
42858
|
+
"petFeeder.feed": [{
|
|
42859
|
+
name: "deviceId",
|
|
42860
|
+
form: "single",
|
|
42861
|
+
optional: false
|
|
42862
|
+
}],
|
|
42863
|
+
"petFeeder.markFoodReplenished": [{
|
|
42864
|
+
name: "deviceId",
|
|
42865
|
+
form: "single",
|
|
42866
|
+
optional: false
|
|
42867
|
+
}],
|
|
42868
|
+
"petFeeder.playSound": [{
|
|
42869
|
+
name: "deviceId",
|
|
42870
|
+
form: "single",
|
|
42871
|
+
optional: false
|
|
42872
|
+
}],
|
|
42873
|
+
"petFeeder.resetDesiccant": [{
|
|
42874
|
+
name: "deviceId",
|
|
42875
|
+
form: "single",
|
|
42876
|
+
optional: false
|
|
42877
|
+
}],
|
|
42878
|
+
"petFeeder.setChildLock": [{
|
|
42879
|
+
name: "deviceId",
|
|
42880
|
+
form: "single",
|
|
42881
|
+
optional: false
|
|
42882
|
+
}],
|
|
42883
|
+
"petFeeder.setFeedSound": [{
|
|
42884
|
+
name: "deviceId",
|
|
42885
|
+
form: "single",
|
|
42886
|
+
optional: false
|
|
42887
|
+
}],
|
|
42888
|
+
"petFeeder.setIndicatorLight": [{
|
|
42889
|
+
name: "deviceId",
|
|
42890
|
+
form: "single",
|
|
42891
|
+
optional: false
|
|
42892
|
+
}],
|
|
42893
|
+
"petFeeder.setVolume": [{
|
|
42894
|
+
name: "deviceId",
|
|
42895
|
+
form: "single",
|
|
42896
|
+
optional: false
|
|
42897
|
+
}],
|
|
42898
|
+
"pipelineAnalytics.clearTracks": [{
|
|
42899
|
+
name: "deviceId",
|
|
42900
|
+
form: "single",
|
|
42901
|
+
optional: false
|
|
42902
|
+
}],
|
|
42903
|
+
"pipelineAnalytics.completeRetrainTrack": [{
|
|
42904
|
+
name: "deviceId",
|
|
42905
|
+
form: "single",
|
|
42906
|
+
optional: false
|
|
42907
|
+
}],
|
|
42908
|
+
"pipelineAnalytics.deleteDeviceEvents": [{
|
|
42909
|
+
name: "deviceId",
|
|
42910
|
+
form: "single",
|
|
42911
|
+
optional: false
|
|
42912
|
+
}],
|
|
42913
|
+
"pipelineAnalytics.deleteTracks": [{
|
|
42914
|
+
name: "deviceId",
|
|
42915
|
+
form: "single",
|
|
42916
|
+
optional: false
|
|
42917
|
+
}],
|
|
42918
|
+
"pipelineAnalytics.deselectRetrainFrame": [{
|
|
42919
|
+
name: "deviceId",
|
|
42920
|
+
form: "single",
|
|
42921
|
+
optional: false
|
|
42922
|
+
}],
|
|
42923
|
+
"pipelineAnalytics.getActiveTracks": [{
|
|
42924
|
+
name: "deviceId",
|
|
42925
|
+
form: "single",
|
|
42926
|
+
optional: false
|
|
42927
|
+
}],
|
|
42928
|
+
"pipelineAnalytics.getAudioEvents": [{
|
|
42929
|
+
name: "deviceId",
|
|
42930
|
+
form: "single",
|
|
42931
|
+
optional: false
|
|
42932
|
+
}],
|
|
42933
|
+
"pipelineAnalytics.getEventDensity": [{
|
|
42934
|
+
name: "deviceId",
|
|
42935
|
+
form: "single",
|
|
42936
|
+
optional: false
|
|
42937
|
+
}],
|
|
42938
|
+
"pipelineAnalytics.getEventMedia": [{
|
|
42939
|
+
name: "deviceId",
|
|
42940
|
+
form: "single",
|
|
42941
|
+
optional: false
|
|
42942
|
+
}],
|
|
42943
|
+
"pipelineAnalytics.getKeyEvents": [{
|
|
42944
|
+
name: "deviceId",
|
|
42945
|
+
form: "single",
|
|
42946
|
+
optional: false
|
|
42947
|
+
}],
|
|
42948
|
+
"pipelineAnalytics.getMotionEvents": [{
|
|
42949
|
+
name: "deviceId",
|
|
42950
|
+
form: "single",
|
|
42951
|
+
optional: false
|
|
42952
|
+
}],
|
|
42953
|
+
"pipelineAnalytics.getObjectEvents": [{
|
|
42954
|
+
name: "deviceId",
|
|
42955
|
+
form: "single",
|
|
42956
|
+
optional: false
|
|
42957
|
+
}],
|
|
42958
|
+
"pipelineAnalytics.getRetrainExportUrl": [{
|
|
42959
|
+
name: "deviceIds",
|
|
42960
|
+
form: "array",
|
|
42961
|
+
optional: true
|
|
42962
|
+
}],
|
|
42963
|
+
"pipelineAnalytics.getSensorEvents": [{
|
|
42964
|
+
name: "deviceId",
|
|
42965
|
+
form: "single",
|
|
42966
|
+
optional: false
|
|
42967
|
+
}],
|
|
42968
|
+
"pipelineAnalytics.getTrack": [{
|
|
42969
|
+
name: "deviceId",
|
|
42970
|
+
form: "single",
|
|
42971
|
+
optional: false
|
|
42972
|
+
}],
|
|
42973
|
+
"pipelineAnalytics.getTrackMedia": [{
|
|
42974
|
+
name: "deviceId",
|
|
42975
|
+
form: "single",
|
|
42976
|
+
optional: false
|
|
42977
|
+
}],
|
|
42978
|
+
"pipelineAnalytics.getTrainingExportSummary": [{
|
|
42979
|
+
name: "deviceIds",
|
|
42980
|
+
form: "array",
|
|
42981
|
+
optional: true
|
|
42982
|
+
}],
|
|
42983
|
+
"pipelineAnalytics.getTrainingExportUrl": [{
|
|
42984
|
+
name: "deviceIds",
|
|
42985
|
+
form: "array",
|
|
42986
|
+
optional: true
|
|
42987
|
+
}],
|
|
42988
|
+
"pipelineAnalytics.listEventKinds": [{
|
|
42989
|
+
name: "deviceId",
|
|
42990
|
+
form: "single",
|
|
42991
|
+
optional: false
|
|
42992
|
+
}],
|
|
42993
|
+
"pipelineAnalytics.listEventKindsBatch": [{
|
|
42994
|
+
name: "deviceIds",
|
|
42995
|
+
form: "array",
|
|
42996
|
+
optional: false
|
|
42997
|
+
}],
|
|
42998
|
+
"pipelineAnalytics.listOpsLog": [{
|
|
42999
|
+
name: "deviceId",
|
|
43000
|
+
form: "single",
|
|
43001
|
+
optional: true
|
|
43002
|
+
}],
|
|
43003
|
+
"pipelineAnalytics.listRecentTracks": [{
|
|
43004
|
+
name: "deviceIds",
|
|
43005
|
+
form: "array",
|
|
43006
|
+
optional: false
|
|
43007
|
+
}],
|
|
43008
|
+
"pipelineAnalytics.listRetrainStaging": [{
|
|
43009
|
+
name: "deviceIds",
|
|
43010
|
+
form: "array",
|
|
43011
|
+
optional: true
|
|
43012
|
+
}],
|
|
43013
|
+
"pipelineAnalytics.listTrackMedia": [{
|
|
43014
|
+
name: "deviceId",
|
|
43015
|
+
form: "single",
|
|
43016
|
+
optional: false
|
|
43017
|
+
}],
|
|
43018
|
+
"pipelineAnalytics.listTracks": [{
|
|
43019
|
+
name: "deviceId",
|
|
43020
|
+
form: "single",
|
|
43021
|
+
optional: false
|
|
43022
|
+
}],
|
|
43023
|
+
"pipelineAnalytics.proposeRetrainAnnotations": [{
|
|
43024
|
+
name: "deviceId",
|
|
43025
|
+
form: "single",
|
|
43026
|
+
optional: false
|
|
43027
|
+
}],
|
|
43028
|
+
"pipelineAnalytics.pruneEventsBefore": [{
|
|
43029
|
+
name: "deviceId",
|
|
43030
|
+
form: "single",
|
|
43031
|
+
optional: false
|
|
43032
|
+
}],
|
|
43033
|
+
"pipelineAnalytics.pruneTracksBefore": [{
|
|
43034
|
+
name: "deviceId",
|
|
43035
|
+
form: "single",
|
|
43036
|
+
optional: false
|
|
43037
|
+
}],
|
|
43038
|
+
"pipelineAnalytics.rebuildObjectEmbeddings": [{
|
|
43039
|
+
name: "deviceId",
|
|
43040
|
+
form: "single",
|
|
43041
|
+
optional: true
|
|
43042
|
+
}],
|
|
43043
|
+
"pipelineAnalytics.restageRetrainTrack": [{
|
|
43044
|
+
name: "deviceId",
|
|
43045
|
+
form: "single",
|
|
43046
|
+
optional: false
|
|
43047
|
+
}],
|
|
43048
|
+
"pipelineAnalytics.saveRetrainAnnotations": [{
|
|
43049
|
+
name: "deviceId",
|
|
43050
|
+
form: "single",
|
|
43051
|
+
optional: false
|
|
43052
|
+
}],
|
|
43053
|
+
"pipelineAnalytics.searchObjectEvents": [{
|
|
43054
|
+
name: "deviceId",
|
|
43055
|
+
form: "single",
|
|
43056
|
+
optional: true
|
|
43057
|
+
}],
|
|
43058
|
+
"pipelineAnalytics.selectRetrainFrames": [{
|
|
43059
|
+
name: "deviceId",
|
|
43060
|
+
form: "single",
|
|
43061
|
+
optional: false
|
|
43062
|
+
}],
|
|
43063
|
+
"pipelineAnalytics.setTrackFlags": [{
|
|
43064
|
+
name: "deviceId",
|
|
43065
|
+
form: "single",
|
|
43066
|
+
optional: false
|
|
43067
|
+
}],
|
|
43068
|
+
"pipelineAnalytics.wipeAllAnalytics": [{
|
|
43069
|
+
name: "deviceId",
|
|
43070
|
+
form: "single",
|
|
43071
|
+
optional: false
|
|
43072
|
+
}],
|
|
43073
|
+
"pipelineExecutor.runPipeline": [{
|
|
43074
|
+
name: "deviceId",
|
|
43075
|
+
form: "single",
|
|
43076
|
+
optional: true
|
|
43077
|
+
}],
|
|
43078
|
+
"pipelineExecutor.runPipelineBatch": [{
|
|
43079
|
+
name: "deviceId",
|
|
43080
|
+
form: "single",
|
|
43081
|
+
optional: true
|
|
43082
|
+
}],
|
|
43083
|
+
"pipelineOrchestrator.assignAudio": [{
|
|
43084
|
+
name: "deviceId",
|
|
43085
|
+
form: "single",
|
|
43086
|
+
optional: false
|
|
43087
|
+
}],
|
|
43088
|
+
"pipelineOrchestrator.assignPipeline": [{
|
|
43089
|
+
name: "deviceId",
|
|
43090
|
+
form: "single",
|
|
43091
|
+
optional: false
|
|
43092
|
+
}],
|
|
43093
|
+
"pipelineOrchestrator.getAudioAssignment": [{
|
|
43094
|
+
name: "deviceId",
|
|
43095
|
+
form: "single",
|
|
43096
|
+
optional: false
|
|
43097
|
+
}],
|
|
43098
|
+
"pipelineOrchestrator.getCameraMetrics": [{
|
|
43099
|
+
name: "deviceId",
|
|
43100
|
+
form: "single",
|
|
43101
|
+
optional: false
|
|
43102
|
+
}],
|
|
43103
|
+
"pipelineOrchestrator.getCameraSettings": [{
|
|
43104
|
+
name: "deviceId",
|
|
43105
|
+
form: "single",
|
|
43106
|
+
optional: false
|
|
43107
|
+
}],
|
|
43108
|
+
"pipelineOrchestrator.getCameraStatus": [{
|
|
43109
|
+
name: "deviceId",
|
|
43110
|
+
form: "single",
|
|
43111
|
+
optional: false
|
|
43112
|
+
}],
|
|
43113
|
+
"pipelineOrchestrator.getCameraStatuses": [{
|
|
43114
|
+
name: "deviceIds",
|
|
43115
|
+
form: "array",
|
|
43116
|
+
optional: true
|
|
43117
|
+
}],
|
|
43118
|
+
"pipelineOrchestrator.getCameraStepOverrides": [{
|
|
43119
|
+
name: "deviceId",
|
|
43120
|
+
form: "single",
|
|
43121
|
+
optional: false
|
|
43122
|
+
}],
|
|
43123
|
+
"pipelineOrchestrator.getCameraSwitches": [{
|
|
43124
|
+
name: "deviceId",
|
|
43125
|
+
form: "single",
|
|
43126
|
+
optional: false
|
|
43127
|
+
}],
|
|
43128
|
+
"pipelineOrchestrator.getPipelineAssignment": [{
|
|
43129
|
+
name: "deviceId",
|
|
43130
|
+
form: "single",
|
|
43131
|
+
optional: false
|
|
43132
|
+
}],
|
|
43133
|
+
"pipelineOrchestrator.getPipelineDevicePin": [{
|
|
43134
|
+
name: "deviceId",
|
|
43135
|
+
form: "single",
|
|
43136
|
+
optional: false
|
|
43137
|
+
}],
|
|
43138
|
+
"pipelineOrchestrator.resolvePipeline": [{
|
|
43139
|
+
name: "deviceId",
|
|
43140
|
+
form: "single",
|
|
43141
|
+
optional: false
|
|
43142
|
+
}],
|
|
43143
|
+
"pipelineOrchestrator.setCameraPipelineForAgent": [{
|
|
43144
|
+
name: "deviceId",
|
|
43145
|
+
form: "single",
|
|
43146
|
+
optional: false
|
|
43147
|
+
}],
|
|
43148
|
+
"pipelineOrchestrator.setCameraStepOverride": [{
|
|
43149
|
+
name: "deviceId",
|
|
43150
|
+
form: "single",
|
|
43151
|
+
optional: false
|
|
43152
|
+
}],
|
|
43153
|
+
"pipelineOrchestrator.setCameraStepToggle": [{
|
|
43154
|
+
name: "deviceId",
|
|
43155
|
+
form: "single",
|
|
43156
|
+
optional: false
|
|
43157
|
+
}],
|
|
43158
|
+
"pipelineOrchestrator.setCameraSwitch": [{
|
|
43159
|
+
name: "deviceId",
|
|
43160
|
+
form: "single",
|
|
43161
|
+
optional: false
|
|
43162
|
+
}],
|
|
43163
|
+
"pipelineOrchestrator.setPipelineDevicePin": [{
|
|
43164
|
+
name: "deviceId",
|
|
43165
|
+
form: "single",
|
|
43166
|
+
optional: false
|
|
43167
|
+
}],
|
|
43168
|
+
"pipelineOrchestrator.unassignAudio": [{
|
|
43169
|
+
name: "deviceId",
|
|
43170
|
+
form: "single",
|
|
43171
|
+
optional: false
|
|
43172
|
+
}],
|
|
43173
|
+
"pipelineOrchestrator.unassignPipeline": [{
|
|
43174
|
+
name: "deviceId",
|
|
43175
|
+
form: "single",
|
|
43176
|
+
optional: false
|
|
43177
|
+
}],
|
|
43178
|
+
"pipelineRunner.attachCamera": [{
|
|
43179
|
+
name: "deviceId",
|
|
43180
|
+
form: "single",
|
|
43181
|
+
optional: false
|
|
43182
|
+
}],
|
|
43183
|
+
"pipelineRunner.detachCamera": [{
|
|
43184
|
+
name: "deviceId",
|
|
43185
|
+
form: "single",
|
|
43186
|
+
optional: false
|
|
43187
|
+
}],
|
|
43188
|
+
"pipelineRunner.getCameraMetrics": [{
|
|
43189
|
+
name: "deviceId",
|
|
43190
|
+
form: "single",
|
|
43191
|
+
optional: false
|
|
43192
|
+
}],
|
|
43193
|
+
"pipelineRunner.reportMotion": [{
|
|
43194
|
+
name: "deviceId",
|
|
43195
|
+
form: "single",
|
|
43196
|
+
optional: false
|
|
43197
|
+
}],
|
|
43198
|
+
"pipelineRunner.runDetailSubtree": [{
|
|
43199
|
+
name: "deviceId",
|
|
43200
|
+
form: "single",
|
|
43201
|
+
optional: false
|
|
43202
|
+
}],
|
|
43203
|
+
"pipelineRunner.runStatelessStep": [{
|
|
43204
|
+
name: "sourceDeviceId",
|
|
43205
|
+
form: "single",
|
|
43206
|
+
optional: false
|
|
43207
|
+
}],
|
|
43208
|
+
"plateGallery.getPlateByTrack": [{
|
|
43209
|
+
name: "deviceId",
|
|
43210
|
+
form: "single",
|
|
43211
|
+
optional: false
|
|
43212
|
+
}],
|
|
43213
|
+
"plateGallery.listPlates": [{
|
|
43214
|
+
name: "deviceId",
|
|
43215
|
+
form: "single",
|
|
43216
|
+
optional: true
|
|
43217
|
+
}],
|
|
43218
|
+
"privacyMask.getOptions": [{
|
|
43219
|
+
name: "deviceId",
|
|
43220
|
+
form: "single",
|
|
43221
|
+
optional: false
|
|
43222
|
+
}],
|
|
43223
|
+
"privacyMask.setAudioEnabled": [{
|
|
43224
|
+
name: "deviceId",
|
|
43225
|
+
form: "single",
|
|
43226
|
+
optional: false
|
|
43227
|
+
}],
|
|
43228
|
+
"privacyMask.setMask": [{
|
|
43229
|
+
name: "deviceId",
|
|
43230
|
+
form: "single",
|
|
43231
|
+
optional: false
|
|
43232
|
+
}],
|
|
43233
|
+
"ptz.continuousMove": [{
|
|
43234
|
+
name: "deviceId",
|
|
43235
|
+
form: "single",
|
|
43236
|
+
optional: false
|
|
43237
|
+
}],
|
|
43238
|
+
"ptz.deletePreset": [{
|
|
43239
|
+
name: "deviceId",
|
|
43240
|
+
form: "single",
|
|
43241
|
+
optional: false
|
|
43242
|
+
}],
|
|
43243
|
+
"ptz.getOptions": [{
|
|
43244
|
+
name: "deviceId",
|
|
43245
|
+
form: "single",
|
|
43246
|
+
optional: false
|
|
43247
|
+
}],
|
|
43248
|
+
"ptz.getPosition": [{
|
|
43249
|
+
name: "deviceId",
|
|
43250
|
+
form: "single",
|
|
43251
|
+
optional: false
|
|
43252
|
+
}],
|
|
43253
|
+
"ptz.getPresets": [{
|
|
43254
|
+
name: "deviceId",
|
|
43255
|
+
form: "single",
|
|
43256
|
+
optional: false
|
|
43257
|
+
}],
|
|
43258
|
+
"ptz.goHome": [{
|
|
43259
|
+
name: "deviceId",
|
|
43260
|
+
form: "single",
|
|
43261
|
+
optional: false
|
|
43262
|
+
}],
|
|
43263
|
+
"ptz.goToPreset": [{
|
|
43264
|
+
name: "deviceId",
|
|
43265
|
+
form: "single",
|
|
43266
|
+
optional: false
|
|
43267
|
+
}],
|
|
43268
|
+
"ptz.move": [{
|
|
43269
|
+
name: "deviceId",
|
|
43270
|
+
form: "single",
|
|
43271
|
+
optional: false
|
|
43272
|
+
}],
|
|
43273
|
+
"ptz.savePreset": [{
|
|
43274
|
+
name: "deviceId",
|
|
43275
|
+
form: "single",
|
|
43276
|
+
optional: false
|
|
43277
|
+
}],
|
|
43278
|
+
"ptz.setAutofocus": [{
|
|
43279
|
+
name: "deviceId",
|
|
43280
|
+
form: "single",
|
|
43281
|
+
optional: false
|
|
43282
|
+
}],
|
|
43283
|
+
"ptz.stop": [{
|
|
43284
|
+
name: "deviceId",
|
|
43285
|
+
form: "single",
|
|
43286
|
+
optional: false
|
|
43287
|
+
}],
|
|
43288
|
+
"ptzAutotrack.getSettings": [{
|
|
43289
|
+
name: "deviceId",
|
|
43290
|
+
form: "single",
|
|
43291
|
+
optional: false
|
|
43292
|
+
}],
|
|
43293
|
+
"ptzAutotrack.getStatus": [{
|
|
43294
|
+
name: "deviceId",
|
|
43295
|
+
form: "single",
|
|
43296
|
+
optional: false
|
|
43297
|
+
}],
|
|
43298
|
+
"ptzAutotrack.setEnabled": [{
|
|
43299
|
+
name: "deviceId",
|
|
43300
|
+
form: "single",
|
|
43301
|
+
optional: false
|
|
43302
|
+
}],
|
|
43303
|
+
"ptzAutotrack.setSettings": [{
|
|
43304
|
+
name: "deviceId",
|
|
43305
|
+
form: "single",
|
|
43306
|
+
optional: false
|
|
43307
|
+
}],
|
|
43308
|
+
"reboot.reboot": [{
|
|
43309
|
+
name: "deviceId",
|
|
43310
|
+
form: "single",
|
|
43311
|
+
optional: false
|
|
43312
|
+
}],
|
|
43313
|
+
"recording.deleteFootprint": [{
|
|
43314
|
+
name: "deviceId",
|
|
43315
|
+
form: "single",
|
|
43316
|
+
optional: false
|
|
43317
|
+
}],
|
|
43318
|
+
"recording.getAvailability": [{
|
|
43319
|
+
name: "deviceId",
|
|
43320
|
+
form: "single",
|
|
43321
|
+
optional: false
|
|
43322
|
+
}],
|
|
43323
|
+
"recording.getDaysWithRecordings": [{
|
|
43324
|
+
name: "deviceId",
|
|
43325
|
+
form: "single",
|
|
43326
|
+
optional: false
|
|
43327
|
+
}],
|
|
43328
|
+
"recording.getDeviceConfig": [{
|
|
43329
|
+
name: "deviceId",
|
|
43330
|
+
form: "single",
|
|
43331
|
+
optional: false
|
|
43332
|
+
}],
|
|
43333
|
+
"recording.getPlaybackManifest": [{
|
|
43334
|
+
name: "deviceId",
|
|
43335
|
+
form: "single",
|
|
43336
|
+
optional: false
|
|
43337
|
+
}],
|
|
43338
|
+
"recording.listOpsLog": [{
|
|
43339
|
+
name: "deviceId",
|
|
43340
|
+
form: "single",
|
|
43341
|
+
optional: true
|
|
43342
|
+
}],
|
|
43343
|
+
"recording.locateSegment": [{
|
|
43344
|
+
name: "deviceId",
|
|
43345
|
+
form: "single",
|
|
43346
|
+
optional: false
|
|
43347
|
+
}],
|
|
43348
|
+
"recording.pruneFootage": [{
|
|
43349
|
+
name: "deviceId",
|
|
43350
|
+
form: "single",
|
|
43351
|
+
optional: false
|
|
43352
|
+
}],
|
|
43353
|
+
"recording.readGopBytes": [{
|
|
43354
|
+
name: "deviceId",
|
|
43355
|
+
form: "single",
|
|
43356
|
+
optional: false
|
|
43357
|
+
}],
|
|
43358
|
+
"recording.readSegmentBytes": [{
|
|
43359
|
+
name: "deviceId",
|
|
43360
|
+
form: "single",
|
|
43361
|
+
optional: false
|
|
43362
|
+
}],
|
|
43363
|
+
"recording.relocateFootage": [{
|
|
43364
|
+
name: "deviceId",
|
|
43365
|
+
form: "single",
|
|
43366
|
+
optional: true
|
|
43367
|
+
}],
|
|
43368
|
+
"recording.renderClip": [{
|
|
43369
|
+
name: "deviceId",
|
|
43370
|
+
form: "single",
|
|
43371
|
+
optional: false
|
|
43372
|
+
}],
|
|
43373
|
+
"recording.renderGif": [{
|
|
43374
|
+
name: "deviceId",
|
|
43375
|
+
form: "single",
|
|
43376
|
+
optional: false
|
|
43377
|
+
}],
|
|
43378
|
+
"recording.rescanStorage": [{
|
|
43379
|
+
name: "deviceId",
|
|
43380
|
+
form: "single",
|
|
43381
|
+
optional: false
|
|
43382
|
+
}],
|
|
43383
|
+
"recording.setDeviceConfig": [{
|
|
43384
|
+
name: "deviceId",
|
|
43385
|
+
form: "single",
|
|
43386
|
+
optional: false
|
|
43387
|
+
}],
|
|
43388
|
+
"recording.startStorageMigrationMove": [{
|
|
43389
|
+
name: "deviceId",
|
|
43390
|
+
form: "single",
|
|
43391
|
+
optional: true
|
|
43392
|
+
}],
|
|
43393
|
+
"recordingExport.createExport": [{
|
|
43394
|
+
name: "deviceId",
|
|
43395
|
+
form: "single",
|
|
43396
|
+
optional: false
|
|
43397
|
+
}],
|
|
43398
|
+
"recordingExport.listExports": [{
|
|
43399
|
+
name: "deviceId",
|
|
43400
|
+
form: "single",
|
|
43401
|
+
optional: true
|
|
43402
|
+
}],
|
|
43403
|
+
"sceneMonitor.captureReference": [{
|
|
43404
|
+
name: "deviceId",
|
|
43405
|
+
form: "single",
|
|
43406
|
+
optional: false
|
|
43407
|
+
}],
|
|
43408
|
+
"sceneMonitor.createScene": [{
|
|
43409
|
+
name: "deviceId",
|
|
43410
|
+
form: "single",
|
|
43411
|
+
optional: false
|
|
43412
|
+
}],
|
|
43413
|
+
"sceneMonitor.deleteReference": [{
|
|
43414
|
+
name: "deviceId",
|
|
43415
|
+
form: "single",
|
|
43416
|
+
optional: false
|
|
43417
|
+
}],
|
|
43418
|
+
"sceneMonitor.deleteScene": [{
|
|
43419
|
+
name: "deviceId",
|
|
43420
|
+
form: "single",
|
|
43421
|
+
optional: false
|
|
43422
|
+
}],
|
|
43423
|
+
"sceneMonitor.listScenes": [{
|
|
43424
|
+
name: "deviceId",
|
|
43425
|
+
form: "single",
|
|
43426
|
+
optional: false
|
|
43427
|
+
}],
|
|
43428
|
+
"sceneMonitor.recheckNow": [{
|
|
43429
|
+
name: "deviceId",
|
|
43430
|
+
form: "single",
|
|
43431
|
+
optional: false
|
|
43432
|
+
}],
|
|
43433
|
+
"sceneMonitor.resetScene": [{
|
|
43434
|
+
name: "deviceId",
|
|
43435
|
+
form: "single",
|
|
43436
|
+
optional: false
|
|
43437
|
+
}],
|
|
43438
|
+
"sceneMonitor.updateScene": [{
|
|
43439
|
+
name: "deviceId",
|
|
43440
|
+
form: "single",
|
|
43441
|
+
optional: false
|
|
43442
|
+
}],
|
|
43443
|
+
"scriptRunner.run": [{
|
|
43444
|
+
name: "deviceId",
|
|
43445
|
+
form: "single",
|
|
43446
|
+
optional: false
|
|
43447
|
+
}],
|
|
43448
|
+
"scriptRunner.stop": [{
|
|
43449
|
+
name: "deviceId",
|
|
43450
|
+
form: "single",
|
|
43451
|
+
optional: false
|
|
43452
|
+
}],
|
|
43453
|
+
"snapshot.getDebugState": [{
|
|
43454
|
+
name: "deviceId",
|
|
43455
|
+
form: "single",
|
|
43456
|
+
optional: false
|
|
43457
|
+
}],
|
|
43458
|
+
"snapshot.getSnapshot": [{
|
|
43459
|
+
name: "deviceId",
|
|
43460
|
+
form: "single",
|
|
43461
|
+
optional: false
|
|
43462
|
+
}],
|
|
43463
|
+
"snapshot.getSnapshotLinks": [{
|
|
43464
|
+
name: "targets",
|
|
43465
|
+
form: "object-array",
|
|
43466
|
+
optional: false,
|
|
43467
|
+
itemField: "deviceId"
|
|
43468
|
+
}],
|
|
43469
|
+
"snapshot.getSnapshotOverview": [{
|
|
43470
|
+
name: "deviceIds",
|
|
43471
|
+
form: "array",
|
|
43472
|
+
optional: false
|
|
43473
|
+
}],
|
|
43474
|
+
"snapshot.invalidateCache": [{
|
|
43475
|
+
name: "deviceId",
|
|
43476
|
+
form: "single",
|
|
43477
|
+
optional: false
|
|
43478
|
+
}],
|
|
43479
|
+
"streamBroker.acquireEgressTranscode": [{
|
|
43480
|
+
name: "deviceId",
|
|
43481
|
+
form: "single",
|
|
43482
|
+
optional: false
|
|
43483
|
+
}],
|
|
43484
|
+
"streamBroker.assignProfile": [{
|
|
43485
|
+
name: "deviceId",
|
|
43486
|
+
form: "single",
|
|
43487
|
+
optional: false
|
|
43488
|
+
}],
|
|
43489
|
+
"streamBroker.getDeviceAudioMute": [{
|
|
43490
|
+
name: "deviceId",
|
|
43491
|
+
form: "single",
|
|
43492
|
+
optional: false
|
|
43493
|
+
}],
|
|
43494
|
+
"streamBroker.getStreamWithCodec": [{
|
|
43495
|
+
name: "deviceId",
|
|
43496
|
+
form: "single",
|
|
43497
|
+
optional: false
|
|
43498
|
+
}],
|
|
43499
|
+
"streamBroker.produceEventMedia": [{
|
|
43500
|
+
name: "deviceId",
|
|
43501
|
+
form: "single",
|
|
43502
|
+
optional: false
|
|
43503
|
+
}],
|
|
43504
|
+
"streamBroker.publishCameraStream": [{
|
|
43505
|
+
name: "deviceId",
|
|
43506
|
+
form: "single",
|
|
43507
|
+
optional: false
|
|
43508
|
+
}],
|
|
43509
|
+
"streamBroker.renderPreBufferClip": [{
|
|
43510
|
+
name: "deviceId",
|
|
43511
|
+
form: "single",
|
|
43512
|
+
optional: false
|
|
43513
|
+
}],
|
|
43514
|
+
"streamBroker.restartProfile": [{
|
|
43515
|
+
name: "deviceId",
|
|
43516
|
+
form: "single",
|
|
43517
|
+
optional: false
|
|
43518
|
+
}],
|
|
43519
|
+
"streamBroker.retractCameraStream": [{
|
|
43520
|
+
name: "deviceId",
|
|
43521
|
+
form: "single",
|
|
43522
|
+
optional: false
|
|
43523
|
+
}],
|
|
43524
|
+
"streamBroker.setDeviceAudioMute": [{
|
|
43525
|
+
name: "deviceId",
|
|
43526
|
+
form: "single",
|
|
43527
|
+
optional: false
|
|
43528
|
+
}],
|
|
43529
|
+
"streamBroker.unassignProfile": [{
|
|
43530
|
+
name: "deviceId",
|
|
43531
|
+
form: "single",
|
|
43532
|
+
optional: false
|
|
43533
|
+
}],
|
|
43534
|
+
"streamCatalog.getCatalog": [{
|
|
43535
|
+
name: "deviceId",
|
|
43536
|
+
form: "single",
|
|
43537
|
+
optional: false
|
|
43538
|
+
}],
|
|
43539
|
+
"streamParams.getConfigSchema": [{
|
|
43540
|
+
name: "deviceId",
|
|
43541
|
+
form: "single",
|
|
43542
|
+
optional: false
|
|
43543
|
+
}],
|
|
43544
|
+
"streamParams.getOptions": [{
|
|
43545
|
+
name: "deviceId",
|
|
43546
|
+
form: "single",
|
|
43547
|
+
optional: false
|
|
43548
|
+
}],
|
|
43549
|
+
"streamParams.setProfile": [{
|
|
43550
|
+
name: "deviceId",
|
|
43551
|
+
form: "single",
|
|
43552
|
+
optional: false
|
|
43553
|
+
}],
|
|
43554
|
+
"switch.setState": [{
|
|
43555
|
+
name: "deviceId",
|
|
43556
|
+
form: "single",
|
|
43557
|
+
optional: false
|
|
43558
|
+
}],
|
|
43559
|
+
"vacuumControl.locate": [{
|
|
43560
|
+
name: "deviceId",
|
|
43561
|
+
form: "single",
|
|
43562
|
+
optional: false
|
|
43563
|
+
}],
|
|
43564
|
+
"vacuumControl.pause": [{
|
|
43565
|
+
name: "deviceId",
|
|
43566
|
+
form: "single",
|
|
43567
|
+
optional: false
|
|
43568
|
+
}],
|
|
43569
|
+
"vacuumControl.returnToBase": [{
|
|
43570
|
+
name: "deviceId",
|
|
43571
|
+
form: "single",
|
|
43572
|
+
optional: false
|
|
43573
|
+
}],
|
|
43574
|
+
"vacuumControl.setFanSpeed": [{
|
|
43575
|
+
name: "deviceId",
|
|
43576
|
+
form: "single",
|
|
43577
|
+
optional: false
|
|
43578
|
+
}],
|
|
43579
|
+
"vacuumControl.start": [{
|
|
43580
|
+
name: "deviceId",
|
|
43581
|
+
form: "single",
|
|
43582
|
+
optional: false
|
|
43583
|
+
}],
|
|
43584
|
+
"vacuumControl.stop": [{
|
|
43585
|
+
name: "deviceId",
|
|
43586
|
+
form: "single",
|
|
43587
|
+
optional: false
|
|
43588
|
+
}],
|
|
43589
|
+
"valve.close": [{
|
|
43590
|
+
name: "deviceId",
|
|
43591
|
+
form: "single",
|
|
43592
|
+
optional: false
|
|
43593
|
+
}],
|
|
43594
|
+
"valve.open": [{
|
|
43595
|
+
name: "deviceId",
|
|
43596
|
+
form: "single",
|
|
43597
|
+
optional: false
|
|
43598
|
+
}],
|
|
43599
|
+
"valve.setPosition": [{
|
|
43600
|
+
name: "deviceId",
|
|
43601
|
+
form: "single",
|
|
43602
|
+
optional: false
|
|
43603
|
+
}],
|
|
43604
|
+
"valve.stop": [{
|
|
43605
|
+
name: "deviceId",
|
|
43606
|
+
form: "single",
|
|
43607
|
+
optional: false
|
|
43608
|
+
}],
|
|
43609
|
+
"videoclips.getClipPlayback": [{
|
|
43610
|
+
name: "deviceId",
|
|
43611
|
+
form: "single",
|
|
43612
|
+
optional: false
|
|
43613
|
+
}],
|
|
43614
|
+
"videoclips.listClips": [{
|
|
43615
|
+
name: "deviceId",
|
|
43616
|
+
form: "single",
|
|
43617
|
+
optional: false
|
|
43618
|
+
}],
|
|
43619
|
+
"waterHeater.setAway": [{
|
|
43620
|
+
name: "deviceId",
|
|
43621
|
+
form: "single",
|
|
43622
|
+
optional: false
|
|
43623
|
+
}],
|
|
43624
|
+
"waterHeater.setOperationMode": [{
|
|
43625
|
+
name: "deviceId",
|
|
43626
|
+
form: "single",
|
|
43627
|
+
optional: false
|
|
43628
|
+
}],
|
|
43629
|
+
"waterHeater.setTargetTemp": [{
|
|
43630
|
+
name: "deviceId",
|
|
43631
|
+
form: "single",
|
|
43632
|
+
optional: false
|
|
43633
|
+
}],
|
|
43634
|
+
"webrtcSession.addIceCandidate": [{
|
|
43635
|
+
name: "deviceId",
|
|
43636
|
+
form: "single",
|
|
43637
|
+
optional: false
|
|
43638
|
+
}],
|
|
43639
|
+
"webrtcSession.closeSession": [{
|
|
43640
|
+
name: "deviceId",
|
|
43641
|
+
form: "single",
|
|
43642
|
+
optional: false
|
|
43643
|
+
}],
|
|
43644
|
+
"webrtcSession.createSession": [{
|
|
43645
|
+
name: "deviceId",
|
|
43646
|
+
form: "single",
|
|
43647
|
+
optional: false
|
|
43648
|
+
}],
|
|
43649
|
+
"webrtcSession.getIceCandidates": [{
|
|
43650
|
+
name: "deviceId",
|
|
43651
|
+
form: "single",
|
|
43652
|
+
optional: false
|
|
43653
|
+
}],
|
|
43654
|
+
"webrtcSession.getSessionState": [{
|
|
43655
|
+
name: "deviceId",
|
|
43656
|
+
form: "single",
|
|
43657
|
+
optional: false
|
|
43658
|
+
}],
|
|
43659
|
+
"webrtcSession.handleAnswer": [{
|
|
43660
|
+
name: "deviceId",
|
|
43661
|
+
form: "single",
|
|
43662
|
+
optional: false
|
|
43663
|
+
}],
|
|
43664
|
+
"webrtcSession.handleOffer": [{
|
|
43665
|
+
name: "deviceId",
|
|
43666
|
+
form: "single",
|
|
43667
|
+
optional: false
|
|
43668
|
+
}],
|
|
43669
|
+
"webrtcSession.hasAdaptiveBitrate": [{
|
|
43670
|
+
name: "deviceId",
|
|
43671
|
+
form: "single",
|
|
43672
|
+
optional: false
|
|
43673
|
+
}],
|
|
43674
|
+
"webrtcSession.listStreams": [{
|
|
43675
|
+
name: "deviceId",
|
|
43676
|
+
form: "single",
|
|
43677
|
+
optional: false
|
|
43678
|
+
}],
|
|
43679
|
+
"zoneAnalytics.getCameraHistory": [{
|
|
43680
|
+
name: "deviceId",
|
|
43681
|
+
form: "single",
|
|
43682
|
+
optional: false
|
|
43683
|
+
}],
|
|
43684
|
+
"zoneAnalytics.getCurrentSnapshot": [{
|
|
43685
|
+
name: "deviceId",
|
|
43686
|
+
form: "single",
|
|
43687
|
+
optional: false
|
|
43688
|
+
}],
|
|
43689
|
+
"zoneAnalytics.getUnzonedHistory": [{
|
|
43690
|
+
name: "deviceId",
|
|
43691
|
+
form: "single",
|
|
43692
|
+
optional: false
|
|
43693
|
+
}],
|
|
43694
|
+
"zoneAnalytics.getZoneHistory": [{
|
|
43695
|
+
name: "deviceId",
|
|
43696
|
+
form: "single",
|
|
43697
|
+
optional: false
|
|
43698
|
+
}],
|
|
43699
|
+
"zoneRules.listRules": [{
|
|
43700
|
+
name: "deviceId",
|
|
43701
|
+
form: "single",
|
|
43702
|
+
optional: false
|
|
43703
|
+
}],
|
|
43704
|
+
"zoneRules.setRules": [{
|
|
43705
|
+
name: "deviceId",
|
|
43706
|
+
form: "single",
|
|
43707
|
+
optional: false
|
|
43708
|
+
}],
|
|
43709
|
+
"zones.addZone": [{
|
|
43710
|
+
name: "deviceId",
|
|
43711
|
+
form: "single",
|
|
43712
|
+
optional: false
|
|
43713
|
+
}],
|
|
43714
|
+
"zones.listZones": [{
|
|
43715
|
+
name: "deviceId",
|
|
43716
|
+
form: "single",
|
|
43717
|
+
optional: false
|
|
43718
|
+
}],
|
|
43719
|
+
"zones.removeZone": [{
|
|
43720
|
+
name: "deviceId",
|
|
43721
|
+
form: "single",
|
|
43722
|
+
optional: false
|
|
43723
|
+
}],
|
|
43724
|
+
"zones.updateZone": [{
|
|
43725
|
+
name: "deviceId",
|
|
43726
|
+
form: "single",
|
|
43727
|
+
optional: false
|
|
43728
|
+
}]
|
|
43729
|
+
});
|
|
41235
43730
|
var CAP_PROVIDER_KIND_MAP = Object.freeze({
|
|
41236
43731
|
"broker": "broker",
|
|
41237
43732
|
"device-export": "device-export",
|