@camstack/addon-post-analysis 1.2.647 → 1.2.649
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/CHANGELOG.md +13 -0
- package/dist/{clip-model-registry-Bi5DcV3d.js → clip-model-registry-BweA9zEK.js} +245 -167
- package/dist/{clip-model-registry-Baro8DSl.mjs → clip-model-registry-DLCu17dL.mjs} +240 -168
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/_stub.js +2 -2
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-M_XNqkOs.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DFq-lnbD.mjs} +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-YDf26qsN.mjs +26 -0
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DQTr4r2P.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-DRa7YSGg.mjs → hostInit-Dog0wpFI.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +10 -5
- package/dist/pipeline-analytics/index.mjs +10 -5
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +2 -1
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D5tFxRsi.mjs +0 -26
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DgC84J8L.mjs +0 -26
|
@@ -5645,7 +5645,7 @@ var ZodIssueCode = {
|
|
|
5645
5645
|
var ZodFirstPartyTypeKind;
|
|
5646
5646
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5647
5647
|
//#endregion
|
|
5648
|
-
//#region ../types/dist/sleep-
|
|
5648
|
+
//#region ../types/dist/sleep-Crlmu_tO.mjs
|
|
5649
5649
|
/**
|
|
5650
5650
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5651
5651
|
* window to float samples (D455).
|
|
@@ -9183,11 +9183,11 @@ var CAP_NAMES = Object.freeze([
|
|
|
9183
9183
|
Object.freeze({
|
|
9184
9184
|
"air-quality-sensor": [
|
|
9185
9185
|
{
|
|
9186
|
-
"path": "
|
|
9186
|
+
"path": "co2",
|
|
9187
9187
|
"valueType": "number"
|
|
9188
9188
|
},
|
|
9189
9189
|
{
|
|
9190
|
-
"path": "
|
|
9190
|
+
"path": "voc",
|
|
9191
9191
|
"valueType": "number"
|
|
9192
9192
|
},
|
|
9193
9193
|
{
|
|
@@ -9237,7 +9237,7 @@ Object.freeze({
|
|
|
9237
9237
|
}
|
|
9238
9238
|
],
|
|
9239
9239
|
"ambient-light-sensor": [{
|
|
9240
|
-
"path": "
|
|
9240
|
+
"path": "illuminance",
|
|
9241
9241
|
"valueType": "number"
|
|
9242
9242
|
}],
|
|
9243
9243
|
"audio-metrics": [
|
|
@@ -9298,7 +9298,7 @@ Object.freeze({
|
|
|
9298
9298
|
],
|
|
9299
9299
|
"battery": [
|
|
9300
9300
|
{
|
|
9301
|
-
"path": "
|
|
9301
|
+
"path": "level",
|
|
9302
9302
|
"valueType": "number"
|
|
9303
9303
|
},
|
|
9304
9304
|
{
|
|
@@ -9320,7 +9320,7 @@ Object.freeze({
|
|
|
9320
9320
|
"valueType": "number"
|
|
9321
9321
|
},
|
|
9322
9322
|
{
|
|
9323
|
-
"path": "
|
|
9323
|
+
"path": "voltage",
|
|
9324
9324
|
"valueType": "number"
|
|
9325
9325
|
},
|
|
9326
9326
|
{
|
|
@@ -9341,7 +9341,7 @@ Object.freeze({
|
|
|
9341
9341
|
"valueType": "boolean"
|
|
9342
9342
|
}],
|
|
9343
9343
|
"brightness": [{
|
|
9344
|
-
"path": "
|
|
9344
|
+
"path": "level",
|
|
9345
9345
|
"valueType": "number"
|
|
9346
9346
|
}],
|
|
9347
9347
|
"broker": [{
|
|
@@ -9542,7 +9542,7 @@ Object.freeze({
|
|
|
9542
9542
|
"valueType": "number"
|
|
9543
9543
|
},
|
|
9544
9544
|
{
|
|
9545
|
-
"path": "
|
|
9545
|
+
"path": "colorTemperature",
|
|
9546
9546
|
"valueType": "number"
|
|
9547
9547
|
}
|
|
9548
9548
|
],
|
|
@@ -9721,15 +9721,15 @@ Object.freeze({
|
|
|
9721
9721
|
"valueType": "string"
|
|
9722
9722
|
},
|
|
9723
9723
|
{
|
|
9724
|
-
"path": "
|
|
9724
|
+
"path": "remaining",
|
|
9725
9725
|
"valueType": "number"
|
|
9726
9726
|
},
|
|
9727
9727
|
{
|
|
9728
|
-
"path": "
|
|
9728
|
+
"path": "delayedStart",
|
|
9729
9729
|
"valueType": "number"
|
|
9730
9730
|
},
|
|
9731
9731
|
{
|
|
9732
|
-
"path": "
|
|
9732
|
+
"path": "progress",
|
|
9733
9733
|
"valueType": "number"
|
|
9734
9734
|
},
|
|
9735
9735
|
{
|
|
@@ -9843,7 +9843,7 @@ Object.freeze({
|
|
|
9843
9843
|
],
|
|
9844
9844
|
"fan-control": [
|
|
9845
9845
|
{
|
|
9846
|
-
"path": "
|
|
9846
|
+
"path": "speed",
|
|
9847
9847
|
"valueType": "number"
|
|
9848
9848
|
},
|
|
9849
9849
|
{
|
|
@@ -9943,7 +9943,7 @@ Object.freeze({
|
|
|
9943
9943
|
}
|
|
9944
9944
|
],
|
|
9945
9945
|
"humidity-sensor": [{
|
|
9946
|
-
"path": "
|
|
9946
|
+
"path": "humidity",
|
|
9947
9947
|
"valueType": "number"
|
|
9948
9948
|
}],
|
|
9949
9949
|
"image": [{
|
|
@@ -10053,7 +10053,7 @@ Object.freeze({
|
|
|
10053
10053
|
"valueType": "number"
|
|
10054
10054
|
},
|
|
10055
10055
|
{
|
|
10056
|
-
"path": "
|
|
10056
|
+
"path": "progress",
|
|
10057
10057
|
"valueType": "number"
|
|
10058
10058
|
},
|
|
10059
10059
|
{
|
|
@@ -10132,11 +10132,11 @@ Object.freeze({
|
|
|
10132
10132
|
"valueType": "string"
|
|
10133
10133
|
},
|
|
10134
10134
|
{
|
|
10135
|
-
"path": "
|
|
10135
|
+
"path": "position",
|
|
10136
10136
|
"valueType": "number"
|
|
10137
10137
|
},
|
|
10138
10138
|
{
|
|
10139
|
-
"path": "
|
|
10139
|
+
"path": "duration",
|
|
10140
10140
|
"valueType": "number"
|
|
10141
10141
|
},
|
|
10142
10142
|
{
|
|
@@ -10238,11 +10238,11 @@ Object.freeze({
|
|
|
10238
10238
|
]
|
|
10239
10239
|
},
|
|
10240
10240
|
{
|
|
10241
|
-
"path": "
|
|
10241
|
+
"path": "signal",
|
|
10242
10242
|
"valueType": "number"
|
|
10243
10243
|
},
|
|
10244
10244
|
{
|
|
10245
|
-
"path": "
|
|
10245
|
+
"path": "rssi",
|
|
10246
10246
|
"valueType": "number"
|
|
10247
10247
|
},
|
|
10248
10248
|
{
|
|
@@ -10373,23 +10373,23 @@ Object.freeze({
|
|
|
10373
10373
|
],
|
|
10374
10374
|
"power-meter": [
|
|
10375
10375
|
{
|
|
10376
|
-
"path": "
|
|
10376
|
+
"path": "power",
|
|
10377
10377
|
"valueType": "number"
|
|
10378
10378
|
},
|
|
10379
10379
|
{
|
|
10380
|
-
"path": "
|
|
10380
|
+
"path": "energy",
|
|
10381
10381
|
"valueType": "number"
|
|
10382
10382
|
},
|
|
10383
10383
|
{
|
|
10384
|
-
"path": "
|
|
10384
|
+
"path": "voltage",
|
|
10385
10385
|
"valueType": "number"
|
|
10386
10386
|
},
|
|
10387
10387
|
{
|
|
10388
|
-
"path": "
|
|
10388
|
+
"path": "current",
|
|
10389
10389
|
"valueType": "number"
|
|
10390
10390
|
},
|
|
10391
10391
|
{
|
|
10392
|
-
"path": "
|
|
10392
|
+
"path": "apparentPower",
|
|
10393
10393
|
"valueType": "number"
|
|
10394
10394
|
},
|
|
10395
10395
|
{
|
|
@@ -10417,14 +10417,10 @@ Object.freeze({
|
|
|
10417
10417
|
{
|
|
10418
10418
|
"path": "gps.accuracyMeters",
|
|
10419
10419
|
"valueType": "number"
|
|
10420
|
-
},
|
|
10421
|
-
{
|
|
10422
|
-
"path": "batteryPercent",
|
|
10423
|
-
"valueType": "number"
|
|
10424
10420
|
}
|
|
10425
10421
|
],
|
|
10426
10422
|
"pressure-sensor": [{
|
|
10427
|
-
"path": "
|
|
10423
|
+
"path": "pressure",
|
|
10428
10424
|
"valueType": "number"
|
|
10429
10425
|
}],
|
|
10430
10426
|
"privacy-mask": [{
|
|
@@ -10738,7 +10734,7 @@ Object.freeze({
|
|
|
10738
10734
|
"valueType": "boolean"
|
|
10739
10735
|
}],
|
|
10740
10736
|
"temperature-sensor": [{
|
|
10741
|
-
"path": "
|
|
10737
|
+
"path": "temperature",
|
|
10742
10738
|
"valueType": "number"
|
|
10743
10739
|
}],
|
|
10744
10740
|
"update": [
|
|
@@ -10786,7 +10782,7 @@ Object.freeze({
|
|
|
10786
10782
|
"valueType": "string"
|
|
10787
10783
|
},
|
|
10788
10784
|
{
|
|
10789
|
-
"path": "
|
|
10785
|
+
"path": "progress",
|
|
10790
10786
|
"valueType": "number"
|
|
10791
10787
|
},
|
|
10792
10788
|
{
|
|
@@ -11416,7 +11412,7 @@ function errMsg(err) {
|
|
|
11416
11412
|
return String(err);
|
|
11417
11413
|
}
|
|
11418
11414
|
//#endregion
|
|
11419
|
-
//#region ../types/dist/composition-
|
|
11415
|
+
//#region ../types/dist/composition-DwA0uVW5.mjs
|
|
11420
11416
|
/**
|
|
11421
11417
|
* Deterministic SHA-256 hash of an arbitrary serialisable value. The
|
|
11422
11418
|
* canonical form sorts object keys alphabetically at every depth so two
|
|
@@ -20117,7 +20113,7 @@ var CompositionEventPlanSchema = object({
|
|
|
20117
20113
|
stateField: string(),
|
|
20118
20114
|
fieldKey: string()
|
|
20119
20115
|
});
|
|
20120
|
-
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.
|
|
20116
|
+
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
|
|
20121
20117
|
var CompositionProblemSchema = object({
|
|
20122
20118
|
code: _enum([
|
|
20123
20119
|
"reserved-variant",
|
|
@@ -20399,12 +20395,13 @@ var CHANGED = {
|
|
|
20399
20395
|
expr: "now"
|
|
20400
20396
|
};
|
|
20401
20397
|
function numeric(input) {
|
|
20398
|
+
const { alsoFrom, ...base } = input;
|
|
20402
20399
|
return {
|
|
20403
|
-
...
|
|
20400
|
+
...base,
|
|
20404
20401
|
family: "numeric",
|
|
20405
20402
|
deviceType: DeviceType.Sensor,
|
|
20406
20403
|
memberDeviceType: DeviceType.Sensor,
|
|
20407
|
-
memberDeviceTypes: [DeviceType.Sensor],
|
|
20404
|
+
memberDeviceTypes: [DeviceType.Sensor, ...alsoFrom?.deviceTypes ?? []],
|
|
20408
20405
|
activeWhen: void 0,
|
|
20409
20406
|
commandCaps: [],
|
|
20410
20407
|
baseUnit: baseUnitOf(input.quantity),
|
|
@@ -20412,9 +20409,10 @@ function numeric(input) {
|
|
|
20412
20409
|
accept: [{
|
|
20413
20410
|
cap: input.outputCap,
|
|
20414
20411
|
fieldPath: input.outputField
|
|
20415
|
-
}]
|
|
20412
|
+
}, ...alsoFrom === void 0 ? [] : [alsoFrom.accept]]
|
|
20416
20413
|
};
|
|
20417
20414
|
}
|
|
20415
|
+
var CLIMATE_DEVICES = [DeviceType.Thermostat, DeviceType.Climate];
|
|
20418
20416
|
function binary(input) {
|
|
20419
20417
|
return {
|
|
20420
20418
|
...input,
|
|
@@ -20436,29 +20434,43 @@ var GROUP_TEMPLATES = [
|
|
|
20436
20434
|
summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
|
|
20437
20435
|
role: DeviceRole.TemperatureSensor,
|
|
20438
20436
|
outputCap: "temperature-sensor",
|
|
20439
|
-
outputField: "
|
|
20437
|
+
outputField: "temperature",
|
|
20440
20438
|
quantity: "temperature",
|
|
20441
20439
|
defaultAggregate: "mean",
|
|
20442
20440
|
empty: "null",
|
|
20443
|
-
companions: [NOW$2]
|
|
20441
|
+
companions: [NOW$2],
|
|
20442
|
+
alsoFrom: {
|
|
20443
|
+
deviceTypes: CLIMATE_DEVICES,
|
|
20444
|
+
accept: {
|
|
20445
|
+
cap: "climate-control",
|
|
20446
|
+
fieldPath: "currentTemp"
|
|
20447
|
+
}
|
|
20448
|
+
}
|
|
20444
20449
|
}),
|
|
20445
20450
|
numeric({
|
|
20446
20451
|
id: "humidity",
|
|
20447
20452
|
summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
20448
20453
|
role: DeviceRole.HumiditySensor,
|
|
20449
20454
|
outputCap: "humidity-sensor",
|
|
20450
|
-
outputField: "
|
|
20455
|
+
outputField: "humidity",
|
|
20451
20456
|
quantity: "humidity",
|
|
20452
20457
|
defaultAggregate: "mean",
|
|
20453
20458
|
empty: "null",
|
|
20454
|
-
companions: [NOW$2]
|
|
20459
|
+
companions: [NOW$2],
|
|
20460
|
+
alsoFrom: {
|
|
20461
|
+
deviceTypes: CLIMATE_DEVICES,
|
|
20462
|
+
accept: {
|
|
20463
|
+
cap: "climate-control",
|
|
20464
|
+
fieldPath: "currentHumidity"
|
|
20465
|
+
}
|
|
20466
|
+
}
|
|
20455
20467
|
}),
|
|
20456
20468
|
numeric({
|
|
20457
20469
|
id: "pressure",
|
|
20458
20470
|
summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
|
|
20459
20471
|
role: DeviceRole.PressureSensor,
|
|
20460
20472
|
outputCap: "pressure-sensor",
|
|
20461
|
-
outputField: "
|
|
20473
|
+
outputField: "pressure",
|
|
20462
20474
|
quantity: "pressure",
|
|
20463
20475
|
defaultAggregate: "mean",
|
|
20464
20476
|
empty: "null",
|
|
@@ -20469,7 +20481,7 @@ var GROUP_TEMPLATES = [
|
|
|
20469
20481
|
summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
|
|
20470
20482
|
role: DeviceRole.AmbientLightSensor,
|
|
20471
20483
|
outputCap: "ambient-light-sensor",
|
|
20472
|
-
outputField: "
|
|
20484
|
+
outputField: "illuminance",
|
|
20473
20485
|
quantity: "illuminance",
|
|
20474
20486
|
defaultAggregate: "mean",
|
|
20475
20487
|
empty: "null",
|
|
@@ -20480,7 +20492,7 @@ var GROUP_TEMPLATES = [
|
|
|
20480
20492
|
summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
|
|
20481
20493
|
role: DeviceRole.PowerSensor,
|
|
20482
20494
|
outputCap: "power-meter",
|
|
20483
|
-
outputField: "
|
|
20495
|
+
outputField: "power",
|
|
20484
20496
|
quantity: "power",
|
|
20485
20497
|
defaultAggregate: "sum",
|
|
20486
20498
|
empty: "omit",
|
|
@@ -20491,7 +20503,7 @@ var GROUP_TEMPLATES = [
|
|
|
20491
20503
|
summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
|
|
20492
20504
|
role: DeviceRole.EnergySensor,
|
|
20493
20505
|
outputCap: "power-meter",
|
|
20494
|
-
outputField: "
|
|
20506
|
+
outputField: "energy",
|
|
20495
20507
|
quantity: "energy",
|
|
20496
20508
|
defaultAggregate: "sum",
|
|
20497
20509
|
empty: "omit",
|
|
@@ -20502,7 +20514,7 @@ var GROUP_TEMPLATES = [
|
|
|
20502
20514
|
summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
20503
20515
|
role: DeviceRole.BatterySensor,
|
|
20504
20516
|
outputCap: "battery",
|
|
20505
|
-
outputField: "
|
|
20517
|
+
outputField: "level",
|
|
20506
20518
|
quantity: "percentage",
|
|
20507
20519
|
defaultAggregate: "mean",
|
|
20508
20520
|
empty: "null",
|
|
@@ -46272,6 +46284,43 @@ var NotificationActionSchema = object({
|
|
|
46272
46284
|
*/
|
|
46273
46285
|
mode: _enum(["navigate", "background"]).optional()
|
|
46274
46286
|
});
|
|
46287
|
+
/** A delivery parameter value: what a notifier declared it takes. */
|
|
46288
|
+
var DeliveryParamValueSchema = union([
|
|
46289
|
+
string(),
|
|
46290
|
+
number(),
|
|
46291
|
+
boolean()
|
|
46292
|
+
]);
|
|
46293
|
+
/**
|
|
46294
|
+
* One extra delivery parameter a notifier KIND declares (D938). A rule that
|
|
46295
|
+
* addresses a target of that kind may set it; a kind that declares nothing is
|
|
46296
|
+
* never handed one. The admin UI derives its control from this descriptor —
|
|
46297
|
+
* no editor knows a service by name.
|
|
46298
|
+
*
|
|
46299
|
+
* Optional fields are `.optional()`, never `.default()` (a Zod default does not
|
|
46300
|
+
* run on the addon cap path).
|
|
46301
|
+
*/
|
|
46302
|
+
var DeliveryParamSchema = object({
|
|
46303
|
+
key: string().min(1),
|
|
46304
|
+
label: string(),
|
|
46305
|
+
/** i18n key of the label, resolved by the declaring addon's namespace. */
|
|
46306
|
+
labelKey: string().optional(),
|
|
46307
|
+
type: _enum([
|
|
46308
|
+
"enum",
|
|
46309
|
+
"number",
|
|
46310
|
+
"boolean",
|
|
46311
|
+
"string"
|
|
46312
|
+
]),
|
|
46313
|
+
/** `enum` only: the closed set of accepted values. */
|
|
46314
|
+
options: array(object({
|
|
46315
|
+
value: string(),
|
|
46316
|
+
label: string()
|
|
46317
|
+
})).optional(),
|
|
46318
|
+
/** `number` only. */
|
|
46319
|
+
min: number().optional(),
|
|
46320
|
+
max: number().optional(),
|
|
46321
|
+
/** What the notifier does when the rule sets nothing; shown as the placeholder. */
|
|
46322
|
+
default: DeliveryParamValueSchema.optional()
|
|
46323
|
+
});
|
|
46275
46324
|
/**
|
|
46276
46325
|
* The canonical notification. `body` is the only hard field (Apprise model).
|
|
46277
46326
|
* `priority` is a 5-level ORDINAL (1=lowest … 3=normal(default) … 5=urgent),
|
|
@@ -46294,7 +46343,13 @@ var NotificationSchema = object({
|
|
|
46294
46343
|
tag: string().optional(),
|
|
46295
46344
|
deviceId: number().optional(),
|
|
46296
46345
|
eventId: string().optional(),
|
|
46297
|
-
metadata: record(string(), unknown()).optional()
|
|
46346
|
+
metadata: record(string(), unknown()).optional(),
|
|
46347
|
+
/**
|
|
46348
|
+
* Values for the parameters the target's kind DECLARES in
|
|
46349
|
+
* {@link TargetKindSchema} `deliveryParams`. Already validated against the
|
|
46350
|
+
* declaration by the sender; a notifier reads only the keys it declared.
|
|
46351
|
+
*/
|
|
46352
|
+
delivery: record(string(), DeliveryParamValueSchema).optional()
|
|
46298
46353
|
});
|
|
46299
46354
|
/** One declared native severity/priority level for a kind. */
|
|
46300
46355
|
var TargetKindLevelSchema = object({
|
|
@@ -46400,6 +46455,11 @@ var TargetKindSchema = object({
|
|
|
46400
46455
|
*/
|
|
46401
46456
|
destinationKeys: array(string()).optional(),
|
|
46402
46457
|
supportsDiscovery: boolean(),
|
|
46458
|
+
/**
|
|
46459
|
+
* Extra delivery parameters a rule may set for a target of this kind (D938).
|
|
46460
|
+
* Absent = none; the rule editor then offers nothing.
|
|
46461
|
+
*/
|
|
46462
|
+
deliveryParams: array(DeliveryParamSchema).optional(),
|
|
46403
46463
|
caps: TargetKindCapsSchema
|
|
46404
46464
|
});
|
|
46405
46465
|
/**
|
|
@@ -60553,7 +60613,9 @@ var ManifestShapeSchema = object({
|
|
|
60553
60613
|
icon: string().optional()
|
|
60554
60614
|
}).optional(),
|
|
60555
60615
|
protected: boolean().optional(),
|
|
60556
|
-
removable: boolean().optional()
|
|
60616
|
+
removable: boolean().optional(),
|
|
60617
|
+
/** Declared Integrations-page block (mirror of `AddonDeclaration.integrationSection`). */
|
|
60618
|
+
integrationSection: _enum(["system", "providers"]).optional()
|
|
60557
60619
|
});
|
|
60558
60620
|
var AddonProcessSchema = object({
|
|
60559
60621
|
pid: number().optional(),
|
|
@@ -60927,9 +60989,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
60927
60989
|
*/
|
|
60928
60990
|
var AirQualitySensorStatusSchema = object({
|
|
60929
60991
|
/** Carbon dioxide concentration in ppm. */
|
|
60930
|
-
|
|
60992
|
+
co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
|
|
60931
60993
|
/** Total volatile organic compounds in ppb. */
|
|
60932
|
-
|
|
60994
|
+
voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
|
|
60933
60995
|
/** Particulate matter ≤ 2.5 μm in µg/m³. */
|
|
60934
60996
|
pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
|
|
60935
60997
|
/** Particulate matter ≤ 10 μm in µg/m³. */
|
|
@@ -60962,12 +61024,12 @@ var airQualitySensorCapability = {
|
|
|
60962
61024
|
* History (D850): recorded series.
|
|
60963
61025
|
*/
|
|
60964
61026
|
history: { fields: {
|
|
60965
|
-
|
|
61027
|
+
co2: {
|
|
60966
61028
|
kind: "gauge",
|
|
60967
61029
|
unit: "ppm",
|
|
60968
61030
|
deadband: 5
|
|
60969
61031
|
},
|
|
60970
|
-
|
|
61032
|
+
voc: {
|
|
60971
61033
|
kind: "gauge",
|
|
60972
61034
|
unit: "ppb",
|
|
60973
61035
|
deadband: 5
|
|
@@ -60998,7 +61060,7 @@ var airQualitySensorCapability = {
|
|
|
60998
61060
|
*/
|
|
60999
61061
|
var AmbientLightSensorStatusSchema = object({
|
|
61000
61062
|
/** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
|
|
61001
|
-
|
|
61063
|
+
illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
|
|
61002
61064
|
precision: 0,
|
|
61003
61065
|
label: "Illuminance"
|
|
61004
61066
|
})),
|
|
@@ -61027,7 +61089,7 @@ var ambientLightSensorCapability = {
|
|
|
61027
61089
|
/**
|
|
61028
61090
|
* History (D850): recorded series. Wide range, so a RELATIVE deadband (10 %).
|
|
61029
61091
|
*/
|
|
61030
|
-
history: { fields: {
|
|
61092
|
+
history: { fields: { illuminance: {
|
|
61031
61093
|
kind: "gauge",
|
|
61032
61094
|
unit: "lx",
|
|
61033
61095
|
deadbandPct: 10,
|
|
@@ -61340,7 +61402,7 @@ var BatteryStatusSchema = object({
|
|
|
61340
61402
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
61341
61403
|
* declines to band a non-finite reading, which is the correct shape.
|
|
61342
61404
|
*/
|
|
61343
|
-
|
|
61405
|
+
level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
|
|
61344
61406
|
/**
|
|
61345
61407
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
61346
61408
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -61350,7 +61412,7 @@ var BatteryStatusSchema = object({
|
|
|
61350
61412
|
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
61351
61413
|
* power fields yet, or the firmware reported neither. Before it existed,
|
|
61352
61414
|
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
61353
|
-
* was drawn "on battery alone" — the same D315 defect `
|
|
61415
|
+
* was drawn "on battery alone" — the same D315 defect `level` closed
|
|
61354
61416
|
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
61355
61417
|
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
61356
61418
|
*/
|
|
@@ -61374,7 +61436,7 @@ var BatteryStatusSchema = object({
|
|
|
61374
61436
|
* that only report charge. A second reading on this cap, not a second
|
|
61375
61437
|
* `numeric-sensor` on the same device.
|
|
61376
61438
|
*/
|
|
61377
|
-
|
|
61439
|
+
voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
61378
61440
|
/**
|
|
61379
61441
|
* Ms epoch of the last time the device PROVED it was reachable — a
|
|
61380
61442
|
* completed firmware round-trip, an observed wake, or an inbound push
|
|
@@ -61408,7 +61470,7 @@ var BatteryStatusSchema = object({
|
|
|
61408
61470
|
/**
|
|
61409
61471
|
* True when the source is a BINARY low-battery indicator (HA
|
|
61410
61472
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
61411
|
-
* charge level — `
|
|
61473
|
+
* charge level — `level` is then a coarse stand-in (100 = normal,
|
|
61412
61474
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
61413
61475
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
61414
61476
|
*/
|
|
@@ -61428,15 +61490,15 @@ var BATTERY_DEVICE_TYPES = [
|
|
|
61428
61490
|
var batteryCustomize = {
|
|
61429
61491
|
version: 1,
|
|
61430
61492
|
targets: [{
|
|
61431
|
-
id: "
|
|
61493
|
+
id: "level",
|
|
61432
61494
|
cardinality: "scalar",
|
|
61433
61495
|
vocabulary: {
|
|
61434
61496
|
cap: "battery",
|
|
61435
|
-
stateField: "
|
|
61497
|
+
stateField: "level"
|
|
61436
61498
|
},
|
|
61437
61499
|
deviceTypes: BATTERY_DEVICE_TYPES,
|
|
61438
61500
|
apply: "add",
|
|
61439
|
-
path: "
|
|
61501
|
+
path: "level",
|
|
61440
61502
|
sources: [{
|
|
61441
61503
|
kind: "field",
|
|
61442
61504
|
valueKinds: ["number", "string"],
|
|
@@ -61530,7 +61592,7 @@ onStatusChanged: { data: object({
|
|
|
61530
61592
|
schema: BatteryStatusSchema,
|
|
61531
61593
|
kind: "push",
|
|
61532
61594
|
empty: {
|
|
61533
|
-
|
|
61595
|
+
level: null,
|
|
61534
61596
|
charging: "unknown",
|
|
61535
61597
|
sleeping: false,
|
|
61536
61598
|
lastUpdated: 0
|
|
@@ -61557,11 +61619,11 @@ onStatusChanged: { data: object({
|
|
|
61557
61619
|
* History (D850): recorded series. The generic capture replaces the `battery` series of `pipeline-analytics:stats-5m`.
|
|
61558
61620
|
*/
|
|
61559
61621
|
history: { fields: {
|
|
61560
|
-
|
|
61622
|
+
level: {
|
|
61561
61623
|
kind: "gauge",
|
|
61562
61624
|
unit: "%"
|
|
61563
61625
|
},
|
|
61564
|
-
|
|
61626
|
+
voltage: {
|
|
61565
61627
|
kind: "gauge",
|
|
61566
61628
|
unit: "V"
|
|
61567
61629
|
}
|
|
@@ -61621,14 +61683,14 @@ var binaryCapability = {
|
|
|
61621
61683
|
* controls to this single-method surface.
|
|
61622
61684
|
*
|
|
61623
61685
|
* The cap is intentionally minimal: a single `setBrightness({deviceId,
|
|
61624
|
-
*
|
|
61686
|
+
* level})` mutation plus the auto-injected `getStatus`. Drivers
|
|
61625
61687
|
* that expose richer controls (color temperature, scenes, schedules)
|
|
61626
61688
|
* should surface those via the device's `getSettingsUISchema()`
|
|
61627
61689
|
* instead of bloating this cap.
|
|
61628
61690
|
*/
|
|
61629
61691
|
var BrightnessStatusSchema = object({
|
|
61630
61692
|
/** Current level as 0..100 inclusive. Firmware-reported. */
|
|
61631
|
-
|
|
61693
|
+
level: number().min(0).max(100).meta(readingMeta("percentage")),
|
|
61632
61694
|
/** Ms epoch of the last operator-driven change. Useful for UI freshness. */
|
|
61633
61695
|
lastChangedAt: number()
|
|
61634
61696
|
});
|
|
@@ -61640,7 +61702,7 @@ var brightnessCapability = {
|
|
|
61640
61702
|
deviceTypes: [DeviceType.Light],
|
|
61641
61703
|
methods: { setBrightness: method(object({
|
|
61642
61704
|
deviceId: number().int().nonnegative(),
|
|
61643
|
-
|
|
61705
|
+
level: number().min(0).max(100)
|
|
61644
61706
|
}), _void(), {
|
|
61645
61707
|
kind: "mutation",
|
|
61646
61708
|
auth: "protected"
|
|
@@ -61653,7 +61715,7 @@ var brightnessCapability = {
|
|
|
61653
61715
|
*/
|
|
61654
61716
|
onBrightnessChanged: { data: object({
|
|
61655
61717
|
deviceId: number(),
|
|
61656
|
-
|
|
61718
|
+
level: number().min(0).max(100),
|
|
61657
61719
|
lastChangedAt: number()
|
|
61658
61720
|
}) } },
|
|
61659
61721
|
status: {
|
|
@@ -61676,7 +61738,7 @@ onBrightnessChanged: { data: object({
|
|
|
61676
61738
|
/**
|
|
61677
61739
|
* History (D850): recorded series. Actuator tier: level keeps every change.
|
|
61678
61740
|
*/
|
|
61679
|
-
history: { fields: {
|
|
61741
|
+
history: { fields: { level: {
|
|
61680
61742
|
kind: "gauge",
|
|
61681
61743
|
unit: "%",
|
|
61682
61744
|
minIntervalMs: 0
|
|
@@ -62300,11 +62362,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
|
|
|
62300
62362
|
}),
|
|
62301
62363
|
object({
|
|
62302
62364
|
mode: literal("mired"),
|
|
62303
|
-
|
|
62365
|
+
colorTemperature: number().int().min(50).max(1e3)
|
|
62304
62366
|
})
|
|
62305
62367
|
]);
|
|
62306
62368
|
var ColorStatusSchema = object({
|
|
62307
|
-
/** Active color mode — which of `rgb` / `hsv` / `
|
|
62369
|
+
/** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
|
|
62308
62370
|
* the bulb's current state. */
|
|
62309
62371
|
mode: _enum([
|
|
62310
62372
|
"rgb",
|
|
@@ -62316,7 +62378,7 @@ var ColorStatusSchema = object({
|
|
|
62316
62378
|
/** Populated when `mode === 'hsv'`. */
|
|
62317
62379
|
hsv: HsvTripletSchema.optional(),
|
|
62318
62380
|
/** Populated when `mode === 'mired'`. */
|
|
62319
|
-
|
|
62381
|
+
colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
|
|
62320
62382
|
/** Ms epoch of the last operator-driven change. */
|
|
62321
62383
|
lastChangedAt: number()
|
|
62322
62384
|
});
|
|
@@ -62348,7 +62410,7 @@ onColorChanged: { data: object({
|
|
|
62348
62410
|
]),
|
|
62349
62411
|
rgb: RgbTripletSchema.optional(),
|
|
62350
62412
|
hsv: HsvTripletSchema.optional(),
|
|
62351
|
-
|
|
62413
|
+
colorTemperature: number().int().optional(),
|
|
62352
62414
|
lastChangedAt: number()
|
|
62353
62415
|
}) } },
|
|
62354
62416
|
status: {
|
|
@@ -63261,11 +63323,11 @@ var DishwasherStatusSchema = object({
|
|
|
63261
63323
|
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
63262
63324
|
availablePrograms: array(string()),
|
|
63263
63325
|
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
63264
|
-
|
|
63326
|
+
remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
63265
63327
|
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
63266
|
-
|
|
63328
|
+
delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
63267
63329
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
63268
|
-
|
|
63330
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
63269
63331
|
/** True when the door is reported open; null when the door state is not known. */
|
|
63270
63332
|
doorOpen: boolean().nullable(),
|
|
63271
63333
|
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
@@ -63484,14 +63546,14 @@ var dishwasherCapability = {
|
|
|
63484
63546
|
runtimeState: DishwasherStatusSchema,
|
|
63485
63547
|
durability: "session",
|
|
63486
63548
|
history: { fields: {
|
|
63487
|
-
|
|
63549
|
+
progress: {
|
|
63488
63550
|
kind: "gauge",
|
|
63489
63551
|
unit: "%",
|
|
63490
63552
|
deadband: 2
|
|
63491
63553
|
},
|
|
63492
63554
|
state: { kind: "enum" },
|
|
63493
63555
|
operationState: { kind: "enum" },
|
|
63494
|
-
|
|
63556
|
+
remaining: {
|
|
63495
63557
|
kind: "gauge",
|
|
63496
63558
|
unit: "s",
|
|
63497
63559
|
minIntervalMs: 6e4
|
|
@@ -64122,7 +64184,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
|
|
|
64122
64184
|
var FanControlStatusSchema = object({
|
|
64123
64185
|
/** Active speed as 0..100 inclusive. Null when the device has no
|
|
64124
64186
|
* speed surface (single-speed fan). */
|
|
64125
|
-
|
|
64187
|
+
speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
64126
64188
|
/** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
|
|
64127
64189
|
* a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
|
|
64128
64190
|
percentageStep: number().positive().optional().meta(readingMeta("percentage")),
|
|
@@ -64149,7 +64211,7 @@ var fanControlCapability = {
|
|
|
64149
64211
|
methods: {
|
|
64150
64212
|
setPercentage: method(object({
|
|
64151
64213
|
deviceId: number().int().nonnegative(),
|
|
64152
|
-
|
|
64214
|
+
speed: number().min(0).max(100)
|
|
64153
64215
|
}), _void(), {
|
|
64154
64216
|
kind: "mutation",
|
|
64155
64217
|
auth: "protected"
|
|
@@ -64182,7 +64244,7 @@ var fanControlCapability = {
|
|
|
64182
64244
|
},
|
|
64183
64245
|
/**
|
|
64184
64246
|
* Runtime-state slice — mirrored by the kernel. UI fan speed
|
|
64185
|
-
* sliders read `
|
|
64247
|
+
* sliders read `speed` for live updates.
|
|
64186
64248
|
*/
|
|
64187
64249
|
runtimeState: FanControlStatusSchema,
|
|
64188
64250
|
/**
|
|
@@ -64196,7 +64258,7 @@ var fanControlCapability = {
|
|
|
64196
64258
|
* History (D850): recorded series. Actuator tier: speed keeps every change.
|
|
64197
64259
|
*/
|
|
64198
64260
|
history: { fields: {
|
|
64199
|
-
|
|
64261
|
+
speed: {
|
|
64200
64262
|
kind: "gauge",
|
|
64201
64263
|
unit: "%",
|
|
64202
64264
|
minIntervalMs: 0
|
|
@@ -64641,7 +64703,7 @@ var humidifierCapability = {
|
|
|
64641
64703
|
*/
|
|
64642
64704
|
var HumiditySensorStatusSchema = object({
|
|
64643
64705
|
/** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
|
|
64644
|
-
|
|
64706
|
+
humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
|
|
64645
64707
|
precision: 0,
|
|
64646
64708
|
label: "Humidity"
|
|
64647
64709
|
})),
|
|
@@ -64670,7 +64732,7 @@ var humiditySensorCapability = {
|
|
|
64670
64732
|
/**
|
|
64671
64733
|
* History (D850): recorded series.
|
|
64672
64734
|
*/
|
|
64673
|
-
history: { fields: {
|
|
64735
|
+
history: { fields: { humidity: {
|
|
64674
64736
|
kind: "gauge",
|
|
64675
64737
|
unit: "%",
|
|
64676
64738
|
deadband: .5
|
|
@@ -65310,7 +65372,7 @@ var LawnMowerControlStatusSchema = object({
|
|
|
65310
65372
|
batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65311
65373
|
/** 0..100 mowing-completion percentage of the current task, or null when no
|
|
65312
65374
|
* task is active / progress is unavailable. */
|
|
65313
|
-
|
|
65375
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65314
65376
|
/** Current device/event code (dynamic — mostly status, sometimes an error),
|
|
65315
65377
|
* or null when unknown. */
|
|
65316
65378
|
currentCode: number().nullable().meta(readingMeta("none")),
|
|
@@ -65831,7 +65893,7 @@ var lockControlCapability = {
|
|
|
65831
65893
|
volatileStateFields: ["lastChangedAt"]
|
|
65832
65894
|
};
|
|
65833
65895
|
/**
|
|
65834
|
-
* A monotonic total between resets (D944). Energy uses `power-meter.
|
|
65896
|
+
* A monotonic total between resets (D944). Energy uses `power-meter.energy`
|
|
65835
65897
|
* so dashboards keep one series; every other instantaneous reading lands here.
|
|
65836
65898
|
* `value` is the time integral in the source quantity's accumulated base
|
|
65837
65899
|
* (base-unit seconds, or kWh on the power meter). `null` is a gap, never zero.
|
|
@@ -65925,10 +65987,10 @@ var MediaPlayerStatusSchema = object({
|
|
|
65925
65987
|
currentMedia: MediaInfoSchema.nullable(),
|
|
65926
65988
|
/** Current playback position in ms. Null when not seekable or
|
|
65927
65989
|
* nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
|
|
65928
|
-
|
|
65990
|
+
position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
65929
65991
|
/** Total duration of the current media in ms. Null when unknown
|
|
65930
65992
|
* (live stream) or nothing is playing. */
|
|
65931
|
-
|
|
65993
|
+
duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
65932
65994
|
/** Shuffle toggle. Null when no shuffle surface.
|
|
65933
65995
|
* Pair with `DeviceFeature.MediaPlayerShuffle`. */
|
|
65934
65996
|
shuffle: boolean().nullable(),
|
|
@@ -65967,7 +66029,7 @@ var mediaPlayerCapability = {
|
|
|
65967
66029
|
}),
|
|
65968
66030
|
seek: method(object({
|
|
65969
66031
|
deviceId: number().int().nonnegative(),
|
|
65970
|
-
|
|
66032
|
+
position: number().int().nonnegative()
|
|
65971
66033
|
}), _void(), {
|
|
65972
66034
|
kind: "mutation",
|
|
65973
66035
|
auth: "protected"
|
|
@@ -66039,7 +66101,7 @@ var mediaPlayerCapability = {
|
|
|
66039
66101
|
/**
|
|
66040
66102
|
* History (D850): volume (a level an operator or an automation sets; the
|
|
66041
66103
|
* default 10 s floor folds a slider drag into its end value) and mute.
|
|
66042
|
-
* `
|
|
66104
|
+
* `position` is not recorded: it moves continuously while playing.
|
|
66043
66105
|
*/
|
|
66044
66106
|
history: { fields: {
|
|
66045
66107
|
volumeLevel: {
|
|
@@ -67026,9 +67088,9 @@ var NetworkLinkStatusSchema = object({
|
|
|
67026
67088
|
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
67027
67089
|
* SKIP a null rather than coerce it.
|
|
67028
67090
|
*/
|
|
67029
|
-
|
|
67091
|
+
signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
67030
67092
|
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
67031
|
-
|
|
67093
|
+
rssi: number().optional().meta(readingMeta("signal-level")),
|
|
67032
67094
|
/** Network name of a wireless link, when the firmware reports it. */
|
|
67033
67095
|
ssid: string().optional(),
|
|
67034
67096
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
@@ -67064,7 +67126,7 @@ onStatusChanged: { data: object({
|
|
|
67064
67126
|
kind: "push",
|
|
67065
67127
|
empty: {
|
|
67066
67128
|
type: "unknown",
|
|
67067
|
-
|
|
67129
|
+
signal: null,
|
|
67068
67130
|
lastUpdated: 0
|
|
67069
67131
|
}
|
|
67070
67132
|
},
|
|
@@ -67087,13 +67149,13 @@ onStatusChanged: { data: object({
|
|
|
67087
67149
|
* History (D850): recorded series.
|
|
67088
67150
|
*/
|
|
67089
67151
|
history: { fields: {
|
|
67090
|
-
|
|
67152
|
+
signal: {
|
|
67091
67153
|
kind: "gauge",
|
|
67092
67154
|
unit: "%",
|
|
67093
67155
|
deadband: 3,
|
|
67094
67156
|
minIntervalMs: 6e4
|
|
67095
67157
|
},
|
|
67096
|
-
|
|
67158
|
+
rssi: {
|
|
67097
67159
|
kind: "gauge",
|
|
67098
67160
|
unit: "dBm",
|
|
67099
67161
|
deadband: 2,
|
|
@@ -68448,16 +68510,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
68448
68510
|
* in real-world devices.
|
|
68449
68511
|
*/
|
|
68450
68512
|
var PowerMeterStatusSchema = object({
|
|
68451
|
-
/** Instantaneous power draw
|
|
68452
|
-
|
|
68513
|
+
/** Instantaneous power draw (watts). */
|
|
68514
|
+
power: number().optional().meta(readingMeta("power", { label: "Power" })),
|
|
68453
68515
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
68454
|
-
|
|
68455
|
-
/** Voltage
|
|
68456
|
-
|
|
68516
|
+
energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
|
|
68517
|
+
/** Voltage (volts). */
|
|
68518
|
+
voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
68457
68519
|
/** Current in amperes. */
|
|
68458
|
-
|
|
68520
|
+
current: number().optional().meta(readingMeta("current", { label: "Current" })),
|
|
68459
68521
|
/** Apparent power in volt-amperes. */
|
|
68460
|
-
|
|
68522
|
+
apparentPower: number().optional().meta(readingMeta("apparent-power")),
|
|
68461
68523
|
/** Power factor (0..1) if reported. */
|
|
68462
68524
|
powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
|
|
68463
68525
|
/** Ms epoch when the slice was last updated. */
|
|
@@ -68515,14 +68577,14 @@ function powerTarget(id, unit) {
|
|
|
68515
68577
|
advancedExpression: true
|
|
68516
68578
|
};
|
|
68517
68579
|
}
|
|
68518
|
-
/** "Power and energy" extension:
|
|
68580
|
+
/** "Power and energy" extension: power, energy, voltage and current from other devices (D951). */
|
|
68519
68581
|
var powerMeterCustomize = {
|
|
68520
68582
|
version: 1,
|
|
68521
68583
|
targets: [
|
|
68522
|
-
powerTarget("
|
|
68523
|
-
powerTarget("
|
|
68524
|
-
powerTarget("
|
|
68525
|
-
powerTarget("
|
|
68584
|
+
powerTarget("power", "W"),
|
|
68585
|
+
powerTarget("energy", "kWh"),
|
|
68586
|
+
powerTarget("voltage", "V"),
|
|
68587
|
+
powerTarget("current", "A")
|
|
68526
68588
|
]
|
|
68527
68589
|
};
|
|
68528
68590
|
var powerMeterCapability = {
|
|
@@ -68538,41 +68600,41 @@ var powerMeterCapability = {
|
|
|
68538
68600
|
},
|
|
68539
68601
|
runtimeState: PowerMeterStatusSchema,
|
|
68540
68602
|
/**
|
|
68541
|
-
* Runtime-state durability: **restored** — as `numeric-sensor`; `
|
|
68603
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`; `energy` is an accumulator whose restored value is the baseline.
|
|
68542
68604
|
*
|
|
68543
68605
|
* See `RuntimeStateDurability`. Enforced by
|
|
68544
68606
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68545
68607
|
*/
|
|
68546
68608
|
durability: "restored",
|
|
68547
68609
|
/**
|
|
68548
|
-
* History (D850): recorded series. Gauges are floored at 30 s; `
|
|
68610
|
+
* History (D850): recorded series. Gauges are floored at 30 s; `energy` is the one monotonic meter (counter).
|
|
68549
68611
|
*/
|
|
68550
68612
|
history: { fields: {
|
|
68551
|
-
|
|
68613
|
+
power: {
|
|
68552
68614
|
kind: "gauge",
|
|
68553
68615
|
unit: "W",
|
|
68554
68616
|
deadband: 1,
|
|
68555
68617
|
minIntervalMs: 3e4
|
|
68556
68618
|
},
|
|
68557
|
-
|
|
68619
|
+
energy: {
|
|
68558
68620
|
kind: "counter",
|
|
68559
68621
|
unit: "kWh",
|
|
68560
68622
|
deadband: .01,
|
|
68561
68623
|
minIntervalMs: 6e4
|
|
68562
68624
|
},
|
|
68563
|
-
|
|
68625
|
+
voltage: {
|
|
68564
68626
|
kind: "gauge",
|
|
68565
68627
|
unit: "V",
|
|
68566
68628
|
deadband: 1,
|
|
68567
68629
|
minIntervalMs: 3e4
|
|
68568
68630
|
},
|
|
68569
|
-
|
|
68631
|
+
current: {
|
|
68570
68632
|
kind: "gauge",
|
|
68571
68633
|
unit: "A",
|
|
68572
68634
|
deadband: .05,
|
|
68573
68635
|
minIntervalMs: 3e4
|
|
68574
68636
|
},
|
|
68575
|
-
|
|
68637
|
+
apparentPower: {
|
|
68576
68638
|
kind: "gauge",
|
|
68577
68639
|
unit: "VA",
|
|
68578
68640
|
deadband: 1,
|
|
@@ -68622,9 +68684,6 @@ var PresenceStatusSchema = object({
|
|
|
68622
68684
|
location: string().nullable(),
|
|
68623
68685
|
/** GPS coordinates when available. Null otherwise. */
|
|
68624
68686
|
gps: GpsLocationSchema.nullable(),
|
|
68625
|
-
/** Optional battery level of the tracking device (0..100). Null
|
|
68626
|
-
* when not reported. */
|
|
68627
|
-
batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
68628
68687
|
/** Ms epoch when the slice was last updated. */
|
|
68629
68688
|
lastChangedAt: number()
|
|
68630
68689
|
});
|
|
@@ -68653,14 +68712,7 @@ var presenceCapability = {
|
|
|
68653
68712
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68654
68713
|
*/
|
|
68655
68714
|
durability: "restored",
|
|
68656
|
-
|
|
68657
|
-
* History (D850): recorded series.
|
|
68658
|
-
*/
|
|
68659
|
-
history: { fields: { batteryPercent: {
|
|
68660
|
-
kind: "gauge",
|
|
68661
|
-
unit: "%",
|
|
68662
|
-
deadband: 1
|
|
68663
|
-
} } },
|
|
68715
|
+
history: "none",
|
|
68664
68716
|
/** Clock fields: written, but excluded from the compare that decides
|
|
68665
68717
|
* whether persisting is worth a SQLite commit. */
|
|
68666
68718
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -68675,7 +68727,7 @@ var presenceCapability = {
|
|
|
68675
68727
|
*/
|
|
68676
68728
|
var PressureSensorStatusSchema = object({
|
|
68677
68729
|
/** Current pressure in hPa. `null` when the sample was refused (D393). */
|
|
68678
|
-
|
|
68730
|
+
pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
|
|
68679
68731
|
/** Ms epoch when the slice was last updated. */
|
|
68680
68732
|
lastFetchedAt: number()
|
|
68681
68733
|
});
|
|
@@ -68701,7 +68753,7 @@ var pressureSensorCapability = {
|
|
|
68701
68753
|
/**
|
|
68702
68754
|
* History (D850): recorded series.
|
|
68703
68755
|
*/
|
|
68704
|
-
history: { fields: {
|
|
68756
|
+
history: { fields: { pressure: {
|
|
68705
68757
|
kind: "gauge",
|
|
68706
68758
|
unit: "hPa",
|
|
68707
68759
|
deadband: .1
|
|
@@ -72450,7 +72502,7 @@ var tamperCapability = {
|
|
|
72450
72502
|
*/
|
|
72451
72503
|
var TemperatureSensorStatusSchema = object({
|
|
72452
72504
|
/** Current temperature in Celsius. `null` when the sample was refused (D393). */
|
|
72453
|
-
|
|
72505
|
+
temperature: number().nullable().meta(readingMeta("temperature", {
|
|
72454
72506
|
precision: 1,
|
|
72455
72507
|
label: "Temperature"
|
|
72456
72508
|
})),
|
|
@@ -72479,7 +72531,7 @@ var temperatureSensorCapability = {
|
|
|
72479
72531
|
/**
|
|
72480
72532
|
* History (D850): recorded series.
|
|
72481
72533
|
*/
|
|
72482
|
-
history: { fields: {
|
|
72534
|
+
history: { fields: { temperature: {
|
|
72483
72535
|
kind: "gauge",
|
|
72484
72536
|
unit: "°C",
|
|
72485
72537
|
deadband: .1
|
|
@@ -72776,7 +72828,7 @@ var VacuumControlStatusSchema = object({
|
|
|
72776
72828
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
72777
72829
|
availableFanSpeeds: array(string()),
|
|
72778
72830
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
72779
|
-
|
|
72831
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
72780
72832
|
/** Current error code (0 / null = no error). */
|
|
72781
72833
|
errorCode: number().nullable().meta(readingMeta("none")),
|
|
72782
72834
|
/** Human label for {@link errorCode}, or null when none / undecodable. */
|
|
@@ -74483,7 +74535,7 @@ var BaseDevice = class {
|
|
|
74483
74535
|
* `device-local-state.ts`. Drivers access via:
|
|
74484
74536
|
*
|
|
74485
74537
|
* `this.state.battery.sleeping = true` // patches the battery slice
|
|
74486
|
-
* `const pct = this.state.battery.
|
|
74538
|
+
* `const pct = this.state.battery.level` // reads the battery slice
|
|
74487
74539
|
* `this.state.deviceStatus.online = true` // mirrors `markOnline(true)`
|
|
74488
74540
|
*
|
|
74489
74541
|
* Adding a new cap with `runtimeState:` automatically extends this
|
|
@@ -74523,7 +74575,7 @@ var BaseDevice = class {
|
|
|
74523
74575
|
* shape; drivers don't redeclare it, they just write through.
|
|
74524
74576
|
*
|
|
74525
74577
|
* Read: `this.runtimeState.getCapState('battery')` →
|
|
74526
|
-
* `{
|
|
74578
|
+
* `{level, charging, sleeping, lastUpdated}` for any
|
|
74527
74579
|
* provider that registers `batteryCapability`.
|
|
74528
74580
|
* Write: `this.runtimeState.setCapState('battery', { … })`.
|
|
74529
74581
|
*
|
|
@@ -85243,7 +85295,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85243
85295
|
label: t("Full brightness", "Luminosità massima"),
|
|
85244
85296
|
phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
|
|
85245
85297
|
icon: "sun",
|
|
85246
|
-
args: {
|
|
85298
|
+
args: { level: 100 }
|
|
85247
85299
|
},
|
|
85248
85300
|
{
|
|
85249
85301
|
id: "brightness.half",
|
|
@@ -85251,7 +85303,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85251
85303
|
label: t("Half brightness", "Luminosità a metà"),
|
|
85252
85304
|
phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
|
|
85253
85305
|
icon: "sun-dim",
|
|
85254
|
-
args: {
|
|
85306
|
+
args: { level: 50 }
|
|
85255
85307
|
},
|
|
85256
85308
|
{
|
|
85257
85309
|
id: "brightness.off",
|
|
@@ -85259,16 +85311,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85259
85311
|
label: t("Brightness off", "Luminosità a zero"),
|
|
85260
85312
|
phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
|
|
85261
85313
|
icon: "lightbulb-off",
|
|
85262
|
-
args: {
|
|
85314
|
+
args: { level: 0 }
|
|
85263
85315
|
},
|
|
85264
85316
|
{
|
|
85265
85317
|
id: "brightness.set",
|
|
85266
85318
|
method: "setBrightness",
|
|
85267
85319
|
label: t("Set brightness", "Imposta la luminosità"),
|
|
85268
|
-
phrase: t("Set the brightness of {device} to {
|
|
85320
|
+
phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
|
|
85269
85321
|
icon: "sun-medium",
|
|
85270
85322
|
openArgs: [{
|
|
85271
|
-
key: "
|
|
85323
|
+
key: "level",
|
|
85272
85324
|
label: PERCENT,
|
|
85273
85325
|
offer: {
|
|
85274
85326
|
kind: "number",
|
|
@@ -85282,13 +85334,13 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85282
85334
|
],
|
|
85283
85335
|
state: [{
|
|
85284
85336
|
kind: "numeric",
|
|
85285
|
-
field: "
|
|
85337
|
+
field: "level",
|
|
85286
85338
|
quantity: t("the brightness", "la luminosità"),
|
|
85287
85339
|
label: t("Brightness", "Luminosità"),
|
|
85288
85340
|
unit: "%",
|
|
85289
85341
|
icon: "sun"
|
|
85290
85342
|
}],
|
|
85291
|
-
events: { onBrightnessChanged: { notOperatorFacing: "the `
|
|
85343
|
+
events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
|
|
85292
85344
|
},
|
|
85293
85345
|
color: {
|
|
85294
85346
|
scope: "device",
|
|
@@ -85302,7 +85354,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85302
85354
|
icon: "sun",
|
|
85303
85355
|
args: { color: {
|
|
85304
85356
|
mode: "mired",
|
|
85305
|
-
|
|
85357
|
+
colorTemperature: 370
|
|
85306
85358
|
} }
|
|
85307
85359
|
},
|
|
85308
85360
|
{
|
|
@@ -85313,7 +85365,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85313
85365
|
icon: "snowflake",
|
|
85314
85366
|
args: { color: {
|
|
85315
85367
|
mode: "mired",
|
|
85316
|
-
|
|
85368
|
+
colorTemperature: 200
|
|
85317
85369
|
} }
|
|
85318
85370
|
},
|
|
85319
85371
|
{
|
|
@@ -85927,7 +85979,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85927
85979
|
label: t("Fan off", "Ventilatore spento"),
|
|
85928
85980
|
phrase: t("Stop {device}", "Ferma {device}"),
|
|
85929
85981
|
icon: "power-off",
|
|
85930
|
-
args: {
|
|
85982
|
+
args: { speed: 0 }
|
|
85931
85983
|
},
|
|
85932
85984
|
{
|
|
85933
85985
|
id: "fan.full",
|
|
@@ -85935,16 +85987,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85935
85987
|
label: t("Fan full", "Ventilatore al massimo"),
|
|
85936
85988
|
phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
|
|
85937
85989
|
icon: "fan",
|
|
85938
|
-
args: {
|
|
85990
|
+
args: { speed: 100 }
|
|
85939
85991
|
},
|
|
85940
85992
|
{
|
|
85941
85993
|
id: "fan.speed",
|
|
85942
85994
|
method: "setPercentage",
|
|
85943
85995
|
label: t("Set speed", "Imposta la velocità"),
|
|
85944
|
-
phrase: t("Set the speed of {device} to {
|
|
85996
|
+
phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
|
|
85945
85997
|
icon: "fan",
|
|
85946
85998
|
openArgs: [{
|
|
85947
|
-
key: "
|
|
85999
|
+
key: "speed",
|
|
85948
86000
|
label: t("Speed", "Velocità"),
|
|
85949
86001
|
offer: {
|
|
85950
86002
|
kind: "number",
|
|
@@ -86006,7 +86058,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
86006
86058
|
],
|
|
86007
86059
|
state: [{
|
|
86008
86060
|
kind: "numeric",
|
|
86009
|
-
field: "
|
|
86061
|
+
field: "speed",
|
|
86010
86062
|
quantity: t("the speed", "la velocità"),
|
|
86011
86063
|
label: t("Speed", "Velocità"),
|
|
86012
86064
|
unit: "%",
|
|
@@ -86804,7 +86856,7 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
86804
86856
|
},
|
|
86805
86857
|
{
|
|
86806
86858
|
kind: "numeric",
|
|
86807
|
-
field: "
|
|
86859
|
+
field: "progress",
|
|
86808
86860
|
quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
|
|
86809
86861
|
label: t("Progress", "Avanzamento"),
|
|
86810
86862
|
unit: "%",
|
|
@@ -87162,10 +87214,10 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
87162
87214
|
id: "media.seek",
|
|
87163
87215
|
method: "seek",
|
|
87164
87216
|
label: t("Seek", "Vai al punto"),
|
|
87165
|
-
phrase: t("Move {device} to {
|
|
87217
|
+
phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
|
|
87166
87218
|
icon: "fast-forward",
|
|
87167
87219
|
openArgs: [{
|
|
87168
|
-
key: "
|
|
87220
|
+
key: "position",
|
|
87169
87221
|
label: t("Position", "Posizione"),
|
|
87170
87222
|
offer: {
|
|
87171
87223
|
kind: "number",
|
|
@@ -88214,7 +88266,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88214
88266
|
state: [
|
|
88215
88267
|
{
|
|
88216
88268
|
kind: "numeric",
|
|
88217
|
-
field: "
|
|
88269
|
+
field: "co2",
|
|
88218
88270
|
quantity: t("the CO₂", "la CO₂"),
|
|
88219
88271
|
label: t("CO₂", "CO₂"),
|
|
88220
88272
|
unit: "ppm",
|
|
@@ -88222,7 +88274,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88222
88274
|
},
|
|
88223
88275
|
{
|
|
88224
88276
|
kind: "numeric",
|
|
88225
|
-
field: "
|
|
88277
|
+
field: "voc",
|
|
88226
88278
|
quantity: t("the VOC level", "il livello di COV"),
|
|
88227
88279
|
label: t("VOC", "COV"),
|
|
88228
88280
|
unit: "ppb",
|
|
@@ -88258,7 +88310,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88258
88310
|
noun: t("Light level", "Luminosità ambiente"),
|
|
88259
88311
|
state: [{
|
|
88260
88312
|
kind: "numeric",
|
|
88261
|
-
field: "
|
|
88313
|
+
field: "illuminance",
|
|
88262
88314
|
quantity: t("the light level", "la luminosità"),
|
|
88263
88315
|
label: t("Illuminance", "Illuminamento"),
|
|
88264
88316
|
unit: "lx",
|
|
@@ -88461,7 +88513,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88461
88513
|
noun: t("Humidity", "Umidità"),
|
|
88462
88514
|
state: [{
|
|
88463
88515
|
kind: "numeric",
|
|
88464
|
-
field: "
|
|
88516
|
+
field: "humidity",
|
|
88465
88517
|
quantity: t("the humidity", "l’umidità"),
|
|
88466
88518
|
label: t("Humidity", "Umidità"),
|
|
88467
88519
|
unit: "%",
|
|
@@ -88509,7 +88561,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88509
88561
|
state: [
|
|
88510
88562
|
{
|
|
88511
88563
|
kind: "numeric",
|
|
88512
|
-
field: "
|
|
88564
|
+
field: "power",
|
|
88513
88565
|
quantity: t("the power draw", "il consumo"),
|
|
88514
88566
|
label: t("Power", "Potenza"),
|
|
88515
88567
|
unit: "W",
|
|
@@ -88517,7 +88569,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88517
88569
|
},
|
|
88518
88570
|
{
|
|
88519
88571
|
kind: "numeric",
|
|
88520
|
-
field: "
|
|
88572
|
+
field: "energy",
|
|
88521
88573
|
quantity: t("the energy used", "l’energia consumata"),
|
|
88522
88574
|
label: t("Energy", "Energia"),
|
|
88523
88575
|
unit: "kWh",
|
|
@@ -88525,7 +88577,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88525
88577
|
},
|
|
88526
88578
|
{
|
|
88527
88579
|
kind: "numeric",
|
|
88528
|
-
field: "
|
|
88580
|
+
field: "voltage",
|
|
88529
88581
|
quantity: t("the voltage", "la tensione"),
|
|
88530
88582
|
label: t("Voltage", "Tensione"),
|
|
88531
88583
|
unit: "V",
|
|
@@ -88533,7 +88585,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88533
88585
|
},
|
|
88534
88586
|
{
|
|
88535
88587
|
kind: "numeric",
|
|
88536
|
-
field: "
|
|
88588
|
+
field: "current",
|
|
88537
88589
|
quantity: t("the current", "la corrente"),
|
|
88538
88590
|
label: t("Current", "Corrente"),
|
|
88539
88591
|
unit: "A",
|
|
@@ -88550,13 +88602,6 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88550
88602
|
label: t("Where", "Posizione"),
|
|
88551
88603
|
phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
|
|
88552
88604
|
icon: "map-pin"
|
|
88553
|
-
}, {
|
|
88554
|
-
kind: "numeric",
|
|
88555
|
-
field: "batteryPercent",
|
|
88556
|
-
quantity: t("the phone battery", "la batteria del telefono"),
|
|
88557
|
-
label: t("Battery", "Batteria"),
|
|
88558
|
-
unit: "%",
|
|
88559
|
-
icon: "battery"
|
|
88560
88605
|
}]
|
|
88561
88606
|
},
|
|
88562
88607
|
"pressure-sensor": {
|
|
@@ -88564,7 +88609,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88564
88609
|
noun: t("Pressure", "Pressione"),
|
|
88565
88610
|
state: [{
|
|
88566
88611
|
kind: "numeric",
|
|
88567
|
-
field: "
|
|
88612
|
+
field: "pressure",
|
|
88568
88613
|
quantity: t("the pressure", "la pressione"),
|
|
88569
88614
|
label: t("Pressure", "Pressione"),
|
|
88570
88615
|
unit: "hPa",
|
|
@@ -88600,7 +88645,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88600
88645
|
noun: t("Temperature", "Temperatura"),
|
|
88601
88646
|
state: [{
|
|
88602
88647
|
kind: "numeric",
|
|
88603
|
-
field: "
|
|
88648
|
+
field: "temperature",
|
|
88604
88649
|
quantity: t("the temperature", "la temperatura"),
|
|
88605
88650
|
label: t("Temperature", "Temperatura"),
|
|
88606
88651
|
unit: "°C",
|
|
@@ -88671,7 +88716,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88671
88716
|
state: [
|
|
88672
88717
|
{
|
|
88673
88718
|
kind: "numeric",
|
|
88674
|
-
field: "
|
|
88719
|
+
field: "level",
|
|
88675
88720
|
quantity: t("the battery level", "il livello della batteria"),
|
|
88676
88721
|
label: t("Battery", "Batteria"),
|
|
88677
88722
|
unit: "%",
|
|
@@ -88713,7 +88758,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88713
88758
|
icon: "battery-charging"
|
|
88714
88759
|
}
|
|
88715
88760
|
],
|
|
88716
|
-
events: { onStatusChanged: { notOperatorFacing: "the
|
|
88761
|
+
events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
|
|
88717
88762
|
extraEvents: [{
|
|
88718
88763
|
category: EventCategory.DeviceAwake,
|
|
88719
88764
|
label: t("Woke up", "Risvegliato"),
|
|
@@ -88731,7 +88776,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88731
88776
|
noun: t("Network link", "Collegamento di rete"),
|
|
88732
88777
|
state: [{
|
|
88733
88778
|
kind: "numeric",
|
|
88734
|
-
field: "
|
|
88779
|
+
field: "signal",
|
|
88735
88780
|
quantity: t("the signal strength", "l’intensità del segnale"),
|
|
88736
88781
|
label: t("Signal", "Segnale"),
|
|
88737
88782
|
unit: "%",
|
|
@@ -92102,6 +92147,33 @@ function isAudioClassName(name) {
|
|
|
92102
92147
|
return name.trim().toLowerCase().startsWith(`${AUDIO_GROUP_KEY}-`);
|
|
92103
92148
|
}
|
|
92104
92149
|
new Set(["devices", "classes"]);
|
|
92150
|
+
function valueFor(param, raw) {
|
|
92151
|
+
switch (param.type) {
|
|
92152
|
+
case "enum": return typeof raw === "string" && (param.options ?? []).some((o) => o.value === raw) ? raw : void 0;
|
|
92153
|
+
case "number": {
|
|
92154
|
+
if (typeof raw !== "number" || !Number.isFinite(raw)) return void 0;
|
|
92155
|
+
const floor = param.min ?? Number.NEGATIVE_INFINITY;
|
|
92156
|
+
const ceil = param.max ?? Number.POSITIVE_INFINITY;
|
|
92157
|
+
return Math.min(ceil, Math.max(floor, raw));
|
|
92158
|
+
}
|
|
92159
|
+
case "boolean": return typeof raw === "boolean" ? raw : void 0;
|
|
92160
|
+
case "string": return typeof raw === "string" && raw.length > 0 ? raw : void 0;
|
|
92161
|
+
}
|
|
92162
|
+
}
|
|
92163
|
+
/**
|
|
92164
|
+
* The values a rule target's `params` contribute for a kind: only declared
|
|
92165
|
+
* keys, only valid values. `undefined` when nothing survives — a notifier that
|
|
92166
|
+
* declared nothing is never handed a `delivery` block.
|
|
92167
|
+
*/
|
|
92168
|
+
function resolveDeliveryParams(declared, params) {
|
|
92169
|
+
if (declared === void 0 || params === void 0) return void 0;
|
|
92170
|
+
const out = {};
|
|
92171
|
+
for (const param of declared) {
|
|
92172
|
+
const value = valueFor(param, params[param.key]);
|
|
92173
|
+
if (value !== void 0) out[param.key] = value;
|
|
92174
|
+
}
|
|
92175
|
+
return Object.keys(out).length > 0 ? out : void 0;
|
|
92176
|
+
}
|
|
92105
92177
|
/**
|
|
92106
92178
|
* WHICH narrowing filter speaks about WHICH system-event kind — one predicate,
|
|
92107
92179
|
* consumed by the rule ENGINE and by every rule EDITOR.
|
|
@@ -96961,4 +97033,4 @@ function buildClipModelRegistry(entries) {
|
|
|
96961
97033
|
/** The built-in catalog's registry. */
|
|
96962
97034
|
var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
|
|
96963
97035
|
//#endregion
|
|
96964
|
-
export { MediaFileKindEnum as $,
|
|
97036
|
+
export { MediaFileKindEnum as $, BaseAddon as $i, cloneAlarmSettings as $n, paintHex as $r, OpsLogEntrySchema as $t, DeclaredDevices as A, unknown as Aa, storageOccupancyCapability as Ai, TrackSideSchema as An, isAudioClassName as Ar, NcAlarmSensorsInputSchema as At, FULL_IMAGE_BBOX as B, systemEventSummarySplitOf as Bi, applyModeDelaysEdits as Bn, isRootSuppliableStepId as Br, NcRuleUpdateInputSchema as Bt, ClearTrackRelationResultSchema as C, partialRecord as Ca, ruleGroupingApplies as Ci, TimelapseRuleInputSchema as Cn, failureContributionCapability as Cr, NC_SNOOZE_MAX_MINUTES as Ct, DEFAULT_TIMELAPSE_PREVIEW_TEXT as D, templateLiteral as Da, sensorRaisedOf as Di, TrackPuritySchema as Dn, isAlertEpisodeOpen as Dr, NC_TEMPLATE_VARS as Dt, DEFAULT_EVENT_COLOR as E, string as Ea, secureActuationFor as Ei, TrackPlacementSchema as En, isAlarmControllableCap as Er, NC_TAXONOMY as Et, EVENT_DENSITY_BATCH_MAX as F, syncActiveAlarmProfileSettings as Fi, alarmPanelCapability as Fn, isEventOwnerType as Fr, NcRuleActionSchema as Ft, ListTrackRelationsResultSchema as G, withSystemEventClasses as Gi, audioMetricsCapability as Gn, kebabToCamel as Gr, NcSnoozeSuppressedSchema as Gt, LABEL_SUPPLY_MACRO as H, templateVarsFor as Hi, applySecureOnArmEdit as Hn, isSystemDelivery as Hr, NcSharedSequenceSchema as Ht, EVENT_KIND_BY_CAP as I, systemEventDeliveryProblems as Ii, alertEpisodeId as In, isKnownTemplateVar as Ir, NcRuleInputSchema as It, MAX_BIRTH_DECISION_RECORDS as J, canonicalHash as Ji, buildSubjectPath as Jn, memoizePinnedFfmpeg as Jr, NcTaxonomySchema as Jt, LockStateSchema as K, zoneAnalyticsCapability as Ki, audioModeOf as Kn, linkedStepOf as Kr, NcStateSummarySectionIdSchema as Kt, EVENT_OWNER_TYPES as L, systemEventFamilyProblems as Li, alertEpisodeKind as Ln, isLabelSupplyStepId as Lr, NcRulePatchSchema as Lt, EMBEDDING_MODEL_FAILED as M, subjectPathSampleFromBox as Mi, activateAlarmProfile as Mn, isDetectionMacroClass as Mr, NcAlarmSettingsPatchSchema as Mt, EMBEDDING_REQUIREMENTS_FAILED as N, subjectPathSvgPoints as Ni, addonWidgetsSourceCapability as Nn, isDrawableSubjectPath as Nr, NcConditionDescriptorSchema as Nt, DETECTION_MACRO_CLASSES as O, tuple as Oa, servedTemplateVars as Oi, TrackRelationKindSchema as On, isAlertEpisodeSeverity as Or, NcAlarmConfigSchema as Ot, EMBEDDING_REQUIREMENTS_UNAVAILABLE as P, summarizeReview as Pi, alarmDeviceSecureOnArm as Pn, isEventKindLabelKey as Pr, NcConditionsSchema as Pt, MOTION_CLOSE_AFTER_MS as Q, errMsg as Qi, classifyRetrainReview as Qn, occupancyScope as Qr, OPS_LOG_DEFAULT_LIMIT as Qt, EXPORT_DENSE_MAX_RANGES as R, systemEventFilterApplies as Ri, alertEpisodePayload as Rn, isMediaOwnerType as Rr, NcRuleSchema as Rt, ClearTrackRelationInputSchema as S, object as Sa, ruleDeviceCompatCapQueries as Si, TRACK_RELATIONS_DEFAULT_LIMIT as Sn, faceGalleryCapability as Sr, NC_SENSOR_TRANSITION_KINDS as St, DEFAULT_DETAIL_CROP_CONVENTION as T, strictObject as Ta, sceneMonitorCapability as Ti, TimelapseRuleSchema as Tn, gifFromMp4Args as Tr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as Tt, LabelAttributionSchema as U, vectorDimFromBase64 as Ui, armRemovalReconcile as Un, isSystemEventSummaryRule as Ur, NcSnoozeInputSchema as Ut, FailureCounters as V, templateCarriesSummary as Vi, applyNonBlockingEdit as Vn, isScheduleActive as Vr, NcScheduleSchema as Vt, ListTrackRelationsInputSchema as W, viewerLinkBaseOf as Wi, assertTimelapseCadences as Wn, isVectorIndexDimConflict as Wr, NcSnoozeSchema as Wt, MAX_TRACK_PURITIES as X, isSourceCap as Xi, bundledCamstack as Xn, normalizeNcMediaPolicy as Xr, NcTemplatePreviewSchema as Xt, MAX_BIRTH_LATENCY_PROXY_MS as Y, evaluateSensorEdge as Yi, buildViewerLink as Yn, ncMediaPolicyError as Yr, NcTemplatePreviewInputSchema as Yt, MAX_TRACK_RELATIONS as Z, DeviceType as Zi, calendarEventLocalSpan as Zn, notificationRulesCapability as Zr, NcTemplateVarDescriptorSchema as Zt, BIRTH_DECISION_DEFAULT_LIMIT as _, boolean as _a, resolvePoolMemoryPolicy as _i, SceneMonitorSchema as _n, embeddingRequirementsUnavailableError as _r, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as _t, CLIP_EMBEDDING_STEP_ID as a, createEvent as aa, plateGalleryCapability as ai, RetrainDismissedSchema as an, deleteAlarmProfile as ar, NC_ALARM_NOTIFY_FIELDS as at, BucketAccumulator as b, looseObject as ba, ruleAutoTriggersAlarm as bi, SetTrackRelationInputSchema as bn, eventKindLabel as br, NC_GROUPING_MAX_SEC as bt, readClusterModelPinStrict as c, defineRecordKinds as ca, readMotionTriggeredBy as ci, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as cn, deriveRecordingMode as cr, NC_AUDIO_CONFIRM_HITS_DEFAULT as ct, APPEARANCE_BLOCKS as d, nodePin as da, resolveClipSearchMinScore as di, SCENE_DEFAULT_CHECK_INTERVAL_SEC as dn, deviceAttentionKind as dr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as dt, CAP_ADVANCE_FIELDS as ea, paletteResultSchema as ei, PackageLlmVerdictSchema as en, consumableFormOf as er, MotionTriggeredBySchema as et, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as f, normalizeNodeId as fa, resolveDeliveryParams as fi, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as fn, deviceRemovalHookCapability as fr, NC_CLIP_RETENTION_MAX_SEC as ft, ArchivedDebugNoteSchema as g, array as ga, resolveNcMediaImage as gi, SCENE_RESET_RECAPTURES as gn, embeddingRequirementsFailedError as gr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as gt, AlarmArmModeSchema as h, _enum as ha, resolveModeNotifyPolicy as hi, SCENE_DIVERGED as hn, embeddingRefusalOf as hr, NC_CONFIRM_DEFAULT_TIMEOUT_MS as ht, CLIP_TEXT_MODELS as i, RECORD_QUERY_MAX as ia, pipelineAnalyticsCapability as ii, RebuildObjectEmbeddingsRefusalSchema as in, createAlarmProfile as ir, NC_ALARM_DELAY_MAX_SEC as it, DetectionSourceSchema as j, EventCategory as ja, subKindsOf as ji, TrackSourceSchema as jn, isDefaultAlarmProfileId as jr, NcAlarmSensorsSchema as jt, DETECTION_PIPELINE_CAP_NAME as k, union as ka, startMoverUnderClearance as ki, TrackRelationSchema as kn, isAppLinkBase as kr, NcAlarmPostTriggeredActionSchema as kt, resolveClusterModelPin as l, hydrateSchema as la, readTimelapseGeneratedAt as li, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as ln, describeSystemEventDeliveryProblem as lr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as lt, AUDIO_MACRO_LABELS as m, ZodObject as ma, resolveModeDelays as mi, SCENE_DEFAULT_UNCOVERED_POLICY as mn, embeddingModelFailedError as mr, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX as mt, DEFAULT_CLIP_MODEL as n, InvalidRecordError as na, parseProcStatus as ni, RECORDING_EXPORT_MAX_READ_BYTES as nn, coreBlockIdFromAddonId as nr, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as nt, CLUSTER_MODEL_OWNER_ADDON_ID as o, customAction as oa, projectSubjectPath as oi, RetrainOriginSchema as on, deriveDetailCropRect as or, NC_ALARM_SYSTEM_EVENT_KINDS as ot, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as p, sleep as pa, resolveLocationMode as pi, SCENE_DEFAULT_QUIET_SECONDS as pn, embeddingEncoderCapability as pr, NC_CONDITION_CATALOG as pt, MAX_ARCHIVED_DEBUG_NOTES as q, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as qi, buildEventKindDescriptor as qn, mayWriteToLocation as qr, NcSystemEventKindSchema as qt, CLIP_IMAGE_MODELS as r, RECORD_MAX_DATA_BYTES as ra, pickFaceRescoreIntervalMinutes as ri, RECORDING_SOURCE_CAMSTACK_ADDON as rn, cosineSimilarity as rr, NC_ALARM_DELAY_FIELDS as rt, FACE_EMBEDDING_STEP_ID as s, defineCustomActions as sa, readDeviceStateFrom as si, RetrainStatusSchema as sn, derivePostTriggeredAction as sr, NC_ALARM_TRIGGERED_MAX_SEC as st, BUILTIN_CLIP_MODELS as t, CamProfileSchema as ta, parseAlertEpisodePayload as ti, PoolMemoryWatchdog as tn, consumableLowPercentOf as tr, NC_ALARM_DEFAULT_PROFILE_ID as tt, APPEARANCE_BIN_COUNT as u, isDeviceScopedCap as ua, renameAlarmProfile as ui, SCENE_DEFAULT_ANCHOR_THRESHOLD as un, describeSystemEventFamilyProblem as ur, NC_CLIP_POST_ROLL_DEFAULT_SEC as ut, BaseDevice as v, discriminatedUnion as va, retrainRevisionConflictMessage as vi, SetTrackPurityInputSchema as vn, encodeVectorBase64 as vr, NC_DEFAULT_SNOOZE_MINUTES as vt, CoverStateSchema as w, record as wa, ruleKindOf as wi, TimelapseRulePatchSchema as wn, gifDeriveSpeed as wr, NC_STATE_SUMMARY_SECTION_IDS as wt, COCO_TO_MACRO as x, number as xa, ruleBelongsToAlarm as xi, TIMELAPSE_DENSE_FLOOR_SEC as xn, evictionPolicyOfLocation as xr, NC_GROUPING_MIN_SEC as xt, BirthDecisionRecordSchema as y, literal as ya, rootSupplyServes as yi, SetTrackPurityResultSchema as yn, ensureAlarmProfiles as yr, NC_GROUPING_DEFAULT_SEC as yt, FIRST_LEVEL_MACRO_CLASSES as z, systemEventSummaryScheduleOf as zi, applyBlockingEdit as zn, isRetiredClearKey as zr, NcRuleTargetSchema as zt };
|