@camstack/addon-osd-manager 0.1.186 → 0.1.188
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/{MotionZonesSettings-Dp0R0q3Z.mjs → MotionZonesSettings-DO_aSGvS.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-IPP5tsg4.mjs → PrivacyMaskSettings-Dz9m4TPF.mjs} +4 -4
- package/dist/{SceneMonitorEditor-wh-xCA6m.mjs → SceneMonitorEditor-B3c9J7f3.mjs} +3 -3
- package/dist/_stub.js +44 -37
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-Cr3qSOlj.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-DmGUOsEt.mjs} +4 -4
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-elInKoqy.mjs +26 -0
- package/dist/addon-osd-manager.css +1 -1
- package/dist/{hostInit-Byg5VNXi.mjs → hostInit-CWYNKBoP.mjs} +3 -3
- package/dist/index.js +112 -358
- package/dist/index.mjs +112 -358
- package/dist/{player-overlays-C2udddNf.mjs → player-overlays-CYJONP8_.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-Bef0FhzN.mjs → responsive-CLeY6HgJ.mjs} +1 -1
- package/dist/{scene-monitor-copy-OXVinJYb.mjs → scene-monitor-copy-CAiAEjTG.mjs} +1 -1
- package/dist/{square-ClhvKotL.mjs → square-94BJB2Ov.mjs} +1 -1
- package/dist/{trash-2-DtyxSKWI.mjs → trash-2-CSe4YYX5.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-2lDHA88N.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-DrK1e36i.mjs} +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-fuPdAfsY.mjs +0 -26
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
//#region ../types/dist/event-category-
|
|
5
|
+
//#region ../types/dist/event-category-B_0XEcLF.mjs
|
|
6
6
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
7
7
|
EventCategory["SystemBoot"] = "system.boot";
|
|
8
8
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -503,15 +503,6 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
503
503
|
EventCategory["AgentWsDisconnected"] = "agent.ws.disconnected";
|
|
504
504
|
EventCategory["AgentBackupActivated"] = "agent.backup.activated";
|
|
505
505
|
EventCategory["OrchestrationSettingsUpdated"] = "orchestration.settings-updated";
|
|
506
|
-
/**
|
|
507
|
-
* Per-agent hwaccel preference changed (user override set, cleared, or
|
|
508
|
-
* re-probed). Observability event — decoders pull the current pref at
|
|
509
|
-
* `createSession`, so running sessions keep their current backend until
|
|
510
|
-
* they rotate naturally (camera add/remove, stream restart). Future
|
|
511
|
-
* work can wire a listener in stream-broker that force-rotates live
|
|
512
|
-
* sessions; for now this event powers logs + admin-UI toast feedback.
|
|
513
|
-
*/
|
|
514
|
-
EventCategory["PipelineAgentHwaccelChanged"] = "pipeline.agent-hwaccel-changed";
|
|
515
506
|
EventCategory["MotionAnalysis"] = "detection.motion-analysis";
|
|
516
507
|
/** All raw motion zones from CCL before minArea filter — for UI debug overlay. */
|
|
517
508
|
EventCategory["MotionZonesRaw"] = "detection.motion-zones-raw";
|
|
@@ -5382,7 +5373,7 @@ var ZodIssueCode = {
|
|
|
5382
5373
|
var ZodFirstPartyTypeKind;
|
|
5383
5374
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5384
5375
|
//#endregion
|
|
5385
|
-
//#region ../types/dist/sleep-
|
|
5376
|
+
//#region ../types/dist/sleep-BNeXenvr.mjs
|
|
5386
5377
|
/**
|
|
5387
5378
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5388
5379
|
* window to float samples (D455).
|
|
@@ -6748,32 +6739,12 @@ object({
|
|
|
6748
6739
|
audioCodec: string().optional(),
|
|
6749
6740
|
metadata: record(string(), unknown()).readonly().optional()
|
|
6750
6741
|
});
|
|
6751
|
-
var EncodedPacketSchema = object({
|
|
6752
|
-
type: _enum(["video", "audio"]),
|
|
6753
|
-
data: _instanceof(Uint8Array),
|
|
6754
|
-
pts: number(),
|
|
6755
|
-
dts: number(),
|
|
6756
|
-
keyframe: boolean(),
|
|
6757
|
-
codec: string()
|
|
6758
|
-
});
|
|
6759
|
-
var DecodedFrameSchema = object({
|
|
6760
|
-
data: _instanceof(Uint8Array),
|
|
6761
|
-
width: number(),
|
|
6762
|
-
height: number(),
|
|
6763
|
-
format: _enum([
|
|
6764
|
-
"jpeg",
|
|
6765
|
-
"rgb",
|
|
6766
|
-
"bgr",
|
|
6767
|
-
"yuv420",
|
|
6768
|
-
"gray"
|
|
6769
|
-
]),
|
|
6770
|
-
timestamp: number()
|
|
6771
|
-
});
|
|
6772
6742
|
/**
|
|
6773
6743
|
* Wire schema for `FrameHandle` — a zero-pixel, serialisable reference to a
|
|
6774
6744
|
* frame in a shared-memory ring (Phase 5 / D9). Mirrors the `FrameHandle` TS
|
|
6775
|
-
* interface in `interfaces/frame-handle.ts` field-for-field so a
|
|
6776
|
-
*
|
|
6745
|
+
* interface in `interfaces/frame-handle.ts` field-for-field so a cap method
|
|
6746
|
+
* (the runner's native-crop and pipeline-executor inputs) can carry handles
|
|
6747
|
+
* over tRPC / Moleculer.
|
|
6777
6748
|
*
|
|
6778
6749
|
* The `satisfies` assertion below pins this schema to the interface: if a
|
|
6779
6750
|
* field is added to / removed from `FrameHandle` without a matching schema
|
|
@@ -6799,50 +6770,6 @@ var FrameHandleSchema = object({
|
|
|
6799
6770
|
slotCount: number().int().positive()
|
|
6800
6771
|
});
|
|
6801
6772
|
/**
|
|
6802
|
-
* Pixel format a frame-handle subscriber can request from the broker
|
|
6803
|
-
* (Phase 5 / D9). The packed, raster subset of `FrameFormat` — the formats a
|
|
6804
|
-
* `frameSink: 'shm'` decoder session can write into a `FrameRing` slot.
|
|
6805
|
-
* `jpeg` is excluded: a variable-length stream is not a fixed-stride ring
|
|
6806
|
-
* payload, and no decoded-frame consumer requests it over the shm plane.
|
|
6807
|
-
*/
|
|
6808
|
-
var FrameHandleFormatSchema = _enum([
|
|
6809
|
-
"rgb",
|
|
6810
|
-
"bgr",
|
|
6811
|
-
"yuv420",
|
|
6812
|
-
"gray"
|
|
6813
|
-
]);
|
|
6814
|
-
/**
|
|
6815
|
-
* Input for `stream-broker.subscribeFrames` (Phase 5 / D9). A consumer asks the
|
|
6816
|
-
* broker for a `FrameHandle` stream of one `format`; the broker maintains one
|
|
6817
|
-
* shared-memory ring per `(brokerId, format)` actually requested, so a `gray`
|
|
6818
|
-
* subscriber (motion) and an `rgb` subscriber (detection) each read the format
|
|
6819
|
-
* they asked for with no broker-side conversion.
|
|
6820
|
-
*/
|
|
6821
|
-
var SubscribeFramesInputSchema = object({
|
|
6822
|
-
brokerId: string(),
|
|
6823
|
-
format: FrameHandleFormatSchema,
|
|
6824
|
-
/**
|
|
6825
|
-
* Optional reader-side cadence hint in frames per second. The broker does
|
|
6826
|
-
* NOT throttle — latest-wins ring reads drop frames implicitly for a slow
|
|
6827
|
-
* consumer. The value is echoed back in `SubscribeFramesResult.maxFps` so
|
|
6828
|
-
* the consumer can pace its own `pullFrameHandles` polling.
|
|
6829
|
-
*/
|
|
6830
|
-
maxFps: number().positive().optional(),
|
|
6831
|
-
/** Short caller-identity tag (`motion`, `detection`, …) for diagnostics. */
|
|
6832
|
-
tag: string().optional()
|
|
6833
|
-
});
|
|
6834
|
-
/**
|
|
6835
|
-
* Result of `stream-broker.subscribeFrames`. The consumer then polls
|
|
6836
|
-
* `pullFrameHandles({ subscriptionId, maxCount })` and feeds each returned
|
|
6837
|
-
* `FrameHandle` to a `FrameRingReader`.
|
|
6838
|
-
*/
|
|
6839
|
-
var SubscribeFramesResultSchema = object({
|
|
6840
|
-
/** Opaque id the consumer passes to `pullFrameHandles` / `unsubscribeFrames`. */
|
|
6841
|
-
subscriptionId: string(),
|
|
6842
|
-
/** Reader-side cadence hint (frames/s) — echoes `SubscribeFramesInput.maxFps`. */
|
|
6843
|
-
maxFps: number().nonnegative()
|
|
6844
|
-
});
|
|
6845
|
-
/**
|
|
6846
6773
|
* Wire schema for a decoded audio chunk (Phase 5 / D9). Mirrors the
|
|
6847
6774
|
* `DecodedAudioChunk` TS interface in `interfaces/stream-broker.ts`: PCM
|
|
6848
6775
|
* sample bytes plus the track parameters a consumer needs to interpret them.
|
|
@@ -6850,8 +6777,8 @@ var SubscribeFramesResultSchema = object({
|
|
|
6850
6777
|
* Audio chunks are tiny (a ~500ms AudioCodecSession window is a few KB of
|
|
6851
6778
|
* Float32 PCM), so unlike video frames they ship their bytes INLINE over
|
|
6852
6779
|
* tRPC / Moleculer — no shared-memory plane. `data` is typed `Uint8Array`
|
|
6853
|
-
* (the wire-serialisable supertype of `Buffer`)
|
|
6854
|
-
*
|
|
6780
|
+
* (the wire-serialisable supertype of `Buffer`); a `Buffer` is assignable to
|
|
6781
|
+
* it.
|
|
6855
6782
|
*/
|
|
6856
6783
|
var AudioChunkFormatSchema = _enum(AUDIO_CHUNK_FORMATS);
|
|
6857
6784
|
var DecodedAudioChunkSchema = object({
|
|
@@ -6869,11 +6796,10 @@ var DecodedAudioChunkSchema = object({
|
|
|
6869
6796
|
format: AudioChunkFormatSchema.optional()
|
|
6870
6797
|
});
|
|
6871
6798
|
/**
|
|
6872
|
-
* Input for `stream-broker.subscribeAudioChunks` (Phase 5 / D9).
|
|
6873
|
-
*
|
|
6874
|
-
*
|
|
6875
|
-
*
|
|
6876
|
-
* `pullAudioChunks`.
|
|
6799
|
+
* Input for `stream-broker.subscribeAudioChunks` (Phase 5 / D9). Audio ships
|
|
6800
|
+
* its bytes inline: a consumer asks the broker for the decoded audio-chunk
|
|
6801
|
+
* stream of one broker; the broker keeps a per-subscription bounded FIFO queue
|
|
6802
|
+
* the consumer drains via `pullAudioChunks`.
|
|
6877
6803
|
*/
|
|
6878
6804
|
var SubscribeAudioChunksInputSchema = object({
|
|
6879
6805
|
brokerId: string(),
|
|
@@ -6904,9 +6830,7 @@ var BrokerStatsSchema = object({
|
|
|
6904
6830
|
"stopped"
|
|
6905
6831
|
]),
|
|
6906
6832
|
inputFps: number(),
|
|
6907
|
-
decodeFps: number(),
|
|
6908
6833
|
encodedSubscribers: number(),
|
|
6909
|
-
decodedSubscribers: number(),
|
|
6910
6834
|
uptimeMs: number(),
|
|
6911
6835
|
bitrateKbps: number(),
|
|
6912
6836
|
idrIntervalMs: number(),
|
|
@@ -6919,14 +6843,6 @@ var BrokerStatsSchema = object({
|
|
|
6919
6843
|
preBufferMs: number(),
|
|
6920
6844
|
preBufferPackets: number(),
|
|
6921
6845
|
/**
|
|
6922
|
-
* Moleculer node id of the decoder provider currently servicing this
|
|
6923
|
-
* stream's decoded subscribers. `null` until the deferred decoder is
|
|
6924
|
-
* created (no decoded clients yet, or codec not detected). Surfaces the
|
|
6925
|
-
* runtime decoder placement so the UI can show "Decoder: <agent>" without
|
|
6926
|
-
* a separate cap call per broker.
|
|
6927
|
-
*/
|
|
6928
|
-
decoderNodeId: string().nullable(),
|
|
6929
|
-
/**
|
|
6930
6846
|
* Detected audio track parameters from the RTSP DESCRIBE / SDP. `null`
|
|
6931
6847
|
* when the stream has no audio track or the broker is in cold start.
|
|
6932
6848
|
* `supported = false` means the codec was detected but the local
|
|
@@ -10360,70 +10276,6 @@ var StorageLocationDeclarationSchema = object({
|
|
|
10360
10276
|
"backup"
|
|
10361
10277
|
]).optional()
|
|
10362
10278
|
});
|
|
10363
|
-
var DecoderStatsSchema = object({
|
|
10364
|
-
inputFps: number(),
|
|
10365
|
-
outputFps: number(),
|
|
10366
|
-
avgDecodeTimeMs: number(),
|
|
10367
|
-
droppedFrames: number(),
|
|
10368
|
-
/**
|
|
10369
|
-
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
10370
|
-
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
10371
|
-
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
10372
|
-
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
10373
|
-
*/
|
|
10374
|
-
lagMs: number().optional(),
|
|
10375
|
-
effectiveFps: number().optional(),
|
|
10376
|
-
adaptiveFps: number().optional()
|
|
10377
|
-
});
|
|
10378
|
-
var DecoderSessionConfigSchema = object({
|
|
10379
|
-
codec: string(),
|
|
10380
|
-
maxFps: number().default(0),
|
|
10381
|
-
outputFormat: _enum([
|
|
10382
|
-
"jpeg",
|
|
10383
|
-
"rgb",
|
|
10384
|
-
"bgr",
|
|
10385
|
-
"yuv420",
|
|
10386
|
-
"gray"
|
|
10387
|
-
]).default("jpeg"),
|
|
10388
|
-
scale: number().default(1),
|
|
10389
|
-
width: number().optional(),
|
|
10390
|
-
height: number().optional(),
|
|
10391
|
-
/**
|
|
10392
|
-
* Identifier of the camera this decoder session serves. Optional
|
|
10393
|
-
* because the cap is generic (any caller could request decode), but
|
|
10394
|
-
* stream-broker passes it so decoder logs include `deviceId` for
|
|
10395
|
-
* per-camera filtering when diagnosing failures (e.g. node-av
|
|
10396
|
-
* sendPacket errors on a single hung camera).
|
|
10397
|
-
*/
|
|
10398
|
-
deviceId: number().int().nonnegative().optional(),
|
|
10399
|
-
/**
|
|
10400
|
-
* Free-form tag for log scoping. Stream-broker uses
|
|
10401
|
-
* `broker:<deviceId>/<profile>`. Decoder session logger surfaces it
|
|
10402
|
-
* on every line so `grep tag=broker:5/high` filters one camera
|
|
10403
|
-
* profile cleanly.
|
|
10404
|
-
*/
|
|
10405
|
-
tag: string().optional(),
|
|
10406
|
-
/**
|
|
10407
|
-
* Where the session delivers decoded frames (Phase 5 / D9):
|
|
10408
|
-
*
|
|
10409
|
-
* - `'callback'` (default) — the legacy pixel path: decoded frames are
|
|
10410
|
-
* buffered as `DecodedFrame`s and drained via `pullFrames`.
|
|
10411
|
-
* - `'shm'` — the shared-memory frame plane: decoded frames are written
|
|
10412
|
-
* into an OS shared-memory ring and drained as zero-pixel
|
|
10413
|
-
* `FrameHandle`s via `pullHandles`. A session is one mode or the
|
|
10414
|
-
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
10415
|
-
* `pullHandles` returns nothing for a `'callback'` session.
|
|
10416
|
-
*/
|
|
10417
|
-
frameSink: _enum(["callback", "shm"]).default("callback"),
|
|
10418
|
-
/**
|
|
10419
|
-
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
10420
|
-
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
10421
|
-
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
10422
|
-
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
10423
|
-
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
10424
|
-
*/
|
|
10425
|
-
debug: boolean().optional()
|
|
10426
|
-
});
|
|
10427
10279
|
/**
|
|
10428
10280
|
* Per-component log CHANNELS — the gate a hot path consults, and the registry
|
|
10429
10281
|
* an addon declares its channels in.
|
|
@@ -13027,13 +12879,6 @@ var BrokerRtspClientSchema = object({
|
|
|
13027
12879
|
lastRtpAt: number(),
|
|
13028
12880
|
bytesSent: number()
|
|
13029
12881
|
});
|
|
13030
|
-
var BrokerDecodedClientSchema = object({
|
|
13031
|
-
tag: string(),
|
|
13032
|
-
subscribedAt: number(),
|
|
13033
|
-
maxFps: number(),
|
|
13034
|
-
framesDelivered: number(),
|
|
13035
|
-
framesDropped: number()
|
|
13036
|
-
});
|
|
13037
12882
|
var BrokerAudioClientSchema = object({
|
|
13038
12883
|
tag: string(),
|
|
13039
12884
|
subscribedAt: number(),
|
|
@@ -13125,7 +12970,6 @@ var BrokerEncodedClientSchema = object({
|
|
|
13125
12970
|
});
|
|
13126
12971
|
var BrokerClientsSchema = object({
|
|
13127
12972
|
rtsp: array(BrokerRtspClientSchema).readonly(),
|
|
13128
|
-
decoded: array(BrokerDecodedClientSchema).readonly(),
|
|
13129
12973
|
audio: array(BrokerAudioClientSchema).readonly(),
|
|
13130
12974
|
encoded: array(BrokerEncodedClientSchema).readonly(),
|
|
13131
12975
|
pipeClients: number(),
|
|
@@ -13617,11 +13461,7 @@ var streamBrokerCapability = {
|
|
|
13617
13461
|
listClients: method(object({ brokerId: string() }), BrokerClientsSchema),
|
|
13618
13462
|
killClient: method(object({
|
|
13619
13463
|
brokerId: string(),
|
|
13620
|
-
channel: _enum([
|
|
13621
|
-
"rtsp",
|
|
13622
|
-
"decoded",
|
|
13623
|
-
"audio"
|
|
13624
|
-
]),
|
|
13464
|
+
channel: _enum(["rtsp", "audio"]),
|
|
13625
13465
|
handle: string()
|
|
13626
13466
|
}), object({ killed: boolean() }), {
|
|
13627
13467
|
kind: "mutation",
|
|
@@ -13720,31 +13560,6 @@ var streamBrokerCapability = {
|
|
|
13720
13560
|
maxCount: number().int().positive().default(8)
|
|
13721
13561
|
}), array(DecodedAudioChunkSchema).readonly()),
|
|
13722
13562
|
unsubscribeAudioChunks: method(object({ subscriptionId: string() }), object({ released: boolean() }), { kind: "mutation" }),
|
|
13723
|
-
/**
|
|
13724
|
-
* ── Shared-memory frame plane (Phase 5 / D9) ──────────────────────
|
|
13725
|
-
*
|
|
13726
|
-
* The handle-based replacement for the live-object `IStreamBroker.
|
|
13727
|
-
* onDecodedFrame` callback path. A consumer:
|
|
13728
|
-
*
|
|
13729
|
-
* 1. `subscribeFrames({ brokerId, format })` — the broker spins up
|
|
13730
|
-
* (or reuses) a `frameSink: 'shm'` decoder session producing that
|
|
13731
|
-
* `format` and returns a `subscriptionId`.
|
|
13732
|
-
* 2. polls `pullFrameHandles({ subscriptionId, maxCount })` — drains
|
|
13733
|
-
* zero-pixel `FrameHandle[]`; each handle is fed to a
|
|
13734
|
-
* `FrameRingReader` that opens the named shm segment and reads the
|
|
13735
|
-
* pixels back zero-copy.
|
|
13736
|
-
* 3. `unsubscribeFrames({ subscriptionId })` on teardown.
|
|
13737
|
-
*
|
|
13738
|
-
* The broker keeps one shm ring per `(brokerId, format)` actually
|
|
13739
|
-
* requested — no broker-side `sharp` conversion. fps throttling is
|
|
13740
|
-
* implicit (latest-wins ring reads drop frames for a slow consumer).
|
|
13741
|
-
*/
|
|
13742
|
-
subscribeFrames: method(SubscribeFramesInputSchema, SubscribeFramesResultSchema, { kind: "mutation" }),
|
|
13743
|
-
pullFrameHandles: method(object({
|
|
13744
|
-
subscriptionId: string(),
|
|
13745
|
-
maxCount: number().int().positive().default(4)
|
|
13746
|
-
}), array(FrameHandleSchema).readonly()),
|
|
13747
|
-
unsubscribeFrames: method(object({ subscriptionId: string() }), object({ released: boolean() }), { kind: "mutation" }),
|
|
13748
13563
|
setPreBufferDuration: method(object({
|
|
13749
13564
|
brokerId: string(),
|
|
13750
13565
|
seconds: number().min(0).max(30)
|
|
@@ -15460,72 +15275,18 @@ id: union([string(), number()]) }), {
|
|
|
15460
15275
|
})
|
|
15461
15276
|
}
|
|
15462
15277
|
};
|
|
15463
|
-
/**
|
|
15464
|
-
* shm ring usage stats for a `frameSink: 'shm'` decoder session —
|
|
15465
|
-
* exposed via `decoder.getShmStats` so downstream consumers can
|
|
15466
|
-
* observe ring pressure (slot count, byte budget, hit/miss ratio).
|
|
15467
|
-
*/
|
|
15468
|
-
var ShmRingStatsSchema = object({
|
|
15469
|
-
sessionId: string(),
|
|
15470
|
-
slotCount: number().int(),
|
|
15471
|
-
slotByteLength: number().int(),
|
|
15472
|
-
segmentBytes: number().int(),
|
|
15473
|
-
budgetMb: number().int(),
|
|
15474
|
-
framesWritten: number().int(),
|
|
15475
|
-
getFrameHits: number().int(),
|
|
15476
|
-
getFrameMisses: number().int()
|
|
15477
|
-
});
|
|
15478
15278
|
var decoderCapability = {
|
|
15479
15279
|
name: "decoder",
|
|
15480
15280
|
scope: "system",
|
|
15481
15281
|
mode: "singleton",
|
|
15482
15282
|
preferredProvider: "decoder-nodeav",
|
|
15483
15283
|
methods: {
|
|
15484
|
-
supportsCodec: method(object({ codec: string() }), boolean()),
|
|
15485
15284
|
getInfo: method(_void(), object({
|
|
15486
15285
|
id: string(),
|
|
15487
15286
|
name: string(),
|
|
15488
|
-
isPullMode: boolean().optional(),
|
|
15489
|
-
priority: number().optional(),
|
|
15490
15287
|
hwaccel: string().optional(),
|
|
15491
15288
|
probedBestHwaccel: string().optional()
|
|
15492
15289
|
})),
|
|
15493
|
-
createSession: method(DecoderSessionConfigSchema, object({
|
|
15494
|
-
sessionId: string(),
|
|
15495
|
-
nodeId: string()
|
|
15496
|
-
})),
|
|
15497
|
-
destroySession: method(object({ sessionId: string() }), _void()),
|
|
15498
|
-
pushPacket: method(object({
|
|
15499
|
-
sessionId: string(),
|
|
15500
|
-
packet: EncodedPacketSchema
|
|
15501
|
-
}), _void()),
|
|
15502
|
-
openStream: method(object({
|
|
15503
|
-
sessionId: string(),
|
|
15504
|
-
url: string()
|
|
15505
|
-
}), _void()),
|
|
15506
|
-
pullFrames: method(object({
|
|
15507
|
-
sessionId: string(),
|
|
15508
|
-
maxCount: number().default(1),
|
|
15509
|
-
waitMs: number().optional()
|
|
15510
|
-
}), array(DecodedFrameSchema)),
|
|
15511
|
-
pullHandles: method(object({
|
|
15512
|
-
sessionId: string(),
|
|
15513
|
-
maxCount: number().default(1),
|
|
15514
|
-
waitMs: number().optional()
|
|
15515
|
-
}), array(FrameHandleSchema)),
|
|
15516
|
-
getFrame: method(object({ handle: FrameHandleSchema }), DecodedFrameSchema.nullable()),
|
|
15517
|
-
getShmStats: method(object({ sessionId: string() }), ShmRingStatsSchema.nullable()),
|
|
15518
|
-
updateConfig: method(object({
|
|
15519
|
-
sessionId: string(),
|
|
15520
|
-
config: DecoderSessionConfigSchema.partial()
|
|
15521
|
-
}), _void()),
|
|
15522
|
-
getStats: method(object({ sessionId: string() }), DecoderStatsSchema),
|
|
15523
|
-
listActiveSessions: method(_void(), array(object({
|
|
15524
|
-
sessionId: string(),
|
|
15525
|
-
codec: string(),
|
|
15526
|
-
outputFormat: string(),
|
|
15527
|
-
createdAtMs: number()
|
|
15528
|
-
})).readonly()),
|
|
15529
15290
|
/**
|
|
15530
15291
|
* Re-run the host platform-probe for the decoder's hwaccel backend
|
|
15531
15292
|
* and write the detected value into the addon's own global
|
|
@@ -24767,8 +24528,8 @@ Object.freeze(Object.fromEntries([{
|
|
|
24767
24528
|
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
24768
24529
|
stepId: "face-embedding",
|
|
24769
24530
|
key: "minLandmarkFaceSize",
|
|
24770
|
-
label: "Min face size
|
|
24771
|
-
description: "
|
|
24531
|
+
label: "Min face size to embed (detection-frame px)",
|
|
24532
|
+
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.",
|
|
24772
24533
|
type: "slider",
|
|
24773
24534
|
min: 0,
|
|
24774
24535
|
max: 64,
|
|
@@ -29343,14 +29104,15 @@ var RunnerLocalLoadSchema = object({
|
|
|
29343
29104
|
* Per-inference-device live load (multi-device C4). One entry per deviceKey
|
|
29344
29105
|
* this runner currently has attached cameras on, so the orchestrator's second
|
|
29345
29106
|
* `balance()` pass (over a node's devices) weights on real per-pool session
|
|
29346
|
-
* counts. Empty on single-device / pre-multi-device runners.
|
|
29347
|
-
* per
|
|
29107
|
+
* counts. Empty on single-device / pre-multi-device runners. There is no
|
|
29108
|
+
* per-device queue depth: the inference pool's backlog has no accessor, and
|
|
29109
|
+
* a field that always read 0 was removed rather than shown as a measurement
|
|
29110
|
+
* (D762).
|
|
29348
29111
|
*/
|
|
29349
29112
|
devices: array(object({
|
|
29350
29113
|
deviceKey: string(),
|
|
29351
29114
|
backend: string(),
|
|
29352
|
-
attachedCameras: number()
|
|
29353
|
-
queueDepthTotal: number()
|
|
29115
|
+
attachedCameras: number()
|
|
29354
29116
|
})).default([]),
|
|
29355
29117
|
/** Hardware capability flags reported by this node. */
|
|
29356
29118
|
hardware: object({
|
|
@@ -29865,7 +29627,10 @@ var PipelineAssignmentSchema = object({
|
|
|
29865
29627
|
});
|
|
29866
29628
|
/**
|
|
29867
29629
|
* Per-agent load summary surfaced to the load balancer + dashboards.
|
|
29868
|
-
* Aggregated from each runner's `getLocalLoad` cap call.
|
|
29630
|
+
* Aggregated from each runner's `getLocalLoad` cap call. In the
|
|
29631
|
+
* `getAgentLoad` report, a single-device node's default-pool sessions (no
|
|
29632
|
+
* `deviceKey`) are credited to its one eligible device in `load.devices` —
|
|
29633
|
+
* the default pool IS that device (D745); the balancer's census stays raw.
|
|
29869
29634
|
*/
|
|
29870
29635
|
var AgentLoadSummarySchema = object({
|
|
29871
29636
|
nodeId: string(),
|
|
@@ -29954,8 +29719,14 @@ var CameraBrokerStatusSchema = object({
|
|
|
29954
29719
|
width: number(),
|
|
29955
29720
|
height: number(),
|
|
29956
29721
|
subscribers: number(),
|
|
29957
|
-
|
|
29958
|
-
|
|
29722
|
+
/**
|
|
29723
|
+
* Encoded packets/s the broker receives from the camera. null when the
|
|
29724
|
+
* broker's stats read failed — unknown, never 0 (a 0 here reads as a stall).
|
|
29725
|
+
* There is no output rate: decoding runs in the session decode workers, not
|
|
29726
|
+
* in the broker, so the broker's own decoded-frame rate is 0 on every live
|
|
29727
|
+
* camera and is not served (D758).
|
|
29728
|
+
*/
|
|
29729
|
+
inFps: number().nullable()
|
|
29959
29730
|
})).readonly(),
|
|
29960
29731
|
webrtcSessions: number(),
|
|
29961
29732
|
rtspRestream: boolean()
|
|
@@ -33752,8 +33523,6 @@ var WebrtcStreamChoiceSchema = object({
|
|
|
33752
33523
|
]).nullable(),
|
|
33753
33524
|
/** Input FPS from the camera (null for adaptive). */
|
|
33754
33525
|
inputFps: number().nullable(),
|
|
33755
|
-
/** Decoded FPS (null for adaptive). */
|
|
33756
|
-
decodeFps: number().nullable(),
|
|
33757
33526
|
/** Bitrate in kbps (null for adaptive). */
|
|
33758
33527
|
bitrateKbps: number().nullable()
|
|
33759
33528
|
});
|
|
@@ -34522,6 +34291,59 @@ var AddonAutoUpdateSchema = ChannelWithInheritSchema;
|
|
|
34522
34291
|
var RestartAddonResultSchema = unknown();
|
|
34523
34292
|
var InstallPackageResultSchema = unknown();
|
|
34524
34293
|
var ReloadPackagesResultSchema = unknown();
|
|
34294
|
+
/**
|
|
34295
|
+
* What an uninstall did on ONE node.
|
|
34296
|
+
* - `uninstalled` — removed: runner(s) stopped, caps gone, code deleted.
|
|
34297
|
+
* - `not-installed` — the node did not have it (nothing to do).
|
|
34298
|
+
* - `refused` — protected / bootstrap package; nothing touched.
|
|
34299
|
+
* - `failed` — attempted and did not complete; `error` says why.
|
|
34300
|
+
* - `pending-reconnect` — the node is OFFLINE: its record was pruned so the
|
|
34301
|
+
* back-fill never returns the package, and the stale-addon sweep removes the
|
|
34302
|
+
* copy when the node registers again (only once the hub no longer has it).
|
|
34303
|
+
*/
|
|
34304
|
+
var UninstallNodeOutcomeSchema = _enum([
|
|
34305
|
+
"uninstalled",
|
|
34306
|
+
"not-installed",
|
|
34307
|
+
"refused",
|
|
34308
|
+
"failed",
|
|
34309
|
+
"pending-reconnect"
|
|
34310
|
+
]);
|
|
34311
|
+
var UninstallNodeResultSchema = object({
|
|
34312
|
+
nodeId: string(),
|
|
34313
|
+
outcome: UninstallNodeOutcomeSchema,
|
|
34314
|
+
error: string().optional(),
|
|
34315
|
+
addonIds: array(string()).readonly(),
|
|
34316
|
+
runnersStopped: array(string()).readonly(),
|
|
34317
|
+
warnings: array(string()).readonly()
|
|
34318
|
+
});
|
|
34319
|
+
var UninstallPackageResultSchema = object({
|
|
34320
|
+
/** Every targeted node ended `uninstalled`, `not-installed` or `pending-reconnect`. */
|
|
34321
|
+
success: boolean(),
|
|
34322
|
+
packageName: string(),
|
|
34323
|
+
results: array(UninstallNodeResultSchema).readonly()
|
|
34324
|
+
});
|
|
34325
|
+
/**
|
|
34326
|
+
* `unreachable` lists online agents whose status read FAILED — absence from
|
|
34327
|
+
* `installations` is only "not installed" for a node that answered (D315).
|
|
34328
|
+
*/
|
|
34329
|
+
var PackageInstallationsSchema = object({
|
|
34330
|
+
installations: array(object({
|
|
34331
|
+
packageName: string(),
|
|
34332
|
+
nodeId: string(),
|
|
34333
|
+
nodeName: string(),
|
|
34334
|
+
isHub: boolean(),
|
|
34335
|
+
isOnline: boolean(),
|
|
34336
|
+
version: string().nullable(),
|
|
34337
|
+
addonIds: array(string()).readonly(),
|
|
34338
|
+
source: _enum(["live", "recorded"]),
|
|
34339
|
+
/** The hub installs this package too. `false` on an agent row = an orphan. */
|
|
34340
|
+
onHub: boolean()
|
|
34341
|
+
})).readonly(),
|
|
34342
|
+
unreachable: array(object({
|
|
34343
|
+
nodeId: string(),
|
|
34344
|
+
error: string()
|
|
34345
|
+
})).readonly()
|
|
34346
|
+
});
|
|
34525
34347
|
var BulkUpdateItemStatusSchema = _enum([
|
|
34526
34348
|
"queued",
|
|
34527
34349
|
"updating",
|
|
@@ -34630,10 +34452,31 @@ var addonsCapability = {
|
|
|
34630
34452
|
}),
|
|
34631
34453
|
isWorkspaceAvailable: method(_void(), boolean()),
|
|
34632
34454
|
listWorkspacePackages: method(_void(), array(unknown()).readonly()),
|
|
34633
|
-
|
|
34455
|
+
/**
|
|
34456
|
+
* Uninstall a package. `nodeId` omitted (or `'hub'`) uninstalls on the hub
|
|
34457
|
+
* — the original behaviour, which still THROWS on failure. An agent
|
|
34458
|
+
* `nodeId` removes it from that agent through `$agent.undeploy`
|
|
34459
|
+
* (runners stopped, caps deregistered, code deleted) and prunes the node's
|
|
34460
|
+
* declared roster so the back-fill never returns it. `everywhere: true`
|
|
34461
|
+
* does both for every node that has it (agents first, hub last); offline
|
|
34462
|
+
* nodes answer `pending-reconnect`. Node-level failures in those two modes
|
|
34463
|
+
* are REPORTED per node, never thrown. Protected packages are refused.
|
|
34464
|
+
*/
|
|
34465
|
+
uninstallPackage: method(object({
|
|
34466
|
+
packageName: string().min(1),
|
|
34467
|
+
nodeId: string().optional(),
|
|
34468
|
+
everywhere: boolean().optional()
|
|
34469
|
+
}), UninstallPackageResultSchema, {
|
|
34634
34470
|
kind: "mutation",
|
|
34635
34471
|
auth: "admin"
|
|
34636
34472
|
}),
|
|
34473
|
+
/**
|
|
34474
|
+
* Which nodes have a package (or, with no `packageName`, every package on
|
|
34475
|
+
* every node). Hub from its installer, online agents from `$agent.status`
|
|
34476
|
+
* (in parallel, bounded), offline agents from their declared roster.
|
|
34477
|
+
* Drives the uninstall confirm and the Addons page's "not on the hub" list.
|
|
34478
|
+
*/
|
|
34479
|
+
listInstallations: method(object({ packageName: string().optional() }), PackageInstallationsSchema, { auth: "admin" }),
|
|
34637
34480
|
reloadPackages: method(_void(), ReloadPackagesResultSchema, {
|
|
34638
34481
|
kind: "mutation",
|
|
34639
34482
|
auth: "admin"
|
|
@@ -47161,6 +47004,12 @@ Object.freeze({
|
|
|
47161
47004
|
addonId: null,
|
|
47162
47005
|
access: "view"
|
|
47163
47006
|
},
|
|
47007
|
+
"addons.listInstallations": {
|
|
47008
|
+
capName: "addons",
|
|
47009
|
+
capScope: "system",
|
|
47010
|
+
addonId: null,
|
|
47011
|
+
access: "view"
|
|
47012
|
+
},
|
|
47164
47013
|
"addons.listJobs": {
|
|
47165
47014
|
capName: "addons",
|
|
47166
47015
|
capScope: "system",
|
|
@@ -48343,90 +48192,18 @@ Object.freeze({
|
|
|
48343
48192
|
addonId: null,
|
|
48344
48193
|
access: "create"
|
|
48345
48194
|
},
|
|
48346
|
-
"decoder.createSession": {
|
|
48347
|
-
capName: "decoder",
|
|
48348
|
-
capScope: "system",
|
|
48349
|
-
addonId: null,
|
|
48350
|
-
access: "view"
|
|
48351
|
-
},
|
|
48352
|
-
"decoder.destroySession": {
|
|
48353
|
-
capName: "decoder",
|
|
48354
|
-
capScope: "system",
|
|
48355
|
-
addonId: null,
|
|
48356
|
-
access: "delete"
|
|
48357
|
-
},
|
|
48358
|
-
"decoder.getFrame": {
|
|
48359
|
-
capName: "decoder",
|
|
48360
|
-
capScope: "system",
|
|
48361
|
-
addonId: null,
|
|
48362
|
-
access: "view"
|
|
48363
|
-
},
|
|
48364
48195
|
"decoder.getInfo": {
|
|
48365
48196
|
capName: "decoder",
|
|
48366
48197
|
capScope: "system",
|
|
48367
48198
|
addonId: null,
|
|
48368
48199
|
access: "view"
|
|
48369
48200
|
},
|
|
48370
|
-
"decoder.getShmStats": {
|
|
48371
|
-
capName: "decoder",
|
|
48372
|
-
capScope: "system",
|
|
48373
|
-
addonId: null,
|
|
48374
|
-
access: "view"
|
|
48375
|
-
},
|
|
48376
|
-
"decoder.getStats": {
|
|
48377
|
-
capName: "decoder",
|
|
48378
|
-
capScope: "system",
|
|
48379
|
-
addonId: null,
|
|
48380
|
-
access: "view"
|
|
48381
|
-
},
|
|
48382
|
-
"decoder.listActiveSessions": {
|
|
48383
|
-
capName: "decoder",
|
|
48384
|
-
capScope: "system",
|
|
48385
|
-
addonId: null,
|
|
48386
|
-
access: "view"
|
|
48387
|
-
},
|
|
48388
|
-
"decoder.openStream": {
|
|
48389
|
-
capName: "decoder",
|
|
48390
|
-
capScope: "system",
|
|
48391
|
-
addonId: null,
|
|
48392
|
-
access: "view"
|
|
48393
|
-
},
|
|
48394
|
-
"decoder.pullFrames": {
|
|
48395
|
-
capName: "decoder",
|
|
48396
|
-
capScope: "system",
|
|
48397
|
-
addonId: null,
|
|
48398
|
-
access: "view"
|
|
48399
|
-
},
|
|
48400
|
-
"decoder.pullHandles": {
|
|
48401
|
-
capName: "decoder",
|
|
48402
|
-
capScope: "system",
|
|
48403
|
-
addonId: null,
|
|
48404
|
-
access: "view"
|
|
48405
|
-
},
|
|
48406
|
-
"decoder.pushPacket": {
|
|
48407
|
-
capName: "decoder",
|
|
48408
|
-
capScope: "system",
|
|
48409
|
-
addonId: null,
|
|
48410
|
-
access: "view"
|
|
48411
|
-
},
|
|
48412
48201
|
"decoder.reprobeHwaccel": {
|
|
48413
48202
|
capName: "decoder",
|
|
48414
48203
|
capScope: "system",
|
|
48415
48204
|
addonId: null,
|
|
48416
48205
|
access: "create"
|
|
48417
48206
|
},
|
|
48418
|
-
"decoder.supportsCodec": {
|
|
48419
|
-
capName: "decoder",
|
|
48420
|
-
capScope: "system",
|
|
48421
|
-
addonId: null,
|
|
48422
|
-
access: "view"
|
|
48423
|
-
},
|
|
48424
|
-
"decoder.updateConfig": {
|
|
48425
|
-
capName: "decoder",
|
|
48426
|
-
capScope: "system",
|
|
48427
|
-
addonId: null,
|
|
48428
|
-
access: "view"
|
|
48429
|
-
},
|
|
48430
48207
|
"detectionPipeline.applyDeviceSettingsPatch": {
|
|
48431
48208
|
capName: "detection-pipeline",
|
|
48432
48209
|
capScope: "device",
|
|
@@ -53473,12 +53250,6 @@ Object.freeze({
|
|
|
53473
53250
|
addonId: null,
|
|
53474
53251
|
access: "view"
|
|
53475
53252
|
},
|
|
53476
|
-
"streamBroker.pullFrameHandles": {
|
|
53477
|
-
capName: "stream-broker",
|
|
53478
|
-
capScope: "system",
|
|
53479
|
-
addonId: null,
|
|
53480
|
-
access: "view"
|
|
53481
|
-
},
|
|
53482
53253
|
"streamBroker.regenerateRtspToken": {
|
|
53483
53254
|
capName: "stream-broker",
|
|
53484
53255
|
capScope: "system",
|
|
@@ -53545,12 +53316,6 @@ Object.freeze({
|
|
|
53545
53316
|
addonId: null,
|
|
53546
53317
|
access: "create"
|
|
53547
53318
|
},
|
|
53548
|
-
"streamBroker.subscribeFrames": {
|
|
53549
|
-
capName: "stream-broker",
|
|
53550
|
-
capScope: "system",
|
|
53551
|
-
addonId: null,
|
|
53552
|
-
access: "create"
|
|
53553
|
-
},
|
|
53554
53319
|
"streamBroker.unassignProfile": {
|
|
53555
53320
|
capName: "stream-broker",
|
|
53556
53321
|
capScope: "system",
|
|
@@ -53563,12 +53328,6 @@ Object.freeze({
|
|
|
53563
53328
|
addonId: null,
|
|
53564
53329
|
access: "create"
|
|
53565
53330
|
},
|
|
53566
|
-
"streamBroker.unsubscribeFrames": {
|
|
53567
|
-
capName: "stream-broker",
|
|
53568
|
-
capScope: "system",
|
|
53569
|
-
addonId: null,
|
|
53570
|
-
access: "create"
|
|
53571
|
-
},
|
|
53572
53331
|
"streamCatalog.getCatalog": {
|
|
53573
53332
|
capName: "stream-catalog",
|
|
53574
53333
|
capScope: "device",
|
|
@@ -56258,11 +56017,6 @@ Object.freeze({
|
|
|
56258
56017
|
form: "single",
|
|
56259
56018
|
optional: false
|
|
56260
56019
|
}],
|
|
56261
|
-
"decoder.createSession": [{
|
|
56262
|
-
name: "deviceId",
|
|
56263
|
-
form: "single",
|
|
56264
|
-
optional: true
|
|
56265
|
-
}],
|
|
56266
56020
|
"detectionPipeline.applyDeviceSettingsPatch": [{
|
|
56267
56021
|
name: "deviceId",
|
|
56268
56022
|
form: "single",
|