@camstack/types 0.1.40 → 0.1.42

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 (302) 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/filesystem-browse.cap.d.ts +39 -0
  75. package/dist/capabilities/filesystem-browse.cap.d.ts.map +1 -0
  76. package/dist/capabilities/flood.cap.d.ts +37 -0
  77. package/dist/capabilities/flood.cap.d.ts.map +1 -0
  78. package/dist/capabilities/gas.cap.d.ts +34 -0
  79. package/dist/capabilities/gas.cap.d.ts.map +1 -0
  80. package/dist/capabilities/humidifier.cap.d.ts +82 -0
  81. package/dist/capabilities/humidifier.cap.d.ts.map +1 -0
  82. package/dist/capabilities/humidity-sensor.cap.d.ts +43 -0
  83. package/dist/capabilities/humidity-sensor.cap.d.ts.map +1 -0
  84. package/dist/capabilities/image.cap.d.ts +44 -0
  85. package/dist/capabilities/image.cap.d.ts.map +1 -0
  86. package/dist/capabilities/index.d.ts +97 -12
  87. package/dist/capabilities/index.d.ts.map +1 -1
  88. package/dist/capabilities/integrations.cap.d.ts +12 -0
  89. package/dist/capabilities/integrations.cap.d.ts.map +1 -1
  90. package/dist/capabilities/intercom.cap.d.ts +49 -9
  91. package/dist/capabilities/intercom.cap.d.ts.map +1 -1
  92. package/dist/capabilities/lawn-mower-control.cap.d.ts +83 -0
  93. package/dist/capabilities/lawn-mower-control.cap.d.ts.map +1 -0
  94. package/dist/capabilities/lock-control.cap.d.ts +92 -0
  95. package/dist/capabilities/lock-control.cap.d.ts.map +1 -0
  96. package/dist/capabilities/media-player.cap.d.ts +201 -0
  97. package/dist/capabilities/media-player.cap.d.ts.map +1 -0
  98. package/dist/capabilities/motion-trigger.cap.d.ts +1 -0
  99. package/dist/capabilities/motion-trigger.cap.d.ts.map +1 -1
  100. package/dist/capabilities/motion-zones.cap.d.ts +1 -0
  101. package/dist/capabilities/motion-zones.cap.d.ts.map +1 -1
  102. package/dist/capabilities/native-object-detection.cap.d.ts +1 -0
  103. package/dist/capabilities/native-object-detection.cap.d.ts.map +1 -1
  104. package/dist/capabilities/network-quality.cap.d.ts +5 -0
  105. package/dist/capabilities/network-quality.cap.d.ts.map +1 -1
  106. package/dist/capabilities/notifier.cap.d.ts +173 -0
  107. package/dist/capabilities/notifier.cap.d.ts.map +1 -0
  108. package/dist/capabilities/numeric-sensor.cap.d.ts +52 -0
  109. package/dist/capabilities/numeric-sensor.cap.d.ts.map +1 -0
  110. package/dist/capabilities/osd.cap.d.ts +1 -0
  111. package/dist/capabilities/osd.cap.d.ts.map +1 -1
  112. package/dist/capabilities/pipeline-analytics.cap.d.ts +69 -22
  113. package/dist/capabilities/pipeline-analytics.cap.d.ts.map +1 -1
  114. package/dist/capabilities/pipeline-executor.cap.d.ts +2 -2
  115. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +1 -1
  116. package/dist/capabilities/pipeline-runner.cap.d.ts +2 -2
  117. package/dist/capabilities/platform-probe.cap.d.ts +25 -0
  118. package/dist/capabilities/platform-probe.cap.d.ts.map +1 -1
  119. package/dist/capabilities/power-meter.cap.d.ts +65 -0
  120. package/dist/capabilities/power-meter.cap.d.ts.map +1 -0
  121. package/dist/capabilities/presence.cap.d.ts +79 -0
  122. package/dist/capabilities/presence.cap.d.ts.map +1 -0
  123. package/dist/capabilities/pressure-sensor.cap.d.ts +43 -0
  124. package/dist/capabilities/pressure-sensor.cap.d.ts.map +1 -0
  125. package/dist/capabilities/privacy-mask.cap.d.ts +1 -0
  126. package/dist/capabilities/privacy-mask.cap.d.ts.map +1 -1
  127. package/dist/capabilities/ptz-autotrack.cap.d.ts +1 -0
  128. package/dist/capabilities/ptz-autotrack.cap.d.ts.map +1 -1
  129. package/dist/capabilities/ptz.cap.d.ts +1 -0
  130. package/dist/capabilities/ptz.cap.d.ts.map +1 -1
  131. package/dist/capabilities/reboot.cap.d.ts +1 -0
  132. package/dist/capabilities/reboot.cap.d.ts.map +1 -1
  133. package/dist/capabilities/recording.cap.d.ts +367 -32
  134. package/dist/capabilities/recording.cap.d.ts.map +1 -1
  135. package/dist/capabilities/restreamer.cap.d.ts +2 -2
  136. package/dist/capabilities/schemas/orchestrator-metrics.d.ts +2 -2
  137. package/dist/capabilities/schemas/streaming-shared.d.ts +64 -1
  138. package/dist/capabilities/schemas/streaming-shared.d.ts.map +1 -1
  139. package/dist/capabilities/script-runner.cap.d.ts +62 -0
  140. package/dist/capabilities/script-runner.cap.d.ts.map +1 -0
  141. package/dist/capabilities/settings-store.cap.d.ts +25 -0
  142. package/dist/capabilities/settings-store.cap.d.ts.map +1 -1
  143. package/dist/capabilities/smoke.cap.d.ts +38 -0
  144. package/dist/capabilities/smoke.cap.d.ts.map +1 -0
  145. package/dist/capabilities/snapshot-provider.cap.d.ts +1 -1
  146. package/dist/capabilities/snapshot.cap.d.ts +1 -0
  147. package/dist/capabilities/snapshot.cap.d.ts.map +1 -1
  148. package/dist/capabilities/storage-evictable.cap.d.ts +54 -0
  149. package/dist/capabilities/storage-evictable.cap.d.ts.map +1 -0
  150. package/dist/capabilities/storage-provider.cap.d.ts +46 -186
  151. package/dist/capabilities/storage-provider.cap.d.ts.map +1 -1
  152. package/dist/capabilities/storage.cap.d.ts +41 -226
  153. package/dist/capabilities/storage.cap.d.ts.map +1 -1
  154. package/dist/capabilities/stream-broker.cap.d.ts +323 -25
  155. package/dist/capabilities/stream-broker.cap.d.ts.map +1 -1
  156. package/dist/capabilities/stream-catalog.cap.d.ts +3 -0
  157. package/dist/capabilities/stream-catalog.cap.d.ts.map +1 -1
  158. package/dist/capabilities/stream-params.cap.d.ts +27 -26
  159. package/dist/capabilities/stream-params.cap.d.ts.map +1 -1
  160. package/dist/capabilities/switch.cap.d.ts +1 -0
  161. package/dist/capabilities/switch.cap.d.ts.map +1 -1
  162. package/dist/capabilities/tamper.cap.d.ts +33 -0
  163. package/dist/capabilities/tamper.cap.d.ts.map +1 -0
  164. package/dist/capabilities/temperature-sensor.cap.d.ts +51 -0
  165. package/dist/capabilities/temperature-sensor.cap.d.ts.map +1 -0
  166. package/dist/capabilities/update.cap.d.ts +49 -0
  167. package/dist/capabilities/update.cap.d.ts.map +1 -0
  168. package/dist/capabilities/vacuum-control.cap.d.ts +229 -0
  169. package/dist/capabilities/vacuum-control.cap.d.ts.map +1 -0
  170. package/dist/capabilities/valve.cap.d.ts +93 -0
  171. package/dist/capabilities/valve.cap.d.ts.map +1 -0
  172. package/dist/capabilities/vibration.cap.d.ts +33 -0
  173. package/dist/capabilities/vibration.cap.d.ts.map +1 -0
  174. package/dist/capabilities/videoclips.cap.d.ts +77 -0
  175. package/dist/capabilities/videoclips.cap.d.ts.map +1 -0
  176. package/dist/capabilities/water-heater.cap.d.ts +78 -0
  177. package/dist/capabilities/water-heater.cap.d.ts.map +1 -0
  178. package/dist/capabilities/weather.cap.d.ts +76 -0
  179. package/dist/capabilities/weather.cap.d.ts.map +1 -0
  180. package/dist/capabilities/webrtc-session.cap.d.ts +95 -1
  181. package/dist/capabilities/webrtc-session.cap.d.ts.map +1 -1
  182. package/dist/constants.d.ts +0 -2
  183. package/dist/constants.d.ts.map +1 -1
  184. package/dist/device/base-device-provider.d.ts +11 -0
  185. package/dist/device/base-device-provider.d.ts.map +1 -1
  186. package/dist/device/base-device.d.ts +52 -0
  187. package/dist/device/base-device.d.ts.map +1 -1
  188. package/dist/device/device-context.d.ts +29 -0
  189. package/dist/device/device-context.d.ts.map +1 -1
  190. package/dist/device/device-link-transform.d.ts +6 -0
  191. package/dist/device/device-link-transform.d.ts.map +1 -0
  192. package/dist/device/device-management.d.ts +116 -4
  193. package/dist/device/device-management.d.ts.map +1 -1
  194. package/dist/device/device-type.d.ts +214 -3
  195. package/dist/device/device-type.d.ts.map +1 -1
  196. package/dist/device/device.d.ts +25 -0
  197. package/dist/device/device.d.ts.map +1 -1
  198. package/dist/device/index.d.ts +5 -1
  199. package/dist/device/index.d.ts.map +1 -1
  200. package/dist/device/path-util.d.ts +13 -0
  201. package/dist/device/path-util.d.ts.map +1 -0
  202. package/dist/device/schema-fields.d.ts +12 -0
  203. package/dist/device/schema-fields.d.ts.map +1 -0
  204. package/dist/device/source-info.d.ts +87 -0
  205. package/dist/device/source-info.d.ts.map +1 -0
  206. package/dist/device/system-mirror.d.ts +6 -2
  207. package/dist/device/system-mirror.d.ts.map +1 -1
  208. package/dist/encode-profile.d.ts +126 -0
  209. package/dist/encode-profile.d.ts.map +1 -0
  210. package/dist/enums/event-category.d.ts +64 -6
  211. package/dist/enums/event-category.d.ts.map +1 -1
  212. package/dist/generated/addon-api.d.ts +12722 -8080
  213. package/dist/generated/addon-api.d.ts.map +1 -1
  214. package/dist/generated/cap-status-types.d.ts +85 -1
  215. package/dist/generated/cap-status-types.d.ts.map +1 -1
  216. package/dist/generated/capability-router-map.d.ts +139 -7
  217. package/dist/generated/capability-router-map.d.ts.map +1 -1
  218. package/dist/generated/device-local-state.d.ts +117 -0
  219. package/dist/generated/device-local-state.d.ts.map +1 -1
  220. package/dist/generated/device-proxy.d.ts +126 -5
  221. package/dist/generated/device-proxy.d.ts.map +1 -1
  222. package/dist/generated/method-access-map.d.ts +1 -1
  223. package/dist/generated/method-access-map.d.ts.map +1 -1
  224. package/dist/generated/provider-kind-map.d.ts +1 -1
  225. package/dist/generated/provider-kind-map.d.ts.map +1 -1
  226. package/dist/generated/system-proxy.d.ts +10 -8
  227. package/dist/generated/system-proxy.d.ts.map +1 -1
  228. package/dist/{index-C2zzIDdX.mjs → index-BxWo3b49.mjs} +4714 -1113
  229. package/dist/index-BxWo3b49.mjs.map +1 -0
  230. package/dist/{index-DnpdVFKv.js → index-CGMPfVaT.js} +4321 -720
  231. package/dist/index-CGMPfVaT.js.map +1 -0
  232. package/dist/index.d.ts +22 -3
  233. package/dist/index.d.ts.map +1 -1
  234. package/dist/index.js +1384 -116
  235. package/dist/index.js.map +1 -1
  236. package/dist/index.mjs +1698 -430
  237. package/dist/index.mjs.map +1 -1
  238. package/dist/interfaces/addon-data-plane.d.ts +76 -0
  239. package/dist/interfaces/addon-data-plane.d.ts.map +1 -0
  240. package/dist/interfaces/addon.d.ts +60 -0
  241. package/dist/interfaces/addon.d.ts.map +1 -1
  242. package/dist/interfaces/advanced-notifier.d.ts +4 -0
  243. package/dist/interfaces/advanced-notifier.d.ts.map +1 -1
  244. package/dist/interfaces/capability.d.ts +42 -1
  245. package/dist/interfaces/capability.d.ts.map +1 -1
  246. package/dist/interfaces/config-ui.d.ts +70 -6
  247. package/dist/interfaces/config-ui.d.ts.map +1 -1
  248. package/dist/interfaces/device-capabilities/camera.d.ts +2 -1
  249. package/dist/interfaces/device-capabilities/camera.d.ts.map +1 -1
  250. package/dist/interfaces/event-bus.d.ts +49 -3
  251. package/dist/interfaces/event-bus.d.ts.map +1 -1
  252. package/dist/interfaces/kernel-abstractions.d.ts +10 -1
  253. package/dist/interfaces/kernel-abstractions.d.ts.map +1 -1
  254. package/dist/interfaces/network-quality.d.ts +8 -0
  255. package/dist/interfaces/network-quality.d.ts.map +1 -1
  256. package/dist/interfaces/pipeline-executor-capability.d.ts +2 -2
  257. package/dist/interfaces/pipeline-orchestrator-capability.d.ts +2 -1
  258. package/dist/interfaces/pipeline-orchestrator-capability.d.ts.map +1 -1
  259. package/dist/interfaces/pipeline-runner-capability.d.ts +7 -0
  260. package/dist/interfaces/pipeline-runner-capability.d.ts.map +1 -1
  261. package/dist/interfaces/recording-config-migrate.d.ts +13 -0
  262. package/dist/interfaces/recording-config-migrate.d.ts.map +1 -0
  263. package/dist/interfaces/recording-config.d.ts +209 -0
  264. package/dist/interfaces/recording-config.d.ts.map +1 -0
  265. package/dist/interfaces/rtp-egress.d.ts +2 -3
  266. package/dist/interfaces/rtp-egress.d.ts.map +1 -1
  267. package/dist/interfaces/storage-location-declaration.d.ts +34 -0
  268. package/dist/interfaces/storage-location-declaration.d.ts.map +1 -0
  269. package/dist/interfaces/storage-location.d.ts +19 -74
  270. package/dist/interfaces/storage-location.d.ts.map +1 -1
  271. package/dist/interfaces/storage.d.ts +15 -4
  272. package/dist/interfaces/storage.d.ts.map +1 -1
  273. package/dist/interfaces/stream-broker.d.ts +18 -3
  274. package/dist/interfaces/stream-broker.d.ts.map +1 -1
  275. package/dist/interfaces/timezones.d.ts +59 -0
  276. package/dist/interfaces/timezones.d.ts.map +1 -0
  277. package/dist/node.d.ts +3 -0
  278. package/dist/node.d.ts.map +1 -1
  279. package/dist/node.js +50 -8
  280. package/dist/node.js.map +1 -1
  281. package/dist/node.mjs +51 -9
  282. package/dist/node.mjs.map +1 -1
  283. package/dist/storage/filesystem-storage-provider.d.ts +2 -1
  284. package/dist/storage/filesystem-storage-provider.d.ts.map +1 -1
  285. package/dist/stream-selection.d.ts +85 -0
  286. package/dist/stream-selection.d.ts.map +1 -0
  287. package/dist/types/detection.d.ts +3 -3
  288. package/dist/types/io.d.ts +1 -1
  289. package/dist/types/io.d.ts.map +1 -1
  290. package/dist/util/location-match.d.ts +15 -0
  291. package/dist/util/location-match.d.ts.map +1 -0
  292. package/dist/utils/canonical-hash.d.ts +20 -0
  293. package/dist/utils/canonical-hash.d.ts.map +1 -0
  294. package/dist/utils/export-reconciler.d.ts +101 -0
  295. package/dist/utils/export-reconciler.d.ts.map +1 -0
  296. package/dist/utils/sleep.d.ts +36 -0
  297. package/dist/utils/sleep.d.ts.map +1 -0
  298. package/package.json +1 -1
  299. package/dist/capabilities/recording-engine.cap.d.ts +0 -477
  300. package/dist/capabilities/recording-engine.cap.d.ts.map +0 -1
  301. package/dist/index-C2zzIDdX.mjs.map +0 -1
  302. package/dist/index-DnpdVFKv.js.map +0 -1
@@ -0,0 +1,78 @@
1
+ import { z } from 'zod';
2
+ import { type InferProvider } from './capability-definition.js';
3
+ import { DeviceType } from '../device/device-type.js';
4
+ /**
5
+ * Water heater / boiler cap. Models HA `water_heater.*` entities — a
6
+ * climate-family actuator with a target temperature, an operation-mode
7
+ * selector (`eco` / `electric` / `gas` / `heat_pump` / `high_demand` /
8
+ * `performance` / `off`), and an optional away-mode toggle.
9
+ *
10
+ * The slice carries the current + target temperature, the active
11
+ * operation mode (HA's `state`) and its available set (HA's
12
+ * `operation_list`), the away flag (HA `away_mode` 'on'/'off' → bool,
13
+ * null when unsupported), plus the `min_temp` / `max_temp` bounds.
14
+ *
15
+ * Providers populate only what the hardware reports — temperature and
16
+ * away fields stay null when the device has no such surface.
17
+ */
18
+ export declare const WaterHeaterStatusSchema: z.ZodObject<{
19
+ currentTemp: z.ZodNullable<z.ZodNumber>;
20
+ targetTemp: z.ZodNullable<z.ZodNumber>;
21
+ operationMode: z.ZodNullable<z.ZodString>;
22
+ availableModes: z.ZodArray<z.ZodString>;
23
+ away: z.ZodNullable<z.ZodBoolean>;
24
+ minTemp: z.ZodNullable<z.ZodNumber>;
25
+ maxTemp: z.ZodNullable<z.ZodNumber>;
26
+ lastChangedAt: z.ZodNumber;
27
+ }, z.core.$strip>;
28
+ export type WaterHeaterStatus = z.infer<typeof WaterHeaterStatusSchema>;
29
+ export declare const waterHeaterCapability: {
30
+ readonly name: "water-heater";
31
+ readonly scope: "device";
32
+ readonly deviceNative: true;
33
+ readonly mode: "singleton";
34
+ readonly deviceTypes: readonly [DeviceType.WaterHeater];
35
+ readonly methods: {
36
+ readonly setTargetTemp: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
37
+ deviceId: z.ZodNumber;
38
+ temp: z.ZodNumber;
39
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
40
+ readonly setOperationMode: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
41
+ deviceId: z.ZodNumber;
42
+ mode: z.ZodString;
43
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
44
+ readonly setAway: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
45
+ deviceId: z.ZodNumber;
46
+ on: z.ZodBoolean;
47
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
48
+ };
49
+ readonly status: {
50
+ readonly schema: z.ZodObject<{
51
+ currentTemp: z.ZodNullable<z.ZodNumber>;
52
+ targetTemp: z.ZodNullable<z.ZodNumber>;
53
+ operationMode: z.ZodNullable<z.ZodString>;
54
+ availableModes: z.ZodArray<z.ZodString>;
55
+ away: z.ZodNullable<z.ZodBoolean>;
56
+ minTemp: z.ZodNullable<z.ZodNumber>;
57
+ maxTemp: z.ZodNullable<z.ZodNumber>;
58
+ lastChangedAt: z.ZodNumber;
59
+ }, z.core.$strip>;
60
+ readonly kind: "push";
61
+ };
62
+ /**
63
+ * Runtime-state slice — mirrored by the kernel. UI controls watch the
64
+ * slice for live temperature / mode / away changes.
65
+ */
66
+ readonly runtimeState: z.ZodObject<{
67
+ currentTemp: z.ZodNullable<z.ZodNumber>;
68
+ targetTemp: z.ZodNullable<z.ZodNumber>;
69
+ operationMode: z.ZodNullable<z.ZodString>;
70
+ availableModes: z.ZodArray<z.ZodString>;
71
+ away: z.ZodNullable<z.ZodBoolean>;
72
+ minTemp: z.ZodNullable<z.ZodNumber>;
73
+ maxTemp: z.ZodNullable<z.ZodNumber>;
74
+ lastChangedAt: z.ZodNumber;
75
+ }, z.core.$strip>;
76
+ };
77
+ export type IWaterHeaterProvider = InferProvider<typeof waterHeaterCapability>;
78
+ //# sourceMappingURL=water-heater.cap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"water-heater.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/water-heater.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;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;iBAoBlC,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoChC;;;OAGG;;;;;;;;;;;CAEoC,CAAA;AAEzC,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAC,OAAO,qBAAqB,CAAC,CAAA"}
@@ -0,0 +1,76 @@
1
+ import { z } from 'zod';
2
+ import { type InferProvider } from './capability-definition.js';
3
+ import { DeviceType } from '../device/device-type.js';
4
+ /**
5
+ * Weather provider cap. Models HA `weather.*` entities — a read-only
6
+ * snapshot of the CURRENT conditions a weather integration reports.
7
+ *
8
+ * Read-only: there are no setters. The slice is populated from upstream
9
+ * pushes (the HA weather entity's state + attributes) and rendered by
10
+ * the UI as a sky scene + readouts.
11
+ *
12
+ * `condition` is the verbatim HA state string (`sunny` / `cloudy` /
13
+ * `rainy` / `snowy` / `partlycloudy` / `pouring` / `lightning` /
14
+ * `lightning-rainy` / `fog` / `windy` / `windy-variant` / `hail` /
15
+ * `clear-night` / `exceptional` / …). The UI maps it to a glyph + tint;
16
+ * unknown strings fall back to a neutral cloud.
17
+ *
18
+ * Every numeric reading is nullable — a given weather integration only
19
+ * populates the metrics it actually provides.
20
+ *
21
+ * Forecast deferred — current conditions only for v1.
22
+ */
23
+ export declare const WeatherStatusSchema: z.ZodObject<{
24
+ condition: z.ZodNullable<z.ZodString>;
25
+ temperature: z.ZodNullable<z.ZodNumber>;
26
+ temperatureUnit: z.ZodNullable<z.ZodString>;
27
+ humidity: z.ZodNullable<z.ZodNumber>;
28
+ pressure: z.ZodNullable<z.ZodNumber>;
29
+ pressureUnit: z.ZodNullable<z.ZodString>;
30
+ windSpeed: z.ZodNullable<z.ZodNumber>;
31
+ windSpeedUnit: z.ZodNullable<z.ZodString>;
32
+ windBearing: z.ZodNullable<z.ZodNumber>;
33
+ lastFetchedAt: z.ZodNumber;
34
+ }, z.core.$strip>;
35
+ export type WeatherStatus = z.infer<typeof WeatherStatusSchema>;
36
+ export declare const weatherCapability: {
37
+ readonly name: "weather";
38
+ readonly scope: "device";
39
+ readonly deviceNative: true;
40
+ readonly mode: "singleton";
41
+ readonly deviceTypes: readonly [DeviceType.Weather];
42
+ readonly methods: {};
43
+ readonly status: {
44
+ readonly schema: z.ZodObject<{
45
+ condition: z.ZodNullable<z.ZodString>;
46
+ temperature: z.ZodNullable<z.ZodNumber>;
47
+ temperatureUnit: z.ZodNullable<z.ZodString>;
48
+ humidity: z.ZodNullable<z.ZodNumber>;
49
+ pressure: z.ZodNullable<z.ZodNumber>;
50
+ pressureUnit: z.ZodNullable<z.ZodString>;
51
+ windSpeed: z.ZodNullable<z.ZodNumber>;
52
+ windSpeedUnit: z.ZodNullable<z.ZodString>;
53
+ windBearing: z.ZodNullable<z.ZodNumber>;
54
+ lastFetchedAt: z.ZodNumber;
55
+ }, z.core.$strip>;
56
+ readonly kind: "push";
57
+ };
58
+ /**
59
+ * Runtime-state slice — mirrored by the kernel. The UI reads the
60
+ * current conditions directly from the slice on each weather push.
61
+ */
62
+ readonly runtimeState: z.ZodObject<{
63
+ condition: z.ZodNullable<z.ZodString>;
64
+ temperature: z.ZodNullable<z.ZodNumber>;
65
+ temperatureUnit: z.ZodNullable<z.ZodString>;
66
+ humidity: z.ZodNullable<z.ZodNumber>;
67
+ pressure: z.ZodNullable<z.ZodNumber>;
68
+ pressureUnit: z.ZodNullable<z.ZodString>;
69
+ windSpeed: z.ZodNullable<z.ZodNumber>;
70
+ windSpeedUnit: z.ZodNullable<z.ZodString>;
71
+ windBearing: z.ZodNullable<z.ZodNumber>;
72
+ lastFetchedAt: z.ZodNumber;
73
+ }, z.core.$strip>;
74
+ };
75
+ export type IWeatherProvider = InferProvider<typeof weatherCapability>;
76
+ //# sourceMappingURL=weather.cap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weather.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/weather.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;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;iBAsB9B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;IAa5B;;;OAGG;;;;;;;;;;;;;CAEoC,CAAA;AAEzC,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
@@ -84,6 +84,7 @@ export declare const webrtcSessionCapability: {
84
84
  readonly mode: "singleton";
85
85
  readonly kind: "wrapper";
86
86
  readonly defaultActive: true;
87
+ readonly preferredProvider: "stream-broker";
87
88
  readonly deviceTypes: readonly [DeviceType.Camera];
88
89
  readonly methods: {
89
90
  /**
@@ -156,6 +157,39 @@ export declare const webrtcSessionCapability: {
156
157
  prefersTier: z.ZodOptional<z.ZodOptional<z.ZodString>>;
157
158
  }, z.core.$strip>>;
158
159
  relayOnly: z.ZodOptional<z.ZodBoolean>;
160
+ consumerAttribution: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
161
+ kind: z.ZodEnum<{
162
+ unknown: "unknown";
163
+ recording: "recording";
164
+ snapshot: "snapshot";
165
+ pipeline: "pipeline";
166
+ alexa: "alexa";
167
+ homekit: "homekit";
168
+ "webrtc-browser": "webrtc-browser";
169
+ "webrtc-mobile": "webrtc-mobile";
170
+ "webrtc-whep": "webrtc-whep";
171
+ "rtsp-listen": "rtsp-listen";
172
+ "derived-broker": "derived-broker";
173
+ warmup: "warmup";
174
+ }>;
175
+ label: z.ZodOptional<z.ZodString>;
176
+ media: z.ZodOptional<z.ZodEnum<{
177
+ video: "video";
178
+ audio: "audio";
179
+ both: "both";
180
+ }>>;
181
+ targetCodec: z.ZodOptional<z.ZodString>;
182
+ transport: z.ZodOptional<z.ZodEnum<{
183
+ passthrough: "passthrough";
184
+ repacketize: "repacketize";
185
+ transcode: "transcode";
186
+ }>>;
187
+ remoteAddr: z.ZodOptional<z.ZodString>;
188
+ userAgent: z.ZodOptional<z.ZodString>;
189
+ userId: z.ZodOptional<z.ZodString>;
190
+ sessionId: z.ZodOptional<z.ZodString>;
191
+ extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
192
+ }, z.core.$strip>>>;
159
193
  }, z.core.$strip>, z.ZodObject<{
160
194
  sessionId: z.ZodString;
161
195
  sdpOffer: z.ZodString;
@@ -191,6 +225,42 @@ export declare const webrtcSessionCapability: {
191
225
  sdpOffer: z.ZodString;
192
226
  sessionId: z.ZodOptional<z.ZodString>;
193
227
  relayOnly: z.ZodOptional<z.ZodBoolean>;
228
+ nonTrickle: z.ZodOptional<z.ZodBoolean>;
229
+ disableTurn: z.ZodOptional<z.ZodBoolean>;
230
+ disableIpv6: z.ZodOptional<z.ZodBoolean>;
231
+ consumerAttribution: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
232
+ kind: z.ZodEnum<{
233
+ unknown: "unknown";
234
+ recording: "recording";
235
+ snapshot: "snapshot";
236
+ pipeline: "pipeline";
237
+ alexa: "alexa";
238
+ homekit: "homekit";
239
+ "webrtc-browser": "webrtc-browser";
240
+ "webrtc-mobile": "webrtc-mobile";
241
+ "webrtc-whep": "webrtc-whep";
242
+ "rtsp-listen": "rtsp-listen";
243
+ "derived-broker": "derived-broker";
244
+ warmup: "warmup";
245
+ }>;
246
+ label: z.ZodOptional<z.ZodString>;
247
+ media: z.ZodOptional<z.ZodEnum<{
248
+ video: "video";
249
+ audio: "audio";
250
+ both: "both";
251
+ }>>;
252
+ targetCodec: z.ZodOptional<z.ZodString>;
253
+ transport: z.ZodOptional<z.ZodEnum<{
254
+ passthrough: "passthrough";
255
+ repacketize: "repacketize";
256
+ transcode: "transcode";
257
+ }>>;
258
+ remoteAddr: z.ZodOptional<z.ZodString>;
259
+ userAgent: z.ZodOptional<z.ZodString>;
260
+ userId: z.ZodOptional<z.ZodString>;
261
+ sessionId: z.ZodOptional<z.ZodString>;
262
+ extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
263
+ }, z.core.$strip>>>;
194
264
  }, z.core.$strip>, z.ZodObject<{
195
265
  sessionId: z.ZodString;
196
266
  sdpAnswer: z.ZodString;
@@ -205,7 +275,7 @@ export declare const webrtcSessionCapability: {
205
275
  * Lets the client send its SDP offer/answer IMMEDIATELY (before ICE
206
276
  * gathering finishes) and deliver candidates as they arrive, so the
207
277
  * connection establishes in ~0s instead of waiting for full gathering.
208
- * The dual of `getIceCandidates`. Mirrors Scrypted's signaling.
278
+ * The dual of `getIceCandidates` in the trickle-ICE signaling exchange.
209
279
  */
210
280
  readonly addIceCandidate: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
211
281
  deviceId: z.ZodNumber;
@@ -245,6 +315,30 @@ export declare const webrtcSessionCapability: {
245
315
  low: "low";
246
316
  }>;
247
317
  }, z.core.$strip>, z.ZodBoolean, import("./capability-definition.js").CapabilityMethodKind>;
318
+ /** Poll the live signaling state of a session. `pendingRenegotiation` is
319
+ * non-null after an adaptive tier switch — the client re-offers on the
320
+ * same sessionId; `epoch` guards against acting on a stale poll twice. */
321
+ readonly getSessionState: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
322
+ deviceId: z.ZodNumber;
323
+ sessionId: z.ZodString;
324
+ }, z.core.$strip>, z.ZodObject<{
325
+ pendingRenegotiation: z.ZodNullable<z.ZodObject<{
326
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
327
+ kind: z.ZodLiteral<"adaptive">;
328
+ }, z.core.$strip>, z.ZodObject<{
329
+ kind: z.ZodLiteral<"profile">;
330
+ profile: z.ZodEnum<{
331
+ high: "high";
332
+ mid: "mid";
333
+ low: "low";
334
+ }>;
335
+ }, z.core.$strip>, z.ZodObject<{
336
+ kind: z.ZodLiteral<"cam-stream">;
337
+ camStreamId: z.ZodString;
338
+ }, z.core.$strip>], "kind">;
339
+ epoch: z.ZodNumber;
340
+ }, z.core.$strip>>;
341
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
248
342
  };
249
343
  };
250
344
  export type IWebrtcSessionProvider = InferProvider<typeof webrtcSessionCapability>;
@@ -1 +1 @@
1
- {"version":3,"file":"webrtc-session.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/webrtc-session.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;AAIrD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;2BAInC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE,qDAAqD;AACrD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBnC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;QAQhC;;;;;WAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAKH;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuBH;;;;;;;;;;;;WAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmCH;;;;;;WAMG;;;;;;;;QAYH;;;;;;WAMG;;;;;;;;;;;;;;;;QAwBH,kFAAkF;;;;;;;;;;CAS7C,CAAA;AAEzC,MAAM,MAAM,sBAAsB,GAAG,aAAa,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
1
+ {"version":3,"file":"webrtc-session.cap.d.ts","sourceRoot":"","sources":["../../src/capabilities/webrtc-session.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;AAKrD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;2BAInC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE,qDAAqD;AACrD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBnC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;QAYhC;;;;;WAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAKH;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+BH;;;;;;;;;;;;WAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0FH;;;;;;WAMG;;;;;;;;QAYH;;;;;;WAMG;;;;;;;;;;;;;;;;QAwBH,kFAAkF;;;;;;;;;QAQlF;;mFAE2E;;;;;;;;;;;;;;;;;;;;;;;CAatC,CAAA;AAEzC,MAAM,MAAM,sBAAsB,GAAG,aAAa,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
@@ -35,8 +35,6 @@ export interface RuntimeDefaultsShape {
35
35
  'storage.provider': string;
36
36
  'storage.locations': Record<string, string>;
37
37
  'providers': RuntimeDefaultsProvider[];
38
- 'recording.segmentDurationSeconds': number;
39
- 'recording.defaultRetentionDays': number;
40
38
  'ffmpeg.binaryPath': string;
41
39
  'ffmpeg.hwAccel': string;
42
40
  'ffmpeg.threadCount': number;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,6BAA6B,CAAA;AACjD,eAAO,MAAM,WAAW,iEAAmD,CAAA;AAE3E;;;;;;;;GAQG;AACH,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC;sEACkE;IAClE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,wBAAwB,EAAE,OAAO,CAAA;IACjC,0BAA0B,EAAE,OAAO,CAAA;IACnC,uBAAuB,EAAE,OAAO,CAAA;IAChC,uBAAuB,EAAE,OAAO,CAAA;IAChC,oBAAoB,EAAE,OAAO,CAAA;IAC7B,qBAAqB,EAAE,OAAO,CAAA;IAC9B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,eAAe,EAAE,OAAO,CAAA;IACxB,+BAA+B,EAAE,MAAM,CAAA;IACvC,2BAA2B,EAAE,MAAM,CAAA;IACnC,eAAe,EAAE,MAAM,CAAA;IACvB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,yBAAyB,EAAE,MAAM,CAAA;IACjC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,WAAW,EAAE,uBAAuB,EAAE,CAAA;IACtC,kCAAkC,EAAE,MAAM,CAAA;IAC1C,gCAAgC,EAAE,MAAM,CAAA;IACxC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,oBAuC9B,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,6BAA6B,CAAA;AACjD,eAAO,MAAM,WAAW,iEAAmD,CAAA;AAE3E;;;;;;;;GAQG;AACH,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC;sEACkE;IAClE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,wBAAwB,EAAE,OAAO,CAAA;IACjC,0BAA0B,EAAE,OAAO,CAAA;IACnC,uBAAuB,EAAE,OAAO,CAAA;IAChC,uBAAuB,EAAE,OAAO,CAAA;IAChC,oBAAoB,EAAE,OAAO,CAAA;IAC7B,qBAAqB,EAAE,OAAO,CAAA;IAC9B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,eAAe,EAAE,OAAO,CAAA;IACxB,+BAA+B,EAAE,MAAM,CAAA;IACvC,2BAA2B,EAAE,MAAM,CAAA;IACnC,eAAe,EAAE,MAAM,CAAA;IACvB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,yBAAyB,EAAE,MAAM,CAAA;IACjC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,WAAW,EAAE,uBAAuB,EAAE,CAAA;IACtC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,oBAoC9B,CAAA"}
@@ -3,11 +3,17 @@ import { BaseAddon } from '../addon/base-addon.js';
3
3
  import { DeviceType } from './device-type.js';
4
4
  import type { CreateDeviceSpec } from './device-management.js';
5
5
  import type { DeviceConstructor } from './device-context.js';
6
+ import type { SourceInfo } from './source-info.js';
6
7
  export interface DiscoveryCandidate {
7
8
  readonly stableId: string;
8
9
  readonly type: DeviceType;
9
10
  readonly suggestedName: string;
10
11
  readonly prefilledConfig: Record<string, unknown>;
12
+ /** Optional upstream-system identity + rendering envelope. See
13
+ * `SourceInfo`. Pre-populated by providers whose discovery surface
14
+ * knows the upstream identity ahead of adoption (HA: entity_id +
15
+ * unit + device_class from `GET /api/states`). */
16
+ readonly sourceInfo?: SourceInfo;
11
17
  }
12
18
  export interface DeviceSummary {
13
19
  readonly id: number;
@@ -19,6 +25,11 @@ export interface DeviceSummary {
19
25
  readonly online: boolean;
20
26
  readonly features: readonly string[];
21
27
  readonly config: Record<string, unknown>;
28
+ /** Optional upstream-system identity + rendering envelope. See
29
+ * `SourceInfo`. Present when the device has been persisted with a
30
+ * non-synthetic source identifier (HA entities, vendor MAC, …);
31
+ * omitted when the synthetic backfill is in effect. */
32
+ readonly sourceInfo?: SourceInfo;
22
33
  }
23
34
  export interface ProviderStatus {
24
35
  readonly connected: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"base-device-provider.d.ts","sourceRoot":"","sources":["../../src/device/base-device-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-device-provider.d.ts","sourceRoot":"","sources":["../../src/device/base-device-provider.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@ import type { IDevice } from './device.js';
7
7
  import type { ConfigUISchemaWithValues } from '../interfaces/config-ui.js';
8
8
  import type { CapabilityDefinition, InferRuntimeState } from '../capabilities/capability-definition.js';
9
9
  import { type DeviceLocalState } from '../generated/device-local-state.js';
10
+ import { type SourceInfo } from './source-info.js';
11
+ import type { CustomActionSpec } from '../capabilities/custom-actions.js';
10
12
  export declare abstract class BaseDevice<T extends z.ZodObject<z.core.$ZodLooseShape> = z.ZodObject<z.ZodRawShape>> implements IDevice {
11
13
  readonly id: number;
12
14
  readonly stableId: string;
@@ -85,11 +87,26 @@ export declare abstract class BaseDevice<T extends z.ZodObject<z.core.$ZodLooseS
85
87
  * `kernel.devices.setDisabled(id, value)`.
86
88
  */
87
89
  readonly disabled: boolean;
90
+ /**
91
+ * Cached materialised `SourceInfo` — either the value persisted under
92
+ * `metadata.sourceInfo` at construction time, or a synthetic
93
+ * `{ id: stableId, system: addonId }` for providers that haven't
94
+ * migrated yet. Lazily populated on first `sourceInfo` read so the
95
+ * cost of Zod-parsing the meta blob is paid once per device boot.
96
+ * Invalidated by `updateSourceInfo()` so providers see the new value
97
+ * back through the getter without a re-fetch from the meta surface.
98
+ */
99
+ private _sourceInfoCache;
88
100
  constructor(ctx: DeviceContext, schema: T, options: {
89
101
  type: DeviceType;
90
102
  /** Optional semantic role within parent — see `DeviceRole`. */
91
103
  role?: DeviceRole;
92
104
  });
105
+ private readonly deviceActions;
106
+ /** Declare a device custom action + its typed handler. Idempotent per name. */
107
+ protected registerDeviceAction<TIn extends z.ZodType, TOut extends z.ZodType>(name: string, spec: CustomActionSpec<TIn, TOut>, handler: (input: z.infer<TIn>) => Promise<z.infer<TOut>>): void;
108
+ /** Invoke a registered device action. Validates input against the spec. */
109
+ runDeviceAction(action: string, input: unknown): Promise<unknown>;
93
110
  removeDevice(): Promise<void>;
94
111
  /**
95
112
  * Set the device's online flag. Called by `BaseDeviceProvider` after
@@ -101,6 +118,41 @@ export declare abstract class BaseDevice<T extends z.ZodObject<z.core.$ZodLooseS
101
118
  * override to gate side effects on the transition.
102
119
  */
103
120
  markOnline(online: boolean): void;
121
+ /**
122
+ * Upstream-system identity + rendering envelope for this device. See
123
+ * `SourceInfo` for the field contract. Always returns a valid object:
124
+ * if the persisted `metadata.sourceInfo` blob is absent or fails Zod
125
+ * validation, falls back to a synthetic `{ id: stableId, system: addonId }`
126
+ * so providers that haven't migrated keep working without code changes.
127
+ *
128
+ * The value is cached after the first read. `updateSourceInfo()`
129
+ * invalidates the cache so subsequent reads see the new patch. The
130
+ * returned object is frozen to prevent accidental in-place mutation —
131
+ * use `updateSourceInfo({ patch })` to change fields.
132
+ */
133
+ get sourceInfo(): Readonly<SourceInfo>;
134
+ /**
135
+ * Convenience accessor for the upstream dispatch key. Equivalent to
136
+ * `this.sourceInfo.id` — providers use this to keep a
137
+ * `Map<sourceId, IDevice>` for routing inbound push events.
138
+ */
139
+ get sourceId(): string;
140
+ /**
141
+ * Patch the device's `SourceInfo`. Shallow-merges `patch` over the
142
+ * current value, persists the merged result under
143
+ * `metadata.sourceInfo` via the `device-manager.setMetadata` cap, and
144
+ * emits `EventCategory.DeviceSourceInfoChanged` for live consumers.
145
+ *
146
+ * Safe to call from anywhere in the device's lifetime — the call is
147
+ * idempotent for `undefined` patch values (ignored) and best-effort
148
+ * for persistence (a transient device-manager error doesn't unwind
149
+ * the local cache update, so subsequent reads still see the patch).
150
+ *
151
+ * Drivers populate this on adoption + on every metadata change push
152
+ * from the upstream source. Subscribers (UI, export adapters) react
153
+ * via the `DeviceSourceInfoChanged` event without polling.
154
+ */
155
+ protected updateSourceInfo(patch: Partial<SourceInfo>): Promise<void>;
104
156
  /**
105
157
  * Re-publish the device's current `features` array to the persisted
106
158
  * meta blob. Drivers call this after a probe finishes when the live
@@ -1 +1 @@
1
- {"version":3,"file":"base-device.d.ts","sourceRoot":"","sources":["../../src/device/base-device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-device.d.ts","sourceRoot":"","sources":["../../src/device/base-device.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import type { IKernelStreamProbe } from '../interfaces/addon.js';
6
6
  import type { AddonApi } from '../generated/addon-api.js';
7
7
  import type { DeviceProxy } from '../generated/device-proxy.js';
8
8
  import type { DeviceMeta, InitialDeviceMeta } from './device-management.js';
9
+ import type { DeviceType } from './device-type.js';
9
10
  export interface DeviceContext {
10
11
  /** Progressive, system-wide unique numeric device id. Injected from the
11
12
  * hub's `device-manager` via `DeviceManagerApi.allocateDeviceId` before
@@ -202,6 +203,34 @@ export interface DeviceManagerApi {
202
203
  * the next boot.
203
204
  */
204
205
  decommission(deviceId: number): Promise<void>;
206
+ /**
207
+ * Re-align a device's structural / mapping-derived spec and propagate the
208
+ * change to the live instance — generic, provider-agnostic, keyed only by
209
+ * `deviceId`. A provider calls this when an upstream source it owns reports
210
+ * that a device's derived shape changed (type, semantic role, or the
211
+ * mapping-derived config that selects the concrete device class).
212
+ *
213
+ * Behaviour:
214
+ * - `type` / `role` → applied via the existing meta setters.
215
+ * - `config` → merged over the persisted config (a patch). When the merge
216
+ * actually changes the blob, the live instance is rebuilt: the kernel
217
+ * tears it down with {@link decommission} (preserving the persisted
218
+ * meta/config rows, hence the operator's name/location/id), re-persists
219
+ * the merged config, then reconstructs via the device's creation factory
220
+ * so a config that maps to a different class yields the new class. No
221
+ * rebuild happens when nothing changed.
222
+ *
223
+ * The framework never interprets `config` (an opaque, provider-owned blob —
224
+ * it carries no kernel-level semantics like capabilities or device_class).
225
+ * Rebuild is only possible for devices created through `create()` or accessory
226
+ * spawn (which register a reconstruction factory); for others only the
227
+ * `type`/`role` meta updates apply.
228
+ */
229
+ applyDerivedSpec(deviceId: number, derived: {
230
+ type?: DeviceType;
231
+ role?: string;
232
+ config?: Record<string, unknown>;
233
+ }): Promise<void>;
205
234
  /** List all devices for this addon */
206
235
  getAll(): Promise<ReadonlyArray<IDevice>>;
207
236
  /** List children of a specific device */
@@ -1 +1 @@
1
- {"version":3,"file":"device-context.d.ts","sourceRoot":"","sources":["../../src/device/device-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device-context.d.ts","sourceRoot":"","sources":["../../src/device/device-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { DeviceLinkTransform } from './device-management.js';
2
+ /** Apply a link transform to a resolved source value. `identity`/undefined
3
+ * pass through; `enum-map` remaps strings (fallback or null when unknown);
4
+ * `linear` does scale*x+offset with optional clamp (null for non-numbers). */
5
+ export declare function applyTransform(value: unknown, transform: DeviceLinkTransform | undefined): unknown;
6
+ //# sourceMappingURL=device-link-transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-link-transform.d.ts","sourceRoot":"","sources":["../../src/device/device-link-transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjE;;+EAE+E;AAC/E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAqBlG"}