@camstack/addon-provider-dreame 0.2.15 → 0.2.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/addon.js +732 -77
- package/dist/addon.mjs +732 -77
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -61276,7 +61276,14 @@ var cameraStreamsCapability = {
|
|
|
61276
61276
|
low: string().optional()
|
|
61277
61277
|
}),
|
|
61278
61278
|
lastChangedAt: number()
|
|
61279
|
-
})
|
|
61279
|
+
}),
|
|
61280
|
+
/**
|
|
61281
|
+
* Runtime-state durability: **session** — a restored `slotStatuses: streaming` for a camera that has been dark for two hours is a lie the UI renders as truth.
|
|
61282
|
+
*
|
|
61283
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
61284
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
61285
|
+
*/
|
|
61286
|
+
durability: "session"
|
|
61280
61287
|
};
|
|
61281
61288
|
/** Where a block runs. The operator chooses — a block driving a device on an
|
|
61282
61289
|
* agent is the reason placement is not fixed to the hub. */
|
|
@@ -61837,6 +61844,13 @@ var deviceDiscoveryCapability = {
|
|
|
61837
61844
|
kind: "poll"
|
|
61838
61845
|
},
|
|
61839
61846
|
runtimeState: DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int().nonnegative() }),
|
|
61847
|
+
/**
|
|
61848
|
+
* Runtime-state durability: **session** — 5.7 KB of scan output on the largest device, fully re-derivable by re-scanning.
|
|
61849
|
+
*
|
|
61850
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
61851
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
61852
|
+
*/
|
|
61853
|
+
durability: "session",
|
|
61840
61854
|
methods: {
|
|
61841
61855
|
/**
|
|
61842
61856
|
* Snapshot of the current `discovered` list. Returns the
|
|
@@ -63723,11 +63737,33 @@ var NotificationFormatSchema = _enum([
|
|
|
63723
63737
|
* Named by INTENT, never by glyph. "check" would tie the vocabulary to one
|
|
63724
63738
|
* renderer's icon set; "acknowledge" survives an adapter that draws it
|
|
63725
63739
|
* differently.
|
|
63740
|
+
*
|
|
63741
|
+
* ── A TOKEN IS NOT A WIRE VALUE ─────────────────────────────────────
|
|
63742
|
+
*
|
|
63743
|
+
* These names are for US. **No adapter may forward one verbatim.** Each maps
|
|
63744
|
+
* the whole set onto its own renderer's vocabulary through a
|
|
63745
|
+
* `Record<NotificationActionIcon, string>` — a Record, never a lookup with a
|
|
63746
|
+
* fallback, so adding a member here fails every adapter's build until someone
|
|
63747
|
+
* decides its glyph, which is the only place that decision can be made
|
|
63748
|
+
* honestly.
|
|
63749
|
+
*
|
|
63750
|
+
* This paragraph is the bug. Zentik declared `actionIcons: true` and passed
|
|
63751
|
+
* `disarm` straight through; iOS feeds that string to
|
|
63752
|
+
* `UNNotificationActionIcon(systemImageName:)`, `disarm` is not an SF Symbol,
|
|
63753
|
+
* and every snooze and alarm button arrived BLANK. A pass-through is not a
|
|
63754
|
+
* mapping, and "the field is documented" is not "the value renders".
|
|
63755
|
+
*
|
|
63756
|
+
* Adding a member is TRAIN-BOUND. The enum lives in the published
|
|
63757
|
+
* `@camstack/server` closure and the cap seam validates against the HUB's copy,
|
|
63758
|
+
* so an addon that emits a token the running hub does not know does not lose an
|
|
63759
|
+
* icon — its whole `send` fails Zod validation and the notification never
|
|
63760
|
+
* arrives. Never emit a new token from an addon before the train carrying it.
|
|
63726
63761
|
*/
|
|
63727
63762
|
var NotificationActionIconSchema = _enum([
|
|
63728
63763
|
"acknowledge",
|
|
63729
63764
|
"dismiss",
|
|
63730
63765
|
"silence",
|
|
63766
|
+
"snooze",
|
|
63731
63767
|
"view",
|
|
63732
63768
|
"play",
|
|
63733
63769
|
"open",
|
|
@@ -63735,9 +63771,13 @@ var NotificationActionIconSchema = _enum([
|
|
|
63735
63771
|
"lock",
|
|
63736
63772
|
"unlock",
|
|
63737
63773
|
"arm",
|
|
63774
|
+
"arm-home",
|
|
63775
|
+
"arm-away",
|
|
63776
|
+
"arm-night",
|
|
63738
63777
|
"disarm",
|
|
63739
63778
|
"light",
|
|
63740
|
-
"alert"
|
|
63779
|
+
"alert",
|
|
63780
|
+
"camera"
|
|
63741
63781
|
]);
|
|
63742
63782
|
/** A single tap-through action button. */
|
|
63743
63783
|
var NotificationActionSchema = object({
|
|
@@ -63753,7 +63793,23 @@ var NotificationActionSchema = object({
|
|
|
63753
63793
|
* else — see `notification-center/action-token.ts` for what that does and
|
|
63754
63794
|
* does not buy.
|
|
63755
63795
|
*/
|
|
63756
|
-
destructive: boolean().optional()
|
|
63796
|
+
destructive: boolean().optional(),
|
|
63797
|
+
/**
|
|
63798
|
+
* How the tap should REACH the url.
|
|
63799
|
+
*
|
|
63800
|
+
* `navigate` (absent, and every button authored before this field) opens it:
|
|
63801
|
+
* the phone leaves the notification and shows whatever the callback returns.
|
|
63802
|
+
* That is right for a button whose answer the operator wants to read.
|
|
63803
|
+
*
|
|
63804
|
+
* `background` fires it as a POST and stays put. It exists for the buttons
|
|
63805
|
+
* whose whole point is not to interrupt — "silence this for 30 minutes" is
|
|
63806
|
+
* an answer to the notification, and being thrown into a browser tab to
|
|
63807
|
+
* confirm it costs more attention than the notification did. A backend that
|
|
63808
|
+
* cannot do a background call renders it as an ordinary link (the adapters
|
|
63809
|
+
* fall back rather than dropping the button), so this is a preference, never
|
|
63810
|
+
* a requirement.
|
|
63811
|
+
*/
|
|
63812
|
+
mode: _enum(["navigate", "background"]).optional()
|
|
63757
63813
|
});
|
|
63758
63814
|
/**
|
|
63759
63815
|
* The canonical notification. `body` is the only hard field (Apprise model).
|
|
@@ -63921,6 +63977,24 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
63921
63977
|
targetId: string(),
|
|
63922
63978
|
enabled: boolean()
|
|
63923
63979
|
}), _void(), { kind: "mutation" });
|
|
63980
|
+
new Set([
|
|
63981
|
+
{
|
|
63982
|
+
id: "person",
|
|
63983
|
+
name: "Person"
|
|
63984
|
+
},
|
|
63985
|
+
{
|
|
63986
|
+
id: "vehicle",
|
|
63987
|
+
name: "Vehicle"
|
|
63988
|
+
},
|
|
63989
|
+
{
|
|
63990
|
+
id: "animal",
|
|
63991
|
+
name: "Animal"
|
|
63992
|
+
},
|
|
63993
|
+
{
|
|
63994
|
+
id: "package",
|
|
63995
|
+
name: "Package"
|
|
63996
|
+
}
|
|
63997
|
+
].map((l) => l.id));
|
|
63924
63998
|
var COCO_TO_MACRO = {
|
|
63925
63999
|
mapping: {
|
|
63926
64000
|
person: "person",
|
|
@@ -64605,7 +64679,17 @@ var alarmPanelCapability = {
|
|
|
64605
64679
|
* full slice; renders an arm button per `availableModes` entry and
|
|
64606
64680
|
* a PIN field iff `requiresCode === true`.
|
|
64607
64681
|
*/
|
|
64608
|
-
runtimeState: AlarmPanelStatusSchema
|
|
64682
|
+
runtimeState: AlarmPanelStatusSchema,
|
|
64683
|
+
/**
|
|
64684
|
+
* Runtime-state durability: **restored** — armed state is the one thing a panel must not lose across a restart.
|
|
64685
|
+
*
|
|
64686
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
64687
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
64688
|
+
*/
|
|
64689
|
+
durability: "restored",
|
|
64690
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
64691
|
+
* whether persisting is worth a SQLite commit. */
|
|
64692
|
+
volatileStateFields: ["lastChangedAt"]
|
|
64609
64693
|
};
|
|
64610
64694
|
/**
|
|
64611
64695
|
* Shared geometry vocabulary for on-frame shape caps — privacy-mask,
|
|
@@ -64746,6 +64830,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
64746
64830
|
"alarm-triggered",
|
|
64747
64831
|
"alarm-armed",
|
|
64748
64832
|
"alarm-disarmed",
|
|
64833
|
+
"alarm-arming",
|
|
64834
|
+
"alarm-arm-refused",
|
|
64749
64835
|
"camera-online",
|
|
64750
64836
|
"camera-offline",
|
|
64751
64837
|
"camera-disabled",
|
|
@@ -64782,6 +64868,9 @@ var NcSystemEventConditionSchema = object({
|
|
|
64782
64868
|
nodeIds: array(string().min(1)).min(1).optional(),
|
|
64783
64869
|
packageNames: array(string().min(1)).min(1).optional()
|
|
64784
64870
|
});
|
|
64871
|
+
/** Hard ceiling on a window (24h). A snooze that could not expire would be an
|
|
64872
|
+
* outage the operator asked for once and forgot. */
|
|
64873
|
+
var NC_SNOOZE_MAX_MINUTES = 1440;
|
|
64785
64874
|
/** Weekly schedule — OR of windows; absence on the rule = always active. */
|
|
64786
64875
|
var NcScheduleSchema = object({
|
|
64787
64876
|
windows: array(object({
|
|
@@ -65158,15 +65247,15 @@ var NcConditionsSchema = object({
|
|
|
65158
65247
|
* (an `immediate` rule naming an `audio-*` class, one notification per
|
|
65159
65248
|
* classified sample) stays exactly as it was for rules that already use it.
|
|
65160
65249
|
*
|
|
65161
|
-
*
|
|
65162
|
-
* rather than an
|
|
65163
|
-
* (`camstack/src/data/notification-center.ts`, guarded by
|
|
65164
|
-
* `scripts/check-viewer-condition-mirror.ts`) and its rule editor
|
|
65250
|
+
* In {@link NC_CONDITION_CATALOG} since P2, and the ORDER it got there is the
|
|
65251
|
+
* rule rather than an accident: the viewer mirrors the descriptor enums BY
|
|
65252
|
+
* HAND (`camstack/src/data/notification-center.ts`, guarded by
|
|
65253
|
+
* `scripts/check-viewer-condition-mirror.ts`) and its rule editor strips the
|
|
65165
65254
|
* condition fields it does not know when a rule is saved from the phone.
|
|
65166
65255
|
* Publishing an editor for a condition the app cannot round-trip is how an
|
|
65167
|
-
* operator loses a rule's conditions by opening it — so the
|
|
65168
|
-
*
|
|
65169
|
-
*
|
|
65256
|
+
* operator loses a rule's conditions by opening it — so the viewer mirror
|
|
65257
|
+
* (P3, shipped) went FIRST, and the descriptor an editor renders from
|
|
65258
|
+
* follows here.
|
|
65170
65259
|
*/
|
|
65171
65260
|
audio: NcAudioConditionSchema.optional()
|
|
65172
65261
|
});
|
|
@@ -65402,6 +65491,30 @@ var NcRuleInputSchema = object({
|
|
|
65402
65491
|
*/
|
|
65403
65492
|
snoozeAllowGlobal: boolean().optional(),
|
|
65404
65493
|
/**
|
|
65494
|
+
* The snooze durations THIS rule's notification offers as buttons, in
|
|
65495
|
+
* minutes.
|
|
65496
|
+
*
|
|
65497
|
+
* Three states, and all three are distinct — which is exactly why this is
|
|
65498
|
+
* `.optional()` and never `.default()`. A Zod default does not run on the
|
|
65499
|
+
* addon cap path (three production failures in one day), so a schema default
|
|
65500
|
+
* would collapse the first two:
|
|
65501
|
+
*
|
|
65502
|
+
* | value | meaning |
|
|
65503
|
+
* | --- | --- |
|
|
65504
|
+
* | absent | the operator never said ⇒ {@link NC_DEFAULT_SNOOZE_MINUTES} |
|
|
65505
|
+
* | `[]` | **no snooze buttons on this rule** — the explicit override |
|
|
65506
|
+
* | a list | these choices, de-duplicated and sorted, at most four |
|
|
65507
|
+
*
|
|
65508
|
+
* `.max(4)` because the notifier's own action budget is small (ntfy allows
|
|
65509
|
+
* three buttons in total) and a rule that spent it all on snooze choices
|
|
65510
|
+
* would push its own tap-through actions off the notification.
|
|
65511
|
+
*
|
|
65512
|
+
* An empty list is NOT an alarm exemption: a rule the alarm is about, or
|
|
65513
|
+
* that arms the panel, is exempt automatically and cannot be silenced by a
|
|
65514
|
+
* window from anywhere (D133).
|
|
65515
|
+
*/
|
|
65516
|
+
snoozeOptions: array(number().int().min(1).max(NC_SNOOZE_MAX_MINUTES)).max(4).optional(),
|
|
65517
|
+
/**
|
|
65405
65518
|
* Devices this rule ACTUATES — arm the alarm, open a gate, turn on a light.
|
|
65406
65519
|
*
|
|
65407
65520
|
* This is what makes the rule set the alarm's trigger set without the alarm
|
|
@@ -65501,6 +65614,7 @@ var NcConditionDescriptorSchema = object({
|
|
|
65501
65614
|
"device",
|
|
65502
65615
|
"package",
|
|
65503
65616
|
"occupancy",
|
|
65617
|
+
"audio",
|
|
65504
65618
|
"system"
|
|
65505
65619
|
]),
|
|
65506
65620
|
label: string(),
|
|
@@ -65519,6 +65633,7 @@ var NcConditionDescriptorSchema = object({
|
|
|
65519
65633
|
"crossingSelect",
|
|
65520
65634
|
"polygonDraw",
|
|
65521
65635
|
"occupancy",
|
|
65636
|
+
"audio",
|
|
65522
65637
|
"deviceState",
|
|
65523
65638
|
"systemEvent"
|
|
65524
65639
|
]),
|
|
@@ -65670,7 +65785,20 @@ var NcSnoozeInputSchema = object({
|
|
|
65670
65785
|
ruleId: string().optional(),
|
|
65671
65786
|
/** Required when `scope: 'device'`. */
|
|
65672
65787
|
deviceId: number().int().optional(),
|
|
65673
|
-
|
|
65788
|
+
/**
|
|
65789
|
+
* Narrow the window to these subject classes — "the cat, not the person".
|
|
65790
|
+
*
|
|
65791
|
+
* ORTHOGONAL to `scope`, deliberately, and absent means EVERY class: that is
|
|
65792
|
+
* what every window authored before this field meant, so no persisted row
|
|
65793
|
+
* changes meaning and no client has to learn anything to keep working.
|
|
65794
|
+
*
|
|
65795
|
+
* It is what makes the window's real key `(deviceId, classes[])` and lets it
|
|
65796
|
+
* cross rules (D133): the operator points at a camera and a kind of thing,
|
|
65797
|
+
* not at whichever of their four rules happened to produce the notification
|
|
65798
|
+
* they are dismissing.
|
|
65799
|
+
*/
|
|
65800
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
65801
|
+
durationMinutes: number().int().min(1).max(NC_SNOOZE_MAX_MINUTES),
|
|
65674
65802
|
/**
|
|
65675
65803
|
* Silence this for EVERY recipient, not just the caller. Permission is
|
|
65676
65804
|
* checked server-side (the rule's `snoozeAllowGlobal`, or admin for the
|
|
@@ -65695,6 +65823,10 @@ var NcSnoozeSchema = object({
|
|
|
65695
65823
|
scope: NcSnoozeScopeSchema,
|
|
65696
65824
|
ruleId: string().optional(),
|
|
65697
65825
|
deviceId: number().int().optional(),
|
|
65826
|
+
/** Subject classes this window covers. ABSENT = every class — see
|
|
65827
|
+
* {@link NcSnoozeInputSchema.shape.classes}. Lives in the JSON blob and has
|
|
65828
|
+
* no SQLite column: nothing queries a window by class. */
|
|
65829
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
65698
65830
|
startedAt: number(),
|
|
65699
65831
|
/** Exclusive: at exactly this instant the snooze is over. Expiry is a
|
|
65700
65832
|
* COMPARISON, not a job — no sweeper can leave the operator silenced. */
|
|
@@ -67795,7 +67927,14 @@ var zonesCapability = {
|
|
|
67795
67927
|
* handle. Slice shape is `{ zones: Zone[] }` so future extensions
|
|
67796
67928
|
* (e.g. zone groupings) can sit alongside the polygon list.
|
|
67797
67929
|
*/
|
|
67798
|
-
runtimeState: object({ zones: array(ZoneSchema).readonly() })
|
|
67930
|
+
runtimeState: object({ zones: array(ZoneSchema).readonly() }),
|
|
67931
|
+
/**
|
|
67932
|
+
* Runtime-state durability: **restored** — written only on operator mutation, so a camera that never had one has nothing to re-derive from. This is the slice `zone-mirror-hydration.ts` exists to paper over.
|
|
67933
|
+
*
|
|
67934
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
67935
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
67936
|
+
*/
|
|
67937
|
+
durability: "restored"
|
|
67799
67938
|
};
|
|
67800
67939
|
/**
|
|
67801
67940
|
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
@@ -67965,6 +68104,22 @@ var detectionFpsField = {
|
|
|
67965
68104
|
default: 10,
|
|
67966
68105
|
step: 1
|
|
67967
68106
|
};
|
|
68107
|
+
/**
|
|
68108
|
+
* The occupancy re-check interval. DEFAULT 300 s (2026-08-13 — was 30 s).
|
|
68109
|
+
*
|
|
68110
|
+
* The recheck is now on by default (a parked car is invisible to occupancy
|
|
68111
|
+
* rules until the stationary registry has been rebuilt by motion, which after a
|
|
68112
|
+
* restart may be never on a quiet camera). Each cycle re-subscribes a detection
|
|
68113
|
+
* session — an RTSP re-dial — so the switch is only affordable at a WIDE
|
|
68114
|
+
* interval: 300 s is ~12 re-dials an hour per camera, against 120 at the old
|
|
68115
|
+
* 30 s. A parked car is therefore counted within 5 minutes of a restart.
|
|
68116
|
+
*
|
|
68117
|
+
* Why not wider: `max` is 300 and raising it is TRAIN-BOUND, not addon-bound —
|
|
68118
|
+
* the host validates `attachCamera` against ITS copy of this schema, so a
|
|
68119
|
+
* runner asked for 600 would be rejected by the hub until a `@camstack/server`
|
|
68120
|
+
* carrying the wider bound is installed everywhere. 300 is the widest value
|
|
68121
|
+
* that ships with an addon deploy.
|
|
68122
|
+
*/
|
|
67968
68123
|
var occupancyRecheckSecField = {
|
|
67969
68124
|
min: 0,
|
|
67970
68125
|
max: 300,
|
|
@@ -68166,15 +68321,21 @@ var RunnerCameraConfigSchema = object({
|
|
|
68166
68321
|
*/
|
|
68167
68322
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
68168
68323
|
/**
|
|
68169
|
-
* Master toggle for the occupancy re-check. When `false`
|
|
68170
|
-
*
|
|
68171
|
-
* this is off by default because the recheck re-subscribes a detection session
|
|
68172
|
-
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
68173
|
-
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
68324
|
+
* Master toggle for the occupancy re-check. When `false` the runner never arms
|
|
68325
|
+
* the periodic recheck timer, regardless of `occupancyRecheckSec`; the
|
|
68174
68326
|
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
68175
68327
|
* (and only render) when this is enabled.
|
|
68176
|
-
|
|
68177
|
-
|
|
68328
|
+
*
|
|
68329
|
+
* DEFAULT `true` since 2026-08-13 (was `false`). It was off because the
|
|
68330
|
+
* recheck re-subscribes a detection session every N seconds while `watching`
|
|
68331
|
+
* — each cycle creates+tears a session ⇒ an RTSP re-dial ⇒ latency, a major
|
|
68332
|
+
* pull-decoder churn source. What that bought was a blind spot: a STATIONARY
|
|
68333
|
+
* object is counted only while the stationary registry holds it, and the
|
|
68334
|
+
* registry rebuilds from motion, so after a restart a parked car was invisible
|
|
68335
|
+
* to every occupancy rule until something moved in front of it. The churn is
|
|
68336
|
+
* now paid on the interval instead — see `occupancyRecheckSecField`.
|
|
68337
|
+
*/
|
|
68338
|
+
occupancyRecheckEnabled: boolean().default(true),
|
|
68178
68339
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
68179
68340
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
68180
68341
|
/**
|
|
@@ -70594,7 +70755,17 @@ var airQualitySensorCapability = {
|
|
|
70594
70755
|
schema: AirQualitySensorStatusSchema,
|
|
70595
70756
|
kind: "push"
|
|
70596
70757
|
},
|
|
70597
|
-
runtimeState: AirQualitySensorStatusSchema
|
|
70758
|
+
runtimeState: AirQualitySensorStatusSchema,
|
|
70759
|
+
/**
|
|
70760
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`.
|
|
70761
|
+
*
|
|
70762
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
70763
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
70764
|
+
*/
|
|
70765
|
+
durability: "restored",
|
|
70766
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
70767
|
+
* whether persisting is worth a SQLite commit. */
|
|
70768
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
70598
70769
|
};
|
|
70599
70770
|
/**
|
|
70600
70771
|
* Ambient illuminance reading in lux. Drives Home Assistant `sensor`
|
|
@@ -70626,7 +70797,17 @@ var ambientLightSensorCapability = {
|
|
|
70626
70797
|
schema: AmbientLightSensorStatusSchema,
|
|
70627
70798
|
kind: "push"
|
|
70628
70799
|
},
|
|
70629
|
-
runtimeState: AmbientLightSensorStatusSchema
|
|
70800
|
+
runtimeState: AmbientLightSensorStatusSchema,
|
|
70801
|
+
/**
|
|
70802
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`.
|
|
70803
|
+
*
|
|
70804
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
70805
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
70806
|
+
*/
|
|
70807
|
+
durability: "restored",
|
|
70808
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
70809
|
+
* whether persisting is worth a SQLite commit. */
|
|
70810
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
70630
70811
|
};
|
|
70631
70812
|
/**
|
|
70632
70813
|
* Per-class audio metrics aggregated over a sliding window.
|
|
@@ -70744,7 +70925,14 @@ var audioMetricsCapability = {
|
|
|
70744
70925
|
}), AudioMetricsHistorySchema)
|
|
70745
70926
|
},
|
|
70746
70927
|
/** Reactive runtime-state mirror — live `device.state.audioMetrics.value`. */
|
|
70747
|
-
runtimeState: AudioMetricsSnapshotSchema
|
|
70928
|
+
runtimeState: AudioMetricsSnapshotSchema,
|
|
70929
|
+
/**
|
|
70930
|
+
* Runtime-state durability: **session** — 1 Hz per camera at the mirror and ~63 % of the fleet's whole runtime-state write rate. `avgDbfs` is a rolling 60 s mean that genuinely moves every second, so no equality fix reclaims it — and a two-hour-old dB reading rendered as current is worse than no reading.
|
|
70931
|
+
*
|
|
70932
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
70933
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
70934
|
+
*/
|
|
70935
|
+
durability: "session"
|
|
70748
70936
|
};
|
|
70749
70937
|
/**
|
|
70750
70938
|
* Automation-control cap. Models HA `automation.*` entities on
|
|
@@ -70806,7 +70994,14 @@ var automationControlCapability = {
|
|
|
70806
70994
|
* reads `enabled` (toggle) + `isRunning` (spinner) + `lastError`
|
|
70807
70995
|
* (badge) directly.
|
|
70808
70996
|
*/
|
|
70809
|
-
runtimeState: AutomationControlStatusSchema
|
|
70997
|
+
runtimeState: AutomationControlStatusSchema,
|
|
70998
|
+
/**
|
|
70999
|
+
* Runtime-state durability: **session** — the authority for an automation being enabled is the automation store; a restored `isRunning` would be a lie. D62: one authority per switch.
|
|
71000
|
+
*
|
|
71001
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
71002
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
71003
|
+
*/
|
|
71004
|
+
durability: "session"
|
|
70810
71005
|
};
|
|
70811
71006
|
/**
|
|
70812
71007
|
* Battery status snapshot. Emitted by providers whose device is
|
|
@@ -70912,7 +71107,17 @@ onStatusChanged: { data: object({
|
|
|
70912
71107
|
* via `device.runtimeState.getCapState('battery')` regardless of
|
|
70913
71108
|
* the underlying driver.
|
|
70914
71109
|
*/
|
|
70915
|
-
runtimeState: BatteryStatusSchema
|
|
71110
|
+
runtimeState: BatteryStatusSchema,
|
|
71111
|
+
/**
|
|
71112
|
+
* Runtime-state durability: **restored** — a sleeping battery camera may not report for hours; the restored percentage is the only thing the UI and the sleep gate have. Zero churn once `lastUpdated` is excluded — 526 writes, 0 value changes, in 25 minutes.
|
|
71113
|
+
*
|
|
71114
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
71115
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
71116
|
+
*/
|
|
71117
|
+
durability: "restored",
|
|
71118
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
71119
|
+
* whether persisting is worth a SQLite commit. */
|
|
71120
|
+
volatileStateFields: ["lastUpdated"]
|
|
70916
71121
|
};
|
|
70917
71122
|
/**
|
|
70918
71123
|
* Generic boolean sensor — last-resort fallback when no domain-
|
|
@@ -70941,7 +71146,17 @@ var binaryCapability = {
|
|
|
70941
71146
|
schema: BinaryStatusSchema,
|
|
70942
71147
|
kind: "push"
|
|
70943
71148
|
},
|
|
70944
|
-
runtimeState: BinaryStatusSchema
|
|
71149
|
+
runtimeState: BinaryStatusSchema,
|
|
71150
|
+
/**
|
|
71151
|
+
* Runtime-state durability: **restored** — transition-driven sensor state; the restored value gives the boot comparison.
|
|
71152
|
+
*
|
|
71153
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
71154
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
71155
|
+
*/
|
|
71156
|
+
durability: "restored",
|
|
71157
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
71158
|
+
* whether persisting is worth a SQLite commit. */
|
|
71159
|
+
volatileStateFields: ["lastChangedAt"]
|
|
70945
71160
|
};
|
|
70946
71161
|
/**
|
|
70947
71162
|
* Dimmable-light brightness control. Co-exists with `switch` on the
|
|
@@ -70994,7 +71209,14 @@ onBrightnessChanged: { data: object({
|
|
|
70994
71209
|
* by the kernel. Read via `device.state.brightness.value` so UI
|
|
70995
71210
|
* sliders surface the current level without polling the provider.
|
|
70996
71211
|
*/
|
|
70997
|
-
runtimeState: BrightnessStatusSchema
|
|
71212
|
+
runtimeState: BrightnessStatusSchema,
|
|
71213
|
+
/**
|
|
71214
|
+
* Runtime-state durability: **session** — live lamp state, re-published by the provider on connect.
|
|
71215
|
+
*
|
|
71216
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
71217
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
71218
|
+
*/
|
|
71219
|
+
durability: "session"
|
|
70998
71220
|
};
|
|
70999
71221
|
/**
|
|
71000
71222
|
* button — device-scoped capability for HA `button.*` / `input_button.*`
|
|
@@ -71099,7 +71321,17 @@ var carbonMonoxideCapability = {
|
|
|
71099
71321
|
schema: CarbonMonoxideStatusSchema,
|
|
71100
71322
|
kind: "push"
|
|
71101
71323
|
},
|
|
71102
|
-
runtimeState: CarbonMonoxideStatusSchema
|
|
71324
|
+
runtimeState: CarbonMonoxideStatusSchema,
|
|
71325
|
+
/**
|
|
71326
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
71327
|
+
*
|
|
71328
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
71329
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
71330
|
+
*/
|
|
71331
|
+
durability: "restored",
|
|
71332
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
71333
|
+
* whether persisting is worth a SQLite commit. */
|
|
71334
|
+
volatileStateFields: ["lastChangedAt"]
|
|
71103
71335
|
};
|
|
71104
71336
|
/**
|
|
71105
71337
|
* HVAC / climate control cap. Models the full surface of a HA
|
|
@@ -71259,7 +71491,14 @@ var climateControlCapability = {
|
|
|
71259
71491
|
* the full slice via `device.state.climate-control.value` and refresh
|
|
71260
71492
|
* on every push without re-querying the provider.
|
|
71261
71493
|
*/
|
|
71262
|
-
runtimeState: ClimateControlStatusSchema
|
|
71494
|
+
runtimeState: ClimateControlStatusSchema,
|
|
71495
|
+
/**
|
|
71496
|
+
* Runtime-state durability: **session** — as `brightness`; `currentTemp` moves continuously and is re-published on connect.
|
|
71497
|
+
*
|
|
71498
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
71499
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
71500
|
+
*/
|
|
71501
|
+
durability: "session"
|
|
71263
71502
|
};
|
|
71264
71503
|
/**
|
|
71265
71504
|
* Color-light cap. Coexists with `switch` (on/off) and `brightness`
|
|
@@ -71369,7 +71608,14 @@ onColorChanged: { data: object({
|
|
|
71369
71608
|
* kernel. Read via `device.state.color.value` so UI pickers surface
|
|
71370
71609
|
* the current chromaticity without polling the provider.
|
|
71371
71610
|
*/
|
|
71372
|
-
runtimeState: ColorStatusSchema
|
|
71611
|
+
runtimeState: ColorStatusSchema,
|
|
71612
|
+
/**
|
|
71613
|
+
* Runtime-state durability: **session** — as `brightness`.
|
|
71614
|
+
*
|
|
71615
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
71616
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
71617
|
+
*/
|
|
71618
|
+
durability: "session"
|
|
71373
71619
|
};
|
|
71374
71620
|
var ConnectionTestOutcomeSchema = discriminatedUnion("outcome", [
|
|
71375
71621
|
object({
|
|
@@ -71435,7 +71681,17 @@ var connectivityCapability = {
|
|
|
71435
71681
|
schema: ConnectivityStatusSchema,
|
|
71436
71682
|
kind: "push"
|
|
71437
71683
|
},
|
|
71438
|
-
runtimeState: ConnectivityStatusSchema
|
|
71684
|
+
runtimeState: ConnectivityStatusSchema,
|
|
71685
|
+
/**
|
|
71686
|
+
* Runtime-state durability: **restored** — same shape and same argument as `device-status`, for links rather than devices.
|
|
71687
|
+
*
|
|
71688
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
71689
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
71690
|
+
*/
|
|
71691
|
+
durability: "restored",
|
|
71692
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
71693
|
+
* whether persisting is worth a SQLite commit. */
|
|
71694
|
+
volatileStateFields: ["lastChangedAt"]
|
|
71439
71695
|
};
|
|
71440
71696
|
/**
|
|
71441
71697
|
* Generic device-consumables capability — surfaces a device's
|
|
@@ -71517,7 +71773,14 @@ reset: method(object({
|
|
|
71517
71773
|
}
|
|
71518
71774
|
}
|
|
71519
71775
|
},
|
|
71520
|
-
runtimeState: ConsumablesStatusSchema.extend({ lastFetchedAt: number() })
|
|
71776
|
+
runtimeState: ConsumablesStatusSchema.extend({ lastFetchedAt: number() }),
|
|
71777
|
+
/**
|
|
71778
|
+
* Runtime-state durability: **session** — the authority is the appliance; the provider re-reads the whole item array on connect.
|
|
71779
|
+
*
|
|
71780
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
71781
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
71782
|
+
*/
|
|
71783
|
+
durability: "session"
|
|
71521
71784
|
};
|
|
71522
71785
|
/**
|
|
71523
71786
|
* Door / window / opening / garage / valve contact sensor. Boolean
|
|
@@ -71548,7 +71811,17 @@ var contactCapability = {
|
|
|
71548
71811
|
schema: ContactStatusSchema,
|
|
71549
71812
|
kind: "push"
|
|
71550
71813
|
},
|
|
71551
|
-
runtimeState: ContactStatusSchema
|
|
71814
|
+
runtimeState: ContactStatusSchema,
|
|
71815
|
+
/**
|
|
71816
|
+
* Runtime-state durability: **restored** — a door left open across a restart must still read open.
|
|
71817
|
+
*
|
|
71818
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
71819
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
71820
|
+
*/
|
|
71821
|
+
durability: "restored",
|
|
71822
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
71823
|
+
* whether persisting is worth a SQLite commit. */
|
|
71824
|
+
volatileStateFields: ["lastChangedAt"]
|
|
71552
71825
|
};
|
|
71553
71826
|
/**
|
|
71554
71827
|
* Status slice — flat object (the framework's `runtimeState` contract
|
|
@@ -71654,7 +71927,14 @@ var controlCapability = {
|
|
|
71654
71927
|
* dropdown / text field / date picker) read the slice's discriminant
|
|
71655
71928
|
* and value directly without polling the provider.
|
|
71656
71929
|
*/
|
|
71657
|
-
runtimeState: ControlStatusSchema
|
|
71930
|
+
runtimeState: ControlStatusSchema,
|
|
71931
|
+
/**
|
|
71932
|
+
* Runtime-state durability: **session** — a generic control mirrors an external entity that re-publishes on connect; the options array is re-derived with it.
|
|
71933
|
+
*
|
|
71934
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
71935
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
71936
|
+
*/
|
|
71937
|
+
durability: "session"
|
|
71658
71938
|
};
|
|
71659
71939
|
var CoverStatusSchema = object({
|
|
71660
71940
|
/** Lifecycle state of the cover. */
|
|
@@ -71715,7 +71995,17 @@ var coverCapability = {
|
|
|
71715
71995
|
* Runtime-state slice — mirrored by the kernel. UI controls watch
|
|
71716
71996
|
* the slice for live position changes during a move.
|
|
71717
71997
|
*/
|
|
71718
|
-
runtimeState: CoverStatusSchema
|
|
71998
|
+
runtimeState: CoverStatusSchema,
|
|
71999
|
+
/**
|
|
72000
|
+
* Runtime-state durability: **restored** — position survives a restart on the device; the mirror should agree at boot rather than read blank.
|
|
72001
|
+
*
|
|
72002
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
72003
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
72004
|
+
*/
|
|
72005
|
+
durability: "restored",
|
|
72006
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
72007
|
+
* whether persisting is worth a SQLite commit. */
|
|
72008
|
+
volatileStateFields: ["lastChangedAt"]
|
|
71719
72009
|
};
|
|
71720
72010
|
/**
|
|
71721
72011
|
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
@@ -71809,7 +72099,17 @@ var dayNightCapability = {
|
|
|
71809
72099
|
schema: DayNightStatusSchema,
|
|
71810
72100
|
kind: "poll"
|
|
71811
72101
|
},
|
|
71812
|
-
runtimeState: DayNightStatusSchema
|
|
72102
|
+
runtimeState: DayNightStatusSchema,
|
|
72103
|
+
/**
|
|
72104
|
+
* Runtime-state durability: **restored** — operator-set IR-cut behaviour; mutation-driven.
|
|
72105
|
+
*
|
|
72106
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
72107
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
72108
|
+
*/
|
|
72109
|
+
durability: "restored",
|
|
72110
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
72111
|
+
* whether persisting is worth a SQLite commit. */
|
|
72112
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
71813
72113
|
};
|
|
71814
72114
|
/**
|
|
71815
72115
|
* Generic device-level status snapshot. Auto-registered by `BaseDevice`
|
|
@@ -71856,7 +72156,17 @@ onStatusChanged: { data: object({
|
|
|
71856
72156
|
schema: DeviceStatusSchema,
|
|
71857
72157
|
kind: "push"
|
|
71858
72158
|
},
|
|
71859
|
-
runtimeState: DeviceStatusSchema
|
|
72159
|
+
runtimeState: DeviceStatusSchema,
|
|
72160
|
+
/**
|
|
72161
|
+
* Runtime-state durability: **restored** — the previous observation is what makes the first reading after a restart a COMPARISON instead of a phantom transition (D130). 32 real flips across 16 devices in 25 min — the busiest slice in the cold half.
|
|
72162
|
+
*
|
|
72163
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
72164
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
72165
|
+
*/
|
|
72166
|
+
durability: "restored",
|
|
72167
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
72168
|
+
* whether persisting is worth a SQLite commit. */
|
|
72169
|
+
volatileStateFields: ["lastChangedAt"]
|
|
71860
72170
|
};
|
|
71861
72171
|
/**
|
|
71862
72172
|
* Doorbell button cap. Two kinds of providers coexist behind this cap
|
|
@@ -71918,7 +72228,14 @@ onPressed: { data: DoorbellPressEventSchema } },
|
|
|
71918
72228
|
* `device.state.doorbell.value`. UIs can show "last ring 5m ago"
|
|
71919
72229
|
* without subscribing.
|
|
71920
72230
|
*/
|
|
71921
|
-
runtimeState: DoorbellStatusSchema
|
|
72231
|
+
runtimeState: DoorbellStatusSchema,
|
|
72232
|
+
/**
|
|
72233
|
+
* Runtime-state durability: **restored** — a monotonic accumulator: the slice IS the record. `lastPressedAt` is content here, not a clock, so it is deliberately NOT volatile.
|
|
72234
|
+
*
|
|
72235
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
72236
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
72237
|
+
*/
|
|
72238
|
+
durability: "restored"
|
|
71922
72239
|
};
|
|
71923
72240
|
/**
|
|
71924
72241
|
* Enum-state sensor — a string value picked from a finite option set.
|
|
@@ -71958,7 +72275,17 @@ var enumSensorCapability = {
|
|
|
71958
72275
|
schema: EnumSensorStatusSchema,
|
|
71959
72276
|
kind: "push"
|
|
71960
72277
|
},
|
|
71961
|
-
runtimeState: EnumSensorStatusSchema
|
|
72278
|
+
runtimeState: EnumSensorStatusSchema,
|
|
72279
|
+
/**
|
|
72280
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`; 80 devices.
|
|
72281
|
+
*
|
|
72282
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
72283
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
72284
|
+
*/
|
|
72285
|
+
durability: "restored",
|
|
72286
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
72287
|
+
* whether persisting is worth a SQLite commit. */
|
|
72288
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
71962
72289
|
};
|
|
71963
72290
|
/**
|
|
71964
72291
|
* Generic stateless event emitter. Installed on a `DeviceType.EventEmitter`
|
|
@@ -71994,7 +72321,14 @@ var eventEmitterCapability = {
|
|
|
71994
72321
|
schema: EventEmitterStatusSchema,
|
|
71995
72322
|
kind: "push"
|
|
71996
72323
|
},
|
|
71997
|
-
runtimeState: EventEmitterStatusSchema
|
|
72324
|
+
runtimeState: EventEmitterStatusSchema,
|
|
72325
|
+
/**
|
|
72326
|
+
* Runtime-state durability: **session** — `eventCountSinceStart` names its own scope.
|
|
72327
|
+
*
|
|
72328
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
72329
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
72330
|
+
*/
|
|
72331
|
+
durability: "session"
|
|
71998
72332
|
};
|
|
71999
72333
|
var EventItemSchema = object({
|
|
72000
72334
|
id: string(),
|
|
@@ -72275,7 +72609,14 @@ var fanControlCapability = {
|
|
|
72275
72609
|
* Runtime-state slice — mirrored by the kernel. UI fan speed
|
|
72276
72610
|
* sliders read `percentage` for live updates.
|
|
72277
72611
|
*/
|
|
72278
|
-
runtimeState: FanControlStatusSchema
|
|
72612
|
+
runtimeState: FanControlStatusSchema,
|
|
72613
|
+
/**
|
|
72614
|
+
* Runtime-state durability: **session** — as `brightness`.
|
|
72615
|
+
*
|
|
72616
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
72617
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
72618
|
+
*/
|
|
72619
|
+
durability: "session"
|
|
72279
72620
|
};
|
|
72280
72621
|
/**
|
|
72281
72622
|
* Per-device feature/identity probe slice. Holds the runtime-resolved
|
|
@@ -72351,7 +72692,14 @@ onProbeChanged: { data: object({
|
|
|
72351
72692
|
schema: FeatureProbeStatusSchema,
|
|
72352
72693
|
kind: "push"
|
|
72353
72694
|
},
|
|
72354
|
-
runtimeState: FeatureProbeStatusSchema
|
|
72695
|
+
runtimeState: FeatureProbeStatusSchema,
|
|
72696
|
+
/**
|
|
72697
|
+
* Runtime-state durability: **session** — per-session by definition — `lastProbedAt` means "this worker completed a probe THIS session", which is why the mirror seed already blanks it. Persisting it only creates something to blank.
|
|
72698
|
+
*
|
|
72699
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
72700
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
72701
|
+
*/
|
|
72702
|
+
durability: "session"
|
|
72355
72703
|
};
|
|
72356
72704
|
/**
|
|
72357
72705
|
* Water leak / moisture sensor. Boolean "is liquid currently
|
|
@@ -72378,7 +72726,17 @@ var floodCapability = {
|
|
|
72378
72726
|
schema: FloodStatusSchema,
|
|
72379
72727
|
kind: "push"
|
|
72380
72728
|
},
|
|
72381
|
-
runtimeState: FloodStatusSchema
|
|
72729
|
+
runtimeState: FloodStatusSchema,
|
|
72730
|
+
/**
|
|
72731
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
72732
|
+
*
|
|
72733
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
72734
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
72735
|
+
*/
|
|
72736
|
+
durability: "restored",
|
|
72737
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
72738
|
+
* whether persisting is worth a SQLite commit. */
|
|
72739
|
+
volatileStateFields: ["lastChangedAt"]
|
|
72382
72740
|
};
|
|
72383
72741
|
/**
|
|
72384
72742
|
* Combustible-gas (LPG / methane / hydrogen) alarm sensor. Drives
|
|
@@ -72401,7 +72759,17 @@ var gasCapability = {
|
|
|
72401
72759
|
schema: GasStatusSchema,
|
|
72402
72760
|
kind: "push"
|
|
72403
72761
|
},
|
|
72404
|
-
runtimeState: GasStatusSchema
|
|
72762
|
+
runtimeState: GasStatusSchema,
|
|
72763
|
+
/**
|
|
72764
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
72765
|
+
*
|
|
72766
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
72767
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
72768
|
+
*/
|
|
72769
|
+
durability: "restored",
|
|
72770
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
72771
|
+
* whether persisting is worth a SQLite commit. */
|
|
72772
|
+
volatileStateFields: ["lastChangedAt"]
|
|
72405
72773
|
};
|
|
72406
72774
|
/**
|
|
72407
72775
|
* Humidifier / dehumidifier cap. Models HA `humidifier.*` entities —
|
|
@@ -72477,7 +72845,14 @@ var humidifierCapability = {
|
|
|
72477
72845
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
72478
72846
|
* slice for live humidity / mode changes.
|
|
72479
72847
|
*/
|
|
72480
|
-
runtimeState: HumidifierStatusSchema
|
|
72848
|
+
runtimeState: HumidifierStatusSchema,
|
|
72849
|
+
/**
|
|
72850
|
+
* Runtime-state durability: **session** — as `climate-control`.
|
|
72851
|
+
*
|
|
72852
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
72853
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
72854
|
+
*/
|
|
72855
|
+
durability: "session"
|
|
72481
72856
|
};
|
|
72482
72857
|
/**
|
|
72483
72858
|
* Single-metric humidity reading. Drives Home Assistant `sensor`
|
|
@@ -72513,7 +72888,17 @@ var humiditySensorCapability = {
|
|
|
72513
72888
|
schema: HumiditySensorStatusSchema,
|
|
72514
72889
|
kind: "push"
|
|
72515
72890
|
},
|
|
72516
|
-
runtimeState: HumiditySensorStatusSchema
|
|
72891
|
+
runtimeState: HumiditySensorStatusSchema,
|
|
72892
|
+
/**
|
|
72893
|
+
* Runtime-state durability: **restored** — as `numeric-sensor` (67 of 75 writes were the clock alone).
|
|
72894
|
+
*
|
|
72895
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
72896
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
72897
|
+
*/
|
|
72898
|
+
durability: "restored",
|
|
72899
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
72900
|
+
* whether persisting is worth a SQLite commit. */
|
|
72901
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
72517
72902
|
};
|
|
72518
72903
|
/**
|
|
72519
72904
|
* Image display cap. Models a single still image exposed by an integration —
|
|
@@ -72551,7 +72936,14 @@ var imageCapability = {
|
|
|
72551
72936
|
* Runtime-state slice — mirrored by the kernel. The UI reads `url`
|
|
72552
72937
|
* directly and renders the still image.
|
|
72553
72938
|
*/
|
|
72554
|
-
runtimeState: ImageStatusSchema
|
|
72939
|
+
runtimeState: ImageStatusSchema,
|
|
72940
|
+
/**
|
|
72941
|
+
* Runtime-state durability: **session** — a snapshot URL is a session-scoped handle; a restored one points at nothing.
|
|
72942
|
+
*
|
|
72943
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
72944
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
72945
|
+
*/
|
|
72946
|
+
durability: "session"
|
|
72555
72947
|
};
|
|
72556
72948
|
/**
|
|
72557
72949
|
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
@@ -72700,7 +73092,17 @@ var imageSettingsCapability = {
|
|
|
72700
73092
|
schema: ImageSettingsStatusSchema,
|
|
72701
73093
|
kind: "poll"
|
|
72702
73094
|
},
|
|
72703
|
-
runtimeState: ImageSettingsStatusSchema
|
|
73095
|
+
runtimeState: ImageSettingsStatusSchema,
|
|
73096
|
+
/**
|
|
73097
|
+
* Runtime-state durability: **restored** — operator-set camera imaging; mutation-driven.
|
|
73098
|
+
*
|
|
73099
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
73100
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
73101
|
+
*/
|
|
73102
|
+
durability: "restored",
|
|
73103
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
73104
|
+
* whether persisting is worth a SQLite commit. */
|
|
73105
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
72704
73106
|
};
|
|
72705
73107
|
/**
|
|
72706
73108
|
* integrations — system-scoped singleton capability for integration
|
|
@@ -73040,7 +73442,14 @@ var lawnMowerControlCapability = {
|
|
|
73040
73442
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
73041
73443
|
* slice for live activity + battery changes.
|
|
73042
73444
|
*/
|
|
73043
|
-
runtimeState: LawnMowerControlStatusSchema
|
|
73445
|
+
runtimeState: LawnMowerControlStatusSchema,
|
|
73446
|
+
/**
|
|
73447
|
+
* Runtime-state durability: **session** — as `vacuum-control`.
|
|
73448
|
+
*
|
|
73449
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
73450
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
73451
|
+
*/
|
|
73452
|
+
durability: "session"
|
|
73044
73453
|
};
|
|
73045
73454
|
/**
|
|
73046
73455
|
* local-network — hub-only singleton.
|
|
@@ -73246,7 +73655,17 @@ var lockControlCapability = {
|
|
|
73246
73655
|
* read `state` and disable themselves during `locking`/`unlocking`
|
|
73247
73656
|
* transitions.
|
|
73248
73657
|
*/
|
|
73249
|
-
runtimeState: LockControlStatusSchema
|
|
73658
|
+
runtimeState: LockControlStatusSchema,
|
|
73659
|
+
/**
|
|
73660
|
+
* Runtime-state durability: **restored** — a lock left locked must still read locked.
|
|
73661
|
+
*
|
|
73662
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
73663
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
73664
|
+
*/
|
|
73665
|
+
durability: "restored",
|
|
73666
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
73667
|
+
* whether persisting is worth a SQLite commit. */
|
|
73668
|
+
volatileStateFields: ["lastChangedAt"]
|
|
73250
73669
|
};
|
|
73251
73670
|
/**
|
|
73252
73671
|
* Media-player cap. Models HA `media_player.*` (Sonos, Chromecast,
|
|
@@ -73408,7 +73827,14 @@ var mediaPlayerCapability = {
|
|
|
73408
73827
|
* full slice for live now-playing, volume, and progress updates
|
|
73409
73828
|
* without polling.
|
|
73410
73829
|
*/
|
|
73411
|
-
runtimeState: MediaPlayerStatusSchema
|
|
73830
|
+
runtimeState: MediaPlayerStatusSchema,
|
|
73831
|
+
/**
|
|
73832
|
+
* Runtime-state durability: **session** — a restored transport position describes a playback that stopped when the hub did.
|
|
73833
|
+
*
|
|
73834
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
73835
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
73836
|
+
*/
|
|
73837
|
+
durability: "session"
|
|
73412
73838
|
};
|
|
73413
73839
|
/**
|
|
73414
73840
|
* mesh-network — collection cap for mesh-VPN providers.
|
|
@@ -73672,7 +74098,14 @@ onMotionChanged: { data: MotionOnMotionChangedDataSchema } },
|
|
|
73672
74098
|
* `device.state.motion.value`. Reads never invoke the provider, so
|
|
73673
74099
|
* UIs and other addons can poll the cached state safely.
|
|
73674
74100
|
*/
|
|
73675
|
-
runtimeState: MotionStatusSchema
|
|
74101
|
+
runtimeState: MotionStatusSchema,
|
|
74102
|
+
/**
|
|
74103
|
+
* Runtime-state durability: **session** — self-clearing by construction (`autoClearAfterMs`); a restored `detected: true` is a frozen event, and the next frame re-publishes the real one.
|
|
74104
|
+
*
|
|
74105
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
74106
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
74107
|
+
*/
|
|
74108
|
+
durability: "session"
|
|
73676
74109
|
};
|
|
73677
74110
|
/**
|
|
73678
74111
|
* Motion-trigger toggle for accessory devices.
|
|
@@ -73737,7 +74170,14 @@ var motionTriggerCapability = {
|
|
|
73737
74170
|
schema: MotionTriggerStatusSchema,
|
|
73738
74171
|
kind: "command-driven"
|
|
73739
74172
|
},
|
|
73740
|
-
runtimeState: MotionTriggerRuntimeStateSchema
|
|
74173
|
+
runtimeState: MotionTriggerRuntimeStateSchema,
|
|
74174
|
+
/**
|
|
74175
|
+
* Runtime-state durability: **session** — the authority for motion-trigger enablement is the provider's own config; the slice is a mirror of it, re-published on connect.
|
|
74176
|
+
*
|
|
74177
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
74178
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
74179
|
+
*/
|
|
74180
|
+
durability: "session"
|
|
73741
74181
|
};
|
|
73742
74182
|
/**
|
|
73743
74183
|
* Motion-zones share the same MaskShape vocabulary as privacy-mask — the
|
|
@@ -73804,7 +74244,17 @@ var motionZonesCapability = {
|
|
|
73804
74244
|
schema: MotionZoneStatusSchema,
|
|
73805
74245
|
kind: "poll"
|
|
73806
74246
|
},
|
|
73807
|
-
runtimeState: MotionZoneStatusSchema
|
|
74247
|
+
runtimeState: MotionZoneStatusSchema,
|
|
74248
|
+
/**
|
|
74249
|
+
* Runtime-state durability: **restored** — the 14 KB polygon list is the single largest slice on the fleet and has not changed since the operator drew it. Highest value per byte in the table.
|
|
74250
|
+
*
|
|
74251
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
74252
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
74253
|
+
*/
|
|
74254
|
+
durability: "restored",
|
|
74255
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
74256
|
+
* whether persisting is worth a SQLite commit. */
|
|
74257
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
73808
74258
|
};
|
|
73809
74259
|
/**
|
|
73810
74260
|
* On-camera AI object detection cap. Surfaces per-device the classes
|
|
@@ -73878,7 +74328,17 @@ var nativeObjectDetectionCapability = {
|
|
|
73878
74328
|
schema: NativeObjectDetectionStatusSchema,
|
|
73879
74329
|
kind: "push"
|
|
73880
74330
|
},
|
|
73881
|
-
runtimeState: NativeObjectDetectionRuntimeStateSchema
|
|
74331
|
+
runtimeState: NativeObjectDetectionRuntimeStateSchema,
|
|
74332
|
+
/**
|
|
74333
|
+
* Runtime-state durability: **restored** — `enabled` is an operator toggle on a camera whose refresh is a no-op and whose staleMs is Infinity. There is no hardware value to re-read — losing it loses the setting.
|
|
74334
|
+
*
|
|
74335
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
74336
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
74337
|
+
*/
|
|
74338
|
+
durability: "restored",
|
|
74339
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
74340
|
+
* whether persisting is worth a SQLite commit. */
|
|
74341
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
73882
74342
|
};
|
|
73883
74343
|
/**
|
|
73884
74344
|
* network-quality — system-scoped singleton capability tracking RTT,
|
|
@@ -74212,7 +74672,14 @@ onSent: { data: object({
|
|
|
74212
74672
|
* form reads `supports` to gate optional fields; history pane reads
|
|
74213
74673
|
* `lastSentAt` / `lastError` / `queueDepth`.
|
|
74214
74674
|
*/
|
|
74215
|
-
runtimeState: NotifierStatusSchema
|
|
74675
|
+
runtimeState: NotifierStatusSchema,
|
|
74676
|
+
/**
|
|
74677
|
+
* Runtime-state durability: **session** — live queue depth and last-send state; a restored queue depth describes a queue that no longer exists.
|
|
74678
|
+
*
|
|
74679
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
74680
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
74681
|
+
*/
|
|
74682
|
+
durability: "session"
|
|
74216
74683
|
};
|
|
74217
74684
|
/**
|
|
74218
74685
|
* Generic numeric sensor — last-resort fallback when no typed numeric
|
|
@@ -74255,7 +74722,17 @@ var numericSensorCapability = {
|
|
|
74255
74722
|
schema: NumericSensorStatusSchema,
|
|
74256
74723
|
kind: "push"
|
|
74257
74724
|
},
|
|
74258
|
-
runtimeState: NumericSensorStatusSchema
|
|
74725
|
+
runtimeState: NumericSensorStatusSchema,
|
|
74726
|
+
/**
|
|
74727
|
+
* Runtime-state durability: **restored** — polled value, low churn once the clock is excluded (251 of 669 writes were the clock alone); restoring it removes the cold window before the first poll.
|
|
74728
|
+
*
|
|
74729
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
74730
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
74731
|
+
*/
|
|
74732
|
+
durability: "restored",
|
|
74733
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
74734
|
+
* whether persisting is worth a SQLite commit. */
|
|
74735
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
74259
74736
|
};
|
|
74260
74737
|
/**
|
|
74261
74738
|
* Generic on-screen-display (video overlay) cap. Each camera exposes
|
|
@@ -74640,7 +75117,14 @@ var petFeederCapability = {
|
|
|
74640
75117
|
* the full slice via `device.state.petFeeder.value` and refresh on
|
|
74641
75118
|
* every poll without re-querying the provider.
|
|
74642
75119
|
*/
|
|
74643
|
-
runtimeState: PetFeederStatusSchema
|
|
75120
|
+
runtimeState: PetFeederStatusSchema,
|
|
75121
|
+
/**
|
|
75122
|
+
* Runtime-state durability: **session** — live appliance state re-published on connect.
|
|
75123
|
+
*
|
|
75124
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
75125
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
75126
|
+
*/
|
|
75127
|
+
durability: "session"
|
|
74644
75128
|
};
|
|
74645
75129
|
var VehicleSchema = object({
|
|
74646
75130
|
id: string(),
|
|
@@ -74952,7 +75436,17 @@ var powerMeterCapability = {
|
|
|
74952
75436
|
schema: PowerMeterStatusSchema,
|
|
74953
75437
|
kind: "push"
|
|
74954
75438
|
},
|
|
74955
|
-
runtimeState: PowerMeterStatusSchema
|
|
75439
|
+
runtimeState: PowerMeterStatusSchema,
|
|
75440
|
+
/**
|
|
75441
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`; `kwhTotal` is an accumulator whose restored value is the baseline.
|
|
75442
|
+
*
|
|
75443
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
75444
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
75445
|
+
*/
|
|
75446
|
+
durability: "restored",
|
|
75447
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
75448
|
+
* whether persisting is worth a SQLite commit. */
|
|
75449
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
74956
75450
|
};
|
|
74957
75451
|
/**
|
|
74958
75452
|
* Presence cap. Models HA `person.*` and `device_tracker.*` entities
|
|
@@ -75009,7 +75503,17 @@ var presenceCapability = {
|
|
|
75009
75503
|
* the map pin is rendered (use `DeviceFeature.PresenceGps` for the
|
|
75010
75504
|
* pre-fetch fast-path check).
|
|
75011
75505
|
*/
|
|
75012
|
-
runtimeState: PresenceStatusSchema
|
|
75506
|
+
runtimeState: PresenceStatusSchema,
|
|
75507
|
+
/**
|
|
75508
|
+
* Runtime-state durability: **restored** — occupancy-relevant: the restored state is what an occupancy rule compares the first post-restart observation against.
|
|
75509
|
+
*
|
|
75510
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
75511
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
75512
|
+
*/
|
|
75513
|
+
durability: "restored",
|
|
75514
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
75515
|
+
* whether persisting is worth a SQLite commit. */
|
|
75516
|
+
volatileStateFields: ["lastChangedAt"]
|
|
75013
75517
|
};
|
|
75014
75518
|
/**
|
|
75015
75519
|
* Atmospheric pressure reading in hectopascals. Drives Home Assistant
|
|
@@ -75045,7 +75549,17 @@ var pressureSensorCapability = {
|
|
|
75045
75549
|
schema: PressureSensorStatusSchema,
|
|
75046
75550
|
kind: "push"
|
|
75047
75551
|
},
|
|
75048
|
-
runtimeState: PressureSensorStatusSchema
|
|
75552
|
+
runtimeState: PressureSensorStatusSchema,
|
|
75553
|
+
/**
|
|
75554
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`.
|
|
75555
|
+
*
|
|
75556
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
75557
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
75558
|
+
*/
|
|
75559
|
+
durability: "restored",
|
|
75560
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
75561
|
+
* whether persisting is worth a SQLite commit. */
|
|
75562
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
75049
75563
|
};
|
|
75050
75564
|
/**
|
|
75051
75565
|
* PRIVACY — what the camera deliberately does not capture. Two planes:
|
|
@@ -75175,7 +75689,17 @@ var privacyMaskCapability = {
|
|
|
75175
75689
|
schema: PrivacyMaskStatusSchema,
|
|
75176
75690
|
kind: "poll"
|
|
75177
75691
|
},
|
|
75178
|
-
runtimeState: PrivacyMaskStatusSchema
|
|
75692
|
+
runtimeState: PrivacyMaskStatusSchema,
|
|
75693
|
+
/**
|
|
75694
|
+
* Runtime-state durability: **restored** — operator-drawn regions, zero real churn — 22 writes in 25 minutes, every one of them the clock.
|
|
75695
|
+
*
|
|
75696
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
75697
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
75698
|
+
*/
|
|
75699
|
+
durability: "restored",
|
|
75700
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
75701
|
+
* whether persisting is worth a SQLite commit. */
|
|
75702
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
75179
75703
|
};
|
|
75180
75704
|
var PtzPresetSchema = object({
|
|
75181
75705
|
id: string(),
|
|
@@ -75341,7 +75865,14 @@ var ptzAutotrackCapability = {
|
|
|
75341
75865
|
* fetch / cache / fallback logic out of the four cap methods —
|
|
75342
75866
|
* they become trampolines over `runtimeState`.
|
|
75343
75867
|
*/
|
|
75344
|
-
runtimeState: PtzAutotrackRuntimeStateSchema
|
|
75868
|
+
runtimeState: PtzAutotrackRuntimeStateSchema,
|
|
75869
|
+
/**
|
|
75870
|
+
* Runtime-state durability: **session** — mirrors the camera's own autotrack config, re-read on connect.
|
|
75871
|
+
*
|
|
75872
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
75873
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
75874
|
+
*/
|
|
75875
|
+
durability: "session"
|
|
75345
75876
|
};
|
|
75346
75877
|
DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
|
|
75347
75878
|
kind: "mutation",
|
|
@@ -75991,7 +76522,14 @@ var sceneMonitorCapability = {
|
|
|
75991
76522
|
schema: SceneMonitorStatusSchema,
|
|
75992
76523
|
kind: "push"
|
|
75993
76524
|
},
|
|
75994
|
-
runtimeState: SceneMonitorStatusSchema
|
|
76525
|
+
runtimeState: SceneMonitorStatusSchema,
|
|
76526
|
+
/**
|
|
76527
|
+
* Runtime-state durability: **session** — re-derived from the current scene on the next evaluation.
|
|
76528
|
+
*
|
|
76529
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
76530
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
76531
|
+
*/
|
|
76532
|
+
durability: "session"
|
|
75995
76533
|
};
|
|
75996
76534
|
/**
|
|
75997
76535
|
* Per-stage gating mode applied to the zones a rule references.
|
|
@@ -76135,7 +76673,14 @@ var scriptRunnerCapability = {
|
|
|
76135
76673
|
* `isRunning` to render a spinner during execution and surfaces
|
|
76136
76674
|
* `lastError` / `lastRunSuccess` in the recent-runs panel.
|
|
76137
76675
|
*/
|
|
76138
|
-
runtimeState: ScriptRunnerStatusSchema
|
|
76676
|
+
runtimeState: ScriptRunnerStatusSchema,
|
|
76677
|
+
/**
|
|
76678
|
+
* Runtime-state durability: **session** — a restored `isRunning: true` describes a process that died with the previous hub.
|
|
76679
|
+
*
|
|
76680
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
76681
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
76682
|
+
*/
|
|
76683
|
+
durability: "session"
|
|
76139
76684
|
};
|
|
76140
76685
|
/**
|
|
76141
76686
|
* Smoke alarm sensor — boolean "is smoke currently detected" with
|
|
@@ -76162,7 +76707,17 @@ var smokeCapability = {
|
|
|
76162
76707
|
schema: SmokeStatusSchema,
|
|
76163
76708
|
kind: "push"
|
|
76164
76709
|
},
|
|
76165
|
-
runtimeState: SmokeStatusSchema
|
|
76710
|
+
runtimeState: SmokeStatusSchema,
|
|
76711
|
+
/**
|
|
76712
|
+
* Runtime-state durability: **restored** — a safety sensor must not read "clear" merely because the hub restarted.
|
|
76713
|
+
*
|
|
76714
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
76715
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
76716
|
+
*/
|
|
76717
|
+
durability: "restored",
|
|
76718
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
76719
|
+
* whether persisting is worth a SQLite commit. */
|
|
76720
|
+
volatileStateFields: ["lastChangedAt"]
|
|
76166
76721
|
};
|
|
76167
76722
|
/**
|
|
76168
76723
|
* One publishable camera stream as its OWNING PROVIDER describes it — the same
|
|
@@ -76335,7 +76890,17 @@ var streamParamsCapability = {
|
|
|
76335
76890
|
schema: StreamParamsStatusSchema,
|
|
76336
76891
|
kind: "poll"
|
|
76337
76892
|
},
|
|
76338
|
-
runtimeState: StreamParamsStatusSchema
|
|
76893
|
+
runtimeState: StreamParamsStatusSchema,
|
|
76894
|
+
/**
|
|
76895
|
+
* Runtime-state durability: **restored** — operator-set encoder profile; mutation-driven.
|
|
76896
|
+
*
|
|
76897
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
76898
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
76899
|
+
*/
|
|
76900
|
+
durability: "restored",
|
|
76901
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
76902
|
+
* whether persisting is worth a SQLite commit. */
|
|
76903
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
76339
76904
|
};
|
|
76340
76905
|
/**
|
|
76341
76906
|
* Generic on/off switch cap for accessory children (siren, floodlight,
|
|
@@ -76381,6 +76946,16 @@ var switchCapability = {
|
|
|
76381
76946
|
* not need to re-query the provider after a setState mutation.
|
|
76382
76947
|
*/
|
|
76383
76948
|
runtimeState: SwitchStatusSchema,
|
|
76949
|
+
/**
|
|
76950
|
+
* Runtime-state durability: **restored** — device state an operator reads as authoritative; 55 devices, transition-driven.
|
|
76951
|
+
*
|
|
76952
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
76953
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
76954
|
+
*/
|
|
76955
|
+
durability: "restored",
|
|
76956
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
76957
|
+
* whether persisting is worth a SQLite commit. */
|
|
76958
|
+
volatileStateFields: ["lastChangedAt"],
|
|
76384
76959
|
settings: { bindings: [{
|
|
76385
76960
|
kind: "scalar",
|
|
76386
76961
|
statusPath: "on",
|
|
@@ -76460,7 +77035,17 @@ var tamperCapability = {
|
|
|
76460
77035
|
schema: TamperStatusSchema,
|
|
76461
77036
|
kind: "push"
|
|
76462
77037
|
},
|
|
76463
|
-
runtimeState: TamperStatusSchema
|
|
77038
|
+
runtimeState: TamperStatusSchema,
|
|
77039
|
+
/**
|
|
77040
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
77041
|
+
*
|
|
77042
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
77043
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
77044
|
+
*/
|
|
77045
|
+
durability: "restored",
|
|
77046
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
77047
|
+
* whether persisting is worth a SQLite commit. */
|
|
77048
|
+
volatileStateFields: ["lastChangedAt"]
|
|
76464
77049
|
};
|
|
76465
77050
|
/**
|
|
76466
77051
|
* Single-metric temperature reading. Drives Home Assistant `sensor`
|
|
@@ -76505,7 +77090,17 @@ var temperatureSensorCapability = {
|
|
|
76505
77090
|
schema: TemperatureSensorStatusSchema,
|
|
76506
77091
|
kind: "push"
|
|
76507
77092
|
},
|
|
76508
|
-
runtimeState: TemperatureSensorStatusSchema
|
|
77093
|
+
runtimeState: TemperatureSensorStatusSchema,
|
|
77094
|
+
/**
|
|
77095
|
+
* Runtime-state durability: **restored** — as `numeric-sensor` (69 of 125 writes were the clock alone).
|
|
77096
|
+
*
|
|
77097
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
77098
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
77099
|
+
*/
|
|
77100
|
+
durability: "restored",
|
|
77101
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
77102
|
+
* whether persisting is worth a SQLite commit. */
|
|
77103
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
76509
77104
|
};
|
|
76510
77105
|
/**
|
|
76511
77106
|
* toast — system-scoped singleton capability that streams toast
|
|
@@ -76574,7 +77169,14 @@ var updateCapability = {
|
|
|
76574
77169
|
schema: UpdateStatusSchema,
|
|
76575
77170
|
kind: "poll"
|
|
76576
77171
|
},
|
|
76577
|
-
runtimeState: UpdateStatusSchema
|
|
77172
|
+
runtimeState: UpdateStatusSchema,
|
|
77173
|
+
/**
|
|
77174
|
+
* Runtime-state durability: **session** — a restored `inProgress: true` describes an update that is no longer running; versions are re-probed at boot.
|
|
77175
|
+
*
|
|
77176
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
77177
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
77178
|
+
*/
|
|
77179
|
+
durability: "session"
|
|
76578
77180
|
};
|
|
76579
77181
|
var UserSummarySchema = object({
|
|
76580
77182
|
id: string(),
|
|
@@ -76908,7 +77510,14 @@ var vacuumControlCapability = {
|
|
|
76908
77510
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
76909
77511
|
* slice for live state + battery + fan-speed changes.
|
|
76910
77512
|
*/
|
|
76911
|
-
runtimeState: VacuumControlStatusSchema
|
|
77513
|
+
runtimeState: VacuumControlStatusSchema,
|
|
77514
|
+
/**
|
|
77515
|
+
* Runtime-state durability: **session** — as `media-player` — a restored `state: cleaning` is a robot that is not cleaning.
|
|
77516
|
+
*
|
|
77517
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
77518
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
77519
|
+
*/
|
|
77520
|
+
durability: "session"
|
|
76912
77521
|
};
|
|
76913
77522
|
var ValveStatusSchema = object({
|
|
76914
77523
|
/** Lifecycle state of the valve. */
|
|
@@ -76960,7 +77569,14 @@ var valveCapability = {
|
|
|
76960
77569
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
76961
77570
|
* slice for live position changes during a move.
|
|
76962
77571
|
*/
|
|
76963
|
-
runtimeState: ValveStatusSchema
|
|
77572
|
+
runtimeState: ValveStatusSchema,
|
|
77573
|
+
/**
|
|
77574
|
+
* Runtime-state durability: **session** — as `brightness`.
|
|
77575
|
+
*
|
|
77576
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
77577
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
77578
|
+
*/
|
|
77579
|
+
durability: "session"
|
|
76964
77580
|
};
|
|
76965
77581
|
/**
|
|
76966
77582
|
* Vibration / shake / impact sensor. Drives Home Assistant
|
|
@@ -76982,7 +77598,17 @@ var vibrationCapability = {
|
|
|
76982
77598
|
schema: VibrationStatusSchema,
|
|
76983
77599
|
kind: "push"
|
|
76984
77600
|
},
|
|
76985
|
-
runtimeState: VibrationStatusSchema
|
|
77601
|
+
runtimeState: VibrationStatusSchema,
|
|
77602
|
+
/**
|
|
77603
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
77604
|
+
*
|
|
77605
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
77606
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
77607
|
+
*/
|
|
77608
|
+
durability: "restored",
|
|
77609
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
77610
|
+
* whether persisting is worth a SQLite commit. */
|
|
77611
|
+
volatileStateFields: ["lastChangedAt"]
|
|
76986
77612
|
};
|
|
76987
77613
|
/**
|
|
76988
77614
|
* Water heater / boiler cap. Models HA `water_heater.*` entities — a
|
|
@@ -77056,7 +77682,14 @@ var waterHeaterCapability = {
|
|
|
77056
77682
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
77057
77683
|
* slice for live temperature / mode / away changes.
|
|
77058
77684
|
*/
|
|
77059
|
-
runtimeState: WaterHeaterStatusSchema
|
|
77685
|
+
runtimeState: WaterHeaterStatusSchema,
|
|
77686
|
+
/**
|
|
77687
|
+
* Runtime-state durability: **session** — as `climate-control`.
|
|
77688
|
+
*
|
|
77689
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
77690
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
77691
|
+
*/
|
|
77692
|
+
durability: "session"
|
|
77060
77693
|
};
|
|
77061
77694
|
/**
|
|
77062
77695
|
* Weather provider cap. Models HA `weather.*` entities — a read-only
|
|
@@ -77115,7 +77748,14 @@ var weatherCapability = {
|
|
|
77115
77748
|
* Runtime-state slice — mirrored by the kernel. The UI reads the
|
|
77116
77749
|
* current conditions directly from the slice on each weather push.
|
|
77117
77750
|
*/
|
|
77118
|
-
runtimeState: WeatherStatusSchema
|
|
77751
|
+
runtimeState: WeatherStatusSchema,
|
|
77752
|
+
/**
|
|
77753
|
+
* Runtime-state durability: **session** — a forecast is stale the moment the hub is down; the provider re-fetches on connect.
|
|
77754
|
+
*
|
|
77755
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
77756
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
77757
|
+
*/
|
|
77758
|
+
durability: "session"
|
|
77119
77759
|
};
|
|
77120
77760
|
/**
|
|
77121
77761
|
* Per-zone occupancy aggregation produced by the analytics frame
|
|
@@ -77277,7 +77917,14 @@ var zoneAnalyticsCapability = {
|
|
|
77277
77917
|
* automatically; the explicit `getCurrentSnapshot` cap method is
|
|
77278
77918
|
* still useful for one-off polls without a subscription.
|
|
77279
77919
|
*/
|
|
77280
|
-
runtimeState: CameraOccupancySnapshotSchema
|
|
77920
|
+
runtimeState: CameraOccupancySnapshotSchema,
|
|
77921
|
+
/**
|
|
77922
|
+
* Runtime-state durability: **session** — per-frame analytics; with `audio-metrics` it is ~90 % of the offered write rate. Re-derived on the next frame.
|
|
77923
|
+
*
|
|
77924
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
77925
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
77926
|
+
*/
|
|
77927
|
+
durability: "session"
|
|
77281
77928
|
};
|
|
77282
77929
|
/**
|
|
77283
77930
|
* Stages a {@link ZoneRule} can apply to. Discriminator on the rules
|
|
@@ -77355,7 +78002,14 @@ var zoneRulesCapability = {
|
|
|
77355
78002
|
motion: array(ZoneRuleSchema).readonly(),
|
|
77356
78003
|
detection: array(ZoneRuleSchema).readonly(),
|
|
77357
78004
|
package: array(ZoneRuleSchema).readonly()
|
|
77358
|
-
})
|
|
78005
|
+
}),
|
|
78006
|
+
/**
|
|
78007
|
+
* Runtime-state durability: **restored** — operator intent, mutation-only, same argument as `zones`.
|
|
78008
|
+
*
|
|
78009
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
78010
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
78011
|
+
*/
|
|
78012
|
+
durability: "restored"
|
|
77359
78013
|
};
|
|
77360
78014
|
/**
|
|
77361
78015
|
* Accessory device helpers — shared across drivers.
|
|
@@ -84042,6 +84696,7 @@ Object.freeze({
|
|
|
84042
84696
|
"network-access": "ingress",
|
|
84043
84697
|
"smtp-provider": "email"
|
|
84044
84698
|
});
|
|
84699
|
+
new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
|
|
84045
84700
|
new Set(["devices", "classes"]);
|
|
84046
84701
|
/**
|
|
84047
84702
|
* TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
|