@fastybird/smart-panel-backend 0.12.0-alpha.0 → 1.0.0-beta.3

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 (1045) hide show
  1. package/dist/app.constants.js.map +1 -1
  2. package/dist/app.module.js +44 -17
  3. package/dist/app.module.js.map +1 -1
  4. package/dist/common/filters/bad-request-exception.filter.js +0 -6
  5. package/dist/common/filters/bad-request-exception.filter.js.map +1 -1
  6. package/dist/common/filters/global-error.filter.js +2 -6
  7. package/dist/common/filters/global-error.filter.js.map +1 -1
  8. package/dist/common/filters/internal-server-error-exception.filter.js +0 -5
  9. package/dist/common/filters/internal-server-error-exception.filter.js.map +1 -1
  10. package/dist/common/filters/not-found-exception.filter.d.ts +4 -0
  11. package/dist/common/filters/not-found-exception.filter.js +22 -3
  12. package/dist/common/filters/not-found-exception.filter.js.map +1 -1
  13. package/dist/common/filters/query-failed-exception.filter.js +0 -5
  14. package/dist/common/filters/query-failed-exception.filter.js.map +1 -1
  15. package/dist/common/filters/unprocessable-entity-exception.filter.js +0 -5
  16. package/dist/common/filters/unprocessable-entity-exception.filter.js.map +1 -1
  17. package/dist/common/plugin-relations/relation-loader.interface.d.ts +5 -0
  18. package/dist/common/plugin-relations/relation-loader.interface.js +3 -0
  19. package/dist/common/plugin-relations/relation-loader.interface.js.map +1 -0
  20. package/dist/common/services/app-instance-holder.service.d.ts +1 -2
  21. package/dist/common/services/app-instance-holder.service.js.map +1 -1
  22. package/dist/common/utils/config.utils.d.ts +0 -1
  23. package/dist/common/utils/config.utils.js +1 -11
  24. package/dist/common/utils/config.utils.js.map +1 -1
  25. package/dist/common/utils/semver.js +1 -1
  26. package/dist/common/utils/semver.js.map +1 -1
  27. package/dist/main.js +25 -6
  28. package/dist/main.js.map +1 -1
  29. package/dist/migrations/1000000000000-InitialSetup.js +8 -0
  30. package/dist/migrations/1000000000000-InitialSetup.js.map +1 -1
  31. package/dist/migrations/1000000000002-AddTokenLastUsedAt.d.ts +6 -0
  32. package/dist/migrations/1000000000002-AddTokenLastUsedAt.js +15 -0
  33. package/dist/migrations/1000000000002-AddTokenLastUsedAt.js.map +1 -0
  34. package/dist/migrations/1000000000003-UnifySpaceRoleTables.d.ts +6 -0
  35. package/dist/migrations/1000000000003-UnifySpaceRoleTables.js +88 -0
  36. package/dist/migrations/1000000000003-UnifySpaceRoleTables.js.map +1 -0
  37. package/dist/migrations/1000000000004-DisplaysSpaceOnly.d.ts +6 -0
  38. package/dist/migrations/1000000000004-DisplaysSpaceOnly.js +165 -0
  39. package/dist/migrations/1000000000004-DisplaysSpaceOnly.js.map +1 -0
  40. package/dist/migrations/1000000000005-SpacesSignageInfoPanel.d.ts +6 -0
  41. package/dist/migrations/1000000000005-SpacesSignageInfoPanel.js +66 -0
  42. package/dist/migrations/1000000000005-SpacesSignageInfoPanel.js.map +1 -0
  43. package/dist/migrations/1000000000006-DropLegacyRoleTables.d.ts +6 -0
  44. package/dist/migrations/1000000000006-DropLegacyRoleTables.js +32 -0
  45. package/dist/migrations/1000000000006-DropLegacyRoleTables.js.map +1 -0
  46. package/dist/modules/api/interceptors/open-api-response.interceptor.js +1 -1
  47. package/dist/modules/api/interceptors/open-api-response.interceptor.js.map +1 -1
  48. package/dist/modules/auth/auth.module.js +44 -28
  49. package/dist/modules/auth/auth.module.js.map +1 -1
  50. package/dist/modules/auth/controllers/auth.controller.js +6 -0
  51. package/dist/modules/auth/controllers/auth.controller.js.map +1 -1
  52. package/dist/modules/auth/controllers/tokens.controller.d.ts +10 -3
  53. package/dist/modules/auth/controllers/tokens.controller.js +96 -7
  54. package/dist/modules/auth/controllers/tokens.controller.js.map +1 -1
  55. package/dist/modules/auth/dto/create-personal-token.dto.d.ts +8 -0
  56. package/dist/modules/auth/dto/create-personal-token.dto.js +75 -0
  57. package/dist/modules/auth/dto/create-personal-token.dto.js.map +1 -0
  58. package/dist/modules/auth/dto/register.dto.d.ts +1 -1
  59. package/dist/modules/auth/dto/register.dto.js +13 -11
  60. package/dist/modules/auth/dto/register.dto.js.map +1 -1
  61. package/dist/modules/auth/entities/auth.entity.d.ts +1 -0
  62. package/dist/modules/auth/entities/auth.entity.js +13 -0
  63. package/dist/modules/auth/entities/auth.entity.js.map +1 -1
  64. package/dist/modules/auth/guards/auth.guard.d.ts +0 -1
  65. package/dist/modules/auth/guards/auth.guard.js +8 -26
  66. package/dist/modules/auth/guards/auth.guard.js.map +1 -1
  67. package/dist/modules/auth/guards/display-aware-throttler.guard.d.ts +16 -0
  68. package/dist/modules/auth/guards/display-aware-throttler.guard.js +133 -0
  69. package/dist/modules/auth/guards/display-aware-throttler.guard.js.map +1 -0
  70. package/dist/modules/auth/services/auth.service.js +1 -1
  71. package/dist/modules/auth/services/auth.service.js.map +1 -1
  72. package/dist/modules/auth/services/tokens.service.d.ts +10 -0
  73. package/dist/modules/auth/services/tokens.service.js +35 -0
  74. package/dist/modules/auth/services/tokens.service.js.map +1 -1
  75. package/dist/modules/auth/utils/token.utils.d.ts +7 -0
  76. package/dist/modules/auth/utils/token.utils.js +12 -1
  77. package/dist/modules/auth/utils/token.utils.js.map +1 -1
  78. package/dist/modules/buddy/buddy.module.d.ts +5 -1
  79. package/dist/modules/buddy/buddy.module.js +42 -15
  80. package/dist/modules/buddy/buddy.module.js.map +1 -1
  81. package/dist/modules/buddy/buddy.utils.d.ts +8 -0
  82. package/dist/modules/buddy/buddy.utils.js +49 -0
  83. package/dist/modules/buddy/buddy.utils.js.map +1 -1
  84. package/dist/modules/buddy/controllers/buddy-suggestions.controller.js +2 -2
  85. package/dist/modules/buddy/controllers/buddy-suggestions.controller.js.map +1 -1
  86. package/dist/modules/buddy/entities/buddy-conversation.entity.js +3 -3
  87. package/dist/modules/buddy/entities/buddy-conversation.entity.js.map +1 -1
  88. package/dist/modules/buddy/entities/buddy-message.entity.js +2 -2
  89. package/dist/modules/buddy/entities/buddy-message.entity.js.map +1 -1
  90. package/dist/modules/buddy/entities/buddy-suggestion.entity.d.ts +19 -0
  91. package/dist/modules/buddy/entities/buddy-suggestion.entity.js +93 -0
  92. package/dist/modules/buddy/entities/buddy-suggestion.entity.js.map +1 -0
  93. package/dist/modules/buddy/listeners/media-activity-event.listener.js +3 -3
  94. package/dist/modules/buddy/listeners/media-activity-event.listener.js.map +1 -1
  95. package/dist/modules/buddy/platforms/llm-provider.platform.d.ts +6 -0
  96. package/dist/modules/buddy/platforms/openai-sdk.utils.d.ts +2 -1
  97. package/dist/modules/buddy/platforms/openai-sdk.utils.js +12 -1
  98. package/dist/modules/buddy/platforms/openai-sdk.utils.js.map +1 -1
  99. package/dist/modules/buddy/services/buddy-context.service.js +2 -2
  100. package/dist/modules/buddy/services/buddy-context.service.js.map +1 -1
  101. package/dist/modules/buddy/services/buddy-conversation.service.js +23 -8
  102. package/dist/modules/buddy/services/buddy-conversation.service.js.map +1 -1
  103. package/dist/modules/buddy/services/buddy-personality.service.d.ts +1 -1
  104. package/dist/modules/buddy/services/buddy-personality.service.js.map +1 -1
  105. package/dist/modules/buddy/services/heartbeat.service.js +2 -2
  106. package/dist/modules/buddy/services/heartbeat.service.js.map +1 -1
  107. package/dist/modules/buddy/services/llm-provider.service.js +2 -10
  108. package/dist/modules/buddy/services/llm-provider.service.js.map +1 -1
  109. package/dist/modules/buddy/services/module-reset.service.d.ts +3 -1
  110. package/dist/modules/buddy/services/module-reset.service.js +6 -1
  111. package/dist/modules/buddy/services/module-reset.service.js.map +1 -1
  112. package/dist/modules/buddy/services/pattern-detector.service.d.ts +4 -1
  113. package/dist/modules/buddy/services/pattern-detector.service.js +10 -3
  114. package/dist/modules/buddy/services/pattern-detector.service.js.map +1 -1
  115. package/dist/modules/buddy/services/scene-suggestion-evaluator.service.d.ts +4 -1
  116. package/dist/modules/buddy/services/scene-suggestion-evaluator.service.js +10 -4
  117. package/dist/modules/buddy/services/scene-suggestion-evaluator.service.js.map +1 -1
  118. package/dist/modules/buddy/services/stt-provider.service.js +2 -10
  119. package/dist/modules/buddy/services/stt-provider.service.js.map +1 -1
  120. package/dist/modules/buddy/services/suggestion-engine.service.d.ts +19 -13
  121. package/dist/modules/buddy/services/suggestion-engine.service.js +170 -103
  122. package/dist/modules/buddy/services/suggestion-engine.service.js.map +1 -1
  123. package/dist/modules/buddy/services/tts-provider.service.js +2 -10
  124. package/dist/modules/buddy/services/tts-provider.service.js.map +1 -1
  125. package/dist/modules/config/config.constants.d.ts +2 -1
  126. package/dist/modules/config/config.constants.js +1 -0
  127. package/dist/modules/config/config.constants.js.map +1 -1
  128. package/dist/modules/config/config.module.d.ts +5 -1
  129. package/dist/modules/config/config.module.js +78 -14
  130. package/dist/modules/config/config.module.js.map +1 -1
  131. package/dist/modules/config/services/config.service.d.ts +1 -0
  132. package/dist/modules/config/services/config.service.js +11 -1
  133. package/dist/modules/config/services/config.service.js.map +1 -1
  134. package/dist/modules/dashboard/dashboard.module.js +21 -18
  135. package/dist/modules/dashboard/dashboard.module.js.map +1 -1
  136. package/dist/modules/dashboard/entities/dashboard.relations.d.ts +1 -5
  137. package/dist/modules/devices/devices.module.js +24 -16
  138. package/dist/modules/devices/devices.module.js.map +1 -1
  139. package/dist/modules/devices/services/device-zones.service.js +2 -2
  140. package/dist/modules/devices/services/device-zones.service.js.map +1 -1
  141. package/dist/modules/devices/services/devices.service.js.map +1 -1
  142. package/dist/modules/displays/displays.constants.d.ts +0 -5
  143. package/dist/modules/displays/displays.constants.js +1 -7
  144. package/dist/modules/displays/displays.constants.js.map +1 -1
  145. package/dist/modules/displays/displays.module.js +27 -23
  146. package/dist/modules/displays/displays.module.js.map +1 -1
  147. package/dist/modules/displays/dto/update-display.dto.d.ts +2 -3
  148. package/dist/modules/displays/dto/update-display.dto.js +4 -19
  149. package/dist/modules/displays/dto/update-display.dto.js.map +1 -1
  150. package/dist/modules/displays/entities/displays.entity.d.ts +3 -4
  151. package/dist/modules/displays/entities/displays.entity.js +8 -25
  152. package/dist/modules/displays/entities/displays.entity.js.map +1 -1
  153. package/dist/modules/displays/services/displays.service.d.ts +4 -2
  154. package/dist/modules/displays/services/displays.service.js +19 -24
  155. package/dist/modules/displays/services/displays.service.js.map +1 -1
  156. package/dist/modules/displays/services/home-resolution.service.d.ts +7 -2
  157. package/dist/modules/displays/services/home-resolution.service.js +50 -6
  158. package/dist/modules/displays/services/home-resolution.service.js.map +1 -1
  159. package/dist/modules/displays/services/space-home-page-resolver-registry.service.d.ts +9 -0
  160. package/dist/modules/displays/services/space-home-page-resolver-registry.service.js +26 -0
  161. package/dist/modules/displays/services/space-home-page-resolver-registry.service.js.map +1 -0
  162. package/dist/modules/displays/services/space-selection-validator-registry.service.d.ts +9 -0
  163. package/dist/modules/displays/services/space-selection-validator-registry.service.js +26 -0
  164. package/dist/modules/displays/services/space-selection-validator-registry.service.js.map +1 -0
  165. package/dist/modules/energy/energy.module.js +29 -15
  166. package/dist/modules/energy/energy.module.js.map +1 -1
  167. package/dist/modules/extensions/controllers/actions.controller.d.ts +9 -4
  168. package/dist/modules/extensions/controllers/actions.controller.js +63 -10
  169. package/dist/modules/extensions/controllers/actions.controller.js.map +1 -1
  170. package/dist/modules/extensions/extensions.module.js +31 -28
  171. package/dist/modules/extensions/extensions.module.js.map +1 -1
  172. package/dist/modules/extensions/extensions.openapi.d.ts +3 -3
  173. package/dist/modules/extensions/extensions.openapi.js +2 -0
  174. package/dist/modules/extensions/extensions.openapi.js.map +1 -1
  175. package/dist/modules/extensions/models/action.model.d.ts +13 -0
  176. package/dist/modules/extensions/models/action.model.js +89 -3
  177. package/dist/modules/extensions/models/action.model.js.map +1 -1
  178. package/dist/modules/extensions/models/actions-response.model.d.ts +4 -1
  179. package/dist/modules/extensions/models/actions-response.model.js +19 -1
  180. package/dist/modules/extensions/models/actions-response.model.js.map +1 -1
  181. package/dist/modules/extensions/models/extension.model.js +5 -0
  182. package/dist/modules/extensions/models/extension.model.js.map +1 -1
  183. package/dist/modules/extensions/models/service-status.model.js +7 -0
  184. package/dist/modules/extensions/models/service-status.model.js.map +1 -1
  185. package/dist/modules/extensions/services/action-audit.service.d.ts +21 -0
  186. package/dist/modules/extensions/services/action-audit.service.js +49 -0
  187. package/dist/modules/extensions/services/action-audit.service.js.map +1 -0
  188. package/dist/modules/extensions/services/base-managed-plugin.service.d.ts +11 -0
  189. package/dist/modules/extensions/services/base-managed-plugin.service.js +28 -0
  190. package/dist/modules/extensions/services/base-managed-plugin.service.js.map +1 -0
  191. package/dist/modules/extensions/services/extension-action-registry.service.d.ts +6 -1
  192. package/dist/modules/extensions/services/extension-action-registry.service.js +22 -3
  193. package/dist/modules/extensions/services/extension-action-registry.service.js.map +1 -1
  194. package/dist/modules/extensions/services/extension-action.interface.d.ts +3 -0
  195. package/dist/modules/extensions/services/extension-action.interface.js +3 -1
  196. package/dist/modules/extensions/services/extension-action.interface.js.map +1 -1
  197. package/dist/modules/intents/intents.module.js +27 -26
  198. package/dist/modules/intents/intents.module.js.map +1 -1
  199. package/dist/modules/mdns/mdns.module.js +24 -19
  200. package/dist/modules/mdns/mdns.module.js.map +1 -1
  201. package/dist/modules/platform/dto/system-info.dto.d.ts +2 -0
  202. package/dist/modules/platform/dto/system-info.dto.js +7 -0
  203. package/dist/modules/platform/dto/system-info.dto.js.map +1 -1
  204. package/dist/modules/platform/platform.module.js +25 -17
  205. package/dist/modules/platform/platform.module.js.map +1 -1
  206. package/dist/modules/platform/platforms/abstract.platform.d.ts +44 -0
  207. package/dist/modules/platform/platforms/abstract.platform.js +267 -0
  208. package/dist/modules/platform/platforms/abstract.platform.js.map +1 -1
  209. package/dist/modules/platform/platforms/docker.platform.d.ts +2 -0
  210. package/dist/modules/platform/platforms/docker.platform.js +3 -0
  211. package/dist/modules/platform/platforms/docker.platform.js.map +1 -1
  212. package/dist/modules/platform/platforms/generic.platform.d.ts +2 -1
  213. package/dist/modules/platform/platforms/generic.platform.js +17 -15
  214. package/dist/modules/platform/platforms/generic.platform.js.map +1 -1
  215. package/dist/modules/platform/platforms/home-assistant.platform.d.ts +4 -0
  216. package/dist/modules/platform/platforms/home-assistant.platform.js +21 -0
  217. package/dist/modules/platform/platforms/home-assistant.platform.js.map +1 -1
  218. package/dist/modules/platform/platforms/raspberry.platform.js +22 -40
  219. package/dist/modules/platform/platforms/raspberry.platform.js.map +1 -1
  220. package/dist/modules/platform/services/platform.service.d.ts +2 -0
  221. package/dist/modules/platform/services/platform.service.js +7 -0
  222. package/dist/modules/platform/services/platform.service.js.map +1 -1
  223. package/dist/modules/scenes/scenes.module.js +18 -18
  224. package/dist/modules/scenes/scenes.module.js.map +1 -1
  225. package/dist/modules/security/security.module.js +22 -17
  226. package/dist/modules/security/security.module.js.map +1 -1
  227. package/dist/modules/spaces/controllers/spaces.controller.d.ts +5 -115
  228. package/dist/modules/spaces/controllers/spaces.controller.js +22 -1922
  229. package/dist/modules/spaces/controllers/spaces.controller.js.map +1 -1
  230. package/dist/modules/spaces/dto/create-space.dto.d.ts +1 -5
  231. package/dist/modules/spaces/dto/create-space.dto.js +0 -61
  232. package/dist/modules/spaces/dto/create-space.dto.js.map +1 -1
  233. package/dist/modules/spaces/dto/update-space.dto.d.ts +1 -5
  234. package/dist/modules/spaces/dto/update-space.dto.js +0 -61
  235. package/dist/modules/spaces/dto/update-space.dto.js.map +1 -1
  236. package/dist/modules/spaces/entities/space-role.entity.d.ts +8 -0
  237. package/dist/modules/spaces/entities/space-role.entity.js +58 -0
  238. package/dist/modules/spaces/entities/space-role.entity.js.map +1 -0
  239. package/dist/modules/spaces/entities/space.entity.d.ts +3 -6
  240. package/dist/modules/spaces/entities/space.entity.js +11 -74
  241. package/dist/modules/spaces/entities/space.entity.js.map +1 -1
  242. package/dist/modules/spaces/entities/space.relations.d.ts +11 -0
  243. package/dist/modules/spaces/entities/space.relations.js +3 -0
  244. package/dist/modules/spaces/entities/space.relations.js.map +1 -0
  245. package/dist/modules/spaces/models/spaces-response.model.d.ts +1 -522
  246. package/dist/modules/spaces/models/spaces-response.model.js +23 -4150
  247. package/dist/modules/spaces/models/spaces-response.model.js.map +1 -1
  248. package/dist/modules/spaces/services/space-create-builder-registry.service.d.ts +6 -0
  249. package/dist/modules/spaces/services/space-create-builder-registry.service.js +26 -0
  250. package/dist/modules/spaces/services/space-create-builder-registry.service.js.map +1 -0
  251. package/dist/modules/spaces/services/space-relations-loader-registry.service.d.ts +6 -0
  252. package/dist/modules/spaces/services/space-relations-loader-registry.service.js +26 -0
  253. package/dist/modules/spaces/services/space-relations-loader-registry.service.js.map +1 -0
  254. package/dist/modules/spaces/services/space-roles-type-mapper.service.d.ts +12 -0
  255. package/dist/modules/spaces/services/space-roles-type-mapper.service.js +39 -0
  256. package/dist/modules/spaces/services/space-roles-type-mapper.service.js.map +1 -0
  257. package/dist/modules/spaces/services/spaces-type-mapper.service.d.ts +17 -0
  258. package/dist/modules/spaces/services/spaces-type-mapper.service.js +36 -0
  259. package/dist/modules/spaces/services/spaces-type-mapper.service.js.map +1 -0
  260. package/dist/modules/spaces/services/spaces.service.d.ts +4 -12
  261. package/dist/modules/spaces/services/spaces.service.js +120 -160
  262. package/dist/modules/spaces/services/spaces.service.js.map +1 -1
  263. package/dist/modules/spaces/spaces.constants.d.ts +13 -292
  264. package/dist/modules/spaces/spaces.constants.js +13 -1449
  265. package/dist/modules/spaces/spaces.constants.js.map +1 -1
  266. package/dist/modules/spaces/spaces.module.d.ts +2 -9
  267. package/dist/modules/spaces/spaces.module.js +51 -108
  268. package/dist/modules/spaces/spaces.module.js.map +1 -1
  269. package/dist/modules/spaces/spaces.openapi.d.ts +3 -16
  270. package/dist/modules/spaces/spaces.openapi.js +0 -136
  271. package/dist/modules/spaces/spaces.openapi.js.map +1 -1
  272. package/dist/modules/stats/controllers/prometheus.controller.js +0 -2
  273. package/dist/modules/stats/controllers/prometheus.controller.js.map +1 -1
  274. package/dist/modules/storage/models/config.model.js +2 -4
  275. package/dist/modules/storage/models/config.model.js.map +1 -1
  276. package/dist/modules/storage/services/storage.service.d.ts +4 -10
  277. package/dist/modules/storage/services/storage.service.js +21 -60
  278. package/dist/modules/storage/services/storage.service.js.map +1 -1
  279. package/dist/modules/storage/storage.constants.d.ts +2 -0
  280. package/dist/modules/storage/storage.constants.js +3 -1
  281. package/dist/modules/storage/storage.constants.js.map +1 -1
  282. package/dist/modules/storage/storage.module.js +26 -7
  283. package/dist/modules/storage/storage.module.js.map +1 -1
  284. package/dist/modules/swagger/commands/serve-swagger.command.d.ts +14 -0
  285. package/dist/modules/swagger/commands/serve-swagger.command.js +60 -0
  286. package/dist/modules/swagger/commands/serve-swagger.command.js.map +1 -0
  287. package/dist/modules/swagger/swagger.module.js +2 -0
  288. package/dist/modules/swagger/swagger.module.js.map +1 -1
  289. package/dist/modules/system/backup-contribution.module.d.ts +2 -0
  290. package/dist/modules/system/backup-contribution.module.js +22 -0
  291. package/dist/modules/system/backup-contribution.module.js.map +1 -0
  292. package/dist/modules/system/commands/update-panel.command.d.ts +1 -0
  293. package/dist/modules/system/commands/update-panel.command.js +21 -6
  294. package/dist/modules/system/commands/update-panel.command.js.map +1 -1
  295. package/dist/modules/system/controllers/backup.controller.d.ts +17 -0
  296. package/dist/modules/system/controllers/backup.controller.js +308 -0
  297. package/dist/modules/system/controllers/backup.controller.js.map +1 -0
  298. package/dist/modules/system/dto/create-backup.dto.d.ts +6 -0
  299. package/dist/modules/system/dto/create-backup.dto.js +43 -0
  300. package/dist/modules/system/dto/create-backup.dto.js.map +1 -0
  301. package/dist/modules/system/models/backup-response.model.d.ts +8 -0
  302. package/dist/modules/system/models/backup-response.model.js +46 -0
  303. package/dist/modules/system/models/backup-response.model.js.map +1 -0
  304. package/dist/modules/system/models/backup.model.d.ts +14 -0
  305. package/dist/modules/system/models/backup.model.js +103 -0
  306. package/dist/modules/system/models/backup.model.js.map +1 -0
  307. package/dist/modules/system/models/system.model.d.ts +3 -1
  308. package/dist/modules/system/models/system.model.js +26 -0
  309. package/dist/modules/system/models/system.model.js.map +1 -1
  310. package/dist/modules/system/scripts/update-worker.sh +304 -0
  311. package/dist/modules/system/services/backup-contribution-registry.service.d.ts +24 -0
  312. package/dist/modules/system/services/backup-contribution-registry.service.js +52 -0
  313. package/dist/modules/system/services/backup-contribution-registry.service.js.map +1 -0
  314. package/dist/modules/system/services/backup.service.d.ts +52 -0
  315. package/dist/modules/system/services/backup.service.js +630 -0
  316. package/dist/modules/system/services/backup.service.js.map +1 -0
  317. package/dist/modules/system/services/house-mode-actions.service.d.ts +1 -1
  318. package/dist/modules/system/services/house-mode-actions.service.js +5 -5
  319. package/dist/modules/system/services/house-mode-actions.service.js.map +1 -1
  320. package/dist/modules/system/services/system-command.service.d.ts +7 -1
  321. package/dist/modules/system/services/system-command.service.js +24 -4
  322. package/dist/modules/system/services/system-command.service.js.map +1 -1
  323. package/dist/modules/system/services/system.service.js +4 -1
  324. package/dist/modules/system/services/system.service.js.map +1 -1
  325. package/dist/modules/system/services/update-executor.service.d.ts +4 -0
  326. package/dist/modules/system/services/update-executor.service.js +130 -10
  327. package/dist/modules/system/services/update-executor.service.js.map +1 -1
  328. package/dist/modules/system/services/update.service.d.ts +11 -3
  329. package/dist/modules/system/services/update.service.js +108 -38
  330. package/dist/modules/system/services/update.service.js.map +1 -1
  331. package/dist/modules/system/system.constants.d.ts +7 -0
  332. package/dist/modules/system/system.constants.js +9 -1
  333. package/dist/modules/system/system.constants.js.map +1 -1
  334. package/dist/modules/system/system.module.d.ts +5 -1
  335. package/dist/modules/system/system.module.js +95 -31
  336. package/dist/modules/system/system.module.js.map +1 -1
  337. package/dist/modules/system/system.openapi.d.ts +4 -1
  338. package/dist/modules/system/system.openapi.js +8 -0
  339. package/dist/modules/system/system.openapi.js.map +1 -1
  340. package/dist/modules/users/controllers/users.controller.js +9 -0
  341. package/dist/modules/users/controllers/users.controller.js.map +1 -1
  342. package/dist/modules/users/dto/create-user.dto.js +1 -0
  343. package/dist/modules/users/dto/create-user.dto.js.map +1 -1
  344. package/dist/modules/users/dto/update-user.dto.d.ts +1 -0
  345. package/dist/modules/users/dto/update-user.dto.js +15 -1
  346. package/dist/modules/users/dto/update-user.dto.js.map +1 -1
  347. package/dist/modules/users/services/users.service.d.ts +1 -0
  348. package/dist/modules/users/services/users.service.js +12 -2
  349. package/dist/modules/users/services/users.service.js.map +1 -1
  350. package/dist/modules/users/users.constants.d.ts +3 -0
  351. package/dist/modules/users/users.constants.js +35 -1
  352. package/dist/modules/users/users.constants.js.map +1 -1
  353. package/dist/modules/users/users.module.js +29 -13
  354. package/dist/modules/users/users.module.js.map +1 -1
  355. package/dist/modules/weather/weather.module.js +20 -18
  356. package/dist/modules/weather/weather.module.js.map +1 -1
  357. package/dist/modules/websocket/dto/client-user.dto.js +25 -0
  358. package/dist/modules/websocket/dto/client-user.dto.js.map +1 -1
  359. package/dist/modules/websocket/dto/ws-client.dto.js +26 -0
  360. package/dist/modules/websocket/dto/ws-client.dto.js.map +1 -1
  361. package/dist/modules/websocket/gateway/websocket.gateway.d.ts +2 -2
  362. package/dist/modules/websocket/gateway/websocket.gateway.js +27 -9
  363. package/dist/modules/websocket/gateway/websocket.gateway.js.map +1 -1
  364. package/dist/modules/websocket/services/command-event-registry.service.d.ts +3 -1
  365. package/dist/modules/websocket/services/command-event-registry.service.js +5 -4
  366. package/dist/modules/websocket/services/command-event-registry.service.js.map +1 -1
  367. package/dist/plugins/buddy-claude/buddy-claude.plugin.js +24 -11
  368. package/dist/plugins/buddy-claude/buddy-claude.plugin.js.map +1 -1
  369. package/dist/plugins/buddy-claude-setup-token/buddy-claude-setup-token.plugin.js +21 -11
  370. package/dist/plugins/buddy-claude-setup-token/buddy-claude-setup-token.plugin.js.map +1 -1
  371. package/dist/plugins/buddy-discord/buddy-discord.plugin.js +28 -16
  372. package/dist/plugins/buddy-discord/buddy-discord.plugin.js.map +1 -1
  373. package/dist/plugins/buddy-elevenlabs/buddy-elevenlabs.plugin.js +22 -11
  374. package/dist/plugins/buddy-elevenlabs/buddy-elevenlabs.plugin.js.map +1 -1
  375. package/dist/plugins/buddy-ollama/buddy-ollama.plugin.js +28 -12
  376. package/dist/plugins/buddy-ollama/buddy-ollama.plugin.js.map +1 -1
  377. package/dist/plugins/buddy-openai/buddy-openai.plugin.js +24 -15
  378. package/dist/plugins/buddy-openai/buddy-openai.plugin.js.map +1 -1
  379. package/dist/plugins/buddy-openai/platforms/openai.provider.js +1 -0
  380. package/dist/plugins/buddy-openai/platforms/openai.provider.js.map +1 -1
  381. package/dist/plugins/buddy-openai-codex/buddy-openai-codex.plugin.js +26 -15
  382. package/dist/plugins/buddy-openai-codex/buddy-openai-codex.plugin.js.map +1 -1
  383. package/dist/plugins/buddy-stt-whisper-local/buddy-stt-whisper-local.plugin.js +23 -9
  384. package/dist/plugins/buddy-stt-whisper-local/buddy-stt-whisper-local.plugin.js.map +1 -1
  385. package/dist/plugins/buddy-system-tts/buddy-system-tts.plugin.js +21 -10
  386. package/dist/plugins/buddy-system-tts/buddy-system-tts.plugin.js.map +1 -1
  387. package/dist/plugins/buddy-telegram/buddy-telegram.plugin.js +22 -11
  388. package/dist/plugins/buddy-telegram/buddy-telegram.plugin.js.map +1 -1
  389. package/dist/plugins/buddy-voiceai/buddy-voiceai.plugin.js +22 -12
  390. package/dist/plugins/buddy-voiceai/buddy-voiceai.plugin.js.map +1 -1
  391. package/dist/plugins/buddy-whatsapp/buddy-whatsapp.plugin.js +24 -12
  392. package/dist/plugins/buddy-whatsapp/buddy-whatsapp.plugin.js.map +1 -1
  393. package/dist/plugins/buddy-whatsapp/controllers/whatsapp-webhook.controller.d.ts +2 -2
  394. package/dist/plugins/buddy-whatsapp/controllers/whatsapp-webhook.controller.js +3 -3
  395. package/dist/plugins/buddy-whatsapp/controllers/whatsapp-webhook.controller.js.map +1 -1
  396. package/dist/plugins/buddy-whatsapp/platforms/whatsapp-bot.provider.d.ts +2 -1
  397. package/dist/plugins/buddy-whatsapp/platforms/whatsapp-bot.provider.js +31 -12
  398. package/dist/plugins/buddy-whatsapp/platforms/whatsapp-bot.provider.js.map +1 -1
  399. package/dist/plugins/data-sources-device-channel/data-sources-device-channel.plugin.js +16 -30
  400. package/dist/plugins/data-sources-device-channel/data-sources-device-channel.plugin.js.map +1 -1
  401. package/dist/plugins/data-sources-weather/data-sources-weather.plugin.js +17 -29
  402. package/dist/plugins/data-sources-weather/data-sources-weather.plugin.js.map +1 -1
  403. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js +37 -136
  404. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js.map +1 -1
  405. package/dist/plugins/devices-home-assistant/dto/home-assistant-discovered-helper.dto.js +22 -2
  406. package/dist/plugins/devices-home-assistant/dto/home-assistant-discovered-helper.dto.js.map +1 -1
  407. package/dist/plugins/devices-home-assistant/models/config.model.d.ts +1 -0
  408. package/dist/plugins/devices-home-assistant/models/config.model.js +12 -0
  409. package/dist/plugins/devices-home-assistant/models/config.model.js.map +1 -1
  410. package/dist/plugins/devices-home-assistant/platforms/home-assistant.device.platform.d.ts +3 -1
  411. package/dist/plugins/devices-home-assistant/platforms/home-assistant.device.platform.js +11 -2
  412. package/dist/plugins/devices-home-assistant/platforms/home-assistant.device.platform.js.map +1 -1
  413. package/dist/plugins/devices-home-assistant/services/ha-mdns-discoverer.service.js +0 -6
  414. package/dist/plugins/devices-home-assistant/services/ha-mdns-discoverer.service.js.map +1 -1
  415. package/dist/plugins/devices-home-assistant/services/ha-supervisor.service.d.ts +10 -0
  416. package/dist/plugins/devices-home-assistant/services/ha-supervisor.service.js +47 -0
  417. package/dist/plugins/devices-home-assistant/services/ha-supervisor.service.js.map +1 -0
  418. package/dist/plugins/devices-home-assistant/services/home-assistant-config-validator.service.d.ts +3 -1
  419. package/dist/plugins/devices-home-assistant/services/home-assistant-config-validator.service.js +8 -2
  420. package/dist/plugins/devices-home-assistant/services/home-assistant-config-validator.service.js.map +1 -1
  421. package/dist/plugins/devices-home-assistant/services/home-assistant.http.service.d.ts +5 -1
  422. package/dist/plugins/devices-home-assistant/services/home-assistant.http.service.js +27 -7
  423. package/dist/plugins/devices-home-assistant/services/home-assistant.http.service.js.map +1 -1
  424. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.d.ts +9 -7
  425. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js +58 -24
  426. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js.map +1 -1
  427. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js +1 -0
  428. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js.map +1 -1
  429. package/dist/plugins/devices-reterminal/devices-reterminal.plugin.js +20 -17
  430. package/dist/plugins/devices-reterminal/devices-reterminal.plugin.js.map +1 -1
  431. package/dist/plugins/devices-shelly-ng/controllers/shelly-ng-devices.controller.d.ts +7 -2
  432. package/dist/plugins/devices-shelly-ng/controllers/shelly-ng-devices.controller.js +83 -2
  433. package/dist/plugins/devices-shelly-ng/controllers/shelly-ng-devices.controller.js.map +1 -1
  434. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.d.ts +4 -0
  435. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js +86 -11
  436. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js.map +1 -1
  437. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.d.ts +8 -0
  438. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js +45 -0
  439. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js.map +1 -1
  440. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.openapi.d.ts +3 -3
  441. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.openapi.js +4 -0
  442. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.openapi.js.map +1 -1
  443. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.d.ts +6 -1
  444. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js +72 -21
  445. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js.map +1 -1
  446. package/dist/plugins/devices-shelly-ng/dto/update-config.dto.d.ts +1 -0
  447. package/dist/plugins/devices-shelly-ng/dto/update-config.dto.js +24 -6
  448. package/dist/plugins/devices-shelly-ng/dto/update-config.dto.js.map +1 -1
  449. package/dist/plugins/devices-shelly-ng/entities/devices-shelly-ng.entity.js +12 -0
  450. package/dist/plugins/devices-shelly-ng/entities/devices-shelly-ng.entity.js.map +1 -1
  451. package/dist/plugins/devices-shelly-ng/entities/shelly-ng-device-address.entity.js +2 -0
  452. package/dist/plugins/devices-shelly-ng/entities/shelly-ng-device-address.entity.js.map +1 -1
  453. package/dist/plugins/devices-shelly-ng/models/config.model.d.ts +1 -0
  454. package/dist/plugins/devices-shelly-ng/models/config.model.js +18 -6
  455. package/dist/plugins/devices-shelly-ng/models/config.model.js.map +1 -1
  456. package/dist/plugins/devices-shelly-ng/models/shelly-ng-response.model.d.ts +4 -1
  457. package/dist/plugins/devices-shelly-ng/models/shelly-ng-response.model.js +15 -1
  458. package/dist/plugins/devices-shelly-ng/models/shelly-ng-response.model.js.map +1 -1
  459. package/dist/plugins/devices-shelly-ng/models/shelly-ng.model.d.ts +30 -0
  460. package/dist/plugins/devices-shelly-ng/models/shelly-ng.model.js +269 -1
  461. package/dist/plugins/devices-shelly-ng/models/shelly-ng.model.js.map +1 -1
  462. package/dist/plugins/devices-shelly-ng/services/device-manager.service.js.map +1 -1
  463. package/dist/plugins/devices-shelly-ng/services/shelly-ng-discovery.service.d.ts +64 -0
  464. package/dist/plugins/devices-shelly-ng/services/shelly-ng-discovery.service.js +301 -0
  465. package/dist/plugins/devices-shelly-ng/services/shelly-ng-discovery.service.js.map +1 -0
  466. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.d.ts +17 -7
  467. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js +110 -15
  468. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js.map +1 -1
  469. package/dist/plugins/devices-shelly-ng/services/shelly-rpc-client.service.d.ts +5 -0
  470. package/dist/plugins/devices-shelly-ng/services/shelly-rpc-client.service.js +3 -0
  471. package/dist/plugins/devices-shelly-ng/services/shelly-rpc-client.service.js.map +1 -1
  472. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.d.ts +28 -0
  473. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js +197 -0
  474. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js.map +1 -0
  475. package/dist/plugins/devices-shelly-v1/controllers/shelly-v1-devices.controller.d.ts +7 -2
  476. package/dist/plugins/devices-shelly-v1/controllers/shelly-v1-devices.controller.js +83 -2
  477. package/dist/plugins/devices-shelly-v1/controllers/shelly-v1-devices.controller.js.map +1 -1
  478. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.openapi.d.ts +3 -3
  479. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.openapi.js +4 -0
  480. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.openapi.js.map +1 -1
  481. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js +27 -23
  482. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js.map +1 -1
  483. package/dist/plugins/devices-shelly-v1/models/shelly-v1-response.model.d.ts +4 -1
  484. package/dist/plugins/devices-shelly-v1/models/shelly-v1-response.model.js +15 -1
  485. package/dist/plugins/devices-shelly-v1/models/shelly-v1-response.model.js.map +1 -1
  486. package/dist/plugins/devices-shelly-v1/models/shelly-v1.model.d.ts +31 -0
  487. package/dist/plugins/devices-shelly-v1/models/shelly-v1.model.js +279 -1
  488. package/dist/plugins/devices-shelly-v1/models/shelly-v1.model.js.map +1 -1
  489. package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.d.ts +0 -1
  490. package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.js +2 -9
  491. package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.js.map +1 -1
  492. package/dist/plugins/devices-shelly-v1/services/device-mapper.service.d.ts +0 -1
  493. package/dist/plugins/devices-shelly-v1/services/device-mapper.service.js +2 -15
  494. package/dist/plugins/devices-shelly-v1/services/device-mapper.service.js.map +1 -1
  495. package/dist/plugins/devices-shelly-v1/services/shellies-adapter.service.d.ts +9 -2
  496. package/dist/plugins/devices-shelly-v1/services/shellies-adapter.service.js +93 -20
  497. package/dist/plugins/devices-shelly-v1/services/shellies-adapter.service.js.map +1 -1
  498. package/dist/plugins/devices-shelly-v1/services/shelly-v1-discovery.service.d.ts +62 -0
  499. package/dist/plugins/devices-shelly-v1/services/shelly-v1-discovery.service.js +314 -0
  500. package/dist/plugins/devices-shelly-v1/services/shelly-v1-discovery.service.js.map +1 -0
  501. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.d.ts +3 -6
  502. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.js +13 -37
  503. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.js.map +1 -1
  504. package/dist/plugins/devices-shelly-v1/utils/descriptor.utils.d.ts +2 -0
  505. package/dist/plugins/devices-shelly-v1/utils/descriptor.utils.js +23 -0
  506. package/dist/plugins/devices-shelly-v1/utils/descriptor.utils.js.map +1 -0
  507. package/dist/plugins/devices-third-party/devices-third-party.plugin.js +19 -23
  508. package/dist/plugins/devices-third-party/devices-third-party.plugin.js.map +1 -1
  509. package/dist/plugins/devices-wled/devices-wled.plugin.js +30 -20
  510. package/dist/plugins/devices-wled/devices-wled.plugin.js.map +1 -1
  511. package/dist/plugins/devices-wled/services/wled-mdns-discoverer.service.js +0 -6
  512. package/dist/plugins/devices-wled/services/wled-mdns-discoverer.service.js.map +1 -1
  513. package/dist/plugins/devices-wled/services/wled.service.d.ts +3 -6
  514. package/dist/plugins/devices-wled/services/wled.service.js +3 -20
  515. package/dist/plugins/devices-wled/services/wled.service.js.map +1 -1
  516. package/dist/plugins/devices-zigbee2mqtt/controllers/zigbee2mqtt-wizard.controller.d.ts +14 -0
  517. package/dist/plugins/devices-zigbee2mqtt/controllers/zigbee2mqtt-wizard.controller.js +185 -0
  518. package/dist/plugins/devices-zigbee2mqtt/controllers/zigbee2mqtt-wizard.controller.js.map +1 -0
  519. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.openapi.d.ts +5 -3
  520. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.openapi.js +12 -0
  521. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.openapi.js.map +1 -1
  522. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.plugin.js +43 -54
  523. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.plugin.js.map +1 -1
  524. package/dist/plugins/devices-zigbee2mqtt/dto/wizard-adopt.dto.d.ts +12 -0
  525. package/dist/plugins/devices-zigbee2mqtt/dto/wizard-adopt.dto.js +73 -0
  526. package/dist/plugins/devices-zigbee2mqtt/dto/wizard-adopt.dto.js.map +1 -0
  527. package/dist/plugins/devices-zigbee2mqtt/models/wizard.model.d.ts +38 -0
  528. package/dist/plugins/devices-zigbee2mqtt/models/wizard.model.js +259 -0
  529. package/dist/plugins/devices-zigbee2mqtt/models/wizard.model.js.map +1 -0
  530. package/dist/plugins/devices-zigbee2mqtt/models/zigbee2mqtt-response.model.d.ts +7 -0
  531. package/dist/plugins/devices-zigbee2mqtt/models/zigbee2mqtt-response.model.js +30 -1
  532. package/dist/plugins/devices-zigbee2mqtt/models/zigbee2mqtt-response.model.js.map +1 -1
  533. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.d.ts +1 -0
  534. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js.map +1 -1
  535. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.d.ts +1 -0
  536. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js +22 -0
  537. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js.map +1 -1
  538. package/dist/plugins/devices-zigbee2mqtt/services/wizard.service.d.ts +70 -0
  539. package/dist/plugins/devices-zigbee2mqtt/services/wizard.service.js +361 -0
  540. package/dist/plugins/devices-zigbee2mqtt/services/wizard.service.js.map +1 -0
  541. package/dist/plugins/devices-zigbee2mqtt/services/ws-client-adapter.service.d.ts +1 -0
  542. package/dist/plugins/devices-zigbee2mqtt/services/ws-client-adapter.service.js +23 -0
  543. package/dist/plugins/devices-zigbee2mqtt/services/ws-client-adapter.service.js.map +1 -1
  544. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.d.ts +10 -7
  545. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js +46 -22
  546. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js.map +1 -1
  547. package/dist/{modules/storage/plugins/influx-v1/influx-v1.update-config.dto.d.ts → plugins/influx-v1/dto/update-config.dto.d.ts} +1 -1
  548. package/dist/{modules/storage/plugins/influx-v1/influx-v1.update-config.dto.js → plugins/influx-v1/dto/update-config.dto.js} +3 -3
  549. package/dist/plugins/influx-v1/dto/update-config.dto.js.map +1 -0
  550. package/dist/plugins/influx-v1/influx-v1.constants.js.map +1 -0
  551. package/dist/{modules/storage/plugins → plugins}/influx-v1/influx-v1.openapi.d.ts +1 -1
  552. package/dist/plugins/influx-v1/influx-v1.openapi.js +7 -0
  553. package/dist/plugins/influx-v1/influx-v1.openapi.js.map +1 -0
  554. package/dist/plugins/influx-v1/influx-v1.plugin.d.ts +15 -0
  555. package/dist/plugins/influx-v1/influx-v1.plugin.js +109 -0
  556. package/dist/plugins/influx-v1/influx-v1.plugin.js.map +1 -0
  557. package/dist/{modules/storage/plugins/influx-v1/influx-v1.config.model.d.ts → plugins/influx-v1/models/config.model.d.ts} +1 -1
  558. package/dist/{modules/storage/plugins/influx-v1/influx-v1.config.model.js → plugins/influx-v1/models/config.model.js} +3 -3
  559. package/dist/plugins/influx-v1/models/config.model.js.map +1 -0
  560. package/dist/plugins/influx-v1/services/influx-v1-managed.service.d.ts +20 -0
  561. package/dist/plugins/influx-v1/services/influx-v1-managed.service.js +128 -0
  562. package/dist/plugins/influx-v1/services/influx-v1-managed.service.js.map +1 -0
  563. package/dist/{modules/storage/plugins/influx-v1/influx-v1.plugin.d.ts → plugins/influx-v1/services/influx-v1.storage.d.ts} +3 -3
  564. package/dist/{modules/storage/plugins/influx-v1/influx-v1.plugin.js → plugins/influx-v1/services/influx-v1.storage.js} +9 -9
  565. package/dist/plugins/influx-v1/services/influx-v1.storage.js.map +1 -0
  566. package/dist/plugins/influx-v2/dto/update-config.dto.d.ts +8 -0
  567. package/dist/plugins/influx-v2/dto/update-config.dto.js +82 -0
  568. package/dist/plugins/influx-v2/dto/update-config.dto.js.map +1 -0
  569. package/dist/plugins/influx-v2/influx-v2.constants.d.ts +4 -0
  570. package/dist/plugins/influx-v2/influx-v2.constants.js +8 -0
  571. package/dist/plugins/influx-v2/influx-v2.constants.js.map +1 -0
  572. package/dist/plugins/influx-v2/influx-v2.openapi.d.ts +2 -0
  573. package/dist/plugins/influx-v2/influx-v2.openapi.js +7 -0
  574. package/dist/plugins/influx-v2/influx-v2.openapi.js.map +1 -0
  575. package/dist/plugins/influx-v2/influx-v2.plugin.d.ts +15 -0
  576. package/dist/plugins/influx-v2/influx-v2.plugin.js +109 -0
  577. package/dist/plugins/influx-v2/influx-v2.plugin.js.map +1 -0
  578. package/dist/plugins/influx-v2/models/config.model.d.ts +9 -0
  579. package/dist/plugins/influx-v2/models/config.model.js +93 -0
  580. package/dist/plugins/influx-v2/models/config.model.js.map +1 -0
  581. package/dist/plugins/influx-v2/services/influx-v2-managed.service.d.ts +20 -0
  582. package/dist/plugins/influx-v2/services/influx-v2-managed.service.js +132 -0
  583. package/dist/plugins/influx-v2/services/influx-v2-managed.service.js.map +1 -0
  584. package/dist/plugins/influx-v2/services/influx-v2.storage.d.ts +33 -0
  585. package/dist/plugins/influx-v2/services/influx-v2.storage.js +230 -0
  586. package/dist/plugins/influx-v2/services/influx-v2.storage.js.map +1 -0
  587. package/dist/plugins/logger-rotating-file/logger-rotating-file.plugin.js +20 -29
  588. package/dist/plugins/logger-rotating-file/logger-rotating-file.plugin.js.map +1 -1
  589. package/dist/{modules/storage/plugins/memory/memory.update-config.dto.d.ts → plugins/memory-storage/dto/update-config.dto.d.ts} +1 -1
  590. package/dist/{modules/storage/plugins/memory/memory.update-config.dto.js → plugins/memory-storage/dto/update-config.dto.js} +5 -5
  591. package/dist/plugins/memory-storage/dto/update-config.dto.js.map +1 -0
  592. package/dist/{modules/storage/plugins/memory/memory.constants.js → plugins/memory-storage/memory-storage.constants.js} +1 -1
  593. package/dist/plugins/memory-storage/memory-storage.constants.js.map +1 -0
  594. package/dist/{modules/storage/plugins/memory/memory.openapi.d.ts → plugins/memory-storage/memory-storage.openapi.d.ts} +1 -1
  595. package/dist/plugins/memory-storage/memory-storage.openapi.js +7 -0
  596. package/dist/plugins/memory-storage/memory-storage.openapi.js.map +1 -0
  597. package/dist/plugins/memory-storage/memory-storage.plugin.d.ts +15 -0
  598. package/dist/plugins/memory-storage/memory-storage.plugin.js +92 -0
  599. package/dist/plugins/memory-storage/memory-storage.plugin.js.map +1 -0
  600. package/dist/{modules/storage/plugins/memory/memory.config.model.d.ts → plugins/memory-storage/models/config.model.d.ts} +1 -1
  601. package/dist/{modules/storage/plugins/memory/memory.config.model.js → plugins/memory-storage/models/config.model.js} +5 -5
  602. package/dist/plugins/memory-storage/models/config.model.js.map +1 -0
  603. package/dist/{modules/storage/plugins/memory → plugins/memory-storage/services}/in-memory-timeseries.store.d.ts +1 -1
  604. package/dist/{modules/storage/plugins/memory → plugins/memory-storage/services}/in-memory-timeseries.store.js +4 -4
  605. package/dist/plugins/memory-storage/services/in-memory-timeseries.store.js.map +1 -0
  606. package/dist/plugins/memory-storage/services/influxql-parser.js.map +1 -0
  607. package/dist/plugins/memory-storage/services/memory-storage-managed.service.d.ts +14 -0
  608. package/dist/plugins/memory-storage/services/memory-storage-managed.service.js +87 -0
  609. package/dist/plugins/memory-storage/services/memory-storage-managed.service.js.map +1 -0
  610. package/dist/{modules/storage/plugins/memory/memory.plugin.d.ts → plugins/memory-storage/services/memory-storage.storage.d.ts} +3 -3
  611. package/dist/{modules/storage/plugins/memory/memory.plugin.js → plugins/memory-storage/services/memory-storage.storage.js} +8 -8
  612. package/dist/plugins/memory-storage/services/memory-storage.storage.js.map +1 -0
  613. package/dist/plugins/pages-cards/pages-cards.plugin.js +15 -26
  614. package/dist/plugins/pages-cards/pages-cards.plugin.js.map +1 -1
  615. package/dist/plugins/pages-device-detail/pages-device-detail.plugin.js +16 -25
  616. package/dist/plugins/pages-device-detail/pages-device-detail.plugin.js.map +1 -1
  617. package/dist/plugins/pages-tiles/pages-tiles.plugin.js +15 -26
  618. package/dist/plugins/pages-tiles/pages-tiles.plugin.js.map +1 -1
  619. package/dist/plugins/scenes-local/scenes-local.plugin.js +21 -22
  620. package/dist/plugins/scenes-local/scenes-local.plugin.js.map +1 -1
  621. package/dist/plugins/simulator/services/scenario-executor.service.d.ts +5 -5
  622. package/dist/plugins/simulator/services/scenario-executor.service.js +7 -6
  623. package/dist/plugins/simulator/services/scenario-executor.service.js.map +1 -1
  624. package/dist/plugins/simulator/services/simulator-actions.service.js +3 -0
  625. package/dist/plugins/simulator/services/simulator-actions.service.js.map +1 -1
  626. package/dist/plugins/simulator/simulator.plugin.js +49 -58
  627. package/dist/plugins/simulator/simulator.plugin.js.map +1 -1
  628. package/dist/plugins/spaces-home-control/controllers/spaces-domain.controller.d.ts +119 -0
  629. package/dist/plugins/spaces-home-control/controllers/spaces-domain.controller.js +1958 -0
  630. package/dist/plugins/spaces-home-control/controllers/spaces-domain.controller.js.map +1 -0
  631. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/climate-intent.dto.d.ts +1 -1
  632. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/climate-intent.dto.js +24 -24
  633. package/dist/plugins/spaces-home-control/dto/climate-intent.dto.js.map +1 -0
  634. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/climate-role.dto.d.ts +1 -1
  635. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/climate-role.dto.js +4 -4
  636. package/dist/plugins/spaces-home-control/dto/climate-role.dto.js.map +1 -0
  637. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/covers-intent.dto.d.ts +1 -1
  638. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/covers-intent.dto.js +18 -18
  639. package/dist/plugins/spaces-home-control/dto/covers-intent.dto.js.map +1 -0
  640. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/covers-role.dto.d.ts +1 -1
  641. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/covers-role.dto.js +4 -4
  642. package/dist/plugins/spaces-home-control/dto/covers-role.dto.js.map +1 -0
  643. package/dist/plugins/spaces-home-control/dto/create-home-control-space.dto.d.ts +8 -0
  644. package/dist/plugins/spaces-home-control/dto/create-home-control-space.dto.js +85 -0
  645. package/dist/plugins/spaces-home-control/dto/create-home-control-space.dto.js.map +1 -0
  646. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/lighting-intent.dto.d.ts +1 -1
  647. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/lighting-intent.dto.js +34 -34
  648. package/dist/plugins/spaces-home-control/dto/lighting-intent.dto.js.map +1 -0
  649. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/lighting-role.dto.d.ts +1 -1
  650. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/lighting-role.dto.js +4 -4
  651. package/dist/plugins/spaces-home-control/dto/lighting-role.dto.js.map +1 -0
  652. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/media-activity-binding.dto.d.ts +1 -1
  653. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/media-activity-binding.dto.js +4 -4
  654. package/dist/plugins/spaces-home-control/dto/media-activity-binding.dto.js.map +1 -0
  655. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/sensor-role.dto.d.ts +1 -1
  656. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/sensor-role.dto.js +4 -4
  657. package/dist/plugins/spaces-home-control/dto/sensor-role.dto.js.map +1 -0
  658. package/dist/plugins/spaces-home-control/dto/status-widget.dto.js.map +1 -0
  659. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/suggestion.dto.d.ts +2 -1
  660. package/dist/{modules/spaces → plugins/spaces-home-control}/dto/suggestion.dto.js +5 -4
  661. package/dist/plugins/spaces-home-control/dto/suggestion.dto.js.map +1 -0
  662. package/dist/plugins/spaces-home-control/dto/update-config.dto.d.ts +5 -0
  663. package/dist/plugins/spaces-home-control/dto/update-config.dto.js +34 -0
  664. package/dist/plugins/spaces-home-control/dto/update-config.dto.js.map +1 -0
  665. package/dist/plugins/spaces-home-control/dto/update-home-control-space.dto.d.ts +8 -0
  666. package/dist/plugins/spaces-home-control/dto/update-home-control-space.dto.js +85 -0
  667. package/dist/plugins/spaces-home-control/dto/update-home-control-space.dto.js.map +1 -0
  668. package/dist/plugins/spaces-home-control/entities/room-space.entity.d.ts +8 -0
  669. package/dist/plugins/spaces-home-control/entities/room-space.entity.js +91 -0
  670. package/dist/plugins/spaces-home-control/entities/room-space.entity.js.map +1 -0
  671. package/dist/plugins/spaces-home-control/entities/space-active-media-activity.entity.d.ts +11 -0
  672. package/dist/{modules/spaces → plugins/spaces-home-control}/entities/space-active-media-activity.entity.js +23 -30
  673. package/dist/plugins/spaces-home-control/entities/space-active-media-activity.entity.js.map +1 -0
  674. package/dist/plugins/spaces-home-control/entities/space-climate-role.entity.d.ts +13 -0
  675. package/dist/{modules/spaces → plugins/spaces-home-control}/entities/space-climate-role.entity.js +25 -32
  676. package/dist/plugins/spaces-home-control/entities/space-climate-role.entity.js.map +1 -0
  677. package/dist/plugins/spaces-home-control/entities/space-covers-role.entity.d.ts +13 -0
  678. package/dist/{modules/spaces → plugins/spaces-home-control}/entities/space-covers-role.entity.js +27 -34
  679. package/dist/plugins/spaces-home-control/entities/space-covers-role.entity.js.map +1 -0
  680. package/dist/plugins/spaces-home-control/entities/space-lighting-role.entity.d.ts +13 -0
  681. package/dist/{modules/spaces → plugins/spaces-home-control}/entities/space-lighting-role.entity.js +27 -34
  682. package/dist/plugins/spaces-home-control/entities/space-lighting-role.entity.js.map +1 -0
  683. package/dist/plugins/spaces-home-control/entities/space-media-activity-binding.entity.d.ts +15 -0
  684. package/dist/{modules/spaces → plugins/spaces-home-control}/entities/space-media-activity-binding.entity.js +20 -28
  685. package/dist/plugins/spaces-home-control/entities/space-media-activity-binding.entity.js.map +1 -0
  686. package/dist/plugins/spaces-home-control/entities/space-sensor-role.entity.d.ts +13 -0
  687. package/dist/{modules/spaces → plugins/spaces-home-control}/entities/space-sensor-role.entity.js +27 -34
  688. package/dist/plugins/spaces-home-control/entities/space-sensor-role.entity.js.map +1 -0
  689. package/dist/plugins/spaces-home-control/entities/zone-space.entity.d.ts +8 -0
  690. package/dist/plugins/spaces-home-control/entities/zone-space.entity.js +91 -0
  691. package/dist/plugins/spaces-home-control/entities/zone-space.entity.js.map +1 -0
  692. package/dist/{modules/spaces → plugins/spaces-home-control}/listeners/space-activity.listener.d.ts +2 -2
  693. package/dist/{modules/spaces → plugins/spaces-home-control}/listeners/space-activity.listener.js +4 -4
  694. package/dist/plugins/spaces-home-control/listeners/space-activity.listener.js.map +1 -0
  695. package/dist/{modules/spaces → plugins/spaces-home-control}/listeners/space-climate-state.listener.d.ts +1 -1
  696. package/dist/{modules/spaces → plugins/spaces-home-control}/listeners/space-climate-state.listener.js +6 -5
  697. package/dist/plugins/spaces-home-control/listeners/space-climate-state.listener.js.map +1 -0
  698. package/dist/{modules/spaces → plugins/spaces-home-control}/listeners/space-lighting-state.listener.d.ts +1 -1
  699. package/dist/{modules/spaces → plugins/spaces-home-control}/listeners/space-lighting-state.listener.js +6 -5
  700. package/dist/plugins/spaces-home-control/listeners/space-lighting-state.listener.js.map +1 -0
  701. package/dist/{modules/spaces → plugins/spaces-home-control}/listeners/space-sensor-state.listener.d.ts +1 -1
  702. package/dist/{modules/spaces → plugins/spaces-home-control}/listeners/space-sensor-state.listener.js +9 -8
  703. package/dist/plugins/spaces-home-control/listeners/space-sensor-state.listener.js.map +1 -0
  704. package/dist/{modules/spaces → plugins/spaces-home-control}/listeners/websocket-exchange.listener.d.ts +2 -2
  705. package/dist/{modules/spaces → plugins/spaces-home-control}/listeners/websocket-exchange.listener.js +5 -5
  706. package/dist/plugins/spaces-home-control/listeners/websocket-exchange.listener.js.map +1 -0
  707. package/dist/plugins/spaces-home-control/models/config.model.d.ts +5 -0
  708. package/dist/plugins/spaces-home-control/models/config.model.js +49 -0
  709. package/dist/plugins/spaces-home-control/models/config.model.js.map +1 -0
  710. package/dist/{modules/spaces → plugins/spaces-home-control}/models/derived-media-endpoint.model.d.ts +2 -2
  711. package/dist/{modules/spaces → plugins/spaces-home-control}/models/derived-media-endpoint.model.js +4 -4
  712. package/dist/plugins/spaces-home-control/models/derived-media-endpoint.model.js.map +1 -0
  713. package/dist/{modules/spaces → plugins/spaces-home-control}/models/media-activity-binding.model.d.ts +1 -1
  714. package/dist/{modules/spaces → plugins/spaces-home-control}/models/media-activity-binding.model.js +1 -1
  715. package/dist/plugins/spaces-home-control/models/media-activity-binding.model.js.map +1 -0
  716. package/dist/{modules/spaces → plugins/spaces-home-control}/models/media-activity.model.d.ts +2 -2
  717. package/dist/{modules/spaces → plugins/spaces-home-control}/models/media-activity.model.js +6 -6
  718. package/dist/plugins/spaces-home-control/models/media-activity.model.js.map +1 -0
  719. package/dist/{modules/spaces → plugins/spaces-home-control}/models/media-routing.model.d.ts +2 -2
  720. package/dist/{modules/spaces → plugins/spaces-home-control}/models/media-routing.model.js +4 -4
  721. package/dist/plugins/spaces-home-control/models/media-routing.model.js.map +1 -0
  722. package/dist/plugins/spaces-home-control/models/spaces-response.model.d.ts +524 -0
  723. package/dist/plugins/spaces-home-control/models/spaces-response.model.js +4145 -0
  724. package/dist/plugins/spaces-home-control/models/spaces-response.model.js.map +1 -0
  725. package/dist/{modules/spaces → plugins/spaces-home-control}/services/__fixtures__/media-scenario-templates.d.ts +1 -1
  726. package/dist/{modules/spaces → plugins/spaces-home-control}/services/__fixtures__/media-scenario-templates.js +3 -3
  727. package/dist/plugins/spaces-home-control/services/__fixtures__/media-scenario-templates.js.map +1 -0
  728. package/dist/{modules/spaces → plugins/spaces-home-control}/services/__fixtures__/media-test-harness.d.ts +1 -1
  729. package/dist/plugins/spaces-home-control/services/__fixtures__/media-test-harness.js.map +1 -0
  730. package/dist/{modules/spaces → plugins/spaces-home-control}/services/climate-intent.service.d.ts +5 -5
  731. package/dist/{modules/spaces → plugins/spaces-home-control}/services/climate-intent.service.js +35 -34
  732. package/dist/plugins/spaces-home-control/services/climate-intent.service.js.map +1 -0
  733. package/dist/{modules/spaces → plugins/spaces-home-control}/services/covers-intent.service.d.ts +5 -5
  734. package/dist/{modules/spaces → plugins/spaces-home-control}/services/covers-intent.service.js +48 -47
  735. package/dist/plugins/spaces-home-control/services/covers-intent.service.js.map +1 -0
  736. package/dist/{modules/spaces → plugins/spaces-home-control}/services/derived-media-endpoint.service.d.ts +1 -1
  737. package/dist/{modules/spaces → plugins/spaces-home-control}/services/derived-media-endpoint.service.js +28 -27
  738. package/dist/plugins/spaces-home-control/services/derived-media-endpoint.service.js.map +1 -0
  739. package/dist/plugins/spaces-home-control/services/home-control-home-page.resolver.d.ts +4 -0
  740. package/dist/plugins/spaces-home-control/services/home-control-home-page.resolver.js +20 -0
  741. package/dist/plugins/spaces-home-control/services/home-control-home-page.resolver.js.map +1 -0
  742. package/dist/plugins/spaces-home-control/services/home-control-spaces.service.d.ts +24 -0
  743. package/dist/plugins/spaces-home-control/services/home-control-spaces.service.js +182 -0
  744. package/dist/plugins/spaces-home-control/services/home-control-spaces.service.js.map +1 -0
  745. package/dist/{modules/spaces → plugins/spaces-home-control}/services/lighting-intent.service.d.ts +6 -6
  746. package/dist/{modules/spaces → plugins/spaces-home-control}/services/lighting-intent.service.js +68 -67
  747. package/dist/plugins/spaces-home-control/services/lighting-intent.service.js.map +1 -0
  748. package/dist/{modules/spaces → plugins/spaces-home-control}/services/media-capability.service.d.ts +1 -1
  749. package/dist/{modules/spaces → plugins/spaces-home-control}/services/media-capability.service.js +20 -19
  750. package/dist/plugins/spaces-home-control/services/media-capability.service.js.map +1 -0
  751. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-climate-role.service.d.ts +4 -4
  752. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-climate-role.service.js +18 -17
  753. package/dist/plugins/spaces-home-control/services/space-climate-role.service.js.map +1 -0
  754. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-climate-state.service.d.ts +5 -5
  755. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-climate-state.service.js +32 -31
  756. package/dist/plugins/spaces-home-control/services/space-climate-state.service.js.map +1 -0
  757. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-context-snapshot.service.d.ts +2 -2
  758. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-context-snapshot.service.js +7 -6
  759. package/dist/plugins/spaces-home-control/services/space-context-snapshot.service.js.map +1 -0
  760. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-covers-role.service.d.ts +3 -3
  761. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-covers-role.service.js +28 -25
  762. package/dist/plugins/spaces-home-control/services/space-covers-role.service.js.map +1 -0
  763. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-covers-state.service.d.ts +4 -4
  764. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-covers-state.service.js +9 -8
  765. package/dist/plugins/spaces-home-control/services/space-covers-state.service.js.map +1 -0
  766. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-intent-base.service.d.ts +1 -1
  767. package/dist/plugins/spaces-home-control/services/space-intent-base.service.js.map +1 -0
  768. package/dist/plugins/spaces-home-control/services/space-intent.service.js.map +1 -0
  769. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-lighting-role.service.d.ts +3 -3
  770. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-lighting-role.service.js +25 -22
  771. package/dist/plugins/spaces-home-control/services/space-lighting-role.service.js.map +1 -0
  772. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-lighting-state.service.d.ts +3 -3
  773. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-lighting-state.service.js +20 -19
  774. package/dist/plugins/spaces-home-control/services/space-lighting-state.service.js.map +1 -0
  775. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-lighting-tool.service.d.ts +4 -4
  776. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-lighting-tool.service.js +8 -7
  777. package/dist/plugins/spaces-home-control/services/space-lighting-tool.service.js.map +1 -0
  778. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-media-activity-binding.service.d.ts +2 -2
  779. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-media-activity-binding.service.js +31 -30
  780. package/dist/plugins/spaces-home-control/services/space-media-activity-binding.service.js.map +1 -0
  781. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-media-activity.service.d.ts +3 -3
  782. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-media-activity.service.js +38 -37
  783. package/dist/plugins/spaces-home-control/services/space-media-activity.service.js.map +1 -0
  784. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-sensor-role.service.d.ts +4 -4
  785. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-sensor-role.service.js +24 -23
  786. package/dist/plugins/spaces-home-control/services/space-sensor-role.service.js.map +1 -0
  787. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-sensor-state.service.d.ts +3 -3
  788. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-sensor-state.service.js +19 -18
  789. package/dist/plugins/spaces-home-control/services/space-sensor-state.service.js.map +1 -0
  790. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-suggestion-heartbeat.service.d.ts +2 -2
  791. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-suggestion-heartbeat.service.js +10 -9
  792. package/dist/plugins/spaces-home-control/services/space-suggestion-heartbeat.service.js.map +1 -0
  793. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-suggestion.service.d.ts +4 -3
  794. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-suggestion.service.js +8 -7
  795. package/dist/plugins/spaces-home-control/services/space-suggestion.service.js.map +1 -0
  796. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-undo-history.service.d.ts +3 -3
  797. package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-undo-history.service.js +5 -5
  798. package/dist/plugins/spaces-home-control/services/space-undo-history.service.js.map +1 -0
  799. package/dist/{modules/spaces → plugins/spaces-home-control}/services/spaces-seeder.service.d.ts +2 -2
  800. package/dist/{modules/spaces → plugins/spaces-home-control}/services/spaces-seeder.service.js +5 -5
  801. package/dist/plugins/spaces-home-control/services/spaces-seeder.service.js.map +1 -0
  802. package/dist/plugins/spaces-home-control/spaces-home-control.constants.d.ts +297 -0
  803. package/dist/plugins/spaces-home-control/spaces-home-control.constants.js +1460 -0
  804. package/dist/plugins/spaces-home-control/spaces-home-control.constants.js.map +1 -0
  805. package/dist/plugins/spaces-home-control/spaces-home-control.openapi.d.ts +2 -0
  806. package/dist/plugins/spaces-home-control/spaces-home-control.openapi.js +155 -0
  807. package/dist/plugins/spaces-home-control/spaces-home-control.openapi.js.map +1 -0
  808. package/dist/plugins/spaces-home-control/spaces-home-control.plugin.d.ts +29 -0
  809. package/dist/plugins/spaces-home-control/spaces-home-control.plugin.js +334 -0
  810. package/dist/plugins/spaces-home-control/spaces-home-control.plugin.js.map +1 -0
  811. package/dist/plugins/spaces-home-control/spec/index.js.map +1 -0
  812. package/dist/{modules/spaces → plugins/spaces-home-control}/spec/intent-spec-loader.service.d.ts +1 -1
  813. package/dist/{modules/spaces → plugins/spaces-home-control}/spec/intent-spec-loader.service.js +1 -1
  814. package/dist/plugins/spaces-home-control/spec/intent-spec-loader.service.js.map +1 -0
  815. package/dist/plugins/spaces-home-control/spec/intent-spec.types.js.map +1 -0
  816. package/dist/{modules/spaces → plugins/spaces-home-control}/validators/at-least-one-setpoint.validator.js +2 -2
  817. package/dist/plugins/spaces-home-control/validators/at-least-one-setpoint.validator.js.map +1 -0
  818. package/dist/plugins/spaces-home-control/validators/setpoint-order-constraint.validator.js.map +1 -0
  819. package/dist/{modules/spaces → plugins/spaces-home-control}/validators/space-category-constraint.validator.js +1 -1
  820. package/dist/plugins/spaces-home-control/validators/space-category-constraint.validator.js.map +1 -0
  821. package/dist/plugins/spaces-signage-info-panel/controllers/signage-announcements.controller.d.ts +18 -0
  822. package/dist/plugins/spaces-signage-info-panel/controllers/signage-announcements.controller.js +219 -0
  823. package/dist/plugins/spaces-signage-info-panel/controllers/signage-announcements.controller.js.map +1 -0
  824. package/dist/plugins/spaces-signage-info-panel/dto/create-announcement.dto.d.ts +13 -0
  825. package/dist/plugins/spaces-signage-info-panel/dto/create-announcement.dto.js +143 -0
  826. package/dist/plugins/spaces-signage-info-panel/dto/create-announcement.dto.js.map +1 -0
  827. package/dist/plugins/spaces-signage-info-panel/dto/create-signage-info-panel-space.dto.d.ts +13 -0
  828. package/dist/plugins/spaces-signage-info-panel/dto/create-signage-info-panel-space.dto.js +130 -0
  829. package/dist/plugins/spaces-signage-info-panel/dto/create-signage-info-panel-space.dto.js.map +1 -0
  830. package/dist/plugins/spaces-signage-info-panel/dto/reorder-announcements.dto.d.ts +10 -0
  831. package/dist/plugins/spaces-signage-info-panel/dto/reorder-announcements.dto.js +78 -0
  832. package/dist/plugins/spaces-signage-info-panel/dto/reorder-announcements.dto.js.map +1 -0
  833. package/dist/plugins/spaces-signage-info-panel/dto/update-announcement.dto.d.ts +12 -0
  834. package/dist/plugins/spaces-signage-info-panel/dto/update-announcement.dto.js +134 -0
  835. package/dist/plugins/spaces-signage-info-panel/dto/update-announcement.dto.js.map +1 -0
  836. package/dist/plugins/spaces-signage-info-panel/dto/update-config.dto.d.ts +5 -0
  837. package/dist/plugins/spaces-signage-info-panel/dto/update-config.dto.js +34 -0
  838. package/dist/plugins/spaces-signage-info-panel/dto/update-config.dto.js.map +1 -0
  839. package/dist/plugins/spaces-signage-info-panel/dto/update-signage-info-panel-space.dto.d.ts +13 -0
  840. package/dist/plugins/spaces-signage-info-panel/dto/update-signage-info-panel-space.dto.js +130 -0
  841. package/dist/plugins/spaces-signage-info-panel/dto/update-signage-info-panel-space.dto.js.map +1 -0
  842. package/dist/plugins/spaces-signage-info-panel/entities/signage-announcement.entity.d.ts +13 -0
  843. package/dist/plugins/spaces-signage-info-panel/entities/signage-announcement.entity.js +161 -0
  844. package/dist/plugins/spaces-signage-info-panel/entities/signage-announcement.entity.js.map +1 -0
  845. package/dist/plugins/spaces-signage-info-panel/entities/signage-info-panel-space.entity.d.ts +13 -0
  846. package/dist/plugins/spaces-signage-info-panel/entities/signage-info-panel-space.entity.js +147 -0
  847. package/dist/plugins/spaces-signage-info-panel/entities/signage-info-panel-space.entity.js.map +1 -0
  848. package/dist/plugins/spaces-signage-info-panel/models/config.model.d.ts +5 -0
  849. package/dist/plugins/spaces-signage-info-panel/models/config.model.js +49 -0
  850. package/dist/plugins/spaces-signage-info-panel/models/config.model.js.map +1 -0
  851. package/dist/plugins/spaces-signage-info-panel/models/signage-announcement-response.model.d.ts +8 -0
  852. package/dist/plugins/spaces-signage-info-panel/models/signage-announcement-response.model.js +46 -0
  853. package/dist/plugins/spaces-signage-info-panel/models/signage-announcement-response.model.js.map +1 -0
  854. package/dist/plugins/spaces-signage-info-panel/services/signage-announcements.service.d.ts +28 -0
  855. package/dist/plugins/spaces-signage-info-panel/services/signage-announcements.service.js +181 -0
  856. package/dist/plugins/spaces-signage-info-panel/services/signage-announcements.service.js.map +1 -0
  857. package/dist/plugins/spaces-signage-info-panel/services/signage-home-page.resolver.d.ts +4 -0
  858. package/dist/plugins/spaces-signage-info-panel/services/signage-home-page.resolver.js +20 -0
  859. package/dist/plugins/spaces-signage-info-panel/services/signage-home-page.resolver.js.map +1 -0
  860. package/dist/plugins/spaces-signage-info-panel/services/signage-info-panel-reset.service.d.ts +14 -0
  861. package/dist/plugins/spaces-signage-info-panel/services/signage-info-panel-reset.service.js +59 -0
  862. package/dist/plugins/spaces-signage-info-panel/services/signage-info-panel-reset.service.js.map +1 -0
  863. package/dist/plugins/spaces-signage-info-panel/spaces-signage-info-panel.constants.d.ts +17 -0
  864. package/dist/plugins/spaces-signage-info-panel/spaces-signage-info-panel.constants.js +23 -0
  865. package/dist/plugins/spaces-signage-info-panel/spaces-signage-info-panel.constants.js.map +1 -0
  866. package/dist/plugins/spaces-signage-info-panel/spaces-signage-info-panel.exceptions.d.ts +9 -0
  867. package/dist/plugins/spaces-signage-info-panel/spaces-signage-info-panel.exceptions.js +25 -0
  868. package/dist/plugins/spaces-signage-info-panel/spaces-signage-info-panel.exceptions.js.map +1 -0
  869. package/dist/plugins/spaces-signage-info-panel/spaces-signage-info-panel.openapi.d.ts +2 -0
  870. package/dist/plugins/spaces-signage-info-panel/spaces-signage-info-panel.openapi.js +31 -0
  871. package/dist/plugins/spaces-signage-info-panel/spaces-signage-info-panel.openapi.js.map +1 -0
  872. package/dist/plugins/spaces-signage-info-panel/spaces-signage-info-panel.plugin.d.ts +23 -0
  873. package/dist/plugins/spaces-signage-info-panel/spaces-signage-info-panel.plugin.js +159 -0
  874. package/dist/plugins/spaces-signage-info-panel/spaces-signage-info-panel.plugin.js.map +1 -0
  875. package/dist/plugins/spaces-synthetic-entry/dto/create-entry-space.dto.d.ts +5 -0
  876. package/dist/plugins/spaces-synthetic-entry/dto/create-entry-space.dto.js +31 -0
  877. package/dist/plugins/spaces-synthetic-entry/dto/create-entry-space.dto.js.map +1 -0
  878. package/dist/plugins/spaces-synthetic-entry/dto/update-config.dto.d.ts +5 -0
  879. package/dist/plugins/spaces-synthetic-entry/dto/update-config.dto.js +34 -0
  880. package/dist/plugins/spaces-synthetic-entry/dto/update-config.dto.js.map +1 -0
  881. package/dist/plugins/spaces-synthetic-entry/dto/update-entry-space.dto.d.ts +5 -0
  882. package/dist/plugins/spaces-synthetic-entry/dto/update-entry-space.dto.js +31 -0
  883. package/dist/plugins/spaces-synthetic-entry/dto/update-entry-space.dto.js.map +1 -0
  884. package/dist/plugins/spaces-synthetic-entry/entities/entry-space.entity.d.ts +5 -0
  885. package/dist/plugins/spaces-synthetic-entry/entities/entry-space.entity.js +39 -0
  886. package/dist/plugins/spaces-synthetic-entry/entities/entry-space.entity.js.map +1 -0
  887. package/dist/plugins/spaces-synthetic-entry/models/config.model.d.ts +5 -0
  888. package/dist/plugins/spaces-synthetic-entry/models/config.model.js +49 -0
  889. package/dist/plugins/spaces-synthetic-entry/models/config.model.js.map +1 -0
  890. package/dist/plugins/spaces-synthetic-entry/spaces-synthetic-entry.constants.d.ts +7 -0
  891. package/dist/plugins/spaces-synthetic-entry/spaces-synthetic-entry.constants.js +11 -0
  892. package/dist/plugins/spaces-synthetic-entry/spaces-synthetic-entry.constants.js.map +1 -0
  893. package/dist/plugins/spaces-synthetic-entry/spaces-synthetic-entry.openapi.d.ts +2 -0
  894. package/dist/plugins/spaces-synthetic-entry/spaces-synthetic-entry.openapi.js +16 -0
  895. package/dist/plugins/spaces-synthetic-entry/spaces-synthetic-entry.openapi.js.map +1 -0
  896. package/dist/plugins/spaces-synthetic-entry/spaces-synthetic-entry.plugin.d.ts +15 -0
  897. package/dist/plugins/spaces-synthetic-entry/spaces-synthetic-entry.plugin.js +124 -0
  898. package/dist/plugins/spaces-synthetic-entry/spaces-synthetic-entry.plugin.js.map +1 -0
  899. package/dist/plugins/spaces-synthetic-master/dto/create-master-space.dto.d.ts +5 -0
  900. package/dist/plugins/spaces-synthetic-master/dto/create-master-space.dto.js +31 -0
  901. package/dist/plugins/spaces-synthetic-master/dto/create-master-space.dto.js.map +1 -0
  902. package/dist/plugins/spaces-synthetic-master/dto/update-config.dto.d.ts +5 -0
  903. package/dist/plugins/spaces-synthetic-master/dto/update-config.dto.js +34 -0
  904. package/dist/plugins/spaces-synthetic-master/dto/update-config.dto.js.map +1 -0
  905. package/dist/plugins/spaces-synthetic-master/dto/update-master-space.dto.d.ts +5 -0
  906. package/dist/plugins/spaces-synthetic-master/dto/update-master-space.dto.js +31 -0
  907. package/dist/plugins/spaces-synthetic-master/dto/update-master-space.dto.js.map +1 -0
  908. package/dist/plugins/spaces-synthetic-master/entities/master-space.entity.d.ts +5 -0
  909. package/dist/plugins/spaces-synthetic-master/entities/master-space.entity.js +39 -0
  910. package/dist/plugins/spaces-synthetic-master/entities/master-space.entity.js.map +1 -0
  911. package/dist/plugins/spaces-synthetic-master/models/config.model.d.ts +5 -0
  912. package/dist/plugins/spaces-synthetic-master/models/config.model.js +49 -0
  913. package/dist/plugins/spaces-synthetic-master/models/config.model.js.map +1 -0
  914. package/dist/plugins/spaces-synthetic-master/spaces-synthetic-master.constants.d.ts +7 -0
  915. package/dist/plugins/spaces-synthetic-master/spaces-synthetic-master.constants.js +11 -0
  916. package/dist/plugins/spaces-synthetic-master/spaces-synthetic-master.constants.js.map +1 -0
  917. package/dist/plugins/spaces-synthetic-master/spaces-synthetic-master.openapi.d.ts +2 -0
  918. package/dist/plugins/spaces-synthetic-master/spaces-synthetic-master.openapi.js +16 -0
  919. package/dist/plugins/spaces-synthetic-master/spaces-synthetic-master.openapi.js.map +1 -0
  920. package/dist/plugins/spaces-synthetic-master/spaces-synthetic-master.plugin.d.ts +15 -0
  921. package/dist/plugins/spaces-synthetic-master/spaces-synthetic-master.plugin.js +124 -0
  922. package/dist/plugins/spaces-synthetic-master/spaces-synthetic-master.plugin.js.map +1 -0
  923. package/dist/plugins/tiles-device-preview/tiles-device-preview.plugin.js +16 -22
  924. package/dist/plugins/tiles-device-preview/tiles-device-preview.plugin.js.map +1 -1
  925. package/dist/plugins/tiles-scene/tiles-scene.plugin.js +15 -21
  926. package/dist/plugins/tiles-scene/tiles-scene.plugin.js.map +1 -1
  927. package/dist/plugins/tiles-time/tiles-time.plugin.js +13 -19
  928. package/dist/plugins/tiles-time/tiles-time.plugin.js.map +1 -1
  929. package/dist/plugins/tiles-weather/tiles-weather.plugin.js +16 -19
  930. package/dist/plugins/tiles-weather/tiles-weather.plugin.js.map +1 -1
  931. package/dist/plugins/weather-open-meteo/weather-open-meteo.plugin.js +32 -21
  932. package/dist/plugins/weather-open-meteo/weather-open-meteo.plugin.js.map +1 -1
  933. package/dist/plugins/weather-openweathermap/weather-openweathermap.plugin.js +22 -23
  934. package/dist/plugins/weather-openweathermap/weather-openweathermap.plugin.js.map +1 -1
  935. package/dist/plugins/weather-openweathermap-onecall/weather-openweathermap-onecall.plugin.js +27 -23
  936. package/dist/plugins/weather-openweathermap-onecall/weather-openweathermap-onecall.plugin.js.map +1 -1
  937. package/dist/tsconfig.build.tsbuildinfo +1 -1
  938. package/package.json +10 -6
  939. package/dist/modules/spaces/dto/climate-intent.dto.js.map +0 -1
  940. package/dist/modules/spaces/dto/climate-role.dto.js.map +0 -1
  941. package/dist/modules/spaces/dto/covers-intent.dto.js.map +0 -1
  942. package/dist/modules/spaces/dto/covers-role.dto.js.map +0 -1
  943. package/dist/modules/spaces/dto/lighting-intent.dto.js.map +0 -1
  944. package/dist/modules/spaces/dto/lighting-role.dto.js.map +0 -1
  945. package/dist/modules/spaces/dto/media-activity-binding.dto.js.map +0 -1
  946. package/dist/modules/spaces/dto/sensor-role.dto.js.map +0 -1
  947. package/dist/modules/spaces/dto/status-widget.dto.js.map +0 -1
  948. package/dist/modules/spaces/dto/suggestion.dto.js.map +0 -1
  949. package/dist/modules/spaces/entities/space-active-media-activity.entity.d.ts +0 -12
  950. package/dist/modules/spaces/entities/space-active-media-activity.entity.js.map +0 -1
  951. package/dist/modules/spaces/entities/space-climate-role.entity.d.ts +0 -14
  952. package/dist/modules/spaces/entities/space-climate-role.entity.js.map +0 -1
  953. package/dist/modules/spaces/entities/space-covers-role.entity.d.ts +0 -14
  954. package/dist/modules/spaces/entities/space-covers-role.entity.js.map +0 -1
  955. package/dist/modules/spaces/entities/space-lighting-role.entity.d.ts +0 -14
  956. package/dist/modules/spaces/entities/space-lighting-role.entity.js.map +0 -1
  957. package/dist/modules/spaces/entities/space-media-activity-binding.entity.d.ts +0 -16
  958. package/dist/modules/spaces/entities/space-media-activity-binding.entity.js.map +0 -1
  959. package/dist/modules/spaces/entities/space-sensor-role.entity.d.ts +0 -14
  960. package/dist/modules/spaces/entities/space-sensor-role.entity.js.map +0 -1
  961. package/dist/modules/spaces/listeners/space-activity.listener.js.map +0 -1
  962. package/dist/modules/spaces/listeners/space-climate-state.listener.js.map +0 -1
  963. package/dist/modules/spaces/listeners/space-lighting-state.listener.js.map +0 -1
  964. package/dist/modules/spaces/listeners/space-sensor-state.listener.js.map +0 -1
  965. package/dist/modules/spaces/listeners/websocket-exchange.listener.js.map +0 -1
  966. package/dist/modules/spaces/models/derived-media-endpoint.model.js.map +0 -1
  967. package/dist/modules/spaces/models/media-activity-binding.model.js.map +0 -1
  968. package/dist/modules/spaces/models/media-activity.model.js.map +0 -1
  969. package/dist/modules/spaces/models/media-routing.model.js.map +0 -1
  970. package/dist/modules/spaces/services/__fixtures__/media-scenario-templates.js.map +0 -1
  971. package/dist/modules/spaces/services/__fixtures__/media-test-harness.js.map +0 -1
  972. package/dist/modules/spaces/services/climate-intent.service.js.map +0 -1
  973. package/dist/modules/spaces/services/covers-intent.service.js.map +0 -1
  974. package/dist/modules/spaces/services/derived-media-endpoint.service.js.map +0 -1
  975. package/dist/modules/spaces/services/lighting-intent.service.js.map +0 -1
  976. package/dist/modules/spaces/services/media-capability.service.js.map +0 -1
  977. package/dist/modules/spaces/services/space-climate-role.service.js.map +0 -1
  978. package/dist/modules/spaces/services/space-climate-state.service.js.map +0 -1
  979. package/dist/modules/spaces/services/space-context-snapshot.service.js.map +0 -1
  980. package/dist/modules/spaces/services/space-covers-role.service.js.map +0 -1
  981. package/dist/modules/spaces/services/space-covers-state.service.js.map +0 -1
  982. package/dist/modules/spaces/services/space-intent-base.service.js.map +0 -1
  983. package/dist/modules/spaces/services/space-intent.service.js.map +0 -1
  984. package/dist/modules/spaces/services/space-lighting-role.service.js.map +0 -1
  985. package/dist/modules/spaces/services/space-lighting-state.service.js.map +0 -1
  986. package/dist/modules/spaces/services/space-lighting-tool.service.js.map +0 -1
  987. package/dist/modules/spaces/services/space-media-activity-binding.service.js.map +0 -1
  988. package/dist/modules/spaces/services/space-media-activity.service.js.map +0 -1
  989. package/dist/modules/spaces/services/space-sensor-role.service.js.map +0 -1
  990. package/dist/modules/spaces/services/space-sensor-state.service.js.map +0 -1
  991. package/dist/modules/spaces/services/space-suggestion-heartbeat.service.js.map +0 -1
  992. package/dist/modules/spaces/services/space-suggestion.service.js.map +0 -1
  993. package/dist/modules/spaces/services/space-undo-history.service.js.map +0 -1
  994. package/dist/modules/spaces/services/spaces-seeder.service.js.map +0 -1
  995. package/dist/modules/spaces/spec/definitions/climate-intents.yaml +0 -94
  996. package/dist/modules/spaces/spec/definitions/covers-modes.yaml +0 -83
  997. package/dist/modules/spaces/spec/definitions/enums.yaml +0 -119
  998. package/dist/modules/spaces/spec/definitions/lighting-intents.yaml +0 -181
  999. package/dist/modules/spaces/spec/definitions/lighting-modes.yaml +0 -119
  1000. package/dist/modules/spaces/spec/definitions/suggestions.yaml +0 -47
  1001. package/dist/modules/spaces/spec/index.js.map +0 -1
  1002. package/dist/modules/spaces/spec/intent-spec-loader.service.js.map +0 -1
  1003. package/dist/modules/spaces/spec/intent-spec.types.js.map +0 -1
  1004. package/dist/modules/spaces/validators/at-least-one-setpoint.validator.js.map +0 -1
  1005. package/dist/modules/spaces/validators/setpoint-order-constraint.validator.js.map +0 -1
  1006. package/dist/modules/spaces/validators/space-category-constraint.validator.js.map +0 -1
  1007. package/dist/modules/storage/plugins/influx-v1/influx-v1.config.model.js.map +0 -1
  1008. package/dist/modules/storage/plugins/influx-v1/influx-v1.constants.js.map +0 -1
  1009. package/dist/modules/storage/plugins/influx-v1/influx-v1.module.d.ts +0 -17
  1010. package/dist/modules/storage/plugins/influx-v1/influx-v1.module.js +0 -94
  1011. package/dist/modules/storage/plugins/influx-v1/influx-v1.module.js.map +0 -1
  1012. package/dist/modules/storage/plugins/influx-v1/influx-v1.openapi.js +0 -7
  1013. package/dist/modules/storage/plugins/influx-v1/influx-v1.openapi.js.map +0 -1
  1014. package/dist/modules/storage/plugins/influx-v1/influx-v1.plugin.js.map +0 -1
  1015. package/dist/modules/storage/plugins/influx-v1/influx-v1.update-config.dto.js.map +0 -1
  1016. package/dist/modules/storage/plugins/memory/in-memory-timeseries.store.js.map +0 -1
  1017. package/dist/modules/storage/plugins/memory/influxql-parser.js.map +0 -1
  1018. package/dist/modules/storage/plugins/memory/memory.config.model.js.map +0 -1
  1019. package/dist/modules/storage/plugins/memory/memory.constants.js.map +0 -1
  1020. package/dist/modules/storage/plugins/memory/memory.module.d.ts +0 -13
  1021. package/dist/modules/storage/plugins/memory/memory.module.js +0 -75
  1022. package/dist/modules/storage/plugins/memory/memory.module.js.map +0 -1
  1023. package/dist/modules/storage/plugins/memory/memory.openapi.js +0 -7
  1024. package/dist/modules/storage/plugins/memory/memory.openapi.js.map +0 -1
  1025. package/dist/modules/storage/plugins/memory/memory.plugin.js.map +0 -1
  1026. package/dist/modules/storage/plugins/memory/memory.update-config.dto.js.map +0 -1
  1027. /package/dist/{modules/storage/plugins → plugins}/influx-v1/influx-v1.constants.d.ts +0 -0
  1028. /package/dist/{modules/storage/plugins → plugins}/influx-v1/influx-v1.constants.js +0 -0
  1029. /package/dist/{modules/storage/plugins/memory/memory.constants.d.ts → plugins/memory-storage/memory-storage.constants.d.ts} +0 -0
  1030. /package/dist/{modules/storage/plugins/memory → plugins/memory-storage/services}/influxql-parser.d.ts +0 -0
  1031. /package/dist/{modules/storage/plugins/memory → plugins/memory-storage/services}/influxql-parser.js +0 -0
  1032. /package/dist/{modules/spaces → plugins/spaces-home-control}/dto/status-widget.dto.d.ts +0 -0
  1033. /package/dist/{modules/spaces → plugins/spaces-home-control}/dto/status-widget.dto.js +0 -0
  1034. /package/dist/{modules/spaces → plugins/spaces-home-control}/services/__fixtures__/media-test-harness.js +0 -0
  1035. /package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-intent-base.service.js +0 -0
  1036. /package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-intent.service.d.ts +0 -0
  1037. /package/dist/{modules/spaces → plugins/spaces-home-control}/services/space-intent.service.js +0 -0
  1038. /package/dist/{modules/spaces → plugins/spaces-home-control}/spec/index.d.ts +0 -0
  1039. /package/dist/{modules/spaces → plugins/spaces-home-control}/spec/index.js +0 -0
  1040. /package/dist/{modules/spaces → plugins/spaces-home-control}/spec/intent-spec.types.d.ts +0 -0
  1041. /package/dist/{modules/spaces → plugins/spaces-home-control}/spec/intent-spec.types.js +0 -0
  1042. /package/dist/{modules/spaces → plugins/spaces-home-control}/validators/at-least-one-setpoint.validator.d.ts +0 -0
  1043. /package/dist/{modules/spaces → plugins/spaces-home-control}/validators/setpoint-order-constraint.validator.d.ts +0 -0
  1044. /package/dist/{modules/spaces → plugins/spaces-home-control}/validators/setpoint-order-constraint.validator.js +0 -0
  1045. /package/dist/{modules/spaces → plugins/spaces-home-control}/validators/space-category-constraint.validator.d.ts +0 -0
@@ -0,0 +1,4145 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var RoleCoversStateDataModel_1, CoversStateDataModel_1, RoleAggregatedStateDataModel_1, OtherLightsStateDataModel_1, RolesStateMapDataModel_1, LightingStateDataModel_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.LightStateSnapshotDataModel = exports.IntentCatalogResponseModel = exports.IntentCatalogDataModel = exports.CoversModeOrchestrationDataModel = exports.CoversRolePositionRuleDataModel = exports.LightingModeOrchestrationDataModel = exports.LightingRoleBrightnessRuleDataModel = exports.LightingRoleMetaDataModel = exports.QuickActionDataModel = exports.IntentCategoryDataModel = exports.IntentTypeDataModel = exports.IntentParamDataModel = exports.IntentEnumValueDataModel = exports.SuggestionFeedbackResponseModel = exports.SuggestionFeedbackResultDataModel = exports.SuggestionResponseModel = exports.SuggestionDataModel = exports.BulkCoversRolesResponseModel = exports.BulkCoversRolesResultDataModel = exports.BulkCoversRoleResultItemModel = exports.CoversRoleResponseModel = exports.CoversTargetsResponseModel = exports.CoversTargetDataModel = exports.CoversIntentResponseModel = exports.CoversIntentResultDataModel = exports.CoversStateResponseModel = exports.CoversStateDataModel = exports.RoleCoversStateDataModel = exports.BulkClimateRolesResponseModel = exports.BulkClimateRolesResultDataModel = exports.BulkClimateRoleResultItemModel = exports.ClimateRolesResponseModel = exports.ClimateRoleResponseModel = exports.ClimateTargetsResponseModel = exports.ClimateTargetDataModel = exports.BulkLightingRolesResponseModel = exports.BulkLightingRolesResultDataModel = exports.BulkLightingRoleResultItemModel = exports.LightingRolesResponseModel = exports.LightingRoleResponseModel = exports.LightTargetsResponseModel = exports.LightTargetDataModel = exports.ClimateIntentResponseModel = exports.ClimateIntentResultDataModel = exports.ClimateStateResponseModel = exports.ClimateStateDataModel = exports.LightingIntentResponseModel = exports.LightingIntentResultDataModel = exports.ProposedSpacesResponseModel = exports.ProposedSpaceDataModel = void 0;
14
+ exports.BulkSensorRolesResponseModel = exports.BulkSensorRolesResultDataModel = exports.BulkSensorRoleResultItemModel = exports.SensorRoleResponseModel = exports.SensorTargetsResponseModel = exports.SensorTargetDataModel = exports.SensorStateResponseModel = exports.SensorStateDataModel = exports.SafetyAlertDataModel = exports.EnvironmentSummaryDataModel = exports.SensorRoleReadingsDataModel = exports.SensorReadingDataModel = exports.SensorAdditionalReadingDataModel = exports.LightingStateResponseModel = exports.LightingStateDataModel = exports.RolesStateMapDataModel = exports.OtherLightsStateDataModel = exports.RoleAggregatedStateDataModel = exports.RoleLastIntentDataModel = exports.UndoResultResponseModel = exports.UndoResultDataModel = exports.UndoStateResponseModel = exports.UndoStateDataModel = exports.ContextSnapshotResponseModel = exports.ContextSnapshotDataModel = exports.LightingContextDataModel = exports.LightingSummaryDataModel = void 0;
15
+ const class_transformer_1 = require("class-transformer");
16
+ const swagger_1 = require("@nestjs/swagger");
17
+ const api_response_model_1 = require("../../../modules/api/models/api-response.model");
18
+ const devices_constants_1 = require("../../../modules/devices/devices.constants");
19
+ const spaces_constants_1 = require("../../../modules/spaces/spaces.constants");
20
+ const space_climate_role_entity_1 = require("../entities/space-climate-role.entity");
21
+ const space_covers_role_entity_1 = require("../entities/space-covers-role.entity");
22
+ const space_lighting_role_entity_1 = require("../entities/space-lighting-role.entity");
23
+ const space_sensor_role_entity_1 = require("../entities/space-sensor-role.entity");
24
+ const spaces_home_control_constants_1 = require("../spaces-home-control.constants");
25
+ let ProposedSpaceDataModel = class ProposedSpaceDataModel {
26
+ };
27
+ exports.ProposedSpaceDataModel = ProposedSpaceDataModel;
28
+ __decorate([
29
+ (0, swagger_1.ApiProperty)({
30
+ description: 'Proposed space name',
31
+ type: 'string',
32
+ example: 'Living Room',
33
+ }),
34
+ (0, class_transformer_1.Expose)(),
35
+ __metadata("design:type", String)
36
+ ], ProposedSpaceDataModel.prototype, "name", void 0);
37
+ __decorate([
38
+ (0, swagger_1.ApiProperty)({
39
+ description: 'Proposed space type',
40
+ enum: spaces_constants_1.SpaceType,
41
+ example: spaces_constants_1.SpaceType.ROOM,
42
+ }),
43
+ (0, class_transformer_1.Expose)(),
44
+ __metadata("design:type", String)
45
+ ], ProposedSpaceDataModel.prototype, "type", void 0);
46
+ __decorate([
47
+ (0, swagger_1.ApiPropertyOptional)({
48
+ description: 'Proposed space category (based on detected room/zone type)',
49
+ enum: spaces_constants_1.ALL_SPACE_CATEGORIES,
50
+ nullable: true,
51
+ example: spaces_constants_1.SpaceRoomCategory.LIVING_ROOM,
52
+ }),
53
+ (0, class_transformer_1.Expose)(),
54
+ __metadata("design:type", String)
55
+ ], ProposedSpaceDataModel.prototype, "category", void 0);
56
+ __decorate([
57
+ (0, swagger_1.ApiProperty)({
58
+ name: 'device_ids',
59
+ description: 'Array of device IDs that match this space',
60
+ type: 'array',
61
+ items: { type: 'string', format: 'uuid' },
62
+ example: ['f1e09ba1-429f-4c6a-a2fd-aca6a7c4a8c6'],
63
+ }),
64
+ (0, class_transformer_1.Expose)({ name: 'device_ids' }),
65
+ __metadata("design:type", Array)
66
+ ], ProposedSpaceDataModel.prototype, "deviceIds", void 0);
67
+ __decorate([
68
+ (0, swagger_1.ApiProperty)({
69
+ name: 'device_count',
70
+ description: 'Number of devices matching this space',
71
+ type: 'integer',
72
+ example: 3,
73
+ }),
74
+ (0, class_transformer_1.Expose)({ name: 'device_count' }),
75
+ __metadata("design:type", Number)
76
+ ], ProposedSpaceDataModel.prototype, "deviceCount", void 0);
77
+ exports.ProposedSpaceDataModel = ProposedSpaceDataModel = __decorate([
78
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataProposedSpace' })
79
+ ], ProposedSpaceDataModel);
80
+ let ProposedSpacesResponseModel = class ProposedSpacesResponseModel extends api_response_model_1.BaseSuccessResponseModel {
81
+ };
82
+ exports.ProposedSpacesResponseModel = ProposedSpacesResponseModel;
83
+ __decorate([
84
+ (0, swagger_1.ApiProperty)({
85
+ description: 'Array of proposed spaces based on device names',
86
+ type: () => [ProposedSpaceDataModel],
87
+ }),
88
+ (0, class_transformer_1.Expose)(),
89
+ (0, class_transformer_1.Type)(() => ProposedSpaceDataModel),
90
+ __metadata("design:type", Array)
91
+ ], ProposedSpacesResponseModel.prototype, "data", void 0);
92
+ exports.ProposedSpacesResponseModel = ProposedSpacesResponseModel = __decorate([
93
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResProposedSpaces' })
94
+ ], ProposedSpacesResponseModel);
95
+ let LightingIntentResultDataModel = class LightingIntentResultDataModel {
96
+ };
97
+ exports.LightingIntentResultDataModel = LightingIntentResultDataModel;
98
+ __decorate([
99
+ (0, swagger_1.ApiProperty)({
100
+ description: 'Whether the intent was successfully executed',
101
+ type: 'boolean',
102
+ example: true,
103
+ }),
104
+ (0, class_transformer_1.Expose)(),
105
+ __metadata("design:type", Boolean)
106
+ ], LightingIntentResultDataModel.prototype, "success", void 0);
107
+ __decorate([
108
+ (0, swagger_1.ApiProperty)({
109
+ name: 'affected_devices',
110
+ description: 'Number of devices affected by the intent',
111
+ type: 'integer',
112
+ example: 3,
113
+ }),
114
+ (0, class_transformer_1.Expose)({ name: 'affected_devices' }),
115
+ __metadata("design:type", Number)
116
+ ], LightingIntentResultDataModel.prototype, "affectedDevices", void 0);
117
+ __decorate([
118
+ (0, swagger_1.ApiProperty)({
119
+ name: 'failed_devices',
120
+ description: 'Number of devices that failed to respond',
121
+ type: 'integer',
122
+ example: 0,
123
+ }),
124
+ (0, class_transformer_1.Expose)({ name: 'failed_devices' }),
125
+ __metadata("design:type", Number)
126
+ ], LightingIntentResultDataModel.prototype, "failedDevices", void 0);
127
+ __decorate([
128
+ (0, swagger_1.ApiPropertyOptional)({
129
+ name: 'skipped_offline_devices',
130
+ description: 'Number of devices skipped because they are offline',
131
+ type: 'integer',
132
+ example: 1,
133
+ }),
134
+ (0, class_transformer_1.Expose)({ name: 'skipped_offline_devices' }),
135
+ __metadata("design:type", Number)
136
+ ], LightingIntentResultDataModel.prototype, "skippedOfflineDevices", void 0);
137
+ __decorate([
138
+ (0, swagger_1.ApiPropertyOptional)({
139
+ name: 'offline_device_ids',
140
+ description: 'IDs of devices that were skipped because they are offline',
141
+ type: 'array',
142
+ items: { type: 'string', format: 'uuid' },
143
+ example: ['a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7'],
144
+ }),
145
+ (0, class_transformer_1.Expose)({ name: 'offline_device_ids' }),
146
+ __metadata("design:type", Array)
147
+ ], LightingIntentResultDataModel.prototype, "offlineDeviceIds", void 0);
148
+ __decorate([
149
+ (0, swagger_1.ApiPropertyOptional)({
150
+ name: 'failed_targets',
151
+ description: 'List of device IDs where command execution failed',
152
+ type: [String],
153
+ nullable: true,
154
+ example: ['device-uuid-1'],
155
+ }),
156
+ (0, class_transformer_1.Expose)({ name: 'failed_targets' }),
157
+ __metadata("design:type", Array)
158
+ ], LightingIntentResultDataModel.prototype, "failedTargets", void 0);
159
+ exports.LightingIntentResultDataModel = LightingIntentResultDataModel = __decorate([
160
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataLightingIntentResult' })
161
+ ], LightingIntentResultDataModel);
162
+ let LightingIntentResponseModel = class LightingIntentResponseModel extends api_response_model_1.BaseSuccessResponseModel {
163
+ };
164
+ exports.LightingIntentResponseModel = LightingIntentResponseModel;
165
+ __decorate([
166
+ (0, swagger_1.ApiProperty)({
167
+ description: 'The result of the lighting intent execution',
168
+ type: () => LightingIntentResultDataModel,
169
+ }),
170
+ (0, class_transformer_1.Expose)(),
171
+ (0, class_transformer_1.Type)(() => LightingIntentResultDataModel),
172
+ __metadata("design:type", LightingIntentResultDataModel)
173
+ ], LightingIntentResponseModel.prototype, "data", void 0);
174
+ exports.LightingIntentResponseModel = LightingIntentResponseModel = __decorate([
175
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResLightingIntent' })
176
+ ], LightingIntentResponseModel);
177
+ let ClimateStateDataModel = class ClimateStateDataModel {
178
+ };
179
+ exports.ClimateStateDataModel = ClimateStateDataModel;
180
+ __decorate([
181
+ (0, swagger_1.ApiProperty)({
182
+ name: 'has_climate',
183
+ description: 'Whether the space has climate-capable devices',
184
+ type: 'boolean',
185
+ example: true,
186
+ }),
187
+ (0, class_transformer_1.Expose)({ name: 'has_climate' }),
188
+ __metadata("design:type", Boolean)
189
+ ], ClimateStateDataModel.prototype, "hasClimate", void 0);
190
+ __decorate([
191
+ (0, swagger_1.ApiProperty)({
192
+ name: 'mode',
193
+ description: 'Current climate mode detected from device states',
194
+ enum: ['heat', 'cool', 'auto', 'off'],
195
+ example: 'heat',
196
+ }),
197
+ (0, class_transformer_1.Expose)({ name: 'mode' }),
198
+ __metadata("design:type", String)
199
+ ], ClimateStateDataModel.prototype, "mode", void 0);
200
+ __decorate([
201
+ (0, swagger_1.ApiProperty)({
202
+ name: 'current_temperature',
203
+ description: 'Current temperature reading in degrees Celsius (averaged from all primary devices)',
204
+ type: 'number',
205
+ nullable: true,
206
+ example: 22.5,
207
+ }),
208
+ (0, class_transformer_1.Expose)({ name: 'current_temperature' }),
209
+ __metadata("design:type", Number)
210
+ ], ClimateStateDataModel.prototype, "currentTemperature", void 0);
211
+ __decorate([
212
+ (0, swagger_1.ApiProperty)({
213
+ name: 'current_humidity',
214
+ description: 'Current humidity reading in percent (averaged from all devices with humidity)',
215
+ type: 'number',
216
+ nullable: true,
217
+ example: 45,
218
+ }),
219
+ (0, class_transformer_1.Expose)({ name: 'current_humidity' }),
220
+ __metadata("design:type", Number)
221
+ ], ClimateStateDataModel.prototype, "currentHumidity", void 0);
222
+ __decorate([
223
+ (0, swagger_1.ApiProperty)({
224
+ name: 'heating_setpoint',
225
+ description: 'Heating setpoint - target temperature for heating (used in HEAT and AUTO modes)',
226
+ type: 'number',
227
+ nullable: true,
228
+ example: 20.0,
229
+ }),
230
+ (0, class_transformer_1.Expose)({ name: 'heating_setpoint' }),
231
+ __metadata("design:type", Number)
232
+ ], ClimateStateDataModel.prototype, "heatingSetpoint", void 0);
233
+ __decorate([
234
+ (0, swagger_1.ApiProperty)({
235
+ name: 'cooling_setpoint',
236
+ description: 'Cooling setpoint - target temperature for cooling (used in COOL and AUTO modes)',
237
+ type: 'number',
238
+ nullable: true,
239
+ example: 24.0,
240
+ }),
241
+ (0, class_transformer_1.Expose)({ name: 'cooling_setpoint' }),
242
+ __metadata("design:type", Number)
243
+ ], ClimateStateDataModel.prototype, "coolingSetpoint", void 0);
244
+ __decorate([
245
+ (0, swagger_1.ApiProperty)({
246
+ name: 'min_setpoint',
247
+ description: 'Minimum allowed setpoint temperature (intersection of all device limits)',
248
+ type: 'number',
249
+ example: 15,
250
+ }),
251
+ (0, class_transformer_1.Expose)({ name: 'min_setpoint' }),
252
+ __metadata("design:type", Number)
253
+ ], ClimateStateDataModel.prototype, "minSetpoint", void 0);
254
+ __decorate([
255
+ (0, swagger_1.ApiProperty)({
256
+ name: 'max_setpoint',
257
+ description: 'Maximum allowed setpoint temperature (intersection of all device limits)',
258
+ type: 'number',
259
+ example: 30,
260
+ }),
261
+ (0, class_transformer_1.Expose)({ name: 'max_setpoint' }),
262
+ __metadata("design:type", Number)
263
+ ], ClimateStateDataModel.prototype, "maxSetpoint", void 0);
264
+ __decorate([
265
+ (0, swagger_1.ApiProperty)({
266
+ name: 'supports_heating',
267
+ description: 'Whether any device in the space supports heating',
268
+ type: 'boolean',
269
+ example: true,
270
+ }),
271
+ (0, class_transformer_1.Expose)({ name: 'supports_heating' }),
272
+ __metadata("design:type", Boolean)
273
+ ], ClimateStateDataModel.prototype, "supportsHeating", void 0);
274
+ __decorate([
275
+ (0, swagger_1.ApiProperty)({
276
+ name: 'supports_cooling',
277
+ description: 'Whether any device in the space supports cooling',
278
+ type: 'boolean',
279
+ example: true,
280
+ }),
281
+ (0, class_transformer_1.Expose)({ name: 'supports_cooling' }),
282
+ __metadata("design:type", Boolean)
283
+ ], ClimateStateDataModel.prototype, "supportsCooling", void 0);
284
+ __decorate([
285
+ (0, swagger_1.ApiProperty)({
286
+ name: 'is_heating',
287
+ description: 'Whether any heater device is currently active (ON)',
288
+ type: 'boolean',
289
+ example: false,
290
+ }),
291
+ (0, class_transformer_1.Expose)({ name: 'is_heating' }),
292
+ __metadata("design:type", Boolean)
293
+ ], ClimateStateDataModel.prototype, "isHeating", void 0);
294
+ __decorate([
295
+ (0, swagger_1.ApiProperty)({
296
+ name: 'is_cooling',
297
+ description: 'Whether any cooler device is currently active (ON)',
298
+ type: 'boolean',
299
+ example: false,
300
+ }),
301
+ (0, class_transformer_1.Expose)({ name: 'is_cooling' }),
302
+ __metadata("design:type", Boolean)
303
+ ], ClimateStateDataModel.prototype, "isCooling", void 0);
304
+ __decorate([
305
+ (0, swagger_1.ApiProperty)({
306
+ name: 'is_mixed',
307
+ description: 'Whether devices have different setpoint values (out of sync)',
308
+ type: 'boolean',
309
+ example: false,
310
+ }),
311
+ (0, class_transformer_1.Expose)({ name: 'is_mixed' }),
312
+ __metadata("design:type", Boolean)
313
+ ], ClimateStateDataModel.prototype, "isMixed", void 0);
314
+ __decorate([
315
+ (0, swagger_1.ApiProperty)({
316
+ name: 'devices_count',
317
+ description: 'Number of primary climate devices in the space',
318
+ type: 'integer',
319
+ example: 2,
320
+ }),
321
+ (0, class_transformer_1.Expose)({ name: 'devices_count' }),
322
+ __metadata("design:type", Number)
323
+ ], ClimateStateDataModel.prototype, "devicesCount", void 0);
324
+ __decorate([
325
+ (0, swagger_1.ApiPropertyOptional)({
326
+ name: 'last_applied_mode',
327
+ description: 'The last climate mode that was explicitly applied via intent (from storage)',
328
+ enum: spaces_home_control_constants_1.ClimateMode,
329
+ nullable: true,
330
+ }),
331
+ (0, class_transformer_1.Expose)({ name: 'last_applied_mode' }),
332
+ __metadata("design:type", String)
333
+ ], ClimateStateDataModel.prototype, "lastAppliedMode", void 0);
334
+ __decorate([
335
+ (0, swagger_1.ApiPropertyOptional)({
336
+ name: 'last_applied_at',
337
+ description: 'When the last mode was applied',
338
+ type: 'string',
339
+ format: 'date-time',
340
+ nullable: true,
341
+ example: null,
342
+ }),
343
+ (0, class_transformer_1.Expose)({ name: 'last_applied_at' }),
344
+ __metadata("design:type", Date)
345
+ ], ClimateStateDataModel.prototype, "lastAppliedAt", void 0);
346
+ exports.ClimateStateDataModel = ClimateStateDataModel = __decorate([
347
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataClimateState' })
348
+ ], ClimateStateDataModel);
349
+ let ClimateStateResponseModel = class ClimateStateResponseModel extends api_response_model_1.BaseSuccessResponseModel {
350
+ };
351
+ exports.ClimateStateResponseModel = ClimateStateResponseModel;
352
+ __decorate([
353
+ (0, swagger_1.ApiProperty)({
354
+ description: 'The climate state data for the space',
355
+ type: () => ClimateStateDataModel,
356
+ }),
357
+ (0, class_transformer_1.Expose)(),
358
+ (0, class_transformer_1.Type)(() => ClimateStateDataModel),
359
+ __metadata("design:type", ClimateStateDataModel)
360
+ ], ClimateStateResponseModel.prototype, "data", void 0);
361
+ exports.ClimateStateResponseModel = ClimateStateResponseModel = __decorate([
362
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResClimateState' })
363
+ ], ClimateStateResponseModel);
364
+ let ClimateIntentResultDataModel = class ClimateIntentResultDataModel {
365
+ };
366
+ exports.ClimateIntentResultDataModel = ClimateIntentResultDataModel;
367
+ __decorate([
368
+ (0, swagger_1.ApiProperty)({
369
+ description: 'Whether the intent was successfully executed',
370
+ type: 'boolean',
371
+ example: true,
372
+ }),
373
+ (0, class_transformer_1.Expose)(),
374
+ __metadata("design:type", Boolean)
375
+ ], ClimateIntentResultDataModel.prototype, "success", void 0);
376
+ __decorate([
377
+ (0, swagger_1.ApiProperty)({
378
+ name: 'affected_devices',
379
+ description: 'Number of devices affected by the intent',
380
+ type: 'integer',
381
+ example: 2,
382
+ }),
383
+ (0, class_transformer_1.Expose)({ name: 'affected_devices' }),
384
+ __metadata("design:type", Number)
385
+ ], ClimateIntentResultDataModel.prototype, "affectedDevices", void 0);
386
+ __decorate([
387
+ (0, swagger_1.ApiProperty)({
388
+ name: 'failed_devices',
389
+ description: 'Number of devices that failed to respond',
390
+ type: 'integer',
391
+ example: 0,
392
+ }),
393
+ (0, class_transformer_1.Expose)({ name: 'failed_devices' }),
394
+ __metadata("design:type", Number)
395
+ ], ClimateIntentResultDataModel.prototype, "failedDevices", void 0);
396
+ __decorate([
397
+ (0, swagger_1.ApiPropertyOptional)({
398
+ name: 'skipped_offline_devices',
399
+ description: 'Number of devices skipped because they are offline',
400
+ type: 'integer',
401
+ example: 1,
402
+ }),
403
+ (0, class_transformer_1.Expose)({ name: 'skipped_offline_devices' }),
404
+ __metadata("design:type", Number)
405
+ ], ClimateIntentResultDataModel.prototype, "skippedOfflineDevices", void 0);
406
+ __decorate([
407
+ (0, swagger_1.ApiPropertyOptional)({
408
+ name: 'offline_device_ids',
409
+ description: 'IDs of devices that were skipped because they are offline',
410
+ type: 'array',
411
+ items: { type: 'string', format: 'uuid' },
412
+ example: ['a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7'],
413
+ }),
414
+ (0, class_transformer_1.Expose)({ name: 'offline_device_ids' }),
415
+ __metadata("design:type", Array)
416
+ ], ClimateIntentResultDataModel.prototype, "offlineDeviceIds", void 0);
417
+ __decorate([
418
+ (0, swagger_1.ApiPropertyOptional)({
419
+ name: 'failed_targets',
420
+ description: 'List of device IDs where command execution failed',
421
+ type: [String],
422
+ nullable: true,
423
+ example: ['device-uuid-1'],
424
+ }),
425
+ (0, class_transformer_1.Expose)({ name: 'failed_targets' }),
426
+ __metadata("design:type", Array)
427
+ ], ClimateIntentResultDataModel.prototype, "failedTargets", void 0);
428
+ __decorate([
429
+ (0, swagger_1.ApiProperty)({
430
+ name: 'mode',
431
+ description: 'The climate mode after the intent was executed',
432
+ enum: ['heat', 'cool', 'auto', 'off'],
433
+ example: 'heat',
434
+ }),
435
+ (0, class_transformer_1.Expose)({ name: 'mode' }),
436
+ __metadata("design:type", String)
437
+ ], ClimateIntentResultDataModel.prototype, "mode", void 0);
438
+ __decorate([
439
+ (0, swagger_1.ApiProperty)({
440
+ name: 'heating_setpoint',
441
+ description: 'The new heating setpoint (used in HEAT and AUTO modes)',
442
+ type: 'number',
443
+ nullable: true,
444
+ example: 20.0,
445
+ }),
446
+ (0, class_transformer_1.Expose)({ name: 'heating_setpoint' }),
447
+ __metadata("design:type", Number)
448
+ ], ClimateIntentResultDataModel.prototype, "heatingSetpoint", void 0);
449
+ __decorate([
450
+ (0, swagger_1.ApiProperty)({
451
+ name: 'cooling_setpoint',
452
+ description: 'The new cooling setpoint (used in COOL and AUTO modes)',
453
+ type: 'number',
454
+ nullable: true,
455
+ example: 24.0,
456
+ }),
457
+ (0, class_transformer_1.Expose)({ name: 'cooling_setpoint' }),
458
+ __metadata("design:type", Number)
459
+ ], ClimateIntentResultDataModel.prototype, "coolingSetpoint", void 0);
460
+ exports.ClimateIntentResultDataModel = ClimateIntentResultDataModel = __decorate([
461
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataClimateIntentResult' })
462
+ ], ClimateIntentResultDataModel);
463
+ let ClimateIntentResponseModel = class ClimateIntentResponseModel extends api_response_model_1.BaseSuccessResponseModel {
464
+ };
465
+ exports.ClimateIntentResponseModel = ClimateIntentResponseModel;
466
+ __decorate([
467
+ (0, swagger_1.ApiProperty)({
468
+ description: 'The result of the climate intent execution',
469
+ type: () => ClimateIntentResultDataModel,
470
+ }),
471
+ (0, class_transformer_1.Expose)(),
472
+ (0, class_transformer_1.Type)(() => ClimateIntentResultDataModel),
473
+ __metadata("design:type", ClimateIntentResultDataModel)
474
+ ], ClimateIntentResponseModel.prototype, "data", void 0);
475
+ exports.ClimateIntentResponseModel = ClimateIntentResponseModel = __decorate([
476
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResClimateIntent' })
477
+ ], ClimateIntentResponseModel);
478
+ let LightTargetDataModel = class LightTargetDataModel {
479
+ };
480
+ exports.LightTargetDataModel = LightTargetDataModel;
481
+ __decorate([
482
+ (0, swagger_1.ApiProperty)({
483
+ name: 'device_id',
484
+ description: 'ID of the lighting device',
485
+ type: 'string',
486
+ format: 'uuid',
487
+ example: 'a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7',
488
+ }),
489
+ (0, class_transformer_1.Expose)({ name: 'device_id' }),
490
+ __metadata("design:type", String)
491
+ ], LightTargetDataModel.prototype, "deviceId", void 0);
492
+ __decorate([
493
+ (0, swagger_1.ApiProperty)({
494
+ name: 'device_name',
495
+ description: 'Name of the lighting device',
496
+ type: 'string',
497
+ example: 'Living Room Ceiling Light',
498
+ }),
499
+ (0, class_transformer_1.Expose)({ name: 'device_name' }),
500
+ __metadata("design:type", String)
501
+ ], LightTargetDataModel.prototype, "deviceName", void 0);
502
+ __decorate([
503
+ (0, swagger_1.ApiProperty)({
504
+ name: 'channel_id',
505
+ description: 'ID of the light channel',
506
+ type: 'string',
507
+ format: 'uuid',
508
+ example: 'c3d29eb4-632f-5e8c-c4af-ded8b9e6c0f8',
509
+ }),
510
+ (0, class_transformer_1.Expose)({ name: 'channel_id' }),
511
+ __metadata("design:type", String)
512
+ ], LightTargetDataModel.prototype, "channelId", void 0);
513
+ __decorate([
514
+ (0, swagger_1.ApiProperty)({
515
+ name: 'channel_name',
516
+ description: 'Name of the light channel',
517
+ type: 'string',
518
+ example: 'Light',
519
+ }),
520
+ (0, class_transformer_1.Expose)({ name: 'channel_name' }),
521
+ __metadata("design:type", String)
522
+ ], LightTargetDataModel.prototype, "channelName", void 0);
523
+ __decorate([
524
+ (0, swagger_1.ApiPropertyOptional)({
525
+ description: 'The lighting role assigned to this target (null if not assigned)',
526
+ enum: spaces_home_control_constants_1.LightingRole,
527
+ nullable: true,
528
+ example: spaces_home_control_constants_1.LightingRole.MAIN,
529
+ }),
530
+ (0, class_transformer_1.Expose)(),
531
+ __metadata("design:type", String)
532
+ ], LightTargetDataModel.prototype, "role", void 0);
533
+ __decorate([
534
+ (0, swagger_1.ApiProperty)({
535
+ description: 'Priority for selecting defaults within the same role',
536
+ type: 'integer',
537
+ example: 0,
538
+ }),
539
+ (0, class_transformer_1.Expose)(),
540
+ __metadata("design:type", Number)
541
+ ], LightTargetDataModel.prototype, "priority", void 0);
542
+ __decorate([
543
+ (0, swagger_1.ApiProperty)({
544
+ name: 'has_brightness',
545
+ description: 'Whether this light supports brightness control',
546
+ type: 'boolean',
547
+ example: true,
548
+ }),
549
+ (0, class_transformer_1.Expose)({ name: 'has_brightness' }),
550
+ __metadata("design:type", Boolean)
551
+ ], LightTargetDataModel.prototype, "hasBrightness", void 0);
552
+ __decorate([
553
+ (0, swagger_1.ApiProperty)({
554
+ name: 'has_color_temp',
555
+ description: 'Whether this light supports color temperature control',
556
+ type: 'boolean',
557
+ example: false,
558
+ }),
559
+ (0, class_transformer_1.Expose)({ name: 'has_color_temp' }),
560
+ __metadata("design:type", Boolean)
561
+ ], LightTargetDataModel.prototype, "hasColorTemp", void 0);
562
+ __decorate([
563
+ (0, swagger_1.ApiProperty)({
564
+ name: 'has_color',
565
+ description: 'Whether this light supports color (RGB) control',
566
+ type: 'boolean',
567
+ example: false,
568
+ }),
569
+ (0, class_transformer_1.Expose)({ name: 'has_color' }),
570
+ __metadata("design:type", Boolean)
571
+ ], LightTargetDataModel.prototype, "hasColor", void 0);
572
+ exports.LightTargetDataModel = LightTargetDataModel = __decorate([
573
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataLightTarget' })
574
+ ], LightTargetDataModel);
575
+ let LightTargetsResponseModel = class LightTargetsResponseModel extends api_response_model_1.BaseSuccessResponseModel {
576
+ };
577
+ exports.LightTargetsResponseModel = LightTargetsResponseModel;
578
+ __decorate([
579
+ (0, swagger_1.ApiProperty)({
580
+ description: 'Array of light targets in the space with their role assignments',
581
+ type: () => [LightTargetDataModel],
582
+ }),
583
+ (0, class_transformer_1.Expose)(),
584
+ (0, class_transformer_1.Type)(() => LightTargetDataModel),
585
+ __metadata("design:type", Array)
586
+ ], LightTargetsResponseModel.prototype, "data", void 0);
587
+ exports.LightTargetsResponseModel = LightTargetsResponseModel = __decorate([
588
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResLightTargets' })
589
+ ], LightTargetsResponseModel);
590
+ let LightingRoleResponseModel = class LightingRoleResponseModel extends api_response_model_1.BaseSuccessResponseModel {
591
+ };
592
+ exports.LightingRoleResponseModel = LightingRoleResponseModel;
593
+ __decorate([
594
+ (0, swagger_1.ApiProperty)({
595
+ description: 'The lighting role assignment',
596
+ type: () => space_lighting_role_entity_1.SpaceLightingRoleEntity,
597
+ }),
598
+ (0, class_transformer_1.Expose)(),
599
+ (0, class_transformer_1.Type)(() => space_lighting_role_entity_1.SpaceLightingRoleEntity),
600
+ __metadata("design:type", space_lighting_role_entity_1.SpaceLightingRoleEntity)
601
+ ], LightingRoleResponseModel.prototype, "data", void 0);
602
+ exports.LightingRoleResponseModel = LightingRoleResponseModel = __decorate([
603
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResLightingRole' })
604
+ ], LightingRoleResponseModel);
605
+ let LightingRolesResponseModel = class LightingRolesResponseModel extends api_response_model_1.BaseSuccessResponseModel {
606
+ };
607
+ exports.LightingRolesResponseModel = LightingRolesResponseModel;
608
+ __decorate([
609
+ (0, swagger_1.ApiProperty)({
610
+ description: 'Array of lighting role assignments',
611
+ type: 'array',
612
+ items: { $ref: (0, swagger_1.getSchemaPath)(space_lighting_role_entity_1.SpaceLightingRoleEntity) },
613
+ }),
614
+ (0, class_transformer_1.Expose)(),
615
+ (0, class_transformer_1.Type)(() => space_lighting_role_entity_1.SpaceLightingRoleEntity),
616
+ __metadata("design:type", Array)
617
+ ], LightingRolesResponseModel.prototype, "data", void 0);
618
+ exports.LightingRolesResponseModel = LightingRolesResponseModel = __decorate([
619
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResLightingRoles' })
620
+ ], LightingRolesResponseModel);
621
+ let BulkLightingRoleResultItemModel = class BulkLightingRoleResultItemModel {
622
+ };
623
+ exports.BulkLightingRoleResultItemModel = BulkLightingRoleResultItemModel;
624
+ __decorate([
625
+ (0, swagger_1.ApiProperty)({
626
+ name: 'device_id',
627
+ description: 'ID of the device',
628
+ type: 'string',
629
+ format: 'uuid',
630
+ example: 'a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7',
631
+ }),
632
+ (0, class_transformer_1.Expose)({ name: 'device_id' }),
633
+ __metadata("design:type", String)
634
+ ], BulkLightingRoleResultItemModel.prototype, "deviceId", void 0);
635
+ __decorate([
636
+ (0, swagger_1.ApiProperty)({
637
+ name: 'channel_id',
638
+ description: 'ID of the channel',
639
+ type: 'string',
640
+ format: 'uuid',
641
+ example: 'c3d29eb4-632f-5e8c-c4af-ded8b9e6c0f8',
642
+ }),
643
+ (0, class_transformer_1.Expose)({ name: 'channel_id' }),
644
+ __metadata("design:type", String)
645
+ ], BulkLightingRoleResultItemModel.prototype, "channelId", void 0);
646
+ __decorate([
647
+ (0, swagger_1.ApiProperty)({
648
+ description: 'Whether this role was set successfully',
649
+ type: 'boolean',
650
+ example: true,
651
+ }),
652
+ (0, class_transformer_1.Expose)(),
653
+ __metadata("design:type", Boolean)
654
+ ], BulkLightingRoleResultItemModel.prototype, "success", void 0);
655
+ __decorate([
656
+ (0, swagger_1.ApiPropertyOptional)({
657
+ description: 'The role that was set (null if failed)',
658
+ enum: spaces_home_control_constants_1.LightingRole,
659
+ nullable: true,
660
+ example: spaces_home_control_constants_1.LightingRole.MAIN,
661
+ }),
662
+ (0, class_transformer_1.Expose)(),
663
+ __metadata("design:type", String)
664
+ ], BulkLightingRoleResultItemModel.prototype, "role", void 0);
665
+ __decorate([
666
+ (0, swagger_1.ApiPropertyOptional)({
667
+ description: 'Error message if the operation failed',
668
+ type: 'string',
669
+ nullable: true,
670
+ example: null,
671
+ }),
672
+ (0, class_transformer_1.Expose)(),
673
+ __metadata("design:type", String)
674
+ ], BulkLightingRoleResultItemModel.prototype, "error", void 0);
675
+ exports.BulkLightingRoleResultItemModel = BulkLightingRoleResultItemModel = __decorate([
676
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataBulkLightingRoleItem' })
677
+ ], BulkLightingRoleResultItemModel);
678
+ let BulkLightingRolesResultDataModel = class BulkLightingRolesResultDataModel {
679
+ };
680
+ exports.BulkLightingRolesResultDataModel = BulkLightingRolesResultDataModel;
681
+ __decorate([
682
+ (0, swagger_1.ApiProperty)({
683
+ description: 'Whether all operations were successful',
684
+ type: 'boolean',
685
+ example: true,
686
+ }),
687
+ (0, class_transformer_1.Expose)(),
688
+ __metadata("design:type", Boolean)
689
+ ], BulkLightingRolesResultDataModel.prototype, "success", void 0);
690
+ __decorate([
691
+ (0, swagger_1.ApiProperty)({
692
+ name: 'total_count',
693
+ description: 'Total number of roles in the request',
694
+ type: 'integer',
695
+ example: 3,
696
+ }),
697
+ (0, class_transformer_1.Expose)({ name: 'total_count' }),
698
+ __metadata("design:type", Number)
699
+ ], BulkLightingRolesResultDataModel.prototype, "totalCount", void 0);
700
+ __decorate([
701
+ (0, swagger_1.ApiProperty)({
702
+ name: 'success_count',
703
+ description: 'Number of roles successfully created or updated',
704
+ type: 'integer',
705
+ example: 3,
706
+ }),
707
+ (0, class_transformer_1.Expose)({ name: 'success_count' }),
708
+ __metadata("design:type", Number)
709
+ ], BulkLightingRolesResultDataModel.prototype, "successCount", void 0);
710
+ __decorate([
711
+ (0, swagger_1.ApiProperty)({
712
+ name: 'failure_count',
713
+ description: 'Number of roles that failed to update',
714
+ type: 'integer',
715
+ example: 0,
716
+ }),
717
+ (0, class_transformer_1.Expose)({ name: 'failure_count' }),
718
+ __metadata("design:type", Number)
719
+ ], BulkLightingRolesResultDataModel.prototype, "failureCount", void 0);
720
+ __decorate([
721
+ (0, swagger_1.ApiProperty)({
722
+ description: 'Detailed results for each role operation',
723
+ type: () => [BulkLightingRoleResultItemModel],
724
+ }),
725
+ (0, class_transformer_1.Expose)(),
726
+ (0, class_transformer_1.Type)(() => BulkLightingRoleResultItemModel),
727
+ __metadata("design:type", Array)
728
+ ], BulkLightingRolesResultDataModel.prototype, "results", void 0);
729
+ exports.BulkLightingRolesResultDataModel = BulkLightingRolesResultDataModel = __decorate([
730
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataBulkLightingRolesResult' })
731
+ ], BulkLightingRolesResultDataModel);
732
+ let BulkLightingRolesResponseModel = class BulkLightingRolesResponseModel extends api_response_model_1.BaseSuccessResponseModel {
733
+ };
734
+ exports.BulkLightingRolesResponseModel = BulkLightingRolesResponseModel;
735
+ __decorate([
736
+ (0, swagger_1.ApiProperty)({
737
+ description: 'The result of the bulk lighting role update',
738
+ type: () => BulkLightingRolesResultDataModel,
739
+ }),
740
+ (0, class_transformer_1.Expose)(),
741
+ (0, class_transformer_1.Type)(() => BulkLightingRolesResultDataModel),
742
+ __metadata("design:type", BulkLightingRolesResultDataModel)
743
+ ], BulkLightingRolesResponseModel.prototype, "data", void 0);
744
+ exports.BulkLightingRolesResponseModel = BulkLightingRolesResponseModel = __decorate([
745
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResBulkLightingRoles' })
746
+ ], BulkLightingRolesResponseModel);
747
+ let ClimateTargetDataModel = class ClimateTargetDataModel {
748
+ };
749
+ exports.ClimateTargetDataModel = ClimateTargetDataModel;
750
+ __decorate([
751
+ (0, swagger_1.ApiProperty)({
752
+ name: 'device_id',
753
+ description: 'ID of the climate device',
754
+ type: 'string',
755
+ format: 'uuid',
756
+ example: 'a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7',
757
+ }),
758
+ (0, class_transformer_1.Expose)({ name: 'device_id' }),
759
+ __metadata("design:type", String)
760
+ ], ClimateTargetDataModel.prototype, "deviceId", void 0);
761
+ __decorate([
762
+ (0, swagger_1.ApiProperty)({
763
+ name: 'device_name',
764
+ description: 'Name of the climate device',
765
+ type: 'string',
766
+ example: 'Living Room Thermostat',
767
+ }),
768
+ (0, class_transformer_1.Expose)({ name: 'device_name' }),
769
+ __metadata("design:type", String)
770
+ ], ClimateTargetDataModel.prototype, "deviceName", void 0);
771
+ __decorate([
772
+ (0, swagger_1.ApiProperty)({
773
+ name: 'device_category',
774
+ description: 'Category of the climate device',
775
+ enum: devices_constants_1.DeviceCategory,
776
+ example: devices_constants_1.DeviceCategory.THERMOSTAT,
777
+ }),
778
+ (0, class_transformer_1.Expose)({ name: 'device_category' }),
779
+ __metadata("design:type", String)
780
+ ], ClimateTargetDataModel.prototype, "deviceCategory", void 0);
781
+ __decorate([
782
+ (0, swagger_1.ApiPropertyOptional)({
783
+ name: 'channel_id',
784
+ description: 'ID of the channel (for sensor roles)',
785
+ type: 'string',
786
+ format: 'uuid',
787
+ nullable: true,
788
+ example: 'c3d29ea4-632f-5e8c-c4af-dce8b9e6c0f8',
789
+ }),
790
+ (0, class_transformer_1.Expose)({ name: 'channel_id' }),
791
+ __metadata("design:type", String)
792
+ ], ClimateTargetDataModel.prototype, "channelId", void 0);
793
+ __decorate([
794
+ (0, swagger_1.ApiPropertyOptional)({
795
+ name: 'channel_name',
796
+ description: 'Name of the channel (for sensor roles)',
797
+ type: 'string',
798
+ nullable: true,
799
+ example: 'Temperature Sensor',
800
+ }),
801
+ (0, class_transformer_1.Expose)({ name: 'channel_name' }),
802
+ __metadata("design:type", String)
803
+ ], ClimateTargetDataModel.prototype, "channelName", void 0);
804
+ __decorate([
805
+ (0, swagger_1.ApiPropertyOptional)({
806
+ name: 'channel_category',
807
+ description: 'Category of the channel (for sensor roles) - indicates sensor type',
808
+ enum: devices_constants_1.ChannelCategory,
809
+ nullable: true,
810
+ example: devices_constants_1.ChannelCategory.TEMPERATURE,
811
+ }),
812
+ (0, class_transformer_1.Expose)({ name: 'channel_category' }),
813
+ __metadata("design:type", String)
814
+ ], ClimateTargetDataModel.prototype, "channelCategory", void 0);
815
+ __decorate([
816
+ (0, swagger_1.ApiPropertyOptional)({
817
+ description: 'The climate role assigned to this target (null if not assigned)',
818
+ enum: spaces_home_control_constants_1.ClimateRole,
819
+ nullable: true,
820
+ example: spaces_home_control_constants_1.ClimateRole.AUTO,
821
+ }),
822
+ (0, class_transformer_1.Expose)(),
823
+ __metadata("design:type", String)
824
+ ], ClimateTargetDataModel.prototype, "role", void 0);
825
+ __decorate([
826
+ (0, swagger_1.ApiProperty)({
827
+ description: 'Priority for selecting defaults within the same role',
828
+ type: 'integer',
829
+ example: 0,
830
+ }),
831
+ (0, class_transformer_1.Expose)(),
832
+ __metadata("design:type", Number)
833
+ ], ClimateTargetDataModel.prototype, "priority", void 0);
834
+ __decorate([
835
+ (0, swagger_1.ApiProperty)({
836
+ name: 'has_temperature',
837
+ description: 'Whether this target is a temperature sensor channel',
838
+ type: 'boolean',
839
+ example: true,
840
+ }),
841
+ (0, class_transformer_1.Expose)({ name: 'has_temperature' }),
842
+ __metadata("design:type", Boolean)
843
+ ], ClimateTargetDataModel.prototype, "hasTemperature", void 0);
844
+ __decorate([
845
+ (0, swagger_1.ApiProperty)({
846
+ name: 'has_humidity',
847
+ description: 'Whether this target is a humidity sensor channel',
848
+ type: 'boolean',
849
+ example: false,
850
+ }),
851
+ (0, class_transformer_1.Expose)({ name: 'has_humidity' }),
852
+ __metadata("design:type", Boolean)
853
+ ], ClimateTargetDataModel.prototype, "hasHumidity", void 0);
854
+ __decorate([
855
+ (0, swagger_1.ApiProperty)({
856
+ name: 'has_air_quality',
857
+ description: 'Whether this target is an air quality sensor channel',
858
+ type: 'boolean',
859
+ example: false,
860
+ }),
861
+ (0, class_transformer_1.Expose)({ name: 'has_air_quality' }),
862
+ __metadata("design:type", Boolean)
863
+ ], ClimateTargetDataModel.prototype, "hasAirQuality", void 0);
864
+ __decorate([
865
+ (0, swagger_1.ApiProperty)({
866
+ name: 'has_air_particulate',
867
+ description: 'Whether this target is an air particulate (PM2.5/PM10) sensor channel',
868
+ type: 'boolean',
869
+ example: false,
870
+ }),
871
+ (0, class_transformer_1.Expose)({ name: 'has_air_particulate' }),
872
+ __metadata("design:type", Boolean)
873
+ ], ClimateTargetDataModel.prototype, "hasAirParticulate", void 0);
874
+ __decorate([
875
+ (0, swagger_1.ApiProperty)({
876
+ name: 'has_carbon_dioxide',
877
+ description: 'Whether this target is a carbon dioxide (CO2) sensor channel',
878
+ type: 'boolean',
879
+ example: false,
880
+ }),
881
+ (0, class_transformer_1.Expose)({ name: 'has_carbon_dioxide' }),
882
+ __metadata("design:type", Boolean)
883
+ ], ClimateTargetDataModel.prototype, "hasCarbonDioxide", void 0);
884
+ __decorate([
885
+ (0, swagger_1.ApiProperty)({
886
+ name: 'has_volatile_organic_compounds',
887
+ description: 'Whether this target is a volatile organic compounds (VOC) sensor channel',
888
+ type: 'boolean',
889
+ example: false,
890
+ }),
891
+ (0, class_transformer_1.Expose)({ name: 'has_volatile_organic_compounds' }),
892
+ __metadata("design:type", Boolean)
893
+ ], ClimateTargetDataModel.prototype, "hasVolatileOrganicCompounds", void 0);
894
+ __decorate([
895
+ (0, swagger_1.ApiProperty)({
896
+ name: 'has_pressure',
897
+ description: 'Whether this target is an atmospheric pressure sensor channel',
898
+ type: 'boolean',
899
+ example: false,
900
+ }),
901
+ (0, class_transformer_1.Expose)({ name: 'has_pressure' }),
902
+ __metadata("design:type", Boolean)
903
+ ], ClimateTargetDataModel.prototype, "hasPressure", void 0);
904
+ __decorate([
905
+ (0, swagger_1.ApiProperty)({
906
+ name: 'has_mode',
907
+ description: 'Whether this device supports HVAC mode control',
908
+ type: 'boolean',
909
+ example: true,
910
+ }),
911
+ (0, class_transformer_1.Expose)({ name: 'has_mode' }),
912
+ __metadata("design:type", Boolean)
913
+ ], ClimateTargetDataModel.prototype, "hasMode", void 0);
914
+ exports.ClimateTargetDataModel = ClimateTargetDataModel = __decorate([
915
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataClimateTarget' })
916
+ ], ClimateTargetDataModel);
917
+ let ClimateTargetsResponseModel = class ClimateTargetsResponseModel extends api_response_model_1.BaseSuccessResponseModel {
918
+ };
919
+ exports.ClimateTargetsResponseModel = ClimateTargetsResponseModel;
920
+ __decorate([
921
+ (0, swagger_1.ApiProperty)({
922
+ description: 'Array of climate targets in the space with their role assignments',
923
+ type: () => [ClimateTargetDataModel],
924
+ }),
925
+ (0, class_transformer_1.Expose)(),
926
+ (0, class_transformer_1.Type)(() => ClimateTargetDataModel),
927
+ __metadata("design:type", Array)
928
+ ], ClimateTargetsResponseModel.prototype, "data", void 0);
929
+ exports.ClimateTargetsResponseModel = ClimateTargetsResponseModel = __decorate([
930
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResClimateTargets' })
931
+ ], ClimateTargetsResponseModel);
932
+ let ClimateRoleResponseModel = class ClimateRoleResponseModel extends api_response_model_1.BaseSuccessResponseModel {
933
+ };
934
+ exports.ClimateRoleResponseModel = ClimateRoleResponseModel;
935
+ __decorate([
936
+ (0, swagger_1.ApiProperty)({
937
+ description: 'The climate role assignment, or null if the role was removed',
938
+ type: () => space_climate_role_entity_1.SpaceClimateRoleEntity,
939
+ nullable: true,
940
+ required: false,
941
+ }),
942
+ (0, class_transformer_1.Expose)(),
943
+ (0, class_transformer_1.Type)(() => space_climate_role_entity_1.SpaceClimateRoleEntity),
944
+ __metadata("design:type", space_climate_role_entity_1.SpaceClimateRoleEntity)
945
+ ], ClimateRoleResponseModel.prototype, "data", void 0);
946
+ exports.ClimateRoleResponseModel = ClimateRoleResponseModel = __decorate([
947
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResClimateRole' })
948
+ ], ClimateRoleResponseModel);
949
+ let ClimateRolesResponseModel = class ClimateRolesResponseModel extends api_response_model_1.BaseSuccessResponseModel {
950
+ };
951
+ exports.ClimateRolesResponseModel = ClimateRolesResponseModel;
952
+ __decorate([
953
+ (0, swagger_1.ApiProperty)({
954
+ description: 'Array of climate role assignments',
955
+ type: 'array',
956
+ items: { $ref: (0, swagger_1.getSchemaPath)(space_climate_role_entity_1.SpaceClimateRoleEntity) },
957
+ }),
958
+ (0, class_transformer_1.Expose)(),
959
+ (0, class_transformer_1.Type)(() => space_climate_role_entity_1.SpaceClimateRoleEntity),
960
+ __metadata("design:type", Array)
961
+ ], ClimateRolesResponseModel.prototype, "data", void 0);
962
+ exports.ClimateRolesResponseModel = ClimateRolesResponseModel = __decorate([
963
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResClimateRoles' })
964
+ ], ClimateRolesResponseModel);
965
+ let BulkClimateRoleResultItemModel = class BulkClimateRoleResultItemModel {
966
+ };
967
+ exports.BulkClimateRoleResultItemModel = BulkClimateRoleResultItemModel;
968
+ __decorate([
969
+ (0, swagger_1.ApiProperty)({
970
+ name: 'device_id',
971
+ description: 'ID of the climate device',
972
+ type: 'string',
973
+ format: 'uuid',
974
+ example: 'a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7',
975
+ }),
976
+ (0, class_transformer_1.Expose)({ name: 'device_id' }),
977
+ __metadata("design:type", String)
978
+ ], BulkClimateRoleResultItemModel.prototype, "deviceId", void 0);
979
+ __decorate([
980
+ (0, swagger_1.ApiPropertyOptional)({
981
+ name: 'channel_id',
982
+ description: 'ID of the channel (for sensor roles)',
983
+ type: 'string',
984
+ format: 'uuid',
985
+ nullable: true,
986
+ example: null,
987
+ }),
988
+ (0, class_transformer_1.Expose)({ name: 'channel_id' }),
989
+ __metadata("design:type", String)
990
+ ], BulkClimateRoleResultItemModel.prototype, "channelId", void 0);
991
+ __decorate([
992
+ (0, swagger_1.ApiProperty)({
993
+ description: 'Whether the role was set successfully',
994
+ type: 'boolean',
995
+ example: true,
996
+ }),
997
+ (0, class_transformer_1.Expose)(),
998
+ __metadata("design:type", Boolean)
999
+ ], BulkClimateRoleResultItemModel.prototype, "success", void 0);
1000
+ __decorate([
1001
+ (0, swagger_1.ApiPropertyOptional)({
1002
+ description: 'The role that was set (null if failed)',
1003
+ enum: spaces_home_control_constants_1.ClimateRole,
1004
+ nullable: true,
1005
+ example: spaces_home_control_constants_1.ClimateRole.AUTO,
1006
+ }),
1007
+ (0, class_transformer_1.Expose)(),
1008
+ __metadata("design:type", String)
1009
+ ], BulkClimateRoleResultItemModel.prototype, "role", void 0);
1010
+ __decorate([
1011
+ (0, swagger_1.ApiPropertyOptional)({
1012
+ description: 'Error message if the role assignment failed',
1013
+ type: 'string',
1014
+ nullable: true,
1015
+ example: null,
1016
+ }),
1017
+ (0, class_transformer_1.Expose)(),
1018
+ __metadata("design:type", String)
1019
+ ], BulkClimateRoleResultItemModel.prototype, "error", void 0);
1020
+ exports.BulkClimateRoleResultItemModel = BulkClimateRoleResultItemModel = __decorate([
1021
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataBulkClimateRoleItem' })
1022
+ ], BulkClimateRoleResultItemModel);
1023
+ let BulkClimateRolesResultDataModel = class BulkClimateRolesResultDataModel {
1024
+ };
1025
+ exports.BulkClimateRolesResultDataModel = BulkClimateRolesResultDataModel;
1026
+ __decorate([
1027
+ (0, swagger_1.ApiProperty)({
1028
+ description: 'Whether all role assignments succeeded',
1029
+ type: 'boolean',
1030
+ example: true,
1031
+ }),
1032
+ (0, class_transformer_1.Expose)(),
1033
+ __metadata("design:type", Boolean)
1034
+ ], BulkClimateRolesResultDataModel.prototype, "success", void 0);
1035
+ __decorate([
1036
+ (0, swagger_1.ApiProperty)({
1037
+ name: 'total_count',
1038
+ description: 'Total number of role assignments attempted',
1039
+ type: 'integer',
1040
+ example: 3,
1041
+ }),
1042
+ (0, class_transformer_1.Expose)({ name: 'total_count' }),
1043
+ __metadata("design:type", Number)
1044
+ ], BulkClimateRolesResultDataModel.prototype, "totalCount", void 0);
1045
+ __decorate([
1046
+ (0, swagger_1.ApiProperty)({
1047
+ name: 'success_count',
1048
+ description: 'Number of successful role assignments',
1049
+ type: 'integer',
1050
+ example: 3,
1051
+ }),
1052
+ (0, class_transformer_1.Expose)({ name: 'success_count' }),
1053
+ __metadata("design:type", Number)
1054
+ ], BulkClimateRolesResultDataModel.prototype, "successCount", void 0);
1055
+ __decorate([
1056
+ (0, swagger_1.ApiProperty)({
1057
+ name: 'failure_count',
1058
+ description: 'Number of failed role assignments',
1059
+ type: 'integer',
1060
+ example: 0,
1061
+ }),
1062
+ (0, class_transformer_1.Expose)({ name: 'failure_count' }),
1063
+ __metadata("design:type", Number)
1064
+ ], BulkClimateRolesResultDataModel.prototype, "failureCount", void 0);
1065
+ __decorate([
1066
+ (0, swagger_1.ApiProperty)({
1067
+ description: 'Detailed results for each role assignment',
1068
+ type: () => [BulkClimateRoleResultItemModel],
1069
+ }),
1070
+ (0, class_transformer_1.Expose)(),
1071
+ (0, class_transformer_1.Type)(() => BulkClimateRoleResultItemModel),
1072
+ __metadata("design:type", Array)
1073
+ ], BulkClimateRolesResultDataModel.prototype, "results", void 0);
1074
+ exports.BulkClimateRolesResultDataModel = BulkClimateRolesResultDataModel = __decorate([
1075
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataBulkClimateRolesResult' })
1076
+ ], BulkClimateRolesResultDataModel);
1077
+ let BulkClimateRolesResponseModel = class BulkClimateRolesResponseModel extends api_response_model_1.BaseSuccessResponseModel {
1078
+ };
1079
+ exports.BulkClimateRolesResponseModel = BulkClimateRolesResponseModel;
1080
+ __decorate([
1081
+ (0, swagger_1.ApiProperty)({
1082
+ description: 'The result of the bulk climate role update',
1083
+ type: () => BulkClimateRolesResultDataModel,
1084
+ }),
1085
+ (0, class_transformer_1.Expose)(),
1086
+ (0, class_transformer_1.Type)(() => BulkClimateRolesResultDataModel),
1087
+ __metadata("design:type", BulkClimateRolesResultDataModel)
1088
+ ], BulkClimateRolesResponseModel.prototype, "data", void 0);
1089
+ exports.BulkClimateRolesResponseModel = BulkClimateRolesResponseModel = __decorate([
1090
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResBulkClimateRoles' })
1091
+ ], BulkClimateRolesResponseModel);
1092
+ let RoleCoversStateDataModel = RoleCoversStateDataModel_1 = class RoleCoversStateDataModel {
1093
+ static fromState(roleState) {
1094
+ const model = new RoleCoversStateDataModel_1();
1095
+ model.role = roleState.role;
1096
+ model.position = roleState.position;
1097
+ model.isPositionMixed = roleState.isPositionMixed;
1098
+ model.tilt = roleState.tilt;
1099
+ model.isTiltMixed = roleState.isTiltMixed;
1100
+ model.hasTilt = roleState.hasTilt;
1101
+ model.isOpen = roleState.isOpen;
1102
+ model.isClosed = roleState.isClosed;
1103
+ model.devicesCount = roleState.devicesCount;
1104
+ model.devicesOpen = roleState.devicesOpen;
1105
+ return model;
1106
+ }
1107
+ };
1108
+ exports.RoleCoversStateDataModel = RoleCoversStateDataModel;
1109
+ __decorate([
1110
+ (0, swagger_1.ApiProperty)({
1111
+ description: 'The role for this state',
1112
+ enum: spaces_home_control_constants_1.CoversRole,
1113
+ }),
1114
+ (0, class_transformer_1.Expose)(),
1115
+ __metadata("design:type", String)
1116
+ ], RoleCoversStateDataModel.prototype, "role", void 0);
1117
+ __decorate([
1118
+ (0, swagger_1.ApiPropertyOptional)({
1119
+ description: 'Average position for this role (0-100, null if mixed or no data)',
1120
+ type: 'integer',
1121
+ nullable: true,
1122
+ example: 75,
1123
+ }),
1124
+ (0, class_transformer_1.Expose)(),
1125
+ __metadata("design:type", Number)
1126
+ ], RoleCoversStateDataModel.prototype, "position", void 0);
1127
+ __decorate([
1128
+ (0, swagger_1.ApiProperty)({
1129
+ name: 'is_position_mixed',
1130
+ description: 'Whether covers in this role have different positions',
1131
+ type: 'boolean',
1132
+ example: false,
1133
+ }),
1134
+ (0, class_transformer_1.Expose)({ name: 'is_position_mixed' }),
1135
+ __metadata("design:type", Boolean)
1136
+ ], RoleCoversStateDataModel.prototype, "isPositionMixed", void 0);
1137
+ __decorate([
1138
+ (0, swagger_1.ApiPropertyOptional)({
1139
+ description: 'Average tilt for this role (0-100, null if no tilt or mixed)',
1140
+ type: 'integer',
1141
+ nullable: true,
1142
+ example: null,
1143
+ }),
1144
+ (0, class_transformer_1.Expose)(),
1145
+ __metadata("design:type", Number)
1146
+ ], RoleCoversStateDataModel.prototype, "tilt", void 0);
1147
+ __decorate([
1148
+ (0, swagger_1.ApiProperty)({
1149
+ name: 'is_tilt_mixed',
1150
+ description: 'Whether covers in this role have different tilt values',
1151
+ type: 'boolean',
1152
+ example: false,
1153
+ }),
1154
+ (0, class_transformer_1.Expose)({ name: 'is_tilt_mixed' }),
1155
+ __metadata("design:type", Boolean)
1156
+ ], RoleCoversStateDataModel.prototype, "isTiltMixed", void 0);
1157
+ __decorate([
1158
+ (0, swagger_1.ApiProperty)({
1159
+ name: 'has_tilt',
1160
+ description: 'Whether any covers in this role support tilt',
1161
+ type: 'boolean',
1162
+ example: false,
1163
+ }),
1164
+ (0, class_transformer_1.Expose)({ name: 'has_tilt' }),
1165
+ __metadata("design:type", Boolean)
1166
+ ], RoleCoversStateDataModel.prototype, "hasTilt", void 0);
1167
+ __decorate([
1168
+ (0, swagger_1.ApiProperty)({
1169
+ name: 'is_open',
1170
+ description: 'Whether any covers in this role are open (position > 0)',
1171
+ type: 'boolean',
1172
+ example: true,
1173
+ }),
1174
+ (0, class_transformer_1.Expose)({ name: 'is_open' }),
1175
+ __metadata("design:type", Boolean)
1176
+ ], RoleCoversStateDataModel.prototype, "isOpen", void 0);
1177
+ __decorate([
1178
+ (0, swagger_1.ApiProperty)({
1179
+ name: 'is_closed',
1180
+ description: 'Whether all covers in this role are closed (position = 0)',
1181
+ type: 'boolean',
1182
+ example: false,
1183
+ }),
1184
+ (0, class_transformer_1.Expose)({ name: 'is_closed' }),
1185
+ __metadata("design:type", Boolean)
1186
+ ], RoleCoversStateDataModel.prototype, "isClosed", void 0);
1187
+ __decorate([
1188
+ (0, swagger_1.ApiProperty)({
1189
+ name: 'devices_count',
1190
+ description: 'Number of devices in this role',
1191
+ type: 'integer',
1192
+ example: 1,
1193
+ }),
1194
+ (0, class_transformer_1.Expose)({ name: 'devices_count' }),
1195
+ __metadata("design:type", Number)
1196
+ ], RoleCoversStateDataModel.prototype, "devicesCount", void 0);
1197
+ __decorate([
1198
+ (0, swagger_1.ApiProperty)({
1199
+ name: 'devices_open',
1200
+ description: 'Number of devices that are open in this role',
1201
+ type: 'integer',
1202
+ example: 1,
1203
+ }),
1204
+ (0, class_transformer_1.Expose)({ name: 'devices_open' }),
1205
+ __metadata("design:type", Number)
1206
+ ], RoleCoversStateDataModel.prototype, "devicesOpen", void 0);
1207
+ exports.RoleCoversStateDataModel = RoleCoversStateDataModel = RoleCoversStateDataModel_1 = __decorate([
1208
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataRoleCoversState' })
1209
+ ], RoleCoversStateDataModel);
1210
+ let CoversStateDataModel = CoversStateDataModel_1 = class CoversStateDataModel {
1211
+ static fromState(state) {
1212
+ const model = new CoversStateDataModel_1();
1213
+ model.hasCovers = state.hasCovers;
1214
+ model.detectedMode = state.detectedMode;
1215
+ model.modeConfidence = state.modeConfidence;
1216
+ model.modeMatchPercentage = state.modeMatchPercentage;
1217
+ model.isModeFromIntent = state.isModeFromIntent;
1218
+ model.averagePosition = state.averagePosition;
1219
+ model.isPositionMixed = state.isPositionMixed;
1220
+ model.averageTilt = state.averageTilt;
1221
+ model.isTiltMixed = state.isTiltMixed;
1222
+ model.hasTilt = state.hasTilt;
1223
+ model.anyOpen = state.anyOpen;
1224
+ model.allClosed = state.allClosed;
1225
+ model.devicesCount = state.devicesCount;
1226
+ const rolesRecord = {};
1227
+ for (const [roleKey, roleState] of Object.entries(state.roles)) {
1228
+ const roleModel = RoleCoversStateDataModel.fromState(roleState);
1229
+ rolesRecord[roleKey] = (0, class_transformer_1.instanceToPlain)(roleModel, { excludeExtraneousValues: true });
1230
+ }
1231
+ model.roles = rolesRecord;
1232
+ model.coversByRole = { ...state.coversByRole };
1233
+ model.lastAppliedMode = state.lastAppliedMode;
1234
+ model.lastAppliedAt = state.lastAppliedAt;
1235
+ return model;
1236
+ }
1237
+ };
1238
+ exports.CoversStateDataModel = CoversStateDataModel;
1239
+ __decorate([
1240
+ (0, swagger_1.ApiProperty)({
1241
+ name: 'has_covers',
1242
+ description: 'Whether the space has any controllable covers',
1243
+ type: 'boolean',
1244
+ example: true,
1245
+ }),
1246
+ (0, class_transformer_1.Expose)({ name: 'has_covers' }),
1247
+ __metadata("design:type", Boolean)
1248
+ ], CoversStateDataModel.prototype, "hasCovers", void 0);
1249
+ __decorate([
1250
+ (0, swagger_1.ApiPropertyOptional)({
1251
+ name: 'detected_mode',
1252
+ description: 'The covers mode detected from current device states, null if no mode matches',
1253
+ enum: spaces_home_control_constants_1.CoversMode,
1254
+ nullable: true,
1255
+ example: spaces_home_control_constants_1.CoversMode.OPEN,
1256
+ }),
1257
+ (0, class_transformer_1.Expose)({ name: 'detected_mode' }),
1258
+ __metadata("design:type", String)
1259
+ ], CoversStateDataModel.prototype, "detectedMode", void 0);
1260
+ __decorate([
1261
+ (0, swagger_1.ApiProperty)({
1262
+ name: 'mode_confidence',
1263
+ description: 'Confidence level of mode detection: exact (100% match), approximate (70-99% match), none (no match)',
1264
+ enum: ['exact', 'approximate', 'none'],
1265
+ example: 'exact',
1266
+ }),
1267
+ (0, class_transformer_1.Expose)({ name: 'mode_confidence' }),
1268
+ __metadata("design:type", String)
1269
+ ], CoversStateDataModel.prototype, "modeConfidence", void 0);
1270
+ __decorate([
1271
+ (0, swagger_1.ApiPropertyOptional)({
1272
+ name: 'mode_match_percentage',
1273
+ description: 'Percentage of role rules that match the detected mode (0-100), null if no mode detected',
1274
+ type: 'number',
1275
+ nullable: true,
1276
+ example: 100,
1277
+ }),
1278
+ (0, class_transformer_1.Expose)({ name: 'mode_match_percentage' }),
1279
+ __metadata("design:type", Number)
1280
+ ], CoversStateDataModel.prototype, "modeMatchPercentage", void 0);
1281
+ __decorate([
1282
+ (0, swagger_1.ApiProperty)({
1283
+ name: 'is_mode_from_intent',
1284
+ description: 'Whether the current mode was set by intent (true) or achieved by manual adjustments (false)',
1285
+ type: 'boolean',
1286
+ example: true,
1287
+ }),
1288
+ (0, class_transformer_1.Expose)({ name: 'is_mode_from_intent' }),
1289
+ __metadata("design:type", Boolean)
1290
+ ], CoversStateDataModel.prototype, "isModeFromIntent", void 0);
1291
+ __decorate([
1292
+ (0, swagger_1.ApiPropertyOptional)({
1293
+ name: 'average_position',
1294
+ description: 'Average position of all covers (0-100, null if no covers)',
1295
+ type: 'integer',
1296
+ nullable: true,
1297
+ example: 75,
1298
+ }),
1299
+ (0, class_transformer_1.Expose)({ name: 'average_position' }),
1300
+ __metadata("design:type", Number)
1301
+ ], CoversStateDataModel.prototype, "averagePosition", void 0);
1302
+ __decorate([
1303
+ (0, swagger_1.ApiProperty)({
1304
+ name: 'is_position_mixed',
1305
+ description: 'Whether covers have different positions (not uniform)',
1306
+ type: 'boolean',
1307
+ example: false,
1308
+ }),
1309
+ (0, class_transformer_1.Expose)({ name: 'is_position_mixed' }),
1310
+ __metadata("design:type", Boolean)
1311
+ ], CoversStateDataModel.prototype, "isPositionMixed", void 0);
1312
+ __decorate([
1313
+ (0, swagger_1.ApiPropertyOptional)({
1314
+ name: 'average_tilt',
1315
+ description: 'Average tilt of all covers with tilt support (0-100, null if none)',
1316
+ type: 'integer',
1317
+ nullable: true,
1318
+ example: null,
1319
+ }),
1320
+ (0, class_transformer_1.Expose)({ name: 'average_tilt' }),
1321
+ __metadata("design:type", Number)
1322
+ ], CoversStateDataModel.prototype, "averageTilt", void 0);
1323
+ __decorate([
1324
+ (0, swagger_1.ApiProperty)({
1325
+ name: 'is_tilt_mixed',
1326
+ description: 'Whether covers have different tilt values (not uniform)',
1327
+ type: 'boolean',
1328
+ example: false,
1329
+ }),
1330
+ (0, class_transformer_1.Expose)({ name: 'is_tilt_mixed' }),
1331
+ __metadata("design:type", Boolean)
1332
+ ], CoversStateDataModel.prototype, "isTiltMixed", void 0);
1333
+ __decorate([
1334
+ (0, swagger_1.ApiProperty)({
1335
+ name: 'has_tilt',
1336
+ description: 'Whether any covers support tilt',
1337
+ type: 'boolean',
1338
+ example: false,
1339
+ }),
1340
+ (0, class_transformer_1.Expose)({ name: 'has_tilt' }),
1341
+ __metadata("design:type", Boolean)
1342
+ ], CoversStateDataModel.prototype, "hasTilt", void 0);
1343
+ __decorate([
1344
+ (0, swagger_1.ApiProperty)({
1345
+ name: 'any_open',
1346
+ description: 'Whether any covers are open (position > 0)',
1347
+ type: 'boolean',
1348
+ example: true,
1349
+ }),
1350
+ (0, class_transformer_1.Expose)({ name: 'any_open' }),
1351
+ __metadata("design:type", Boolean)
1352
+ ], CoversStateDataModel.prototype, "anyOpen", void 0);
1353
+ __decorate([
1354
+ (0, swagger_1.ApiProperty)({
1355
+ name: 'all_closed',
1356
+ description: 'Whether all covers are closed (position = 0)',
1357
+ type: 'boolean',
1358
+ example: false,
1359
+ }),
1360
+ (0, class_transformer_1.Expose)({ name: 'all_closed' }),
1361
+ __metadata("design:type", Boolean)
1362
+ ], CoversStateDataModel.prototype, "allClosed", void 0);
1363
+ __decorate([
1364
+ (0, swagger_1.ApiProperty)({
1365
+ name: 'devices_count',
1366
+ description: 'Total number of cover devices in the space',
1367
+ type: 'integer',
1368
+ example: 2,
1369
+ }),
1370
+ (0, class_transformer_1.Expose)({ name: 'devices_count' }),
1371
+ __metadata("design:type", Number)
1372
+ ], CoversStateDataModel.prototype, "devicesCount", void 0);
1373
+ __decorate([
1374
+ (0, swagger_1.ApiProperty)({
1375
+ description: 'Per-role aggregated state',
1376
+ type: 'object',
1377
+ additionalProperties: { type: 'object' },
1378
+ example: {
1379
+ primary: {
1380
+ role: 'primary',
1381
+ position: 75,
1382
+ is_position_mixed: false,
1383
+ tilt: null,
1384
+ is_tilt_mixed: false,
1385
+ has_tilt: false,
1386
+ is_open: true,
1387
+ is_closed: false,
1388
+ devices_count: 1,
1389
+ devices_open: 1,
1390
+ },
1391
+ },
1392
+ }),
1393
+ (0, class_transformer_1.Expose)(),
1394
+ __metadata("design:type", Object)
1395
+ ], CoversStateDataModel.prototype, "roles", void 0);
1396
+ __decorate([
1397
+ (0, swagger_1.ApiProperty)({
1398
+ name: 'covers_by_role',
1399
+ description: 'Count of covers grouped by role',
1400
+ type: 'object',
1401
+ additionalProperties: { type: 'integer' },
1402
+ example: { primary: 1, blackout: 1 },
1403
+ }),
1404
+ (0, class_transformer_1.Expose)({ name: 'covers_by_role' }),
1405
+ __metadata("design:type", Object)
1406
+ ], CoversStateDataModel.prototype, "coversByRole", void 0);
1407
+ __decorate([
1408
+ (0, swagger_1.ApiPropertyOptional)({
1409
+ name: 'last_applied_mode',
1410
+ description: 'The last covers mode that was explicitly applied via intent (from storage)',
1411
+ enum: spaces_home_control_constants_1.CoversMode,
1412
+ nullable: true,
1413
+ }),
1414
+ (0, class_transformer_1.Expose)({ name: 'last_applied_mode' }),
1415
+ __metadata("design:type", String)
1416
+ ], CoversStateDataModel.prototype, "lastAppliedMode", void 0);
1417
+ __decorate([
1418
+ (0, swagger_1.ApiPropertyOptional)({
1419
+ name: 'last_applied_at',
1420
+ description: 'When the last mode was applied',
1421
+ type: 'string',
1422
+ format: 'date-time',
1423
+ nullable: true,
1424
+ example: null,
1425
+ }),
1426
+ (0, class_transformer_1.Expose)({ name: 'last_applied_at' }),
1427
+ __metadata("design:type", Date)
1428
+ ], CoversStateDataModel.prototype, "lastAppliedAt", void 0);
1429
+ exports.CoversStateDataModel = CoversStateDataModel = CoversStateDataModel_1 = __decorate([
1430
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataCoversState' })
1431
+ ], CoversStateDataModel);
1432
+ let CoversStateResponseModel = class CoversStateResponseModel extends api_response_model_1.BaseSuccessResponseModel {
1433
+ };
1434
+ exports.CoversStateResponseModel = CoversStateResponseModel;
1435
+ __decorate([
1436
+ (0, swagger_1.ApiProperty)({
1437
+ description: 'The covers state data',
1438
+ type: () => CoversStateDataModel,
1439
+ }),
1440
+ (0, class_transformer_1.Expose)(),
1441
+ (0, class_transformer_1.Type)(() => CoversStateDataModel),
1442
+ __metadata("design:type", CoversStateDataModel)
1443
+ ], CoversStateResponseModel.prototype, "data", void 0);
1444
+ exports.CoversStateResponseModel = CoversStateResponseModel = __decorate([
1445
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResCoversState' })
1446
+ ], CoversStateResponseModel);
1447
+ let CoversIntentResultDataModel = class CoversIntentResultDataModel {
1448
+ };
1449
+ exports.CoversIntentResultDataModel = CoversIntentResultDataModel;
1450
+ __decorate([
1451
+ (0, swagger_1.ApiProperty)({
1452
+ description: 'Whether the intent was executed successfully',
1453
+ type: 'boolean',
1454
+ example: true,
1455
+ }),
1456
+ (0, class_transformer_1.Expose)(),
1457
+ __metadata("design:type", Boolean)
1458
+ ], CoversIntentResultDataModel.prototype, "success", void 0);
1459
+ __decorate([
1460
+ (0, swagger_1.ApiProperty)({
1461
+ name: 'affected_devices',
1462
+ description: 'Number of devices that were successfully affected',
1463
+ type: 'integer',
1464
+ example: 2,
1465
+ }),
1466
+ (0, class_transformer_1.Expose)({ name: 'affected_devices' }),
1467
+ __metadata("design:type", Number)
1468
+ ], CoversIntentResultDataModel.prototype, "affectedDevices", void 0);
1469
+ __decorate([
1470
+ (0, swagger_1.ApiProperty)({
1471
+ name: 'failed_devices',
1472
+ description: 'Number of devices that failed to respond',
1473
+ type: 'integer',
1474
+ example: 0,
1475
+ }),
1476
+ (0, class_transformer_1.Expose)({ name: 'failed_devices' }),
1477
+ __metadata("design:type", Number)
1478
+ ], CoversIntentResultDataModel.prototype, "failedDevices", void 0);
1479
+ __decorate([
1480
+ (0, swagger_1.ApiPropertyOptional)({
1481
+ name: 'skipped_offline_devices',
1482
+ description: 'Number of devices skipped because they are offline',
1483
+ type: 'integer',
1484
+ example: 1,
1485
+ }),
1486
+ (0, class_transformer_1.Expose)({ name: 'skipped_offline_devices' }),
1487
+ __metadata("design:type", Number)
1488
+ ], CoversIntentResultDataModel.prototype, "skippedOfflineDevices", void 0);
1489
+ __decorate([
1490
+ (0, swagger_1.ApiPropertyOptional)({
1491
+ name: 'offline_device_ids',
1492
+ description: 'IDs of devices that were skipped because they are offline',
1493
+ type: 'array',
1494
+ items: { type: 'string', format: 'uuid' },
1495
+ example: ['a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7'],
1496
+ }),
1497
+ (0, class_transformer_1.Expose)({ name: 'offline_device_ids' }),
1498
+ __metadata("design:type", Array)
1499
+ ], CoversIntentResultDataModel.prototype, "offlineDeviceIds", void 0);
1500
+ __decorate([
1501
+ (0, swagger_1.ApiPropertyOptional)({
1502
+ name: 'failed_targets',
1503
+ description: 'List of device IDs where command execution failed',
1504
+ type: [String],
1505
+ nullable: true,
1506
+ example: ['device-uuid-1'],
1507
+ }),
1508
+ (0, class_transformer_1.Expose)({ name: 'failed_targets' }),
1509
+ __metadata("design:type", Array)
1510
+ ], CoversIntentResultDataModel.prototype, "failedTargets", void 0);
1511
+ __decorate([
1512
+ (0, swagger_1.ApiPropertyOptional)({
1513
+ name: 'new_position',
1514
+ description: 'The new average position after the intent (null if not applicable)',
1515
+ type: 'integer',
1516
+ nullable: true,
1517
+ example: 50,
1518
+ }),
1519
+ (0, class_transformer_1.Expose)({ name: 'new_position' }),
1520
+ __metadata("design:type", Number)
1521
+ ], CoversIntentResultDataModel.prototype, "newPosition", void 0);
1522
+ exports.CoversIntentResultDataModel = CoversIntentResultDataModel = __decorate([
1523
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataCoversIntentResult' })
1524
+ ], CoversIntentResultDataModel);
1525
+ let CoversIntentResponseModel = class CoversIntentResponseModel extends api_response_model_1.BaseSuccessResponseModel {
1526
+ };
1527
+ exports.CoversIntentResponseModel = CoversIntentResponseModel;
1528
+ __decorate([
1529
+ (0, swagger_1.ApiProperty)({
1530
+ description: 'The result of the covers intent execution',
1531
+ type: () => CoversIntentResultDataModel,
1532
+ }),
1533
+ (0, class_transformer_1.Expose)(),
1534
+ (0, class_transformer_1.Type)(() => CoversIntentResultDataModel),
1535
+ __metadata("design:type", CoversIntentResultDataModel)
1536
+ ], CoversIntentResponseModel.prototype, "data", void 0);
1537
+ exports.CoversIntentResponseModel = CoversIntentResponseModel = __decorate([
1538
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResCoversIntent' })
1539
+ ], CoversIntentResponseModel);
1540
+ let CoversTargetDataModel = class CoversTargetDataModel {
1541
+ };
1542
+ exports.CoversTargetDataModel = CoversTargetDataModel;
1543
+ __decorate([
1544
+ (0, swagger_1.ApiProperty)({
1545
+ name: 'device_id',
1546
+ description: 'ID of the window covering device',
1547
+ type: 'string',
1548
+ format: 'uuid',
1549
+ example: 'a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7',
1550
+ }),
1551
+ (0, class_transformer_1.Expose)({ name: 'device_id' }),
1552
+ __metadata("design:type", String)
1553
+ ], CoversTargetDataModel.prototype, "deviceId", void 0);
1554
+ __decorate([
1555
+ (0, swagger_1.ApiProperty)({
1556
+ name: 'device_name',
1557
+ description: 'Name of the device',
1558
+ type: 'string',
1559
+ example: 'Living Room Blinds',
1560
+ }),
1561
+ (0, class_transformer_1.Expose)({ name: 'device_name' }),
1562
+ __metadata("design:type", String)
1563
+ ], CoversTargetDataModel.prototype, "deviceName", void 0);
1564
+ __decorate([
1565
+ (0, swagger_1.ApiProperty)({
1566
+ name: 'channel_id',
1567
+ description: 'ID of the window covering channel',
1568
+ type: 'string',
1569
+ format: 'uuid',
1570
+ example: 'c3d29eb4-632f-5e8c-c4af-ded8b9e6c0f8',
1571
+ }),
1572
+ (0, class_transformer_1.Expose)({ name: 'channel_id' }),
1573
+ __metadata("design:type", String)
1574
+ ], CoversTargetDataModel.prototype, "channelId", void 0);
1575
+ __decorate([
1576
+ (0, swagger_1.ApiProperty)({
1577
+ name: 'channel_name',
1578
+ description: 'Name of the channel',
1579
+ type: 'string',
1580
+ example: 'Window Covering',
1581
+ }),
1582
+ (0, class_transformer_1.Expose)({ name: 'channel_name' }),
1583
+ __metadata("design:type", String)
1584
+ ], CoversTargetDataModel.prototype, "channelName", void 0);
1585
+ __decorate([
1586
+ (0, swagger_1.ApiPropertyOptional)({
1587
+ description: 'The assigned covers role (null if not assigned)',
1588
+ enum: spaces_home_control_constants_1.CoversRole,
1589
+ nullable: true,
1590
+ example: spaces_home_control_constants_1.CoversRole.PRIMARY,
1591
+ }),
1592
+ (0, class_transformer_1.Expose)(),
1593
+ __metadata("design:type", String)
1594
+ ], CoversTargetDataModel.prototype, "role", void 0);
1595
+ __decorate([
1596
+ (0, swagger_1.ApiProperty)({
1597
+ description: 'Priority for role ordering (lower = higher priority)',
1598
+ type: 'integer',
1599
+ example: 0,
1600
+ }),
1601
+ (0, class_transformer_1.Expose)(),
1602
+ __metadata("design:type", Number)
1603
+ ], CoversTargetDataModel.prototype, "priority", void 0);
1604
+ __decorate([
1605
+ (0, swagger_1.ApiProperty)({
1606
+ name: 'has_position',
1607
+ description: 'Whether the cover supports position control',
1608
+ type: 'boolean',
1609
+ example: true,
1610
+ }),
1611
+ (0, class_transformer_1.Expose)({ name: 'has_position' }),
1612
+ __metadata("design:type", Boolean)
1613
+ ], CoversTargetDataModel.prototype, "hasPosition", void 0);
1614
+ __decorate([
1615
+ (0, swagger_1.ApiProperty)({
1616
+ name: 'has_command',
1617
+ description: 'Whether the cover supports open/close/stop commands',
1618
+ type: 'boolean',
1619
+ example: true,
1620
+ }),
1621
+ (0, class_transformer_1.Expose)({ name: 'has_command' }),
1622
+ __metadata("design:type", Boolean)
1623
+ ], CoversTargetDataModel.prototype, "hasCommand", void 0);
1624
+ __decorate([
1625
+ (0, swagger_1.ApiProperty)({
1626
+ name: 'has_tilt',
1627
+ description: 'Whether the cover supports tilt control',
1628
+ type: 'boolean',
1629
+ example: false,
1630
+ }),
1631
+ (0, class_transformer_1.Expose)({ name: 'has_tilt' }),
1632
+ __metadata("design:type", Boolean)
1633
+ ], CoversTargetDataModel.prototype, "hasTilt", void 0);
1634
+ __decorate([
1635
+ (0, swagger_1.ApiPropertyOptional)({
1636
+ name: 'cover_type',
1637
+ description: 'Type of cover (curtain, blind, roller, etc.)',
1638
+ type: 'string',
1639
+ nullable: true,
1640
+ example: 'blind',
1641
+ }),
1642
+ (0, class_transformer_1.Expose)({ name: 'cover_type' }),
1643
+ __metadata("design:type", String)
1644
+ ], CoversTargetDataModel.prototype, "coverType", void 0);
1645
+ exports.CoversTargetDataModel = CoversTargetDataModel = __decorate([
1646
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataCoversTarget' })
1647
+ ], CoversTargetDataModel);
1648
+ let CoversTargetsResponseModel = class CoversTargetsResponseModel extends api_response_model_1.BaseSuccessResponseModel {
1649
+ };
1650
+ exports.CoversTargetsResponseModel = CoversTargetsResponseModel;
1651
+ __decorate([
1652
+ (0, swagger_1.ApiProperty)({
1653
+ description: 'Array of covers targets in the space with their role assignments',
1654
+ type: () => [CoversTargetDataModel],
1655
+ }),
1656
+ (0, class_transformer_1.Expose)(),
1657
+ (0, class_transformer_1.Type)(() => CoversTargetDataModel),
1658
+ __metadata("design:type", Array)
1659
+ ], CoversTargetsResponseModel.prototype, "data", void 0);
1660
+ exports.CoversTargetsResponseModel = CoversTargetsResponseModel = __decorate([
1661
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResCoversTargets' })
1662
+ ], CoversTargetsResponseModel);
1663
+ let CoversRoleResponseModel = class CoversRoleResponseModel extends api_response_model_1.BaseSuccessResponseModel {
1664
+ };
1665
+ exports.CoversRoleResponseModel = CoversRoleResponseModel;
1666
+ __decorate([
1667
+ (0, swagger_1.ApiProperty)({
1668
+ description: 'The covers role assignment',
1669
+ type: () => space_covers_role_entity_1.SpaceCoversRoleEntity,
1670
+ }),
1671
+ (0, class_transformer_1.Expose)(),
1672
+ (0, class_transformer_1.Type)(() => space_covers_role_entity_1.SpaceCoversRoleEntity),
1673
+ __metadata("design:type", space_covers_role_entity_1.SpaceCoversRoleEntity)
1674
+ ], CoversRoleResponseModel.prototype, "data", void 0);
1675
+ exports.CoversRoleResponseModel = CoversRoleResponseModel = __decorate([
1676
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResCoversRole' })
1677
+ ], CoversRoleResponseModel);
1678
+ let BulkCoversRoleResultItemModel = class BulkCoversRoleResultItemModel {
1679
+ };
1680
+ exports.BulkCoversRoleResultItemModel = BulkCoversRoleResultItemModel;
1681
+ __decorate([
1682
+ (0, swagger_1.ApiProperty)({
1683
+ name: 'device_id',
1684
+ description: 'ID of the window covering device',
1685
+ type: 'string',
1686
+ format: 'uuid',
1687
+ example: 'a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7',
1688
+ }),
1689
+ (0, class_transformer_1.Expose)({ name: 'device_id' }),
1690
+ __metadata("design:type", String)
1691
+ ], BulkCoversRoleResultItemModel.prototype, "deviceId", void 0);
1692
+ __decorate([
1693
+ (0, swagger_1.ApiProperty)({
1694
+ name: 'channel_id',
1695
+ description: 'ID of the window covering channel',
1696
+ type: 'string',
1697
+ format: 'uuid',
1698
+ example: 'c3d29eb4-632f-5e8c-c4af-ded8b9e6c0f8',
1699
+ }),
1700
+ (0, class_transformer_1.Expose)({ name: 'channel_id' }),
1701
+ __metadata("design:type", String)
1702
+ ], BulkCoversRoleResultItemModel.prototype, "channelId", void 0);
1703
+ __decorate([
1704
+ (0, swagger_1.ApiProperty)({
1705
+ description: 'Whether the role was set successfully',
1706
+ type: 'boolean',
1707
+ example: true,
1708
+ }),
1709
+ (0, class_transformer_1.Expose)(),
1710
+ __metadata("design:type", Boolean)
1711
+ ], BulkCoversRoleResultItemModel.prototype, "success", void 0);
1712
+ __decorate([
1713
+ (0, swagger_1.ApiPropertyOptional)({
1714
+ description: 'The role that was set (null if failed)',
1715
+ enum: spaces_home_control_constants_1.CoversRole,
1716
+ nullable: true,
1717
+ example: spaces_home_control_constants_1.CoversRole.PRIMARY,
1718
+ }),
1719
+ (0, class_transformer_1.Expose)(),
1720
+ __metadata("design:type", String)
1721
+ ], BulkCoversRoleResultItemModel.prototype, "role", void 0);
1722
+ __decorate([
1723
+ (0, swagger_1.ApiPropertyOptional)({
1724
+ description: 'Error message if the role assignment failed',
1725
+ type: 'string',
1726
+ nullable: true,
1727
+ example: null,
1728
+ }),
1729
+ (0, class_transformer_1.Expose)(),
1730
+ __metadata("design:type", String)
1731
+ ], BulkCoversRoleResultItemModel.prototype, "error", void 0);
1732
+ exports.BulkCoversRoleResultItemModel = BulkCoversRoleResultItemModel = __decorate([
1733
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataBulkCoversRoleResultItem' })
1734
+ ], BulkCoversRoleResultItemModel);
1735
+ let BulkCoversRolesResultDataModel = class BulkCoversRolesResultDataModel {
1736
+ };
1737
+ exports.BulkCoversRolesResultDataModel = BulkCoversRolesResultDataModel;
1738
+ __decorate([
1739
+ (0, swagger_1.ApiProperty)({
1740
+ description: 'Whether all role assignments succeeded',
1741
+ type: 'boolean',
1742
+ example: true,
1743
+ }),
1744
+ (0, class_transformer_1.Expose)(),
1745
+ __metadata("design:type", Boolean)
1746
+ ], BulkCoversRolesResultDataModel.prototype, "success", void 0);
1747
+ __decorate([
1748
+ (0, swagger_1.ApiProperty)({
1749
+ name: 'total_count',
1750
+ description: 'Total number of role assignments attempted',
1751
+ type: 'integer',
1752
+ example: 2,
1753
+ }),
1754
+ (0, class_transformer_1.Expose)({ name: 'total_count' }),
1755
+ __metadata("design:type", Number)
1756
+ ], BulkCoversRolesResultDataModel.prototype, "totalCount", void 0);
1757
+ __decorate([
1758
+ (0, swagger_1.ApiProperty)({
1759
+ name: 'success_count',
1760
+ description: 'Number of successful role assignments',
1761
+ type: 'integer',
1762
+ example: 2,
1763
+ }),
1764
+ (0, class_transformer_1.Expose)({ name: 'success_count' }),
1765
+ __metadata("design:type", Number)
1766
+ ], BulkCoversRolesResultDataModel.prototype, "successCount", void 0);
1767
+ __decorate([
1768
+ (0, swagger_1.ApiProperty)({
1769
+ name: 'failure_count',
1770
+ description: 'Number of failed role assignments',
1771
+ type: 'integer',
1772
+ example: 0,
1773
+ }),
1774
+ (0, class_transformer_1.Expose)({ name: 'failure_count' }),
1775
+ __metadata("design:type", Number)
1776
+ ], BulkCoversRolesResultDataModel.prototype, "failureCount", void 0);
1777
+ __decorate([
1778
+ (0, swagger_1.ApiProperty)({
1779
+ description: 'Detailed results for each role assignment',
1780
+ type: () => [BulkCoversRoleResultItemModel],
1781
+ }),
1782
+ (0, class_transformer_1.Expose)(),
1783
+ (0, class_transformer_1.Type)(() => BulkCoversRoleResultItemModel),
1784
+ __metadata("design:type", Array)
1785
+ ], BulkCoversRolesResultDataModel.prototype, "results", void 0);
1786
+ exports.BulkCoversRolesResultDataModel = BulkCoversRolesResultDataModel = __decorate([
1787
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataBulkCoversRolesResult' })
1788
+ ], BulkCoversRolesResultDataModel);
1789
+ let BulkCoversRolesResponseModel = class BulkCoversRolesResponseModel extends api_response_model_1.BaseSuccessResponseModel {
1790
+ };
1791
+ exports.BulkCoversRolesResponseModel = BulkCoversRolesResponseModel;
1792
+ __decorate([
1793
+ (0, swagger_1.ApiProperty)({
1794
+ description: 'The result of the bulk covers role update',
1795
+ type: () => BulkCoversRolesResultDataModel,
1796
+ }),
1797
+ (0, class_transformer_1.Expose)(),
1798
+ (0, class_transformer_1.Type)(() => BulkCoversRolesResultDataModel),
1799
+ __metadata("design:type", BulkCoversRolesResultDataModel)
1800
+ ], BulkCoversRolesResponseModel.prototype, "data", void 0);
1801
+ exports.BulkCoversRolesResponseModel = BulkCoversRolesResponseModel = __decorate([
1802
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResBulkCoversRoles' })
1803
+ ], BulkCoversRolesResponseModel);
1804
+ let SuggestionDataModel = class SuggestionDataModel {
1805
+ };
1806
+ exports.SuggestionDataModel = SuggestionDataModel;
1807
+ __decorate([
1808
+ (0, swagger_1.ApiProperty)({
1809
+ description: 'Type of the suggestion',
1810
+ enum: spaces_home_control_constants_1.SuggestionType,
1811
+ example: spaces_home_control_constants_1.SuggestionType.LIGHTING_RELAX,
1812
+ }),
1813
+ (0, class_transformer_1.Expose)(),
1814
+ __metadata("design:type", String)
1815
+ ], SuggestionDataModel.prototype, "type", void 0);
1816
+ __decorate([
1817
+ (0, swagger_1.ApiProperty)({
1818
+ description: 'Short title for the suggestion',
1819
+ type: 'string',
1820
+ example: 'Relax lighting',
1821
+ }),
1822
+ (0, class_transformer_1.Expose)(),
1823
+ __metadata("design:type", String)
1824
+ ], SuggestionDataModel.prototype, "title", void 0);
1825
+ __decorate([
1826
+ (0, swagger_1.ApiPropertyOptional)({
1827
+ description: 'Optional reason/explanation for the suggestion',
1828
+ type: 'string',
1829
+ nullable: true,
1830
+ example: 'Evening time - switch to a calmer lighting mode',
1831
+ }),
1832
+ (0, class_transformer_1.Expose)(),
1833
+ __metadata("design:type", String)
1834
+ ], SuggestionDataModel.prototype, "reason", void 0);
1835
+ __decorate([
1836
+ (0, swagger_1.ApiProperty)({
1837
+ name: 'intent_type',
1838
+ description: 'The intent type this suggestion would execute',
1839
+ type: 'string',
1840
+ example: 'set_mode',
1841
+ }),
1842
+ (0, class_transformer_1.Expose)({ name: 'intent_type' }),
1843
+ __metadata("design:type", String)
1844
+ ], SuggestionDataModel.prototype, "intentType", void 0);
1845
+ __decorate([
1846
+ (0, swagger_1.ApiPropertyOptional)({
1847
+ name: 'intent_mode',
1848
+ description: 'The intent mode parameter (if applicable)',
1849
+ type: 'string',
1850
+ nullable: true,
1851
+ example: 'relax',
1852
+ }),
1853
+ (0, class_transformer_1.Expose)({ name: 'intent_mode' }),
1854
+ __metadata("design:type", String)
1855
+ ], SuggestionDataModel.prototype, "intentMode", void 0);
1856
+ exports.SuggestionDataModel = SuggestionDataModel = __decorate([
1857
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataSuggestion' })
1858
+ ], SuggestionDataModel);
1859
+ let SuggestionResponseModel = class SuggestionResponseModel extends api_response_model_1.BaseSuccessResponseModel {
1860
+ };
1861
+ exports.SuggestionResponseModel = SuggestionResponseModel;
1862
+ __decorate([
1863
+ (0, swagger_1.ApiProperty)({
1864
+ description: 'The suggestion data (null if no suggestion available)',
1865
+ type: () => SuggestionDataModel,
1866
+ nullable: true,
1867
+ }),
1868
+ (0, class_transformer_1.Expose)(),
1869
+ (0, class_transformer_1.Type)(() => SuggestionDataModel),
1870
+ __metadata("design:type", SuggestionDataModel)
1871
+ ], SuggestionResponseModel.prototype, "data", void 0);
1872
+ exports.SuggestionResponseModel = SuggestionResponseModel = __decorate([
1873
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResSuggestion' })
1874
+ ], SuggestionResponseModel);
1875
+ let SuggestionFeedbackResultDataModel = class SuggestionFeedbackResultDataModel {
1876
+ };
1877
+ exports.SuggestionFeedbackResultDataModel = SuggestionFeedbackResultDataModel;
1878
+ __decorate([
1879
+ (0, swagger_1.ApiProperty)({
1880
+ description: 'Whether the feedback was recorded successfully',
1881
+ type: 'boolean',
1882
+ example: true,
1883
+ }),
1884
+ (0, class_transformer_1.Expose)(),
1885
+ __metadata("design:type", Boolean)
1886
+ ], SuggestionFeedbackResultDataModel.prototype, "success", void 0);
1887
+ __decorate([
1888
+ (0, swagger_1.ApiPropertyOptional)({
1889
+ name: 'intent_executed',
1890
+ description: 'Whether the intent was executed (only for applied feedback)',
1891
+ type: 'boolean',
1892
+ example: true,
1893
+ }),
1894
+ (0, class_transformer_1.Expose)({ name: 'intent_executed' }),
1895
+ __metadata("design:type", Boolean)
1896
+ ], SuggestionFeedbackResultDataModel.prototype, "intentExecuted", void 0);
1897
+ exports.SuggestionFeedbackResultDataModel = SuggestionFeedbackResultDataModel = __decorate([
1898
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataSuggestionFeedbackResult' })
1899
+ ], SuggestionFeedbackResultDataModel);
1900
+ let SuggestionFeedbackResponseModel = class SuggestionFeedbackResponseModel extends api_response_model_1.BaseSuccessResponseModel {
1901
+ };
1902
+ exports.SuggestionFeedbackResponseModel = SuggestionFeedbackResponseModel;
1903
+ __decorate([
1904
+ (0, swagger_1.ApiProperty)({
1905
+ description: 'The result of the suggestion feedback',
1906
+ type: () => SuggestionFeedbackResultDataModel,
1907
+ }),
1908
+ (0, class_transformer_1.Expose)(),
1909
+ (0, class_transformer_1.Type)(() => SuggestionFeedbackResultDataModel),
1910
+ __metadata("design:type", SuggestionFeedbackResultDataModel)
1911
+ ], SuggestionFeedbackResponseModel.prototype, "data", void 0);
1912
+ exports.SuggestionFeedbackResponseModel = SuggestionFeedbackResponseModel = __decorate([
1913
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResSuggestionFeedback' })
1914
+ ], SuggestionFeedbackResponseModel);
1915
+ let IntentEnumValueDataModel = class IntentEnumValueDataModel {
1916
+ };
1917
+ exports.IntentEnumValueDataModel = IntentEnumValueDataModel;
1918
+ __decorate([
1919
+ (0, swagger_1.ApiProperty)({
1920
+ description: 'The enum value identifier',
1921
+ type: 'string',
1922
+ example: 'work',
1923
+ }),
1924
+ (0, class_transformer_1.Expose)(),
1925
+ __metadata("design:type", String)
1926
+ ], IntentEnumValueDataModel.prototype, "value", void 0);
1927
+ __decorate([
1928
+ (0, swagger_1.ApiProperty)({
1929
+ description: 'Human-readable label for the value',
1930
+ type: 'string',
1931
+ example: 'Work',
1932
+ }),
1933
+ (0, class_transformer_1.Expose)(),
1934
+ __metadata("design:type", String)
1935
+ ], IntentEnumValueDataModel.prototype, "label", void 0);
1936
+ __decorate([
1937
+ (0, swagger_1.ApiPropertyOptional)({
1938
+ description: 'Description of what this value does',
1939
+ type: 'string',
1940
+ example: 'Bright lighting for focus and productivity',
1941
+ }),
1942
+ (0, class_transformer_1.Expose)(),
1943
+ __metadata("design:type", String)
1944
+ ], IntentEnumValueDataModel.prototype, "description", void 0);
1945
+ __decorate([
1946
+ (0, swagger_1.ApiPropertyOptional)({
1947
+ description: 'Icon identifier for this value',
1948
+ type: 'string',
1949
+ example: 'mdi:briefcase',
1950
+ }),
1951
+ (0, class_transformer_1.Expose)(),
1952
+ __metadata("design:type", String)
1953
+ ], IntentEnumValueDataModel.prototype, "icon", void 0);
1954
+ exports.IntentEnumValueDataModel = IntentEnumValueDataModel = __decorate([
1955
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataIntentEnumValue' })
1956
+ ], IntentEnumValueDataModel);
1957
+ let IntentParamDataModel = class IntentParamDataModel {
1958
+ };
1959
+ exports.IntentParamDataModel = IntentParamDataModel;
1960
+ __decorate([
1961
+ (0, swagger_1.ApiProperty)({
1962
+ description: 'Parameter name',
1963
+ type: 'string',
1964
+ example: 'mode',
1965
+ }),
1966
+ (0, class_transformer_1.Expose)(),
1967
+ __metadata("design:type", String)
1968
+ ], IntentParamDataModel.prototype, "name", void 0);
1969
+ __decorate([
1970
+ (0, swagger_1.ApiProperty)({
1971
+ description: 'Parameter type',
1972
+ enum: ['enum', 'boolean', 'number'],
1973
+ example: 'enum',
1974
+ }),
1975
+ (0, class_transformer_1.Expose)(),
1976
+ __metadata("design:type", String)
1977
+ ], IntentParamDataModel.prototype, "type", void 0);
1978
+ __decorate([
1979
+ (0, swagger_1.ApiProperty)({
1980
+ description: 'Whether the parameter is required',
1981
+ type: 'boolean',
1982
+ example: true,
1983
+ }),
1984
+ (0, class_transformer_1.Expose)(),
1985
+ __metadata("design:type", Boolean)
1986
+ ], IntentParamDataModel.prototype, "required", void 0);
1987
+ __decorate([
1988
+ (0, swagger_1.ApiProperty)({
1989
+ description: 'Description of the parameter',
1990
+ type: 'string',
1991
+ example: 'The lighting mode to apply',
1992
+ }),
1993
+ (0, class_transformer_1.Expose)(),
1994
+ __metadata("design:type", String)
1995
+ ], IntentParamDataModel.prototype, "description", void 0);
1996
+ __decorate([
1997
+ (0, swagger_1.ApiPropertyOptional)({
1998
+ name: 'enum_values',
1999
+ description: 'Available values for enum type parameters',
2000
+ type: () => [IntentEnumValueDataModel],
2001
+ }),
2002
+ (0, class_transformer_1.Expose)({ name: 'enum_values' }),
2003
+ (0, class_transformer_1.Type)(() => IntentEnumValueDataModel),
2004
+ __metadata("design:type", Array)
2005
+ ], IntentParamDataModel.prototype, "enumValues", void 0);
2006
+ __decorate([
2007
+ (0, swagger_1.ApiPropertyOptional)({
2008
+ name: 'min_value',
2009
+ description: 'Minimum value for number type parameters',
2010
+ type: 'number',
2011
+ example: -10,
2012
+ }),
2013
+ (0, class_transformer_1.Expose)({ name: 'min_value' }),
2014
+ __metadata("design:type", Number)
2015
+ ], IntentParamDataModel.prototype, "minValue", void 0);
2016
+ __decorate([
2017
+ (0, swagger_1.ApiPropertyOptional)({
2018
+ name: 'max_value',
2019
+ description: 'Maximum value for number type parameters',
2020
+ type: 'number',
2021
+ example: 50,
2022
+ }),
2023
+ (0, class_transformer_1.Expose)({ name: 'max_value' }),
2024
+ __metadata("design:type", Number)
2025
+ ], IntentParamDataModel.prototype, "maxValue", void 0);
2026
+ exports.IntentParamDataModel = IntentParamDataModel = __decorate([
2027
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataIntentParam' })
2028
+ ], IntentParamDataModel);
2029
+ let IntentTypeDataModel = class IntentTypeDataModel {
2030
+ };
2031
+ exports.IntentTypeDataModel = IntentTypeDataModel;
2032
+ __decorate([
2033
+ (0, swagger_1.ApiProperty)({
2034
+ description: 'Intent type identifier',
2035
+ type: 'string',
2036
+ example: 'set_mode',
2037
+ }),
2038
+ (0, class_transformer_1.Expose)(),
2039
+ __metadata("design:type", String)
2040
+ ], IntentTypeDataModel.prototype, "type", void 0);
2041
+ __decorate([
2042
+ (0, swagger_1.ApiProperty)({
2043
+ description: 'Human-readable label for the intent',
2044
+ type: 'string',
2045
+ example: 'Set Mode',
2046
+ }),
2047
+ (0, class_transformer_1.Expose)(),
2048
+ __metadata("design:type", String)
2049
+ ], IntentTypeDataModel.prototype, "label", void 0);
2050
+ __decorate([
2051
+ (0, swagger_1.ApiProperty)({
2052
+ description: 'Description of what the intent does',
2053
+ type: 'string',
2054
+ example: 'Set a lighting mode (work/relax/night) with role-based brightness levels',
2055
+ }),
2056
+ (0, class_transformer_1.Expose)(),
2057
+ __metadata("design:type", String)
2058
+ ], IntentTypeDataModel.prototype, "description", void 0);
2059
+ __decorate([
2060
+ (0, swagger_1.ApiProperty)({
2061
+ description: 'Icon identifier for the intent',
2062
+ type: 'string',
2063
+ example: 'mdi:lightbulb-group',
2064
+ }),
2065
+ (0, class_transformer_1.Expose)(),
2066
+ __metadata("design:type", String)
2067
+ ], IntentTypeDataModel.prototype, "icon", void 0);
2068
+ __decorate([
2069
+ (0, swagger_1.ApiProperty)({
2070
+ description: 'Parameters for this intent',
2071
+ type: () => [IntentParamDataModel],
2072
+ }),
2073
+ (0, class_transformer_1.Expose)(),
2074
+ (0, class_transformer_1.Type)(() => IntentParamDataModel),
2075
+ __metadata("design:type", Array)
2076
+ ], IntentTypeDataModel.prototype, "params", void 0);
2077
+ exports.IntentTypeDataModel = IntentTypeDataModel = __decorate([
2078
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataIntentType' })
2079
+ ], IntentTypeDataModel);
2080
+ let IntentCategoryDataModel = class IntentCategoryDataModel {
2081
+ };
2082
+ exports.IntentCategoryDataModel = IntentCategoryDataModel;
2083
+ __decorate([
2084
+ (0, swagger_1.ApiProperty)({
2085
+ description: 'Category identifier',
2086
+ enum: spaces_home_control_constants_1.IntentCategory,
2087
+ example: spaces_home_control_constants_1.IntentCategory.LIGHTING,
2088
+ }),
2089
+ (0, class_transformer_1.Expose)(),
2090
+ __metadata("design:type", String)
2091
+ ], IntentCategoryDataModel.prototype, "category", void 0);
2092
+ __decorate([
2093
+ (0, swagger_1.ApiProperty)({
2094
+ description: 'Human-readable label for the category',
2095
+ type: 'string',
2096
+ example: 'Lighting',
2097
+ }),
2098
+ (0, class_transformer_1.Expose)(),
2099
+ __metadata("design:type", String)
2100
+ ], IntentCategoryDataModel.prototype, "label", void 0);
2101
+ __decorate([
2102
+ (0, swagger_1.ApiProperty)({
2103
+ description: 'Description of the category',
2104
+ type: 'string',
2105
+ example: 'Control lights in the space with modes and brightness adjustments',
2106
+ }),
2107
+ (0, class_transformer_1.Expose)(),
2108
+ __metadata("design:type", String)
2109
+ ], IntentCategoryDataModel.prototype, "description", void 0);
2110
+ __decorate([
2111
+ (0, swagger_1.ApiProperty)({
2112
+ description: 'Icon identifier for the category',
2113
+ type: 'string',
2114
+ example: 'mdi:lightbulb-group',
2115
+ }),
2116
+ (0, class_transformer_1.Expose)(),
2117
+ __metadata("design:type", String)
2118
+ ], IntentCategoryDataModel.prototype, "icon", void 0);
2119
+ __decorate([
2120
+ (0, swagger_1.ApiProperty)({
2121
+ description: 'Available intents in this category',
2122
+ type: () => [IntentTypeDataModel],
2123
+ }),
2124
+ (0, class_transformer_1.Expose)(),
2125
+ (0, class_transformer_1.Type)(() => IntentTypeDataModel),
2126
+ __metadata("design:type", Array)
2127
+ ], IntentCategoryDataModel.prototype, "intents", void 0);
2128
+ exports.IntentCategoryDataModel = IntentCategoryDataModel = __decorate([
2129
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataIntentCategory' })
2130
+ ], IntentCategoryDataModel);
2131
+ let QuickActionDataModel = class QuickActionDataModel {
2132
+ };
2133
+ exports.QuickActionDataModel = QuickActionDataModel;
2134
+ __decorate([
2135
+ (0, swagger_1.ApiProperty)({
2136
+ description: 'Quick action type identifier',
2137
+ enum: spaces_home_control_constants_1.QuickActionType,
2138
+ example: spaces_home_control_constants_1.QuickActionType.LIGHTING_WORK,
2139
+ }),
2140
+ (0, class_transformer_1.Expose)(),
2141
+ __metadata("design:type", String)
2142
+ ], QuickActionDataModel.prototype, "type", void 0);
2143
+ __decorate([
2144
+ (0, swagger_1.ApiProperty)({
2145
+ description: 'Human-readable label for the action',
2146
+ type: 'string',
2147
+ example: 'Work Mode',
2148
+ }),
2149
+ (0, class_transformer_1.Expose)(),
2150
+ __metadata("design:type", String)
2151
+ ], QuickActionDataModel.prototype, "label", void 0);
2152
+ __decorate([
2153
+ (0, swagger_1.ApiProperty)({
2154
+ description: 'Description of the action',
2155
+ type: 'string',
2156
+ example: 'Bright lighting for focus',
2157
+ }),
2158
+ (0, class_transformer_1.Expose)(),
2159
+ __metadata("design:type", String)
2160
+ ], QuickActionDataModel.prototype, "description", void 0);
2161
+ __decorate([
2162
+ (0, swagger_1.ApiProperty)({
2163
+ description: 'Icon identifier for the action',
2164
+ type: 'string',
2165
+ example: 'mdi:briefcase',
2166
+ }),
2167
+ (0, class_transformer_1.Expose)(),
2168
+ __metadata("design:type", String)
2169
+ ], QuickActionDataModel.prototype, "icon", void 0);
2170
+ __decorate([
2171
+ (0, swagger_1.ApiProperty)({
2172
+ description: 'The intent category this action belongs to',
2173
+ enum: spaces_home_control_constants_1.IntentCategory,
2174
+ example: spaces_home_control_constants_1.IntentCategory.LIGHTING,
2175
+ }),
2176
+ (0, class_transformer_1.Expose)(),
2177
+ __metadata("design:type", String)
2178
+ ], QuickActionDataModel.prototype, "category", void 0);
2179
+ exports.QuickActionDataModel = QuickActionDataModel = __decorate([
2180
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataQuickAction' })
2181
+ ], QuickActionDataModel);
2182
+ let LightingRoleMetaDataModel = class LightingRoleMetaDataModel {
2183
+ };
2184
+ exports.LightingRoleMetaDataModel = LightingRoleMetaDataModel;
2185
+ __decorate([
2186
+ (0, swagger_1.ApiProperty)({
2187
+ description: 'Role identifier',
2188
+ enum: spaces_home_control_constants_1.LightingRole,
2189
+ example: spaces_home_control_constants_1.LightingRole.MAIN,
2190
+ }),
2191
+ (0, class_transformer_1.Expose)(),
2192
+ __metadata("design:type", String)
2193
+ ], LightingRoleMetaDataModel.prototype, "value", void 0);
2194
+ __decorate([
2195
+ (0, swagger_1.ApiProperty)({
2196
+ description: 'Human-readable label for the role',
2197
+ type: 'string',
2198
+ example: 'Main',
2199
+ }),
2200
+ (0, class_transformer_1.Expose)(),
2201
+ __metadata("design:type", String)
2202
+ ], LightingRoleMetaDataModel.prototype, "label", void 0);
2203
+ __decorate([
2204
+ (0, swagger_1.ApiProperty)({
2205
+ description: 'Description of the role',
2206
+ type: 'string',
2207
+ example: 'Primary/ceiling lights',
2208
+ }),
2209
+ (0, class_transformer_1.Expose)(),
2210
+ __metadata("design:type", String)
2211
+ ], LightingRoleMetaDataModel.prototype, "description", void 0);
2212
+ __decorate([
2213
+ (0, swagger_1.ApiPropertyOptional)({
2214
+ description: 'Icon identifier for the role',
2215
+ type: 'string',
2216
+ example: 'mdi:ceiling-light',
2217
+ }),
2218
+ (0, class_transformer_1.Expose)(),
2219
+ __metadata("design:type", String)
2220
+ ], LightingRoleMetaDataModel.prototype, "icon", void 0);
2221
+ exports.LightingRoleMetaDataModel = LightingRoleMetaDataModel = __decorate([
2222
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataLightingRoleMeta' })
2223
+ ], LightingRoleMetaDataModel);
2224
+ let LightingRoleBrightnessRuleDataModel = class LightingRoleBrightnessRuleDataModel {
2225
+ };
2226
+ exports.LightingRoleBrightnessRuleDataModel = LightingRoleBrightnessRuleDataModel;
2227
+ __decorate([
2228
+ (0, swagger_1.ApiProperty)({
2229
+ description: 'Whether lights with this role should be on',
2230
+ type: 'boolean',
2231
+ example: true,
2232
+ }),
2233
+ (0, class_transformer_1.Expose)(),
2234
+ __metadata("design:type", Boolean)
2235
+ ], LightingRoleBrightnessRuleDataModel.prototype, "on", void 0);
2236
+ __decorate([
2237
+ (0, swagger_1.ApiPropertyOptional)({
2238
+ description: 'Brightness level (0-100), null if light should be off',
2239
+ type: 'number',
2240
+ nullable: true,
2241
+ example: 100,
2242
+ }),
2243
+ (0, class_transformer_1.Expose)(),
2244
+ __metadata("design:type", Number)
2245
+ ], LightingRoleBrightnessRuleDataModel.prototype, "brightness", void 0);
2246
+ exports.LightingRoleBrightnessRuleDataModel = LightingRoleBrightnessRuleDataModel = __decorate([
2247
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataLightingRoleBrightnessRule' })
2248
+ ], LightingRoleBrightnessRuleDataModel);
2249
+ let LightingModeOrchestrationDataModel = class LightingModeOrchestrationDataModel {
2250
+ };
2251
+ exports.LightingModeOrchestrationDataModel = LightingModeOrchestrationDataModel;
2252
+ __decorate([
2253
+ (0, swagger_1.ApiProperty)({
2254
+ description: 'Mode identifier',
2255
+ enum: spaces_home_control_constants_1.LightingMode,
2256
+ example: spaces_home_control_constants_1.LightingMode.WORK,
2257
+ }),
2258
+ (0, class_transformer_1.Expose)(),
2259
+ __metadata("design:type", String)
2260
+ ], LightingModeOrchestrationDataModel.prototype, "mode", void 0);
2261
+ __decorate([
2262
+ (0, swagger_1.ApiProperty)({
2263
+ description: 'Human-readable label for the mode',
2264
+ type: 'string',
2265
+ example: 'Work',
2266
+ }),
2267
+ (0, class_transformer_1.Expose)(),
2268
+ __metadata("design:type", String)
2269
+ ], LightingModeOrchestrationDataModel.prototype, "label", void 0);
2270
+ __decorate([
2271
+ (0, swagger_1.ApiProperty)({
2272
+ description: 'Description of the mode',
2273
+ type: 'string',
2274
+ example: 'Bright lighting for focus and productivity',
2275
+ }),
2276
+ (0, class_transformer_1.Expose)(),
2277
+ __metadata("design:type", String)
2278
+ ], LightingModeOrchestrationDataModel.prototype, "description", void 0);
2279
+ __decorate([
2280
+ (0, swagger_1.ApiPropertyOptional)({
2281
+ description: 'Icon identifier for the mode',
2282
+ type: 'string',
2283
+ example: 'mdi:briefcase',
2284
+ }),
2285
+ (0, class_transformer_1.Expose)(),
2286
+ __metadata("design:type", String)
2287
+ ], LightingModeOrchestrationDataModel.prototype, "icon", void 0);
2288
+ __decorate([
2289
+ (0, swagger_1.ApiProperty)({
2290
+ name: 'mvp_brightness',
2291
+ description: 'Brightness level when no roles are configured (0-100)',
2292
+ type: 'number',
2293
+ example: 100,
2294
+ }),
2295
+ (0, class_transformer_1.Expose)({ name: 'mvp_brightness' }),
2296
+ __metadata("design:type", Number)
2297
+ ], LightingModeOrchestrationDataModel.prototype, "mvpBrightness", void 0);
2298
+ __decorate([
2299
+ (0, swagger_1.ApiProperty)({
2300
+ description: 'Role-specific brightness rules for this mode',
2301
+ type: 'object',
2302
+ additionalProperties: { $ref: (0, swagger_1.getSchemaPath)(LightingRoleBrightnessRuleDataModel) },
2303
+ example: { main: { on: true, brightness: 100 }, task: { on: true, brightness: 100 } },
2304
+ }),
2305
+ (0, class_transformer_1.Expose)(),
2306
+ __metadata("design:type", Object)
2307
+ ], LightingModeOrchestrationDataModel.prototype, "roles", void 0);
2308
+ __decorate([
2309
+ (0, swagger_1.ApiPropertyOptional)({
2310
+ name: 'fallback_roles',
2311
+ description: 'Roles to use as fallback if primary roles have no lights',
2312
+ type: [String],
2313
+ example: ['main'],
2314
+ }),
2315
+ (0, class_transformer_1.Expose)({ name: 'fallback_roles' }),
2316
+ __metadata("design:type", Array)
2317
+ ], LightingModeOrchestrationDataModel.prototype, "fallbackRoles", void 0);
2318
+ __decorate([
2319
+ (0, swagger_1.ApiPropertyOptional)({
2320
+ name: 'fallback_brightness',
2321
+ description: 'Brightness level for fallback roles',
2322
+ type: 'number',
2323
+ example: 20,
2324
+ }),
2325
+ (0, class_transformer_1.Expose)({ name: 'fallback_brightness' }),
2326
+ __metadata("design:type", Number)
2327
+ ], LightingModeOrchestrationDataModel.prototype, "fallbackBrightness", void 0);
2328
+ exports.LightingModeOrchestrationDataModel = LightingModeOrchestrationDataModel = __decorate([
2329
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataLightingModeOrchestration' }),
2330
+ (0, swagger_1.ApiExtraModels)(LightingRoleBrightnessRuleDataModel)
2331
+ ], LightingModeOrchestrationDataModel);
2332
+ let CoversRolePositionRuleDataModel = class CoversRolePositionRuleDataModel {
2333
+ };
2334
+ exports.CoversRolePositionRuleDataModel = CoversRolePositionRuleDataModel;
2335
+ __decorate([
2336
+ (0, swagger_1.ApiProperty)({
2337
+ description: 'Position percentage (0=closed, 100=open)',
2338
+ type: 'number',
2339
+ example: 100,
2340
+ }),
2341
+ (0, class_transformer_1.Expose)(),
2342
+ __metadata("design:type", Number)
2343
+ ], CoversRolePositionRuleDataModel.prototype, "position", void 0);
2344
+ __decorate([
2345
+ (0, swagger_1.ApiPropertyOptional)({
2346
+ description: 'Tilt angle (0-100), if supported',
2347
+ type: 'number',
2348
+ example: 50,
2349
+ }),
2350
+ (0, class_transformer_1.Expose)(),
2351
+ __metadata("design:type", Number)
2352
+ ], CoversRolePositionRuleDataModel.prototype, "tilt", void 0);
2353
+ exports.CoversRolePositionRuleDataModel = CoversRolePositionRuleDataModel = __decorate([
2354
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataCoversRolePositionRule' })
2355
+ ], CoversRolePositionRuleDataModel);
2356
+ let CoversModeOrchestrationDataModel = class CoversModeOrchestrationDataModel {
2357
+ };
2358
+ exports.CoversModeOrchestrationDataModel = CoversModeOrchestrationDataModel;
2359
+ __decorate([
2360
+ (0, swagger_1.ApiProperty)({
2361
+ description: 'Mode identifier',
2362
+ enum: spaces_home_control_constants_1.CoversMode,
2363
+ example: spaces_home_control_constants_1.CoversMode.OPEN,
2364
+ }),
2365
+ (0, class_transformer_1.Expose)(),
2366
+ __metadata("design:type", String)
2367
+ ], CoversModeOrchestrationDataModel.prototype, "mode", void 0);
2368
+ __decorate([
2369
+ (0, swagger_1.ApiProperty)({
2370
+ description: 'Human-readable label for the mode',
2371
+ type: 'string',
2372
+ example: 'Open',
2373
+ }),
2374
+ (0, class_transformer_1.Expose)(),
2375
+ __metadata("design:type", String)
2376
+ ], CoversModeOrchestrationDataModel.prototype, "label", void 0);
2377
+ __decorate([
2378
+ (0, swagger_1.ApiProperty)({
2379
+ description: 'Description of the mode',
2380
+ type: 'string',
2381
+ example: 'All covers fully open',
2382
+ }),
2383
+ (0, class_transformer_1.Expose)(),
2384
+ __metadata("design:type", String)
2385
+ ], CoversModeOrchestrationDataModel.prototype, "description", void 0);
2386
+ __decorate([
2387
+ (0, swagger_1.ApiPropertyOptional)({
2388
+ description: 'Icon identifier for the mode',
2389
+ type: 'string',
2390
+ example: 'mdi:blinds-open',
2391
+ }),
2392
+ (0, class_transformer_1.Expose)(),
2393
+ __metadata("design:type", String)
2394
+ ], CoversModeOrchestrationDataModel.prototype, "icon", void 0);
2395
+ __decorate([
2396
+ (0, swagger_1.ApiProperty)({
2397
+ name: 'mvp_position',
2398
+ description: 'Position when no roles are configured (0-100)',
2399
+ type: 'number',
2400
+ example: 100,
2401
+ }),
2402
+ (0, class_transformer_1.Expose)({ name: 'mvp_position' }),
2403
+ __metadata("design:type", Number)
2404
+ ], CoversModeOrchestrationDataModel.prototype, "mvpPosition", void 0);
2405
+ __decorate([
2406
+ (0, swagger_1.ApiProperty)({
2407
+ description: 'Role-specific position rules for this mode',
2408
+ type: 'object',
2409
+ additionalProperties: { $ref: (0, swagger_1.getSchemaPath)(CoversRolePositionRuleDataModel) },
2410
+ example: { primary: { position: 100 }, blackout: { position: 100 } },
2411
+ }),
2412
+ (0, class_transformer_1.Expose)(),
2413
+ __metadata("design:type", Object)
2414
+ ], CoversModeOrchestrationDataModel.prototype, "roles", void 0);
2415
+ exports.CoversModeOrchestrationDataModel = CoversModeOrchestrationDataModel = __decorate([
2416
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataCoversModeOrchestration' }),
2417
+ (0, swagger_1.ApiExtraModels)(CoversRolePositionRuleDataModel)
2418
+ ], CoversModeOrchestrationDataModel);
2419
+ let IntentCatalogDataModel = class IntentCatalogDataModel {
2420
+ };
2421
+ exports.IntentCatalogDataModel = IntentCatalogDataModel;
2422
+ __decorate([
2423
+ (0, swagger_1.ApiProperty)({
2424
+ description: 'Available intent categories with their intents',
2425
+ type: () => [IntentCategoryDataModel],
2426
+ }),
2427
+ (0, class_transformer_1.Expose)(),
2428
+ (0, class_transformer_1.Type)(() => IntentCategoryDataModel),
2429
+ __metadata("design:type", Array)
2430
+ ], IntentCatalogDataModel.prototype, "categories", void 0);
2431
+ __decorate([
2432
+ (0, swagger_1.ApiProperty)({
2433
+ name: 'quick_actions',
2434
+ description: 'Available quick actions',
2435
+ type: () => [QuickActionDataModel],
2436
+ }),
2437
+ (0, class_transformer_1.Expose)({ name: 'quick_actions' }),
2438
+ (0, class_transformer_1.Type)(() => QuickActionDataModel),
2439
+ __metadata("design:type", Array)
2440
+ ], IntentCatalogDataModel.prototype, "quickActions", void 0);
2441
+ __decorate([
2442
+ (0, swagger_1.ApiProperty)({
2443
+ name: 'lighting_roles',
2444
+ description: 'Available lighting roles',
2445
+ type: () => [LightingRoleMetaDataModel],
2446
+ }),
2447
+ (0, class_transformer_1.Expose)({ name: 'lighting_roles' }),
2448
+ (0, class_transformer_1.Type)(() => LightingRoleMetaDataModel),
2449
+ __metadata("design:type", Array)
2450
+ ], IntentCatalogDataModel.prototype, "lightingRoles", void 0);
2451
+ __decorate([
2452
+ (0, swagger_1.ApiProperty)({
2453
+ name: 'lighting_modes',
2454
+ description: 'Lighting mode orchestration definitions',
2455
+ type: () => [LightingModeOrchestrationDataModel],
2456
+ }),
2457
+ (0, class_transformer_1.Expose)({ name: 'lighting_modes' }),
2458
+ (0, class_transformer_1.Type)(() => LightingModeOrchestrationDataModel),
2459
+ __metadata("design:type", Array)
2460
+ ], IntentCatalogDataModel.prototype, "lightingModes", void 0);
2461
+ __decorate([
2462
+ (0, swagger_1.ApiProperty)({
2463
+ name: 'covers_modes',
2464
+ description: 'Covers mode orchestration definitions',
2465
+ type: () => [CoversModeOrchestrationDataModel],
2466
+ }),
2467
+ (0, class_transformer_1.Expose)({ name: 'covers_modes' }),
2468
+ (0, class_transformer_1.Type)(() => CoversModeOrchestrationDataModel),
2469
+ __metadata("design:type", Array)
2470
+ ], IntentCatalogDataModel.prototype, "coversModes", void 0);
2471
+ exports.IntentCatalogDataModel = IntentCatalogDataModel = __decorate([
2472
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataIntentCatalog' })
2473
+ ], IntentCatalogDataModel);
2474
+ let IntentCatalogResponseModel = class IntentCatalogResponseModel extends api_response_model_1.BaseSuccessResponseModel {
2475
+ };
2476
+ exports.IntentCatalogResponseModel = IntentCatalogResponseModel;
2477
+ __decorate([
2478
+ (0, swagger_1.ApiProperty)({
2479
+ description: 'The intent catalog with all available intents, quick actions, and roles',
2480
+ type: () => IntentCatalogDataModel,
2481
+ }),
2482
+ (0, class_transformer_1.Expose)(),
2483
+ (0, class_transformer_1.Type)(() => IntentCatalogDataModel),
2484
+ __metadata("design:type", IntentCatalogDataModel)
2485
+ ], IntentCatalogResponseModel.prototype, "data", void 0);
2486
+ exports.IntentCatalogResponseModel = IntentCatalogResponseModel = __decorate([
2487
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResIntentCatalog' })
2488
+ ], IntentCatalogResponseModel);
2489
+ let LightStateSnapshotDataModel = class LightStateSnapshotDataModel {
2490
+ };
2491
+ exports.LightStateSnapshotDataModel = LightStateSnapshotDataModel;
2492
+ __decorate([
2493
+ (0, swagger_1.ApiProperty)({
2494
+ name: 'device_id',
2495
+ description: 'ID of the lighting device',
2496
+ type: 'string',
2497
+ format: 'uuid',
2498
+ example: 'a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7',
2499
+ }),
2500
+ (0, class_transformer_1.Expose)({ name: 'device_id' }),
2501
+ __metadata("design:type", String)
2502
+ ], LightStateSnapshotDataModel.prototype, "deviceId", void 0);
2503
+ __decorate([
2504
+ (0, swagger_1.ApiProperty)({
2505
+ name: 'device_name',
2506
+ description: 'Name of the lighting device',
2507
+ type: 'string',
2508
+ example: 'Living Room Ceiling Light',
2509
+ }),
2510
+ (0, class_transformer_1.Expose)({ name: 'device_name' }),
2511
+ __metadata("design:type", String)
2512
+ ], LightStateSnapshotDataModel.prototype, "deviceName", void 0);
2513
+ __decorate([
2514
+ (0, swagger_1.ApiProperty)({
2515
+ name: 'channel_id',
2516
+ description: 'ID of the light channel',
2517
+ type: 'string',
2518
+ format: 'uuid',
2519
+ example: 'c3d29eb4-632f-5e8c-c4af-ded8b9e6c0f8',
2520
+ }),
2521
+ (0, class_transformer_1.Expose)({ name: 'channel_id' }),
2522
+ __metadata("design:type", String)
2523
+ ], LightStateSnapshotDataModel.prototype, "channelId", void 0);
2524
+ __decorate([
2525
+ (0, swagger_1.ApiProperty)({
2526
+ name: 'channel_name',
2527
+ description: 'Name of the light channel',
2528
+ type: 'string',
2529
+ example: 'Light',
2530
+ }),
2531
+ (0, class_transformer_1.Expose)({ name: 'channel_name' }),
2532
+ __metadata("design:type", String)
2533
+ ], LightStateSnapshotDataModel.prototype, "channelName", void 0);
2534
+ __decorate([
2535
+ (0, swagger_1.ApiPropertyOptional)({
2536
+ description: 'The lighting role assigned to this light (null if not assigned)',
2537
+ enum: spaces_home_control_constants_1.LightingRole,
2538
+ nullable: true,
2539
+ example: spaces_home_control_constants_1.LightingRole.MAIN,
2540
+ }),
2541
+ (0, class_transformer_1.Expose)(),
2542
+ __metadata("design:type", String)
2543
+ ], LightStateSnapshotDataModel.prototype, "role", void 0);
2544
+ __decorate([
2545
+ (0, swagger_1.ApiProperty)({
2546
+ name: 'is_on',
2547
+ description: 'Whether the light is currently on',
2548
+ type: 'boolean',
2549
+ example: true,
2550
+ }),
2551
+ (0, class_transformer_1.Expose)({ name: 'is_on' }),
2552
+ __metadata("design:type", Boolean)
2553
+ ], LightStateSnapshotDataModel.prototype, "isOn", void 0);
2554
+ __decorate([
2555
+ (0, swagger_1.ApiPropertyOptional)({
2556
+ description: 'Current brightness level (0-100), null if not supported',
2557
+ type: 'number',
2558
+ nullable: true,
2559
+ example: 75,
2560
+ }),
2561
+ (0, class_transformer_1.Expose)(),
2562
+ __metadata("design:type", Number)
2563
+ ], LightStateSnapshotDataModel.prototype, "brightness", void 0);
2564
+ __decorate([
2565
+ (0, swagger_1.ApiPropertyOptional)({
2566
+ name: 'color_temperature',
2567
+ description: 'Current color temperature in Kelvin, null if not supported',
2568
+ type: 'number',
2569
+ nullable: true,
2570
+ example: 4000,
2571
+ }),
2572
+ (0, class_transformer_1.Expose)({ name: 'color_temperature' }),
2573
+ __metadata("design:type", Number)
2574
+ ], LightStateSnapshotDataModel.prototype, "colorTemperature", void 0);
2575
+ __decorate([
2576
+ (0, swagger_1.ApiPropertyOptional)({
2577
+ description: 'Current color value (hex or RGB string), null if not supported',
2578
+ type: 'string',
2579
+ nullable: true,
2580
+ example: '#ff6b35',
2581
+ }),
2582
+ (0, class_transformer_1.Expose)(),
2583
+ __metadata("design:type", String)
2584
+ ], LightStateSnapshotDataModel.prototype, "color", void 0);
2585
+ exports.LightStateSnapshotDataModel = LightStateSnapshotDataModel = __decorate([
2586
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataLightStateSnapshot' })
2587
+ ], LightStateSnapshotDataModel);
2588
+ let LightingSummaryDataModel = class LightingSummaryDataModel {
2589
+ };
2590
+ exports.LightingSummaryDataModel = LightingSummaryDataModel;
2591
+ __decorate([
2592
+ (0, swagger_1.ApiProperty)({
2593
+ name: 'total_lights',
2594
+ description: 'Total number of lights in the space',
2595
+ type: 'integer',
2596
+ example: 5,
2597
+ }),
2598
+ (0, class_transformer_1.Expose)({ name: 'total_lights' }),
2599
+ __metadata("design:type", Number)
2600
+ ], LightingSummaryDataModel.prototype, "totalLights", void 0);
2601
+ __decorate([
2602
+ (0, swagger_1.ApiProperty)({
2603
+ name: 'lights_on',
2604
+ description: 'Number of lights currently on',
2605
+ type: 'integer',
2606
+ example: 3,
2607
+ }),
2608
+ (0, class_transformer_1.Expose)({ name: 'lights_on' }),
2609
+ __metadata("design:type", Number)
2610
+ ], LightingSummaryDataModel.prototype, "lightsOn", void 0);
2611
+ __decorate([
2612
+ (0, swagger_1.ApiPropertyOptional)({
2613
+ name: 'average_brightness',
2614
+ description: 'Average brightness of lights that are on (0-100), null if no lights are on with brightness',
2615
+ type: 'number',
2616
+ nullable: true,
2617
+ example: 65,
2618
+ }),
2619
+ (0, class_transformer_1.Expose)({ name: 'average_brightness' }),
2620
+ __metadata("design:type", Number)
2621
+ ], LightingSummaryDataModel.prototype, "averageBrightness", void 0);
2622
+ exports.LightingSummaryDataModel = LightingSummaryDataModel = __decorate([
2623
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataLightingSummary' })
2624
+ ], LightingSummaryDataModel);
2625
+ let LightingContextDataModel = class LightingContextDataModel {
2626
+ };
2627
+ exports.LightingContextDataModel = LightingContextDataModel;
2628
+ __decorate([
2629
+ (0, swagger_1.ApiProperty)({
2630
+ description: 'Summary of lighting state',
2631
+ type: () => LightingSummaryDataModel,
2632
+ }),
2633
+ (0, class_transformer_1.Expose)(),
2634
+ (0, class_transformer_1.Type)(() => LightingSummaryDataModel),
2635
+ __metadata("design:type", LightingSummaryDataModel)
2636
+ ], LightingContextDataModel.prototype, "summary", void 0);
2637
+ __decorate([
2638
+ (0, swagger_1.ApiProperty)({
2639
+ description: 'State of each individual light',
2640
+ type: () => [LightStateSnapshotDataModel],
2641
+ }),
2642
+ (0, class_transformer_1.Expose)(),
2643
+ (0, class_transformer_1.Type)(() => LightStateSnapshotDataModel),
2644
+ __metadata("design:type", Array)
2645
+ ], LightingContextDataModel.prototype, "lights", void 0);
2646
+ exports.LightingContextDataModel = LightingContextDataModel = __decorate([
2647
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataLightingContext' })
2648
+ ], LightingContextDataModel);
2649
+ let ContextSnapshotDataModel = class ContextSnapshotDataModel {
2650
+ };
2651
+ exports.ContextSnapshotDataModel = ContextSnapshotDataModel;
2652
+ __decorate([
2653
+ (0, swagger_1.ApiProperty)({
2654
+ name: 'space_id',
2655
+ description: 'ID of the space',
2656
+ type: 'string',
2657
+ format: 'uuid',
2658
+ example: 'f1e09ba1-429f-4c6a-a2fd-aca6a7c4a8c6',
2659
+ }),
2660
+ (0, class_transformer_1.Expose)({ name: 'space_id' }),
2661
+ __metadata("design:type", String)
2662
+ ], ContextSnapshotDataModel.prototype, "spaceId", void 0);
2663
+ __decorate([
2664
+ (0, swagger_1.ApiProperty)({
2665
+ name: 'space_name',
2666
+ description: 'Name of the space',
2667
+ type: 'string',
2668
+ example: 'Living Room',
2669
+ }),
2670
+ (0, class_transformer_1.Expose)({ name: 'space_name' }),
2671
+ __metadata("design:type", String)
2672
+ ], ContextSnapshotDataModel.prototype, "spaceName", void 0);
2673
+ __decorate([
2674
+ (0, swagger_1.ApiProperty)({
2675
+ name: 'captured_at',
2676
+ description: 'Timestamp when the snapshot was captured',
2677
+ type: 'string',
2678
+ format: 'date-time',
2679
+ example: '2025-01-25T12:00:00Z',
2680
+ }),
2681
+ (0, class_transformer_1.Expose)({ name: 'captured_at' }),
2682
+ __metadata("design:type", Date)
2683
+ ], ContextSnapshotDataModel.prototype, "capturedAt", void 0);
2684
+ __decorate([
2685
+ (0, swagger_1.ApiProperty)({
2686
+ description: 'Lighting context snapshot',
2687
+ type: () => LightingContextDataModel,
2688
+ }),
2689
+ (0, class_transformer_1.Expose)(),
2690
+ (0, class_transformer_1.Type)(() => LightingContextDataModel),
2691
+ __metadata("design:type", LightingContextDataModel)
2692
+ ], ContextSnapshotDataModel.prototype, "lighting", void 0);
2693
+ __decorate([
2694
+ (0, swagger_1.ApiProperty)({
2695
+ description: 'Climate state snapshot',
2696
+ type: () => ClimateStateDataModel,
2697
+ }),
2698
+ (0, class_transformer_1.Expose)(),
2699
+ (0, class_transformer_1.Type)(() => ClimateStateDataModel),
2700
+ __metadata("design:type", ClimateStateDataModel)
2701
+ ], ContextSnapshotDataModel.prototype, "climate", void 0);
2702
+ exports.ContextSnapshotDataModel = ContextSnapshotDataModel = __decorate([
2703
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataContextSnapshot' })
2704
+ ], ContextSnapshotDataModel);
2705
+ let ContextSnapshotResponseModel = class ContextSnapshotResponseModel extends api_response_model_1.BaseSuccessResponseModel {
2706
+ };
2707
+ exports.ContextSnapshotResponseModel = ContextSnapshotResponseModel;
2708
+ __decorate([
2709
+ (0, swagger_1.ApiProperty)({
2710
+ description: 'The complete context snapshot for the space',
2711
+ type: () => ContextSnapshotDataModel,
2712
+ }),
2713
+ (0, class_transformer_1.Expose)(),
2714
+ (0, class_transformer_1.Type)(() => ContextSnapshotDataModel),
2715
+ __metadata("design:type", ContextSnapshotDataModel)
2716
+ ], ContextSnapshotResponseModel.prototype, "data", void 0);
2717
+ exports.ContextSnapshotResponseModel = ContextSnapshotResponseModel = __decorate([
2718
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResContextSnapshot' })
2719
+ ], ContextSnapshotResponseModel);
2720
+ let UndoStateDataModel = class UndoStateDataModel {
2721
+ };
2722
+ exports.UndoStateDataModel = UndoStateDataModel;
2723
+ __decorate([
2724
+ (0, swagger_1.ApiProperty)({
2725
+ name: 'can_undo',
2726
+ description: 'Whether an undo action is available for this space',
2727
+ type: 'boolean',
2728
+ example: true,
2729
+ }),
2730
+ (0, class_transformer_1.Expose)({ name: 'can_undo' }),
2731
+ __metadata("design:type", Boolean)
2732
+ ], UndoStateDataModel.prototype, "canUndo", void 0);
2733
+ __decorate([
2734
+ (0, swagger_1.ApiPropertyOptional)({
2735
+ name: 'action_description',
2736
+ description: 'Description of the action that can be undone (null if no undo available)',
2737
+ type: 'string',
2738
+ nullable: true,
2739
+ example: 'Set lighting mode to Work',
2740
+ }),
2741
+ (0, class_transformer_1.Expose)({ name: 'action_description' }),
2742
+ __metadata("design:type", String)
2743
+ ], UndoStateDataModel.prototype, "actionDescription", void 0);
2744
+ __decorate([
2745
+ (0, swagger_1.ApiPropertyOptional)({
2746
+ name: 'intent_category',
2747
+ description: 'Category of the intent that can be undone (lighting, climate, covers, or media)',
2748
+ type: 'string',
2749
+ enum: ['lighting', 'climate', 'covers', 'media'],
2750
+ nullable: true,
2751
+ example: 'lighting',
2752
+ }),
2753
+ (0, class_transformer_1.Expose)({ name: 'intent_category' }),
2754
+ __metadata("design:type", String)
2755
+ ], UndoStateDataModel.prototype, "intentCategory", void 0);
2756
+ __decorate([
2757
+ (0, swagger_1.ApiPropertyOptional)({
2758
+ name: 'captured_at',
2759
+ description: 'When the undo snapshot was captured',
2760
+ type: 'string',
2761
+ format: 'date-time',
2762
+ nullable: true,
2763
+ example: '2025-01-25T12:00:00Z',
2764
+ }),
2765
+ (0, class_transformer_1.Expose)({ name: 'captured_at' }),
2766
+ __metadata("design:type", Date)
2767
+ ], UndoStateDataModel.prototype, "capturedAt", void 0);
2768
+ __decorate([
2769
+ (0, swagger_1.ApiPropertyOptional)({
2770
+ name: 'expires_in_seconds',
2771
+ description: 'Seconds until this undo entry expires (null if no undo available)',
2772
+ type: 'integer',
2773
+ nullable: true,
2774
+ example: 240,
2775
+ }),
2776
+ (0, class_transformer_1.Expose)({ name: 'expires_in_seconds' }),
2777
+ __metadata("design:type", Number)
2778
+ ], UndoStateDataModel.prototype, "expiresInSeconds", void 0);
2779
+ exports.UndoStateDataModel = UndoStateDataModel = __decorate([
2780
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataUndoState' })
2781
+ ], UndoStateDataModel);
2782
+ let UndoStateResponseModel = class UndoStateResponseModel extends api_response_model_1.BaseSuccessResponseModel {
2783
+ };
2784
+ exports.UndoStateResponseModel = UndoStateResponseModel;
2785
+ __decorate([
2786
+ (0, swagger_1.ApiProperty)({
2787
+ description: 'The undo state for the space',
2788
+ type: () => UndoStateDataModel,
2789
+ }),
2790
+ (0, class_transformer_1.Expose)(),
2791
+ (0, class_transformer_1.Type)(() => UndoStateDataModel),
2792
+ __metadata("design:type", UndoStateDataModel)
2793
+ ], UndoStateResponseModel.prototype, "data", void 0);
2794
+ exports.UndoStateResponseModel = UndoStateResponseModel = __decorate([
2795
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResUndoState' })
2796
+ ], UndoStateResponseModel);
2797
+ let UndoResultDataModel = class UndoResultDataModel {
2798
+ };
2799
+ exports.UndoResultDataModel = UndoResultDataModel;
2800
+ __decorate([
2801
+ (0, swagger_1.ApiProperty)({
2802
+ description: 'Whether the undo operation was successful',
2803
+ type: 'boolean',
2804
+ example: true,
2805
+ }),
2806
+ (0, class_transformer_1.Expose)(),
2807
+ __metadata("design:type", Boolean)
2808
+ ], UndoResultDataModel.prototype, "success", void 0);
2809
+ __decorate([
2810
+ (0, swagger_1.ApiProperty)({
2811
+ name: 'restored_devices',
2812
+ description: 'Number of devices that were restored to their previous state',
2813
+ type: 'integer',
2814
+ example: 3,
2815
+ }),
2816
+ (0, class_transformer_1.Expose)({ name: 'restored_devices' }),
2817
+ __metadata("design:type", Number)
2818
+ ], UndoResultDataModel.prototype, "restoredDevices", void 0);
2819
+ __decorate([
2820
+ (0, swagger_1.ApiProperty)({
2821
+ name: 'failed_devices',
2822
+ description: 'Number of devices that failed to restore',
2823
+ type: 'integer',
2824
+ example: 0,
2825
+ }),
2826
+ (0, class_transformer_1.Expose)({ name: 'failed_devices' }),
2827
+ __metadata("design:type", Number)
2828
+ ], UndoResultDataModel.prototype, "failedDevices", void 0);
2829
+ __decorate([
2830
+ (0, swagger_1.ApiProperty)({
2831
+ description: 'Human-readable message about the undo result',
2832
+ type: 'string',
2833
+ example: 'Restored 3 device(s)',
2834
+ }),
2835
+ (0, class_transformer_1.Expose)(),
2836
+ __metadata("design:type", String)
2837
+ ], UndoResultDataModel.prototype, "message", void 0);
2838
+ exports.UndoResultDataModel = UndoResultDataModel = __decorate([
2839
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataUndoResult' })
2840
+ ], UndoResultDataModel);
2841
+ let UndoResultResponseModel = class UndoResultResponseModel extends api_response_model_1.BaseSuccessResponseModel {
2842
+ };
2843
+ exports.UndoResultResponseModel = UndoResultResponseModel;
2844
+ __decorate([
2845
+ (0, swagger_1.ApiProperty)({
2846
+ description: 'The result of the undo operation',
2847
+ type: () => UndoResultDataModel,
2848
+ }),
2849
+ (0, class_transformer_1.Expose)(),
2850
+ (0, class_transformer_1.Type)(() => UndoResultDataModel),
2851
+ __metadata("design:type", UndoResultDataModel)
2852
+ ], UndoResultResponseModel.prototype, "data", void 0);
2853
+ exports.UndoResultResponseModel = UndoResultResponseModel = __decorate([
2854
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResUndoResult' })
2855
+ ], UndoResultResponseModel);
2856
+ let RoleLastIntentDataModel = class RoleLastIntentDataModel {
2857
+ };
2858
+ exports.RoleLastIntentDataModel = RoleLastIntentDataModel;
2859
+ __decorate([
2860
+ (0, swagger_1.ApiPropertyOptional)({
2861
+ description: 'Last brightness value set via intent (0-100), null if role was set to OFF or no intent',
2862
+ type: 'number',
2863
+ nullable: true,
2864
+ example: 100,
2865
+ }),
2866
+ (0, class_transformer_1.Expose)(),
2867
+ __metadata("design:type", Number)
2868
+ ], RoleLastIntentDataModel.prototype, "brightness", void 0);
2869
+ exports.RoleLastIntentDataModel = RoleLastIntentDataModel = __decorate([
2870
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataRoleLastIntent' })
2871
+ ], RoleLastIntentDataModel);
2872
+ let RoleAggregatedStateDataModel = RoleAggregatedStateDataModel_1 = class RoleAggregatedStateDataModel {
2873
+ static fromState(state) {
2874
+ const model = new RoleAggregatedStateDataModel_1();
2875
+ model.role = state.role;
2876
+ model.isOn = state.isOn;
2877
+ model.isOnMixed = state.isOnMixed;
2878
+ model.brightness = state.brightness;
2879
+ model.colorTemperature = state.colorTemperature;
2880
+ model.color = state.color;
2881
+ model.white = state.white;
2882
+ model.isBrightnessMixed = state.isBrightnessMixed;
2883
+ model.isColorTemperatureMixed = state.isColorTemperatureMixed;
2884
+ model.isColorMixed = state.isColorMixed;
2885
+ model.isWhiteMixed = state.isWhiteMixed;
2886
+ model.lastIntent = state.lastIntent ? { brightness: state.lastIntent.brightness } : null;
2887
+ model.devicesCount = state.devicesCount;
2888
+ model.devicesOn = state.devicesOn;
2889
+ return model;
2890
+ }
2891
+ };
2892
+ exports.RoleAggregatedStateDataModel = RoleAggregatedStateDataModel;
2893
+ __decorate([
2894
+ (0, swagger_1.ApiProperty)({
2895
+ description: 'The lighting role',
2896
+ enum: spaces_home_control_constants_1.LightingRole,
2897
+ example: spaces_home_control_constants_1.LightingRole.MAIN,
2898
+ }),
2899
+ (0, class_transformer_1.Expose)(),
2900
+ __metadata("design:type", String)
2901
+ ], RoleAggregatedStateDataModel.prototype, "role", void 0);
2902
+ __decorate([
2903
+ (0, swagger_1.ApiProperty)({
2904
+ name: 'is_on',
2905
+ description: 'Whether any light in this role is on',
2906
+ type: 'boolean',
2907
+ example: true,
2908
+ }),
2909
+ (0, class_transformer_1.Expose)({ name: 'is_on' }),
2910
+ __metadata("design:type", Boolean)
2911
+ ], RoleAggregatedStateDataModel.prototype, "isOn", void 0);
2912
+ __decorate([
2913
+ (0, swagger_1.ApiProperty)({
2914
+ name: 'is_on_mixed',
2915
+ description: 'Whether lights in this role have different on/off states',
2916
+ type: 'boolean',
2917
+ example: false,
2918
+ }),
2919
+ (0, class_transformer_1.Expose)({ name: 'is_on_mixed' }),
2920
+ __metadata("design:type", Boolean)
2921
+ ], RoleAggregatedStateDataModel.prototype, "isOnMixed", void 0);
2922
+ __decorate([
2923
+ (0, swagger_1.ApiPropertyOptional)({
2924
+ description: 'Uniform brightness of lights in this role (0-100), null if devices have different values (mixed)',
2925
+ type: 'number',
2926
+ nullable: true,
2927
+ example: 85,
2928
+ }),
2929
+ (0, class_transformer_1.Expose)(),
2930
+ __metadata("design:type", Number)
2931
+ ], RoleAggregatedStateDataModel.prototype, "brightness", void 0);
2932
+ __decorate([
2933
+ (0, swagger_1.ApiPropertyOptional)({
2934
+ name: 'color_temperature',
2935
+ description: 'Uniform color temperature in Kelvin, null if devices have different values (mixed)',
2936
+ type: 'number',
2937
+ nullable: true,
2938
+ example: 4000,
2939
+ }),
2940
+ (0, class_transformer_1.Expose)({ name: 'color_temperature' }),
2941
+ __metadata("design:type", Number)
2942
+ ], RoleAggregatedStateDataModel.prototype, "colorTemperature", void 0);
2943
+ __decorate([
2944
+ (0, swagger_1.ApiPropertyOptional)({
2945
+ description: 'Uniform color as hex string (e.g. "#ff6b35"), null if devices have different values (mixed)',
2946
+ type: 'string',
2947
+ nullable: true,
2948
+ example: '#ffffff',
2949
+ }),
2950
+ (0, class_transformer_1.Expose)(),
2951
+ __metadata("design:type", String)
2952
+ ], RoleAggregatedStateDataModel.prototype, "color", void 0);
2953
+ __decorate([
2954
+ (0, swagger_1.ApiPropertyOptional)({
2955
+ description: 'Uniform white level (0-100), null if devices have different values (mixed)',
2956
+ type: 'number',
2957
+ nullable: true,
2958
+ example: null,
2959
+ }),
2960
+ (0, class_transformer_1.Expose)(),
2961
+ __metadata("design:type", Number)
2962
+ ], RoleAggregatedStateDataModel.prototype, "white", void 0);
2963
+ __decorate([
2964
+ (0, swagger_1.ApiProperty)({
2965
+ name: 'is_brightness_mixed',
2966
+ description: 'Whether lights in this role have different brightness values',
2967
+ type: 'boolean',
2968
+ example: false,
2969
+ }),
2970
+ (0, class_transformer_1.Expose)({ name: 'is_brightness_mixed' }),
2971
+ __metadata("design:type", Boolean)
2972
+ ], RoleAggregatedStateDataModel.prototype, "isBrightnessMixed", void 0);
2973
+ __decorate([
2974
+ (0, swagger_1.ApiProperty)({
2975
+ name: 'is_color_temperature_mixed',
2976
+ description: 'Whether lights in this role have different color temperature values',
2977
+ type: 'boolean',
2978
+ example: false,
2979
+ }),
2980
+ (0, class_transformer_1.Expose)({ name: 'is_color_temperature_mixed' }),
2981
+ __metadata("design:type", Boolean)
2982
+ ], RoleAggregatedStateDataModel.prototype, "isColorTemperatureMixed", void 0);
2983
+ __decorate([
2984
+ (0, swagger_1.ApiProperty)({
2985
+ name: 'is_color_mixed',
2986
+ description: 'Whether lights in this role have different color values',
2987
+ type: 'boolean',
2988
+ example: false,
2989
+ }),
2990
+ (0, class_transformer_1.Expose)({ name: 'is_color_mixed' }),
2991
+ __metadata("design:type", Boolean)
2992
+ ], RoleAggregatedStateDataModel.prototype, "isColorMixed", void 0);
2993
+ __decorate([
2994
+ (0, swagger_1.ApiProperty)({
2995
+ name: 'is_white_mixed',
2996
+ description: 'Whether lights in this role have different white level values',
2997
+ type: 'boolean',
2998
+ example: false,
2999
+ }),
3000
+ (0, class_transformer_1.Expose)({ name: 'is_white_mixed' }),
3001
+ __metadata("design:type", Boolean)
3002
+ ], RoleAggregatedStateDataModel.prototype, "isWhiteMixed", void 0);
3003
+ __decorate([
3004
+ (0, swagger_1.ApiPropertyOptional)({
3005
+ name: 'last_intent',
3006
+ description: 'Last values set via mode/intent for this role, null if no mode was applied',
3007
+ type: () => RoleLastIntentDataModel,
3008
+ nullable: true,
3009
+ }),
3010
+ (0, class_transformer_1.Expose)({ name: 'last_intent' }),
3011
+ (0, class_transformer_1.Type)(() => RoleLastIntentDataModel),
3012
+ __metadata("design:type", RoleLastIntentDataModel)
3013
+ ], RoleAggregatedStateDataModel.prototype, "lastIntent", void 0);
3014
+ __decorate([
3015
+ (0, swagger_1.ApiProperty)({
3016
+ name: 'devices_count',
3017
+ description: 'Total number of lights assigned to this role',
3018
+ type: 'integer',
3019
+ example: 2,
3020
+ }),
3021
+ (0, class_transformer_1.Expose)({ name: 'devices_count' }),
3022
+ __metadata("design:type", Number)
3023
+ ], RoleAggregatedStateDataModel.prototype, "devicesCount", void 0);
3024
+ __decorate([
3025
+ (0, swagger_1.ApiProperty)({
3026
+ name: 'devices_on',
3027
+ description: 'Number of lights currently on in this role',
3028
+ type: 'integer',
3029
+ example: 2,
3030
+ }),
3031
+ (0, class_transformer_1.Expose)({ name: 'devices_on' }),
3032
+ __metadata("design:type", Number)
3033
+ ], RoleAggregatedStateDataModel.prototype, "devicesOn", void 0);
3034
+ exports.RoleAggregatedStateDataModel = RoleAggregatedStateDataModel = RoleAggregatedStateDataModel_1 = __decorate([
3035
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataRoleAggregatedState' })
3036
+ ], RoleAggregatedStateDataModel);
3037
+ let OtherLightsStateDataModel = OtherLightsStateDataModel_1 = class OtherLightsStateDataModel {
3038
+ static fromState(state) {
3039
+ const model = new OtherLightsStateDataModel_1();
3040
+ model.isOn = state.isOn;
3041
+ model.isOnMixed = state.isOnMixed;
3042
+ model.brightness = state.brightness;
3043
+ model.colorTemperature = state.colorTemperature;
3044
+ model.color = state.color;
3045
+ model.white = state.white;
3046
+ model.isBrightnessMixed = state.isBrightnessMixed;
3047
+ model.isColorTemperatureMixed = state.isColorTemperatureMixed;
3048
+ model.isColorMixed = state.isColorMixed;
3049
+ model.isWhiteMixed = state.isWhiteMixed;
3050
+ model.devicesCount = state.devicesCount;
3051
+ model.devicesOn = state.devicesOn;
3052
+ return model;
3053
+ }
3054
+ };
3055
+ exports.OtherLightsStateDataModel = OtherLightsStateDataModel;
3056
+ __decorate([
3057
+ (0, swagger_1.ApiProperty)({
3058
+ name: 'is_on',
3059
+ description: 'Whether any light without role is on',
3060
+ type: 'boolean',
3061
+ example: false,
3062
+ }),
3063
+ (0, class_transformer_1.Expose)({ name: 'is_on' }),
3064
+ __metadata("design:type", Boolean)
3065
+ ], OtherLightsStateDataModel.prototype, "isOn", void 0);
3066
+ __decorate([
3067
+ (0, swagger_1.ApiProperty)({
3068
+ name: 'is_on_mixed',
3069
+ description: 'Whether lights without role have different on/off states',
3070
+ type: 'boolean',
3071
+ example: false,
3072
+ }),
3073
+ (0, class_transformer_1.Expose)({ name: 'is_on_mixed' }),
3074
+ __metadata("design:type", Boolean)
3075
+ ], OtherLightsStateDataModel.prototype, "isOnMixed", void 0);
3076
+ __decorate([
3077
+ (0, swagger_1.ApiPropertyOptional)({
3078
+ description: 'Uniform brightness of lights without role (0-100), null if devices have different values (mixed)',
3079
+ type: 'number',
3080
+ nullable: true,
3081
+ example: null,
3082
+ }),
3083
+ (0, class_transformer_1.Expose)(),
3084
+ __metadata("design:type", Number)
3085
+ ], OtherLightsStateDataModel.prototype, "brightness", void 0);
3086
+ __decorate([
3087
+ (0, swagger_1.ApiPropertyOptional)({
3088
+ name: 'color_temperature',
3089
+ description: 'Uniform color temperature in Kelvin, null if devices have different values (mixed)',
3090
+ type: 'number',
3091
+ nullable: true,
3092
+ example: null,
3093
+ }),
3094
+ (0, class_transformer_1.Expose)({ name: 'color_temperature' }),
3095
+ __metadata("design:type", Number)
3096
+ ], OtherLightsStateDataModel.prototype, "colorTemperature", void 0);
3097
+ __decorate([
3098
+ (0, swagger_1.ApiPropertyOptional)({
3099
+ description: 'Uniform color as hex string (e.g. "#ff6b35"), null if devices have different values (mixed)',
3100
+ type: 'string',
3101
+ nullable: true,
3102
+ example: null,
3103
+ }),
3104
+ (0, class_transformer_1.Expose)(),
3105
+ __metadata("design:type", String)
3106
+ ], OtherLightsStateDataModel.prototype, "color", void 0);
3107
+ __decorate([
3108
+ (0, swagger_1.ApiPropertyOptional)({
3109
+ description: 'Uniform white level (0-100), null if devices have different values (mixed)',
3110
+ type: 'number',
3111
+ nullable: true,
3112
+ example: null,
3113
+ }),
3114
+ (0, class_transformer_1.Expose)(),
3115
+ __metadata("design:type", Number)
3116
+ ], OtherLightsStateDataModel.prototype, "white", void 0);
3117
+ __decorate([
3118
+ (0, swagger_1.ApiProperty)({
3119
+ name: 'is_brightness_mixed',
3120
+ description: 'Whether lights without role have different brightness values',
3121
+ type: 'boolean',
3122
+ example: false,
3123
+ }),
3124
+ (0, class_transformer_1.Expose)({ name: 'is_brightness_mixed' }),
3125
+ __metadata("design:type", Boolean)
3126
+ ], OtherLightsStateDataModel.prototype, "isBrightnessMixed", void 0);
3127
+ __decorate([
3128
+ (0, swagger_1.ApiProperty)({
3129
+ name: 'is_color_temperature_mixed',
3130
+ description: 'Whether lights without role have different color temperature values',
3131
+ type: 'boolean',
3132
+ example: false,
3133
+ }),
3134
+ (0, class_transformer_1.Expose)({ name: 'is_color_temperature_mixed' }),
3135
+ __metadata("design:type", Boolean)
3136
+ ], OtherLightsStateDataModel.prototype, "isColorTemperatureMixed", void 0);
3137
+ __decorate([
3138
+ (0, swagger_1.ApiProperty)({
3139
+ name: 'is_color_mixed',
3140
+ description: 'Whether lights without role have different color values',
3141
+ type: 'boolean',
3142
+ example: false,
3143
+ }),
3144
+ (0, class_transformer_1.Expose)({ name: 'is_color_mixed' }),
3145
+ __metadata("design:type", Boolean)
3146
+ ], OtherLightsStateDataModel.prototype, "isColorMixed", void 0);
3147
+ __decorate([
3148
+ (0, swagger_1.ApiProperty)({
3149
+ name: 'is_white_mixed',
3150
+ description: 'Whether lights without role have different white level values',
3151
+ type: 'boolean',
3152
+ example: false,
3153
+ }),
3154
+ (0, class_transformer_1.Expose)({ name: 'is_white_mixed' }),
3155
+ __metadata("design:type", Boolean)
3156
+ ], OtherLightsStateDataModel.prototype, "isWhiteMixed", void 0);
3157
+ __decorate([
3158
+ (0, swagger_1.ApiProperty)({
3159
+ name: 'devices_count',
3160
+ description: 'Total number of lights without role',
3161
+ type: 'integer',
3162
+ example: 3,
3163
+ }),
3164
+ (0, class_transformer_1.Expose)({ name: 'devices_count' }),
3165
+ __metadata("design:type", Number)
3166
+ ], OtherLightsStateDataModel.prototype, "devicesCount", void 0);
3167
+ __decorate([
3168
+ (0, swagger_1.ApiProperty)({
3169
+ name: 'devices_on',
3170
+ description: 'Number of lights without role currently on',
3171
+ type: 'integer',
3172
+ example: 0,
3173
+ }),
3174
+ (0, class_transformer_1.Expose)({ name: 'devices_on' }),
3175
+ __metadata("design:type", Number)
3176
+ ], OtherLightsStateDataModel.prototype, "devicesOn", void 0);
3177
+ exports.OtherLightsStateDataModel = OtherLightsStateDataModel = OtherLightsStateDataModel_1 = __decorate([
3178
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataOtherLightsState' })
3179
+ ], OtherLightsStateDataModel);
3180
+ let RolesStateMapDataModel = RolesStateMapDataModel_1 = class RolesStateMapDataModel {
3181
+ static fromState(roles) {
3182
+ const model = new RolesStateMapDataModel_1();
3183
+ if (roles[spaces_home_control_constants_1.LightingRole.MAIN]) {
3184
+ model.main = RoleAggregatedStateDataModel.fromState(roles[spaces_home_control_constants_1.LightingRole.MAIN]);
3185
+ }
3186
+ if (roles[spaces_home_control_constants_1.LightingRole.TASK]) {
3187
+ model.task = RoleAggregatedStateDataModel.fromState(roles[spaces_home_control_constants_1.LightingRole.TASK]);
3188
+ }
3189
+ if (roles[spaces_home_control_constants_1.LightingRole.AMBIENT]) {
3190
+ model.ambient = RoleAggregatedStateDataModel.fromState(roles[spaces_home_control_constants_1.LightingRole.AMBIENT]);
3191
+ }
3192
+ if (roles[spaces_home_control_constants_1.LightingRole.ACCENT]) {
3193
+ model.accent = RoleAggregatedStateDataModel.fromState(roles[spaces_home_control_constants_1.LightingRole.ACCENT]);
3194
+ }
3195
+ if (roles[spaces_home_control_constants_1.LightingRole.NIGHT]) {
3196
+ model.night = RoleAggregatedStateDataModel.fromState(roles[spaces_home_control_constants_1.LightingRole.NIGHT]);
3197
+ }
3198
+ if (roles[spaces_home_control_constants_1.LightingRole.OTHER]) {
3199
+ model.other = RoleAggregatedStateDataModel.fromState(roles[spaces_home_control_constants_1.LightingRole.OTHER]);
3200
+ }
3201
+ return model;
3202
+ }
3203
+ };
3204
+ exports.RolesStateMapDataModel = RolesStateMapDataModel;
3205
+ __decorate([
3206
+ (0, swagger_1.ApiPropertyOptional)({
3207
+ description: 'State of MAIN role lights',
3208
+ type: () => RoleAggregatedStateDataModel,
3209
+ nullable: true,
3210
+ }),
3211
+ (0, class_transformer_1.Expose)(),
3212
+ (0, class_transformer_1.Type)(() => RoleAggregatedStateDataModel),
3213
+ __metadata("design:type", RoleAggregatedStateDataModel)
3214
+ ], RolesStateMapDataModel.prototype, "main", void 0);
3215
+ __decorate([
3216
+ (0, swagger_1.ApiPropertyOptional)({
3217
+ description: 'State of TASK role lights',
3218
+ type: () => RoleAggregatedStateDataModel,
3219
+ nullable: true,
3220
+ }),
3221
+ (0, class_transformer_1.Expose)(),
3222
+ (0, class_transformer_1.Type)(() => RoleAggregatedStateDataModel),
3223
+ __metadata("design:type", RoleAggregatedStateDataModel)
3224
+ ], RolesStateMapDataModel.prototype, "task", void 0);
3225
+ __decorate([
3226
+ (0, swagger_1.ApiPropertyOptional)({
3227
+ description: 'State of AMBIENT role lights',
3228
+ type: () => RoleAggregatedStateDataModel,
3229
+ nullable: true,
3230
+ }),
3231
+ (0, class_transformer_1.Expose)(),
3232
+ (0, class_transformer_1.Type)(() => RoleAggregatedStateDataModel),
3233
+ __metadata("design:type", RoleAggregatedStateDataModel)
3234
+ ], RolesStateMapDataModel.prototype, "ambient", void 0);
3235
+ __decorate([
3236
+ (0, swagger_1.ApiPropertyOptional)({
3237
+ description: 'State of ACCENT role lights',
3238
+ type: () => RoleAggregatedStateDataModel,
3239
+ nullable: true,
3240
+ }),
3241
+ (0, class_transformer_1.Expose)(),
3242
+ (0, class_transformer_1.Type)(() => RoleAggregatedStateDataModel),
3243
+ __metadata("design:type", RoleAggregatedStateDataModel)
3244
+ ], RolesStateMapDataModel.prototype, "accent", void 0);
3245
+ __decorate([
3246
+ (0, swagger_1.ApiPropertyOptional)({
3247
+ description: 'State of NIGHT role lights',
3248
+ type: () => RoleAggregatedStateDataModel,
3249
+ nullable: true,
3250
+ }),
3251
+ (0, class_transformer_1.Expose)(),
3252
+ (0, class_transformer_1.Type)(() => RoleAggregatedStateDataModel),
3253
+ __metadata("design:type", RoleAggregatedStateDataModel)
3254
+ ], RolesStateMapDataModel.prototype, "night", void 0);
3255
+ __decorate([
3256
+ (0, swagger_1.ApiPropertyOptional)({
3257
+ description: 'State of OTHER role lights',
3258
+ type: () => RoleAggregatedStateDataModel,
3259
+ nullable: true,
3260
+ }),
3261
+ (0, class_transformer_1.Expose)(),
3262
+ (0, class_transformer_1.Type)(() => RoleAggregatedStateDataModel),
3263
+ __metadata("design:type", RoleAggregatedStateDataModel)
3264
+ ], RolesStateMapDataModel.prototype, "other", void 0);
3265
+ exports.RolesStateMapDataModel = RolesStateMapDataModel = RolesStateMapDataModel_1 = __decorate([
3266
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataRolesStateMap' })
3267
+ ], RolesStateMapDataModel);
3268
+ let LightingStateDataModel = LightingStateDataModel_1 = class LightingStateDataModel {
3269
+ static fromState(state) {
3270
+ const model = new LightingStateDataModel_1();
3271
+ model.hasLights = state.hasLights;
3272
+ model.detectedMode = state.detectedMode;
3273
+ model.modeConfidence = state.modeConfidence;
3274
+ model.modeMatchPercentage = state.modeMatchPercentage;
3275
+ model.isModeFromIntent = state.isModeFromIntent;
3276
+ model.lastAppliedMode = state.lastAppliedMode;
3277
+ model.lastAppliedAt = state.lastAppliedAt;
3278
+ model.totalLights = state.totalLights;
3279
+ model.lightsOn = state.lightsOn;
3280
+ model.averageBrightness = state.averageBrightness;
3281
+ model.roles = RolesStateMapDataModel.fromState(state.roles);
3282
+ model.lightsByRole = { ...state.lightsByRole };
3283
+ model.other = OtherLightsStateDataModel.fromState(state.other);
3284
+ return model;
3285
+ }
3286
+ };
3287
+ exports.LightingStateDataModel = LightingStateDataModel;
3288
+ __decorate([
3289
+ (0, swagger_1.ApiProperty)({
3290
+ name: 'has_lights',
3291
+ description: 'Whether the space has any controllable lights',
3292
+ type: 'boolean',
3293
+ example: true,
3294
+ }),
3295
+ (0, class_transformer_1.Expose)({ name: 'has_lights' }),
3296
+ __metadata("design:type", Boolean)
3297
+ ], LightingStateDataModel.prototype, "hasLights", void 0);
3298
+ __decorate([
3299
+ (0, swagger_1.ApiPropertyOptional)({
3300
+ name: 'detected_mode',
3301
+ description: 'The lighting mode detected from current device states, null if no mode matches',
3302
+ enum: spaces_home_control_constants_1.LightingMode,
3303
+ nullable: true,
3304
+ example: spaces_home_control_constants_1.LightingMode.WORK,
3305
+ }),
3306
+ (0, class_transformer_1.Expose)({ name: 'detected_mode' }),
3307
+ __metadata("design:type", String)
3308
+ ], LightingStateDataModel.prototype, "detectedMode", void 0);
3309
+ __decorate([
3310
+ (0, swagger_1.ApiProperty)({
3311
+ name: 'mode_confidence',
3312
+ description: 'Confidence level of mode detection: exact (100% match), approximate (70-99% match), none (no match)',
3313
+ enum: ['exact', 'approximate', 'none'],
3314
+ example: 'exact',
3315
+ }),
3316
+ (0, class_transformer_1.Expose)({ name: 'mode_confidence' }),
3317
+ __metadata("design:type", String)
3318
+ ], LightingStateDataModel.prototype, "modeConfidence", void 0);
3319
+ __decorate([
3320
+ (0, swagger_1.ApiPropertyOptional)({
3321
+ name: 'mode_match_percentage',
3322
+ description: 'Percentage of role rules that match the detected mode (0-100), null if no mode detected',
3323
+ type: 'number',
3324
+ nullable: true,
3325
+ example: 100,
3326
+ }),
3327
+ (0, class_transformer_1.Expose)({ name: 'mode_match_percentage' }),
3328
+ __metadata("design:type", Number)
3329
+ ], LightingStateDataModel.prototype, "modeMatchPercentage", void 0);
3330
+ __decorate([
3331
+ (0, swagger_1.ApiProperty)({
3332
+ name: 'is_mode_from_intent',
3333
+ description: 'Whether the current mode was set by intent (true) or achieved by manual adjustments (false)',
3334
+ type: 'boolean',
3335
+ example: true,
3336
+ }),
3337
+ (0, class_transformer_1.Expose)({ name: 'is_mode_from_intent' }),
3338
+ __metadata("design:type", Boolean)
3339
+ ], LightingStateDataModel.prototype, "isModeFromIntent", void 0);
3340
+ __decorate([
3341
+ (0, swagger_1.ApiPropertyOptional)({
3342
+ name: 'last_applied_mode',
3343
+ description: 'The last lighting mode that was explicitly applied via intent (from storage)',
3344
+ enum: spaces_home_control_constants_1.LightingMode,
3345
+ nullable: true,
3346
+ }),
3347
+ (0, class_transformer_1.Expose)({ name: 'last_applied_mode' }),
3348
+ __metadata("design:type", String)
3349
+ ], LightingStateDataModel.prototype, "lastAppliedMode", void 0);
3350
+ __decorate([
3351
+ (0, swagger_1.ApiPropertyOptional)({
3352
+ name: 'last_applied_at',
3353
+ description: 'When the last mode was applied',
3354
+ type: 'string',
3355
+ format: 'date-time',
3356
+ nullable: true,
3357
+ example: null,
3358
+ }),
3359
+ (0, class_transformer_1.Expose)({ name: 'last_applied_at' }),
3360
+ __metadata("design:type", Date)
3361
+ ], LightingStateDataModel.prototype, "lastAppliedAt", void 0);
3362
+ __decorate([
3363
+ (0, swagger_1.ApiProperty)({
3364
+ name: 'total_lights',
3365
+ description: 'Total number of controllable lights in the space',
3366
+ type: 'integer',
3367
+ example: 5,
3368
+ }),
3369
+ (0, class_transformer_1.Expose)({ name: 'total_lights' }),
3370
+ __metadata("design:type", Number)
3371
+ ], LightingStateDataModel.prototype, "totalLights", void 0);
3372
+ __decorate([
3373
+ (0, swagger_1.ApiProperty)({
3374
+ name: 'lights_on',
3375
+ description: 'Number of lights currently on',
3376
+ type: 'integer',
3377
+ example: 3,
3378
+ }),
3379
+ (0, class_transformer_1.Expose)({ name: 'lights_on' }),
3380
+ __metadata("design:type", Number)
3381
+ ], LightingStateDataModel.prototype, "lightsOn", void 0);
3382
+ __decorate([
3383
+ (0, swagger_1.ApiPropertyOptional)({
3384
+ name: 'average_brightness',
3385
+ description: 'Average brightness of all ON lights (0-100), null if no lights are on or no brightness data',
3386
+ type: 'number',
3387
+ nullable: true,
3388
+ example: 85,
3389
+ }),
3390
+ (0, class_transformer_1.Expose)({ name: 'average_brightness' }),
3391
+ __metadata("design:type", Number)
3392
+ ], LightingStateDataModel.prototype, "averageBrightness", void 0);
3393
+ __decorate([
3394
+ (0, swagger_1.ApiProperty)({
3395
+ description: 'Aggregated state per lighting role',
3396
+ type: () => RolesStateMapDataModel,
3397
+ }),
3398
+ (0, class_transformer_1.Expose)(),
3399
+ (0, class_transformer_1.Type)(() => RolesStateMapDataModel),
3400
+ __metadata("design:type", RolesStateMapDataModel)
3401
+ ], LightingStateDataModel.prototype, "roles", void 0);
3402
+ __decorate([
3403
+ (0, swagger_1.ApiProperty)({
3404
+ name: 'lights_by_role',
3405
+ description: 'Count of lights grouped by role',
3406
+ type: 'object',
3407
+ additionalProperties: { type: 'integer' },
3408
+ example: { main: 2, task: 1, ambient: 2 },
3409
+ }),
3410
+ (0, class_transformer_1.Expose)({ name: 'lights_by_role' }),
3411
+ __metadata("design:type", Object)
3412
+ ], LightingStateDataModel.prototype, "lightsByRole", void 0);
3413
+ __decorate([
3414
+ (0, swagger_1.ApiProperty)({
3415
+ description: 'Aggregated state for lights without role assignment',
3416
+ type: () => OtherLightsStateDataModel,
3417
+ }),
3418
+ (0, class_transformer_1.Expose)(),
3419
+ (0, class_transformer_1.Type)(() => OtherLightsStateDataModel),
3420
+ __metadata("design:type", OtherLightsStateDataModel)
3421
+ ], LightingStateDataModel.prototype, "other", void 0);
3422
+ exports.LightingStateDataModel = LightingStateDataModel = LightingStateDataModel_1 = __decorate([
3423
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataLightingState' })
3424
+ ], LightingStateDataModel);
3425
+ let LightingStateResponseModel = class LightingStateResponseModel extends api_response_model_1.BaseSuccessResponseModel {
3426
+ };
3427
+ exports.LightingStateResponseModel = LightingStateResponseModel;
3428
+ __decorate([
3429
+ (0, swagger_1.ApiProperty)({
3430
+ description: 'The aggregated lighting state for the space',
3431
+ type: () => LightingStateDataModel,
3432
+ }),
3433
+ (0, class_transformer_1.Expose)(),
3434
+ (0, class_transformer_1.Type)(() => LightingStateDataModel),
3435
+ __metadata("design:type", LightingStateDataModel)
3436
+ ], LightingStateResponseModel.prototype, "data", void 0);
3437
+ exports.LightingStateResponseModel = LightingStateResponseModel = __decorate([
3438
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResLightingState' })
3439
+ ], LightingStateResponseModel);
3440
+ let SensorAdditionalReadingDataModel = class SensorAdditionalReadingDataModel {
3441
+ };
3442
+ exports.SensorAdditionalReadingDataModel = SensorAdditionalReadingDataModel;
3443
+ __decorate([
3444
+ (0, swagger_1.ApiProperty)({
3445
+ name: 'property_id',
3446
+ description: 'ID of the property',
3447
+ type: 'string',
3448
+ format: 'uuid',
3449
+ example: 'e5f41ad6-854b-7a0e-e6cb-f0a8d1e8e2ba',
3450
+ }),
3451
+ (0, class_transformer_1.Expose)({ name: 'property_id' }),
3452
+ __metadata("design:type", String)
3453
+ ], SensorAdditionalReadingDataModel.prototype, "propertyId", void 0);
3454
+ __decorate([
3455
+ (0, swagger_1.ApiProperty)({
3456
+ name: 'property_category',
3457
+ description: 'Category of the property',
3458
+ enum: devices_constants_1.PropertyCategory,
3459
+ example: 'level',
3460
+ }),
3461
+ (0, class_transformer_1.Expose)({ name: 'property_category' }),
3462
+ __metadata("design:type", String)
3463
+ ], SensorAdditionalReadingDataModel.prototype, "propertyCategory", void 0);
3464
+ __decorate([
3465
+ (0, swagger_1.ApiPropertyOptional)({
3466
+ description: 'Current property value (type depends on property)',
3467
+ oneOf: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }],
3468
+ nullable: true,
3469
+ example: 'moderate',
3470
+ }),
3471
+ (0, class_transformer_1.Expose)(),
3472
+ __metadata("design:type", Object)
3473
+ ], SensorAdditionalReadingDataModel.prototype, "value", void 0);
3474
+ __decorate([
3475
+ (0, swagger_1.ApiPropertyOptional)({
3476
+ description: 'Unit of the property value',
3477
+ type: 'string',
3478
+ nullable: true,
3479
+ example: 'lux',
3480
+ }),
3481
+ (0, class_transformer_1.Expose)(),
3482
+ __metadata("design:type", String)
3483
+ ], SensorAdditionalReadingDataModel.prototype, "unit", void 0);
3484
+ __decorate([
3485
+ (0, swagger_1.ApiPropertyOptional)({
3486
+ name: 'updated_at',
3487
+ description: 'Timestamp of the last property value update',
3488
+ type: 'string',
3489
+ format: 'date-time',
3490
+ nullable: true,
3491
+ example: '2025-01-25T12:00:00Z',
3492
+ }),
3493
+ (0, class_transformer_1.Expose)({ name: 'updated_at' }),
3494
+ (0, class_transformer_1.Transform)(({ value }) => (value instanceof Date ? value.toISOString() : value), {
3495
+ toPlainOnly: true,
3496
+ }),
3497
+ __metadata("design:type", Object)
3498
+ ], SensorAdditionalReadingDataModel.prototype, "updatedAt", void 0);
3499
+ __decorate([
3500
+ (0, swagger_1.ApiPropertyOptional)({
3501
+ description: 'Value trend direction computed from recent data points',
3502
+ enum: ['rising', 'falling', 'stable'],
3503
+ nullable: true,
3504
+ example: 'stable',
3505
+ }),
3506
+ (0, class_transformer_1.Expose)(),
3507
+ __metadata("design:type", String)
3508
+ ], SensorAdditionalReadingDataModel.prototype, "trend", void 0);
3509
+ exports.SensorAdditionalReadingDataModel = SensorAdditionalReadingDataModel = __decorate([
3510
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataSensorAdditionalReading' })
3511
+ ], SensorAdditionalReadingDataModel);
3512
+ let SensorReadingDataModel = class SensorReadingDataModel {
3513
+ };
3514
+ exports.SensorReadingDataModel = SensorReadingDataModel;
3515
+ __decorate([
3516
+ (0, swagger_1.ApiProperty)({
3517
+ name: 'device_id',
3518
+ description: 'ID of the sensor device',
3519
+ type: 'string',
3520
+ format: 'uuid',
3521
+ example: 'a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7',
3522
+ }),
3523
+ (0, class_transformer_1.Expose)({ name: 'device_id' }),
3524
+ __metadata("design:type", String)
3525
+ ], SensorReadingDataModel.prototype, "deviceId", void 0);
3526
+ __decorate([
3527
+ (0, swagger_1.ApiProperty)({
3528
+ name: 'device_name',
3529
+ description: 'Name of the sensor device',
3530
+ type: 'string',
3531
+ example: 'Living Room Sensor',
3532
+ }),
3533
+ (0, class_transformer_1.Expose)({ name: 'device_name' }),
3534
+ __metadata("design:type", String)
3535
+ ], SensorReadingDataModel.prototype, "deviceName", void 0);
3536
+ __decorate([
3537
+ (0, swagger_1.ApiProperty)({
3538
+ name: 'channel_id',
3539
+ description: 'ID of the sensor channel',
3540
+ type: 'string',
3541
+ format: 'uuid',
3542
+ example: 'c3d29eb4-632f-5e8c-c4af-ded8b9e6c0f8',
3543
+ }),
3544
+ (0, class_transformer_1.Expose)({ name: 'channel_id' }),
3545
+ __metadata("design:type", String)
3546
+ ], SensorReadingDataModel.prototype, "channelId", void 0);
3547
+ __decorate([
3548
+ (0, swagger_1.ApiProperty)({
3549
+ name: 'channel_name',
3550
+ description: 'Name of the sensor channel',
3551
+ type: 'string',
3552
+ example: 'Temperature',
3553
+ }),
3554
+ (0, class_transformer_1.Expose)({ name: 'channel_name' }),
3555
+ __metadata("design:type", String)
3556
+ ], SensorReadingDataModel.prototype, "channelName", void 0);
3557
+ __decorate([
3558
+ (0, swagger_1.ApiProperty)({
3559
+ name: 'channel_category',
3560
+ description: 'Category of the sensor channel',
3561
+ enum: devices_constants_1.ChannelCategory,
3562
+ example: 'temperature',
3563
+ }),
3564
+ (0, class_transformer_1.Expose)({ name: 'channel_category' }),
3565
+ __metadata("design:type", String)
3566
+ ], SensorReadingDataModel.prototype, "channelCategory", void 0);
3567
+ __decorate([
3568
+ (0, swagger_1.ApiPropertyOptional)({
3569
+ name: 'property_id',
3570
+ description: 'ID of the primary property (for time series queries)',
3571
+ type: 'string',
3572
+ format: 'uuid',
3573
+ nullable: true,
3574
+ example: 'd4e30fc5-743a-6f9d-d5ba-efe9c0f7d1a9',
3575
+ }),
3576
+ (0, class_transformer_1.Expose)({ name: 'property_id' }),
3577
+ __metadata("design:type", String)
3578
+ ], SensorReadingDataModel.prototype, "propertyId", void 0);
3579
+ __decorate([
3580
+ (0, swagger_1.ApiPropertyOptional)({
3581
+ description: 'Current sensor value (type depends on sensor)',
3582
+ oneOf: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }],
3583
+ nullable: true,
3584
+ example: 22.5,
3585
+ }),
3586
+ (0, class_transformer_1.Expose)(),
3587
+ __metadata("design:type", Object)
3588
+ ], SensorReadingDataModel.prototype, "value", void 0);
3589
+ __decorate([
3590
+ (0, swagger_1.ApiPropertyOptional)({
3591
+ description: 'Unit of the sensor value',
3592
+ type: 'string',
3593
+ nullable: true,
3594
+ example: '°C',
3595
+ }),
3596
+ (0, class_transformer_1.Expose)(),
3597
+ __metadata("design:type", String)
3598
+ ], SensorReadingDataModel.prototype, "unit", void 0);
3599
+ __decorate([
3600
+ (0, swagger_1.ApiPropertyOptional)({
3601
+ description: 'The sensor role for this channel',
3602
+ enum: spaces_home_control_constants_1.SensorRole,
3603
+ nullable: true,
3604
+ example: spaces_home_control_constants_1.SensorRole.ENVIRONMENT,
3605
+ }),
3606
+ (0, class_transformer_1.Expose)(),
3607
+ __metadata("design:type", String)
3608
+ ], SensorReadingDataModel.prototype, "role", void 0);
3609
+ __decorate([
3610
+ (0, swagger_1.ApiPropertyOptional)({
3611
+ name: 'updated_at',
3612
+ description: 'Timestamp of the last property value update',
3613
+ type: 'string',
3614
+ format: 'date-time',
3615
+ nullable: true,
3616
+ example: '2025-01-25T12:00:00Z',
3617
+ }),
3618
+ (0, class_transformer_1.Expose)({ name: 'updated_at' }),
3619
+ (0, class_transformer_1.Transform)(({ value }) => (value instanceof Date ? value.toISOString() : value), {
3620
+ toPlainOnly: true,
3621
+ }),
3622
+ __metadata("design:type", Object)
3623
+ ], SensorReadingDataModel.prototype, "updatedAt", void 0);
3624
+ __decorate([
3625
+ (0, swagger_1.ApiPropertyOptional)({
3626
+ description: 'Value trend direction computed from recent data points',
3627
+ enum: ['rising', 'falling', 'stable'],
3628
+ nullable: true,
3629
+ example: 'stable',
3630
+ }),
3631
+ (0, class_transformer_1.Expose)(),
3632
+ __metadata("design:type", String)
3633
+ ], SensorReadingDataModel.prototype, "trend", void 0);
3634
+ __decorate([
3635
+ (0, swagger_1.ApiPropertyOptional)({
3636
+ name: 'additional_readings',
3637
+ description: 'Additional displayable property readings from multi-property channels',
3638
+ type: () => [SensorAdditionalReadingDataModel],
3639
+ nullable: true,
3640
+ }),
3641
+ (0, class_transformer_1.Expose)({ name: 'additional_readings' }),
3642
+ (0, class_transformer_1.Type)(() => SensorAdditionalReadingDataModel),
3643
+ __metadata("design:type", Array)
3644
+ ], SensorReadingDataModel.prototype, "additionalReadings", void 0);
3645
+ exports.SensorReadingDataModel = SensorReadingDataModel = __decorate([
3646
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataSensorReading' })
3647
+ ], SensorReadingDataModel);
3648
+ let SensorRoleReadingsDataModel = class SensorRoleReadingsDataModel {
3649
+ };
3650
+ exports.SensorRoleReadingsDataModel = SensorRoleReadingsDataModel;
3651
+ __decorate([
3652
+ (0, swagger_1.ApiProperty)({
3653
+ description: 'The sensor role',
3654
+ enum: spaces_home_control_constants_1.SensorRole,
3655
+ example: spaces_home_control_constants_1.SensorRole.ENVIRONMENT,
3656
+ }),
3657
+ (0, class_transformer_1.Expose)(),
3658
+ __metadata("design:type", String)
3659
+ ], SensorRoleReadingsDataModel.prototype, "role", void 0);
3660
+ __decorate([
3661
+ (0, swagger_1.ApiProperty)({
3662
+ name: 'sensors_count',
3663
+ description: 'Number of sensors with this role',
3664
+ type: 'integer',
3665
+ example: 3,
3666
+ }),
3667
+ (0, class_transformer_1.Expose)({ name: 'sensors_count' }),
3668
+ __metadata("design:type", Number)
3669
+ ], SensorRoleReadingsDataModel.prototype, "sensorsCount", void 0);
3670
+ __decorate([
3671
+ (0, swagger_1.ApiProperty)({
3672
+ description: 'Sensor readings for this role',
3673
+ type: () => [SensorReadingDataModel],
3674
+ }),
3675
+ (0, class_transformer_1.Expose)(),
3676
+ (0, class_transformer_1.Type)(() => SensorReadingDataModel),
3677
+ __metadata("design:type", Array)
3678
+ ], SensorRoleReadingsDataModel.prototype, "readings", void 0);
3679
+ exports.SensorRoleReadingsDataModel = SensorRoleReadingsDataModel = __decorate([
3680
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataSensorRoleReadings' })
3681
+ ], SensorRoleReadingsDataModel);
3682
+ let EnvironmentSummaryDataModel = class EnvironmentSummaryDataModel {
3683
+ };
3684
+ exports.EnvironmentSummaryDataModel = EnvironmentSummaryDataModel;
3685
+ __decorate([
3686
+ (0, swagger_1.ApiPropertyOptional)({
3687
+ name: 'average_temperature',
3688
+ description: 'Average temperature from all environment sensors (°C)',
3689
+ type: 'number',
3690
+ nullable: true,
3691
+ example: 22.5,
3692
+ }),
3693
+ (0, class_transformer_1.Expose)({ name: 'average_temperature' }),
3694
+ __metadata("design:type", Number)
3695
+ ], EnvironmentSummaryDataModel.prototype, "averageTemperature", void 0);
3696
+ __decorate([
3697
+ (0, swagger_1.ApiPropertyOptional)({
3698
+ name: 'average_humidity',
3699
+ description: 'Average humidity from all environment sensors (%)',
3700
+ type: 'number',
3701
+ nullable: true,
3702
+ example: 45,
3703
+ }),
3704
+ (0, class_transformer_1.Expose)({ name: 'average_humidity' }),
3705
+ __metadata("design:type", Number)
3706
+ ], EnvironmentSummaryDataModel.prototype, "averageHumidity", void 0);
3707
+ __decorate([
3708
+ (0, swagger_1.ApiPropertyOptional)({
3709
+ name: 'average_pressure',
3710
+ description: 'Average atmospheric pressure (hPa)',
3711
+ type: 'number',
3712
+ nullable: true,
3713
+ example: 1013.25,
3714
+ }),
3715
+ (0, class_transformer_1.Expose)({ name: 'average_pressure' }),
3716
+ __metadata("design:type", Number)
3717
+ ], EnvironmentSummaryDataModel.prototype, "averagePressure", void 0);
3718
+ __decorate([
3719
+ (0, swagger_1.ApiPropertyOptional)({
3720
+ name: 'average_illuminance',
3721
+ description: 'Average light level (lux)',
3722
+ type: 'number',
3723
+ nullable: true,
3724
+ example: 500,
3725
+ }),
3726
+ (0, class_transformer_1.Expose)({ name: 'average_illuminance' }),
3727
+ __metadata("design:type", Number)
3728
+ ], EnvironmentSummaryDataModel.prototype, "averageIlluminance", void 0);
3729
+ exports.EnvironmentSummaryDataModel = EnvironmentSummaryDataModel = __decorate([
3730
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataEnvironmentSummary' })
3731
+ ], EnvironmentSummaryDataModel);
3732
+ let SafetyAlertDataModel = class SafetyAlertDataModel {
3733
+ };
3734
+ exports.SafetyAlertDataModel = SafetyAlertDataModel;
3735
+ __decorate([
3736
+ (0, swagger_1.ApiProperty)({
3737
+ name: 'channel_category',
3738
+ description: 'Type of safety sensor that triggered the alert',
3739
+ enum: devices_constants_1.ChannelCategory,
3740
+ example: 'smoke',
3741
+ }),
3742
+ (0, class_transformer_1.Expose)({ name: 'channel_category' }),
3743
+ __metadata("design:type", String)
3744
+ ], SafetyAlertDataModel.prototype, "channelCategory", void 0);
3745
+ __decorate([
3746
+ (0, swagger_1.ApiProperty)({
3747
+ name: 'device_id',
3748
+ description: 'ID of the device with the alert',
3749
+ type: 'string',
3750
+ format: 'uuid',
3751
+ example: 'a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7',
3752
+ }),
3753
+ (0, class_transformer_1.Expose)({ name: 'device_id' }),
3754
+ __metadata("design:type", String)
3755
+ ], SafetyAlertDataModel.prototype, "deviceId", void 0);
3756
+ __decorate([
3757
+ (0, swagger_1.ApiProperty)({
3758
+ name: 'device_name',
3759
+ description: 'Name of the device with the alert',
3760
+ type: 'string',
3761
+ example: 'Kitchen Smoke Detector',
3762
+ }),
3763
+ (0, class_transformer_1.Expose)({ name: 'device_name' }),
3764
+ __metadata("design:type", String)
3765
+ ], SafetyAlertDataModel.prototype, "deviceName", void 0);
3766
+ __decorate([
3767
+ (0, swagger_1.ApiProperty)({
3768
+ name: 'channel_id',
3769
+ description: 'ID of the sensor channel',
3770
+ type: 'string',
3771
+ format: 'uuid',
3772
+ example: 'c3d29eb4-632f-5e8c-c4af-ded8b9e6c0f8',
3773
+ }),
3774
+ (0, class_transformer_1.Expose)({ name: 'channel_id' }),
3775
+ __metadata("design:type", String)
3776
+ ], SafetyAlertDataModel.prototype, "channelId", void 0);
3777
+ __decorate([
3778
+ (0, swagger_1.ApiProperty)({
3779
+ description: 'Whether the sensor is currently triggered',
3780
+ type: 'boolean',
3781
+ example: true,
3782
+ }),
3783
+ (0, class_transformer_1.Expose)(),
3784
+ __metadata("design:type", Boolean)
3785
+ ], SafetyAlertDataModel.prototype, "triggered", void 0);
3786
+ exports.SafetyAlertDataModel = SafetyAlertDataModel = __decorate([
3787
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataSafetyAlert' })
3788
+ ], SafetyAlertDataModel);
3789
+ let SensorStateDataModel = class SensorStateDataModel {
3790
+ };
3791
+ exports.SensorStateDataModel = SensorStateDataModel;
3792
+ __decorate([
3793
+ (0, swagger_1.ApiProperty)({
3794
+ name: 'has_sensors',
3795
+ description: 'Whether the space has any sensor devices',
3796
+ type: 'boolean',
3797
+ example: true,
3798
+ }),
3799
+ (0, class_transformer_1.Expose)({ name: 'has_sensors' }),
3800
+ __metadata("design:type", Boolean)
3801
+ ], SensorStateDataModel.prototype, "hasSensors", void 0);
3802
+ __decorate([
3803
+ (0, swagger_1.ApiProperty)({
3804
+ name: 'total_sensors',
3805
+ description: 'Total number of sensor channels in the space',
3806
+ type: 'integer',
3807
+ example: 5,
3808
+ }),
3809
+ (0, class_transformer_1.Expose)({ name: 'total_sensors' }),
3810
+ __metadata("design:type", Number)
3811
+ ], SensorStateDataModel.prototype, "totalSensors", void 0);
3812
+ __decorate([
3813
+ (0, swagger_1.ApiProperty)({
3814
+ name: 'sensors_by_role',
3815
+ description: 'Count of sensors grouped by role',
3816
+ type: 'object',
3817
+ additionalProperties: { type: 'integer' },
3818
+ example: { environment: 3, safety: 1, security: 1 },
3819
+ }),
3820
+ (0, class_transformer_1.Expose)({ name: 'sensors_by_role' }),
3821
+ __metadata("design:type", Object)
3822
+ ], SensorStateDataModel.prototype, "sensorsByRole", void 0);
3823
+ __decorate([
3824
+ (0, swagger_1.ApiPropertyOptional)({
3825
+ description: 'Aggregated environmental readings summary',
3826
+ type: () => EnvironmentSummaryDataModel,
3827
+ nullable: true,
3828
+ }),
3829
+ (0, class_transformer_1.Expose)(),
3830
+ (0, class_transformer_1.Type)(() => EnvironmentSummaryDataModel),
3831
+ __metadata("design:type", EnvironmentSummaryDataModel)
3832
+ ], SensorStateDataModel.prototype, "environment", void 0);
3833
+ __decorate([
3834
+ (0, swagger_1.ApiProperty)({
3835
+ name: 'safety_alerts',
3836
+ description: 'List of active safety alerts',
3837
+ type: () => [SafetyAlertDataModel],
3838
+ }),
3839
+ (0, class_transformer_1.Expose)({ name: 'safety_alerts' }),
3840
+ (0, class_transformer_1.Type)(() => SafetyAlertDataModel),
3841
+ __metadata("design:type", Array)
3842
+ ], SensorStateDataModel.prototype, "safetyAlerts", void 0);
3843
+ __decorate([
3844
+ (0, swagger_1.ApiProperty)({
3845
+ name: 'has_safety_alert',
3846
+ description: 'Whether any safety sensor is currently triggered',
3847
+ type: 'boolean',
3848
+ example: false,
3849
+ }),
3850
+ (0, class_transformer_1.Expose)({ name: 'has_safety_alert' }),
3851
+ __metadata("design:type", Boolean)
3852
+ ], SensorStateDataModel.prototype, "hasSafetyAlert", void 0);
3853
+ __decorate([
3854
+ (0, swagger_1.ApiProperty)({
3855
+ name: 'motion_detected',
3856
+ description: 'Whether any motion sensor is currently detecting motion',
3857
+ type: 'boolean',
3858
+ example: false,
3859
+ }),
3860
+ (0, class_transformer_1.Expose)({ name: 'motion_detected' }),
3861
+ __metadata("design:type", Boolean)
3862
+ ], SensorStateDataModel.prototype, "motionDetected", void 0);
3863
+ __decorate([
3864
+ (0, swagger_1.ApiProperty)({
3865
+ name: 'occupancy_detected',
3866
+ description: 'Whether any occupancy sensor is currently detecting presence',
3867
+ type: 'boolean',
3868
+ example: true,
3869
+ }),
3870
+ (0, class_transformer_1.Expose)({ name: 'occupancy_detected' }),
3871
+ __metadata("design:type", Boolean)
3872
+ ], SensorStateDataModel.prototype, "occupancyDetected", void 0);
3873
+ __decorate([
3874
+ (0, swagger_1.ApiProperty)({
3875
+ description: 'Sensor readings grouped by role',
3876
+ type: () => [SensorRoleReadingsDataModel],
3877
+ }),
3878
+ (0, class_transformer_1.Expose)(),
3879
+ (0, class_transformer_1.Type)(() => SensorRoleReadingsDataModel),
3880
+ __metadata("design:type", Array)
3881
+ ], SensorStateDataModel.prototype, "readings", void 0);
3882
+ exports.SensorStateDataModel = SensorStateDataModel = __decorate([
3883
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataSensorState' })
3884
+ ], SensorStateDataModel);
3885
+ let SensorStateResponseModel = class SensorStateResponseModel extends api_response_model_1.BaseSuccessResponseModel {
3886
+ };
3887
+ exports.SensorStateResponseModel = SensorStateResponseModel;
3888
+ __decorate([
3889
+ (0, swagger_1.ApiProperty)({
3890
+ description: 'The sensor state data',
3891
+ type: () => SensorStateDataModel,
3892
+ }),
3893
+ (0, class_transformer_1.Expose)(),
3894
+ (0, class_transformer_1.Type)(() => SensorStateDataModel),
3895
+ __metadata("design:type", SensorStateDataModel)
3896
+ ], SensorStateResponseModel.prototype, "data", void 0);
3897
+ exports.SensorStateResponseModel = SensorStateResponseModel = __decorate([
3898
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResSensorState' })
3899
+ ], SensorStateResponseModel);
3900
+ let SensorTargetDataModel = class SensorTargetDataModel {
3901
+ };
3902
+ exports.SensorTargetDataModel = SensorTargetDataModel;
3903
+ __decorate([
3904
+ (0, swagger_1.ApiProperty)({
3905
+ name: 'device_id',
3906
+ description: 'ID of the sensor device',
3907
+ type: 'string',
3908
+ format: 'uuid',
3909
+ example: 'a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7',
3910
+ }),
3911
+ (0, class_transformer_1.Expose)({ name: 'device_id' }),
3912
+ __metadata("design:type", String)
3913
+ ], SensorTargetDataModel.prototype, "deviceId", void 0);
3914
+ __decorate([
3915
+ (0, swagger_1.ApiProperty)({
3916
+ name: 'device_name',
3917
+ description: 'Name of the device',
3918
+ type: 'string',
3919
+ example: 'Living Room Sensor',
3920
+ }),
3921
+ (0, class_transformer_1.Expose)({ name: 'device_name' }),
3922
+ __metadata("design:type", String)
3923
+ ], SensorTargetDataModel.prototype, "deviceName", void 0);
3924
+ __decorate([
3925
+ (0, swagger_1.ApiProperty)({
3926
+ name: 'device_category',
3927
+ description: 'Category of the device',
3928
+ enum: devices_constants_1.DeviceCategory,
3929
+ example: 'sensor',
3930
+ }),
3931
+ (0, class_transformer_1.Expose)({ name: 'device_category' }),
3932
+ __metadata("design:type", String)
3933
+ ], SensorTargetDataModel.prototype, "deviceCategory", void 0);
3934
+ __decorate([
3935
+ (0, swagger_1.ApiProperty)({
3936
+ name: 'channel_id',
3937
+ description: 'ID of the sensor channel',
3938
+ type: 'string',
3939
+ format: 'uuid',
3940
+ example: 'c3d29eb4-632f-5e8c-c4af-ded8b9e6c0f8',
3941
+ }),
3942
+ (0, class_transformer_1.Expose)({ name: 'channel_id' }),
3943
+ __metadata("design:type", String)
3944
+ ], SensorTargetDataModel.prototype, "channelId", void 0);
3945
+ __decorate([
3946
+ (0, swagger_1.ApiProperty)({
3947
+ name: 'channel_name',
3948
+ description: 'Name of the channel',
3949
+ type: 'string',
3950
+ example: 'Temperature',
3951
+ }),
3952
+ (0, class_transformer_1.Expose)({ name: 'channel_name' }),
3953
+ __metadata("design:type", String)
3954
+ ], SensorTargetDataModel.prototype, "channelName", void 0);
3955
+ __decorate([
3956
+ (0, swagger_1.ApiProperty)({
3957
+ name: 'channel_category',
3958
+ description: 'Category of the sensor channel',
3959
+ enum: devices_constants_1.ChannelCategory,
3960
+ example: 'temperature',
3961
+ }),
3962
+ (0, class_transformer_1.Expose)({ name: 'channel_category' }),
3963
+ __metadata("design:type", String)
3964
+ ], SensorTargetDataModel.prototype, "channelCategory", void 0);
3965
+ __decorate([
3966
+ (0, swagger_1.ApiPropertyOptional)({
3967
+ description: 'The assigned sensor role (null if not assigned)',
3968
+ enum: spaces_home_control_constants_1.SensorRole,
3969
+ nullable: true,
3970
+ example: spaces_home_control_constants_1.SensorRole.ENVIRONMENT,
3971
+ }),
3972
+ (0, class_transformer_1.Expose)(),
3973
+ __metadata("design:type", String)
3974
+ ], SensorTargetDataModel.prototype, "role", void 0);
3975
+ __decorate([
3976
+ (0, swagger_1.ApiProperty)({
3977
+ description: 'Priority for role ordering (lower = higher priority)',
3978
+ type: 'integer',
3979
+ example: 0,
3980
+ }),
3981
+ (0, class_transformer_1.Expose)(),
3982
+ __metadata("design:type", Number)
3983
+ ], SensorTargetDataModel.prototype, "priority", void 0);
3984
+ exports.SensorTargetDataModel = SensorTargetDataModel = __decorate([
3985
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataSensorTarget' })
3986
+ ], SensorTargetDataModel);
3987
+ let SensorTargetsResponseModel = class SensorTargetsResponseModel extends api_response_model_1.BaseSuccessResponseModel {
3988
+ };
3989
+ exports.SensorTargetsResponseModel = SensorTargetsResponseModel;
3990
+ __decorate([
3991
+ (0, swagger_1.ApiProperty)({
3992
+ description: 'Array of sensor targets in the space with their role assignments',
3993
+ type: () => [SensorTargetDataModel],
3994
+ }),
3995
+ (0, class_transformer_1.Expose)(),
3996
+ (0, class_transformer_1.Type)(() => SensorTargetDataModel),
3997
+ __metadata("design:type", Array)
3998
+ ], SensorTargetsResponseModel.prototype, "data", void 0);
3999
+ exports.SensorTargetsResponseModel = SensorTargetsResponseModel = __decorate([
4000
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResSensorTargets' })
4001
+ ], SensorTargetsResponseModel);
4002
+ let SensorRoleResponseModel = class SensorRoleResponseModel extends api_response_model_1.BaseSuccessResponseModel {
4003
+ };
4004
+ exports.SensorRoleResponseModel = SensorRoleResponseModel;
4005
+ __decorate([
4006
+ (0, swagger_1.ApiProperty)({
4007
+ description: 'The sensor role assignment, or null if the role was removed',
4008
+ type: () => space_sensor_role_entity_1.SpaceSensorRoleEntity,
4009
+ nullable: true,
4010
+ required: false,
4011
+ }),
4012
+ (0, class_transformer_1.Expose)(),
4013
+ (0, class_transformer_1.Type)(() => space_sensor_role_entity_1.SpaceSensorRoleEntity),
4014
+ __metadata("design:type", space_sensor_role_entity_1.SpaceSensorRoleEntity)
4015
+ ], SensorRoleResponseModel.prototype, "data", void 0);
4016
+ exports.SensorRoleResponseModel = SensorRoleResponseModel = __decorate([
4017
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResSensorRole' })
4018
+ ], SensorRoleResponseModel);
4019
+ let BulkSensorRoleResultItemModel = class BulkSensorRoleResultItemModel {
4020
+ };
4021
+ exports.BulkSensorRoleResultItemModel = BulkSensorRoleResultItemModel;
4022
+ __decorate([
4023
+ (0, swagger_1.ApiProperty)({
4024
+ name: 'device_id',
4025
+ description: 'ID of the sensor device',
4026
+ type: 'string',
4027
+ format: 'uuid',
4028
+ example: 'a2b19ca3-521e-4d7b-b3fe-bcb7a8d5b9e7',
4029
+ }),
4030
+ (0, class_transformer_1.Expose)({ name: 'device_id' }),
4031
+ __metadata("design:type", String)
4032
+ ], BulkSensorRoleResultItemModel.prototype, "deviceId", void 0);
4033
+ __decorate([
4034
+ (0, swagger_1.ApiProperty)({
4035
+ name: 'channel_id',
4036
+ description: 'ID of the sensor channel',
4037
+ type: 'string',
4038
+ format: 'uuid',
4039
+ example: 'c3d29eb4-632f-5e8c-c4af-ded8b9e6c0f8',
4040
+ }),
4041
+ (0, class_transformer_1.Expose)({ name: 'channel_id' }),
4042
+ __metadata("design:type", String)
4043
+ ], BulkSensorRoleResultItemModel.prototype, "channelId", void 0);
4044
+ __decorate([
4045
+ (0, swagger_1.ApiProperty)({
4046
+ description: 'Whether the role was set successfully',
4047
+ type: 'boolean',
4048
+ example: true,
4049
+ }),
4050
+ (0, class_transformer_1.Expose)(),
4051
+ __metadata("design:type", Boolean)
4052
+ ], BulkSensorRoleResultItemModel.prototype, "success", void 0);
4053
+ __decorate([
4054
+ (0, swagger_1.ApiPropertyOptional)({
4055
+ description: 'The role that was set (null if failed)',
4056
+ enum: spaces_home_control_constants_1.SensorRole,
4057
+ nullable: true,
4058
+ example: spaces_home_control_constants_1.SensorRole.ENVIRONMENT,
4059
+ }),
4060
+ (0, class_transformer_1.Expose)(),
4061
+ __metadata("design:type", String)
4062
+ ], BulkSensorRoleResultItemModel.prototype, "role", void 0);
4063
+ __decorate([
4064
+ (0, swagger_1.ApiPropertyOptional)({
4065
+ description: 'Error message if the role assignment failed',
4066
+ type: 'string',
4067
+ nullable: true,
4068
+ example: null,
4069
+ }),
4070
+ (0, class_transformer_1.Expose)(),
4071
+ __metadata("design:type", String)
4072
+ ], BulkSensorRoleResultItemModel.prototype, "error", void 0);
4073
+ exports.BulkSensorRoleResultItemModel = BulkSensorRoleResultItemModel = __decorate([
4074
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataBulkSensorRoleResultItem' })
4075
+ ], BulkSensorRoleResultItemModel);
4076
+ let BulkSensorRolesResultDataModel = class BulkSensorRolesResultDataModel {
4077
+ };
4078
+ exports.BulkSensorRolesResultDataModel = BulkSensorRolesResultDataModel;
4079
+ __decorate([
4080
+ (0, swagger_1.ApiProperty)({
4081
+ description: 'Whether all role assignments succeeded',
4082
+ type: 'boolean',
4083
+ example: true,
4084
+ }),
4085
+ (0, class_transformer_1.Expose)(),
4086
+ __metadata("design:type", Boolean)
4087
+ ], BulkSensorRolesResultDataModel.prototype, "success", void 0);
4088
+ __decorate([
4089
+ (0, swagger_1.ApiProperty)({
4090
+ name: 'total_count',
4091
+ description: 'Total number of role assignments attempted',
4092
+ type: 'integer',
4093
+ example: 3,
4094
+ }),
4095
+ (0, class_transformer_1.Expose)({ name: 'total_count' }),
4096
+ __metadata("design:type", Number)
4097
+ ], BulkSensorRolesResultDataModel.prototype, "totalCount", void 0);
4098
+ __decorate([
4099
+ (0, swagger_1.ApiProperty)({
4100
+ name: 'success_count',
4101
+ description: 'Number of successful role assignments',
4102
+ type: 'integer',
4103
+ example: 3,
4104
+ }),
4105
+ (0, class_transformer_1.Expose)({ name: 'success_count' }),
4106
+ __metadata("design:type", Number)
4107
+ ], BulkSensorRolesResultDataModel.prototype, "successCount", void 0);
4108
+ __decorate([
4109
+ (0, swagger_1.ApiProperty)({
4110
+ name: 'failure_count',
4111
+ description: 'Number of failed role assignments',
4112
+ type: 'integer',
4113
+ example: 0,
4114
+ }),
4115
+ (0, class_transformer_1.Expose)({ name: 'failure_count' }),
4116
+ __metadata("design:type", Number)
4117
+ ], BulkSensorRolesResultDataModel.prototype, "failureCount", void 0);
4118
+ __decorate([
4119
+ (0, swagger_1.ApiProperty)({
4120
+ description: 'Detailed results for each role assignment',
4121
+ type: () => [BulkSensorRoleResultItemModel],
4122
+ }),
4123
+ (0, class_transformer_1.Expose)(),
4124
+ (0, class_transformer_1.Type)(() => BulkSensorRoleResultItemModel),
4125
+ __metadata("design:type", Array)
4126
+ ], BulkSensorRolesResultDataModel.prototype, "results", void 0);
4127
+ exports.BulkSensorRolesResultDataModel = BulkSensorRolesResultDataModel = __decorate([
4128
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleDataBulkSensorRolesResult' })
4129
+ ], BulkSensorRolesResultDataModel);
4130
+ let BulkSensorRolesResponseModel = class BulkSensorRolesResponseModel extends api_response_model_1.BaseSuccessResponseModel {
4131
+ };
4132
+ exports.BulkSensorRolesResponseModel = BulkSensorRolesResponseModel;
4133
+ __decorate([
4134
+ (0, swagger_1.ApiProperty)({
4135
+ description: 'The result of the bulk sensor role update',
4136
+ type: () => BulkSensorRolesResultDataModel,
4137
+ }),
4138
+ (0, class_transformer_1.Expose)(),
4139
+ (0, class_transformer_1.Type)(() => BulkSensorRolesResultDataModel),
4140
+ __metadata("design:type", BulkSensorRolesResultDataModel)
4141
+ ], BulkSensorRolesResponseModel.prototype, "data", void 0);
4142
+ exports.BulkSensorRolesResponseModel = BulkSensorRolesResponseModel = __decorate([
4143
+ (0, swagger_1.ApiSchema)({ name: 'SpacesModuleResBulkSensorRoles' })
4144
+ ], BulkSensorRolesResponseModel);
4145
+ //# sourceMappingURL=spaces-response.model.js.map