@camstack/addon-post-analysis 1.2.68 → 1.2.69
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/{dist-Dl1kEFqi.js → dist-BF27UAVH.js} +714 -69
- package/dist/{dist-rpHe5qpB.mjs → dist-CU_FWCL9.mjs} +697 -70
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DgDC53Dh.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DR7x9PuS.mjs} +3 -3
- package/dist/pipeline-analytics/{hostInit-GicJZVng.mjs → hostInit-DAStaZcY.mjs} +3 -3
- package/dist/pipeline-analytics/index.js +5052 -3453
- package/dist/pipeline-analytics/index.mjs +5047 -3448
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
|
@@ -11021,7 +11021,14 @@ var cameraStreamsCapability = {
|
|
|
11021
11021
|
low: string().optional()
|
|
11022
11022
|
}),
|
|
11023
11023
|
lastChangedAt: number()
|
|
11024
|
-
})
|
|
11024
|
+
}),
|
|
11025
|
+
/**
|
|
11026
|
+
* 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.
|
|
11027
|
+
*
|
|
11028
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
11029
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
11030
|
+
*/
|
|
11031
|
+
durability: "session"
|
|
11025
11032
|
};
|
|
11026
11033
|
/** kebab-case cap name → camelCase router-map key. */
|
|
11027
11034
|
function kebabToCamel(s) {
|
|
@@ -11608,6 +11615,13 @@ var deviceDiscoveryCapability = {
|
|
|
11608
11615
|
kind: "poll"
|
|
11609
11616
|
},
|
|
11610
11617
|
runtimeState: DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int().nonnegative() }),
|
|
11618
|
+
/**
|
|
11619
|
+
* Runtime-state durability: **session** — 5.7 KB of scan output on the largest device, fully re-derivable by re-scanning.
|
|
11620
|
+
*
|
|
11621
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
11622
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
11623
|
+
*/
|
|
11624
|
+
durability: "session",
|
|
11611
11625
|
methods: {
|
|
11612
11626
|
/**
|
|
11613
11627
|
* Snapshot of the current `discovered` list. Returns the
|
|
@@ -13462,7 +13476,23 @@ var NotificationActionSchema = object({
|
|
|
13462
13476
|
* else — see `notification-center/action-token.ts` for what that does and
|
|
13463
13477
|
* does not buy.
|
|
13464
13478
|
*/
|
|
13465
|
-
destructive: boolean().optional()
|
|
13479
|
+
destructive: boolean().optional(),
|
|
13480
|
+
/**
|
|
13481
|
+
* How the tap should REACH the url.
|
|
13482
|
+
*
|
|
13483
|
+
* `navigate` (absent, and every button authored before this field) opens it:
|
|
13484
|
+
* the phone leaves the notification and shows whatever the callback returns.
|
|
13485
|
+
* That is right for a button whose answer the operator wants to read.
|
|
13486
|
+
*
|
|
13487
|
+
* `background` fires it as a POST and stays put. It exists for the buttons
|
|
13488
|
+
* whose whole point is not to interrupt — "silence this for 30 minutes" is
|
|
13489
|
+
* an answer to the notification, and being thrown into a browser tab to
|
|
13490
|
+
* confirm it costs more attention than the notification did. A backend that
|
|
13491
|
+
* cannot do a background call renders it as an ordinary link (the adapters
|
|
13492
|
+
* fall back rather than dropping the button), so this is a preference, never
|
|
13493
|
+
* a requirement.
|
|
13494
|
+
*/
|
|
13495
|
+
mode: _enum(["navigate", "background"]).optional()
|
|
13466
13496
|
});
|
|
13467
13497
|
/**
|
|
13468
13498
|
* The canonical notification. `body` is the only hard field (Apprise model).
|
|
@@ -14341,7 +14371,17 @@ var alarmPanelCapability = {
|
|
|
14341
14371
|
* full slice; renders an arm button per `availableModes` entry and
|
|
14342
14372
|
* a PIN field iff `requiresCode === true`.
|
|
14343
14373
|
*/
|
|
14344
|
-
runtimeState: AlarmPanelStatusSchema
|
|
14374
|
+
runtimeState: AlarmPanelStatusSchema,
|
|
14375
|
+
/**
|
|
14376
|
+
* Runtime-state durability: **restored** — armed state is the one thing a panel must not lose across a restart.
|
|
14377
|
+
*
|
|
14378
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
14379
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
14380
|
+
*/
|
|
14381
|
+
durability: "restored",
|
|
14382
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
14383
|
+
* whether persisting is worth a SQLite commit. */
|
|
14384
|
+
volatileStateFields: ["lastChangedAt"]
|
|
14345
14385
|
};
|
|
14346
14386
|
/**
|
|
14347
14387
|
* Shared geometry vocabulary for on-frame shape caps — privacy-mask,
|
|
@@ -14496,6 +14536,19 @@ var NC_LEGACY_SYSTEM_EVENT_KINDS = new Set([
|
|
|
14496
14536
|
]);
|
|
14497
14537
|
NcSystemEventKindSchema.options.filter((kind) => !NC_LEGACY_SYSTEM_EVENT_KINDS.has(kind));
|
|
14498
14538
|
/**
|
|
14539
|
+
* The panel's three transitions, as ONE list.
|
|
14540
|
+
*
|
|
14541
|
+
* Named here rather than spelled out at each of the four sites that need them
|
|
14542
|
+
* (the emitter, the intake, the editor group, the combined-notification gate),
|
|
14543
|
+
* because a fourth transition added to the enum and forgotten at one of them is
|
|
14544
|
+
* an alarm state nobody can be notified about.
|
|
14545
|
+
*/
|
|
14546
|
+
var NC_ALARM_SYSTEM_EVENT_KINDS = [
|
|
14547
|
+
"alarm-triggered",
|
|
14548
|
+
"alarm-armed",
|
|
14549
|
+
"alarm-disarmed"
|
|
14550
|
+
];
|
|
14551
|
+
/**
|
|
14499
14552
|
* One coherent system-event condition. `kinds` is the required opt-in safety
|
|
14500
14553
|
* gate; the remaining lists are optional narrowing filters relevant to the
|
|
14501
14554
|
* selected kinds.
|
|
@@ -14518,6 +14571,26 @@ var NcSystemEventConditionSchema = object({
|
|
|
14518
14571
|
nodeIds: array(string().min(1)).min(1).optional(),
|
|
14519
14572
|
packageNames: array(string().min(1)).min(1).optional()
|
|
14520
14573
|
});
|
|
14574
|
+
/** Hard ceiling on a window (24h). A snooze that could not expire would be an
|
|
14575
|
+
* outage the operator asked for once and forgot. */
|
|
14576
|
+
var NC_SNOOZE_MAX_MINUTES = 1440;
|
|
14577
|
+
/**
|
|
14578
|
+
* The durations a notification offers when its rule does not say otherwise.
|
|
14579
|
+
*
|
|
14580
|
+
* MINUTES, and short ones: a snooze button is answered on a lock screen, and
|
|
14581
|
+
* the three choices that fit there are "the next few minutes", "the next half
|
|
14582
|
+
* hour" and "the next hour". Anything longer is a decision somebody sits down
|
|
14583
|
+
* to make, which is what the app's own snooze surface is for.
|
|
14584
|
+
*
|
|
14585
|
+
* Resolved in CODE (`snoozeChoices`), never as a Zod default — see
|
|
14586
|
+
* {@link NcRuleInputSchema.shape.snoozeOptions} for why the distinction is
|
|
14587
|
+
* load-bearing.
|
|
14588
|
+
*/
|
|
14589
|
+
var NC_DEFAULT_SNOOZE_MINUTES = [
|
|
14590
|
+
10,
|
|
14591
|
+
30,
|
|
14592
|
+
60
|
|
14593
|
+
];
|
|
14521
14594
|
/** Weekly schedule — OR of windows; absence on the rule = always active. */
|
|
14522
14595
|
var NcScheduleSchema = object({
|
|
14523
14596
|
windows: array(object({
|
|
@@ -14894,15 +14967,15 @@ var NcConditionsSchema = object({
|
|
|
14894
14967
|
* (an `immediate` rule naming an `audio-*` class, one notification per
|
|
14895
14968
|
* classified sample) stays exactly as it was for rules that already use it.
|
|
14896
14969
|
*
|
|
14897
|
-
*
|
|
14898
|
-
* rather than an
|
|
14899
|
-
* (`camstack/src/data/notification-center.ts`, guarded by
|
|
14900
|
-
* `scripts/check-viewer-condition-mirror.ts`) and its rule editor
|
|
14970
|
+
* In {@link NC_CONDITION_CATALOG} since P2, and the ORDER it got there is the
|
|
14971
|
+
* rule rather than an accident: the viewer mirrors the descriptor enums BY
|
|
14972
|
+
* HAND (`camstack/src/data/notification-center.ts`, guarded by
|
|
14973
|
+
* `scripts/check-viewer-condition-mirror.ts`) and its rule editor strips the
|
|
14901
14974
|
* condition fields it does not know when a rule is saved from the phone.
|
|
14902
14975
|
* Publishing an editor for a condition the app cannot round-trip is how an
|
|
14903
|
-
* operator loses a rule's conditions by opening it — so the
|
|
14904
|
-
*
|
|
14905
|
-
*
|
|
14976
|
+
* operator loses a rule's conditions by opening it — so the viewer mirror
|
|
14977
|
+
* (P3, shipped) went FIRST, and the descriptor an editor renders from
|
|
14978
|
+
* follows here.
|
|
14906
14979
|
*/
|
|
14907
14980
|
audio: NcAudioConditionSchema.optional()
|
|
14908
14981
|
});
|
|
@@ -15138,6 +15211,30 @@ var NcRuleInputSchema = object({
|
|
|
15138
15211
|
*/
|
|
15139
15212
|
snoozeAllowGlobal: boolean().optional(),
|
|
15140
15213
|
/**
|
|
15214
|
+
* The snooze durations THIS rule's notification offers as buttons, in
|
|
15215
|
+
* minutes.
|
|
15216
|
+
*
|
|
15217
|
+
* Three states, and all three are distinct — which is exactly why this is
|
|
15218
|
+
* `.optional()` and never `.default()`. A Zod default does not run on the
|
|
15219
|
+
* addon cap path (three production failures in one day), so a schema default
|
|
15220
|
+
* would collapse the first two:
|
|
15221
|
+
*
|
|
15222
|
+
* | value | meaning |
|
|
15223
|
+
* | --- | --- |
|
|
15224
|
+
* | absent | the operator never said ⇒ {@link NC_DEFAULT_SNOOZE_MINUTES} |
|
|
15225
|
+
* | `[]` | **no snooze buttons on this rule** — the explicit override |
|
|
15226
|
+
* | a list | these choices, de-duplicated and sorted, at most four |
|
|
15227
|
+
*
|
|
15228
|
+
* `.max(4)` because the notifier's own action budget is small (ntfy allows
|
|
15229
|
+
* three buttons in total) and a rule that spent it all on snooze choices
|
|
15230
|
+
* would push its own tap-through actions off the notification.
|
|
15231
|
+
*
|
|
15232
|
+
* An empty list is NOT an alarm exemption: a rule the alarm is about, or
|
|
15233
|
+
* that arms the panel, is exempt automatically and cannot be silenced by a
|
|
15234
|
+
* window from anywhere (D133).
|
|
15235
|
+
*/
|
|
15236
|
+
snoozeOptions: array(number().int().min(1).max(NC_SNOOZE_MAX_MINUTES)).max(4).optional(),
|
|
15237
|
+
/**
|
|
15141
15238
|
* Devices this rule ACTUATES — arm the alarm, open a gate, turn on a light.
|
|
15142
15239
|
*
|
|
15143
15240
|
* This is what makes the rule set the alarm's trigger set without the alarm
|
|
@@ -15237,6 +15334,7 @@ var NcConditionDescriptorSchema = object({
|
|
|
15237
15334
|
"device",
|
|
15238
15335
|
"package",
|
|
15239
15336
|
"occupancy",
|
|
15337
|
+
"audio",
|
|
15240
15338
|
"system"
|
|
15241
15339
|
]),
|
|
15242
15340
|
label: string(),
|
|
@@ -15255,6 +15353,7 @@ var NcConditionDescriptorSchema = object({
|
|
|
15255
15353
|
"crossingSelect",
|
|
15256
15354
|
"polygonDraw",
|
|
15257
15355
|
"occupancy",
|
|
15356
|
+
"audio",
|
|
15258
15357
|
"deviceState",
|
|
15259
15358
|
"systemEvent"
|
|
15260
15359
|
]),
|
|
@@ -15652,6 +15751,16 @@ var NC_CONDITION_CATALOG = [
|
|
|
15652
15751
|
phase: "P1",
|
|
15653
15752
|
description: "ZoneAnalytics occupancy edge (optionally zone/class-scoped): count crosses the threshold and holds for sustainSeconds. Fail-closed on a missing snapshot."
|
|
15654
15753
|
},
|
|
15754
|
+
{
|
|
15755
|
+
id: "audio",
|
|
15756
|
+
group: "audio",
|
|
15757
|
+
label: "Sound",
|
|
15758
|
+
valueType: "audio",
|
|
15759
|
+
operator: "anyOf",
|
|
15760
|
+
appliesTo: ["immediate"],
|
|
15761
|
+
phase: "P2",
|
|
15762
|
+
description: "Fires when at least hitPercent% of the samples in a samplingSeconds window are hits — a hit clears the dBFS floor AND carries one of the chosen sounds. Both filters are optional and independent, but naming NEITHER never matches: every sample would be a hit, so the engine refuses rather than notifying on silence. dBFS is negative-going (0 = full scale, -96 = silence)."
|
|
15763
|
+
},
|
|
15655
15764
|
{
|
|
15656
15765
|
id: "customZones",
|
|
15657
15766
|
group: "zones",
|
|
@@ -15796,7 +15905,20 @@ var NcSnoozeInputSchema = object({
|
|
|
15796
15905
|
ruleId: string().optional(),
|
|
15797
15906
|
/** Required when `scope: 'device'`. */
|
|
15798
15907
|
deviceId: number().int().optional(),
|
|
15799
|
-
|
|
15908
|
+
/**
|
|
15909
|
+
* Narrow the window to these subject classes — "the cat, not the person".
|
|
15910
|
+
*
|
|
15911
|
+
* ORTHOGONAL to `scope`, deliberately, and absent means EVERY class: that is
|
|
15912
|
+
* what every window authored before this field meant, so no persisted row
|
|
15913
|
+
* changes meaning and no client has to learn anything to keep working.
|
|
15914
|
+
*
|
|
15915
|
+
* It is what makes the window's real key `(deviceId, classes[])` and lets it
|
|
15916
|
+
* cross rules (D133): the operator points at a camera and a kind of thing,
|
|
15917
|
+
* not at whichever of their four rules happened to produce the notification
|
|
15918
|
+
* they are dismissing.
|
|
15919
|
+
*/
|
|
15920
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
15921
|
+
durationMinutes: number().int().min(1).max(NC_SNOOZE_MAX_MINUTES),
|
|
15800
15922
|
/**
|
|
15801
15923
|
* Silence this for EVERY recipient, not just the caller. Permission is
|
|
15802
15924
|
* checked server-side (the rule's `snoozeAllowGlobal`, or admin for the
|
|
@@ -15821,6 +15943,10 @@ var NcSnoozeSchema = object({
|
|
|
15821
15943
|
scope: NcSnoozeScopeSchema,
|
|
15822
15944
|
ruleId: string().optional(),
|
|
15823
15945
|
deviceId: number().int().optional(),
|
|
15946
|
+
/** Subject classes this window covers. ABSENT = every class — see
|
|
15947
|
+
* {@link NcSnoozeInputSchema.shape.classes}. Lives in the JSON blob and has
|
|
15948
|
+
* no SQLite column: nothing queries a window by class. */
|
|
15949
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
15824
15950
|
startedAt: number(),
|
|
15825
15951
|
/** Exclusive: at exactly this instant the snooze is over. Expiry is a
|
|
15826
15952
|
* COMPARISON, not a job — no sweeper can leave the operator silenced. */
|
|
@@ -18417,7 +18543,14 @@ var zonesCapability = {
|
|
|
18417
18543
|
* handle. Slice shape is `{ zones: Zone[] }` so future extensions
|
|
18418
18544
|
* (e.g. zone groupings) can sit alongside the polygon list.
|
|
18419
18545
|
*/
|
|
18420
|
-
runtimeState: object({ zones: array(ZoneSchema).readonly() })
|
|
18546
|
+
runtimeState: object({ zones: array(ZoneSchema).readonly() }),
|
|
18547
|
+
/**
|
|
18548
|
+
* 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.
|
|
18549
|
+
*
|
|
18550
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
18551
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
18552
|
+
*/
|
|
18553
|
+
durability: "restored"
|
|
18421
18554
|
};
|
|
18422
18555
|
/**
|
|
18423
18556
|
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
@@ -21260,7 +21393,17 @@ var airQualitySensorCapability = {
|
|
|
21260
21393
|
schema: AirQualitySensorStatusSchema,
|
|
21261
21394
|
kind: "push"
|
|
21262
21395
|
},
|
|
21263
|
-
runtimeState: AirQualitySensorStatusSchema
|
|
21396
|
+
runtimeState: AirQualitySensorStatusSchema,
|
|
21397
|
+
/**
|
|
21398
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`.
|
|
21399
|
+
*
|
|
21400
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21401
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21402
|
+
*/
|
|
21403
|
+
durability: "restored",
|
|
21404
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
21405
|
+
* whether persisting is worth a SQLite commit. */
|
|
21406
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
21264
21407
|
};
|
|
21265
21408
|
/**
|
|
21266
21409
|
* Ambient illuminance reading in lux. Drives Home Assistant `sensor`
|
|
@@ -21292,7 +21435,17 @@ var ambientLightSensorCapability = {
|
|
|
21292
21435
|
schema: AmbientLightSensorStatusSchema,
|
|
21293
21436
|
kind: "push"
|
|
21294
21437
|
},
|
|
21295
|
-
runtimeState: AmbientLightSensorStatusSchema
|
|
21438
|
+
runtimeState: AmbientLightSensorStatusSchema,
|
|
21439
|
+
/**
|
|
21440
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`.
|
|
21441
|
+
*
|
|
21442
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21443
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21444
|
+
*/
|
|
21445
|
+
durability: "restored",
|
|
21446
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
21447
|
+
* whether persisting is worth a SQLite commit. */
|
|
21448
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
21296
21449
|
};
|
|
21297
21450
|
/**
|
|
21298
21451
|
* Per-class audio metrics aggregated over a sliding window.
|
|
@@ -21410,7 +21563,14 @@ var audioMetricsCapability = {
|
|
|
21410
21563
|
}), AudioMetricsHistorySchema)
|
|
21411
21564
|
},
|
|
21412
21565
|
/** Reactive runtime-state mirror — live `device.state.audioMetrics.value`. */
|
|
21413
|
-
runtimeState: AudioMetricsSnapshotSchema
|
|
21566
|
+
runtimeState: AudioMetricsSnapshotSchema,
|
|
21567
|
+
/**
|
|
21568
|
+
* 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.
|
|
21569
|
+
*
|
|
21570
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21571
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21572
|
+
*/
|
|
21573
|
+
durability: "session"
|
|
21414
21574
|
};
|
|
21415
21575
|
/**
|
|
21416
21576
|
* Automation-control cap. Models HA `automation.*` entities on
|
|
@@ -21472,7 +21632,14 @@ var automationControlCapability = {
|
|
|
21472
21632
|
* reads `enabled` (toggle) + `isRunning` (spinner) + `lastError`
|
|
21473
21633
|
* (badge) directly.
|
|
21474
21634
|
*/
|
|
21475
|
-
runtimeState: AutomationControlStatusSchema
|
|
21635
|
+
runtimeState: AutomationControlStatusSchema,
|
|
21636
|
+
/**
|
|
21637
|
+
* 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.
|
|
21638
|
+
*
|
|
21639
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21640
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21641
|
+
*/
|
|
21642
|
+
durability: "session"
|
|
21476
21643
|
};
|
|
21477
21644
|
/**
|
|
21478
21645
|
* Battery status snapshot. Emitted by providers whose device is
|
|
@@ -21578,7 +21745,17 @@ onStatusChanged: { data: object({
|
|
|
21578
21745
|
* via `device.runtimeState.getCapState('battery')` regardless of
|
|
21579
21746
|
* the underlying driver.
|
|
21580
21747
|
*/
|
|
21581
|
-
runtimeState: BatteryStatusSchema
|
|
21748
|
+
runtimeState: BatteryStatusSchema,
|
|
21749
|
+
/**
|
|
21750
|
+
* 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.
|
|
21751
|
+
*
|
|
21752
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21753
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21754
|
+
*/
|
|
21755
|
+
durability: "restored",
|
|
21756
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
21757
|
+
* whether persisting is worth a SQLite commit. */
|
|
21758
|
+
volatileStateFields: ["lastUpdated"]
|
|
21582
21759
|
};
|
|
21583
21760
|
/**
|
|
21584
21761
|
* Generic boolean sensor — last-resort fallback when no domain-
|
|
@@ -21607,7 +21784,17 @@ var binaryCapability = {
|
|
|
21607
21784
|
schema: BinaryStatusSchema,
|
|
21608
21785
|
kind: "push"
|
|
21609
21786
|
},
|
|
21610
|
-
runtimeState: BinaryStatusSchema
|
|
21787
|
+
runtimeState: BinaryStatusSchema,
|
|
21788
|
+
/**
|
|
21789
|
+
* Runtime-state durability: **restored** — transition-driven sensor state; the restored value gives the boot comparison.
|
|
21790
|
+
*
|
|
21791
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21792
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21793
|
+
*/
|
|
21794
|
+
durability: "restored",
|
|
21795
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
21796
|
+
* whether persisting is worth a SQLite commit. */
|
|
21797
|
+
volatileStateFields: ["lastChangedAt"]
|
|
21611
21798
|
};
|
|
21612
21799
|
/**
|
|
21613
21800
|
* Dimmable-light brightness control. Co-exists with `switch` on the
|
|
@@ -21660,7 +21847,14 @@ onBrightnessChanged: { data: object({
|
|
|
21660
21847
|
* by the kernel. Read via `device.state.brightness.value` so UI
|
|
21661
21848
|
* sliders surface the current level without polling the provider.
|
|
21662
21849
|
*/
|
|
21663
|
-
runtimeState: BrightnessStatusSchema
|
|
21850
|
+
runtimeState: BrightnessStatusSchema,
|
|
21851
|
+
/**
|
|
21852
|
+
* Runtime-state durability: **session** — live lamp state, re-published by the provider on connect.
|
|
21853
|
+
*
|
|
21854
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21855
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21856
|
+
*/
|
|
21857
|
+
durability: "session"
|
|
21664
21858
|
};
|
|
21665
21859
|
DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
21666
21860
|
kind: "mutation",
|
|
@@ -21748,7 +21942,17 @@ var carbonMonoxideCapability = {
|
|
|
21748
21942
|
schema: CarbonMonoxideStatusSchema,
|
|
21749
21943
|
kind: "push"
|
|
21750
21944
|
},
|
|
21751
|
-
runtimeState: CarbonMonoxideStatusSchema
|
|
21945
|
+
runtimeState: CarbonMonoxideStatusSchema,
|
|
21946
|
+
/**
|
|
21947
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
21948
|
+
*
|
|
21949
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
21950
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
21951
|
+
*/
|
|
21952
|
+
durability: "restored",
|
|
21953
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
21954
|
+
* whether persisting is worth a SQLite commit. */
|
|
21955
|
+
volatileStateFields: ["lastChangedAt"]
|
|
21752
21956
|
};
|
|
21753
21957
|
/**
|
|
21754
21958
|
* HVAC / climate control cap. Models the full surface of a HA
|
|
@@ -21908,7 +22112,14 @@ var climateControlCapability = {
|
|
|
21908
22112
|
* the full slice via `device.state.climate-control.value` and refresh
|
|
21909
22113
|
* on every push without re-querying the provider.
|
|
21910
22114
|
*/
|
|
21911
|
-
runtimeState: ClimateControlStatusSchema
|
|
22115
|
+
runtimeState: ClimateControlStatusSchema,
|
|
22116
|
+
/**
|
|
22117
|
+
* Runtime-state durability: **session** — as `brightness`; `currentTemp` moves continuously and is re-published on connect.
|
|
22118
|
+
*
|
|
22119
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22120
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22121
|
+
*/
|
|
22122
|
+
durability: "session"
|
|
21912
22123
|
};
|
|
21913
22124
|
/**
|
|
21914
22125
|
* Color-light cap. Coexists with `switch` (on/off) and `brightness`
|
|
@@ -22018,7 +22229,14 @@ onColorChanged: { data: object({
|
|
|
22018
22229
|
* kernel. Read via `device.state.color.value` so UI pickers surface
|
|
22019
22230
|
* the current chromaticity without polling the provider.
|
|
22020
22231
|
*/
|
|
22021
|
-
runtimeState: ColorStatusSchema
|
|
22232
|
+
runtimeState: ColorStatusSchema,
|
|
22233
|
+
/**
|
|
22234
|
+
* Runtime-state durability: **session** — as `brightness`.
|
|
22235
|
+
*
|
|
22236
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22237
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22238
|
+
*/
|
|
22239
|
+
durability: "session"
|
|
22022
22240
|
};
|
|
22023
22241
|
var ConnectionTestOutcomeSchema = discriminatedUnion("outcome", [
|
|
22024
22242
|
object({
|
|
@@ -22076,7 +22294,17 @@ var connectivityCapability = {
|
|
|
22076
22294
|
schema: ConnectivityStatusSchema,
|
|
22077
22295
|
kind: "push"
|
|
22078
22296
|
},
|
|
22079
|
-
runtimeState: ConnectivityStatusSchema
|
|
22297
|
+
runtimeState: ConnectivityStatusSchema,
|
|
22298
|
+
/**
|
|
22299
|
+
* Runtime-state durability: **restored** — same shape and same argument as `device-status`, for links rather than devices.
|
|
22300
|
+
*
|
|
22301
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22302
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22303
|
+
*/
|
|
22304
|
+
durability: "restored",
|
|
22305
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
22306
|
+
* whether persisting is worth a SQLite commit. */
|
|
22307
|
+
volatileStateFields: ["lastChangedAt"]
|
|
22080
22308
|
};
|
|
22081
22309
|
/**
|
|
22082
22310
|
* Generic device-consumables capability — surfaces a device's
|
|
@@ -22158,7 +22386,14 @@ reset: method(object({
|
|
|
22158
22386
|
}
|
|
22159
22387
|
}
|
|
22160
22388
|
},
|
|
22161
|
-
runtimeState: ConsumablesStatusSchema.extend({ lastFetchedAt: number() })
|
|
22389
|
+
runtimeState: ConsumablesStatusSchema.extend({ lastFetchedAt: number() }),
|
|
22390
|
+
/**
|
|
22391
|
+
* Runtime-state durability: **session** — the authority is the appliance; the provider re-reads the whole item array on connect.
|
|
22392
|
+
*
|
|
22393
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22394
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22395
|
+
*/
|
|
22396
|
+
durability: "session"
|
|
22162
22397
|
};
|
|
22163
22398
|
/**
|
|
22164
22399
|
* Door / window / opening / garage / valve contact sensor. Boolean
|
|
@@ -22189,7 +22424,17 @@ var contactCapability = {
|
|
|
22189
22424
|
schema: ContactStatusSchema,
|
|
22190
22425
|
kind: "push"
|
|
22191
22426
|
},
|
|
22192
|
-
runtimeState: ContactStatusSchema
|
|
22427
|
+
runtimeState: ContactStatusSchema,
|
|
22428
|
+
/**
|
|
22429
|
+
* Runtime-state durability: **restored** — a door left open across a restart must still read open.
|
|
22430
|
+
*
|
|
22431
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22432
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22433
|
+
*/
|
|
22434
|
+
durability: "restored",
|
|
22435
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
22436
|
+
* whether persisting is worth a SQLite commit. */
|
|
22437
|
+
volatileStateFields: ["lastChangedAt"]
|
|
22193
22438
|
};
|
|
22194
22439
|
/**
|
|
22195
22440
|
* Status slice — flat object (the framework's `runtimeState` contract
|
|
@@ -22295,7 +22540,14 @@ var controlCapability = {
|
|
|
22295
22540
|
* dropdown / text field / date picker) read the slice's discriminant
|
|
22296
22541
|
* and value directly without polling the provider.
|
|
22297
22542
|
*/
|
|
22298
|
-
runtimeState: ControlStatusSchema
|
|
22543
|
+
runtimeState: ControlStatusSchema,
|
|
22544
|
+
/**
|
|
22545
|
+
* Runtime-state durability: **session** — a generic control mirrors an external entity that re-publishes on connect; the options array is re-derived with it.
|
|
22546
|
+
*
|
|
22547
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22548
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22549
|
+
*/
|
|
22550
|
+
durability: "session"
|
|
22299
22551
|
};
|
|
22300
22552
|
var CoverStatusSchema = object({
|
|
22301
22553
|
/** Lifecycle state of the cover. */
|
|
@@ -22356,7 +22608,17 @@ var coverCapability = {
|
|
|
22356
22608
|
* Runtime-state slice — mirrored by the kernel. UI controls watch
|
|
22357
22609
|
* the slice for live position changes during a move.
|
|
22358
22610
|
*/
|
|
22359
|
-
runtimeState: CoverStatusSchema
|
|
22611
|
+
runtimeState: CoverStatusSchema,
|
|
22612
|
+
/**
|
|
22613
|
+
* Runtime-state durability: **restored** — position survives a restart on the device; the mirror should agree at boot rather than read blank.
|
|
22614
|
+
*
|
|
22615
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22616
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22617
|
+
*/
|
|
22618
|
+
durability: "restored",
|
|
22619
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
22620
|
+
* whether persisting is worth a SQLite commit. */
|
|
22621
|
+
volatileStateFields: ["lastChangedAt"]
|
|
22360
22622
|
};
|
|
22361
22623
|
/**
|
|
22362
22624
|
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
@@ -22450,7 +22712,17 @@ var dayNightCapability = {
|
|
|
22450
22712
|
schema: DayNightStatusSchema,
|
|
22451
22713
|
kind: "poll"
|
|
22452
22714
|
},
|
|
22453
|
-
runtimeState: DayNightStatusSchema
|
|
22715
|
+
runtimeState: DayNightStatusSchema,
|
|
22716
|
+
/**
|
|
22717
|
+
* Runtime-state durability: **restored** — operator-set IR-cut behaviour; mutation-driven.
|
|
22718
|
+
*
|
|
22719
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22720
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22721
|
+
*/
|
|
22722
|
+
durability: "restored",
|
|
22723
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
22724
|
+
* whether persisting is worth a SQLite commit. */
|
|
22725
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
22454
22726
|
};
|
|
22455
22727
|
/**
|
|
22456
22728
|
* Generic device-level status snapshot. Auto-registered by `BaseDevice`
|
|
@@ -22497,7 +22769,17 @@ onStatusChanged: { data: object({
|
|
|
22497
22769
|
schema: DeviceStatusSchema,
|
|
22498
22770
|
kind: "push"
|
|
22499
22771
|
},
|
|
22500
|
-
runtimeState: DeviceStatusSchema
|
|
22772
|
+
runtimeState: DeviceStatusSchema,
|
|
22773
|
+
/**
|
|
22774
|
+
* 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.
|
|
22775
|
+
*
|
|
22776
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22777
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22778
|
+
*/
|
|
22779
|
+
durability: "restored",
|
|
22780
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
22781
|
+
* whether persisting is worth a SQLite commit. */
|
|
22782
|
+
volatileStateFields: ["lastChangedAt"]
|
|
22501
22783
|
};
|
|
22502
22784
|
/**
|
|
22503
22785
|
* Doorbell button cap. Two kinds of providers coexist behind this cap
|
|
@@ -22559,7 +22841,14 @@ onPressed: { data: DoorbellPressEventSchema } },
|
|
|
22559
22841
|
* `device.state.doorbell.value`. UIs can show "last ring 5m ago"
|
|
22560
22842
|
* without subscribing.
|
|
22561
22843
|
*/
|
|
22562
|
-
runtimeState: DoorbellStatusSchema
|
|
22844
|
+
runtimeState: DoorbellStatusSchema,
|
|
22845
|
+
/**
|
|
22846
|
+
* 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.
|
|
22847
|
+
*
|
|
22848
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22849
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22850
|
+
*/
|
|
22851
|
+
durability: "restored"
|
|
22563
22852
|
};
|
|
22564
22853
|
/**
|
|
22565
22854
|
* Enum-state sensor — a string value picked from a finite option set.
|
|
@@ -22599,7 +22888,17 @@ var enumSensorCapability = {
|
|
|
22599
22888
|
schema: EnumSensorStatusSchema,
|
|
22600
22889
|
kind: "push"
|
|
22601
22890
|
},
|
|
22602
|
-
runtimeState: EnumSensorStatusSchema
|
|
22891
|
+
runtimeState: EnumSensorStatusSchema,
|
|
22892
|
+
/**
|
|
22893
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`; 80 devices.
|
|
22894
|
+
*
|
|
22895
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22896
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22897
|
+
*/
|
|
22898
|
+
durability: "restored",
|
|
22899
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
22900
|
+
* whether persisting is worth a SQLite commit. */
|
|
22901
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
22603
22902
|
};
|
|
22604
22903
|
/**
|
|
22605
22904
|
* Generic stateless event emitter. Installed on a `DeviceType.EventEmitter`
|
|
@@ -22635,7 +22934,14 @@ var eventEmitterCapability = {
|
|
|
22635
22934
|
schema: EventEmitterStatusSchema,
|
|
22636
22935
|
kind: "push"
|
|
22637
22936
|
},
|
|
22638
|
-
runtimeState: EventEmitterStatusSchema
|
|
22937
|
+
runtimeState: EventEmitterStatusSchema,
|
|
22938
|
+
/**
|
|
22939
|
+
* Runtime-state durability: **session** — `eventCountSinceStart` names its own scope.
|
|
22940
|
+
*
|
|
22941
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
22942
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
22943
|
+
*/
|
|
22944
|
+
durability: "session"
|
|
22639
22945
|
};
|
|
22640
22946
|
var EventItemSchema = object({
|
|
22641
22947
|
id: string(),
|
|
@@ -22942,7 +23248,14 @@ var fanControlCapability = {
|
|
|
22942
23248
|
* Runtime-state slice — mirrored by the kernel. UI fan speed
|
|
22943
23249
|
* sliders read `percentage` for live updates.
|
|
22944
23250
|
*/
|
|
22945
|
-
runtimeState: FanControlStatusSchema
|
|
23251
|
+
runtimeState: FanControlStatusSchema,
|
|
23252
|
+
/**
|
|
23253
|
+
* Runtime-state durability: **session** — as `brightness`.
|
|
23254
|
+
*
|
|
23255
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23256
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23257
|
+
*/
|
|
23258
|
+
durability: "session"
|
|
22946
23259
|
};
|
|
22947
23260
|
/**
|
|
22948
23261
|
* Per-device feature/identity probe slice. Holds the runtime-resolved
|
|
@@ -23018,7 +23331,14 @@ onProbeChanged: { data: object({
|
|
|
23018
23331
|
schema: FeatureProbeStatusSchema,
|
|
23019
23332
|
kind: "push"
|
|
23020
23333
|
},
|
|
23021
|
-
runtimeState: FeatureProbeStatusSchema
|
|
23334
|
+
runtimeState: FeatureProbeStatusSchema,
|
|
23335
|
+
/**
|
|
23336
|
+
* 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.
|
|
23337
|
+
*
|
|
23338
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23339
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23340
|
+
*/
|
|
23341
|
+
durability: "session"
|
|
23022
23342
|
};
|
|
23023
23343
|
/**
|
|
23024
23344
|
* Water leak / moisture sensor. Boolean "is liquid currently
|
|
@@ -23045,7 +23365,17 @@ var floodCapability = {
|
|
|
23045
23365
|
schema: FloodStatusSchema,
|
|
23046
23366
|
kind: "push"
|
|
23047
23367
|
},
|
|
23048
|
-
runtimeState: FloodStatusSchema
|
|
23368
|
+
runtimeState: FloodStatusSchema,
|
|
23369
|
+
/**
|
|
23370
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
23371
|
+
*
|
|
23372
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23373
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23374
|
+
*/
|
|
23375
|
+
durability: "restored",
|
|
23376
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
23377
|
+
* whether persisting is worth a SQLite commit. */
|
|
23378
|
+
volatileStateFields: ["lastChangedAt"]
|
|
23049
23379
|
};
|
|
23050
23380
|
/**
|
|
23051
23381
|
* Combustible-gas (LPG / methane / hydrogen) alarm sensor. Drives
|
|
@@ -23068,7 +23398,17 @@ var gasCapability = {
|
|
|
23068
23398
|
schema: GasStatusSchema,
|
|
23069
23399
|
kind: "push"
|
|
23070
23400
|
},
|
|
23071
|
-
runtimeState: GasStatusSchema
|
|
23401
|
+
runtimeState: GasStatusSchema,
|
|
23402
|
+
/**
|
|
23403
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
23404
|
+
*
|
|
23405
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23406
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23407
|
+
*/
|
|
23408
|
+
durability: "restored",
|
|
23409
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
23410
|
+
* whether persisting is worth a SQLite commit. */
|
|
23411
|
+
volatileStateFields: ["lastChangedAt"]
|
|
23072
23412
|
};
|
|
23073
23413
|
/**
|
|
23074
23414
|
* Humidifier / dehumidifier cap. Models HA `humidifier.*` entities —
|
|
@@ -23144,7 +23484,14 @@ var humidifierCapability = {
|
|
|
23144
23484
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
23145
23485
|
* slice for live humidity / mode changes.
|
|
23146
23486
|
*/
|
|
23147
|
-
runtimeState: HumidifierStatusSchema
|
|
23487
|
+
runtimeState: HumidifierStatusSchema,
|
|
23488
|
+
/**
|
|
23489
|
+
* Runtime-state durability: **session** — as `climate-control`.
|
|
23490
|
+
*
|
|
23491
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23492
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23493
|
+
*/
|
|
23494
|
+
durability: "session"
|
|
23148
23495
|
};
|
|
23149
23496
|
/**
|
|
23150
23497
|
* Single-metric humidity reading. Drives Home Assistant `sensor`
|
|
@@ -23180,7 +23527,17 @@ var humiditySensorCapability = {
|
|
|
23180
23527
|
schema: HumiditySensorStatusSchema,
|
|
23181
23528
|
kind: "push"
|
|
23182
23529
|
},
|
|
23183
|
-
runtimeState: HumiditySensorStatusSchema
|
|
23530
|
+
runtimeState: HumiditySensorStatusSchema,
|
|
23531
|
+
/**
|
|
23532
|
+
* Runtime-state durability: **restored** — as `numeric-sensor` (67 of 75 writes were the clock alone).
|
|
23533
|
+
*
|
|
23534
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23535
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23536
|
+
*/
|
|
23537
|
+
durability: "restored",
|
|
23538
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
23539
|
+
* whether persisting is worth a SQLite commit. */
|
|
23540
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
23184
23541
|
};
|
|
23185
23542
|
/**
|
|
23186
23543
|
* Image display cap. Models a single still image exposed by an integration —
|
|
@@ -23218,7 +23575,14 @@ var imageCapability = {
|
|
|
23218
23575
|
* Runtime-state slice — mirrored by the kernel. The UI reads `url`
|
|
23219
23576
|
* directly and renders the still image.
|
|
23220
23577
|
*/
|
|
23221
|
-
runtimeState: ImageStatusSchema
|
|
23578
|
+
runtimeState: ImageStatusSchema,
|
|
23579
|
+
/**
|
|
23580
|
+
* Runtime-state durability: **session** — a snapshot URL is a session-scoped handle; a restored one points at nothing.
|
|
23581
|
+
*
|
|
23582
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23583
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23584
|
+
*/
|
|
23585
|
+
durability: "session"
|
|
23222
23586
|
};
|
|
23223
23587
|
/**
|
|
23224
23588
|
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
@@ -23367,7 +23731,17 @@ var imageSettingsCapability = {
|
|
|
23367
23731
|
schema: ImageSettingsStatusSchema,
|
|
23368
23732
|
kind: "poll"
|
|
23369
23733
|
},
|
|
23370
|
-
runtimeState: ImageSettingsStatusSchema
|
|
23734
|
+
runtimeState: ImageSettingsStatusSchema,
|
|
23735
|
+
/**
|
|
23736
|
+
* Runtime-state durability: **restored** — operator-set camera imaging; mutation-driven.
|
|
23737
|
+
*
|
|
23738
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23739
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23740
|
+
*/
|
|
23741
|
+
durability: "restored",
|
|
23742
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
23743
|
+
* whether persisting is worth a SQLite commit. */
|
|
23744
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
23371
23745
|
};
|
|
23372
23746
|
/**
|
|
23373
23747
|
* integrations — system-scoped singleton capability for integration
|
|
@@ -23707,7 +24081,14 @@ var lawnMowerControlCapability = {
|
|
|
23707
24081
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
23708
24082
|
* slice for live activity + battery changes.
|
|
23709
24083
|
*/
|
|
23710
|
-
runtimeState: LawnMowerControlStatusSchema
|
|
24084
|
+
runtimeState: LawnMowerControlStatusSchema,
|
|
24085
|
+
/**
|
|
24086
|
+
* Runtime-state durability: **session** — as `vacuum-control`.
|
|
24087
|
+
*
|
|
24088
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
24089
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
24090
|
+
*/
|
|
24091
|
+
durability: "session"
|
|
23711
24092
|
};
|
|
23712
24093
|
/**
|
|
23713
24094
|
* local-network — hub-only singleton.
|
|
@@ -23913,7 +24294,17 @@ var lockControlCapability = {
|
|
|
23913
24294
|
* read `state` and disable themselves during `locking`/`unlocking`
|
|
23914
24295
|
* transitions.
|
|
23915
24296
|
*/
|
|
23916
|
-
runtimeState: LockControlStatusSchema
|
|
24297
|
+
runtimeState: LockControlStatusSchema,
|
|
24298
|
+
/**
|
|
24299
|
+
* Runtime-state durability: **restored** — a lock left locked must still read locked.
|
|
24300
|
+
*
|
|
24301
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
24302
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
24303
|
+
*/
|
|
24304
|
+
durability: "restored",
|
|
24305
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
24306
|
+
* whether persisting is worth a SQLite commit. */
|
|
24307
|
+
volatileStateFields: ["lastChangedAt"]
|
|
23917
24308
|
};
|
|
23918
24309
|
/**
|
|
23919
24310
|
* Media-player cap. Models HA `media_player.*` (Sonos, Chromecast,
|
|
@@ -24075,7 +24466,14 @@ var mediaPlayerCapability = {
|
|
|
24075
24466
|
* full slice for live now-playing, volume, and progress updates
|
|
24076
24467
|
* without polling.
|
|
24077
24468
|
*/
|
|
24078
|
-
runtimeState: MediaPlayerStatusSchema
|
|
24469
|
+
runtimeState: MediaPlayerStatusSchema,
|
|
24470
|
+
/**
|
|
24471
|
+
* Runtime-state durability: **session** — a restored transport position describes a playback that stopped when the hub did.
|
|
24472
|
+
*
|
|
24473
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
24474
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
24475
|
+
*/
|
|
24476
|
+
durability: "session"
|
|
24079
24477
|
};
|
|
24080
24478
|
/**
|
|
24081
24479
|
* mesh-network — collection cap for mesh-VPN providers.
|
|
@@ -24339,7 +24737,14 @@ onMotionChanged: { data: MotionOnMotionChangedDataSchema } },
|
|
|
24339
24737
|
* `device.state.motion.value`. Reads never invoke the provider, so
|
|
24340
24738
|
* UIs and other addons can poll the cached state safely.
|
|
24341
24739
|
*/
|
|
24342
|
-
runtimeState: MotionStatusSchema
|
|
24740
|
+
runtimeState: MotionStatusSchema,
|
|
24741
|
+
/**
|
|
24742
|
+
* 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.
|
|
24743
|
+
*
|
|
24744
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
24745
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
24746
|
+
*/
|
|
24747
|
+
durability: "session"
|
|
24343
24748
|
};
|
|
24344
24749
|
/**
|
|
24345
24750
|
* Motion-trigger toggle for accessory devices.
|
|
@@ -24404,7 +24809,14 @@ var motionTriggerCapability = {
|
|
|
24404
24809
|
schema: MotionTriggerStatusSchema,
|
|
24405
24810
|
kind: "command-driven"
|
|
24406
24811
|
},
|
|
24407
|
-
runtimeState: MotionTriggerRuntimeStateSchema
|
|
24812
|
+
runtimeState: MotionTriggerRuntimeStateSchema,
|
|
24813
|
+
/**
|
|
24814
|
+
* 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.
|
|
24815
|
+
*
|
|
24816
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
24817
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
24818
|
+
*/
|
|
24819
|
+
durability: "session"
|
|
24408
24820
|
};
|
|
24409
24821
|
/**
|
|
24410
24822
|
* Motion-zones share the same MaskShape vocabulary as privacy-mask — the
|
|
@@ -24471,7 +24883,17 @@ var motionZonesCapability = {
|
|
|
24471
24883
|
schema: MotionZoneStatusSchema,
|
|
24472
24884
|
kind: "poll"
|
|
24473
24885
|
},
|
|
24474
|
-
runtimeState: MotionZoneStatusSchema
|
|
24886
|
+
runtimeState: MotionZoneStatusSchema,
|
|
24887
|
+
/**
|
|
24888
|
+
* 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.
|
|
24889
|
+
*
|
|
24890
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
24891
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
24892
|
+
*/
|
|
24893
|
+
durability: "restored",
|
|
24894
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
24895
|
+
* whether persisting is worth a SQLite commit. */
|
|
24896
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
24475
24897
|
};
|
|
24476
24898
|
/**
|
|
24477
24899
|
* On-camera AI object detection cap. Surfaces per-device the classes
|
|
@@ -24545,7 +24967,17 @@ var nativeObjectDetectionCapability = {
|
|
|
24545
24967
|
schema: NativeObjectDetectionStatusSchema,
|
|
24546
24968
|
kind: "push"
|
|
24547
24969
|
},
|
|
24548
|
-
runtimeState: NativeObjectDetectionRuntimeStateSchema
|
|
24970
|
+
runtimeState: NativeObjectDetectionRuntimeStateSchema,
|
|
24971
|
+
/**
|
|
24972
|
+
* 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.
|
|
24973
|
+
*
|
|
24974
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
24975
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
24976
|
+
*/
|
|
24977
|
+
durability: "restored",
|
|
24978
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
24979
|
+
* whether persisting is worth a SQLite commit. */
|
|
24980
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
24549
24981
|
};
|
|
24550
24982
|
/**
|
|
24551
24983
|
* network-quality — system-scoped singleton capability tracking RTT,
|
|
@@ -24879,7 +25311,14 @@ onSent: { data: object({
|
|
|
24879
25311
|
* form reads `supports` to gate optional fields; history pane reads
|
|
24880
25312
|
* `lastSentAt` / `lastError` / `queueDepth`.
|
|
24881
25313
|
*/
|
|
24882
|
-
runtimeState: NotifierStatusSchema
|
|
25314
|
+
runtimeState: NotifierStatusSchema,
|
|
25315
|
+
/**
|
|
25316
|
+
* Runtime-state durability: **session** — live queue depth and last-send state; a restored queue depth describes a queue that no longer exists.
|
|
25317
|
+
*
|
|
25318
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
25319
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
25320
|
+
*/
|
|
25321
|
+
durability: "session"
|
|
24883
25322
|
};
|
|
24884
25323
|
/**
|
|
24885
25324
|
* Generic numeric sensor — last-resort fallback when no typed numeric
|
|
@@ -24922,7 +25361,17 @@ var numericSensorCapability = {
|
|
|
24922
25361
|
schema: NumericSensorStatusSchema,
|
|
24923
25362
|
kind: "push"
|
|
24924
25363
|
},
|
|
24925
|
-
runtimeState: NumericSensorStatusSchema
|
|
25364
|
+
runtimeState: NumericSensorStatusSchema,
|
|
25365
|
+
/**
|
|
25366
|
+
* 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.
|
|
25367
|
+
*
|
|
25368
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
25369
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
25370
|
+
*/
|
|
25371
|
+
durability: "restored",
|
|
25372
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
25373
|
+
* whether persisting is worth a SQLite commit. */
|
|
25374
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
24926
25375
|
};
|
|
24927
25376
|
/**
|
|
24928
25377
|
* Generic on-screen-display (video overlay) cap. Each camera exposes
|
|
@@ -25307,7 +25756,14 @@ var petFeederCapability = {
|
|
|
25307
25756
|
* the full slice via `device.state.petFeeder.value` and refresh on
|
|
25308
25757
|
* every poll without re-querying the provider.
|
|
25309
25758
|
*/
|
|
25310
|
-
runtimeState: PetFeederStatusSchema
|
|
25759
|
+
runtimeState: PetFeederStatusSchema,
|
|
25760
|
+
/**
|
|
25761
|
+
* Runtime-state durability: **session** — live appliance state re-published on connect.
|
|
25762
|
+
*
|
|
25763
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
25764
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
25765
|
+
*/
|
|
25766
|
+
durability: "session"
|
|
25311
25767
|
};
|
|
25312
25768
|
var VehicleSchema = object({
|
|
25313
25769
|
id: string(),
|
|
@@ -25653,7 +26109,17 @@ var powerMeterCapability = {
|
|
|
25653
26109
|
schema: PowerMeterStatusSchema,
|
|
25654
26110
|
kind: "push"
|
|
25655
26111
|
},
|
|
25656
|
-
runtimeState: PowerMeterStatusSchema
|
|
26112
|
+
runtimeState: PowerMeterStatusSchema,
|
|
26113
|
+
/**
|
|
26114
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`; `kwhTotal` is an accumulator whose restored value is the baseline.
|
|
26115
|
+
*
|
|
26116
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
26117
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
26118
|
+
*/
|
|
26119
|
+
durability: "restored",
|
|
26120
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
26121
|
+
* whether persisting is worth a SQLite commit. */
|
|
26122
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
25657
26123
|
};
|
|
25658
26124
|
/**
|
|
25659
26125
|
* Presence cap. Models HA `person.*` and `device_tracker.*` entities
|
|
@@ -25710,7 +26176,17 @@ var presenceCapability = {
|
|
|
25710
26176
|
* the map pin is rendered (use `DeviceFeature.PresenceGps` for the
|
|
25711
26177
|
* pre-fetch fast-path check).
|
|
25712
26178
|
*/
|
|
25713
|
-
runtimeState: PresenceStatusSchema
|
|
26179
|
+
runtimeState: PresenceStatusSchema,
|
|
26180
|
+
/**
|
|
26181
|
+
* Runtime-state durability: **restored** — occupancy-relevant: the restored state is what an occupancy rule compares the first post-restart observation against.
|
|
26182
|
+
*
|
|
26183
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
26184
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
26185
|
+
*/
|
|
26186
|
+
durability: "restored",
|
|
26187
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
26188
|
+
* whether persisting is worth a SQLite commit. */
|
|
26189
|
+
volatileStateFields: ["lastChangedAt"]
|
|
25714
26190
|
};
|
|
25715
26191
|
/**
|
|
25716
26192
|
* Atmospheric pressure reading in hectopascals. Drives Home Assistant
|
|
@@ -25746,7 +26222,17 @@ var pressureSensorCapability = {
|
|
|
25746
26222
|
schema: PressureSensorStatusSchema,
|
|
25747
26223
|
kind: "push"
|
|
25748
26224
|
},
|
|
25749
|
-
runtimeState: PressureSensorStatusSchema
|
|
26225
|
+
runtimeState: PressureSensorStatusSchema,
|
|
26226
|
+
/**
|
|
26227
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`.
|
|
26228
|
+
*
|
|
26229
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
26230
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
26231
|
+
*/
|
|
26232
|
+
durability: "restored",
|
|
26233
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
26234
|
+
* whether persisting is worth a SQLite commit. */
|
|
26235
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
25750
26236
|
};
|
|
25751
26237
|
/**
|
|
25752
26238
|
* PRIVACY — what the camera deliberately does not capture. Two planes:
|
|
@@ -25876,7 +26362,17 @@ var privacyMaskCapability = {
|
|
|
25876
26362
|
schema: PrivacyMaskStatusSchema,
|
|
25877
26363
|
kind: "poll"
|
|
25878
26364
|
},
|
|
25879
|
-
runtimeState: PrivacyMaskStatusSchema
|
|
26365
|
+
runtimeState: PrivacyMaskStatusSchema,
|
|
26366
|
+
/**
|
|
26367
|
+
* Runtime-state durability: **restored** — operator-drawn regions, zero real churn — 22 writes in 25 minutes, every one of them the clock.
|
|
26368
|
+
*
|
|
26369
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
26370
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
26371
|
+
*/
|
|
26372
|
+
durability: "restored",
|
|
26373
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
26374
|
+
* whether persisting is worth a SQLite commit. */
|
|
26375
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
25880
26376
|
};
|
|
25881
26377
|
var PtzPresetSchema = object({
|
|
25882
26378
|
id: string(),
|
|
@@ -26042,7 +26538,14 @@ var ptzAutotrackCapability = {
|
|
|
26042
26538
|
* fetch / cache / fallback logic out of the four cap methods —
|
|
26043
26539
|
* they become trampolines over `runtimeState`.
|
|
26044
26540
|
*/
|
|
26045
|
-
runtimeState: PtzAutotrackRuntimeStateSchema
|
|
26541
|
+
runtimeState: PtzAutotrackRuntimeStateSchema,
|
|
26542
|
+
/**
|
|
26543
|
+
* Runtime-state durability: **session** — mirrors the camera's own autotrack config, re-read on connect.
|
|
26544
|
+
*
|
|
26545
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
26546
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
26547
|
+
*/
|
|
26548
|
+
durability: "session"
|
|
26046
26549
|
};
|
|
26047
26550
|
DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
|
|
26048
26551
|
kind: "mutation",
|
|
@@ -26711,7 +27214,14 @@ var sceneMonitorCapability = {
|
|
|
26711
27214
|
schema: SceneMonitorStatusSchema,
|
|
26712
27215
|
kind: "push"
|
|
26713
27216
|
},
|
|
26714
|
-
runtimeState: SceneMonitorStatusSchema
|
|
27217
|
+
runtimeState: SceneMonitorStatusSchema,
|
|
27218
|
+
/**
|
|
27219
|
+
* Runtime-state durability: **session** — re-derived from the current scene on the next evaluation.
|
|
27220
|
+
*
|
|
27221
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27222
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27223
|
+
*/
|
|
27224
|
+
durability: "session"
|
|
26715
27225
|
};
|
|
26716
27226
|
/**
|
|
26717
27227
|
* Per-stage gating mode applied to the zones a rule references.
|
|
@@ -26855,7 +27365,14 @@ var scriptRunnerCapability = {
|
|
|
26855
27365
|
* `isRunning` to render a spinner during execution and surfaces
|
|
26856
27366
|
* `lastError` / `lastRunSuccess` in the recent-runs panel.
|
|
26857
27367
|
*/
|
|
26858
|
-
runtimeState: ScriptRunnerStatusSchema
|
|
27368
|
+
runtimeState: ScriptRunnerStatusSchema,
|
|
27369
|
+
/**
|
|
27370
|
+
* Runtime-state durability: **session** — a restored `isRunning: true` describes a process that died with the previous hub.
|
|
27371
|
+
*
|
|
27372
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27373
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27374
|
+
*/
|
|
27375
|
+
durability: "session"
|
|
26859
27376
|
};
|
|
26860
27377
|
/**
|
|
26861
27378
|
* Smoke alarm sensor — boolean "is smoke currently detected" with
|
|
@@ -26882,7 +27399,17 @@ var smokeCapability = {
|
|
|
26882
27399
|
schema: SmokeStatusSchema,
|
|
26883
27400
|
kind: "push"
|
|
26884
27401
|
},
|
|
26885
|
-
runtimeState: SmokeStatusSchema
|
|
27402
|
+
runtimeState: SmokeStatusSchema,
|
|
27403
|
+
/**
|
|
27404
|
+
* Runtime-state durability: **restored** — a safety sensor must not read "clear" merely because the hub restarted.
|
|
27405
|
+
*
|
|
27406
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27407
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27408
|
+
*/
|
|
27409
|
+
durability: "restored",
|
|
27410
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
27411
|
+
* whether persisting is worth a SQLite commit. */
|
|
27412
|
+
volatileStateFields: ["lastChangedAt"]
|
|
26886
27413
|
};
|
|
26887
27414
|
/**
|
|
26888
27415
|
* One publishable camera stream as its OWNING PROVIDER describes it — the same
|
|
@@ -27055,7 +27582,17 @@ var streamParamsCapability = {
|
|
|
27055
27582
|
schema: StreamParamsStatusSchema,
|
|
27056
27583
|
kind: "poll"
|
|
27057
27584
|
},
|
|
27058
|
-
runtimeState: StreamParamsStatusSchema
|
|
27585
|
+
runtimeState: StreamParamsStatusSchema,
|
|
27586
|
+
/**
|
|
27587
|
+
* Runtime-state durability: **restored** — operator-set encoder profile; mutation-driven.
|
|
27588
|
+
*
|
|
27589
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27590
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27591
|
+
*/
|
|
27592
|
+
durability: "restored",
|
|
27593
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
27594
|
+
* whether persisting is worth a SQLite commit. */
|
|
27595
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
27059
27596
|
};
|
|
27060
27597
|
/**
|
|
27061
27598
|
* Generic on/off switch cap for accessory children (siren, floodlight,
|
|
@@ -27101,6 +27638,16 @@ var switchCapability = {
|
|
|
27101
27638
|
* not need to re-query the provider after a setState mutation.
|
|
27102
27639
|
*/
|
|
27103
27640
|
runtimeState: SwitchStatusSchema,
|
|
27641
|
+
/**
|
|
27642
|
+
* Runtime-state durability: **restored** — device state an operator reads as authoritative; 55 devices, transition-driven.
|
|
27643
|
+
*
|
|
27644
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27645
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27646
|
+
*/
|
|
27647
|
+
durability: "restored",
|
|
27648
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
27649
|
+
* whether persisting is worth a SQLite commit. */
|
|
27650
|
+
volatileStateFields: ["lastChangedAt"],
|
|
27104
27651
|
settings: { bindings: [{
|
|
27105
27652
|
kind: "scalar",
|
|
27106
27653
|
statusPath: "on",
|
|
@@ -27180,7 +27727,17 @@ var tamperCapability = {
|
|
|
27180
27727
|
schema: TamperStatusSchema,
|
|
27181
27728
|
kind: "push"
|
|
27182
27729
|
},
|
|
27183
|
-
runtimeState: TamperStatusSchema
|
|
27730
|
+
runtimeState: TamperStatusSchema,
|
|
27731
|
+
/**
|
|
27732
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
27733
|
+
*
|
|
27734
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27735
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27736
|
+
*/
|
|
27737
|
+
durability: "restored",
|
|
27738
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
27739
|
+
* whether persisting is worth a SQLite commit. */
|
|
27740
|
+
volatileStateFields: ["lastChangedAt"]
|
|
27184
27741
|
};
|
|
27185
27742
|
/**
|
|
27186
27743
|
* Single-metric temperature reading. Drives Home Assistant `sensor`
|
|
@@ -27225,7 +27782,17 @@ var temperatureSensorCapability = {
|
|
|
27225
27782
|
schema: TemperatureSensorStatusSchema,
|
|
27226
27783
|
kind: "push"
|
|
27227
27784
|
},
|
|
27228
|
-
runtimeState: TemperatureSensorStatusSchema
|
|
27785
|
+
runtimeState: TemperatureSensorStatusSchema,
|
|
27786
|
+
/**
|
|
27787
|
+
* Runtime-state durability: **restored** — as `numeric-sensor` (69 of 125 writes were the clock alone).
|
|
27788
|
+
*
|
|
27789
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27790
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27791
|
+
*/
|
|
27792
|
+
durability: "restored",
|
|
27793
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
27794
|
+
* whether persisting is worth a SQLite commit. */
|
|
27795
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
27229
27796
|
};
|
|
27230
27797
|
/**
|
|
27231
27798
|
* toast — system-scoped singleton capability that streams toast
|
|
@@ -27294,7 +27861,14 @@ var updateCapability = {
|
|
|
27294
27861
|
schema: UpdateStatusSchema,
|
|
27295
27862
|
kind: "poll"
|
|
27296
27863
|
},
|
|
27297
|
-
runtimeState: UpdateStatusSchema
|
|
27864
|
+
runtimeState: UpdateStatusSchema,
|
|
27865
|
+
/**
|
|
27866
|
+
* Runtime-state durability: **session** — a restored `inProgress: true` describes an update that is no longer running; versions are re-probed at boot.
|
|
27867
|
+
*
|
|
27868
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
27869
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
27870
|
+
*/
|
|
27871
|
+
durability: "session"
|
|
27298
27872
|
};
|
|
27299
27873
|
var UserSummarySchema = object({
|
|
27300
27874
|
id: string(),
|
|
@@ -27628,7 +28202,14 @@ var vacuumControlCapability = {
|
|
|
27628
28202
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
27629
28203
|
* slice for live state + battery + fan-speed changes.
|
|
27630
28204
|
*/
|
|
27631
|
-
runtimeState: VacuumControlStatusSchema
|
|
28205
|
+
runtimeState: VacuumControlStatusSchema,
|
|
28206
|
+
/**
|
|
28207
|
+
* Runtime-state durability: **session** — as `media-player` — a restored `state: cleaning` is a robot that is not cleaning.
|
|
28208
|
+
*
|
|
28209
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
28210
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
28211
|
+
*/
|
|
28212
|
+
durability: "session"
|
|
27632
28213
|
};
|
|
27633
28214
|
var ValveStatusSchema = object({
|
|
27634
28215
|
/** Lifecycle state of the valve. */
|
|
@@ -27680,7 +28261,14 @@ var valveCapability = {
|
|
|
27680
28261
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
27681
28262
|
* slice for live position changes during a move.
|
|
27682
28263
|
*/
|
|
27683
|
-
runtimeState: ValveStatusSchema
|
|
28264
|
+
runtimeState: ValveStatusSchema,
|
|
28265
|
+
/**
|
|
28266
|
+
* Runtime-state durability: **session** — as `brightness`.
|
|
28267
|
+
*
|
|
28268
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
28269
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
28270
|
+
*/
|
|
28271
|
+
durability: "session"
|
|
27684
28272
|
};
|
|
27685
28273
|
/**
|
|
27686
28274
|
* Vibration / shake / impact sensor. Drives Home Assistant
|
|
@@ -27702,7 +28290,17 @@ var vibrationCapability = {
|
|
|
27702
28290
|
schema: VibrationStatusSchema,
|
|
27703
28291
|
kind: "push"
|
|
27704
28292
|
},
|
|
27705
|
-
runtimeState: VibrationStatusSchema
|
|
28293
|
+
runtimeState: VibrationStatusSchema,
|
|
28294
|
+
/**
|
|
28295
|
+
* Runtime-state durability: **restored** — as `smoke`.
|
|
28296
|
+
*
|
|
28297
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
28298
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
28299
|
+
*/
|
|
28300
|
+
durability: "restored",
|
|
28301
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
28302
|
+
* whether persisting is worth a SQLite commit. */
|
|
28303
|
+
volatileStateFields: ["lastChangedAt"]
|
|
27706
28304
|
};
|
|
27707
28305
|
/**
|
|
27708
28306
|
* Water heater / boiler cap. Models HA `water_heater.*` entities — a
|
|
@@ -27776,7 +28374,14 @@ var waterHeaterCapability = {
|
|
|
27776
28374
|
* Runtime-state slice — mirrored by the kernel. UI controls watch the
|
|
27777
28375
|
* slice for live temperature / mode / away changes.
|
|
27778
28376
|
*/
|
|
27779
|
-
runtimeState: WaterHeaterStatusSchema
|
|
28377
|
+
runtimeState: WaterHeaterStatusSchema,
|
|
28378
|
+
/**
|
|
28379
|
+
* Runtime-state durability: **session** — as `climate-control`.
|
|
28380
|
+
*
|
|
28381
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
28382
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
28383
|
+
*/
|
|
28384
|
+
durability: "session"
|
|
27780
28385
|
};
|
|
27781
28386
|
/**
|
|
27782
28387
|
* Weather provider cap. Models HA `weather.*` entities — a read-only
|
|
@@ -27835,7 +28440,14 @@ var weatherCapability = {
|
|
|
27835
28440
|
* Runtime-state slice — mirrored by the kernel. The UI reads the
|
|
27836
28441
|
* current conditions directly from the slice on each weather push.
|
|
27837
28442
|
*/
|
|
27838
|
-
runtimeState: WeatherStatusSchema
|
|
28443
|
+
runtimeState: WeatherStatusSchema,
|
|
28444
|
+
/**
|
|
28445
|
+
* Runtime-state durability: **session** — a forecast is stale the moment the hub is down; the provider re-fetches on connect.
|
|
28446
|
+
*
|
|
28447
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
28448
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
28449
|
+
*/
|
|
28450
|
+
durability: "session"
|
|
27839
28451
|
};
|
|
27840
28452
|
/**
|
|
27841
28453
|
* Per-zone occupancy aggregation produced by the analytics frame
|
|
@@ -27997,7 +28609,14 @@ var zoneAnalyticsCapability = {
|
|
|
27997
28609
|
* automatically; the explicit `getCurrentSnapshot` cap method is
|
|
27998
28610
|
* still useful for one-off polls without a subscription.
|
|
27999
28611
|
*/
|
|
28000
|
-
runtimeState: CameraOccupancySnapshotSchema
|
|
28612
|
+
runtimeState: CameraOccupancySnapshotSchema,
|
|
28613
|
+
/**
|
|
28614
|
+
* Runtime-state durability: **session** — per-frame analytics; with `audio-metrics` it is ~90 % of the offered write rate. Re-derived on the next frame.
|
|
28615
|
+
*
|
|
28616
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
28617
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
28618
|
+
*/
|
|
28619
|
+
durability: "session"
|
|
28001
28620
|
};
|
|
28002
28621
|
/**
|
|
28003
28622
|
* Stages a {@link ZoneRule} can apply to. Discriminator on the rules
|
|
@@ -28075,7 +28694,14 @@ var zoneRulesCapability = {
|
|
|
28075
28694
|
motion: array(ZoneRuleSchema).readonly(),
|
|
28076
28695
|
detection: array(ZoneRuleSchema).readonly(),
|
|
28077
28696
|
package: array(ZoneRuleSchema).readonly()
|
|
28078
|
-
})
|
|
28697
|
+
}),
|
|
28698
|
+
/**
|
|
28699
|
+
* Runtime-state durability: **restored** — operator intent, mutation-only, same argument as `zones`.
|
|
28700
|
+
*
|
|
28701
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
28702
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
28703
|
+
*/
|
|
28704
|
+
durability: "restored"
|
|
28079
28705
|
};
|
|
28080
28706
|
/**
|
|
28081
28707
|
* Most specific first. Extending this list is how a new device kind becomes
|
|
@@ -34815,6 +35441,7 @@ Object.freeze({
|
|
|
34815
35441
|
"network-access": "ingress",
|
|
34816
35442
|
"smtp-provider": "email"
|
|
34817
35443
|
});
|
|
35444
|
+
new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
|
|
34818
35445
|
new Set(["devices", "classes"]);
|
|
34819
35446
|
var WEEKDAY_TO_DAY = {
|
|
34820
35447
|
Sun: 0,
|
|
@@ -35430,12 +36057,30 @@ Object.defineProperty(exports, "MACRO_LABELS", {
|
|
|
35430
36057
|
return MACRO_LABELS;
|
|
35431
36058
|
}
|
|
35432
36059
|
});
|
|
36060
|
+
Object.defineProperty(exports, "NC_ALARM_SYSTEM_EVENT_KINDS", {
|
|
36061
|
+
enumerable: true,
|
|
36062
|
+
get: function() {
|
|
36063
|
+
return NC_ALARM_SYSTEM_EVENT_KINDS;
|
|
36064
|
+
}
|
|
36065
|
+
});
|
|
35433
36066
|
Object.defineProperty(exports, "NC_CONDITION_CATALOG", {
|
|
35434
36067
|
enumerable: true,
|
|
35435
36068
|
get: function() {
|
|
35436
36069
|
return NC_CONDITION_CATALOG;
|
|
35437
36070
|
}
|
|
35438
36071
|
});
|
|
36072
|
+
Object.defineProperty(exports, "NC_DEFAULT_SNOOZE_MINUTES", {
|
|
36073
|
+
enumerable: true,
|
|
36074
|
+
get: function() {
|
|
36075
|
+
return NC_DEFAULT_SNOOZE_MINUTES;
|
|
36076
|
+
}
|
|
36077
|
+
});
|
|
36078
|
+
Object.defineProperty(exports, "NC_SNOOZE_MAX_MINUTES", {
|
|
36079
|
+
enumerable: true,
|
|
36080
|
+
get: function() {
|
|
36081
|
+
return NC_SNOOZE_MAX_MINUTES;
|
|
36082
|
+
}
|
|
36083
|
+
});
|
|
35439
36084
|
Object.defineProperty(exports, "NC_TAXONOMY", {
|
|
35440
36085
|
enumerable: true,
|
|
35441
36086
|
get: function() {
|