@camstack/types 0.1.40 → 0.1.41

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 (296) hide show
  1. package/dist/addon/base-addon.d.ts +12 -0
  2. package/dist/addon/base-addon.d.ts.map +1 -1
  3. package/dist/addon/durable-state.d.ts +33 -0
  4. package/dist/addon/durable-state.d.ts.map +1 -0
  5. package/dist/capabilities/accessories.cap.d.ts +56 -8
  6. package/dist/capabilities/accessories.cap.d.ts.map +1 -1
  7. package/dist/capabilities/advanced-notifier.cap.d.ts +4 -0
  8. package/dist/capabilities/advanced-notifier.cap.d.ts.map +1 -1
  9. package/dist/capabilities/air-quality-sensor.cap.d.ts +56 -0
  10. package/dist/capabilities/air-quality-sensor.cap.d.ts.map +1 -0
  11. package/dist/capabilities/alarm-panel.cap.d.ts +154 -0
  12. package/dist/capabilities/alarm-panel.cap.d.ts.map +1 -0
  13. package/dist/capabilities/ambient-light-sensor.cap.d.ts +39 -0
  14. package/dist/capabilities/ambient-light-sensor.cap.d.ts.map +1 -0
  15. package/dist/capabilities/automation-control.cap.d.ts +65 -0
  16. package/dist/capabilities/automation-control.cap.d.ts.map +1 -0
  17. package/dist/capabilities/battery.cap.d.ts +30 -1
  18. package/dist/capabilities/battery.cap.d.ts.map +1 -1
  19. package/dist/capabilities/binary.cap.d.ts +40 -0
  20. package/dist/capabilities/binary.cap.d.ts.map +1 -0
  21. package/dist/capabilities/brightness.cap.d.ts +3 -2
  22. package/dist/capabilities/brightness.cap.d.ts.map +1 -1
  23. package/dist/capabilities/broker.cap.d.ts +291 -0
  24. package/dist/capabilities/broker.cap.d.ts.map +1 -0
  25. package/dist/capabilities/button.cap.d.ts +27 -0
  26. package/dist/capabilities/button.cap.d.ts.map +1 -0
  27. package/dist/capabilities/camera-credentials.cap.d.ts +1 -0
  28. package/dist/capabilities/camera-credentials.cap.d.ts.map +1 -1
  29. package/dist/capabilities/camera-streams.cap.d.ts +147 -10
  30. package/dist/capabilities/camera-streams.cap.d.ts.map +1 -1
  31. package/dist/capabilities/capability-definition.d.ts +15 -0
  32. package/dist/capabilities/capability-definition.d.ts.map +1 -1
  33. package/dist/capabilities/carbon-monoxide.cap.d.ts +33 -0
  34. package/dist/capabilities/carbon-monoxide.cap.d.ts.map +1 -0
  35. package/dist/capabilities/climate-control.cap.d.ts +183 -0
  36. package/dist/capabilities/climate-control.cap.d.ts.map +1 -0
  37. package/dist/capabilities/color.cap.d.ts +186 -0
  38. package/dist/capabilities/color.cap.d.ts.map +1 -0
  39. package/dist/capabilities/connectivity.cap.d.ts +37 -0
  40. package/dist/capabilities/connectivity.cap.d.ts.map +1 -0
  41. package/dist/capabilities/consumables.cap.d.ts +105 -0
  42. package/dist/capabilities/consumables.cap.d.ts.map +1 -0
  43. package/dist/capabilities/contact.cap.d.ts +41 -0
  44. package/dist/capabilities/contact.cap.d.ts.map +1 -0
  45. package/dist/capabilities/control.cap.d.ts +167 -0
  46. package/dist/capabilities/control.cap.d.ts.map +1 -0
  47. package/dist/capabilities/cover.cap.d.ts +104 -0
  48. package/dist/capabilities/cover.cap.d.ts.map +1 -0
  49. package/dist/capabilities/custom-actions.d.ts +6 -0
  50. package/dist/capabilities/custom-actions.d.ts.map +1 -1
  51. package/dist/capabilities/decoder.cap.d.ts +1 -1
  52. package/dist/capabilities/device-adoption.cap.d.ts +203 -0
  53. package/dist/capabilities/device-adoption.cap.d.ts.map +1 -0
  54. package/dist/capabilities/device-discovery.cap.d.ts +44 -143
  55. package/dist/capabilities/device-discovery.cap.d.ts.map +1 -1
  56. package/dist/capabilities/device-manager.cap.d.ts +469 -0
  57. package/dist/capabilities/device-manager.cap.d.ts.map +1 -1
  58. package/dist/capabilities/device-ops.cap.d.ts +30 -0
  59. package/dist/capabilities/device-ops.cap.d.ts.map +1 -1
  60. package/dist/capabilities/device-provider.cap.d.ts +36 -0
  61. package/dist/capabilities/device-provider.cap.d.ts.map +1 -1
  62. package/dist/capabilities/device-status.cap.d.ts +1 -0
  63. package/dist/capabilities/device-status.cap.d.ts.map +1 -1
  64. package/dist/capabilities/doorbell.cap.d.ts +1 -0
  65. package/dist/capabilities/doorbell.cap.d.ts.map +1 -1
  66. package/dist/capabilities/enum-sensor.cap.d.ts +60 -0
  67. package/dist/capabilities/enum-sensor.cap.d.ts.map +1 -0
  68. package/dist/capabilities/event-emitter.cap.d.ts +79 -0
  69. package/dist/capabilities/event-emitter.cap.d.ts.map +1 -0
  70. package/dist/capabilities/fan-control.cap.d.ts +100 -0
  71. package/dist/capabilities/fan-control.cap.d.ts.map +1 -0
  72. package/dist/capabilities/feature-probe.cap.d.ts +1 -0
  73. package/dist/capabilities/feature-probe.cap.d.ts.map +1 -1
  74. package/dist/capabilities/flood.cap.d.ts +37 -0
  75. package/dist/capabilities/flood.cap.d.ts.map +1 -0
  76. package/dist/capabilities/gas.cap.d.ts +34 -0
  77. package/dist/capabilities/gas.cap.d.ts.map +1 -0
  78. package/dist/capabilities/humidifier.cap.d.ts +82 -0
  79. package/dist/capabilities/humidifier.cap.d.ts.map +1 -0
  80. package/dist/capabilities/humidity-sensor.cap.d.ts +43 -0
  81. package/dist/capabilities/humidity-sensor.cap.d.ts.map +1 -0
  82. package/dist/capabilities/image.cap.d.ts +44 -0
  83. package/dist/capabilities/image.cap.d.ts.map +1 -0
  84. package/dist/capabilities/index.d.ts +93 -12
  85. package/dist/capabilities/index.d.ts.map +1 -1
  86. package/dist/capabilities/integrations.cap.d.ts +12 -0
  87. package/dist/capabilities/integrations.cap.d.ts.map +1 -1
  88. package/dist/capabilities/intercom.cap.d.ts +49 -9
  89. package/dist/capabilities/intercom.cap.d.ts.map +1 -1
  90. package/dist/capabilities/lawn-mower-control.cap.d.ts +83 -0
  91. package/dist/capabilities/lawn-mower-control.cap.d.ts.map +1 -0
  92. package/dist/capabilities/lock-control.cap.d.ts +92 -0
  93. package/dist/capabilities/lock-control.cap.d.ts.map +1 -0
  94. package/dist/capabilities/media-player.cap.d.ts +201 -0
  95. package/dist/capabilities/media-player.cap.d.ts.map +1 -0
  96. package/dist/capabilities/motion-trigger.cap.d.ts +1 -0
  97. package/dist/capabilities/motion-trigger.cap.d.ts.map +1 -1
  98. package/dist/capabilities/motion-zones.cap.d.ts +1 -0
  99. package/dist/capabilities/motion-zones.cap.d.ts.map +1 -1
  100. package/dist/capabilities/native-object-detection.cap.d.ts +1 -0
  101. package/dist/capabilities/native-object-detection.cap.d.ts.map +1 -1
  102. package/dist/capabilities/network-quality.cap.d.ts +5 -0
  103. package/dist/capabilities/network-quality.cap.d.ts.map +1 -1
  104. package/dist/capabilities/notifier.cap.d.ts +173 -0
  105. package/dist/capabilities/notifier.cap.d.ts.map +1 -0
  106. package/dist/capabilities/numeric-sensor.cap.d.ts +52 -0
  107. package/dist/capabilities/numeric-sensor.cap.d.ts.map +1 -0
  108. package/dist/capabilities/osd.cap.d.ts +1 -0
  109. package/dist/capabilities/osd.cap.d.ts.map +1 -1
  110. package/dist/capabilities/pipeline-analytics.cap.d.ts +69 -22
  111. package/dist/capabilities/pipeline-analytics.cap.d.ts.map +1 -1
  112. package/dist/capabilities/pipeline-executor.cap.d.ts +2 -2
  113. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +1 -1
  114. package/dist/capabilities/pipeline-runner.cap.d.ts +2 -2
  115. package/dist/capabilities/platform-probe.cap.d.ts +25 -0
  116. package/dist/capabilities/platform-probe.cap.d.ts.map +1 -1
  117. package/dist/capabilities/power-meter.cap.d.ts +65 -0
  118. package/dist/capabilities/power-meter.cap.d.ts.map +1 -0
  119. package/dist/capabilities/presence.cap.d.ts +79 -0
  120. package/dist/capabilities/presence.cap.d.ts.map +1 -0
  121. package/dist/capabilities/pressure-sensor.cap.d.ts +43 -0
  122. package/dist/capabilities/pressure-sensor.cap.d.ts.map +1 -0
  123. package/dist/capabilities/privacy-mask.cap.d.ts +1 -0
  124. package/dist/capabilities/privacy-mask.cap.d.ts.map +1 -1
  125. package/dist/capabilities/ptz-autotrack.cap.d.ts +1 -0
  126. package/dist/capabilities/ptz-autotrack.cap.d.ts.map +1 -1
  127. package/dist/capabilities/ptz.cap.d.ts +1 -0
  128. package/dist/capabilities/ptz.cap.d.ts.map +1 -1
  129. package/dist/capabilities/reboot.cap.d.ts +1 -0
  130. package/dist/capabilities/reboot.cap.d.ts.map +1 -1
  131. package/dist/capabilities/recording.cap.d.ts +238 -32
  132. package/dist/capabilities/recording.cap.d.ts.map +1 -1
  133. package/dist/capabilities/restreamer.cap.d.ts +2 -2
  134. package/dist/capabilities/schemas/orchestrator-metrics.d.ts +2 -2
  135. package/dist/capabilities/schemas/streaming-shared.d.ts +64 -1
  136. package/dist/capabilities/schemas/streaming-shared.d.ts.map +1 -1
  137. package/dist/capabilities/script-runner.cap.d.ts +62 -0
  138. package/dist/capabilities/script-runner.cap.d.ts.map +1 -0
  139. package/dist/capabilities/settings-store.cap.d.ts +25 -0
  140. package/dist/capabilities/settings-store.cap.d.ts.map +1 -1
  141. package/dist/capabilities/smoke.cap.d.ts +38 -0
  142. package/dist/capabilities/smoke.cap.d.ts.map +1 -0
  143. package/dist/capabilities/snapshot-provider.cap.d.ts +1 -1
  144. package/dist/capabilities/snapshot.cap.d.ts +1 -0
  145. package/dist/capabilities/snapshot.cap.d.ts.map +1 -1
  146. package/dist/capabilities/storage-evictable.cap.d.ts +54 -0
  147. package/dist/capabilities/storage-evictable.cap.d.ts.map +1 -0
  148. package/dist/capabilities/storage-provider.cap.d.ts +31 -186
  149. package/dist/capabilities/storage-provider.cap.d.ts.map +1 -1
  150. package/dist/capabilities/storage.cap.d.ts +35 -226
  151. package/dist/capabilities/storage.cap.d.ts.map +1 -1
  152. package/dist/capabilities/stream-broker.cap.d.ts +309 -25
  153. package/dist/capabilities/stream-broker.cap.d.ts.map +1 -1
  154. package/dist/capabilities/stream-catalog.cap.d.ts +3 -0
  155. package/dist/capabilities/stream-catalog.cap.d.ts.map +1 -1
  156. package/dist/capabilities/stream-params.cap.d.ts +27 -26
  157. package/dist/capabilities/stream-params.cap.d.ts.map +1 -1
  158. package/dist/capabilities/switch.cap.d.ts +1 -0
  159. package/dist/capabilities/switch.cap.d.ts.map +1 -1
  160. package/dist/capabilities/tamper.cap.d.ts +33 -0
  161. package/dist/capabilities/tamper.cap.d.ts.map +1 -0
  162. package/dist/capabilities/temperature-sensor.cap.d.ts +51 -0
  163. package/dist/capabilities/temperature-sensor.cap.d.ts.map +1 -0
  164. package/dist/capabilities/update.cap.d.ts +49 -0
  165. package/dist/capabilities/update.cap.d.ts.map +1 -0
  166. package/dist/capabilities/vacuum-control.cap.d.ts +229 -0
  167. package/dist/capabilities/vacuum-control.cap.d.ts.map +1 -0
  168. package/dist/capabilities/valve.cap.d.ts +93 -0
  169. package/dist/capabilities/valve.cap.d.ts.map +1 -0
  170. package/dist/capabilities/vibration.cap.d.ts +33 -0
  171. package/dist/capabilities/vibration.cap.d.ts.map +1 -0
  172. package/dist/capabilities/water-heater.cap.d.ts +78 -0
  173. package/dist/capabilities/water-heater.cap.d.ts.map +1 -0
  174. package/dist/capabilities/weather.cap.d.ts +76 -0
  175. package/dist/capabilities/weather.cap.d.ts.map +1 -0
  176. package/dist/capabilities/webrtc-session.cap.d.ts +95 -1
  177. package/dist/capabilities/webrtc-session.cap.d.ts.map +1 -1
  178. package/dist/constants.d.ts +0 -2
  179. package/dist/constants.d.ts.map +1 -1
  180. package/dist/device/base-device-provider.d.ts +11 -0
  181. package/dist/device/base-device-provider.d.ts.map +1 -1
  182. package/dist/device/base-device.d.ts +52 -0
  183. package/dist/device/base-device.d.ts.map +1 -1
  184. package/dist/device/device-context.d.ts +29 -0
  185. package/dist/device/device-context.d.ts.map +1 -1
  186. package/dist/device/device-link-transform.d.ts +6 -0
  187. package/dist/device/device-link-transform.d.ts.map +1 -0
  188. package/dist/device/device-management.d.ts +116 -4
  189. package/dist/device/device-management.d.ts.map +1 -1
  190. package/dist/device/device-type.d.ts +214 -3
  191. package/dist/device/device-type.d.ts.map +1 -1
  192. package/dist/device/device.d.ts +25 -0
  193. package/dist/device/device.d.ts.map +1 -1
  194. package/dist/device/index.d.ts +5 -1
  195. package/dist/device/index.d.ts.map +1 -1
  196. package/dist/device/path-util.d.ts +13 -0
  197. package/dist/device/path-util.d.ts.map +1 -0
  198. package/dist/device/schema-fields.d.ts +12 -0
  199. package/dist/device/schema-fields.d.ts.map +1 -0
  200. package/dist/device/source-info.d.ts +87 -0
  201. package/dist/device/source-info.d.ts.map +1 -0
  202. package/dist/device/system-mirror.d.ts +6 -2
  203. package/dist/device/system-mirror.d.ts.map +1 -1
  204. package/dist/encode-profile.d.ts +126 -0
  205. package/dist/encode-profile.d.ts.map +1 -0
  206. package/dist/enums/event-category.d.ts +64 -6
  207. package/dist/enums/event-category.d.ts.map +1 -1
  208. package/dist/generated/addon-api.d.ts +12345 -8129
  209. package/dist/generated/addon-api.d.ts.map +1 -1
  210. package/dist/generated/cap-status-types.d.ts +85 -1
  211. package/dist/generated/cap-status-types.d.ts.map +1 -1
  212. package/dist/generated/capability-router-map.d.ts +133 -7
  213. package/dist/generated/capability-router-map.d.ts.map +1 -1
  214. package/dist/generated/device-local-state.d.ts +117 -0
  215. package/dist/generated/device-local-state.d.ts.map +1 -1
  216. package/dist/generated/device-proxy.d.ts +124 -5
  217. package/dist/generated/device-proxy.d.ts.map +1 -1
  218. package/dist/generated/method-access-map.d.ts +1 -1
  219. package/dist/generated/method-access-map.d.ts.map +1 -1
  220. package/dist/generated/provider-kind-map.d.ts +1 -1
  221. package/dist/generated/provider-kind-map.d.ts.map +1 -1
  222. package/dist/generated/system-proxy.d.ts +9 -7
  223. package/dist/generated/system-proxy.d.ts.map +1 -1
  224. package/dist/{index-DnpdVFKv.js → index-BSA_TBea.js} +4170 -728
  225. package/dist/index-BSA_TBea.js.map +1 -0
  226. package/dist/{index-C2zzIDdX.mjs → index-Bpj3ScIH.mjs} +4563 -1121
  227. package/dist/index-Bpj3ScIH.mjs.map +1 -0
  228. package/dist/index.d.ts +21 -3
  229. package/dist/index.d.ts.map +1 -1
  230. package/dist/index.js +1323 -116
  231. package/dist/index.js.map +1 -1
  232. package/dist/index.mjs +1637 -430
  233. package/dist/index.mjs.map +1 -1
  234. package/dist/interfaces/addon-data-plane.d.ts +76 -0
  235. package/dist/interfaces/addon-data-plane.d.ts.map +1 -0
  236. package/dist/interfaces/addon.d.ts +60 -0
  237. package/dist/interfaces/addon.d.ts.map +1 -1
  238. package/dist/interfaces/advanced-notifier.d.ts +4 -0
  239. package/dist/interfaces/advanced-notifier.d.ts.map +1 -1
  240. package/dist/interfaces/capability.d.ts +42 -1
  241. package/dist/interfaces/capability.d.ts.map +1 -1
  242. package/dist/interfaces/config-ui.d.ts +70 -6
  243. package/dist/interfaces/config-ui.d.ts.map +1 -1
  244. package/dist/interfaces/device-capabilities/camera.d.ts +2 -1
  245. package/dist/interfaces/device-capabilities/camera.d.ts.map +1 -1
  246. package/dist/interfaces/event-bus.d.ts +49 -3
  247. package/dist/interfaces/event-bus.d.ts.map +1 -1
  248. package/dist/interfaces/kernel-abstractions.d.ts +10 -1
  249. package/dist/interfaces/kernel-abstractions.d.ts.map +1 -1
  250. package/dist/interfaces/network-quality.d.ts +8 -0
  251. package/dist/interfaces/network-quality.d.ts.map +1 -1
  252. package/dist/interfaces/pipeline-executor-capability.d.ts +2 -2
  253. package/dist/interfaces/pipeline-orchestrator-capability.d.ts +2 -1
  254. package/dist/interfaces/pipeline-orchestrator-capability.d.ts.map +1 -1
  255. package/dist/interfaces/pipeline-runner-capability.d.ts +7 -0
  256. package/dist/interfaces/pipeline-runner-capability.d.ts.map +1 -1
  257. package/dist/interfaces/recording-config.d.ts +91 -0
  258. package/dist/interfaces/recording-config.d.ts.map +1 -0
  259. package/dist/interfaces/rtp-egress.d.ts +2 -3
  260. package/dist/interfaces/rtp-egress.d.ts.map +1 -1
  261. package/dist/interfaces/storage-location-declaration.d.ts +34 -0
  262. package/dist/interfaces/storage-location-declaration.d.ts.map +1 -0
  263. package/dist/interfaces/storage-location.d.ts +18 -74
  264. package/dist/interfaces/storage-location.d.ts.map +1 -1
  265. package/dist/interfaces/storage.d.ts +15 -4
  266. package/dist/interfaces/storage.d.ts.map +1 -1
  267. package/dist/interfaces/stream-broker.d.ts +18 -3
  268. package/dist/interfaces/stream-broker.d.ts.map +1 -1
  269. package/dist/interfaces/timezones.d.ts +59 -0
  270. package/dist/interfaces/timezones.d.ts.map +1 -0
  271. package/dist/node.d.ts +3 -0
  272. package/dist/node.d.ts.map +1 -1
  273. package/dist/node.js +50 -8
  274. package/dist/node.js.map +1 -1
  275. package/dist/node.mjs +51 -9
  276. package/dist/node.mjs.map +1 -1
  277. package/dist/storage/filesystem-storage-provider.d.ts +2 -1
  278. package/dist/storage/filesystem-storage-provider.d.ts.map +1 -1
  279. package/dist/stream-selection.d.ts +85 -0
  280. package/dist/stream-selection.d.ts.map +1 -0
  281. package/dist/types/detection.d.ts +3 -3
  282. package/dist/types/io.d.ts +1 -1
  283. package/dist/types/io.d.ts.map +1 -1
  284. package/dist/util/location-match.d.ts +15 -0
  285. package/dist/util/location-match.d.ts.map +1 -0
  286. package/dist/utils/canonical-hash.d.ts +20 -0
  287. package/dist/utils/canonical-hash.d.ts.map +1 -0
  288. package/dist/utils/export-reconciler.d.ts +101 -0
  289. package/dist/utils/export-reconciler.d.ts.map +1 -0
  290. package/dist/utils/sleep.d.ts +36 -0
  291. package/dist/utils/sleep.d.ts.map +1 -0
  292. package/package.json +1 -1
  293. package/dist/capabilities/recording-engine.cap.d.ts +0 -477
  294. package/dist/capabilities/recording-engine.cap.d.ts.map +0 -1
  295. package/dist/index-C2zzIDdX.mjs.map +0 -1
  296. package/dist/index-DnpdVFKv.js.map +0 -1
@@ -1,5 +1,7 @@
1
1
  import type { AddonContext, AddonInitResult, CapabilitiesAccess, ProviderRegistration } from '../interfaces/addon.js';
2
2
  import type { ConfigUISchema, ConfigUISchemaWithValues, ConfigField, ConfigSection } from '../interfaces/config-ui.js';
3
+ import { type DurableState } from './durable-state.js';
4
+ import type { ZodType } from 'zod';
3
5
  export type { CapabilitiesAccess };
4
6
  /**
5
7
  * Utility type that constrains a ConfigField's `key` to only accept
@@ -247,6 +249,16 @@ export declare abstract class BaseAddon<TConfig extends object = Record<string,
247
249
  * (e.g. from older versions) without polluting the typed config.
248
250
  */
249
251
  protected resolveConfig(): Promise<void>;
252
+ /**
253
+ * Typed durable handle over ONE key of this addon's store. The whole
254
+ * Zod-validated value round-trips on every read/write — no hand-listed
255
+ * fields, so a field can never be silently dropped on persist. Reads use
256
+ * the same retry budget as config resolution; a corrupt/legacy blob logs
257
+ * a warning and falls back rather than crashing boot.
258
+ */
259
+ protected state<T>(key: string, schema: ZodType<T>, fallback: T): DurableState<T>;
260
+ /** Per-device variant of {@link state}, backed by the per-device store. */
261
+ protected deviceState<T>(deviceId: number, key: string, schema: ZodType<T>, fallback: T): DurableState<T>;
250
262
  /**
251
263
  * Wrap `ctx.settings.readAddonStore()` with a short retry budget so a
252
264
  * transient settings-store outage (mid-restart of sqlite-settings, tsx-watch
@@ -1 +1 @@
1
- {"version":3,"file":"base-addon.d.ts","sourceRoot":"","sources":["../../src/addon/base-addon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-addon.d.ts","sourceRoot":"","sources":["../../src/addon/base-addon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { ZodType } from 'zod';
2
+ /**
3
+ * A typed handle over ONE top-level key of an addon/device store. `set`
4
+ * always writes the whole Zod-validated value for that key, so a field
5
+ * can never be silently dropped by a hand-written serializer. Sibling
6
+ * keys are untouched (writes go through the store's patch-merge).
7
+ */
8
+ export interface DurableState<T> {
9
+ /** Read + validate. Missing key or parse failure → `fallback`. Never throws. */
10
+ get(): Promise<T>;
11
+ /** Validate `next`, then write the WHOLE value under this key. Throws on invalid. */
12
+ set(next: T): Promise<void>;
13
+ /** get → fn(prev) → set, as one logical update. */
14
+ update(fn: (prev: T) => T): Promise<void>;
15
+ }
16
+ export interface DurableStateDeps<T> {
17
+ readonly key: string;
18
+ readonly schema: ZodType<T>;
19
+ readonly fallback: T;
20
+ readonly read: () => Promise<Record<string, unknown>>;
21
+ readonly write: (patch: Record<string, unknown>) => Promise<void>;
22
+ /** Called when a stored blob fails validation (before falling back). */
23
+ readonly onParseError?: (key: string, error: unknown) => void;
24
+ }
25
+ /**
26
+ * Build a {@link DurableState} over a single store key. Transport-agnostic:
27
+ * `read`/`write` are the addon-store or device-store accessors. The whole
28
+ * validated value round-trips on every read/write — the schema is the
29
+ * single source of truth for what is persisted, so no hand-listed field
30
+ * set can drop a key on save.
31
+ */
32
+ export declare function createDurableState<T>(deps: DurableStateDeps<T>): DurableState<T>;
33
+ //# sourceMappingURL=durable-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"durable-state.d.ts","sourceRoot":"","sources":["../../src/addon/durable-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC;;;;;GAKG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,gFAAgF;IAChF,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAA;IACjB,qFAAqF;IACrF,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,mDAAmD;IACnD,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACrD,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE,wEAAwE;IACxE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAC9D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAuBhF"}
@@ -2,38 +2,86 @@ import { z } from 'zod';
2
2
  import { type InferProvider } from './capability-definition.js';
3
3
  import { DeviceType } from '../device/device-type.js';
4
4
  /**
5
- * List of accessory children linked to a parent device (camera, hub).
6
- * Returns only numeric device ids — the rest (role, deviceType, name,
7
- * caps) is derived by fetching each child via `device-manager.getDevice`.
5
+ * List of accessory children linked to a parent device. The cap surfaces
6
+ * the grouping and the per-child UI-visibility flag — the single source
7
+ * of truth for what an accessory IS remains the child device itself
8
+ * (resolved via `device-manager.getDevice` from the listed numeric ids).
8
9
  *
9
- * The single-source-of-truth for what an accessory IS remains the child
10
- * device itself; this cap only surfaces the grouping.
10
+ * Two parallel arrays:
11
+ * - `childDeviceIds` every accessory child the parent recognises
12
+ * - `hiddenChildIds` — subset that the operator chose to hide from
13
+ * the parent's UI surface (panels / detail page / grid). The hidden
14
+ * children remain registered and continue to receive state updates;
15
+ * they're omitted only from the parent's UI accessories view.
16
+ *
17
+ * Use cases:
18
+ * - Camera parents hiding seldom-used accessories (e.g. a chime that
19
+ * was provisioned but isn't connected to anything).
20
+ * - HA-integration parents hiding entity-children the user doesn't
21
+ * care about (an "Aqara plug" exposes one switch + 3 sensors —
22
+ * the operator may want only the switch visible).
23
+ *
24
+ * Toggling visibility is the parent provider's responsibility — it
25
+ * implements `setChildHidden` and persists the set so reboots survive.
11
26
  */
12
27
  export declare const AccessoriesStatusSchema: z.ZodObject<{
13
28
  childDeviceIds: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
29
+ hiddenChildIds: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
14
30
  }, z.core.$strip>;
15
31
  export type AccessoriesStatus = z.infer<typeof AccessoriesStatusSchema>;
16
32
  export declare const accessoriesCapability: {
17
33
  readonly name: "accessories";
18
34
  readonly scope: "device";
35
+ readonly deviceNative: true;
19
36
  readonly mode: "singleton";
20
- readonly deviceTypes: readonly [DeviceType.Camera, DeviceType.Hub];
21
- readonly methods: {};
37
+ readonly deviceTypes: readonly [DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Light, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Cover, DeviceType.Lock, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Generic];
38
+ readonly methods: {
39
+ /**
40
+ * Toggle the UI-visibility of a single accessory child. Hidden
41
+ * children stay registered and continue to receive state updates;
42
+ * they're omitted only from the parent's UI accessories panel.
43
+ *
44
+ * Idempotent — hiding an already-hidden child or unhiding a
45
+ * non-hidden child is a no-op. Providers that don't support
46
+ * per-child visibility may implement this as a no-op (the UI hide
47
+ * toggle gracefully degrades).
48
+ */
49
+ readonly setChildHidden: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
50
+ deviceId: z.ZodNumber;
51
+ childDeviceId: z.ZodNumber;
52
+ hidden: z.ZodBoolean;
53
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
54
+ };
22
55
  readonly events: {
23
56
  /**
24
57
  * Emitted when a child device is created, removed, or its parent
25
- * assignment changes. Payload carries the fresh list.
58
+ * assignment changes. Payload carries the fresh list and the
59
+ * hidden subset.
26
60
  */
27
61
  readonly onAccessoriesChanged: {
28
62
  readonly data: z.ZodObject<{
29
63
  deviceId: z.ZodNumber;
30
64
  childDeviceIds: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
65
+ hiddenChildIds: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
66
+ }, z.core.$strip>;
67
+ };
68
+ /**
69
+ * Emitted when the operator toggles a child's UI-visibility.
70
+ * Subscribers (admin UI accessories panel) re-render off this
71
+ * signal without re-fetching the full status block.
72
+ */
73
+ readonly onChildVisibilityChanged: {
74
+ readonly data: z.ZodObject<{
75
+ deviceId: z.ZodNumber;
76
+ childDeviceId: z.ZodNumber;
77
+ hidden: z.ZodBoolean;
31
78
  }, z.core.$strip>;
32
79
  };
33
80
  };
34
81
  readonly status: {
35
82
  readonly schema: z.ZodObject<{
36
83
  childDeviceIds: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
84
+ hiddenChildIds: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
37
85
  }, z.core.$strip>;
38
86
  readonly kind: "command-driven";
39
87
  };
@@ -1 +1 @@
1
- {"version":3,"file":"accessories.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/accessories.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB;;iBAElC,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE,eAAO,MAAM,qBAAqB;;;;;;;QAO9B;;;WAGG;;;;;;;;;;;;;;CAUkC,CAAA;AAEzC,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAC,OAAO,qBAAqB,CAAC,CAAA"}
1
+ {"version":3,"file":"accessories.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/accessories.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,uBAAuB;;;iBAMlC,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE,eAAO,MAAM,qBAAqB;;;;;;;QAwB9B;;;;;;;;;WASG;;;;;;;;QAYH;;;;WAIG;;;;;;;;QAMH;;;;WAIG;;;;;;;;;;;;;;;;CAWkC,CAAA;AAEzC,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAC,OAAO,qBAAqB,CAAC,CAAA"}
@@ -17,6 +17,7 @@ declare const NotificationRuleConditionsSchema: z.ZodObject<{
17
17
  }, z.core.$strip>>;
18
18
  cooldownSeconds: z.ZodOptional<z.ZodNumber>;
19
19
  minDwellSeconds: z.ZodOptional<z.ZodNumber>;
20
+ eventTypeTokens: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
20
21
  }, z.core.$strip>;
21
22
  declare const NotificationRuleTemplateSchema: z.ZodObject<{
22
23
  title: z.ZodString;
@@ -50,6 +51,7 @@ declare const NotificationRuleSchema: z.ZodObject<{
50
51
  }, z.core.$strip>>;
51
52
  cooldownSeconds: z.ZodOptional<z.ZodNumber>;
52
53
  minDwellSeconds: z.ZodOptional<z.ZodNumber>;
54
+ eventTypeTokens: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
53
55
  }, z.core.$strip>;
54
56
  outputs: z.ZodReadonly<z.ZodArray<z.ZodString>>;
55
57
  template: z.ZodOptional<z.ZodObject<{
@@ -123,6 +125,7 @@ export declare const advancedNotifierCapability: {
123
125
  }, z.core.$strip>>;
124
126
  cooldownSeconds: z.ZodOptional<z.ZodNumber>;
125
127
  minDwellSeconds: z.ZodOptional<z.ZodNumber>;
128
+ eventTypeTokens: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
126
129
  }, z.core.$strip>;
127
130
  outputs: z.ZodReadonly<z.ZodArray<z.ZodString>>;
128
131
  template: z.ZodOptional<z.ZodObject<{
@@ -166,6 +169,7 @@ export declare const advancedNotifierCapability: {
166
169
  }, z.core.$strip>>;
167
170
  cooldownSeconds: z.ZodOptional<z.ZodNumber>;
168
171
  minDwellSeconds: z.ZodOptional<z.ZodNumber>;
172
+ eventTypeTokens: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
169
173
  }, z.core.$strip>;
170
174
  outputs: z.ZodReadonly<z.ZodArray<z.ZodString>>;
171
175
  template: z.ZodOptional<z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"advanced-notifier.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/advanced-notifier.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElG,QAAA,MAAM,gCAAgC;;;;;;;;;;;;;;;;;iBAapC,CAAA;AAEF,QAAA,MAAM,8BAA8B;;;;;;;;;iBAIlC,CAAA;AAEF,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAS1B,CAAA;AAEF,QAAA,MAAM,4BAA4B;;;;;;iBAMhC,CAAA;AAEF,QAAA,MAAM,8BAA8B;;;;;;;;;;iBAUlC,CAAA;AAEF,QAAA,MAAM,+BAA+B;;;;;;iBAMnC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BE,CAAA;AAEzC,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAExF,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,8BAA8B,EAC9B,4BAA4B,EAC5B,8BAA8B,EAC9B,+BAA+B,GAChC,CAAA"}
1
+ {"version":3,"file":"advanced-notifier.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/advanced-notifier.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAElG,QAAA,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;iBAiBpC,CAAA;AAEF,QAAA,MAAM,8BAA8B;;;;;;;;;iBAIlC,CAAA;AAEF,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAS1B,CAAA;AAEF,QAAA,MAAM,4BAA4B;;;;;;iBAMhC,CAAA;AAEF,QAAA,MAAM,8BAA8B;;;;;;;;;;iBAUlC,CAAA;AAEF,QAAA,MAAM,+BAA+B;;;;;;iBAMnC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BE,CAAA;AAEzC,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAExF,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,8BAA8B,EAC9B,4BAA4B,EAC5B,8BAA8B,EAC9B,+BAA+B,GAChC,CAAA"}
@@ -0,0 +1,56 @@
1
+ import { z } from 'zod';
2
+ import { type InferProvider } from './capability-definition.js';
3
+ import { DeviceType } from '../device/device-type.js';
4
+ /**
5
+ * Multi-metric air-quality slice. Covers CO₂, total VOCs, particulate
6
+ * matter at PM2.5 / PM10, and a derived AQI index — all optional so
7
+ * a single-metric source populates only what it observes. Mirrors
8
+ * the HA `sensor` device_class set (`co2`, `volatile_organic_compounds`,
9
+ * `pm25`, `pm10`, `aqi`) collapsed into one cap because a typical
10
+ * air-quality node reports several of these together; modelling them
11
+ * as siblings keeps a single timestamp + one slice subscription.
12
+ */
13
+ export declare const AirQualitySensorStatusSchema: z.ZodObject<{
14
+ co2Ppm: z.ZodOptional<z.ZodNumber>;
15
+ vocPpb: z.ZodOptional<z.ZodNumber>;
16
+ pm25: z.ZodOptional<z.ZodNumber>;
17
+ pm10: z.ZodOptional<z.ZodNumber>;
18
+ aqi: z.ZodOptional<z.ZodNumber>;
19
+ lastFetchedAt: z.ZodNumber;
20
+ unit: z.ZodOptional<z.ZodString>;
21
+ precision: z.ZodOptional<z.ZodNumber>;
22
+ }, z.core.$strip>;
23
+ export type AirQualitySensorStatus = z.infer<typeof AirQualitySensorStatusSchema>;
24
+ export declare const airQualitySensorCapability: {
25
+ readonly name: "air-quality-sensor";
26
+ readonly scope: "device";
27
+ readonly deviceNative: true;
28
+ readonly mode: "singleton";
29
+ readonly deviceTypes: readonly [DeviceType.Sensor];
30
+ readonly methods: {};
31
+ readonly status: {
32
+ readonly schema: z.ZodObject<{
33
+ co2Ppm: z.ZodOptional<z.ZodNumber>;
34
+ vocPpb: z.ZodOptional<z.ZodNumber>;
35
+ pm25: z.ZodOptional<z.ZodNumber>;
36
+ pm10: z.ZodOptional<z.ZodNumber>;
37
+ aqi: z.ZodOptional<z.ZodNumber>;
38
+ lastFetchedAt: z.ZodNumber;
39
+ unit: z.ZodOptional<z.ZodString>;
40
+ precision: z.ZodOptional<z.ZodNumber>;
41
+ }, z.core.$strip>;
42
+ readonly kind: "push";
43
+ };
44
+ readonly runtimeState: z.ZodObject<{
45
+ co2Ppm: z.ZodOptional<z.ZodNumber>;
46
+ vocPpb: z.ZodOptional<z.ZodNumber>;
47
+ pm25: z.ZodOptional<z.ZodNumber>;
48
+ pm10: z.ZodOptional<z.ZodNumber>;
49
+ aqi: z.ZodOptional<z.ZodNumber>;
50
+ lastFetchedAt: z.ZodNumber;
51
+ unit: z.ZodOptional<z.ZodString>;
52
+ precision: z.ZodOptional<z.ZodNumber>;
53
+ }, z.core.$strip>;
54
+ };
55
+ export type IAirQualitySensorProvider = InferProvider<typeof airQualitySensorCapability>;
56
+ //# sourceMappingURL=air-quality-sensor.cap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"air-quality-sensor.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/air-quality-sensor.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;iBAuBvC,CAAA;AAEF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEjF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYE,CAAA;AAEzC,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
@@ -0,0 +1,154 @@
1
+ import { z } from 'zod';
2
+ import { type InferProvider } from './capability-definition.js';
3
+ import { DeviceType } from '../device/device-type.js';
4
+ /**
5
+ * Alarm-panel cap. Models HA `alarm_control_panel.*` on
6
+ * `DeviceType.AlarmPanel`. State follows HA's canonical lifecycle
7
+ * across disarmed / armed_(home|away|night|vacation|custom_bypass) /
8
+ * arming / pending / triggered / disarming.
9
+ *
10
+ * Many panels require a PIN code on arm / disarm — the optional
11
+ * `code` field on the methods passes it through to the upstream
12
+ * service; it's NEVER persisted in the runtime slice or any event
13
+ * payload. The presence of a required code is signalled by
14
+ * `DeviceFeature.AlarmPinRequired` so the UI gates a code-entry
15
+ * field without a slice fetch.
16
+ *
17
+ * `availableModes` mirrors HA's `supported_features`-derived arm
18
+ * mode list — the UI renders only the buttons the panel accepts.
19
+ */
20
+ export declare const AlarmStateSchema: z.ZodEnum<{
21
+ pending: "pending";
22
+ disarmed: "disarmed";
23
+ armed_home: "armed_home";
24
+ armed_away: "armed_away";
25
+ armed_night: "armed_night";
26
+ armed_vacation: "armed_vacation";
27
+ armed_custom_bypass: "armed_custom_bypass";
28
+ arming: "arming";
29
+ disarming: "disarming";
30
+ triggered: "triggered";
31
+ }>;
32
+ export type AlarmState = z.infer<typeof AlarmStateSchema>;
33
+ export declare const AlarmArmModeSchema: z.ZodEnum<{
34
+ home: "home";
35
+ away: "away";
36
+ night: "night";
37
+ vacation: "vacation";
38
+ custom_bypass: "custom_bypass";
39
+ }>;
40
+ export type AlarmArmMode = z.infer<typeof AlarmArmModeSchema>;
41
+ export declare const AlarmPanelStatusSchema: z.ZodObject<{
42
+ state: z.ZodEnum<{
43
+ pending: "pending";
44
+ disarmed: "disarmed";
45
+ armed_home: "armed_home";
46
+ armed_away: "armed_away";
47
+ armed_night: "armed_night";
48
+ armed_vacation: "armed_vacation";
49
+ armed_custom_bypass: "armed_custom_bypass";
50
+ arming: "arming";
51
+ disarming: "disarming";
52
+ triggered: "triggered";
53
+ }>;
54
+ availableModes: z.ZodArray<z.ZodEnum<{
55
+ home: "home";
56
+ away: "away";
57
+ night: "night";
58
+ vacation: "vacation";
59
+ custom_bypass: "custom_bypass";
60
+ }>>;
61
+ requiresCode: z.ZodBoolean;
62
+ lastChangedAt: z.ZodNumber;
63
+ }, z.core.$strip>;
64
+ export type AlarmPanelStatus = z.infer<typeof AlarmPanelStatusSchema>;
65
+ export declare const alarmPanelCapability: {
66
+ readonly name: "alarm-panel";
67
+ readonly scope: "device";
68
+ readonly deviceNative: true;
69
+ readonly mode: "singleton";
70
+ readonly deviceTypes: readonly [DeviceType.AlarmPanel];
71
+ readonly methods: {
72
+ readonly arm: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
73
+ deviceId: z.ZodNumber;
74
+ mode: z.ZodEnum<{
75
+ home: "home";
76
+ away: "away";
77
+ night: "night";
78
+ vacation: "vacation";
79
+ custom_bypass: "custom_bypass";
80
+ }>;
81
+ code: z.ZodOptional<z.ZodString>;
82
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
83
+ readonly disarm: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
84
+ deviceId: z.ZodNumber;
85
+ code: z.ZodOptional<z.ZodString>;
86
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
87
+ /**
88
+ * Force the panel into the `triggered` state — used by HA
89
+ * automations to surface external sensor events through the panel
90
+ * (e.g. a Reolink camera intrusion event firing the security
91
+ * system). Provider rejects when the panel hardware doesn't
92
+ * support a software-initiated trigger.
93
+ */
94
+ readonly trigger: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
95
+ deviceId: z.ZodNumber;
96
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
97
+ };
98
+ readonly status: {
99
+ readonly schema: z.ZodObject<{
100
+ state: z.ZodEnum<{
101
+ pending: "pending";
102
+ disarmed: "disarmed";
103
+ armed_home: "armed_home";
104
+ armed_away: "armed_away";
105
+ armed_night: "armed_night";
106
+ armed_vacation: "armed_vacation";
107
+ armed_custom_bypass: "armed_custom_bypass";
108
+ arming: "arming";
109
+ disarming: "disarming";
110
+ triggered: "triggered";
111
+ }>;
112
+ availableModes: z.ZodArray<z.ZodEnum<{
113
+ home: "home";
114
+ away: "away";
115
+ night: "night";
116
+ vacation: "vacation";
117
+ custom_bypass: "custom_bypass";
118
+ }>>;
119
+ requiresCode: z.ZodBoolean;
120
+ lastChangedAt: z.ZodNumber;
121
+ }, z.core.$strip>;
122
+ readonly kind: "push";
123
+ };
124
+ /**
125
+ * Runtime-state slice — mirrored by the kernel. UI panel reads the
126
+ * full slice; renders an arm button per `availableModes` entry and
127
+ * a PIN field iff `requiresCode === true`.
128
+ */
129
+ readonly runtimeState: z.ZodObject<{
130
+ state: z.ZodEnum<{
131
+ pending: "pending";
132
+ disarmed: "disarmed";
133
+ armed_home: "armed_home";
134
+ armed_away: "armed_away";
135
+ armed_night: "armed_night";
136
+ armed_vacation: "armed_vacation";
137
+ armed_custom_bypass: "armed_custom_bypass";
138
+ arming: "arming";
139
+ disarming: "disarming";
140
+ triggered: "triggered";
141
+ }>;
142
+ availableModes: z.ZodArray<z.ZodEnum<{
143
+ home: "home";
144
+ away: "away";
145
+ night: "night";
146
+ vacation: "vacation";
147
+ custom_bypass: "custom_bypass";
148
+ }>>;
149
+ requiresCode: z.ZodBoolean;
150
+ lastChangedAt: z.ZodNumber;
151
+ }, z.core.$strip>;
152
+ };
153
+ export type IAlarmPanelProvider = InferProvider<typeof alarmPanelCapability>;
154
+ //# sourceMappingURL=alarm-panel.cap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-panel.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/alarm-panel.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;EAW3B,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAEzD,eAAO,MAAM,kBAAkB;;;;;;EAM7B,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;iBAWjC,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAErE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;QA0B7B;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWL;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;CAEoC,CAAA;AAEzC,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAC,OAAO,oBAAoB,CAAC,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { z } from 'zod';
2
+ import { type InferProvider } from './capability-definition.js';
3
+ import { DeviceType } from '../device/device-type.js';
4
+ /**
5
+ * Ambient illuminance reading in lux. Drives Home Assistant `sensor`
6
+ * entries with `device_class: illuminance`.
7
+ */
8
+ export declare const AmbientLightSensorStatusSchema: z.ZodObject<{
9
+ lux: z.ZodNumber;
10
+ lastFetchedAt: z.ZodNumber;
11
+ unit: z.ZodOptional<z.ZodString>;
12
+ precision: z.ZodOptional<z.ZodNumber>;
13
+ }, z.core.$strip>;
14
+ export type AmbientLightSensorStatus = z.infer<typeof AmbientLightSensorStatusSchema>;
15
+ export declare const ambientLightSensorCapability: {
16
+ readonly name: "ambient-light-sensor";
17
+ readonly scope: "device";
18
+ readonly deviceNative: true;
19
+ readonly mode: "singleton";
20
+ readonly deviceTypes: readonly [DeviceType.Sensor];
21
+ readonly methods: {};
22
+ readonly status: {
23
+ readonly schema: z.ZodObject<{
24
+ lux: z.ZodNumber;
25
+ lastFetchedAt: z.ZodNumber;
26
+ unit: z.ZodOptional<z.ZodString>;
27
+ precision: z.ZodOptional<z.ZodNumber>;
28
+ }, z.core.$strip>;
29
+ readonly kind: "push";
30
+ };
31
+ readonly runtimeState: z.ZodObject<{
32
+ lux: z.ZodNumber;
33
+ lastFetchedAt: z.ZodNumber;
34
+ unit: z.ZodOptional<z.ZodString>;
35
+ precision: z.ZodOptional<z.ZodNumber>;
36
+ }, z.core.$strip>;
37
+ };
38
+ export type IAmbientLightSensorProvider = InferProvider<typeof ambientLightSensorCapability>;
39
+ //# sourceMappingURL=ambient-light-sensor.cap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ambient-light-sensor.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/ambient-light-sensor.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD;;;GAGG;AACH,eAAO,MAAM,8BAA8B;;;;;iBAczC,CAAA;AAEF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAErF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;CAYA,CAAA;AAEzC,MAAM,MAAM,2BAA2B,GAAG,aAAa,CAAC,OAAO,4BAA4B,CAAC,CAAA"}
@@ -0,0 +1,65 @@
1
+ import { z } from 'zod';
2
+ import { type InferProvider } from './capability-definition.js';
3
+ import { DeviceType } from '../device/device-type.js';
4
+ /**
5
+ * Automation-control cap. Models HA `automation.*` entities on
6
+ * `DeviceType.Automation`. An automation is a trigger+condition+
7
+ * action rule that can be enabled / disabled and manually fired
8
+ * via the `trigger` method.
9
+ *
10
+ * `trigger` accepts an optional `skipCondition` flag — when true,
11
+ * the automation's action block runs WITHOUT evaluating its
12
+ * condition block. Pair with `DeviceFeature.AutomationSkipCondition`
13
+ * to gate the UI checkbox for the manual-trigger dialog.
14
+ */
15
+ export declare const AutomationControlStatusSchema: z.ZodObject<{
16
+ enabled: z.ZodBoolean;
17
+ isRunning: z.ZodBoolean;
18
+ lastTriggeredAt: z.ZodNumber;
19
+ lastError: z.ZodNullable<z.ZodString>;
20
+ lastChangedAt: z.ZodNumber;
21
+ }, z.core.$strip>;
22
+ export type AutomationControlStatus = z.infer<typeof AutomationControlStatusSchema>;
23
+ export declare const automationControlCapability: {
24
+ readonly name: "automation-control";
25
+ readonly scope: "device";
26
+ readonly deviceNative: true;
27
+ readonly mode: "singleton";
28
+ readonly deviceTypes: readonly [DeviceType.Automation];
29
+ readonly methods: {
30
+ readonly enable: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
31
+ deviceId: z.ZodNumber;
32
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
33
+ readonly disable: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
34
+ deviceId: z.ZodNumber;
35
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
36
+ readonly trigger: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
37
+ deviceId: z.ZodNumber;
38
+ skipCondition: z.ZodOptional<z.ZodBoolean>;
39
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
40
+ };
41
+ readonly status: {
42
+ readonly schema: z.ZodObject<{
43
+ enabled: z.ZodBoolean;
44
+ isRunning: z.ZodBoolean;
45
+ lastTriggeredAt: z.ZodNumber;
46
+ lastError: z.ZodNullable<z.ZodString>;
47
+ lastChangedAt: z.ZodNumber;
48
+ }, z.core.$strip>;
49
+ readonly kind: "push";
50
+ };
51
+ /**
52
+ * Runtime-state slice — mirrored by the kernel. UI automation tile
53
+ * reads `enabled` (toggle) + `isRunning` (spinner) + `lastError`
54
+ * (badge) directly.
55
+ */
56
+ readonly runtimeState: z.ZodObject<{
57
+ enabled: z.ZodBoolean;
58
+ isRunning: z.ZodBoolean;
59
+ lastTriggeredAt: z.ZodNumber;
60
+ lastError: z.ZodNullable<z.ZodString>;
61
+ lastChangedAt: z.ZodNumber;
62
+ }, z.core.$strip>;
63
+ };
64
+ export type IAutomationControlProvider = InferProvider<typeof automationControlCapability>;
65
+ //# sourceMappingURL=automation-control.cap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automation-control.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/automation-control.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,6BAA6B;;;;;;iBAaxC,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEnF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiCtC;;;;OAIG;;;;;;;;CAEoC,CAAA;AAEzC,MAAM,MAAM,0BAA0B,GAAG,aAAa,CAAC,OAAO,2BAA2B,CAAC,CAAA"}
@@ -17,14 +17,40 @@ export declare const BatteryStatusSchema: z.ZodObject<{
17
17
  }>;
18
18
  sleeping: z.ZodBoolean;
19
19
  lastUpdated: z.ZodNumber;
20
+ binary: z.ZodOptional<z.ZodBoolean>;
20
21
  }, z.core.$strip>;
21
22
  export type BatteryStatus = z.infer<typeof BatteryStatusSchema>;
22
23
  export declare const batteryCapability: {
23
24
  readonly name: "battery";
24
25
  readonly scope: "device";
26
+ readonly deviceNative: true;
25
27
  readonly mode: "singleton";
26
28
  readonly deviceTypes: readonly [DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch];
27
- readonly methods: {};
29
+ readonly methods: {
30
+ /**
31
+ * Explicitly wake the camera from low-power sleep ahead of a
32
+ * streaming session start. Consumers that initiate a stream
33
+ * against a sleeping battery cam (HomeKit Secure Video, Alexa
34
+ * RTCSession, snapshot wrappers) call this with a short timeout
35
+ * before establishing the media pipeline — the broker's own
36
+ * passive wake-on-dial works but adds 5–7 seconds to first-frame,
37
+ * during which the consumer renders a black screen. Pre-waking
38
+ * compresses that gap.
39
+ *
40
+ * Returns `awoke: true` when the firmware acknowledged the wake
41
+ * before `timeoutMs`. Returns `awoke: false` when it timed out OR
42
+ * the cap surface is unavailable (no Baichuan / firmware
43
+ * channel); the caller should still attempt the stream — the
44
+ * passive broker wake remains as fallback.
45
+ */
46
+ readonly wakeForStream: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
47
+ deviceId: z.ZodNumber;
48
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
49
+ }, z.core.$strip>, z.ZodObject<{
50
+ awoke: z.ZodBoolean;
51
+ durationMs: z.ZodNumber;
52
+ }, z.core.$strip>, "mutation">;
53
+ };
28
54
  readonly events: {
29
55
  /**
30
56
  * Emitted whenever the cached status changes (firmware push OR
@@ -44,6 +70,7 @@ export declare const batteryCapability: {
44
70
  }>;
45
71
  sleeping: z.ZodBoolean;
46
72
  lastUpdated: z.ZodNumber;
73
+ binary: z.ZodOptional<z.ZodBoolean>;
47
74
  }, z.core.$strip>;
48
75
  }, z.core.$strip>;
49
76
  };
@@ -58,6 +85,7 @@ export declare const batteryCapability: {
58
85
  }>;
59
86
  sleeping: z.ZodBoolean;
60
87
  lastUpdated: z.ZodNumber;
88
+ binary: z.ZodOptional<z.ZodBoolean>;
61
89
  }, z.core.$strip>;
62
90
  readonly kind: "push";
63
91
  };
@@ -79,6 +107,7 @@ export declare const batteryCapability: {
79
107
  }>;
80
108
  sleeping: z.ZodBoolean;
81
109
  lastUpdated: z.ZodNumber;
110
+ binary: z.ZodOptional<z.ZodBoolean>;
82
111
  }, z.core.$strip>;
83
112
  };
84
113
  export type IBatteryProvider = InferProvider<typeof batteryCapability>;
@@ -1 +1 @@
1
- {"version":3,"file":"battery.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/battery.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;iBAkB9B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,iBAAiB;;;;;;;QAO1B;;;;;WAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAUL;;;;;;;;OAQG;;;;;;;;;;;CAEoC,CAAA;AAEzC,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
1
+ {"version":3,"file":"battery.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/battery.cap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;iBA0B9B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,iBAAiB;;;;;;;QAO1B;;;;;;;;;;;;;;;WAeG;;;;;;;;;;QAeH;;;;;WAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAUL;;;;;;;;OAQG;;;;;;;;;;;;CAEoC,CAAA;AAEzC,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,OAAO,iBAAiB,CAAC,CAAA"}