@camstack/addon-terminal 0.1.18 → 0.1.19
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 +656 -69
- package/dist/addon.mjs +656 -69
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -10856,7 +10856,14 @@ var cameraStreamsCapability = {
|
|
|
10856
10856
|
low: string().optional()
|
|
10857
10857
|
}),
|
|
10858
10858
|
lastChangedAt: number()
|
|
10859
|
-
})
|
|
10859
|
+
}),
|
|
10860
|
+
/**
|
|
10861
|
+
* 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.
|
|
10862
|
+
*
|
|
10863
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
10864
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
10865
|
+
*/
|
|
10866
|
+
durability: "session"
|
|
10860
10867
|
};
|
|
10861
10868
|
/** Where a block runs. The operator chooses — a block driving a device on an
|
|
10862
10869
|
* agent is the reason placement is not fixed to the hub. */
|
|
@@ -11417,6 +11424,13 @@ var deviceDiscoveryCapability = {
|
|
|
11417
11424
|
kind: "poll"
|
|
11418
11425
|
},
|
|
11419
11426
|
runtimeState: DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int().nonnegative() }),
|
|
11427
|
+
/**
|
|
11428
|
+
* Runtime-state durability: **session** — 5.7 KB of scan output on the largest device, fully re-derivable by re-scanning.
|
|
11429
|
+
*
|
|
11430
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
11431
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
11432
|
+
*/
|
|
11433
|
+
durability: "session",
|
|
11420
11434
|
methods: {
|
|
11421
11435
|
/**
|
|
11422
11436
|
* Snapshot of the current `discovered` list. Returns the
|
|
@@ -13261,7 +13275,23 @@ var NotificationActionSchema = object({
|
|
|
13261
13275
|
* else — see `notification-center/action-token.ts` for what that does and
|
|
13262
13276
|
* does not buy.
|
|
13263
13277
|
*/
|
|
13264
|
-
destructive: boolean().optional()
|
|
13278
|
+
destructive: boolean().optional(),
|
|
13279
|
+
/**
|
|
13280
|
+
* How the tap should REACH the url.
|
|
13281
|
+
*
|
|
13282
|
+
* `navigate` (absent, and every button authored before this field) opens it:
|
|
13283
|
+
* the phone leaves the notification and shows whatever the callback returns.
|
|
13284
|
+
* That is right for a button whose answer the operator wants to read.
|
|
13285
|
+
*
|
|
13286
|
+
* `background` fires it as a POST and stays put. It exists for the buttons
|
|
13287
|
+
* whose whole point is not to interrupt — "silence this for 30 minutes" is
|
|
13288
|
+
* an answer to the notification, and being thrown into a browser tab to
|
|
13289
|
+
* confirm it costs more attention than the notification did. A backend that
|
|
13290
|
+
* cannot do a background call renders it as an ordinary link (the adapters
|
|
13291
|
+
* fall back rather than dropping the button), so this is a preference, never
|
|
13292
|
+
* a requirement.
|
|
13293
|
+
*/
|
|
13294
|
+
mode: _enum(["navigate", "background"]).optional()
|
|
13265
13295
|
});
|
|
13266
13296
|
/**
|
|
13267
13297
|
* The canonical notification. `body` is the only hard field (Apprise model).
|
|
@@ -14113,7 +14143,17 @@ var alarmPanelCapability = {
|
|
|
14113
14143
|
* full slice; renders an arm button per `availableModes` entry and
|
|
14114
14144
|
* a PIN field iff `requiresCode === true`.
|
|
14115
14145
|
*/
|
|
14116
|
-
runtimeState: AlarmPanelStatusSchema
|
|
14146
|
+
runtimeState: AlarmPanelStatusSchema,
|
|
14147
|
+
/**
|
|
14148
|
+
* Runtime-state durability: **restored** — armed state is the one thing a panel must not lose across a restart.
|
|
14149
|
+
*
|
|
14150
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
14151
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
14152
|
+
*/
|
|
14153
|
+
durability: "restored",
|
|
14154
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
14155
|
+
* whether persisting is worth a SQLite commit. */
|
|
14156
|
+
volatileStateFields: ["lastChangedAt"]
|
|
14117
14157
|
};
|
|
14118
14158
|
/**
|
|
14119
14159
|
* Shared geometry vocabulary for on-frame shape caps — privacy-mask,
|
|
@@ -14290,6 +14330,9 @@ var NcSystemEventConditionSchema = object({
|
|
|
14290
14330
|
nodeIds: array(string().min(1)).min(1).optional(),
|
|
14291
14331
|
packageNames: array(string().min(1)).min(1).optional()
|
|
14292
14332
|
});
|
|
14333
|
+
/** Hard ceiling on a window (24h). A snooze that could not expire would be an
|
|
14334
|
+
* outage the operator asked for once and forgot. */
|
|
14335
|
+
var NC_SNOOZE_MAX_MINUTES = 1440;
|
|
14293
14336
|
/** Weekly schedule — OR of windows; absence on the rule = always active. */
|
|
14294
14337
|
var NcScheduleSchema = object({
|
|
14295
14338
|
windows: array(object({
|
|
@@ -14666,15 +14709,15 @@ var NcConditionsSchema = object({
|
|
|
14666
14709
|
* (an `immediate` rule naming an `audio-*` class, one notification per
|
|
14667
14710
|
* classified sample) stays exactly as it was for rules that already use it.
|
|
14668
14711
|
*
|
|
14669
|
-
*
|
|
14670
|
-
* rather than an
|
|
14671
|
-
* (`camstack/src/data/notification-center.ts`, guarded by
|
|
14672
|
-
* `scripts/check-viewer-condition-mirror.ts`) and its rule editor
|
|
14712
|
+
* In {@link NC_CONDITION_CATALOG} since P2, and the ORDER it got there is the
|
|
14713
|
+
* rule rather than an accident: the viewer mirrors the descriptor enums BY
|
|
14714
|
+
* HAND (`camstack/src/data/notification-center.ts`, guarded by
|
|
14715
|
+
* `scripts/check-viewer-condition-mirror.ts`) and its rule editor strips the
|
|
14673
14716
|
* condition fields it does not know when a rule is saved from the phone.
|
|
14674
14717
|
* Publishing an editor for a condition the app cannot round-trip is how an
|
|
14675
|
-
* operator loses a rule's conditions by opening it — so the
|
|
14676
|
-
*
|
|
14677
|
-
*
|
|
14718
|
+
* operator loses a rule's conditions by opening it — so the viewer mirror
|
|
14719
|
+
* (P3, shipped) went FIRST, and the descriptor an editor renders from
|
|
14720
|
+
* follows here.
|
|
14678
14721
|
*/
|
|
14679
14722
|
audio: NcAudioConditionSchema.optional()
|
|
14680
14723
|
});
|
|
@@ -14910,6 +14953,30 @@ var NcRuleInputSchema = object({
|
|
|
14910
14953
|
*/
|
|
14911
14954
|
snoozeAllowGlobal: boolean().optional(),
|
|
14912
14955
|
/**
|
|
14956
|
+
* The snooze durations THIS rule's notification offers as buttons, in
|
|
14957
|
+
* minutes.
|
|
14958
|
+
*
|
|
14959
|
+
* Three states, and all three are distinct — which is exactly why this is
|
|
14960
|
+
* `.optional()` and never `.default()`. A Zod default does not run on the
|
|
14961
|
+
* addon cap path (three production failures in one day), so a schema default
|
|
14962
|
+
* would collapse the first two:
|
|
14963
|
+
*
|
|
14964
|
+
* | value | meaning |
|
|
14965
|
+
* | --- | --- |
|
|
14966
|
+
* | absent | the operator never said ⇒ {@link NC_DEFAULT_SNOOZE_MINUTES} |
|
|
14967
|
+
* | `[]` | **no snooze buttons on this rule** — the explicit override |
|
|
14968
|
+
* | a list | these choices, de-duplicated and sorted, at most four |
|
|
14969
|
+
*
|
|
14970
|
+
* `.max(4)` because the notifier's own action budget is small (ntfy allows
|
|
14971
|
+
* three buttons in total) and a rule that spent it all on snooze choices
|
|
14972
|
+
* would push its own tap-through actions off the notification.
|
|
14973
|
+
*
|
|
14974
|
+
* An empty list is NOT an alarm exemption: a rule the alarm is about, or
|
|
14975
|
+
* that arms the panel, is exempt automatically and cannot be silenced by a
|
|
14976
|
+
* window from anywhere (D133).
|
|
14977
|
+
*/
|
|
14978
|
+
snoozeOptions: array(number().int().min(1).max(NC_SNOOZE_MAX_MINUTES)).max(4).optional(),
|
|
14979
|
+
/**
|
|
14913
14980
|
* Devices this rule ACTUATES — arm the alarm, open a gate, turn on a light.
|
|
14914
14981
|
*
|
|
14915
14982
|
* This is what makes the rule set the alarm's trigger set without the alarm
|
|
@@ -15009,6 +15076,7 @@ var NcConditionDescriptorSchema = object({
|
|
|
15009
15076
|
"device",
|
|
15010
15077
|
"package",
|
|
15011
15078
|
"occupancy",
|
|
15079
|
+
"audio",
|
|
15012
15080
|
"system"
|
|
15013
15081
|
]),
|
|
15014
15082
|
label: string(),
|
|
@@ -15027,6 +15095,7 @@ var NcConditionDescriptorSchema = object({
|
|
|
15027
15095
|
"crossingSelect",
|
|
15028
15096
|
"polygonDraw",
|
|
15029
15097
|
"occupancy",
|
|
15098
|
+
"audio",
|
|
15030
15099
|
"deviceState",
|
|
15031
15100
|
"systemEvent"
|
|
15032
15101
|
]),
|
|
@@ -15178,7 +15247,20 @@ var NcSnoozeInputSchema = object({
|
|
|
15178
15247
|
ruleId: string().optional(),
|
|
15179
15248
|
/** Required when `scope: 'device'`. */
|
|
15180
15249
|
deviceId: number().int().optional(),
|
|
15181
|
-
|
|
15250
|
+
/**
|
|
15251
|
+
* Narrow the window to these subject classes — "the cat, not the person".
|
|
15252
|
+
*
|
|
15253
|
+
* ORTHOGONAL to `scope`, deliberately, and absent means EVERY class: that is
|
|
15254
|
+
* what every window authored before this field meant, so no persisted row
|
|
15255
|
+
* changes meaning and no client has to learn anything to keep working.
|
|
15256
|
+
*
|
|
15257
|
+
* It is what makes the window's real key `(deviceId, classes[])` and lets it
|
|
15258
|
+
* cross rules (D133): the operator points at a camera and a kind of thing,
|
|
15259
|
+
* not at whichever of their four rules happened to produce the notification
|
|
15260
|
+
* they are dismissing.
|
|
15261
|
+
*/
|
|
15262
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
15263
|
+
durationMinutes: number().int().min(1).max(NC_SNOOZE_MAX_MINUTES),
|
|
15182
15264
|
/**
|
|
15183
15265
|
* Silence this for EVERY recipient, not just the caller. Permission is
|
|
15184
15266
|
* checked server-side (the rule's `snoozeAllowGlobal`, or admin for the
|
|
@@ -15203,6 +15285,10 @@ var NcSnoozeSchema = object({
|
|
|
15203
15285
|
scope: NcSnoozeScopeSchema,
|
|
15204
15286
|
ruleId: string().optional(),
|
|
15205
15287
|
deviceId: number().int().optional(),
|
|
15288
|
+
/** Subject classes this window covers. ABSENT = every class — see
|
|
15289
|
+
* {@link NcSnoozeInputSchema.shape.classes}. Lives in the JSON blob and has
|
|
15290
|
+
* no SQLite column: nothing queries a window by class. */
|
|
15291
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
15206
15292
|
startedAt: number(),
|
|
15207
15293
|
/** Exclusive: at exactly this instant the snooze is over. Expiry is a
|
|
15208
15294
|
* COMPARISON, not a job — no sweeper can leave the operator silenced. */
|
|
@@ -17303,7 +17389,14 @@ var zonesCapability = {
|
|
|
17303
17389
|
* handle. Slice shape is `{ zones: Zone[] }` so future extensions
|
|
17304
17390
|
* (e.g. zone groupings) can sit alongside the polygon list.
|
|
17305
17391
|
*/
|
|
17306
|
-
runtimeState: object({ zones: array(ZoneSchema).readonly() })
|
|
17392
|
+
runtimeState: object({ zones: array(ZoneSchema).readonly() }),
|
|
17393
|
+
/**
|
|
17394
|
+
* 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.
|
|
17395
|
+
*
|
|
17396
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
17397
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
17398
|
+
*/
|
|
17399
|
+
durability: "restored"
|
|
17307
17400
|
};
|
|
17308
17401
|
/**
|
|
17309
17402
|
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
@@ -20240,7 +20333,17 @@ var airQualitySensorCapability = {
|
|
|
20240
20333
|
schema: AirQualitySensorStatusSchema,
|
|
20241
20334
|
kind: "push"
|
|
20242
20335
|
},
|
|
20243
|
-
runtimeState: AirQualitySensorStatusSchema
|
|
20336
|
+
runtimeState: AirQualitySensorStatusSchema,
|
|
20337
|
+
/**
|
|
20338
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`.
|
|
20339
|
+
*
|
|
20340
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
20341
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
20342
|
+
*/
|
|
20343
|
+
durability: "restored",
|
|
20344
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
20345
|
+
* whether persisting is worth a SQLite commit. */
|
|
20346
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
20244
20347
|
};
|
|
20245
20348
|
/**
|
|
20246
20349
|
* Ambient illuminance reading in lux. Drives Home Assistant `sensor`
|
|
@@ -20272,7 +20375,17 @@ var ambientLightSensorCapability = {
|
|
|
20272
20375
|
schema: AmbientLightSensorStatusSchema,
|
|
20273
20376
|
kind: "push"
|
|
20274
20377
|
},
|
|
20275
|
-
runtimeState: AmbientLightSensorStatusSchema
|
|
20378
|
+
runtimeState: AmbientLightSensorStatusSchema,
|
|
20379
|
+
/**
|
|
20380
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`.
|
|
20381
|
+
*
|
|
20382
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
20383
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
20384
|
+
*/
|
|
20385
|
+
durability: "restored",
|
|
20386
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
20387
|
+
* whether persisting is worth a SQLite commit. */
|
|
20388
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
20276
20389
|
};
|
|
20277
20390
|
/**
|
|
20278
20391
|
* Per-class audio metrics aggregated over a sliding window.
|
|
@@ -20390,7 +20503,14 @@ var audioMetricsCapability = {
|
|
|
20390
20503
|
}), AudioMetricsHistorySchema)
|
|
20391
20504
|
},
|
|
20392
20505
|
/** Reactive runtime-state mirror — live `device.state.audioMetrics.value`. */
|
|
20393
|
-
runtimeState: AudioMetricsSnapshotSchema
|
|
20506
|
+
runtimeState: AudioMetricsSnapshotSchema,
|
|
20507
|
+
/**
|
|
20508
|
+
* 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.
|
|
20509
|
+
*
|
|
20510
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
20511
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
20512
|
+
*/
|
|
20513
|
+
durability: "session"
|
|
20394
20514
|
};
|
|
20395
20515
|
/**
|
|
20396
20516
|
* Automation-control cap. Models HA `automation.*` entities on
|
|
@@ -20452,7 +20572,14 @@ var automationControlCapability = {
|
|
|
20452
20572
|
* reads `enabled` (toggle) + `isRunning` (spinner) + `lastError`
|
|
20453
20573
|
* (badge) directly.
|
|
20454
20574
|
*/
|
|
20455
|
-
runtimeState: AutomationControlStatusSchema
|
|
20575
|
+
runtimeState: AutomationControlStatusSchema,
|
|
20576
|
+
/**
|
|
20577
|
+
* 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.
|
|
20578
|
+
*
|
|
20579
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
20580
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
20581
|
+
*/
|
|
20582
|
+
durability: "session"
|
|
20456
20583
|
};
|
|
20457
20584
|
/**
|
|
20458
20585
|
* Battery status snapshot. Emitted by providers whose device is
|
|
@@ -20558,7 +20685,17 @@ onStatusChanged: { data: object({
|
|
|
20558
20685
|
* via `device.runtimeState.getCapState('battery')` regardless of
|
|
20559
20686
|
* the underlying driver.
|
|
20560
20687
|
*/
|
|
20561
|
-
runtimeState: BatteryStatusSchema
|
|
20688
|
+
runtimeState: BatteryStatusSchema,
|
|
20689
|
+
/**
|
|
20690
|
+
* 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.
|
|
20691
|
+
*
|
|
20692
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
20693
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
20694
|
+
*/
|
|
20695
|
+
durability: "restored",
|
|
20696
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
20697
|
+
* whether persisting is worth a SQLite commit. */
|
|
20698
|
+
volatileStateFields: ["lastUpdated"]
|
|
20562
20699
|
};
|
|
20563
20700
|
/**
|
|
20564
20701
|
* Generic boolean sensor — last-resort fallback when no domain-
|
|
@@ -20587,7 +20724,17 @@ var binaryCapability = {
|
|
|
20587
20724
|
schema: BinaryStatusSchema,
|
|
20588
20725
|
kind: "push"
|
|
20589
20726
|
},
|
|
20590
|
-
runtimeState: BinaryStatusSchema
|
|
20727
|
+
runtimeState: BinaryStatusSchema,
|
|
20728
|
+
/**
|
|
20729
|
+
* Runtime-state durability: **restored** — transition-driven sensor state; the restored value gives the boot comparison.
|
|
20730
|
+
*
|
|
20731
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
20732
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
20733
|
+
*/
|
|
20734
|
+
durability: "restored",
|
|
20735
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
20736
|
+
* whether persisting is worth a SQLite commit. */
|
|
20737
|
+
volatileStateFields: ["lastChangedAt"]
|
|
20591
20738
|
};
|
|
20592
20739
|
/**
|
|
20593
20740
|
* Dimmable-light brightness control. Co-exists with `switch` on the
|
|
@@ -20640,7 +20787,14 @@ onBrightnessChanged: { data: object({
|
|
|
20640
20787
|
* by the kernel. Read via `device.state.brightness.value` so UI
|
|
20641
20788
|
* sliders surface the current level without polling the provider.
|
|
20642
20789
|
*/
|
|
20643
|
-
runtimeState: BrightnessStatusSchema
|
|
20790
|
+
runtimeState: BrightnessStatusSchema,
|
|
20791
|
+
/**
|
|
20792
|
+
* Runtime-state durability: **session** — live lamp state, re-published by the provider on connect.
|
|
20793
|
+
*
|
|
20794
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
20795
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
20796
|
+
*/
|
|
20797
|
+
durability: "session"
|
|
20644
20798
|
};
|
|
20645
20799
|
DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
20646
20800
|
kind: "mutation",
|
|
@@ -20728,7 +20882,17 @@ var carbonMonoxideCapability = {
|
|
|
20728
20882
|
schema: CarbonMonoxideStatusSchema,
|
|
20729
20883
|
kind: "push"
|
|
20730
20884
|
},
|
|
20731
|
-
runtimeState: CarbonMonoxideStatusSchema
|
|
20885
|
+
runtimeState: CarbonMonoxideStatusSchema,
|
|
20886
|
+
/**
|
|
20887
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
20888
|
+
*
|
|
20889
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
20890
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
20891
|
+
*/
|
|
20892
|
+
durability: "restored",
|
|
20893
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
20894
|
+
* whether persisting is worth a SQLite commit. */
|
|
20895
|
+
volatileStateFields: ["lastChangedAt"]
|
|
20732
20896
|
};
|
|
20733
20897
|
/**
|
|
20734
20898
|
* HVAC / climate control cap. Models the full surface of a HA
|
|
@@ -20888,7 +21052,14 @@ var climateControlCapability = {
|
|
|
20888
21052
|
* the full slice via `device.state.climate-control.value` and refresh
|
|
20889
21053
|
* on every push without re-querying the provider.
|
|
20890
21054
|
*/
|
|
20891
|
-
runtimeState: ClimateControlStatusSchema
|
|
21055
|
+
runtimeState: ClimateControlStatusSchema,
|
|
21056
|
+
/**
|
|
21057
|
+
* Runtime-state durability: **session** — as `brightness`; `currentTemp` moves continuously and is re-published on connect.
|
|
21058
|
+
*
|
|
21059
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21060
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21061
|
+
*/
|
|
21062
|
+
durability: "session"
|
|
20892
21063
|
};
|
|
20893
21064
|
/**
|
|
20894
21065
|
* Color-light cap. Coexists with `switch` (on/off) and `brightness`
|
|
@@ -20998,7 +21169,14 @@ onColorChanged: { data: object({
|
|
|
20998
21169
|
* kernel. Read via `device.state.color.value` so UI pickers surface
|
|
20999
21170
|
* the current chromaticity without polling the provider.
|
|
21000
21171
|
*/
|
|
21001
|
-
runtimeState: ColorStatusSchema
|
|
21172
|
+
runtimeState: ColorStatusSchema,
|
|
21173
|
+
/**
|
|
21174
|
+
* Runtime-state durability: **session** — as `brightness`.
|
|
21175
|
+
*
|
|
21176
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21177
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21178
|
+
*/
|
|
21179
|
+
durability: "session"
|
|
21002
21180
|
};
|
|
21003
21181
|
var ConnectionTestOutcomeSchema = discriminatedUnion("outcome", [
|
|
21004
21182
|
object({
|
|
@@ -21056,7 +21234,17 @@ var connectivityCapability = {
|
|
|
21056
21234
|
schema: ConnectivityStatusSchema,
|
|
21057
21235
|
kind: "push"
|
|
21058
21236
|
},
|
|
21059
|
-
runtimeState: ConnectivityStatusSchema
|
|
21237
|
+
runtimeState: ConnectivityStatusSchema,
|
|
21238
|
+
/**
|
|
21239
|
+
* Runtime-state durability: **restored** — same shape and same argument as `device-status`, for links rather than devices.
|
|
21240
|
+
*
|
|
21241
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21242
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21243
|
+
*/
|
|
21244
|
+
durability: "restored",
|
|
21245
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
21246
|
+
* whether persisting is worth a SQLite commit. */
|
|
21247
|
+
volatileStateFields: ["lastChangedAt"]
|
|
21060
21248
|
};
|
|
21061
21249
|
/**
|
|
21062
21250
|
* Generic device-consumables capability — surfaces a device's
|
|
@@ -21138,7 +21326,14 @@ reset: method(object({
|
|
|
21138
21326
|
}
|
|
21139
21327
|
}
|
|
21140
21328
|
},
|
|
21141
|
-
runtimeState: ConsumablesStatusSchema.extend({ lastFetchedAt: number() })
|
|
21329
|
+
runtimeState: ConsumablesStatusSchema.extend({ lastFetchedAt: number() }),
|
|
21330
|
+
/**
|
|
21331
|
+
* Runtime-state durability: **session** — the authority is the appliance; the provider re-reads the whole item array on connect.
|
|
21332
|
+
*
|
|
21333
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21334
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21335
|
+
*/
|
|
21336
|
+
durability: "session"
|
|
21142
21337
|
};
|
|
21143
21338
|
/**
|
|
21144
21339
|
* Door / window / opening / garage / valve contact sensor. Boolean
|
|
@@ -21169,7 +21364,17 @@ var contactCapability = {
|
|
|
21169
21364
|
schema: ContactStatusSchema,
|
|
21170
21365
|
kind: "push"
|
|
21171
21366
|
},
|
|
21172
|
-
runtimeState: ContactStatusSchema
|
|
21367
|
+
runtimeState: ContactStatusSchema,
|
|
21368
|
+
/**
|
|
21369
|
+
* Runtime-state durability: **restored** — a door left open across a restart must still read open.
|
|
21370
|
+
*
|
|
21371
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21372
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21373
|
+
*/
|
|
21374
|
+
durability: "restored",
|
|
21375
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
21376
|
+
* whether persisting is worth a SQLite commit. */
|
|
21377
|
+
volatileStateFields: ["lastChangedAt"]
|
|
21173
21378
|
};
|
|
21174
21379
|
/**
|
|
21175
21380
|
* Status slice — flat object (the framework's `runtimeState` contract
|
|
@@ -21275,7 +21480,14 @@ var controlCapability = {
|
|
|
21275
21480
|
* dropdown / text field / date picker) read the slice's discriminant
|
|
21276
21481
|
* and value directly without polling the provider.
|
|
21277
21482
|
*/
|
|
21278
|
-
runtimeState: ControlStatusSchema
|
|
21483
|
+
runtimeState: ControlStatusSchema,
|
|
21484
|
+
/**
|
|
21485
|
+
* Runtime-state durability: **session** — a generic control mirrors an external entity that re-publishes on connect; the options array is re-derived with it.
|
|
21486
|
+
*
|
|
21487
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21488
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21489
|
+
*/
|
|
21490
|
+
durability: "session"
|
|
21279
21491
|
};
|
|
21280
21492
|
var CoverStatusSchema = object({
|
|
21281
21493
|
/** Lifecycle state of the cover. */
|
|
@@ -21336,7 +21548,17 @@ var coverCapability = {
|
|
|
21336
21548
|
* Runtime-state slice — mirrored by the kernel. UI controls watch
|
|
21337
21549
|
* the slice for live position changes during a move.
|
|
21338
21550
|
*/
|
|
21339
|
-
runtimeState: CoverStatusSchema
|
|
21551
|
+
runtimeState: CoverStatusSchema,
|
|
21552
|
+
/**
|
|
21553
|
+
* Runtime-state durability: **restored** — position survives a restart on the device; the mirror should agree at boot rather than read blank.
|
|
21554
|
+
*
|
|
21555
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21556
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21557
|
+
*/
|
|
21558
|
+
durability: "restored",
|
|
21559
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
21560
|
+
* whether persisting is worth a SQLite commit. */
|
|
21561
|
+
volatileStateFields: ["lastChangedAt"]
|
|
21340
21562
|
};
|
|
21341
21563
|
/**
|
|
21342
21564
|
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
@@ -21430,7 +21652,17 @@ var dayNightCapability = {
|
|
|
21430
21652
|
schema: DayNightStatusSchema,
|
|
21431
21653
|
kind: "poll"
|
|
21432
21654
|
},
|
|
21433
|
-
runtimeState: DayNightStatusSchema
|
|
21655
|
+
runtimeState: DayNightStatusSchema,
|
|
21656
|
+
/**
|
|
21657
|
+
* Runtime-state durability: **restored** — operator-set IR-cut behaviour; mutation-driven.
|
|
21658
|
+
*
|
|
21659
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21660
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21661
|
+
*/
|
|
21662
|
+
durability: "restored",
|
|
21663
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
21664
|
+
* whether persisting is worth a SQLite commit. */
|
|
21665
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
21434
21666
|
};
|
|
21435
21667
|
/**
|
|
21436
21668
|
* Generic device-level status snapshot. Auto-registered by `BaseDevice`
|
|
@@ -21477,7 +21709,17 @@ onStatusChanged: { data: object({
|
|
|
21477
21709
|
schema: DeviceStatusSchema,
|
|
21478
21710
|
kind: "push"
|
|
21479
21711
|
},
|
|
21480
|
-
runtimeState: DeviceStatusSchema
|
|
21712
|
+
runtimeState: DeviceStatusSchema,
|
|
21713
|
+
/**
|
|
21714
|
+
* 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.
|
|
21715
|
+
*
|
|
21716
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21717
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21718
|
+
*/
|
|
21719
|
+
durability: "restored",
|
|
21720
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
21721
|
+
* whether persisting is worth a SQLite commit. */
|
|
21722
|
+
volatileStateFields: ["lastChangedAt"]
|
|
21481
21723
|
};
|
|
21482
21724
|
/**
|
|
21483
21725
|
* Doorbell button cap. Two kinds of providers coexist behind this cap
|
|
@@ -21539,7 +21781,14 @@ onPressed: { data: DoorbellPressEventSchema } },
|
|
|
21539
21781
|
* `device.state.doorbell.value`. UIs can show "last ring 5m ago"
|
|
21540
21782
|
* without subscribing.
|
|
21541
21783
|
*/
|
|
21542
|
-
runtimeState: DoorbellStatusSchema
|
|
21784
|
+
runtimeState: DoorbellStatusSchema,
|
|
21785
|
+
/**
|
|
21786
|
+
* 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.
|
|
21787
|
+
*
|
|
21788
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21789
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21790
|
+
*/
|
|
21791
|
+
durability: "restored"
|
|
21543
21792
|
};
|
|
21544
21793
|
/**
|
|
21545
21794
|
* Enum-state sensor — a string value picked from a finite option set.
|
|
@@ -21579,7 +21828,17 @@ var enumSensorCapability = {
|
|
|
21579
21828
|
schema: EnumSensorStatusSchema,
|
|
21580
21829
|
kind: "push"
|
|
21581
21830
|
},
|
|
21582
|
-
runtimeState: EnumSensorStatusSchema
|
|
21831
|
+
runtimeState: EnumSensorStatusSchema,
|
|
21832
|
+
/**
|
|
21833
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`; 80 devices.
|
|
21834
|
+
*
|
|
21835
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21836
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21837
|
+
*/
|
|
21838
|
+
durability: "restored",
|
|
21839
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
21840
|
+
* whether persisting is worth a SQLite commit. */
|
|
21841
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
21583
21842
|
};
|
|
21584
21843
|
/**
|
|
21585
21844
|
* Generic stateless event emitter. Installed on a `DeviceType.EventEmitter`
|
|
@@ -21615,7 +21874,14 @@ var eventEmitterCapability = {
|
|
|
21615
21874
|
schema: EventEmitterStatusSchema,
|
|
21616
21875
|
kind: "push"
|
|
21617
21876
|
},
|
|
21618
|
-
runtimeState: EventEmitterStatusSchema
|
|
21877
|
+
runtimeState: EventEmitterStatusSchema,
|
|
21878
|
+
/**
|
|
21879
|
+
* Runtime-state durability: **session** — `eventCountSinceStart` names its own scope.
|
|
21880
|
+
*
|
|
21881
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21882
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21883
|
+
*/
|
|
21884
|
+
durability: "session"
|
|
21619
21885
|
};
|
|
21620
21886
|
var EventItemSchema = object({
|
|
21621
21887
|
id: string(),
|
|
@@ -21896,7 +22162,14 @@ var fanControlCapability = {
|
|
|
21896
22162
|
* Runtime-state slice — mirrored by the kernel. UI fan speed
|
|
21897
22163
|
* sliders read `percentage` for live updates.
|
|
21898
22164
|
*/
|
|
21899
|
-
runtimeState: FanControlStatusSchema
|
|
22165
|
+
runtimeState: FanControlStatusSchema,
|
|
22166
|
+
/**
|
|
22167
|
+
* Runtime-state durability: **session** — as `brightness`.
|
|
22168
|
+
*
|
|
22169
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22170
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22171
|
+
*/
|
|
22172
|
+
durability: "session"
|
|
21900
22173
|
};
|
|
21901
22174
|
/**
|
|
21902
22175
|
* Per-device feature/identity probe slice. Holds the runtime-resolved
|
|
@@ -21972,7 +22245,14 @@ onProbeChanged: { data: object({
|
|
|
21972
22245
|
schema: FeatureProbeStatusSchema,
|
|
21973
22246
|
kind: "push"
|
|
21974
22247
|
},
|
|
21975
|
-
runtimeState: FeatureProbeStatusSchema
|
|
22248
|
+
runtimeState: FeatureProbeStatusSchema,
|
|
22249
|
+
/**
|
|
22250
|
+
* 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.
|
|
22251
|
+
*
|
|
22252
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22253
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22254
|
+
*/
|
|
22255
|
+
durability: "session"
|
|
21976
22256
|
};
|
|
21977
22257
|
/**
|
|
21978
22258
|
* Water leak / moisture sensor. Boolean "is liquid currently
|
|
@@ -21999,7 +22279,17 @@ var floodCapability = {
|
|
|
21999
22279
|
schema: FloodStatusSchema,
|
|
22000
22280
|
kind: "push"
|
|
22001
22281
|
},
|
|
22002
|
-
runtimeState: FloodStatusSchema
|
|
22282
|
+
runtimeState: FloodStatusSchema,
|
|
22283
|
+
/**
|
|
22284
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
22285
|
+
*
|
|
22286
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22287
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22288
|
+
*/
|
|
22289
|
+
durability: "restored",
|
|
22290
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
22291
|
+
* whether persisting is worth a SQLite commit. */
|
|
22292
|
+
volatileStateFields: ["lastChangedAt"]
|
|
22003
22293
|
};
|
|
22004
22294
|
/**
|
|
22005
22295
|
* Combustible-gas (LPG / methane / hydrogen) alarm sensor. Drives
|
|
@@ -22022,7 +22312,17 @@ var gasCapability = {
|
|
|
22022
22312
|
schema: GasStatusSchema,
|
|
22023
22313
|
kind: "push"
|
|
22024
22314
|
},
|
|
22025
|
-
runtimeState: GasStatusSchema
|
|
22315
|
+
runtimeState: GasStatusSchema,
|
|
22316
|
+
/**
|
|
22317
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
22318
|
+
*
|
|
22319
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22320
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22321
|
+
*/
|
|
22322
|
+
durability: "restored",
|
|
22323
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
22324
|
+
* whether persisting is worth a SQLite commit. */
|
|
22325
|
+
volatileStateFields: ["lastChangedAt"]
|
|
22026
22326
|
};
|
|
22027
22327
|
/**
|
|
22028
22328
|
* Humidifier / dehumidifier cap. Models HA `humidifier.*` entities —
|
|
@@ -22098,7 +22398,14 @@ var humidifierCapability = {
|
|
|
22098
22398
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
22099
22399
|
* slice for live humidity / mode changes.
|
|
22100
22400
|
*/
|
|
22101
|
-
runtimeState: HumidifierStatusSchema
|
|
22401
|
+
runtimeState: HumidifierStatusSchema,
|
|
22402
|
+
/**
|
|
22403
|
+
* Runtime-state durability: **session** — as `climate-control`.
|
|
22404
|
+
*
|
|
22405
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22406
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22407
|
+
*/
|
|
22408
|
+
durability: "session"
|
|
22102
22409
|
};
|
|
22103
22410
|
/**
|
|
22104
22411
|
* Single-metric humidity reading. Drives Home Assistant `sensor`
|
|
@@ -22134,7 +22441,17 @@ var humiditySensorCapability = {
|
|
|
22134
22441
|
schema: HumiditySensorStatusSchema,
|
|
22135
22442
|
kind: "push"
|
|
22136
22443
|
},
|
|
22137
|
-
runtimeState: HumiditySensorStatusSchema
|
|
22444
|
+
runtimeState: HumiditySensorStatusSchema,
|
|
22445
|
+
/**
|
|
22446
|
+
* Runtime-state durability: **restored** — as `numeric-sensor` (67 of 75 writes were the clock alone).
|
|
22447
|
+
*
|
|
22448
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22449
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22450
|
+
*/
|
|
22451
|
+
durability: "restored",
|
|
22452
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
22453
|
+
* whether persisting is worth a SQLite commit. */
|
|
22454
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
22138
22455
|
};
|
|
22139
22456
|
/**
|
|
22140
22457
|
* Image display cap. Models a single still image exposed by an integration —
|
|
@@ -22172,7 +22489,14 @@ var imageCapability = {
|
|
|
22172
22489
|
* Runtime-state slice — mirrored by the kernel. The UI reads `url`
|
|
22173
22490
|
* directly and renders the still image.
|
|
22174
22491
|
*/
|
|
22175
|
-
runtimeState: ImageStatusSchema
|
|
22492
|
+
runtimeState: ImageStatusSchema,
|
|
22493
|
+
/**
|
|
22494
|
+
* Runtime-state durability: **session** — a snapshot URL is a session-scoped handle; a restored one points at nothing.
|
|
22495
|
+
*
|
|
22496
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22497
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22498
|
+
*/
|
|
22499
|
+
durability: "session"
|
|
22176
22500
|
};
|
|
22177
22501
|
/**
|
|
22178
22502
|
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
@@ -22321,7 +22645,17 @@ var imageSettingsCapability = {
|
|
|
22321
22645
|
schema: ImageSettingsStatusSchema,
|
|
22322
22646
|
kind: "poll"
|
|
22323
22647
|
},
|
|
22324
|
-
runtimeState: ImageSettingsStatusSchema
|
|
22648
|
+
runtimeState: ImageSettingsStatusSchema,
|
|
22649
|
+
/**
|
|
22650
|
+
* Runtime-state durability: **restored** — operator-set camera imaging; mutation-driven.
|
|
22651
|
+
*
|
|
22652
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22653
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22654
|
+
*/
|
|
22655
|
+
durability: "restored",
|
|
22656
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
22657
|
+
* whether persisting is worth a SQLite commit. */
|
|
22658
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
22325
22659
|
};
|
|
22326
22660
|
/**
|
|
22327
22661
|
* integrations — system-scoped singleton capability for integration
|
|
@@ -22661,7 +22995,14 @@ var lawnMowerControlCapability = {
|
|
|
22661
22995
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
22662
22996
|
* slice for live activity + battery changes.
|
|
22663
22997
|
*/
|
|
22664
|
-
runtimeState: LawnMowerControlStatusSchema
|
|
22998
|
+
runtimeState: LawnMowerControlStatusSchema,
|
|
22999
|
+
/**
|
|
23000
|
+
* Runtime-state durability: **session** — as `vacuum-control`.
|
|
23001
|
+
*
|
|
23002
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23003
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23004
|
+
*/
|
|
23005
|
+
durability: "session"
|
|
22665
23006
|
};
|
|
22666
23007
|
/**
|
|
22667
23008
|
* local-network — hub-only singleton.
|
|
@@ -22867,7 +23208,17 @@ var lockControlCapability = {
|
|
|
22867
23208
|
* read `state` and disable themselves during `locking`/`unlocking`
|
|
22868
23209
|
* transitions.
|
|
22869
23210
|
*/
|
|
22870
|
-
runtimeState: LockControlStatusSchema
|
|
23211
|
+
runtimeState: LockControlStatusSchema,
|
|
23212
|
+
/**
|
|
23213
|
+
* Runtime-state durability: **restored** — a lock left locked must still read locked.
|
|
23214
|
+
*
|
|
23215
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23216
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23217
|
+
*/
|
|
23218
|
+
durability: "restored",
|
|
23219
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
23220
|
+
* whether persisting is worth a SQLite commit. */
|
|
23221
|
+
volatileStateFields: ["lastChangedAt"]
|
|
22871
23222
|
};
|
|
22872
23223
|
/**
|
|
22873
23224
|
* Media-player cap. Models HA `media_player.*` (Sonos, Chromecast,
|
|
@@ -23029,7 +23380,14 @@ var mediaPlayerCapability = {
|
|
|
23029
23380
|
* full slice for live now-playing, volume, and progress updates
|
|
23030
23381
|
* without polling.
|
|
23031
23382
|
*/
|
|
23032
|
-
runtimeState: MediaPlayerStatusSchema
|
|
23383
|
+
runtimeState: MediaPlayerStatusSchema,
|
|
23384
|
+
/**
|
|
23385
|
+
* Runtime-state durability: **session** — a restored transport position describes a playback that stopped when the hub did.
|
|
23386
|
+
*
|
|
23387
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23388
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23389
|
+
*/
|
|
23390
|
+
durability: "session"
|
|
23033
23391
|
};
|
|
23034
23392
|
/**
|
|
23035
23393
|
* mesh-network — collection cap for mesh-VPN providers.
|
|
@@ -23293,7 +23651,14 @@ onMotionChanged: { data: MotionOnMotionChangedDataSchema } },
|
|
|
23293
23651
|
* `device.state.motion.value`. Reads never invoke the provider, so
|
|
23294
23652
|
* UIs and other addons can poll the cached state safely.
|
|
23295
23653
|
*/
|
|
23296
|
-
runtimeState: MotionStatusSchema
|
|
23654
|
+
runtimeState: MotionStatusSchema,
|
|
23655
|
+
/**
|
|
23656
|
+
* 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.
|
|
23657
|
+
*
|
|
23658
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23659
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23660
|
+
*/
|
|
23661
|
+
durability: "session"
|
|
23297
23662
|
};
|
|
23298
23663
|
/**
|
|
23299
23664
|
* Motion-trigger toggle for accessory devices.
|
|
@@ -23358,7 +23723,14 @@ var motionTriggerCapability = {
|
|
|
23358
23723
|
schema: MotionTriggerStatusSchema,
|
|
23359
23724
|
kind: "command-driven"
|
|
23360
23725
|
},
|
|
23361
|
-
runtimeState: MotionTriggerRuntimeStateSchema
|
|
23726
|
+
runtimeState: MotionTriggerRuntimeStateSchema,
|
|
23727
|
+
/**
|
|
23728
|
+
* 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.
|
|
23729
|
+
*
|
|
23730
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23731
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23732
|
+
*/
|
|
23733
|
+
durability: "session"
|
|
23362
23734
|
};
|
|
23363
23735
|
/**
|
|
23364
23736
|
* Motion-zones share the same MaskShape vocabulary as privacy-mask — the
|
|
@@ -23425,7 +23797,17 @@ var motionZonesCapability = {
|
|
|
23425
23797
|
schema: MotionZoneStatusSchema,
|
|
23426
23798
|
kind: "poll"
|
|
23427
23799
|
},
|
|
23428
|
-
runtimeState: MotionZoneStatusSchema
|
|
23800
|
+
runtimeState: MotionZoneStatusSchema,
|
|
23801
|
+
/**
|
|
23802
|
+
* 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.
|
|
23803
|
+
*
|
|
23804
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23805
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23806
|
+
*/
|
|
23807
|
+
durability: "restored",
|
|
23808
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
23809
|
+
* whether persisting is worth a SQLite commit. */
|
|
23810
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
23429
23811
|
};
|
|
23430
23812
|
/**
|
|
23431
23813
|
* On-camera AI object detection cap. Surfaces per-device the classes
|
|
@@ -23499,7 +23881,17 @@ var nativeObjectDetectionCapability = {
|
|
|
23499
23881
|
schema: NativeObjectDetectionStatusSchema,
|
|
23500
23882
|
kind: "push"
|
|
23501
23883
|
},
|
|
23502
|
-
runtimeState: NativeObjectDetectionRuntimeStateSchema
|
|
23884
|
+
runtimeState: NativeObjectDetectionRuntimeStateSchema,
|
|
23885
|
+
/**
|
|
23886
|
+
* 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.
|
|
23887
|
+
*
|
|
23888
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23889
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23890
|
+
*/
|
|
23891
|
+
durability: "restored",
|
|
23892
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
23893
|
+
* whether persisting is worth a SQLite commit. */
|
|
23894
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
23503
23895
|
};
|
|
23504
23896
|
/**
|
|
23505
23897
|
* network-quality — system-scoped singleton capability tracking RTT,
|
|
@@ -23833,7 +24225,14 @@ onSent: { data: object({
|
|
|
23833
24225
|
* form reads `supports` to gate optional fields; history pane reads
|
|
23834
24226
|
* `lastSentAt` / `lastError` / `queueDepth`.
|
|
23835
24227
|
*/
|
|
23836
|
-
runtimeState: NotifierStatusSchema
|
|
24228
|
+
runtimeState: NotifierStatusSchema,
|
|
24229
|
+
/**
|
|
24230
|
+
* Runtime-state durability: **session** — live queue depth and last-send state; a restored queue depth describes a queue that no longer exists.
|
|
24231
|
+
*
|
|
24232
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
24233
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
24234
|
+
*/
|
|
24235
|
+
durability: "session"
|
|
23837
24236
|
};
|
|
23838
24237
|
/**
|
|
23839
24238
|
* Generic numeric sensor — last-resort fallback when no typed numeric
|
|
@@ -23876,7 +24275,17 @@ var numericSensorCapability = {
|
|
|
23876
24275
|
schema: NumericSensorStatusSchema,
|
|
23877
24276
|
kind: "push"
|
|
23878
24277
|
},
|
|
23879
|
-
runtimeState: NumericSensorStatusSchema
|
|
24278
|
+
runtimeState: NumericSensorStatusSchema,
|
|
24279
|
+
/**
|
|
24280
|
+
* 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.
|
|
24281
|
+
*
|
|
24282
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
24283
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
24284
|
+
*/
|
|
24285
|
+
durability: "restored",
|
|
24286
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
24287
|
+
* whether persisting is worth a SQLite commit. */
|
|
24288
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
23880
24289
|
};
|
|
23881
24290
|
/**
|
|
23882
24291
|
* Generic on-screen-display (video overlay) cap. Each camera exposes
|
|
@@ -24261,7 +24670,14 @@ var petFeederCapability = {
|
|
|
24261
24670
|
* the full slice via `device.state.petFeeder.value` and refresh on
|
|
24262
24671
|
* every poll without re-querying the provider.
|
|
24263
24672
|
*/
|
|
24264
|
-
runtimeState: PetFeederStatusSchema
|
|
24673
|
+
runtimeState: PetFeederStatusSchema,
|
|
24674
|
+
/**
|
|
24675
|
+
* Runtime-state durability: **session** — live appliance state re-published on connect.
|
|
24676
|
+
*
|
|
24677
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
24678
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
24679
|
+
*/
|
|
24680
|
+
durability: "session"
|
|
24265
24681
|
};
|
|
24266
24682
|
var VehicleSchema = object({
|
|
24267
24683
|
id: string(),
|
|
@@ -24573,7 +24989,17 @@ var powerMeterCapability = {
|
|
|
24573
24989
|
schema: PowerMeterStatusSchema,
|
|
24574
24990
|
kind: "push"
|
|
24575
24991
|
},
|
|
24576
|
-
runtimeState: PowerMeterStatusSchema
|
|
24992
|
+
runtimeState: PowerMeterStatusSchema,
|
|
24993
|
+
/**
|
|
24994
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`; `kwhTotal` is an accumulator whose restored value is the baseline.
|
|
24995
|
+
*
|
|
24996
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
24997
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
24998
|
+
*/
|
|
24999
|
+
durability: "restored",
|
|
25000
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
25001
|
+
* whether persisting is worth a SQLite commit. */
|
|
25002
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
24577
25003
|
};
|
|
24578
25004
|
/**
|
|
24579
25005
|
* Presence cap. Models HA `person.*` and `device_tracker.*` entities
|
|
@@ -24630,7 +25056,17 @@ var presenceCapability = {
|
|
|
24630
25056
|
* the map pin is rendered (use `DeviceFeature.PresenceGps` for the
|
|
24631
25057
|
* pre-fetch fast-path check).
|
|
24632
25058
|
*/
|
|
24633
|
-
runtimeState: PresenceStatusSchema
|
|
25059
|
+
runtimeState: PresenceStatusSchema,
|
|
25060
|
+
/**
|
|
25061
|
+
* Runtime-state durability: **restored** — occupancy-relevant: the restored state is what an occupancy rule compares the first post-restart observation against.
|
|
25062
|
+
*
|
|
25063
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
25064
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
25065
|
+
*/
|
|
25066
|
+
durability: "restored",
|
|
25067
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
25068
|
+
* whether persisting is worth a SQLite commit. */
|
|
25069
|
+
volatileStateFields: ["lastChangedAt"]
|
|
24634
25070
|
};
|
|
24635
25071
|
/**
|
|
24636
25072
|
* Atmospheric pressure reading in hectopascals. Drives Home Assistant
|
|
@@ -24666,7 +25102,17 @@ var pressureSensorCapability = {
|
|
|
24666
25102
|
schema: PressureSensorStatusSchema,
|
|
24667
25103
|
kind: "push"
|
|
24668
25104
|
},
|
|
24669
|
-
runtimeState: PressureSensorStatusSchema
|
|
25105
|
+
runtimeState: PressureSensorStatusSchema,
|
|
25106
|
+
/**
|
|
25107
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`.
|
|
25108
|
+
*
|
|
25109
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
25110
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
25111
|
+
*/
|
|
25112
|
+
durability: "restored",
|
|
25113
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
25114
|
+
* whether persisting is worth a SQLite commit. */
|
|
25115
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
24670
25116
|
};
|
|
24671
25117
|
/**
|
|
24672
25118
|
* PRIVACY — what the camera deliberately does not capture. Two planes:
|
|
@@ -24796,7 +25242,17 @@ var privacyMaskCapability = {
|
|
|
24796
25242
|
schema: PrivacyMaskStatusSchema,
|
|
24797
25243
|
kind: "poll"
|
|
24798
25244
|
},
|
|
24799
|
-
runtimeState: PrivacyMaskStatusSchema
|
|
25245
|
+
runtimeState: PrivacyMaskStatusSchema,
|
|
25246
|
+
/**
|
|
25247
|
+
* Runtime-state durability: **restored** — operator-drawn regions, zero real churn — 22 writes in 25 minutes, every one of them the clock.
|
|
25248
|
+
*
|
|
25249
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
25250
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
25251
|
+
*/
|
|
25252
|
+
durability: "restored",
|
|
25253
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
25254
|
+
* whether persisting is worth a SQLite commit. */
|
|
25255
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
24800
25256
|
};
|
|
24801
25257
|
var PtzPresetSchema = object({
|
|
24802
25258
|
id: string(),
|
|
@@ -24962,7 +25418,14 @@ var ptzAutotrackCapability = {
|
|
|
24962
25418
|
* fetch / cache / fallback logic out of the four cap methods —
|
|
24963
25419
|
* they become trampolines over `runtimeState`.
|
|
24964
25420
|
*/
|
|
24965
|
-
runtimeState: PtzAutotrackRuntimeStateSchema
|
|
25421
|
+
runtimeState: PtzAutotrackRuntimeStateSchema,
|
|
25422
|
+
/**
|
|
25423
|
+
* Runtime-state durability: **session** — mirrors the camera's own autotrack config, re-read on connect.
|
|
25424
|
+
*
|
|
25425
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
25426
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
25427
|
+
*/
|
|
25428
|
+
durability: "session"
|
|
24966
25429
|
};
|
|
24967
25430
|
DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
|
|
24968
25431
|
kind: "mutation",
|
|
@@ -25612,7 +26075,14 @@ var sceneMonitorCapability = {
|
|
|
25612
26075
|
schema: SceneMonitorStatusSchema,
|
|
25613
26076
|
kind: "push"
|
|
25614
26077
|
},
|
|
25615
|
-
runtimeState: SceneMonitorStatusSchema
|
|
26078
|
+
runtimeState: SceneMonitorStatusSchema,
|
|
26079
|
+
/**
|
|
26080
|
+
* Runtime-state durability: **session** — re-derived from the current scene on the next evaluation.
|
|
26081
|
+
*
|
|
26082
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
26083
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
26084
|
+
*/
|
|
26085
|
+
durability: "session"
|
|
25616
26086
|
};
|
|
25617
26087
|
/**
|
|
25618
26088
|
* Per-stage gating mode applied to the zones a rule references.
|
|
@@ -25756,7 +26226,14 @@ var scriptRunnerCapability = {
|
|
|
25756
26226
|
* `isRunning` to render a spinner during execution and surfaces
|
|
25757
26227
|
* `lastError` / `lastRunSuccess` in the recent-runs panel.
|
|
25758
26228
|
*/
|
|
25759
|
-
runtimeState: ScriptRunnerStatusSchema
|
|
26229
|
+
runtimeState: ScriptRunnerStatusSchema,
|
|
26230
|
+
/**
|
|
26231
|
+
* Runtime-state durability: **session** — a restored `isRunning: true` describes a process that died with the previous hub.
|
|
26232
|
+
*
|
|
26233
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
26234
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
26235
|
+
*/
|
|
26236
|
+
durability: "session"
|
|
25760
26237
|
};
|
|
25761
26238
|
/**
|
|
25762
26239
|
* Smoke alarm sensor — boolean "is smoke currently detected" with
|
|
@@ -25783,7 +26260,17 @@ var smokeCapability = {
|
|
|
25783
26260
|
schema: SmokeStatusSchema,
|
|
25784
26261
|
kind: "push"
|
|
25785
26262
|
},
|
|
25786
|
-
runtimeState: SmokeStatusSchema
|
|
26263
|
+
runtimeState: SmokeStatusSchema,
|
|
26264
|
+
/**
|
|
26265
|
+
* Runtime-state durability: **restored** — a safety sensor must not read "clear" merely because the hub restarted.
|
|
26266
|
+
*
|
|
26267
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
26268
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
26269
|
+
*/
|
|
26270
|
+
durability: "restored",
|
|
26271
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
26272
|
+
* whether persisting is worth a SQLite commit. */
|
|
26273
|
+
volatileStateFields: ["lastChangedAt"]
|
|
25787
26274
|
};
|
|
25788
26275
|
/**
|
|
25789
26276
|
* One publishable camera stream as its OWNING PROVIDER describes it — the same
|
|
@@ -25969,7 +26456,17 @@ var streamParamsCapability = {
|
|
|
25969
26456
|
schema: StreamParamsStatusSchema,
|
|
25970
26457
|
kind: "poll"
|
|
25971
26458
|
},
|
|
25972
|
-
runtimeState: StreamParamsStatusSchema
|
|
26459
|
+
runtimeState: StreamParamsStatusSchema,
|
|
26460
|
+
/**
|
|
26461
|
+
* Runtime-state durability: **restored** — operator-set encoder profile; mutation-driven.
|
|
26462
|
+
*
|
|
26463
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
26464
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
26465
|
+
*/
|
|
26466
|
+
durability: "restored",
|
|
26467
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
26468
|
+
* whether persisting is worth a SQLite commit. */
|
|
26469
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
25973
26470
|
};
|
|
25974
26471
|
/**
|
|
25975
26472
|
* Generic on/off switch cap for accessory children (siren, floodlight,
|
|
@@ -26015,6 +26512,16 @@ var switchCapability = {
|
|
|
26015
26512
|
* not need to re-query the provider after a setState mutation.
|
|
26016
26513
|
*/
|
|
26017
26514
|
runtimeState: SwitchStatusSchema,
|
|
26515
|
+
/**
|
|
26516
|
+
* Runtime-state durability: **restored** — device state an operator reads as authoritative; 55 devices, transition-driven.
|
|
26517
|
+
*
|
|
26518
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
26519
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
26520
|
+
*/
|
|
26521
|
+
durability: "restored",
|
|
26522
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
26523
|
+
* whether persisting is worth a SQLite commit. */
|
|
26524
|
+
volatileStateFields: ["lastChangedAt"],
|
|
26018
26525
|
settings: { bindings: [{
|
|
26019
26526
|
kind: "scalar",
|
|
26020
26527
|
statusPath: "on",
|
|
@@ -26094,7 +26601,17 @@ var tamperCapability = {
|
|
|
26094
26601
|
schema: TamperStatusSchema,
|
|
26095
26602
|
kind: "push"
|
|
26096
26603
|
},
|
|
26097
|
-
runtimeState: TamperStatusSchema
|
|
26604
|
+
runtimeState: TamperStatusSchema,
|
|
26605
|
+
/**
|
|
26606
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
26607
|
+
*
|
|
26608
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
26609
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
26610
|
+
*/
|
|
26611
|
+
durability: "restored",
|
|
26612
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
26613
|
+
* whether persisting is worth a SQLite commit. */
|
|
26614
|
+
volatileStateFields: ["lastChangedAt"]
|
|
26098
26615
|
};
|
|
26099
26616
|
/**
|
|
26100
26617
|
* Single-metric temperature reading. Drives Home Assistant `sensor`
|
|
@@ -26139,7 +26656,17 @@ var temperatureSensorCapability = {
|
|
|
26139
26656
|
schema: TemperatureSensorStatusSchema,
|
|
26140
26657
|
kind: "push"
|
|
26141
26658
|
},
|
|
26142
|
-
runtimeState: TemperatureSensorStatusSchema
|
|
26659
|
+
runtimeState: TemperatureSensorStatusSchema,
|
|
26660
|
+
/**
|
|
26661
|
+
* Runtime-state durability: **restored** — as `numeric-sensor` (69 of 125 writes were the clock alone).
|
|
26662
|
+
*
|
|
26663
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
26664
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
26665
|
+
*/
|
|
26666
|
+
durability: "restored",
|
|
26667
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
26668
|
+
* whether persisting is worth a SQLite commit. */
|
|
26669
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
26143
26670
|
};
|
|
26144
26671
|
/**
|
|
26145
26672
|
* toast — system-scoped singleton capability that streams toast
|
|
@@ -26208,7 +26735,14 @@ var updateCapability = {
|
|
|
26208
26735
|
schema: UpdateStatusSchema,
|
|
26209
26736
|
kind: "poll"
|
|
26210
26737
|
},
|
|
26211
|
-
runtimeState: UpdateStatusSchema
|
|
26738
|
+
runtimeState: UpdateStatusSchema,
|
|
26739
|
+
/**
|
|
26740
|
+
* Runtime-state durability: **session** — a restored `inProgress: true` describes an update that is no longer running; versions are re-probed at boot.
|
|
26741
|
+
*
|
|
26742
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
26743
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
26744
|
+
*/
|
|
26745
|
+
durability: "session"
|
|
26212
26746
|
};
|
|
26213
26747
|
var UserSummarySchema = object({
|
|
26214
26748
|
id: string(),
|
|
@@ -26542,7 +27076,14 @@ var vacuumControlCapability = {
|
|
|
26542
27076
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
26543
27077
|
* slice for live state + battery + fan-speed changes.
|
|
26544
27078
|
*/
|
|
26545
|
-
runtimeState: VacuumControlStatusSchema
|
|
27079
|
+
runtimeState: VacuumControlStatusSchema,
|
|
27080
|
+
/**
|
|
27081
|
+
* Runtime-state durability: **session** — as `media-player` — a restored `state: cleaning` is a robot that is not cleaning.
|
|
27082
|
+
*
|
|
27083
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27084
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27085
|
+
*/
|
|
27086
|
+
durability: "session"
|
|
26546
27087
|
};
|
|
26547
27088
|
var ValveStatusSchema = object({
|
|
26548
27089
|
/** Lifecycle state of the valve. */
|
|
@@ -26594,7 +27135,14 @@ var valveCapability = {
|
|
|
26594
27135
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
26595
27136
|
* slice for live position changes during a move.
|
|
26596
27137
|
*/
|
|
26597
|
-
runtimeState: ValveStatusSchema
|
|
27138
|
+
runtimeState: ValveStatusSchema,
|
|
27139
|
+
/**
|
|
27140
|
+
* Runtime-state durability: **session** — as `brightness`.
|
|
27141
|
+
*
|
|
27142
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27143
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27144
|
+
*/
|
|
27145
|
+
durability: "session"
|
|
26598
27146
|
};
|
|
26599
27147
|
/**
|
|
26600
27148
|
* Vibration / shake / impact sensor. Drives Home Assistant
|
|
@@ -26616,7 +27164,17 @@ var vibrationCapability = {
|
|
|
26616
27164
|
schema: VibrationStatusSchema,
|
|
26617
27165
|
kind: "push"
|
|
26618
27166
|
},
|
|
26619
|
-
runtimeState: VibrationStatusSchema
|
|
27167
|
+
runtimeState: VibrationStatusSchema,
|
|
27168
|
+
/**
|
|
27169
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
27170
|
+
*
|
|
27171
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27172
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27173
|
+
*/
|
|
27174
|
+
durability: "restored",
|
|
27175
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
27176
|
+
* whether persisting is worth a SQLite commit. */
|
|
27177
|
+
volatileStateFields: ["lastChangedAt"]
|
|
26620
27178
|
};
|
|
26621
27179
|
/**
|
|
26622
27180
|
* Water heater / boiler cap. Models HA `water_heater.*` entities — a
|
|
@@ -26690,7 +27248,14 @@ var waterHeaterCapability = {
|
|
|
26690
27248
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
26691
27249
|
* slice for live temperature / mode / away changes.
|
|
26692
27250
|
*/
|
|
26693
|
-
runtimeState: WaterHeaterStatusSchema
|
|
27251
|
+
runtimeState: WaterHeaterStatusSchema,
|
|
27252
|
+
/**
|
|
27253
|
+
* Runtime-state durability: **session** — as `climate-control`.
|
|
27254
|
+
*
|
|
27255
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27256
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27257
|
+
*/
|
|
27258
|
+
durability: "session"
|
|
26694
27259
|
};
|
|
26695
27260
|
/**
|
|
26696
27261
|
* Weather provider cap. Models HA `weather.*` entities — a read-only
|
|
@@ -26749,7 +27314,14 @@ var weatherCapability = {
|
|
|
26749
27314
|
* Runtime-state slice — mirrored by the kernel. The UI reads the
|
|
26750
27315
|
* current conditions directly from the slice on each weather push.
|
|
26751
27316
|
*/
|
|
26752
|
-
runtimeState: WeatherStatusSchema
|
|
27317
|
+
runtimeState: WeatherStatusSchema,
|
|
27318
|
+
/**
|
|
27319
|
+
* Runtime-state durability: **session** — a forecast is stale the moment the hub is down; the provider re-fetches on connect.
|
|
27320
|
+
*
|
|
27321
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27322
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27323
|
+
*/
|
|
27324
|
+
durability: "session"
|
|
26753
27325
|
};
|
|
26754
27326
|
/**
|
|
26755
27327
|
* Per-zone occupancy aggregation produced by the analytics frame
|
|
@@ -26911,7 +27483,14 @@ var zoneAnalyticsCapability = {
|
|
|
26911
27483
|
* automatically; the explicit `getCurrentSnapshot` cap method is
|
|
26912
27484
|
* still useful for one-off polls without a subscription.
|
|
26913
27485
|
*/
|
|
26914
|
-
runtimeState: CameraOccupancySnapshotSchema
|
|
27486
|
+
runtimeState: CameraOccupancySnapshotSchema,
|
|
27487
|
+
/**
|
|
27488
|
+
* Runtime-state durability: **session** — per-frame analytics; with `audio-metrics` it is ~90 % of the offered write rate. Re-derived on the next frame.
|
|
27489
|
+
*
|
|
27490
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27491
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27492
|
+
*/
|
|
27493
|
+
durability: "session"
|
|
26915
27494
|
};
|
|
26916
27495
|
/**
|
|
26917
27496
|
* Stages a {@link ZoneRule} can apply to. Discriminator on the rules
|
|
@@ -26989,7 +27568,14 @@ var zoneRulesCapability = {
|
|
|
26989
27568
|
motion: array(ZoneRuleSchema).readonly(),
|
|
26990
27569
|
detection: array(ZoneRuleSchema).readonly(),
|
|
26991
27570
|
package: array(ZoneRuleSchema).readonly()
|
|
26992
|
-
})
|
|
27571
|
+
}),
|
|
27572
|
+
/**
|
|
27573
|
+
* Runtime-state durability: **restored** — operator intent, mutation-only, same argument as `zones`.
|
|
27574
|
+
*
|
|
27575
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27576
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27577
|
+
*/
|
|
27578
|
+
durability: "restored"
|
|
26993
27579
|
};
|
|
26994
27580
|
/**
|
|
26995
27581
|
* Accessory device helpers — shared across drivers.
|
|
@@ -33675,6 +34261,7 @@ Object.freeze({
|
|
|
33675
34261
|
"network-access": "ingress",
|
|
33676
34262
|
"smtp-provider": "email"
|
|
33677
34263
|
});
|
|
34264
|
+
new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
|
|
33678
34265
|
new Set(["devices", "classes"]);
|
|
33679
34266
|
/**
|
|
33680
34267
|
* TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
|