@camstack/types 1.1.31 → 1.1.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +1 -1
- package/dist/addon.mjs +1 -1
- package/dist/capabilities/addons.cap.d.ts +3 -1
- package/dist/capabilities/alerts.cap.d.ts +5 -5
- package/dist/capabilities/camera-streams.cap.d.ts +5 -5
- package/dist/capabilities/cap-router-predicates.d.ts +32 -0
- package/dist/capabilities/capability-definition.d.ts +18 -13
- package/dist/capabilities/consumables.cap.d.ts +1 -1
- package/dist/capabilities/custom-model-registry.cap.d.ts +36 -0
- package/dist/capabilities/index.d.ts +8 -15
- package/dist/capabilities/integrations.cap.d.ts +1 -1
- package/dist/capabilities/model-convert.cap.d.ts +21 -3
- package/dist/capabilities/model-distributor.cap.d.ts +36 -0
- package/dist/capabilities/network-quality.cap.d.ts +1 -1
- package/dist/capabilities/nodes.cap.d.ts +1 -1
- package/dist/capabilities/pipeline-executor.cap.d.ts +135 -8
- package/dist/capabilities/pipeline-orchestrator.cap.d.ts +87 -44
- package/dist/capabilities/pipeline-runner.cap.d.ts +10 -69
- package/dist/capabilities/snapshot.cap.d.ts +3 -3
- package/dist/capabilities/stream-broker.cap.d.ts +9 -1
- package/dist/capabilities/system.cap.d.ts +1 -1
- package/dist/capabilities/toast.cap.d.ts +1 -1
- package/dist/capabilities/webrtc-session.cap.d.ts +15 -1
- package/dist/encode-profile.d.ts +2 -2
- package/dist/enums/event-category.d.ts +12 -0
- package/dist/generated/addon-api.d.ts +746 -636
- package/dist/generated/capability-router-map.d.ts +4 -16
- package/dist/generated/device-proxy.d.ts +0 -2
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/system-proxy.d.ts +2 -2
- package/dist/index.d.ts +1 -3
- package/dist/index.js +425 -349
- package/dist/index.mjs +412 -343
- package/dist/interfaces/capability.d.ts +0 -7
- package/dist/interfaces/event-bus.d.ts +9 -0
- package/dist/interfaces/pipeline-executor-capability.d.ts +14 -1
- package/dist/interfaces/pipeline-runner-capability.d.ts +11 -11
- package/dist/interfaces/recording-config.d.ts +2 -2
- package/dist/{sleep-CZDdRBua.mjs → sleep-Cc14_yxc.mjs} +12 -4
- package/dist/{sleep-Dirr8nGw.js → sleep-DmP-uxoe.js} +12 -4
- package/dist/types/agent-pipeline-settings.d.ts +18 -6
- package/dist/types/camera-pipeline.d.ts +17 -3
- package/dist/types/model-variant-groups.d.ts +90 -0
- package/dist/types/models.d.ts +60 -3
- package/package.json +1 -1
- package/dist/capabilities/restreamer.cap.d.ts +0 -54
- package/dist/capabilities/snapshot-provider.cap.d.ts +0 -43
- package/dist/capabilities/streaming-engine.cap.d.ts +0 -61
- package/dist/capabilities/webrtc.cap.d.ts +0 -75
- package/dist/interfaces/restreamer.d.ts +0 -23
- package/dist/interfaces/streaming.d.ts +0 -28
- package/dist/interfaces/webrtc-provider.d.ts +0 -34
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_sleep = require("./sleep-
|
|
2
|
+
const require_sleep = require("./sleep-DmP-uxoe.js");
|
|
3
3
|
const require_err_msg = require("./err-msg-COpsHMw2.js");
|
|
4
4
|
let zod = require("zod");
|
|
5
5
|
//#region src/health/wiring-health.ts
|
|
@@ -115,6 +115,28 @@ var ModelFormatsSchema = zod.z.object({
|
|
|
115
115
|
tflite: ModelFormatEntrySchema.optional(),
|
|
116
116
|
pt: ModelFormatEntrySchema.optional()
|
|
117
117
|
});
|
|
118
|
+
/**
|
|
119
|
+
* Variant-selector grouping axes. Shared by the full `ModelCatalogEntry` and by
|
|
120
|
+
* the reduced `PipelineModelOption` returned in `pipeline.getSchema()` so the
|
|
121
|
+
* grouped Family→Tier→Variant picker renders identically in the config UI and
|
|
122
|
+
* in the pipeline/device steppers. The flat `id` stays the source of truth for
|
|
123
|
+
* resolution/download/persistence; this is a presentation overlay resolved back
|
|
124
|
+
* to an `id`.
|
|
125
|
+
*/
|
|
126
|
+
var ModelVariantGroupSchema = zod.z.object({
|
|
127
|
+
/** Top-level family, e.g. `yolo26` (later `d-fine`, `rf-detr`). */
|
|
128
|
+
family: zod.z.string(),
|
|
129
|
+
/** Size within the family, e.g. `n` | `s` | `m` | `l`. */
|
|
130
|
+
tier: zod.z.string(),
|
|
131
|
+
/** Quantization axis. Omit ⇒ the fp32 base build. */
|
|
132
|
+
precision: zod.z.enum(["fp32", "int8"]).optional(),
|
|
133
|
+
/**
|
|
134
|
+
* Speed-optimization axis. Omit ⇒ the standard build. `fast` marks a
|
|
135
|
+
* latency-optimized export (e.g. ReLU-activation / reduced-input variant)
|
|
136
|
+
* — the slot the future performance variants plug into.
|
|
137
|
+
*/
|
|
138
|
+
optimization: zod.z.enum(["standard", "fast"]).optional()
|
|
139
|
+
});
|
|
118
140
|
var ModelCatalogEntrySchema = zod.z.object({
|
|
119
141
|
id: zod.z.string(),
|
|
120
142
|
name: zod.z.string(),
|
|
@@ -144,7 +166,43 @@ var ModelCatalogEntrySchema = zod.z.object({
|
|
|
144
166
|
* Auxiliary files required at runtime (labels JSON, charset dict, etc.).
|
|
145
167
|
* Downloaded into the same modelsDir alongside the model file.
|
|
146
168
|
*/
|
|
147
|
-
extraFiles: zod.z.array(ModelExtraFileSchema).readonly().optional()
|
|
169
|
+
extraFiles: zod.z.array(ModelExtraFileSchema).readonly().optional(),
|
|
170
|
+
/**
|
|
171
|
+
* LEGACY entry — retained in the catalog so a persisted operator selection
|
|
172
|
+
* still RESOLVES (and can be re-activated), but hidden from the selectable
|
|
173
|
+
* model list and excluded from the auto format-default pick. Set on the
|
|
174
|
+
* superseded / consolidated models (older lineages, redundant fp16 IRs) so
|
|
175
|
+
* the active lineup stays the coherent curated ladder without deleting a
|
|
176
|
+
* model anyone may still be pinned to. `resolveModelForFormat` keeps honoring
|
|
177
|
+
* an explicit legacy id that has a build for the node's format.
|
|
178
|
+
*/
|
|
179
|
+
legacy: zod.z.boolean().optional(),
|
|
180
|
+
/**
|
|
181
|
+
* Measured quality/latency metadata — populated from the benchmark addon on
|
|
182
|
+
* the real node classes. Absent = not yet measured (most entries today; the
|
|
183
|
+
* catalog historically carried only `sizeMB`, a poor cross-architecture
|
|
184
|
+
* speed proxy). `p95LatencyMs` is keyed by node class (e.g. `n100`, `mac`).
|
|
185
|
+
*/
|
|
186
|
+
metrics: zod.z.object({
|
|
187
|
+
map50: zod.z.number().optional(),
|
|
188
|
+
p95LatencyMs: zod.z.record(zod.z.string(), zod.z.number()).optional()
|
|
189
|
+
}).optional(),
|
|
190
|
+
/**
|
|
191
|
+
* SPDX-ish license id of the model weights (e.g. `AGPL-3.0` for Ultralytics
|
|
192
|
+
* YOLO26, `GPL-3.0` for YOLOv9, `Apache-2.0` for D-FINE/RF-DETR). Matters for
|
|
193
|
+
* the retraining addon and any future commercial distribution.
|
|
194
|
+
*/
|
|
195
|
+
license: zod.z.string().optional(),
|
|
196
|
+
/**
|
|
197
|
+
* Variant-selector grouping. The UI groups models by `family` + `tier` and
|
|
198
|
+
* offers `precision` / `optimization` as variant axes WITHIN a tier — so all
|
|
199
|
+
* of a family's sizes and quantizations collapse into one grouped picker
|
|
200
|
+
* instead of a flat list of `yolo26s`, `yolo26s-int8`, … Absent ⇒ ungrouped
|
|
201
|
+
* (legacy / custom models) — never shown in the grouped selector. The flat
|
|
202
|
+
* `id` stays the source of truth for resolution/download/persistence; grouping
|
|
203
|
+
* is a presentation overlay resolved back to an `id`.
|
|
204
|
+
*/
|
|
205
|
+
group: ModelVariantGroupSchema.optional()
|
|
148
206
|
});
|
|
149
207
|
var ConvertTargetSchema = zod.z.discriminatedUnion("format", [zod.z.object({
|
|
150
208
|
format: zod.z.literal("openvino"),
|
|
@@ -187,6 +245,135 @@ var ConvertResultSchema = zod.z.object({
|
|
|
187
245
|
artifacts: zod.z.array(ConvertArtifactSchema).readonly()
|
|
188
246
|
});
|
|
189
247
|
//#endregion
|
|
248
|
+
//#region src/types/model-variant-groups.ts
|
|
249
|
+
var FORMAT_KEYS = [
|
|
250
|
+
"onnx",
|
|
251
|
+
"coreml",
|
|
252
|
+
"openvino",
|
|
253
|
+
"tflite",
|
|
254
|
+
"pt"
|
|
255
|
+
];
|
|
256
|
+
function familyLabel(family) {
|
|
257
|
+
return family.toUpperCase();
|
|
258
|
+
}
|
|
259
|
+
/** Strip a leading family label from a base model name → clean tier label. */
|
|
260
|
+
function tierLabel(family, baseName) {
|
|
261
|
+
const fl = familyLabel(family);
|
|
262
|
+
const stripped = baseName.replace(new RegExp(`^${fl}\\s+`, "i"), "").trim();
|
|
263
|
+
return stripped.length > 0 ? stripped : baseName;
|
|
264
|
+
}
|
|
265
|
+
function variantLabel(precision, optimization) {
|
|
266
|
+
const parts = [];
|
|
267
|
+
if (optimization === "fast") parts.push("Fast");
|
|
268
|
+
parts.push(precision === "int8" ? "Int8" : "Standard");
|
|
269
|
+
return parts.join(" · ");
|
|
270
|
+
}
|
|
271
|
+
function entryFormats(entry) {
|
|
272
|
+
return FORMAT_KEYS.filter((f) => entry.formats[f] !== void 0);
|
|
273
|
+
}
|
|
274
|
+
function smallestSizeMB(entry) {
|
|
275
|
+
const sizes = FORMAT_KEYS.map((f) => entry.formats[f]?.sizeMB).filter((n) => typeof n === "number");
|
|
276
|
+
return sizes.length > 0 ? Math.min(...sizes) : 0;
|
|
277
|
+
}
|
|
278
|
+
var TIER_ORDER = [
|
|
279
|
+
"n",
|
|
280
|
+
"s",
|
|
281
|
+
"m",
|
|
282
|
+
"l",
|
|
283
|
+
"x"
|
|
284
|
+
];
|
|
285
|
+
var PRECISION_ORDER = ["fp32", "int8"];
|
|
286
|
+
/**
|
|
287
|
+
* Fold a flat catalog into the `family → tier → variant` tree. Deterministic
|
|
288
|
+
* ordering: tiers by the canonical size ladder (unknown tiers appended
|
|
289
|
+
* alphabetically), variants standard-before-int8 and fast last.
|
|
290
|
+
*/
|
|
291
|
+
function buildModelVariantGroups(models) {
|
|
292
|
+
const byFamily = /* @__PURE__ */ new Map();
|
|
293
|
+
for (const m of models) {
|
|
294
|
+
if (m.legacy === true || m.group === void 0) continue;
|
|
295
|
+
const { family, tier } = m.group;
|
|
296
|
+
const tiers = byFamily.get(family) ?? /* @__PURE__ */ new Map();
|
|
297
|
+
const entries = tiers.get(tier) ?? [];
|
|
298
|
+
entries.push(m);
|
|
299
|
+
tiers.set(tier, entries);
|
|
300
|
+
byFamily.set(family, tiers);
|
|
301
|
+
}
|
|
302
|
+
const families = [];
|
|
303
|
+
for (const [family, tiers] of byFamily) {
|
|
304
|
+
const tierList = [];
|
|
305
|
+
for (const [tier, entries] of tiers) {
|
|
306
|
+
const options = entries.map((e) => {
|
|
307
|
+
const precision = e.group?.precision ?? "fp32";
|
|
308
|
+
const optimization = e.group?.optimization ?? "standard";
|
|
309
|
+
return {
|
|
310
|
+
modelId: e.id,
|
|
311
|
+
precision,
|
|
312
|
+
optimization,
|
|
313
|
+
label: variantLabel(precision, optimization),
|
|
314
|
+
formats: entryFormats(e),
|
|
315
|
+
sizeMB: smallestSizeMB(e)
|
|
316
|
+
};
|
|
317
|
+
}).toSorted((a, b) => {
|
|
318
|
+
if (a.optimization !== b.optimization) return a.optimization === "fast" ? 1 : -1;
|
|
319
|
+
return PRECISION_ORDER.indexOf(a.precision) - PRECISION_ORDER.indexOf(b.precision);
|
|
320
|
+
});
|
|
321
|
+
const base = options.find((o) => o.precision === "fp32" && o.optimization === "standard") ?? options[0];
|
|
322
|
+
if (base === void 0) continue;
|
|
323
|
+
const baseEntry = entries.find((e) => e.id === base.modelId);
|
|
324
|
+
tierList.push({
|
|
325
|
+
tier,
|
|
326
|
+
label: baseEntry ? tierLabel(family, baseEntry.name) : tier.toUpperCase(),
|
|
327
|
+
baseModelId: base.modelId,
|
|
328
|
+
options
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
tierList.sort((a, b) => {
|
|
332
|
+
const ia = TIER_ORDER.indexOf(a.tier);
|
|
333
|
+
const ib = TIER_ORDER.indexOf(b.tier);
|
|
334
|
+
if (ia !== -1 && ib !== -1) return ia - ib;
|
|
335
|
+
if (ia !== -1) return -1;
|
|
336
|
+
if (ib !== -1) return 1;
|
|
337
|
+
return a.tier.localeCompare(b.tier);
|
|
338
|
+
});
|
|
339
|
+
families.push({
|
|
340
|
+
family,
|
|
341
|
+
label: familyLabel(family),
|
|
342
|
+
tiers: tierList
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
families.sort((a, b) => a.family.localeCompare(b.family));
|
|
346
|
+
return families;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Map a grouped selection back to a flat catalog model id. Returns `null` when
|
|
350
|
+
* no entry matches (the UI then falls back to the tier base / format default).
|
|
351
|
+
* `precision`/`optimization` default to `fp32`/`standard` (the base build).
|
|
352
|
+
*/
|
|
353
|
+
function resolveVariantModelId(models, selection) {
|
|
354
|
+
const precision = selection.precision ?? "fp32";
|
|
355
|
+
const optimization = selection.optimization ?? "standard";
|
|
356
|
+
for (const m of models) {
|
|
357
|
+
if (m.group === void 0) continue;
|
|
358
|
+
if (m.group.family !== selection.family || m.group.tier !== selection.tier) continue;
|
|
359
|
+
if ((m.group.precision ?? "fp32") !== precision) continue;
|
|
360
|
+
if ((m.group.optimization ?? "standard") !== optimization) continue;
|
|
361
|
+
return m.id;
|
|
362
|
+
}
|
|
363
|
+
return null;
|
|
364
|
+
}
|
|
365
|
+
/** Inverse: describe a flat model id as a grouped selection, or `null`. */
|
|
366
|
+
function describeModelVariant(models, modelId) {
|
|
367
|
+
const entry = models.find((m) => m.id === modelId);
|
|
368
|
+
if (entry?.group === void 0) return null;
|
|
369
|
+
return {
|
|
370
|
+
family: entry.group.family,
|
|
371
|
+
tier: entry.group.tier,
|
|
372
|
+
precision: entry.group.precision ?? "fp32",
|
|
373
|
+
optimization: entry.group.optimization ?? "standard"
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
//#endregion
|
|
190
377
|
//#region src/interfaces/addon.ts
|
|
191
378
|
var DEFAULT_ADDON_PLACEMENT = "hub-only";
|
|
192
379
|
/**
|
|
@@ -572,8 +759,8 @@ var RecordingModeSchema = zod.z.enum([
|
|
|
572
759
|
"onAudioThreshold"
|
|
573
760
|
]);
|
|
574
761
|
/**
|
|
575
|
-
* First-class, authoritative per-camera storage mode — the
|
|
576
|
-
* reads directly (never inferred from `rules`):
|
|
762
|
+
* First-class, authoritative per-camera storage mode — the explicit choice the
|
|
763
|
+
* UI reads directly (never inferred from `rules`):
|
|
577
764
|
* - `off` — not recording.
|
|
578
765
|
* - `events` — record only around triggers (motion / audio threshold),
|
|
579
766
|
* with pre/post-buffer.
|
|
@@ -4478,42 +4665,14 @@ onBrightnessChanged: { data: zod.z.object({
|
|
|
4478
4665
|
runtimeState: BrightnessStatusSchema
|
|
4479
4666
|
};
|
|
4480
4667
|
//#endregion
|
|
4481
|
-
//#region src/capabilities/
|
|
4668
|
+
//#region src/capabilities/stream-broker.cap.ts
|
|
4669
|
+
/** Stream delivery format. (Relocated from the retired `streaming-engine` cap.) */
|
|
4482
4670
|
var StreamFormatSchema = zod.z.enum([
|
|
4483
4671
|
"webrtc",
|
|
4484
4672
|
"hls",
|
|
4485
4673
|
"mjpeg",
|
|
4486
4674
|
"rtsp"
|
|
4487
4675
|
]);
|
|
4488
|
-
var StreamInfoSchema = zod.z.object({
|
|
4489
|
-
streamId: zod.z.string(),
|
|
4490
|
-
format: StreamFormatSchema,
|
|
4491
|
-
url: zod.z.string().nullable(),
|
|
4492
|
-
active: zod.z.boolean()
|
|
4493
|
-
});
|
|
4494
|
-
var streamingEngineCapability = {
|
|
4495
|
-
name: "streaming-engine",
|
|
4496
|
-
scope: "system",
|
|
4497
|
-
mode: "singleton",
|
|
4498
|
-
internal: true,
|
|
4499
|
-
methods: {
|
|
4500
|
-
registerStream: require_sleep.method(zod.z.object({
|
|
4501
|
-
streamId: zod.z.string(),
|
|
4502
|
-
sourceUrl: zod.z.string(),
|
|
4503
|
-
codec: zod.z.string().optional()
|
|
4504
|
-
}), zod.z.void(), { kind: "mutation" }),
|
|
4505
|
-
unregisterStream: require_sleep.method(zod.z.object({ streamId: zod.z.string() }), zod.z.void(), { kind: "mutation" }),
|
|
4506
|
-
getStreamUrl: require_sleep.method(zod.z.object({
|
|
4507
|
-
streamId: zod.z.string(),
|
|
4508
|
-
format: StreamFormatSchema
|
|
4509
|
-
}), zod.z.string().nullable()),
|
|
4510
|
-
listStreams: require_sleep.method(zod.z.void(), zod.z.array(StreamInfoSchema))
|
|
4511
|
-
},
|
|
4512
|
-
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
4513
|
-
mount: { kind: "skip" }
|
|
4514
|
-
};
|
|
4515
|
-
//#endregion
|
|
4516
|
-
//#region src/capabilities/stream-broker.cap.ts
|
|
4517
4676
|
var RtspRestreamEntrySchema = zod.z.object({
|
|
4518
4677
|
brokerId: zod.z.string(),
|
|
4519
4678
|
url: zod.z.string(),
|
|
@@ -5507,37 +5666,7 @@ var consumablesCapability = {
|
|
|
5507
5666
|
scope: "device",
|
|
5508
5667
|
deviceNative: true,
|
|
5509
5668
|
mode: "singleton",
|
|
5510
|
-
deviceTypes:
|
|
5511
|
-
require_sleep.DeviceType.Camera,
|
|
5512
|
-
require_sleep.DeviceType.Hub,
|
|
5513
|
-
require_sleep.DeviceType.Light,
|
|
5514
|
-
require_sleep.DeviceType.Siren,
|
|
5515
|
-
require_sleep.DeviceType.Switch,
|
|
5516
|
-
require_sleep.DeviceType.Sensor,
|
|
5517
|
-
require_sleep.DeviceType.Thermostat,
|
|
5518
|
-
require_sleep.DeviceType.Button,
|
|
5519
|
-
require_sleep.DeviceType.EventEmitter,
|
|
5520
|
-
require_sleep.DeviceType.Update,
|
|
5521
|
-
require_sleep.DeviceType.Generic,
|
|
5522
|
-
require_sleep.DeviceType.Notifier,
|
|
5523
|
-
require_sleep.DeviceType.Script,
|
|
5524
|
-
require_sleep.DeviceType.Automation,
|
|
5525
|
-
require_sleep.DeviceType.Lock,
|
|
5526
|
-
require_sleep.DeviceType.Cover,
|
|
5527
|
-
require_sleep.DeviceType.Valve,
|
|
5528
|
-
require_sleep.DeviceType.Humidifier,
|
|
5529
|
-
require_sleep.DeviceType.WaterHeater,
|
|
5530
|
-
require_sleep.DeviceType.Fan,
|
|
5531
|
-
require_sleep.DeviceType.MediaPlayer,
|
|
5532
|
-
require_sleep.DeviceType.AlarmPanel,
|
|
5533
|
-
require_sleep.DeviceType.Control,
|
|
5534
|
-
require_sleep.DeviceType.Presence,
|
|
5535
|
-
require_sleep.DeviceType.Weather,
|
|
5536
|
-
require_sleep.DeviceType.Vacuum,
|
|
5537
|
-
require_sleep.DeviceType.LawnMower,
|
|
5538
|
-
require_sleep.DeviceType.Container,
|
|
5539
|
-
require_sleep.DeviceType.Image
|
|
5540
|
-
],
|
|
5669
|
+
deviceTypes: Object.values(require_sleep.DeviceType),
|
|
5541
5670
|
deviceConfig: { ui: {
|
|
5542
5671
|
kind: "widget",
|
|
5543
5672
|
widgetId: "host/consumables-panel",
|
|
@@ -7303,7 +7432,6 @@ var PipelineDefaultStepSchema = zod.z.lazy(() => zod.z.object({
|
|
|
7303
7432
|
enabled: zod.z.boolean(),
|
|
7304
7433
|
modelId: zod.z.string(),
|
|
7305
7434
|
children: zod.z.array(PipelineDefaultStepSchema).readonly(),
|
|
7306
|
-
engine: PipelineEngineChoiceSchema.optional(),
|
|
7307
7435
|
group: zod.z.string().optional(),
|
|
7308
7436
|
settings: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
|
|
7309
7437
|
}));
|
|
@@ -7328,7 +7456,9 @@ var PipelineModelOptionSchema = zod.z.object({
|
|
|
7328
7456
|
formats: zod.z.record(zod.z.string(), zod.z.object({
|
|
7329
7457
|
downloaded: zod.z.boolean(),
|
|
7330
7458
|
sizeMB: zod.z.number()
|
|
7331
|
-
}))
|
|
7459
|
+
})),
|
|
7460
|
+
group: ModelVariantGroupSchema.optional(),
|
|
7461
|
+
legacy: zod.z.boolean().optional()
|
|
7332
7462
|
});
|
|
7333
7463
|
var ConfigFieldBridge = zod.z.custom();
|
|
7334
7464
|
var PipelineAddonSchemaSchema = zod.z.object({
|
|
@@ -7379,15 +7509,42 @@ var EngineProvisioningSchema = zod.z.object({
|
|
|
7379
7509
|
]),
|
|
7380
7510
|
progress: zod.z.number().optional(),
|
|
7381
7511
|
error: zod.z.string().optional(),
|
|
7382
|
-
nextRetryAt: zod.z.number().optional()
|
|
7512
|
+
nextRetryAt: zod.z.number().optional(),
|
|
7513
|
+
/**
|
|
7514
|
+
* Gate A (config-correctness gate at engine change): human-readable
|
|
7515
|
+
* config issues surfaced EAGERLY when the node's engine changes — model
|
|
7516
|
+
* substitutions ("chose X, running Y") and zero-build steps ("no model
|
|
7517
|
+
* has a <format> build"). Additive/optional: informational only, never
|
|
7518
|
+
* enforced here — `assertEngineReady` (readiness) still gates inference.
|
|
7519
|
+
* Absent/empty when the node-default tree resolves cleanly.
|
|
7520
|
+
*/
|
|
7521
|
+
configIssues: zod.z.array(zod.z.string()).optional()
|
|
7383
7522
|
});
|
|
7384
7523
|
var PipelineStepInputSchema = zod.z.lazy(() => zod.z.object({
|
|
7385
7524
|
addonId: zod.z.string(),
|
|
7386
|
-
modelId: zod.z.string(),
|
|
7525
|
+
modelId: zod.z.string().optional(),
|
|
7387
7526
|
enabled: zod.z.boolean().default(true),
|
|
7388
7527
|
children: zod.z.array(PipelineStepInputSchema).optional(),
|
|
7389
7528
|
settings: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
|
|
7390
7529
|
}));
|
|
7530
|
+
var ModelSubstitutionSchema = zod.z.object({
|
|
7531
|
+
addonId: zod.z.string(),
|
|
7532
|
+
chosen: zod.z.string(),
|
|
7533
|
+
running: zod.z.string(),
|
|
7534
|
+
format: zod.z.string()
|
|
7535
|
+
});
|
|
7536
|
+
var PipelineValidationIssueSchema = zod.z.object({
|
|
7537
|
+
addonId: zod.z.string(),
|
|
7538
|
+
kind: zod.z.enum(["unknown-addon", "no-format-build"]),
|
|
7539
|
+
detail: zod.z.string()
|
|
7540
|
+
});
|
|
7541
|
+
var PipelineValidationResultSchema = zod.z.object({
|
|
7542
|
+
ok: zod.z.boolean(),
|
|
7543
|
+
issues: zod.z.array(PipelineValidationIssueSchema).readonly(),
|
|
7544
|
+
substitutions: zod.z.array(ModelSubstitutionSchema).readonly(),
|
|
7545
|
+
/** The node's `currentEngine.format` this validation ran against. */
|
|
7546
|
+
format: zod.z.string()
|
|
7547
|
+
});
|
|
7391
7548
|
var ReferenceImageEntrySchema = zod.z.object({
|
|
7392
7549
|
filename: zod.z.string(),
|
|
7393
7550
|
stepIds: zod.z.array(zod.z.string()).readonly().optional()
|
|
@@ -7504,6 +7661,19 @@ var pipelineExecutorCapability = {
|
|
|
7504
7661
|
getGlobalSteps: require_sleep.method(zod.z.void(), zod.z.array(PipelineDefaultStepSchema).readonly().nullable()),
|
|
7505
7662
|
getGlobalPipelineConfig: require_sleep.method(zod.z.void(), PipelineConfigBridge),
|
|
7506
7663
|
getOrchestratorConfigSchema: require_sleep.method(zod.z.void(), ConfigUISchemaBridge),
|
|
7664
|
+
/**
|
|
7665
|
+
* Gate B (pre-init config-correctness gate). PURE COMPUTE against this
|
|
7666
|
+
* node's `currentEngine.format` — resolves `steps` the same way the
|
|
7667
|
+
* runtime dispatch path would, and reports what WOULD happen without
|
|
7668
|
+
* touching any node-global state. Called by the orchestrator at attach
|
|
7669
|
+
* time (`attachOn`), node-pinned to the TARGET node, so config problems
|
|
7670
|
+
* surface BEFORE `pipelineRunner.attachCamera` rather than at the first
|
|
7671
|
+
* per-frame resolve. `ok` is false iff `issues` is non-empty (both
|
|
7672
|
+
* `unknown-addon` and `no-format-build` are HARD issues); `substitutions`
|
|
7673
|
+
* is informational (a degraded-but-loadable model swap) and never
|
|
7674
|
+
* affects `ok`. Never throws.
|
|
7675
|
+
*/
|
|
7676
|
+
validatePipeline: require_sleep.method(zod.z.object({ steps: zod.z.array(PipelineStepInputSchema) }), PipelineValidationResultSchema),
|
|
7507
7677
|
listTemplates: require_sleep.method(zod.z.void(), zod.z.array(PipelineTemplateSchema$1).readonly()),
|
|
7508
7678
|
saveTemplate: require_sleep.method(zod.z.object({
|
|
7509
7679
|
name: zod.z.string(),
|
|
@@ -7890,6 +8060,13 @@ var RunnerFrameSourceSchema = zod.z.discriminatedUnion("kind", [zod.z.object({ k
|
|
|
7890
8060
|
kind: zod.z.literal("remote-restream"),
|
|
7891
8061
|
/** The camera's source-owner node (slice 1: always the hub). */
|
|
7892
8062
|
ownerNodeId: zod.z.string(),
|
|
8063
|
+
/**
|
|
8064
|
+
* The owner's LAN-reachable host, resolved by the orchestrator from the
|
|
8065
|
+
* per-node `reachableHost` override (Cluster UI). When present the runner
|
|
8066
|
+
* dials THIS host for the owner's restream, in preference to the
|
|
8067
|
+
* `CAMSTACK_HUB_URL`-derived default. Absent → auto-detect fallback.
|
|
8068
|
+
*/
|
|
8069
|
+
ownerReachableHost: zod.z.string().optional(),
|
|
7893
8070
|
/** Operator override for the owner host the runner dials. */
|
|
7894
8071
|
hubHostnameOverride: zod.z.string().optional()
|
|
7895
8072
|
})]).describe("Per-camera frame-source mode for the runner (P2c)");
|
|
@@ -7898,13 +8075,11 @@ var RunnerFrameSourceSchema = zod.z.discriminatedUnion("kind", [zod.z.object({ k
|
|
|
7898
8075
|
* specific runner instance via `attachCamera`. Carries everything the
|
|
7899
8076
|
* runner needs to subscribe to the local broker and execute inference.
|
|
7900
8077
|
*
|
|
7901
|
-
* Stateless-pipeline model: the
|
|
7902
|
-
*
|
|
7903
|
-
*
|
|
7904
|
-
*
|
|
7905
|
-
*
|
|
7906
|
-
* `engine`/`steps`/`audio` are optional during the additive migration
|
|
7907
|
-
* window; once orchestrator + UI are migrated they become required.
|
|
8078
|
+
* Stateless-pipeline model: the pipeline content (`steps`, optional
|
|
8079
|
+
* `audio`) travels with the attach payload. The runner keeps it in RAM
|
|
8080
|
+
* for the lifetime of the attach — on rebalance, edit, or restart the
|
|
8081
|
+
* orchestrator re-sends the latest snapshot. Engine is NOT carried: it is
|
|
8082
|
+
* node-local, resolved by the executing runner at dispatch time.
|
|
7908
8083
|
*/
|
|
7909
8084
|
var RunnerCameraConfigSchema = zod.z.object({
|
|
7910
8085
|
deviceId: zod.z.number(),
|
|
@@ -7955,14 +8130,11 @@ var RunnerCameraConfigSchema = zod.z.object({
|
|
|
7955
8130
|
*/
|
|
7956
8131
|
motionSources: MotionSourcesSchema.default(["analyzer"]),
|
|
7957
8132
|
pipelineEnabled: zod.z.boolean().default(true),
|
|
7958
|
-
/** Engine choice for video steps (runtime+backend+format). */
|
|
7959
|
-
engine: PipelineEngineChoiceSchema.optional(),
|
|
7960
8133
|
/** Ordered tree of video steps. Absent → runner skips video detection. */
|
|
7961
8134
|
steps: zod.z.array(PipelineStepInputSchema).readonly().optional(),
|
|
7962
8135
|
/** Audio classification branch. `enabled:false` disables, null skips. */
|
|
7963
8136
|
audio: zod.z.object({
|
|
7964
|
-
|
|
7965
|
-
modelId: zod.z.string(),
|
|
8137
|
+
modelId: zod.z.string().optional(),
|
|
7966
8138
|
enabled: zod.z.boolean()
|
|
7967
8139
|
}).nullable().optional(),
|
|
7968
8140
|
/**
|
|
@@ -12258,6 +12430,7 @@ function createSystemProxy(api) {
|
|
|
12258
12430
|
getGlobalSteps: (input) => dispatch("pipelineExecutor", "getGlobalSteps", "query", input),
|
|
12259
12431
|
getGlobalPipelineConfig: (input) => dispatch("pipelineExecutor", "getGlobalPipelineConfig", "query", input),
|
|
12260
12432
|
getOrchestratorConfigSchema: (input) => dispatch("pipelineExecutor", "getOrchestratorConfigSchema", "query", input),
|
|
12433
|
+
validatePipeline: (input) => dispatch("pipelineExecutor", "validatePipeline", "query", input),
|
|
12261
12434
|
listTemplates: (input) => dispatch("pipelineExecutor", "listTemplates", "query", input),
|
|
12262
12435
|
saveTemplate: (input) => dispatch("pipelineExecutor", "saveTemplate", "mutation", input),
|
|
12263
12436
|
updateTemplate: (input) => dispatch("pipelineExecutor", "updateTemplate", "mutation", input),
|
|
@@ -12289,6 +12462,7 @@ function createSystemProxy(api) {
|
|
|
12289
12462
|
getGlobalMetrics: (input) => dispatch("pipelineOrchestrator", "getGlobalMetrics", "query", input),
|
|
12290
12463
|
getCapabilityBindings: (input) => dispatch("pipelineOrchestrator", "getCapabilityBindings", "query", input),
|
|
12291
12464
|
setCapabilityBinding: (input) => dispatch("pipelineOrchestrator", "setCapabilityBinding", "mutation", input),
|
|
12465
|
+
getIngestOwner: (input) => dispatch("pipelineOrchestrator", "getIngestOwner", "query", input),
|
|
12292
12466
|
getDecoderAssignments: (input) => dispatch("pipelineOrchestrator", "getDecoderAssignments", "query", input),
|
|
12293
12467
|
getAudioNodeLoad: (input) => dispatch("pipelineOrchestrator", "getAudioNodeLoad", "query", input),
|
|
12294
12468
|
getAgentSettings: (input) => dispatch("pipelineOrchestrator", "getAgentSettings", "query", input),
|
|
@@ -12298,6 +12472,7 @@ function createSystemProxy(api) {
|
|
|
12298
12472
|
setAgentMaxCameras: (input) => dispatch("pipelineOrchestrator", "setAgentMaxCameras", "mutation", input),
|
|
12299
12473
|
setAgentDetectWeight: (input) => dispatch("pipelineOrchestrator", "setAgentDetectWeight", "mutation", input),
|
|
12300
12474
|
setAgentCapabilities: (input) => dispatch("pipelineOrchestrator", "setAgentCapabilities", "mutation", input),
|
|
12475
|
+
setAgentReachableHost: (input) => dispatch("pipelineOrchestrator", "setAgentReachableHost", "mutation", input),
|
|
12301
12476
|
getCameraStatuses: (input) => dispatch("pipelineOrchestrator", "getCameraStatuses", "query", input),
|
|
12302
12477
|
listTemplates: (input) => dispatch("pipelineOrchestrator", "listTemplates", "query", input),
|
|
12303
12478
|
saveTemplate: (input) => dispatch("pipelineOrchestrator", "saveTemplate", "mutation", input),
|
|
@@ -14410,6 +14585,65 @@ var cameraPipelineConfigCapability = {
|
|
|
14410
14585
|
methods: {}
|
|
14411
14586
|
};
|
|
14412
14587
|
//#endregion
|
|
14588
|
+
//#region src/capabilities/cap-router-predicates.ts
|
|
14589
|
+
/**
|
|
14590
|
+
* Shared cap-router predicates — the SINGLE source for the structural Zod-shape
|
|
14591
|
+
* checks + naming used by BOTH the runtime cap-router builder
|
|
14592
|
+
* (`@camstack/system` `cap-router-builder.ts` + the server's
|
|
14593
|
+
* `cap-router-runtime.ts`) AND the codegen scripts (`scripts/generate-cap-*.ts`).
|
|
14594
|
+
*
|
|
14595
|
+
* These used to be independently reimplemented on each side, held in sync only
|
|
14596
|
+
* by "must stay byte-identical" comments — a live drift risk. Consolidating them
|
|
14597
|
+
* here (next to `resolveCapMount` / `expandCapMethods`, the other shared model)
|
|
14598
|
+
* makes the two paths provably agree. Each predicate accepts both Zod 4
|
|
14599
|
+
* (`_def.type`) and legacy Zod 3 (`_def.typeName` / `constructor.name`) shapes.
|
|
14600
|
+
*/
|
|
14601
|
+
/** `z.void()` — input carries no data. */
|
|
14602
|
+
function isVoidInput(schema) {
|
|
14603
|
+
const def = schema._def;
|
|
14604
|
+
return schema.constructor?.name === "ZodVoid" || def?.type === "void" || def?.typeName === "ZodVoid";
|
|
14605
|
+
}
|
|
14606
|
+
/** `z.object()` — supports `.loose()` for out-of-band `nodeId`/`addonId` keys. */
|
|
14607
|
+
function isObjectInput(schema) {
|
|
14608
|
+
const def = schema._def;
|
|
14609
|
+
return schema.constructor?.name === "ZodObject" || def?.type === "object" || def?.typeName === "ZodObject";
|
|
14610
|
+
}
|
|
14611
|
+
/**
|
|
14612
|
+
* Structural "is this Zod schema an array output" check — bottoms out at
|
|
14613
|
+
* `ZodArray` through the canonical Zod 4 wrappers (readonly/optional/nullable/
|
|
14614
|
+
* default). Bounded unwrap guards against a malformed/cyclic schema.
|
|
14615
|
+
*/
|
|
14616
|
+
function isArrayOutputSchema(schema) {
|
|
14617
|
+
let cur = schema;
|
|
14618
|
+
for (let depth = 0; depth < 8 && cur != null; depth += 1) {
|
|
14619
|
+
const def = cur._def;
|
|
14620
|
+
const ctor = cur.constructor?.name;
|
|
14621
|
+
if (ctor === "ZodArray" || def?.type === "array") return true;
|
|
14622
|
+
if (!(ctor === "ZodReadonly" || def?.type === "readonly" || ctor === "ZodOptional" || def?.type === "optional" || ctor === "ZodNullable" || def?.type === "nullable" || ctor === "ZodDefault" || def?.type === "default") || def?.innerType == null) return false;
|
|
14623
|
+
cur = def.innerType;
|
|
14624
|
+
}
|
|
14625
|
+
return false;
|
|
14626
|
+
}
|
|
14627
|
+
/**
|
|
14628
|
+
* Apply `.loose()` to an object input schema when available (Zod 4) so the
|
|
14629
|
+
* router accepts the out-of-band `nodeId`/`addonId` selector keys without
|
|
14630
|
+
* stripping them. Falls back to the schema unchanged when `.loose()` is absent.
|
|
14631
|
+
*/
|
|
14632
|
+
function looseSchema(schema) {
|
|
14633
|
+
const loose = schema.loose;
|
|
14634
|
+
return typeof loose === "function" ? loose.call(schema) : schema;
|
|
14635
|
+
}
|
|
14636
|
+
/** Auth level → base-procedure key. `superAdmin` collapses to `admin`. */
|
|
14637
|
+
function procedureAuthKey(auth) {
|
|
14638
|
+
if (auth === "public") return "public";
|
|
14639
|
+
if (auth === "admin" || auth === "superAdmin") return "admin";
|
|
14640
|
+
return "protected";
|
|
14641
|
+
}
|
|
14642
|
+
/** kebab-case cap name → camelCase router-map key. */
|
|
14643
|
+
function kebabToCamel(s) {
|
|
14644
|
+
return s.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
|
|
14645
|
+
}
|
|
14646
|
+
//#endregion
|
|
14413
14647
|
//#region src/capabilities/custom-actions.ts
|
|
14414
14648
|
/**
|
|
14415
14649
|
* Identity — preserves literal types for downstream inference.
|
|
@@ -17198,11 +17432,11 @@ var pipelineAnalyticsCapability = {
|
|
|
17198
17432
|
//#endregion
|
|
17199
17433
|
//#region src/capabilities/pipeline-orchestrator.cap.ts
|
|
17200
17434
|
var CameraPipelineConfigSchema = zod.z.object({
|
|
17201
|
-
engine: PipelineEngineChoiceSchema,
|
|
17435
|
+
engine: PipelineEngineChoiceSchema.optional(),
|
|
17202
17436
|
steps: zod.z.array(PipelineStepInputSchema).readonly(),
|
|
17203
17437
|
audio: zod.z.object({
|
|
17204
|
-
engine: PipelineEngineChoiceSchema,
|
|
17205
|
-
modelId: zod.z.string(),
|
|
17438
|
+
engine: PipelineEngineChoiceSchema.optional(),
|
|
17439
|
+
modelId: zod.z.string().optional(),
|
|
17206
17440
|
enabled: zod.z.boolean(),
|
|
17207
17441
|
settings: zod.z.record(zod.z.string(), zod.z.unknown()).readonly().optional()
|
|
17208
17442
|
}).nullable().optional()
|
|
@@ -17217,7 +17451,7 @@ var PipelineTemplateSchema = zod.z.object({
|
|
|
17217
17451
|
});
|
|
17218
17452
|
var AgentAddonConfigSchema = zod.z.object({
|
|
17219
17453
|
enabled: zod.z.boolean(),
|
|
17220
|
-
modelId: zod.z.string(),
|
|
17454
|
+
modelId: zod.z.string().optional(),
|
|
17221
17455
|
settings: zod.z.record(zod.z.string(), zod.z.unknown()).readonly()
|
|
17222
17456
|
});
|
|
17223
17457
|
var AgentPipelineSettingsSchema = zod.z.object({
|
|
@@ -17232,7 +17466,15 @@ var AgentPipelineSettingsSchema = zod.z.object({
|
|
|
17232
17466
|
/** Node is eligible to run audio-analyzer sessions. */
|
|
17233
17467
|
audio: zod.z.boolean().optional(),
|
|
17234
17468
|
/** Node is eligible to be the ingest / source-owner (serve the restream). */
|
|
17235
|
-
ingest: zod.z.boolean().optional()
|
|
17469
|
+
ingest: zod.z.boolean().optional(),
|
|
17470
|
+
/**
|
|
17471
|
+
* Operator override for the LAN host a cross-node decoder dials to reach
|
|
17472
|
+
* THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
|
|
17473
|
+
* falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
|
|
17474
|
+
* it already uses to reach the hub). Set this only when the auto-detected
|
|
17475
|
+
* address is wrong (multi-homed host, NAT, custom interface).
|
|
17476
|
+
*/
|
|
17477
|
+
reachableHost: zod.z.string().optional()
|
|
17236
17478
|
});
|
|
17237
17479
|
var CameraPipelineForAgentSchema = zod.z.object({
|
|
17238
17480
|
steps: zod.z.array(PipelineStepInputSchema).readonly(),
|
|
@@ -17338,6 +17580,15 @@ var GlobalMetricsSchema = zod.z.object({
|
|
|
17338
17580
|
* capability providers.
|
|
17339
17581
|
*/
|
|
17340
17582
|
var CapabilityBindingsSchema = zod.z.record(zod.z.string(), zod.z.string());
|
|
17583
|
+
/**
|
|
17584
|
+
* The cluster's single camera-source owner (`clusterRoles.ingestNode`) plus
|
|
17585
|
+
* its LAN-reachable host, if one is registered. See `getIngestOwner`.
|
|
17586
|
+
*/
|
|
17587
|
+
var IngestOwnerSchema = zod.z.object({
|
|
17588
|
+
ownerNodeId: zod.z.string(),
|
|
17589
|
+
reachableHost: zod.z.string().optional(),
|
|
17590
|
+
configIssue: zod.z.string().optional()
|
|
17591
|
+
});
|
|
17341
17592
|
/** Stream entry surfaced from the stream-catalog for one device. */
|
|
17342
17593
|
var CameraSourceStreamSchema = zod.z.object({
|
|
17343
17594
|
camStreamId: zod.z.string(),
|
|
@@ -17354,6 +17605,14 @@ var CameraAssignmentStatusSchema = zod.z.object({
|
|
|
17354
17605
|
detectionNodeId: zod.z.string().nullable(),
|
|
17355
17606
|
decoderNodeId: zod.z.string().nullable(),
|
|
17356
17607
|
audioNodeId: zod.z.string().nullable(),
|
|
17608
|
+
/**
|
|
17609
|
+
* The node that OWNS this camera's physical source pull (dials the RTSP and
|
|
17610
|
+
* hosts the broker/restream) — the cluster ingest owner today
|
|
17611
|
+
* (`clusterRoles.ingestNode`), per-camera once source assignment lands. Lets
|
|
17612
|
+
* the UI show WHERE a camera is sourced without SSH/logs, and is the node the
|
|
17613
|
+
* broker block below was read from (pinned). Nullable only pre-wiring.
|
|
17614
|
+
*/
|
|
17615
|
+
sourceNodeId: zod.z.string().nullable(),
|
|
17357
17616
|
pinned: zod.z.object({
|
|
17358
17617
|
detection: zod.z.boolean(),
|
|
17359
17618
|
decoder: zod.z.boolean(),
|
|
@@ -17560,6 +17819,14 @@ var pipelineOrchestratorCapability = {
|
|
|
17560
17819
|
kind: "mutation",
|
|
17561
17820
|
auth: "admin"
|
|
17562
17821
|
}),
|
|
17822
|
+
/**
|
|
17823
|
+
* The cluster's single camera-source owner — resolved UNCONDITIONALLY
|
|
17824
|
+
* from `clusterRoles.ingestNode` (NOT the detection-decode
|
|
17825
|
+
* `remoteSourcingNodes` knob). Consumers (recorder/snapshot/audio) pin
|
|
17826
|
+
* their broker calls to `ownerNodeId` and dial `reachableHost` when
|
|
17827
|
+
* present. Defaults to `{ ownerNodeId: 'hub' }`.
|
|
17828
|
+
*/
|
|
17829
|
+
getIngestOwner: require_sleep.method(zod.z.void(), IngestOwnerSchema),
|
|
17563
17830
|
/** Pin a device's decoder to a specific node. */
|
|
17564
17831
|
assignDecoder: require_sleep.method(zod.z.object({
|
|
17565
17832
|
deviceId: zod.z.number(),
|
|
@@ -17706,6 +17973,22 @@ var pipelineOrchestratorCapability = {
|
|
|
17706
17973
|
kind: "mutation",
|
|
17707
17974
|
auth: "admin"
|
|
17708
17975
|
}),
|
|
17976
|
+
/**
|
|
17977
|
+
* Set (or clear) the operator override for the LAN host a cross-node
|
|
17978
|
+
* decoder dials to reach this node's restream. Pass a non-empty string to
|
|
17979
|
+
* override the auto-detected address (the runner's `CAMSTACK_HUB_URL`
|
|
17980
|
+
* default); pass `null` or an empty string to clear it and revert to
|
|
17981
|
+
* auto-detect. Applied on the next dispatch cycle — takes effect for new
|
|
17982
|
+
* cross-node attaches; existing attaches keep their current host until
|
|
17983
|
+
* re-dispatched.
|
|
17984
|
+
*/
|
|
17985
|
+
setAgentReachableHost: require_sleep.method(zod.z.object({
|
|
17986
|
+
agentNodeId: zod.z.string(),
|
|
17987
|
+
reachableHost: zod.z.string().nullable()
|
|
17988
|
+
}), zod.z.object({ success: zod.z.literal(true) }), {
|
|
17989
|
+
kind: "mutation",
|
|
17990
|
+
auth: "admin"
|
|
17991
|
+
}),
|
|
17709
17992
|
/** Read one camera's settings. Null when never touched (inherits agent defaults fully). */
|
|
17710
17993
|
getCameraSettings: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), CameraPipelineSettingsSchema.nullable()),
|
|
17711
17994
|
/** Set or clear the 3-state toggle for one (camera, addonId). Pass `enabled: null` to clear and revert to agent default. */
|
|
@@ -17798,36 +18081,6 @@ var pipelineOrchestratorCapability = {
|
|
|
17798
18081
|
}
|
|
17799
18082
|
};
|
|
17800
18083
|
//#endregion
|
|
17801
|
-
//#region src/capabilities/restreamer.cap.ts
|
|
17802
|
-
var RegisteredStreamSchema = zod.z.object({
|
|
17803
|
-
streamId: zod.z.string(),
|
|
17804
|
-
label: zod.z.string().optional(),
|
|
17805
|
-
codec: zod.z.string(),
|
|
17806
|
-
type: zod.z.enum(["video", "audio"]),
|
|
17807
|
-
sourceUrl: zod.z.string()
|
|
17808
|
-
});
|
|
17809
|
-
var ExposedResourceSchema = zod.z.object({
|
|
17810
|
-
streamId: zod.z.string(),
|
|
17811
|
-
format: zod.z.string(),
|
|
17812
|
-
value: zod.z.string()
|
|
17813
|
-
});
|
|
17814
|
-
var restreamerCapability = {
|
|
17815
|
-
name: "restreamer",
|
|
17816
|
-
scope: "system",
|
|
17817
|
-
mode: "collection",
|
|
17818
|
-
internal: true,
|
|
17819
|
-
methods: {
|
|
17820
|
-
registerDevice: require_sleep.method(zod.z.object({
|
|
17821
|
-
deviceId: zod.z.number(),
|
|
17822
|
-
streams: zod.z.array(RegisteredStreamSchema).readonly()
|
|
17823
|
-
}), zod.z.void(), { kind: "mutation" }),
|
|
17824
|
-
unregisterDevice: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), { kind: "mutation" }),
|
|
17825
|
-
getExposedResources: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), zod.z.array(ExposedResourceSchema).readonly())
|
|
17826
|
-
},
|
|
17827
|
-
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
17828
|
-
mount: { kind: "skip" }
|
|
17829
|
-
};
|
|
17830
|
-
//#endregion
|
|
17831
18084
|
//#region src/capabilities/settings-store.cap.ts
|
|
17832
18085
|
/**
|
|
17833
18086
|
* Query filter for settings-store collections.
|
|
@@ -18055,9 +18308,9 @@ var smtpProviderCapability = {
|
|
|
18055
18308
|
/**
|
|
18056
18309
|
* A single device snapshot returned as base64 JPEG/PNG.
|
|
18057
18310
|
*
|
|
18058
|
-
*
|
|
18059
|
-
*
|
|
18060
|
-
*
|
|
18311
|
+
* The `SnapshotAddon` wrapper returns this shape whether the frame came from
|
|
18312
|
+
* the device-native provider (onboard capture) or from the stream-broker
|
|
18313
|
+
* prebuffer fallback.
|
|
18061
18314
|
*/
|
|
18062
18315
|
var SnapshotImageSchema = zod.z.object({
|
|
18063
18316
|
base64: zod.z.string(),
|
|
@@ -18133,38 +18386,6 @@ var snapshotCapability = {
|
|
|
18133
18386
|
}
|
|
18134
18387
|
};
|
|
18135
18388
|
//#endregion
|
|
18136
|
-
//#region src/capabilities/snapshot-provider.cap.ts
|
|
18137
|
-
/**
|
|
18138
|
-
* snapshot-provider — collection of native snapshot implementations.
|
|
18139
|
-
*
|
|
18140
|
-
* Device provider addons (ONVIF, Frigate, etc.) register here
|
|
18141
|
-
* when they can capture frames through a protocol-native path (e.g.
|
|
18142
|
-
* ONVIF GetSnapshotUri, Frigate /api/<cam>/latest.jpg). The `snapshot`
|
|
18143
|
-
* singleton orchestrator iterates over the collection, asking each
|
|
18144
|
-
* provider whether it supports the requested device, and calls the
|
|
18145
|
-
* first matching one.
|
|
18146
|
-
*
|
|
18147
|
-
* If no provider in the collection supports a device, the orchestrator
|
|
18148
|
-
* falls back to `stream-broker.grabFrame` (universal fallback).
|
|
18149
|
-
*
|
|
18150
|
-
* Public tRPC router (auto-mounted) so out-of-process addons, agents,
|
|
18151
|
-
* and advanced clients can bypass the orchestrator when needed.
|
|
18152
|
-
*/
|
|
18153
|
-
var snapshotProviderCapability = {
|
|
18154
|
-
name: "snapshot-provider",
|
|
18155
|
-
scope: "system",
|
|
18156
|
-
mode: "collection",
|
|
18157
|
-
methods: {
|
|
18158
|
-
supportsDevice: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), zod.z.boolean()),
|
|
18159
|
-
getSnapshot: require_sleep.method(zod.z.object({
|
|
18160
|
-
deviceId: zod.z.number(),
|
|
18161
|
-
streamId: zod.z.string().optional()
|
|
18162
|
-
}), SnapshotImageSchema.nullable())
|
|
18163
|
-
},
|
|
18164
|
-
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
18165
|
-
mount: { kind: "custom" }
|
|
18166
|
-
};
|
|
18167
|
-
//#endregion
|
|
18168
18389
|
//#region src/capabilities/sso-bridge.cap.ts
|
|
18169
18390
|
/**
|
|
18170
18391
|
* `sso-bridge` — internal hub-only cap that lets SSO-style auth
|
|
@@ -18699,11 +18920,12 @@ var videoclipsCapability = {
|
|
|
18699
18920
|
}
|
|
18700
18921
|
};
|
|
18701
18922
|
//#endregion
|
|
18702
|
-
//#region src/capabilities/webrtc.cap.ts
|
|
18923
|
+
//#region src/capabilities/webrtc-session.cap.ts
|
|
18703
18924
|
/**
|
|
18704
|
-
* Optional client-side hints sent at session creation to help the
|
|
18705
|
-
*
|
|
18706
|
-
*
|
|
18925
|
+
* Optional client-side hints sent at session creation to help the provider
|
|
18926
|
+
* pick the best native source. All fields optional — a viewer that knows
|
|
18927
|
+
* nothing still gets a sane default. (Relocated from the retired `webrtc`
|
|
18928
|
+
* collection cap; this `webrtc-session` cap is the live signaling surface.)
|
|
18707
18929
|
*/
|
|
18708
18930
|
var webrtcClientHintsSchema = zod.z.object({
|
|
18709
18931
|
viewportWidth: zod.z.number().int().positive().optional(),
|
|
@@ -18714,51 +18936,6 @@ var webrtcClientHintsSchema = zod.z.object({
|
|
|
18714
18936
|
/** Hard tier override; takes precedence over scoring when registered. */
|
|
18715
18937
|
prefersTier: zod.z.string().optional()
|
|
18716
18938
|
}).partial();
|
|
18717
|
-
var webrtcCapability = {
|
|
18718
|
-
name: "webrtc",
|
|
18719
|
-
scope: "system",
|
|
18720
|
-
mode: "collection",
|
|
18721
|
-
internal: true,
|
|
18722
|
-
methods: {
|
|
18723
|
-
handleOffer: require_sleep.method(zod.z.object({
|
|
18724
|
-
streamId: zod.z.string(),
|
|
18725
|
-
sdpOffer: zod.z.string()
|
|
18726
|
-
}), zod.z.string(), { kind: "mutation" }),
|
|
18727
|
-
supportsStream: require_sleep.method(zod.z.object({ streamId: zod.z.string() }), zod.z.boolean()),
|
|
18728
|
-
registerStream: require_sleep.method(zod.z.object({
|
|
18729
|
-
streamId: zod.z.string(),
|
|
18730
|
-
codec: zod.z.string()
|
|
18731
|
-
}), zod.z.void(), { kind: "mutation" }),
|
|
18732
|
-
unregisterStream: require_sleep.method(zod.z.object({ streamId: zod.z.string() }), zod.z.void(), { kind: "mutation" }),
|
|
18733
|
-
/**
|
|
18734
|
-
* Two-step server-offer signaling. `hints` is optional — providers
|
|
18735
|
-
* that don't care about adaptive source selection ignore it.
|
|
18736
|
-
*/
|
|
18737
|
-
createSession: require_sleep.method(zod.z.object({
|
|
18738
|
-
streamId: zod.z.string(),
|
|
18739
|
-
hints: webrtcClientHintsSchema.optional()
|
|
18740
|
-
}), zod.z.object({
|
|
18741
|
-
sessionId: zod.z.string(),
|
|
18742
|
-
sdpOffer: zod.z.string()
|
|
18743
|
-
}), { kind: "mutation" }),
|
|
18744
|
-
handleAnswer: require_sleep.method(zod.z.object({
|
|
18745
|
-
sessionId: zod.z.string(),
|
|
18746
|
-
sdpAnswer: zod.z.string()
|
|
18747
|
-
}), zod.z.void(), { kind: "mutation" }),
|
|
18748
|
-
closeSession: require_sleep.method(zod.z.object({ sessionId: zod.z.string() }), zod.z.void(), { kind: "mutation" }),
|
|
18749
|
-
/**
|
|
18750
|
-
* Whether this provider supports adaptive bitrate for the given stream.
|
|
18751
|
-
* Currently always false — adaptive selection is one-shot at session
|
|
18752
|
-
* start, not in-session encoder switching. Phase 5 plans to layer
|
|
18753
|
-
* encoder-driven adaptation on top.
|
|
18754
|
-
*/
|
|
18755
|
-
hasAdaptiveBitrate: require_sleep.method(zod.z.object({ streamId: zod.z.string() }), zod.z.boolean())
|
|
18756
|
-
},
|
|
18757
|
-
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
18758
|
-
mount: { kind: "skip" }
|
|
18759
|
-
};
|
|
18760
|
-
//#endregion
|
|
18761
|
-
//#region src/capabilities/webrtc-session.cap.ts
|
|
18762
18939
|
/**
|
|
18763
18940
|
* Discriminated target for a WebRTC session. The client sends this
|
|
18764
18941
|
* structured object instead of building / parsing brokerId strings;
|
|
@@ -19031,7 +19208,7 @@ var webrtcSessionCapability = {
|
|
|
19031
19208
|
}).nullable() }))
|
|
19032
19209
|
},
|
|
19033
19210
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
19034
|
-
mount: { kind: "
|
|
19211
|
+
mount: { kind: "server-provided" }
|
|
19035
19212
|
};
|
|
19036
19213
|
//#endregion
|
|
19037
19214
|
//#region src/capabilities/accessories.cap.ts
|
|
@@ -19403,7 +19580,15 @@ var FrameworkPackageStatusSchema = zod.z.object({
|
|
|
19403
19580
|
latestVersion: zod.z.string().nullable(),
|
|
19404
19581
|
hasUpdate: zod.z.boolean(),
|
|
19405
19582
|
/** Optional manifest description for the row tooltip. */
|
|
19406
|
-
description: zod.z.string().optional()
|
|
19583
|
+
description: zod.z.string().optional(),
|
|
19584
|
+
/**
|
|
19585
|
+
* Content build-id (md5 of the resolved `dist/` tree) of the code the hub
|
|
19586
|
+
* ACTUALLY loaded. Framework packages ship code changes without always
|
|
19587
|
+
* bumping `currentVersion`, so semver alone hides "same version, new code".
|
|
19588
|
+
* `null` when the dist can't be hashed (not installed / empty). The admin-UI
|
|
19589
|
+
* surfaces this so a stale-code hub is visible even at an unchanged version.
|
|
19590
|
+
*/
|
|
19591
|
+
buildId: zod.z.string().nullable()
|
|
19407
19592
|
});
|
|
19408
19593
|
var LogStreamEntrySchema = zod.z.object({
|
|
19409
19594
|
timestamp: zod.z.string(),
|
|
@@ -19702,7 +19887,7 @@ var addonsCapability = {
|
|
|
19702
19887
|
}), LogStreamEntrySchema, { kind: "subscription" })
|
|
19703
19888
|
},
|
|
19704
19889
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
19705
|
-
mount: { kind: "
|
|
19890
|
+
mount: { kind: "server-provided" }
|
|
19706
19891
|
};
|
|
19707
19892
|
//#endregion
|
|
19708
19893
|
//#region src/capabilities/button.cap.ts
|
|
@@ -20118,7 +20303,7 @@ var integrationsCapability = {
|
|
|
20118
20303
|
})
|
|
20119
20304
|
},
|
|
20120
20305
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
20121
|
-
mount: { kind: "
|
|
20306
|
+
mount: { kind: "server-provided" }
|
|
20122
20307
|
};
|
|
20123
20308
|
//#endregion
|
|
20124
20309
|
//#region src/capabilities/intercom.cap.ts
|
|
@@ -20765,7 +20950,7 @@ var networkQualityCapability = {
|
|
|
20765
20950
|
}), zod.z.void(), { kind: "mutation" })
|
|
20766
20951
|
},
|
|
20767
20952
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
20768
|
-
mount: { kind: "
|
|
20953
|
+
mount: { kind: "server-provided" }
|
|
20769
20954
|
};
|
|
20770
20955
|
//#endregion
|
|
20771
20956
|
//#region src/capabilities/nodes.cap.ts
|
|
@@ -20957,7 +21142,7 @@ var nodesCapability = {
|
|
|
20957
21142
|
})
|
|
20958
21143
|
},
|
|
20959
21144
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
20960
|
-
mount: { kind: "
|
|
21145
|
+
mount: { kind: "server-provided" }
|
|
20961
21146
|
};
|
|
20962
21147
|
//#endregion
|
|
20963
21148
|
//#region src/capabilities/osd.cap.ts
|
|
@@ -21951,7 +22136,7 @@ var systemCapability = {
|
|
|
21951
22136
|
})
|
|
21952
22137
|
},
|
|
21953
22138
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
21954
|
-
mount: { kind: "
|
|
22139
|
+
mount: { kind: "server-provided" }
|
|
21955
22140
|
};
|
|
21956
22141
|
//#endregion
|
|
21957
22142
|
//#region src/capabilities/toast.cap.ts
|
|
@@ -21991,7 +22176,7 @@ var toastCapability = {
|
|
|
21991
22176
|
mode: "singleton",
|
|
21992
22177
|
methods: { onToast: require_sleep.method(zod.z.void(), ToastSchema, { kind: "subscription" }) },
|
|
21993
22178
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
21994
|
-
mount: { kind: "
|
|
22179
|
+
mount: { kind: "server-provided" }
|
|
21995
22180
|
};
|
|
21996
22181
|
//#endregion
|
|
21997
22182
|
//#region src/capabilities/user-management.cap.ts
|
|
@@ -22371,13 +22556,11 @@ var CAPABILITY_NAMES = {
|
|
|
22371
22556
|
ptzAutotrack: "ptz-autotrack",
|
|
22372
22557
|
reboot: "reboot",
|
|
22373
22558
|
recording: "recording",
|
|
22374
|
-
restreamer: "restreamer",
|
|
22375
22559
|
scriptRunner: "script-runner",
|
|
22376
22560
|
settingsStore: "settings-store",
|
|
22377
22561
|
smoke: "smoke",
|
|
22378
22562
|
smtpProvider: "smtp-provider",
|
|
22379
22563
|
snapshot: "snapshot",
|
|
22380
|
-
snapshotProvider: "snapshot-provider",
|
|
22381
22564
|
ssoBridge: "sso-bridge",
|
|
22382
22565
|
storage: "storage",
|
|
22383
22566
|
storageEvictable: "storage-evictable",
|
|
@@ -22385,7 +22568,6 @@ var CAPABILITY_NAMES = {
|
|
|
22385
22568
|
streamBroker: "stream-broker",
|
|
22386
22569
|
streamCatalog: "stream-catalog",
|
|
22387
22570
|
streamParams: "stream-params",
|
|
22388
|
-
streamingEngine: "streaming-engine",
|
|
22389
22571
|
switch: "switch",
|
|
22390
22572
|
system: "system",
|
|
22391
22573
|
tamper: "tamper",
|
|
@@ -22401,7 +22583,6 @@ var CAPABILITY_NAMES = {
|
|
|
22401
22583
|
videoclips: "videoclips",
|
|
22402
22584
|
waterHeater: "water-heater",
|
|
22403
22585
|
weather: "weather",
|
|
22404
|
-
webrtc: "webrtc",
|
|
22405
22586
|
webrtcSession: "webrtc-session",
|
|
22406
22587
|
zoneAnalytics: "zone-analytics",
|
|
22407
22588
|
zoneRules: "zone-rules",
|
|
@@ -22825,10 +23006,6 @@ var CAPABILITY_ROUTER_KEYS = [
|
|
|
22825
23006
|
key: "recording",
|
|
22826
23007
|
name: "recording"
|
|
22827
23008
|
},
|
|
22828
|
-
{
|
|
22829
|
-
key: "restreamer",
|
|
22830
|
-
name: "restreamer"
|
|
22831
|
-
},
|
|
22832
23009
|
{
|
|
22833
23010
|
key: "scriptRunner",
|
|
22834
23011
|
name: "script-runner"
|
|
@@ -22849,10 +23026,6 @@ var CAPABILITY_ROUTER_KEYS = [
|
|
|
22849
23026
|
key: "snapshot",
|
|
22850
23027
|
name: "snapshot"
|
|
22851
23028
|
},
|
|
22852
|
-
{
|
|
22853
|
-
key: "snapshotProvider",
|
|
22854
|
-
name: "snapshot-provider"
|
|
22855
|
-
},
|
|
22856
23029
|
{
|
|
22857
23030
|
key: "ssoBridge",
|
|
22858
23031
|
name: "sso-bridge"
|
|
@@ -22881,10 +23054,6 @@ var CAPABILITY_ROUTER_KEYS = [
|
|
|
22881
23054
|
key: "streamParams",
|
|
22882
23055
|
name: "stream-params"
|
|
22883
23056
|
},
|
|
22884
|
-
{
|
|
22885
|
-
key: "streamingEngine",
|
|
22886
|
-
name: "streaming-engine"
|
|
22887
|
-
},
|
|
22888
23057
|
{
|
|
22889
23058
|
key: "switch",
|
|
22890
23059
|
name: "switch"
|
|
@@ -22945,10 +23114,6 @@ var CAPABILITY_ROUTER_KEYS = [
|
|
|
22945
23114
|
key: "weather",
|
|
22946
23115
|
name: "weather"
|
|
22947
23116
|
},
|
|
22948
|
-
{
|
|
22949
|
-
key: "webrtc",
|
|
22950
|
-
name: "webrtc"
|
|
22951
|
-
},
|
|
22952
23117
|
{
|
|
22953
23118
|
key: "webrtcSession",
|
|
22954
23119
|
name: "webrtc-session"
|
|
@@ -23080,13 +23245,11 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
23080
23245
|
ptzAutotrackCapability,
|
|
23081
23246
|
rebootCapability,
|
|
23082
23247
|
recordingCapability,
|
|
23083
|
-
restreamerCapability,
|
|
23084
23248
|
scriptRunnerCapability,
|
|
23085
23249
|
settingsStoreCapability,
|
|
23086
23250
|
smokeCapability,
|
|
23087
23251
|
smtpProviderCapability,
|
|
23088
23252
|
snapshotCapability,
|
|
23089
|
-
snapshotProviderCapability,
|
|
23090
23253
|
ssoBridgeCapability,
|
|
23091
23254
|
storageCapability,
|
|
23092
23255
|
storageEvictableCapability,
|
|
@@ -23094,7 +23257,6 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
23094
23257
|
streamBrokerCapability,
|
|
23095
23258
|
streamCatalogCapability,
|
|
23096
23259
|
streamParamsCapability,
|
|
23097
|
-
streamingEngineCapability,
|
|
23098
23260
|
switchCapability,
|
|
23099
23261
|
systemCapability,
|
|
23100
23262
|
tamperCapability,
|
|
@@ -23110,7 +23272,6 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
23110
23272
|
videoclipsCapability,
|
|
23111
23273
|
waterHeaterCapability,
|
|
23112
23274
|
weatherCapability,
|
|
23113
|
-
webrtcCapability,
|
|
23114
23275
|
webrtcSessionCapability,
|
|
23115
23276
|
zoneAnalyticsCapability,
|
|
23116
23277
|
zoneRulesCapability,
|
|
@@ -26009,6 +26170,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
26009
26170
|
addonId: null,
|
|
26010
26171
|
access: "create"
|
|
26011
26172
|
},
|
|
26173
|
+
"pipelineExecutor.validatePipeline": {
|
|
26174
|
+
capName: "pipeline-executor",
|
|
26175
|
+
capScope: "system",
|
|
26176
|
+
addonId: null,
|
|
26177
|
+
access: "view"
|
|
26178
|
+
},
|
|
26012
26179
|
"pipelineOrchestrator.assignAudio": {
|
|
26013
26180
|
capName: "pipeline-orchestrator",
|
|
26014
26181
|
capScope: "system",
|
|
@@ -26117,6 +26284,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
26117
26284
|
addonId: null,
|
|
26118
26285
|
access: "view"
|
|
26119
26286
|
},
|
|
26287
|
+
"pipelineOrchestrator.getIngestOwner": {
|
|
26288
|
+
capName: "pipeline-orchestrator",
|
|
26289
|
+
capScope: "system",
|
|
26290
|
+
addonId: null,
|
|
26291
|
+
access: "view"
|
|
26292
|
+
},
|
|
26120
26293
|
"pipelineOrchestrator.getPipelineAssignment": {
|
|
26121
26294
|
capName: "pipeline-orchestrator",
|
|
26122
26295
|
capScope: "system",
|
|
@@ -26189,6 +26362,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
26189
26362
|
addonId: null,
|
|
26190
26363
|
access: "create"
|
|
26191
26364
|
},
|
|
26365
|
+
"pipelineOrchestrator.setAgentReachableHost": {
|
|
26366
|
+
capName: "pipeline-orchestrator",
|
|
26367
|
+
capScope: "system",
|
|
26368
|
+
addonId: null,
|
|
26369
|
+
access: "create"
|
|
26370
|
+
},
|
|
26192
26371
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
26193
26372
|
capName: "pipeline-orchestrator",
|
|
26194
26373
|
capScope: "system",
|
|
@@ -26519,24 +26698,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
26519
26698
|
addonId: null,
|
|
26520
26699
|
access: "create"
|
|
26521
26700
|
},
|
|
26522
|
-
"restreamer.getExposedResources": {
|
|
26523
|
-
capName: "restreamer",
|
|
26524
|
-
capScope: "system",
|
|
26525
|
-
addonId: null,
|
|
26526
|
-
access: "view"
|
|
26527
|
-
},
|
|
26528
|
-
"restreamer.registerDevice": {
|
|
26529
|
-
capName: "restreamer",
|
|
26530
|
-
capScope: "system",
|
|
26531
|
-
addonId: null,
|
|
26532
|
-
access: "create"
|
|
26533
|
-
},
|
|
26534
|
-
"restreamer.unregisterDevice": {
|
|
26535
|
-
capName: "restreamer",
|
|
26536
|
-
capScope: "system",
|
|
26537
|
-
addonId: null,
|
|
26538
|
-
access: "delete"
|
|
26539
|
-
},
|
|
26540
26701
|
"scriptRunner.run": {
|
|
26541
26702
|
capName: "script-runner",
|
|
26542
26703
|
capScope: "device",
|
|
@@ -26639,18 +26800,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
26639
26800
|
addonId: null,
|
|
26640
26801
|
access: "create"
|
|
26641
26802
|
},
|
|
26642
|
-
"snapshotProvider.getSnapshot": {
|
|
26643
|
-
capName: "snapshot-provider",
|
|
26644
|
-
capScope: "system",
|
|
26645
|
-
addonId: null,
|
|
26646
|
-
access: "view"
|
|
26647
|
-
},
|
|
26648
|
-
"snapshotProvider.supportsDevice": {
|
|
26649
|
-
capName: "snapshot-provider",
|
|
26650
|
-
capScope: "system",
|
|
26651
|
-
addonId: null,
|
|
26652
|
-
access: "view"
|
|
26653
|
-
},
|
|
26654
26803
|
"ssoBridge.signBridgeToken": {
|
|
26655
26804
|
capName: "sso-bridge",
|
|
26656
26805
|
capScope: "system",
|
|
@@ -27077,30 +27226,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
27077
27226
|
addonId: null,
|
|
27078
27227
|
access: "view"
|
|
27079
27228
|
},
|
|
27080
|
-
"streamingEngine.getStreamUrl": {
|
|
27081
|
-
capName: "streaming-engine",
|
|
27082
|
-
capScope: "system",
|
|
27083
|
-
addonId: null,
|
|
27084
|
-
access: "view"
|
|
27085
|
-
},
|
|
27086
|
-
"streamingEngine.listStreams": {
|
|
27087
|
-
capName: "streaming-engine",
|
|
27088
|
-
capScope: "system",
|
|
27089
|
-
addonId: null,
|
|
27090
|
-
access: "view"
|
|
27091
|
-
},
|
|
27092
|
-
"streamingEngine.registerStream": {
|
|
27093
|
-
capName: "streaming-engine",
|
|
27094
|
-
capScope: "system",
|
|
27095
|
-
addonId: null,
|
|
27096
|
-
access: "create"
|
|
27097
|
-
},
|
|
27098
|
-
"streamingEngine.unregisterStream": {
|
|
27099
|
-
capName: "streaming-engine",
|
|
27100
|
-
capScope: "system",
|
|
27101
|
-
addonId: null,
|
|
27102
|
-
access: "delete"
|
|
27103
|
-
},
|
|
27104
27229
|
"streamParams.getConfigSchema": {
|
|
27105
27230
|
capName: "stream-params",
|
|
27106
27231
|
capScope: "device",
|
|
@@ -27467,54 +27592,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
27467
27592
|
addonId: null,
|
|
27468
27593
|
access: "create"
|
|
27469
27594
|
},
|
|
27470
|
-
"webrtc.closeSession": {
|
|
27471
|
-
capName: "webrtc",
|
|
27472
|
-
capScope: "system",
|
|
27473
|
-
addonId: null,
|
|
27474
|
-
access: "create"
|
|
27475
|
-
},
|
|
27476
|
-
"webrtc.createSession": {
|
|
27477
|
-
capName: "webrtc",
|
|
27478
|
-
capScope: "system",
|
|
27479
|
-
addonId: null,
|
|
27480
|
-
access: "create"
|
|
27481
|
-
},
|
|
27482
|
-
"webrtc.handleAnswer": {
|
|
27483
|
-
capName: "webrtc",
|
|
27484
|
-
capScope: "system",
|
|
27485
|
-
addonId: null,
|
|
27486
|
-
access: "create"
|
|
27487
|
-
},
|
|
27488
|
-
"webrtc.handleOffer": {
|
|
27489
|
-
capName: "webrtc",
|
|
27490
|
-
capScope: "system",
|
|
27491
|
-
addonId: null,
|
|
27492
|
-
access: "create"
|
|
27493
|
-
},
|
|
27494
|
-
"webrtc.hasAdaptiveBitrate": {
|
|
27495
|
-
capName: "webrtc",
|
|
27496
|
-
capScope: "system",
|
|
27497
|
-
addonId: null,
|
|
27498
|
-
access: "view"
|
|
27499
|
-
},
|
|
27500
|
-
"webrtc.registerStream": {
|
|
27501
|
-
capName: "webrtc",
|
|
27502
|
-
capScope: "system",
|
|
27503
|
-
addonId: null,
|
|
27504
|
-
access: "create"
|
|
27505
|
-
},
|
|
27506
|
-
"webrtc.supportsStream": {
|
|
27507
|
-
capName: "webrtc",
|
|
27508
|
-
capScope: "system",
|
|
27509
|
-
addonId: null,
|
|
27510
|
-
access: "view"
|
|
27511
|
-
},
|
|
27512
|
-
"webrtc.unregisterStream": {
|
|
27513
|
-
capName: "webrtc",
|
|
27514
|
-
capScope: "system",
|
|
27515
|
-
addonId: null,
|
|
27516
|
-
access: "delete"
|
|
27517
|
-
},
|
|
27518
27595
|
"webrtcSession.addIceCandidate": {
|
|
27519
27596
|
capName: "webrtc-session",
|
|
27520
27597
|
capScope: "device",
|
|
@@ -27715,12 +27792,10 @@ var KNOWN_CAP_NAMES = [
|
|
|
27715
27792
|
"ptz-autotrack",
|
|
27716
27793
|
"reboot",
|
|
27717
27794
|
"recording",
|
|
27718
|
-
"restreamer",
|
|
27719
27795
|
"script-runner",
|
|
27720
27796
|
"settings-store",
|
|
27721
27797
|
"smtp-provider",
|
|
27722
27798
|
"snapshot",
|
|
27723
|
-
"snapshot-provider",
|
|
27724
27799
|
"sso-bridge",
|
|
27725
27800
|
"storage",
|
|
27726
27801
|
"storage-evictable",
|
|
@@ -27728,7 +27803,6 @@ var KNOWN_CAP_NAMES = [
|
|
|
27728
27803
|
"stream-broker",
|
|
27729
27804
|
"stream-catalog",
|
|
27730
27805
|
"stream-params",
|
|
27731
|
-
"streaming-engine",
|
|
27732
27806
|
"switch",
|
|
27733
27807
|
"system",
|
|
27734
27808
|
"toast",
|
|
@@ -27740,7 +27814,6 @@ var KNOWN_CAP_NAMES = [
|
|
|
27740
27814
|
"valve",
|
|
27741
27815
|
"videoclips",
|
|
27742
27816
|
"water-heater",
|
|
27743
|
-
"webrtc",
|
|
27744
27817
|
"webrtc-session",
|
|
27745
27818
|
"zone-analytics",
|
|
27746
27819
|
"zone-rules",
|
|
@@ -27848,22 +27921,18 @@ var SYSTEM_CAP_NAMES = [
|
|
|
27848
27921
|
"plate-gallery",
|
|
27849
27922
|
"platform-probe",
|
|
27850
27923
|
"recording",
|
|
27851
|
-
"restreamer",
|
|
27852
27924
|
"settings-store",
|
|
27853
27925
|
"smtp-provider",
|
|
27854
|
-
"snapshot-provider",
|
|
27855
27926
|
"sso-bridge",
|
|
27856
27927
|
"storage",
|
|
27857
27928
|
"storage-evictable",
|
|
27858
27929
|
"storage-provider",
|
|
27859
27930
|
"stream-broker",
|
|
27860
|
-
"streaming-engine",
|
|
27861
27931
|
"system",
|
|
27862
27932
|
"toast",
|
|
27863
27933
|
"turn-provider",
|
|
27864
27934
|
"user-management",
|
|
27865
|
-
"user-passkeys"
|
|
27866
|
-
"webrtc"
|
|
27935
|
+
"user-passkeys"
|
|
27867
27936
|
];
|
|
27868
27937
|
//#endregion
|
|
27869
27938
|
//#region src/generated/scope-presets.ts
|
|
@@ -28645,7 +28714,6 @@ exports.EventSourceType = EventSourceType;
|
|
|
28645
28714
|
exports.ExportSetupFieldSchema = ExportSetupFieldSchema;
|
|
28646
28715
|
exports.ExportSetupSchema = ExportSetupSchema;
|
|
28647
28716
|
exports.ExposedDeviceSchema = ExposedDeviceSchema;
|
|
28648
|
-
exports.ExposedResourceSchema = ExposedResourceSchema;
|
|
28649
28717
|
exports.ExposureModeSchema = ExposureModeSchema;
|
|
28650
28718
|
exports.ExpressionEvalError = ExpressionEvalError;
|
|
28651
28719
|
exports.ExpressionParseError = ExpressionParseError;
|
|
@@ -28674,6 +28742,7 @@ exports.ImageSettingsOptionsSchema = ImageSettingsOptionsSchema;
|
|
|
28674
28742
|
exports.ImageSettingsPatchSchema = ImageSettingsPatchSchema;
|
|
28675
28743
|
exports.ImageSettingsStatusSchema = ImageSettingsStatusSchema;
|
|
28676
28744
|
exports.ImageStatusSchema = ImageStatusSchema;
|
|
28745
|
+
exports.IngestOwnerSchema = IngestOwnerSchema;
|
|
28677
28746
|
exports.InstalledPackageSchema = InstalledPackageSchema;
|
|
28678
28747
|
exports.IntegrationLiteSchema = IntegrationLiteSchema;
|
|
28679
28748
|
exports.IntegrationWithStateSchema = IntegrationWithStateSchema;
|
|
@@ -28722,6 +28791,8 @@ exports.ModelDistributeResultSchema = ModelDistributeResultSchema;
|
|
|
28722
28791
|
exports.ModelExtraFileSchema = ModelExtraFileSchema;
|
|
28723
28792
|
exports.ModelFormatEntrySchema = ModelFormatEntrySchema;
|
|
28724
28793
|
exports.ModelFormatsSchema = ModelFormatsSchema;
|
|
28794
|
+
exports.ModelSubstitutionSchema = ModelSubstitutionSchema;
|
|
28795
|
+
exports.ModelVariantGroupSchema = ModelVariantGroupSchema;
|
|
28725
28796
|
exports.MotionAnalysisResultSchema = MotionAnalysisResultSchema;
|
|
28726
28797
|
exports.MotionEventSchema = MotionEventSchema;
|
|
28727
28798
|
exports.MotionOnMotionChangedDataSchema = MotionOnMotionChangedDataSchema;
|
|
@@ -28778,6 +28849,8 @@ exports.PipelineDefaultStepSchema = PipelineDefaultStepSchema;
|
|
|
28778
28849
|
exports.PipelineEngineChoiceSchema = PipelineEngineChoiceSchema;
|
|
28779
28850
|
exports.PipelineRunResultBridge = PipelineRunResultBridge;
|
|
28780
28851
|
exports.PipelineStepInputSchema = PipelineStepInputSchema;
|
|
28852
|
+
exports.PipelineValidationIssueSchema = PipelineValidationIssueSchema;
|
|
28853
|
+
exports.PipelineValidationResultSchema = PipelineValidationResultSchema;
|
|
28781
28854
|
exports.PlaceholderReasonSchema = PlaceholderReasonSchema;
|
|
28782
28855
|
exports.PolygonPointSchema = PolygonPointSchema;
|
|
28783
28856
|
exports.PowerMeterStatusSchema = PowerMeterStatusSchema;
|
|
@@ -28828,7 +28901,6 @@ exports.RecordingStorageModeSchema = RecordingStorageModeSchema;
|
|
|
28828
28901
|
exports.RecordingStorageUsageSchema = RecordingStorageUsageSchema;
|
|
28829
28902
|
exports.RecordingTriggersSchema = RecordingTriggersSchema;
|
|
28830
28903
|
exports.RecordingWeekdaySchema = RecordingWeekdaySchema;
|
|
28831
|
-
exports.RegisteredStreamSchema = RegisteredStreamSchema;
|
|
28832
28904
|
exports.RenderedAsSchema = RenderedAsSchema;
|
|
28833
28905
|
exports.ReportMotionInputSchema = ReportMotionInputSchema;
|
|
28834
28906
|
exports.RingBuffer = RingBuffer;
|
|
@@ -28882,7 +28954,6 @@ exports.StorageTestLocationResultSchema = TestLocationResultSchema;
|
|
|
28882
28954
|
exports.StorageWriteChunkInputSchema = WriteChunkInputSchema;
|
|
28883
28955
|
exports.StreamCodecSchema = StreamCodecSchema;
|
|
28884
28956
|
exports.StreamFormatSchema = StreamFormatSchema;
|
|
28885
|
-
exports.StreamInfoSchema = StreamInfoSchema;
|
|
28886
28957
|
exports.StreamNetworkStatsSchema = StreamNetworkStatsSchema;
|
|
28887
28958
|
exports.StreamParamsOptionsSchema = StreamParamsOptionsSchema;
|
|
28888
28959
|
exports.StreamParamsStatusSchema = StreamParamsStatusSchema;
|
|
@@ -28987,6 +29058,7 @@ exports.bindAddonActions = bindAddonActions;
|
|
|
28987
29058
|
exports.brightnessCapability = brightnessCapability;
|
|
28988
29059
|
exports.brokerCapability = brokerCapability;
|
|
28989
29060
|
exports.buildAddonRouteProvider = buildAddonRouteProvider;
|
|
29061
|
+
exports.buildModelVariantGroups = buildModelVariantGroups;
|
|
28990
29062
|
exports.buildStreamParamsConfigSchema = buildStreamParamsConfigSchema;
|
|
28991
29063
|
exports.buttonCapability = buttonCapability;
|
|
28992
29064
|
exports.cameraCredentialsCapability = cameraCredentialsCapability;
|
|
@@ -29023,6 +29095,7 @@ exports.dayNightCapability = dayNightCapability;
|
|
|
29023
29095
|
exports.decoderCapability = decoderCapability;
|
|
29024
29096
|
exports.defaultDeviceFor = defaultDeviceFor;
|
|
29025
29097
|
exports.defineCustomActions = defineCustomActions;
|
|
29098
|
+
exports.describeModelVariant = describeModelVariant;
|
|
29026
29099
|
exports.detectionPipelineCapability = detectionPipelineCapability;
|
|
29027
29100
|
exports.deviceAdoptionCapability = deviceAdoptionCapability;
|
|
29028
29101
|
exports.deviceCustomAction = deviceCustomAction;
|
|
@@ -29075,10 +29148,14 @@ exports.imageSettingsCapability = imageSettingsCapability;
|
|
|
29075
29148
|
exports.integrationsCapability = integrationsCapability;
|
|
29076
29149
|
exports.intercomCapability = intercomCapability;
|
|
29077
29150
|
exports.isAgentOnlyPlacement = isAgentOnlyPlacement;
|
|
29151
|
+
exports.isArrayOutputSchema = isArrayOutputSchema;
|
|
29078
29152
|
exports.isDeployableToAgent = isDeployableToAgent;
|
|
29079
29153
|
exports.isDeviceConfigCap = require_sleep.isDeviceConfigCap;
|
|
29080
29154
|
exports.isEvent = require_sleep.isEvent;
|
|
29155
|
+
exports.isObjectInput = isObjectInput;
|
|
29156
|
+
exports.isVoidInput = isVoidInput;
|
|
29081
29157
|
exports.jobKindSchema = jobKindSchema;
|
|
29158
|
+
exports.kebabToCamel = kebabToCamel;
|
|
29082
29159
|
exports.lawnMowerControlCapability = lawnMowerControlCapability;
|
|
29083
29160
|
exports.lifecycleJobSchema = lifecycleJobSchema;
|
|
29084
29161
|
exports.lifecycleJobScopeSchema = lifecycleJobScopeSchema;
|
|
@@ -29088,6 +29165,7 @@ exports.localNetworkCapability = localNetworkCapability;
|
|
|
29088
29165
|
exports.locationSimilarity = locationSimilarity;
|
|
29089
29166
|
exports.lockControlCapability = lockControlCapability;
|
|
29090
29167
|
exports.logDestinationCapability = logDestinationCapability;
|
|
29168
|
+
exports.looseSchema = looseSchema;
|
|
29091
29169
|
exports.makeProfileBrokerId = require_sleep.makeProfileBrokerId;
|
|
29092
29170
|
exports.makeSourceBrokerId = require_sleep.makeSourceBrokerId;
|
|
29093
29171
|
exports.mapAudioLabelToMacro = mapAudioLabelToMacro;
|
|
@@ -29141,6 +29219,7 @@ exports.prepareNotification = prepareNotification;
|
|
|
29141
29219
|
exports.presenceCapability = presenceCapability;
|
|
29142
29220
|
exports.pressureSensorCapability = pressureSensorCapability;
|
|
29143
29221
|
exports.privacyMaskCapability = privacyMaskCapability;
|
|
29222
|
+
exports.procedureAuthKey = procedureAuthKey;
|
|
29144
29223
|
exports.ptzAutotrackCapability = ptzAutotrackCapability;
|
|
29145
29224
|
exports.ptzCapability = ptzCapability;
|
|
29146
29225
|
exports.pythonScriptForBackend = pythonScriptForBackend;
|
|
@@ -29160,7 +29239,7 @@ exports.resolveDeviceProfile = resolveDeviceProfile;
|
|
|
29160
29239
|
exports.resolveFormat = resolveFormat;
|
|
29161
29240
|
exports.resolveModelFormat = resolveModelFormat;
|
|
29162
29241
|
exports.resolveRunnerId = resolveRunnerId;
|
|
29163
|
-
exports.
|
|
29242
|
+
exports.resolveVariantModelId = resolveVariantModelId;
|
|
29164
29243
|
exports.runInferenceStep = runInferenceStep;
|
|
29165
29244
|
exports.runtimeDevices = runtimeDevices;
|
|
29166
29245
|
exports.scopeKey = require_sleep.scopeKey;
|
|
@@ -29174,7 +29253,6 @@ exports.sleepCancellable = require_sleep.sleepCancellable;
|
|
|
29174
29253
|
exports.smokeCapability = smokeCapability;
|
|
29175
29254
|
exports.smtpProviderCapability = smtpProviderCapability;
|
|
29176
29255
|
exports.snapshotCapability = snapshotCapability;
|
|
29177
|
-
exports.snapshotProviderCapability = snapshotProviderCapability;
|
|
29178
29256
|
exports.ssoBridgeCapability = ssoBridgeCapability;
|
|
29179
29257
|
exports.storageCapability = storageCapability;
|
|
29180
29258
|
exports.storageEvictableCapability = storageEvictableCapability;
|
|
@@ -29184,7 +29262,6 @@ exports.streamCatalogCapability = streamCatalogCapability;
|
|
|
29184
29262
|
exports.streamParamsCapability = streamParamsCapability;
|
|
29185
29263
|
exports.streamPixels = streamPixels;
|
|
29186
29264
|
exports.streamQualityLabel = streamQualityLabel;
|
|
29187
|
-
exports.streamingEngineCapability = streamingEngineCapability;
|
|
29188
29265
|
exports.supportedRuntimes = supportedRuntimes;
|
|
29189
29266
|
exports.switchCapability = switchCapability;
|
|
29190
29267
|
exports.synthesizeSourceInfo = synthesizeSourceInfo;
|
|
@@ -29215,7 +29292,6 @@ exports.vibrationCapability = vibrationCapability;
|
|
|
29215
29292
|
exports.videoclipsCapability = videoclipsCapability;
|
|
29216
29293
|
exports.waterHeaterCapability = waterHeaterCapability;
|
|
29217
29294
|
exports.weatherCapability = weatherCapability;
|
|
29218
|
-
exports.webrtcCapability = webrtcCapability;
|
|
29219
29295
|
exports.webrtcClientHintsSchema = webrtcClientHintsSchema;
|
|
29220
29296
|
exports.webrtcSessionCapability = webrtcSessionCapability;
|
|
29221
29297
|
exports.wiringAddonHealthSchema = wiringAddonHealthSchema;
|