@camstack/addon-pipeline 1.2.341 → 1.2.343
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/audio-analyzer/index.js +5 -4
- package/dist/audio-analyzer/index.mjs +5 -4
- package/dist/{custom-model-catalog-CoJEC8nz.js → custom-model-catalog-CC8vgYZ8.js} +3 -3
- package/dist/{custom-model-catalog-DNSmyZTT.mjs → custom-model-catalog-m7EBV9wu.mjs} +3 -3
- package/dist/detection-pipeline/index.js +4 -118
- package/dist/detection-pipeline/index.mjs +4 -118
- package/dist/{dist-B8oPeJDI.mjs → dist-BAHBDujp.mjs} +257 -654
- package/dist/{dist-PiNPe8uQ.js → dist-BwipY6K1.js} +256 -659
- package/dist/{model-catalogs-RM3pkuZm.mjs → model-catalogs-CUU_L1ec.mjs} +1 -1
- package/dist/{model-catalogs-CEphd9Va.js → model-catalogs-Dotb1OFs.js} +1 -1
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/{node-CMTBIa3-.js → node-BHYEkNaS.js} +1 -1
- package/dist/{node-DFUmMJ_f.mjs → node-BPwelwyj.mjs} +1 -1
- package/dist/pipeline-runner/index.js +11 -13
- package/dist/pipeline-runner/index.mjs +11 -13
- package/dist/{process-memory-CzAfDP9P.js → process-memory-BRCKXa-P.js} +1 -1
- package/dist/{process-memory-C4v8DBKn.mjs → process-memory-_8o1iZnL.mjs} +1 -1
- package/dist/recorder/index.js +14 -16
- package/dist/recorder/index.mjs +14 -16
- package/dist/{segment-demux-js-CIpCdbx4.mjs → segment-demux-js-DK8jbZy6.mjs} +1 -1
- package/dist/{segment-demux-js-C-n_ZsMK.js → segment-demux-js-DveVPFl9.js} +1 -1
- package/dist/stream-broker/_stub.js +48 -130
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CIDS0Tr9.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CF-T-9YU.mjs} +3 -3
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BUfCTcDV.mjs +26 -0
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-uAQqU5lv.mjs +26 -0
- package/dist/stream-broker/demux-worker-child.js +1 -1
- package/dist/stream-broker/demux-worker-child.mjs +1 -1
- package/dist/stream-broker/{hostInit-CW_cmeNQ.mjs → hostInit-C6jr8fSt.mjs} +3 -3
- package/dist/stream-broker/index.js +49 -1693
- package/dist/stream-broker/index.mjs +54 -1696
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/package.json +1 -6
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BvfT5BVP.mjs +0 -26
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-LU_e-xJm.mjs +0 -26
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
//#region ../types/dist/event-category-
|
|
2
|
+
//#region ../types/dist/event-category-B_0XEcLF.mjs
|
|
3
3
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4
4
|
EventCategory["SystemBoot"] = "system.boot";
|
|
5
5
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -500,15 +500,6 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
500
500
|
EventCategory["AgentWsDisconnected"] = "agent.ws.disconnected";
|
|
501
501
|
EventCategory["AgentBackupActivated"] = "agent.backup.activated";
|
|
502
502
|
EventCategory["OrchestrationSettingsUpdated"] = "orchestration.settings-updated";
|
|
503
|
-
/**
|
|
504
|
-
* Per-agent hwaccel preference changed (user override set, cleared, or
|
|
505
|
-
* re-probed). Observability event — decoders pull the current pref at
|
|
506
|
-
* `createSession`, so running sessions keep their current backend until
|
|
507
|
-
* they rotate naturally (camera add/remove, stream restart). Future
|
|
508
|
-
* work can wire a listener in stream-broker that force-rotates live
|
|
509
|
-
* sessions; for now this event powers logs + admin-UI toast feedback.
|
|
510
|
-
*/
|
|
511
|
-
EventCategory["PipelineAgentHwaccelChanged"] = "pipeline.agent-hwaccel-changed";
|
|
512
503
|
EventCategory["MotionAnalysis"] = "detection.motion-analysis";
|
|
513
504
|
/** All raw motion zones from CCL before minArea filter — for UI debug overlay. */
|
|
514
505
|
EventCategory["MotionZonesRaw"] = "detection.motion-zones-raw";
|
|
@@ -5379,7 +5370,7 @@ var ZodIssueCode = {
|
|
|
5379
5370
|
var ZodFirstPartyTypeKind;
|
|
5380
5371
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5381
5372
|
//#endregion
|
|
5382
|
-
//#region ../types/dist/sleep-
|
|
5373
|
+
//#region ../types/dist/sleep-BNeXenvr.mjs
|
|
5383
5374
|
/**
|
|
5384
5375
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5385
5376
|
* window to float samples (D455).
|
|
@@ -6857,32 +6848,12 @@ object({
|
|
|
6857
6848
|
audioCodec: string().optional(),
|
|
6858
6849
|
metadata: record(string(), unknown()).readonly().optional()
|
|
6859
6850
|
});
|
|
6860
|
-
var EncodedPacketSchema = object({
|
|
6861
|
-
type: _enum(["video", "audio"]),
|
|
6862
|
-
data: _instanceof(Uint8Array),
|
|
6863
|
-
pts: number(),
|
|
6864
|
-
dts: number(),
|
|
6865
|
-
keyframe: boolean(),
|
|
6866
|
-
codec: string()
|
|
6867
|
-
});
|
|
6868
|
-
var DecodedFrameSchema = object({
|
|
6869
|
-
data: _instanceof(Uint8Array),
|
|
6870
|
-
width: number(),
|
|
6871
|
-
height: number(),
|
|
6872
|
-
format: _enum([
|
|
6873
|
-
"jpeg",
|
|
6874
|
-
"rgb",
|
|
6875
|
-
"bgr",
|
|
6876
|
-
"yuv420",
|
|
6877
|
-
"gray"
|
|
6878
|
-
]),
|
|
6879
|
-
timestamp: number()
|
|
6880
|
-
});
|
|
6881
6851
|
/**
|
|
6882
6852
|
* Wire schema for `FrameHandle` — a zero-pixel, serialisable reference to a
|
|
6883
6853
|
* frame in a shared-memory ring (Phase 5 / D9). Mirrors the `FrameHandle` TS
|
|
6884
|
-
* interface in `interfaces/frame-handle.ts` field-for-field so a
|
|
6885
|
-
*
|
|
6854
|
+
* interface in `interfaces/frame-handle.ts` field-for-field so a cap method
|
|
6855
|
+
* (the runner's native-crop and pipeline-executor inputs) can carry handles
|
|
6856
|
+
* over tRPC / Moleculer.
|
|
6886
6857
|
*
|
|
6887
6858
|
* The `satisfies` assertion below pins this schema to the interface: if a
|
|
6888
6859
|
* field is added to / removed from `FrameHandle` without a matching schema
|
|
@@ -6908,50 +6879,6 @@ var FrameHandleSchema = object({
|
|
|
6908
6879
|
slotCount: number().int().positive()
|
|
6909
6880
|
});
|
|
6910
6881
|
/**
|
|
6911
|
-
* Pixel format a frame-handle subscriber can request from the broker
|
|
6912
|
-
* (Phase 5 / D9). The packed, raster subset of `FrameFormat` — the formats a
|
|
6913
|
-
* `frameSink: 'shm'` decoder session can write into a `FrameRing` slot.
|
|
6914
|
-
* `jpeg` is excluded: a variable-length stream is not a fixed-stride ring
|
|
6915
|
-
* payload, and no decoded-frame consumer requests it over the shm plane.
|
|
6916
|
-
*/
|
|
6917
|
-
var FrameHandleFormatSchema = _enum([
|
|
6918
|
-
"rgb",
|
|
6919
|
-
"bgr",
|
|
6920
|
-
"yuv420",
|
|
6921
|
-
"gray"
|
|
6922
|
-
]);
|
|
6923
|
-
/**
|
|
6924
|
-
* Input for `stream-broker.subscribeFrames` (Phase 5 / D9). A consumer asks the
|
|
6925
|
-
* broker for a `FrameHandle` stream of one `format`; the broker maintains one
|
|
6926
|
-
* shared-memory ring per `(brokerId, format)` actually requested, so a `gray`
|
|
6927
|
-
* subscriber (motion) and an `rgb` subscriber (detection) each read the format
|
|
6928
|
-
* they asked for with no broker-side conversion.
|
|
6929
|
-
*/
|
|
6930
|
-
var SubscribeFramesInputSchema = object({
|
|
6931
|
-
brokerId: string(),
|
|
6932
|
-
format: FrameHandleFormatSchema,
|
|
6933
|
-
/**
|
|
6934
|
-
* Optional reader-side cadence hint in frames per second. The broker does
|
|
6935
|
-
* NOT throttle — latest-wins ring reads drop frames implicitly for a slow
|
|
6936
|
-
* consumer. The value is echoed back in `SubscribeFramesResult.maxFps` so
|
|
6937
|
-
* the consumer can pace its own `pullFrameHandles` polling.
|
|
6938
|
-
*/
|
|
6939
|
-
maxFps: number().positive().optional(),
|
|
6940
|
-
/** Short caller-identity tag (`motion`, `detection`, …) for diagnostics. */
|
|
6941
|
-
tag: string().optional()
|
|
6942
|
-
});
|
|
6943
|
-
/**
|
|
6944
|
-
* Result of `stream-broker.subscribeFrames`. The consumer then polls
|
|
6945
|
-
* `pullFrameHandles({ subscriptionId, maxCount })` and feeds each returned
|
|
6946
|
-
* `FrameHandle` to a `FrameRingReader`.
|
|
6947
|
-
*/
|
|
6948
|
-
var SubscribeFramesResultSchema = object({
|
|
6949
|
-
/** Opaque id the consumer passes to `pullFrameHandles` / `unsubscribeFrames`. */
|
|
6950
|
-
subscriptionId: string(),
|
|
6951
|
-
/** Reader-side cadence hint (frames/s) — echoes `SubscribeFramesInput.maxFps`. */
|
|
6952
|
-
maxFps: number().nonnegative()
|
|
6953
|
-
});
|
|
6954
|
-
/**
|
|
6955
6882
|
* Wire schema for a decoded audio chunk (Phase 5 / D9). Mirrors the
|
|
6956
6883
|
* `DecodedAudioChunk` TS interface in `interfaces/stream-broker.ts`: PCM
|
|
6957
6884
|
* sample bytes plus the track parameters a consumer needs to interpret them.
|
|
@@ -6959,8 +6886,8 @@ var SubscribeFramesResultSchema = object({
|
|
|
6959
6886
|
* Audio chunks are tiny (a ~500ms AudioCodecSession window is a few KB of
|
|
6960
6887
|
* Float32 PCM), so unlike video frames they ship their bytes INLINE over
|
|
6961
6888
|
* tRPC / Moleculer — no shared-memory plane. `data` is typed `Uint8Array`
|
|
6962
|
-
* (the wire-serialisable supertype of `Buffer`)
|
|
6963
|
-
*
|
|
6889
|
+
* (the wire-serialisable supertype of `Buffer`); a `Buffer` is assignable to
|
|
6890
|
+
* it.
|
|
6964
6891
|
*/
|
|
6965
6892
|
var AudioChunkFormatSchema = _enum(AUDIO_CHUNK_FORMATS);
|
|
6966
6893
|
var DecodedAudioChunkSchema = object({
|
|
@@ -6978,11 +6905,10 @@ var DecodedAudioChunkSchema = object({
|
|
|
6978
6905
|
format: AudioChunkFormatSchema.optional()
|
|
6979
6906
|
});
|
|
6980
6907
|
/**
|
|
6981
|
-
* Input for `stream-broker.subscribeAudioChunks` (Phase 5 / D9).
|
|
6982
|
-
*
|
|
6983
|
-
*
|
|
6984
|
-
*
|
|
6985
|
-
* `pullAudioChunks`.
|
|
6908
|
+
* Input for `stream-broker.subscribeAudioChunks` (Phase 5 / D9). Audio ships
|
|
6909
|
+
* its bytes inline: a consumer asks the broker for the decoded audio-chunk
|
|
6910
|
+
* stream of one broker; the broker keeps a per-subscription bounded FIFO queue
|
|
6911
|
+
* the consumer drains via `pullAudioChunks`.
|
|
6986
6912
|
*/
|
|
6987
6913
|
var SubscribeAudioChunksInputSchema = object({
|
|
6988
6914
|
brokerId: string(),
|
|
@@ -7013,9 +6939,7 @@ var BrokerStatsSchema = object({
|
|
|
7013
6939
|
"stopped"
|
|
7014
6940
|
]),
|
|
7015
6941
|
inputFps: number(),
|
|
7016
|
-
decodeFps: number(),
|
|
7017
6942
|
encodedSubscribers: number(),
|
|
7018
|
-
decodedSubscribers: number(),
|
|
7019
6943
|
uptimeMs: number(),
|
|
7020
6944
|
bitrateKbps: number(),
|
|
7021
6945
|
idrIntervalMs: number(),
|
|
@@ -7028,14 +6952,6 @@ var BrokerStatsSchema = object({
|
|
|
7028
6952
|
preBufferMs: number(),
|
|
7029
6953
|
preBufferPackets: number(),
|
|
7030
6954
|
/**
|
|
7031
|
-
* Moleculer node id of the decoder provider currently servicing this
|
|
7032
|
-
* stream's decoded subscribers. `null` until the deferred decoder is
|
|
7033
|
-
* created (no decoded clients yet, or codec not detected). Surfaces the
|
|
7034
|
-
* runtime decoder placement so the UI can show "Decoder: <agent>" without
|
|
7035
|
-
* a separate cap call per broker.
|
|
7036
|
-
*/
|
|
7037
|
-
decoderNodeId: string().nullable(),
|
|
7038
|
-
/**
|
|
7039
6955
|
* Detected audio track parameters from the RTSP DESCRIBE / SDP. `null`
|
|
7040
6956
|
* when the stream has no audio track or the broker is in cold start.
|
|
7041
6957
|
* `supported = false` means the codec was detected but the local
|
|
@@ -7356,26 +7272,6 @@ var BOOT_RECOVERY_BACKOFF_MS = [
|
|
|
7356
7272
|
90 * 6e4
|
|
7357
7273
|
];
|
|
7358
7274
|
/**
|
|
7359
|
-
* Type-safe JSON parsing helpers.
|
|
7360
|
-
*
|
|
7361
|
-
* `JSON.parse` is typed as `any` in lib.es5.d.ts, which triggers
|
|
7362
|
-
* `no-unsafe-*` ESLint rules and destroys downstream inference. These
|
|
7363
|
-
* wrappers return `unknown` — callers narrow structurally via type
|
|
7364
|
-
* guards, `typeof` checks, or helpers like `asRecord`/`asString`.
|
|
7365
|
-
*/
|
|
7366
|
-
/**
|
|
7367
|
-
* Parse JSON and return it as `unknown` — the only entry point for untrusted JSON.
|
|
7368
|
-
*
|
|
7369
|
-
* The optional generic overload `parseJsonUnknown<T>(text)` returns `T` for
|
|
7370
|
-
* call sites that know the shape at parse time (e.g. MQTT payloads with a
|
|
7371
|
-
* known protocol schema). This is a **type-level bridge only** — no runtime
|
|
7372
|
-
* validation is performed. Callers that need runtime validation should parse
|
|
7373
|
-
* as `unknown` and narrow via Zod or structural guards.
|
|
7374
|
-
*/
|
|
7375
|
-
function parseJsonUnknown(text) {
|
|
7376
|
-
return JSON.parse(text);
|
|
7377
|
-
}
|
|
7378
|
-
/**
|
|
7379
7275
|
* Promise-based timer helpers — used everywhere the codebase needs to
|
|
7380
7276
|
* wait, back off, or schedule a retry. Before these helpers landed, each
|
|
7381
7277
|
* call site re-implemented `new Promise(r => setTimeout(r, ms))` inline,
|
|
@@ -12029,70 +11925,6 @@ var StorageLocationDeclarationSchema = object({
|
|
|
12029
11925
|
"backup"
|
|
12030
11926
|
]).optional()
|
|
12031
11927
|
});
|
|
12032
|
-
var DecoderStatsSchema = object({
|
|
12033
|
-
inputFps: number(),
|
|
12034
|
-
outputFps: number(),
|
|
12035
|
-
avgDecodeTimeMs: number(),
|
|
12036
|
-
droppedFrames: number(),
|
|
12037
|
-
/**
|
|
12038
|
-
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
12039
|
-
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
12040
|
-
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
12041
|
-
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
12042
|
-
*/
|
|
12043
|
-
lagMs: number().optional(),
|
|
12044
|
-
effectiveFps: number().optional(),
|
|
12045
|
-
adaptiveFps: number().optional()
|
|
12046
|
-
});
|
|
12047
|
-
var DecoderSessionConfigSchema = object({
|
|
12048
|
-
codec: string(),
|
|
12049
|
-
maxFps: number().default(0),
|
|
12050
|
-
outputFormat: _enum([
|
|
12051
|
-
"jpeg",
|
|
12052
|
-
"rgb",
|
|
12053
|
-
"bgr",
|
|
12054
|
-
"yuv420",
|
|
12055
|
-
"gray"
|
|
12056
|
-
]).default("jpeg"),
|
|
12057
|
-
scale: number().default(1),
|
|
12058
|
-
width: number().optional(),
|
|
12059
|
-
height: number().optional(),
|
|
12060
|
-
/**
|
|
12061
|
-
* Identifier of the camera this decoder session serves. Optional
|
|
12062
|
-
* because the cap is generic (any caller could request decode), but
|
|
12063
|
-
* stream-broker passes it so decoder logs include `deviceId` for
|
|
12064
|
-
* per-camera filtering when diagnosing failures (e.g. node-av
|
|
12065
|
-
* sendPacket errors on a single hung camera).
|
|
12066
|
-
*/
|
|
12067
|
-
deviceId: number().int().nonnegative().optional(),
|
|
12068
|
-
/**
|
|
12069
|
-
* Free-form tag for log scoping. Stream-broker uses
|
|
12070
|
-
* `broker:<deviceId>/<profile>`. Decoder session logger surfaces it
|
|
12071
|
-
* on every line so `grep tag=broker:5/high` filters one camera
|
|
12072
|
-
* profile cleanly.
|
|
12073
|
-
*/
|
|
12074
|
-
tag: string().optional(),
|
|
12075
|
-
/**
|
|
12076
|
-
* Where the session delivers decoded frames (Phase 5 / D9):
|
|
12077
|
-
*
|
|
12078
|
-
* - `'callback'` (default) — the legacy pixel path: decoded frames are
|
|
12079
|
-
* buffered as `DecodedFrame`s and drained via `pullFrames`.
|
|
12080
|
-
* - `'shm'` — the shared-memory frame plane: decoded frames are written
|
|
12081
|
-
* into an OS shared-memory ring and drained as zero-pixel
|
|
12082
|
-
* `FrameHandle`s via `pullHandles`. A session is one mode or the
|
|
12083
|
-
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
12084
|
-
* `pullHandles` returns nothing for a `'callback'` session.
|
|
12085
|
-
*/
|
|
12086
|
-
frameSink: _enum(["callback", "shm"]).default("callback"),
|
|
12087
|
-
/**
|
|
12088
|
-
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
12089
|
-
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
12090
|
-
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
12091
|
-
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
12092
|
-
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
12093
|
-
*/
|
|
12094
|
-
debug: boolean().optional()
|
|
12095
|
-
});
|
|
12096
11928
|
/**
|
|
12097
11929
|
* Per-component log CHANNELS — the gate a hot path consults, and the registry
|
|
12098
11930
|
* an addon declares its channels in.
|
|
@@ -15015,13 +14847,6 @@ var BrokerRtspClientSchema = object({
|
|
|
15015
14847
|
lastRtpAt: number(),
|
|
15016
14848
|
bytesSent: number()
|
|
15017
14849
|
});
|
|
15018
|
-
var BrokerDecodedClientSchema = object({
|
|
15019
|
-
tag: string(),
|
|
15020
|
-
subscribedAt: number(),
|
|
15021
|
-
maxFps: number(),
|
|
15022
|
-
framesDelivered: number(),
|
|
15023
|
-
framesDropped: number()
|
|
15024
|
-
});
|
|
15025
14850
|
var BrokerAudioClientSchema = object({
|
|
15026
14851
|
tag: string(),
|
|
15027
14852
|
subscribedAt: number(),
|
|
@@ -15113,7 +14938,6 @@ var BrokerEncodedClientSchema = object({
|
|
|
15113
14938
|
});
|
|
15114
14939
|
var BrokerClientsSchema = object({
|
|
15115
14940
|
rtsp: array(BrokerRtspClientSchema).readonly(),
|
|
15116
|
-
decoded: array(BrokerDecodedClientSchema).readonly(),
|
|
15117
14941
|
audio: array(BrokerAudioClientSchema).readonly(),
|
|
15118
14942
|
encoded: array(BrokerEncodedClientSchema).readonly(),
|
|
15119
14943
|
pipeClients: number(),
|
|
@@ -15605,11 +15429,7 @@ var streamBrokerCapability = {
|
|
|
15605
15429
|
listClients: method(object({ brokerId: string() }), BrokerClientsSchema),
|
|
15606
15430
|
killClient: method(object({
|
|
15607
15431
|
brokerId: string(),
|
|
15608
|
-
channel: _enum([
|
|
15609
|
-
"rtsp",
|
|
15610
|
-
"decoded",
|
|
15611
|
-
"audio"
|
|
15612
|
-
]),
|
|
15432
|
+
channel: _enum(["rtsp", "audio"]),
|
|
15613
15433
|
handle: string()
|
|
15614
15434
|
}), object({ killed: boolean() }), {
|
|
15615
15435
|
kind: "mutation",
|
|
@@ -15708,31 +15528,6 @@ var streamBrokerCapability = {
|
|
|
15708
15528
|
maxCount: number().int().positive().default(8)
|
|
15709
15529
|
}), array(DecodedAudioChunkSchema).readonly()),
|
|
15710
15530
|
unsubscribeAudioChunks: method(object({ subscriptionId: string() }), object({ released: boolean() }), { kind: "mutation" }),
|
|
15711
|
-
/**
|
|
15712
|
-
* ── Shared-memory frame plane (Phase 5 / D9) ──────────────────────
|
|
15713
|
-
*
|
|
15714
|
-
* The handle-based replacement for the live-object `IStreamBroker.
|
|
15715
|
-
* onDecodedFrame` callback path. A consumer:
|
|
15716
|
-
*
|
|
15717
|
-
* 1. `subscribeFrames({ brokerId, format })` — the broker spins up
|
|
15718
|
-
* (or reuses) a `frameSink: 'shm'` decoder session producing that
|
|
15719
|
-
* `format` and returns a `subscriptionId`.
|
|
15720
|
-
* 2. polls `pullFrameHandles({ subscriptionId, maxCount })` — drains
|
|
15721
|
-
* zero-pixel `FrameHandle[]`; each handle is fed to a
|
|
15722
|
-
* `FrameRingReader` that opens the named shm segment and reads the
|
|
15723
|
-
* pixels back zero-copy.
|
|
15724
|
-
* 3. `unsubscribeFrames({ subscriptionId })` on teardown.
|
|
15725
|
-
*
|
|
15726
|
-
* The broker keeps one shm ring per `(brokerId, format)` actually
|
|
15727
|
-
* requested — no broker-side `sharp` conversion. fps throttling is
|
|
15728
|
-
* implicit (latest-wins ring reads drop frames for a slow consumer).
|
|
15729
|
-
*/
|
|
15730
|
-
subscribeFrames: method(SubscribeFramesInputSchema, SubscribeFramesResultSchema, { kind: "mutation" }),
|
|
15731
|
-
pullFrameHandles: method(object({
|
|
15732
|
-
subscriptionId: string(),
|
|
15733
|
-
maxCount: number().int().positive().default(4)
|
|
15734
|
-
}), array(FrameHandleSchema).readonly()),
|
|
15735
|
-
unsubscribeFrames: method(object({ subscriptionId: string() }), object({ released: boolean() }), { kind: "mutation" }),
|
|
15736
15531
|
setPreBufferDuration: method(object({
|
|
15737
15532
|
brokerId: string(),
|
|
15738
15533
|
seconds: number().min(0).max(30)
|
|
@@ -17035,54 +16830,12 @@ id: union([string(), number()]) }), {
|
|
|
17035
16830
|
kind: "mutation",
|
|
17036
16831
|
auth: "admin"
|
|
17037
16832
|
});
|
|
17038
|
-
|
|
17039
|
-
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
17040
|
-
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
17041
|
-
* observe ring pressure (slot count, byte budget, hit/miss ratio).
|
|
17042
|
-
*/
|
|
17043
|
-
var ShmRingStatsSchema = object({
|
|
17044
|
-
sessionId: string(),
|
|
17045
|
-
slotCount: number().int(),
|
|
17046
|
-
slotByteLength: number().int(),
|
|
17047
|
-
segmentBytes: number().int(),
|
|
17048
|
-
budgetMb: number().int(),
|
|
17049
|
-
framesWritten: number().int(),
|
|
17050
|
-
getFrameHits: number().int(),
|
|
17051
|
-
getFrameMisses: number().int()
|
|
17052
|
-
});
|
|
17053
|
-
method(object({ codec: string() }), boolean()), method(_void(), object({
|
|
16833
|
+
method(_void(), object({
|
|
17054
16834
|
id: string(),
|
|
17055
16835
|
name: string(),
|
|
17056
|
-
isPullMode: boolean().optional(),
|
|
17057
|
-
priority: number().optional(),
|
|
17058
16836
|
hwaccel: string().optional(),
|
|
17059
16837
|
probedBestHwaccel: string().optional()
|
|
17060
|
-
})), method(
|
|
17061
|
-
sessionId: string(),
|
|
17062
|
-
nodeId: string()
|
|
17063
|
-
})), method(object({ sessionId: string() }), _void()), method(object({
|
|
17064
|
-
sessionId: string(),
|
|
17065
|
-
packet: EncodedPacketSchema
|
|
17066
|
-
}), _void()), method(object({
|
|
17067
|
-
sessionId: string(),
|
|
17068
|
-
url: string()
|
|
17069
|
-
}), _void()), method(object({
|
|
17070
|
-
sessionId: string(),
|
|
17071
|
-
maxCount: number().default(1),
|
|
17072
|
-
waitMs: number().optional()
|
|
17073
|
-
}), array(DecodedFrameSchema)), method(object({
|
|
17074
|
-
sessionId: string(),
|
|
17075
|
-
maxCount: number().default(1),
|
|
17076
|
-
waitMs: number().optional()
|
|
17077
|
-
}), array(FrameHandleSchema)), method(object({ handle: FrameHandleSchema }), DecodedFrameSchema.nullable()), method(object({ sessionId: string() }), ShmRingStatsSchema.nullable()), method(object({
|
|
17078
|
-
sessionId: string(),
|
|
17079
|
-
config: DecoderSessionConfigSchema.partial()
|
|
17080
|
-
}), _void()), method(object({ sessionId: string() }), DecoderStatsSchema), method(_void(), array(object({
|
|
17081
|
-
sessionId: string(),
|
|
17082
|
-
codec: string(),
|
|
17083
|
-
outputFormat: string(),
|
|
17084
|
-
createdAtMs: number()
|
|
17085
|
-
})).readonly()), method(_void(), object({ backend: string() }), {
|
|
16838
|
+
})), method(_void(), object({ backend: string() }), {
|
|
17086
16839
|
kind: "mutation",
|
|
17087
16840
|
auth: "admin"
|
|
17088
16841
|
});
|
|
@@ -24560,8 +24313,8 @@ function resolveClusterStepModelId(stepId, models) {
|
|
|
24560
24313
|
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
24561
24314
|
stepId: "face-embedding",
|
|
24562
24315
|
key: "minLandmarkFaceSize",
|
|
24563
|
-
label: "Min face size
|
|
24564
|
-
description: "
|
|
24316
|
+
label: "Min face size to embed (detection-frame px)",
|
|
24317
|
+
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.",
|
|
24565
24318
|
type: "slider",
|
|
24566
24319
|
min: 0,
|
|
24567
24320
|
max: 64,
|
|
@@ -26630,21 +26383,6 @@ var PipelineDefaultStepSchema = lazy(() => object({
|
|
|
26630
26383
|
group: string().optional(),
|
|
26631
26384
|
settings: record(string(), unknown()).optional()
|
|
26632
26385
|
}));
|
|
26633
|
-
var PipelineTemplateStepSchema = lazy(() => object({
|
|
26634
|
-
addonId: string(),
|
|
26635
|
-
enabled: boolean(),
|
|
26636
|
-
modelId: string(),
|
|
26637
|
-
children: array(PipelineTemplateStepSchema).readonly(),
|
|
26638
|
-
settings: record(string(), unknown()).optional()
|
|
26639
|
-
}));
|
|
26640
|
-
var PipelineTemplateSchema$1 = object({
|
|
26641
|
-
id: string(),
|
|
26642
|
-
name: string(),
|
|
26643
|
-
createdAt: string(),
|
|
26644
|
-
updatedAt: string(),
|
|
26645
|
-
engine: PipelineEngineChoiceSchema,
|
|
26646
|
-
steps: array(PipelineTemplateStepSchema).readonly()
|
|
26647
|
-
});
|
|
26648
26386
|
var PipelineModelOptionSchema = object({
|
|
26649
26387
|
id: string(),
|
|
26650
26388
|
name: string(),
|
|
@@ -26966,18 +26704,6 @@ var pipelineExecutorCapability = {
|
|
|
26966
26704
|
steps: array(PipelineStepInputSchema),
|
|
26967
26705
|
deviceKey: string().optional()
|
|
26968
26706
|
}), PipelineValidationResultSchema),
|
|
26969
|
-
listTemplates: method(_void(), array(PipelineTemplateSchema$1).readonly()),
|
|
26970
|
-
saveTemplate: method(object({
|
|
26971
|
-
name: string(),
|
|
26972
|
-
steps: array(PipelineTemplateStepSchema).readonly(),
|
|
26973
|
-
engine: PipelineEngineChoiceSchema
|
|
26974
|
-
}), PipelineTemplateSchema$1, { kind: "mutation" }),
|
|
26975
|
-
updateTemplate: method(object({
|
|
26976
|
-
id: string(),
|
|
26977
|
-
name: string().optional(),
|
|
26978
|
-
steps: array(PipelineTemplateStepSchema).readonly().optional()
|
|
26979
|
-
}), PipelineTemplateSchema$1, { kind: "mutation" }),
|
|
26980
|
-
deleteTemplate: method(object({ id: string() }), _void(), { kind: "mutation" }),
|
|
26981
26707
|
getCapabilities: method(_void(), InferenceCapabilitiesBridge),
|
|
26982
26708
|
getAddonModels: method(object({ addonId: string() }), ModelAvailabilityListBridge),
|
|
26983
26709
|
downloadModel: method(object({
|
|
@@ -27235,148 +26961,17 @@ var pipelineExecutorCapability = {
|
|
|
27235
26961
|
}
|
|
27236
26962
|
};
|
|
27237
26963
|
/**
|
|
27238
|
-
* Wire shapes of the Load balancing surface (D748): the session placement
|
|
27239
|
-
* policy, the atomic share write, the observed placement statistics, the
|
|
27240
|
-
* hardware share suggestion and the stale device pins.
|
|
27241
|
-
*/
|
|
27242
|
-
/**
|
|
27243
|
-
* How a new detection session picks its node and device.
|
|
27244
|
-
* - `least-loaded` — the historical rule: lowest `attached / weight`, a
|
|
27245
|
-
* constant node order at a tie (D37). An idle node always ties at 0, so a
|
|
27246
|
-
* weight only bites once a node already holds a session.
|
|
27247
|
-
* - `share` — the share of PARALLEL sessions is held to the weights, and a
|
|
27248
|
-
* full or drowning node yields to a free one (D748).
|
|
27249
|
-
*/
|
|
27250
|
-
var SessionPlacementPolicySchema = _enum(["least-loaded", "share"]);
|
|
27251
|
-
var LoadBalancingSharesInputSchema = object({
|
|
27252
|
-
/** nodeId → share (> 0). A node left out keeps its weight. */
|
|
27253
|
-
nodes: record(string(), number().positive()).default({}),
|
|
27254
|
-
/** nodeId → deviceKey → share (> 0). A device left out keeps its weight. */
|
|
27255
|
-
devices: record(string(), record(string(), number().positive())).default({})
|
|
27256
|
-
});
|
|
27257
|
-
var PlacementStatsInputSchema = object({
|
|
27258
|
-
/** Window the observed shares are averaged over (default 1 h, max 24 h). */
|
|
27259
|
-
windowMs: number().int().min(6e4).max(1440 * 60 * 1e3).default(3600 * 1e3) });
|
|
27260
|
-
var PlacementDeviceStatsSchema = object({
|
|
27261
|
-
deviceKey: string(),
|
|
27262
|
-
/** Sessions running on this device now. */
|
|
27263
|
-
sessionsNow: number(),
|
|
27264
|
-
/** Sessions started on this device inside the window. */
|
|
27265
|
-
sessionsStarted: number(),
|
|
27266
|
-
/** Time-weighted share of the node's parallel sessions over the window (0–1); null = no session ran. */
|
|
27267
|
-
observedShare: number().nullable()
|
|
27268
|
-
});
|
|
27269
|
-
var PlacementNodeStatsSchema = object({
|
|
27270
|
-
nodeId: string(),
|
|
27271
|
-
sessionsNow: number(),
|
|
27272
|
-
sessionsStarted: number(),
|
|
27273
|
-
/** Time-weighted share of the cluster's parallel sessions over the window (0–1); null = none ran. */
|
|
27274
|
-
observedShare: number().nullable(),
|
|
27275
|
-
/** Most sessions this node ran at once inside the window. */
|
|
27276
|
-
peakSessions: number(),
|
|
27277
|
-
/** Sessions a share election handed elsewhere because this node was full or drowning. */
|
|
27278
|
-
yieldsAway: number(),
|
|
27279
|
-
devices: array(PlacementDeviceStatsSchema).readonly()
|
|
27280
|
-
});
|
|
27281
|
-
/** A camera's device pin that the session path cannot honour. */
|
|
27282
|
-
var StaleDevicePinSchema = object({
|
|
27283
|
-
deviceId: number(),
|
|
27284
|
-
deviceKey: string(),
|
|
27285
|
-
/** `disabled` — the key exists on some node but is not enabled anywhere; `absent` — no node has it. */
|
|
27286
|
-
reason: _enum(["disabled", "absent"])
|
|
27287
|
-
});
|
|
27288
|
-
var PlacementStatsSchema = object({
|
|
27289
|
-
policy: SessionPlacementPolicySchema,
|
|
27290
|
-
windowMs: number(),
|
|
27291
|
-
/** How much of the window was actually observed (the hub keeps it in memory). */
|
|
27292
|
-
observedForMs: number(),
|
|
27293
|
-
sessionsNow: number(),
|
|
27294
|
-
/** Most parallel sessions across the cluster inside the window. */
|
|
27295
|
-
clusterPeakSessions: number(),
|
|
27296
|
-
nodes: array(PlacementNodeStatsSchema).readonly(),
|
|
27297
|
-
stalePins: array(StaleDevicePinSchema).readonly()
|
|
27298
|
-
});
|
|
27299
|
-
var SuggestSharesInputSchema = object({ headroom: number().min(.3).max(.5).default(.4) });
|
|
27300
|
-
var SuggestedDeviceShareSchema = object({
|
|
27301
|
-
deviceKey: string(),
|
|
27302
|
-
/** Share of the node (0–100, rounded). */
|
|
27303
|
-
share: number(),
|
|
27304
|
-
modelId: string().nullable(),
|
|
27305
|
-
/** Inferences per second at that model, from the measured table. */
|
|
27306
|
-
fps: number().nullable(),
|
|
27307
|
-
measured: boolean(),
|
|
27308
|
-
/** Advisory session cap: ⌊fps × (1 − headroom) / camera fps⌋. Never enforced. */
|
|
27309
|
-
suggestedMaxSessions: number().nullable()
|
|
27310
|
-
});
|
|
27311
|
-
var SuggestedNodeShareSchema = object({
|
|
27312
|
-
nodeId: string(),
|
|
27313
|
-
/** Share of the cluster (0–100, rounded); null = node skipped (offline, unknown hardware). */
|
|
27314
|
-
share: number().nullable(),
|
|
27315
|
-
/** Parallel sessions the node sustains at the suggested models with the headroom kept free. */
|
|
27316
|
-
capacitySessions: number(),
|
|
27317
|
-
devices: array(SuggestedDeviceShareSchema).readonly(),
|
|
27318
|
-
skippedReason: string().nullable()
|
|
27319
|
-
});
|
|
27320
|
-
var SuggestSharesResultSchema = object({
|
|
27321
|
-
headroom: number(),
|
|
27322
|
-
/** Camera detection rate the capacity is counted in (the fastest camera's fps). */
|
|
27323
|
-
cameraFps: number(),
|
|
27324
|
-
/** How many share → model → capacity rounds ran before the shares stopped moving (≤ 3). */
|
|
27325
|
-
iterations: number(),
|
|
27326
|
-
nodes: array(SuggestedNodeShareSchema).readonly()
|
|
27327
|
-
});
|
|
27328
|
-
/**
|
|
27329
|
-
* Where the node and device shares come from (D750).
|
|
27330
|
-
* - `auto` — computed by the system from the cluster's measured capacity at
|
|
27331
|
-
* the Auto tune models, and recomputed whenever a node or device joins,
|
|
27332
|
-
* leaves, is switched on or off, or changes model.
|
|
27333
|
-
* - `manual` — the operator's stored sliders. A node or device that cannot
|
|
27334
|
-
* take sessions gives its share to the others in proportion; the stored
|
|
27335
|
-
* values are never rewritten for that.
|
|
27336
|
-
*/
|
|
27337
|
-
var ShareSourceSchema = _enum(["auto", "manual"]);
|
|
27338
|
-
var SetShareSourceInputSchema = object({ source: ShareSourceSchema });
|
|
27339
|
-
object({
|
|
27340
|
-
nodes: record(string(), number()),
|
|
27341
|
-
devices: record(string(), record(string(), number()))
|
|
27342
|
-
});
|
|
27343
|
-
var EffectiveDeviceShareSchema = object({
|
|
27344
|
-
deviceKey: string(),
|
|
27345
|
-
/** Can take sessions now (enabled, available, can run the root). */
|
|
27346
|
-
eligible: boolean(),
|
|
27347
|
-
/** The share the source assigns, as a percentage of the node's devices. */
|
|
27348
|
-
configuredPct: number(),
|
|
27349
|
-
/** The share actually used, after an ineligible device's share went to the others. */
|
|
27350
|
-
effectivePct: number()
|
|
27351
|
-
});
|
|
27352
|
-
var EffectiveNodeShareSchema = object({
|
|
27353
|
-
nodeId: string(),
|
|
27354
|
-
eligible: boolean(),
|
|
27355
|
-
configuredPct: number(),
|
|
27356
|
-
effectivePct: number(),
|
|
27357
|
-
devices: array(EffectiveDeviceShareSchema).readonly()
|
|
27358
|
-
});
|
|
27359
|
-
var EffectiveSharesSchema = object({
|
|
27360
|
-
source: ShareSourceSchema,
|
|
27361
|
-
policy: SessionPlacementPolicySchema,
|
|
27362
|
-
/** `auto` with no computed answer yet: the stored sliders are used meanwhile. */
|
|
27363
|
-
autoPending: boolean(),
|
|
27364
|
-
/** When the automatic shares were last computed (ms epoch); null = never. */
|
|
27365
|
-
computedAt: number().nullable(),
|
|
27366
|
-
/** What made the system recompute them last. */
|
|
27367
|
-
trigger: string().nullable(),
|
|
27368
|
-
nodes: array(EffectiveNodeShareSchema).readonly(),
|
|
27369
|
-
/** The relative weights the election reads (before eligibility). */
|
|
27370
|
-
nodeWeights: record(string(), number()),
|
|
27371
|
-
deviceWeights: record(string(), record(string(), number()))
|
|
27372
|
-
});
|
|
27373
|
-
/**
|
|
27374
26964
|
* The wire shapes of the Auto tune plan and apply (D745), used by the
|
|
27375
26965
|
* `pipeline-orchestrator` cap. The recommender's own types
|
|
27376
|
-
* (`recommend.ts
|
|
26966
|
+
* (`recommend.ts`) are the TS face of the same data; these
|
|
27377
26967
|
* schemas are what crosses the cap boundary.
|
|
27378
26968
|
*/
|
|
27379
26969
|
var ModelFormatSchema$1 = _enum(MODEL_FORMATS);
|
|
26970
|
+
/** The operator's range for it. */
|
|
26971
|
+
var MIN_SESSIONS_PER_DEVICE_RANGE = {
|
|
26972
|
+
min: 1,
|
|
26973
|
+
max: 8
|
|
26974
|
+
};
|
|
27380
26975
|
var HardwareClassIdSchema = _enum([
|
|
27381
26976
|
"intel-core-ultra",
|
|
27382
26977
|
"intel-n-series",
|
|
@@ -27394,8 +26989,9 @@ var AcceleratorKindSchema = _enum([
|
|
|
27394
26989
|
]);
|
|
27395
26990
|
var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
27396
26991
|
object({
|
|
27397
|
-
kind: literal("
|
|
27398
|
-
|
|
26992
|
+
kind: literal("capacity"),
|
|
26993
|
+
sessions: number(),
|
|
26994
|
+
minSessions: number()
|
|
27399
26995
|
}),
|
|
27400
26996
|
object({
|
|
27401
26997
|
kind: literal("tie-faster"),
|
|
@@ -27410,16 +27006,13 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
|
27410
27006
|
}),
|
|
27411
27007
|
object({
|
|
27412
27008
|
kind: literal("no-fit-lightest"),
|
|
27413
|
-
|
|
27009
|
+
sessions: number(),
|
|
27010
|
+
minSessions: number()
|
|
27414
27011
|
}),
|
|
27415
27012
|
object({
|
|
27416
27013
|
kind: literal("derived-latency"),
|
|
27417
27014
|
modelId: string()
|
|
27418
27015
|
}),
|
|
27419
|
-
object({
|
|
27420
|
-
kind: literal("estimated-load"),
|
|
27421
|
-
observedForMs: number().nullable()
|
|
27422
|
-
}),
|
|
27423
27016
|
object({ kind: literal("cpu-device") }),
|
|
27424
27017
|
object({ kind: literal("coral-untouched") }),
|
|
27425
27018
|
object({ kind: literal("device-disabled") }),
|
|
@@ -27435,28 +27028,13 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
|
27435
27028
|
format: ModelFormatSchema$1
|
|
27436
27029
|
})
|
|
27437
27030
|
]);
|
|
27438
|
-
var DeviceDemandSchema = object({
|
|
27439
|
-
nodeId: string(),
|
|
27440
|
-
deviceKey: string(),
|
|
27441
|
-
demandFps: number(),
|
|
27442
|
-
maxCameraFps: number(),
|
|
27443
|
-
alwaysOnCameras: number(),
|
|
27444
|
-
onMotionSessions: number(),
|
|
27445
|
-
onMotionSource: _enum([
|
|
27446
|
-
"observed-24h",
|
|
27447
|
-
"estimate",
|
|
27448
|
-
"none"
|
|
27449
|
-
]),
|
|
27450
|
-
observedForMs: number().nullable(),
|
|
27451
|
-
/** How on-motion sessions were charged: per-device observation, or split by share (D748). */
|
|
27452
|
-
placement: SessionPlacementPolicySchema
|
|
27453
|
-
});
|
|
27454
27031
|
var DeviceModelChoiceSchema = object({
|
|
27455
27032
|
modelId: string(),
|
|
27456
27033
|
p50Ms: number(),
|
|
27457
27034
|
fps: number(),
|
|
27458
27035
|
measured: boolean(),
|
|
27459
|
-
|
|
27036
|
+
/** Parallel sessions at the camera rate with the headroom kept free: ⌊fps × (1 − headroom) / camera fps⌋. */
|
|
27037
|
+
capacitySessions: number(),
|
|
27460
27038
|
personRecall: number()
|
|
27461
27039
|
});
|
|
27462
27040
|
var DeviceRecommendationSchema = object({
|
|
@@ -27464,7 +27042,6 @@ var DeviceRecommendationSchema = object({
|
|
|
27464
27042
|
accelerator: AcceleratorKindSchema.nullable(),
|
|
27465
27043
|
enabled: boolean(),
|
|
27466
27044
|
available: boolean(),
|
|
27467
|
-
demand: DeviceDemandSchema.nullable(),
|
|
27468
27045
|
chosen: DeviceModelChoiceSchema.nullable(),
|
|
27469
27046
|
reasons: array(RecommendationReasonSchema).readonly()
|
|
27470
27047
|
});
|
|
@@ -27525,20 +27102,20 @@ var AutoTuneOptionsSchema = object({
|
|
|
27525
27102
|
/** Share of each accelerator's throughput kept free (0.3–0.5). */
|
|
27526
27103
|
headroom: number().min(.3).max(.5).default(.4),
|
|
27527
27104
|
/**
|
|
27528
|
-
*
|
|
27529
|
-
*
|
|
27530
|
-
*
|
|
27531
|
-
* is stored.
|
|
27105
|
+
* The least number of parallel sessions every device must sustain at the
|
|
27106
|
+
* camera rate with the headroom kept free (D755). The most accurate model
|
|
27107
|
+
* that reaches it wins.
|
|
27532
27108
|
*/
|
|
27533
|
-
|
|
27109
|
+
minSessionsPerDevice: number().int().min(MIN_SESSIONS_PER_DEVICE_RANGE.min).max(MIN_SESSIONS_PER_DEVICE_RANGE.max).default(2)
|
|
27534
27110
|
});
|
|
27535
27111
|
var AutoTunePlanSchema = object({
|
|
27536
27112
|
/** Hash of everything the apply will write — the apply refuses a different one. */
|
|
27537
27113
|
planHash: string(),
|
|
27538
27114
|
family: literal("yolov9"),
|
|
27539
27115
|
headroom: number(),
|
|
27540
|
-
|
|
27541
|
-
|
|
27116
|
+
minSessionsPerDevice: number(),
|
|
27117
|
+
/** The detection rate a session is counted at (the fastest camera running the pipeline root). */
|
|
27118
|
+
cameraFps: number(),
|
|
27542
27119
|
generatedAt: number(),
|
|
27543
27120
|
nodes: array(NodeRecommendationSchema).readonly(),
|
|
27544
27121
|
nodeChanges: array(NodeDeviceChangeSchema).readonly(),
|
|
@@ -27548,7 +27125,8 @@ var AutoTunePlanSchema = object({
|
|
|
27548
27125
|
});
|
|
27549
27126
|
var AutoTuneApplyInputSchema = object({
|
|
27550
27127
|
planHash: string(),
|
|
27551
|
-
headroom: number().min(.3).max(.5).default(.4)
|
|
27128
|
+
headroom: number().min(.3).max(.5).default(.4),
|
|
27129
|
+
minSessionsPerDevice: number().int().min(MIN_SESSIONS_PER_DEVICE_RANGE.min).max(MIN_SESSIONS_PER_DEVICE_RANGE.max).default(2)
|
|
27552
27130
|
});
|
|
27553
27131
|
var AutoTunePhaseResultSchema = object({
|
|
27554
27132
|
phase: _enum([
|
|
@@ -27580,6 +27158,177 @@ var AutoTuneApplyResultSchema = discriminatedUnion("kind", [
|
|
|
27580
27158
|
reason: _enum(["apply-in-progress"])
|
|
27581
27159
|
})
|
|
27582
27160
|
]);
|
|
27161
|
+
/**
|
|
27162
|
+
* Wire shapes of the Load balancing surface (D748): the session placement
|
|
27163
|
+
* policy, the atomic share write, the observed placement statistics, the
|
|
27164
|
+
* hardware share suggestion and the stale device pins.
|
|
27165
|
+
*/
|
|
27166
|
+
/**
|
|
27167
|
+
* How a new detection session picks its node and device.
|
|
27168
|
+
* - `least-loaded` — the historical rule: lowest `attached / weight`, a
|
|
27169
|
+
* constant node order at a tie (D37). An idle node always ties at 0, so a
|
|
27170
|
+
* weight only bites once a node already holds a session.
|
|
27171
|
+
* - `share` — the share of PARALLEL sessions is held to the weights, and a
|
|
27172
|
+
* full or drowning node yields to a free one (D748).
|
|
27173
|
+
*/
|
|
27174
|
+
var SessionPlacementPolicySchema = _enum(["least-loaded", "share"]);
|
|
27175
|
+
var LoadBalancingSharesInputSchema = object({
|
|
27176
|
+
/** nodeId → share (> 0). A node left out keeps its weight. */
|
|
27177
|
+
nodes: record(string(), number().positive()).default({}),
|
|
27178
|
+
/** nodeId → deviceKey → share (> 0). A device left out keeps its weight. */
|
|
27179
|
+
devices: record(string(), record(string(), number().positive())).default({})
|
|
27180
|
+
});
|
|
27181
|
+
var PlacementStatsInputSchema = object({
|
|
27182
|
+
/** Window the observed shares are averaged over (default 1 h, max 24 h). */
|
|
27183
|
+
windowMs: number().int().min(6e4).max(1440 * 60 * 1e3).default(3600 * 1e3) });
|
|
27184
|
+
var PlacementDeviceStatsSchema = object({
|
|
27185
|
+
deviceKey: string(),
|
|
27186
|
+
/** Sessions running on this device now. */
|
|
27187
|
+
sessionsNow: number(),
|
|
27188
|
+
/** Sessions started on this device inside the window. */
|
|
27189
|
+
sessionsStarted: number(),
|
|
27190
|
+
/** Time-weighted share of the node's parallel sessions over the window (0–1); null = no session ran. */
|
|
27191
|
+
observedShare: number().nullable()
|
|
27192
|
+
});
|
|
27193
|
+
var PlacementNodeStatsSchema = object({
|
|
27194
|
+
nodeId: string(),
|
|
27195
|
+
sessionsNow: number(),
|
|
27196
|
+
sessionsStarted: number(),
|
|
27197
|
+
/** Time-weighted share of the cluster's parallel sessions over the window (0–1); null = none ran. */
|
|
27198
|
+
observedShare: number().nullable(),
|
|
27199
|
+
/** Most sessions this node ran at once inside the window. */
|
|
27200
|
+
peakSessions: number(),
|
|
27201
|
+
/** Sessions a share election handed elsewhere because this node was full or drowning. */
|
|
27202
|
+
yieldsAway: number(),
|
|
27203
|
+
devices: array(PlacementDeviceStatsSchema).readonly()
|
|
27204
|
+
});
|
|
27205
|
+
/** A camera's device pin that the session path cannot honour. */
|
|
27206
|
+
var StaleDevicePinSchema = object({
|
|
27207
|
+
deviceId: number(),
|
|
27208
|
+
deviceKey: string(),
|
|
27209
|
+
/** `disabled` — the key exists on some node but is not enabled anywhere; `absent` — no node has it. */
|
|
27210
|
+
reason: _enum(["disabled", "absent"])
|
|
27211
|
+
});
|
|
27212
|
+
var PlacementStatsSchema = object({
|
|
27213
|
+
policy: SessionPlacementPolicySchema,
|
|
27214
|
+
windowMs: number(),
|
|
27215
|
+
/** How much of the window was actually observed (the hub keeps it in memory). */
|
|
27216
|
+
observedForMs: number(),
|
|
27217
|
+
sessionsNow: number(),
|
|
27218
|
+
/** Most parallel sessions across the cluster inside the window. */
|
|
27219
|
+
clusterPeakSessions: number(),
|
|
27220
|
+
nodes: array(PlacementNodeStatsSchema).readonly(),
|
|
27221
|
+
stalePins: array(StaleDevicePinSchema).readonly()
|
|
27222
|
+
});
|
|
27223
|
+
/**
|
|
27224
|
+
* Where an automatic share's capacity comes from (D755).
|
|
27225
|
+
* - `hardware` — the static capacity of each device at its Auto tune model:
|
|
27226
|
+
* the measured latency table for the node's hardware class.
|
|
27227
|
+
* - `benchmark` — the node's own measured capacity (node benchmark results).
|
|
27228
|
+
* A node with no results falls back to `hardware`, and says so.
|
|
27229
|
+
*/
|
|
27230
|
+
var CapacitySourceSchema = _enum(["hardware", "benchmark"]);
|
|
27231
|
+
/** Why a node under the `benchmark` source was sized from hardware instead. */
|
|
27232
|
+
var CapacityFallbackSchema = _enum(["no-benchmark-results", "partial-benchmark-results"]);
|
|
27233
|
+
var SuggestSharesInputSchema = object({
|
|
27234
|
+
headroom: number().min(.3).max(.5).default(.4),
|
|
27235
|
+
/** Default `hardware`. */
|
|
27236
|
+
source: CapacitySourceSchema.default("hardware")
|
|
27237
|
+
});
|
|
27238
|
+
var SuggestedDeviceShareSchema = object({
|
|
27239
|
+
deviceKey: string(),
|
|
27240
|
+
/** Share of the node (0–100, rounded). */
|
|
27241
|
+
share: number(),
|
|
27242
|
+
modelId: string().nullable(),
|
|
27243
|
+
/** Inferences per second at that model, from the measured table; null when sized by a benchmark. */
|
|
27244
|
+
fps: number().nullable(),
|
|
27245
|
+
/** False for a table cell derived from another chip; true for a measured cell or a benchmark. */
|
|
27246
|
+
measured: boolean(),
|
|
27247
|
+
/**
|
|
27248
|
+
* Advisory session cap: ⌊fps × (1 − headroom) / camera fps⌋ from the table,
|
|
27249
|
+
* or the benchmark's measured max sessions. Never enforced.
|
|
27250
|
+
*/
|
|
27251
|
+
suggestedMaxSessions: number().nullable()
|
|
27252
|
+
});
|
|
27253
|
+
var SuggestedNodeShareSchema = object({
|
|
27254
|
+
nodeId: string(),
|
|
27255
|
+
/** Share of the cluster (0–100, rounded); null = node skipped (offline, unknown hardware). */
|
|
27256
|
+
share: number().nullable(),
|
|
27257
|
+
/** Parallel sessions the node sustains at the suggested models with the headroom kept free. */
|
|
27258
|
+
capacitySessions: number(),
|
|
27259
|
+
devices: array(SuggestedDeviceShareSchema).readonly(),
|
|
27260
|
+
skippedReason: string().nullable(),
|
|
27261
|
+
/** What this node's capacity was read from; null when the node is skipped. */
|
|
27262
|
+
capacitySource: CapacitySourceSchema.nullable(),
|
|
27263
|
+
/** Set when the `benchmark` source was asked for and this node used `hardware`. */
|
|
27264
|
+
capacityFallback: CapacityFallbackSchema.nullable()
|
|
27265
|
+
});
|
|
27266
|
+
var SuggestSharesResultSchema = object({
|
|
27267
|
+
headroom: number(),
|
|
27268
|
+
/** The source asked for; each node says what it actually used. */
|
|
27269
|
+
source: CapacitySourceSchema,
|
|
27270
|
+
/** Camera detection rate the capacity is counted in (the fastest camera's fps). */
|
|
27271
|
+
cameraFps: number(),
|
|
27272
|
+
/** The Auto tune capacity floor the models were picked at. */
|
|
27273
|
+
minSessionsPerDevice: number(),
|
|
27274
|
+
nodes: array(SuggestedNodeShareSchema).readonly()
|
|
27275
|
+
});
|
|
27276
|
+
/**
|
|
27277
|
+
* Where the node and device shares come from (D750, D755).
|
|
27278
|
+
* - `hardware` (default) — computed by the system from each node's static
|
|
27279
|
+
* capacity (its accelerators at their Auto tune models, from the measured
|
|
27280
|
+
* latency table), recomputed whenever a node or device joins, leaves, is
|
|
27281
|
+
* switched on or off, or changes model. No load input.
|
|
27282
|
+
* - `benchmark` — the same, from each node's measured capacity (node
|
|
27283
|
+
* benchmark results); a node without results falls back to `hardware`.
|
|
27284
|
+
* - `manual` — the operator's stored sliders.
|
|
27285
|
+
* Either way a node or device that cannot take sessions gives its share to
|
|
27286
|
+
* the others in proportion; the stored values are never rewritten for that.
|
|
27287
|
+
*/
|
|
27288
|
+
var ShareSourceSchema = _enum([
|
|
27289
|
+
"hardware",
|
|
27290
|
+
"benchmark",
|
|
27291
|
+
"manual"
|
|
27292
|
+
]);
|
|
27293
|
+
var SetShareSourceInputSchema = object({ source: ShareSourceSchema });
|
|
27294
|
+
object({
|
|
27295
|
+
nodes: record(string(), number()),
|
|
27296
|
+
devices: record(string(), record(string(), number()))
|
|
27297
|
+
});
|
|
27298
|
+
var EffectiveDeviceShareSchema = object({
|
|
27299
|
+
deviceKey: string(),
|
|
27300
|
+
/** Can take sessions now (enabled, available, can run the root). */
|
|
27301
|
+
eligible: boolean(),
|
|
27302
|
+
/** The share the source assigns, as a percentage of the node's devices. */
|
|
27303
|
+
configuredPct: number(),
|
|
27304
|
+
/** The share actually used, after an ineligible device's share went to the others. */
|
|
27305
|
+
effectivePct: number()
|
|
27306
|
+
});
|
|
27307
|
+
var EffectiveNodeShareSchema = object({
|
|
27308
|
+
nodeId: string(),
|
|
27309
|
+
eligible: boolean(),
|
|
27310
|
+
configuredPct: number(),
|
|
27311
|
+
effectivePct: number(),
|
|
27312
|
+
/** Automatic sources: what this node's share was computed from; null under `manual` or before the first answer. */
|
|
27313
|
+
capacitySource: CapacitySourceSchema.nullable(),
|
|
27314
|
+
/** Automatic `benchmark`: why this node used `hardware` instead. */
|
|
27315
|
+
capacityFallback: CapacityFallbackSchema.nullable(),
|
|
27316
|
+
devices: array(EffectiveDeviceShareSchema).readonly()
|
|
27317
|
+
});
|
|
27318
|
+
var EffectiveSharesSchema = object({
|
|
27319
|
+
source: ShareSourceSchema,
|
|
27320
|
+
policy: SessionPlacementPolicySchema,
|
|
27321
|
+
/** An automatic source with no computed answer yet: the stored sliders are used meanwhile. */
|
|
27322
|
+
autoPending: boolean(),
|
|
27323
|
+
/** When the automatic shares were last computed (ms epoch); null = never. */
|
|
27324
|
+
computedAt: number().nullable(),
|
|
27325
|
+
/** What made the system recompute them last. */
|
|
27326
|
+
trigger: string().nullable(),
|
|
27327
|
+
nodes: array(EffectiveNodeShareSchema).readonly(),
|
|
27328
|
+
/** The relative weights the election reads (before eligibility). */
|
|
27329
|
+
nodeWeights: record(string(), number()),
|
|
27330
|
+
deviceWeights: record(string(), record(string(), number()))
|
|
27331
|
+
});
|
|
27583
27332
|
object({
|
|
27584
27333
|
activeCameras: number(),
|
|
27585
27334
|
throttledCameras: number(),
|
|
@@ -28457,14 +28206,15 @@ var RunnerLocalLoadSchema = object({
|
|
|
28457
28206
|
* Per-inference-device live load (multi-device C4). One entry per deviceKey
|
|
28458
28207
|
* this runner currently has attached cameras on, so the orchestrator's second
|
|
28459
28208
|
* `balance()` pass (over a node's devices) weights on real per-pool session
|
|
28460
|
-
* counts. Empty on single-device / pre-multi-device runners.
|
|
28461
|
-
* per
|
|
28209
|
+
* counts. Empty on single-device / pre-multi-device runners. There is no
|
|
28210
|
+
* per-device queue depth: the inference pool's backlog has no accessor, and
|
|
28211
|
+
* a field that always read 0 was removed rather than shown as a measurement
|
|
28212
|
+
* (D762).
|
|
28462
28213
|
*/
|
|
28463
28214
|
devices: array(object({
|
|
28464
28215
|
deviceKey: string(),
|
|
28465
28216
|
backend: string(),
|
|
28466
|
-
attachedCameras: number()
|
|
28467
|
-
queueDepthTotal: number()
|
|
28217
|
+
attachedCameras: number()
|
|
28468
28218
|
})).default([]),
|
|
28469
28219
|
/** Hardware capability flags reported by this node. */
|
|
28470
28220
|
hardware: object({
|
|
@@ -28870,14 +28620,6 @@ var CameraPipelineConfigSchema = object({
|
|
|
28870
28620
|
settings: record(string(), unknown()).readonly().optional()
|
|
28871
28621
|
}).nullable().optional()
|
|
28872
28622
|
});
|
|
28873
|
-
var PipelineTemplateSchema = object({
|
|
28874
|
-
id: string(),
|
|
28875
|
-
name: string(),
|
|
28876
|
-
description: string().optional(),
|
|
28877
|
-
config: CameraPipelineConfigSchema,
|
|
28878
|
-
createdAt: string(),
|
|
28879
|
-
updatedAt: string()
|
|
28880
|
-
});
|
|
28881
28623
|
var DeviceStepConfigSchema = object({
|
|
28882
28624
|
modelId: string().optional(),
|
|
28883
28625
|
settings: record(string(), unknown()).optional(),
|
|
@@ -28951,8 +28693,10 @@ var CameraStepOverridePatchSchema = object({
|
|
|
28951
28693
|
modelId: string().optional(),
|
|
28952
28694
|
settings: record(string(), unknown()).readonly().optional()
|
|
28953
28695
|
});
|
|
28696
|
+
var CameraStepSettingsSchema = record(string(), record(string(), unknown()).readonly());
|
|
28954
28697
|
var CameraPipelineSettingsSchema = object({
|
|
28955
28698
|
stepToggles: record(string(), boolean()).optional(),
|
|
28699
|
+
stepSettings: CameraStepSettingsSchema.optional(),
|
|
28956
28700
|
stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
|
|
28957
28701
|
pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
|
|
28958
28702
|
});
|
|
@@ -28985,7 +28729,10 @@ var PipelineAssignmentSchema = object({
|
|
|
28985
28729
|
});
|
|
28986
28730
|
/**
|
|
28987
28731
|
* Per-agent load summary surfaced to the load balancer + dashboards.
|
|
28988
|
-
* Aggregated from each runner's `getLocalLoad` cap call.
|
|
28732
|
+
* Aggregated from each runner's `getLocalLoad` cap call. In the
|
|
28733
|
+
* `getAgentLoad` report, a single-device node's default-pool sessions (no
|
|
28734
|
+
* `deviceKey`) are credited to its one eligible device in `load.devices` —
|
|
28735
|
+
* the default pool IS that device (D745); the balancer's census stays raw.
|
|
28989
28736
|
*/
|
|
28990
28737
|
var AgentLoadSummarySchema = object({
|
|
28991
28738
|
nodeId: string(),
|
|
@@ -29074,26 +28821,27 @@ var CameraBrokerStatusSchema = object({
|
|
|
29074
28821
|
width: number(),
|
|
29075
28822
|
height: number(),
|
|
29076
28823
|
subscribers: number(),
|
|
29077
|
-
|
|
29078
|
-
|
|
28824
|
+
/**
|
|
28825
|
+
* Encoded packets/s the broker receives from the camera. null when the
|
|
28826
|
+
* broker's stats read failed — unknown, never 0 (a 0 here reads as a stall).
|
|
28827
|
+
* There is no output rate: decoding runs in the session decode workers, not
|
|
28828
|
+
* in the broker, so the broker's own decoded-frame rate is 0 on every live
|
|
28829
|
+
* camera and is not served (D758).
|
|
28830
|
+
*/
|
|
28831
|
+
inFps: number().nullable()
|
|
29079
28832
|
})).readonly(),
|
|
29080
28833
|
webrtcSessions: number(),
|
|
29081
28834
|
rtspRestream: boolean()
|
|
29082
28835
|
});
|
|
29083
|
-
/**
|
|
29084
|
-
|
|
29085
|
-
|
|
29086
|
-
|
|
29087
|
-
|
|
29088
|
-
|
|
29089
|
-
|
|
29090
|
-
|
|
29091
|
-
var CameraDecoderStatusSchema = object({
|
|
29092
|
-
nodeId: string(),
|
|
29093
|
-
formats: array(string()).readonly(),
|
|
29094
|
-
sessionCount: number(),
|
|
29095
|
-
shm: CameraDecoderShmSchema
|
|
29096
|
-
});
|
|
28836
|
+
/**
|
|
28837
|
+
* Decoder block — WHERE decode runs (co-located with the detection node by
|
|
28838
|
+
* construction); null when the camera has no detection node. It carries no
|
|
28839
|
+
* frame counter: the shared-memory plane whose counters it used to serve is
|
|
28840
|
+
* gone, and those fields read 0 forever. Whether frames actually flow is read
|
|
28841
|
+
* from `detection.actualFps` (frames delivered to and processed by the
|
|
28842
|
+
* detector), never from a counter nothing feeds.
|
|
28843
|
+
*/
|
|
28844
|
+
var CameraDecoderStatusSchema = object({ nodeId: string() });
|
|
29097
28845
|
/** Motion block — null when motion detection is not active for this device. */
|
|
29098
28846
|
var CameraMotionStatusSchema = object({
|
|
29099
28847
|
enabled: boolean(),
|
|
@@ -29516,6 +29264,13 @@ method(object({
|
|
|
29516
29264
|
}), object({ success: literal(true) }), {
|
|
29517
29265
|
kind: "mutation",
|
|
29518
29266
|
auth: "admin"
|
|
29267
|
+
}), method(object({
|
|
29268
|
+
deviceId: number(),
|
|
29269
|
+
addonId: string(),
|
|
29270
|
+
settings: record(string(), unknown()).nullable()
|
|
29271
|
+
}), object({ success: literal(true) }), {
|
|
29272
|
+
kind: "mutation",
|
|
29273
|
+
auth: "admin"
|
|
29519
29274
|
}), method(object({
|
|
29520
29275
|
deviceId: number(),
|
|
29521
29276
|
agentNodeId: string(),
|
|
@@ -29539,25 +29294,7 @@ method(object({
|
|
|
29539
29294
|
}), method(_void(), DiskReconcileJobSchema, {
|
|
29540
29295
|
kind: "mutation",
|
|
29541
29296
|
auth: "admin"
|
|
29542
|
-
}), method(_void(), DiskReconcileJobSchema, { auth: "admin" })
|
|
29543
|
-
name: string(),
|
|
29544
|
-
description: string().optional(),
|
|
29545
|
-
config: CameraPipelineConfigSchema
|
|
29546
|
-
}), PipelineTemplateSchema, {
|
|
29547
|
-
kind: "mutation",
|
|
29548
|
-
auth: "admin"
|
|
29549
|
-
}), method(object({
|
|
29550
|
-
id: string(),
|
|
29551
|
-
name: string().optional(),
|
|
29552
|
-
description: string().optional(),
|
|
29553
|
-
config: CameraPipelineConfigSchema.optional()
|
|
29554
|
-
}), PipelineTemplateSchema, {
|
|
29555
|
-
kind: "mutation",
|
|
29556
|
-
auth: "admin"
|
|
29557
|
-
}), method(object({ id: string() }), object({ success: literal(true) }), {
|
|
29558
|
-
kind: "mutation",
|
|
29559
|
-
auth: "admin"
|
|
29560
|
-
});
|
|
29297
|
+
}), method(_void(), DiskReconcileJobSchema, { auth: "admin" });
|
|
29561
29298
|
/**
|
|
29562
29299
|
* Cap → event-kind mapping for the SENSOR / CONTROL cap families — the table
|
|
29563
29300
|
* `pipeline-analytics.listEventKinds` uses to turn a linked device's bound
|
|
@@ -32073,8 +31810,6 @@ var WebrtcStreamChoiceSchema = object({
|
|
|
32073
31810
|
]).nullable(),
|
|
32074
31811
|
/** Input FPS from the camera (null for adaptive). */
|
|
32075
31812
|
inputFps: number().nullable(),
|
|
32076
|
-
/** Decoded FPS (null for adaptive). */
|
|
32077
|
-
decodeFps: number().nullable(),
|
|
32078
31813
|
/** Bitrate in kbps (null for adaptive). */
|
|
32079
31814
|
bitrateKbps: number().nullable()
|
|
32080
31815
|
});
|
|
@@ -42949,90 +42684,18 @@ Object.freeze({
|
|
|
42949
42684
|
addonId: null,
|
|
42950
42685
|
access: "create"
|
|
42951
42686
|
},
|
|
42952
|
-
"decoder.createSession": {
|
|
42953
|
-
capName: "decoder",
|
|
42954
|
-
capScope: "system",
|
|
42955
|
-
addonId: null,
|
|
42956
|
-
access: "view"
|
|
42957
|
-
},
|
|
42958
|
-
"decoder.destroySession": {
|
|
42959
|
-
capName: "decoder",
|
|
42960
|
-
capScope: "system",
|
|
42961
|
-
addonId: null,
|
|
42962
|
-
access: "delete"
|
|
42963
|
-
},
|
|
42964
|
-
"decoder.getFrame": {
|
|
42965
|
-
capName: "decoder",
|
|
42966
|
-
capScope: "system",
|
|
42967
|
-
addonId: null,
|
|
42968
|
-
access: "view"
|
|
42969
|
-
},
|
|
42970
42687
|
"decoder.getInfo": {
|
|
42971
42688
|
capName: "decoder",
|
|
42972
42689
|
capScope: "system",
|
|
42973
42690
|
addonId: null,
|
|
42974
42691
|
access: "view"
|
|
42975
42692
|
},
|
|
42976
|
-
"decoder.getShmStats": {
|
|
42977
|
-
capName: "decoder",
|
|
42978
|
-
capScope: "system",
|
|
42979
|
-
addonId: null,
|
|
42980
|
-
access: "view"
|
|
42981
|
-
},
|
|
42982
|
-
"decoder.getStats": {
|
|
42983
|
-
capName: "decoder",
|
|
42984
|
-
capScope: "system",
|
|
42985
|
-
addonId: null,
|
|
42986
|
-
access: "view"
|
|
42987
|
-
},
|
|
42988
|
-
"decoder.listActiveSessions": {
|
|
42989
|
-
capName: "decoder",
|
|
42990
|
-
capScope: "system",
|
|
42991
|
-
addonId: null,
|
|
42992
|
-
access: "view"
|
|
42993
|
-
},
|
|
42994
|
-
"decoder.openStream": {
|
|
42995
|
-
capName: "decoder",
|
|
42996
|
-
capScope: "system",
|
|
42997
|
-
addonId: null,
|
|
42998
|
-
access: "view"
|
|
42999
|
-
},
|
|
43000
|
-
"decoder.pullFrames": {
|
|
43001
|
-
capName: "decoder",
|
|
43002
|
-
capScope: "system",
|
|
43003
|
-
addonId: null,
|
|
43004
|
-
access: "view"
|
|
43005
|
-
},
|
|
43006
|
-
"decoder.pullHandles": {
|
|
43007
|
-
capName: "decoder",
|
|
43008
|
-
capScope: "system",
|
|
43009
|
-
addonId: null,
|
|
43010
|
-
access: "view"
|
|
43011
|
-
},
|
|
43012
|
-
"decoder.pushPacket": {
|
|
43013
|
-
capName: "decoder",
|
|
43014
|
-
capScope: "system",
|
|
43015
|
-
addonId: null,
|
|
43016
|
-
access: "view"
|
|
43017
|
-
},
|
|
43018
42693
|
"decoder.reprobeHwaccel": {
|
|
43019
42694
|
capName: "decoder",
|
|
43020
42695
|
capScope: "system",
|
|
43021
42696
|
addonId: null,
|
|
43022
42697
|
access: "create"
|
|
43023
42698
|
},
|
|
43024
|
-
"decoder.supportsCodec": {
|
|
43025
|
-
capName: "decoder",
|
|
43026
|
-
capScope: "system",
|
|
43027
|
-
addonId: null,
|
|
43028
|
-
access: "view"
|
|
43029
|
-
},
|
|
43030
|
-
"decoder.updateConfig": {
|
|
43031
|
-
capName: "decoder",
|
|
43032
|
-
capScope: "system",
|
|
43033
|
-
addonId: null,
|
|
43034
|
-
access: "view"
|
|
43035
|
-
},
|
|
43036
42699
|
"detectionPipeline.applyDeviceSettingsPatch": {
|
|
43037
42700
|
capName: "detection-pipeline",
|
|
43038
42701
|
capScope: "device",
|
|
@@ -46123,12 +45786,6 @@ Object.freeze({
|
|
|
46123
45786
|
addonId: null,
|
|
46124
45787
|
access: "delete"
|
|
46125
45788
|
},
|
|
46126
|
-
"pipelineExecutor.deleteTemplate": {
|
|
46127
|
-
capName: "pipeline-executor",
|
|
46128
|
-
capScope: "system",
|
|
46129
|
-
addonId: null,
|
|
46130
|
-
access: "delete"
|
|
46131
|
-
},
|
|
46132
45789
|
"pipelineExecutor.downloadModel": {
|
|
46133
45790
|
capName: "pipeline-executor",
|
|
46134
45791
|
capScope: "system",
|
|
@@ -46267,12 +45924,6 @@ Object.freeze({
|
|
|
46267
45924
|
addonId: null,
|
|
46268
45925
|
access: "view"
|
|
46269
45926
|
},
|
|
46270
|
-
"pipelineExecutor.listTemplates": {
|
|
46271
|
-
capName: "pipeline-executor",
|
|
46272
|
-
capScope: "system",
|
|
46273
|
-
addonId: null,
|
|
46274
|
-
access: "view"
|
|
46275
|
-
},
|
|
46276
45927
|
"pipelineExecutor.rearmInferenceDevice": {
|
|
46277
45928
|
capName: "pipeline-executor",
|
|
46278
45929
|
capScope: "system",
|
|
@@ -46297,12 +45948,6 @@ Object.freeze({
|
|
|
46297
45948
|
addonId: null,
|
|
46298
45949
|
access: "create"
|
|
46299
45950
|
},
|
|
46300
|
-
"pipelineExecutor.saveTemplate": {
|
|
46301
|
-
capName: "pipeline-executor",
|
|
46302
|
-
capScope: "system",
|
|
46303
|
-
addonId: null,
|
|
46304
|
-
access: "create"
|
|
46305
|
-
},
|
|
46306
45951
|
"pipelineExecutor.setVideoPipelineSteps": {
|
|
46307
45952
|
capName: "pipeline-executor",
|
|
46308
45953
|
capScope: "system",
|
|
@@ -46321,12 +45966,6 @@ Object.freeze({
|
|
|
46321
45966
|
addonId: null,
|
|
46322
45967
|
access: "create"
|
|
46323
45968
|
},
|
|
46324
|
-
"pipelineExecutor.updateTemplate": {
|
|
46325
|
-
capName: "pipeline-executor",
|
|
46326
|
-
capScope: "system",
|
|
46327
|
-
addonId: null,
|
|
46328
|
-
access: "create"
|
|
46329
|
-
},
|
|
46330
45969
|
"pipelineExecutor.validatePipeline": {
|
|
46331
45970
|
capName: "pipeline-executor",
|
|
46332
45971
|
capScope: "system",
|
|
@@ -46357,12 +45996,6 @@ Object.freeze({
|
|
|
46357
45996
|
addonId: null,
|
|
46358
45997
|
access: "create"
|
|
46359
45998
|
},
|
|
46360
|
-
"pipelineOrchestrator.deleteTemplate": {
|
|
46361
|
-
capName: "pipeline-orchestrator",
|
|
46362
|
-
capScope: "system",
|
|
46363
|
-
addonId: null,
|
|
46364
|
-
access: "delete"
|
|
46365
|
-
},
|
|
46366
45999
|
"pipelineOrchestrator.getAgentLoad": {
|
|
46367
46000
|
capName: "pipeline-orchestrator",
|
|
46368
46001
|
capScope: "system",
|
|
@@ -46513,12 +46146,6 @@ Object.freeze({
|
|
|
46513
46146
|
addonId: null,
|
|
46514
46147
|
access: "view"
|
|
46515
46148
|
},
|
|
46516
|
-
"pipelineOrchestrator.listTemplates": {
|
|
46517
|
-
capName: "pipeline-orchestrator",
|
|
46518
|
-
capScope: "system",
|
|
46519
|
-
addonId: null,
|
|
46520
|
-
access: "view"
|
|
46521
|
-
},
|
|
46522
46149
|
"pipelineOrchestrator.pauseForStorageMigration": {
|
|
46523
46150
|
capName: "pipeline-orchestrator",
|
|
46524
46151
|
capScope: "system",
|
|
@@ -46573,12 +46200,6 @@ Object.freeze({
|
|
|
46573
46200
|
addonId: null,
|
|
46574
46201
|
access: "create"
|
|
46575
46202
|
},
|
|
46576
|
-
"pipelineOrchestrator.saveTemplate": {
|
|
46577
|
-
capName: "pipeline-orchestrator",
|
|
46578
|
-
capScope: "system",
|
|
46579
|
-
addonId: null,
|
|
46580
|
-
access: "create"
|
|
46581
|
-
},
|
|
46582
46203
|
"pipelineOrchestrator.setAgentCapabilities": {
|
|
46583
46204
|
capName: "pipeline-orchestrator",
|
|
46584
46205
|
capScope: "system",
|
|
@@ -46627,6 +46248,12 @@ Object.freeze({
|
|
|
46627
46248
|
addonId: null,
|
|
46628
46249
|
access: "create"
|
|
46629
46250
|
},
|
|
46251
|
+
"pipelineOrchestrator.setCameraStepSettings": {
|
|
46252
|
+
capName: "pipeline-orchestrator",
|
|
46253
|
+
capScope: "system",
|
|
46254
|
+
addonId: null,
|
|
46255
|
+
access: "create"
|
|
46256
|
+
},
|
|
46630
46257
|
"pipelineOrchestrator.setCameraStepToggle": {
|
|
46631
46258
|
capName: "pipeline-orchestrator",
|
|
46632
46259
|
capScope: "system",
|
|
@@ -46681,12 +46308,6 @@ Object.freeze({
|
|
|
46681
46308
|
addonId: null,
|
|
46682
46309
|
access: "create"
|
|
46683
46310
|
},
|
|
46684
|
-
"pipelineOrchestrator.updateTemplate": {
|
|
46685
|
-
capName: "pipeline-orchestrator",
|
|
46686
|
-
capScope: "system",
|
|
46687
|
-
addonId: null,
|
|
46688
|
-
access: "create"
|
|
46689
|
-
},
|
|
46690
46311
|
"pipelineRunner.attachCamera": {
|
|
46691
46312
|
capName: "pipeline-runner",
|
|
46692
46313
|
capScope: "system",
|
|
@@ -48121,12 +47742,6 @@ Object.freeze({
|
|
|
48121
47742
|
addonId: null,
|
|
48122
47743
|
access: "view"
|
|
48123
47744
|
},
|
|
48124
|
-
"streamBroker.pullFrameHandles": {
|
|
48125
|
-
capName: "stream-broker",
|
|
48126
|
-
capScope: "system",
|
|
48127
|
-
addonId: null,
|
|
48128
|
-
access: "view"
|
|
48129
|
-
},
|
|
48130
47745
|
"streamBroker.regenerateRtspToken": {
|
|
48131
47746
|
capName: "stream-broker",
|
|
48132
47747
|
capScope: "system",
|
|
@@ -48193,12 +47808,6 @@ Object.freeze({
|
|
|
48193
47808
|
addonId: null,
|
|
48194
47809
|
access: "create"
|
|
48195
47810
|
},
|
|
48196
|
-
"streamBroker.subscribeFrames": {
|
|
48197
|
-
capName: "stream-broker",
|
|
48198
|
-
capScope: "system",
|
|
48199
|
-
addonId: null,
|
|
48200
|
-
access: "create"
|
|
48201
|
-
},
|
|
48202
47811
|
"streamBroker.unassignProfile": {
|
|
48203
47812
|
capName: "stream-broker",
|
|
48204
47813
|
capScope: "system",
|
|
@@ -48211,12 +47820,6 @@ Object.freeze({
|
|
|
48211
47820
|
addonId: null,
|
|
48212
47821
|
access: "create"
|
|
48213
47822
|
},
|
|
48214
|
-
"streamBroker.unsubscribeFrames": {
|
|
48215
|
-
capName: "stream-broker",
|
|
48216
|
-
capScope: "system",
|
|
48217
|
-
addonId: null,
|
|
48218
|
-
access: "create"
|
|
48219
|
-
},
|
|
48220
47823
|
"streamCatalog.getCatalog": {
|
|
48221
47824
|
capName: "stream-catalog",
|
|
48222
47825
|
capScope: "device",
|
|
@@ -50730,11 +50333,6 @@ Object.freeze({
|
|
|
50730
50333
|
form: "single",
|
|
50731
50334
|
optional: false
|
|
50732
50335
|
}],
|
|
50733
|
-
"decoder.createSession": [{
|
|
50734
|
-
name: "deviceId",
|
|
50735
|
-
form: "single",
|
|
50736
|
-
optional: true
|
|
50737
|
-
}],
|
|
50738
50336
|
"detectionPipeline.applyDeviceSettingsPatch": [{
|
|
50739
50337
|
name: "deviceId",
|
|
50740
50338
|
form: "single",
|
|
@@ -52075,6 +51673,11 @@ Object.freeze({
|
|
|
52075
51673
|
form: "single",
|
|
52076
51674
|
optional: false
|
|
52077
51675
|
}],
|
|
51676
|
+
"pipelineOrchestrator.setCameraStepSettings": [{
|
|
51677
|
+
name: "deviceId",
|
|
51678
|
+
form: "single",
|
|
51679
|
+
optional: false
|
|
51680
|
+
}],
|
|
52078
51681
|
"pipelineOrchestrator.setCameraStepToggle": [{
|
|
52079
51682
|
name: "deviceId",
|
|
52080
51683
|
form: "single",
|
|
@@ -55164,4 +54767,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
55164
54767
|
return out;
|
|
55165
54768
|
}
|
|
55166
54769
|
//#endregion
|
|
55167
|
-
export { cameraOwnsMotionViaSensor as $,
|
|
54770
|
+
export { cameraOwnsMotionViaSensor as $, preprocess as $n, recordingSignalCapability as $t, NativeLeaseAdmissionSchema as A, CAM_PROFILE_ORDER as An, linkedStepOf as At, RecordingConfigSchema as B, makeSourceBrokerId as Bn, modelBindingKey as Bt, EncodeProfileSchema as C, invocationFromEncodeProfile as Cn, gbToBytes as Ct, HF_REPO as D, errMsg as Dn, inferModelProvider as Dt, G711_SCALE_CORRECTION_DB as E, DeviceType as En, hfModelUrl as Et, RATE_CONTROL_TIGHT as F, defineCustomActions as Fn, mayReadLocation as Ft, YAMNET_TO_MACRO as G, _enum as Gn, pickDetailCropConvention as Gt, RingBuffer as H, parseProfileBrokerId as Hn, overlayClusterStepSettings as Ht, RECORDING_EXPORT_MAX_READ_BYTES as I, expandAudioChunkToF32le as In, mayWriteToLocation as It, applyModelBoundSettings as J, discriminatedUnion as Jn, pipelineRunnerCapability as Jt, addonWidgetsSourceCapability as K, array as Kn, pickNativeLeaseOverride as Kt, RECORDING_SOURCE_CAMSTACK as L, hydrateSchema as Ln, memoizePinnedFfmpeg as Lt, OpsLogEntrySchema as M, audioChunkBytesPerSample as Mn, logChannelsCapability as Mt, PoolMemoryWatchdog as N, createEvent as Nn, mapAudioLabelToMacro as Nt, LABEL_SUPPLY_MACRO as O, BOOT_RECOVERY_BACKOFF_MS as On, isFirstLevelMacroClass as Ot, RATE_CONTROL_RELAXED as P, customAction as Pn, maskUrlCredentials as Pt, batteryCapability as Q, object as Qn, recordingExportCapability as Qt, RECORDING_SOURCE_CAMSTACK_ADDON as R, isEvent as Rn, migrateLegacyDeviceSignalConfig as Rt, EVENT_PAD_MS as S, evaluateSensorEdge as Sn, ffmpegRate as St, FailureCounters as T, DeviceFeature as Tn, gifFromMp4Args as Tt, VIDEOCLIPS_MAX_OFFER_BYTES as U, selectAssignedProfileSlots as Un, parseProcStatus as Ut, RecordingSignalStatusSchema as V, nodePin as Vn, motionDetectionCapability as Vt, VISIT_MERGE_GAP_MS as W, sleep as Wn, pickClusterStepSettings as Wt, audioAnalyzerCapability as X, literal as Xn, recordingArchiveCapability as Xt, audioAnalysisCapability as Y, lazy as Yn, rankStreams as Yt, audioKindId as Z, number as Zn, recordingCapability as Zt, DEFAULT_DETAIL_CROP_CONVENTION as _, webrtcSessionCapability as _n, evaluateZoneRules as _t, BackgroundRunRegistry as a, resolvePoolMemoryPolicy as an, createHwAccelCache as at, DEVICE_BACKEND_TO_FORMAT as b, Fmp4BoxSplitter as bn, exportSubjectOf as bt, CLIP_STILL_REASON_CODE_HEADER as c, rootSuppliesOf as cn, defaultDeviceFor as ct, CLUSTER_MODEL_SCOPED_STEPS as d, storageEvictableCapability as dn, deriveRecordingMode as dt, resolveClusterStepModelId as en, record as er, cameraStreamsCapability as et, COCO_80_LABELS as f, storageOccupancyCapability as fn, deriveRootFaceRefineRect as ft, DEFAULT_CLUSTER_STEP_SETTINGS as g, videoclipsCapability as gn, enumerateInferenceDevices as gt, DEFAULT_AUDIO_ANALYZER_CONFIG as h, supportedRuntimes as hn, egressTransportFromRequest as ht, AUDIO_MACRO_LABELS as i, resolveModelBoundSetting as in, containingParentIndex as it, NativeLeaseSettingsSchema as j, CamProfileSchema as jn, loadContributionCapability as jt, LABEL_SUPPLY_VOCABULARIES as k, BaseAddon as kn, linkedLabelStepId as kt, CLIP_STILL_REASON_HEADER as l, runtimeDevices as ln, deriveBatteryPresence as lt, CROP_SUPPLY_SOURCES as m, stripRetiredBandPreBufferSec as mn, egressTranscodeSharingKey as mt, APPLE_SA_TO_MACRO as n, resolveEgressDecodeHwAccel as nn, union as nr, clipExportFailureOf as nt, BatteryStatusSchema as o, resolveRecordingProfiles as on, createLogChannelsProvider as ot, COCO_TO_MACRO as p, streamBrokerCapability as pn, detectionPipelineCapability as pt, allowedSuppliedEffect as q, boolean as qn, pipelineExecutorCapability as qt, AUDIO_BACKEND_CHOICES as r, resolveLocationMode as rn, EventCategory as rr, collectModelBoundKeys as rt, CLIP_BROKER_PACED_RATES as s, resolveRootSupply as sn, declareLogChannel as st, APPEARANCE_BLOCKS as t, resolveCreateExportSubject as tn, string as tr, clipExportFailure as tt, CLIP_STREAM_TRANSPORT_HEADER as u, stepModelRunsOnFormat as un, deriveDetailCropRect as ut, DEFAULT_EVENTS_BAND_BUFFER_SEC as v, AUDIO_PRESETS as vn, evictionPolicyForMode as vt, ExportRecordSchema as w, isSoftwareDecode as wn, gifDeriveSpeed as wt, EVENT_OWNER_TYPES as x, buildFfmpegArgs as xn, failureContributionCapability as xt, DEFAULT_NATIVE_LEASE_SETTINGS as y, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as yn, evictionPolicyOfLocation as yt, ROOT_SUPPLIABLE_STEP_IDS as z, makeProfileBrokerId as zn, modeMayWrite as zt };
|