@fastybird/smart-panel-backend 0.4.0-alpha.0 → 0.4.0-alpha.2

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 (301) hide show
  1. package/dist/app.module.js +7 -17
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/common/filters/not-found-exception.filter.d.ts +4 -0
  4. package/dist/common/filters/not-found-exception.filter.js +22 -1
  5. package/dist/common/filters/not-found-exception.filter.js.map +1 -1
  6. package/dist/common/services/app-instance-holder.service.d.ts +1 -2
  7. package/dist/common/services/app-instance-holder.service.js.map +1 -1
  8. package/dist/common/utils/config.utils.d.ts +0 -1
  9. package/dist/common/utils/config.utils.js +1 -11
  10. package/dist/common/utils/config.utils.js.map +1 -1
  11. package/dist/main.js +15 -5
  12. package/dist/main.js.map +1 -1
  13. package/dist/migrations/1000000000000-InitialSetup.js +8 -0
  14. package/dist/migrations/1000000000000-InitialSetup.js.map +1 -1
  15. package/dist/modules/auth/auth.module.js +1 -1
  16. package/dist/modules/auth/auth.module.js.map +1 -1
  17. package/dist/modules/buddy/buddy.module.js +2 -1
  18. package/dist/modules/buddy/buddy.module.js.map +1 -1
  19. package/dist/modules/buddy/buddy.utils.d.ts +8 -0
  20. package/dist/modules/buddy/buddy.utils.js +49 -0
  21. package/dist/modules/buddy/buddy.utils.js.map +1 -1
  22. package/dist/modules/buddy/controllers/buddy-suggestions.controller.js +2 -2
  23. package/dist/modules/buddy/controllers/buddy-suggestions.controller.js.map +1 -1
  24. package/dist/modules/buddy/entities/buddy-conversation.entity.js +3 -3
  25. package/dist/modules/buddy/entities/buddy-conversation.entity.js.map +1 -1
  26. package/dist/modules/buddy/entities/buddy-message.entity.js +2 -2
  27. package/dist/modules/buddy/entities/buddy-message.entity.js.map +1 -1
  28. package/dist/modules/buddy/entities/buddy-suggestion.entity.d.ts +19 -0
  29. package/dist/modules/buddy/entities/buddy-suggestion.entity.js +93 -0
  30. package/dist/modules/buddy/entities/buddy-suggestion.entity.js.map +1 -0
  31. package/dist/modules/buddy/platforms/llm-provider.platform.d.ts +6 -0
  32. package/dist/modules/buddy/platforms/openai-sdk.utils.d.ts +2 -1
  33. package/dist/modules/buddy/platforms/openai-sdk.utils.js +12 -1
  34. package/dist/modules/buddy/platforms/openai-sdk.utils.js.map +1 -1
  35. package/dist/modules/buddy/services/buddy-conversation.service.js +23 -8
  36. package/dist/modules/buddy/services/buddy-conversation.service.js.map +1 -1
  37. package/dist/modules/buddy/services/heartbeat.service.js +1 -1
  38. package/dist/modules/buddy/services/heartbeat.service.js.map +1 -1
  39. package/dist/modules/buddy/services/llm-provider.service.js +2 -10
  40. package/dist/modules/buddy/services/llm-provider.service.js.map +1 -1
  41. package/dist/modules/buddy/services/module-reset.service.d.ts +3 -1
  42. package/dist/modules/buddy/services/module-reset.service.js +6 -1
  43. package/dist/modules/buddy/services/module-reset.service.js.map +1 -1
  44. package/dist/modules/buddy/services/pattern-detector.service.d.ts +4 -1
  45. package/dist/modules/buddy/services/pattern-detector.service.js +10 -3
  46. package/dist/modules/buddy/services/pattern-detector.service.js.map +1 -1
  47. package/dist/modules/buddy/services/scene-suggestion-evaluator.service.d.ts +4 -1
  48. package/dist/modules/buddy/services/scene-suggestion-evaluator.service.js +10 -4
  49. package/dist/modules/buddy/services/scene-suggestion-evaluator.service.js.map +1 -1
  50. package/dist/modules/buddy/services/stt-provider.service.js +2 -10
  51. package/dist/modules/buddy/services/stt-provider.service.js.map +1 -1
  52. package/dist/modules/buddy/services/suggestion-engine.service.d.ts +19 -13
  53. package/dist/modules/buddy/services/suggestion-engine.service.js +170 -103
  54. package/dist/modules/buddy/services/suggestion-engine.service.js.map +1 -1
  55. package/dist/modules/buddy/services/tts-provider.service.js +2 -10
  56. package/dist/modules/buddy/services/tts-provider.service.js.map +1 -1
  57. package/dist/modules/dashboard/dashboard.module.js +1 -1
  58. package/dist/modules/dashboard/dashboard.module.js.map +1 -1
  59. package/dist/modules/devices/services/devices.service.js.map +1 -1
  60. package/dist/modules/extensions/controllers/actions.controller.d.ts +9 -4
  61. package/dist/modules/extensions/controllers/actions.controller.js +63 -10
  62. package/dist/modules/extensions/controllers/actions.controller.js.map +1 -1
  63. package/dist/modules/extensions/extensions.module.js +3 -1
  64. package/dist/modules/extensions/extensions.module.js.map +1 -1
  65. package/dist/modules/extensions/extensions.openapi.d.ts +3 -3
  66. package/dist/modules/extensions/extensions.openapi.js +2 -0
  67. package/dist/modules/extensions/extensions.openapi.js.map +1 -1
  68. package/dist/modules/extensions/models/action.model.d.ts +13 -0
  69. package/dist/modules/extensions/models/action.model.js +87 -1
  70. package/dist/modules/extensions/models/action.model.js.map +1 -1
  71. package/dist/modules/extensions/models/actions-response.model.d.ts +4 -1
  72. package/dist/modules/extensions/models/actions-response.model.js +19 -1
  73. package/dist/modules/extensions/models/actions-response.model.js.map +1 -1
  74. package/dist/modules/extensions/services/action-audit.service.d.ts +21 -0
  75. package/dist/modules/extensions/services/action-audit.service.js +49 -0
  76. package/dist/modules/extensions/services/action-audit.service.js.map +1 -0
  77. package/dist/modules/extensions/services/extension-action-registry.service.d.ts +6 -1
  78. package/dist/modules/extensions/services/extension-action-registry.service.js +22 -3
  79. package/dist/modules/extensions/services/extension-action-registry.service.js.map +1 -1
  80. package/dist/modules/extensions/services/extension-action.interface.d.ts +3 -0
  81. package/dist/modules/extensions/services/extension-action.interface.js +3 -1
  82. package/dist/modules/extensions/services/extension-action.interface.js.map +1 -1
  83. package/dist/modules/platform/platforms/abstract.platform.d.ts +40 -0
  84. package/dist/modules/platform/platforms/abstract.platform.js +242 -0
  85. package/dist/modules/platform/platforms/abstract.platform.js.map +1 -1
  86. package/dist/modules/platform/platforms/docker.platform.d.ts +2 -0
  87. package/dist/modules/platform/platforms/docker.platform.js +3 -0
  88. package/dist/modules/platform/platforms/docker.platform.js.map +1 -1
  89. package/dist/modules/platform/platforms/generic.platform.d.ts +2 -1
  90. package/dist/modules/platform/platforms/generic.platform.js +15 -15
  91. package/dist/modules/platform/platforms/generic.platform.js.map +1 -1
  92. package/dist/modules/platform/platforms/home-assistant.platform.d.ts +4 -0
  93. package/dist/modules/platform/platforms/home-assistant.platform.js +21 -0
  94. package/dist/modules/platform/platforms/home-assistant.platform.js.map +1 -1
  95. package/dist/modules/platform/platforms/raspberry.platform.js +20 -40
  96. package/dist/modules/platform/platforms/raspberry.platform.js.map +1 -1
  97. package/dist/modules/platform/services/platform.service.d.ts +2 -0
  98. package/dist/modules/platform/services/platform.service.js +7 -0
  99. package/dist/modules/platform/services/platform.service.js.map +1 -1
  100. package/dist/modules/storage/models/config.model.js +2 -4
  101. package/dist/modules/storage/models/config.model.js.map +1 -1
  102. package/dist/modules/storage/services/storage.service.js +3 -0
  103. package/dist/modules/storage/services/storage.service.js.map +1 -1
  104. package/dist/modules/storage/storage.constants.d.ts +2 -0
  105. package/dist/modules/storage/storage.constants.js +3 -1
  106. package/dist/modules/storage/storage.constants.js.map +1 -1
  107. package/dist/modules/storage/storage.module.js +1 -3
  108. package/dist/modules/storage/storage.module.js.map +1 -1
  109. package/dist/modules/swagger/commands/serve-swagger.command.d.ts +14 -0
  110. package/dist/modules/swagger/commands/serve-swagger.command.js +60 -0
  111. package/dist/modules/swagger/commands/serve-swagger.command.js.map +1 -0
  112. package/dist/modules/swagger/swagger.module.js +2 -0
  113. package/dist/modules/swagger/swagger.module.js.map +1 -1
  114. package/dist/modules/system/models/system.model.d.ts +1 -0
  115. package/dist/modules/system/models/system.model.js +11 -0
  116. package/dist/modules/system/models/system.model.js.map +1 -1
  117. package/dist/modules/system/scripts/update-worker.sh +304 -0
  118. package/dist/modules/system/services/system-command.service.d.ts +7 -1
  119. package/dist/modules/system/services/system-command.service.js +24 -4
  120. package/dist/modules/system/services/system-command.service.js.map +1 -1
  121. package/dist/modules/system/services/system.service.js +4 -1
  122. package/dist/modules/system/services/system.service.js.map +1 -1
  123. package/dist/modules/system/services/update-executor.service.d.ts +4 -0
  124. package/dist/modules/system/services/update-executor.service.js +104 -1
  125. package/dist/modules/system/services/update-executor.service.js.map +1 -1
  126. package/dist/modules/system/system.constants.d.ts +2 -0
  127. package/dist/modules/system/system.constants.js +2 -0
  128. package/dist/modules/system/system.constants.js.map +1 -1
  129. package/dist/modules/system/system.module.js +6 -3
  130. package/dist/modules/system/system.module.js.map +1 -1
  131. package/dist/modules/users/controllers/users.controller.js +9 -0
  132. package/dist/modules/users/controllers/users.controller.js.map +1 -1
  133. package/dist/modules/users/dto/update-user.dto.d.ts +1 -0
  134. package/dist/modules/users/dto/update-user.dto.js +14 -1
  135. package/dist/modules/users/dto/update-user.dto.js.map +1 -1
  136. package/dist/modules/users/services/users.service.d.ts +1 -0
  137. package/dist/modules/users/services/users.service.js +10 -0
  138. package/dist/modules/users/services/users.service.js.map +1 -1
  139. package/dist/modules/websocket/gateway/websocket.gateway.js +5 -2
  140. package/dist/modules/websocket/gateway/websocket.gateway.js.map +1 -1
  141. package/dist/modules/websocket/services/command-event-registry.service.d.ts +3 -1
  142. package/dist/modules/websocket/services/command-event-registry.service.js +5 -4
  143. package/dist/modules/websocket/services/command-event-registry.service.js.map +1 -1
  144. package/dist/plugins/buddy-openai/platforms/openai.provider.js +1 -0
  145. package/dist/plugins/buddy-openai/platforms/openai.provider.js.map +1 -1
  146. package/dist/plugins/data-sources-device-channel/data-sources-device-channel.plugin.js +1 -1
  147. package/dist/plugins/data-sources-device-channel/data-sources-device-channel.plugin.js.map +1 -1
  148. package/dist/plugins/data-sources-weather/data-sources-weather.plugin.js +1 -1
  149. package/dist/plugins/data-sources-weather/data-sources-weather.plugin.js.map +1 -1
  150. package/dist/plugins/devices-home-assistant/devices-home-assistant.openapi.d.ts +2 -2
  151. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js +3 -1
  152. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js.map +1 -1
  153. package/dist/plugins/devices-home-assistant/dto/helper-mapping-preview.dto.d.ts +1 -0
  154. package/dist/plugins/devices-home-assistant/dto/helper-mapping-preview.dto.js +14 -0
  155. package/dist/plugins/devices-home-assistant/dto/helper-mapping-preview.dto.js.map +1 -1
  156. package/dist/plugins/devices-home-assistant/models/config.model.d.ts +1 -0
  157. package/dist/plugins/devices-home-assistant/models/config.model.js +12 -0
  158. package/dist/plugins/devices-home-assistant/models/config.model.js.map +1 -1
  159. package/dist/plugins/devices-home-assistant/platforms/home-assistant.device.platform.d.ts +3 -1
  160. package/dist/plugins/devices-home-assistant/platforms/home-assistant.device.platform.js +14 -2
  161. package/dist/plugins/devices-home-assistant/platforms/home-assistant.device.platform.js.map +1 -1
  162. package/dist/plugins/devices-home-assistant/services/device-adoption.service.js +2 -2
  163. package/dist/plugins/devices-home-assistant/services/device-adoption.service.js.map +1 -1
  164. package/dist/plugins/devices-home-assistant/services/ha-supervisor.service.d.ts +10 -0
  165. package/dist/plugins/devices-home-assistant/services/ha-supervisor.service.js +47 -0
  166. package/dist/plugins/devices-home-assistant/services/ha-supervisor.service.js.map +1 -0
  167. package/dist/plugins/devices-home-assistant/services/helper-adoption.service.js +1 -7
  168. package/dist/plugins/devices-home-assistant/services/helper-adoption.service.js.map +1 -1
  169. package/dist/plugins/devices-home-assistant/services/home-assistant-config-validator.service.d.ts +3 -1
  170. package/dist/plugins/devices-home-assistant/services/home-assistant-config-validator.service.js +9 -3
  171. package/dist/plugins/devices-home-assistant/services/home-assistant-config-validator.service.js.map +1 -1
  172. package/dist/plugins/devices-home-assistant/services/home-assistant.http.service.d.ts +5 -1
  173. package/dist/plugins/devices-home-assistant/services/home-assistant.http.service.js +35 -12
  174. package/dist/plugins/devices-home-assistant/services/home-assistant.http.service.js.map +1 -1
  175. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.d.ts +6 -1
  176. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js +63 -6
  177. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js.map +1 -1
  178. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js +1 -0
  179. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js.map +1 -1
  180. package/dist/plugins/devices-reterminal/devices-reterminal.plugin.js +1 -1
  181. package/dist/plugins/devices-reterminal/devices-reterminal.plugin.js.map +1 -1
  182. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.d.ts +1 -0
  183. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js +28 -0
  184. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js.map +1 -1
  185. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.d.ts +4 -0
  186. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js +36 -0
  187. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js.map +1 -1
  188. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js +1 -1
  189. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js.map +1 -1
  190. package/dist/plugins/devices-shelly-ng/dto/update-config.dto.js +6 -6
  191. package/dist/plugins/devices-shelly-ng/dto/update-config.dto.js.map +1 -1
  192. package/dist/plugins/devices-shelly-ng/models/config.model.js +6 -6
  193. package/dist/plugins/devices-shelly-ng/models/config.model.js.map +1 -1
  194. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.d.ts +4 -0
  195. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js +33 -1
  196. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js.map +1 -1
  197. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js +1 -1
  198. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js.map +1 -1
  199. package/dist/plugins/devices-shelly-v1/services/shellies-adapter.service.d.ts +6 -2
  200. package/dist/plugins/devices-shelly-v1/services/shellies-adapter.service.js +68 -20
  201. package/dist/plugins/devices-shelly-v1/services/shellies-adapter.service.js.map +1 -1
  202. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.js +4 -0
  203. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.js.map +1 -1
  204. package/dist/plugins/devices-third-party/devices-third-party.plugin.js +1 -1
  205. package/dist/plugins/devices-third-party/devices-third-party.plugin.js.map +1 -1
  206. package/dist/plugins/devices-wled/devices-wled.plugin.js +1 -1
  207. package/dist/plugins/devices-wled/devices-wled.plugin.js.map +1 -1
  208. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.plugin.js +1 -1
  209. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.plugin.js.map +1 -1
  210. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt-config-validator.service.js +1 -1
  211. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt-config-validator.service.js.map +1 -1
  212. 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
  213. package/dist/{modules/storage/plugins/influx-v1/influx-v1.update-config.dto.js → plugins/influx-v1/dto/update-config.dto.js} +3 -3
  214. package/dist/plugins/influx-v1/dto/update-config.dto.js.map +1 -0
  215. package/dist/plugins/influx-v1/influx-v1.constants.js.map +1 -0
  216. package/dist/{modules/storage/plugins → plugins}/influx-v1/influx-v1.openapi.d.ts +1 -1
  217. package/dist/plugins/influx-v1/influx-v1.openapi.js +7 -0
  218. package/dist/plugins/influx-v1/influx-v1.openapi.js.map +1 -0
  219. package/dist/{modules/storage/plugins/influx-v1/influx-v1.module.d.ts → plugins/influx-v1/influx-v1.plugin.d.ts} +6 -6
  220. package/dist/{modules/storage/plugins/influx-v1/influx-v1.module.js → plugins/influx-v1/influx-v1.plugin.js} +22 -22
  221. package/dist/plugins/influx-v1/influx-v1.plugin.js.map +1 -0
  222. package/dist/{modules/storage/plugins/influx-v1/influx-v1.config.model.d.ts → plugins/influx-v1/models/config.model.d.ts} +1 -1
  223. package/dist/{modules/storage/plugins/influx-v1/influx-v1.config.model.js → plugins/influx-v1/models/config.model.js} +3 -3
  224. package/dist/plugins/influx-v1/models/config.model.js.map +1 -0
  225. package/dist/{modules/storage/plugins/influx-v1/influx-v1.plugin.d.ts → plugins/influx-v1/services/influx-v1.storage.d.ts} +3 -3
  226. package/dist/{modules/storage/plugins/influx-v1/influx-v1.plugin.js → plugins/influx-v1/services/influx-v1.storage.js} +9 -9
  227. package/dist/plugins/influx-v1/services/influx-v1.storage.js.map +1 -0
  228. package/dist/plugins/influx-v2/dto/update-config.dto.d.ts +8 -0
  229. package/dist/plugins/influx-v2/dto/update-config.dto.js +82 -0
  230. package/dist/plugins/influx-v2/dto/update-config.dto.js.map +1 -0
  231. package/dist/plugins/influx-v2/influx-v2.constants.d.ts +4 -0
  232. package/dist/plugins/influx-v2/influx-v2.constants.js +8 -0
  233. package/dist/plugins/influx-v2/influx-v2.constants.js.map +1 -0
  234. package/dist/plugins/influx-v2/influx-v2.openapi.d.ts +2 -0
  235. package/dist/plugins/influx-v2/influx-v2.openapi.js +7 -0
  236. package/dist/plugins/influx-v2/influx-v2.openapi.js.map +1 -0
  237. package/dist/plugins/influx-v2/influx-v2.plugin.d.ts +17 -0
  238. package/dist/plugins/influx-v2/influx-v2.plugin.js +95 -0
  239. package/dist/plugins/influx-v2/influx-v2.plugin.js.map +1 -0
  240. package/dist/plugins/influx-v2/models/config.model.d.ts +9 -0
  241. package/dist/plugins/influx-v2/models/config.model.js +93 -0
  242. package/dist/plugins/influx-v2/models/config.model.js.map +1 -0
  243. package/dist/plugins/influx-v2/services/influx-v2.storage.d.ts +33 -0
  244. package/dist/plugins/influx-v2/services/influx-v2.storage.js +230 -0
  245. package/dist/plugins/influx-v2/services/influx-v2.storage.js.map +1 -0
  246. package/dist/{modules/storage/plugins/memory/memory.update-config.dto.d.ts → plugins/memory-storage/dto/update-config.dto.d.ts} +1 -1
  247. package/dist/{modules/storage/plugins/memory/memory.update-config.dto.js → plugins/memory-storage/dto/update-config.dto.js} +5 -5
  248. package/dist/plugins/memory-storage/dto/update-config.dto.js.map +1 -0
  249. package/dist/{modules/storage/plugins/memory/memory.constants.js → plugins/memory-storage/memory-storage.constants.js} +1 -1
  250. package/dist/plugins/memory-storage/memory-storage.constants.js.map +1 -0
  251. package/dist/{modules/storage/plugins/memory/memory.openapi.d.ts → plugins/memory-storage/memory-storage.openapi.d.ts} +1 -1
  252. package/dist/plugins/memory-storage/memory-storage.openapi.js +7 -0
  253. package/dist/plugins/memory-storage/memory-storage.openapi.js.map +1 -0
  254. package/dist/plugins/memory-storage/memory-storage.plugin.d.ts +13 -0
  255. package/dist/{modules/storage/plugins/memory/memory.module.js → plugins/memory-storage/memory-storage.plugin.js} +24 -24
  256. package/dist/plugins/memory-storage/memory-storage.plugin.js.map +1 -0
  257. package/dist/{modules/storage/plugins/memory/memory.config.model.d.ts → plugins/memory-storage/models/config.model.d.ts} +1 -1
  258. package/dist/{modules/storage/plugins/memory/memory.config.model.js → plugins/memory-storage/models/config.model.js} +5 -5
  259. package/dist/plugins/memory-storage/models/config.model.js.map +1 -0
  260. package/dist/{modules/storage/plugins/memory → plugins/memory-storage/services}/in-memory-timeseries.store.d.ts +1 -1
  261. package/dist/{modules/storage/plugins/memory → plugins/memory-storage/services}/in-memory-timeseries.store.js +4 -4
  262. package/dist/plugins/memory-storage/services/in-memory-timeseries.store.js.map +1 -0
  263. package/dist/plugins/memory-storage/services/influxql-parser.js.map +1 -0
  264. package/dist/{modules/storage/plugins/memory/memory.plugin.d.ts → plugins/memory-storage/services/memory-storage.storage.d.ts} +3 -3
  265. package/dist/{modules/storage/plugins/memory/memory.plugin.js → plugins/memory-storage/services/memory-storage.storage.js} +8 -8
  266. package/dist/plugins/memory-storage/services/memory-storage.storage.js.map +1 -0
  267. package/dist/plugins/simulator/services/simulator-actions.service.js +3 -0
  268. package/dist/plugins/simulator/services/simulator-actions.service.js.map +1 -1
  269. package/dist/plugins/simulator/simulator.plugin.js +4 -4
  270. package/dist/plugins/simulator/simulator.plugin.js.map +1 -1
  271. package/dist/plugins/tiles-device-preview/tiles-device-preview.plugin.js +1 -1
  272. package/dist/plugins/tiles-device-preview/tiles-device-preview.plugin.js.map +1 -1
  273. package/dist/plugins/tiles-scene/tiles-scene.plugin.js +1 -1
  274. package/dist/plugins/tiles-scene/tiles-scene.plugin.js.map +1 -1
  275. package/dist/plugins/tiles-time/tiles-time.plugin.js +1 -1
  276. package/dist/plugins/weather-openweathermap-onecall/weather-openweathermap-onecall.plugin.js +1 -1
  277. package/dist/plugins/weather-openweathermap-onecall/weather-openweathermap-onecall.plugin.js.map +1 -1
  278. package/dist/tsconfig.build.tsbuildinfo +1 -1
  279. package/package.json +4 -2
  280. package/dist/modules/storage/plugins/influx-v1/influx-v1.config.model.js.map +0 -1
  281. package/dist/modules/storage/plugins/influx-v1/influx-v1.constants.js.map +0 -1
  282. package/dist/modules/storage/plugins/influx-v1/influx-v1.module.js.map +0 -1
  283. package/dist/modules/storage/plugins/influx-v1/influx-v1.openapi.js +0 -7
  284. package/dist/modules/storage/plugins/influx-v1/influx-v1.openapi.js.map +0 -1
  285. package/dist/modules/storage/plugins/influx-v1/influx-v1.plugin.js.map +0 -1
  286. package/dist/modules/storage/plugins/influx-v1/influx-v1.update-config.dto.js.map +0 -1
  287. package/dist/modules/storage/plugins/memory/in-memory-timeseries.store.js.map +0 -1
  288. package/dist/modules/storage/plugins/memory/influxql-parser.js.map +0 -1
  289. package/dist/modules/storage/plugins/memory/memory.config.model.js.map +0 -1
  290. package/dist/modules/storage/plugins/memory/memory.constants.js.map +0 -1
  291. package/dist/modules/storage/plugins/memory/memory.module.d.ts +0 -13
  292. package/dist/modules/storage/plugins/memory/memory.module.js.map +0 -1
  293. package/dist/modules/storage/plugins/memory/memory.openapi.js +0 -7
  294. package/dist/modules/storage/plugins/memory/memory.openapi.js.map +0 -1
  295. package/dist/modules/storage/plugins/memory/memory.plugin.js.map +0 -1
  296. package/dist/modules/storage/plugins/memory/memory.update-config.dto.js.map +0 -1
  297. /package/dist/{modules/storage/plugins → plugins}/influx-v1/influx-v1.constants.d.ts +0 -0
  298. /package/dist/{modules/storage/plugins → plugins}/influx-v1/influx-v1.constants.js +0 -0
  299. /package/dist/{modules/storage/plugins/memory/memory.constants.d.ts → plugins/memory-storage/memory-storage.constants.d.ts} +0 -0
  300. /package/dist/{modules/storage/plugins/memory → plugins/memory-storage/services}/influxql-parser.d.ts +0 -0
  301. /package/dist/{modules/storage/plugins/memory → plugins/memory-storage/services}/influxql-parser.js +0 -0
@@ -22,26 +22,58 @@ const users_constants_1 = require("../../users/users.constants");
22
22
  const execute_action_dto_1 = require("../dto/execute-action.dto");
23
23
  const extensions_constants_1 = require("../extensions.constants");
24
24
  const actions_response_model_1 = require("../models/actions-response.model");
25
+ const action_audit_service_1 = require("../services/action-audit.service");
25
26
  const extension_action_registry_service_1 = require("../services/extension-action-registry.service");
26
27
  let ActionsController = class ActionsController {
27
- constructor(actionRegistry) {
28
+ constructor(actionRegistry, auditService) {
28
29
  this.actionRegistry = actionRegistry;
30
+ this.auditService = auditService;
29
31
  this.logger = (0, extension_logger_service_1.createExtensionLogger)(extensions_constants_1.EXTENSIONS_MODULE_NAME, 'ActionsController');
30
32
  }
31
- async getActions(type) {
33
+ async getActions(type, req) {
32
34
  this.logger.debug(`Fetching actions for extension '${type}'`);
33
- const actions = await this.actionRegistry.getActions(type);
35
+ const userRole = this.getUserRole(req);
36
+ const actions = await this.actionRegistry.getActions(type, userRole);
34
37
  const response = new actions_response_model_1.ExtensionActionsResponseModel();
35
38
  response.data = actions;
36
39
  return response;
37
40
  }
38
- async executeAction(type, actionId, body) {
41
+ async executeAction(type, actionId, body, req) {
42
+ const userRole = this.getUserRole(req);
43
+ const allowed = this.actionRegistry.isAllowed(type, actionId, userRole);
44
+ if (allowed === false) {
45
+ throw new common_1.ForbiddenException(`Insufficient permissions to execute action '${actionId}'`);
46
+ }
39
47
  this.logger.log(`Executing action '${actionId}' for extension '${type}'`);
40
- const result = await this.actionRegistry.execute(type, actionId, body.data.params ?? {});
48
+ const startTime = Date.now();
49
+ const params = body.data.params ?? {};
50
+ const result = await this.actionRegistry.execute(type, actionId, params);
51
+ this.auditService.record({
52
+ extensionType: type,
53
+ actionId,
54
+ userId: req.auth?.type === 'user' ? req.auth.id : null,
55
+ userRole: userRole,
56
+ params,
57
+ success: result.success,
58
+ message: result.message ?? null,
59
+ durationMs: Date.now() - startTime,
60
+ });
41
61
  const response = new actions_response_model_1.ActionResultResponseModel();
42
62
  response.data = result;
43
63
  return response;
44
64
  }
65
+ getActionHistory(type, actionId) {
66
+ const records = this.auditService.getHistory(type, actionId);
67
+ const response = new actions_response_model_1.ActionHistoryResponseModel();
68
+ response.data = records;
69
+ return response;
70
+ }
71
+ getUserRole(req) {
72
+ if (!req.auth?.role) {
73
+ throw new common_1.ForbiddenException('Unable to determine user role');
74
+ }
75
+ return req.auth.role;
76
+ }
45
77
  };
46
78
  exports.ActionsController = ActionsController;
47
79
  __decorate([
@@ -50,14 +82,15 @@ __decorate([
50
82
  (0, swagger_1.ApiOperation)({
51
83
  operationId: 'get-extensions-module-extension-actions',
52
84
  summary: 'List extension actions',
53
- description: 'Returns available actions for an extension with resolved dynamic parameter options. Requires owner or admin role.',
85
+ description: 'Returns available actions for an extension with resolved dynamic parameter options. Each action includes an `allowed` field based on the current user role.',
54
86
  }),
55
87
  (0, swagger_1.ApiParam)({ name: 'type', type: 'string', description: 'Extension type identifier' }),
56
88
  (0, api_documentation_decorator_1.ApiSuccessResponse)(actions_response_model_1.ExtensionActionsResponseModel, 'Returns the list of available actions'),
57
89
  (0, api_documentation_decorator_1.ApiNotFoundResponse)('Extension not found'),
58
90
  __param(0, (0, common_1.Param)('type')),
91
+ __param(1, (0, common_1.Req)()),
59
92
  __metadata("design:type", Function),
60
- __metadata("design:paramtypes", [String]),
93
+ __metadata("design:paramtypes", [String, Object]),
61
94
  __metadata("design:returntype", Promise)
62
95
  ], ActionsController.prototype, "getActions", null);
63
96
  __decorate([
@@ -66,7 +99,7 @@ __decorate([
66
99
  (0, swagger_1.ApiOperation)({
67
100
  operationId: 'execute-extensions-module-extension-action',
68
101
  summary: 'Execute an extension action',
69
- description: 'Executes an immediate action with the provided parameters. Only actions with mode=immediate can be executed via REST. Requires owner or admin role.',
102
+ description: "Executes an immediate action with the provided parameters. Requires the user role to match the action's required roles.",
70
103
  }),
71
104
  (0, swagger_1.ApiParam)({ name: 'type', type: 'string', description: 'Extension type identifier' }),
72
105
  (0, swagger_1.ApiParam)({ name: 'actionId', type: 'string', description: 'Action identifier' }),
@@ -74,16 +107,36 @@ __decorate([
74
107
  (0, api_documentation_decorator_1.ApiSuccessResponse)(actions_response_model_1.ActionResultResponseModel, 'Returns the action execution result'),
75
108
  (0, api_documentation_decorator_1.ApiNotFoundResponse)('Extension or action not found'),
76
109
  (0, api_documentation_decorator_1.ApiBadRequestResponse)('Action is not executable (wrong mode) or invalid parameters'),
110
+ (0, api_documentation_decorator_1.ApiForbiddenResponse)('Insufficient permissions to execute this action'),
77
111
  __param(0, (0, common_1.Param)('type')),
78
112
  __param(1, (0, common_1.Param)('actionId')),
79
113
  __param(2, (0, common_1.Body)()),
114
+ __param(3, (0, common_1.Req)()),
80
115
  __metadata("design:type", Function),
81
- __metadata("design:paramtypes", [String, String, execute_action_dto_1.ReqExecuteActionDto]),
116
+ __metadata("design:paramtypes", [String, String, execute_action_dto_1.ReqExecuteActionDto, Object]),
82
117
  __metadata("design:returntype", Promise)
83
118
  ], ActionsController.prototype, "executeAction", null);
119
+ __decorate([
120
+ (0, common_1.Get)(':actionId/history'),
121
+ (0, roles_guard_1.Roles)(users_constants_1.UserRole.OWNER, users_constants_1.UserRole.ADMIN),
122
+ (0, swagger_1.ApiOperation)({
123
+ operationId: 'get-extensions-module-extension-action-history',
124
+ summary: 'Get action execution history',
125
+ description: 'Returns recent execution records for a specific action.',
126
+ }),
127
+ (0, swagger_1.ApiParam)({ name: 'type', type: 'string', description: 'Extension type identifier' }),
128
+ (0, swagger_1.ApiParam)({ name: 'actionId', type: 'string', description: 'Action identifier' }),
129
+ (0, api_documentation_decorator_1.ApiSuccessResponse)(actions_response_model_1.ActionHistoryResponseModel, 'Returns the action execution history'),
130
+ __param(0, (0, common_1.Param)('type')),
131
+ __param(1, (0, common_1.Param)('actionId')),
132
+ __metadata("design:type", Function),
133
+ __metadata("design:paramtypes", [String, String]),
134
+ __metadata("design:returntype", actions_response_model_1.ActionHistoryResponseModel)
135
+ ], ActionsController.prototype, "getActionHistory", null);
84
136
  exports.ActionsController = ActionsController = __decorate([
85
137
  (0, swagger_1.ApiTags)(extensions_constants_1.EXTENSIONS_MODULE_API_TAG_NAME),
86
138
  (0, common_1.Controller)('extensions/:type/actions'),
87
- __metadata("design:paramtypes", [extension_action_registry_service_1.ExtensionActionRegistryService])
139
+ __metadata("design:paramtypes", [extension_action_registry_service_1.ExtensionActionRegistryService,
140
+ action_audit_service_1.ActionAuditService])
88
141
  ], ActionsController);
89
142
  //# sourceMappingURL=actions.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"actions.controller.js","sourceRoot":"","sources":["../../../../src/modules/extensions/controllers/actions.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.controller.js","sourceRoot":"","sources":["../../../../src/modules/extensions/controllers/actions.controller.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ const extensions_constants_1 = require("./extensions.constants");
28
28
  const extensions_openapi_1 = require("./extensions.openapi");
29
29
  const config_model_1 = require("./models/config.model");
30
30
  const extensions_stats_provider_1 = require("./providers/extensions-stats.provider");
31
+ const action_audit_service_1 = require("./services/action-audit.service");
31
32
  const extension_action_registry_service_1 = require("./services/extension-action-registry.service");
32
33
  const extensions_service_1 = require("./services/extensions.service");
33
34
  const module_reset_service_1 = require("./services/module-reset.service");
@@ -116,13 +117,14 @@ exports.ExtensionsModule = ExtensionsModule = __decorate([
116
117
  module_reset_service_1.ModuleResetService,
117
118
  plugin_service_manager_service_1.PluginServiceManagerService,
118
119
  extension_action_registry_service_1.ExtensionActionRegistryService,
120
+ action_audit_service_1.ActionAuditService,
119
121
  extensions_stats_provider_1.ExtensionsStatsProvider,
120
122
  services_command_1.ListServicesCommand,
121
123
  services_command_1.StartServiceCommand,
122
124
  services_command_1.StopServiceCommand,
123
125
  services_command_1.RestartServiceCommand,
124
126
  ],
125
- exports: [plugin_service_manager_service_1.PluginServiceManagerService, extension_action_registry_service_1.ExtensionActionRegistryService],
127
+ exports: [plugin_service_manager_service_1.PluginServiceManagerService, extension_action_registry_service_1.ExtensionActionRegistryService, action_audit_service_1.ActionAuditService],
126
128
  }),
127
129
  __metadata("design:paramtypes", [extensions_service_1.ExtensionsService,
128
130
  module_reset_service_1.ModuleResetService,
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.module.js","sourceRoot":"","sources":["../../../src/modules/extensions/extensions.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA8D;AAC9D,qEAAqF;AAErF,gGAA0F;AAC1F,qFAAgF;AAChF,wDAAoD;AACpD,+EAAiE;AACjE,yGAAmG;AACnG,sGAAgG;AAEhG,kEAKqC;AACrC,yEAAqE;AACrE,qGAAgG;AAChG,+EAA2E;AAC3E,2EAAuE;AACvE,+DAAoE;AACpE,iEAIgC;AAChC,6DAAuE;AACvE,wDAA8D;AAC9D,qFAAgF;AAChF,oGAA8F;AAC9F,sEAAkE;AAClE,0EAAqE;AACrE,8FAAwF;AAwBjF,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC5B,YACkB,iBAAoC,EACpC,WAA+B,EAC/B,oBAAiD,EACjD,eAA6C,EAC7C,oBAA8C,EAC9C,oBAA0C,EAC1C,uBAAgD;QANhD,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,gBAAW,GAAX,WAAW,CAAoB;QAC/B,yBAAoB,GAApB,oBAAoB,CAA6B;QACjD,oBAAe,GAAf,eAAe,CAA8B;QAC7C,yBAAoB,GAApB,oBAAoB,CAA0B;QAC9C,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,4BAAuB,GAAvB,uBAAuB,CAAyB;IAC/D,CAAC;IAEJ,YAAY;QAEX,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAmD;YAC3F,IAAI,EAAE,6CAAsB;YAC5B,KAAK,EAAE,oCAAqB;YAC5B,SAAS,EAAE,6CAAyB;SACpC,CAAC,CAAC;QAGH,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,6CAAsB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAG/F,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,6CAAsB,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAGzF,KAAK,MAAM,KAAK,IAAI,oDAA+B,EAAE,CAAC;YACrD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAGD,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC;YAC7C,IAAI,EAAE,6CAAsB;YAC5B,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,wCAAwC;YACrD,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCJ;YACJ,KAAK,EAAE;gBACN,aAAa,EAAE,wCAAwC;gBACvD,UAAU,EAAE,0CAA0C;aACtD;SACD,CAAC,CAAC;IACJ,CAAC;CACD,CAAA;AA9EY,4CAAgB;2BAAhB,gBAAgB;IAtB5B,IAAA,0BAAM,EAAC;QACP,OAAO,EAAE,6CAAsB;QAC/B,WAAW,EAAE,qDAA8B;QAC3C,WAAW,EAAE,4DAAqC;KAClD,CAAC;IACD,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACP,OAAO,EAAE,CAAC,4BAAgB,EAAE,0BAAW,CAAC;QACxC,WAAW,EAAE,CAAC,4CAAoB,EAAE,iEAA8B,EAAE,wCAAkB,EAAE,sCAAiB,CAAC;QAC1G,SAAS,EAAE;YACV,yCAAkB;YAClB,4DAA2B;YAC3B,kEAA8B;YAC9B,mDAAuB;YAEvB,sCAAmB;YACnB,sCAAmB;YACnB,qCAAkB;YAClB,wCAAqB;SACrB;QACD,OAAO,EAAE,CAAC,4DAA2B,EAAE,kEAA8B,CAAC;KACtE,CAAC;qCAGoC,sCAAiB;QACvB,yCAAkB;QACT,4DAA2B;QAChC,8DAA4B;QACvB,sDAAwB;QACxB,6CAAoB;QACjB,mDAAuB;GARtD,gBAAgB,CA8E5B"}
1
+ {"version":3,"file":"extensions.module.js","sourceRoot":"","sources":["../../../src/modules/extensions/extensions.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA8D;AAC9D,qEAAqF;AAErF,gGAA0F;AAC1F,qFAAgF;AAChF,wDAAoD;AACpD,+EAAiE;AACjE,yGAAmG;AACnG,sGAAgG;AAEhG,kEAKqC;AACrC,yEAAqE;AACrE,qGAAgG;AAChG,+EAA2E;AAC3E,2EAAuE;AACvE,+DAAoE;AACpE,iEAIgC;AAChC,6DAAuE;AACvE,wDAA8D;AAC9D,qFAAgF;AAChF,0EAAqE;AACrE,oGAA8F;AAC9F,sEAAkE;AAClE,0EAAqE;AACrE,8FAAwF;AAyBjF,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC5B,YACkB,iBAAoC,EACpC,WAA+B,EAC/B,oBAAiD,EACjD,eAA6C,EAC7C,oBAA8C,EAC9C,oBAA0C,EAC1C,uBAAgD;QANhD,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,gBAAW,GAAX,WAAW,CAAoB;QAC/B,yBAAoB,GAApB,oBAAoB,CAA6B;QACjD,oBAAe,GAAf,eAAe,CAA8B;QAC7C,yBAAoB,GAApB,oBAAoB,CAA0B;QAC9C,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,4BAAuB,GAAvB,uBAAuB,CAAyB;IAC/D,CAAC;IAEJ,YAAY;QAEX,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAmD;YAC3F,IAAI,EAAE,6CAAsB;YAC5B,KAAK,EAAE,oCAAqB;YAC5B,SAAS,EAAE,6CAAyB;SACpC,CAAC,CAAC;QAGH,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,6CAAsB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAG/F,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,6CAAsB,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAGzF,KAAK,MAAM,KAAK,IAAI,oDAA+B,EAAE,CAAC;YACrD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAGD,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC;YAC7C,IAAI,EAAE,6CAAsB;YAC5B,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,wCAAwC;YACrD,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCJ;YACJ,KAAK,EAAE;gBACN,aAAa,EAAE,wCAAwC;gBACvD,UAAU,EAAE,0CAA0C;aACtD;SACD,CAAC,CAAC;IACJ,CAAC;CACD,CAAA;AA9EY,4CAAgB;2BAAhB,gBAAgB;IAvB5B,IAAA,0BAAM,EAAC;QACP,OAAO,EAAE,6CAAsB;QAC/B,WAAW,EAAE,qDAA8B;QAC3C,WAAW,EAAE,4DAAqC;KAClD,CAAC;IACD,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACP,OAAO,EAAE,CAAC,4BAAgB,EAAE,0BAAW,CAAC;QACxC,WAAW,EAAE,CAAC,4CAAoB,EAAE,iEAA8B,EAAE,wCAAkB,EAAE,sCAAiB,CAAC;QAC1G,SAAS,EAAE;YACV,yCAAkB;YAClB,4DAA2B;YAC3B,kEAA8B;YAC9B,yCAAkB;YAClB,mDAAuB;YAEvB,sCAAmB;YACnB,sCAAmB;YACnB,qCAAkB;YAClB,wCAAqB;SACrB;QACD,OAAO,EAAE,CAAC,4DAA2B,EAAE,kEAA8B,EAAE,yCAAkB,CAAC;KAC1F,CAAC;qCAGoC,sCAAiB;QACvB,yCAAkB;QACT,4DAA2B;QAChC,8DAA4B;QACvB,sDAAwB;QACxB,6CAAoB;QACjB,mDAAuB;GARtD,gBAAgB,CA8E5B"}
@@ -1,10 +1,10 @@
1
1
  import { ExecuteActionDataDto, ReqExecuteActionDto } from './dto/execute-action.dto';
2
2
  import { ReqUpdateExtensionDto, UpdateExtensionDataDto } from './dto/update-extension.dto';
3
- import { ActionParameterModel, ActionParameterOptionModel, ActionParameterValidationModel, ActionResultModel, ExtensionActionModel } from './models/action.model';
4
- import { ActionResultResponseModel, ExtensionActionsResponseModel } from './models/actions-response.model';
3
+ import { ActionExecutionRecordModel, ActionParameterModel, ActionParameterOptionModel, ActionParameterValidationModel, ActionResultModel, ExtensionActionModel } from './models/action.model';
4
+ import { ActionHistoryResponseModel, ActionResultResponseModel, ExtensionActionsResponseModel } from './models/actions-response.model';
5
5
  import { DiscoveredExtensionBaseModel } from './models/discovered-extension.model';
6
6
  import { DiscoveredExtensionsResponseModel } from './models/discovered-extensions-response.model';
7
7
  import { ExtensionLinksModel } from './models/extension.model';
8
8
  import { ExtensionsResponseModel } from './models/extensions-response.model';
9
9
  import { ServicesStatusResponseModel } from './models/service-status.model';
10
- export declare const EXTENSIONS_SWAGGER_EXTRA_MODELS: (typeof ExtensionLinksModel | typeof ExecuteActionDataDto | typeof ReqExecuteActionDto | typeof ActionParameterValidationModel | typeof ActionParameterOptionModel | typeof ActionParameterModel | typeof ExtensionActionModel | typeof ActionResultModel | typeof ExtensionActionsResponseModel | typeof ActionResultResponseModel | typeof DiscoveredExtensionBaseModel | typeof DiscoveredExtensionsResponseModel | typeof UpdateExtensionDataDto | typeof ReqUpdateExtensionDto | typeof ExtensionsResponseModel | typeof ServicesStatusResponseModel)[];
10
+ export declare const EXTENSIONS_SWAGGER_EXTRA_MODELS: (typeof ExtensionLinksModel | typeof ExecuteActionDataDto | typeof ReqExecuteActionDto | typeof ActionParameterValidationModel | typeof ActionParameterOptionModel | typeof ActionParameterModel | typeof ExtensionActionModel | typeof ActionResultModel | typeof ActionExecutionRecordModel | typeof ExtensionActionsResponseModel | typeof ActionResultResponseModel | typeof ActionHistoryResponseModel | typeof DiscoveredExtensionBaseModel | typeof DiscoveredExtensionsResponseModel | typeof UpdateExtensionDataDto | typeof ReqUpdateExtensionDto | typeof ExtensionsResponseModel | typeof ServicesStatusResponseModel)[];
@@ -24,6 +24,8 @@ exports.EXTENSIONS_SWAGGER_EXTRA_MODELS = [
24
24
  action_model_1.ActionResultModel,
25
25
  actions_response_model_1.ExtensionActionsResponseModel,
26
26
  actions_response_model_1.ActionResultResponseModel,
27
+ action_model_1.ActionExecutionRecordModel,
28
+ actions_response_model_1.ActionHistoryResponseModel,
27
29
  execute_action_dto_1.ReqExecuteActionDto,
28
30
  execute_action_dto_1.ExecuteActionDataDto,
29
31
  discovered_extension_model_1.DiscoveredExtensionBaseModel,
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.openapi.js","sourceRoot":"","sources":["../../../src/modules/extensions/extensions.openapi.ts"],"names":[],"mappings":";;;AAAA,iEAAqF;AACrF,qEAA2F;AAC3F,wDAM+B;AAC/B,4EAA2G;AAC3G,oFAI6C;AAC7C,wGAAkG;AAClG,8DAA+E;AAC/E,kFAAqG;AACrG,wEAIuC;AAE1B,QAAA,+BAA+B,GAAG;IAC9C,gCAAc;IACd,qCAAmB;IACnB,kDAAsB;IACtB,mDAAuB;IACvB,4CAAqB;IACrB,6CAAsB;IAEtB,mCAAoB;IACpB,mCAAoB;IACpB,yCAA0B;IAC1B,6CAA8B;IAC9B,gCAAiB;IACjB,sDAA6B;IAC7B,kDAAyB;IACzB,wCAAmB;IACnB,yCAAoB;IAEpB,yDAA4B;IAC5B,0DAA6B;IAC7B,4DAA+B;IAC/B,wEAAiC;IAEjC,yCAAkB;IAClB,iDAA0B;IAC1B,kDAA2B;CAC3B,CAAC"}
1
+ {"version":3,"file":"extensions.openapi.js","sourceRoot":"","sources":["../../../src/modules/extensions/extensions.openapi.ts"],"names":[],"mappings":";;;AAAA,iEAAqF;AACrF,qEAA2F;AAC3F,wDAO+B;AAC/B,4EAIyC;AACzC,oFAI6C;AAC7C,wGAAkG;AAClG,8DAA+E;AAC/E,kFAAqG;AACrG,wEAIuC;AAE1B,QAAA,+BAA+B,GAAG;IAC9C,gCAAc;IACd,qCAAmB;IACnB,kDAAsB;IACtB,mDAAuB;IACvB,4CAAqB;IACrB,6CAAsB;IAEtB,mCAAoB;IACpB,mCAAoB;IACpB,yCAA0B;IAC1B,6CAA8B;IAC9B,gCAAiB;IACjB,sDAA6B;IAC7B,kDAAyB;IACzB,yCAA0B;IAC1B,mDAA0B;IAC1B,wCAAmB;IACnB,yCAAoB;IAEpB,yDAA4B;IAC5B,0DAA6B;IAC7B,4DAA+B;IAC/B,wEAAiC;IAEjC,yCAAkB;IAClB,iDAA0B;IAC1B,kDAA2B;CAC3B,CAAC"}
@@ -27,6 +27,8 @@ export declare class ExtensionActionModel {
27
27
  category?: string;
28
28
  mode: string;
29
29
  dangerous?: boolean;
30
+ requiredRoles?: string[];
31
+ allowed?: boolean;
30
32
  parameters?: ActionParameterModel[];
31
33
  }
32
34
  export declare class ActionResultModel {
@@ -34,3 +36,14 @@ export declare class ActionResultModel {
34
36
  message?: string;
35
37
  data?: Record<string, unknown>;
36
38
  }
39
+ export declare class ActionExecutionRecordModel {
40
+ id: string;
41
+ extensionType: string;
42
+ actionId: string;
43
+ userId: string | null;
44
+ userRole: string | null;
45
+ success: boolean;
46
+ message: string | null;
47
+ durationMs: number;
48
+ timestamp: Date;
49
+ }
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ActionResultModel = exports.ExtensionActionModel = exports.ActionParameterModel = exports.ActionParameterOptionModel = exports.ActionParameterValidationModel = void 0;
12
+ exports.ActionExecutionRecordModel = exports.ActionResultModel = exports.ExtensionActionModel = exports.ActionParameterModel = exports.ActionParameterOptionModel = exports.ActionParameterValidationModel = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const swagger_1 = require("@nestjs/swagger");
@@ -205,6 +205,29 @@ __decorate([
205
205
  (0, class_validator_1.IsOptional)(),
206
206
  __metadata("design:type", Boolean)
207
207
  ], ExtensionActionModel.prototype, "dangerous", void 0);
208
+ __decorate([
209
+ (0, swagger_1.ApiPropertyOptional)({
210
+ name: 'required_roles',
211
+ description: 'User roles allowed to execute this action',
212
+ type: 'array',
213
+ items: { type: 'string' },
214
+ example: ['owner', 'admin'],
215
+ }),
216
+ (0, class_transformer_1.Expose)({ name: 'required_roles' }),
217
+ (0, class_validator_1.IsArray)(),
218
+ (0, class_validator_1.IsOptional)(),
219
+ __metadata("design:type", Array)
220
+ ], ExtensionActionModel.prototype, "requiredRoles", void 0);
221
+ __decorate([
222
+ (0, swagger_1.ApiPropertyOptional)({
223
+ description: 'Whether the current user is allowed to execute this action',
224
+ type: 'boolean',
225
+ }),
226
+ (0, class_transformer_1.Expose)(),
227
+ (0, class_validator_1.IsBoolean)(),
228
+ (0, class_validator_1.IsOptional)(),
229
+ __metadata("design:type", Boolean)
230
+ ], ExtensionActionModel.prototype, "allowed", void 0);
208
231
  __decorate([
209
232
  (0, swagger_1.ApiPropertyOptional)({
210
233
  description: 'Action parameters',
@@ -249,4 +272,67 @@ __decorate([
249
272
  exports.ActionResultModel = ActionResultModel = __decorate([
250
273
  (0, swagger_1.ApiSchema)({ name: 'ExtensionsModuleDataActionResult' })
251
274
  ], ActionResultModel);
275
+ let ActionExecutionRecordModel = class ActionExecutionRecordModel {
276
+ };
277
+ exports.ActionExecutionRecordModel = ActionExecutionRecordModel;
278
+ __decorate([
279
+ (0, swagger_1.ApiProperty)({ description: 'Record ID', type: 'string' }),
280
+ (0, class_transformer_1.Expose)(),
281
+ (0, class_validator_1.IsString)(),
282
+ __metadata("design:type", String)
283
+ ], ActionExecutionRecordModel.prototype, "id", void 0);
284
+ __decorate([
285
+ (0, swagger_1.ApiProperty)({ name: 'extension_type', description: 'Extension type', type: 'string' }),
286
+ (0, class_transformer_1.Expose)({ name: 'extension_type' }),
287
+ (0, class_validator_1.IsString)(),
288
+ __metadata("design:type", String)
289
+ ], ActionExecutionRecordModel.prototype, "extensionType", void 0);
290
+ __decorate([
291
+ (0, swagger_1.ApiProperty)({ name: 'action_id', description: 'Action ID', type: 'string' }),
292
+ (0, class_transformer_1.Expose)({ name: 'action_id' }),
293
+ (0, class_validator_1.IsString)(),
294
+ __metadata("design:type", String)
295
+ ], ActionExecutionRecordModel.prototype, "actionId", void 0);
296
+ __decorate([
297
+ (0, swagger_1.ApiPropertyOptional)({ name: 'user_id', description: 'User who executed the action', type: 'string', nullable: true }),
298
+ (0, class_transformer_1.Expose)({ name: 'user_id' }),
299
+ (0, class_validator_1.IsString)(),
300
+ (0, class_validator_1.IsOptional)(),
301
+ __metadata("design:type", String)
302
+ ], ActionExecutionRecordModel.prototype, "userId", void 0);
303
+ __decorate([
304
+ (0, swagger_1.ApiPropertyOptional)({ name: 'user_role', description: 'Role of the user', type: 'string', nullable: true }),
305
+ (0, class_transformer_1.Expose)({ name: 'user_role' }),
306
+ (0, class_validator_1.IsString)(),
307
+ (0, class_validator_1.IsOptional)(),
308
+ __metadata("design:type", String)
309
+ ], ActionExecutionRecordModel.prototype, "userRole", void 0);
310
+ __decorate([
311
+ (0, swagger_1.ApiProperty)({ description: 'Whether the action succeeded', type: 'boolean' }),
312
+ (0, class_transformer_1.Expose)(),
313
+ (0, class_validator_1.IsBoolean)(),
314
+ __metadata("design:type", Boolean)
315
+ ], ActionExecutionRecordModel.prototype, "success", void 0);
316
+ __decorate([
317
+ (0, swagger_1.ApiPropertyOptional)({ description: 'Result message', type: 'string', nullable: true }),
318
+ (0, class_transformer_1.Expose)(),
319
+ (0, class_validator_1.IsString)(),
320
+ (0, class_validator_1.IsOptional)(),
321
+ __metadata("design:type", String)
322
+ ], ActionExecutionRecordModel.prototype, "message", void 0);
323
+ __decorate([
324
+ (0, swagger_1.ApiProperty)({ name: 'duration_ms', description: 'Execution duration in milliseconds', type: 'number' }),
325
+ (0, class_transformer_1.Expose)({ name: 'duration_ms' }),
326
+ (0, class_validator_1.IsNumber)(),
327
+ __metadata("design:type", Number)
328
+ ], ActionExecutionRecordModel.prototype, "durationMs", void 0);
329
+ __decorate([
330
+ (0, swagger_1.ApiProperty)({ description: 'Execution timestamp', type: 'string', format: 'date-time' }),
331
+ (0, class_transformer_1.Expose)(),
332
+ (0, class_validator_1.IsDate)(),
333
+ __metadata("design:type", Date)
334
+ ], ActionExecutionRecordModel.prototype, "timestamp", void 0);
335
+ exports.ActionExecutionRecordModel = ActionExecutionRecordModel = __decorate([
336
+ (0, swagger_1.ApiSchema)({ name: 'ExtensionsModuleDataActionExecutionRecord' })
337
+ ], ActionExecutionRecordModel);
252
338
  //# sourceMappingURL=action.model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"action.model.js","sourceRoot":"","sources":["../../../../src/modules/extensions/models/action.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action.model.js","sourceRoot":"","sources":["../../../../src/modules/extensions/models/action.model.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  import { BaseSuccessResponseModel } from '../../api/models/api-response.model';
2
- import { ActionResultModel, ExtensionActionModel } from './action.model';
2
+ import { ActionExecutionRecordModel, ActionResultModel, ExtensionActionModel } from './action.model';
3
3
  export declare class ExtensionActionsResponseModel extends BaseSuccessResponseModel<ExtensionActionModel[]> {
4
4
  data: ExtensionActionModel[];
5
5
  }
6
6
  export declare class ActionResultResponseModel extends BaseSuccessResponseModel<ActionResultModel> {
7
7
  data: ActionResultModel;
8
8
  }
9
+ export declare class ActionHistoryResponseModel extends BaseSuccessResponseModel<ActionExecutionRecordModel[]> {
10
+ data: ActionExecutionRecordModel[];
11
+ }
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ActionResultResponseModel = exports.ExtensionActionsResponseModel = void 0;
12
+ exports.ActionHistoryResponseModel = exports.ActionResultResponseModel = exports.ExtensionActionsResponseModel = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const swagger_1 = require("@nestjs/swagger");
15
15
  const api_response_model_1 = require("../../api/models/api-response.model");
@@ -47,4 +47,22 @@ __decorate([
47
47
  exports.ActionResultResponseModel = ActionResultResponseModel = __decorate([
48
48
  (0, swagger_1.ApiSchema)({ name: 'ExtensionsModuleResActionResult' })
49
49
  ], ActionResultResponseModel);
50
+ let ActionHistoryResponseModel = class ActionHistoryResponseModel extends api_response_model_1.BaseSuccessResponseModel {
51
+ };
52
+ exports.ActionHistoryResponseModel = ActionHistoryResponseModel;
53
+ __decorate([
54
+ (0, swagger_1.ApiProperty)({
55
+ description: 'Recent action execution records',
56
+ type: 'array',
57
+ items: {
58
+ $ref: (0, swagger_1.getSchemaPath)(action_model_1.ActionExecutionRecordModel),
59
+ },
60
+ }),
61
+ (0, class_transformer_1.Expose)(),
62
+ (0, class_transformer_1.Type)(() => action_model_1.ActionExecutionRecordModel),
63
+ __metadata("design:type", Array)
64
+ ], ActionHistoryResponseModel.prototype, "data", void 0);
65
+ exports.ActionHistoryResponseModel = ActionHistoryResponseModel = __decorate([
66
+ (0, swagger_1.ApiSchema)({ name: 'ExtensionsModuleResActionHistory' })
67
+ ], ActionHistoryResponseModel);
50
68
  //# sourceMappingURL=actions-response.model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"actions-response.model.js","sourceRoot":"","sources":["../../../../src/modules/extensions/models/actions-response.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAiD;AAEjD,6CAAwE;AAExE,4EAA+E;AAE/E,iDAAyE;AAGlE,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,6CAAgD;CAWlG,CAAA;AAXY,sEAA6B;AAUjC;IATP,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,OAAO;QACb,KAAK,EAAE;YACN,IAAI,EAAE,IAAA,uBAAa,EAAC,mCAAoB,CAAC;SACzC;KACD,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,mCAAoB,CAAC;;2DACI;wCAVzB,6BAA6B;IADzC,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC;GACrC,6BAA6B,CAWzC;AAGM,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,6CAA2C;CAQzF,CAAA;AARY,8DAAyB;AAO7B;IANP,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,GAAG,EAAE,CAAC,gCAAiB;KAC7B,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,gCAAiB,CAAC;8BAChB,gCAAiB;uDAAC;oCAPpB,yBAAyB;IADrC,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC;GAC1C,yBAAyB,CAQrC"}
1
+ {"version":3,"file":"actions-response.model.js","sourceRoot":"","sources":["../../../../src/modules/extensions/models/actions-response.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAiD;AAEjD,6CAAwE;AAExE,4EAA+E;AAE/E,iDAAqG;AAG9F,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,6CAAgD;CAWlG,CAAA;AAXY,sEAA6B;AAUjC;IATP,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,OAAO;QACb,KAAK,EAAE;YACN,IAAI,EAAE,IAAA,uBAAa,EAAC,mCAAoB,CAAC;SACzC;KACD,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,mCAAoB,CAAC;;2DACI;wCAVzB,6BAA6B;IADzC,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC;GACrC,6BAA6B,CAWzC;AAGM,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,6CAA2C;CAQzF,CAAA;AARY,8DAAyB;AAO7B;IANP,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,GAAG,EAAE,CAAC,gCAAiB;KAC7B,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,gCAAiB,CAAC;8BAChB,gCAAiB;uDAAC;oCAPpB,yBAAyB;IADrC,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC;GAC1C,yBAAyB,CAQrC;AAGM,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,6CAAsD;CAWrG,CAAA;AAXY,gEAA0B;AAU9B;IATP,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,iCAAiC;QAC9C,IAAI,EAAE,OAAO;QACb,KAAK,EAAE;YACN,IAAI,EAAE,IAAA,uBAAa,EAAC,yCAA0B,CAAC;SAC/C;KACD,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,yCAA0B,CAAC;;wDACI;qCAV/B,0BAA0B;IADtC,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,kCAAkC,EAAE,CAAC;GAC3C,0BAA0B,CAWtC"}
@@ -0,0 +1,21 @@
1
+ export interface ActionExecutionRecord {
2
+ id: string;
3
+ extensionType: string;
4
+ actionId: string;
5
+ userId: string | null;
6
+ userRole: string | null;
7
+ params: Record<string, unknown>;
8
+ success: boolean;
9
+ message: string | null;
10
+ durationMs: number;
11
+ timestamp: Date;
12
+ }
13
+ export declare class ActionAuditService {
14
+ private readonly logger;
15
+ private readonly buffer;
16
+ private readonly maxEntries;
17
+ private idCounter;
18
+ constructor();
19
+ record(entry: Omit<ActionExecutionRecord, 'id' | 'timestamp'>): ActionExecutionRecord;
20
+ getHistory(extensionType: string, actionId: string, limit?: number): ActionExecutionRecord[];
21
+ }
@@ -0,0 +1,49 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ActionAuditService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const extension_logger_service_1 = require("../../../common/logger/extension-logger.service");
15
+ const extensions_constants_1 = require("../extensions.constants");
16
+ const DEFAULT_MAX_ENTRIES = 1000;
17
+ let ActionAuditService = class ActionAuditService {
18
+ constructor() {
19
+ this.logger = (0, extension_logger_service_1.createExtensionLogger)(extensions_constants_1.EXTENSIONS_MODULE_NAME, 'ActionAuditService');
20
+ this.buffer = [];
21
+ this.idCounter = 0;
22
+ this.maxEntries = DEFAULT_MAX_ENTRIES;
23
+ }
24
+ record(entry) {
25
+ const record = {
26
+ ...entry,
27
+ id: String(++this.idCounter),
28
+ timestamp: new Date(),
29
+ };
30
+ this.buffer.push(record);
31
+ if (this.buffer.length > this.maxEntries) {
32
+ this.buffer.splice(0, this.buffer.length - this.maxEntries);
33
+ }
34
+ this.logger.debug(`Recorded action execution: ${entry.extensionType}/${entry.actionId} (${entry.success ? 'ok' : 'fail'})`);
35
+ return record;
36
+ }
37
+ getHistory(extensionType, actionId, limit = 50) {
38
+ return this.buffer
39
+ .filter((r) => r.extensionType === extensionType && r.actionId === actionId)
40
+ .slice(-limit)
41
+ .reverse();
42
+ }
43
+ };
44
+ exports.ActionAuditService = ActionAuditService;
45
+ exports.ActionAuditService = ActionAuditService = __decorate([
46
+ (0, common_1.Injectable)(),
47
+ __metadata("design:paramtypes", [])
48
+ ], ActionAuditService);
49
+ //# sourceMappingURL=action-audit.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-audit.service.js","sourceRoot":"","sources":["../../../../src/modules/extensions/services/action-audit.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAE5C,8FAAwF;AACxF,kEAAiE;AAejE,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAG1B,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAO9B;QANiB,WAAM,GAAG,IAAA,gDAAqB,EAAC,6CAAsB,EAAE,oBAAoB,CAAC,CAAC;QAE7E,WAAM,GAA4B,EAAE,CAAC;QAE9C,cAAS,GAAG,CAAC,CAAC;QAGrB,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,KAAsD;QAC5D,MAAM,MAAM,GAA0B;YACrC,GAAG,KAAK;YACR,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;YAC5B,SAAS,EAAE,IAAI,IAAI,EAAE;SACrB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAGzB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,8BAA8B,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CACxG,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IAED,UAAU,CAAC,aAAqB,EAAE,QAAgB,EAAE,KAAK,GAAG,EAAE;QAC7D,OAAO,IAAI,CAAC,MAAM;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,aAAa,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;aAC3E,KAAK,CAAC,CAAC,KAAK,CAAC;aACb,OAAO,EAAE,CAAC;IACb,CAAC;CACD,CAAA;AAtCY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;;GACA,kBAAkB,CAsC9B"}
@@ -1,3 +1,4 @@
1
+ import { UserRole } from '../../users/users.constants';
1
2
  import type { IActionResult, IExtensionAction } from './extension-action.interface';
2
3
  export interface SerializedAction {
3
4
  id: string;
@@ -7,6 +8,8 @@ export interface SerializedAction {
7
8
  category?: string;
8
9
  mode: string;
9
10
  dangerous?: boolean;
11
+ required_roles?: string[];
12
+ allowed?: boolean;
10
13
  parameters?: SerializedActionParameter[];
11
14
  }
12
15
  export interface SerializedActionParameter {
@@ -34,7 +37,9 @@ export declare class ExtensionActionRegistryService {
34
37
  register(extensionType: string, action: IExtensionAction): void;
35
38
  unregisterAll(extensionType: string): void;
36
39
  hasActions(extensionType: string): boolean;
37
- getActions(extensionType: string): Promise<SerializedAction[]>;
40
+ getActions(extensionType: string, userRole?: UserRole): Promise<SerializedAction[]>;
41
+ isAllowed(extensionType: string, actionId: string, userRole: UserRole): boolean | null;
42
+ private getDefaultRoles;
38
43
  execute(extensionType: string, actionId: string, params: Record<string, unknown>): Promise<IActionResult>;
39
44
  private validateParams;
40
45
  private validateParamType;
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.ExtensionActionRegistryService = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const extension_logger_service_1 = require("../../../common/logger/extension-logger.service");
12
+ const users_constants_1 = require("../../users/users.constants");
12
13
  const extensions_constants_1 = require("../extensions.constants");
13
14
  const extension_action_interface_1 = require("./extension-action.interface");
14
15
  let ExtensionActionRegistryService = class ExtensionActionRegistryService {
@@ -35,17 +36,32 @@ let ExtensionActionRegistryService = class ExtensionActionRegistryService {
35
36
  const extensionActions = this.actions.get(extensionType);
36
37
  return extensionActions !== undefined && extensionActions.size > 0;
37
38
  }
38
- async getActions(extensionType) {
39
+ async getActions(extensionType, userRole) {
39
40
  const extensionActions = this.actions.get(extensionType);
40
41
  if (!extensionActions) {
41
42
  return [];
42
43
  }
43
44
  const serialized = [];
44
45
  for (const action of extensionActions.values()) {
45
- serialized.push(await this.serializeAction(action));
46
+ serialized.push(await this.serializeAction(action, userRole));
46
47
  }
47
48
  return serialized;
48
49
  }
50
+ isAllowed(extensionType, actionId, userRole) {
51
+ const extensionActions = this.actions.get(extensionType);
52
+ if (!extensionActions) {
53
+ return null;
54
+ }
55
+ const action = extensionActions.get(actionId);
56
+ if (!action) {
57
+ return null;
58
+ }
59
+ const roles = action.requiredRoles ?? this.getDefaultRoles(action);
60
+ return roles.includes(userRole);
61
+ }
62
+ getDefaultRoles(action) {
63
+ return action.dangerous ? [users_constants_1.UserRole.OWNER] : extension_action_interface_1.DEFAULT_ACTION_ROLES;
64
+ }
49
65
  async execute(extensionType, actionId, params) {
50
66
  const extensionActions = this.actions.get(extensionType);
51
67
  if (!extensionActions) {
@@ -195,7 +211,8 @@ let ExtensionActionRegistryService = class ExtensionActionRegistryService {
195
211
  }
196
212
  }
197
213
  }
198
- async serializeAction(action) {
214
+ async serializeAction(action, userRole) {
215
+ const roles = action.requiredRoles ?? this.getDefaultRoles(action);
199
216
  const serialized = {
200
217
  id: action.id,
201
218
  label: action.label,
@@ -204,6 +221,8 @@ let ExtensionActionRegistryService = class ExtensionActionRegistryService {
204
221
  category: action.category,
205
222
  mode: action.mode,
206
223
  dangerous: action.dangerous,
224
+ required_roles: roles,
225
+ allowed: userRole ? roles.includes(userRole) : undefined,
207
226
  };
208
227
  if (action.parameters && action.parameters.length > 0) {
209
228
  serialized.parameters = [];