@camstack/addon-export-alexa 1.1.15 → 1.1.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/export-alexa.addon.js +288 -5
- package/dist/export-alexa.addon.mjs +288 -5
- package/package.json +1 -1
|
@@ -4655,7 +4655,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4655
4655
|
return inst;
|
|
4656
4656
|
}
|
|
4657
4657
|
//#endregion
|
|
4658
|
-
//#region ../types/dist/sleep-
|
|
4658
|
+
//#region ../types/dist/sleep-CZDdRBua.mjs
|
|
4659
4659
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4660
4660
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4661
4661
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -7390,7 +7390,16 @@ var DecoderStatsSchema = object({
|
|
|
7390
7390
|
inputFps: number(),
|
|
7391
7391
|
outputFps: number(),
|
|
7392
7392
|
avgDecodeTimeMs: number(),
|
|
7393
|
-
droppedFrames: number()
|
|
7393
|
+
droppedFrames: number(),
|
|
7394
|
+
/**
|
|
7395
|
+
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
7396
|
+
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
7397
|
+
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
7398
|
+
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
7399
|
+
*/
|
|
7400
|
+
lagMs: number().optional(),
|
|
7401
|
+
effectiveFps: number().optional(),
|
|
7402
|
+
adaptiveFps: number().optional()
|
|
7394
7403
|
});
|
|
7395
7404
|
var DecoderSessionConfigSchema = object({
|
|
7396
7405
|
codec: string(),
|
|
@@ -7431,7 +7440,15 @@ var DecoderSessionConfigSchema = object({
|
|
|
7431
7440
|
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
7432
7441
|
* `pullHandles` returns nothing for a `'callback'` session.
|
|
7433
7442
|
*/
|
|
7434
|
-
frameSink: _enum(["callback", "shm"]).default("callback")
|
|
7443
|
+
frameSink: _enum(["callback", "shm"]).default("callback"),
|
|
7444
|
+
/**
|
|
7445
|
+
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
7446
|
+
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
7447
|
+
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
7448
|
+
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
7449
|
+
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
7450
|
+
*/
|
|
7451
|
+
debug: boolean().optional()
|
|
7435
7452
|
});
|
|
7436
7453
|
var EncodeProfileSchema = object({
|
|
7437
7454
|
video: object({
|
|
@@ -9643,6 +9660,75 @@ DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _vo
|
|
|
9643
9660
|
auth: "admin"
|
|
9644
9661
|
});
|
|
9645
9662
|
/**
|
|
9663
|
+
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
9664
|
+
* shared by reolink / hikvision / amcrest. Models the common firmware
|
|
9665
|
+
* surface: the IR-cut switching MODE plus the two knobs that gate it
|
|
9666
|
+
* (photocell `sensitivity` + `switchDelaySec`). Each vendor maps these
|
|
9667
|
+
* onto its own ISAPI / Baichuan / Dahua-CGI fields; the cap standardises
|
|
9668
|
+
* the shape so ONE derived-form renders every camera.
|
|
9669
|
+
*
|
|
9670
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9671
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9672
|
+
* injected from `status`) reports the live values, and a single
|
|
9673
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9674
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9675
|
+
* routing from this surface.
|
|
9676
|
+
*/
|
|
9677
|
+
/** IR-cut switching mode. `schedule` = time-of-day table configured on the camera. */
|
|
9678
|
+
var DayNightModeSchema = _enum([
|
|
9679
|
+
"auto",
|
|
9680
|
+
"day",
|
|
9681
|
+
"night",
|
|
9682
|
+
"schedule"
|
|
9683
|
+
]);
|
|
9684
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9685
|
+
* getOptions availability convention. Normalized values are 0–100. */
|
|
9686
|
+
var NormalizedRangeSchema$1 = object({
|
|
9687
|
+
min: number(),
|
|
9688
|
+
max: number(),
|
|
9689
|
+
step: number()
|
|
9690
|
+
});
|
|
9691
|
+
object({
|
|
9692
|
+
mode: DayNightModeSchema,
|
|
9693
|
+
/** IR-cut trigger sensitivity, NORMALIZED 0–100 (higher = switches to night sooner). */
|
|
9694
|
+
sensitivity: number().optional(),
|
|
9695
|
+
/** Delay before the IR-cut filter flips, in seconds. */
|
|
9696
|
+
switchDelaySec: number().optional(),
|
|
9697
|
+
lastFetchedAt: number()
|
|
9698
|
+
});
|
|
9699
|
+
/**
|
|
9700
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
9701
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
9702
|
+
* (normalized 0–100); the mode choice-set as an array. A provider returns
|
|
9703
|
+
* honest, camera-probed values — never hardcoded.
|
|
9704
|
+
*/
|
|
9705
|
+
var DayNightOptionsSchema = object({
|
|
9706
|
+
/** Modes this camera accepts. Empty → the camera has no configurable day/night mode. */
|
|
9707
|
+
modes: array(DayNightModeSchema),
|
|
9708
|
+
supportsSensitivity: boolean(),
|
|
9709
|
+
/** Present when `supportsSensitivity` — the normalized 0–100 range. */
|
|
9710
|
+
sensitivity: NormalizedRangeSchema$1.optional(),
|
|
9711
|
+
supportsSwitchDelay: boolean(),
|
|
9712
|
+
/** Present when `supportsSwitchDelay` — the allowed delay range in seconds. */
|
|
9713
|
+
switchDelaySec: NormalizedRangeSchema$1.optional()
|
|
9714
|
+
});
|
|
9715
|
+
/**
|
|
9716
|
+
* Partial change to the day/night config — every field optional. A
|
|
9717
|
+
* provider ignores fields it does not support.
|
|
9718
|
+
*/
|
|
9719
|
+
var DayNightSettingsPatchSchema = object({
|
|
9720
|
+
mode: DayNightModeSchema.optional(),
|
|
9721
|
+
sensitivity: number().optional(),
|
|
9722
|
+
switchDelaySec: number().optional()
|
|
9723
|
+
});
|
|
9724
|
+
DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema), method(object({
|
|
9725
|
+
deviceId: number(),
|
|
9726
|
+
settings: DayNightSettingsPatchSchema
|
|
9727
|
+
}), _void(), {
|
|
9728
|
+
kind: "mutation",
|
|
9729
|
+
auth: "admin"
|
|
9730
|
+
});
|
|
9731
|
+
/**
|
|
9646
9732
|
* Identity envelope for a device's upstream-system metadata.
|
|
9647
9733
|
*
|
|
9648
9734
|
* Two jobs:
|
|
@@ -9998,6 +10084,130 @@ object({
|
|
|
9998
10084
|
});
|
|
9999
10085
|
DeviceType.Image;
|
|
10000
10086
|
/**
|
|
10087
|
+
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
10088
|
+
* cap shared by reolink / hikvision / amcrest. Models the common ISP
|
|
10089
|
+
* surface: the four picture sliders (brightness / contrast / saturation /
|
|
10090
|
+
* sharpness), orientation (mirror / flip / rotate), white-balance,
|
|
10091
|
+
* exposure and backlight-compensation modes.
|
|
10092
|
+
*
|
|
10093
|
+
* NORMALIZATION: every slider is a normalized int 0–100. Vendors expose
|
|
10094
|
+
* these natively as 0–100 or 0–255 (or other ranges); each provider maps
|
|
10095
|
+
* its native range to/from this normalized 0–100 space so the cap surface
|
|
10096
|
+
* (and the derived form) is identical across cameras. `warmth` (manual
|
|
10097
|
+
* white-balance) is likewise normalized 0–100.
|
|
10098
|
+
*
|
|
10099
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
10100
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
10101
|
+
* injected from `status`) reports the live values, and a single
|
|
10102
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
10103
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
10104
|
+
* routing from this surface.
|
|
10105
|
+
*/
|
|
10106
|
+
/** Sensor/image rotation, degrees clockwise. */
|
|
10107
|
+
var ImageRotateSchema = _enum([
|
|
10108
|
+
"0",
|
|
10109
|
+
"90",
|
|
10110
|
+
"180",
|
|
10111
|
+
"270"
|
|
10112
|
+
]);
|
|
10113
|
+
/** White-balance mode. `manual` unlocks the normalized `warmth` knob. */
|
|
10114
|
+
var WhiteBalanceModeSchema = _enum(["auto", "manual"]);
|
|
10115
|
+
/** Exposure mode. */
|
|
10116
|
+
var ExposureModeSchema = _enum(["auto", "manual"]);
|
|
10117
|
+
/**
|
|
10118
|
+
* Backlight-compensation mode:
|
|
10119
|
+
* - `off` — disabled
|
|
10120
|
+
* - `blc` — backlight compensation
|
|
10121
|
+
* - `wdr` — wide dynamic range
|
|
10122
|
+
* - `hlc` — highlight compensation
|
|
10123
|
+
*/
|
|
10124
|
+
var BacklightModeSchema = _enum([
|
|
10125
|
+
"off",
|
|
10126
|
+
"blc",
|
|
10127
|
+
"wdr",
|
|
10128
|
+
"hlc"
|
|
10129
|
+
]);
|
|
10130
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
10131
|
+
* getOptions availability convention. Slider values are normalized 0–100. */
|
|
10132
|
+
var NormalizedRangeSchema = object({
|
|
10133
|
+
min: number(),
|
|
10134
|
+
max: number(),
|
|
10135
|
+
step: number()
|
|
10136
|
+
});
|
|
10137
|
+
object({
|
|
10138
|
+
/** Normalized 0–100. */
|
|
10139
|
+
brightness: number().optional(),
|
|
10140
|
+
/** Normalized 0–100. */
|
|
10141
|
+
contrast: number().optional(),
|
|
10142
|
+
/** Normalized 0–100. */
|
|
10143
|
+
saturation: number().optional(),
|
|
10144
|
+
/** Normalized 0–100. */
|
|
10145
|
+
sharpness: number().optional(),
|
|
10146
|
+
mirror: boolean().optional(),
|
|
10147
|
+
flip: boolean().optional(),
|
|
10148
|
+
rotate: ImageRotateSchema.optional(),
|
|
10149
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
10150
|
+
/** Manual white-balance warmth, NORMALIZED 0–100. Meaningful only when `whiteBalance === 'manual'`. */
|
|
10151
|
+
warmth: number().optional(),
|
|
10152
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
10153
|
+
backlightMode: BacklightModeSchema.optional(),
|
|
10154
|
+
lastFetchedAt: number()
|
|
10155
|
+
});
|
|
10156
|
+
/**
|
|
10157
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
10158
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
10159
|
+
* (the normalized 0–100 range); enums as arrays of supported values (empty
|
|
10160
|
+
* array → control hidden). A provider returns honest, camera-probed values
|
|
10161
|
+
* — never hardcoded.
|
|
10162
|
+
*/
|
|
10163
|
+
var ImageSettingsOptionsSchema = object({
|
|
10164
|
+
supportsBrightness: boolean(),
|
|
10165
|
+
brightness: NormalizedRangeSchema.optional(),
|
|
10166
|
+
supportsContrast: boolean(),
|
|
10167
|
+
contrast: NormalizedRangeSchema.optional(),
|
|
10168
|
+
supportsSaturation: boolean(),
|
|
10169
|
+
saturation: NormalizedRangeSchema.optional(),
|
|
10170
|
+
supportsSharpness: boolean(),
|
|
10171
|
+
sharpness: NormalizedRangeSchema.optional(),
|
|
10172
|
+
supportsMirror: boolean(),
|
|
10173
|
+
supportsFlip: boolean(),
|
|
10174
|
+
/** Supported rotation values. Empty → rotation not configurable. */
|
|
10175
|
+
rotateOptions: array(ImageRotateSchema),
|
|
10176
|
+
/** Supported white-balance modes. Empty → white-balance not configurable. */
|
|
10177
|
+
whiteBalanceModes: array(WhiteBalanceModeSchema),
|
|
10178
|
+
supportsWarmth: boolean(),
|
|
10179
|
+
/** Present when `supportsWarmth` — the normalized 0–100 range. */
|
|
10180
|
+
warmth: NormalizedRangeSchema.optional(),
|
|
10181
|
+
/** Supported exposure modes. Empty → exposure not configurable. */
|
|
10182
|
+
exposureModes: array(ExposureModeSchema),
|
|
10183
|
+
/** Supported backlight modes. Empty → backlight-compensation not configurable. */
|
|
10184
|
+
backlightModes: array(BacklightModeSchema)
|
|
10185
|
+
});
|
|
10186
|
+
/**
|
|
10187
|
+
* Partial change to the image config — every field optional. Slider values
|
|
10188
|
+
* are normalized 0–100. A provider ignores fields it does not support.
|
|
10189
|
+
*/
|
|
10190
|
+
var ImageSettingsPatchSchema = object({
|
|
10191
|
+
brightness: number().optional(),
|
|
10192
|
+
contrast: number().optional(),
|
|
10193
|
+
saturation: number().optional(),
|
|
10194
|
+
sharpness: number().optional(),
|
|
10195
|
+
mirror: boolean().optional(),
|
|
10196
|
+
flip: boolean().optional(),
|
|
10197
|
+
rotate: ImageRotateSchema.optional(),
|
|
10198
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
10199
|
+
warmth: number().optional(),
|
|
10200
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
10201
|
+
backlightMode: BacklightModeSchema.optional()
|
|
10202
|
+
});
|
|
10203
|
+
DeviceType.Camera, method(object({ deviceId: number() }), ImageSettingsOptionsSchema), method(object({
|
|
10204
|
+
deviceId: number(),
|
|
10205
|
+
settings: ImageSettingsPatchSchema
|
|
10206
|
+
}), _void(), {
|
|
10207
|
+
kind: "mutation",
|
|
10208
|
+
auth: "admin"
|
|
10209
|
+
});
|
|
10210
|
+
/**
|
|
10001
10211
|
* Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
|
|
10002
10212
|
* with a mowing lifecycle plus a dock action.
|
|
10003
10213
|
*
|
|
@@ -10892,6 +11102,16 @@ var RunnerCameraConfigSchema = object({
|
|
|
10892
11102
|
* this gate is bypassed.
|
|
10893
11103
|
*/
|
|
10894
11104
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
11105
|
+
/**
|
|
11106
|
+
* Master toggle for the occupancy re-check. When `false` (DEFAULT) the runner
|
|
11107
|
+
* never arms the periodic recheck timer, regardless of `occupancyRecheckSec` —
|
|
11108
|
+
* this is off by default because the recheck re-subscribes a detection session
|
|
11109
|
+
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
11110
|
+
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
11111
|
+
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
11112
|
+
* (and only render) when this is enabled.
|
|
11113
|
+
*/
|
|
11114
|
+
occupancyRecheckEnabled: boolean().default(false),
|
|
10895
11115
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
10896
11116
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
10897
11117
|
/**
|
|
@@ -13228,7 +13448,9 @@ method(object({ codec: string() }), boolean()), method(_void(), object({
|
|
|
13228
13448
|
id: string(),
|
|
13229
13449
|
name: string(),
|
|
13230
13450
|
isPullMode: boolean().optional(),
|
|
13231
|
-
priority: number().optional()
|
|
13451
|
+
priority: number().optional(),
|
|
13452
|
+
hwaccel: string().optional(),
|
|
13453
|
+
probedBestHwaccel: string().optional()
|
|
13232
13454
|
})), method(DecoderSessionConfigSchema, object({
|
|
13233
13455
|
sessionId: string(),
|
|
13234
13456
|
nodeId: string()
|
|
@@ -15173,7 +15395,17 @@ var AgentAddonConfigSchema = object({
|
|
|
15173
15395
|
});
|
|
15174
15396
|
var AgentPipelineSettingsSchema = object({
|
|
15175
15397
|
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
15176
|
-
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15398
|
+
maxCameras: number().int().nonnegative().nullable().default(null),
|
|
15399
|
+
/** Per-node detection weight (relative share for the quota balancer). */
|
|
15400
|
+
detectWeight: number().positive().optional(),
|
|
15401
|
+
/** Node is eligible to run the detection pipeline (decode + inference). */
|
|
15402
|
+
detect: boolean().optional(),
|
|
15403
|
+
/** Node is eligible to host decoder sessions. */
|
|
15404
|
+
decode: boolean().optional(),
|
|
15405
|
+
/** Node is eligible to run audio-analyzer sessions. */
|
|
15406
|
+
audio: boolean().optional(),
|
|
15407
|
+
/** Node is eligible to be the ingest / source-owner (serve the restream). */
|
|
15408
|
+
ingest: boolean().optional()
|
|
15177
15409
|
});
|
|
15178
15410
|
var CameraPipelineForAgentSchema = object({
|
|
15179
15411
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
@@ -15479,6 +15711,21 @@ method(object({
|
|
|
15479
15711
|
}), object({ success: literal(true) }), {
|
|
15480
15712
|
kind: "mutation",
|
|
15481
15713
|
auth: "admin"
|
|
15714
|
+
}), method(object({
|
|
15715
|
+
agentNodeId: string(),
|
|
15716
|
+
detectWeight: number().positive().nullable()
|
|
15717
|
+
}), object({ success: literal(true) }), {
|
|
15718
|
+
kind: "mutation",
|
|
15719
|
+
auth: "admin"
|
|
15720
|
+
}), method(object({
|
|
15721
|
+
agentNodeId: string(),
|
|
15722
|
+
detect: boolean().nullable().optional(),
|
|
15723
|
+
decode: boolean().nullable().optional(),
|
|
15724
|
+
audio: boolean().nullable().optional(),
|
|
15725
|
+
ingest: boolean().nullable().optional()
|
|
15726
|
+
}), object({ success: literal(true) }), {
|
|
15727
|
+
kind: "mutation",
|
|
15728
|
+
auth: "admin"
|
|
15482
15729
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15483
15730
|
deviceId: number(),
|
|
15484
15731
|
addonId: string(),
|
|
@@ -19226,6 +19473,18 @@ Object.freeze({
|
|
|
19226
19473
|
addonId: null,
|
|
19227
19474
|
access: "view"
|
|
19228
19475
|
},
|
|
19476
|
+
"dayNight.getOptions": {
|
|
19477
|
+
capName: "day-night",
|
|
19478
|
+
capScope: "device",
|
|
19479
|
+
addonId: null,
|
|
19480
|
+
access: "view"
|
|
19481
|
+
},
|
|
19482
|
+
"dayNight.setSettings": {
|
|
19483
|
+
capName: "day-night",
|
|
19484
|
+
capScope: "device",
|
|
19485
|
+
addonId: null,
|
|
19486
|
+
access: "create"
|
|
19487
|
+
},
|
|
19229
19488
|
"decoder.createSession": {
|
|
19230
19489
|
capName: "decoder",
|
|
19231
19490
|
capScope: "system",
|
|
@@ -20156,6 +20415,18 @@ Object.freeze({
|
|
|
20156
20415
|
addonId: null,
|
|
20157
20416
|
access: "create"
|
|
20158
20417
|
},
|
|
20418
|
+
"imageSettings.getOptions": {
|
|
20419
|
+
capName: "image-settings",
|
|
20420
|
+
capScope: "device",
|
|
20421
|
+
addonId: null,
|
|
20422
|
+
access: "view"
|
|
20423
|
+
},
|
|
20424
|
+
"imageSettings.setSettings": {
|
|
20425
|
+
capName: "image-settings",
|
|
20426
|
+
capScope: "device",
|
|
20427
|
+
addonId: null,
|
|
20428
|
+
access: "create"
|
|
20429
|
+
},
|
|
20159
20430
|
"integrations.create": {
|
|
20160
20431
|
capName: "integrations",
|
|
20161
20432
|
capScope: "system",
|
|
@@ -21338,6 +21609,18 @@ Object.freeze({
|
|
|
21338
21609
|
addonId: null,
|
|
21339
21610
|
access: "create"
|
|
21340
21611
|
},
|
|
21612
|
+
"pipelineOrchestrator.setAgentCapabilities": {
|
|
21613
|
+
capName: "pipeline-orchestrator",
|
|
21614
|
+
capScope: "system",
|
|
21615
|
+
addonId: null,
|
|
21616
|
+
access: "create"
|
|
21617
|
+
},
|
|
21618
|
+
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
21619
|
+
capName: "pipeline-orchestrator",
|
|
21620
|
+
capScope: "system",
|
|
21621
|
+
addonId: null,
|
|
21622
|
+
access: "create"
|
|
21623
|
+
},
|
|
21341
21624
|
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
21342
21625
|
capName: "pipeline-orchestrator",
|
|
21343
21626
|
capScope: "system",
|
|
@@ -4629,7 +4629,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4629
4629
|
return inst;
|
|
4630
4630
|
}
|
|
4631
4631
|
//#endregion
|
|
4632
|
-
//#region ../types/dist/sleep-
|
|
4632
|
+
//#region ../types/dist/sleep-CZDdRBua.mjs
|
|
4633
4633
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4634
4634
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4635
4635
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -7364,7 +7364,16 @@ var DecoderStatsSchema = object({
|
|
|
7364
7364
|
inputFps: number(),
|
|
7365
7365
|
outputFps: number(),
|
|
7366
7366
|
avgDecodeTimeMs: number(),
|
|
7367
|
-
droppedFrames: number()
|
|
7367
|
+
droppedFrames: number(),
|
|
7368
|
+
/**
|
|
7369
|
+
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
7370
|
+
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
7371
|
+
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
7372
|
+
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
7373
|
+
*/
|
|
7374
|
+
lagMs: number().optional(),
|
|
7375
|
+
effectiveFps: number().optional(),
|
|
7376
|
+
adaptiveFps: number().optional()
|
|
7368
7377
|
});
|
|
7369
7378
|
var DecoderSessionConfigSchema = object({
|
|
7370
7379
|
codec: string(),
|
|
@@ -7405,7 +7414,15 @@ var DecoderSessionConfigSchema = object({
|
|
|
7405
7414
|
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
7406
7415
|
* `pullHandles` returns nothing for a `'callback'` session.
|
|
7407
7416
|
*/
|
|
7408
|
-
frameSink: _enum(["callback", "shm"]).default("callback")
|
|
7417
|
+
frameSink: _enum(["callback", "shm"]).default("callback"),
|
|
7418
|
+
/**
|
|
7419
|
+
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
7420
|
+
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
7421
|
+
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
7422
|
+
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
7423
|
+
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
7424
|
+
*/
|
|
7425
|
+
debug: boolean().optional()
|
|
7409
7426
|
});
|
|
7410
7427
|
var EncodeProfileSchema = object({
|
|
7411
7428
|
video: object({
|
|
@@ -9617,6 +9634,75 @@ DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _vo
|
|
|
9617
9634
|
auth: "admin"
|
|
9618
9635
|
});
|
|
9619
9636
|
/**
|
|
9637
|
+
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
9638
|
+
* shared by reolink / hikvision / amcrest. Models the common firmware
|
|
9639
|
+
* surface: the IR-cut switching MODE plus the two knobs that gate it
|
|
9640
|
+
* (photocell `sensitivity` + `switchDelaySec`). Each vendor maps these
|
|
9641
|
+
* onto its own ISAPI / Baichuan / Dahua-CGI fields; the cap standardises
|
|
9642
|
+
* the shape so ONE derived-form renders every camera.
|
|
9643
|
+
*
|
|
9644
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9645
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9646
|
+
* injected from `status`) reports the live values, and a single
|
|
9647
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9648
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9649
|
+
* routing from this surface.
|
|
9650
|
+
*/
|
|
9651
|
+
/** IR-cut switching mode. `schedule` = time-of-day table configured on the camera. */
|
|
9652
|
+
var DayNightModeSchema = _enum([
|
|
9653
|
+
"auto",
|
|
9654
|
+
"day",
|
|
9655
|
+
"night",
|
|
9656
|
+
"schedule"
|
|
9657
|
+
]);
|
|
9658
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9659
|
+
* getOptions availability convention. Normalized values are 0–100. */
|
|
9660
|
+
var NormalizedRangeSchema$1 = object({
|
|
9661
|
+
min: number(),
|
|
9662
|
+
max: number(),
|
|
9663
|
+
step: number()
|
|
9664
|
+
});
|
|
9665
|
+
object({
|
|
9666
|
+
mode: DayNightModeSchema,
|
|
9667
|
+
/** IR-cut trigger sensitivity, NORMALIZED 0–100 (higher = switches to night sooner). */
|
|
9668
|
+
sensitivity: number().optional(),
|
|
9669
|
+
/** Delay before the IR-cut filter flips, in seconds. */
|
|
9670
|
+
switchDelaySec: number().optional(),
|
|
9671
|
+
lastFetchedAt: number()
|
|
9672
|
+
});
|
|
9673
|
+
/**
|
|
9674
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
9675
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
9676
|
+
* (normalized 0–100); the mode choice-set as an array. A provider returns
|
|
9677
|
+
* honest, camera-probed values — never hardcoded.
|
|
9678
|
+
*/
|
|
9679
|
+
var DayNightOptionsSchema = object({
|
|
9680
|
+
/** Modes this camera accepts. Empty → the camera has no configurable day/night mode. */
|
|
9681
|
+
modes: array(DayNightModeSchema),
|
|
9682
|
+
supportsSensitivity: boolean(),
|
|
9683
|
+
/** Present when `supportsSensitivity` — the normalized 0–100 range. */
|
|
9684
|
+
sensitivity: NormalizedRangeSchema$1.optional(),
|
|
9685
|
+
supportsSwitchDelay: boolean(),
|
|
9686
|
+
/** Present when `supportsSwitchDelay` — the allowed delay range in seconds. */
|
|
9687
|
+
switchDelaySec: NormalizedRangeSchema$1.optional()
|
|
9688
|
+
});
|
|
9689
|
+
/**
|
|
9690
|
+
* Partial change to the day/night config — every field optional. A
|
|
9691
|
+
* provider ignores fields it does not support.
|
|
9692
|
+
*/
|
|
9693
|
+
var DayNightSettingsPatchSchema = object({
|
|
9694
|
+
mode: DayNightModeSchema.optional(),
|
|
9695
|
+
sensitivity: number().optional(),
|
|
9696
|
+
switchDelaySec: number().optional()
|
|
9697
|
+
});
|
|
9698
|
+
DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema), method(object({
|
|
9699
|
+
deviceId: number(),
|
|
9700
|
+
settings: DayNightSettingsPatchSchema
|
|
9701
|
+
}), _void(), {
|
|
9702
|
+
kind: "mutation",
|
|
9703
|
+
auth: "admin"
|
|
9704
|
+
});
|
|
9705
|
+
/**
|
|
9620
9706
|
* Identity envelope for a device's upstream-system metadata.
|
|
9621
9707
|
*
|
|
9622
9708
|
* Two jobs:
|
|
@@ -9972,6 +10058,130 @@ object({
|
|
|
9972
10058
|
});
|
|
9973
10059
|
DeviceType.Image;
|
|
9974
10060
|
/**
|
|
10061
|
+
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
10062
|
+
* cap shared by reolink / hikvision / amcrest. Models the common ISP
|
|
10063
|
+
* surface: the four picture sliders (brightness / contrast / saturation /
|
|
10064
|
+
* sharpness), orientation (mirror / flip / rotate), white-balance,
|
|
10065
|
+
* exposure and backlight-compensation modes.
|
|
10066
|
+
*
|
|
10067
|
+
* NORMALIZATION: every slider is a normalized int 0–100. Vendors expose
|
|
10068
|
+
* these natively as 0–100 or 0–255 (or other ranges); each provider maps
|
|
10069
|
+
* its native range to/from this normalized 0–100 space so the cap surface
|
|
10070
|
+
* (and the derived form) is identical across cameras. `warmth` (manual
|
|
10071
|
+
* white-balance) is likewise normalized 0–100.
|
|
10072
|
+
*
|
|
10073
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
10074
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
10075
|
+
* injected from `status`) reports the live values, and a single
|
|
10076
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
10077
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
10078
|
+
* routing from this surface.
|
|
10079
|
+
*/
|
|
10080
|
+
/** Sensor/image rotation, degrees clockwise. */
|
|
10081
|
+
var ImageRotateSchema = _enum([
|
|
10082
|
+
"0",
|
|
10083
|
+
"90",
|
|
10084
|
+
"180",
|
|
10085
|
+
"270"
|
|
10086
|
+
]);
|
|
10087
|
+
/** White-balance mode. `manual` unlocks the normalized `warmth` knob. */
|
|
10088
|
+
var WhiteBalanceModeSchema = _enum(["auto", "manual"]);
|
|
10089
|
+
/** Exposure mode. */
|
|
10090
|
+
var ExposureModeSchema = _enum(["auto", "manual"]);
|
|
10091
|
+
/**
|
|
10092
|
+
* Backlight-compensation mode:
|
|
10093
|
+
* - `off` — disabled
|
|
10094
|
+
* - `blc` — backlight compensation
|
|
10095
|
+
* - `wdr` — wide dynamic range
|
|
10096
|
+
* - `hlc` — highlight compensation
|
|
10097
|
+
*/
|
|
10098
|
+
var BacklightModeSchema = _enum([
|
|
10099
|
+
"off",
|
|
10100
|
+
"blc",
|
|
10101
|
+
"wdr",
|
|
10102
|
+
"hlc"
|
|
10103
|
+
]);
|
|
10104
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
10105
|
+
* getOptions availability convention. Slider values are normalized 0–100. */
|
|
10106
|
+
var NormalizedRangeSchema = object({
|
|
10107
|
+
min: number(),
|
|
10108
|
+
max: number(),
|
|
10109
|
+
step: number()
|
|
10110
|
+
});
|
|
10111
|
+
object({
|
|
10112
|
+
/** Normalized 0–100. */
|
|
10113
|
+
brightness: number().optional(),
|
|
10114
|
+
/** Normalized 0–100. */
|
|
10115
|
+
contrast: number().optional(),
|
|
10116
|
+
/** Normalized 0–100. */
|
|
10117
|
+
saturation: number().optional(),
|
|
10118
|
+
/** Normalized 0–100. */
|
|
10119
|
+
sharpness: number().optional(),
|
|
10120
|
+
mirror: boolean().optional(),
|
|
10121
|
+
flip: boolean().optional(),
|
|
10122
|
+
rotate: ImageRotateSchema.optional(),
|
|
10123
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
10124
|
+
/** Manual white-balance warmth, NORMALIZED 0–100. Meaningful only when `whiteBalance === 'manual'`. */
|
|
10125
|
+
warmth: number().optional(),
|
|
10126
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
10127
|
+
backlightMode: BacklightModeSchema.optional(),
|
|
10128
|
+
lastFetchedAt: number()
|
|
10129
|
+
});
|
|
10130
|
+
/**
|
|
10131
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
10132
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
10133
|
+
* (the normalized 0–100 range); enums as arrays of supported values (empty
|
|
10134
|
+
* array → control hidden). A provider returns honest, camera-probed values
|
|
10135
|
+
* — never hardcoded.
|
|
10136
|
+
*/
|
|
10137
|
+
var ImageSettingsOptionsSchema = object({
|
|
10138
|
+
supportsBrightness: boolean(),
|
|
10139
|
+
brightness: NormalizedRangeSchema.optional(),
|
|
10140
|
+
supportsContrast: boolean(),
|
|
10141
|
+
contrast: NormalizedRangeSchema.optional(),
|
|
10142
|
+
supportsSaturation: boolean(),
|
|
10143
|
+
saturation: NormalizedRangeSchema.optional(),
|
|
10144
|
+
supportsSharpness: boolean(),
|
|
10145
|
+
sharpness: NormalizedRangeSchema.optional(),
|
|
10146
|
+
supportsMirror: boolean(),
|
|
10147
|
+
supportsFlip: boolean(),
|
|
10148
|
+
/** Supported rotation values. Empty → rotation not configurable. */
|
|
10149
|
+
rotateOptions: array(ImageRotateSchema),
|
|
10150
|
+
/** Supported white-balance modes. Empty → white-balance not configurable. */
|
|
10151
|
+
whiteBalanceModes: array(WhiteBalanceModeSchema),
|
|
10152
|
+
supportsWarmth: boolean(),
|
|
10153
|
+
/** Present when `supportsWarmth` — the normalized 0–100 range. */
|
|
10154
|
+
warmth: NormalizedRangeSchema.optional(),
|
|
10155
|
+
/** Supported exposure modes. Empty → exposure not configurable. */
|
|
10156
|
+
exposureModes: array(ExposureModeSchema),
|
|
10157
|
+
/** Supported backlight modes. Empty → backlight-compensation not configurable. */
|
|
10158
|
+
backlightModes: array(BacklightModeSchema)
|
|
10159
|
+
});
|
|
10160
|
+
/**
|
|
10161
|
+
* Partial change to the image config — every field optional. Slider values
|
|
10162
|
+
* are normalized 0–100. A provider ignores fields it does not support.
|
|
10163
|
+
*/
|
|
10164
|
+
var ImageSettingsPatchSchema = object({
|
|
10165
|
+
brightness: number().optional(),
|
|
10166
|
+
contrast: number().optional(),
|
|
10167
|
+
saturation: number().optional(),
|
|
10168
|
+
sharpness: number().optional(),
|
|
10169
|
+
mirror: boolean().optional(),
|
|
10170
|
+
flip: boolean().optional(),
|
|
10171
|
+
rotate: ImageRotateSchema.optional(),
|
|
10172
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
10173
|
+
warmth: number().optional(),
|
|
10174
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
10175
|
+
backlightMode: BacklightModeSchema.optional()
|
|
10176
|
+
});
|
|
10177
|
+
DeviceType.Camera, method(object({ deviceId: number() }), ImageSettingsOptionsSchema), method(object({
|
|
10178
|
+
deviceId: number(),
|
|
10179
|
+
settings: ImageSettingsPatchSchema
|
|
10180
|
+
}), _void(), {
|
|
10181
|
+
kind: "mutation",
|
|
10182
|
+
auth: "admin"
|
|
10183
|
+
});
|
|
10184
|
+
/**
|
|
9975
10185
|
* Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
|
|
9976
10186
|
* with a mowing lifecycle plus a dock action.
|
|
9977
10187
|
*
|
|
@@ -10866,6 +11076,16 @@ var RunnerCameraConfigSchema = object({
|
|
|
10866
11076
|
* this gate is bypassed.
|
|
10867
11077
|
*/
|
|
10868
11078
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
11079
|
+
/**
|
|
11080
|
+
* Master toggle for the occupancy re-check. When `false` (DEFAULT) the runner
|
|
11081
|
+
* never arms the periodic recheck timer, regardless of `occupancyRecheckSec` —
|
|
11082
|
+
* this is off by default because the recheck re-subscribes a detection session
|
|
11083
|
+
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
11084
|
+
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
11085
|
+
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
11086
|
+
* (and only render) when this is enabled.
|
|
11087
|
+
*/
|
|
11088
|
+
occupancyRecheckEnabled: boolean().default(false),
|
|
10869
11089
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
10870
11090
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
10871
11091
|
/**
|
|
@@ -13202,7 +13422,9 @@ method(object({ codec: string() }), boolean()), method(_void(), object({
|
|
|
13202
13422
|
id: string(),
|
|
13203
13423
|
name: string(),
|
|
13204
13424
|
isPullMode: boolean().optional(),
|
|
13205
|
-
priority: number().optional()
|
|
13425
|
+
priority: number().optional(),
|
|
13426
|
+
hwaccel: string().optional(),
|
|
13427
|
+
probedBestHwaccel: string().optional()
|
|
13206
13428
|
})), method(DecoderSessionConfigSchema, object({
|
|
13207
13429
|
sessionId: string(),
|
|
13208
13430
|
nodeId: string()
|
|
@@ -15147,7 +15369,17 @@ var AgentAddonConfigSchema = object({
|
|
|
15147
15369
|
});
|
|
15148
15370
|
var AgentPipelineSettingsSchema = object({
|
|
15149
15371
|
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
15150
|
-
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
15372
|
+
maxCameras: number().int().nonnegative().nullable().default(null),
|
|
15373
|
+
/** Per-node detection weight (relative share for the quota balancer). */
|
|
15374
|
+
detectWeight: number().positive().optional(),
|
|
15375
|
+
/** Node is eligible to run the detection pipeline (decode + inference). */
|
|
15376
|
+
detect: boolean().optional(),
|
|
15377
|
+
/** Node is eligible to host decoder sessions. */
|
|
15378
|
+
decode: boolean().optional(),
|
|
15379
|
+
/** Node is eligible to run audio-analyzer sessions. */
|
|
15380
|
+
audio: boolean().optional(),
|
|
15381
|
+
/** Node is eligible to be the ingest / source-owner (serve the restream). */
|
|
15382
|
+
ingest: boolean().optional()
|
|
15151
15383
|
});
|
|
15152
15384
|
var CameraPipelineForAgentSchema = object({
|
|
15153
15385
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
@@ -15453,6 +15685,21 @@ method(object({
|
|
|
15453
15685
|
}), object({ success: literal(true) }), {
|
|
15454
15686
|
kind: "mutation",
|
|
15455
15687
|
auth: "admin"
|
|
15688
|
+
}), method(object({
|
|
15689
|
+
agentNodeId: string(),
|
|
15690
|
+
detectWeight: number().positive().nullable()
|
|
15691
|
+
}), object({ success: literal(true) }), {
|
|
15692
|
+
kind: "mutation",
|
|
15693
|
+
auth: "admin"
|
|
15694
|
+
}), method(object({
|
|
15695
|
+
agentNodeId: string(),
|
|
15696
|
+
detect: boolean().nullable().optional(),
|
|
15697
|
+
decode: boolean().nullable().optional(),
|
|
15698
|
+
audio: boolean().nullable().optional(),
|
|
15699
|
+
ingest: boolean().nullable().optional()
|
|
15700
|
+
}), object({ success: literal(true) }), {
|
|
15701
|
+
kind: "mutation",
|
|
15702
|
+
auth: "admin"
|
|
15456
15703
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
15457
15704
|
deviceId: number(),
|
|
15458
15705
|
addonId: string(),
|
|
@@ -19200,6 +19447,18 @@ Object.freeze({
|
|
|
19200
19447
|
addonId: null,
|
|
19201
19448
|
access: "view"
|
|
19202
19449
|
},
|
|
19450
|
+
"dayNight.getOptions": {
|
|
19451
|
+
capName: "day-night",
|
|
19452
|
+
capScope: "device",
|
|
19453
|
+
addonId: null,
|
|
19454
|
+
access: "view"
|
|
19455
|
+
},
|
|
19456
|
+
"dayNight.setSettings": {
|
|
19457
|
+
capName: "day-night",
|
|
19458
|
+
capScope: "device",
|
|
19459
|
+
addonId: null,
|
|
19460
|
+
access: "create"
|
|
19461
|
+
},
|
|
19203
19462
|
"decoder.createSession": {
|
|
19204
19463
|
capName: "decoder",
|
|
19205
19464
|
capScope: "system",
|
|
@@ -20130,6 +20389,18 @@ Object.freeze({
|
|
|
20130
20389
|
addonId: null,
|
|
20131
20390
|
access: "create"
|
|
20132
20391
|
},
|
|
20392
|
+
"imageSettings.getOptions": {
|
|
20393
|
+
capName: "image-settings",
|
|
20394
|
+
capScope: "device",
|
|
20395
|
+
addonId: null,
|
|
20396
|
+
access: "view"
|
|
20397
|
+
},
|
|
20398
|
+
"imageSettings.setSettings": {
|
|
20399
|
+
capName: "image-settings",
|
|
20400
|
+
capScope: "device",
|
|
20401
|
+
addonId: null,
|
|
20402
|
+
access: "create"
|
|
20403
|
+
},
|
|
20133
20404
|
"integrations.create": {
|
|
20134
20405
|
capName: "integrations",
|
|
20135
20406
|
capScope: "system",
|
|
@@ -21312,6 +21583,18 @@ Object.freeze({
|
|
|
21312
21583
|
addonId: null,
|
|
21313
21584
|
access: "create"
|
|
21314
21585
|
},
|
|
21586
|
+
"pipelineOrchestrator.setAgentCapabilities": {
|
|
21587
|
+
capName: "pipeline-orchestrator",
|
|
21588
|
+
capScope: "system",
|
|
21589
|
+
addonId: null,
|
|
21590
|
+
access: "create"
|
|
21591
|
+
},
|
|
21592
|
+
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
21593
|
+
capName: "pipeline-orchestrator",
|
|
21594
|
+
capScope: "system",
|
|
21595
|
+
addonId: null,
|
|
21596
|
+
access: "create"
|
|
21597
|
+
},
|
|
21315
21598
|
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
21316
21599
|
capName: "pipeline-orchestrator",
|
|
21317
21600
|
capScope: "system",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-export-alexa",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.17",
|
|
4
4
|
"description": "Alexa Smart Home Skill export — hub-side OAuth provider + directive handler. The companion AWS Lambda forwards Alexa directives to this addon's /addon/export-alexa/directive endpoint.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|