@camstack/types 1.1.32 → 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 +1 -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 +416 -348
- package/dist/index.mjs +403 -342
- 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
|
|
@@ -19710,7 +19887,7 @@ var addonsCapability = {
|
|
|
19710
19887
|
}), LogStreamEntrySchema, { kind: "subscription" })
|
|
19711
19888
|
},
|
|
19712
19889
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
19713
|
-
mount: { kind: "
|
|
19890
|
+
mount: { kind: "server-provided" }
|
|
19714
19891
|
};
|
|
19715
19892
|
//#endregion
|
|
19716
19893
|
//#region src/capabilities/button.cap.ts
|
|
@@ -20126,7 +20303,7 @@ var integrationsCapability = {
|
|
|
20126
20303
|
})
|
|
20127
20304
|
},
|
|
20128
20305
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
20129
|
-
mount: { kind: "
|
|
20306
|
+
mount: { kind: "server-provided" }
|
|
20130
20307
|
};
|
|
20131
20308
|
//#endregion
|
|
20132
20309
|
//#region src/capabilities/intercom.cap.ts
|
|
@@ -20773,7 +20950,7 @@ var networkQualityCapability = {
|
|
|
20773
20950
|
}), zod.z.void(), { kind: "mutation" })
|
|
20774
20951
|
},
|
|
20775
20952
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
20776
|
-
mount: { kind: "
|
|
20953
|
+
mount: { kind: "server-provided" }
|
|
20777
20954
|
};
|
|
20778
20955
|
//#endregion
|
|
20779
20956
|
//#region src/capabilities/nodes.cap.ts
|
|
@@ -20965,7 +21142,7 @@ var nodesCapability = {
|
|
|
20965
21142
|
})
|
|
20966
21143
|
},
|
|
20967
21144
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
20968
|
-
mount: { kind: "
|
|
21145
|
+
mount: { kind: "server-provided" }
|
|
20969
21146
|
};
|
|
20970
21147
|
//#endregion
|
|
20971
21148
|
//#region src/capabilities/osd.cap.ts
|
|
@@ -21959,7 +22136,7 @@ var systemCapability = {
|
|
|
21959
22136
|
})
|
|
21960
22137
|
},
|
|
21961
22138
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
21962
|
-
mount: { kind: "
|
|
22139
|
+
mount: { kind: "server-provided" }
|
|
21963
22140
|
};
|
|
21964
22141
|
//#endregion
|
|
21965
22142
|
//#region src/capabilities/toast.cap.ts
|
|
@@ -21999,7 +22176,7 @@ var toastCapability = {
|
|
|
21999
22176
|
mode: "singleton",
|
|
22000
22177
|
methods: { onToast: require_sleep.method(zod.z.void(), ToastSchema, { kind: "subscription" }) },
|
|
22001
22178
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
22002
|
-
mount: { kind: "
|
|
22179
|
+
mount: { kind: "server-provided" }
|
|
22003
22180
|
};
|
|
22004
22181
|
//#endregion
|
|
22005
22182
|
//#region src/capabilities/user-management.cap.ts
|
|
@@ -22379,13 +22556,11 @@ var CAPABILITY_NAMES = {
|
|
|
22379
22556
|
ptzAutotrack: "ptz-autotrack",
|
|
22380
22557
|
reboot: "reboot",
|
|
22381
22558
|
recording: "recording",
|
|
22382
|
-
restreamer: "restreamer",
|
|
22383
22559
|
scriptRunner: "script-runner",
|
|
22384
22560
|
settingsStore: "settings-store",
|
|
22385
22561
|
smoke: "smoke",
|
|
22386
22562
|
smtpProvider: "smtp-provider",
|
|
22387
22563
|
snapshot: "snapshot",
|
|
22388
|
-
snapshotProvider: "snapshot-provider",
|
|
22389
22564
|
ssoBridge: "sso-bridge",
|
|
22390
22565
|
storage: "storage",
|
|
22391
22566
|
storageEvictable: "storage-evictable",
|
|
@@ -22393,7 +22568,6 @@ var CAPABILITY_NAMES = {
|
|
|
22393
22568
|
streamBroker: "stream-broker",
|
|
22394
22569
|
streamCatalog: "stream-catalog",
|
|
22395
22570
|
streamParams: "stream-params",
|
|
22396
|
-
streamingEngine: "streaming-engine",
|
|
22397
22571
|
switch: "switch",
|
|
22398
22572
|
system: "system",
|
|
22399
22573
|
tamper: "tamper",
|
|
@@ -22409,7 +22583,6 @@ var CAPABILITY_NAMES = {
|
|
|
22409
22583
|
videoclips: "videoclips",
|
|
22410
22584
|
waterHeater: "water-heater",
|
|
22411
22585
|
weather: "weather",
|
|
22412
|
-
webrtc: "webrtc",
|
|
22413
22586
|
webrtcSession: "webrtc-session",
|
|
22414
22587
|
zoneAnalytics: "zone-analytics",
|
|
22415
22588
|
zoneRules: "zone-rules",
|
|
@@ -22833,10 +23006,6 @@ var CAPABILITY_ROUTER_KEYS = [
|
|
|
22833
23006
|
key: "recording",
|
|
22834
23007
|
name: "recording"
|
|
22835
23008
|
},
|
|
22836
|
-
{
|
|
22837
|
-
key: "restreamer",
|
|
22838
|
-
name: "restreamer"
|
|
22839
|
-
},
|
|
22840
23009
|
{
|
|
22841
23010
|
key: "scriptRunner",
|
|
22842
23011
|
name: "script-runner"
|
|
@@ -22857,10 +23026,6 @@ var CAPABILITY_ROUTER_KEYS = [
|
|
|
22857
23026
|
key: "snapshot",
|
|
22858
23027
|
name: "snapshot"
|
|
22859
23028
|
},
|
|
22860
|
-
{
|
|
22861
|
-
key: "snapshotProvider",
|
|
22862
|
-
name: "snapshot-provider"
|
|
22863
|
-
},
|
|
22864
23029
|
{
|
|
22865
23030
|
key: "ssoBridge",
|
|
22866
23031
|
name: "sso-bridge"
|
|
@@ -22889,10 +23054,6 @@ var CAPABILITY_ROUTER_KEYS = [
|
|
|
22889
23054
|
key: "streamParams",
|
|
22890
23055
|
name: "stream-params"
|
|
22891
23056
|
},
|
|
22892
|
-
{
|
|
22893
|
-
key: "streamingEngine",
|
|
22894
|
-
name: "streaming-engine"
|
|
22895
|
-
},
|
|
22896
23057
|
{
|
|
22897
23058
|
key: "switch",
|
|
22898
23059
|
name: "switch"
|
|
@@ -22953,10 +23114,6 @@ var CAPABILITY_ROUTER_KEYS = [
|
|
|
22953
23114
|
key: "weather",
|
|
22954
23115
|
name: "weather"
|
|
22955
23116
|
},
|
|
22956
|
-
{
|
|
22957
|
-
key: "webrtc",
|
|
22958
|
-
name: "webrtc"
|
|
22959
|
-
},
|
|
22960
23117
|
{
|
|
22961
23118
|
key: "webrtcSession",
|
|
22962
23119
|
name: "webrtc-session"
|
|
@@ -23088,13 +23245,11 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
23088
23245
|
ptzAutotrackCapability,
|
|
23089
23246
|
rebootCapability,
|
|
23090
23247
|
recordingCapability,
|
|
23091
|
-
restreamerCapability,
|
|
23092
23248
|
scriptRunnerCapability,
|
|
23093
23249
|
settingsStoreCapability,
|
|
23094
23250
|
smokeCapability,
|
|
23095
23251
|
smtpProviderCapability,
|
|
23096
23252
|
snapshotCapability,
|
|
23097
|
-
snapshotProviderCapability,
|
|
23098
23253
|
ssoBridgeCapability,
|
|
23099
23254
|
storageCapability,
|
|
23100
23255
|
storageEvictableCapability,
|
|
@@ -23102,7 +23257,6 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
23102
23257
|
streamBrokerCapability,
|
|
23103
23258
|
streamCatalogCapability,
|
|
23104
23259
|
streamParamsCapability,
|
|
23105
|
-
streamingEngineCapability,
|
|
23106
23260
|
switchCapability,
|
|
23107
23261
|
systemCapability,
|
|
23108
23262
|
tamperCapability,
|
|
@@ -23118,7 +23272,6 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
23118
23272
|
videoclipsCapability,
|
|
23119
23273
|
waterHeaterCapability,
|
|
23120
23274
|
weatherCapability,
|
|
23121
|
-
webrtcCapability,
|
|
23122
23275
|
webrtcSessionCapability,
|
|
23123
23276
|
zoneAnalyticsCapability,
|
|
23124
23277
|
zoneRulesCapability,
|
|
@@ -26017,6 +26170,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
26017
26170
|
addonId: null,
|
|
26018
26171
|
access: "create"
|
|
26019
26172
|
},
|
|
26173
|
+
"pipelineExecutor.validatePipeline": {
|
|
26174
|
+
capName: "pipeline-executor",
|
|
26175
|
+
capScope: "system",
|
|
26176
|
+
addonId: null,
|
|
26177
|
+
access: "view"
|
|
26178
|
+
},
|
|
26020
26179
|
"pipelineOrchestrator.assignAudio": {
|
|
26021
26180
|
capName: "pipeline-orchestrator",
|
|
26022
26181
|
capScope: "system",
|
|
@@ -26125,6 +26284,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
26125
26284
|
addonId: null,
|
|
26126
26285
|
access: "view"
|
|
26127
26286
|
},
|
|
26287
|
+
"pipelineOrchestrator.getIngestOwner": {
|
|
26288
|
+
capName: "pipeline-orchestrator",
|
|
26289
|
+
capScope: "system",
|
|
26290
|
+
addonId: null,
|
|
26291
|
+
access: "view"
|
|
26292
|
+
},
|
|
26128
26293
|
"pipelineOrchestrator.getPipelineAssignment": {
|
|
26129
26294
|
capName: "pipeline-orchestrator",
|
|
26130
26295
|
capScope: "system",
|
|
@@ -26197,6 +26362,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
26197
26362
|
addonId: null,
|
|
26198
26363
|
access: "create"
|
|
26199
26364
|
},
|
|
26365
|
+
"pipelineOrchestrator.setAgentReachableHost": {
|
|
26366
|
+
capName: "pipeline-orchestrator",
|
|
26367
|
+
capScope: "system",
|
|
26368
|
+
addonId: null,
|
|
26369
|
+
access: "create"
|
|
26370
|
+
},
|
|
26200
26371
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
26201
26372
|
capName: "pipeline-orchestrator",
|
|
26202
26373
|
capScope: "system",
|
|
@@ -26527,24 +26698,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
26527
26698
|
addonId: null,
|
|
26528
26699
|
access: "create"
|
|
26529
26700
|
},
|
|
26530
|
-
"restreamer.getExposedResources": {
|
|
26531
|
-
capName: "restreamer",
|
|
26532
|
-
capScope: "system",
|
|
26533
|
-
addonId: null,
|
|
26534
|
-
access: "view"
|
|
26535
|
-
},
|
|
26536
|
-
"restreamer.registerDevice": {
|
|
26537
|
-
capName: "restreamer",
|
|
26538
|
-
capScope: "system",
|
|
26539
|
-
addonId: null,
|
|
26540
|
-
access: "create"
|
|
26541
|
-
},
|
|
26542
|
-
"restreamer.unregisterDevice": {
|
|
26543
|
-
capName: "restreamer",
|
|
26544
|
-
capScope: "system",
|
|
26545
|
-
addonId: null,
|
|
26546
|
-
access: "delete"
|
|
26547
|
-
},
|
|
26548
26701
|
"scriptRunner.run": {
|
|
26549
26702
|
capName: "script-runner",
|
|
26550
26703
|
capScope: "device",
|
|
@@ -26647,18 +26800,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
26647
26800
|
addonId: null,
|
|
26648
26801
|
access: "create"
|
|
26649
26802
|
},
|
|
26650
|
-
"snapshotProvider.getSnapshot": {
|
|
26651
|
-
capName: "snapshot-provider",
|
|
26652
|
-
capScope: "system",
|
|
26653
|
-
addonId: null,
|
|
26654
|
-
access: "view"
|
|
26655
|
-
},
|
|
26656
|
-
"snapshotProvider.supportsDevice": {
|
|
26657
|
-
capName: "snapshot-provider",
|
|
26658
|
-
capScope: "system",
|
|
26659
|
-
addonId: null,
|
|
26660
|
-
access: "view"
|
|
26661
|
-
},
|
|
26662
26803
|
"ssoBridge.signBridgeToken": {
|
|
26663
26804
|
capName: "sso-bridge",
|
|
26664
26805
|
capScope: "system",
|
|
@@ -27085,30 +27226,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
27085
27226
|
addonId: null,
|
|
27086
27227
|
access: "view"
|
|
27087
27228
|
},
|
|
27088
|
-
"streamingEngine.getStreamUrl": {
|
|
27089
|
-
capName: "streaming-engine",
|
|
27090
|
-
capScope: "system",
|
|
27091
|
-
addonId: null,
|
|
27092
|
-
access: "view"
|
|
27093
|
-
},
|
|
27094
|
-
"streamingEngine.listStreams": {
|
|
27095
|
-
capName: "streaming-engine",
|
|
27096
|
-
capScope: "system",
|
|
27097
|
-
addonId: null,
|
|
27098
|
-
access: "view"
|
|
27099
|
-
},
|
|
27100
|
-
"streamingEngine.registerStream": {
|
|
27101
|
-
capName: "streaming-engine",
|
|
27102
|
-
capScope: "system",
|
|
27103
|
-
addonId: null,
|
|
27104
|
-
access: "create"
|
|
27105
|
-
},
|
|
27106
|
-
"streamingEngine.unregisterStream": {
|
|
27107
|
-
capName: "streaming-engine",
|
|
27108
|
-
capScope: "system",
|
|
27109
|
-
addonId: null,
|
|
27110
|
-
access: "delete"
|
|
27111
|
-
},
|
|
27112
27229
|
"streamParams.getConfigSchema": {
|
|
27113
27230
|
capName: "stream-params",
|
|
27114
27231
|
capScope: "device",
|
|
@@ -27475,54 +27592,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
27475
27592
|
addonId: null,
|
|
27476
27593
|
access: "create"
|
|
27477
27594
|
},
|
|
27478
|
-
"webrtc.closeSession": {
|
|
27479
|
-
capName: "webrtc",
|
|
27480
|
-
capScope: "system",
|
|
27481
|
-
addonId: null,
|
|
27482
|
-
access: "create"
|
|
27483
|
-
},
|
|
27484
|
-
"webrtc.createSession": {
|
|
27485
|
-
capName: "webrtc",
|
|
27486
|
-
capScope: "system",
|
|
27487
|
-
addonId: null,
|
|
27488
|
-
access: "create"
|
|
27489
|
-
},
|
|
27490
|
-
"webrtc.handleAnswer": {
|
|
27491
|
-
capName: "webrtc",
|
|
27492
|
-
capScope: "system",
|
|
27493
|
-
addonId: null,
|
|
27494
|
-
access: "create"
|
|
27495
|
-
},
|
|
27496
|
-
"webrtc.handleOffer": {
|
|
27497
|
-
capName: "webrtc",
|
|
27498
|
-
capScope: "system",
|
|
27499
|
-
addonId: null,
|
|
27500
|
-
access: "create"
|
|
27501
|
-
},
|
|
27502
|
-
"webrtc.hasAdaptiveBitrate": {
|
|
27503
|
-
capName: "webrtc",
|
|
27504
|
-
capScope: "system",
|
|
27505
|
-
addonId: null,
|
|
27506
|
-
access: "view"
|
|
27507
|
-
},
|
|
27508
|
-
"webrtc.registerStream": {
|
|
27509
|
-
capName: "webrtc",
|
|
27510
|
-
capScope: "system",
|
|
27511
|
-
addonId: null,
|
|
27512
|
-
access: "create"
|
|
27513
|
-
},
|
|
27514
|
-
"webrtc.supportsStream": {
|
|
27515
|
-
capName: "webrtc",
|
|
27516
|
-
capScope: "system",
|
|
27517
|
-
addonId: null,
|
|
27518
|
-
access: "view"
|
|
27519
|
-
},
|
|
27520
|
-
"webrtc.unregisterStream": {
|
|
27521
|
-
capName: "webrtc",
|
|
27522
|
-
capScope: "system",
|
|
27523
|
-
addonId: null,
|
|
27524
|
-
access: "delete"
|
|
27525
|
-
},
|
|
27526
27595
|
"webrtcSession.addIceCandidate": {
|
|
27527
27596
|
capName: "webrtc-session",
|
|
27528
27597
|
capScope: "device",
|
|
@@ -27723,12 +27792,10 @@ var KNOWN_CAP_NAMES = [
|
|
|
27723
27792
|
"ptz-autotrack",
|
|
27724
27793
|
"reboot",
|
|
27725
27794
|
"recording",
|
|
27726
|
-
"restreamer",
|
|
27727
27795
|
"script-runner",
|
|
27728
27796
|
"settings-store",
|
|
27729
27797
|
"smtp-provider",
|
|
27730
27798
|
"snapshot",
|
|
27731
|
-
"snapshot-provider",
|
|
27732
27799
|
"sso-bridge",
|
|
27733
27800
|
"storage",
|
|
27734
27801
|
"storage-evictable",
|
|
@@ -27736,7 +27803,6 @@ var KNOWN_CAP_NAMES = [
|
|
|
27736
27803
|
"stream-broker",
|
|
27737
27804
|
"stream-catalog",
|
|
27738
27805
|
"stream-params",
|
|
27739
|
-
"streaming-engine",
|
|
27740
27806
|
"switch",
|
|
27741
27807
|
"system",
|
|
27742
27808
|
"toast",
|
|
@@ -27748,7 +27814,6 @@ var KNOWN_CAP_NAMES = [
|
|
|
27748
27814
|
"valve",
|
|
27749
27815
|
"videoclips",
|
|
27750
27816
|
"water-heater",
|
|
27751
|
-
"webrtc",
|
|
27752
27817
|
"webrtc-session",
|
|
27753
27818
|
"zone-analytics",
|
|
27754
27819
|
"zone-rules",
|
|
@@ -27856,22 +27921,18 @@ var SYSTEM_CAP_NAMES = [
|
|
|
27856
27921
|
"plate-gallery",
|
|
27857
27922
|
"platform-probe",
|
|
27858
27923
|
"recording",
|
|
27859
|
-
"restreamer",
|
|
27860
27924
|
"settings-store",
|
|
27861
27925
|
"smtp-provider",
|
|
27862
|
-
"snapshot-provider",
|
|
27863
27926
|
"sso-bridge",
|
|
27864
27927
|
"storage",
|
|
27865
27928
|
"storage-evictable",
|
|
27866
27929
|
"storage-provider",
|
|
27867
27930
|
"stream-broker",
|
|
27868
|
-
"streaming-engine",
|
|
27869
27931
|
"system",
|
|
27870
27932
|
"toast",
|
|
27871
27933
|
"turn-provider",
|
|
27872
27934
|
"user-management",
|
|
27873
|
-
"user-passkeys"
|
|
27874
|
-
"webrtc"
|
|
27935
|
+
"user-passkeys"
|
|
27875
27936
|
];
|
|
27876
27937
|
//#endregion
|
|
27877
27938
|
//#region src/generated/scope-presets.ts
|
|
@@ -28653,7 +28714,6 @@ exports.EventSourceType = EventSourceType;
|
|
|
28653
28714
|
exports.ExportSetupFieldSchema = ExportSetupFieldSchema;
|
|
28654
28715
|
exports.ExportSetupSchema = ExportSetupSchema;
|
|
28655
28716
|
exports.ExposedDeviceSchema = ExposedDeviceSchema;
|
|
28656
|
-
exports.ExposedResourceSchema = ExposedResourceSchema;
|
|
28657
28717
|
exports.ExposureModeSchema = ExposureModeSchema;
|
|
28658
28718
|
exports.ExpressionEvalError = ExpressionEvalError;
|
|
28659
28719
|
exports.ExpressionParseError = ExpressionParseError;
|
|
@@ -28682,6 +28742,7 @@ exports.ImageSettingsOptionsSchema = ImageSettingsOptionsSchema;
|
|
|
28682
28742
|
exports.ImageSettingsPatchSchema = ImageSettingsPatchSchema;
|
|
28683
28743
|
exports.ImageSettingsStatusSchema = ImageSettingsStatusSchema;
|
|
28684
28744
|
exports.ImageStatusSchema = ImageStatusSchema;
|
|
28745
|
+
exports.IngestOwnerSchema = IngestOwnerSchema;
|
|
28685
28746
|
exports.InstalledPackageSchema = InstalledPackageSchema;
|
|
28686
28747
|
exports.IntegrationLiteSchema = IntegrationLiteSchema;
|
|
28687
28748
|
exports.IntegrationWithStateSchema = IntegrationWithStateSchema;
|
|
@@ -28730,6 +28791,8 @@ exports.ModelDistributeResultSchema = ModelDistributeResultSchema;
|
|
|
28730
28791
|
exports.ModelExtraFileSchema = ModelExtraFileSchema;
|
|
28731
28792
|
exports.ModelFormatEntrySchema = ModelFormatEntrySchema;
|
|
28732
28793
|
exports.ModelFormatsSchema = ModelFormatsSchema;
|
|
28794
|
+
exports.ModelSubstitutionSchema = ModelSubstitutionSchema;
|
|
28795
|
+
exports.ModelVariantGroupSchema = ModelVariantGroupSchema;
|
|
28733
28796
|
exports.MotionAnalysisResultSchema = MotionAnalysisResultSchema;
|
|
28734
28797
|
exports.MotionEventSchema = MotionEventSchema;
|
|
28735
28798
|
exports.MotionOnMotionChangedDataSchema = MotionOnMotionChangedDataSchema;
|
|
@@ -28786,6 +28849,8 @@ exports.PipelineDefaultStepSchema = PipelineDefaultStepSchema;
|
|
|
28786
28849
|
exports.PipelineEngineChoiceSchema = PipelineEngineChoiceSchema;
|
|
28787
28850
|
exports.PipelineRunResultBridge = PipelineRunResultBridge;
|
|
28788
28851
|
exports.PipelineStepInputSchema = PipelineStepInputSchema;
|
|
28852
|
+
exports.PipelineValidationIssueSchema = PipelineValidationIssueSchema;
|
|
28853
|
+
exports.PipelineValidationResultSchema = PipelineValidationResultSchema;
|
|
28789
28854
|
exports.PlaceholderReasonSchema = PlaceholderReasonSchema;
|
|
28790
28855
|
exports.PolygonPointSchema = PolygonPointSchema;
|
|
28791
28856
|
exports.PowerMeterStatusSchema = PowerMeterStatusSchema;
|
|
@@ -28836,7 +28901,6 @@ exports.RecordingStorageModeSchema = RecordingStorageModeSchema;
|
|
|
28836
28901
|
exports.RecordingStorageUsageSchema = RecordingStorageUsageSchema;
|
|
28837
28902
|
exports.RecordingTriggersSchema = RecordingTriggersSchema;
|
|
28838
28903
|
exports.RecordingWeekdaySchema = RecordingWeekdaySchema;
|
|
28839
|
-
exports.RegisteredStreamSchema = RegisteredStreamSchema;
|
|
28840
28904
|
exports.RenderedAsSchema = RenderedAsSchema;
|
|
28841
28905
|
exports.ReportMotionInputSchema = ReportMotionInputSchema;
|
|
28842
28906
|
exports.RingBuffer = RingBuffer;
|
|
@@ -28890,7 +28954,6 @@ exports.StorageTestLocationResultSchema = TestLocationResultSchema;
|
|
|
28890
28954
|
exports.StorageWriteChunkInputSchema = WriteChunkInputSchema;
|
|
28891
28955
|
exports.StreamCodecSchema = StreamCodecSchema;
|
|
28892
28956
|
exports.StreamFormatSchema = StreamFormatSchema;
|
|
28893
|
-
exports.StreamInfoSchema = StreamInfoSchema;
|
|
28894
28957
|
exports.StreamNetworkStatsSchema = StreamNetworkStatsSchema;
|
|
28895
28958
|
exports.StreamParamsOptionsSchema = StreamParamsOptionsSchema;
|
|
28896
28959
|
exports.StreamParamsStatusSchema = StreamParamsStatusSchema;
|
|
@@ -28995,6 +29058,7 @@ exports.bindAddonActions = bindAddonActions;
|
|
|
28995
29058
|
exports.brightnessCapability = brightnessCapability;
|
|
28996
29059
|
exports.brokerCapability = brokerCapability;
|
|
28997
29060
|
exports.buildAddonRouteProvider = buildAddonRouteProvider;
|
|
29061
|
+
exports.buildModelVariantGroups = buildModelVariantGroups;
|
|
28998
29062
|
exports.buildStreamParamsConfigSchema = buildStreamParamsConfigSchema;
|
|
28999
29063
|
exports.buttonCapability = buttonCapability;
|
|
29000
29064
|
exports.cameraCredentialsCapability = cameraCredentialsCapability;
|
|
@@ -29031,6 +29095,7 @@ exports.dayNightCapability = dayNightCapability;
|
|
|
29031
29095
|
exports.decoderCapability = decoderCapability;
|
|
29032
29096
|
exports.defaultDeviceFor = defaultDeviceFor;
|
|
29033
29097
|
exports.defineCustomActions = defineCustomActions;
|
|
29098
|
+
exports.describeModelVariant = describeModelVariant;
|
|
29034
29099
|
exports.detectionPipelineCapability = detectionPipelineCapability;
|
|
29035
29100
|
exports.deviceAdoptionCapability = deviceAdoptionCapability;
|
|
29036
29101
|
exports.deviceCustomAction = deviceCustomAction;
|
|
@@ -29083,10 +29148,14 @@ exports.imageSettingsCapability = imageSettingsCapability;
|
|
|
29083
29148
|
exports.integrationsCapability = integrationsCapability;
|
|
29084
29149
|
exports.intercomCapability = intercomCapability;
|
|
29085
29150
|
exports.isAgentOnlyPlacement = isAgentOnlyPlacement;
|
|
29151
|
+
exports.isArrayOutputSchema = isArrayOutputSchema;
|
|
29086
29152
|
exports.isDeployableToAgent = isDeployableToAgent;
|
|
29087
29153
|
exports.isDeviceConfigCap = require_sleep.isDeviceConfigCap;
|
|
29088
29154
|
exports.isEvent = require_sleep.isEvent;
|
|
29155
|
+
exports.isObjectInput = isObjectInput;
|
|
29156
|
+
exports.isVoidInput = isVoidInput;
|
|
29089
29157
|
exports.jobKindSchema = jobKindSchema;
|
|
29158
|
+
exports.kebabToCamel = kebabToCamel;
|
|
29090
29159
|
exports.lawnMowerControlCapability = lawnMowerControlCapability;
|
|
29091
29160
|
exports.lifecycleJobSchema = lifecycleJobSchema;
|
|
29092
29161
|
exports.lifecycleJobScopeSchema = lifecycleJobScopeSchema;
|
|
@@ -29096,6 +29165,7 @@ exports.localNetworkCapability = localNetworkCapability;
|
|
|
29096
29165
|
exports.locationSimilarity = locationSimilarity;
|
|
29097
29166
|
exports.lockControlCapability = lockControlCapability;
|
|
29098
29167
|
exports.logDestinationCapability = logDestinationCapability;
|
|
29168
|
+
exports.looseSchema = looseSchema;
|
|
29099
29169
|
exports.makeProfileBrokerId = require_sleep.makeProfileBrokerId;
|
|
29100
29170
|
exports.makeSourceBrokerId = require_sleep.makeSourceBrokerId;
|
|
29101
29171
|
exports.mapAudioLabelToMacro = mapAudioLabelToMacro;
|
|
@@ -29149,6 +29219,7 @@ exports.prepareNotification = prepareNotification;
|
|
|
29149
29219
|
exports.presenceCapability = presenceCapability;
|
|
29150
29220
|
exports.pressureSensorCapability = pressureSensorCapability;
|
|
29151
29221
|
exports.privacyMaskCapability = privacyMaskCapability;
|
|
29222
|
+
exports.procedureAuthKey = procedureAuthKey;
|
|
29152
29223
|
exports.ptzAutotrackCapability = ptzAutotrackCapability;
|
|
29153
29224
|
exports.ptzCapability = ptzCapability;
|
|
29154
29225
|
exports.pythonScriptForBackend = pythonScriptForBackend;
|
|
@@ -29168,7 +29239,7 @@ exports.resolveDeviceProfile = resolveDeviceProfile;
|
|
|
29168
29239
|
exports.resolveFormat = resolveFormat;
|
|
29169
29240
|
exports.resolveModelFormat = resolveModelFormat;
|
|
29170
29241
|
exports.resolveRunnerId = resolveRunnerId;
|
|
29171
|
-
exports.
|
|
29242
|
+
exports.resolveVariantModelId = resolveVariantModelId;
|
|
29172
29243
|
exports.runInferenceStep = runInferenceStep;
|
|
29173
29244
|
exports.runtimeDevices = runtimeDevices;
|
|
29174
29245
|
exports.scopeKey = require_sleep.scopeKey;
|
|
@@ -29182,7 +29253,6 @@ exports.sleepCancellable = require_sleep.sleepCancellable;
|
|
|
29182
29253
|
exports.smokeCapability = smokeCapability;
|
|
29183
29254
|
exports.smtpProviderCapability = smtpProviderCapability;
|
|
29184
29255
|
exports.snapshotCapability = snapshotCapability;
|
|
29185
|
-
exports.snapshotProviderCapability = snapshotProviderCapability;
|
|
29186
29256
|
exports.ssoBridgeCapability = ssoBridgeCapability;
|
|
29187
29257
|
exports.storageCapability = storageCapability;
|
|
29188
29258
|
exports.storageEvictableCapability = storageEvictableCapability;
|
|
@@ -29192,7 +29262,6 @@ exports.streamCatalogCapability = streamCatalogCapability;
|
|
|
29192
29262
|
exports.streamParamsCapability = streamParamsCapability;
|
|
29193
29263
|
exports.streamPixels = streamPixels;
|
|
29194
29264
|
exports.streamQualityLabel = streamQualityLabel;
|
|
29195
|
-
exports.streamingEngineCapability = streamingEngineCapability;
|
|
29196
29265
|
exports.supportedRuntimes = supportedRuntimes;
|
|
29197
29266
|
exports.switchCapability = switchCapability;
|
|
29198
29267
|
exports.synthesizeSourceInfo = synthesizeSourceInfo;
|
|
@@ -29223,7 +29292,6 @@ exports.vibrationCapability = vibrationCapability;
|
|
|
29223
29292
|
exports.videoclipsCapability = videoclipsCapability;
|
|
29224
29293
|
exports.waterHeaterCapability = waterHeaterCapability;
|
|
29225
29294
|
exports.weatherCapability = weatherCapability;
|
|
29226
|
-
exports.webrtcCapability = webrtcCapability;
|
|
29227
29295
|
exports.webrtcClientHintsSchema = webrtcClientHintsSchema;
|
|
29228
29296
|
exports.webrtcSessionCapability = webrtcSessionCapability;
|
|
29229
29297
|
exports.wiringAddonHealthSchema = wiringAddonHealthSchema;
|