camstack 1.1.22 → 1.1.24
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-BC9Yqte7.mjs
|
|
14526
14526
|
var WELL_KNOWN_TABS = [
|
|
14527
14527
|
{
|
|
14528
14528
|
id: "overview",
|
|
@@ -15132,16 +15132,34 @@ function method(input, output, options) {
|
|
|
15132
15132
|
timeoutMs: options?.timeoutMs
|
|
15133
15133
|
};
|
|
15134
15134
|
}
|
|
15135
|
+
function systemMethod(input, output, options) {
|
|
15136
|
+
return {
|
|
15137
|
+
...method(input, output, options),
|
|
15138
|
+
systemOnly: true
|
|
15139
|
+
};
|
|
15140
|
+
}
|
|
15135
15141
|
function event(data) {
|
|
15136
15142
|
return { data };
|
|
15137
15143
|
}
|
|
15138
|
-
var StaticDirOutputSchema = external_exports.object({ staticDir: external_exports.string() });
|
|
15139
|
-
var VersionOutputSchema = external_exports.object({ version: external_exports.string() });
|
|
15144
|
+
var StaticDirOutputSchema$1 = external_exports.object({ staticDir: external_exports.string() });
|
|
15145
|
+
var VersionOutputSchema$1 = external_exports.object({ version: external_exports.string() });
|
|
15140
15146
|
var adminUiCapability = {
|
|
15141
15147
|
name: "admin-ui",
|
|
15142
15148
|
scope: "system",
|
|
15143
15149
|
mode: "singleton",
|
|
15144
15150
|
internal: true,
|
|
15151
|
+
methods: {
|
|
15152
|
+
getStaticDir: method(external_exports.void(), StaticDirOutputSchema$1),
|
|
15153
|
+
getVersion: method(external_exports.void(), VersionOutputSchema$1)
|
|
15154
|
+
}
|
|
15155
|
+
};
|
|
15156
|
+
var StaticDirOutputSchema = external_exports.object({ staticDir: external_exports.string() });
|
|
15157
|
+
var VersionOutputSchema = external_exports.object({ version: external_exports.string() });
|
|
15158
|
+
var viewerUiCapability = {
|
|
15159
|
+
name: "viewer-ui",
|
|
15160
|
+
scope: "system",
|
|
15161
|
+
mode: "singleton",
|
|
15162
|
+
internal: true,
|
|
15145
15163
|
methods: {
|
|
15146
15164
|
getStaticDir: method(external_exports.void(), StaticDirOutputSchema),
|
|
15147
15165
|
getVersion: method(external_exports.void(), VersionOutputSchema)
|
|
@@ -15322,6 +15340,28 @@ var ModelFormatsSchema = external_exports.object({
|
|
|
15322
15340
|
tflite: ModelFormatEntrySchema.optional(),
|
|
15323
15341
|
pt: ModelFormatEntrySchema.optional()
|
|
15324
15342
|
});
|
|
15343
|
+
var ModelVariantGroupSchema = external_exports.object({
|
|
15344
|
+
/** Top-level family, e.g. `yolo26` (later `d-fine`, `rf-detr`). */
|
|
15345
|
+
family: external_exports.string(),
|
|
15346
|
+
/** Size within the family, e.g. `n` | `s` | `m` | `l`. */
|
|
15347
|
+
tier: external_exports.string(),
|
|
15348
|
+
/** Quantization axis. Omit ⇒ the fp32 base build. */
|
|
15349
|
+
precision: external_exports.enum(["fp32", "int8"]).optional(),
|
|
15350
|
+
/**
|
|
15351
|
+
* Speed-optimization axis. Omit ⇒ the standard build. `fast` marks a
|
|
15352
|
+
* latency-optimized export (e.g. ReLU-activation variant) — the slot the
|
|
15353
|
+
* future performance variants plug into.
|
|
15354
|
+
*/
|
|
15355
|
+
optimization: external_exports.enum(["standard", "fast"]).optional(),
|
|
15356
|
+
/**
|
|
15357
|
+
* Input-resolution axis (square input side, px). Omit ⇒ the family's native
|
|
15358
|
+
* resolution (640 for yolo26). Reduced-input builds (320 / 256) are a big,
|
|
15359
|
+
* cheap latency lever — especially on Apple ANE and the Intel N100 — at a
|
|
15360
|
+
* small-object accuracy cost. Mirrors the model's `inputSize` but lifted onto
|
|
15361
|
+
* the group so the selector can offer it as a variant axis.
|
|
15362
|
+
*/
|
|
15363
|
+
resolution: external_exports.number().int().positive().optional()
|
|
15364
|
+
});
|
|
15325
15365
|
var ModelCatalogEntrySchema = external_exports.object({
|
|
15326
15366
|
id: external_exports.string(),
|
|
15327
15367
|
name: external_exports.string(),
|
|
@@ -15351,7 +15391,43 @@ var ModelCatalogEntrySchema = external_exports.object({
|
|
|
15351
15391
|
* Auxiliary files required at runtime (labels JSON, charset dict, etc.).
|
|
15352
15392
|
* Downloaded into the same modelsDir alongside the model file.
|
|
15353
15393
|
*/
|
|
15354
|
-
extraFiles: external_exports.array(ModelExtraFileSchema).readonly().optional()
|
|
15394
|
+
extraFiles: external_exports.array(ModelExtraFileSchema).readonly().optional(),
|
|
15395
|
+
/**
|
|
15396
|
+
* LEGACY entry — retained in the catalog so a persisted operator selection
|
|
15397
|
+
* still RESOLVES (and can be re-activated), but hidden from the selectable
|
|
15398
|
+
* model list and excluded from the auto format-default pick. Set on the
|
|
15399
|
+
* superseded / consolidated models (older lineages, redundant fp16 IRs) so
|
|
15400
|
+
* the active lineup stays the coherent curated ladder without deleting a
|
|
15401
|
+
* model anyone may still be pinned to. `resolveModelForFormat` keeps honoring
|
|
15402
|
+
* an explicit legacy id that has a build for the node's format.
|
|
15403
|
+
*/
|
|
15404
|
+
legacy: external_exports.boolean().optional(),
|
|
15405
|
+
/**
|
|
15406
|
+
* Measured quality/latency metadata — populated from the benchmark addon on
|
|
15407
|
+
* the real node classes. Absent = not yet measured (most entries today; the
|
|
15408
|
+
* catalog historically carried only `sizeMB`, a poor cross-architecture
|
|
15409
|
+
* speed proxy). `p95LatencyMs` is keyed by node class (e.g. `n100`, `mac`).
|
|
15410
|
+
*/
|
|
15411
|
+
metrics: external_exports.object({
|
|
15412
|
+
map50: external_exports.number().optional(),
|
|
15413
|
+
p95LatencyMs: external_exports.record(external_exports.string(), external_exports.number()).optional()
|
|
15414
|
+
}).optional(),
|
|
15415
|
+
/**
|
|
15416
|
+
* SPDX-ish license id of the model weights (e.g. `AGPL-3.0` for Ultralytics
|
|
15417
|
+
* YOLO26, `GPL-3.0` for YOLOv9, `Apache-2.0` for D-FINE/RF-DETR). Matters for
|
|
15418
|
+
* the retraining addon and any future commercial distribution.
|
|
15419
|
+
*/
|
|
15420
|
+
license: external_exports.string().optional(),
|
|
15421
|
+
/**
|
|
15422
|
+
* Variant-selector grouping. The UI groups models by `family` + `tier` and
|
|
15423
|
+
* offers `precision` / `optimization` as variant axes WITHIN a tier — so all
|
|
15424
|
+
* of a family's sizes and quantizations collapse into one grouped picker
|
|
15425
|
+
* instead of a flat list of `yolo26s`, `yolo26s-int8`, … Absent ⇒ ungrouped
|
|
15426
|
+
* (legacy / custom models) — never shown in the grouped selector. The flat
|
|
15427
|
+
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
15428
|
+
* is a presentation overlay resolved back to an `id`.
|
|
15429
|
+
*/
|
|
15430
|
+
group: ModelVariantGroupSchema.optional()
|
|
15355
15431
|
});
|
|
15356
15432
|
var ConvertTargetSchema = external_exports.discriminatedUnion("format", [external_exports.object({
|
|
15357
15433
|
format: external_exports.literal("openvino"),
|
|
@@ -17009,33 +17085,6 @@ var StreamFormatSchema = external_exports.enum([
|
|
|
17009
17085
|
"mjpeg",
|
|
17010
17086
|
"rtsp"
|
|
17011
17087
|
]);
|
|
17012
|
-
var StreamInfoSchema = external_exports.object({
|
|
17013
|
-
streamId: external_exports.string(),
|
|
17014
|
-
format: StreamFormatSchema,
|
|
17015
|
-
url: external_exports.string().nullable(),
|
|
17016
|
-
active: external_exports.boolean()
|
|
17017
|
-
});
|
|
17018
|
-
var streamingEngineCapability = {
|
|
17019
|
-
name: "streaming-engine",
|
|
17020
|
-
scope: "system",
|
|
17021
|
-
mode: "singleton",
|
|
17022
|
-
internal: true,
|
|
17023
|
-
methods: {
|
|
17024
|
-
registerStream: method(external_exports.object({
|
|
17025
|
-
streamId: external_exports.string(),
|
|
17026
|
-
sourceUrl: external_exports.string(),
|
|
17027
|
-
codec: external_exports.string().optional()
|
|
17028
|
-
}), external_exports.void(), { kind: "mutation" }),
|
|
17029
|
-
unregisterStream: method(external_exports.object({ streamId: external_exports.string() }), external_exports.void(), { kind: "mutation" }),
|
|
17030
|
-
getStreamUrl: method(external_exports.object({
|
|
17031
|
-
streamId: external_exports.string(),
|
|
17032
|
-
format: StreamFormatSchema
|
|
17033
|
-
}), external_exports.string().nullable()),
|
|
17034
|
-
listStreams: method(external_exports.void(), external_exports.array(StreamInfoSchema))
|
|
17035
|
-
},
|
|
17036
|
-
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
17037
|
-
mount: { kind: "skip" }
|
|
17038
|
-
};
|
|
17039
17088
|
var RtspRestreamEntrySchema = external_exports.object({
|
|
17040
17089
|
brokerId: external_exports.string(),
|
|
17041
17090
|
url: external_exports.string(),
|
|
@@ -17912,37 +17961,7 @@ var consumablesCapability = {
|
|
|
17912
17961
|
scope: "device",
|
|
17913
17962
|
deviceNative: true,
|
|
17914
17963
|
mode: "singleton",
|
|
17915
|
-
deviceTypes:
|
|
17916
|
-
DeviceType.Camera,
|
|
17917
|
-
DeviceType.Hub,
|
|
17918
|
-
DeviceType.Light,
|
|
17919
|
-
DeviceType.Siren,
|
|
17920
|
-
DeviceType.Switch,
|
|
17921
|
-
DeviceType.Sensor,
|
|
17922
|
-
DeviceType.Thermostat,
|
|
17923
|
-
DeviceType.Button,
|
|
17924
|
-
DeviceType.EventEmitter,
|
|
17925
|
-
DeviceType.Update,
|
|
17926
|
-
DeviceType.Generic,
|
|
17927
|
-
DeviceType.Notifier,
|
|
17928
|
-
DeviceType.Script,
|
|
17929
|
-
DeviceType.Automation,
|
|
17930
|
-
DeviceType.Lock,
|
|
17931
|
-
DeviceType.Cover,
|
|
17932
|
-
DeviceType.Valve,
|
|
17933
|
-
DeviceType.Humidifier,
|
|
17934
|
-
DeviceType.WaterHeater,
|
|
17935
|
-
DeviceType.Fan,
|
|
17936
|
-
DeviceType.MediaPlayer,
|
|
17937
|
-
DeviceType.AlarmPanel,
|
|
17938
|
-
DeviceType.Control,
|
|
17939
|
-
DeviceType.Presence,
|
|
17940
|
-
DeviceType.Weather,
|
|
17941
|
-
DeviceType.Vacuum,
|
|
17942
|
-
DeviceType.LawnMower,
|
|
17943
|
-
DeviceType.Container,
|
|
17944
|
-
DeviceType.Image
|
|
17945
|
-
],
|
|
17964
|
+
deviceTypes: Object.values(DeviceType),
|
|
17946
17965
|
deviceConfig: { ui: {
|
|
17947
17966
|
kind: "widget",
|
|
17948
17967
|
widgetId: "host/consumables-panel",
|
|
@@ -19179,7 +19198,6 @@ var PipelineDefaultStepSchema = external_exports.lazy(() => external_exports.obj
|
|
|
19179
19198
|
enabled: external_exports.boolean(),
|
|
19180
19199
|
modelId: external_exports.string(),
|
|
19181
19200
|
children: external_exports.array(PipelineDefaultStepSchema).readonly(),
|
|
19182
|
-
engine: PipelineEngineChoiceSchema.optional(),
|
|
19183
19201
|
group: external_exports.string().optional(),
|
|
19184
19202
|
settings: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
19185
19203
|
}));
|
|
@@ -19204,7 +19222,9 @@ var PipelineModelOptionSchema = external_exports.object({
|
|
|
19204
19222
|
formats: external_exports.record(external_exports.string(), external_exports.object({
|
|
19205
19223
|
downloaded: external_exports.boolean(),
|
|
19206
19224
|
sizeMB: external_exports.number()
|
|
19207
|
-
}))
|
|
19225
|
+
})),
|
|
19226
|
+
group: ModelVariantGroupSchema.optional(),
|
|
19227
|
+
legacy: external_exports.boolean().optional()
|
|
19208
19228
|
});
|
|
19209
19229
|
var ConfigFieldBridge = external_exports.custom();
|
|
19210
19230
|
var PipelineAddonSchemaSchema = external_exports.object({
|
|
@@ -19218,6 +19238,7 @@ var PipelineAddonSchemaSchema = external_exports.object({
|
|
|
19218
19238
|
defaultModelId: external_exports.string(),
|
|
19219
19239
|
defaultModelIdByFormat: external_exports.record(external_exports.string(), external_exports.string()).optional(),
|
|
19220
19240
|
enabledByDefault: external_exports.boolean().optional(),
|
|
19241
|
+
backfillIntoExistingOverrides: external_exports.boolean().optional(),
|
|
19221
19242
|
defaultConfidence: external_exports.number(),
|
|
19222
19243
|
group: external_exports.string().optional(),
|
|
19223
19244
|
configSchema: external_exports.array(ConfigFieldBridge).readonly().optional()
|
|
@@ -19234,11 +19255,6 @@ var PipelineSchemaSchema = external_exports.object({
|
|
|
19234
19255
|
selectedEngine: PipelineEngineChoiceSchema,
|
|
19235
19256
|
slots: external_exports.array(PipelineSlotSchemaSchema).readonly()
|
|
19236
19257
|
});
|
|
19237
|
-
var DetectorOutputSchema = external_exports.object({
|
|
19238
|
-
detections: external_exports.array(SpatialDetectionSchema).readonly(),
|
|
19239
|
-
inferenceMs: external_exports.number(),
|
|
19240
|
-
modelId: external_exports.string()
|
|
19241
|
-
});
|
|
19242
19258
|
var EngineProvisioningSchema = external_exports.object({
|
|
19243
19259
|
runtimeId: external_exports.enum([
|
|
19244
19260
|
"onnx",
|
|
@@ -19255,15 +19271,42 @@ var EngineProvisioningSchema = external_exports.object({
|
|
|
19255
19271
|
]),
|
|
19256
19272
|
progress: external_exports.number().optional(),
|
|
19257
19273
|
error: external_exports.string().optional(),
|
|
19258
|
-
nextRetryAt: external_exports.number().optional()
|
|
19274
|
+
nextRetryAt: external_exports.number().optional(),
|
|
19275
|
+
/**
|
|
19276
|
+
* Gate A (config-correctness gate at engine change): human-readable
|
|
19277
|
+
* config issues surfaced EAGERLY when the node's engine changes — model
|
|
19278
|
+
* substitutions ("chose X, running Y") and zero-build steps ("no model
|
|
19279
|
+
* has a <format> build"). Additive/optional: informational only, never
|
|
19280
|
+
* enforced here — `assertEngineReady` (readiness) still gates inference.
|
|
19281
|
+
* Absent/empty when the node-default tree resolves cleanly.
|
|
19282
|
+
*/
|
|
19283
|
+
configIssues: external_exports.array(external_exports.string()).optional()
|
|
19259
19284
|
});
|
|
19260
19285
|
var PipelineStepInputSchema = external_exports.lazy(() => external_exports.object({
|
|
19261
19286
|
addonId: external_exports.string(),
|
|
19262
|
-
modelId: external_exports.string(),
|
|
19287
|
+
modelId: external_exports.string().optional(),
|
|
19263
19288
|
enabled: external_exports.boolean().default(true),
|
|
19264
19289
|
children: external_exports.array(PipelineStepInputSchema).optional(),
|
|
19265
19290
|
settings: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
19266
19291
|
}));
|
|
19292
|
+
var ModelSubstitutionSchema = external_exports.object({
|
|
19293
|
+
addonId: external_exports.string(),
|
|
19294
|
+
chosen: external_exports.string(),
|
|
19295
|
+
running: external_exports.string(),
|
|
19296
|
+
format: external_exports.string()
|
|
19297
|
+
});
|
|
19298
|
+
var PipelineValidationIssueSchema = external_exports.object({
|
|
19299
|
+
addonId: external_exports.string(),
|
|
19300
|
+
kind: external_exports.enum(["unknown-addon", "no-format-build"]),
|
|
19301
|
+
detail: external_exports.string()
|
|
19302
|
+
});
|
|
19303
|
+
var PipelineValidationResultSchema = external_exports.object({
|
|
19304
|
+
ok: external_exports.boolean(),
|
|
19305
|
+
issues: external_exports.array(PipelineValidationIssueSchema).readonly(),
|
|
19306
|
+
substitutions: external_exports.array(ModelSubstitutionSchema).readonly(),
|
|
19307
|
+
/** The node's `currentEngine.format` this validation ran against. */
|
|
19308
|
+
format: external_exports.string()
|
|
19309
|
+
});
|
|
19267
19310
|
var ReferenceImageEntrySchema = external_exports.object({
|
|
19268
19311
|
filename: external_exports.string(),
|
|
19269
19312
|
stepIds: external_exports.array(external_exports.string()).readonly().optional()
|
|
@@ -19354,10 +19397,45 @@ var pipelineExecutorCapability = {
|
|
|
19354
19397
|
kind: "mutation",
|
|
19355
19398
|
auth: "admin"
|
|
19356
19399
|
}),
|
|
19400
|
+
/**
|
|
19401
|
+
* Clear THIS node's executor-side PER-DEVICE settings stores (the
|
|
19402
|
+
* per-camera step overrides the object-detection root reads via
|
|
19403
|
+
* `applyDeviceOverridesToTree`). `nodeId` is the ROUTING key — the
|
|
19404
|
+
* generated cap-router strips it (default `nodeIdMode: 'routing'`) and
|
|
19405
|
+
* dispatches to that node, so the provider method runs ON the target
|
|
19406
|
+
* node and receives no `nodeId`.
|
|
19407
|
+
*
|
|
19408
|
+
* This is the slimmed executor leg of the orchestrator's
|
|
19409
|
+
* `resetNodePipelineDefaults` flow (which owns the real reset: node
|
|
19410
|
+
* addonDefaults pins + per-camera orchestrator overrides). The legacy
|
|
19411
|
+
* `resetToDefault` — which reset a persisted global step-tree seed
|
|
19412
|
+
* nothing in the live per-camera path read — was removed together with
|
|
19413
|
+
* that seed.
|
|
19414
|
+
*/
|
|
19415
|
+
clearDeviceOverrides: method(external_exports.object({ nodeId: external_exports.string() }), external_exports.object({
|
|
19416
|
+
success: external_exports.literal(true),
|
|
19417
|
+
clearedDevices: external_exports.number()
|
|
19418
|
+
}), {
|
|
19419
|
+
kind: "mutation",
|
|
19420
|
+
auth: "admin"
|
|
19421
|
+
}),
|
|
19357
19422
|
getSchema: method(external_exports.void(), PipelineSchemaSchema),
|
|
19358
19423
|
getGlobalSteps: method(external_exports.void(), external_exports.array(PipelineDefaultStepSchema).readonly().nullable()),
|
|
19359
19424
|
getGlobalPipelineConfig: method(external_exports.void(), PipelineConfigBridge),
|
|
19360
19425
|
getOrchestratorConfigSchema: method(external_exports.void(), ConfigUISchemaBridge),
|
|
19426
|
+
/**
|
|
19427
|
+
* Gate B (pre-init config-correctness gate). PURE COMPUTE against this
|
|
19428
|
+
* node's `currentEngine.format` — resolves `steps` the same way the
|
|
19429
|
+
* runtime dispatch path would, and reports what WOULD happen without
|
|
19430
|
+
* touching any node-global state. Called by the orchestrator at attach
|
|
19431
|
+
* time (`attachOn`), node-pinned to the TARGET node, so config problems
|
|
19432
|
+
* surface BEFORE `pipelineRunner.attachCamera` rather than at the first
|
|
19433
|
+
* per-frame resolve. `ok` is false iff `issues` is non-empty (both
|
|
19434
|
+
* `unknown-addon` and `no-format-build` are HARD issues); `substitutions`
|
|
19435
|
+
* is informational (a degraded-but-loadable model swap) and never
|
|
19436
|
+
* affects `ok`. Never throws.
|
|
19437
|
+
*/
|
|
19438
|
+
validatePipeline: method(external_exports.object({ steps: external_exports.array(PipelineStepInputSchema) }), PipelineValidationResultSchema),
|
|
19361
19439
|
listTemplates: method(external_exports.void(), external_exports.array(PipelineTemplateSchema$1).readonly()),
|
|
19362
19440
|
saveTemplate: method(external_exports.object({
|
|
19363
19441
|
name: external_exports.string(),
|
|
@@ -19382,11 +19460,6 @@ var pipelineExecutorCapability = {
|
|
|
19382
19460
|
modelId: external_exports.string(),
|
|
19383
19461
|
format: ModelFormatSchema$1
|
|
19384
19462
|
}), external_exports.object({ success: external_exports.literal(true) }), { kind: "mutation" }),
|
|
19385
|
-
detect: method(external_exports.object({
|
|
19386
|
-
addonId: external_exports.string(),
|
|
19387
|
-
frame: FrameInputSchema,
|
|
19388
|
-
config: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
19389
|
-
}), DetectorOutputSchema),
|
|
19390
19463
|
/**
|
|
19391
19464
|
* Stateless single-frame execution. Callers (runner, benchmark) pass
|
|
19392
19465
|
* the complete `engine` + `steps` tree; the executor holds no state
|
|
@@ -19605,6 +19678,18 @@ var zonesCapability = {
|
|
|
19605
19678
|
*/
|
|
19606
19679
|
runtimeState: external_exports.object({ zones: external_exports.array(ZoneSchema).readonly() })
|
|
19607
19680
|
};
|
|
19681
|
+
var NativeCropBboxSchema = external_exports.object({
|
|
19682
|
+
x: external_exports.number(),
|
|
19683
|
+
y: external_exports.number(),
|
|
19684
|
+
w: external_exports.number(),
|
|
19685
|
+
h: external_exports.number()
|
|
19686
|
+
});
|
|
19687
|
+
var NativeCropResultSchema = external_exports.object({
|
|
19688
|
+
/** Packed rgb (24-bit) pixels of the crop. */
|
|
19689
|
+
bytes: external_exports.instanceof(Uint8Array),
|
|
19690
|
+
width: external_exports.number().int().positive(),
|
|
19691
|
+
height: external_exports.number().int().positive()
|
|
19692
|
+
});
|
|
19608
19693
|
var motionCooldownMsField = {
|
|
19609
19694
|
min: 0,
|
|
19610
19695
|
max: 6e4,
|
|
@@ -19647,6 +19732,13 @@ var RunnerFrameSourceSchema = external_exports.discriminatedUnion("kind", [exter
|
|
|
19647
19732
|
kind: external_exports.literal("remote-restream"),
|
|
19648
19733
|
/** The camera's source-owner node (slice 1: always the hub). */
|
|
19649
19734
|
ownerNodeId: external_exports.string(),
|
|
19735
|
+
/**
|
|
19736
|
+
* The owner's LAN-reachable host, resolved by the orchestrator from the
|
|
19737
|
+
* per-node `reachableHost` override (Cluster UI). When present the runner
|
|
19738
|
+
* dials THIS host for the owner's restream, in preference to the
|
|
19739
|
+
* `CAMSTACK_HUB_URL`-derived default. Absent → auto-detect fallback.
|
|
19740
|
+
*/
|
|
19741
|
+
ownerReachableHost: external_exports.string().optional(),
|
|
19650
19742
|
/** Operator override for the owner host the runner dials. */
|
|
19651
19743
|
hubHostnameOverride: external_exports.string().optional()
|
|
19652
19744
|
})]).describe("Per-camera frame-source mode for the runner (P2c)");
|
|
@@ -19699,14 +19791,11 @@ var RunnerCameraConfigSchema = external_exports.object({
|
|
|
19699
19791
|
*/
|
|
19700
19792
|
motionSources: MotionSourcesSchema.default(["analyzer"]),
|
|
19701
19793
|
pipelineEnabled: external_exports.boolean().default(true),
|
|
19702
|
-
/** Engine choice for video steps (runtime+backend+format). */
|
|
19703
|
-
engine: PipelineEngineChoiceSchema.optional(),
|
|
19704
19794
|
/** Ordered tree of video steps. Absent → runner skips video detection. */
|
|
19705
19795
|
steps: external_exports.array(PipelineStepInputSchema).readonly().optional(),
|
|
19706
19796
|
/** Audio classification branch. `enabled:false` disables, null skips. */
|
|
19707
19797
|
audio: external_exports.object({
|
|
19708
|
-
|
|
19709
|
-
modelId: external_exports.string(),
|
|
19798
|
+
modelId: external_exports.string().optional(),
|
|
19710
19799
|
enabled: external_exports.boolean()
|
|
19711
19800
|
}).nullable().optional(),
|
|
19712
19801
|
/**
|
|
@@ -19926,7 +20015,22 @@ var pipelineRunnerCapability = {
|
|
|
19926
20015
|
/** All per-camera metrics in one round-trip. */
|
|
19927
20016
|
getAllCameraMetrics: method(external_exports.void(), external_exports.array(CameraMetricsWithDeviceIdSchema).readonly()),
|
|
19928
20017
|
/** List the deviceIds currently attached to this runner. */
|
|
19929
|
-
getLocalCameras: method(external_exports.void(), external_exports.array(external_exports.number()).readonly())
|
|
20018
|
+
getLocalCameras: method(external_exports.void(), external_exports.array(external_exports.number()).readonly()),
|
|
20019
|
+
/**
|
|
20020
|
+
* Best-effort NATIVE-resolution crop of a retention-ring frame. Given the
|
|
20021
|
+
* `FrameHandle` that rode an inference-result event and a normalized `bbox`,
|
|
20022
|
+
* the runner asks the decode worker still holding that frame's NATIVE
|
|
20023
|
+
* surface to GPU/CPU-crop ONLY the ROI at native res and download just the
|
|
20024
|
+
* crop. Returns `null` on a miss (handle not registered, or the worker's
|
|
20025
|
+
* tiny native-retention ring already evicted the frame) — the caller falls
|
|
20026
|
+
* back to a detection-frame crop. Routed to the frame's owning node by
|
|
20027
|
+
* `handle.nodeId`; NEVER ships a full native frame.
|
|
20028
|
+
*/
|
|
20029
|
+
getNativeCrop: method(external_exports.object({
|
|
20030
|
+
handle: FrameHandleSchema,
|
|
20031
|
+
bbox: NativeCropBboxSchema,
|
|
20032
|
+
maxWidth: external_exports.number().int().positive().optional()
|
|
20033
|
+
}), NativeCropResultSchema.nullable())
|
|
19930
20034
|
}
|
|
19931
20035
|
};
|
|
19932
20036
|
var MotionStatusSchema = external_exports.object({
|
|
@@ -21849,7 +21953,9 @@ var AddonPageDeclarationSchema$1 = external_exports.object({
|
|
|
21849
21953
|
icon: external_exports.string(),
|
|
21850
21954
|
path: external_exports.string(),
|
|
21851
21955
|
remoteName: external_exports.string(),
|
|
21852
|
-
bundle: external_exports.string()
|
|
21956
|
+
bundle: external_exports.string(),
|
|
21957
|
+
section: external_exports.string().optional(),
|
|
21958
|
+
sectionLabel: external_exports.string().optional()
|
|
21853
21959
|
});
|
|
21854
21960
|
var AddonPageInfoSchema = external_exports.object({
|
|
21855
21961
|
addonId: external_exports.string(),
|
|
@@ -21882,7 +21988,18 @@ var AddonPageDeclarationSchema = external_exports.object({
|
|
|
21882
21988
|
* the static-file route can compute an mtime-based cache-buster URL
|
|
21883
21989
|
* without a separate filesystem stat.
|
|
21884
21990
|
*/
|
|
21885
|
-
bundle: external_exports.string()
|
|
21991
|
+
bundle: external_exports.string(),
|
|
21992
|
+
/**
|
|
21993
|
+
* Sidebar section this page docks into. Well-known ids: `'detection'`,
|
|
21994
|
+
* `'cluster'`, `'administration'` — the page renders inside that group.
|
|
21995
|
+
* Any OTHER string creates (or joins) a custom section rendered after
|
|
21996
|
+
* the built-in groups; its label comes from `sectionLabel` (first
|
|
21997
|
+
* declaration wins), falling back to the id. Absent → the legacy
|
|
21998
|
+
* "Addon Pages" group.
|
|
21999
|
+
*/
|
|
22000
|
+
section: external_exports.string().optional(),
|
|
22001
|
+
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
22002
|
+
sectionLabel: external_exports.string().optional()
|
|
21886
22003
|
});
|
|
21887
22004
|
var addonPagesSourceCapability = {
|
|
21888
22005
|
name: "addon-pages-source",
|
|
@@ -22067,6 +22184,17 @@ var WidgetMetadataSchema = external_exports.object({
|
|
|
22067
22184
|
deviceContext: external_exports.boolean().default(false),
|
|
22068
22185
|
integrationContext: external_exports.boolean().default(false)
|
|
22069
22186
|
}),
|
|
22187
|
+
/**
|
|
22188
|
+
* Loadable BEFORE authentication. The normal widget registry listing
|
|
22189
|
+
* (`addon-widgets.listWidgets`) is auth-gated, so a pre-auth surface
|
|
22190
|
+
* (the login page) cannot discover a widget through it. A widget that
|
|
22191
|
+
* declares `preAuth: true` marks itself as safe to mount on a pre-auth
|
|
22192
|
+
* screen — it is surfaced through the PUBLIC `auth.listLoginMethods`
|
|
22193
|
+
* login-method contribution channel (see `login-method.cap.ts`) rather
|
|
22194
|
+
* than the authenticated registry, and its bundle is served by the
|
|
22195
|
+
* public `/api/addon-widgets/:addonId/*` static route. Defaults false.
|
|
22196
|
+
*/
|
|
22197
|
+
preAuth: external_exports.boolean().optional().default(false),
|
|
22070
22198
|
/** Dashboard placement HINTS (operator can override per instance). */
|
|
22071
22199
|
defaultSize: WidgetSizeEnum.default("md"),
|
|
22072
22200
|
allowedSizes: external_exports.array(WidgetSizeEnum).readonly().default([
|
|
@@ -22454,6 +22582,41 @@ var authProviderCapability = {
|
|
|
22454
22582
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
22455
22583
|
mount: { kind: "skip" }
|
|
22456
22584
|
};
|
|
22585
|
+
var LoginStageEnum = external_exports.enum(["primary", "second-factor"]);
|
|
22586
|
+
var RedirectLoginMethodSchema = external_exports.object({
|
|
22587
|
+
kind: external_exports.literal("redirect"),
|
|
22588
|
+
/** Stable id within the login-method set (e.g. `auth-oidc/google`). */
|
|
22589
|
+
id: external_exports.string(),
|
|
22590
|
+
/** Operator-facing button label. */
|
|
22591
|
+
label: external_exports.string(),
|
|
22592
|
+
/** lucide-react icon name. */
|
|
22593
|
+
icon: external_exports.string().optional(),
|
|
22594
|
+
/** Addon-owned HTTP route the button navigates to (GET). */
|
|
22595
|
+
startUrl: external_exports.string(),
|
|
22596
|
+
stage: LoginStageEnum
|
|
22597
|
+
});
|
|
22598
|
+
var WidgetLoginMethodSchema = external_exports.object({
|
|
22599
|
+
kind: external_exports.literal("widget"),
|
|
22600
|
+
/** Stable id within the login-method set (e.g. `auth-webauthn/passkey-login`). */
|
|
22601
|
+
id: external_exports.string(),
|
|
22602
|
+
/** Owning addon id — drives the public bundle URL + the MF namespace. */
|
|
22603
|
+
addonId: external_exports.string(),
|
|
22604
|
+
/** Bundle filename inside the addon's dist dir (`remoteEntry.js`). */
|
|
22605
|
+
bundle: external_exports.string(),
|
|
22606
|
+
/** MF remote descriptor — `{ remoteName, exposedModule, componentKey }`. */
|
|
22607
|
+
remote: WidgetRemoteSchema,
|
|
22608
|
+
stage: LoginStageEnum
|
|
22609
|
+
});
|
|
22610
|
+
var LoginMethodContributionSchema = external_exports.discriminatedUnion("kind", [RedirectLoginMethodSchema, WidgetLoginMethodSchema]);
|
|
22611
|
+
var loginMethodCapability = {
|
|
22612
|
+
name: "login-method",
|
|
22613
|
+
scope: "system",
|
|
22614
|
+
mode: "collection",
|
|
22615
|
+
internal: true,
|
|
22616
|
+
methods: { getLoginMethods: method(external_exports.void(), external_exports.array(LoginMethodContributionSchema).readonly()) },
|
|
22617
|
+
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
22618
|
+
mount: { kind: "skip" }
|
|
22619
|
+
};
|
|
22457
22620
|
var BackupDestinationInfoSchema = external_exports.object({
|
|
22458
22621
|
/**
|
|
22459
22622
|
* Sub-id within this addon. Convention `default` for single-
|
|
@@ -24856,7 +25019,17 @@ var TrackSchema = external_exports.object({
|
|
|
24856
25019
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
24857
25020
|
totalDistance: external_exports.number(),
|
|
24858
25021
|
state: TrackStateSchema,
|
|
24859
|
-
active: external_exports.boolean()
|
|
25022
|
+
active: external_exports.boolean(),
|
|
25023
|
+
/** Deterministic key-event importance score in [0,1] (server-computed at
|
|
25024
|
+
* track expiry, recomputed on late label). Absent on legacy rows written
|
|
25025
|
+
* before scoring shipped — consumers degrade to absence / compute-on-read. */
|
|
25026
|
+
importance: external_exports.number().optional(),
|
|
25027
|
+
/** Id of the track's highest-confidence ObjectEvent (its representative
|
|
25028
|
+
* "best" frame). Absent when the track produced no object events. */
|
|
25029
|
+
bestEventId: external_exports.string().optional(),
|
|
25030
|
+
/** Tag of the importance sub-signal that dominated the score
|
|
25031
|
+
* (identity|dwell|proximity|class|confidence|travel|zone). */
|
|
25032
|
+
importanceReason: external_exports.string().optional()
|
|
24860
25033
|
});
|
|
24861
25034
|
var BaseEventFields = {
|
|
24862
25035
|
id: external_exports.string(),
|
|
@@ -24913,8 +25086,18 @@ var ObjectEventSchema = external_exports.object({
|
|
|
24913
25086
|
frameHeight: external_exports.number().optional(),
|
|
24914
25087
|
/** MediaStore key for the crop attached to this event (if any). */
|
|
24915
25088
|
mediaKey: external_exports.string().optional(),
|
|
25089
|
+
/** Design B: MediaStore key of the track's native-resolution key frame (the
|
|
25090
|
+
* best-detection full frame). Resolve via the event-media data-plane
|
|
25091
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`) for a detail view that
|
|
25092
|
+
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
25093
|
+
* sources — consumers fall back to `mediaKey` (the tight crop). */
|
|
25094
|
+
keyFrameMediaKey: external_exports.string().optional(),
|
|
24916
25095
|
/** Populated by B5 (recording playback URL for this event). */
|
|
24917
|
-
mediaUrl: external_exports.string().optional()
|
|
25096
|
+
mediaUrl: external_exports.string().optional(),
|
|
25097
|
+
/** The parent track's key-event importance [0,1], propagated to every object
|
|
25098
|
+
* event of the track (so an event row can be sorted by importance without a
|
|
25099
|
+
* track join). Absent on legacy rows / before the track was scored. */
|
|
25100
|
+
importance: external_exports.number().optional()
|
|
24918
25101
|
});
|
|
24919
25102
|
var AudioEventSchema = external_exports.object({
|
|
24920
25103
|
...BaseEventFields,
|
|
@@ -24938,7 +25121,8 @@ var MediaFileKindEnum = external_exports.enum([
|
|
|
24938
25121
|
"fullFrame",
|
|
24939
25122
|
"fullFrameBoxed",
|
|
24940
25123
|
"faceCrop",
|
|
24941
|
-
"plateCrop"
|
|
25124
|
+
"plateCrop",
|
|
25125
|
+
"keyFrame"
|
|
24942
25126
|
]);
|
|
24943
25127
|
var MediaFileSchema = external_exports.object({
|
|
24944
25128
|
key: external_exports.string(),
|
|
@@ -24959,6 +25143,32 @@ var DeviceEventQueryInput = external_exports.object({
|
|
|
24959
25143
|
projection: external_exports.enum(["full", "slim"]).optional()
|
|
24960
25144
|
});
|
|
24961
25145
|
var ObjectEventQueryInput = DeviceEventQueryInput.extend({ classFilter: external_exports.string().optional() });
|
|
25146
|
+
var KeyEventQueryInput = external_exports.object({
|
|
25147
|
+
deviceId: external_exports.number(),
|
|
25148
|
+
/** Window lower bound (track firstSeen ≥ since). */
|
|
25149
|
+
since: external_exports.number(),
|
|
25150
|
+
/** Window upper bound (track firstSeen ≤ until). */
|
|
25151
|
+
until: external_exports.number(),
|
|
25152
|
+
limit: external_exports.number().int().min(1).max(200).default(50),
|
|
25153
|
+
/** Drop tracks scoring below this importance. */
|
|
25154
|
+
minImportance: external_exports.number().min(0).max(1).optional(),
|
|
25155
|
+
/** Restrict to a single class (e.g. 'person'). */
|
|
25156
|
+
classFilter: external_exports.string().optional()
|
|
25157
|
+
});
|
|
25158
|
+
var KeyEventSchema = external_exports.object({
|
|
25159
|
+
/** The representative event id (the track's best ObjectEvent, else its trackId). */
|
|
25160
|
+
id: external_exports.string(),
|
|
25161
|
+
trackId: external_exports.string(),
|
|
25162
|
+
/** Track start time (firstSeen). */
|
|
25163
|
+
timestamp: external_exports.number(),
|
|
25164
|
+
className: external_exports.string(),
|
|
25165
|
+
label: external_exports.string().optional(),
|
|
25166
|
+
importance: external_exports.number(),
|
|
25167
|
+
/** Highest-confidence ObjectEvent id for the track (empty when none). */
|
|
25168
|
+
bestEventId: external_exports.string(),
|
|
25169
|
+
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
25170
|
+
windowMs: external_exports.number().optional()
|
|
25171
|
+
});
|
|
24962
25172
|
var TrackedDetectionSchema = external_exports.object({
|
|
24963
25173
|
trackId: external_exports.string(),
|
|
24964
25174
|
className: external_exports.string(),
|
|
@@ -25007,6 +25217,15 @@ var pipelineAnalyticsCapability = {
|
|
|
25007
25217
|
getMotionEvents: method(DeviceEventQueryInput, external_exports.array(MotionEventSchema).readonly()),
|
|
25008
25218
|
getObjectEvents: method(ObjectEventQueryInput, external_exports.array(ObjectEventSchema).readonly()),
|
|
25009
25219
|
getAudioEvents: method(DeviceEventQueryInput, external_exports.array(AudioEventSchema).readonly()),
|
|
25220
|
+
/**
|
|
25221
|
+
* Importance-ranked highlights for a device+window. Queries completed
|
|
25222
|
+
* tracks by (deviceId, firstSeen ∈ [since,until]), scores each (or reuses
|
|
25223
|
+
* the persisted score), filters by minImportance/classFilter, orders by
|
|
25224
|
+
* importance desc, and returns up to `limit` compact key events mapped to
|
|
25225
|
+
* each track's best event. Legacy tracks lacking a persisted score are
|
|
25226
|
+
* scored on-read (no write). Degrades to `[]` on error.
|
|
25227
|
+
*/
|
|
25228
|
+
getKeyEvents: method(KeyEventQueryInput, external_exports.array(KeyEventSchema).readonly()),
|
|
25010
25229
|
/** Server-side bucketed event counts for the 24-hour timeline.
|
|
25011
25230
|
* Returns one entry per non-empty bucket; empty buckets are omitted. */
|
|
25012
25231
|
getEventDensity: method(external_exports.object({
|
|
@@ -25091,11 +25310,11 @@ var pipelineAnalyticsCapability = {
|
|
|
25091
25310
|
}
|
|
25092
25311
|
};
|
|
25093
25312
|
var CameraPipelineConfigSchema = external_exports.object({
|
|
25094
|
-
engine: PipelineEngineChoiceSchema,
|
|
25313
|
+
engine: PipelineEngineChoiceSchema.optional(),
|
|
25095
25314
|
steps: external_exports.array(PipelineStepInputSchema).readonly(),
|
|
25096
25315
|
audio: external_exports.object({
|
|
25097
|
-
engine: PipelineEngineChoiceSchema,
|
|
25098
|
-
modelId: external_exports.string(),
|
|
25316
|
+
engine: PipelineEngineChoiceSchema.optional(),
|
|
25317
|
+
modelId: external_exports.string().optional(),
|
|
25099
25318
|
enabled: external_exports.boolean(),
|
|
25100
25319
|
settings: external_exports.record(external_exports.string(), external_exports.unknown()).readonly().optional()
|
|
25101
25320
|
}).nullable().optional()
|
|
@@ -25110,7 +25329,7 @@ var PipelineTemplateSchema = external_exports.object({
|
|
|
25110
25329
|
});
|
|
25111
25330
|
var AgentAddonConfigSchema = external_exports.object({
|
|
25112
25331
|
enabled: external_exports.boolean(),
|
|
25113
|
-
modelId: external_exports.string(),
|
|
25332
|
+
modelId: external_exports.string().optional(),
|
|
25114
25333
|
settings: external_exports.record(external_exports.string(), external_exports.unknown()).readonly()
|
|
25115
25334
|
});
|
|
25116
25335
|
var AgentPipelineSettingsSchema = external_exports.object({
|
|
@@ -25120,12 +25339,25 @@ var AgentPipelineSettingsSchema = external_exports.object({
|
|
|
25120
25339
|
detectWeight: external_exports.number().positive().optional(),
|
|
25121
25340
|
/** Node is eligible to run the detection pipeline (decode + inference). */
|
|
25122
25341
|
detect: external_exports.boolean().optional(),
|
|
25123
|
-
/**
|
|
25342
|
+
/**
|
|
25343
|
+
* DEPRECATED AND IGNORED. Decode is always co-located with its frame
|
|
25344
|
+
* consumer, so decode eligibility IS detect eligibility. Kept optional in
|
|
25345
|
+
* the schema ONLY so persisted stores written before the removal still
|
|
25346
|
+
* parse — no code reads it and no write path emits it.
|
|
25347
|
+
*/
|
|
25124
25348
|
decode: external_exports.boolean().optional(),
|
|
25125
25349
|
/** Node is eligible to run audio-analyzer sessions. */
|
|
25126
25350
|
audio: external_exports.boolean().optional(),
|
|
25127
25351
|
/** Node is eligible to be the ingest / source-owner (serve the restream). */
|
|
25128
|
-
ingest: external_exports.boolean().optional()
|
|
25352
|
+
ingest: external_exports.boolean().optional(),
|
|
25353
|
+
/**
|
|
25354
|
+
* Operator override for the LAN host a cross-node decoder dials to reach
|
|
25355
|
+
* THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
|
|
25356
|
+
* falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
|
|
25357
|
+
* it already uses to reach the hub). Set this only when the auto-detected
|
|
25358
|
+
* address is wrong (multi-homed host, NAT, custom interface).
|
|
25359
|
+
*/
|
|
25360
|
+
reachableHost: external_exports.string().optional()
|
|
25129
25361
|
});
|
|
25130
25362
|
var CameraPipelineForAgentSchema = external_exports.object({
|
|
25131
25363
|
steps: external_exports.array(PipelineStepInputSchema).readonly(),
|
|
@@ -25162,20 +25394,6 @@ var PipelineAssignmentSchema = external_exports.object({
|
|
|
25162
25394
|
/** Unix timestamp (ms) when the assignment was last updated. */
|
|
25163
25395
|
assignedAt: external_exports.number()
|
|
25164
25396
|
});
|
|
25165
|
-
var DecoderAssignmentSchema = external_exports.object({
|
|
25166
|
-
deviceId: external_exports.number(),
|
|
25167
|
-
/** Moleculer node id of the decoder provider currently responsible for this camera. */
|
|
25168
|
-
decoderNodeId: external_exports.string(),
|
|
25169
|
-
/** True when the assignment was set manually via `assignDecoder`, false when chosen by the balancer. */
|
|
25170
|
-
pinned: external_exports.boolean(),
|
|
25171
|
-
/** Why this assignment was made — useful for debugging the decoder balancer. */
|
|
25172
|
-
reason: external_exports.enum([
|
|
25173
|
-
"manual",
|
|
25174
|
-
"co-located",
|
|
25175
|
-
"capacity",
|
|
25176
|
-
"hardware-affinity"
|
|
25177
|
-
])
|
|
25178
|
-
});
|
|
25179
25397
|
var AgentLoadSummarySchema = external_exports.object({
|
|
25180
25398
|
nodeId: external_exports.string(),
|
|
25181
25399
|
online: external_exports.boolean(),
|
|
@@ -25198,6 +25416,11 @@ var GlobalMetricsSchema = external_exports.object({
|
|
|
25198
25416
|
queueDepth: external_exports.number()
|
|
25199
25417
|
});
|
|
25200
25418
|
var CapabilityBindingsSchema = external_exports.record(external_exports.string(), external_exports.string());
|
|
25419
|
+
var IngestOwnerSchema = external_exports.object({
|
|
25420
|
+
ownerNodeId: external_exports.string(),
|
|
25421
|
+
reachableHost: external_exports.string().optional(),
|
|
25422
|
+
configIssue: external_exports.string().optional()
|
|
25423
|
+
});
|
|
25201
25424
|
var CameraSourceStreamSchema = external_exports.object({
|
|
25202
25425
|
camStreamId: external_exports.string(),
|
|
25203
25426
|
codec: external_exports.string(),
|
|
@@ -25211,6 +25434,14 @@ var CameraAssignmentStatusSchema = external_exports.object({
|
|
|
25211
25434
|
detectionNodeId: external_exports.string().nullable(),
|
|
25212
25435
|
decoderNodeId: external_exports.string().nullable(),
|
|
25213
25436
|
audioNodeId: external_exports.string().nullable(),
|
|
25437
|
+
/**
|
|
25438
|
+
* The node that OWNS this camera's physical source pull (dials the RTSP and
|
|
25439
|
+
* hosts the broker/restream) — the cluster ingest owner today
|
|
25440
|
+
* (`clusterRoles.ingestNode`), per-camera once source assignment lands. Lets
|
|
25441
|
+
* the UI show WHERE a camera is sourced without SSH/logs, and is the node the
|
|
25442
|
+
* broker block below was read from (pinned). Nullable only pre-wiring.
|
|
25443
|
+
*/
|
|
25444
|
+
sourceNodeId: external_exports.string().nullable(),
|
|
25214
25445
|
pinned: external_exports.object({
|
|
25215
25446
|
detection: external_exports.boolean(),
|
|
25216
25447
|
decoder: external_exports.boolean(),
|
|
@@ -25384,21 +25615,14 @@ var pipelineOrchestratorCapability = {
|
|
|
25384
25615
|
kind: "mutation",
|
|
25385
25616
|
auth: "admin"
|
|
25386
25617
|
}),
|
|
25387
|
-
/**
|
|
25388
|
-
|
|
25389
|
-
|
|
25390
|
-
|
|
25391
|
-
|
|
25392
|
-
|
|
25393
|
-
|
|
25394
|
-
|
|
25395
|
-
/** Clear a device's decoder pin (revert to auto). */
|
|
25396
|
-
unassignDecoder: method(external_exports.object({ deviceId: external_exports.number() }), external_exports.void(), {
|
|
25397
|
-
kind: "mutation",
|
|
25398
|
-
auth: "admin"
|
|
25399
|
-
}),
|
|
25400
|
-
/** Get every camera's decoder placement. */
|
|
25401
|
-
getDecoderAssignments: method(external_exports.void(), external_exports.array(DecoderAssignmentSchema).readonly()),
|
|
25618
|
+
/**
|
|
25619
|
+
* The cluster's single camera-source owner — resolved UNCONDITIONALLY
|
|
25620
|
+
* from `clusterRoles.ingestNode` (NOT the detection-decode
|
|
25621
|
+
* `remoteSourcingNodes` knob). Consumers (recorder/snapshot/audio) pin
|
|
25622
|
+
* their broker calls to `ownerNodeId` and dial `reachableHost` when
|
|
25623
|
+
* present. Defaults to `{ ownerNodeId: 'hub' }`.
|
|
25624
|
+
*/
|
|
25625
|
+
getIngestOwner: method(external_exports.void(), IngestOwnerSchema),
|
|
25402
25626
|
/** Pin a device's audio analysis to a specific cluster node. */
|
|
25403
25627
|
assignAudio: method(external_exports.object({
|
|
25404
25628
|
deviceId: external_exports.number(),
|
|
@@ -25430,23 +25654,6 @@ var pipelineOrchestratorCapability = {
|
|
|
25430
25654
|
pinned: external_exports.boolean(),
|
|
25431
25655
|
assignedAt: external_exports.number()
|
|
25432
25656
|
}))),
|
|
25433
|
-
/**
|
|
25434
|
-
* Get one camera's decoder placement (computed if not yet pinned).
|
|
25435
|
-
*
|
|
25436
|
-
* ADVISORY today: reports the orchestrator's decoder preference only.
|
|
25437
|
-
* Actual decode placement is broker-owned (local-node pin + frame-plane
|
|
25438
|
-
* co-location guard). Reserved to become the binding source/decoder-owner
|
|
25439
|
-
* control in the stream-LB epic (Phase 2).
|
|
25440
|
-
*
|
|
25441
|
-
* `pipelineNodeId` is the node already chosen to run inference for
|
|
25442
|
-
* this camera. When provided, the balancer prefers co-location with
|
|
25443
|
-
* it; omitted → falls back to the last known assignment in the
|
|
25444
|
-
* `assignments` map and finally to 'hub'.
|
|
25445
|
-
*/
|
|
25446
|
-
getDecoderAssignment: method(external_exports.object({
|
|
25447
|
-
deviceId: external_exports.number(),
|
|
25448
|
-
pipelineNodeId: external_exports.string().optional()
|
|
25449
|
-
}), DecoderAssignmentSchema),
|
|
25450
25657
|
/** Read one agent's settings. Null when not yet seeded. */
|
|
25451
25658
|
getAgentSettings: method(external_exports.object({ agentNodeId: external_exports.string() }), AgentPipelineSettingsSchema.nullable()),
|
|
25452
25659
|
/** Enumerate every agent's settings (hub + remote runners). */
|
|
@@ -25516,20 +25723,65 @@ var pipelineOrchestratorCapability = {
|
|
|
25516
25723
|
* `enabledDecoderNodes`, `enabledAudioNodes`, `remoteSourcingNodes`).
|
|
25517
25724
|
* Each flag is optional in the patch: omit a flag to leave it unchanged,
|
|
25518
25725
|
* pass `null` to reset it to the node default (`hub` → capable, every
|
|
25519
|
-
* other node → not). Detection/
|
|
25520
|
-
*
|
|
25521
|
-
*
|
|
25726
|
+
* other node → not). Detection/audio eligibility is derived from these
|
|
25727
|
+
* flags across the cluster; changing them re-derives the enabled sets
|
|
25728
|
+
* and reconciles dispatch immediately. There is NO separate decode flag:
|
|
25729
|
+
* decode is always co-located with its frame consumer, so decode
|
|
25730
|
+
* eligibility IS detect eligibility.
|
|
25522
25731
|
*/
|
|
25523
25732
|
setAgentCapabilities: method(external_exports.object({
|
|
25524
25733
|
agentNodeId: external_exports.string(),
|
|
25525
25734
|
detect: external_exports.boolean().nullable().optional(),
|
|
25526
|
-
decode: external_exports.boolean().nullable().optional(),
|
|
25527
25735
|
audio: external_exports.boolean().nullable().optional(),
|
|
25528
25736
|
ingest: external_exports.boolean().nullable().optional()
|
|
25529
25737
|
}), external_exports.object({ success: external_exports.literal(true) }), {
|
|
25530
25738
|
kind: "mutation",
|
|
25531
25739
|
auth: "admin"
|
|
25532
25740
|
}),
|
|
25741
|
+
/**
|
|
25742
|
+
* Set (or clear) the operator override for the LAN host a cross-node
|
|
25743
|
+
* decoder dials to reach this node's restream. Pass a non-empty string to
|
|
25744
|
+
* override the auto-detected address (the runner's `CAMSTACK_HUB_URL`
|
|
25745
|
+
* default); pass `null` or an empty string to clear it and revert to
|
|
25746
|
+
* auto-detect. Applied on the next dispatch cycle — takes effect for new
|
|
25747
|
+
* cross-node attaches; existing attaches keep their current host until
|
|
25748
|
+
* re-dispatched.
|
|
25749
|
+
*/
|
|
25750
|
+
setAgentReachableHost: method(external_exports.object({
|
|
25751
|
+
agentNodeId: external_exports.string(),
|
|
25752
|
+
reachableHost: external_exports.string().nullable()
|
|
25753
|
+
}), external_exports.object({ success: external_exports.literal(true) }), {
|
|
25754
|
+
kind: "mutation",
|
|
25755
|
+
auth: "admin"
|
|
25756
|
+
}),
|
|
25757
|
+
/**
|
|
25758
|
+
* Reset one node's pipeline to its hardware-aware defaults — the HONEST
|
|
25759
|
+
* reset (replaces the executor's legacy `resetToDefault`, which cleared a
|
|
25760
|
+
* dead persisted step-tree seed nothing in the live path read):
|
|
25761
|
+
* (a) strips every `modelId` pin from that node's
|
|
25762
|
+
* `agentSettings.addonDefaults` (cells revert to Auto — the node
|
|
25763
|
+
* resolves its own hardware-aware format default at runtime);
|
|
25764
|
+
* (b) clears per-camera step overrides scoped to that node
|
|
25765
|
+
* (`stepOverridesByAgent[node]` + the wholesale
|
|
25766
|
+
* `pipelineByAgent[node]` escape hatch);
|
|
25767
|
+
* (c) clears the executor-side per-device settings stores on that node
|
|
25768
|
+
* (`pipelineExecutor.clearDeviceOverrides`);
|
|
25769
|
+
* (d) hot-reloads every camera assigned to the node.
|
|
25770
|
+
*
|
|
25771
|
+
* Returns the EFFECTIVE post-reset object-detection model for the node
|
|
25772
|
+
* (the executor's pure hardware-aware default) so the UI can report what
|
|
25773
|
+
* will actually run — not a value that never reaches the live path.
|
|
25774
|
+
*/
|
|
25775
|
+
resetNodePipelineDefaults: method(external_exports.object({ agentNodeId: external_exports.string() }), external_exports.object({
|
|
25776
|
+
success: external_exports.literal(true),
|
|
25777
|
+
/** Hardware-aware default detection model now in effect on the node (null when unresolvable). */
|
|
25778
|
+
effectiveModelId: external_exports.string().nullable(),
|
|
25779
|
+
/** Number of cameras whose node-scoped overrides were cleared. */
|
|
25780
|
+
clearedCameraOverrides: external_exports.number()
|
|
25781
|
+
}), {
|
|
25782
|
+
kind: "mutation",
|
|
25783
|
+
auth: "admin"
|
|
25784
|
+
}),
|
|
25533
25785
|
/** Read one camera's settings. Null when never touched (inherits agent defaults fully). */
|
|
25534
25786
|
getCameraSettings: method(external_exports.object({ deviceId: external_exports.number() }), CameraPipelineSettingsSchema.nullable()),
|
|
25535
25787
|
/** Set or clear the 3-state toggle for one (camera, addonId). Pass `enabled: null` to clear and revert to agent default. */
|
|
@@ -25621,33 +25873,107 @@ var pipelineOrchestratorCapability = {
|
|
|
25621
25873
|
})
|
|
25622
25874
|
}
|
|
25623
25875
|
};
|
|
25624
|
-
var
|
|
25625
|
-
|
|
25626
|
-
|
|
25627
|
-
|
|
25628
|
-
|
|
25629
|
-
|
|
25876
|
+
var ServerBootModeSchema = external_exports.enum([
|
|
25877
|
+
"workspace",
|
|
25878
|
+
"baked",
|
|
25879
|
+
"data-root"
|
|
25880
|
+
]);
|
|
25881
|
+
var ServerUpdateStateSchema = external_exports.enum([
|
|
25882
|
+
"idle",
|
|
25883
|
+
"checking",
|
|
25884
|
+
"staging",
|
|
25885
|
+
"pending-restart",
|
|
25886
|
+
"awaiting-confirmation"
|
|
25887
|
+
]);
|
|
25888
|
+
var ServerRollbackInfoSchema = external_exports.object({
|
|
25889
|
+
/** The version that failed (or was manually rolled back). */
|
|
25890
|
+
fromVersion: external_exports.string(),
|
|
25891
|
+
/** The version rolled back to; null = the baked seed. */
|
|
25892
|
+
toVersion: external_exports.string().nullable(),
|
|
25893
|
+
atMs: external_exports.number(),
|
|
25894
|
+
reason: external_exports.string()
|
|
25630
25895
|
});
|
|
25631
|
-
var
|
|
25632
|
-
|
|
25633
|
-
|
|
25634
|
-
|
|
25896
|
+
var ServerPackageStatusSchema = external_exports.object({
|
|
25897
|
+
/** Root package name (`@camstack/server` on the hub). */
|
|
25898
|
+
packageName: external_exports.string(),
|
|
25899
|
+
/** Version of the code the running process ACTUALLY loaded. */
|
|
25900
|
+
runningVersion: external_exports.string().nullable(),
|
|
25901
|
+
/** Node.js runtime version the node's process runs on (`process.versions.node`). */
|
|
25902
|
+
nodeRuntimeVersion: external_exports.string().nullable(),
|
|
25903
|
+
/** Active data-dir root version; null when booted from seed/workspace. */
|
|
25904
|
+
activeVersion: external_exports.string().nullable(),
|
|
25905
|
+
/** N-1 version kept for rollback; null when no previous version exists. */
|
|
25906
|
+
previousVersion: external_exports.string().nullable(),
|
|
25907
|
+
/** Version of the immutable baked seed closure (image fallback). */
|
|
25908
|
+
seedVersion: external_exports.string().nullable(),
|
|
25909
|
+
/** Latest registry version from the most recent check (null = never checked). */
|
|
25910
|
+
latestVersion: external_exports.string().nullable(),
|
|
25911
|
+
updateAvailable: external_exports.boolean(),
|
|
25912
|
+
bootMode: ServerBootModeSchema,
|
|
25913
|
+
updateState: ServerUpdateStateSchema,
|
|
25914
|
+
/** Version staged + awaiting its probation boot, when one is pending. */
|
|
25915
|
+
pendingVersion: external_exports.string().nullable(),
|
|
25916
|
+
/** Set when the last freshly-activated version failed its boot health-check. */
|
|
25917
|
+
rolledBack: ServerRollbackInfoSchema.nullable(),
|
|
25918
|
+
/**
|
|
25919
|
+
* True when `server-root/state.json` EXISTS but is unreadable/corrupt — the
|
|
25920
|
+
* hub is running from the baked seed (or workspace) while installed data-dir
|
|
25921
|
+
* versions are being IGNORED. Surfaced as a warning in the UI.
|
|
25922
|
+
*/
|
|
25923
|
+
stateFileCorrupt: external_exports.boolean(),
|
|
25924
|
+
lastCheckedAtMs: external_exports.number().nullable()
|
|
25925
|
+
});
|
|
25926
|
+
var ServerUpdateCheckResultSchema = external_exports.object({
|
|
25927
|
+
packageName: external_exports.string(),
|
|
25928
|
+
runningVersion: external_exports.string().nullable(),
|
|
25929
|
+
latestVersion: external_exports.string().nullable(),
|
|
25930
|
+
updateAvailable: external_exports.boolean(),
|
|
25931
|
+
checkedAtMs: external_exports.number(),
|
|
25932
|
+
/** Non-null when the registry lookup failed (offline, bad registry, …). */
|
|
25933
|
+
error: external_exports.string().nullable()
|
|
25934
|
+
});
|
|
25935
|
+
var ServerUpdateActionResultSchema = external_exports.object({
|
|
25936
|
+
accepted: external_exports.boolean(),
|
|
25937
|
+
targetVersion: external_exports.string().nullable(),
|
|
25938
|
+
/** True when a graceful restart was scheduled to apply the change. */
|
|
25939
|
+
restarting: external_exports.boolean(),
|
|
25940
|
+
message: external_exports.string()
|
|
25635
25941
|
});
|
|
25636
|
-
var
|
|
25637
|
-
name: "
|
|
25942
|
+
var serverManagementCapability = {
|
|
25943
|
+
name: "server-management",
|
|
25638
25944
|
scope: "system",
|
|
25639
|
-
mode: "
|
|
25640
|
-
internal: true,
|
|
25945
|
+
mode: "singleton",
|
|
25641
25946
|
methods: {
|
|
25642
|
-
|
|
25643
|
-
|
|
25644
|
-
|
|
25645
|
-
|
|
25646
|
-
|
|
25647
|
-
|
|
25947
|
+
getServerPackageStatus: method(external_exports.void(), ServerPackageStatusSchema, { auth: "admin" }),
|
|
25948
|
+
checkServerUpdate: method(external_exports.void(), ServerUpdateCheckResultSchema, {
|
|
25949
|
+
kind: "mutation",
|
|
25950
|
+
auth: "admin"
|
|
25951
|
+
}),
|
|
25952
|
+
applyServerUpdate: method(external_exports.object({
|
|
25953
|
+
/** Explicit target version; omitted = latest from the registry. */
|
|
25954
|
+
version: external_exports.string().optional()
|
|
25955
|
+
}), ServerUpdateActionResultSchema, {
|
|
25956
|
+
kind: "mutation",
|
|
25957
|
+
auth: "admin"
|
|
25958
|
+
}),
|
|
25959
|
+
rollbackServerUpdate: method(external_exports.void(), ServerUpdateActionResultSchema, {
|
|
25960
|
+
kind: "mutation",
|
|
25961
|
+
auth: "admin"
|
|
25962
|
+
}),
|
|
25963
|
+
/**
|
|
25964
|
+
* Plain process restart of the node's root process — no version change.
|
|
25965
|
+
* The supervisor (docker restart policy / launchd / Electron main)
|
|
25966
|
+
* relaunches and the starter loads the SAME active version. Refused while
|
|
25967
|
+
* a stage is in flight or a version is already staged awaiting restart
|
|
25968
|
+
* (use apply/rollback instead, so the pending version is not skipped).
|
|
25969
|
+
*/
|
|
25970
|
+
restartServer: method(external_exports.void(), ServerUpdateActionResultSchema, {
|
|
25971
|
+
kind: "mutation",
|
|
25972
|
+
auth: "admin"
|
|
25973
|
+
})
|
|
25648
25974
|
},
|
|
25649
25975
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
25650
|
-
mount: { kind: "
|
|
25976
|
+
mount: { kind: "server-provided" }
|
|
25651
25977
|
};
|
|
25652
25978
|
var QueryFilterSchema = external_exports.object({
|
|
25653
25979
|
where: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
@@ -25866,27 +26192,26 @@ var snapshotCapability = {
|
|
|
25866
26192
|
invalidateCache: method(external_exports.object({ deviceId: external_exports.number() }), external_exports.void(), {
|
|
25867
26193
|
kind: "mutation",
|
|
25868
26194
|
auth: "admin"
|
|
25869
|
-
})
|
|
26195
|
+
}),
|
|
26196
|
+
/**
|
|
26197
|
+
* Cache-only batch overview — answers from the wrapper's in-memory cache in
|
|
26198
|
+
* O(n) and NEVER triggers a capture. Lets a grid skip requesting images for
|
|
26199
|
+
* devices that never produced a frame, and gives it an ETag per device for
|
|
26200
|
+
* conditional (304-able) image fetches. `lastCapturedAt`/`cacheAgeMs`/`etag`
|
|
26201
|
+
* are null for a device with no cached frame.
|
|
26202
|
+
*/
|
|
26203
|
+
getSnapshotOverview: systemMethod(external_exports.object({ deviceIds: external_exports.array(external_exports.number()).min(1).max(200) }), external_exports.array(external_exports.object({
|
|
26204
|
+
deviceId: external_exports.number(),
|
|
26205
|
+
lastCapturedAt: external_exports.number().nullable(),
|
|
26206
|
+
cacheAgeMs: external_exports.number().nullable(),
|
|
26207
|
+
etag: external_exports.string().nullable()
|
|
26208
|
+
})))
|
|
25870
26209
|
},
|
|
25871
26210
|
status: {
|
|
25872
26211
|
schema: SnapshotStatusSchema,
|
|
25873
26212
|
kind: "poll"
|
|
25874
26213
|
}
|
|
25875
26214
|
};
|
|
25876
|
-
var snapshotProviderCapability = {
|
|
25877
|
-
name: "snapshot-provider",
|
|
25878
|
-
scope: "system",
|
|
25879
|
-
mode: "collection",
|
|
25880
|
-
methods: {
|
|
25881
|
-
supportsDevice: method(external_exports.object({ deviceId: external_exports.number() }), external_exports.boolean()),
|
|
25882
|
-
getSnapshot: method(external_exports.object({
|
|
25883
|
-
deviceId: external_exports.number(),
|
|
25884
|
-
streamId: external_exports.string().optional()
|
|
25885
|
-
}), SnapshotImageSchema.nullable())
|
|
25886
|
-
},
|
|
25887
|
-
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
25888
|
-
mount: { kind: "custom" }
|
|
25889
|
-
};
|
|
25890
26215
|
var SsoBridgeClaimsSchema = external_exports.object({
|
|
25891
26216
|
userId: external_exports.string(),
|
|
25892
26217
|
username: external_exports.string(),
|
|
@@ -26220,6 +26545,20 @@ var userPasskeysCapability = {
|
|
|
26220
26545
|
kind: "mutation",
|
|
26221
26546
|
access: "view"
|
|
26222
26547
|
}),
|
|
26548
|
+
beginDiscoverableAuthentication: method(external_exports.object({}), external_exports.object({ optionsJSON: external_exports.record(external_exports.string(), external_exports.unknown()) }), {
|
|
26549
|
+
kind: "mutation",
|
|
26550
|
+
access: "view"
|
|
26551
|
+
}),
|
|
26552
|
+
finishDiscoverableAuthentication: method(external_exports.object({
|
|
26553
|
+
/** AuthenticationResponseJSON from the browser. */
|
|
26554
|
+
response: external_exports.record(external_exports.string(), external_exports.unknown())
|
|
26555
|
+
}), external_exports.object({
|
|
26556
|
+
verified: external_exports.boolean(),
|
|
26557
|
+
userId: external_exports.string().nullable()
|
|
26558
|
+
}), {
|
|
26559
|
+
kind: "mutation",
|
|
26560
|
+
access: "view"
|
|
26561
|
+
}),
|
|
26223
26562
|
listPasskeys: method(external_exports.object({ userId: external_exports.string() }), external_exports.array(PasskeySummarySchema), { auth: "admin" }),
|
|
26224
26563
|
removePasskey: method(external_exports.object({
|
|
26225
26564
|
userId: external_exports.string(),
|
|
@@ -26228,6 +26567,15 @@ var userPasskeysCapability = {
|
|
|
26228
26567
|
kind: "mutation",
|
|
26229
26568
|
auth: "admin",
|
|
26230
26569
|
access: "delete"
|
|
26570
|
+
}),
|
|
26571
|
+
getSecondFactorPreference: method(external_exports.object({ userId: external_exports.string() }), external_exports.object({ enabled: external_exports.boolean() }), { auth: "admin" }),
|
|
26572
|
+
setSecondFactorPreference: method(external_exports.object({
|
|
26573
|
+
userId: external_exports.string(),
|
|
26574
|
+
enabled: external_exports.boolean()
|
|
26575
|
+
}), external_exports.object({ success: external_exports.literal(true) }), {
|
|
26576
|
+
kind: "mutation",
|
|
26577
|
+
auth: "admin",
|
|
26578
|
+
access: "create"
|
|
26231
26579
|
})
|
|
26232
26580
|
}
|
|
26233
26581
|
};
|
|
@@ -26291,49 +26639,6 @@ var webrtcClientHintsSchema = external_exports.object({
|
|
|
26291
26639
|
/** Hard tier override; takes precedence over scoring when registered. */
|
|
26292
26640
|
prefersTier: external_exports.string().optional()
|
|
26293
26641
|
}).partial();
|
|
26294
|
-
var webrtcCapability = {
|
|
26295
|
-
name: "webrtc",
|
|
26296
|
-
scope: "system",
|
|
26297
|
-
mode: "collection",
|
|
26298
|
-
internal: true,
|
|
26299
|
-
methods: {
|
|
26300
|
-
handleOffer: method(external_exports.object({
|
|
26301
|
-
streamId: external_exports.string(),
|
|
26302
|
-
sdpOffer: external_exports.string()
|
|
26303
|
-
}), external_exports.string(), { kind: "mutation" }),
|
|
26304
|
-
supportsStream: method(external_exports.object({ streamId: external_exports.string() }), external_exports.boolean()),
|
|
26305
|
-
registerStream: method(external_exports.object({
|
|
26306
|
-
streamId: external_exports.string(),
|
|
26307
|
-
codec: external_exports.string()
|
|
26308
|
-
}), external_exports.void(), { kind: "mutation" }),
|
|
26309
|
-
unregisterStream: method(external_exports.object({ streamId: external_exports.string() }), external_exports.void(), { kind: "mutation" }),
|
|
26310
|
-
/**
|
|
26311
|
-
* Two-step server-offer signaling. `hints` is optional — providers
|
|
26312
|
-
* that don't care about adaptive source selection ignore it.
|
|
26313
|
-
*/
|
|
26314
|
-
createSession: method(external_exports.object({
|
|
26315
|
-
streamId: external_exports.string(),
|
|
26316
|
-
hints: webrtcClientHintsSchema.optional()
|
|
26317
|
-
}), external_exports.object({
|
|
26318
|
-
sessionId: external_exports.string(),
|
|
26319
|
-
sdpOffer: external_exports.string()
|
|
26320
|
-
}), { kind: "mutation" }),
|
|
26321
|
-
handleAnswer: method(external_exports.object({
|
|
26322
|
-
sessionId: external_exports.string(),
|
|
26323
|
-
sdpAnswer: external_exports.string()
|
|
26324
|
-
}), external_exports.void(), { kind: "mutation" }),
|
|
26325
|
-
closeSession: method(external_exports.object({ sessionId: external_exports.string() }), external_exports.void(), { kind: "mutation" }),
|
|
26326
|
-
/**
|
|
26327
|
-
* Whether this provider supports adaptive bitrate for the given stream.
|
|
26328
|
-
* Currently always false — adaptive selection is one-shot at session
|
|
26329
|
-
* start, not in-session encoder switching. Phase 5 plans to layer
|
|
26330
|
-
* encoder-driven adaptation on top.
|
|
26331
|
-
*/
|
|
26332
|
-
hasAdaptiveBitrate: method(external_exports.object({ streamId: external_exports.string() }), external_exports.boolean())
|
|
26333
|
-
},
|
|
26334
|
-
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
26335
|
-
mount: { kind: "skip" }
|
|
26336
|
-
};
|
|
26337
26642
|
var WebrtcStreamTargetSchema = external_exports.discriminatedUnion("kind", [
|
|
26338
26643
|
external_exports.object({ kind: external_exports.literal("adaptive") }),
|
|
26339
26644
|
external_exports.object({
|
|
@@ -26576,7 +26881,7 @@ var webrtcSessionCapability = {
|
|
|
26576
26881
|
}).nullable() }))
|
|
26577
26882
|
},
|
|
26578
26883
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
26579
|
-
mount: { kind: "
|
|
26884
|
+
mount: { kind: "server-provided" }
|
|
26580
26885
|
};
|
|
26581
26886
|
var AccessoriesStatusSchema = external_exports.object({
|
|
26582
26887
|
/** All accessory children of the parent. */
|
|
@@ -27176,7 +27481,7 @@ var addonsCapability = {
|
|
|
27176
27481
|
}), LogStreamEntrySchema, { kind: "subscription" })
|
|
27177
27482
|
},
|
|
27178
27483
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
27179
|
-
mount: { kind: "
|
|
27484
|
+
mount: { kind: "server-provided" }
|
|
27180
27485
|
};
|
|
27181
27486
|
var buttonCapability = {
|
|
27182
27487
|
name: "button",
|
|
@@ -27298,7 +27603,17 @@ var FaceInfoSchema = external_exports.object({
|
|
|
27298
27603
|
recognizedIdentityId: external_exports.string().optional(),
|
|
27299
27604
|
identityName: external_exports.string().optional(),
|
|
27300
27605
|
assigned: external_exports.boolean(),
|
|
27301
|
-
base64: external_exports.string().optional()
|
|
27606
|
+
base64: external_exports.string().optional(),
|
|
27607
|
+
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
27608
|
+
* view draw the box over the native `keyFrameMediaKey` frame. Absent on
|
|
27609
|
+
* legacy rows written before design B. */
|
|
27610
|
+
faceBbox: BoundingBoxSchema.optional(),
|
|
27611
|
+
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
27612
|
+
* Fetch the native JPEG via the event-media data-plane
|
|
27613
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`). Absent when the
|
|
27614
|
+
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
27615
|
+
* back to the inline `base64` face crop. */
|
|
27616
|
+
keyFrameMediaKey: external_exports.string().optional()
|
|
27302
27617
|
});
|
|
27303
27618
|
var FaceFilterEnum = external_exports.enum([
|
|
27304
27619
|
"unassigned",
|
|
@@ -27521,7 +27836,7 @@ var integrationsCapability = {
|
|
|
27521
27836
|
})
|
|
27522
27837
|
},
|
|
27523
27838
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
27524
|
-
mount: { kind: "
|
|
27839
|
+
mount: { kind: "server-provided" }
|
|
27525
27840
|
};
|
|
27526
27841
|
var IntercomAbilitySchema = external_exports.object({
|
|
27527
27842
|
/** Codecs accepted by firmware, in preference order. Driver-authored strings. */
|
|
@@ -28061,7 +28376,7 @@ var networkQualityCapability = {
|
|
|
28061
28376
|
}), external_exports.void(), { kind: "mutation" })
|
|
28062
28377
|
},
|
|
28063
28378
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
28064
|
-
mount: { kind: "
|
|
28379
|
+
mount: { kind: "server-provided" }
|
|
28065
28380
|
};
|
|
28066
28381
|
var TopologyServiceSchema = external_exports.object({
|
|
28067
28382
|
addonId: external_exports.string(),
|
|
@@ -28090,6 +28405,10 @@ var TopologyCategorySchema = external_exports.object({
|
|
|
28090
28405
|
healthy: external_exports.number(),
|
|
28091
28406
|
addons: external_exports.array(TopologyCategoryAddonSchema).readonly()
|
|
28092
28407
|
});
|
|
28408
|
+
var TopologyRootPackageSchema = external_exports.object({
|
|
28409
|
+
name: external_exports.string(),
|
|
28410
|
+
version: external_exports.string()
|
|
28411
|
+
});
|
|
28093
28412
|
var TopologyNodeSchema = external_exports.object({
|
|
28094
28413
|
id: external_exports.string(),
|
|
28095
28414
|
name: external_exports.string(),
|
|
@@ -28113,7 +28432,8 @@ var TopologyNodeSchema = external_exports.object({
|
|
|
28113
28432
|
status: external_exports.string()
|
|
28114
28433
|
})).readonly(),
|
|
28115
28434
|
processes: external_exports.array(TopologyProcessSchema).readonly(),
|
|
28116
|
-
categories: external_exports.array(TopologyCategorySchema).readonly()
|
|
28435
|
+
categories: external_exports.array(TopologyCategorySchema).readonly(),
|
|
28436
|
+
rootPackage: TopologyRootPackageSchema.nullable()
|
|
28117
28437
|
});
|
|
28118
28438
|
var CapUsageEdgeSchema = external_exports.object({
|
|
28119
28439
|
callerAddonId: external_exports.string(),
|
|
@@ -28226,7 +28546,7 @@ var nodesCapability = {
|
|
|
28226
28546
|
})
|
|
28227
28547
|
},
|
|
28228
28548
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
28229
|
-
mount: { kind: "
|
|
28549
|
+
mount: { kind: "server-provided" }
|
|
28230
28550
|
};
|
|
28231
28551
|
var OsdOverlayKindEnum = external_exports.enum([
|
|
28232
28552
|
"text",
|
|
@@ -28849,7 +29169,7 @@ var systemCapability = {
|
|
|
28849
29169
|
})
|
|
28850
29170
|
},
|
|
28851
29171
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
28852
|
-
mount: { kind: "
|
|
29172
|
+
mount: { kind: "server-provided" }
|
|
28853
29173
|
};
|
|
28854
29174
|
var ToastSchema = external_exports.object({
|
|
28855
29175
|
title: external_exports.string(),
|
|
@@ -28871,7 +29191,7 @@ var toastCapability = {
|
|
|
28871
29191
|
mode: "singleton",
|
|
28872
29192
|
methods: { onToast: method(external_exports.void(), ToastSchema, { kind: "subscription" }) },
|
|
28873
29193
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
28874
|
-
mount: { kind: "
|
|
29194
|
+
mount: { kind: "server-provided" }
|
|
28875
29195
|
};
|
|
28876
29196
|
var UserSummarySchema = external_exports.object({
|
|
28877
29197
|
id: external_exports.string(),
|
|
@@ -31093,6 +31413,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
31093
31413
|
addonId: null,
|
|
31094
31414
|
access: "create"
|
|
31095
31415
|
},
|
|
31416
|
+
"loginMethod.getLoginMethods": {
|
|
31417
|
+
capName: "login-method",
|
|
31418
|
+
capScope: "system",
|
|
31419
|
+
addonId: null,
|
|
31420
|
+
access: "view"
|
|
31421
|
+
},
|
|
31096
31422
|
"mediaPlayer.next": {
|
|
31097
31423
|
capName: "media-player",
|
|
31098
31424
|
capScope: "device",
|
|
@@ -31675,6 +32001,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
31675
32001
|
addonId: null,
|
|
31676
32002
|
access: "view"
|
|
31677
32003
|
},
|
|
32004
|
+
"pipelineAnalytics.getKeyEvents": {
|
|
32005
|
+
capName: "pipeline-analytics",
|
|
32006
|
+
capScope: "device",
|
|
32007
|
+
addonId: null,
|
|
32008
|
+
access: "view"
|
|
32009
|
+
},
|
|
31678
32010
|
"pipelineAnalytics.getMotionEvents": {
|
|
31679
32011
|
capName: "pipeline-analytics",
|
|
31680
32012
|
capScope: "device",
|
|
@@ -31723,23 +32055,23 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
31723
32055
|
addonId: null,
|
|
31724
32056
|
access: "create"
|
|
31725
32057
|
},
|
|
31726
|
-
"pipelineExecutor.
|
|
32058
|
+
"pipelineExecutor.clearDeviceOverrides": {
|
|
31727
32059
|
capName: "pipeline-executor",
|
|
31728
32060
|
capScope: "system",
|
|
31729
32061
|
addonId: null,
|
|
31730
32062
|
access: "delete"
|
|
31731
32063
|
},
|
|
31732
|
-
"pipelineExecutor.
|
|
32064
|
+
"pipelineExecutor.deleteModel": {
|
|
31733
32065
|
capName: "pipeline-executor",
|
|
31734
32066
|
capScope: "system",
|
|
31735
32067
|
addonId: null,
|
|
31736
32068
|
access: "delete"
|
|
31737
32069
|
},
|
|
31738
|
-
"pipelineExecutor.
|
|
32070
|
+
"pipelineExecutor.deleteTemplate": {
|
|
31739
32071
|
capName: "pipeline-executor",
|
|
31740
32072
|
capScope: "system",
|
|
31741
32073
|
addonId: null,
|
|
31742
|
-
access: "
|
|
32074
|
+
access: "delete"
|
|
31743
32075
|
},
|
|
31744
32076
|
"pipelineExecutor.downloadModel": {
|
|
31745
32077
|
capName: "pipeline-executor",
|
|
@@ -31933,13 +32265,13 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
31933
32265
|
addonId: null,
|
|
31934
32266
|
access: "create"
|
|
31935
32267
|
},
|
|
31936
|
-
"
|
|
31937
|
-
capName: "pipeline-
|
|
32268
|
+
"pipelineExecutor.validatePipeline": {
|
|
32269
|
+
capName: "pipeline-executor",
|
|
31938
32270
|
capScope: "system",
|
|
31939
32271
|
addonId: null,
|
|
31940
|
-
access: "
|
|
32272
|
+
access: "view"
|
|
31941
32273
|
},
|
|
31942
|
-
"pipelineOrchestrator.
|
|
32274
|
+
"pipelineOrchestrator.assignAudio": {
|
|
31943
32275
|
capName: "pipeline-orchestrator",
|
|
31944
32276
|
capScope: "system",
|
|
31945
32277
|
addonId: null,
|
|
@@ -32023,19 +32355,13 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32023
32355
|
addonId: null,
|
|
32024
32356
|
access: "view"
|
|
32025
32357
|
},
|
|
32026
|
-
"pipelineOrchestrator.
|
|
32027
|
-
capName: "pipeline-orchestrator",
|
|
32028
|
-
capScope: "system",
|
|
32029
|
-
addonId: null,
|
|
32030
|
-
access: "view"
|
|
32031
|
-
},
|
|
32032
|
-
"pipelineOrchestrator.getDecoderAssignments": {
|
|
32358
|
+
"pipelineOrchestrator.getGlobalMetrics": {
|
|
32033
32359
|
capName: "pipeline-orchestrator",
|
|
32034
32360
|
capScope: "system",
|
|
32035
32361
|
addonId: null,
|
|
32036
32362
|
access: "view"
|
|
32037
32363
|
},
|
|
32038
|
-
"pipelineOrchestrator.
|
|
32364
|
+
"pipelineOrchestrator.getIngestOwner": {
|
|
32039
32365
|
capName: "pipeline-orchestrator",
|
|
32040
32366
|
capScope: "system",
|
|
32041
32367
|
addonId: null,
|
|
@@ -32077,6 +32403,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32077
32403
|
addonId: null,
|
|
32078
32404
|
access: "delete"
|
|
32079
32405
|
},
|
|
32406
|
+
"pipelineOrchestrator.resetNodePipelineDefaults": {
|
|
32407
|
+
capName: "pipeline-orchestrator",
|
|
32408
|
+
capScope: "system",
|
|
32409
|
+
addonId: null,
|
|
32410
|
+
access: "delete"
|
|
32411
|
+
},
|
|
32080
32412
|
"pipelineOrchestrator.resolvePipeline": {
|
|
32081
32413
|
capName: "pipeline-orchestrator",
|
|
32082
32414
|
capScope: "system",
|
|
@@ -32113,37 +32445,37 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32113
32445
|
addonId: null,
|
|
32114
32446
|
access: "create"
|
|
32115
32447
|
},
|
|
32116
|
-
"pipelineOrchestrator.
|
|
32448
|
+
"pipelineOrchestrator.setAgentReachableHost": {
|
|
32117
32449
|
capName: "pipeline-orchestrator",
|
|
32118
32450
|
capScope: "system",
|
|
32119
32451
|
addonId: null,
|
|
32120
32452
|
access: "create"
|
|
32121
32453
|
},
|
|
32122
|
-
"pipelineOrchestrator.
|
|
32454
|
+
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
32123
32455
|
capName: "pipeline-orchestrator",
|
|
32124
32456
|
capScope: "system",
|
|
32125
32457
|
addonId: null,
|
|
32126
32458
|
access: "create"
|
|
32127
32459
|
},
|
|
32128
|
-
"pipelineOrchestrator.
|
|
32460
|
+
"pipelineOrchestrator.setCameraStepOverride": {
|
|
32129
32461
|
capName: "pipeline-orchestrator",
|
|
32130
32462
|
capScope: "system",
|
|
32131
32463
|
addonId: null,
|
|
32132
32464
|
access: "create"
|
|
32133
32465
|
},
|
|
32134
|
-
"pipelineOrchestrator.
|
|
32466
|
+
"pipelineOrchestrator.setCameraStepToggle": {
|
|
32135
32467
|
capName: "pipeline-orchestrator",
|
|
32136
32468
|
capScope: "system",
|
|
32137
32469
|
addonId: null,
|
|
32138
32470
|
access: "create"
|
|
32139
32471
|
},
|
|
32140
|
-
"pipelineOrchestrator.
|
|
32472
|
+
"pipelineOrchestrator.setCapabilityBinding": {
|
|
32141
32473
|
capName: "pipeline-orchestrator",
|
|
32142
32474
|
capScope: "system",
|
|
32143
32475
|
addonId: null,
|
|
32144
32476
|
access: "create"
|
|
32145
32477
|
},
|
|
32146
|
-
"pipelineOrchestrator.
|
|
32478
|
+
"pipelineOrchestrator.unassignAudio": {
|
|
32147
32479
|
capName: "pipeline-orchestrator",
|
|
32148
32480
|
capScope: "system",
|
|
32149
32481
|
addonId: null,
|
|
@@ -32203,6 +32535,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32203
32535
|
addonId: null,
|
|
32204
32536
|
access: "view"
|
|
32205
32537
|
},
|
|
32538
|
+
"pipelineRunner.getNativeCrop": {
|
|
32539
|
+
capName: "pipeline-runner",
|
|
32540
|
+
capScope: "system",
|
|
32541
|
+
addonId: null,
|
|
32542
|
+
access: "view"
|
|
32543
|
+
},
|
|
32206
32544
|
"pipelineRunner.reportMotion": {
|
|
32207
32545
|
capName: "pipeline-runner",
|
|
32208
32546
|
capScope: "system",
|
|
@@ -32443,33 +32781,45 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32443
32781
|
addonId: null,
|
|
32444
32782
|
access: "create"
|
|
32445
32783
|
},
|
|
32446
|
-
"
|
|
32447
|
-
capName: "
|
|
32784
|
+
"scriptRunner.run": {
|
|
32785
|
+
capName: "script-runner",
|
|
32786
|
+
capScope: "device",
|
|
32787
|
+
addonId: null,
|
|
32788
|
+
access: "create"
|
|
32789
|
+
},
|
|
32790
|
+
"scriptRunner.stop": {
|
|
32791
|
+
capName: "script-runner",
|
|
32792
|
+
capScope: "device",
|
|
32793
|
+
addonId: null,
|
|
32794
|
+
access: "create"
|
|
32795
|
+
},
|
|
32796
|
+
"serverManagement.applyServerUpdate": {
|
|
32797
|
+
capName: "server-management",
|
|
32448
32798
|
capScope: "system",
|
|
32449
32799
|
addonId: null,
|
|
32450
|
-
access: "
|
|
32800
|
+
access: "create"
|
|
32451
32801
|
},
|
|
32452
|
-
"
|
|
32453
|
-
capName: "
|
|
32802
|
+
"serverManagement.checkServerUpdate": {
|
|
32803
|
+
capName: "server-management",
|
|
32454
32804
|
capScope: "system",
|
|
32455
32805
|
addonId: null,
|
|
32456
32806
|
access: "create"
|
|
32457
32807
|
},
|
|
32458
|
-
"
|
|
32459
|
-
capName: "
|
|
32808
|
+
"serverManagement.getServerPackageStatus": {
|
|
32809
|
+
capName: "server-management",
|
|
32460
32810
|
capScope: "system",
|
|
32461
32811
|
addonId: null,
|
|
32462
|
-
access: "
|
|
32812
|
+
access: "view"
|
|
32463
32813
|
},
|
|
32464
|
-
"
|
|
32465
|
-
capName: "
|
|
32466
|
-
capScope: "
|
|
32814
|
+
"serverManagement.restartServer": {
|
|
32815
|
+
capName: "server-management",
|
|
32816
|
+
capScope: "system",
|
|
32467
32817
|
addonId: null,
|
|
32468
32818
|
access: "create"
|
|
32469
32819
|
},
|
|
32470
|
-
"
|
|
32471
|
-
capName: "
|
|
32472
|
-
capScope: "
|
|
32820
|
+
"serverManagement.rollbackServerUpdate": {
|
|
32821
|
+
capName: "server-management",
|
|
32822
|
+
capScope: "system",
|
|
32473
32823
|
addonId: null,
|
|
32474
32824
|
access: "create"
|
|
32475
32825
|
},
|
|
@@ -32557,23 +32907,17 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32557
32907
|
addonId: null,
|
|
32558
32908
|
access: "view"
|
|
32559
32909
|
},
|
|
32560
|
-
"snapshot.
|
|
32910
|
+
"snapshot.getSnapshotOverview": {
|
|
32561
32911
|
capName: "snapshot",
|
|
32562
32912
|
capScope: "device",
|
|
32563
32913
|
addonId: null,
|
|
32564
|
-
access: "create"
|
|
32565
|
-
},
|
|
32566
|
-
"snapshotProvider.getSnapshot": {
|
|
32567
|
-
capName: "snapshot-provider",
|
|
32568
|
-
capScope: "system",
|
|
32569
|
-
addonId: null,
|
|
32570
32914
|
access: "view"
|
|
32571
32915
|
},
|
|
32572
|
-
"
|
|
32573
|
-
capName: "snapshot
|
|
32574
|
-
capScope: "
|
|
32916
|
+
"snapshot.invalidateCache": {
|
|
32917
|
+
capName: "snapshot",
|
|
32918
|
+
capScope: "device",
|
|
32575
32919
|
addonId: null,
|
|
32576
|
-
access: "
|
|
32920
|
+
access: "create"
|
|
32577
32921
|
},
|
|
32578
32922
|
"ssoBridge.signBridgeToken": {
|
|
32579
32923
|
capName: "sso-bridge",
|
|
@@ -33001,30 +33345,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
33001
33345
|
addonId: null,
|
|
33002
33346
|
access: "view"
|
|
33003
33347
|
},
|
|
33004
|
-
"streamingEngine.getStreamUrl": {
|
|
33005
|
-
capName: "streaming-engine",
|
|
33006
|
-
capScope: "system",
|
|
33007
|
-
addonId: null,
|
|
33008
|
-
access: "view"
|
|
33009
|
-
},
|
|
33010
|
-
"streamingEngine.listStreams": {
|
|
33011
|
-
capName: "streaming-engine",
|
|
33012
|
-
capScope: "system",
|
|
33013
|
-
addonId: null,
|
|
33014
|
-
access: "view"
|
|
33015
|
-
},
|
|
33016
|
-
"streamingEngine.registerStream": {
|
|
33017
|
-
capName: "streaming-engine",
|
|
33018
|
-
capScope: "system",
|
|
33019
|
-
addonId: null,
|
|
33020
|
-
access: "create"
|
|
33021
|
-
},
|
|
33022
|
-
"streamingEngine.unregisterStream": {
|
|
33023
|
-
capName: "streaming-engine",
|
|
33024
|
-
capScope: "system",
|
|
33025
|
-
addonId: null,
|
|
33026
|
-
access: "delete"
|
|
33027
|
-
},
|
|
33028
33348
|
"streamParams.getConfigSchema": {
|
|
33029
33349
|
capName: "stream-params",
|
|
33030
33350
|
capScope: "device",
|
|
@@ -33271,6 +33591,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
33271
33591
|
addonId: null,
|
|
33272
33592
|
access: "view"
|
|
33273
33593
|
},
|
|
33594
|
+
"userPasskeys.beginDiscoverableAuthentication": {
|
|
33595
|
+
capName: "user-passkeys",
|
|
33596
|
+
capScope: "system",
|
|
33597
|
+
addonId: null,
|
|
33598
|
+
access: "view"
|
|
33599
|
+
},
|
|
33274
33600
|
"userPasskeys.beginRegistration": {
|
|
33275
33601
|
capName: "user-passkeys",
|
|
33276
33602
|
capScope: "system",
|
|
@@ -33283,12 +33609,24 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
33283
33609
|
addonId: null,
|
|
33284
33610
|
access: "view"
|
|
33285
33611
|
},
|
|
33612
|
+
"userPasskeys.finishDiscoverableAuthentication": {
|
|
33613
|
+
capName: "user-passkeys",
|
|
33614
|
+
capScope: "system",
|
|
33615
|
+
addonId: null,
|
|
33616
|
+
access: "view"
|
|
33617
|
+
},
|
|
33286
33618
|
"userPasskeys.finishRegistration": {
|
|
33287
33619
|
capName: "user-passkeys",
|
|
33288
33620
|
capScope: "system",
|
|
33289
33621
|
addonId: null,
|
|
33290
33622
|
access: "create"
|
|
33291
33623
|
},
|
|
33624
|
+
"userPasskeys.getSecondFactorPreference": {
|
|
33625
|
+
capName: "user-passkeys",
|
|
33626
|
+
capScope: "system",
|
|
33627
|
+
addonId: null,
|
|
33628
|
+
access: "view"
|
|
33629
|
+
},
|
|
33292
33630
|
"userPasskeys.listPasskeys": {
|
|
33293
33631
|
capName: "user-passkeys",
|
|
33294
33632
|
capScope: "system",
|
|
@@ -33301,6 +33639,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
33301
33639
|
addonId: null,
|
|
33302
33640
|
access: "delete"
|
|
33303
33641
|
},
|
|
33642
|
+
"userPasskeys.setSecondFactorPreference": {
|
|
33643
|
+
capName: "user-passkeys",
|
|
33644
|
+
capScope: "system",
|
|
33645
|
+
addonId: null,
|
|
33646
|
+
access: "create"
|
|
33647
|
+
},
|
|
33304
33648
|
"vacuumControl.locate": {
|
|
33305
33649
|
capName: "vacuum-control",
|
|
33306
33650
|
capScope: "device",
|
|
@@ -33373,6 +33717,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
33373
33717
|
addonId: null,
|
|
33374
33718
|
access: "view"
|
|
33375
33719
|
},
|
|
33720
|
+
"viewerUi.getStaticDir": {
|
|
33721
|
+
capName: "viewer-ui",
|
|
33722
|
+
capScope: "system",
|
|
33723
|
+
addonId: null,
|
|
33724
|
+
access: "view"
|
|
33725
|
+
},
|
|
33726
|
+
"viewerUi.getVersion": {
|
|
33727
|
+
capName: "viewer-ui",
|
|
33728
|
+
capScope: "system",
|
|
33729
|
+
addonId: null,
|
|
33730
|
+
access: "view"
|
|
33731
|
+
},
|
|
33376
33732
|
"waterHeater.setAway": {
|
|
33377
33733
|
capName: "water-heater",
|
|
33378
33734
|
capScope: "device",
|
|
@@ -33391,54 +33747,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
33391
33747
|
addonId: null,
|
|
33392
33748
|
access: "create"
|
|
33393
33749
|
},
|
|
33394
|
-
"webrtc.closeSession": {
|
|
33395
|
-
capName: "webrtc",
|
|
33396
|
-
capScope: "system",
|
|
33397
|
-
addonId: null,
|
|
33398
|
-
access: "create"
|
|
33399
|
-
},
|
|
33400
|
-
"webrtc.createSession": {
|
|
33401
|
-
capName: "webrtc",
|
|
33402
|
-
capScope: "system",
|
|
33403
|
-
addonId: null,
|
|
33404
|
-
access: "create"
|
|
33405
|
-
},
|
|
33406
|
-
"webrtc.handleAnswer": {
|
|
33407
|
-
capName: "webrtc",
|
|
33408
|
-
capScope: "system",
|
|
33409
|
-
addonId: null,
|
|
33410
|
-
access: "create"
|
|
33411
|
-
},
|
|
33412
|
-
"webrtc.handleOffer": {
|
|
33413
|
-
capName: "webrtc",
|
|
33414
|
-
capScope: "system",
|
|
33415
|
-
addonId: null,
|
|
33416
|
-
access: "create"
|
|
33417
|
-
},
|
|
33418
|
-
"webrtc.hasAdaptiveBitrate": {
|
|
33419
|
-
capName: "webrtc",
|
|
33420
|
-
capScope: "system",
|
|
33421
|
-
addonId: null,
|
|
33422
|
-
access: "view"
|
|
33423
|
-
},
|
|
33424
|
-
"webrtc.registerStream": {
|
|
33425
|
-
capName: "webrtc",
|
|
33426
|
-
capScope: "system",
|
|
33427
|
-
addonId: null,
|
|
33428
|
-
access: "create"
|
|
33429
|
-
},
|
|
33430
|
-
"webrtc.supportsStream": {
|
|
33431
|
-
capName: "webrtc",
|
|
33432
|
-
capScope: "system",
|
|
33433
|
-
addonId: null,
|
|
33434
|
-
access: "view"
|
|
33435
|
-
},
|
|
33436
|
-
"webrtc.unregisterStream": {
|
|
33437
|
-
capName: "webrtc",
|
|
33438
|
-
capScope: "system",
|
|
33439
|
-
addonId: null,
|
|
33440
|
-
access: "delete"
|
|
33441
|
-
},
|
|
33442
33750
|
"webrtcSession.addIceCandidate": {
|
|
33443
33751
|
capName: "webrtc-session",
|
|
33444
33752
|
capScope: "device",
|