@marinoscar/platform-api 0.1.0-next.18 → 0.1.0-next.20

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 (598) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +1 -0
  3. package/dist/ai/runtime/ai-limits.service.d.ts.map +1 -1
  4. package/dist/ai/runtime/ai-limits.service.js +8 -1
  5. package/dist/ai/runtime/ai-limits.service.js.map +1 -1
  6. package/dist/ai/usage/ai-usage-admin.controller.d.ts +6 -3
  7. package/dist/ai/usage/ai-usage-admin.controller.d.ts.map +1 -1
  8. package/dist/ai/usage/ai-usage-admin.controller.js +31 -17
  9. package/dist/ai/usage/ai-usage-admin.controller.js.map +1 -1
  10. package/dist/ai/usage/ai-usage.controller.d.ts +5 -2
  11. package/dist/ai/usage/ai-usage.controller.d.ts.map +1 -1
  12. package/dist/ai/usage/ai-usage.controller.js +18 -11
  13. package/dist/ai/usage/ai-usage.controller.js.map +1 -1
  14. package/dist/ai/usage/ai-usage.service.d.ts +19 -4
  15. package/dist/ai/usage/ai-usage.service.d.ts.map +1 -1
  16. package/dist/ai/usage/ai-usage.service.js +84 -43
  17. package/dist/ai/usage/ai-usage.service.js.map +1 -1
  18. package/dist/ai/usage/dto/ai-usage.dto.d.ts +8 -0
  19. package/dist/ai/usage/dto/ai-usage.dto.d.ts.map +1 -1
  20. package/dist/ai/usage/dto/ai-usage.dto.js +16 -5
  21. package/dist/ai/usage/dto/ai-usage.dto.js.map +1 -1
  22. package/dist/alerts/alerts-admin.controller.d.ts +40 -0
  23. package/dist/alerts/alerts-admin.controller.d.ts.map +1 -0
  24. package/dist/alerts/alerts-admin.controller.js +297 -0
  25. package/dist/alerts/alerts-admin.controller.js.map +1 -0
  26. package/dist/alerts/alerts-context.service.d.ts +64 -0
  27. package/dist/alerts/alerts-context.service.d.ts.map +1 -0
  28. package/dist/alerts/alerts-context.service.js +190 -0
  29. package/dist/alerts/alerts-context.service.js.map +1 -0
  30. package/dist/alerts/alerts-dispatch.service.d.ts +53 -0
  31. package/dist/alerts/alerts-dispatch.service.d.ts.map +1 -0
  32. package/dist/alerts/alerts-dispatch.service.js +135 -0
  33. package/dist/alerts/alerts-dispatch.service.js.map +1 -0
  34. package/dist/alerts/alerts-evaluation.service.d.ts +88 -0
  35. package/dist/alerts/alerts-evaluation.service.d.ts.map +1 -0
  36. package/dist/alerts/alerts-evaluation.service.js +296 -0
  37. package/dist/alerts/alerts-evaluation.service.js.map +1 -0
  38. package/dist/alerts/alerts-event.listener.d.ts +22 -0
  39. package/dist/alerts/alerts-event.listener.d.ts.map +1 -0
  40. package/dist/alerts/alerts-event.listener.js +72 -0
  41. package/dist/alerts/alerts-event.listener.js.map +1 -0
  42. package/dist/alerts/alerts-incidents.service.d.ts +86 -0
  43. package/dist/alerts/alerts-incidents.service.d.ts.map +1 -0
  44. package/dist/alerts/alerts-incidents.service.js +144 -0
  45. package/dist/alerts/alerts-incidents.service.js.map +1 -0
  46. package/dist/alerts/alerts-rules.service.d.ts +73 -0
  47. package/dist/alerts/alerts-rules.service.d.ts.map +1 -0
  48. package/dist/alerts/alerts-rules.service.js +205 -0
  49. package/dist/alerts/alerts-rules.service.js.map +1 -0
  50. package/dist/alerts/alerts-seed.service.d.ts +25 -0
  51. package/dist/alerts/alerts-seed.service.d.ts.map +1 -0
  52. package/dist/alerts/alerts-seed.service.js +82 -0
  53. package/dist/alerts/alerts-seed.service.js.map +1 -0
  54. package/dist/alerts/alerts.constants.d.ts +53 -0
  55. package/dist/alerts/alerts.constants.d.ts.map +1 -0
  56. package/dist/alerts/alerts.constants.js +57 -0
  57. package/dist/alerts/alerts.constants.js.map +1 -0
  58. package/dist/alerts/alerts.errors.d.ts +44 -0
  59. package/dist/alerts/alerts.errors.d.ts.map +1 -0
  60. package/dist/alerts/alerts.errors.js +47 -0
  61. package/dist/alerts/alerts.errors.js.map +1 -0
  62. package/dist/alerts/alerts.metrics.d.ts +60 -0
  63. package/dist/alerts/alerts.metrics.d.ts.map +1 -0
  64. package/dist/alerts/alerts.metrics.js +135 -0
  65. package/dist/alerts/alerts.metrics.js.map +1 -0
  66. package/dist/alerts/alerts.module.d.ts +35 -0
  67. package/dist/alerts/alerts.module.d.ts.map +1 -0
  68. package/dist/alerts/alerts.module.js +96 -0
  69. package/dist/alerts/alerts.module.js.map +1 -0
  70. package/dist/alerts/alerts.options.d.ts +64 -0
  71. package/dist/alerts/alerts.options.d.ts.map +1 -0
  72. package/dist/alerts/alerts.options.js +34 -0
  73. package/dist/alerts/alerts.options.js.map +1 -0
  74. package/dist/alerts/alerts.permissions.d.ts +27 -0
  75. package/dist/alerts/alerts.permissions.d.ts.map +1 -0
  76. package/dist/alerts/alerts.permissions.js +29 -0
  77. package/dist/alerts/alerts.permissions.js.map +1 -0
  78. package/dist/alerts/alerts.types.d.ts +182 -0
  79. package/dist/alerts/alerts.types.d.ts.map +1 -0
  80. package/dist/alerts/alerts.types.js +3 -0
  81. package/dist/alerts/alerts.types.js.map +1 -0
  82. package/dist/alerts/data/alerts-db.d.ts +169 -0
  83. package/dist/alerts/data/alerts-db.d.ts.map +1 -0
  84. package/dist/alerts/data/alerts-db.js +18 -0
  85. package/dist/alerts/data/alerts-db.js.map +1 -0
  86. package/dist/alerts/dto/alerts.dto.d.ts +132 -0
  87. package/dist/alerts/dto/alerts.dto.d.ts.map +1 -0
  88. package/dist/alerts/dto/alerts.dto.js +42 -0
  89. package/dist/alerts/dto/alerts.dto.js.map +1 -0
  90. package/dist/alerts/handlers/alerts-evaluate-event.handler.d.ts +23 -0
  91. package/dist/alerts/handlers/alerts-evaluate-event.handler.d.ts.map +1 -0
  92. package/dist/alerts/handlers/alerts-evaluate-event.handler.js +71 -0
  93. package/dist/alerts/handlers/alerts-evaluate-event.handler.js.map +1 -0
  94. package/dist/alerts/handlers/alerts-evaluate.handler.d.ts +25 -0
  95. package/dist/alerts/handlers/alerts-evaluate.handler.d.ts.map +1 -0
  96. package/dist/alerts/handlers/alerts-evaluate.handler.js +54 -0
  97. package/dist/alerts/handlers/alerts-evaluate.handler.js.map +1 -0
  98. package/dist/alerts/handlers/alerts-incidents-purge.handler.d.ts +29 -0
  99. package/dist/alerts/handlers/alerts-incidents-purge.handler.d.ts.map +1 -0
  100. package/dist/alerts/handlers/alerts-incidents-purge.handler.js +76 -0
  101. package/dist/alerts/handlers/alerts-incidents-purge.handler.js.map +1 -0
  102. package/dist/alerts/index.d.ts +45 -0
  103. package/dist/alerts/index.d.ts.map +1 -0
  104. package/dist/alerts/index.js +108 -0
  105. package/dist/alerts/index.js.map +1 -0
  106. package/dist/alerts/kinds/alert-kind.registry.d.ts +33 -0
  107. package/dist/alerts/kinds/alert-kind.registry.d.ts.map +1 -0
  108. package/dist/alerts/kinds/alert-kind.registry.js +63 -0
  109. package/dist/alerts/kinds/alert-kind.registry.js.map +1 -0
  110. package/dist/alerts/kinds/builtin-kinds.d.ts +18 -0
  111. package/dist/alerts/kinds/builtin-kinds.d.ts.map +1 -0
  112. package/dist/alerts/kinds/builtin-kinds.js +33 -0
  113. package/dist/alerts/kinds/builtin-kinds.js.map +1 -0
  114. package/dist/alerts/kinds/metric-threshold.kind.d.ts +11 -0
  115. package/dist/alerts/kinds/metric-threshold.kind.d.ts.map +1 -0
  116. package/dist/alerts/kinds/metric-threshold.kind.js +63 -0
  117. package/dist/alerts/kinds/metric-threshold.kind.js.map +1 -0
  118. package/dist/alerts/kinds/metric-threshold.sql.d.ts +41 -0
  119. package/dist/alerts/kinds/metric-threshold.sql.d.ts.map +1 -0
  120. package/dist/alerts/kinds/metric-threshold.sql.js +124 -0
  121. package/dist/alerts/kinds/metric-threshold.sql.js.map +1 -0
  122. package/dist/alerts/kinds/node-event.kind.d.ts +44 -0
  123. package/dist/alerts/kinds/node-event.kind.d.ts.map +1 -0
  124. package/dist/alerts/kinds/node-event.kind.js +113 -0
  125. package/dist/alerts/kinds/node-event.kind.js.map +1 -0
  126. package/dist/alerts/kinds/node-offline.kind.d.ts +11 -0
  127. package/dist/alerts/kinds/node-offline.kind.d.ts.map +1 -0
  128. package/dist/alerts/kinds/node-offline.kind.js +41 -0
  129. package/dist/alerts/kinds/node-offline.kind.js.map +1 -0
  130. package/dist/alerts/kinds/telemetry-unavailable.kind.d.ts +11 -0
  131. package/dist/alerts/kinds/telemetry-unavailable.kind.d.ts.map +1 -0
  132. package/dist/alerts/kinds/telemetry-unavailable.kind.js +40 -0
  133. package/dist/alerts/kinds/telemetry-unavailable.kind.js.map +1 -0
  134. package/dist/alerts/kinds/verdict.kind.d.ts +13 -0
  135. package/dist/alerts/kinds/verdict.kind.d.ts.map +1 -0
  136. package/dist/alerts/kinds/verdict.kind.js +34 -0
  137. package/dist/alerts/kinds/verdict.kind.js.map +1 -0
  138. package/dist/alerts/notifications/alerts.notifications.d.ts +77 -0
  139. package/dist/alerts/notifications/alerts.notifications.d.ts.map +1 -0
  140. package/dist/alerts/notifications/alerts.notifications.js +145 -0
  141. package/dist/alerts/notifications/alerts.notifications.js.map +1 -0
  142. package/dist/alerts/starter-rules.d.ts +21 -0
  143. package/dist/alerts/starter-rules.d.ts.map +1 -0
  144. package/dist/alerts/starter-rules.js +141 -0
  145. package/dist/alerts/starter-rules.js.map +1 -0
  146. package/dist/alerts/state/alert-state-machine.d.ts +92 -0
  147. package/dist/alerts/state/alert-state-machine.d.ts.map +1 -0
  148. package/dist/alerts/state/alert-state-machine.js +96 -0
  149. package/dist/alerts/state/alert-state-machine.js.map +1 -0
  150. package/dist/alerts/tasks/alerts-evaluate.task.d.ts +18 -0
  151. package/dist/alerts/tasks/alerts-evaluate.task.d.ts.map +1 -0
  152. package/dist/alerts/tasks/alerts-evaluate.task.js +61 -0
  153. package/dist/alerts/tasks/alerts-evaluate.task.js.map +1 -0
  154. package/dist/alerts/tasks/alerts-purge.task.d.ts +15 -0
  155. package/dist/alerts/tasks/alerts-purge.task.d.ts.map +1 -0
  156. package/dist/alerts/tasks/alerts-purge.task.js +58 -0
  157. package/dist/alerts/tasks/alerts-purge.task.js.map +1 -0
  158. package/dist/alerts/testing/conformance.d.ts +58 -0
  159. package/dist/alerts/testing/conformance.d.ts.map +1 -0
  160. package/dist/alerts/testing/conformance.js +198 -0
  161. package/dist/alerts/testing/conformance.js.map +1 -0
  162. package/dist/alerts/testing/fakes.d.ts +80 -0
  163. package/dist/alerts/testing/fakes.d.ts.map +1 -0
  164. package/dist/alerts/testing/fakes.js +230 -0
  165. package/dist/alerts/testing/fakes.js.map +1 -0
  166. package/dist/alerts/testing/index.d.ts +5 -0
  167. package/dist/alerts/testing/index.d.ts.map +1 -0
  168. package/dist/alerts/testing/index.js +15 -0
  169. package/dist/alerts/testing/index.js.map +1 -0
  170. package/dist/core/index.d.ts +3 -0
  171. package/dist/core/index.d.ts.map +1 -1
  172. package/dist/core/index.js +13 -2
  173. package/dist/core/index.js.map +1 -1
  174. package/dist/core/net/ip-classify.d.ts +39 -0
  175. package/dist/core/net/ip-classify.d.ts.map +1 -0
  176. package/dist/core/net/ip-classify.js +196 -0
  177. package/dist/core/net/ip-classify.js.map +1 -0
  178. package/dist/core/timezone/request-time-zone.d.ts +61 -0
  179. package/dist/core/timezone/request-time-zone.d.ts.map +1 -0
  180. package/dist/core/timezone/request-time-zone.js +71 -0
  181. package/dist/core/timezone/request-time-zone.js.map +1 -0
  182. package/dist/credentials/testing/conformance.d.ts.map +1 -1
  183. package/dist/credentials/testing/conformance.js +1 -0
  184. package/dist/credentials/testing/conformance.js.map +1 -1
  185. package/dist/email/email-settings.controller.d.ts +5 -2
  186. package/dist/email/email-settings.controller.d.ts.map +1 -1
  187. package/dist/email/email-settings.controller.js +11 -5
  188. package/dist/email/email-settings.controller.js.map +1 -1
  189. package/dist/email/email-test-send.service.d.ts +11 -1
  190. package/dist/email/email-test-send.service.d.ts.map +1 -1
  191. package/dist/email/email-test-send.service.js +17 -3
  192. package/dist/email/email-test-send.service.js.map +1 -1
  193. package/dist/email/index.d.ts +2 -2
  194. package/dist/email/index.d.ts.map +1 -1
  195. package/dist/email/index.js +3 -1
  196. package/dist/email/index.js.map +1 -1
  197. package/dist/email/templates/backup-failed.email.d.ts.map +1 -1
  198. package/dist/email/templates/backup-failed.email.js +9 -5
  199. package/dist/email/templates/backup-failed.email.js.map +1 -1
  200. package/dist/email/templates/format-date.d.ts +39 -0
  201. package/dist/email/templates/format-date.d.ts.map +1 -0
  202. package/dist/email/templates/format-date.js +103 -0
  203. package/dist/email/templates/format-date.js.map +1 -0
  204. package/dist/email/templates/index.d.ts +2 -0
  205. package/dist/email/templates/index.d.ts.map +1 -1
  206. package/dist/email/templates/index.js +4 -1
  207. package/dist/email/templates/index.js.map +1 -1
  208. package/dist/email/templates/job-failed.email.d.ts +1 -1
  209. package/dist/email/templates/job-failed.email.d.ts.map +1 -1
  210. package/dist/email/templates/job-failed.email.js +6 -6
  211. package/dist/email/templates/job-failed.email.js.map +1 -1
  212. package/dist/email/templates/node-offline.email.d.ts.map +1 -1
  213. package/dist/email/templates/node-offline.email.js +11 -7
  214. package/dist/email/templates/node-offline.email.js.map +1 -1
  215. package/dist/email/templates/render-context.d.ts +5 -0
  216. package/dist/email/templates/render-context.d.ts.map +1 -1
  217. package/dist/email/templates/render-context.js.map +1 -1
  218. package/dist/email/templates/restore-completed.email.d.ts.map +1 -1
  219. package/dist/email/templates/restore-completed.email.js +9 -5
  220. package/dist/email/templates/restore-completed.email.js.map +1 -1
  221. package/dist/email/templates/role-changed.email.d.ts +1 -1
  222. package/dist/email/templates/role-changed.email.d.ts.map +1 -1
  223. package/dist/email/templates/role-changed.email.js +6 -7
  224. package/dist/email/templates/role-changed.email.js.map +1 -1
  225. package/dist/email/templates/test-email.email.d.ts +1 -1
  226. package/dist/email/templates/test-email.email.d.ts.map +1 -1
  227. package/dist/email/templates/test-email.email.js +6 -11
  228. package/dist/email/templates/test-email.email.js.map +1 -1
  229. package/dist/exports/export-job.d.ts +1 -0
  230. package/dist/exports/export-job.d.ts.map +1 -1
  231. package/dist/exports/export-job.js +2 -0
  232. package/dist/exports/export-job.js.map +1 -1
  233. package/dist/exports/export.types.d.ts +8 -0
  234. package/dist/exports/export.types.d.ts.map +1 -1
  235. package/dist/exports/exports.controller.d.ts +4 -2
  236. package/dist/exports/exports.controller.d.ts.map +1 -1
  237. package/dist/exports/exports.controller.js +15 -6
  238. package/dist/exports/exports.controller.js.map +1 -1
  239. package/dist/exports/exports.service.d.ts +5 -0
  240. package/dist/exports/exports.service.d.ts.map +1 -1
  241. package/dist/exports/exports.service.js +3 -0
  242. package/dist/exports/exports.service.js.map +1 -1
  243. package/dist/exports/handlers/export-run.handler.d.ts.map +1 -1
  244. package/dist/exports/handlers/export-run.handler.js +4 -1
  245. package/dist/exports/handlers/export-run.handler.js.map +1 -1
  246. package/dist/exports/index.d.ts +1 -0
  247. package/dist/exports/index.d.ts.map +1 -1
  248. package/dist/exports/index.js +7 -2
  249. package/dist/exports/index.js.map +1 -1
  250. package/dist/exports/testing/conformance.d.ts.map +1 -1
  251. package/dist/exports/testing/conformance.js +1 -0
  252. package/dist/exports/testing/conformance.js.map +1 -1
  253. package/dist/host/http/cors-options.d.ts +5 -1
  254. package/dist/host/http/cors-options.d.ts.map +1 -1
  255. package/dist/host/http/cors-options.js.map +1 -1
  256. package/dist/identity/pat/pat.controller.d.ts +4 -3
  257. package/dist/identity/pat/pat.controller.d.ts.map +1 -1
  258. package/dist/identity/pat/pat.controller.js +19 -5
  259. package/dist/identity/pat/pat.controller.js.map +1 -1
  260. package/dist/identity/pat/pat.service.d.ts +21 -0
  261. package/dist/identity/pat/pat.service.d.ts.map +1 -1
  262. package/dist/identity/pat/pat.service.js +27 -10
  263. package/dist/identity/pat/pat.service.js.map +1 -1
  264. package/dist/jobs/data/jobs-db.d.ts +26 -0
  265. package/dist/jobs/data/jobs-db.d.ts.map +1 -1
  266. package/dist/jobs/index.d.ts +1 -1
  267. package/dist/jobs/index.d.ts.map +1 -1
  268. package/dist/jobs/index.js.map +1 -1
  269. package/dist/manifest/platform-model-ownership.d.ts +1 -1
  270. package/dist/manifest/platform-model-ownership.d.ts.map +1 -1
  271. package/dist/manifest/platform-model-ownership.js +30 -1
  272. package/dist/manifest/platform-model-ownership.js.map +1 -1
  273. package/dist/manifest/platform-permissions.d.ts +6 -2
  274. package/dist/manifest/platform-permissions.d.ts.map +1 -1
  275. package/dist/manifest/platform-permissions.js +56 -44
  276. package/dist/manifest/platform-permissions.js.map +1 -1
  277. package/dist/manifest/platform-user-owned-models.d.ts.map +1 -1
  278. package/dist/manifest/platform-user-owned-models.js +16 -0
  279. package/dist/manifest/platform-user-owned-models.js.map +1 -1
  280. package/dist/nodes/dto/node-admin.dto.d.ts +5 -0
  281. package/dist/nodes/dto/node-admin.dto.d.ts.map +1 -1
  282. package/dist/nodes/dto/node-admin.dto.js +19 -0
  283. package/dist/nodes/dto/node-admin.dto.js.map +1 -1
  284. package/dist/nodes/dto/node-control-plane.dto.d.ts +26 -0
  285. package/dist/nodes/dto/node-control-plane.dto.d.ts.map +1 -1
  286. package/dist/nodes/dto/node-event.dto.d.ts +100 -0
  287. package/dist/nodes/dto/node-event.dto.d.ts.map +1 -0
  288. package/dist/nodes/dto/node-event.dto.js +239 -0
  289. package/dist/nodes/dto/node-event.dto.js.map +1 -0
  290. package/dist/nodes/dto/node-response.dto.d.ts +21 -0
  291. package/dist/nodes/dto/node-response.dto.d.ts.map +1 -1
  292. package/dist/nodes/dto/node-response.dto.js +42 -1
  293. package/dist/nodes/dto/node-response.dto.js.map +1 -1
  294. package/dist/nodes/events/node-event.event.d.ts +41 -0
  295. package/dist/nodes/events/node-event.event.d.ts.map +1 -0
  296. package/dist/nodes/events/node-event.event.js +69 -0
  297. package/dist/nodes/events/node-event.event.js.map +1 -0
  298. package/dist/nodes/handlers/node-events-purge.handler.d.ts +31 -0
  299. package/dist/nodes/handlers/node-events-purge.handler.d.ts.map +1 -0
  300. package/dist/nodes/handlers/node-events-purge.handler.js +91 -0
  301. package/dist/nodes/handlers/node-events-purge.handler.js.map +1 -0
  302. package/dist/nodes/index.d.ts +11 -4
  303. package/dist/nodes/index.d.ts.map +1 -1
  304. package/dist/nodes/index.js +20 -1
  305. package/dist/nodes/index.js.map +1 -1
  306. package/dist/nodes/node-events.service.d.ts +87 -0
  307. package/dist/nodes/node-events.service.d.ts.map +1 -0
  308. package/dist/nodes/node-events.service.js +271 -0
  309. package/dist/nodes/node-events.service.js.map +1 -0
  310. package/dist/nodes/node-fleet-metrics.service.d.ts +10 -1
  311. package/dist/nodes/node-fleet-metrics.service.d.ts.map +1 -1
  312. package/dist/nodes/node-fleet-metrics.service.js +31 -0
  313. package/dist/nodes/node-fleet-metrics.service.js.map +1 -1
  314. package/dist/nodes/node-lifecycle.service.d.ts +16 -1
  315. package/dist/nodes/node-lifecycle.service.d.ts.map +1 -1
  316. package/dist/nodes/node-lifecycle.service.js +7 -0
  317. package/dist/nodes/node-lifecycle.service.js.map +1 -1
  318. package/dist/nodes/nodes-admin.controller.d.ts +5 -1
  319. package/dist/nodes/nodes-admin.controller.d.ts.map +1 -1
  320. package/dist/nodes/nodes-admin.controller.js +32 -2
  321. package/dist/nodes/nodes-admin.controller.js.map +1 -1
  322. package/dist/nodes/nodes.controller.d.ts +7 -3
  323. package/dist/nodes/nodes.controller.d.ts.map +1 -1
  324. package/dist/nodes/nodes.controller.js +46 -6
  325. package/dist/nodes/nodes.controller.js.map +1 -1
  326. package/dist/nodes/nodes.metrics.d.ts +23 -1
  327. package/dist/nodes/nodes.metrics.d.ts.map +1 -1
  328. package/dist/nodes/nodes.metrics.js +80 -1
  329. package/dist/nodes/nodes.metrics.js.map +1 -1
  330. package/dist/nodes/nodes.module.d.ts.map +1 -1
  331. package/dist/nodes/nodes.module.js +6 -0
  332. package/dist/nodes/nodes.module.js.map +1 -1
  333. package/dist/nodes/nodes.options.d.ts +17 -0
  334. package/dist/nodes/nodes.options.d.ts.map +1 -1
  335. package/dist/nodes/nodes.options.js +13 -2
  336. package/dist/nodes/nodes.options.js.map +1 -1
  337. package/dist/nodes/nodes.service.d.ts +3 -1
  338. package/dist/nodes/nodes.service.d.ts.map +1 -1
  339. package/dist/nodes/nodes.service.js +14 -3
  340. package/dist/nodes/nodes.service.js.map +1 -1
  341. package/dist/nodes/tasks/node-events-purge.task.d.ts +13 -0
  342. package/dist/nodes/tasks/node-events-purge.task.d.ts.map +1 -0
  343. package/dist/nodes/tasks/node-events-purge.task.js +73 -0
  344. package/dist/nodes/tasks/node-events-purge.task.js.map +1 -0
  345. package/dist/notifications/channels/browser-notification.channel.js +1 -1
  346. package/dist/notifications/channels/browser-notification.channel.js.map +1 -1
  347. package/dist/notifications/channels/browser-templates.d.ts +12 -1
  348. package/dist/notifications/channels/browser-templates.d.ts.map +1 -1
  349. package/dist/notifications/channels/browser-templates.js +5 -4
  350. package/dist/notifications/channels/browser-templates.js.map +1 -1
  351. package/dist/notifications/channels/email-notification.channel.d.ts.map +1 -1
  352. package/dist/notifications/channels/email-notification.channel.js +3 -3
  353. package/dist/notifications/channels/email-notification.channel.js.map +1 -1
  354. package/dist/notifications/channels/push-notification.channel.js +1 -1
  355. package/dist/notifications/channels/push-notification.channel.js.map +1 -1
  356. package/dist/notifications/index.d.ts +1 -1
  357. package/dist/notifications/index.d.ts.map +1 -1
  358. package/dist/notifications/notification.types.d.ts +15 -0
  359. package/dist/notifications/notification.types.d.ts.map +1 -1
  360. package/dist/notifications/notification.types.js.map +1 -1
  361. package/dist/notifications/notifications.service.d.ts.map +1 -1
  362. package/dist/notifications/notifications.service.js +8 -0
  363. package/dist/notifications/notifications.service.js.map +1 -1
  364. package/dist/notifications/push-config.controller.d.ts +5 -2
  365. package/dist/notifications/push-config.controller.d.ts.map +1 -1
  366. package/dist/notifications/push-config.controller.js +11 -5
  367. package/dist/notifications/push-config.controller.js.map +1 -1
  368. package/dist/notifications/push-test.service.d.ts +1 -1
  369. package/dist/notifications/push-test.service.d.ts.map +1 -1
  370. package/dist/notifications/push-test.service.js +6 -4
  371. package/dist/notifications/push-test.service.js.map +1 -1
  372. package/dist/settings/settings-resolver.d.ts +28 -1
  373. package/dist/settings/settings-resolver.d.ts.map +1 -1
  374. package/dist/settings/settings-resolver.js +41 -0
  375. package/dist/settings/settings-resolver.js.map +1 -1
  376. package/dist/settings/settings.module.d.ts.map +1 -1
  377. package/dist/settings/settings.module.js +9 -4
  378. package/dist/settings/settings.module.js.map +1 -1
  379. package/dist/settings/user-settings/user-settings.service.d.ts.map +1 -1
  380. package/dist/settings/user-settings/user-settings.service.js +2 -4
  381. package/dist/settings/user-settings/user-settings.service.js.map +1 -1
  382. package/dist/sharing/grants/grants.service.js +2 -2
  383. package/dist/sharing/grants/grants.service.js.map +1 -1
  384. package/dist/sharing/groups/group-invites.service.js +1 -1
  385. package/dist/sharing/groups/group-invites.service.js.map +1 -1
  386. package/dist/sharing/groups/sharing-effects.d.ts +2 -1
  387. package/dist/sharing/groups/sharing-effects.d.ts.map +1 -1
  388. package/dist/sharing/groups/sharing-effects.js +4 -4
  389. package/dist/sharing/groups/sharing-effects.js.map +1 -1
  390. package/dist/sharing/index.d.ts +1 -1
  391. package/dist/sharing/index.d.ts.map +1 -1
  392. package/dist/sharing/index.js.map +1 -1
  393. package/dist/sharing/notifications/group-invitation.templates.d.ts +23 -0
  394. package/dist/sharing/notifications/group-invitation.templates.d.ts.map +1 -1
  395. package/dist/sharing/notifications/group-invitation.templates.js +17 -2
  396. package/dist/sharing/notifications/group-invitation.templates.js.map +1 -1
  397. package/dist/sharing/notifications/shared-with-you.templates.d.ts +1 -1
  398. package/dist/sharing/notifications/shared-with-you.templates.d.ts.map +1 -1
  399. package/dist/sharing/notifications/shared-with-you.templates.js +3 -2
  400. package/dist/sharing/notifications/shared-with-you.templates.js.map +1 -1
  401. package/dist/sharing/ports.d.ts +15 -2
  402. package/dist/sharing/ports.d.ts.map +1 -1
  403. package/dist/sharing/ports.js.map +1 -1
  404. package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts +30 -8
  405. package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts.map +1 -1
  406. package/dist/telemetry/dashboard/telemetry-dashboard.service.js +12 -0
  407. package/dist/telemetry/dashboard/telemetry-dashboard.service.js.map +1 -1
  408. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts +15 -0
  409. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts.map +1 -1
  410. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js +17 -2
  411. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js.map +1 -1
  412. package/dist/telemetry/dto/telemetry-dashboard.dto.d.ts +3 -3
  413. package/dist/telemetry/index.d.ts +4 -2
  414. package/dist/telemetry/index.d.ts.map +1 -1
  415. package/dist/telemetry/index.js +4 -1
  416. package/dist/telemetry/index.js.map +1 -1
  417. package/dist/telemetry/metrics/groups/nodes.metric-group.d.ts.map +1 -1
  418. package/dist/telemetry/metrics/groups/nodes.metric-group.js +77 -0
  419. package/dist/telemetry/metrics/groups/nodes.metric-group.js.map +1 -1
  420. package/dist/telemetry/metrics/metric-verdict.d.ts +1 -1
  421. package/dist/telemetry/metrics/metric-verdict.d.ts.map +1 -1
  422. package/dist/telemetry/metrics/metric-verdict.js +15 -1
  423. package/dist/telemetry/metrics/metric-verdict.js.map +1 -1
  424. package/dist/telemetry/query/telemetry-query-facade.d.ts +1 -1
  425. package/dist/telemetry/query/telemetry-query-facade.d.ts.map +1 -1
  426. package/dist/telemetry/query/telemetry-query-facade.js.map +1 -1
  427. package/dist/telemetry/query/telemetry-query.service.d.ts +2 -2
  428. package/dist/telemetry/query/telemetry-query.service.d.ts.map +1 -1
  429. package/dist/telemetry/query/telemetry-query.service.js +4 -0
  430. package/dist/telemetry/query/telemetry-query.service.js.map +1 -1
  431. package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts +1 -1
  432. package/dist/telemetry/telemetry-support-bundle.section.d.ts +4 -4
  433. package/dist/telemetry/telemetry.module.d.ts.map +1 -1
  434. package/dist/telemetry/telemetry.module.js +1 -0
  435. package/dist/telemetry/telemetry.module.js.map +1 -1
  436. package/dist/telemetry/testing/metric-schema.fixture.d.ts.map +1 -1
  437. package/dist/telemetry/testing/metric-schema.fixture.js +56 -0
  438. package/dist/telemetry/testing/metric-schema.fixture.js.map +1 -1
  439. package/dist/user-data/platform-user-data.d.ts.map +1 -1
  440. package/dist/user-data/platform-user-data.js +2 -0
  441. package/dist/user-data/platform-user-data.js.map +1 -1
  442. package/dist/webhooks/data/webhooks-db.d.ts +176 -0
  443. package/dist/webhooks/data/webhooks-db.d.ts.map +1 -0
  444. package/dist/webhooks/data/webhooks-db.js +14 -0
  445. package/dist/webhooks/data/webhooks-db.js.map +1 -0
  446. package/dist/webhooks/egress/egress-guard.d.ts +99 -0
  447. package/dist/webhooks/egress/egress-guard.d.ts.map +1 -0
  448. package/dist/webhooks/egress/egress-guard.js +172 -0
  449. package/dist/webhooks/egress/egress-guard.js.map +1 -0
  450. package/dist/webhooks/egress/transport.d.ts +58 -0
  451. package/dist/webhooks/egress/transport.d.ts.map +1 -0
  452. package/dist/webhooks/egress/transport.js +115 -0
  453. package/dist/webhooks/egress/transport.js.map +1 -0
  454. package/dist/webhooks/handlers/webhook-deliver.handler.d.ts +76 -0
  455. package/dist/webhooks/handlers/webhook-deliver.handler.d.ts.map +1 -0
  456. package/dist/webhooks/handlers/webhook-deliver.handler.js +332 -0
  457. package/dist/webhooks/handlers/webhook-deliver.handler.js.map +1 -0
  458. package/dist/webhooks/handlers/webhook-fanout.handler.d.ts +28 -0
  459. package/dist/webhooks/handlers/webhook-fanout.handler.d.ts.map +1 -0
  460. package/dist/webhooks/handlers/webhook-fanout.handler.js +73 -0
  461. package/dist/webhooks/handlers/webhook-fanout.handler.js.map +1 -0
  462. package/dist/webhooks/handlers/webhook-purge.handler.d.ts +33 -0
  463. package/dist/webhooks/handlers/webhook-purge.handler.d.ts.map +1 -0
  464. package/dist/webhooks/handlers/webhook-purge.handler.js +77 -0
  465. package/dist/webhooks/handlers/webhook-purge.handler.js.map +1 -0
  466. package/dist/webhooks/http/admin-webhooks.controller.d.ts +36 -0
  467. package/dist/webhooks/http/admin-webhooks.controller.d.ts.map +1 -0
  468. package/dist/webhooks/http/admin-webhooks.controller.js +250 -0
  469. package/dist/webhooks/http/admin-webhooks.controller.js.map +1 -0
  470. package/dist/webhooks/http/org-webhooks.controller.d.ts +36 -0
  471. package/dist/webhooks/http/org-webhooks.controller.d.ts.map +1 -0
  472. package/dist/webhooks/http/org-webhooks.controller.js +249 -0
  473. package/dist/webhooks/http/org-webhooks.controller.js.map +1 -0
  474. package/dist/webhooks/http/scope-context.d.ts +17 -0
  475. package/dist/webhooks/http/scope-context.d.ts.map +1 -0
  476. package/dist/webhooks/http/scope-context.js +28 -0
  477. package/dist/webhooks/http/scope-context.js.map +1 -0
  478. package/dist/webhooks/http/webhook.dto.d.ts +174 -0
  479. package/dist/webhooks/http/webhook.dto.d.ts.map +1 -0
  480. package/dist/webhooks/http/webhook.dto.js +58 -0
  481. package/dist/webhooks/http/webhook.dto.js.map +1 -0
  482. package/dist/webhooks/http/webhooks.controller.d.ts +36 -0
  483. package/dist/webhooks/http/webhooks.controller.d.ts.map +1 -0
  484. package/dist/webhooks/http/webhooks.controller.js +243 -0
  485. package/dist/webhooks/http/webhooks.controller.js.map +1 -0
  486. package/dist/webhooks/index.d.ts +43 -0
  487. package/dist/webhooks/index.d.ts.map +1 -0
  488. package/dist/webhooks/index.js +147 -0
  489. package/dist/webhooks/index.js.map +1 -0
  490. package/dist/webhooks/listeners/webhook-event.listeners.d.ts +23 -0
  491. package/dist/webhooks/listeners/webhook-event.listeners.d.ts.map +1 -0
  492. package/dist/webhooks/listeners/webhook-event.listeners.js +120 -0
  493. package/dist/webhooks/listeners/webhook-event.listeners.js.map +1 -0
  494. package/dist/webhooks/notifications/webhook-notification.channel.d.ts +31 -0
  495. package/dist/webhooks/notifications/webhook-notification.channel.d.ts.map +1 -0
  496. package/dist/webhooks/notifications/webhook-notification.channel.js +127 -0
  497. package/dist/webhooks/notifications/webhook-notification.channel.js.map +1 -0
  498. package/dist/webhooks/notifications/webhook-notifications.d.ts +98 -0
  499. package/dist/webhooks/notifications/webhook-notifications.d.ts.map +1 -0
  500. package/dist/webhooks/notifications/webhook-notifications.js +150 -0
  501. package/dist/webhooks/notifications/webhook-notifications.js.map +1 -0
  502. package/dist/webhooks/ports.d.ts +29 -0
  503. package/dist/webhooks/ports.d.ts.map +1 -0
  504. package/dist/webhooks/ports.js +23 -0
  505. package/dist/webhooks/ports.js.map +1 -0
  506. package/dist/webhooks/registry/builtin-events.d.ts +57 -0
  507. package/dist/webhooks/registry/builtin-events.d.ts.map +1 -0
  508. package/dist/webhooks/registry/builtin-events.js +113 -0
  509. package/dist/webhooks/registry/builtin-events.js.map +1 -0
  510. package/dist/webhooks/registry/webhook-catalog.d.ts +63 -0
  511. package/dist/webhooks/registry/webhook-catalog.d.ts.map +1 -0
  512. package/dist/webhooks/registry/webhook-catalog.js +123 -0
  513. package/dist/webhooks/registry/webhook-catalog.js.map +1 -0
  514. package/dist/webhooks/registry/webhook-event.registry.d.ts +116 -0
  515. package/dist/webhooks/registry/webhook-event.registry.d.ts.map +1 -0
  516. package/dist/webhooks/registry/webhook-event.registry.js +152 -0
  517. package/dist/webhooks/registry/webhook-event.registry.js.map +1 -0
  518. package/dist/webhooks/signing.d.ts +31 -0
  519. package/dist/webhooks/signing.d.ts.map +1 -0
  520. package/dist/webhooks/signing.js +48 -0
  521. package/dist/webhooks/signing.js.map +1 -0
  522. package/dist/webhooks/tasks/webhook-purge.task.d.ts +17 -0
  523. package/dist/webhooks/tasks/webhook-purge.task.d.ts.map +1 -0
  524. package/dist/webhooks/tasks/webhook-purge.task.js +68 -0
  525. package/dist/webhooks/tasks/webhook-purge.task.js.map +1 -0
  526. package/dist/webhooks/testing/conformance.d.ts +61 -0
  527. package/dist/webhooks/testing/conformance.d.ts.map +1 -0
  528. package/dist/webhooks/testing/conformance.js +316 -0
  529. package/dist/webhooks/testing/conformance.js.map +1 -0
  530. package/dist/webhooks/testing/in-memory.d.ts +156 -0
  531. package/dist/webhooks/testing/in-memory.d.ts.map +1 -0
  532. package/dist/webhooks/testing/in-memory.js +323 -0
  533. package/dist/webhooks/testing/in-memory.js.map +1 -0
  534. package/dist/webhooks/testing/index.d.ts +7 -0
  535. package/dist/webhooks/testing/index.d.ts.map +1 -0
  536. package/dist/webhooks/testing/index.js +25 -0
  537. package/dist/webhooks/testing/index.js.map +1 -0
  538. package/dist/webhooks/testing/kit.d.ts +86 -0
  539. package/dist/webhooks/testing/kit.d.ts.map +1 -0
  540. package/dist/webhooks/testing/kit.js +113 -0
  541. package/dist/webhooks/testing/kit.js.map +1 -0
  542. package/dist/webhooks/webhook-endpoints.service.d.ts +142 -0
  543. package/dist/webhooks/webhook-endpoints.service.d.ts.map +1 -0
  544. package/dist/webhooks/webhook-endpoints.service.js +366 -0
  545. package/dist/webhooks/webhook-endpoints.service.js.map +1 -0
  546. package/dist/webhooks/webhook-envelope.d.ts +36 -0
  547. package/dist/webhooks/webhook-envelope.d.ts.map +1 -0
  548. package/dist/webhooks/webhook-envelope.js +46 -0
  549. package/dist/webhooks/webhook-envelope.js.map +1 -0
  550. package/dist/webhooks/webhook-secrets.service.d.ts +49 -0
  551. package/dist/webhooks/webhook-secrets.service.d.ts.map +1 -0
  552. package/dist/webhooks/webhook-secrets.service.js +118 -0
  553. package/dist/webhooks/webhook-secrets.service.js.map +1 -0
  554. package/dist/webhooks/webhook-views.d.ts +34 -0
  555. package/dist/webhooks/webhook-views.d.ts.map +1 -0
  556. package/dist/webhooks/webhook-views.js +83 -0
  557. package/dist/webhooks/webhook-views.js.map +1 -0
  558. package/dist/webhooks/webhooks.access.d.ts +28 -0
  559. package/dist/webhooks/webhooks.access.d.ts.map +1 -0
  560. package/dist/webhooks/webhooks.access.js +55 -0
  561. package/dist/webhooks/webhooks.access.js.map +1 -0
  562. package/dist/webhooks/webhooks.constants.d.ts +73 -0
  563. package/dist/webhooks/webhooks.constants.d.ts.map +1 -0
  564. package/dist/webhooks/webhooks.constants.js +100 -0
  565. package/dist/webhooks/webhooks.constants.js.map +1 -0
  566. package/dist/webhooks/webhooks.credentials.d.ts +28 -0
  567. package/dist/webhooks/webhooks.credentials.d.ts.map +1 -0
  568. package/dist/webhooks/webhooks.credentials.js +51 -0
  569. package/dist/webhooks/webhooks.credentials.js.map +1 -0
  570. package/dist/webhooks/webhooks.errors.d.ts +25 -0
  571. package/dist/webhooks/webhooks.errors.d.ts.map +1 -0
  572. package/dist/webhooks/webhooks.errors.js +65 -0
  573. package/dist/webhooks/webhooks.errors.js.map +1 -0
  574. package/dist/webhooks/webhooks.metrics.d.ts +24 -0
  575. package/dist/webhooks/webhooks.metrics.d.ts.map +1 -0
  576. package/dist/webhooks/webhooks.metrics.js +70 -0
  577. package/dist/webhooks/webhooks.metrics.js.map +1 -0
  578. package/dist/webhooks/webhooks.module.d.ts +29 -0
  579. package/dist/webhooks/webhooks.module.d.ts.map +1 -0
  580. package/dist/webhooks/webhooks.module.js +108 -0
  581. package/dist/webhooks/webhooks.module.js.map +1 -0
  582. package/dist/webhooks/webhooks.options.d.ts +119 -0
  583. package/dist/webhooks/webhooks.options.d.ts.map +1 -0
  584. package/dist/webhooks/webhooks.options.js +80 -0
  585. package/dist/webhooks/webhooks.options.js.map +1 -0
  586. package/dist/webhooks/webhooks.permissions.d.ts +47 -0
  587. package/dist/webhooks/webhooks.permissions.d.ts.map +1 -0
  588. package/dist/webhooks/webhooks.permissions.js +83 -0
  589. package/dist/webhooks/webhooks.permissions.js.map +1 -0
  590. package/dist/webhooks/webhooks.repository.d.ts +162 -0
  591. package/dist/webhooks/webhooks.repository.d.ts.map +1 -0
  592. package/dist/webhooks/webhooks.repository.js +246 -0
  593. package/dist/webhooks/webhooks.repository.js.map +1 -0
  594. package/dist/webhooks/webhooks.service.d.ts +91 -0
  595. package/dist/webhooks/webhooks.service.d.ts.map +1 -0
  596. package/dist/webhooks/webhooks.service.js +216 -0
  597. package/dist/webhooks/webhooks.service.js.map +1 -0
  598. package/package.json +19 -3
@@ -0,0 +1,86 @@
1
+ import { type AlertIncident, type AlertIncidentListQuery, type AlertSummary } from '@marinoscar/platform-contract/alerts';
2
+ import type { AlertIncidentRow, AlertsPrisma } from './data/alerts-db';
3
+ /**
4
+ * An incident row with its rule's name and kind.
5
+ *
6
+ * @stability experimental
7
+ */
8
+ export interface IncidentWithRule extends AlertIncidentRow {
9
+ /** The rule's display fields. */
10
+ rule: AlertIncidentRule;
11
+ }
12
+ /**
13
+ * The rule fields an incident listing carries.
14
+ *
15
+ * @stability experimental
16
+ */
17
+ export interface AlertIncidentRule {
18
+ /** The rule's display name. */
19
+ name: string;
20
+ /** The rule's kind id. */
21
+ kind: string;
22
+ }
23
+ /**
24
+ * One page of incidents (the flat paginated envelope).
25
+ *
26
+ * @stability experimental
27
+ */
28
+ export interface AlertIncidentPage {
29
+ /** The incidents of this page. */
30
+ items: AlertIncident[];
31
+ /** Incidents across all pages. */
32
+ total: number;
33
+ /** The 1-based page. */
34
+ page: number;
35
+ /** Rows per page. */
36
+ pageSize: number;
37
+ /** Pages across all rows. */
38
+ totalPages: number;
39
+ }
40
+ /**
41
+ * Maps an incident row (with its rule's name and kind) to the wire shape.
42
+ *
43
+ * @param row - the row.
44
+ * @returns the incident.
45
+ *
46
+ * @stability experimental
47
+ */
48
+ export declare function toAlertIncident(row: IncidentWithRule): AlertIncident;
49
+ /**
50
+ * Reads incidents, acknowledges them and builds the firing summary.
51
+ *
52
+ * @stability experimental
53
+ */
54
+ export declare class AlertsIncidentsService {
55
+ private readonly prisma;
56
+ constructor(prisma: AlertsPrisma);
57
+ /**
58
+ * A page of incidents, newest first.
59
+ *
60
+ * @param query - filters and paging.
61
+ * @returns the flat paginated list.
62
+ */
63
+ list(query: AlertIncidentListQuery): Promise<AlertIncidentPage>;
64
+ /**
65
+ * One incident.
66
+ *
67
+ * @param id - the incident id.
68
+ * @throws NotFoundException `ALERT_INCIDENT_NOT_FOUND`.
69
+ */
70
+ get(id: string): Promise<AlertIncident>;
71
+ /**
72
+ * Acknowledges an incident. Idempotent: a second call keeps the first
73
+ * acknowledgement.
74
+ *
75
+ * @param id - the incident id.
76
+ * @param userId - the administrator.
77
+ * @throws NotFoundException `ALERT_INCIDENT_NOT_FOUND`.
78
+ */
79
+ acknowledge(id: string, userId: string | null): Promise<AlertIncident>;
80
+ /**
81
+ * What the dashboard banner shows: incidents firing now by severity and the
82
+ * newest evaluation among the enabled rules.
83
+ */
84
+ summary(): Promise<AlertSummary>;
85
+ }
86
+ //# sourceMappingURL=alerts-incidents.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-incidents.service.d.ts","sourceRoot":"","sources":["../../src/alerts/alerts-incidents.service.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EAClB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,iCAAiC;IACjC,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAQD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,gBAAgB,GAAG,aAAa,CAoBpE;AAED;;;;GAIG;AACH,qBACa,sBAAsB;IACI,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAE1E;;;;;OAKG;IACG,IAAI,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyBrE;;;;;OAKG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAM7C;;;;;;;OAOG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAS5E;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;CAcvC"}
@@ -0,0 +1,144 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AlertsIncidentsService = void 0;
16
+ exports.toAlertIncident = toAlertIncident;
17
+ const common_1 = require("@nestjs/common");
18
+ const alerts_1 = require("@marinoscar/platform-contract/alerts");
19
+ const index_1 = require("../core/index");
20
+ const WITH_RULE = { rule: { select: { name: true, kind: true } } };
21
+ function iso(date) {
22
+ return date ? date.toISOString() : null;
23
+ }
24
+ /**
25
+ * Maps an incident row (with its rule's name and kind) to the wire shape.
26
+ *
27
+ * @param row - the row.
28
+ * @returns the incident.
29
+ *
30
+ * @stability experimental
31
+ */
32
+ function toAlertIncident(row) {
33
+ const labels = row.labels && typeof row.labels === 'object' ? row.labels : {};
34
+ return {
35
+ id: row.id,
36
+ ruleId: row.ruleId,
37
+ ruleName: row.rule.name,
38
+ ruleKind: row.rule.kind,
39
+ labels,
40
+ state: row.state,
41
+ severity: row.severity,
42
+ pendingSince: iso(row.pendingSince),
43
+ firedAt: iso(row.firedAt),
44
+ resolvedAt: iso(row.resolvedAt),
45
+ lastValue: row.lastValue,
46
+ lastSeenAt: row.lastSeenAt.toISOString(),
47
+ summary: row.summary,
48
+ acknowledgedAt: iso(row.acknowledgedAt),
49
+ acknowledgedById: row.acknowledgedById,
50
+ createdAt: row.createdAt.toISOString(),
51
+ };
52
+ }
53
+ /**
54
+ * Reads incidents, acknowledges them and builds the firing summary.
55
+ *
56
+ * @stability experimental
57
+ */
58
+ let AlertsIncidentsService = class AlertsIncidentsService {
59
+ prisma;
60
+ constructor(prisma) {
61
+ this.prisma = prisma;
62
+ }
63
+ /**
64
+ * A page of incidents, newest first.
65
+ *
66
+ * @param query - filters and paging.
67
+ * @returns the flat paginated list.
68
+ */
69
+ async list(query) {
70
+ const where = {
71
+ ...(query.state ? { state: query.state } : {}),
72
+ ...(query.severity ? { severity: query.severity } : {}),
73
+ ...(query.ruleId ? { ruleId: query.ruleId } : {}),
74
+ };
75
+ const [rows, total] = await Promise.all([
76
+ this.prisma.alertIncident.findMany({
77
+ where,
78
+ include: WITH_RULE,
79
+ orderBy: [{ createdAt: 'desc' }],
80
+ skip: (query.page - 1) * query.pageSize,
81
+ take: query.pageSize,
82
+ }),
83
+ this.prisma.alertIncident.count({ where }),
84
+ ]);
85
+ return {
86
+ items: rows.map(toAlertIncident),
87
+ total,
88
+ page: query.page,
89
+ pageSize: query.pageSize,
90
+ totalPages: Math.ceil(total / query.pageSize),
91
+ };
92
+ }
93
+ /**
94
+ * One incident.
95
+ *
96
+ * @param id - the incident id.
97
+ * @throws NotFoundException `ALERT_INCIDENT_NOT_FOUND`.
98
+ */
99
+ async get(id) {
100
+ const row = (await this.prisma.alertIncident.findUnique({ where: { id }, include: WITH_RULE }));
101
+ if (!row)
102
+ throw new common_1.NotFoundException({ message: 'There is no such alert incident.', details: { reason: alerts_1.ALERT_ERROR_CODES.INCIDENT_NOT_FOUND } });
103
+ return toAlertIncident(row);
104
+ }
105
+ /**
106
+ * Acknowledges an incident. Idempotent: a second call keeps the first
107
+ * acknowledgement.
108
+ *
109
+ * @param id - the incident id.
110
+ * @param userId - the administrator.
111
+ * @throws NotFoundException `ALERT_INCIDENT_NOT_FOUND`.
112
+ */
113
+ async acknowledge(id, userId) {
114
+ await this.get(id);
115
+ await this.prisma.alertIncident.updateMany({
116
+ where: { id, acknowledgedAt: null },
117
+ data: { acknowledgedAt: new Date(), acknowledgedById: userId },
118
+ });
119
+ return this.get(id);
120
+ }
121
+ /**
122
+ * What the dashboard banner shows: incidents firing now by severity and the
123
+ * newest evaluation among the enabled rules.
124
+ */
125
+ async summary() {
126
+ const counts = await Promise.all(alerts_1.ALERT_SEVERITIES.map(async (level) => [level, await this.prisma.alertIncident.count({ where: { state: 'firing', severity: level } })]));
127
+ const latest = await this.prisma.alertRule.findFirst({
128
+ where: { enabled: true, lastEvaluatedAt: { not: null } },
129
+ orderBy: { lastEvaluatedAt: 'desc' },
130
+ select: { lastEvaluatedAt: true },
131
+ });
132
+ return {
133
+ firing: Object.fromEntries(counts),
134
+ lastEvaluatedAt: iso(latest?.lastEvaluatedAt ?? null),
135
+ };
136
+ }
137
+ };
138
+ exports.AlertsIncidentsService = AlertsIncidentsService;
139
+ exports.AlertsIncidentsService = AlertsIncidentsService = __decorate([
140
+ (0, common_1.Injectable)(),
141
+ __param(0, (0, common_1.Inject)(index_1.PLATFORM_PRISMA)),
142
+ __metadata("design:paramtypes", [Object])
143
+ ], AlertsIncidentsService);
144
+ //# sourceMappingURL=alerts-incidents.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-incidents.service.js","sourceRoot":"","sources":["../../src/alerts/alerts-incidents.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { type AlertRule, type AlertRuleListQuery, type CreateAlertRule, type UpdateAlertRule } from '@marinoscar/platform-contract/alerts';
2
+ import type { AlertRuleRow, AlertsPrisma } from './data/alerts-db';
3
+ /**
4
+ * Maps a rule row (and its open incident count) to the wire shape.
5
+ *
6
+ * @param row - the row.
7
+ * @param openIncidents - incidents pending or firing.
8
+ * @returns the rule.
9
+ *
10
+ * @stability experimental
11
+ */
12
+ export declare function toAlertRule(row: AlertRuleRow, openIncidents: number): AlertRule;
13
+ /**
14
+ * Rule CRUD. Config is validated against the kind's schema on every write;
15
+ * starter rules (those with a `key`) can be edited and disabled, not deleted.
16
+ *
17
+ * @stability experimental
18
+ */
19
+ export declare class AlertsRulesService {
20
+ private readonly prisma;
21
+ constructor(prisma: AlertsPrisma);
22
+ /**
23
+ * Lists rules, newest first.
24
+ *
25
+ * @param query - optional kind, severity and enabled filters.
26
+ * @returns the rules.
27
+ */
28
+ list(query?: AlertRuleListQuery): Promise<AlertRule[]>;
29
+ /**
30
+ * One rule.
31
+ *
32
+ * @param id - the rule id.
33
+ * @returns the rule.
34
+ * @throws NotFoundException `ALERT_RULE_NOT_FOUND`.
35
+ */
36
+ get(id: string): Promise<AlertRule>;
37
+ /**
38
+ * The raw row (for the evaluator and the dry run).
39
+ *
40
+ * @param id - the rule id.
41
+ * @throws NotFoundException `ALERT_RULE_NOT_FOUND`.
42
+ */
43
+ row(id: string): Promise<AlertRuleRow>;
44
+ /**
45
+ * Creates a rule.
46
+ *
47
+ * @param body - the validated body.
48
+ * @param userId - the administrator.
49
+ * @returns the rule.
50
+ * @throws BadRequestException `ALERT_UNKNOWN_KIND` or `ALERT_INVALID_CONFIG`.
51
+ */
52
+ create(body: CreateAlertRule, userId: string | null): Promise<AlertRule>;
53
+ /**
54
+ * Updates a rule. Disabling it closes its open incidents silently.
55
+ *
56
+ * @param id - the rule id.
57
+ * @param body - the validated patch.
58
+ * @returns the rule.
59
+ * @throws NotFoundException `ALERT_RULE_NOT_FOUND`; BadRequestException `ALERT_INVALID_CONFIG`.
60
+ */
61
+ update(id: string, body: UpdateAlertRule): Promise<AlertRule>;
62
+ /**
63
+ * Deletes a rule and, by cascade, its incidents.
64
+ *
65
+ * @param id - the rule id.
66
+ * @throws NotFoundException `ALERT_RULE_NOT_FOUND`; ConflictException `ALERT_STARTER_RULE_PROTECTED` for a starter rule.
67
+ */
68
+ remove(id: string): Promise<void>;
69
+ private openCount;
70
+ /** A disabled rule is not evaluated, so nothing would ever resolve its incidents. No notification: the administrator did it. */
71
+ private closeOpenIncidents;
72
+ }
73
+ //# sourceMappingURL=alerts-rules.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-rules.service.d.ts","sourceRoot":"","sources":["../../src/alerts/alerts-rules.service.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,sCAAsC,CAAC;AAI9C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGnE;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,CAsB/E;AASD;;;;;GAKG;AACH,qBACa,kBAAkB;IACQ,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAE1E;;;;;OAKG;IACG,IAAI,CAAC,KAAK,GAAE,kBAAuB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAgBhE;;;;;;OAMG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAKzC;;;;;OAKG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAM5C;;;;;;;OAOG;IACG,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;IAyB9E;;;;;;;OAOG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAgBnE;;;;;OAKG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvC,OAAO,CAAC,SAAS;IAIjB,gIAAgI;YAClH,kBAAkB;CAIjC"}
@@ -0,0 +1,205 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AlertsRulesService = void 0;
16
+ exports.toAlertRule = toAlertRule;
17
+ const common_1 = require("@nestjs/common");
18
+ const alerts_1 = require("@marinoscar/platform-contract/alerts");
19
+ const index_1 = require("../core/index");
20
+ const alerts_errors_1 = require("./alerts.errors");
21
+ const alert_kind_registry_1 = require("./kinds/alert-kind.registry");
22
+ /**
23
+ * Maps a rule row (and its open incident count) to the wire shape.
24
+ *
25
+ * @param row - the row.
26
+ * @param openIncidents - incidents pending or firing.
27
+ * @returns the rule.
28
+ *
29
+ * @stability experimental
30
+ */
31
+ function toAlertRule(row, openIncidents) {
32
+ return {
33
+ id: row.id,
34
+ key: row.key,
35
+ starter: row.key !== null,
36
+ name: row.name,
37
+ description: row.description,
38
+ enabled: row.enabled,
39
+ kind: row.kind,
40
+ severity: row.severity,
41
+ config: (row.config && typeof row.config === 'object' ? row.config : {}),
42
+ forSeconds: row.forSeconds,
43
+ cooldownSeconds: row.cooldownSeconds,
44
+ notifyChannels: row.notifyChannels,
45
+ webhook: row.webhook,
46
+ createdById: row.createdById,
47
+ createdAt: row.createdAt.toISOString(),
48
+ updatedAt: row.updatedAt.toISOString(),
49
+ lastEvaluatedAt: row.lastEvaluatedAt ? row.lastEvaluatedAt.toISOString() : null,
50
+ lastError: row.lastError,
51
+ openIncidents,
52
+ };
53
+ }
54
+ function badConfig(error) {
55
+ if (error instanceof alerts_errors_1.AlertConfigError) {
56
+ throw new common_1.BadRequestException({ message: error.message, details: { reason: error.code, issues: error.issues } });
57
+ }
58
+ throw error;
59
+ }
60
+ /**
61
+ * Rule CRUD. Config is validated against the kind's schema on every write;
62
+ * starter rules (those with a `key`) can be edited and disabled, not deleted.
63
+ *
64
+ * @stability experimental
65
+ */
66
+ let AlertsRulesService = class AlertsRulesService {
67
+ prisma;
68
+ constructor(prisma) {
69
+ this.prisma = prisma;
70
+ }
71
+ /**
72
+ * Lists rules, newest first.
73
+ *
74
+ * @param query - optional kind, severity and enabled filters.
75
+ * @returns the rules.
76
+ */
77
+ async list(query = {}) {
78
+ const where = {
79
+ ...(query.kind ? { kind: query.kind } : {}),
80
+ ...(query.severity ? { severity: query.severity } : {}),
81
+ ...(query.enabled !== undefined ? { enabled: query.enabled } : {}),
82
+ };
83
+ const rows = await this.prisma.alertRule.findMany({ where, orderBy: [{ createdAt: 'asc' }, { name: 'asc' }] });
84
+ const open = await this.prisma.alertIncident.findMany({
85
+ where: { state: { in: ['pending', 'firing'] }, ruleId: { in: rows.map((r) => r.id) } },
86
+ select: { ruleId: true },
87
+ });
88
+ const counts = new Map();
89
+ for (const { ruleId } of open)
90
+ counts.set(ruleId, (counts.get(ruleId) ?? 0) + 1);
91
+ return rows.map((row) => toAlertRule(row, counts.get(row.id) ?? 0));
92
+ }
93
+ /**
94
+ * One rule.
95
+ *
96
+ * @param id - the rule id.
97
+ * @returns the rule.
98
+ * @throws NotFoundException `ALERT_RULE_NOT_FOUND`.
99
+ */
100
+ async get(id) {
101
+ const row = await this.row(id);
102
+ return toAlertRule(row, await this.openCount(id));
103
+ }
104
+ /**
105
+ * The raw row (for the evaluator and the dry run).
106
+ *
107
+ * @param id - the rule id.
108
+ * @throws NotFoundException `ALERT_RULE_NOT_FOUND`.
109
+ */
110
+ async row(id) {
111
+ const row = await this.prisma.alertRule.findUnique({ where: { id } });
112
+ if (!row)
113
+ throw new common_1.NotFoundException({ message: 'There is no such alert rule.', details: { reason: alerts_1.ALERT_ERROR_CODES.RULE_NOT_FOUND } });
114
+ return row;
115
+ }
116
+ /**
117
+ * Creates a rule.
118
+ *
119
+ * @param body - the validated body.
120
+ * @param userId - the administrator.
121
+ * @returns the rule.
122
+ * @throws BadRequestException `ALERT_UNKNOWN_KIND` or `ALERT_INVALID_CONFIG`.
123
+ */
124
+ async create(body, userId) {
125
+ let config;
126
+ try {
127
+ config = (0, alert_kind_registry_1.parseAlertConfig)(body.kind, body.config);
128
+ }
129
+ catch (error) {
130
+ badConfig(error);
131
+ }
132
+ const row = await this.prisma.alertRule.create({
133
+ data: {
134
+ name: body.name,
135
+ description: body.description ?? null,
136
+ enabled: body.enabled,
137
+ kind: body.kind,
138
+ severity: body.severity,
139
+ config,
140
+ forSeconds: body.forSeconds,
141
+ cooldownSeconds: body.cooldownSeconds,
142
+ notifyChannels: body.notifyChannels,
143
+ webhook: body.webhook,
144
+ createdById: userId,
145
+ },
146
+ });
147
+ return toAlertRule(row, 0);
148
+ }
149
+ /**
150
+ * Updates a rule. Disabling it closes its open incidents silently.
151
+ *
152
+ * @param id - the rule id.
153
+ * @param body - the validated patch.
154
+ * @returns the rule.
155
+ * @throws NotFoundException `ALERT_RULE_NOT_FOUND`; BadRequestException `ALERT_INVALID_CONFIG`.
156
+ */
157
+ async update(id, body) {
158
+ const current = await this.row(id);
159
+ const wasEnabled = current.enabled;
160
+ const data = { ...body };
161
+ if (body.config !== undefined) {
162
+ try {
163
+ data.config = (0, alert_kind_registry_1.parseAlertConfig)(current.kind, body.config);
164
+ }
165
+ catch (error) {
166
+ badConfig(error);
167
+ }
168
+ }
169
+ const row = await this.prisma.alertRule.update({ where: { id }, data });
170
+ if (wasEnabled && body.enabled === false)
171
+ await this.closeOpenIncidents(id);
172
+ return toAlertRule(row, await this.openCount(id));
173
+ }
174
+ /**
175
+ * Deletes a rule and, by cascade, its incidents.
176
+ *
177
+ * @param id - the rule id.
178
+ * @throws NotFoundException `ALERT_RULE_NOT_FOUND`; ConflictException `ALERT_STARTER_RULE_PROTECTED` for a starter rule.
179
+ */
180
+ async remove(id) {
181
+ const row = await this.row(id);
182
+ if (row.key !== null) {
183
+ throw new common_1.ConflictException({
184
+ message: 'A starter rule cannot be deleted; edit it or disable it.',
185
+ details: { reason: alerts_1.ALERT_ERROR_CODES.STARTER_RULE_PROTECTED },
186
+ });
187
+ }
188
+ await this.prisma.alertRule.delete({ where: { id } });
189
+ }
190
+ openCount(ruleId) {
191
+ return this.prisma.alertIncident.count({ where: { ruleId, state: { in: ['pending', 'firing'] } } });
192
+ }
193
+ /** A disabled rule is not evaluated, so nothing would ever resolve its incidents. No notification: the administrator did it. */
194
+ async closeOpenIncidents(ruleId) {
195
+ await this.prisma.alertIncident.deleteMany({ where: { ruleId, state: 'pending' } });
196
+ await this.prisma.alertIncident.updateMany({ where: { ruleId, state: 'firing' }, data: { state: 'resolved', resolvedAt: new Date() } });
197
+ }
198
+ };
199
+ exports.AlertsRulesService = AlertsRulesService;
200
+ exports.AlertsRulesService = AlertsRulesService = __decorate([
201
+ (0, common_1.Injectable)(),
202
+ __param(0, (0, common_1.Inject)(index_1.PLATFORM_PRISMA)),
203
+ __metadata("design:paramtypes", [Object])
204
+ ], AlertsRulesService);
205
+ //# sourceMappingURL=alerts-rules.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-rules.service.js","sourceRoot":"","sources":["../../src/alerts/alerts-rules.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { OnApplicationBootstrap } from '@nestjs/common';
2
+ import type { ResolvedAlertsModuleOptions } from './alerts.options';
3
+ import type { AlertsPrisma } from './data/alerts-db';
4
+ /**
5
+ * Seeds the starter rules, disabled, keyed by their stable keys. A rule that
6
+ * exists (by key) is NEVER touched, so an administrator's edits, enabling and
7
+ * thresholds survive every restart and every replica starting at once.
8
+ *
9
+ * @stability experimental
10
+ */
11
+ export declare class AlertsSeedService implements OnApplicationBootstrap {
12
+ private readonly prisma;
13
+ private readonly options;
14
+ private readonly logger;
15
+ constructor(prisma: AlertsPrisma, options: ResolvedAlertsModuleOptions);
16
+ /** Seeds once the application has bootstrapped; a failure is logged, never thrown. */
17
+ onApplicationBootstrap(): Promise<void>;
18
+ /**
19
+ * Creates the missing starter rules.
20
+ *
21
+ * @returns how many were created.
22
+ */
23
+ seed(): Promise<number>;
24
+ }
25
+ //# sourceMappingURL=alerts-seed.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-seed.service.d.ts","sourceRoot":"","sources":["../../src/alerts/alerts-seed.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAIpF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAKrD;;;;;;GAMG;AACH,qBACa,iBAAkB,YAAW,sBAAsB;IAInC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJlD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;gBAGjB,MAAM,EAAE,YAAY,EACrB,OAAO,EAAE,2BAA2B;IAG/E,sFAAsF;IAChF,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAS7C;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;CAgB9B"}
@@ -0,0 +1,82 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var AlertsSeedService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.AlertsSeedService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const index_1 = require("../core/index");
19
+ const alerts_constants_1 = require("./alerts.constants");
20
+ const alerts_evaluation_service_1 = require("./alerts-evaluation.service");
21
+ const alert_kind_registry_1 = require("./kinds/alert-kind.registry");
22
+ const starter_rules_1 = require("./starter-rules");
23
+ /**
24
+ * Seeds the starter rules, disabled, keyed by their stable keys. A rule that
25
+ * exists (by key) is NEVER touched, so an administrator's edits, enabling and
26
+ * thresholds survive every restart and every replica starting at once.
27
+ *
28
+ * @stability experimental
29
+ */
30
+ let AlertsSeedService = AlertsSeedService_1 = class AlertsSeedService {
31
+ prisma;
32
+ options;
33
+ logger = new common_1.Logger(AlertsSeedService_1.name);
34
+ constructor(prisma, options) {
35
+ this.prisma = prisma;
36
+ this.options = options;
37
+ }
38
+ /** Seeds once the application has bootstrapped; a failure is logged, never thrown. */
39
+ async onApplicationBootstrap() {
40
+ if (!this.options.seedStarterRules)
41
+ return;
42
+ try {
43
+ await this.seed();
44
+ }
45
+ catch (error) {
46
+ this.logger.warn(`Could not seed the starter alert rules: ${error instanceof Error ? error.message : String(error)}`);
47
+ }
48
+ }
49
+ /**
50
+ * Creates the missing starter rules.
51
+ *
52
+ * @returns how many were created.
53
+ */
54
+ async seed() {
55
+ let created = 0;
56
+ for (const { key, rule } of starter_rules_1.STARTER_ALERT_RULES) {
57
+ if (await this.prisma.alertRule.findUnique({ where: { key } }))
58
+ continue;
59
+ try {
60
+ await this.prisma.alertRule.create({
61
+ data: { ...rule, key, enabled: false, config: (0, alert_kind_registry_1.parseAlertConfig)(rule.kind, rule.config), description: rule.description ?? null },
62
+ });
63
+ created += 1;
64
+ }
65
+ catch (error) {
66
+ if (!(0, alerts_evaluation_service_1.isUniqueViolation)(error))
67
+ throw error; // another replica seeded it first
68
+ }
69
+ }
70
+ if (created > 0)
71
+ this.logger.log(`Seeded ${created} starter alert rule(s), all disabled.`);
72
+ return created;
73
+ }
74
+ };
75
+ exports.AlertsSeedService = AlertsSeedService;
76
+ exports.AlertsSeedService = AlertsSeedService = AlertsSeedService_1 = __decorate([
77
+ (0, common_1.Injectable)(),
78
+ __param(0, (0, common_1.Inject)(index_1.PLATFORM_PRISMA)),
79
+ __param(1, (0, common_1.Inject)(alerts_constants_1.ALERTS_OPTIONS)),
80
+ __metadata("design:paramtypes", [Object, Object])
81
+ ], AlertsSeedService);
82
+ //# sourceMappingURL=alerts-seed.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-seed.service.js","sourceRoot":"","sources":["../../src/alerts/alerts-seed.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoF;AAEpF,yCAAgD;AAChD,yDAAoD;AAGpD,2EAAgE;AAChE,qEAA+D;AAC/D,mDAAsD;AAEtD;;;;;;GAMG;AAEI,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAIgB;IACD;IAJ1B,MAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;IAE7D,YAC4C,MAAoB,EACrB,OAAoC;QADnC,WAAM,GAAN,MAAM,CAAc;QACrB,YAAO,GAAP,OAAO,CAA6B;IAC5E,CAAC;IAEJ,sFAAsF;IACtF,KAAK,CAAC,sBAAsB;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAAE,OAAO;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,mCAAmB,EAAE,CAAC;YAChD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;gBAAE,SAAS;YACzE,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;oBACjC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAA,sCAAgB,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;iBAChI,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAA,6CAAiB,EAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC,CAAC,kCAAkC;YAChF,CAAC;QACH,CAAC;QACD,IAAI,OAAO,GAAG,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,OAAO,uCAAuC,CAAC,CAAC;QAC3F,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAA;AAvCY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,uBAAe,CAAC,CAAA;IACvB,WAAA,IAAA,eAAM,EAAC,iCAAc,CAAC,CAAA;;GALd,iBAAiB,CAuC7B"}