@camstack/addon-model-studio 1.0.16 → 1.0.17
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-CBIzICaF.mjs → MotionZonesSettings-E024aAUS.mjs} +1 -1
- package/dist/{PrivacyMaskSettings-DOJx8_wS.mjs → PrivacyMaskSettings-Mrl6QwuT.mjs} +2 -2
- package/dist/_stub.js +1688 -1467
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-D0mKpt-Q.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-Cbboz9cu.mjs} +4 -4
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BzCPF55l.mjs +26 -0
- package/dist/addon-model-studio.css +1 -1
- package/dist/{hostInit-DDe7n4G4.mjs → hostInit-Co3iTZ_K.mjs} +3 -3
- package/dist/model-studio.addon.js +250 -4
- package/dist/model-studio.addon.mjs +250 -4
- package/dist/{player-overlays-VyAYk-Z7.mjs → player-overlays-DHoKoGsu.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{trash-2-Cm9XGCye.mjs → trash-2-3H9YXi7g.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-BXAVy-sS.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-Ds-GThyo.mjs} +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B2wIUCRf.mjs +0 -26
- package/python/__pycache__/convert.cpython-314.pyc +0 -0
- package/python/__pycache__/convert_lib.cpython-314.pyc +0 -0
- package/python/__tests__/__pycache__/test_convert_lib.cpython-314.pyc +0 -0
|
@@ -4661,7 +4661,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4661
4661
|
return inst;
|
|
4662
4662
|
}
|
|
4663
4663
|
//#endregion
|
|
4664
|
-
//#region ../types/dist/sleep-
|
|
4664
|
+
//#region ../types/dist/sleep-CZDdRBua.mjs
|
|
4665
4665
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4666
4666
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4667
4667
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -7257,7 +7257,16 @@ var DecoderStatsSchema = object({
|
|
|
7257
7257
|
inputFps: number(),
|
|
7258
7258
|
outputFps: number(),
|
|
7259
7259
|
avgDecodeTimeMs: number(),
|
|
7260
|
-
droppedFrames: number()
|
|
7260
|
+
droppedFrames: number(),
|
|
7261
|
+
/**
|
|
7262
|
+
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
7263
|
+
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
7264
|
+
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
7265
|
+
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
7266
|
+
*/
|
|
7267
|
+
lagMs: number().optional(),
|
|
7268
|
+
effectiveFps: number().optional(),
|
|
7269
|
+
adaptiveFps: number().optional()
|
|
7261
7270
|
});
|
|
7262
7271
|
var DecoderSessionConfigSchema = object({
|
|
7263
7272
|
codec: string(),
|
|
@@ -7298,7 +7307,15 @@ var DecoderSessionConfigSchema = object({
|
|
|
7298
7307
|
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
7299
7308
|
* `pullHandles` returns nothing for a `'callback'` session.
|
|
7300
7309
|
*/
|
|
7301
|
-
frameSink: _enum(["callback", "shm"]).default("callback")
|
|
7310
|
+
frameSink: _enum(["callback", "shm"]).default("callback"),
|
|
7311
|
+
/**
|
|
7312
|
+
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
7313
|
+
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
7314
|
+
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
7315
|
+
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
7316
|
+
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
7317
|
+
*/
|
|
7318
|
+
debug: boolean().optional()
|
|
7302
7319
|
});
|
|
7303
7320
|
var EncodeProfileSchema = object({
|
|
7304
7321
|
video: object({
|
|
@@ -9486,6 +9503,75 @@ DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _vo
|
|
|
9486
9503
|
auth: "admin"
|
|
9487
9504
|
});
|
|
9488
9505
|
/**
|
|
9506
|
+
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
9507
|
+
* shared by reolink / hikvision / amcrest. Models the common firmware
|
|
9508
|
+
* surface: the IR-cut switching MODE plus the two knobs that gate it
|
|
9509
|
+
* (photocell `sensitivity` + `switchDelaySec`). Each vendor maps these
|
|
9510
|
+
* onto its own ISAPI / Baichuan / Dahua-CGI fields; the cap standardises
|
|
9511
|
+
* the shape so ONE derived-form renders every camera.
|
|
9512
|
+
*
|
|
9513
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9514
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9515
|
+
* injected from `status`) reports the live values, and a single
|
|
9516
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9517
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9518
|
+
* routing from this surface.
|
|
9519
|
+
*/
|
|
9520
|
+
/** IR-cut switching mode. `schedule` = time-of-day table configured on the camera. */
|
|
9521
|
+
var DayNightModeSchema = _enum([
|
|
9522
|
+
"auto",
|
|
9523
|
+
"day",
|
|
9524
|
+
"night",
|
|
9525
|
+
"schedule"
|
|
9526
|
+
]);
|
|
9527
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9528
|
+
* getOptions availability convention. Normalized values are 0–100. */
|
|
9529
|
+
var NormalizedRangeSchema$1 = object({
|
|
9530
|
+
min: number(),
|
|
9531
|
+
max: number(),
|
|
9532
|
+
step: number()
|
|
9533
|
+
});
|
|
9534
|
+
object({
|
|
9535
|
+
mode: DayNightModeSchema,
|
|
9536
|
+
/** IR-cut trigger sensitivity, NORMALIZED 0–100 (higher = switches to night sooner). */
|
|
9537
|
+
sensitivity: number().optional(),
|
|
9538
|
+
/** Delay before the IR-cut filter flips, in seconds. */
|
|
9539
|
+
switchDelaySec: number().optional(),
|
|
9540
|
+
lastFetchedAt: number()
|
|
9541
|
+
});
|
|
9542
|
+
/**
|
|
9543
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
9544
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
9545
|
+
* (normalized 0–100); the mode choice-set as an array. A provider returns
|
|
9546
|
+
* honest, camera-probed values — never hardcoded.
|
|
9547
|
+
*/
|
|
9548
|
+
var DayNightOptionsSchema = object({
|
|
9549
|
+
/** Modes this camera accepts. Empty → the camera has no configurable day/night mode. */
|
|
9550
|
+
modes: array(DayNightModeSchema),
|
|
9551
|
+
supportsSensitivity: boolean(),
|
|
9552
|
+
/** Present when `supportsSensitivity` — the normalized 0–100 range. */
|
|
9553
|
+
sensitivity: NormalizedRangeSchema$1.optional(),
|
|
9554
|
+
supportsSwitchDelay: boolean(),
|
|
9555
|
+
/** Present when `supportsSwitchDelay` — the allowed delay range in seconds. */
|
|
9556
|
+
switchDelaySec: NormalizedRangeSchema$1.optional()
|
|
9557
|
+
});
|
|
9558
|
+
/**
|
|
9559
|
+
* Partial change to the day/night config — every field optional. A
|
|
9560
|
+
* provider ignores fields it does not support.
|
|
9561
|
+
*/
|
|
9562
|
+
var DayNightSettingsPatchSchema = object({
|
|
9563
|
+
mode: DayNightModeSchema.optional(),
|
|
9564
|
+
sensitivity: number().optional(),
|
|
9565
|
+
switchDelaySec: number().optional()
|
|
9566
|
+
});
|
|
9567
|
+
DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema), method(object({
|
|
9568
|
+
deviceId: number(),
|
|
9569
|
+
settings: DayNightSettingsPatchSchema
|
|
9570
|
+
}), _void(), {
|
|
9571
|
+
kind: "mutation",
|
|
9572
|
+
auth: "admin"
|
|
9573
|
+
});
|
|
9574
|
+
/**
|
|
9489
9575
|
* Identity envelope for a device's upstream-system metadata.
|
|
9490
9576
|
*
|
|
9491
9577
|
* Two jobs:
|
|
@@ -9841,6 +9927,130 @@ object({
|
|
|
9841
9927
|
});
|
|
9842
9928
|
DeviceType.Image;
|
|
9843
9929
|
/**
|
|
9930
|
+
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
9931
|
+
* cap shared by reolink / hikvision / amcrest. Models the common ISP
|
|
9932
|
+
* surface: the four picture sliders (brightness / contrast / saturation /
|
|
9933
|
+
* sharpness), orientation (mirror / flip / rotate), white-balance,
|
|
9934
|
+
* exposure and backlight-compensation modes.
|
|
9935
|
+
*
|
|
9936
|
+
* NORMALIZATION: every slider is a normalized int 0–100. Vendors expose
|
|
9937
|
+
* these natively as 0–100 or 0–255 (or other ranges); each provider maps
|
|
9938
|
+
* its native range to/from this normalized 0–100 space so the cap surface
|
|
9939
|
+
* (and the derived form) is identical across cameras. `warmth` (manual
|
|
9940
|
+
* white-balance) is likewise normalized 0–100.
|
|
9941
|
+
*
|
|
9942
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9943
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9944
|
+
* injected from `status`) reports the live values, and a single
|
|
9945
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9946
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9947
|
+
* routing from this surface.
|
|
9948
|
+
*/
|
|
9949
|
+
/** Sensor/image rotation, degrees clockwise. */
|
|
9950
|
+
var ImageRotateSchema = _enum([
|
|
9951
|
+
"0",
|
|
9952
|
+
"90",
|
|
9953
|
+
"180",
|
|
9954
|
+
"270"
|
|
9955
|
+
]);
|
|
9956
|
+
/** White-balance mode. `manual` unlocks the normalized `warmth` knob. */
|
|
9957
|
+
var WhiteBalanceModeSchema = _enum(["auto", "manual"]);
|
|
9958
|
+
/** Exposure mode. */
|
|
9959
|
+
var ExposureModeSchema = _enum(["auto", "manual"]);
|
|
9960
|
+
/**
|
|
9961
|
+
* Backlight-compensation mode:
|
|
9962
|
+
* - `off` — disabled
|
|
9963
|
+
* - `blc` — backlight compensation
|
|
9964
|
+
* - `wdr` — wide dynamic range
|
|
9965
|
+
* - `hlc` — highlight compensation
|
|
9966
|
+
*/
|
|
9967
|
+
var BacklightModeSchema = _enum([
|
|
9968
|
+
"off",
|
|
9969
|
+
"blc",
|
|
9970
|
+
"wdr",
|
|
9971
|
+
"hlc"
|
|
9972
|
+
]);
|
|
9973
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9974
|
+
* getOptions availability convention. Slider values are normalized 0–100. */
|
|
9975
|
+
var NormalizedRangeSchema = object({
|
|
9976
|
+
min: number(),
|
|
9977
|
+
max: number(),
|
|
9978
|
+
step: number()
|
|
9979
|
+
});
|
|
9980
|
+
object({
|
|
9981
|
+
/** Normalized 0–100. */
|
|
9982
|
+
brightness: number().optional(),
|
|
9983
|
+
/** Normalized 0–100. */
|
|
9984
|
+
contrast: number().optional(),
|
|
9985
|
+
/** Normalized 0–100. */
|
|
9986
|
+
saturation: number().optional(),
|
|
9987
|
+
/** Normalized 0–100. */
|
|
9988
|
+
sharpness: number().optional(),
|
|
9989
|
+
mirror: boolean().optional(),
|
|
9990
|
+
flip: boolean().optional(),
|
|
9991
|
+
rotate: ImageRotateSchema.optional(),
|
|
9992
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
9993
|
+
/** Manual white-balance warmth, NORMALIZED 0–100. Meaningful only when `whiteBalance === 'manual'`. */
|
|
9994
|
+
warmth: number().optional(),
|
|
9995
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
9996
|
+
backlightMode: BacklightModeSchema.optional(),
|
|
9997
|
+
lastFetchedAt: number()
|
|
9998
|
+
});
|
|
9999
|
+
/**
|
|
10000
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
10001
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
10002
|
+
* (the normalized 0–100 range); enums as arrays of supported values (empty
|
|
10003
|
+
* array → control hidden). A provider returns honest, camera-probed values
|
|
10004
|
+
* — never hardcoded.
|
|
10005
|
+
*/
|
|
10006
|
+
var ImageSettingsOptionsSchema = object({
|
|
10007
|
+
supportsBrightness: boolean(),
|
|
10008
|
+
brightness: NormalizedRangeSchema.optional(),
|
|
10009
|
+
supportsContrast: boolean(),
|
|
10010
|
+
contrast: NormalizedRangeSchema.optional(),
|
|
10011
|
+
supportsSaturation: boolean(),
|
|
10012
|
+
saturation: NormalizedRangeSchema.optional(),
|
|
10013
|
+
supportsSharpness: boolean(),
|
|
10014
|
+
sharpness: NormalizedRangeSchema.optional(),
|
|
10015
|
+
supportsMirror: boolean(),
|
|
10016
|
+
supportsFlip: boolean(),
|
|
10017
|
+
/** Supported rotation values. Empty → rotation not configurable. */
|
|
10018
|
+
rotateOptions: array(ImageRotateSchema),
|
|
10019
|
+
/** Supported white-balance modes. Empty → white-balance not configurable. */
|
|
10020
|
+
whiteBalanceModes: array(WhiteBalanceModeSchema),
|
|
10021
|
+
supportsWarmth: boolean(),
|
|
10022
|
+
/** Present when `supportsWarmth` — the normalized 0–100 range. */
|
|
10023
|
+
warmth: NormalizedRangeSchema.optional(),
|
|
10024
|
+
/** Supported exposure modes. Empty → exposure not configurable. */
|
|
10025
|
+
exposureModes: array(ExposureModeSchema),
|
|
10026
|
+
/** Supported backlight modes. Empty → backlight-compensation not configurable. */
|
|
10027
|
+
backlightModes: array(BacklightModeSchema)
|
|
10028
|
+
});
|
|
10029
|
+
/**
|
|
10030
|
+
* Partial change to the image config — every field optional. Slider values
|
|
10031
|
+
* are normalized 0–100. A provider ignores fields it does not support.
|
|
10032
|
+
*/
|
|
10033
|
+
var ImageSettingsPatchSchema = object({
|
|
10034
|
+
brightness: number().optional(),
|
|
10035
|
+
contrast: number().optional(),
|
|
10036
|
+
saturation: number().optional(),
|
|
10037
|
+
sharpness: number().optional(),
|
|
10038
|
+
mirror: boolean().optional(),
|
|
10039
|
+
flip: boolean().optional(),
|
|
10040
|
+
rotate: ImageRotateSchema.optional(),
|
|
10041
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
10042
|
+
warmth: number().optional(),
|
|
10043
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
10044
|
+
backlightMode: BacklightModeSchema.optional()
|
|
10045
|
+
});
|
|
10046
|
+
DeviceType.Camera, method(object({ deviceId: number() }), ImageSettingsOptionsSchema), method(object({
|
|
10047
|
+
deviceId: number(),
|
|
10048
|
+
settings: ImageSettingsPatchSchema
|
|
10049
|
+
}), _void(), {
|
|
10050
|
+
kind: "mutation",
|
|
10051
|
+
auth: "admin"
|
|
10052
|
+
});
|
|
10053
|
+
/**
|
|
9844
10054
|
* Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
|
|
9845
10055
|
* with a mowing lifecycle plus a dock action.
|
|
9846
10056
|
*
|
|
@@ -10735,6 +10945,16 @@ var RunnerCameraConfigSchema = object({
|
|
|
10735
10945
|
* this gate is bypassed.
|
|
10736
10946
|
*/
|
|
10737
10947
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
10948
|
+
/**
|
|
10949
|
+
* Master toggle for the occupancy re-check. When `false` (DEFAULT) the runner
|
|
10950
|
+
* never arms the periodic recheck timer, regardless of `occupancyRecheckSec` —
|
|
10951
|
+
* this is off by default because the recheck re-subscribes a detection session
|
|
10952
|
+
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
10953
|
+
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
10954
|
+
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
10955
|
+
* (and only render) when this is enabled.
|
|
10956
|
+
*/
|
|
10957
|
+
occupancyRecheckEnabled: boolean().default(false),
|
|
10738
10958
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
10739
10959
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
10740
10960
|
/**
|
|
@@ -13064,7 +13284,9 @@ method(object({ codec: string() }), boolean()), method(_void(), object({
|
|
|
13064
13284
|
id: string(),
|
|
13065
13285
|
name: string(),
|
|
13066
13286
|
isPullMode: boolean().optional(),
|
|
13067
|
-
priority: number().optional()
|
|
13287
|
+
priority: number().optional(),
|
|
13288
|
+
hwaccel: string().optional(),
|
|
13289
|
+
probedBestHwaccel: string().optional()
|
|
13068
13290
|
})), method(DecoderSessionConfigSchema, object({
|
|
13069
13291
|
sessionId: string(),
|
|
13070
13292
|
nodeId: string()
|
|
@@ -19062,6 +19284,18 @@ Object.freeze({
|
|
|
19062
19284
|
addonId: null,
|
|
19063
19285
|
access: "view"
|
|
19064
19286
|
},
|
|
19287
|
+
"dayNight.getOptions": {
|
|
19288
|
+
capName: "day-night",
|
|
19289
|
+
capScope: "device",
|
|
19290
|
+
addonId: null,
|
|
19291
|
+
access: "view"
|
|
19292
|
+
},
|
|
19293
|
+
"dayNight.setSettings": {
|
|
19294
|
+
capName: "day-night",
|
|
19295
|
+
capScope: "device",
|
|
19296
|
+
addonId: null,
|
|
19297
|
+
access: "create"
|
|
19298
|
+
},
|
|
19065
19299
|
"decoder.createSession": {
|
|
19066
19300
|
capName: "decoder",
|
|
19067
19301
|
capScope: "system",
|
|
@@ -19992,6 +20226,18 @@ Object.freeze({
|
|
|
19992
20226
|
addonId: null,
|
|
19993
20227
|
access: "create"
|
|
19994
20228
|
},
|
|
20229
|
+
"imageSettings.getOptions": {
|
|
20230
|
+
capName: "image-settings",
|
|
20231
|
+
capScope: "device",
|
|
20232
|
+
addonId: null,
|
|
20233
|
+
access: "view"
|
|
20234
|
+
},
|
|
20235
|
+
"imageSettings.setSettings": {
|
|
20236
|
+
capName: "image-settings",
|
|
20237
|
+
capScope: "device",
|
|
20238
|
+
addonId: null,
|
|
20239
|
+
access: "create"
|
|
20240
|
+
},
|
|
19995
20241
|
"integrations.create": {
|
|
19996
20242
|
capName: "integrations",
|
|
19997
20243
|
capScope: "system",
|
|
@@ -4638,7 +4638,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4638
4638
|
return inst;
|
|
4639
4639
|
}
|
|
4640
4640
|
//#endregion
|
|
4641
|
-
//#region ../types/dist/sleep-
|
|
4641
|
+
//#region ../types/dist/sleep-CZDdRBua.mjs
|
|
4642
4642
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4643
4643
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4644
4644
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -7234,7 +7234,16 @@ var DecoderStatsSchema = object({
|
|
|
7234
7234
|
inputFps: number(),
|
|
7235
7235
|
outputFps: number(),
|
|
7236
7236
|
avgDecodeTimeMs: number(),
|
|
7237
|
-
droppedFrames: number()
|
|
7237
|
+
droppedFrames: number(),
|
|
7238
|
+
/**
|
|
7239
|
+
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
7240
|
+
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
7241
|
+
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
7242
|
+
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
7243
|
+
*/
|
|
7244
|
+
lagMs: number().optional(),
|
|
7245
|
+
effectiveFps: number().optional(),
|
|
7246
|
+
adaptiveFps: number().optional()
|
|
7238
7247
|
});
|
|
7239
7248
|
var DecoderSessionConfigSchema = object({
|
|
7240
7249
|
codec: string(),
|
|
@@ -7275,7 +7284,15 @@ var DecoderSessionConfigSchema = object({
|
|
|
7275
7284
|
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
7276
7285
|
* `pullHandles` returns nothing for a `'callback'` session.
|
|
7277
7286
|
*/
|
|
7278
|
-
frameSink: _enum(["callback", "shm"]).default("callback")
|
|
7287
|
+
frameSink: _enum(["callback", "shm"]).default("callback"),
|
|
7288
|
+
/**
|
|
7289
|
+
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
7290
|
+
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
7291
|
+
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
7292
|
+
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
7293
|
+
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
7294
|
+
*/
|
|
7295
|
+
debug: boolean().optional()
|
|
7279
7296
|
});
|
|
7280
7297
|
var EncodeProfileSchema = object({
|
|
7281
7298
|
video: object({
|
|
@@ -9463,6 +9480,75 @@ DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _vo
|
|
|
9463
9480
|
auth: "admin"
|
|
9464
9481
|
});
|
|
9465
9482
|
/**
|
|
9483
|
+
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
9484
|
+
* shared by reolink / hikvision / amcrest. Models the common firmware
|
|
9485
|
+
* surface: the IR-cut switching MODE plus the two knobs that gate it
|
|
9486
|
+
* (photocell `sensitivity` + `switchDelaySec`). Each vendor maps these
|
|
9487
|
+
* onto its own ISAPI / Baichuan / Dahua-CGI fields; the cap standardises
|
|
9488
|
+
* the shape so ONE derived-form renders every camera.
|
|
9489
|
+
*
|
|
9490
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9491
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9492
|
+
* injected from `status`) reports the live values, and a single
|
|
9493
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9494
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9495
|
+
* routing from this surface.
|
|
9496
|
+
*/
|
|
9497
|
+
/** IR-cut switching mode. `schedule` = time-of-day table configured on the camera. */
|
|
9498
|
+
var DayNightModeSchema = _enum([
|
|
9499
|
+
"auto",
|
|
9500
|
+
"day",
|
|
9501
|
+
"night",
|
|
9502
|
+
"schedule"
|
|
9503
|
+
]);
|
|
9504
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9505
|
+
* getOptions availability convention. Normalized values are 0–100. */
|
|
9506
|
+
var NormalizedRangeSchema$1 = object({
|
|
9507
|
+
min: number(),
|
|
9508
|
+
max: number(),
|
|
9509
|
+
step: number()
|
|
9510
|
+
});
|
|
9511
|
+
object({
|
|
9512
|
+
mode: DayNightModeSchema,
|
|
9513
|
+
/** IR-cut trigger sensitivity, NORMALIZED 0–100 (higher = switches to night sooner). */
|
|
9514
|
+
sensitivity: number().optional(),
|
|
9515
|
+
/** Delay before the IR-cut filter flips, in seconds. */
|
|
9516
|
+
switchDelaySec: number().optional(),
|
|
9517
|
+
lastFetchedAt: number()
|
|
9518
|
+
});
|
|
9519
|
+
/**
|
|
9520
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
9521
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
9522
|
+
* (normalized 0–100); the mode choice-set as an array. A provider returns
|
|
9523
|
+
* honest, camera-probed values — never hardcoded.
|
|
9524
|
+
*/
|
|
9525
|
+
var DayNightOptionsSchema = object({
|
|
9526
|
+
/** Modes this camera accepts. Empty → the camera has no configurable day/night mode. */
|
|
9527
|
+
modes: array(DayNightModeSchema),
|
|
9528
|
+
supportsSensitivity: boolean(),
|
|
9529
|
+
/** Present when `supportsSensitivity` — the normalized 0–100 range. */
|
|
9530
|
+
sensitivity: NormalizedRangeSchema$1.optional(),
|
|
9531
|
+
supportsSwitchDelay: boolean(),
|
|
9532
|
+
/** Present when `supportsSwitchDelay` — the allowed delay range in seconds. */
|
|
9533
|
+
switchDelaySec: NormalizedRangeSchema$1.optional()
|
|
9534
|
+
});
|
|
9535
|
+
/**
|
|
9536
|
+
* Partial change to the day/night config — every field optional. A
|
|
9537
|
+
* provider ignores fields it does not support.
|
|
9538
|
+
*/
|
|
9539
|
+
var DayNightSettingsPatchSchema = object({
|
|
9540
|
+
mode: DayNightModeSchema.optional(),
|
|
9541
|
+
sensitivity: number().optional(),
|
|
9542
|
+
switchDelaySec: number().optional()
|
|
9543
|
+
});
|
|
9544
|
+
DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema), method(object({
|
|
9545
|
+
deviceId: number(),
|
|
9546
|
+
settings: DayNightSettingsPatchSchema
|
|
9547
|
+
}), _void(), {
|
|
9548
|
+
kind: "mutation",
|
|
9549
|
+
auth: "admin"
|
|
9550
|
+
});
|
|
9551
|
+
/**
|
|
9466
9552
|
* Identity envelope for a device's upstream-system metadata.
|
|
9467
9553
|
*
|
|
9468
9554
|
* Two jobs:
|
|
@@ -9818,6 +9904,130 @@ object({
|
|
|
9818
9904
|
});
|
|
9819
9905
|
DeviceType.Image;
|
|
9820
9906
|
/**
|
|
9907
|
+
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
9908
|
+
* cap shared by reolink / hikvision / amcrest. Models the common ISP
|
|
9909
|
+
* surface: the four picture sliders (brightness / contrast / saturation /
|
|
9910
|
+
* sharpness), orientation (mirror / flip / rotate), white-balance,
|
|
9911
|
+
* exposure and backlight-compensation modes.
|
|
9912
|
+
*
|
|
9913
|
+
* NORMALIZATION: every slider is a normalized int 0–100. Vendors expose
|
|
9914
|
+
* these natively as 0–100 or 0–255 (or other ranges); each provider maps
|
|
9915
|
+
* its native range to/from this normalized 0–100 space so the cap surface
|
|
9916
|
+
* (and the derived form) is identical across cameras. `warmth` (manual
|
|
9917
|
+
* white-balance) is likewise normalized 0–100.
|
|
9918
|
+
*
|
|
9919
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9920
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9921
|
+
* injected from `status`) reports the live values, and a single
|
|
9922
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9923
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9924
|
+
* routing from this surface.
|
|
9925
|
+
*/
|
|
9926
|
+
/** Sensor/image rotation, degrees clockwise. */
|
|
9927
|
+
var ImageRotateSchema = _enum([
|
|
9928
|
+
"0",
|
|
9929
|
+
"90",
|
|
9930
|
+
"180",
|
|
9931
|
+
"270"
|
|
9932
|
+
]);
|
|
9933
|
+
/** White-balance mode. `manual` unlocks the normalized `warmth` knob. */
|
|
9934
|
+
var WhiteBalanceModeSchema = _enum(["auto", "manual"]);
|
|
9935
|
+
/** Exposure mode. */
|
|
9936
|
+
var ExposureModeSchema = _enum(["auto", "manual"]);
|
|
9937
|
+
/**
|
|
9938
|
+
* Backlight-compensation mode:
|
|
9939
|
+
* - `off` — disabled
|
|
9940
|
+
* - `blc` — backlight compensation
|
|
9941
|
+
* - `wdr` — wide dynamic range
|
|
9942
|
+
* - `hlc` — highlight compensation
|
|
9943
|
+
*/
|
|
9944
|
+
var BacklightModeSchema = _enum([
|
|
9945
|
+
"off",
|
|
9946
|
+
"blc",
|
|
9947
|
+
"wdr",
|
|
9948
|
+
"hlc"
|
|
9949
|
+
]);
|
|
9950
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9951
|
+
* getOptions availability convention. Slider values are normalized 0–100. */
|
|
9952
|
+
var NormalizedRangeSchema = object({
|
|
9953
|
+
min: number(),
|
|
9954
|
+
max: number(),
|
|
9955
|
+
step: number()
|
|
9956
|
+
});
|
|
9957
|
+
object({
|
|
9958
|
+
/** Normalized 0–100. */
|
|
9959
|
+
brightness: number().optional(),
|
|
9960
|
+
/** Normalized 0–100. */
|
|
9961
|
+
contrast: number().optional(),
|
|
9962
|
+
/** Normalized 0–100. */
|
|
9963
|
+
saturation: number().optional(),
|
|
9964
|
+
/** Normalized 0–100. */
|
|
9965
|
+
sharpness: number().optional(),
|
|
9966
|
+
mirror: boolean().optional(),
|
|
9967
|
+
flip: boolean().optional(),
|
|
9968
|
+
rotate: ImageRotateSchema.optional(),
|
|
9969
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
9970
|
+
/** Manual white-balance warmth, NORMALIZED 0–100. Meaningful only when `whiteBalance === 'manual'`. */
|
|
9971
|
+
warmth: number().optional(),
|
|
9972
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
9973
|
+
backlightMode: BacklightModeSchema.optional(),
|
|
9974
|
+
lastFetchedAt: number()
|
|
9975
|
+
});
|
|
9976
|
+
/**
|
|
9977
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
9978
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
9979
|
+
* (the normalized 0–100 range); enums as arrays of supported values (empty
|
|
9980
|
+
* array → control hidden). A provider returns honest, camera-probed values
|
|
9981
|
+
* — never hardcoded.
|
|
9982
|
+
*/
|
|
9983
|
+
var ImageSettingsOptionsSchema = object({
|
|
9984
|
+
supportsBrightness: boolean(),
|
|
9985
|
+
brightness: NormalizedRangeSchema.optional(),
|
|
9986
|
+
supportsContrast: boolean(),
|
|
9987
|
+
contrast: NormalizedRangeSchema.optional(),
|
|
9988
|
+
supportsSaturation: boolean(),
|
|
9989
|
+
saturation: NormalizedRangeSchema.optional(),
|
|
9990
|
+
supportsSharpness: boolean(),
|
|
9991
|
+
sharpness: NormalizedRangeSchema.optional(),
|
|
9992
|
+
supportsMirror: boolean(),
|
|
9993
|
+
supportsFlip: boolean(),
|
|
9994
|
+
/** Supported rotation values. Empty → rotation not configurable. */
|
|
9995
|
+
rotateOptions: array(ImageRotateSchema),
|
|
9996
|
+
/** Supported white-balance modes. Empty → white-balance not configurable. */
|
|
9997
|
+
whiteBalanceModes: array(WhiteBalanceModeSchema),
|
|
9998
|
+
supportsWarmth: boolean(),
|
|
9999
|
+
/** Present when `supportsWarmth` — the normalized 0–100 range. */
|
|
10000
|
+
warmth: NormalizedRangeSchema.optional(),
|
|
10001
|
+
/** Supported exposure modes. Empty → exposure not configurable. */
|
|
10002
|
+
exposureModes: array(ExposureModeSchema),
|
|
10003
|
+
/** Supported backlight modes. Empty → backlight-compensation not configurable. */
|
|
10004
|
+
backlightModes: array(BacklightModeSchema)
|
|
10005
|
+
});
|
|
10006
|
+
/**
|
|
10007
|
+
* Partial change to the image config — every field optional. Slider values
|
|
10008
|
+
* are normalized 0–100. A provider ignores fields it does not support.
|
|
10009
|
+
*/
|
|
10010
|
+
var ImageSettingsPatchSchema = object({
|
|
10011
|
+
brightness: number().optional(),
|
|
10012
|
+
contrast: number().optional(),
|
|
10013
|
+
saturation: number().optional(),
|
|
10014
|
+
sharpness: number().optional(),
|
|
10015
|
+
mirror: boolean().optional(),
|
|
10016
|
+
flip: boolean().optional(),
|
|
10017
|
+
rotate: ImageRotateSchema.optional(),
|
|
10018
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
10019
|
+
warmth: number().optional(),
|
|
10020
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
10021
|
+
backlightMode: BacklightModeSchema.optional()
|
|
10022
|
+
});
|
|
10023
|
+
DeviceType.Camera, method(object({ deviceId: number() }), ImageSettingsOptionsSchema), method(object({
|
|
10024
|
+
deviceId: number(),
|
|
10025
|
+
settings: ImageSettingsPatchSchema
|
|
10026
|
+
}), _void(), {
|
|
10027
|
+
kind: "mutation",
|
|
10028
|
+
auth: "admin"
|
|
10029
|
+
});
|
|
10030
|
+
/**
|
|
9821
10031
|
* Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
|
|
9822
10032
|
* with a mowing lifecycle plus a dock action.
|
|
9823
10033
|
*
|
|
@@ -10712,6 +10922,16 @@ var RunnerCameraConfigSchema = object({
|
|
|
10712
10922
|
* this gate is bypassed.
|
|
10713
10923
|
*/
|
|
10714
10924
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
10925
|
+
/**
|
|
10926
|
+
* Master toggle for the occupancy re-check. When `false` (DEFAULT) the runner
|
|
10927
|
+
* never arms the periodic recheck timer, regardless of `occupancyRecheckSec` —
|
|
10928
|
+
* this is off by default because the recheck re-subscribes a detection session
|
|
10929
|
+
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
10930
|
+
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
10931
|
+
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
10932
|
+
* (and only render) when this is enabled.
|
|
10933
|
+
*/
|
|
10934
|
+
occupancyRecheckEnabled: boolean().default(false),
|
|
10715
10935
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
10716
10936
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
10717
10937
|
/**
|
|
@@ -13041,7 +13261,9 @@ method(object({ codec: string() }), boolean()), method(_void(), object({
|
|
|
13041
13261
|
id: string(),
|
|
13042
13262
|
name: string(),
|
|
13043
13263
|
isPullMode: boolean().optional(),
|
|
13044
|
-
priority: number().optional()
|
|
13264
|
+
priority: number().optional(),
|
|
13265
|
+
hwaccel: string().optional(),
|
|
13266
|
+
probedBestHwaccel: string().optional()
|
|
13045
13267
|
})), method(DecoderSessionConfigSchema, object({
|
|
13046
13268
|
sessionId: string(),
|
|
13047
13269
|
nodeId: string()
|
|
@@ -19039,6 +19261,18 @@ Object.freeze({
|
|
|
19039
19261
|
addonId: null,
|
|
19040
19262
|
access: "view"
|
|
19041
19263
|
},
|
|
19264
|
+
"dayNight.getOptions": {
|
|
19265
|
+
capName: "day-night",
|
|
19266
|
+
capScope: "device",
|
|
19267
|
+
addonId: null,
|
|
19268
|
+
access: "view"
|
|
19269
|
+
},
|
|
19270
|
+
"dayNight.setSettings": {
|
|
19271
|
+
capName: "day-night",
|
|
19272
|
+
capScope: "device",
|
|
19273
|
+
addonId: null,
|
|
19274
|
+
access: "create"
|
|
19275
|
+
},
|
|
19042
19276
|
"decoder.createSession": {
|
|
19043
19277
|
capName: "decoder",
|
|
19044
19278
|
capScope: "system",
|
|
@@ -19969,6 +20203,18 @@ Object.freeze({
|
|
|
19969
20203
|
addonId: null,
|
|
19970
20204
|
access: "create"
|
|
19971
20205
|
},
|
|
20206
|
+
"imageSettings.getOptions": {
|
|
20207
|
+
capName: "image-settings",
|
|
20208
|
+
capScope: "device",
|
|
20209
|
+
addonId: null,
|
|
20210
|
+
access: "view"
|
|
20211
|
+
},
|
|
20212
|
+
"imageSettings.setSettings": {
|
|
20213
|
+
capName: "image-settings",
|
|
20214
|
+
capScope: "device",
|
|
20215
|
+
addonId: null,
|
|
20216
|
+
access: "create"
|
|
20217
|
+
},
|
|
19972
20218
|
"integrations.create": {
|
|
19973
20219
|
capName: "integrations",
|
|
19974
20220
|
capScope: "system",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { c as e, g as t, h as n, l as r, n as i, p as a, r as o, t as s, u as c, y as l } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DJDHChgO.mjs";
|
|
2
2
|
import { n as u, r as d, t as f } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
3
|
-
import { d as p } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-
|
|
3
|
+
import { d as p } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BzCPF55l.mjs";
|
|
4
4
|
//#region ../ui-library/src/lib/cap-error.ts
|
|
5
5
|
function m(e) {
|
|
6
6
|
if (typeof e != "object" || !e) return null;
|
package/dist/remoteEntry.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-
|
|
1
|
+
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-Ds-GThyo.mjs";
|
|
2
2
|
export { t as get, e as init };
|
|
@@ -2753,7 +2753,7 @@ async function rr(e) {
|
|
|
2753
2753
|
}
|
|
2754
2754
|
}
|
|
2755
2755
|
async function ir() {
|
|
2756
|
-
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-
|
|
2756
|
+
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-Cbboz9cu.mjs")).catch((e) => {
|
|
2757
2757
|
throw tr = void 0, e;
|
|
2758
2758
|
}), tr;
|
|
2759
2759
|
}
|