@camstack/addon-provider-wyze 0.2.128 → 0.2.130
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 +975 -523
- package/dist/addon.mjs +975 -523
- package/package.json +1 -1
package/dist/addon.mjs
CHANGED
|
@@ -10,7 +10,7 @@ import { getCACertificates, setDefaultCACertificates } from "node:tls";
|
|
|
10
10
|
//#region \0rolldown/runtime.js
|
|
11
11
|
var __require$1 = /* @__PURE__ */ createRequire(import.meta.url);
|
|
12
12
|
//#endregion
|
|
13
|
-
//#region ../types/dist/event-category-
|
|
13
|
+
//#region ../types/dist/event-category-B_0XEcLF.mjs
|
|
14
14
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
15
15
|
EventCategory["SystemBoot"] = "system.boot";
|
|
16
16
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -511,15 +511,6 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
511
511
|
EventCategory["AgentWsDisconnected"] = "agent.ws.disconnected";
|
|
512
512
|
EventCategory["AgentBackupActivated"] = "agent.backup.activated";
|
|
513
513
|
EventCategory["OrchestrationSettingsUpdated"] = "orchestration.settings-updated";
|
|
514
|
-
/**
|
|
515
|
-
* Per-agent hwaccel preference changed (user override set, cleared, or
|
|
516
|
-
* re-probed). Observability event — decoders pull the current pref at
|
|
517
|
-
* `createSession`, so running sessions keep their current backend until
|
|
518
|
-
* they rotate naturally (camera add/remove, stream restart). Future
|
|
519
|
-
* work can wire a listener in stream-broker that force-rotates live
|
|
520
|
-
* sessions; for now this event powers logs + admin-UI toast feedback.
|
|
521
|
-
*/
|
|
522
|
-
EventCategory["PipelineAgentHwaccelChanged"] = "pipeline.agent-hwaccel-changed";
|
|
523
514
|
EventCategory["MotionAnalysis"] = "detection.motion-analysis";
|
|
524
515
|
/** All raw motion zones from CCL before minArea filter — for UI debug overlay. */
|
|
525
516
|
EventCategory["MotionZonesRaw"] = "detection.motion-zones-raw";
|
|
@@ -5390,7 +5381,7 @@ var ZodIssueCode = {
|
|
|
5390
5381
|
var ZodFirstPartyTypeKind;
|
|
5391
5382
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5392
5383
|
//#endregion
|
|
5393
|
-
//#region ../types/dist/sleep-
|
|
5384
|
+
//#region ../types/dist/sleep-BNeXenvr.mjs
|
|
5394
5385
|
/**
|
|
5395
5386
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5396
5387
|
* window to float samples (D455).
|
|
@@ -6756,32 +6747,12 @@ object({
|
|
|
6756
6747
|
audioCodec: string().optional(),
|
|
6757
6748
|
metadata: record(string(), unknown()).readonly().optional()
|
|
6758
6749
|
});
|
|
6759
|
-
var EncodedPacketSchema = object({
|
|
6760
|
-
type: _enum(["video", "audio"]),
|
|
6761
|
-
data: _instanceof(Uint8Array),
|
|
6762
|
-
pts: number(),
|
|
6763
|
-
dts: number(),
|
|
6764
|
-
keyframe: boolean(),
|
|
6765
|
-
codec: string()
|
|
6766
|
-
});
|
|
6767
|
-
var DecodedFrameSchema = object({
|
|
6768
|
-
data: _instanceof(Uint8Array),
|
|
6769
|
-
width: number(),
|
|
6770
|
-
height: number(),
|
|
6771
|
-
format: _enum([
|
|
6772
|
-
"jpeg",
|
|
6773
|
-
"rgb",
|
|
6774
|
-
"bgr",
|
|
6775
|
-
"yuv420",
|
|
6776
|
-
"gray"
|
|
6777
|
-
]),
|
|
6778
|
-
timestamp: number()
|
|
6779
|
-
});
|
|
6780
6750
|
/**
|
|
6781
6751
|
* Wire schema for `FrameHandle` — a zero-pixel, serialisable reference to a
|
|
6782
6752
|
* frame in a shared-memory ring (Phase 5 / D9). Mirrors the `FrameHandle` TS
|
|
6783
|
-
* interface in `interfaces/frame-handle.ts` field-for-field so a
|
|
6784
|
-
*
|
|
6753
|
+
* interface in `interfaces/frame-handle.ts` field-for-field so a cap method
|
|
6754
|
+
* (the runner's native-crop and pipeline-executor inputs) can carry handles
|
|
6755
|
+
* over tRPC / Moleculer.
|
|
6785
6756
|
*
|
|
6786
6757
|
* The `satisfies` assertion below pins this schema to the interface: if a
|
|
6787
6758
|
* field is added to / removed from `FrameHandle` without a matching schema
|
|
@@ -6807,50 +6778,6 @@ var FrameHandleSchema = object({
|
|
|
6807
6778
|
slotCount: number().int().positive()
|
|
6808
6779
|
});
|
|
6809
6780
|
/**
|
|
6810
|
-
* Pixel format a frame-handle subscriber can request from the broker
|
|
6811
|
-
* (Phase 5 / D9). The packed, raster subset of `FrameFormat` — the formats a
|
|
6812
|
-
* `frameSink: 'shm'` decoder session can write into a `FrameRing` slot.
|
|
6813
|
-
* `jpeg` is excluded: a variable-length stream is not a fixed-stride ring
|
|
6814
|
-
* payload, and no decoded-frame consumer requests it over the shm plane.
|
|
6815
|
-
*/
|
|
6816
|
-
var FrameHandleFormatSchema = _enum([
|
|
6817
|
-
"rgb",
|
|
6818
|
-
"bgr",
|
|
6819
|
-
"yuv420",
|
|
6820
|
-
"gray"
|
|
6821
|
-
]);
|
|
6822
|
-
/**
|
|
6823
|
-
* Input for `stream-broker.subscribeFrames` (Phase 5 / D9). A consumer asks the
|
|
6824
|
-
* broker for a `FrameHandle` stream of one `format`; the broker maintains one
|
|
6825
|
-
* shared-memory ring per `(brokerId, format)` actually requested, so a `gray`
|
|
6826
|
-
* subscriber (motion) and an `rgb` subscriber (detection) each read the format
|
|
6827
|
-
* they asked for with no broker-side conversion.
|
|
6828
|
-
*/
|
|
6829
|
-
var SubscribeFramesInputSchema = object({
|
|
6830
|
-
brokerId: string(),
|
|
6831
|
-
format: FrameHandleFormatSchema,
|
|
6832
|
-
/**
|
|
6833
|
-
* Optional reader-side cadence hint in frames per second. The broker does
|
|
6834
|
-
* NOT throttle — latest-wins ring reads drop frames implicitly for a slow
|
|
6835
|
-
* consumer. The value is echoed back in `SubscribeFramesResult.maxFps` so
|
|
6836
|
-
* the consumer can pace its own `pullFrameHandles` polling.
|
|
6837
|
-
*/
|
|
6838
|
-
maxFps: number().positive().optional(),
|
|
6839
|
-
/** Short caller-identity tag (`motion`, `detection`, …) for diagnostics. */
|
|
6840
|
-
tag: string().optional()
|
|
6841
|
-
});
|
|
6842
|
-
/**
|
|
6843
|
-
* Result of `stream-broker.subscribeFrames`. The consumer then polls
|
|
6844
|
-
* `pullFrameHandles({ subscriptionId, maxCount })` and feeds each returned
|
|
6845
|
-
* `FrameHandle` to a `FrameRingReader`.
|
|
6846
|
-
*/
|
|
6847
|
-
var SubscribeFramesResultSchema = object({
|
|
6848
|
-
/** Opaque id the consumer passes to `pullFrameHandles` / `unsubscribeFrames`. */
|
|
6849
|
-
subscriptionId: string(),
|
|
6850
|
-
/** Reader-side cadence hint (frames/s) — echoes `SubscribeFramesInput.maxFps`. */
|
|
6851
|
-
maxFps: number().nonnegative()
|
|
6852
|
-
});
|
|
6853
|
-
/**
|
|
6854
6781
|
* Wire schema for a decoded audio chunk (Phase 5 / D9). Mirrors the
|
|
6855
6782
|
* `DecodedAudioChunk` TS interface in `interfaces/stream-broker.ts`: PCM
|
|
6856
6783
|
* sample bytes plus the track parameters a consumer needs to interpret them.
|
|
@@ -6858,8 +6785,8 @@ var SubscribeFramesResultSchema = object({
|
|
|
6858
6785
|
* Audio chunks are tiny (a ~500ms AudioCodecSession window is a few KB of
|
|
6859
6786
|
* Float32 PCM), so unlike video frames they ship their bytes INLINE over
|
|
6860
6787
|
* tRPC / Moleculer — no shared-memory plane. `data` is typed `Uint8Array`
|
|
6861
|
-
* (the wire-serialisable supertype of `Buffer`)
|
|
6862
|
-
*
|
|
6788
|
+
* (the wire-serialisable supertype of `Buffer`); a `Buffer` is assignable to
|
|
6789
|
+
* it.
|
|
6863
6790
|
*/
|
|
6864
6791
|
var AudioChunkFormatSchema = _enum(AUDIO_CHUNK_FORMATS);
|
|
6865
6792
|
var DecodedAudioChunkSchema = object({
|
|
@@ -6877,11 +6804,10 @@ var DecodedAudioChunkSchema = object({
|
|
|
6877
6804
|
format: AudioChunkFormatSchema.optional()
|
|
6878
6805
|
});
|
|
6879
6806
|
/**
|
|
6880
|
-
* Input for `stream-broker.subscribeAudioChunks` (Phase 5 / D9).
|
|
6881
|
-
*
|
|
6882
|
-
*
|
|
6883
|
-
*
|
|
6884
|
-
* `pullAudioChunks`.
|
|
6807
|
+
* Input for `stream-broker.subscribeAudioChunks` (Phase 5 / D9). Audio ships
|
|
6808
|
+
* its bytes inline: a consumer asks the broker for the decoded audio-chunk
|
|
6809
|
+
* stream of one broker; the broker keeps a per-subscription bounded FIFO queue
|
|
6810
|
+
* the consumer drains via `pullAudioChunks`.
|
|
6885
6811
|
*/
|
|
6886
6812
|
var SubscribeAudioChunksInputSchema = object({
|
|
6887
6813
|
brokerId: string(),
|
|
@@ -6912,9 +6838,7 @@ var BrokerStatsSchema = object({
|
|
|
6912
6838
|
"stopped"
|
|
6913
6839
|
]),
|
|
6914
6840
|
inputFps: number(),
|
|
6915
|
-
decodeFps: number(),
|
|
6916
6841
|
encodedSubscribers: number(),
|
|
6917
|
-
decodedSubscribers: number(),
|
|
6918
6842
|
uptimeMs: number(),
|
|
6919
6843
|
bitrateKbps: number(),
|
|
6920
6844
|
idrIntervalMs: number(),
|
|
@@ -6927,14 +6851,6 @@ var BrokerStatsSchema = object({
|
|
|
6927
6851
|
preBufferMs: number(),
|
|
6928
6852
|
preBufferPackets: number(),
|
|
6929
6853
|
/**
|
|
6930
|
-
* Moleculer node id of the decoder provider currently servicing this
|
|
6931
|
-
* stream's decoded subscribers. `null` until the deferred decoder is
|
|
6932
|
-
* created (no decoded clients yet, or codec not detected). Surfaces the
|
|
6933
|
-
* runtime decoder placement so the UI can show "Decoder: <agent>" without
|
|
6934
|
-
* a separate cap call per broker.
|
|
6935
|
-
*/
|
|
6936
|
-
decoderNodeId: string().nullable(),
|
|
6937
|
-
/**
|
|
6938
6854
|
* Detected audio track parameters from the RTSP DESCRIBE / SDP. `null`
|
|
6939
6855
|
* when the stream has no audio track or the broker is in cold start.
|
|
6940
6856
|
* `supported = false` means the codec was detected but the local
|
|
@@ -10290,70 +10206,6 @@ var StorageLocationDeclarationSchema = object({
|
|
|
10290
10206
|
"backup"
|
|
10291
10207
|
]).optional()
|
|
10292
10208
|
});
|
|
10293
|
-
var DecoderStatsSchema = object({
|
|
10294
|
-
inputFps: number(),
|
|
10295
|
-
outputFps: number(),
|
|
10296
|
-
avgDecodeTimeMs: number(),
|
|
10297
|
-
droppedFrames: number(),
|
|
10298
|
-
/**
|
|
10299
|
-
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
10300
|
-
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
10301
|
-
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
10302
|
-
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
10303
|
-
*/
|
|
10304
|
-
lagMs: number().optional(),
|
|
10305
|
-
effectiveFps: number().optional(),
|
|
10306
|
-
adaptiveFps: number().optional()
|
|
10307
|
-
});
|
|
10308
|
-
var DecoderSessionConfigSchema = object({
|
|
10309
|
-
codec: string(),
|
|
10310
|
-
maxFps: number().default(0),
|
|
10311
|
-
outputFormat: _enum([
|
|
10312
|
-
"jpeg",
|
|
10313
|
-
"rgb",
|
|
10314
|
-
"bgr",
|
|
10315
|
-
"yuv420",
|
|
10316
|
-
"gray"
|
|
10317
|
-
]).default("jpeg"),
|
|
10318
|
-
scale: number().default(1),
|
|
10319
|
-
width: number().optional(),
|
|
10320
|
-
height: number().optional(),
|
|
10321
|
-
/**
|
|
10322
|
-
* Identifier of the camera this decoder session serves. Optional
|
|
10323
|
-
* because the cap is generic (any caller could request decode), but
|
|
10324
|
-
* stream-broker passes it so decoder logs include `deviceId` for
|
|
10325
|
-
* per-camera filtering when diagnosing failures (e.g. node-av
|
|
10326
|
-
* sendPacket errors on a single hung camera).
|
|
10327
|
-
*/
|
|
10328
|
-
deviceId: number().int().nonnegative().optional(),
|
|
10329
|
-
/**
|
|
10330
|
-
* Free-form tag for log scoping. Stream-broker uses
|
|
10331
|
-
* `broker:<deviceId>/<profile>`. Decoder session logger surfaces it
|
|
10332
|
-
* on every line so `grep tag=broker:5/high` filters one camera
|
|
10333
|
-
* profile cleanly.
|
|
10334
|
-
*/
|
|
10335
|
-
tag: string().optional(),
|
|
10336
|
-
/**
|
|
10337
|
-
* Where the session delivers decoded frames (Phase 5 / D9):
|
|
10338
|
-
*
|
|
10339
|
-
* - `'callback'` (default) — the legacy pixel path: decoded frames are
|
|
10340
|
-
* buffered as `DecodedFrame`s and drained via `pullFrames`.
|
|
10341
|
-
* - `'shm'` — the shared-memory frame plane: decoded frames are written
|
|
10342
|
-
* into an OS shared-memory ring and drained as zero-pixel
|
|
10343
|
-
* `FrameHandle`s via `pullHandles`. A session is one mode or the
|
|
10344
|
-
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
10345
|
-
* `pullHandles` returns nothing for a `'callback'` session.
|
|
10346
|
-
*/
|
|
10347
|
-
frameSink: _enum(["callback", "shm"]).default("callback"),
|
|
10348
|
-
/**
|
|
10349
|
-
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
10350
|
-
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
10351
|
-
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
10352
|
-
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
10353
|
-
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
10354
|
-
*/
|
|
10355
|
-
debug: boolean().optional()
|
|
10356
|
-
});
|
|
10357
10209
|
/**
|
|
10358
10210
|
* Per-component log CHANNELS — the gate a hot path consults, and the registry
|
|
10359
10211
|
* an addon declares its channels in.
|
|
@@ -10496,57 +10348,26 @@ var ClipSearchStrictnessSchema = _enum([
|
|
|
10496
10348
|
"balanced",
|
|
10497
10349
|
"strict"
|
|
10498
10350
|
]);
|
|
10499
|
-
|
|
10500
|
-
|
|
10501
|
-
id: "person",
|
|
10502
|
-
name: "Person"
|
|
10503
|
-
},
|
|
10504
|
-
{
|
|
10505
|
-
id: "vehicle",
|
|
10506
|
-
name: "Vehicle"
|
|
10507
|
-
},
|
|
10508
|
-
{
|
|
10509
|
-
id: "animal",
|
|
10510
|
-
name: "Animal"
|
|
10511
|
-
},
|
|
10512
|
-
{
|
|
10513
|
-
id: "package",
|
|
10514
|
-
name: "Package"
|
|
10515
|
-
}
|
|
10516
|
-
].map((l) => l.id));
|
|
10517
|
-
var COCO_TO_MACRO = {
|
|
10518
|
-
mapping: {
|
|
10519
|
-
person: "person",
|
|
10520
|
-
bicycle: "vehicle",
|
|
10521
|
-
car: "vehicle",
|
|
10522
|
-
motorcycle: "vehicle",
|
|
10523
|
-
airplane: "vehicle",
|
|
10524
|
-
bus: "vehicle",
|
|
10525
|
-
train: "vehicle",
|
|
10526
|
-
truck: "vehicle",
|
|
10527
|
-
boat: "vehicle",
|
|
10528
|
-
bird: "animal",
|
|
10529
|
-
cat: "animal",
|
|
10530
|
-
dog: "animal",
|
|
10531
|
-
horse: "animal",
|
|
10532
|
-
sheep: "animal",
|
|
10533
|
-
cow: "animal",
|
|
10534
|
-
elephant: "animal",
|
|
10535
|
-
bear: "animal",
|
|
10536
|
-
zebra: "animal",
|
|
10537
|
-
giraffe: "animal",
|
|
10538
|
-
suitcase: "package",
|
|
10539
|
-
backpack: "package",
|
|
10540
|
-
handbag: "package"
|
|
10541
|
-
},
|
|
10542
|
-
preserveOriginal: false
|
|
10543
|
-
};
|
|
10544
|
-
/** Steps a root detector may declare it fills. */
|
|
10545
|
-
var FILLABLE_STEP_IDS = [
|
|
10351
|
+
/** Steps whose effect a root label can BE. */
|
|
10352
|
+
var LABEL_SUPPLY_STEP_IDS = [
|
|
10546
10353
|
"animal-classifier",
|
|
10547
10354
|
"vehicle-classifier",
|
|
10548
10355
|
"package-detection"
|
|
10549
10356
|
];
|
|
10357
|
+
/** Steps whose box a root detection can BE. */
|
|
10358
|
+
var CROP_SUPPLY_STEP_IDS = ["plate-detection", "face-detection"];
|
|
10359
|
+
/**
|
|
10360
|
+
* Steps whose per-detection MASK a root detection can carry (D737). The live
|
|
10361
|
+
* mask step is `segmentation` — a frame-plane refiner that runs its own model
|
|
10362
|
+
* once per detection crop. (`instance-segmentation` is a dormant step id that
|
|
10363
|
+
* no camera tree carries.)
|
|
10364
|
+
*/
|
|
10365
|
+
var MASK_SUPPLY_STEP_IDS = ["segmentation"];
|
|
10366
|
+
[
|
|
10367
|
+
...LABEL_SUPPLY_STEP_IDS,
|
|
10368
|
+
...CROP_SUPPLY_STEP_IDS,
|
|
10369
|
+
...MASK_SUPPLY_STEP_IDS
|
|
10370
|
+
];
|
|
10550
10371
|
var MODEL_FORMATS = [
|
|
10551
10372
|
"onnx",
|
|
10552
10373
|
"coreml",
|
|
@@ -10575,7 +10396,53 @@ var ModelFormatEntrySchema = object({
|
|
|
10575
10396
|
/** Multi-file payload (directory members or sibling files). */
|
|
10576
10397
|
files: array(string()).readonly().optional(),
|
|
10577
10398
|
/** Runtime(s) that can use this format. If omitted, inferred from ModelFormat key */
|
|
10578
|
-
runtimes: array(_enum(["python"])).readonly().optional()
|
|
10399
|
+
runtimes: array(_enum(["python"])).readonly().optional(),
|
|
10400
|
+
/**
|
|
10401
|
+
* Content revision of the artefact, for one hosted OFF the CamStack mirror.
|
|
10402
|
+
* A format on the mirror leaves it unset: its revision (the sha256 of its
|
|
10403
|
+
* weight file) comes from the downloader's generated table, kept in step
|
|
10404
|
+
* with the mirror by `scripts/check-hosted-model-revisions.ts` (D744). A
|
|
10405
|
+
* node records the revision it downloaded next to the file
|
|
10406
|
+
* (`<file>.revision`); a copy with no record or a different one is stale
|
|
10407
|
+
* unless its weight file hashes to the revision, and a stale copy is
|
|
10408
|
+
* downloaded again, the old one serving until the new one is complete. No
|
|
10409
|
+
* revision at all ⇒ a file on disk is current, whatever it holds (D743).
|
|
10410
|
+
*/
|
|
10411
|
+
revision: string().min(1).optional()
|
|
10412
|
+
});
|
|
10413
|
+
/**
|
|
10414
|
+
* What a node holds for one (model, format) (D746). `current` is a complete
|
|
10415
|
+
* copy at its catalog revision — exactly what `downloaded: true` means.
|
|
10416
|
+
* `stale` is bytes on disk that are not (yet) proven current under D743/D744:
|
|
10417
|
+
* no or a different revision record, or a missing sibling. `missing` is no
|
|
10418
|
+
* copy. `downloaded` alone folds `stale` into "not downloaded", which hid
|
|
10419
|
+
* reclaimable bytes and a copy about to be replaced.
|
|
10420
|
+
*/
|
|
10421
|
+
var ModelOnDiskStateSchema = _enum([
|
|
10422
|
+
"current",
|
|
10423
|
+
"stale",
|
|
10424
|
+
"missing"
|
|
10425
|
+
]);
|
|
10426
|
+
/**
|
|
10427
|
+
* The numeric precision of one format's BUILD (D746) — reported only when the
|
|
10428
|
+
* build states it (file-name token, an INT8 variant, an EdgeTPU compile, a
|
|
10429
|
+
* CamStack Core ML export). Absent means "not stated", never "fp32".
|
|
10430
|
+
*/
|
|
10431
|
+
var ModelFormatPrecisionSchema = _enum([
|
|
10432
|
+
"fp32",
|
|
10433
|
+
"fp16",
|
|
10434
|
+
"int8"
|
|
10435
|
+
]);
|
|
10436
|
+
/**
|
|
10437
|
+
* One format of one model as a node's `pipelineExecutor.getSchema` reports it.
|
|
10438
|
+
* `onDisk` / `precision` are optional for version skew: a runner that predates
|
|
10439
|
+
* them omits them, and a reader falls back to `downloaded`.
|
|
10440
|
+
*/
|
|
10441
|
+
var PipelineModelFormatStatusSchema = object({
|
|
10442
|
+
downloaded: boolean(),
|
|
10443
|
+
sizeMB: number(),
|
|
10444
|
+
onDisk: ModelOnDiskStateSchema.optional(),
|
|
10445
|
+
precision: ModelFormatPrecisionSchema.optional()
|
|
10579
10446
|
});
|
|
10580
10447
|
/**
|
|
10581
10448
|
* Extra file that must be downloaded alongside the model (e.g., labels JSON, dict.txt).
|
|
@@ -10679,12 +10546,46 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
|
|
|
10679
10546
|
/** True when the weights or their data forbid commercial use. */
|
|
10680
10547
|
nonCommercial: boolean().optional()
|
|
10681
10548
|
}));
|
|
10682
|
-
/**
|
|
10683
|
-
|
|
10684
|
-
|
|
10685
|
-
|
|
10686
|
-
|
|
10687
|
-
|
|
10549
|
+
/**
|
|
10550
|
+
* One step a ROOT detector can supply from its own output (D730) — see
|
|
10551
|
+
* `ModelCatalogEntry.suppliesSteps`.
|
|
10552
|
+
*
|
|
10553
|
+
* - `label`: the root's raw class IS the step's answer. `labelToEffect` maps
|
|
10554
|
+
* the root's label to the step's vocabulary; `uncovered` is the vocabulary
|
|
10555
|
+
* the root cannot produce (shown as unavailable, never a blocker).
|
|
10556
|
+
* - `crop`: the root draws the box the step would have found (`license_plate`
|
|
10557
|
+
* for plate-detection, `face` for face-detection). The box becomes a detail
|
|
10558
|
+
* child of the `parentMacro` detection that contains it — never a track.
|
|
10559
|
+
* - `mask`: the root's decode emits an instance mask with every detection (a
|
|
10560
|
+
* YOLO26-seg root, D737) — the `segmentation` step's result, carried on the
|
|
10561
|
+
* detection in the shape that step produces. Derived from the model's
|
|
10562
|
+
* postprocessor on read, never stored by an import.
|
|
10563
|
+
*/
|
|
10564
|
+
var RootStepSupplySchema = discriminatedUnion("kind", [
|
|
10565
|
+
object({
|
|
10566
|
+
kind: literal("label"),
|
|
10567
|
+
stepId: _enum(LABEL_SUPPLY_STEP_IDS),
|
|
10568
|
+
labelToEffect: record(string(), string()),
|
|
10569
|
+
uncovered: array(string()).readonly()
|
|
10570
|
+
}),
|
|
10571
|
+
object({
|
|
10572
|
+
kind: literal("crop"),
|
|
10573
|
+
stepId: _enum(CROP_SUPPLY_STEP_IDS),
|
|
10574
|
+
rootLabels: array(string()).readonly(),
|
|
10575
|
+
parentMacro: _enum(["vehicle", "person"]),
|
|
10576
|
+
childClass: _enum(["plate", "face"]),
|
|
10577
|
+
/**
|
|
10578
|
+
* The root's smaller input side, stamped on read by `rootSuppliesOf` from
|
|
10579
|
+
* the model entry — what a step's `minRootInputPx` gate judges. Never
|
|
10580
|
+
* stored by an import.
|
|
10581
|
+
*/
|
|
10582
|
+
rootInputPx: number().int().positive().optional()
|
|
10583
|
+
}),
|
|
10584
|
+
object({
|
|
10585
|
+
kind: literal("mask"),
|
|
10586
|
+
stepId: _enum(MASK_SUPPLY_STEP_IDS)
|
|
10587
|
+
})
|
|
10588
|
+
]);
|
|
10688
10589
|
var ModelCatalogEntrySchema = object({
|
|
10689
10590
|
id: string(),
|
|
10690
10591
|
name: string(),
|
|
@@ -10750,6 +10651,35 @@ var ModelCatalogEntrySchema = object({
|
|
|
10750
10651
|
*/
|
|
10751
10652
|
defaultConfidence: number().min(0).max(1).optional(),
|
|
10752
10653
|
/**
|
|
10654
|
+
* Per-MODEL default of the per-class confidence floors (`minConfidence<Macro>`
|
|
10655
|
+
* on a detector step), keyed by macro class: `{ person: 0.45 }`. A class
|
|
10656
|
+
* absent here runs at the step slider's global default. The same row shape
|
|
10657
|
+
* the floor measurement produces (`model-floors.json`: modelId → floors), so
|
|
10658
|
+
* a measured table is copied in as-is. An operator override is bound to the
|
|
10659
|
+
* model it was made for and does not survive a model change (D738). A custom
|
|
10660
|
+
* / imported model may declare it; without it, the global defaults apply.
|
|
10661
|
+
*/
|
|
10662
|
+
defaultClassFloors: record(string(), number().min(0).max(1)).optional(),
|
|
10663
|
+
/**
|
|
10664
|
+
* The inference precision this model's OpenVINO IR needs on an Intel GPU.
|
|
10665
|
+
* Absent ⇒ the device default (f16 on a GPU). Set to `'f32'` for an FP32 IR
|
|
10666
|
+
* that produces invalid output at f16 — measured 2026-10-07 for YOLO26
|
|
10667
|
+
* base IRs (`yolo26s`: 0 true / 146 false positives; `yolo26m*`: NaN
|
|
10668
|
+
* scores) on the Core Ultra iGPU and the N100. Threaded to the pool as
|
|
10669
|
+
* `PoolModelConfig.gpuInferencePrecision`; the pool sets
|
|
10670
|
+
* INFERENCE_PRECISION_HINT on a GPU only. Costs ~60% latency on the GPU.
|
|
10671
|
+
*/
|
|
10672
|
+
gpuInferencePrecision: _enum(["f32", "f16"]).optional(),
|
|
10673
|
+
/**
|
|
10674
|
+
* ROOT detectors only: per supplied step (`animal-classifier`, …), the
|
|
10675
|
+
* minimum DETECTION score from which this root's own fine label (species,
|
|
10676
|
+
* vehicle type — D736 root supply) is taken (D741). Below it the detection
|
|
10677
|
+
* keeps its macro class without the fine label. `1` = never take it from
|
|
10678
|
+
* this root. Absent ⇒ no floor beyond the macro floor. The supplied step's
|
|
10679
|
+
* `minConfidence` slider, bound to the ROOT model, overrides it.
|
|
10680
|
+
*/
|
|
10681
|
+
suppliedLabelFloors: record(string(), number().min(0).max(1)).optional(),
|
|
10682
|
+
/**
|
|
10753
10683
|
* When true, the executor produces a landmark-aligned crop (similarity warp
|
|
10754
10684
|
* onto the canonical template) before this step runs, instead of a plain
|
|
10755
10685
|
* axis-aligned bbox crop. Required for face-recognition embedders (ArcFace):
|
|
@@ -10811,15 +10741,15 @@ var ModelCatalogEntrySchema = object({
|
|
|
10811
10741
|
*/
|
|
10812
10742
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
10813
10743
|
/**
|
|
10814
|
-
* The pipeline steps this ROOT detector
|
|
10815
|
-
* its labels name
|
|
10816
|
-
*
|
|
10817
|
-
* labelmap by `
|
|
10818
|
-
*
|
|
10819
|
-
*
|
|
10820
|
-
* `
|
|
10744
|
+
* The pipeline steps this ROOT detector can supply from its own output
|
|
10745
|
+
* (D730): its labels name a step's effect (`deer` for `animal-classifier`)
|
|
10746
|
+
* or draw a step's box (`license_plate` for `plate-detection`). Computed at
|
|
10747
|
+
* import from THIS model's labelmap by `deriveRootSupplies`, never written
|
|
10748
|
+
* by hand and never assumed per family; a row without it is derived on read
|
|
10749
|
+
* (`rootSuppliesOf`). Whether a camera uses it is the step's own
|
|
10750
|
+
* `useRootModel` flag (`resolveRootSupply`).
|
|
10821
10751
|
*/
|
|
10822
|
-
|
|
10752
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional(),
|
|
10823
10753
|
/**
|
|
10824
10754
|
* The model's CLIP feature-space contract (text encoder, dimension, vector
|
|
10825
10755
|
* index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
|
|
@@ -12422,13 +12352,6 @@ var BrokerRtspClientSchema = object({
|
|
|
12422
12352
|
lastRtpAt: number(),
|
|
12423
12353
|
bytesSent: number()
|
|
12424
12354
|
});
|
|
12425
|
-
var BrokerDecodedClientSchema = object({
|
|
12426
|
-
tag: string(),
|
|
12427
|
-
subscribedAt: number(),
|
|
12428
|
-
maxFps: number(),
|
|
12429
|
-
framesDelivered: number(),
|
|
12430
|
-
framesDropped: number()
|
|
12431
|
-
});
|
|
12432
12355
|
var BrokerAudioClientSchema = object({
|
|
12433
12356
|
tag: string(),
|
|
12434
12357
|
subscribedAt: number(),
|
|
@@ -12520,7 +12443,6 @@ var BrokerEncodedClientSchema = object({
|
|
|
12520
12443
|
});
|
|
12521
12444
|
var BrokerClientsSchema = object({
|
|
12522
12445
|
rtsp: array(BrokerRtspClientSchema).readonly(),
|
|
12523
|
-
decoded: array(BrokerDecodedClientSchema).readonly(),
|
|
12524
12446
|
audio: array(BrokerAudioClientSchema).readonly(),
|
|
12525
12447
|
encoded: array(BrokerEncodedClientSchema).readonly(),
|
|
12526
12448
|
pipeClients: number(),
|
|
@@ -12889,11 +12811,7 @@ method(object({
|
|
|
12889
12811
|
auth: "admin"
|
|
12890
12812
|
}), method(object({ brokerId: string() }), BrokerClientsSchema), method(object({
|
|
12891
12813
|
brokerId: string(),
|
|
12892
|
-
channel: _enum([
|
|
12893
|
-
"rtsp",
|
|
12894
|
-
"decoded",
|
|
12895
|
-
"audio"
|
|
12896
|
-
]),
|
|
12814
|
+
channel: _enum(["rtsp", "audio"]),
|
|
12897
12815
|
handle: string()
|
|
12898
12816
|
}), object({ killed: boolean() }), {
|
|
12899
12817
|
kind: "mutation",
|
|
@@ -12928,10 +12846,7 @@ method(object({
|
|
|
12928
12846
|
}), method(SubscribeAudioChunksInputSchema, SubscribeAudioChunksResultSchema, { kind: "mutation" }), method(object({
|
|
12929
12847
|
subscriptionId: string(),
|
|
12930
12848
|
maxCount: number().int().positive().default(8)
|
|
12931
|
-
}), array(DecodedAudioChunkSchema).readonly()), method(object({ subscriptionId: string() }), object({ released: boolean() }), { kind: "mutation" }), method(
|
|
12932
|
-
subscriptionId: string(),
|
|
12933
|
-
maxCount: number().int().positive().default(4)
|
|
12934
|
-
}), array(FrameHandleSchema).readonly()), method(object({ subscriptionId: string() }), object({ released: boolean() }), { kind: "mutation" }), method(object({
|
|
12849
|
+
}), array(DecodedAudioChunkSchema).readonly()), method(object({ subscriptionId: string() }), object({ released: boolean() }), { kind: "mutation" }), method(object({
|
|
12935
12850
|
brokerId: string(),
|
|
12936
12851
|
seconds: number().min(0).max(30)
|
|
12937
12852
|
}), _void(), {
|
|
@@ -14190,54 +14105,12 @@ id: union([string(), number()]) }), {
|
|
|
14190
14105
|
kind: "mutation",
|
|
14191
14106
|
auth: "admin"
|
|
14192
14107
|
});
|
|
14193
|
-
|
|
14194
|
-
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
14195
|
-
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
14196
|
-
* observe ring pressure (slot count, byte budget, hit/miss ratio).
|
|
14197
|
-
*/
|
|
14198
|
-
var ShmRingStatsSchema = object({
|
|
14199
|
-
sessionId: string(),
|
|
14200
|
-
slotCount: number().int(),
|
|
14201
|
-
slotByteLength: number().int(),
|
|
14202
|
-
segmentBytes: number().int(),
|
|
14203
|
-
budgetMb: number().int(),
|
|
14204
|
-
framesWritten: number().int(),
|
|
14205
|
-
getFrameHits: number().int(),
|
|
14206
|
-
getFrameMisses: number().int()
|
|
14207
|
-
});
|
|
14208
|
-
method(object({ codec: string() }), boolean()), method(_void(), object({
|
|
14108
|
+
method(_void(), object({
|
|
14209
14109
|
id: string(),
|
|
14210
14110
|
name: string(),
|
|
14211
|
-
isPullMode: boolean().optional(),
|
|
14212
|
-
priority: number().optional(),
|
|
14213
14111
|
hwaccel: string().optional(),
|
|
14214
14112
|
probedBestHwaccel: string().optional()
|
|
14215
|
-
})), method(
|
|
14216
|
-
sessionId: string(),
|
|
14217
|
-
nodeId: string()
|
|
14218
|
-
})), method(object({ sessionId: string() }), _void()), method(object({
|
|
14219
|
-
sessionId: string(),
|
|
14220
|
-
packet: EncodedPacketSchema
|
|
14221
|
-
}), _void()), method(object({
|
|
14222
|
-
sessionId: string(),
|
|
14223
|
-
url: string()
|
|
14224
|
-
}), _void()), method(object({
|
|
14225
|
-
sessionId: string(),
|
|
14226
|
-
maxCount: number().default(1),
|
|
14227
|
-
waitMs: number().optional()
|
|
14228
|
-
}), array(DecodedFrameSchema)), method(object({
|
|
14229
|
-
sessionId: string(),
|
|
14230
|
-
maxCount: number().default(1),
|
|
14231
|
-
waitMs: number().optional()
|
|
14232
|
-
}), array(FrameHandleSchema)), method(object({ handle: FrameHandleSchema }), DecodedFrameSchema.nullable()), method(object({ sessionId: string() }), ShmRingStatsSchema.nullable()), method(object({
|
|
14233
|
-
sessionId: string(),
|
|
14234
|
-
config: DecoderSessionConfigSchema.partial()
|
|
14235
|
-
}), _void()), method(object({ sessionId: string() }), DecoderStatsSchema), method(_void(), array(object({
|
|
14236
|
-
sessionId: string(),
|
|
14237
|
-
codec: string(),
|
|
14238
|
-
outputFormat: string(),
|
|
14239
|
-
createdAtMs: number()
|
|
14240
|
-
})).readonly()), method(_void(), object({ backend: string() }), {
|
|
14113
|
+
})), method(_void(), object({ backend: string() }), {
|
|
14241
14114
|
kind: "mutation",
|
|
14242
14115
|
auth: "admin"
|
|
14243
14116
|
});
|
|
@@ -16286,6 +16159,12 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
|
16286
16159
|
kind: "mutation",
|
|
16287
16160
|
auth: "admin"
|
|
16288
16161
|
});
|
|
16162
|
+
var HUB_ADDRESS_ROLES = [
|
|
16163
|
+
"appConnections",
|
|
16164
|
+
"notificationTaps",
|
|
16165
|
+
"internal",
|
|
16166
|
+
"publicEndpoint"
|
|
16167
|
+
];
|
|
16289
16168
|
/**
|
|
16290
16169
|
* Transport bounds for AI capability methods.
|
|
16291
16170
|
*
|
|
@@ -18048,6 +17927,51 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
18048
17927
|
kind: "mutation",
|
|
18049
17928
|
auth: "admin"
|
|
18050
17929
|
});
|
|
17930
|
+
new Set([
|
|
17931
|
+
{
|
|
17932
|
+
id: "person",
|
|
17933
|
+
name: "Person"
|
|
17934
|
+
},
|
|
17935
|
+
{
|
|
17936
|
+
id: "vehicle",
|
|
17937
|
+
name: "Vehicle"
|
|
17938
|
+
},
|
|
17939
|
+
{
|
|
17940
|
+
id: "animal",
|
|
17941
|
+
name: "Animal"
|
|
17942
|
+
},
|
|
17943
|
+
{
|
|
17944
|
+
id: "package",
|
|
17945
|
+
name: "Package"
|
|
17946
|
+
}
|
|
17947
|
+
].map((l) => l.id));
|
|
17948
|
+
var COCO_TO_MACRO = {
|
|
17949
|
+
mapping: {
|
|
17950
|
+
person: "person",
|
|
17951
|
+
bicycle: "vehicle",
|
|
17952
|
+
car: "vehicle",
|
|
17953
|
+
motorcycle: "vehicle",
|
|
17954
|
+
airplane: "vehicle",
|
|
17955
|
+
bus: "vehicle",
|
|
17956
|
+
train: "vehicle",
|
|
17957
|
+
truck: "vehicle",
|
|
17958
|
+
boat: "vehicle",
|
|
17959
|
+
bird: "animal",
|
|
17960
|
+
cat: "animal",
|
|
17961
|
+
dog: "animal",
|
|
17962
|
+
horse: "animal",
|
|
17963
|
+
sheep: "animal",
|
|
17964
|
+
cow: "animal",
|
|
17965
|
+
elephant: "animal",
|
|
17966
|
+
bear: "animal",
|
|
17967
|
+
zebra: "animal",
|
|
17968
|
+
giraffe: "animal",
|
|
17969
|
+
suitcase: "package",
|
|
17970
|
+
backpack: "package",
|
|
17971
|
+
handbag: "package"
|
|
17972
|
+
},
|
|
17973
|
+
preserveOriginal: false
|
|
17974
|
+
};
|
|
18051
17975
|
var AUDIO_MACRO_LABELS = [
|
|
18052
17976
|
{
|
|
18053
17977
|
id: "speech",
|
|
@@ -20450,7 +20374,13 @@ var NcAlarmModeDelaysListSchema = array(object({
|
|
|
20450
20374
|
* Absent = false (logged, not sent). Even when true it is not sent when that same sensor
|
|
20451
20375
|
* is the one that starts the entry delay — the entry-delay notification already names it.
|
|
20452
20376
|
*/
|
|
20453
|
-
notifySensorRewatched: boolean().optional()
|
|
20377
|
+
notifySensorRewatched: boolean().optional(),
|
|
20378
|
+
/**
|
|
20379
|
+
* D735: notify "ignored" when a sensor this arm bypassed really MOVED while armed (its own
|
|
20380
|
+
* change time is after the arm) and set nothing off. Absent = false (logged, not sent). A
|
|
20381
|
+
* re-sync, a recovery from `unavailable` or a duplicate is never announced, switch or not.
|
|
20382
|
+
*/
|
|
20383
|
+
notifySensorIgnored: boolean().optional()
|
|
20454
20384
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
|
|
20455
20385
|
var NcAlarmModeDelaysEditListSchema = array(object({
|
|
20456
20386
|
mode: AlarmArmModeSchema,
|
|
@@ -20463,7 +20393,9 @@ var NcAlarmModeDelaysEditListSchema = array(object({
|
|
|
20463
20393
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
20464
20394
|
notifyDuringEntryDelay: boolean().nullable().optional(),
|
|
20465
20395
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
20466
|
-
notifySensorRewatched: boolean().nullable().optional()
|
|
20396
|
+
notifySensorRewatched: boolean().nullable().optional(),
|
|
20397
|
+
/** D735: set the switch, or `null` to clear it (back to the default, false). */
|
|
20398
|
+
notifySensorIgnored: boolean().nullable().optional()
|
|
20467
20399
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
|
|
20468
20400
|
/** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
|
|
20469
20401
|
var NcAlarmNonBlockingEditSchema = object({
|
|
@@ -21441,8 +21373,8 @@ Object.freeze(Object.fromEntries([{
|
|
|
21441
21373
|
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
21442
21374
|
stepId: "face-embedding",
|
|
21443
21375
|
key: "minLandmarkFaceSize",
|
|
21444
|
-
label: "Min face size
|
|
21445
|
-
description: "
|
|
21376
|
+
label: "Min face size to embed (detection-frame px)",
|
|
21377
|
+
description: "Faces smaller than this in the small frame the detector sees are not embedded, so they can never be recognised. Below it the face cannot be aligned reliably and a bad embedding matches everyone. Same value on every node. 0 = no limit.",
|
|
21446
21378
|
type: "slider",
|
|
21447
21379
|
min: 0,
|
|
21448
21380
|
max: 64,
|
|
@@ -23362,6 +23294,34 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
23362
23294
|
timestamp: number()
|
|
23363
23295
|
});
|
|
23364
23296
|
/**
|
|
23297
|
+
* A root model's boxes standing in for one crop-kind step's own inference
|
|
23298
|
+
* (D730) — see `runPipeline.suppliedRoot`.
|
|
23299
|
+
*/
|
|
23300
|
+
var SuppliedRootOutputSchema = object({
|
|
23301
|
+
stepId: string(),
|
|
23302
|
+
/** The root model that drew the boxes — stamped on the result. */
|
|
23303
|
+
modelId: string(),
|
|
23304
|
+
detections: array(object({
|
|
23305
|
+
/** `[x1, y1, x2, y2]` in the pixels of the call's image. */
|
|
23306
|
+
bbox: tuple([
|
|
23307
|
+
number(),
|
|
23308
|
+
number(),
|
|
23309
|
+
number(),
|
|
23310
|
+
number()
|
|
23311
|
+
]),
|
|
23312
|
+
score: number(),
|
|
23313
|
+
/**
|
|
23314
|
+
* Five facial landmarks in the same pixels — a face the step's own
|
|
23315
|
+
* detector already re-found inside a root face box (D730), so its
|
|
23316
|
+
* embedder child aligns it exactly as it aligns any detected face.
|
|
23317
|
+
*/
|
|
23318
|
+
landmarks: array(object({
|
|
23319
|
+
x: number(),
|
|
23320
|
+
y: number()
|
|
23321
|
+
})).optional()
|
|
23322
|
+
})).min(1)
|
|
23323
|
+
});
|
|
23324
|
+
/**
|
|
23365
23325
|
* Reference to the frame's retained NATIVE surface + the parent crop's placement
|
|
23366
23326
|
* within the frame, so the executor can re-cut a leaf child ROI at native
|
|
23367
23327
|
* resolution on the detail plane. See the `runPipeline` `nativeCropRef` field.
|
|
@@ -23409,7 +23369,7 @@ var FrameRefSchema = object({
|
|
|
23409
23369
|
timestamp: number(),
|
|
23410
23370
|
capturedAt: number().optional()
|
|
23411
23371
|
});
|
|
23412
|
-
var ModelFormatSchema$
|
|
23372
|
+
var ModelFormatSchema$2 = _enum([
|
|
23413
23373
|
"onnx",
|
|
23414
23374
|
"coreml",
|
|
23415
23375
|
"openvino",
|
|
@@ -23427,7 +23387,7 @@ var PipelineSlotSchema = _enum([
|
|
|
23427
23387
|
var PipelineEngineChoiceSchema = object({
|
|
23428
23388
|
runtime: literal("python"),
|
|
23429
23389
|
backend: string(),
|
|
23430
|
-
format: ModelFormatSchema$
|
|
23390
|
+
format: ModelFormatSchema$2,
|
|
23431
23391
|
device: string().optional()
|
|
23432
23392
|
});
|
|
23433
23393
|
/**
|
|
@@ -23466,33 +23426,15 @@ var PipelineDefaultStepSchema = lazy(() => object({
|
|
|
23466
23426
|
group: string().optional(),
|
|
23467
23427
|
settings: record(string(), unknown()).optional()
|
|
23468
23428
|
}));
|
|
23469
|
-
var PipelineTemplateStepSchema = lazy(() => object({
|
|
23470
|
-
addonId: string(),
|
|
23471
|
-
enabled: boolean(),
|
|
23472
|
-
modelId: string(),
|
|
23473
|
-
children: array(PipelineTemplateStepSchema).readonly(),
|
|
23474
|
-
settings: record(string(), unknown()).optional()
|
|
23475
|
-
}));
|
|
23476
|
-
var PipelineTemplateSchema$1 = object({
|
|
23477
|
-
id: string(),
|
|
23478
|
-
name: string(),
|
|
23479
|
-
createdAt: string(),
|
|
23480
|
-
updatedAt: string(),
|
|
23481
|
-
engine: PipelineEngineChoiceSchema,
|
|
23482
|
-
steps: array(PipelineTemplateStepSchema).readonly()
|
|
23483
|
-
});
|
|
23484
23429
|
var PipelineModelOptionSchema = object({
|
|
23485
23430
|
id: string(),
|
|
23486
23431
|
name: string(),
|
|
23487
|
-
formats: record(string(),
|
|
23488
|
-
downloaded: boolean(),
|
|
23489
|
-
sizeMB: number()
|
|
23490
|
-
})),
|
|
23432
|
+
formats: record(string(), PipelineModelFormatStatusSchema),
|
|
23491
23433
|
group: ModelVariantGroupSchema.optional(),
|
|
23492
23434
|
legacy: boolean().optional(),
|
|
23493
23435
|
provider: ModelProviderIdSchema.optional(),
|
|
23494
23436
|
defaultConfidence: number().optional(),
|
|
23495
|
-
|
|
23437
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional()
|
|
23496
23438
|
});
|
|
23497
23439
|
var ConfigFieldBridge = custom();
|
|
23498
23440
|
var PipelineAddonSchemaSchema = object({
|
|
@@ -23654,6 +23596,22 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
23654
23596
|
}), {
|
|
23655
23597
|
kind: "mutation",
|
|
23656
23598
|
auth: "admin"
|
|
23599
|
+
}), method(object({
|
|
23600
|
+
nodeId: string(),
|
|
23601
|
+
deviceIds: array(number()).readonly().optional(),
|
|
23602
|
+
dryRun: boolean()
|
|
23603
|
+
}), object({
|
|
23604
|
+
entries: array(object({
|
|
23605
|
+
deviceId: number(),
|
|
23606
|
+
keys: array(string()).readonly()
|
|
23607
|
+
})).readonly(),
|
|
23608
|
+
refused: array(object({
|
|
23609
|
+
deviceId: number(),
|
|
23610
|
+
reason: string()
|
|
23611
|
+
})).readonly()
|
|
23612
|
+
}), {
|
|
23613
|
+
kind: "mutation",
|
|
23614
|
+
auth: "admin"
|
|
23657
23615
|
}), method(object({ nodeId: string() }), object({ unhealthy: array(object({
|
|
23658
23616
|
/** `<backend>:<device>`, e.g. `openvino:gpu`. */
|
|
23659
23617
|
deviceKey: string(),
|
|
@@ -23679,22 +23637,14 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
23679
23637
|
}), method(_void(), PipelineSchemaSchema), method(_void(), array(PipelineDefaultStepSchema).readonly().nullable()), method(_void(), PipelineConfigBridge), method(_void(), ConfigUISchemaBridge), method(object({
|
|
23680
23638
|
steps: array(PipelineStepInputSchema),
|
|
23681
23639
|
deviceKey: string().optional()
|
|
23682
|
-
}), PipelineValidationResultSchema), method(_void(),
|
|
23683
|
-
name: string(),
|
|
23684
|
-
steps: array(PipelineTemplateStepSchema).readonly(),
|
|
23685
|
-
engine: PipelineEngineChoiceSchema
|
|
23686
|
-
}), PipelineTemplateSchema$1, { kind: "mutation" }), method(object({
|
|
23687
|
-
id: string(),
|
|
23688
|
-
name: string().optional(),
|
|
23689
|
-
steps: array(PipelineTemplateStepSchema).readonly().optional()
|
|
23690
|
-
}), PipelineTemplateSchema$1, { kind: "mutation" }), method(object({ id: string() }), _void(), { kind: "mutation" }), method(_void(), InferenceCapabilitiesBridge), method(object({ addonId: string() }), ModelAvailabilityListBridge), method(object({
|
|
23640
|
+
}), PipelineValidationResultSchema), method(_void(), InferenceCapabilitiesBridge), method(object({ addonId: string() }), ModelAvailabilityListBridge), method(object({
|
|
23691
23641
|
addonId: string(),
|
|
23692
23642
|
modelId: string(),
|
|
23693
|
-
format: ModelFormatSchema$
|
|
23643
|
+
format: ModelFormatSchema$2
|
|
23694
23644
|
}), DownloadModelResultSchema, { kind: "mutation" }), method(object({
|
|
23695
23645
|
addonId: string(),
|
|
23696
23646
|
modelId: string(),
|
|
23697
|
-
format: ModelFormatSchema$
|
|
23647
|
+
format: ModelFormatSchema$2
|
|
23698
23648
|
}), object({ success: literal(true) }), { kind: "mutation" }), method(object({
|
|
23699
23649
|
steps: array(PipelineStepInputSchema).min(1),
|
|
23700
23650
|
frame: FrameInputSchema.optional(),
|
|
@@ -23760,7 +23710,16 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
23760
23710
|
* `device-not-servable`), and nothing reaches the camera's live
|
|
23761
23711
|
* trace stream. Absent ⇒ unchanged behaviour.
|
|
23762
23712
|
*/
|
|
23763
|
-
replay: literal(true).optional()
|
|
23713
|
+
replay: literal(true).optional(),
|
|
23714
|
+
/**
|
|
23715
|
+
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
23716
|
+
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
23717
|
+
* step (a Frigate+ `license_plate` for `plate-detection`): the step is
|
|
23718
|
+
* NOT inferred, these boxes are its output, and its children (the plate
|
|
23719
|
+
* reader) run on them through their own crop policy. Boxes are in the
|
|
23720
|
+
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
23721
|
+
*/
|
|
23722
|
+
suppliedRoot: SuppliedRootOutputSchema.optional()
|
|
23764
23723
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
23765
23724
|
steps: array(PipelineStepInputSchema).min(1),
|
|
23766
23725
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
@@ -23842,6 +23801,375 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
23842
23801
|
filename: string().optional(),
|
|
23843
23802
|
settings: record(string(), unknown()).optional()
|
|
23844
23803
|
}), AudioTestResultSchema, { kind: "mutation" }), method(_void(), ConfigUISchemaNullableBridge);
|
|
23804
|
+
/**
|
|
23805
|
+
* The wire shapes of the Auto tune plan and apply (D745), used by the
|
|
23806
|
+
* `pipeline-orchestrator` cap. The recommender's own types
|
|
23807
|
+
* (`recommend.ts`) are the TS face of the same data; these
|
|
23808
|
+
* schemas are what crosses the cap boundary.
|
|
23809
|
+
*/
|
|
23810
|
+
var ModelFormatSchema$1 = _enum(MODEL_FORMATS);
|
|
23811
|
+
/** The operator's range for it. */
|
|
23812
|
+
var MIN_SESSIONS_PER_DEVICE_RANGE = {
|
|
23813
|
+
min: 1,
|
|
23814
|
+
max: 8
|
|
23815
|
+
};
|
|
23816
|
+
var HardwareClassIdSchema = _enum([
|
|
23817
|
+
"intel-core-ultra",
|
|
23818
|
+
"intel-n-series",
|
|
23819
|
+
"apple-m-base",
|
|
23820
|
+
"apple-m-pro",
|
|
23821
|
+
"unknown"
|
|
23822
|
+
]);
|
|
23823
|
+
var AcceleratorKindSchema = _enum([
|
|
23824
|
+
"intel-npu",
|
|
23825
|
+
"intel-igpu",
|
|
23826
|
+
"x86-cpu",
|
|
23827
|
+
"arm-cpu",
|
|
23828
|
+
"apple-ane",
|
|
23829
|
+
"coral"
|
|
23830
|
+
]);
|
|
23831
|
+
var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
23832
|
+
object({
|
|
23833
|
+
kind: literal("capacity"),
|
|
23834
|
+
sessions: number(),
|
|
23835
|
+
minSessions: number()
|
|
23836
|
+
}),
|
|
23837
|
+
object({
|
|
23838
|
+
kind: literal("tie-faster"),
|
|
23839
|
+
over: string(),
|
|
23840
|
+
recallDelta: number()
|
|
23841
|
+
}),
|
|
23842
|
+
object({
|
|
23843
|
+
kind: literal("stepped-down"),
|
|
23844
|
+
from: string(),
|
|
23845
|
+
to: string(),
|
|
23846
|
+
limitedBy: string()
|
|
23847
|
+
}),
|
|
23848
|
+
object({
|
|
23849
|
+
kind: literal("no-fit-lightest"),
|
|
23850
|
+
sessions: number(),
|
|
23851
|
+
minSessions: number()
|
|
23852
|
+
}),
|
|
23853
|
+
object({
|
|
23854
|
+
kind: literal("derived-latency"),
|
|
23855
|
+
modelId: string()
|
|
23856
|
+
}),
|
|
23857
|
+
object({ kind: literal("cpu-device") }),
|
|
23858
|
+
object({ kind: literal("coral-untouched") }),
|
|
23859
|
+
object({ kind: literal("device-disabled") }),
|
|
23860
|
+
object({ kind: literal("device-unavailable") }),
|
|
23861
|
+
object({ kind: literal("node-offline") }),
|
|
23862
|
+
object({ kind: literal("no-hardware-facts") }),
|
|
23863
|
+
object({
|
|
23864
|
+
kind: literal("no-measured-data"),
|
|
23865
|
+
hardwareClass: HardwareClassIdSchema
|
|
23866
|
+
}),
|
|
23867
|
+
object({
|
|
23868
|
+
kind: literal("no-family-build"),
|
|
23869
|
+
format: ModelFormatSchema$1
|
|
23870
|
+
})
|
|
23871
|
+
]);
|
|
23872
|
+
var DeviceModelChoiceSchema = object({
|
|
23873
|
+
modelId: string(),
|
|
23874
|
+
p50Ms: number(),
|
|
23875
|
+
fps: number(),
|
|
23876
|
+
measured: boolean(),
|
|
23877
|
+
/** Parallel sessions at the camera rate with the headroom kept free: ⌊fps × (1 − headroom) / camera fps⌋. */
|
|
23878
|
+
capacitySessions: number(),
|
|
23879
|
+
personRecall: number()
|
|
23880
|
+
});
|
|
23881
|
+
var DeviceRecommendationSchema = object({
|
|
23882
|
+
deviceKey: string(),
|
|
23883
|
+
accelerator: AcceleratorKindSchema.nullable(),
|
|
23884
|
+
enabled: boolean(),
|
|
23885
|
+
available: boolean(),
|
|
23886
|
+
chosen: DeviceModelChoiceSchema.nullable(),
|
|
23887
|
+
reasons: array(RecommendationReasonSchema).readonly()
|
|
23888
|
+
});
|
|
23889
|
+
var NodeRecommendationSchema = object({
|
|
23890
|
+
nodeId: string(),
|
|
23891
|
+
reachable: boolean(),
|
|
23892
|
+
hardwareClass: HardwareClassIdSchema.nullable(),
|
|
23893
|
+
cpuModel: string().nullable(),
|
|
23894
|
+
skipped: boolean(),
|
|
23895
|
+
acceleratorModelId: string().nullable(),
|
|
23896
|
+
devices: array(DeviceRecommendationSchema).readonly(),
|
|
23897
|
+
reasons: array(RecommendationReasonSchema).readonly()
|
|
23898
|
+
});
|
|
23899
|
+
var ModelPinChangeSchema = object({
|
|
23900
|
+
stepId: string(),
|
|
23901
|
+
before: string().nullable(),
|
|
23902
|
+
after: string().nullable()
|
|
23903
|
+
});
|
|
23904
|
+
var NodeDeviceChangeSchema = object({
|
|
23905
|
+
nodeId: string(),
|
|
23906
|
+
deviceKey: string(),
|
|
23907
|
+
madeExplicit: boolean(),
|
|
23908
|
+
modelPins: array(ModelPinChangeSchema).readonly(),
|
|
23909
|
+
thresholds: array(object({
|
|
23910
|
+
stepId: string(),
|
|
23911
|
+
keys: array(string()).readonly()
|
|
23912
|
+
})).readonly()
|
|
23913
|
+
});
|
|
23914
|
+
var CameraOverrideClearSchema = object({
|
|
23915
|
+
deviceId: number(),
|
|
23916
|
+
source: _enum(["step-override", "wholesale"]),
|
|
23917
|
+
nodeId: string(),
|
|
23918
|
+
deviceKey: string().nullable(),
|
|
23919
|
+
stepId: string(),
|
|
23920
|
+
modelIdBefore: string().nullable(),
|
|
23921
|
+
keys: array(string()).readonly()
|
|
23922
|
+
});
|
|
23923
|
+
var DetectorStoreClearSchema = object({
|
|
23924
|
+
deviceId: number(),
|
|
23925
|
+
keys: array(string()).readonly()
|
|
23926
|
+
});
|
|
23927
|
+
var AutoTuneWarningSchema = discriminatedUnion("kind", [
|
|
23928
|
+
object({
|
|
23929
|
+
kind: literal("detector-store-cluster-wide"),
|
|
23930
|
+
skippedNodes: array(string()).readonly()
|
|
23931
|
+
}),
|
|
23932
|
+
object({
|
|
23933
|
+
kind: literal("detector-store-unreadable"),
|
|
23934
|
+
error: string()
|
|
23935
|
+
}),
|
|
23936
|
+
object({
|
|
23937
|
+
kind: literal("coral-enabled"),
|
|
23938
|
+
nodeId: string(),
|
|
23939
|
+
deviceKey: string()
|
|
23940
|
+
})
|
|
23941
|
+
]);
|
|
23942
|
+
var AutoTuneOptionsSchema = object({
|
|
23943
|
+
/** Share of each accelerator's throughput kept free (0.3–0.5). */
|
|
23944
|
+
headroom: number().min(.3).max(.5).default(.4),
|
|
23945
|
+
/**
|
|
23946
|
+
* The least number of parallel sessions every device must sustain at the
|
|
23947
|
+
* camera rate with the headroom kept free (D755). The most accurate model
|
|
23948
|
+
* that reaches it wins.
|
|
23949
|
+
*/
|
|
23950
|
+
minSessionsPerDevice: number().int().min(MIN_SESSIONS_PER_DEVICE_RANGE.min).max(MIN_SESSIONS_PER_DEVICE_RANGE.max).default(2)
|
|
23951
|
+
});
|
|
23952
|
+
var AutoTunePlanSchema = object({
|
|
23953
|
+
/** Hash of everything the apply will write — the apply refuses a different one. */
|
|
23954
|
+
planHash: string(),
|
|
23955
|
+
family: literal("yolov9"),
|
|
23956
|
+
headroom: number(),
|
|
23957
|
+
minSessionsPerDevice: number(),
|
|
23958
|
+
/** The detection rate a session is counted at (the fastest camera running the pipeline root). */
|
|
23959
|
+
cameraFps: number(),
|
|
23960
|
+
generatedAt: number(),
|
|
23961
|
+
nodes: array(NodeRecommendationSchema).readonly(),
|
|
23962
|
+
nodeChanges: array(NodeDeviceChangeSchema).readonly(),
|
|
23963
|
+
cameraClears: array(CameraOverrideClearSchema).readonly(),
|
|
23964
|
+
detectorStoreClears: array(DetectorStoreClearSchema).readonly(),
|
|
23965
|
+
warnings: array(AutoTuneWarningSchema).readonly()
|
|
23966
|
+
});
|
|
23967
|
+
var AutoTuneApplyInputSchema = object({
|
|
23968
|
+
planHash: string(),
|
|
23969
|
+
headroom: number().min(.3).max(.5).default(.4),
|
|
23970
|
+
minSessionsPerDevice: number().int().min(MIN_SESSIONS_PER_DEVICE_RANGE.min).max(MIN_SESSIONS_PER_DEVICE_RANGE.max).default(2)
|
|
23971
|
+
});
|
|
23972
|
+
var AutoTunePhaseResultSchema = object({
|
|
23973
|
+
phase: _enum([
|
|
23974
|
+
"download",
|
|
23975
|
+
"camera-overrides",
|
|
23976
|
+
"detector-thresholds",
|
|
23977
|
+
"node-models",
|
|
23978
|
+
"redispatch"
|
|
23979
|
+
]),
|
|
23980
|
+
ok: boolean(),
|
|
23981
|
+
detail: string()
|
|
23982
|
+
});
|
|
23983
|
+
var AutoTuneApplyResultSchema = discriminatedUnion("kind", [
|
|
23984
|
+
object({
|
|
23985
|
+
kind: literal("applied"),
|
|
23986
|
+
planHash: string(),
|
|
23987
|
+
phases: array(AutoTunePhaseResultSchema).readonly()
|
|
23988
|
+
}),
|
|
23989
|
+
object({
|
|
23990
|
+
kind: literal("aborted"),
|
|
23991
|
+
phases: array(AutoTunePhaseResultSchema).readonly()
|
|
23992
|
+
}),
|
|
23993
|
+
object({
|
|
23994
|
+
kind: literal("stale"),
|
|
23995
|
+
plan: AutoTunePlanSchema
|
|
23996
|
+
}),
|
|
23997
|
+
object({
|
|
23998
|
+
kind: literal("refused"),
|
|
23999
|
+
reason: _enum(["apply-in-progress"])
|
|
24000
|
+
})
|
|
24001
|
+
]);
|
|
24002
|
+
/**
|
|
24003
|
+
* Wire shapes of the Load balancing surface (D748): the session placement
|
|
24004
|
+
* policy, the atomic share write, the observed placement statistics, the
|
|
24005
|
+
* hardware share suggestion and the stale device pins.
|
|
24006
|
+
*/
|
|
24007
|
+
/**
|
|
24008
|
+
* How a new detection session picks its node and device.
|
|
24009
|
+
* - `least-loaded` — the historical rule: lowest `attached / weight`, a
|
|
24010
|
+
* constant node order at a tie (D37). An idle node always ties at 0, so a
|
|
24011
|
+
* weight only bites once a node already holds a session.
|
|
24012
|
+
* - `share` — the share of PARALLEL sessions is held to the weights, and a
|
|
24013
|
+
* full or drowning node yields to a free one (D748).
|
|
24014
|
+
*/
|
|
24015
|
+
var SessionPlacementPolicySchema = _enum(["least-loaded", "share"]);
|
|
24016
|
+
var LoadBalancingSharesInputSchema = object({
|
|
24017
|
+
/** nodeId → share (> 0). A node left out keeps its weight. */
|
|
24018
|
+
nodes: record(string(), number().positive()).default({}),
|
|
24019
|
+
/** nodeId → deviceKey → share (> 0). A device left out keeps its weight. */
|
|
24020
|
+
devices: record(string(), record(string(), number().positive())).default({})
|
|
24021
|
+
});
|
|
24022
|
+
var PlacementStatsInputSchema = object({
|
|
24023
|
+
/** Window the observed shares are averaged over (default 1 h, max 24 h). */
|
|
24024
|
+
windowMs: number().int().min(6e4).max(1440 * 60 * 1e3).default(3600 * 1e3) });
|
|
24025
|
+
var PlacementDeviceStatsSchema = object({
|
|
24026
|
+
deviceKey: string(),
|
|
24027
|
+
/** Sessions running on this device now. */
|
|
24028
|
+
sessionsNow: number(),
|
|
24029
|
+
/** Sessions started on this device inside the window. */
|
|
24030
|
+
sessionsStarted: number(),
|
|
24031
|
+
/** Time-weighted share of the node's parallel sessions over the window (0–1); null = no session ran. */
|
|
24032
|
+
observedShare: number().nullable()
|
|
24033
|
+
});
|
|
24034
|
+
var PlacementNodeStatsSchema = object({
|
|
24035
|
+
nodeId: string(),
|
|
24036
|
+
sessionsNow: number(),
|
|
24037
|
+
sessionsStarted: number(),
|
|
24038
|
+
/** Time-weighted share of the cluster's parallel sessions over the window (0–1); null = none ran. */
|
|
24039
|
+
observedShare: number().nullable(),
|
|
24040
|
+
/** Most sessions this node ran at once inside the window. */
|
|
24041
|
+
peakSessions: number(),
|
|
24042
|
+
/** Sessions a share election handed elsewhere because this node was full or drowning. */
|
|
24043
|
+
yieldsAway: number(),
|
|
24044
|
+
devices: array(PlacementDeviceStatsSchema).readonly()
|
|
24045
|
+
});
|
|
24046
|
+
/** A camera's device pin that the session path cannot honour. */
|
|
24047
|
+
var StaleDevicePinSchema = object({
|
|
24048
|
+
deviceId: number(),
|
|
24049
|
+
deviceKey: string(),
|
|
24050
|
+
/** `disabled` — the key exists on some node but is not enabled anywhere; `absent` — no node has it. */
|
|
24051
|
+
reason: _enum(["disabled", "absent"])
|
|
24052
|
+
});
|
|
24053
|
+
var PlacementStatsSchema = object({
|
|
24054
|
+
policy: SessionPlacementPolicySchema,
|
|
24055
|
+
windowMs: number(),
|
|
24056
|
+
/** How much of the window was actually observed (the hub keeps it in memory). */
|
|
24057
|
+
observedForMs: number(),
|
|
24058
|
+
sessionsNow: number(),
|
|
24059
|
+
/** Most parallel sessions across the cluster inside the window. */
|
|
24060
|
+
clusterPeakSessions: number(),
|
|
24061
|
+
nodes: array(PlacementNodeStatsSchema).readonly(),
|
|
24062
|
+
stalePins: array(StaleDevicePinSchema).readonly()
|
|
24063
|
+
});
|
|
24064
|
+
/**
|
|
24065
|
+
* Where an automatic share's capacity comes from (D755).
|
|
24066
|
+
* - `hardware` — the static capacity of each device at its Auto tune model:
|
|
24067
|
+
* the measured latency table for the node's hardware class.
|
|
24068
|
+
* - `benchmark` — the node's own measured capacity (node benchmark results).
|
|
24069
|
+
* A node with no results falls back to `hardware`, and says so.
|
|
24070
|
+
*/
|
|
24071
|
+
var CapacitySourceSchema = _enum(["hardware", "benchmark"]);
|
|
24072
|
+
/** Why a node under the `benchmark` source was sized from hardware instead. */
|
|
24073
|
+
var CapacityFallbackSchema = _enum(["no-benchmark-results", "partial-benchmark-results"]);
|
|
24074
|
+
var SuggestSharesInputSchema = object({
|
|
24075
|
+
headroom: number().min(.3).max(.5).default(.4),
|
|
24076
|
+
/** Default `hardware`. */
|
|
24077
|
+
source: CapacitySourceSchema.default("hardware")
|
|
24078
|
+
});
|
|
24079
|
+
var SuggestedDeviceShareSchema = object({
|
|
24080
|
+
deviceKey: string(),
|
|
24081
|
+
/** Share of the node (0–100, rounded). */
|
|
24082
|
+
share: number(),
|
|
24083
|
+
modelId: string().nullable(),
|
|
24084
|
+
/** Inferences per second at that model, from the measured table; null when sized by a benchmark. */
|
|
24085
|
+
fps: number().nullable(),
|
|
24086
|
+
/** False for a table cell derived from another chip; true for a measured cell or a benchmark. */
|
|
24087
|
+
measured: boolean(),
|
|
24088
|
+
/**
|
|
24089
|
+
* Advisory session cap: ⌊fps × (1 − headroom) / camera fps⌋ from the table,
|
|
24090
|
+
* or the benchmark's measured max sessions. Never enforced.
|
|
24091
|
+
*/
|
|
24092
|
+
suggestedMaxSessions: number().nullable()
|
|
24093
|
+
});
|
|
24094
|
+
var SuggestedNodeShareSchema = object({
|
|
24095
|
+
nodeId: string(),
|
|
24096
|
+
/** Share of the cluster (0–100, rounded); null = node skipped (offline, unknown hardware). */
|
|
24097
|
+
share: number().nullable(),
|
|
24098
|
+
/** Parallel sessions the node sustains at the suggested models with the headroom kept free. */
|
|
24099
|
+
capacitySessions: number(),
|
|
24100
|
+
devices: array(SuggestedDeviceShareSchema).readonly(),
|
|
24101
|
+
skippedReason: string().nullable(),
|
|
24102
|
+
/** What this node's capacity was read from; null when the node is skipped. */
|
|
24103
|
+
capacitySource: CapacitySourceSchema.nullable(),
|
|
24104
|
+
/** Set when the `benchmark` source was asked for and this node used `hardware`. */
|
|
24105
|
+
capacityFallback: CapacityFallbackSchema.nullable()
|
|
24106
|
+
});
|
|
24107
|
+
var SuggestSharesResultSchema = object({
|
|
24108
|
+
headroom: number(),
|
|
24109
|
+
/** The source asked for; each node says what it actually used. */
|
|
24110
|
+
source: CapacitySourceSchema,
|
|
24111
|
+
/** Camera detection rate the capacity is counted in (the fastest camera's fps). */
|
|
24112
|
+
cameraFps: number(),
|
|
24113
|
+
/** The Auto tune capacity floor the models were picked at. */
|
|
24114
|
+
minSessionsPerDevice: number(),
|
|
24115
|
+
nodes: array(SuggestedNodeShareSchema).readonly()
|
|
24116
|
+
});
|
|
24117
|
+
/**
|
|
24118
|
+
* Where the node and device shares come from (D750, D755).
|
|
24119
|
+
* - `hardware` (default) — computed by the system from each node's static
|
|
24120
|
+
* capacity (its accelerators at their Auto tune models, from the measured
|
|
24121
|
+
* latency table), recomputed whenever a node or device joins, leaves, is
|
|
24122
|
+
* switched on or off, or changes model. No load input.
|
|
24123
|
+
* - `benchmark` — the same, from each node's measured capacity (node
|
|
24124
|
+
* benchmark results); a node without results falls back to `hardware`.
|
|
24125
|
+
* - `manual` — the operator's stored sliders.
|
|
24126
|
+
* Either way a node or device that cannot take sessions gives its share to
|
|
24127
|
+
* the others in proportion; the stored values are never rewritten for that.
|
|
24128
|
+
*/
|
|
24129
|
+
var ShareSourceSchema = _enum([
|
|
24130
|
+
"hardware",
|
|
24131
|
+
"benchmark",
|
|
24132
|
+
"manual"
|
|
24133
|
+
]);
|
|
24134
|
+
var SetShareSourceInputSchema = object({ source: ShareSourceSchema });
|
|
24135
|
+
object({
|
|
24136
|
+
nodes: record(string(), number()),
|
|
24137
|
+
devices: record(string(), record(string(), number()))
|
|
24138
|
+
});
|
|
24139
|
+
var EffectiveDeviceShareSchema = object({
|
|
24140
|
+
deviceKey: string(),
|
|
24141
|
+
/** Can take sessions now (enabled, available, can run the root). */
|
|
24142
|
+
eligible: boolean(),
|
|
24143
|
+
/** The share the source assigns, as a percentage of the node's devices. */
|
|
24144
|
+
configuredPct: number(),
|
|
24145
|
+
/** The share actually used, after an ineligible device's share went to the others. */
|
|
24146
|
+
effectivePct: number()
|
|
24147
|
+
});
|
|
24148
|
+
var EffectiveNodeShareSchema = object({
|
|
24149
|
+
nodeId: string(),
|
|
24150
|
+
eligible: boolean(),
|
|
24151
|
+
configuredPct: number(),
|
|
24152
|
+
effectivePct: number(),
|
|
24153
|
+
/** Automatic sources: what this node's share was computed from; null under `manual` or before the first answer. */
|
|
24154
|
+
capacitySource: CapacitySourceSchema.nullable(),
|
|
24155
|
+
/** Automatic `benchmark`: why this node used `hardware` instead. */
|
|
24156
|
+
capacityFallback: CapacityFallbackSchema.nullable(),
|
|
24157
|
+
devices: array(EffectiveDeviceShareSchema).readonly()
|
|
24158
|
+
});
|
|
24159
|
+
var EffectiveSharesSchema = object({
|
|
24160
|
+
source: ShareSourceSchema,
|
|
24161
|
+
policy: SessionPlacementPolicySchema,
|
|
24162
|
+
/** An automatic source with no computed answer yet: the stored sliders are used meanwhile. */
|
|
24163
|
+
autoPending: boolean(),
|
|
24164
|
+
/** When the automatic shares were last computed (ms epoch); null = never. */
|
|
24165
|
+
computedAt: number().nullable(),
|
|
24166
|
+
/** What made the system recompute them last. */
|
|
24167
|
+
trigger: string().nullable(),
|
|
24168
|
+
nodes: array(EffectiveNodeShareSchema).readonly(),
|
|
24169
|
+
/** The relative weights the election reads (before eligibility). */
|
|
24170
|
+
nodeWeights: record(string(), number()),
|
|
24171
|
+
deviceWeights: record(string(), record(string(), number()))
|
|
24172
|
+
});
|
|
23845
24173
|
object({
|
|
23846
24174
|
activeCameras: number(),
|
|
23847
24175
|
throttledCameras: number(),
|
|
@@ -24759,14 +25087,15 @@ var RunnerLocalLoadSchema = object({
|
|
|
24759
25087
|
* Per-inference-device live load (multi-device C4). One entry per deviceKey
|
|
24760
25088
|
* this runner currently has attached cameras on, so the orchestrator's second
|
|
24761
25089
|
* `balance()` pass (over a node's devices) weights on real per-pool session
|
|
24762
|
-
* counts. Empty on single-device / pre-multi-device runners.
|
|
24763
|
-
* per
|
|
25090
|
+
* counts. Empty on single-device / pre-multi-device runners. There is no
|
|
25091
|
+
* per-device queue depth: the inference pool's backlog has no accessor, and
|
|
25092
|
+
* a field that always read 0 was removed rather than shown as a measurement
|
|
25093
|
+
* (D762).
|
|
24764
25094
|
*/
|
|
24765
25095
|
devices: array(object({
|
|
24766
25096
|
deviceKey: string(),
|
|
24767
25097
|
backend: string(),
|
|
24768
|
-
attachedCameras: number()
|
|
24769
|
-
queueDepthTotal: number()
|
|
25098
|
+
attachedCameras: number()
|
|
24770
25099
|
})).default([]),
|
|
24771
25100
|
/** Hardware capability flags reported by this node. */
|
|
24772
25101
|
hardware: object({
|
|
@@ -24902,7 +25231,22 @@ method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mu
|
|
|
24902
25231
|
*/
|
|
24903
25232
|
cropJpeg: string().optional(),
|
|
24904
25233
|
parent: DetailParentSchema,
|
|
24905
|
-
steps: array(string()).optional()
|
|
25234
|
+
steps: array(string()).optional(),
|
|
25235
|
+
/**
|
|
25236
|
+
* The camera's root model already drew this step's boxes (D730): a
|
|
25237
|
+
* `license_plate` inside the parent vehicle. The named step is NOT
|
|
25238
|
+
* inferred — these FRAME-space boxes are its output — and its
|
|
25239
|
+
* requested children (the plate reader) run on them. Absent ⇒ every
|
|
25240
|
+
* requested step infers as before.
|
|
25241
|
+
*/
|
|
25242
|
+
supplied: object({
|
|
25243
|
+
stepId: string(),
|
|
25244
|
+
modelId: string(),
|
|
25245
|
+
boxes: array(object({
|
|
25246
|
+
bbox: NativeCropBboxSchema,
|
|
25247
|
+
score: number()
|
|
25248
|
+
})).min(1)
|
|
25249
|
+
}).optional()
|
|
24906
25250
|
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" }), method(object({
|
|
24907
25251
|
/** Catalog step id, e.g. `clip-embedding`. */
|
|
24908
25252
|
stepId: string(),
|
|
@@ -24965,14 +25309,6 @@ var CameraPipelineConfigSchema = object({
|
|
|
24965
25309
|
settings: record(string(), unknown()).readonly().optional()
|
|
24966
25310
|
}).nullable().optional()
|
|
24967
25311
|
});
|
|
24968
|
-
var PipelineTemplateSchema = object({
|
|
24969
|
-
id: string(),
|
|
24970
|
-
name: string(),
|
|
24971
|
-
description: string().optional(),
|
|
24972
|
-
config: CameraPipelineConfigSchema,
|
|
24973
|
-
createdAt: string(),
|
|
24974
|
-
updatedAt: string()
|
|
24975
|
-
});
|
|
24976
25312
|
var DeviceStepConfigSchema = object({
|
|
24977
25313
|
modelId: string().optional(),
|
|
24978
25314
|
settings: record(string(), unknown()).optional(),
|
|
@@ -25046,9 +25382,10 @@ var CameraStepOverridePatchSchema = object({
|
|
|
25046
25382
|
modelId: string().optional(),
|
|
25047
25383
|
settings: record(string(), unknown()).readonly().optional()
|
|
25048
25384
|
});
|
|
25385
|
+
var CameraStepSettingsSchema = record(string(), record(string(), unknown()).readonly());
|
|
25049
25386
|
var CameraPipelineSettingsSchema = object({
|
|
25050
|
-
pinnedAgentNodeId: string().optional(),
|
|
25051
25387
|
stepToggles: record(string(), boolean()).optional(),
|
|
25388
|
+
stepSettings: CameraStepSettingsSchema.optional(),
|
|
25052
25389
|
stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
|
|
25053
25390
|
pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
|
|
25054
25391
|
});
|
|
@@ -25081,7 +25418,10 @@ var PipelineAssignmentSchema = object({
|
|
|
25081
25418
|
});
|
|
25082
25419
|
/**
|
|
25083
25420
|
* Per-agent load summary surfaced to the load balancer + dashboards.
|
|
25084
|
-
* Aggregated from each runner's `getLocalLoad` cap call.
|
|
25421
|
+
* Aggregated from each runner's `getLocalLoad` cap call. In the
|
|
25422
|
+
* `getAgentLoad` report, a single-device node's default-pool sessions (no
|
|
25423
|
+
* `deviceKey`) are credited to its one eligible device in `load.devices` —
|
|
25424
|
+
* the default pool IS that device (D745); the balancer's census stays raw.
|
|
25085
25425
|
*/
|
|
25086
25426
|
var AgentLoadSummarySchema = object({
|
|
25087
25427
|
nodeId: string(),
|
|
@@ -25170,26 +25510,27 @@ var CameraBrokerStatusSchema = object({
|
|
|
25170
25510
|
width: number(),
|
|
25171
25511
|
height: number(),
|
|
25172
25512
|
subscribers: number(),
|
|
25173
|
-
|
|
25174
|
-
|
|
25513
|
+
/**
|
|
25514
|
+
* Encoded packets/s the broker receives from the camera. null when the
|
|
25515
|
+
* broker's stats read failed — unknown, never 0 (a 0 here reads as a stall).
|
|
25516
|
+
* There is no output rate: decoding runs in the session decode workers, not
|
|
25517
|
+
* in the broker, so the broker's own decoded-frame rate is 0 on every live
|
|
25518
|
+
* camera and is not served (D758).
|
|
25519
|
+
*/
|
|
25520
|
+
inFps: number().nullable()
|
|
25175
25521
|
})).readonly(),
|
|
25176
25522
|
webrtcSessions: number(),
|
|
25177
25523
|
rtspRestream: boolean()
|
|
25178
25524
|
});
|
|
25179
|
-
/**
|
|
25180
|
-
|
|
25181
|
-
|
|
25182
|
-
|
|
25183
|
-
|
|
25184
|
-
|
|
25185
|
-
|
|
25186
|
-
|
|
25187
|
-
var CameraDecoderStatusSchema = object({
|
|
25188
|
-
nodeId: string(),
|
|
25189
|
-
formats: array(string()).readonly(),
|
|
25190
|
-
sessionCount: number(),
|
|
25191
|
-
shm: CameraDecoderShmSchema
|
|
25192
|
-
});
|
|
25525
|
+
/**
|
|
25526
|
+
* Decoder block — WHERE decode runs (co-located with the detection node by
|
|
25527
|
+
* construction); null when the camera has no detection node. It carries no
|
|
25528
|
+
* frame counter: the shared-memory plane whose counters it used to serve is
|
|
25529
|
+
* gone, and those fields read 0 forever. Whether frames actually flow is read
|
|
25530
|
+
* from `detection.actualFps` (frames delivered to and processed by the
|
|
25531
|
+
* detector), never from a counter nothing feeds.
|
|
25532
|
+
*/
|
|
25533
|
+
var CameraDecoderStatusSchema = object({ nodeId: string() });
|
|
25193
25534
|
/** Motion block — null when motion detection is not active for this device. */
|
|
25194
25535
|
var CameraMotionStatusSchema = object({
|
|
25195
25536
|
enabled: boolean(),
|
|
@@ -25546,12 +25887,6 @@ method(object({
|
|
|
25546
25887
|
}), object({ success: literal(true) }), {
|
|
25547
25888
|
kind: "mutation",
|
|
25548
25889
|
auth: "admin"
|
|
25549
|
-
}), method(object({
|
|
25550
|
-
agentNodeId: string(),
|
|
25551
|
-
detectWeight: number().positive().nullable()
|
|
25552
|
-
}), object({ success: literal(true) }), {
|
|
25553
|
-
kind: "mutation",
|
|
25554
|
-
auth: "admin"
|
|
25555
25890
|
}), method(object({
|
|
25556
25891
|
agentNodeId: string(),
|
|
25557
25892
|
detect: boolean().nullable().optional(),
|
|
@@ -25593,6 +25928,15 @@ method(object({
|
|
|
25593
25928
|
}), {
|
|
25594
25929
|
kind: "mutation",
|
|
25595
25930
|
auth: "admin"
|
|
25931
|
+
}), method(AutoTuneOptionsSchema, AutoTunePlanSchema, { auth: "admin" }), method(AutoTuneApplyInputSchema, AutoTuneApplyResultSchema, {
|
|
25932
|
+
kind: "mutation",
|
|
25933
|
+
auth: "admin"
|
|
25934
|
+
}), method(LoadBalancingSharesInputSchema, object({ success: literal(true) }), {
|
|
25935
|
+
kind: "mutation",
|
|
25936
|
+
auth: "admin"
|
|
25937
|
+
}), method(PlacementStatsInputSchema, PlacementStatsSchema, { auth: "admin" }), method(SuggestSharesInputSchema, SuggestSharesResultSchema, { auth: "admin" }), method(_void(), EffectiveSharesSchema, { auth: "admin" }), method(SetShareSourceInputSchema, object({ success: literal(true) }), {
|
|
25938
|
+
kind: "mutation",
|
|
25939
|
+
auth: "admin"
|
|
25596
25940
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
25597
25941
|
deviceId: number(),
|
|
25598
25942
|
addonId: string(),
|
|
@@ -25609,6 +25953,13 @@ method(object({
|
|
|
25609
25953
|
}), object({ success: literal(true) }), {
|
|
25610
25954
|
kind: "mutation",
|
|
25611
25955
|
auth: "admin"
|
|
25956
|
+
}), method(object({
|
|
25957
|
+
deviceId: number(),
|
|
25958
|
+
addonId: string(),
|
|
25959
|
+
settings: record(string(), unknown()).nullable()
|
|
25960
|
+
}), object({ success: literal(true) }), {
|
|
25961
|
+
kind: "mutation",
|
|
25962
|
+
auth: "admin"
|
|
25612
25963
|
}), method(object({
|
|
25613
25964
|
deviceId: number(),
|
|
25614
25965
|
agentNodeId: string(),
|
|
@@ -25632,25 +25983,7 @@ method(object({
|
|
|
25632
25983
|
}), method(_void(), DiskReconcileJobSchema, {
|
|
25633
25984
|
kind: "mutation",
|
|
25634
25985
|
auth: "admin"
|
|
25635
|
-
}), method(_void(), DiskReconcileJobSchema, { auth: "admin" })
|
|
25636
|
-
name: string(),
|
|
25637
|
-
description: string().optional(),
|
|
25638
|
-
config: CameraPipelineConfigSchema
|
|
25639
|
-
}), PipelineTemplateSchema, {
|
|
25640
|
-
kind: "mutation",
|
|
25641
|
-
auth: "admin"
|
|
25642
|
-
}), method(object({
|
|
25643
|
-
id: string(),
|
|
25644
|
-
name: string().optional(),
|
|
25645
|
-
description: string().optional(),
|
|
25646
|
-
config: CameraPipelineConfigSchema.optional()
|
|
25647
|
-
}), PipelineTemplateSchema, {
|
|
25648
|
-
kind: "mutation",
|
|
25649
|
-
auth: "admin"
|
|
25650
|
-
}), method(object({ id: string() }), object({ success: literal(true) }), {
|
|
25651
|
-
kind: "mutation",
|
|
25652
|
-
auth: "admin"
|
|
25653
|
-
});
|
|
25986
|
+
}), method(_void(), DiskReconcileJobSchema, { auth: "admin" });
|
|
25654
25987
|
/**
|
|
25655
25988
|
* Cap → event-kind mapping for the SENSOR / CONTROL cap families — the table
|
|
25656
25989
|
* `pipeline-analytics.listEventKinds` uses to turn a linked device's bound
|
|
@@ -28003,8 +28336,6 @@ var WebrtcStreamChoiceSchema = object({
|
|
|
28003
28336
|
]).nullable(),
|
|
28004
28337
|
/** Input FPS from the camera (null for adaptive). */
|
|
28005
28338
|
inputFps: number().nullable(),
|
|
28006
|
-
/** Decoded FPS (null for adaptive). */
|
|
28007
|
-
decodeFps: number().nullable(),
|
|
28008
28339
|
/** Bitrate in kbps (null for adaptive). */
|
|
28009
28340
|
bitrateKbps: number().nullable()
|
|
28010
28341
|
});
|
|
@@ -28336,6 +28667,14 @@ DeviceType.Camera, method(object({ deviceId: number().int().nonnegative() }), ar
|
|
|
28336
28667
|
*/
|
|
28337
28668
|
alive: boolean()
|
|
28338
28669
|
})), method(object({
|
|
28670
|
+
deviceId: number().int().nonnegative(),
|
|
28671
|
+
sessionId: string(),
|
|
28672
|
+
downlinkMbps: number().nonnegative()
|
|
28673
|
+
}), object({
|
|
28674
|
+
outcome: _enum(["switching", "held"]),
|
|
28675
|
+
tier: CamProfileSchema.nullable(),
|
|
28676
|
+
reason: string()
|
|
28677
|
+
}), { kind: "mutation" }), method(object({
|
|
28339
28678
|
deviceId: number().int().nonnegative(),
|
|
28340
28679
|
sessionId: string()
|
|
28341
28680
|
}), WebrtcSessionDebugSchema, { kind: "query" });
|
|
@@ -28575,6 +28914,59 @@ var AddonAutoUpdateSchema = ChannelWithInheritSchema;
|
|
|
28575
28914
|
var RestartAddonResultSchema = unknown();
|
|
28576
28915
|
var InstallPackageResultSchema = unknown();
|
|
28577
28916
|
var ReloadPackagesResultSchema = unknown();
|
|
28917
|
+
/**
|
|
28918
|
+
* What an uninstall did on ONE node.
|
|
28919
|
+
* - `uninstalled` — removed: runner(s) stopped, caps gone, code deleted.
|
|
28920
|
+
* - `not-installed` — the node did not have it (nothing to do).
|
|
28921
|
+
* - `refused` — protected / bootstrap package; nothing touched.
|
|
28922
|
+
* - `failed` — attempted and did not complete; `error` says why.
|
|
28923
|
+
* - `pending-reconnect` — the node is OFFLINE: its record was pruned so the
|
|
28924
|
+
* back-fill never returns the package, and the stale-addon sweep removes the
|
|
28925
|
+
* copy when the node registers again (only once the hub no longer has it).
|
|
28926
|
+
*/
|
|
28927
|
+
var UninstallNodeOutcomeSchema = _enum([
|
|
28928
|
+
"uninstalled",
|
|
28929
|
+
"not-installed",
|
|
28930
|
+
"refused",
|
|
28931
|
+
"failed",
|
|
28932
|
+
"pending-reconnect"
|
|
28933
|
+
]);
|
|
28934
|
+
var UninstallNodeResultSchema = object({
|
|
28935
|
+
nodeId: string(),
|
|
28936
|
+
outcome: UninstallNodeOutcomeSchema,
|
|
28937
|
+
error: string().optional(),
|
|
28938
|
+
addonIds: array(string()).readonly(),
|
|
28939
|
+
runnersStopped: array(string()).readonly(),
|
|
28940
|
+
warnings: array(string()).readonly()
|
|
28941
|
+
});
|
|
28942
|
+
var UninstallPackageResultSchema = object({
|
|
28943
|
+
/** Every targeted node ended `uninstalled`, `not-installed` or `pending-reconnect`. */
|
|
28944
|
+
success: boolean(),
|
|
28945
|
+
packageName: string(),
|
|
28946
|
+
results: array(UninstallNodeResultSchema).readonly()
|
|
28947
|
+
});
|
|
28948
|
+
/**
|
|
28949
|
+
* `unreachable` lists online agents whose status read FAILED — absence from
|
|
28950
|
+
* `installations` is only "not installed" for a node that answered (D315).
|
|
28951
|
+
*/
|
|
28952
|
+
var PackageInstallationsSchema = object({
|
|
28953
|
+
installations: array(object({
|
|
28954
|
+
packageName: string(),
|
|
28955
|
+
nodeId: string(),
|
|
28956
|
+
nodeName: string(),
|
|
28957
|
+
isHub: boolean(),
|
|
28958
|
+
isOnline: boolean(),
|
|
28959
|
+
version: string().nullable(),
|
|
28960
|
+
addonIds: array(string()).readonly(),
|
|
28961
|
+
source: _enum(["live", "recorded"]),
|
|
28962
|
+
/** The hub installs this package too. `false` on an agent row = an orphan. */
|
|
28963
|
+
onHub: boolean()
|
|
28964
|
+
})).readonly(),
|
|
28965
|
+
unreachable: array(object({
|
|
28966
|
+
nodeId: string(),
|
|
28967
|
+
error: string()
|
|
28968
|
+
})).readonly()
|
|
28969
|
+
});
|
|
28578
28970
|
var BulkUpdateItemStatusSchema = _enum([
|
|
28579
28971
|
"queued",
|
|
28580
28972
|
"updating",
|
|
@@ -28657,10 +29049,14 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
|
|
|
28657
29049
|
}), method(object({ packageName: string() }), InstallPackageResultSchema, {
|
|
28658
29050
|
kind: "mutation",
|
|
28659
29051
|
auth: "admin"
|
|
28660
|
-
}), method(_void(), boolean()), method(_void(), array(unknown()).readonly()), method(object({
|
|
29052
|
+
}), method(_void(), boolean()), method(_void(), array(unknown()).readonly()), method(object({
|
|
29053
|
+
packageName: string().min(1),
|
|
29054
|
+
nodeId: string().optional(),
|
|
29055
|
+
everywhere: boolean().optional()
|
|
29056
|
+
}), UninstallPackageResultSchema, {
|
|
28661
29057
|
kind: "mutation",
|
|
28662
29058
|
auth: "admin"
|
|
28663
|
-
}), method(_void(), ReloadPackagesResultSchema, {
|
|
29059
|
+
}), method(object({ packageName: string().optional() }), PackageInstallationsSchema, { auth: "admin" }), method(_void(), ReloadPackagesResultSchema, {
|
|
28664
29060
|
kind: "mutation",
|
|
28665
29061
|
auth: "admin"
|
|
28666
29062
|
}), method(object({ query: string().optional() }), array(SearchResultSchema)), method(object({ nodeId: string().optional() }), array(PackageUpdateSchema).readonly(), { auth: "admin" }), method(object({
|
|
@@ -32155,7 +32551,8 @@ var ConnectionEndpointSchema = object({
|
|
|
32155
32551
|
"lan-ipv6",
|
|
32156
32552
|
"public",
|
|
32157
32553
|
"loopback",
|
|
32158
|
-
"app-link"
|
|
32554
|
+
"app-link",
|
|
32555
|
+
"custom"
|
|
32159
32556
|
]),
|
|
32160
32557
|
/**
|
|
32161
32558
|
* Originating-interface kind — `lan`/`wifi`/`docker`/`vpn`/`other`/
|
|
@@ -32224,7 +32621,7 @@ var GetConnectionEndpointsResultSchema = object({
|
|
|
32224
32621
|
localPort: AdvertisedLocalPortSchema
|
|
32225
32622
|
});
|
|
32226
32623
|
/**
|
|
32227
|
-
* The address flagged for notification
|
|
32624
|
+
* The address flagged for notification taps (`notificationTaps`). `baseUrl: null` = AUTO, which
|
|
32228
32625
|
* since D709 is the CamStack app link; `resolved` reports the effective value,
|
|
32229
32626
|
* so the UI can show it either way.
|
|
32230
32627
|
*/
|
|
@@ -32257,6 +32654,72 @@ var ViewerEndpointsSchema = object({
|
|
|
32257
32654
|
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
32258
32655
|
resolved: array(string()).readonly()
|
|
32259
32656
|
});
|
|
32657
|
+
/**
|
|
32658
|
+
* DEPRECATED compatibility shape of `getHubAddresses` (D729 amendment, kept
|
|
32659
|
+
* for addons built against it): `cluster` is the `internal` role, `browser`
|
|
32660
|
+
* the `publicEndpoint` role; `override` is the flagged address.
|
|
32661
|
+
*/
|
|
32662
|
+
var HubAddressSnapshotSchema = object({
|
|
32663
|
+
override: string().nullable(),
|
|
32664
|
+
resolved: string().nullable(),
|
|
32665
|
+
source: _enum([
|
|
32666
|
+
"override",
|
|
32667
|
+
"auto",
|
|
32668
|
+
"none"
|
|
32669
|
+
])
|
|
32670
|
+
});
|
|
32671
|
+
var HubAddressesSchema = object({
|
|
32672
|
+
cluster: HubAddressSnapshotSchema,
|
|
32673
|
+
browser: HubAddressSnapshotSchema
|
|
32674
|
+
});
|
|
32675
|
+
/**
|
|
32676
|
+
* What an address is used for (`hub-address.ts`, D734). `appConnections` is
|
|
32677
|
+
* many-valued; `notificationTaps`, `publicEndpoint` and `internal` are carried
|
|
32678
|
+
* by at most one address.
|
|
32679
|
+
*/
|
|
32680
|
+
var HubAddressRoleSchema = _enum(HUB_ADDRESS_ROLES);
|
|
32681
|
+
var RoleSourceSchema = _enum([
|
|
32682
|
+
"flagged",
|
|
32683
|
+
"auto",
|
|
32684
|
+
"none"
|
|
32685
|
+
]);
|
|
32686
|
+
/** One single-valued role: the flagged address, the one in use, and why. */
|
|
32687
|
+
var HubAddressRoleResolutionSchema = object({
|
|
32688
|
+
/** The address carrying the flag, or null = automatic. */
|
|
32689
|
+
flagged: string().nullable(),
|
|
32690
|
+
/** The address in use, or null when nothing qualifies (never loopback). */
|
|
32691
|
+
resolved: string().nullable(),
|
|
32692
|
+
source: RoleSourceSchema
|
|
32693
|
+
});
|
|
32694
|
+
var HubAppConnectionsResolutionSchema = object({
|
|
32695
|
+
/** The addresses flagged `appConnections`, or empty = automatic. */
|
|
32696
|
+
flagged: array(string()).readonly(),
|
|
32697
|
+
/** What the apps race right now. */
|
|
32698
|
+
resolved: array(string()).readonly(),
|
|
32699
|
+
source: RoleSourceSchema
|
|
32700
|
+
});
|
|
32701
|
+
var HubAddressBookSchema = object({
|
|
32702
|
+
rows: array(ConnectionEndpointSchema.extend({
|
|
32703
|
+
/** In the hub's detected palette right now. */
|
|
32704
|
+
detected: boolean(),
|
|
32705
|
+
/** Entered by the operator (removable). */
|
|
32706
|
+
custom: boolean(),
|
|
32707
|
+
/** The roles explicitly flagged on this address. */
|
|
32708
|
+
flags: array(HubAddressRoleSchema).readonly(),
|
|
32709
|
+
/** The roles this address serves right now — flagged or automatic. */
|
|
32710
|
+
inUse: array(HubAddressRoleSchema).readonly(),
|
|
32711
|
+
/** The roles this address may be flagged with. */
|
|
32712
|
+
eligible: array(HubAddressRoleSchema).readonly()
|
|
32713
|
+
})).readonly(),
|
|
32714
|
+
roles: object({
|
|
32715
|
+
appConnections: HubAppConnectionsResolutionSchema,
|
|
32716
|
+
notificationTaps: HubAddressRoleResolutionSchema,
|
|
32717
|
+
internal: HubAddressRoleResolutionSchema,
|
|
32718
|
+
publicEndpoint: HubAddressRoleResolutionSchema
|
|
32719
|
+
}),
|
|
32720
|
+
/** The `hub=` an app link carries (D709), or null. */
|
|
32721
|
+
appLinkHub: string().nullable()
|
|
32722
|
+
});
|
|
32260
32723
|
var AllowedAddressesSchema = object({
|
|
32261
32724
|
/**
|
|
32262
32725
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -32300,10 +32763,27 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
32300
32763
|
* tunnel always emits `https://` regardless. */
|
|
32301
32764
|
scheme: _enum(["http", "https"]).optional(),
|
|
32302
32765
|
/** Append the CamStack app link entry (`kind: 'app-link'`, D709) —
|
|
32303
|
-
* an address notification
|
|
32766
|
+
* an address notification taps can be flagged with, not a hub
|
|
32304
32767
|
* route. Default `false`: racers and rankers never see it. */
|
|
32305
32768
|
includeAppLink: boolean().optional()
|
|
32306
|
-
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(
|
|
32769
|
+
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(object({ scheme: _enum(["http", "https"]).optional() }).optional(), HubAddressBookSchema), method(object({
|
|
32770
|
+
baseUrl: string(),
|
|
32771
|
+
label: string().max(80)
|
|
32772
|
+
}), HubAddressBookSchema, {
|
|
32773
|
+
kind: "mutation",
|
|
32774
|
+
auth: "admin"
|
|
32775
|
+
}), method(object({ baseUrl: string() }), HubAddressBookSchema, {
|
|
32776
|
+
kind: "mutation",
|
|
32777
|
+
auth: "admin"
|
|
32778
|
+
}), method(object({
|
|
32779
|
+
role: HubAddressRoleSchema,
|
|
32780
|
+
baseUrl: string().nullable(),
|
|
32781
|
+
enabled: boolean(),
|
|
32782
|
+
acceptInsecureHttp: boolean().optional()
|
|
32783
|
+
}), HubAddressBookSchema, {
|
|
32784
|
+
kind: "mutation",
|
|
32785
|
+
auth: "admin"
|
|
32786
|
+
}), method(_void(), HubAddressesSchema), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" }), method(_void(), TlsStatusSchema), method(object({ reason: string().optional() }), TlsStatusSchema, {
|
|
32307
32787
|
kind: "mutation",
|
|
32308
32788
|
auth: "admin"
|
|
32309
32789
|
}), method(object({
|
|
@@ -39309,6 +39789,16 @@ var zoneRulesCapability = {
|
|
|
39309
39789
|
durability: "restored"
|
|
39310
39790
|
};
|
|
39311
39791
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
39792
|
+
Object.freeze({
|
|
39793
|
+
person: .5,
|
|
39794
|
+
vehicle: .5,
|
|
39795
|
+
animal: .5
|
|
39796
|
+
});
|
|
39797
|
+
Object.freeze({
|
|
39798
|
+
person: .65,
|
|
39799
|
+
vehicle: .65,
|
|
39800
|
+
animal: .65
|
|
39801
|
+
});
|
|
39312
39802
|
/**
|
|
39313
39803
|
* Accessory device helpers — shared across drivers.
|
|
39314
39804
|
*
|
|
@@ -41007,6 +41497,12 @@ Object.freeze({
|
|
|
41007
41497
|
addonId: null,
|
|
41008
41498
|
access: "view"
|
|
41009
41499
|
},
|
|
41500
|
+
"addons.listInstallations": {
|
|
41501
|
+
capName: "addons",
|
|
41502
|
+
capScope: "system",
|
|
41503
|
+
addonId: null,
|
|
41504
|
+
access: "view"
|
|
41505
|
+
},
|
|
41010
41506
|
"addons.listJobs": {
|
|
41011
41507
|
capName: "addons",
|
|
41012
41508
|
capScope: "system",
|
|
@@ -42189,90 +42685,18 @@ Object.freeze({
|
|
|
42189
42685
|
addonId: null,
|
|
42190
42686
|
access: "create"
|
|
42191
42687
|
},
|
|
42192
|
-
"decoder.createSession": {
|
|
42193
|
-
capName: "decoder",
|
|
42194
|
-
capScope: "system",
|
|
42195
|
-
addonId: null,
|
|
42196
|
-
access: "view"
|
|
42197
|
-
},
|
|
42198
|
-
"decoder.destroySession": {
|
|
42199
|
-
capName: "decoder",
|
|
42200
|
-
capScope: "system",
|
|
42201
|
-
addonId: null,
|
|
42202
|
-
access: "delete"
|
|
42203
|
-
},
|
|
42204
|
-
"decoder.getFrame": {
|
|
42205
|
-
capName: "decoder",
|
|
42206
|
-
capScope: "system",
|
|
42207
|
-
addonId: null,
|
|
42208
|
-
access: "view"
|
|
42209
|
-
},
|
|
42210
42688
|
"decoder.getInfo": {
|
|
42211
42689
|
capName: "decoder",
|
|
42212
42690
|
capScope: "system",
|
|
42213
42691
|
addonId: null,
|
|
42214
42692
|
access: "view"
|
|
42215
42693
|
},
|
|
42216
|
-
"decoder.getShmStats": {
|
|
42217
|
-
capName: "decoder",
|
|
42218
|
-
capScope: "system",
|
|
42219
|
-
addonId: null,
|
|
42220
|
-
access: "view"
|
|
42221
|
-
},
|
|
42222
|
-
"decoder.getStats": {
|
|
42223
|
-
capName: "decoder",
|
|
42224
|
-
capScope: "system",
|
|
42225
|
-
addonId: null,
|
|
42226
|
-
access: "view"
|
|
42227
|
-
},
|
|
42228
|
-
"decoder.listActiveSessions": {
|
|
42229
|
-
capName: "decoder",
|
|
42230
|
-
capScope: "system",
|
|
42231
|
-
addonId: null,
|
|
42232
|
-
access: "view"
|
|
42233
|
-
},
|
|
42234
|
-
"decoder.openStream": {
|
|
42235
|
-
capName: "decoder",
|
|
42236
|
-
capScope: "system",
|
|
42237
|
-
addonId: null,
|
|
42238
|
-
access: "view"
|
|
42239
|
-
},
|
|
42240
|
-
"decoder.pullFrames": {
|
|
42241
|
-
capName: "decoder",
|
|
42242
|
-
capScope: "system",
|
|
42243
|
-
addonId: null,
|
|
42244
|
-
access: "view"
|
|
42245
|
-
},
|
|
42246
|
-
"decoder.pullHandles": {
|
|
42247
|
-
capName: "decoder",
|
|
42248
|
-
capScope: "system",
|
|
42249
|
-
addonId: null,
|
|
42250
|
-
access: "view"
|
|
42251
|
-
},
|
|
42252
|
-
"decoder.pushPacket": {
|
|
42253
|
-
capName: "decoder",
|
|
42254
|
-
capScope: "system",
|
|
42255
|
-
addonId: null,
|
|
42256
|
-
access: "view"
|
|
42257
|
-
},
|
|
42258
42694
|
"decoder.reprobeHwaccel": {
|
|
42259
42695
|
capName: "decoder",
|
|
42260
42696
|
capScope: "system",
|
|
42261
42697
|
addonId: null,
|
|
42262
42698
|
access: "create"
|
|
42263
42699
|
},
|
|
42264
|
-
"decoder.supportsCodec": {
|
|
42265
|
-
capName: "decoder",
|
|
42266
|
-
capScope: "system",
|
|
42267
|
-
addonId: null,
|
|
42268
|
-
access: "view"
|
|
42269
|
-
},
|
|
42270
|
-
"decoder.updateConfig": {
|
|
42271
|
-
capName: "decoder",
|
|
42272
|
-
capScope: "system",
|
|
42273
|
-
addonId: null,
|
|
42274
|
-
access: "view"
|
|
42275
|
-
},
|
|
42276
42700
|
"detectionPipeline.applyDeviceSettingsPatch": {
|
|
42277
42701
|
capName: "detection-pipeline",
|
|
42278
42702
|
capScope: "device",
|
|
@@ -43761,12 +44185,24 @@ Object.freeze({
|
|
|
43761
44185
|
addonId: null,
|
|
43762
44186
|
access: "view"
|
|
43763
44187
|
},
|
|
44188
|
+
"localNetwork.addCustomAddress": {
|
|
44189
|
+
capName: "local-network",
|
|
44190
|
+
capScope: "system",
|
|
44191
|
+
addonId: null,
|
|
44192
|
+
access: "create"
|
|
44193
|
+
},
|
|
43764
44194
|
"localNetwork.downloadCa": {
|
|
43765
44195
|
capName: "local-network",
|
|
43766
44196
|
capScope: "system",
|
|
43767
44197
|
addonId: null,
|
|
43768
44198
|
access: "view"
|
|
43769
44199
|
},
|
|
44200
|
+
"localNetwork.getAddresses": {
|
|
44201
|
+
capName: "local-network",
|
|
44202
|
+
capScope: "system",
|
|
44203
|
+
addonId: null,
|
|
44204
|
+
access: "view"
|
|
44205
|
+
},
|
|
43770
44206
|
"localNetwork.getAllowedAddresses": {
|
|
43771
44207
|
capName: "local-network",
|
|
43772
44208
|
capScope: "system",
|
|
@@ -43779,6 +44215,12 @@ Object.freeze({
|
|
|
43779
44215
|
addonId: null,
|
|
43780
44216
|
access: "view"
|
|
43781
44217
|
},
|
|
44218
|
+
"localNetwork.getHubAddresses": {
|
|
44219
|
+
capName: "local-network",
|
|
44220
|
+
capScope: "system",
|
|
44221
|
+
addonId: null,
|
|
44222
|
+
access: "view"
|
|
44223
|
+
},
|
|
43782
44224
|
"localNetwork.getNotificationEndpoint": {
|
|
43783
44225
|
capName: "local-network",
|
|
43784
44226
|
capScope: "system",
|
|
@@ -43815,6 +44257,12 @@ Object.freeze({
|
|
|
43815
44257
|
addonId: null,
|
|
43816
44258
|
access: "create"
|
|
43817
44259
|
},
|
|
44260
|
+
"localNetwork.removeCustomAddress": {
|
|
44261
|
+
capName: "local-network",
|
|
44262
|
+
capScope: "system",
|
|
44263
|
+
addonId: null,
|
|
44264
|
+
access: "delete"
|
|
44265
|
+
},
|
|
43818
44266
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
43819
44267
|
capName: "local-network",
|
|
43820
44268
|
capScope: "system",
|
|
@@ -43827,6 +44275,12 @@ Object.freeze({
|
|
|
43827
44275
|
addonId: null,
|
|
43828
44276
|
access: "create"
|
|
43829
44277
|
},
|
|
44278
|
+
"localNetwork.setAddressRole": {
|
|
44279
|
+
capName: "local-network",
|
|
44280
|
+
capScope: "system",
|
|
44281
|
+
addonId: null,
|
|
44282
|
+
access: "create"
|
|
44283
|
+
},
|
|
43830
44284
|
"localNetwork.setAllowedAddresses": {
|
|
43831
44285
|
capName: "local-network",
|
|
43832
44286
|
capScope: "system",
|
|
@@ -45321,13 +45775,13 @@ Object.freeze({
|
|
|
45321
45775
|
addonId: null,
|
|
45322
45776
|
access: "delete"
|
|
45323
45777
|
},
|
|
45324
|
-
"pipelineExecutor.
|
|
45778
|
+
"pipelineExecutor.clearModelBoundDeviceOverrides": {
|
|
45325
45779
|
capName: "pipeline-executor",
|
|
45326
45780
|
capScope: "system",
|
|
45327
45781
|
addonId: null,
|
|
45328
45782
|
access: "delete"
|
|
45329
45783
|
},
|
|
45330
|
-
"pipelineExecutor.
|
|
45784
|
+
"pipelineExecutor.deleteModel": {
|
|
45331
45785
|
capName: "pipeline-executor",
|
|
45332
45786
|
capScope: "system",
|
|
45333
45787
|
addonId: null,
|
|
@@ -45471,12 +45925,6 @@ Object.freeze({
|
|
|
45471
45925
|
addonId: null,
|
|
45472
45926
|
access: "view"
|
|
45473
45927
|
},
|
|
45474
|
-
"pipelineExecutor.listTemplates": {
|
|
45475
|
-
capName: "pipeline-executor",
|
|
45476
|
-
capScope: "system",
|
|
45477
|
-
addonId: null,
|
|
45478
|
-
access: "view"
|
|
45479
|
-
},
|
|
45480
45928
|
"pipelineExecutor.rearmInferenceDevice": {
|
|
45481
45929
|
capName: "pipeline-executor",
|
|
45482
45930
|
capScope: "system",
|
|
@@ -45501,12 +45949,6 @@ Object.freeze({
|
|
|
45501
45949
|
addonId: null,
|
|
45502
45950
|
access: "create"
|
|
45503
45951
|
},
|
|
45504
|
-
"pipelineExecutor.saveTemplate": {
|
|
45505
|
-
capName: "pipeline-executor",
|
|
45506
|
-
capScope: "system",
|
|
45507
|
-
addonId: null,
|
|
45508
|
-
access: "create"
|
|
45509
|
-
},
|
|
45510
45952
|
"pipelineExecutor.setVideoPipelineSteps": {
|
|
45511
45953
|
capName: "pipeline-executor",
|
|
45512
45954
|
capScope: "system",
|
|
@@ -45525,41 +45967,35 @@ Object.freeze({
|
|
|
45525
45967
|
addonId: null,
|
|
45526
45968
|
access: "create"
|
|
45527
45969
|
},
|
|
45528
|
-
"pipelineExecutor.updateTemplate": {
|
|
45529
|
-
capName: "pipeline-executor",
|
|
45530
|
-
capScope: "system",
|
|
45531
|
-
addonId: null,
|
|
45532
|
-
access: "create"
|
|
45533
|
-
},
|
|
45534
45970
|
"pipelineExecutor.validatePipeline": {
|
|
45535
45971
|
capName: "pipeline-executor",
|
|
45536
45972
|
capScope: "system",
|
|
45537
45973
|
addonId: null,
|
|
45538
45974
|
access: "view"
|
|
45539
45975
|
},
|
|
45540
|
-
"pipelineOrchestrator.
|
|
45976
|
+
"pipelineOrchestrator.applyAutoTune": {
|
|
45541
45977
|
capName: "pipeline-orchestrator",
|
|
45542
45978
|
capScope: "system",
|
|
45543
45979
|
addonId: null,
|
|
45544
45980
|
access: "create"
|
|
45545
45981
|
},
|
|
45546
|
-
"pipelineOrchestrator.
|
|
45982
|
+
"pipelineOrchestrator.applyDeviceSettingsPatch": {
|
|
45547
45983
|
capName: "pipeline-orchestrator",
|
|
45548
45984
|
capScope: "system",
|
|
45549
45985
|
addonId: null,
|
|
45550
45986
|
access: "create"
|
|
45551
45987
|
},
|
|
45552
|
-
"pipelineOrchestrator.
|
|
45988
|
+
"pipelineOrchestrator.assignAudio": {
|
|
45553
45989
|
capName: "pipeline-orchestrator",
|
|
45554
45990
|
capScope: "system",
|
|
45555
45991
|
addonId: null,
|
|
45556
45992
|
access: "create"
|
|
45557
45993
|
},
|
|
45558
|
-
"pipelineOrchestrator.
|
|
45994
|
+
"pipelineOrchestrator.assignPipeline": {
|
|
45559
45995
|
capName: "pipeline-orchestrator",
|
|
45560
45996
|
capScope: "system",
|
|
45561
45997
|
addonId: null,
|
|
45562
|
-
access: "
|
|
45998
|
+
access: "create"
|
|
45563
45999
|
},
|
|
45564
46000
|
"pipelineOrchestrator.getAgentLoad": {
|
|
45565
46001
|
capName: "pipeline-orchestrator",
|
|
@@ -45651,6 +46087,12 @@ Object.freeze({
|
|
|
45651
46087
|
addonId: null,
|
|
45652
46088
|
access: "view"
|
|
45653
46089
|
},
|
|
46090
|
+
"pipelineOrchestrator.getEffectiveShares": {
|
|
46091
|
+
capName: "pipeline-orchestrator",
|
|
46092
|
+
capScope: "system",
|
|
46093
|
+
addonId: null,
|
|
46094
|
+
access: "view"
|
|
46095
|
+
},
|
|
45654
46096
|
"pipelineOrchestrator.getGlobalMetrics": {
|
|
45655
46097
|
capName: "pipeline-orchestrator",
|
|
45656
46098
|
capScope: "system",
|
|
@@ -45687,19 +46129,19 @@ Object.freeze({
|
|
|
45687
46129
|
addonId: null,
|
|
45688
46130
|
access: "view"
|
|
45689
46131
|
},
|
|
45690
|
-
"pipelineOrchestrator.
|
|
46132
|
+
"pipelineOrchestrator.getPlacementStats": {
|
|
45691
46133
|
capName: "pipeline-orchestrator",
|
|
45692
46134
|
capScope: "system",
|
|
45693
46135
|
addonId: null,
|
|
45694
46136
|
access: "view"
|
|
45695
46137
|
},
|
|
45696
|
-
"pipelineOrchestrator.
|
|
46138
|
+
"pipelineOrchestrator.getReconcileFromDiskStatus": {
|
|
45697
46139
|
capName: "pipeline-orchestrator",
|
|
45698
46140
|
capScope: "system",
|
|
45699
46141
|
addonId: null,
|
|
45700
46142
|
access: "view"
|
|
45701
46143
|
},
|
|
45702
|
-
"pipelineOrchestrator.
|
|
46144
|
+
"pipelineOrchestrator.listAgentSettings": {
|
|
45703
46145
|
capName: "pipeline-orchestrator",
|
|
45704
46146
|
capScope: "system",
|
|
45705
46147
|
addonId: null,
|
|
@@ -45711,6 +46153,12 @@ Object.freeze({
|
|
|
45711
46153
|
addonId: null,
|
|
45712
46154
|
access: "create"
|
|
45713
46155
|
},
|
|
46156
|
+
"pipelineOrchestrator.planAutoTune": {
|
|
46157
|
+
capName: "pipeline-orchestrator",
|
|
46158
|
+
capScope: "system",
|
|
46159
|
+
addonId: null,
|
|
46160
|
+
access: "view"
|
|
46161
|
+
},
|
|
45714
46162
|
"pipelineOrchestrator.rebalance": {
|
|
45715
46163
|
capName: "pipeline-orchestrator",
|
|
45716
46164
|
capScope: "system",
|
|
@@ -45753,12 +46201,6 @@ Object.freeze({
|
|
|
45753
46201
|
addonId: null,
|
|
45754
46202
|
access: "create"
|
|
45755
46203
|
},
|
|
45756
|
-
"pipelineOrchestrator.saveTemplate": {
|
|
45757
|
-
capName: "pipeline-orchestrator",
|
|
45758
|
-
capScope: "system",
|
|
45759
|
-
addonId: null,
|
|
45760
|
-
access: "create"
|
|
45761
|
-
},
|
|
45762
46204
|
"pipelineOrchestrator.setAgentCapabilities": {
|
|
45763
46205
|
capName: "pipeline-orchestrator",
|
|
45764
46206
|
capScope: "system",
|
|
@@ -45771,12 +46213,6 @@ Object.freeze({
|
|
|
45771
46213
|
addonId: null,
|
|
45772
46214
|
access: "create"
|
|
45773
46215
|
},
|
|
45774
|
-
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
45775
|
-
capName: "pipeline-orchestrator",
|
|
45776
|
-
capScope: "system",
|
|
45777
|
-
addonId: null,
|
|
45778
|
-
access: "create"
|
|
45779
|
-
},
|
|
45780
46216
|
"pipelineOrchestrator.setAgentInferenceDevices": {
|
|
45781
46217
|
capName: "pipeline-orchestrator",
|
|
45782
46218
|
capScope: "system",
|
|
@@ -45813,6 +46249,12 @@ Object.freeze({
|
|
|
45813
46249
|
addonId: null,
|
|
45814
46250
|
access: "create"
|
|
45815
46251
|
},
|
|
46252
|
+
"pipelineOrchestrator.setCameraStepSettings": {
|
|
46253
|
+
capName: "pipeline-orchestrator",
|
|
46254
|
+
capScope: "system",
|
|
46255
|
+
addonId: null,
|
|
46256
|
+
access: "create"
|
|
46257
|
+
},
|
|
45816
46258
|
"pipelineOrchestrator.setCameraStepToggle": {
|
|
45817
46259
|
capName: "pipeline-orchestrator",
|
|
45818
46260
|
capScope: "system",
|
|
@@ -45831,25 +46273,37 @@ Object.freeze({
|
|
|
45831
46273
|
addonId: null,
|
|
45832
46274
|
access: "create"
|
|
45833
46275
|
},
|
|
46276
|
+
"pipelineOrchestrator.setLoadBalancingShares": {
|
|
46277
|
+
capName: "pipeline-orchestrator",
|
|
46278
|
+
capScope: "system",
|
|
46279
|
+
addonId: null,
|
|
46280
|
+
access: "create"
|
|
46281
|
+
},
|
|
45834
46282
|
"pipelineOrchestrator.setPipelineDevicePin": {
|
|
45835
46283
|
capName: "pipeline-orchestrator",
|
|
45836
46284
|
capScope: "system",
|
|
45837
46285
|
addonId: null,
|
|
45838
46286
|
access: "create"
|
|
45839
46287
|
},
|
|
45840
|
-
"pipelineOrchestrator.
|
|
46288
|
+
"pipelineOrchestrator.setShareSource": {
|
|
45841
46289
|
capName: "pipeline-orchestrator",
|
|
45842
46290
|
capScope: "system",
|
|
45843
46291
|
addonId: null,
|
|
45844
46292
|
access: "create"
|
|
45845
46293
|
},
|
|
45846
|
-
"pipelineOrchestrator.
|
|
46294
|
+
"pipelineOrchestrator.suggestShares": {
|
|
46295
|
+
capName: "pipeline-orchestrator",
|
|
46296
|
+
capScope: "system",
|
|
46297
|
+
addonId: null,
|
|
46298
|
+
access: "view"
|
|
46299
|
+
},
|
|
46300
|
+
"pipelineOrchestrator.unassignAudio": {
|
|
45847
46301
|
capName: "pipeline-orchestrator",
|
|
45848
46302
|
capScope: "system",
|
|
45849
46303
|
addonId: null,
|
|
45850
46304
|
access: "create"
|
|
45851
46305
|
},
|
|
45852
|
-
"pipelineOrchestrator.
|
|
46306
|
+
"pipelineOrchestrator.unassignPipeline": {
|
|
45853
46307
|
capName: "pipeline-orchestrator",
|
|
45854
46308
|
capScope: "system",
|
|
45855
46309
|
addonId: null,
|
|
@@ -47289,12 +47743,6 @@ Object.freeze({
|
|
|
47289
47743
|
addonId: null,
|
|
47290
47744
|
access: "view"
|
|
47291
47745
|
},
|
|
47292
|
-
"streamBroker.pullFrameHandles": {
|
|
47293
|
-
capName: "stream-broker",
|
|
47294
|
-
capScope: "system",
|
|
47295
|
-
addonId: null,
|
|
47296
|
-
access: "view"
|
|
47297
|
-
},
|
|
47298
47746
|
"streamBroker.regenerateRtspToken": {
|
|
47299
47747
|
capName: "stream-broker",
|
|
47300
47748
|
capScope: "system",
|
|
@@ -47361,12 +47809,6 @@ Object.freeze({
|
|
|
47361
47809
|
addonId: null,
|
|
47362
47810
|
access: "create"
|
|
47363
47811
|
},
|
|
47364
|
-
"streamBroker.subscribeFrames": {
|
|
47365
|
-
capName: "stream-broker",
|
|
47366
|
-
capScope: "system",
|
|
47367
|
-
addonId: null,
|
|
47368
|
-
access: "create"
|
|
47369
|
-
},
|
|
47370
47812
|
"streamBroker.unassignProfile": {
|
|
47371
47813
|
capName: "stream-broker",
|
|
47372
47814
|
capScope: "system",
|
|
@@ -47379,12 +47821,6 @@ Object.freeze({
|
|
|
47379
47821
|
addonId: null,
|
|
47380
47822
|
access: "create"
|
|
47381
47823
|
},
|
|
47382
|
-
"streamBroker.unsubscribeFrames": {
|
|
47383
|
-
capName: "stream-broker",
|
|
47384
|
-
capScope: "system",
|
|
47385
|
-
addonId: null,
|
|
47386
|
-
access: "create"
|
|
47387
|
-
},
|
|
47388
47824
|
"streamCatalog.getCatalog": {
|
|
47389
47825
|
capName: "stream-catalog",
|
|
47390
47826
|
capScope: "device",
|
|
@@ -48081,6 +48517,12 @@ Object.freeze({
|
|
|
48081
48517
|
addonId: null,
|
|
48082
48518
|
access: "create"
|
|
48083
48519
|
},
|
|
48520
|
+
"webrtcSession.applyDownlinkProbe": {
|
|
48521
|
+
capName: "webrtc-session",
|
|
48522
|
+
capScope: "device",
|
|
48523
|
+
addonId: null,
|
|
48524
|
+
access: "create"
|
|
48525
|
+
},
|
|
48084
48526
|
"webrtcSession.closeSession": {
|
|
48085
48527
|
capName: "webrtc-session",
|
|
48086
48528
|
capScope: "device",
|
|
@@ -49892,11 +50334,6 @@ Object.freeze({
|
|
|
49892
50334
|
form: "single",
|
|
49893
50335
|
optional: false
|
|
49894
50336
|
}],
|
|
49895
|
-
"decoder.createSession": [{
|
|
49896
|
-
name: "deviceId",
|
|
49897
|
-
form: "single",
|
|
49898
|
-
optional: true
|
|
49899
|
-
}],
|
|
49900
50337
|
"detectionPipeline.applyDeviceSettingsPatch": [{
|
|
49901
50338
|
name: "deviceId",
|
|
49902
50339
|
form: "single",
|
|
@@ -51127,6 +51564,11 @@ Object.freeze({
|
|
|
51127
51564
|
form: "single",
|
|
51128
51565
|
optional: false
|
|
51129
51566
|
}],
|
|
51567
|
+
"pipelineExecutor.clearModelBoundDeviceOverrides": [{
|
|
51568
|
+
name: "deviceIds",
|
|
51569
|
+
form: "array",
|
|
51570
|
+
optional: true
|
|
51571
|
+
}],
|
|
51130
51572
|
"pipelineExecutor.runPipeline": [{
|
|
51131
51573
|
name: "deviceId",
|
|
51132
51574
|
form: "single",
|
|
@@ -51232,6 +51674,11 @@ Object.freeze({
|
|
|
51232
51674
|
form: "single",
|
|
51233
51675
|
optional: false
|
|
51234
51676
|
}],
|
|
51677
|
+
"pipelineOrchestrator.setCameraStepSettings": [{
|
|
51678
|
+
name: "deviceId",
|
|
51679
|
+
form: "single",
|
|
51680
|
+
optional: false
|
|
51681
|
+
}],
|
|
51235
51682
|
"pipelineOrchestrator.setCameraStepToggle": [{
|
|
51236
51683
|
name: "deviceId",
|
|
51237
51684
|
form: "single",
|
|
@@ -52003,6 +52450,11 @@ Object.freeze({
|
|
|
52003
52450
|
form: "single",
|
|
52004
52451
|
optional: false
|
|
52005
52452
|
}],
|
|
52453
|
+
"webrtcSession.applyDownlinkProbe": [{
|
|
52454
|
+
name: "deviceId",
|
|
52455
|
+
form: "single",
|
|
52456
|
+
optional: false
|
|
52457
|
+
}],
|
|
52006
52458
|
"webrtcSession.closeSession": [{
|
|
52007
52459
|
name: "deviceId",
|
|
52008
52460
|
form: "single",
|
|
@@ -52536,7 +52988,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
52536
52988
|
{
|
|
52537
52989
|
name: "summarySection",
|
|
52538
52990
|
label: "Summary: this section",
|
|
52539
|
-
description: "The section a per-section summary row is about
|
|
52991
|
+
description: "The section a per-section summary row is about; on a summary sent as one message, every section it reports, comma-separated.",
|
|
52540
52992
|
example: "Batterie scariche",
|
|
52541
52993
|
group: "system",
|
|
52542
52994
|
families: ["rule"],
|