@camstack/types 1.2.64 → 1.2.66

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.
Files changed (79) hide show
  1. package/dist/addon.js +1 -1
  2. package/dist/addon.mjs +1 -1
  3. package/dist/capabilities/air-quality-sensor.cap.d.ts +10 -0
  4. package/dist/capabilities/alarm-panel.cap.d.ts +10 -0
  5. package/dist/capabilities/ambient-light-sensor.cap.d.ts +10 -0
  6. package/dist/capabilities/audio-metrics.cap.d.ts +7 -0
  7. package/dist/capabilities/automation-control.cap.d.ts +7 -0
  8. package/dist/capabilities/battery.cap.d.ts +10 -0
  9. package/dist/capabilities/binary.cap.d.ts +10 -0
  10. package/dist/capabilities/brightness.cap.d.ts +7 -0
  11. package/dist/capabilities/camera-streams.cap.d.ts +7 -0
  12. package/dist/capabilities/capability-definition.d.ts +58 -0
  13. package/dist/capabilities/carbon-monoxide.cap.d.ts +10 -0
  14. package/dist/capabilities/climate-control.cap.d.ts +7 -0
  15. package/dist/capabilities/color.cap.d.ts +7 -0
  16. package/dist/capabilities/connectivity.cap.d.ts +10 -0
  17. package/dist/capabilities/consumables.cap.d.ts +7 -0
  18. package/dist/capabilities/contact.cap.d.ts +10 -0
  19. package/dist/capabilities/control.cap.d.ts +7 -0
  20. package/dist/capabilities/cover.cap.d.ts +10 -0
  21. package/dist/capabilities/day-night.cap.d.ts +10 -0
  22. package/dist/capabilities/device-discovery.cap.d.ts +7 -0
  23. package/dist/capabilities/device-status.cap.d.ts +10 -0
  24. package/dist/capabilities/doorbell.cap.d.ts +7 -0
  25. package/dist/capabilities/enum-sensor.cap.d.ts +10 -0
  26. package/dist/capabilities/event-emitter.cap.d.ts +7 -0
  27. package/dist/capabilities/fan-control.cap.d.ts +7 -0
  28. package/dist/capabilities/feature-probe.cap.d.ts +7 -0
  29. package/dist/capabilities/flood.cap.d.ts +10 -0
  30. package/dist/capabilities/gas.cap.d.ts +10 -0
  31. package/dist/capabilities/humidifier.cap.d.ts +7 -0
  32. package/dist/capabilities/humidity-sensor.cap.d.ts +10 -0
  33. package/dist/capabilities/image-settings.cap.d.ts +10 -0
  34. package/dist/capabilities/image.cap.d.ts +7 -0
  35. package/dist/capabilities/index.d.ts +3 -3
  36. package/dist/capabilities/lawn-mower-control.cap.d.ts +7 -0
  37. package/dist/capabilities/lock-control.cap.d.ts +10 -0
  38. package/dist/capabilities/media-player.cap.d.ts +7 -0
  39. package/dist/capabilities/motion-trigger.cap.d.ts +7 -0
  40. package/dist/capabilities/motion-zones.cap.d.ts +10 -0
  41. package/dist/capabilities/motion.cap.d.ts +7 -0
  42. package/dist/capabilities/native-object-detection.cap.d.ts +10 -0
  43. package/dist/capabilities/notification-output.cap.d.ts +16 -0
  44. package/dist/capabilities/notification-rules.cap.d.ts +35 -3
  45. package/dist/capabilities/notifier.cap.d.ts +7 -0
  46. package/dist/capabilities/numeric-sensor.cap.d.ts +10 -0
  47. package/dist/capabilities/osd-manager.cap.d.ts +2 -0
  48. package/dist/capabilities/pet-feeder.cap.d.ts +7 -0
  49. package/dist/capabilities/power-meter.cap.d.ts +10 -0
  50. package/dist/capabilities/presence.cap.d.ts +10 -0
  51. package/dist/capabilities/pressure-sensor.cap.d.ts +10 -0
  52. package/dist/capabilities/privacy-mask.cap.d.ts +10 -0
  53. package/dist/capabilities/ptz-autotrack.cap.d.ts +7 -0
  54. package/dist/capabilities/recording-export.cap.d.ts +17 -6
  55. package/dist/capabilities/scene-monitor.cap.d.ts +7 -0
  56. package/dist/capabilities/script-runner.cap.d.ts +7 -0
  57. package/dist/capabilities/smoke.cap.d.ts +10 -0
  58. package/dist/capabilities/stream-params.cap.d.ts +10 -0
  59. package/dist/capabilities/switch.cap.d.ts +10 -0
  60. package/dist/capabilities/tamper.cap.d.ts +10 -0
  61. package/dist/capabilities/temperature-sensor.cap.d.ts +10 -0
  62. package/dist/capabilities/update.cap.d.ts +7 -0
  63. package/dist/capabilities/vacuum-control.cap.d.ts +7 -0
  64. package/dist/capabilities/valve.cap.d.ts +7 -0
  65. package/dist/capabilities/vibration.cap.d.ts +10 -0
  66. package/dist/capabilities/water-heater.cap.d.ts +7 -0
  67. package/dist/capabilities/weather.cap.d.ts +7 -0
  68. package/dist/capabilities/zone-analytics.cap.d.ts +7 -0
  69. package/dist/capabilities/zone-rules.cap.d.ts +7 -0
  70. package/dist/capabilities/zones.cap.d.ts +7 -0
  71. package/dist/generated/runtime-state-durability.d.ts +31 -0
  72. package/dist/index.d.ts +4 -1
  73. package/dist/index.js +1292 -118
  74. package/dist/index.mjs +1267 -117
  75. package/dist/notification/audio-condition.d.ts +118 -0
  76. package/dist/pipeline/native-lease.d.ts +36 -19
  77. package/dist/{sleep-BxjBLp3L.mjs → sleep-CSgK0rNX.mjs} +3 -1
  78. package/dist/{sleep-BszXLEvP.js → sleep-Dh1EJSqF.js} +8 -0
  79. package/package.json +1 -1
@@ -87,5 +87,15 @@ export declare const lockControlCapability: {
87
87
  }>;
88
88
  lastChangedAt: z.ZodNumber;
89
89
  }, z.core.$strip>;
90
+ /**
91
+ * Runtime-state durability: **restored** — a lock left locked must still read locked.
92
+ *
93
+ * See `RuntimeStateDurability`. Enforced by
94
+ * `scripts/check-runtime-state-durability.ts`.
95
+ */
96
+ readonly durability: "restored";
97
+ /** Clock fields: written, but excluded from the compare that decides
98
+ * whether persisting is worth a SQLite commit. */
99
+ readonly volatileStateFields: readonly ["lastChangedAt"];
90
100
  };
91
101
  export type ILockControlProvider = InferProvider<typeof lockControlCapability>;
@@ -195,6 +195,13 @@ export declare const mediaPlayerCapability: {
195
195
  }>>;
196
196
  lastChangedAt: z.ZodNumber;
197
197
  }, z.core.$strip>;
198
+ /**
199
+ * Runtime-state durability: **session** — a restored transport position describes a playback that stopped when the hub did.
200
+ *
201
+ * See `RuntimeStateDurability`. Enforced by
202
+ * `scripts/check-runtime-state-durability.ts`.
203
+ */
204
+ readonly durability: "session";
198
205
  };
199
206
  export type IMediaPlayerProvider = InferProvider<typeof mediaPlayerCapability>;
200
207
  export {};
@@ -74,5 +74,12 @@ export declare const motionTriggerCapability: {
74
74
  lastChangedAt: z.ZodNumber;
75
75
  lastFetchedAt: z.ZodNumber;
76
76
  }, z.core.$strip>;
77
+ /**
78
+ * 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.
79
+ *
80
+ * See `RuntimeStateDurability`. Enforced by
81
+ * `scripts/check-runtime-state-durability.ts`.
82
+ */
83
+ readonly durability: "session";
77
84
  };
78
85
  export type IMotionTriggerProvider = InferProvider<typeof motionTriggerCapability>;
@@ -160,5 +160,15 @@ export declare const motionZonesCapability: {
160
160
  }, z.core.$strip>>;
161
161
  lastFetchedAt: z.ZodNumber;
162
162
  }, z.core.$strip>;
163
+ /**
164
+ * 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.
165
+ *
166
+ * See `RuntimeStateDurability`. Enforced by
167
+ * `scripts/check-runtime-state-durability.ts`.
168
+ */
169
+ readonly durability: "restored";
170
+ /** Clock fields: written, but excluded from the compare that decides
171
+ * whether persisting is worth a SQLite commit. */
172
+ readonly volatileStateFields: readonly ["lastFetchedAt"];
163
173
  };
164
174
  export type IMotionZonesProvider = InferNativeProvider<typeof motionZonesCapability>;
@@ -129,5 +129,12 @@ export declare const motionCapability: {
129
129
  lastDetectedAt: z.ZodNullable<z.ZodNumber>;
130
130
  autoClearAfterMs: z.ZodNullable<z.ZodNumber>;
131
131
  }, z.core.$strip>;
132
+ /**
133
+ * 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.
134
+ *
135
+ * See `RuntimeStateDurability`. Enforced by
136
+ * `scripts/check-runtime-state-durability.ts`.
137
+ */
138
+ readonly durability: "session";
132
139
  };
133
140
  export type IMotionProvider = InferProvider<typeof motionCapability>;
@@ -193,5 +193,15 @@ export declare const nativeObjectDetectionCapability: {
193
193
  enabled: z.ZodBoolean;
194
194
  lastFetchedAt: z.ZodNumber;
195
195
  }, z.core.$strip>;
196
+ /**
197
+ * 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.
198
+ *
199
+ * See `RuntimeStateDurability`. Enforced by
200
+ * `scripts/check-runtime-state-durability.ts`.
201
+ */
202
+ readonly durability: "restored";
203
+ /** Clock fields: written, but excluded from the compare that decides
204
+ * whether persisting is worth a SQLite commit. */
205
+ readonly volatileStateFields: readonly ["lastFetchedAt"];
196
206
  };
197
207
  export type INativeObjectDetectionProvider = InferProvider<typeof nativeObjectDetectionCapability>;
@@ -120,6 +120,10 @@ export declare const NotificationActionSchema: z.ZodObject<{
120
120
  alert: "alert";
121
121
  }>>;
122
122
  destructive: z.ZodOptional<z.ZodBoolean>;
123
+ mode: z.ZodOptional<z.ZodEnum<{
124
+ navigate: "navigate";
125
+ background: "background";
126
+ }>>;
123
127
  }, z.core.$strip>;
124
128
  export type NotificationAction = z.infer<typeof NotificationActionSchema>;
125
129
  /**
@@ -174,6 +178,10 @@ export declare const NotificationSchema: z.ZodObject<{
174
178
  alert: "alert";
175
179
  }>>;
176
180
  destructive: z.ZodOptional<z.ZodBoolean>;
181
+ mode: z.ZodOptional<z.ZodEnum<{
182
+ navigate: "navigate";
183
+ background: "background";
184
+ }>>;
177
185
  }, z.core.$strip>>>;
178
186
  sound: z.ZodOptional<z.ZodString>;
179
187
  ttl: z.ZodOptional<z.ZodNumber>;
@@ -499,6 +507,10 @@ export declare const notificationOutputCapability: {
499
507
  alert: "alert";
500
508
  }>>;
501
509
  destructive: z.ZodOptional<z.ZodBoolean>;
510
+ mode: z.ZodOptional<z.ZodEnum<{
511
+ navigate: "navigate";
512
+ background: "background";
513
+ }>>;
502
514
  }, z.core.$strip>>>;
503
515
  sound: z.ZodOptional<z.ZodString>;
504
516
  ttl: z.ZodOptional<z.ZodNumber>;
@@ -569,6 +581,10 @@ export declare const notificationOutputCapability: {
569
581
  alert: "alert";
570
582
  }>>;
571
583
  destructive: z.ZodOptional<z.ZodBoolean>;
584
+ mode: z.ZodOptional<z.ZodEnum<{
585
+ navigate: "navigate";
586
+ background: "background";
587
+ }>>;
572
588
  }, z.core.$strip>>>;
573
589
  sound: z.ZodOptional<z.ZodString>;
574
590
  ttl: z.ZodOptional<z.ZodNumber>;
@@ -137,6 +137,22 @@ export type NcSystemEventCondition = z.infer<typeof NcSystemEventConditionSchema
137
137
  * unique key `(ruleId, trackId, targetId)`. Not a rule field in P1.
138
138
  */
139
139
  export declare const NC_MAX_PER_TRACK_IMMEDIATE = 1;
140
+ /** Hard ceiling on a window (24h). A snooze that could not expire would be an
141
+ * outage the operator asked for once and forgot. */
142
+ export declare const NC_SNOOZE_MAX_MINUTES = 1440;
143
+ /**
144
+ * The durations a notification offers when its rule does not say otherwise.
145
+ *
146
+ * MINUTES, and short ones: a snooze button is answered on a lock screen, and
147
+ * the three choices that fit there are "the next few minutes", "the next half
148
+ * hour" and "the next hour". Anything longer is a decision somebody sits down
149
+ * to make, which is what the app's own snooze surface is for.
150
+ *
151
+ * Resolved in CODE (`snoozeChoices`), never as a Zod default — see
152
+ * {@link NcRuleInputSchema.shape.snoozeOptions} for why the distinction is
153
+ * load-bearing.
154
+ */
155
+ export declare const NC_DEFAULT_SNOOZE_MINUTES: readonly number[];
140
156
  /** One weekly activation window. `startMinute > endMinute` crosses midnight. */
141
157
  export declare const NcScheduleWindowSchema: z.ZodObject<{
142
158
  days: z.ZodArray<z.ZodNumber>;
@@ -848,6 +864,7 @@ export declare const NcRuleInputSchema: z.ZodObject<{
848
864
  priority: z.ZodDefault<z.ZodNumber>;
849
865
  ownerUserId: z.ZodOptional<z.ZodString>;
850
866
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
867
+ snoozeOptions: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
851
868
  actions: z.ZodOptional<z.ZodObject<{
852
869
  onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
853
870
  name: z.ZodString;
@@ -947,6 +964,7 @@ export declare const NcRulePatchSchema: z.ZodObject<{
947
964
  }, z.core.$strip>>>;
948
965
  ownerUserId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
949
966
  snoozeAllowGlobal: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
967
+ snoozeOptions: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodNumber>>>;
950
968
  actions: z.ZodOptional<z.ZodOptional<z.ZodObject<{
951
969
  onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
952
970
  name: z.ZodString;
@@ -1307,6 +1325,7 @@ export declare const NcRuleSchema: z.ZodObject<{
1307
1325
  priority: z.ZodDefault<z.ZodNumber>;
1308
1326
  ownerUserId: z.ZodOptional<z.ZodString>;
1309
1327
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
1328
+ snoozeOptions: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1310
1329
  actions: z.ZodOptional<z.ZodObject<{
1311
1330
  onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
1312
1331
  name: z.ZodString;
@@ -1393,6 +1412,7 @@ export type NcTestResult = z.infer<typeof NcTestResultSchema>;
1393
1412
  export declare const NcConditionDescriptorSchema: z.ZodObject<{
1394
1413
  id: z.ZodString;
1395
1414
  group: z.ZodEnum<{
1415
+ audio: "audio";
1396
1416
  system: "system";
1397
1417
  device: "device";
1398
1418
  label: "label";
@@ -1407,6 +1427,7 @@ export declare const NcConditionDescriptorSchema: z.ZodObject<{
1407
1427
  label: z.ZodString;
1408
1428
  valueType: z.ZodEnum<{
1409
1429
  number: "number";
1430
+ audio: "audio";
1410
1431
  deviceState: "deviceState";
1411
1432
  schedule: "schedule";
1412
1433
  packagePhase: "packagePhase";
@@ -1622,9 +1643,6 @@ export declare const NcSnoozeScopeSchema: z.ZodEnum<{
1622
1643
  rule: "rule";
1623
1644
  }>;
1624
1645
  export type NcSnoozeScope = z.infer<typeof NcSnoozeScopeSchema>;
1625
- /** Hard ceiling on a window (24h). A snooze that could not expire would be an
1626
- * outage the operator asked for once and forgot. */
1627
- export declare const NC_SNOOZE_MAX_MINUTES = 1440;
1628
1646
  /**
1629
1647
  * Client-authored snooze. The server stamps `userId`, `startedAt` and
1630
1648
  * `expiresAt` — a DURATION is sent rather than an instant so a client with a
@@ -1638,6 +1656,7 @@ export declare const NcSnoozeInputSchema: z.ZodObject<{
1638
1656
  }>;
1639
1657
  ruleId: z.ZodOptional<z.ZodString>;
1640
1658
  deviceId: z.ZodOptional<z.ZodNumber>;
1659
+ classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
1641
1660
  durationMinutes: z.ZodNumber;
1642
1661
  global: z.ZodOptional<z.ZodBoolean>;
1643
1662
  summary: z.ZodOptional<z.ZodBoolean>;
@@ -1654,6 +1673,7 @@ export declare const NcSnoozeSchema: z.ZodObject<{
1654
1673
  }>;
1655
1674
  ruleId: z.ZodOptional<z.ZodString>;
1656
1675
  deviceId: z.ZodOptional<z.ZodNumber>;
1676
+ classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
1657
1677
  startedAt: z.ZodNumber;
1658
1678
  expiresAt: z.ZodNumber;
1659
1679
  global: z.ZodBoolean;
@@ -1951,6 +1971,7 @@ export declare const notificationRulesCapability: {
1951
1971
  priority: z.ZodDefault<z.ZodNumber>;
1952
1972
  ownerUserId: z.ZodOptional<z.ZodString>;
1953
1973
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
1974
+ snoozeOptions: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1954
1975
  actions: z.ZodOptional<z.ZodObject<{
1955
1976
  onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
1956
1977
  name: z.ZodString;
@@ -2183,6 +2204,7 @@ export declare const notificationRulesCapability: {
2183
2204
  priority: z.ZodDefault<z.ZodNumber>;
2184
2205
  ownerUserId: z.ZodOptional<z.ZodString>;
2185
2206
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
2207
+ snoozeOptions: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
2186
2208
  actions: z.ZodOptional<z.ZodObject<{
2187
2209
  onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
2188
2210
  name: z.ZodString;
@@ -2413,6 +2435,7 @@ export declare const notificationRulesCapability: {
2413
2435
  priority: z.ZodDefault<z.ZodNumber>;
2414
2436
  ownerUserId: z.ZodOptional<z.ZodString>;
2415
2437
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
2438
+ snoozeOptions: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
2416
2439
  actions: z.ZodOptional<z.ZodObject<{
2417
2440
  onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
2418
2441
  name: z.ZodString;
@@ -2637,6 +2660,7 @@ export declare const notificationRulesCapability: {
2637
2660
  priority: z.ZodDefault<z.ZodNumber>;
2638
2661
  ownerUserId: z.ZodOptional<z.ZodString>;
2639
2662
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
2663
+ snoozeOptions: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
2640
2664
  actions: z.ZodOptional<z.ZodObject<{
2641
2665
  onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
2642
2666
  name: z.ZodString;
@@ -2736,6 +2760,7 @@ export declare const notificationRulesCapability: {
2736
2760
  }, z.core.$strip>>>;
2737
2761
  ownerUserId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
2738
2762
  snoozeAllowGlobal: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
2763
+ snoozeOptions: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodNumber>>>;
2739
2764
  actions: z.ZodOptional<z.ZodOptional<z.ZodObject<{
2740
2765
  onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
2741
2766
  name: z.ZodString;
@@ -3095,6 +3120,7 @@ export declare const notificationRulesCapability: {
3095
3120
  priority: z.ZodDefault<z.ZodNumber>;
3096
3121
  ownerUserId: z.ZodOptional<z.ZodString>;
3097
3122
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
3123
+ snoozeOptions: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
3098
3124
  actions: z.ZodOptional<z.ZodObject<{
3099
3125
  onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
3100
3126
  name: z.ZodString;
@@ -3373,6 +3399,7 @@ export declare const notificationRulesCapability: {
3373
3399
  priority: z.ZodDefault<z.ZodNumber>;
3374
3400
  ownerUserId: z.ZodOptional<z.ZodString>;
3375
3401
  snoozeAllowGlobal: z.ZodOptional<z.ZodBoolean>;
3402
+ snoozeOptions: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
3376
3403
  actions: z.ZodOptional<z.ZodObject<{
3377
3404
  onTrigger: z.ZodOptional<z.ZodArray<z.ZodObject<{
3378
3405
  name: z.ZodString;
@@ -3466,6 +3493,7 @@ export declare const notificationRulesCapability: {
3466
3493
  catalog: z.ZodArray<z.ZodObject<{
3467
3494
  id: z.ZodString;
3468
3495
  group: z.ZodEnum<{
3496
+ audio: "audio";
3469
3497
  system: "system";
3470
3498
  device: "device";
3471
3499
  label: "label";
@@ -3480,6 +3508,7 @@ export declare const notificationRulesCapability: {
3480
3508
  label: z.ZodString;
3481
3509
  valueType: z.ZodEnum<{
3482
3510
  number: "number";
3511
+ audio: "audio";
3483
3512
  deviceState: "deviceState";
3484
3513
  schedule: "schedule";
3485
3514
  packagePhase: "packagePhase";
@@ -3643,6 +3672,7 @@ export declare const notificationRulesCapability: {
3643
3672
  }>;
3644
3673
  ruleId: z.ZodOptional<z.ZodString>;
3645
3674
  deviceId: z.ZodOptional<z.ZodNumber>;
3675
+ classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
3646
3676
  startedAt: z.ZodNumber;
3647
3677
  expiresAt: z.ZodNumber;
3648
3678
  global: z.ZodBoolean;
@@ -3669,6 +3699,7 @@ export declare const notificationRulesCapability: {
3669
3699
  }>;
3670
3700
  ruleId: z.ZodOptional<z.ZodString>;
3671
3701
  deviceId: z.ZodOptional<z.ZodNumber>;
3702
+ classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
3672
3703
  durationMinutes: z.ZodNumber;
3673
3704
  global: z.ZodOptional<z.ZodBoolean>;
3674
3705
  summary: z.ZodOptional<z.ZodBoolean>;
@@ -3684,6 +3715,7 @@ export declare const notificationRulesCapability: {
3684
3715
  }>;
3685
3716
  ruleId: z.ZodOptional<z.ZodString>;
3686
3717
  deviceId: z.ZodOptional<z.ZodNumber>;
3718
+ classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
3687
3719
  startedAt: z.ZodNumber;
3688
3720
  expiresAt: z.ZodNumber;
3689
3721
  global: z.ZodBoolean;
@@ -167,6 +167,13 @@ export declare const notifierCapability: {
167
167
  recipients: z.ZodBoolean;
168
168
  }, z.core.$strip>;
169
169
  }, z.core.$strip>;
170
+ /**
171
+ * Runtime-state durability: **session** — live queue depth and last-send state; a restored queue depth describes a queue that no longer exists.
172
+ *
173
+ * See `RuntimeStateDurability`. Enforced by
174
+ * `scripts/check-runtime-state-durability.ts`.
175
+ */
176
+ readonly durability: "session";
170
177
  };
171
178
  export type INotifierProvider = InferProvider<typeof notifierCapability>;
172
179
  export {};
@@ -47,5 +47,15 @@ export declare const numericSensorCapability: {
47
47
  precision: z.ZodOptional<z.ZodNumber>;
48
48
  lastFetchedAt: z.ZodNumber;
49
49
  }, z.core.$strip>;
50
+ /**
51
+ * 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.
52
+ *
53
+ * See `RuntimeStateDurability`. Enforced by
54
+ * `scripts/check-runtime-state-durability.ts`.
55
+ */
56
+ readonly durability: "restored";
57
+ /** Clock fields: written, but excluded from the compare that decides
58
+ * whether persisting is worth a SQLite commit. */
59
+ readonly volatileStateFields: readonly ["lastFetchedAt"];
50
60
  };
51
61
  export type INumericSensorProvider = InferProvider<typeof numericSensorCapability>;
@@ -587,6 +587,7 @@ export declare const osdManagerCapability: {
587
587
  catalog: z.ZodArray<z.ZodObject<{
588
588
  id: z.ZodString;
589
589
  group: z.ZodEnum<{
590
+ audio: "audio";
590
591
  system: "system";
591
592
  device: "device";
592
593
  label: "label";
@@ -601,6 +602,7 @@ export declare const osdManagerCapability: {
601
602
  label: z.ZodString;
602
603
  valueType: z.ZodEnum<{
603
604
  number: "number";
605
+ audio: "audio";
604
606
  deviceState: "deviceState";
605
607
  schedule: "schedule";
606
608
  packagePhase: "packagePhase";
@@ -181,5 +181,12 @@ export declare const petFeederCapability: {
181
181
  volume: z.ZodNumber;
182
182
  lastFetchedAt: z.ZodNumber;
183
183
  }, z.core.$strip>;
184
+ /**
185
+ * Runtime-state durability: **session** — live appliance state re-published on connect.
186
+ *
187
+ * See `RuntimeStateDurability`. Enforced by
188
+ * `scripts/check-runtime-state-durability.ts`.
189
+ */
190
+ readonly durability: "session";
184
191
  };
185
192
  export type IPetFeederProvider = InferProvider<typeof petFeederCapability>;
@@ -60,5 +60,15 @@ export declare const powerMeterCapability: {
60
60
  unit: z.ZodOptional<z.ZodString>;
61
61
  precision: z.ZodOptional<z.ZodNumber>;
62
62
  }, z.core.$strip>;
63
+ /**
64
+ * Runtime-state durability: **restored** — as `numeric-sensor`; `kwhTotal` is an accumulator whose restored value is the baseline.
65
+ *
66
+ * See `RuntimeStateDurability`. Enforced by
67
+ * `scripts/check-runtime-state-durability.ts`.
68
+ */
69
+ readonly durability: "restored";
70
+ /** Clock fields: written, but excluded from the compare that decides
71
+ * whether persisting is worth a SQLite commit. */
72
+ readonly volatileStateFields: readonly ["lastFetchedAt"];
63
73
  };
64
74
  export type IPowerMeterProvider = InferProvider<typeof powerMeterCapability>;
@@ -73,6 +73,16 @@ export declare const presenceCapability: {
73
73
  batteryPercent: z.ZodNullable<z.ZodNumber>;
74
74
  lastChangedAt: z.ZodNumber;
75
75
  }, z.core.$strip>;
76
+ /**
77
+ * Runtime-state durability: **restored** — occupancy-relevant: the restored state is what an occupancy rule compares the first post-restart observation against.
78
+ *
79
+ * See `RuntimeStateDurability`. Enforced by
80
+ * `scripts/check-runtime-state-durability.ts`.
81
+ */
82
+ readonly durability: "restored";
83
+ /** Clock fields: written, but excluded from the compare that decides
84
+ * whether persisting is worth a SQLite commit. */
85
+ readonly volatileStateFields: readonly ["lastChangedAt"];
76
86
  };
77
87
  export type IPresenceProvider = InferProvider<typeof presenceCapability>;
78
88
  export {};
@@ -38,5 +38,15 @@ export declare const pressureSensorCapability: {
38
38
  unit: z.ZodOptional<z.ZodString>;
39
39
  precision: z.ZodOptional<z.ZodNumber>;
40
40
  }, z.core.$strip>;
41
+ /**
42
+ * Runtime-state durability: **restored** — as `numeric-sensor`.
43
+ *
44
+ * See `RuntimeStateDurability`. Enforced by
45
+ * `scripts/check-runtime-state-durability.ts`.
46
+ */
47
+ readonly durability: "restored";
48
+ /** Clock fields: written, but excluded from the compare that decides
49
+ * whether persisting is worth a SQLite commit. */
50
+ readonly volatileStateFields: readonly ["lastFetchedAt"];
41
51
  };
42
52
  export type IPressureSensorProvider = InferProvider<typeof pressureSensorCapability>;
@@ -243,6 +243,16 @@ export declare const privacyMaskCapability: {
243
243
  audioEnabled: z.ZodNullable<z.ZodBoolean>;
244
244
  lastFetchedAt: z.ZodNumber;
245
245
  }, z.core.$strip>;
246
+ /**
247
+ * Runtime-state durability: **restored** — operator-drawn regions, zero real churn — 22 writes in 25 minutes, every one of them the clock.
248
+ *
249
+ * See `RuntimeStateDurability`. Enforced by
250
+ * `scripts/check-runtime-state-durability.ts`.
251
+ */
252
+ readonly durability: "restored";
253
+ /** Clock fields: written, but excluded from the compare that decides
254
+ * whether persisting is worth a SQLite commit. */
255
+ readonly volatileStateFields: readonly ["lastFetchedAt"];
246
256
  };
247
257
  export type IPrivacyMaskProvider = InferNativeProvider<typeof privacyMaskCapability>;
248
258
  /**
@@ -194,5 +194,12 @@ export declare const ptzAutotrackCapability: {
194
194
  }, z.core.$strip>>;
195
195
  lastFetchedAt: z.ZodNumber;
196
196
  }, z.core.$strip>;
197
+ /**
198
+ * Runtime-state durability: **session** — mirrors the camera's own autotrack config, re-read on connect.
199
+ *
200
+ * See `RuntimeStateDurability`. Enforced by
201
+ * `scripts/check-runtime-state-durability.ts`.
202
+ */
203
+ readonly durability: "session";
197
204
  };
198
205
  export type IPtzAutotrackProvider = InferProvider<typeof ptzAutotrackCapability>;
@@ -17,13 +17,24 @@ import { type InferProvider } from './capability-definition.js';
17
17
  /** Playback-speed multiplier for the render (1 = realtime). */
18
18
  export declare const ExportSpeedSchema: z.ZodNumber;
19
19
  /**
20
- * One dense interval, in SECONDS FROM THE EXPORT'S OWN `fromMs`.
20
+ * One dense interval, in WALL-CLOCK SECONDS FROM THE EXPORT'S OWN `fromMs`.
21
21
  *
22
- * Relative and not absolute epoch on purpose: the renderer's frame-select
23
- * expression sees ffmpeg's `t`, which starts at 0 for the export's source
24
- * playlist. Handing it absolute epochs would make every call site responsible
25
- * for the same subtraction, and the one that forgot would emit a filter that
26
- * selects nothing silently, as a uniform timelapse.
22
+ * **Wall clock, not ffmpeg's `t`** and the recorder translates. A caller
23
+ * derives these bounds from things that happened at a TIME (a track's
24
+ * `firstSeen`), while `t` runs over the source playlist: the concatenation of
25
+ * every segment present for the range, with each recording GAP removed. The
26
+ * two agree only on a window that recorded without one interruption, and only
27
+ * the render side knows the segments, so the translation lives there
28
+ * (`export-dense-map.ts`, addon-pipeline).
29
+ *
30
+ * It was not always so. These seconds were fed to `between(t,…)` verbatim, and
31
+ * on a 10 h window holding 29,393 s of footage every range landed late by the
32
+ * gap accumulated before it — up to 6,607 s, well past EOF. Nothing matched,
33
+ * the video was a uniform timelapse, and the log line reported the five ranges
34
+ * that had been ASKED for (2026-08-13, export `57d14363`, camera 615).
35
+ *
36
+ * Relative and not absolute epoch, because an absolute epoch would make every
37
+ * call site responsible for the same subtraction.
27
38
  */
28
39
  export declare const ExportDenseRangeSchema: z.ZodObject<{
29
40
  fromSec: z.ZodNumber;
@@ -479,5 +479,12 @@ export declare const sceneMonitorCapability: {
479
479
  }, z.core.$strip>>;
480
480
  lastFetchedAt: z.ZodNumber;
481
481
  }, z.core.$strip>;
482
+ /**
483
+ * Runtime-state durability: **session** — re-derived from the current scene on the next evaluation.
484
+ *
485
+ * See `RuntimeStateDurability`. Enforced by
486
+ * `scripts/check-runtime-state-durability.ts`.
487
+ */
488
+ readonly durability: "session";
482
489
  };
483
490
  export type ISceneMonitorProvider = InferNativeProvider<typeof sceneMonitorCapability>;
@@ -57,5 +57,12 @@ export declare const scriptRunnerCapability: {
57
57
  lastError: z.ZodNullable<z.ZodString>;
58
58
  lastChangedAt: z.ZodNumber;
59
59
  }, z.core.$strip>;
60
+ /**
61
+ * Runtime-state durability: **session** — a restored `isRunning: true` describes a process that died with the previous hub.
62
+ *
63
+ * See `RuntimeStateDurability`. Enforced by
64
+ * `scripts/check-runtime-state-durability.ts`.
65
+ */
66
+ readonly durability: "session";
60
67
  };
61
68
  export type IScriptRunnerProvider = InferProvider<typeof scriptRunnerCapability>;
@@ -33,5 +33,15 @@ export declare const smokeCapability: {
33
33
  detected: z.ZodBoolean;
34
34
  lastChangedAt: z.ZodNumber;
35
35
  }, z.core.$strip>;
36
+ /**
37
+ * Runtime-state durability: **restored** — a safety sensor must not read "clear" merely because the hub restarted.
38
+ *
39
+ * See `RuntimeStateDurability`. Enforced by
40
+ * `scripts/check-runtime-state-durability.ts`.
41
+ */
42
+ readonly durability: "restored";
43
+ /** Clock fields: written, but excluded from the compare that decides
44
+ * whether persisting is worth a SQLite commit. */
45
+ readonly volatileStateFields: readonly ["lastChangedAt"];
36
46
  };
37
47
  export type ISmokeProvider = InferProvider<typeof smokeCapability>;
@@ -481,6 +481,16 @@ export declare const streamParamsCapability: {
481
481
  }, z.core.$strip>>;
482
482
  lastFetchedAt: z.ZodNumber;
483
483
  }, z.core.$strip>;
484
+ /**
485
+ * Runtime-state durability: **restored** — operator-set encoder profile; mutation-driven.
486
+ *
487
+ * See `RuntimeStateDurability`. Enforced by
488
+ * `scripts/check-runtime-state-durability.ts`.
489
+ */
490
+ readonly durability: "restored";
491
+ /** Clock fields: written, but excluded from the compare that decides
492
+ * whether persisting is worth a SQLite commit. */
493
+ readonly volatileStateFields: readonly ["lastFetchedAt"];
484
494
  };
485
495
  export type IStreamParamsProvider = InferNativeProvider<typeof streamParamsCapability>;
486
496
  export { StreamProfileConfigSchema, StreamProfileOptionsSchema };
@@ -50,6 +50,16 @@ export declare const switchCapability: {
50
50
  on: z.ZodBoolean;
51
51
  lastChangedAt: z.ZodNumber;
52
52
  }, z.core.$strip>;
53
+ /**
54
+ * Runtime-state durability: **restored** — device state an operator reads as authoritative; 55 devices, transition-driven.
55
+ *
56
+ * See `RuntimeStateDurability`. Enforced by
57
+ * `scripts/check-runtime-state-durability.ts`.
58
+ */
59
+ readonly durability: "restored";
60
+ /** Clock fields: written, but excluded from the compare that decides
61
+ * whether persisting is worth a SQLite commit. */
62
+ readonly volatileStateFields: readonly ["lastChangedAt"];
53
63
  readonly settings: {
54
64
  readonly bindings: readonly [{
55
65
  readonly kind: "scalar";
@@ -28,5 +28,15 @@ export declare const tamperCapability: {
28
28
  tampered: z.ZodBoolean;
29
29
  lastChangedAt: z.ZodNumber;
30
30
  }, z.core.$strip>;
31
+ /**
32
+ * Runtime-state durability: **restored** — as `smoke`.
33
+ *
34
+ * See `RuntimeStateDurability`. Enforced by
35
+ * `scripts/check-runtime-state-durability.ts`.
36
+ */
37
+ readonly durability: "restored";
38
+ /** Clock fields: written, but excluded from the compare that decides
39
+ * whether persisting is worth a SQLite commit. */
40
+ readonly volatileStateFields: readonly ["lastChangedAt"];
31
41
  };
32
42
  export type ITamperProvider = InferProvider<typeof tamperCapability>;
@@ -46,5 +46,15 @@ export declare const temperatureSensorCapability: {
46
46
  unit: z.ZodOptional<z.ZodString>;
47
47
  precision: z.ZodOptional<z.ZodNumber>;
48
48
  }, z.core.$strip>;
49
+ /**
50
+ * Runtime-state durability: **restored** — as `numeric-sensor` (69 of 125 writes were the clock alone).
51
+ *
52
+ * See `RuntimeStateDurability`. Enforced by
53
+ * `scripts/check-runtime-state-durability.ts`.
54
+ */
55
+ readonly durability: "restored";
56
+ /** Clock fields: written, but excluded from the compare that decides
57
+ * whether persisting is worth a SQLite commit. */
58
+ readonly volatileStateFields: readonly ["lastFetchedAt"];
49
59
  };
50
60
  export type ITemperatureSensorProvider = InferProvider<typeof temperatureSensorCapability>;
@@ -44,5 +44,12 @@ export declare const updateCapability: {
44
44
  state: z.ZodNullable<z.ZodString>;
45
45
  inProgress: z.ZodBoolean;
46
46
  }, z.core.$strip>;
47
+ /**
48
+ * Runtime-state durability: **session** — a restored `inProgress: true` describes an update that is no longer running; versions are re-probed at boot.
49
+ *
50
+ * See `RuntimeStateDurability`. Enforced by
51
+ * `scripts/check-runtime-state-durability.ts`.
52
+ */
53
+ readonly durability: "session";
47
54
  };
48
55
  export type IUpdateProvider = InferProvider<typeof updateCapability>;
@@ -237,5 +237,12 @@ export declare const vacuumControlCapability: {
237
237
  errorLabel: z.ZodNullable<z.ZodString>;
238
238
  lastChangedAt: z.ZodNumber;
239
239
  }, z.core.$strip>;
240
+ /**
241
+ * Runtime-state durability: **session** — as `media-player` — a restored `state: cleaning` is a robot that is not cleaning.
242
+ *
243
+ * See `RuntimeStateDurability`. Enforced by
244
+ * `scripts/check-runtime-state-durability.ts`.
245
+ */
246
+ readonly durability: "session";
240
247
  };
241
248
  export type IVacuumControlProvider = InferProvider<typeof vacuumControlCapability>;
@@ -88,5 +88,12 @@ export declare const valveCapability: {
88
88
  position: z.ZodNullable<z.ZodNumber>;
89
89
  lastChangedAt: z.ZodNumber;
90
90
  }, z.core.$strip>;
91
+ /**
92
+ * Runtime-state durability: **session** — as `brightness`.
93
+ *
94
+ * See `RuntimeStateDurability`. Enforced by
95
+ * `scripts/check-runtime-state-durability.ts`.
96
+ */
97
+ readonly durability: "session";
91
98
  };
92
99
  export type IValveProvider = InferProvider<typeof valveCapability>;