@camstack/addon-advanced-notifier 1.1.17 → 1.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +288 -5
- package/dist/addon.mjs +288 -5
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -4632,7 +4632,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4632
4632
|
return inst;
|
|
4633
4633
|
}
|
|
4634
4634
|
//#endregion
|
|
4635
|
-
//#region ../types/dist/sleep-
|
|
4635
|
+
//#region ../types/dist/sleep-CZDdRBua.mjs
|
|
4636
4636
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4637
4637
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4638
4638
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -7227,7 +7227,16 @@ var DecoderStatsSchema = object({
|
|
|
7227
7227
|
inputFps: number(),
|
|
7228
7228
|
outputFps: number(),
|
|
7229
7229
|
avgDecodeTimeMs: number(),
|
|
7230
|
-
droppedFrames: number()
|
|
7230
|
+
droppedFrames: number(),
|
|
7231
|
+
/**
|
|
7232
|
+
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
7233
|
+
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
7234
|
+
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
7235
|
+
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
7236
|
+
*/
|
|
7237
|
+
lagMs: number().optional(),
|
|
7238
|
+
effectiveFps: number().optional(),
|
|
7239
|
+
adaptiveFps: number().optional()
|
|
7231
7240
|
});
|
|
7232
7241
|
var DecoderSessionConfigSchema = object({
|
|
7233
7242
|
codec: string(),
|
|
@@ -7268,7 +7277,15 @@ var DecoderSessionConfigSchema = object({
|
|
|
7268
7277
|
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
7269
7278
|
* `pullHandles` returns nothing for a `'callback'` session.
|
|
7270
7279
|
*/
|
|
7271
|
-
frameSink: _enum(["callback", "shm"]).default("callback")
|
|
7280
|
+
frameSink: _enum(["callback", "shm"]).default("callback"),
|
|
7281
|
+
/**
|
|
7282
|
+
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
7283
|
+
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
7284
|
+
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
7285
|
+
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
7286
|
+
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
7287
|
+
*/
|
|
7288
|
+
debug: boolean().optional()
|
|
7272
7289
|
});
|
|
7273
7290
|
var EncodeProfileSchema = object({
|
|
7274
7291
|
video: object({
|
|
@@ -9440,6 +9457,75 @@ DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _vo
|
|
|
9440
9457
|
auth: "admin"
|
|
9441
9458
|
});
|
|
9442
9459
|
/**
|
|
9460
|
+
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
9461
|
+
* shared by reolink / hikvision / amcrest. Models the common firmware
|
|
9462
|
+
* surface: the IR-cut switching MODE plus the two knobs that gate it
|
|
9463
|
+
* (photocell `sensitivity` + `switchDelaySec`). Each vendor maps these
|
|
9464
|
+
* onto its own ISAPI / Baichuan / Dahua-CGI fields; the cap standardises
|
|
9465
|
+
* the shape so ONE derived-form renders every camera.
|
|
9466
|
+
*
|
|
9467
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9468
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9469
|
+
* injected from `status`) reports the live values, and a single
|
|
9470
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9471
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9472
|
+
* routing from this surface.
|
|
9473
|
+
*/
|
|
9474
|
+
/** IR-cut switching mode. `schedule` = time-of-day table configured on the camera. */
|
|
9475
|
+
var DayNightModeSchema = _enum([
|
|
9476
|
+
"auto",
|
|
9477
|
+
"day",
|
|
9478
|
+
"night",
|
|
9479
|
+
"schedule"
|
|
9480
|
+
]);
|
|
9481
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9482
|
+
* getOptions availability convention. Normalized values are 0–100. */
|
|
9483
|
+
var NormalizedRangeSchema$1 = object({
|
|
9484
|
+
min: number(),
|
|
9485
|
+
max: number(),
|
|
9486
|
+
step: number()
|
|
9487
|
+
});
|
|
9488
|
+
object({
|
|
9489
|
+
mode: DayNightModeSchema,
|
|
9490
|
+
/** IR-cut trigger sensitivity, NORMALIZED 0–100 (higher = switches to night sooner). */
|
|
9491
|
+
sensitivity: number().optional(),
|
|
9492
|
+
/** Delay before the IR-cut filter flips, in seconds. */
|
|
9493
|
+
switchDelaySec: number().optional(),
|
|
9494
|
+
lastFetchedAt: number()
|
|
9495
|
+
});
|
|
9496
|
+
/**
|
|
9497
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
9498
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
9499
|
+
* (normalized 0–100); the mode choice-set as an array. A provider returns
|
|
9500
|
+
* honest, camera-probed values — never hardcoded.
|
|
9501
|
+
*/
|
|
9502
|
+
var DayNightOptionsSchema = object({
|
|
9503
|
+
/** Modes this camera accepts. Empty → the camera has no configurable day/night mode. */
|
|
9504
|
+
modes: array(DayNightModeSchema),
|
|
9505
|
+
supportsSensitivity: boolean(),
|
|
9506
|
+
/** Present when `supportsSensitivity` — the normalized 0–100 range. */
|
|
9507
|
+
sensitivity: NormalizedRangeSchema$1.optional(),
|
|
9508
|
+
supportsSwitchDelay: boolean(),
|
|
9509
|
+
/** Present when `supportsSwitchDelay` — the allowed delay range in seconds. */
|
|
9510
|
+
switchDelaySec: NormalizedRangeSchema$1.optional()
|
|
9511
|
+
});
|
|
9512
|
+
/**
|
|
9513
|
+
* Partial change to the day/night config — every field optional. A
|
|
9514
|
+
* provider ignores fields it does not support.
|
|
9515
|
+
*/
|
|
9516
|
+
var DayNightSettingsPatchSchema = object({
|
|
9517
|
+
mode: DayNightModeSchema.optional(),
|
|
9518
|
+
sensitivity: number().optional(),
|
|
9519
|
+
switchDelaySec: number().optional()
|
|
9520
|
+
});
|
|
9521
|
+
DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema), method(object({
|
|
9522
|
+
deviceId: number(),
|
|
9523
|
+
settings: DayNightSettingsPatchSchema
|
|
9524
|
+
}), _void(), {
|
|
9525
|
+
kind: "mutation",
|
|
9526
|
+
auth: "admin"
|
|
9527
|
+
});
|
|
9528
|
+
/**
|
|
9443
9529
|
* Identity envelope for a device's upstream-system metadata.
|
|
9444
9530
|
*
|
|
9445
9531
|
* Two jobs:
|
|
@@ -9795,6 +9881,130 @@ object({
|
|
|
9795
9881
|
});
|
|
9796
9882
|
DeviceType.Image;
|
|
9797
9883
|
/**
|
|
9884
|
+
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
9885
|
+
* cap shared by reolink / hikvision / amcrest. Models the common ISP
|
|
9886
|
+
* surface: the four picture sliders (brightness / contrast / saturation /
|
|
9887
|
+
* sharpness), orientation (mirror / flip / rotate), white-balance,
|
|
9888
|
+
* exposure and backlight-compensation modes.
|
|
9889
|
+
*
|
|
9890
|
+
* NORMALIZATION: every slider is a normalized int 0–100. Vendors expose
|
|
9891
|
+
* these natively as 0–100 or 0–255 (or other ranges); each provider maps
|
|
9892
|
+
* its native range to/from this normalized 0–100 space so the cap surface
|
|
9893
|
+
* (and the derived form) is identical across cameras. `warmth` (manual
|
|
9894
|
+
* white-balance) is likewise normalized 0–100.
|
|
9895
|
+
*
|
|
9896
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9897
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9898
|
+
* injected from `status`) reports the live values, and a single
|
|
9899
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9900
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9901
|
+
* routing from this surface.
|
|
9902
|
+
*/
|
|
9903
|
+
/** Sensor/image rotation, degrees clockwise. */
|
|
9904
|
+
var ImageRotateSchema = _enum([
|
|
9905
|
+
"0",
|
|
9906
|
+
"90",
|
|
9907
|
+
"180",
|
|
9908
|
+
"270"
|
|
9909
|
+
]);
|
|
9910
|
+
/** White-balance mode. `manual` unlocks the normalized `warmth` knob. */
|
|
9911
|
+
var WhiteBalanceModeSchema = _enum(["auto", "manual"]);
|
|
9912
|
+
/** Exposure mode. */
|
|
9913
|
+
var ExposureModeSchema = _enum(["auto", "manual"]);
|
|
9914
|
+
/**
|
|
9915
|
+
* Backlight-compensation mode:
|
|
9916
|
+
* - `off` — disabled
|
|
9917
|
+
* - `blc` — backlight compensation
|
|
9918
|
+
* - `wdr` — wide dynamic range
|
|
9919
|
+
* - `hlc` — highlight compensation
|
|
9920
|
+
*/
|
|
9921
|
+
var BacklightModeSchema = _enum([
|
|
9922
|
+
"off",
|
|
9923
|
+
"blc",
|
|
9924
|
+
"wdr",
|
|
9925
|
+
"hlc"
|
|
9926
|
+
]);
|
|
9927
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9928
|
+
* getOptions availability convention. Slider values are normalized 0–100. */
|
|
9929
|
+
var NormalizedRangeSchema = object({
|
|
9930
|
+
min: number(),
|
|
9931
|
+
max: number(),
|
|
9932
|
+
step: number()
|
|
9933
|
+
});
|
|
9934
|
+
object({
|
|
9935
|
+
/** Normalized 0–100. */
|
|
9936
|
+
brightness: number().optional(),
|
|
9937
|
+
/** Normalized 0–100. */
|
|
9938
|
+
contrast: number().optional(),
|
|
9939
|
+
/** Normalized 0–100. */
|
|
9940
|
+
saturation: number().optional(),
|
|
9941
|
+
/** Normalized 0–100. */
|
|
9942
|
+
sharpness: number().optional(),
|
|
9943
|
+
mirror: boolean().optional(),
|
|
9944
|
+
flip: boolean().optional(),
|
|
9945
|
+
rotate: ImageRotateSchema.optional(),
|
|
9946
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
9947
|
+
/** Manual white-balance warmth, NORMALIZED 0–100. Meaningful only when `whiteBalance === 'manual'`. */
|
|
9948
|
+
warmth: number().optional(),
|
|
9949
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
9950
|
+
backlightMode: BacklightModeSchema.optional(),
|
|
9951
|
+
lastFetchedAt: number()
|
|
9952
|
+
});
|
|
9953
|
+
/**
|
|
9954
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
9955
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
9956
|
+
* (the normalized 0–100 range); enums as arrays of supported values (empty
|
|
9957
|
+
* array → control hidden). A provider returns honest, camera-probed values
|
|
9958
|
+
* — never hardcoded.
|
|
9959
|
+
*/
|
|
9960
|
+
var ImageSettingsOptionsSchema = object({
|
|
9961
|
+
supportsBrightness: boolean(),
|
|
9962
|
+
brightness: NormalizedRangeSchema.optional(),
|
|
9963
|
+
supportsContrast: boolean(),
|
|
9964
|
+
contrast: NormalizedRangeSchema.optional(),
|
|
9965
|
+
supportsSaturation: boolean(),
|
|
9966
|
+
saturation: NormalizedRangeSchema.optional(),
|
|
9967
|
+
supportsSharpness: boolean(),
|
|
9968
|
+
sharpness: NormalizedRangeSchema.optional(),
|
|
9969
|
+
supportsMirror: boolean(),
|
|
9970
|
+
supportsFlip: boolean(),
|
|
9971
|
+
/** Supported rotation values. Empty → rotation not configurable. */
|
|
9972
|
+
rotateOptions: array(ImageRotateSchema),
|
|
9973
|
+
/** Supported white-balance modes. Empty → white-balance not configurable. */
|
|
9974
|
+
whiteBalanceModes: array(WhiteBalanceModeSchema),
|
|
9975
|
+
supportsWarmth: boolean(),
|
|
9976
|
+
/** Present when `supportsWarmth` — the normalized 0–100 range. */
|
|
9977
|
+
warmth: NormalizedRangeSchema.optional(),
|
|
9978
|
+
/** Supported exposure modes. Empty → exposure not configurable. */
|
|
9979
|
+
exposureModes: array(ExposureModeSchema),
|
|
9980
|
+
/** Supported backlight modes. Empty → backlight-compensation not configurable. */
|
|
9981
|
+
backlightModes: array(BacklightModeSchema)
|
|
9982
|
+
});
|
|
9983
|
+
/**
|
|
9984
|
+
* Partial change to the image config — every field optional. Slider values
|
|
9985
|
+
* are normalized 0–100. A provider ignores fields it does not support.
|
|
9986
|
+
*/
|
|
9987
|
+
var ImageSettingsPatchSchema = object({
|
|
9988
|
+
brightness: number().optional(),
|
|
9989
|
+
contrast: number().optional(),
|
|
9990
|
+
saturation: number().optional(),
|
|
9991
|
+
sharpness: number().optional(),
|
|
9992
|
+
mirror: boolean().optional(),
|
|
9993
|
+
flip: boolean().optional(),
|
|
9994
|
+
rotate: ImageRotateSchema.optional(),
|
|
9995
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
9996
|
+
warmth: number().optional(),
|
|
9997
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
9998
|
+
backlightMode: BacklightModeSchema.optional()
|
|
9999
|
+
});
|
|
10000
|
+
DeviceType.Camera, method(object({ deviceId: number() }), ImageSettingsOptionsSchema), method(object({
|
|
10001
|
+
deviceId: number(),
|
|
10002
|
+
settings: ImageSettingsPatchSchema
|
|
10003
|
+
}), _void(), {
|
|
10004
|
+
kind: "mutation",
|
|
10005
|
+
auth: "admin"
|
|
10006
|
+
});
|
|
10007
|
+
/**
|
|
9798
10008
|
* Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
|
|
9799
10009
|
* with a mowing lifecycle plus a dock action.
|
|
9800
10010
|
*
|
|
@@ -10689,6 +10899,16 @@ var RunnerCameraConfigSchema = object({
|
|
|
10689
10899
|
* this gate is bypassed.
|
|
10690
10900
|
*/
|
|
10691
10901
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
10902
|
+
/**
|
|
10903
|
+
* Master toggle for the occupancy re-check. When `false` (DEFAULT) the runner
|
|
10904
|
+
* never arms the periodic recheck timer, regardless of `occupancyRecheckSec` —
|
|
10905
|
+
* this is off by default because the recheck re-subscribes a detection session
|
|
10906
|
+
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
10907
|
+
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
10908
|
+
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
10909
|
+
* (and only render) when this is enabled.
|
|
10910
|
+
*/
|
|
10911
|
+
occupancyRecheckEnabled: boolean().default(false),
|
|
10692
10912
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
10693
10913
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
10694
10914
|
/**
|
|
@@ -12997,7 +13217,9 @@ method(object({ codec: string() }), boolean()), method(_void(), object({
|
|
|
12997
13217
|
id: string(),
|
|
12998
13218
|
name: string(),
|
|
12999
13219
|
isPullMode: boolean().optional(),
|
|
13000
|
-
priority: number().optional()
|
|
13220
|
+
priority: number().optional(),
|
|
13221
|
+
hwaccel: string().optional(),
|
|
13222
|
+
probedBestHwaccel: string().optional()
|
|
13001
13223
|
})), method(DecoderSessionConfigSchema, object({
|
|
13002
13224
|
sessionId: string(),
|
|
13003
13225
|
nodeId: string()
|
|
@@ -14925,7 +15147,17 @@ var AgentAddonConfigSchema = object({
|
|
|
14925
15147
|
});
|
|
14926
15148
|
var AgentPipelineSettingsSchema = object({
|
|
14927
15149
|
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
14928
|
-
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15150
|
+
maxCameras: number().int().nonnegative().nullable().default(null),
|
|
15151
|
+
/** Per-node detection weight (relative share for the quota balancer). */
|
|
15152
|
+
detectWeight: number().positive().optional(),
|
|
15153
|
+
/** Node is eligible to run the detection pipeline (decode + inference). */
|
|
15154
|
+
detect: boolean().optional(),
|
|
15155
|
+
/** Node is eligible to host decoder sessions. */
|
|
15156
|
+
decode: boolean().optional(),
|
|
15157
|
+
/** Node is eligible to run audio-analyzer sessions. */
|
|
15158
|
+
audio: boolean().optional(),
|
|
15159
|
+
/** Node is eligible to be the ingest / source-owner (serve the restream). */
|
|
15160
|
+
ingest: boolean().optional()
|
|
14929
15161
|
});
|
|
14930
15162
|
var CameraPipelineForAgentSchema = object({
|
|
14931
15163
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
@@ -15231,6 +15463,21 @@ method(object({
|
|
|
15231
15463
|
}), object({ success: literal(true) }), {
|
|
15232
15464
|
kind: "mutation",
|
|
15233
15465
|
auth: "admin"
|
|
15466
|
+
}), method(object({
|
|
15467
|
+
agentNodeId: string(),
|
|
15468
|
+
detectWeight: number().positive().nullable()
|
|
15469
|
+
}), object({ success: literal(true) }), {
|
|
15470
|
+
kind: "mutation",
|
|
15471
|
+
auth: "admin"
|
|
15472
|
+
}), method(object({
|
|
15473
|
+
agentNodeId: string(),
|
|
15474
|
+
detect: boolean().nullable().optional(),
|
|
15475
|
+
decode: boolean().nullable().optional(),
|
|
15476
|
+
audio: boolean().nullable().optional(),
|
|
15477
|
+
ingest: boolean().nullable().optional()
|
|
15478
|
+
}), object({ success: literal(true) }), {
|
|
15479
|
+
kind: "mutation",
|
|
15480
|
+
auth: "admin"
|
|
15234
15481
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15235
15482
|
deviceId: number(),
|
|
15236
15483
|
addonId: string(),
|
|
@@ -18978,6 +19225,18 @@ Object.freeze({
|
|
|
18978
19225
|
addonId: null,
|
|
18979
19226
|
access: "view"
|
|
18980
19227
|
},
|
|
19228
|
+
"dayNight.getOptions": {
|
|
19229
|
+
capName: "day-night",
|
|
19230
|
+
capScope: "device",
|
|
19231
|
+
addonId: null,
|
|
19232
|
+
access: "view"
|
|
19233
|
+
},
|
|
19234
|
+
"dayNight.setSettings": {
|
|
19235
|
+
capName: "day-night",
|
|
19236
|
+
capScope: "device",
|
|
19237
|
+
addonId: null,
|
|
19238
|
+
access: "create"
|
|
19239
|
+
},
|
|
18981
19240
|
"decoder.createSession": {
|
|
18982
19241
|
capName: "decoder",
|
|
18983
19242
|
capScope: "system",
|
|
@@ -19908,6 +20167,18 @@ Object.freeze({
|
|
|
19908
20167
|
addonId: null,
|
|
19909
20168
|
access: "create"
|
|
19910
20169
|
},
|
|
20170
|
+
"imageSettings.getOptions": {
|
|
20171
|
+
capName: "image-settings",
|
|
20172
|
+
capScope: "device",
|
|
20173
|
+
addonId: null,
|
|
20174
|
+
access: "view"
|
|
20175
|
+
},
|
|
20176
|
+
"imageSettings.setSettings": {
|
|
20177
|
+
capName: "image-settings",
|
|
20178
|
+
capScope: "device",
|
|
20179
|
+
addonId: null,
|
|
20180
|
+
access: "create"
|
|
20181
|
+
},
|
|
19911
20182
|
"integrations.create": {
|
|
19912
20183
|
capName: "integrations",
|
|
19913
20184
|
capScope: "system",
|
|
@@ -21090,6 +21361,18 @@ Object.freeze({
|
|
|
21090
21361
|
addonId: null,
|
|
21091
21362
|
access: "create"
|
|
21092
21363
|
},
|
|
21364
|
+
"pipelineOrchestrator.setAgentCapabilities": {
|
|
21365
|
+
capName: "pipeline-orchestrator",
|
|
21366
|
+
capScope: "system",
|
|
21367
|
+
addonId: null,
|
|
21368
|
+
access: "create"
|
|
21369
|
+
},
|
|
21370
|
+
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
21371
|
+
capName: "pipeline-orchestrator",
|
|
21372
|
+
capScope: "system",
|
|
21373
|
+
addonId: null,
|
|
21374
|
+
access: "create"
|
|
21375
|
+
},
|
|
21093
21376
|
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
21094
21377
|
capName: "pipeline-orchestrator",
|
|
21095
21378
|
capScope: "system",
|
package/dist/addon.mjs
CHANGED
|
@@ -4628,7 +4628,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4628
4628
|
return inst;
|
|
4629
4629
|
}
|
|
4630
4630
|
//#endregion
|
|
4631
|
-
//#region ../types/dist/sleep-
|
|
4631
|
+
//#region ../types/dist/sleep-CZDdRBua.mjs
|
|
4632
4632
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4633
4633
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4634
4634
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -7223,7 +7223,16 @@ var DecoderStatsSchema = object({
|
|
|
7223
7223
|
inputFps: number(),
|
|
7224
7224
|
outputFps: number(),
|
|
7225
7225
|
avgDecodeTimeMs: number(),
|
|
7226
|
-
droppedFrames: number()
|
|
7226
|
+
droppedFrames: number(),
|
|
7227
|
+
/**
|
|
7228
|
+
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
7229
|
+
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
7230
|
+
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
7231
|
+
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
7232
|
+
*/
|
|
7233
|
+
lagMs: number().optional(),
|
|
7234
|
+
effectiveFps: number().optional(),
|
|
7235
|
+
adaptiveFps: number().optional()
|
|
7227
7236
|
});
|
|
7228
7237
|
var DecoderSessionConfigSchema = object({
|
|
7229
7238
|
codec: string(),
|
|
@@ -7264,7 +7273,15 @@ var DecoderSessionConfigSchema = object({
|
|
|
7264
7273
|
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
7265
7274
|
* `pullHandles` returns nothing for a `'callback'` session.
|
|
7266
7275
|
*/
|
|
7267
|
-
frameSink: _enum(["callback", "shm"]).default("callback")
|
|
7276
|
+
frameSink: _enum(["callback", "shm"]).default("callback"),
|
|
7277
|
+
/**
|
|
7278
|
+
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
7279
|
+
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
7280
|
+
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
7281
|
+
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
7282
|
+
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
7283
|
+
*/
|
|
7284
|
+
debug: boolean().optional()
|
|
7268
7285
|
});
|
|
7269
7286
|
var EncodeProfileSchema = object({
|
|
7270
7287
|
video: object({
|
|
@@ -9436,6 +9453,75 @@ DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _vo
|
|
|
9436
9453
|
auth: "admin"
|
|
9437
9454
|
});
|
|
9438
9455
|
/**
|
|
9456
|
+
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
9457
|
+
* shared by reolink / hikvision / amcrest. Models the common firmware
|
|
9458
|
+
* surface: the IR-cut switching MODE plus the two knobs that gate it
|
|
9459
|
+
* (photocell `sensitivity` + `switchDelaySec`). Each vendor maps these
|
|
9460
|
+
* onto its own ISAPI / Baichuan / Dahua-CGI fields; the cap standardises
|
|
9461
|
+
* the shape so ONE derived-form renders every camera.
|
|
9462
|
+
*
|
|
9463
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9464
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9465
|
+
* injected from `status`) reports the live values, and a single
|
|
9466
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9467
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9468
|
+
* routing from this surface.
|
|
9469
|
+
*/
|
|
9470
|
+
/** IR-cut switching mode. `schedule` = time-of-day table configured on the camera. */
|
|
9471
|
+
var DayNightModeSchema = _enum([
|
|
9472
|
+
"auto",
|
|
9473
|
+
"day",
|
|
9474
|
+
"night",
|
|
9475
|
+
"schedule"
|
|
9476
|
+
]);
|
|
9477
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9478
|
+
* getOptions availability convention. Normalized values are 0–100. */
|
|
9479
|
+
var NormalizedRangeSchema$1 = object({
|
|
9480
|
+
min: number(),
|
|
9481
|
+
max: number(),
|
|
9482
|
+
step: number()
|
|
9483
|
+
});
|
|
9484
|
+
object({
|
|
9485
|
+
mode: DayNightModeSchema,
|
|
9486
|
+
/** IR-cut trigger sensitivity, NORMALIZED 0–100 (higher = switches to night sooner). */
|
|
9487
|
+
sensitivity: number().optional(),
|
|
9488
|
+
/** Delay before the IR-cut filter flips, in seconds. */
|
|
9489
|
+
switchDelaySec: number().optional(),
|
|
9490
|
+
lastFetchedAt: number()
|
|
9491
|
+
});
|
|
9492
|
+
/**
|
|
9493
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
9494
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
9495
|
+
* (normalized 0–100); the mode choice-set as an array. A provider returns
|
|
9496
|
+
* honest, camera-probed values — never hardcoded.
|
|
9497
|
+
*/
|
|
9498
|
+
var DayNightOptionsSchema = object({
|
|
9499
|
+
/** Modes this camera accepts. Empty → the camera has no configurable day/night mode. */
|
|
9500
|
+
modes: array(DayNightModeSchema),
|
|
9501
|
+
supportsSensitivity: boolean(),
|
|
9502
|
+
/** Present when `supportsSensitivity` — the normalized 0–100 range. */
|
|
9503
|
+
sensitivity: NormalizedRangeSchema$1.optional(),
|
|
9504
|
+
supportsSwitchDelay: boolean(),
|
|
9505
|
+
/** Present when `supportsSwitchDelay` — the allowed delay range in seconds. */
|
|
9506
|
+
switchDelaySec: NormalizedRangeSchema$1.optional()
|
|
9507
|
+
});
|
|
9508
|
+
/**
|
|
9509
|
+
* Partial change to the day/night config — every field optional. A
|
|
9510
|
+
* provider ignores fields it does not support.
|
|
9511
|
+
*/
|
|
9512
|
+
var DayNightSettingsPatchSchema = object({
|
|
9513
|
+
mode: DayNightModeSchema.optional(),
|
|
9514
|
+
sensitivity: number().optional(),
|
|
9515
|
+
switchDelaySec: number().optional()
|
|
9516
|
+
});
|
|
9517
|
+
DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema), method(object({
|
|
9518
|
+
deviceId: number(),
|
|
9519
|
+
settings: DayNightSettingsPatchSchema
|
|
9520
|
+
}), _void(), {
|
|
9521
|
+
kind: "mutation",
|
|
9522
|
+
auth: "admin"
|
|
9523
|
+
});
|
|
9524
|
+
/**
|
|
9439
9525
|
* Identity envelope for a device's upstream-system metadata.
|
|
9440
9526
|
*
|
|
9441
9527
|
* Two jobs:
|
|
@@ -9791,6 +9877,130 @@ object({
|
|
|
9791
9877
|
});
|
|
9792
9878
|
DeviceType.Image;
|
|
9793
9879
|
/**
|
|
9880
|
+
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
9881
|
+
* cap shared by reolink / hikvision / amcrest. Models the common ISP
|
|
9882
|
+
* surface: the four picture sliders (brightness / contrast / saturation /
|
|
9883
|
+
* sharpness), orientation (mirror / flip / rotate), white-balance,
|
|
9884
|
+
* exposure and backlight-compensation modes.
|
|
9885
|
+
*
|
|
9886
|
+
* NORMALIZATION: every slider is a normalized int 0–100. Vendors expose
|
|
9887
|
+
* these natively as 0–100 or 0–255 (or other ranges); each provider maps
|
|
9888
|
+
* its native range to/from this normalized 0–100 space so the cap surface
|
|
9889
|
+
* (and the derived form) is identical across cameras. `warmth` (manual
|
|
9890
|
+
* white-balance) is likewise normalized 0–100.
|
|
9891
|
+
*
|
|
9892
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9893
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9894
|
+
* injected from `status`) reports the live values, and a single
|
|
9895
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9896
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9897
|
+
* routing from this surface.
|
|
9898
|
+
*/
|
|
9899
|
+
/** Sensor/image rotation, degrees clockwise. */
|
|
9900
|
+
var ImageRotateSchema = _enum([
|
|
9901
|
+
"0",
|
|
9902
|
+
"90",
|
|
9903
|
+
"180",
|
|
9904
|
+
"270"
|
|
9905
|
+
]);
|
|
9906
|
+
/** White-balance mode. `manual` unlocks the normalized `warmth` knob. */
|
|
9907
|
+
var WhiteBalanceModeSchema = _enum(["auto", "manual"]);
|
|
9908
|
+
/** Exposure mode. */
|
|
9909
|
+
var ExposureModeSchema = _enum(["auto", "manual"]);
|
|
9910
|
+
/**
|
|
9911
|
+
* Backlight-compensation mode:
|
|
9912
|
+
* - `off` — disabled
|
|
9913
|
+
* - `blc` — backlight compensation
|
|
9914
|
+
* - `wdr` — wide dynamic range
|
|
9915
|
+
* - `hlc` — highlight compensation
|
|
9916
|
+
*/
|
|
9917
|
+
var BacklightModeSchema = _enum([
|
|
9918
|
+
"off",
|
|
9919
|
+
"blc",
|
|
9920
|
+
"wdr",
|
|
9921
|
+
"hlc"
|
|
9922
|
+
]);
|
|
9923
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9924
|
+
* getOptions availability convention. Slider values are normalized 0–100. */
|
|
9925
|
+
var NormalizedRangeSchema = object({
|
|
9926
|
+
min: number(),
|
|
9927
|
+
max: number(),
|
|
9928
|
+
step: number()
|
|
9929
|
+
});
|
|
9930
|
+
object({
|
|
9931
|
+
/** Normalized 0–100. */
|
|
9932
|
+
brightness: number().optional(),
|
|
9933
|
+
/** Normalized 0–100. */
|
|
9934
|
+
contrast: number().optional(),
|
|
9935
|
+
/** Normalized 0–100. */
|
|
9936
|
+
saturation: number().optional(),
|
|
9937
|
+
/** Normalized 0–100. */
|
|
9938
|
+
sharpness: number().optional(),
|
|
9939
|
+
mirror: boolean().optional(),
|
|
9940
|
+
flip: boolean().optional(),
|
|
9941
|
+
rotate: ImageRotateSchema.optional(),
|
|
9942
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
9943
|
+
/** Manual white-balance warmth, NORMALIZED 0–100. Meaningful only when `whiteBalance === 'manual'`. */
|
|
9944
|
+
warmth: number().optional(),
|
|
9945
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
9946
|
+
backlightMode: BacklightModeSchema.optional(),
|
|
9947
|
+
lastFetchedAt: number()
|
|
9948
|
+
});
|
|
9949
|
+
/**
|
|
9950
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
9951
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
9952
|
+
* (the normalized 0–100 range); enums as arrays of supported values (empty
|
|
9953
|
+
* array → control hidden). A provider returns honest, camera-probed values
|
|
9954
|
+
* — never hardcoded.
|
|
9955
|
+
*/
|
|
9956
|
+
var ImageSettingsOptionsSchema = object({
|
|
9957
|
+
supportsBrightness: boolean(),
|
|
9958
|
+
brightness: NormalizedRangeSchema.optional(),
|
|
9959
|
+
supportsContrast: boolean(),
|
|
9960
|
+
contrast: NormalizedRangeSchema.optional(),
|
|
9961
|
+
supportsSaturation: boolean(),
|
|
9962
|
+
saturation: NormalizedRangeSchema.optional(),
|
|
9963
|
+
supportsSharpness: boolean(),
|
|
9964
|
+
sharpness: NormalizedRangeSchema.optional(),
|
|
9965
|
+
supportsMirror: boolean(),
|
|
9966
|
+
supportsFlip: boolean(),
|
|
9967
|
+
/** Supported rotation values. Empty → rotation not configurable. */
|
|
9968
|
+
rotateOptions: array(ImageRotateSchema),
|
|
9969
|
+
/** Supported white-balance modes. Empty → white-balance not configurable. */
|
|
9970
|
+
whiteBalanceModes: array(WhiteBalanceModeSchema),
|
|
9971
|
+
supportsWarmth: boolean(),
|
|
9972
|
+
/** Present when `supportsWarmth` — the normalized 0–100 range. */
|
|
9973
|
+
warmth: NormalizedRangeSchema.optional(),
|
|
9974
|
+
/** Supported exposure modes. Empty → exposure not configurable. */
|
|
9975
|
+
exposureModes: array(ExposureModeSchema),
|
|
9976
|
+
/** Supported backlight modes. Empty → backlight-compensation not configurable. */
|
|
9977
|
+
backlightModes: array(BacklightModeSchema)
|
|
9978
|
+
});
|
|
9979
|
+
/**
|
|
9980
|
+
* Partial change to the image config — every field optional. Slider values
|
|
9981
|
+
* are normalized 0–100. A provider ignores fields it does not support.
|
|
9982
|
+
*/
|
|
9983
|
+
var ImageSettingsPatchSchema = object({
|
|
9984
|
+
brightness: number().optional(),
|
|
9985
|
+
contrast: number().optional(),
|
|
9986
|
+
saturation: number().optional(),
|
|
9987
|
+
sharpness: number().optional(),
|
|
9988
|
+
mirror: boolean().optional(),
|
|
9989
|
+
flip: boolean().optional(),
|
|
9990
|
+
rotate: ImageRotateSchema.optional(),
|
|
9991
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
9992
|
+
warmth: number().optional(),
|
|
9993
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
9994
|
+
backlightMode: BacklightModeSchema.optional()
|
|
9995
|
+
});
|
|
9996
|
+
DeviceType.Camera, method(object({ deviceId: number() }), ImageSettingsOptionsSchema), method(object({
|
|
9997
|
+
deviceId: number(),
|
|
9998
|
+
settings: ImageSettingsPatchSchema
|
|
9999
|
+
}), _void(), {
|
|
10000
|
+
kind: "mutation",
|
|
10001
|
+
auth: "admin"
|
|
10002
|
+
});
|
|
10003
|
+
/**
|
|
9794
10004
|
* Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
|
|
9795
10005
|
* with a mowing lifecycle plus a dock action.
|
|
9796
10006
|
*
|
|
@@ -10685,6 +10895,16 @@ var RunnerCameraConfigSchema = object({
|
|
|
10685
10895
|
* this gate is bypassed.
|
|
10686
10896
|
*/
|
|
10687
10897
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
10898
|
+
/**
|
|
10899
|
+
* Master toggle for the occupancy re-check. When `false` (DEFAULT) the runner
|
|
10900
|
+
* never arms the periodic recheck timer, regardless of `occupancyRecheckSec` —
|
|
10901
|
+
* this is off by default because the recheck re-subscribes a detection session
|
|
10902
|
+
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
10903
|
+
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
10904
|
+
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
10905
|
+
* (and only render) when this is enabled.
|
|
10906
|
+
*/
|
|
10907
|
+
occupancyRecheckEnabled: boolean().default(false),
|
|
10688
10908
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
10689
10909
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
10690
10910
|
/**
|
|
@@ -12993,7 +13213,9 @@ method(object({ codec: string() }), boolean()), method(_void(), object({
|
|
|
12993
13213
|
id: string(),
|
|
12994
13214
|
name: string(),
|
|
12995
13215
|
isPullMode: boolean().optional(),
|
|
12996
|
-
priority: number().optional()
|
|
13216
|
+
priority: number().optional(),
|
|
13217
|
+
hwaccel: string().optional(),
|
|
13218
|
+
probedBestHwaccel: string().optional()
|
|
12997
13219
|
})), method(DecoderSessionConfigSchema, object({
|
|
12998
13220
|
sessionId: string(),
|
|
12999
13221
|
nodeId: string()
|
|
@@ -14921,7 +15143,17 @@ var AgentAddonConfigSchema = object({
|
|
|
14921
15143
|
});
|
|
14922
15144
|
var AgentPipelineSettingsSchema = object({
|
|
14923
15145
|
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
14924
|
-
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15146
|
+
maxCameras: number().int().nonnegative().nullable().default(null),
|
|
15147
|
+
/** Per-node detection weight (relative share for the quota balancer). */
|
|
15148
|
+
detectWeight: number().positive().optional(),
|
|
15149
|
+
/** Node is eligible to run the detection pipeline (decode + inference). */
|
|
15150
|
+
detect: boolean().optional(),
|
|
15151
|
+
/** Node is eligible to host decoder sessions. */
|
|
15152
|
+
decode: boolean().optional(),
|
|
15153
|
+
/** Node is eligible to run audio-analyzer sessions. */
|
|
15154
|
+
audio: boolean().optional(),
|
|
15155
|
+
/** Node is eligible to be the ingest / source-owner (serve the restream). */
|
|
15156
|
+
ingest: boolean().optional()
|
|
14925
15157
|
});
|
|
14926
15158
|
var CameraPipelineForAgentSchema = object({
|
|
14927
15159
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
@@ -15227,6 +15459,21 @@ method(object({
|
|
|
15227
15459
|
}), object({ success: literal(true) }), {
|
|
15228
15460
|
kind: "mutation",
|
|
15229
15461
|
auth: "admin"
|
|
15462
|
+
}), method(object({
|
|
15463
|
+
agentNodeId: string(),
|
|
15464
|
+
detectWeight: number().positive().nullable()
|
|
15465
|
+
}), object({ success: literal(true) }), {
|
|
15466
|
+
kind: "mutation",
|
|
15467
|
+
auth: "admin"
|
|
15468
|
+
}), method(object({
|
|
15469
|
+
agentNodeId: string(),
|
|
15470
|
+
detect: boolean().nullable().optional(),
|
|
15471
|
+
decode: boolean().nullable().optional(),
|
|
15472
|
+
audio: boolean().nullable().optional(),
|
|
15473
|
+
ingest: boolean().nullable().optional()
|
|
15474
|
+
}), object({ success: literal(true) }), {
|
|
15475
|
+
kind: "mutation",
|
|
15476
|
+
auth: "admin"
|
|
15230
15477
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15231
15478
|
deviceId: number(),
|
|
15232
15479
|
addonId: string(),
|
|
@@ -18974,6 +19221,18 @@ Object.freeze({
|
|
|
18974
19221
|
addonId: null,
|
|
18975
19222
|
access: "view"
|
|
18976
19223
|
},
|
|
19224
|
+
"dayNight.getOptions": {
|
|
19225
|
+
capName: "day-night",
|
|
19226
|
+
capScope: "device",
|
|
19227
|
+
addonId: null,
|
|
19228
|
+
access: "view"
|
|
19229
|
+
},
|
|
19230
|
+
"dayNight.setSettings": {
|
|
19231
|
+
capName: "day-night",
|
|
19232
|
+
capScope: "device",
|
|
19233
|
+
addonId: null,
|
|
19234
|
+
access: "create"
|
|
19235
|
+
},
|
|
18977
19236
|
"decoder.createSession": {
|
|
18978
19237
|
capName: "decoder",
|
|
18979
19238
|
capScope: "system",
|
|
@@ -19904,6 +20163,18 @@ Object.freeze({
|
|
|
19904
20163
|
addonId: null,
|
|
19905
20164
|
access: "create"
|
|
19906
20165
|
},
|
|
20166
|
+
"imageSettings.getOptions": {
|
|
20167
|
+
capName: "image-settings",
|
|
20168
|
+
capScope: "device",
|
|
20169
|
+
addonId: null,
|
|
20170
|
+
access: "view"
|
|
20171
|
+
},
|
|
20172
|
+
"imageSettings.setSettings": {
|
|
20173
|
+
capName: "image-settings",
|
|
20174
|
+
capScope: "device",
|
|
20175
|
+
addonId: null,
|
|
20176
|
+
access: "create"
|
|
20177
|
+
},
|
|
19907
20178
|
"integrations.create": {
|
|
19908
20179
|
capName: "integrations",
|
|
19909
20180
|
capScope: "system",
|
|
@@ -21086,6 +21357,18 @@ Object.freeze({
|
|
|
21086
21357
|
addonId: null,
|
|
21087
21358
|
access: "create"
|
|
21088
21359
|
},
|
|
21360
|
+
"pipelineOrchestrator.setAgentCapabilities": {
|
|
21361
|
+
capName: "pipeline-orchestrator",
|
|
21362
|
+
capScope: "system",
|
|
21363
|
+
addonId: null,
|
|
21364
|
+
access: "create"
|
|
21365
|
+
},
|
|
21366
|
+
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
21367
|
+
capName: "pipeline-orchestrator",
|
|
21368
|
+
capScope: "system",
|
|
21369
|
+
addonId: null,
|
|
21370
|
+
access: "create"
|
|
21371
|
+
},
|
|
21089
21372
|
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
21090
21373
|
capName: "pipeline-orchestrator",
|
|
21091
21374
|
capScope: "system",
|