@camstack/addon-provider-gree 0.2.15 → 0.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +76 -8
- package/dist/addon.mjs +76 -8
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -13218,11 +13218,33 @@ var NotificationFormatSchema = _enum([
|
|
|
13218
13218
|
* Named by INTENT, never by glyph. "check" would tie the vocabulary to one
|
|
13219
13219
|
* renderer's icon set; "acknowledge" survives an adapter that draws it
|
|
13220
13220
|
* differently.
|
|
13221
|
+
*
|
|
13222
|
+
* ── A TOKEN IS NOT A WIRE VALUE ─────────────────────────────────────
|
|
13223
|
+
*
|
|
13224
|
+
* These names are for US. **No adapter may forward one verbatim.** Each maps
|
|
13225
|
+
* the whole set onto its own renderer's vocabulary through a
|
|
13226
|
+
* `Record<NotificationActionIcon, string>` — a Record, never a lookup with a
|
|
13227
|
+
* fallback, so adding a member here fails every adapter's build until someone
|
|
13228
|
+
* decides its glyph, which is the only place that decision can be made
|
|
13229
|
+
* honestly.
|
|
13230
|
+
*
|
|
13231
|
+
* This paragraph is the bug. Zentik declared `actionIcons: true` and passed
|
|
13232
|
+
* `disarm` straight through; iOS feeds that string to
|
|
13233
|
+
* `UNNotificationActionIcon(systemImageName:)`, `disarm` is not an SF Symbol,
|
|
13234
|
+
* and every snooze and alarm button arrived BLANK. A pass-through is not a
|
|
13235
|
+
* mapping, and "the field is documented" is not "the value renders".
|
|
13236
|
+
*
|
|
13237
|
+
* Adding a member is TRAIN-BOUND. The enum lives in the published
|
|
13238
|
+
* `@camstack/server` closure and the cap seam validates against the HUB's copy,
|
|
13239
|
+
* so an addon that emits a token the running hub does not know does not lose an
|
|
13240
|
+
* icon — its whole `send` fails Zod validation and the notification never
|
|
13241
|
+
* arrives. Never emit a new token from an addon before the train carrying it.
|
|
13221
13242
|
*/
|
|
13222
13243
|
var NotificationActionIconSchema = _enum([
|
|
13223
13244
|
"acknowledge",
|
|
13224
13245
|
"dismiss",
|
|
13225
13246
|
"silence",
|
|
13247
|
+
"snooze",
|
|
13226
13248
|
"view",
|
|
13227
13249
|
"play",
|
|
13228
13250
|
"open",
|
|
@@ -13230,9 +13252,13 @@ var NotificationActionIconSchema = _enum([
|
|
|
13230
13252
|
"lock",
|
|
13231
13253
|
"unlock",
|
|
13232
13254
|
"arm",
|
|
13255
|
+
"arm-home",
|
|
13256
|
+
"arm-away",
|
|
13257
|
+
"arm-night",
|
|
13233
13258
|
"disarm",
|
|
13234
13259
|
"light",
|
|
13235
|
-
"alert"
|
|
13260
|
+
"alert",
|
|
13261
|
+
"camera"
|
|
13236
13262
|
]);
|
|
13237
13263
|
/** A single tap-through action button. */
|
|
13238
13264
|
var NotificationActionSchema = object({
|
|
@@ -13432,6 +13458,24 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
13432
13458
|
targetId: string(),
|
|
13433
13459
|
enabled: boolean()
|
|
13434
13460
|
}), _void(), { kind: "mutation" });
|
|
13461
|
+
new Set([
|
|
13462
|
+
{
|
|
13463
|
+
id: "person",
|
|
13464
|
+
name: "Person"
|
|
13465
|
+
},
|
|
13466
|
+
{
|
|
13467
|
+
id: "vehicle",
|
|
13468
|
+
name: "Vehicle"
|
|
13469
|
+
},
|
|
13470
|
+
{
|
|
13471
|
+
id: "animal",
|
|
13472
|
+
name: "Animal"
|
|
13473
|
+
},
|
|
13474
|
+
{
|
|
13475
|
+
id: "package",
|
|
13476
|
+
name: "Package"
|
|
13477
|
+
}
|
|
13478
|
+
].map((l) => l.id));
|
|
13435
13479
|
var COCO_TO_MACRO = {
|
|
13436
13480
|
mapping: {
|
|
13437
13481
|
person: "person",
|
|
@@ -14267,6 +14311,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
14267
14311
|
"alarm-triggered",
|
|
14268
14312
|
"alarm-armed",
|
|
14269
14313
|
"alarm-disarmed",
|
|
14314
|
+
"alarm-arming",
|
|
14315
|
+
"alarm-arm-refused",
|
|
14270
14316
|
"camera-online",
|
|
14271
14317
|
"camera-offline",
|
|
14272
14318
|
"camera-disabled",
|
|
@@ -17539,6 +17585,22 @@ var detectionFpsField = {
|
|
|
17539
17585
|
default: 10,
|
|
17540
17586
|
step: 1
|
|
17541
17587
|
};
|
|
17588
|
+
/**
|
|
17589
|
+
* The occupancy re-check interval. DEFAULT 300 s (2026-08-13 — was 30 s).
|
|
17590
|
+
*
|
|
17591
|
+
* The recheck is now on by default (a parked car is invisible to occupancy
|
|
17592
|
+
* rules until the stationary registry has been rebuilt by motion, which after a
|
|
17593
|
+
* restart may be never on a quiet camera). Each cycle re-subscribes a detection
|
|
17594
|
+
* session — an RTSP re-dial — so the switch is only affordable at a WIDE
|
|
17595
|
+
* interval: 300 s is ~12 re-dials an hour per camera, against 120 at the old
|
|
17596
|
+
* 30 s. A parked car is therefore counted within 5 minutes of a restart.
|
|
17597
|
+
*
|
|
17598
|
+
* Why not wider: `max` is 300 and raising it is TRAIN-BOUND, not addon-bound —
|
|
17599
|
+
* the host validates `attachCamera` against ITS copy of this schema, so a
|
|
17600
|
+
* runner asked for 600 would be rejected by the hub until a `@camstack/server`
|
|
17601
|
+
* carrying the wider bound is installed everywhere. 300 is the widest value
|
|
17602
|
+
* that ships with an addon deploy.
|
|
17603
|
+
*/
|
|
17542
17604
|
var occupancyRecheckSecField = {
|
|
17543
17605
|
min: 0,
|
|
17544
17606
|
max: 300,
|
|
@@ -17740,15 +17802,21 @@ var RunnerCameraConfigSchema = object({
|
|
|
17740
17802
|
*/
|
|
17741
17803
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
17742
17804
|
/**
|
|
17743
|
-
* Master toggle for the occupancy re-check. When `false`
|
|
17744
|
-
*
|
|
17745
|
-
* this is off by default because the recheck re-subscribes a detection session
|
|
17746
|
-
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
17747
|
-
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
17805
|
+
* Master toggle for the occupancy re-check. When `false` the runner never arms
|
|
17806
|
+
* the periodic recheck timer, regardless of `occupancyRecheckSec`; the
|
|
17748
17807
|
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
17749
17808
|
* (and only render) when this is enabled.
|
|
17750
|
-
|
|
17751
|
-
|
|
17809
|
+
*
|
|
17810
|
+
* DEFAULT `true` since 2026-08-13 (was `false`). It was off because the
|
|
17811
|
+
* recheck re-subscribes a detection session every N seconds while `watching`
|
|
17812
|
+
* — each cycle creates+tears a session ⇒ an RTSP re-dial ⇒ latency, a major
|
|
17813
|
+
* pull-decoder churn source. What that bought was a blind spot: a STATIONARY
|
|
17814
|
+
* object is counted only while the stationary registry holds it, and the
|
|
17815
|
+
* registry rebuilds from motion, so after a restart a parked car was invisible
|
|
17816
|
+
* to every occupancy rule until something moved in front of it. The churn is
|
|
17817
|
+
* now paid on the interval instead — see `occupancyRecheckSecField`.
|
|
17818
|
+
*/
|
|
17819
|
+
occupancyRecheckEnabled: boolean().default(true),
|
|
17752
17820
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
17753
17821
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
17754
17822
|
/**
|
package/dist/addon.mjs
CHANGED
|
@@ -13217,11 +13217,33 @@ var NotificationFormatSchema = _enum([
|
|
|
13217
13217
|
* Named by INTENT, never by glyph. "check" would tie the vocabulary to one
|
|
13218
13218
|
* renderer's icon set; "acknowledge" survives an adapter that draws it
|
|
13219
13219
|
* differently.
|
|
13220
|
+
*
|
|
13221
|
+
* ── A TOKEN IS NOT A WIRE VALUE ─────────────────────────────────────
|
|
13222
|
+
*
|
|
13223
|
+
* These names are for US. **No adapter may forward one verbatim.** Each maps
|
|
13224
|
+
* the whole set onto its own renderer's vocabulary through a
|
|
13225
|
+
* `Record<NotificationActionIcon, string>` — a Record, never a lookup with a
|
|
13226
|
+
* fallback, so adding a member here fails every adapter's build until someone
|
|
13227
|
+
* decides its glyph, which is the only place that decision can be made
|
|
13228
|
+
* honestly.
|
|
13229
|
+
*
|
|
13230
|
+
* This paragraph is the bug. Zentik declared `actionIcons: true` and passed
|
|
13231
|
+
* `disarm` straight through; iOS feeds that string to
|
|
13232
|
+
* `UNNotificationActionIcon(systemImageName:)`, `disarm` is not an SF Symbol,
|
|
13233
|
+
* and every snooze and alarm button arrived BLANK. A pass-through is not a
|
|
13234
|
+
* mapping, and "the field is documented" is not "the value renders".
|
|
13235
|
+
*
|
|
13236
|
+
* Adding a member is TRAIN-BOUND. The enum lives in the published
|
|
13237
|
+
* `@camstack/server` closure and the cap seam validates against the HUB's copy,
|
|
13238
|
+
* so an addon that emits a token the running hub does not know does not lose an
|
|
13239
|
+
* icon — its whole `send` fails Zod validation and the notification never
|
|
13240
|
+
* arrives. Never emit a new token from an addon before the train carrying it.
|
|
13220
13241
|
*/
|
|
13221
13242
|
var NotificationActionIconSchema = _enum([
|
|
13222
13243
|
"acknowledge",
|
|
13223
13244
|
"dismiss",
|
|
13224
13245
|
"silence",
|
|
13246
|
+
"snooze",
|
|
13225
13247
|
"view",
|
|
13226
13248
|
"play",
|
|
13227
13249
|
"open",
|
|
@@ -13229,9 +13251,13 @@ var NotificationActionIconSchema = _enum([
|
|
|
13229
13251
|
"lock",
|
|
13230
13252
|
"unlock",
|
|
13231
13253
|
"arm",
|
|
13254
|
+
"arm-home",
|
|
13255
|
+
"arm-away",
|
|
13256
|
+
"arm-night",
|
|
13232
13257
|
"disarm",
|
|
13233
13258
|
"light",
|
|
13234
|
-
"alert"
|
|
13259
|
+
"alert",
|
|
13260
|
+
"camera"
|
|
13235
13261
|
]);
|
|
13236
13262
|
/** A single tap-through action button. */
|
|
13237
13263
|
var NotificationActionSchema = object({
|
|
@@ -13431,6 +13457,24 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
13431
13457
|
targetId: string(),
|
|
13432
13458
|
enabled: boolean()
|
|
13433
13459
|
}), _void(), { kind: "mutation" });
|
|
13460
|
+
new Set([
|
|
13461
|
+
{
|
|
13462
|
+
id: "person",
|
|
13463
|
+
name: "Person"
|
|
13464
|
+
},
|
|
13465
|
+
{
|
|
13466
|
+
id: "vehicle",
|
|
13467
|
+
name: "Vehicle"
|
|
13468
|
+
},
|
|
13469
|
+
{
|
|
13470
|
+
id: "animal",
|
|
13471
|
+
name: "Animal"
|
|
13472
|
+
},
|
|
13473
|
+
{
|
|
13474
|
+
id: "package",
|
|
13475
|
+
name: "Package"
|
|
13476
|
+
}
|
|
13477
|
+
].map((l) => l.id));
|
|
13434
13478
|
var COCO_TO_MACRO = {
|
|
13435
13479
|
mapping: {
|
|
13436
13480
|
person: "person",
|
|
@@ -14266,6 +14310,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
14266
14310
|
"alarm-triggered",
|
|
14267
14311
|
"alarm-armed",
|
|
14268
14312
|
"alarm-disarmed",
|
|
14313
|
+
"alarm-arming",
|
|
14314
|
+
"alarm-arm-refused",
|
|
14269
14315
|
"camera-online",
|
|
14270
14316
|
"camera-offline",
|
|
14271
14317
|
"camera-disabled",
|
|
@@ -17538,6 +17584,22 @@ var detectionFpsField = {
|
|
|
17538
17584
|
default: 10,
|
|
17539
17585
|
step: 1
|
|
17540
17586
|
};
|
|
17587
|
+
/**
|
|
17588
|
+
* The occupancy re-check interval. DEFAULT 300 s (2026-08-13 — was 30 s).
|
|
17589
|
+
*
|
|
17590
|
+
* The recheck is now on by default (a parked car is invisible to occupancy
|
|
17591
|
+
* rules until the stationary registry has been rebuilt by motion, which after a
|
|
17592
|
+
* restart may be never on a quiet camera). Each cycle re-subscribes a detection
|
|
17593
|
+
* session — an RTSP re-dial — so the switch is only affordable at a WIDE
|
|
17594
|
+
* interval: 300 s is ~12 re-dials an hour per camera, against 120 at the old
|
|
17595
|
+
* 30 s. A parked car is therefore counted within 5 minutes of a restart.
|
|
17596
|
+
*
|
|
17597
|
+
* Why not wider: `max` is 300 and raising it is TRAIN-BOUND, not addon-bound —
|
|
17598
|
+
* the host validates `attachCamera` against ITS copy of this schema, so a
|
|
17599
|
+
* runner asked for 600 would be rejected by the hub until a `@camstack/server`
|
|
17600
|
+
* carrying the wider bound is installed everywhere. 300 is the widest value
|
|
17601
|
+
* that ships with an addon deploy.
|
|
17602
|
+
*/
|
|
17541
17603
|
var occupancyRecheckSecField = {
|
|
17542
17604
|
min: 0,
|
|
17543
17605
|
max: 300,
|
|
@@ -17739,15 +17801,21 @@ var RunnerCameraConfigSchema = object({
|
|
|
17739
17801
|
*/
|
|
17740
17802
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
17741
17803
|
/**
|
|
17742
|
-
* Master toggle for the occupancy re-check. When `false`
|
|
17743
|
-
*
|
|
17744
|
-
* this is off by default because the recheck re-subscribes a detection session
|
|
17745
|
-
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
17746
|
-
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
17804
|
+
* Master toggle for the occupancy re-check. When `false` the runner never arms
|
|
17805
|
+
* the periodic recheck timer, regardless of `occupancyRecheckSec`; the
|
|
17747
17806
|
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
17748
17807
|
* (and only render) when this is enabled.
|
|
17749
|
-
|
|
17750
|
-
|
|
17808
|
+
*
|
|
17809
|
+
* DEFAULT `true` since 2026-08-13 (was `false`). It was off because the
|
|
17810
|
+
* recheck re-subscribes a detection session every N seconds while `watching`
|
|
17811
|
+
* — each cycle creates+tears a session ⇒ an RTSP re-dial ⇒ latency, a major
|
|
17812
|
+
* pull-decoder churn source. What that bought was a blind spot: a STATIONARY
|
|
17813
|
+
* object is counted only while the stationary registry holds it, and the
|
|
17814
|
+
* registry rebuilds from motion, so after a restart a parked car was invisible
|
|
17815
|
+
* to every occupancy rule until something moved in front of it. The churn is
|
|
17816
|
+
* now paid on the interval instead — see `occupancyRecheckSecField`.
|
|
17817
|
+
*/
|
|
17818
|
+
occupancyRecheckEnabled: boolean().default(true),
|
|
17751
17819
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
17752
17820
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
17753
17821
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-gree",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.16",
|
|
4
4
|
"description": "Gree air-conditioner device-provider addon for CamStack — wraps the @apocaliss92/nodegree local-UDP client (LAN discovery + AES control), exposing climate-control and fan-control",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|