@marinoscar/platform-api 0.1.0-next.19 → 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 (437) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +1 -0
  3. package/dist/alerts/alerts-admin.controller.d.ts +40 -0
  4. package/dist/alerts/alerts-admin.controller.d.ts.map +1 -0
  5. package/dist/alerts/alerts-admin.controller.js +297 -0
  6. package/dist/alerts/alerts-admin.controller.js.map +1 -0
  7. package/dist/alerts/alerts-context.service.d.ts +64 -0
  8. package/dist/alerts/alerts-context.service.d.ts.map +1 -0
  9. package/dist/alerts/alerts-context.service.js +190 -0
  10. package/dist/alerts/alerts-context.service.js.map +1 -0
  11. package/dist/alerts/alerts-dispatch.service.d.ts +53 -0
  12. package/dist/alerts/alerts-dispatch.service.d.ts.map +1 -0
  13. package/dist/alerts/alerts-dispatch.service.js +135 -0
  14. package/dist/alerts/alerts-dispatch.service.js.map +1 -0
  15. package/dist/alerts/alerts-evaluation.service.d.ts +88 -0
  16. package/dist/alerts/alerts-evaluation.service.d.ts.map +1 -0
  17. package/dist/alerts/alerts-evaluation.service.js +296 -0
  18. package/dist/alerts/alerts-evaluation.service.js.map +1 -0
  19. package/dist/alerts/alerts-event.listener.d.ts +22 -0
  20. package/dist/alerts/alerts-event.listener.d.ts.map +1 -0
  21. package/dist/alerts/alerts-event.listener.js +72 -0
  22. package/dist/alerts/alerts-event.listener.js.map +1 -0
  23. package/dist/alerts/alerts-incidents.service.d.ts +86 -0
  24. package/dist/alerts/alerts-incidents.service.d.ts.map +1 -0
  25. package/dist/alerts/alerts-incidents.service.js +144 -0
  26. package/dist/alerts/alerts-incidents.service.js.map +1 -0
  27. package/dist/alerts/alerts-rules.service.d.ts +73 -0
  28. package/dist/alerts/alerts-rules.service.d.ts.map +1 -0
  29. package/dist/alerts/alerts-rules.service.js +205 -0
  30. package/dist/alerts/alerts-rules.service.js.map +1 -0
  31. package/dist/alerts/alerts-seed.service.d.ts +25 -0
  32. package/dist/alerts/alerts-seed.service.d.ts.map +1 -0
  33. package/dist/alerts/alerts-seed.service.js +82 -0
  34. package/dist/alerts/alerts-seed.service.js.map +1 -0
  35. package/dist/alerts/alerts.constants.d.ts +53 -0
  36. package/dist/alerts/alerts.constants.d.ts.map +1 -0
  37. package/dist/alerts/alerts.constants.js +57 -0
  38. package/dist/alerts/alerts.constants.js.map +1 -0
  39. package/dist/alerts/alerts.errors.d.ts +44 -0
  40. package/dist/alerts/alerts.errors.d.ts.map +1 -0
  41. package/dist/alerts/alerts.errors.js +47 -0
  42. package/dist/alerts/alerts.errors.js.map +1 -0
  43. package/dist/alerts/alerts.metrics.d.ts +60 -0
  44. package/dist/alerts/alerts.metrics.d.ts.map +1 -0
  45. package/dist/alerts/alerts.metrics.js +135 -0
  46. package/dist/alerts/alerts.metrics.js.map +1 -0
  47. package/dist/alerts/alerts.module.d.ts +35 -0
  48. package/dist/alerts/alerts.module.d.ts.map +1 -0
  49. package/dist/alerts/alerts.module.js +96 -0
  50. package/dist/alerts/alerts.module.js.map +1 -0
  51. package/dist/alerts/alerts.options.d.ts +64 -0
  52. package/dist/alerts/alerts.options.d.ts.map +1 -0
  53. package/dist/alerts/alerts.options.js +34 -0
  54. package/dist/alerts/alerts.options.js.map +1 -0
  55. package/dist/alerts/alerts.permissions.d.ts +27 -0
  56. package/dist/alerts/alerts.permissions.d.ts.map +1 -0
  57. package/dist/alerts/alerts.permissions.js +29 -0
  58. package/dist/alerts/alerts.permissions.js.map +1 -0
  59. package/dist/alerts/alerts.types.d.ts +182 -0
  60. package/dist/alerts/alerts.types.d.ts.map +1 -0
  61. package/dist/alerts/alerts.types.js +3 -0
  62. package/dist/alerts/alerts.types.js.map +1 -0
  63. package/dist/alerts/data/alerts-db.d.ts +169 -0
  64. package/dist/alerts/data/alerts-db.d.ts.map +1 -0
  65. package/dist/alerts/data/alerts-db.js +18 -0
  66. package/dist/alerts/data/alerts-db.js.map +1 -0
  67. package/dist/alerts/dto/alerts.dto.d.ts +132 -0
  68. package/dist/alerts/dto/alerts.dto.d.ts.map +1 -0
  69. package/dist/alerts/dto/alerts.dto.js +42 -0
  70. package/dist/alerts/dto/alerts.dto.js.map +1 -0
  71. package/dist/alerts/handlers/alerts-evaluate-event.handler.d.ts +23 -0
  72. package/dist/alerts/handlers/alerts-evaluate-event.handler.d.ts.map +1 -0
  73. package/dist/alerts/handlers/alerts-evaluate-event.handler.js +71 -0
  74. package/dist/alerts/handlers/alerts-evaluate-event.handler.js.map +1 -0
  75. package/dist/alerts/handlers/alerts-evaluate.handler.d.ts +25 -0
  76. package/dist/alerts/handlers/alerts-evaluate.handler.d.ts.map +1 -0
  77. package/dist/alerts/handlers/alerts-evaluate.handler.js +54 -0
  78. package/dist/alerts/handlers/alerts-evaluate.handler.js.map +1 -0
  79. package/dist/alerts/handlers/alerts-incidents-purge.handler.d.ts +29 -0
  80. package/dist/alerts/handlers/alerts-incidents-purge.handler.d.ts.map +1 -0
  81. package/dist/alerts/handlers/alerts-incidents-purge.handler.js +76 -0
  82. package/dist/alerts/handlers/alerts-incidents-purge.handler.js.map +1 -0
  83. package/dist/alerts/index.d.ts +45 -0
  84. package/dist/alerts/index.d.ts.map +1 -0
  85. package/dist/alerts/index.js +108 -0
  86. package/dist/alerts/index.js.map +1 -0
  87. package/dist/alerts/kinds/alert-kind.registry.d.ts +33 -0
  88. package/dist/alerts/kinds/alert-kind.registry.d.ts.map +1 -0
  89. package/dist/alerts/kinds/alert-kind.registry.js +63 -0
  90. package/dist/alerts/kinds/alert-kind.registry.js.map +1 -0
  91. package/dist/alerts/kinds/builtin-kinds.d.ts +18 -0
  92. package/dist/alerts/kinds/builtin-kinds.d.ts.map +1 -0
  93. package/dist/alerts/kinds/builtin-kinds.js +33 -0
  94. package/dist/alerts/kinds/builtin-kinds.js.map +1 -0
  95. package/dist/alerts/kinds/metric-threshold.kind.d.ts +11 -0
  96. package/dist/alerts/kinds/metric-threshold.kind.d.ts.map +1 -0
  97. package/dist/alerts/kinds/metric-threshold.kind.js +63 -0
  98. package/dist/alerts/kinds/metric-threshold.kind.js.map +1 -0
  99. package/dist/alerts/kinds/metric-threshold.sql.d.ts +41 -0
  100. package/dist/alerts/kinds/metric-threshold.sql.d.ts.map +1 -0
  101. package/dist/alerts/kinds/metric-threshold.sql.js +124 -0
  102. package/dist/alerts/kinds/metric-threshold.sql.js.map +1 -0
  103. package/dist/alerts/kinds/node-event.kind.d.ts +44 -0
  104. package/dist/alerts/kinds/node-event.kind.d.ts.map +1 -0
  105. package/dist/alerts/kinds/node-event.kind.js +113 -0
  106. package/dist/alerts/kinds/node-event.kind.js.map +1 -0
  107. package/dist/alerts/kinds/node-offline.kind.d.ts +11 -0
  108. package/dist/alerts/kinds/node-offline.kind.d.ts.map +1 -0
  109. package/dist/alerts/kinds/node-offline.kind.js +41 -0
  110. package/dist/alerts/kinds/node-offline.kind.js.map +1 -0
  111. package/dist/alerts/kinds/telemetry-unavailable.kind.d.ts +11 -0
  112. package/dist/alerts/kinds/telemetry-unavailable.kind.d.ts.map +1 -0
  113. package/dist/alerts/kinds/telemetry-unavailable.kind.js +40 -0
  114. package/dist/alerts/kinds/telemetry-unavailable.kind.js.map +1 -0
  115. package/dist/alerts/kinds/verdict.kind.d.ts +13 -0
  116. package/dist/alerts/kinds/verdict.kind.d.ts.map +1 -0
  117. package/dist/alerts/kinds/verdict.kind.js +34 -0
  118. package/dist/alerts/kinds/verdict.kind.js.map +1 -0
  119. package/dist/alerts/notifications/alerts.notifications.d.ts +77 -0
  120. package/dist/alerts/notifications/alerts.notifications.d.ts.map +1 -0
  121. package/dist/alerts/notifications/alerts.notifications.js +145 -0
  122. package/dist/alerts/notifications/alerts.notifications.js.map +1 -0
  123. package/dist/alerts/starter-rules.d.ts +21 -0
  124. package/dist/alerts/starter-rules.d.ts.map +1 -0
  125. package/dist/alerts/starter-rules.js +141 -0
  126. package/dist/alerts/starter-rules.js.map +1 -0
  127. package/dist/alerts/state/alert-state-machine.d.ts +92 -0
  128. package/dist/alerts/state/alert-state-machine.d.ts.map +1 -0
  129. package/dist/alerts/state/alert-state-machine.js +96 -0
  130. package/dist/alerts/state/alert-state-machine.js.map +1 -0
  131. package/dist/alerts/tasks/alerts-evaluate.task.d.ts +18 -0
  132. package/dist/alerts/tasks/alerts-evaluate.task.d.ts.map +1 -0
  133. package/dist/alerts/tasks/alerts-evaluate.task.js +61 -0
  134. package/dist/alerts/tasks/alerts-evaluate.task.js.map +1 -0
  135. package/dist/alerts/tasks/alerts-purge.task.d.ts +15 -0
  136. package/dist/alerts/tasks/alerts-purge.task.d.ts.map +1 -0
  137. package/dist/alerts/tasks/alerts-purge.task.js +58 -0
  138. package/dist/alerts/tasks/alerts-purge.task.js.map +1 -0
  139. package/dist/alerts/testing/conformance.d.ts +58 -0
  140. package/dist/alerts/testing/conformance.d.ts.map +1 -0
  141. package/dist/alerts/testing/conformance.js +198 -0
  142. package/dist/alerts/testing/conformance.js.map +1 -0
  143. package/dist/alerts/testing/fakes.d.ts +80 -0
  144. package/dist/alerts/testing/fakes.d.ts.map +1 -0
  145. package/dist/alerts/testing/fakes.js +230 -0
  146. package/dist/alerts/testing/fakes.js.map +1 -0
  147. package/dist/alerts/testing/index.d.ts +5 -0
  148. package/dist/alerts/testing/index.d.ts.map +1 -0
  149. package/dist/alerts/testing/index.js +15 -0
  150. package/dist/alerts/testing/index.js.map +1 -0
  151. package/dist/core/index.d.ts +1 -0
  152. package/dist/core/index.d.ts.map +1 -1
  153. package/dist/core/index.js +8 -2
  154. package/dist/core/index.js.map +1 -1
  155. package/dist/core/net/ip-classify.d.ts +39 -0
  156. package/dist/core/net/ip-classify.d.ts.map +1 -0
  157. package/dist/core/net/ip-classify.js +196 -0
  158. package/dist/core/net/ip-classify.js.map +1 -0
  159. package/dist/credentials/testing/conformance.d.ts.map +1 -1
  160. package/dist/credentials/testing/conformance.js +1 -0
  161. package/dist/credentials/testing/conformance.js.map +1 -1
  162. package/dist/jobs/data/jobs-db.d.ts +26 -0
  163. package/dist/jobs/data/jobs-db.d.ts.map +1 -1
  164. package/dist/jobs/index.d.ts +1 -1
  165. package/dist/jobs/index.d.ts.map +1 -1
  166. package/dist/jobs/index.js.map +1 -1
  167. package/dist/manifest/platform-model-ownership.d.ts +1 -1
  168. package/dist/manifest/platform-model-ownership.d.ts.map +1 -1
  169. package/dist/manifest/platform-model-ownership.js +30 -1
  170. package/dist/manifest/platform-model-ownership.js.map +1 -1
  171. package/dist/manifest/platform-permissions.d.ts +6 -2
  172. package/dist/manifest/platform-permissions.d.ts.map +1 -1
  173. package/dist/manifest/platform-permissions.js +56 -44
  174. package/dist/manifest/platform-permissions.js.map +1 -1
  175. package/dist/manifest/platform-user-owned-models.d.ts.map +1 -1
  176. package/dist/manifest/platform-user-owned-models.js +16 -0
  177. package/dist/manifest/platform-user-owned-models.js.map +1 -1
  178. package/dist/nodes/dto/node-admin.dto.d.ts +5 -0
  179. package/dist/nodes/dto/node-admin.dto.d.ts.map +1 -1
  180. package/dist/nodes/dto/node-admin.dto.js +19 -0
  181. package/dist/nodes/dto/node-admin.dto.js.map +1 -1
  182. package/dist/nodes/dto/node-control-plane.dto.d.ts +26 -0
  183. package/dist/nodes/dto/node-control-plane.dto.d.ts.map +1 -1
  184. package/dist/nodes/dto/node-event.dto.d.ts +100 -0
  185. package/dist/nodes/dto/node-event.dto.d.ts.map +1 -0
  186. package/dist/nodes/dto/node-event.dto.js +239 -0
  187. package/dist/nodes/dto/node-event.dto.js.map +1 -0
  188. package/dist/nodes/dto/node-response.dto.d.ts +21 -0
  189. package/dist/nodes/dto/node-response.dto.d.ts.map +1 -1
  190. package/dist/nodes/dto/node-response.dto.js +42 -1
  191. package/dist/nodes/dto/node-response.dto.js.map +1 -1
  192. package/dist/nodes/events/node-event.event.d.ts +41 -0
  193. package/dist/nodes/events/node-event.event.d.ts.map +1 -0
  194. package/dist/nodes/events/node-event.event.js +69 -0
  195. package/dist/nodes/events/node-event.event.js.map +1 -0
  196. package/dist/nodes/handlers/node-events-purge.handler.d.ts +31 -0
  197. package/dist/nodes/handlers/node-events-purge.handler.d.ts.map +1 -0
  198. package/dist/nodes/handlers/node-events-purge.handler.js +91 -0
  199. package/dist/nodes/handlers/node-events-purge.handler.js.map +1 -0
  200. package/dist/nodes/index.d.ts +11 -4
  201. package/dist/nodes/index.d.ts.map +1 -1
  202. package/dist/nodes/index.js +20 -1
  203. package/dist/nodes/index.js.map +1 -1
  204. package/dist/nodes/node-events.service.d.ts +87 -0
  205. package/dist/nodes/node-events.service.d.ts.map +1 -0
  206. package/dist/nodes/node-events.service.js +271 -0
  207. package/dist/nodes/node-events.service.js.map +1 -0
  208. package/dist/nodes/node-fleet-metrics.service.d.ts +10 -1
  209. package/dist/nodes/node-fleet-metrics.service.d.ts.map +1 -1
  210. package/dist/nodes/node-fleet-metrics.service.js +31 -0
  211. package/dist/nodes/node-fleet-metrics.service.js.map +1 -1
  212. package/dist/nodes/node-lifecycle.service.d.ts +16 -1
  213. package/dist/nodes/node-lifecycle.service.d.ts.map +1 -1
  214. package/dist/nodes/node-lifecycle.service.js +7 -0
  215. package/dist/nodes/node-lifecycle.service.js.map +1 -1
  216. package/dist/nodes/nodes-admin.controller.d.ts +5 -1
  217. package/dist/nodes/nodes-admin.controller.d.ts.map +1 -1
  218. package/dist/nodes/nodes-admin.controller.js +32 -2
  219. package/dist/nodes/nodes-admin.controller.js.map +1 -1
  220. package/dist/nodes/nodes.controller.d.ts +7 -3
  221. package/dist/nodes/nodes.controller.d.ts.map +1 -1
  222. package/dist/nodes/nodes.controller.js +46 -6
  223. package/dist/nodes/nodes.controller.js.map +1 -1
  224. package/dist/nodes/nodes.metrics.d.ts +23 -1
  225. package/dist/nodes/nodes.metrics.d.ts.map +1 -1
  226. package/dist/nodes/nodes.metrics.js +80 -1
  227. package/dist/nodes/nodes.metrics.js.map +1 -1
  228. package/dist/nodes/nodes.module.d.ts.map +1 -1
  229. package/dist/nodes/nodes.module.js +6 -0
  230. package/dist/nodes/nodes.module.js.map +1 -1
  231. package/dist/nodes/nodes.options.d.ts +17 -0
  232. package/dist/nodes/nodes.options.d.ts.map +1 -1
  233. package/dist/nodes/nodes.options.js +13 -2
  234. package/dist/nodes/nodes.options.js.map +1 -1
  235. package/dist/nodes/nodes.service.d.ts +3 -1
  236. package/dist/nodes/nodes.service.d.ts.map +1 -1
  237. package/dist/nodes/nodes.service.js +14 -3
  238. package/dist/nodes/nodes.service.js.map +1 -1
  239. package/dist/nodes/tasks/node-events-purge.task.d.ts +13 -0
  240. package/dist/nodes/tasks/node-events-purge.task.d.ts.map +1 -0
  241. package/dist/nodes/tasks/node-events-purge.task.js +73 -0
  242. package/dist/nodes/tasks/node-events-purge.task.js.map +1 -0
  243. package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts +30 -8
  244. package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts.map +1 -1
  245. package/dist/telemetry/dashboard/telemetry-dashboard.service.js +12 -0
  246. package/dist/telemetry/dashboard/telemetry-dashboard.service.js.map +1 -1
  247. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts +15 -0
  248. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts.map +1 -1
  249. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js +17 -2
  250. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js.map +1 -1
  251. package/dist/telemetry/dto/telemetry-dashboard.dto.d.ts +3 -3
  252. package/dist/telemetry/index.d.ts +4 -2
  253. package/dist/telemetry/index.d.ts.map +1 -1
  254. package/dist/telemetry/index.js +4 -1
  255. package/dist/telemetry/index.js.map +1 -1
  256. package/dist/telemetry/metrics/groups/nodes.metric-group.d.ts.map +1 -1
  257. package/dist/telemetry/metrics/groups/nodes.metric-group.js +77 -0
  258. package/dist/telemetry/metrics/groups/nodes.metric-group.js.map +1 -1
  259. package/dist/telemetry/metrics/metric-verdict.d.ts +1 -1
  260. package/dist/telemetry/metrics/metric-verdict.d.ts.map +1 -1
  261. package/dist/telemetry/metrics/metric-verdict.js +15 -1
  262. package/dist/telemetry/metrics/metric-verdict.js.map +1 -1
  263. package/dist/telemetry/query/telemetry-query-facade.d.ts +1 -1
  264. package/dist/telemetry/query/telemetry-query-facade.d.ts.map +1 -1
  265. package/dist/telemetry/query/telemetry-query-facade.js.map +1 -1
  266. package/dist/telemetry/query/telemetry-query.service.d.ts +2 -2
  267. package/dist/telemetry/query/telemetry-query.service.d.ts.map +1 -1
  268. package/dist/telemetry/query/telemetry-query.service.js +4 -0
  269. package/dist/telemetry/query/telemetry-query.service.js.map +1 -1
  270. package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts +1 -1
  271. package/dist/telemetry/telemetry-support-bundle.section.d.ts +4 -4
  272. package/dist/telemetry/telemetry.module.d.ts.map +1 -1
  273. package/dist/telemetry/telemetry.module.js +1 -0
  274. package/dist/telemetry/telemetry.module.js.map +1 -1
  275. package/dist/telemetry/testing/metric-schema.fixture.d.ts.map +1 -1
  276. package/dist/telemetry/testing/metric-schema.fixture.js +56 -0
  277. package/dist/telemetry/testing/metric-schema.fixture.js.map +1 -1
  278. package/dist/user-data/platform-user-data.d.ts.map +1 -1
  279. package/dist/user-data/platform-user-data.js +2 -0
  280. package/dist/user-data/platform-user-data.js.map +1 -1
  281. package/dist/webhooks/data/webhooks-db.d.ts +176 -0
  282. package/dist/webhooks/data/webhooks-db.d.ts.map +1 -0
  283. package/dist/webhooks/data/webhooks-db.js +14 -0
  284. package/dist/webhooks/data/webhooks-db.js.map +1 -0
  285. package/dist/webhooks/egress/egress-guard.d.ts +99 -0
  286. package/dist/webhooks/egress/egress-guard.d.ts.map +1 -0
  287. package/dist/webhooks/egress/egress-guard.js +172 -0
  288. package/dist/webhooks/egress/egress-guard.js.map +1 -0
  289. package/dist/webhooks/egress/transport.d.ts +58 -0
  290. package/dist/webhooks/egress/transport.d.ts.map +1 -0
  291. package/dist/webhooks/egress/transport.js +115 -0
  292. package/dist/webhooks/egress/transport.js.map +1 -0
  293. package/dist/webhooks/handlers/webhook-deliver.handler.d.ts +76 -0
  294. package/dist/webhooks/handlers/webhook-deliver.handler.d.ts.map +1 -0
  295. package/dist/webhooks/handlers/webhook-deliver.handler.js +332 -0
  296. package/dist/webhooks/handlers/webhook-deliver.handler.js.map +1 -0
  297. package/dist/webhooks/handlers/webhook-fanout.handler.d.ts +28 -0
  298. package/dist/webhooks/handlers/webhook-fanout.handler.d.ts.map +1 -0
  299. package/dist/webhooks/handlers/webhook-fanout.handler.js +73 -0
  300. package/dist/webhooks/handlers/webhook-fanout.handler.js.map +1 -0
  301. package/dist/webhooks/handlers/webhook-purge.handler.d.ts +33 -0
  302. package/dist/webhooks/handlers/webhook-purge.handler.d.ts.map +1 -0
  303. package/dist/webhooks/handlers/webhook-purge.handler.js +77 -0
  304. package/dist/webhooks/handlers/webhook-purge.handler.js.map +1 -0
  305. package/dist/webhooks/http/admin-webhooks.controller.d.ts +36 -0
  306. package/dist/webhooks/http/admin-webhooks.controller.d.ts.map +1 -0
  307. package/dist/webhooks/http/admin-webhooks.controller.js +250 -0
  308. package/dist/webhooks/http/admin-webhooks.controller.js.map +1 -0
  309. package/dist/webhooks/http/org-webhooks.controller.d.ts +36 -0
  310. package/dist/webhooks/http/org-webhooks.controller.d.ts.map +1 -0
  311. package/dist/webhooks/http/org-webhooks.controller.js +249 -0
  312. package/dist/webhooks/http/org-webhooks.controller.js.map +1 -0
  313. package/dist/webhooks/http/scope-context.d.ts +17 -0
  314. package/dist/webhooks/http/scope-context.d.ts.map +1 -0
  315. package/dist/webhooks/http/scope-context.js +28 -0
  316. package/dist/webhooks/http/scope-context.js.map +1 -0
  317. package/dist/webhooks/http/webhook.dto.d.ts +174 -0
  318. package/dist/webhooks/http/webhook.dto.d.ts.map +1 -0
  319. package/dist/webhooks/http/webhook.dto.js +58 -0
  320. package/dist/webhooks/http/webhook.dto.js.map +1 -0
  321. package/dist/webhooks/http/webhooks.controller.d.ts +36 -0
  322. package/dist/webhooks/http/webhooks.controller.d.ts.map +1 -0
  323. package/dist/webhooks/http/webhooks.controller.js +243 -0
  324. package/dist/webhooks/http/webhooks.controller.js.map +1 -0
  325. package/dist/webhooks/index.d.ts +43 -0
  326. package/dist/webhooks/index.d.ts.map +1 -0
  327. package/dist/webhooks/index.js +147 -0
  328. package/dist/webhooks/index.js.map +1 -0
  329. package/dist/webhooks/listeners/webhook-event.listeners.d.ts +23 -0
  330. package/dist/webhooks/listeners/webhook-event.listeners.d.ts.map +1 -0
  331. package/dist/webhooks/listeners/webhook-event.listeners.js +120 -0
  332. package/dist/webhooks/listeners/webhook-event.listeners.js.map +1 -0
  333. package/dist/webhooks/notifications/webhook-notification.channel.d.ts +31 -0
  334. package/dist/webhooks/notifications/webhook-notification.channel.d.ts.map +1 -0
  335. package/dist/webhooks/notifications/webhook-notification.channel.js +127 -0
  336. package/dist/webhooks/notifications/webhook-notification.channel.js.map +1 -0
  337. package/dist/webhooks/notifications/webhook-notifications.d.ts +98 -0
  338. package/dist/webhooks/notifications/webhook-notifications.d.ts.map +1 -0
  339. package/dist/webhooks/notifications/webhook-notifications.js +150 -0
  340. package/dist/webhooks/notifications/webhook-notifications.js.map +1 -0
  341. package/dist/webhooks/ports.d.ts +29 -0
  342. package/dist/webhooks/ports.d.ts.map +1 -0
  343. package/dist/webhooks/ports.js +23 -0
  344. package/dist/webhooks/ports.js.map +1 -0
  345. package/dist/webhooks/registry/builtin-events.d.ts +57 -0
  346. package/dist/webhooks/registry/builtin-events.d.ts.map +1 -0
  347. package/dist/webhooks/registry/builtin-events.js +113 -0
  348. package/dist/webhooks/registry/builtin-events.js.map +1 -0
  349. package/dist/webhooks/registry/webhook-catalog.d.ts +63 -0
  350. package/dist/webhooks/registry/webhook-catalog.d.ts.map +1 -0
  351. package/dist/webhooks/registry/webhook-catalog.js +123 -0
  352. package/dist/webhooks/registry/webhook-catalog.js.map +1 -0
  353. package/dist/webhooks/registry/webhook-event.registry.d.ts +116 -0
  354. package/dist/webhooks/registry/webhook-event.registry.d.ts.map +1 -0
  355. package/dist/webhooks/registry/webhook-event.registry.js +152 -0
  356. package/dist/webhooks/registry/webhook-event.registry.js.map +1 -0
  357. package/dist/webhooks/signing.d.ts +31 -0
  358. package/dist/webhooks/signing.d.ts.map +1 -0
  359. package/dist/webhooks/signing.js +48 -0
  360. package/dist/webhooks/signing.js.map +1 -0
  361. package/dist/webhooks/tasks/webhook-purge.task.d.ts +17 -0
  362. package/dist/webhooks/tasks/webhook-purge.task.d.ts.map +1 -0
  363. package/dist/webhooks/tasks/webhook-purge.task.js +68 -0
  364. package/dist/webhooks/tasks/webhook-purge.task.js.map +1 -0
  365. package/dist/webhooks/testing/conformance.d.ts +61 -0
  366. package/dist/webhooks/testing/conformance.d.ts.map +1 -0
  367. package/dist/webhooks/testing/conformance.js +316 -0
  368. package/dist/webhooks/testing/conformance.js.map +1 -0
  369. package/dist/webhooks/testing/in-memory.d.ts +156 -0
  370. package/dist/webhooks/testing/in-memory.d.ts.map +1 -0
  371. package/dist/webhooks/testing/in-memory.js +323 -0
  372. package/dist/webhooks/testing/in-memory.js.map +1 -0
  373. package/dist/webhooks/testing/index.d.ts +7 -0
  374. package/dist/webhooks/testing/index.d.ts.map +1 -0
  375. package/dist/webhooks/testing/index.js +25 -0
  376. package/dist/webhooks/testing/index.js.map +1 -0
  377. package/dist/webhooks/testing/kit.d.ts +86 -0
  378. package/dist/webhooks/testing/kit.d.ts.map +1 -0
  379. package/dist/webhooks/testing/kit.js +113 -0
  380. package/dist/webhooks/testing/kit.js.map +1 -0
  381. package/dist/webhooks/webhook-endpoints.service.d.ts +142 -0
  382. package/dist/webhooks/webhook-endpoints.service.d.ts.map +1 -0
  383. package/dist/webhooks/webhook-endpoints.service.js +366 -0
  384. package/dist/webhooks/webhook-endpoints.service.js.map +1 -0
  385. package/dist/webhooks/webhook-envelope.d.ts +36 -0
  386. package/dist/webhooks/webhook-envelope.d.ts.map +1 -0
  387. package/dist/webhooks/webhook-envelope.js +46 -0
  388. package/dist/webhooks/webhook-envelope.js.map +1 -0
  389. package/dist/webhooks/webhook-secrets.service.d.ts +49 -0
  390. package/dist/webhooks/webhook-secrets.service.d.ts.map +1 -0
  391. package/dist/webhooks/webhook-secrets.service.js +118 -0
  392. package/dist/webhooks/webhook-secrets.service.js.map +1 -0
  393. package/dist/webhooks/webhook-views.d.ts +34 -0
  394. package/dist/webhooks/webhook-views.d.ts.map +1 -0
  395. package/dist/webhooks/webhook-views.js +83 -0
  396. package/dist/webhooks/webhook-views.js.map +1 -0
  397. package/dist/webhooks/webhooks.access.d.ts +28 -0
  398. package/dist/webhooks/webhooks.access.d.ts.map +1 -0
  399. package/dist/webhooks/webhooks.access.js +55 -0
  400. package/dist/webhooks/webhooks.access.js.map +1 -0
  401. package/dist/webhooks/webhooks.constants.d.ts +73 -0
  402. package/dist/webhooks/webhooks.constants.d.ts.map +1 -0
  403. package/dist/webhooks/webhooks.constants.js +100 -0
  404. package/dist/webhooks/webhooks.constants.js.map +1 -0
  405. package/dist/webhooks/webhooks.credentials.d.ts +28 -0
  406. package/dist/webhooks/webhooks.credentials.d.ts.map +1 -0
  407. package/dist/webhooks/webhooks.credentials.js +51 -0
  408. package/dist/webhooks/webhooks.credentials.js.map +1 -0
  409. package/dist/webhooks/webhooks.errors.d.ts +25 -0
  410. package/dist/webhooks/webhooks.errors.d.ts.map +1 -0
  411. package/dist/webhooks/webhooks.errors.js +65 -0
  412. package/dist/webhooks/webhooks.errors.js.map +1 -0
  413. package/dist/webhooks/webhooks.metrics.d.ts +24 -0
  414. package/dist/webhooks/webhooks.metrics.d.ts.map +1 -0
  415. package/dist/webhooks/webhooks.metrics.js +70 -0
  416. package/dist/webhooks/webhooks.metrics.js.map +1 -0
  417. package/dist/webhooks/webhooks.module.d.ts +29 -0
  418. package/dist/webhooks/webhooks.module.d.ts.map +1 -0
  419. package/dist/webhooks/webhooks.module.js +108 -0
  420. package/dist/webhooks/webhooks.module.js.map +1 -0
  421. package/dist/webhooks/webhooks.options.d.ts +119 -0
  422. package/dist/webhooks/webhooks.options.d.ts.map +1 -0
  423. package/dist/webhooks/webhooks.options.js +80 -0
  424. package/dist/webhooks/webhooks.options.js.map +1 -0
  425. package/dist/webhooks/webhooks.permissions.d.ts +47 -0
  426. package/dist/webhooks/webhooks.permissions.d.ts.map +1 -0
  427. package/dist/webhooks/webhooks.permissions.js +83 -0
  428. package/dist/webhooks/webhooks.permissions.js.map +1 -0
  429. package/dist/webhooks/webhooks.repository.d.ts +162 -0
  430. package/dist/webhooks/webhooks.repository.d.ts.map +1 -0
  431. package/dist/webhooks/webhooks.repository.js +246 -0
  432. package/dist/webhooks/webhooks.repository.js.map +1 -0
  433. package/dist/webhooks/webhooks.service.d.ts +91 -0
  434. package/dist/webhooks/webhooks.service.d.ts.map +1 -0
  435. package/dist/webhooks/webhooks.service.js +216 -0
  436. package/dist/webhooks/webhooks.service.js.map +1 -0
  437. package/package.json +19 -3
@@ -0,0 +1,296 @@
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 AlertsEvaluationService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.AlertsEvaluationService = void 0;
17
+ exports.isUniqueViolation = isUniqueViolation;
18
+ const common_1 = require("@nestjs/common");
19
+ const index_1 = require("../core/index");
20
+ const alerts_context_service_1 = require("./alerts-context.service");
21
+ const alerts_dispatch_service_1 = require("./alerts-dispatch.service");
22
+ const alerts_constants_1 = require("./alerts.constants");
23
+ const alerts_errors_1 = require("./alerts.errors");
24
+ const alert_kind_registry_1 = require("./kinds/alert-kind.registry");
25
+ const alert_state_machine_1 = require("./state/alert-state-machine");
26
+ /**
27
+ * Whether `error` is a unique-constraint violation (Prisma `P2002`).
28
+ *
29
+ * @param error - what a write threw.
30
+ * @returns whether it is `P2002`.
31
+ *
32
+ * @stability experimental
33
+ */
34
+ function isUniqueViolation(error) {
35
+ return typeof error === 'object' && error !== null && error.code === 'P2002';
36
+ }
37
+ function message(error) {
38
+ return (error instanceof Error ? error.message : String(error)).slice(0, 500);
39
+ }
40
+ function clampSummary(text) {
41
+ return text.length > 500 ? `${text.slice(0, 499)}…` : text;
42
+ }
43
+ /**
44
+ * Runs the enabled rules: evaluates each kind, isolates failures per rule,
45
+ * then applies the state machine to the observations. Evaluation is
46
+ * IDEMPOTENT: two passes over the same data leave one incident (the partial
47
+ * unique index arbitrates a race), and every state change is a conditional
48
+ * write so a concurrent pass cannot dispatch the same transition twice.
49
+ *
50
+ * It never opens a transaction, so a dispatch always follows a committed write.
51
+ *
52
+ * @stability experimental
53
+ */
54
+ let AlertsEvaluationService = AlertsEvaluationService_1 = class AlertsEvaluationService {
55
+ prisma;
56
+ contexts;
57
+ dispatcher;
58
+ options;
59
+ logger = new common_1.Logger(AlertsEvaluationService_1.name);
60
+ constructor(prisma, contexts, dispatcher, options) {
61
+ this.prisma = prisma;
62
+ this.contexts = contexts;
63
+ this.dispatcher = dispatcher;
64
+ this.options = options;
65
+ }
66
+ /**
67
+ * Evaluates every enabled rule (or only the event-driven ones that `event`
68
+ * can change).
69
+ *
70
+ * @param scope - `{ event }` restricts to rules of event-driven kinds whose kind says the event matters.
71
+ * @returns one outcome per rule evaluated.
72
+ */
73
+ async evaluateEnabled(scope = {}) {
74
+ const rules = await this.prisma.alertRule.findMany({ where: { enabled: true }, orderBy: { createdAt: 'asc' } });
75
+ const outcomes = [];
76
+ for (const rule of rules) {
77
+ if (scope.event) {
78
+ const kind = alert_kind_registry_1.alertRuleKindRegistry.get(rule.kind);
79
+ if (!kind?.eventDriven)
80
+ continue;
81
+ const config = kind.configSchema.safeParse(rule.config);
82
+ if (!config.success || (kind.matchesEvent && !kind.matchesEvent(config.data, scope.event)))
83
+ continue;
84
+ }
85
+ outcomes.push(await this.evaluateRule(rule));
86
+ }
87
+ return outcomes;
88
+ }
89
+ /**
90
+ * Evaluates one rule and applies its observations. Never throws: a failure
91
+ * is recorded on the rule (`lastError`) and returned.
92
+ *
93
+ * @param rule - the rule row.
94
+ * @param now - the instant (a test seam).
95
+ * @returns what happened.
96
+ */
97
+ async evaluateRule(rule, now = new Date()) {
98
+ let observations;
99
+ try {
100
+ observations = await this.observe(rule, now);
101
+ }
102
+ catch (error) {
103
+ if (error instanceof alerts_errors_1.AlertStoreUnavailableError) {
104
+ this.logger.warn(`Alert rule "${rule.name}" (${rule.id}): ${error.message}`);
105
+ }
106
+ else {
107
+ this.logger.error(`Alert rule "${rule.name}" (${rule.id}) failed: ${message(error)}`);
108
+ }
109
+ await this.stamp(rule.id, now, message(error));
110
+ return { ruleId: rule.id, status: 'error', error: message(error), opened: 0, fired: 0, resolved: 0 };
111
+ }
112
+ try {
113
+ const counts = await this.apply(rule, observations, now);
114
+ await this.stamp(rule.id, now, null);
115
+ return { ruleId: rule.id, status: 'ok', error: null, ...counts };
116
+ }
117
+ catch (error) {
118
+ this.logger.error(`Alert rule "${rule.name}" (${rule.id}) could not apply its observations: ${message(error)}`);
119
+ await this.stamp(rule.id, now, message(error));
120
+ return { ruleId: rule.id, status: 'error', error: message(error), opened: 0, fired: 0, resolved: 0 };
121
+ }
122
+ }
123
+ /**
124
+ * Evaluates a rule WITHOUT touching state or dispatching: the dry run behind
125
+ * `POST /rules/:id/test`.
126
+ *
127
+ * @param rule - the rule row.
128
+ * @param now - the instant.
129
+ * @returns the observations.
130
+ * @throws whatever the kind throws (the caller reports it).
131
+ */
132
+ observe(rule, now = new Date()) {
133
+ const kind = alert_kind_registry_1.alertRuleKindRegistry.get(rule.kind);
134
+ if (!kind)
135
+ return Promise.reject(new Error(`The alert rule kind "${rule.kind}" is not registered.`));
136
+ const parsed = kind.configSchema.safeParse(rule.config);
137
+ if (!parsed.success)
138
+ return Promise.reject(new Error(`The rule's config no longer matches the "${rule.kind}" kind.`));
139
+ const controller = new AbortController();
140
+ const view = {
141
+ id: rule.id,
142
+ key: rule.key,
143
+ name: rule.name,
144
+ severity: rule.severity,
145
+ kind: rule.kind,
146
+ config: parsed.data,
147
+ };
148
+ const ctx = this.contexts.create(controller.signal, now);
149
+ let timer;
150
+ const budget = new Promise((_resolve, reject) => {
151
+ timer = setTimeout(() => {
152
+ controller.abort(new Error('time budget spent'));
153
+ reject(new Error(`Evaluation took longer than ${this.options.evaluationBudgetMs} ms and was abandoned.`));
154
+ }, this.options.evaluationBudgetMs);
155
+ timer.unref?.();
156
+ });
157
+ return Promise.race([kind.evaluate(ctx, view), budget]).finally(() => clearTimeout(timer));
158
+ }
159
+ async stamp(ruleId, now, lastError) {
160
+ try {
161
+ await this.prisma.alertRule.updateMany({ where: { id: ruleId }, data: { lastEvaluatedAt: now, lastError } });
162
+ }
163
+ catch (error) {
164
+ this.logger.warn(`Could not record the evaluation of rule ${ruleId}: ${message(error)}`);
165
+ }
166
+ }
167
+ async apply(rule, observations, now) {
168
+ const byKey = new Map();
169
+ for (const observation of observations) {
170
+ const key = (0, alert_state_machine_1.labelsKeyOf)(observation.labels);
171
+ const existing = byKey.get(key);
172
+ // One observation per label set; a breached one wins over a clear one.
173
+ if (!existing || (observation.breached && !existing.breached))
174
+ byKey.set(key, observation);
175
+ }
176
+ const open = await this.prisma.alertIncident.findMany({ where: { ruleId: rule.id, state: { in: ['pending', 'firing'] } } });
177
+ const openByKey = new Map(open.map((incident) => [incident.labelsKey, incident]));
178
+ const counts = { opened: 0, fired: 0, resolved: 0 };
179
+ for (const key of new Set([...byKey.keys(), ...openByKey.keys()])) {
180
+ const incident = openByKey.get(key) ?? null;
181
+ const observation = byKey.get(key) ?? null;
182
+ const transition = (0, alert_state_machine_1.nextTransition)({
183
+ now,
184
+ open: incident ? { id: incident.id, state: incident.state, pendingSince: incident.pendingSince } : null,
185
+ observation,
186
+ forSeconds: rule.forSeconds,
187
+ });
188
+ const touch = {
189
+ severity: rule.severity,
190
+ lastValue: observation?.value ?? null,
191
+ lastSeenAt: now,
192
+ ...(observation ? { summary: clampSummary(observation.summary) } : {}),
193
+ };
194
+ switch (transition.type) {
195
+ case 'none':
196
+ break;
197
+ case 'touch':
198
+ await this.prisma.alertIncident.updateMany({ where: { id: incident.id, state: { in: ['pending', 'firing'] } }, data: touch });
199
+ break;
200
+ case 'discard':
201
+ await this.prisma.alertIncident.deleteMany({ where: { id: incident.id, state: 'pending' } });
202
+ break;
203
+ case 'open': {
204
+ const created = await this.create(rule, key, observation, transition.state ?? 'pending', now);
205
+ if (!created)
206
+ break; // a concurrent pass created it; the next pass handles it
207
+ counts.opened += 1;
208
+ if (transition.state === 'firing') {
209
+ counts.fired += 1;
210
+ await this.fired(rule, created);
211
+ }
212
+ break;
213
+ }
214
+ case 'promote': {
215
+ const promoted = await this.prisma.alertIncident.updateMany({
216
+ where: { id: incident.id, state: 'pending' },
217
+ data: { ...touch, state: 'firing', firedAt: now },
218
+ });
219
+ if (promoted.count !== 1)
220
+ break;
221
+ counts.fired += 1;
222
+ const row = await this.prisma.alertIncident.findUnique({ where: { id: incident.id } });
223
+ if (row)
224
+ await this.fired(rule, row);
225
+ break;
226
+ }
227
+ case 'resolve': {
228
+ const previous = await this.previousResolvedAt(rule.id, key);
229
+ const resolved = await this.prisma.alertIncident.updateMany({
230
+ where: { id: incident.id, state: 'firing' },
231
+ data: {
232
+ state: 'resolved',
233
+ resolvedAt: now,
234
+ severity: rule.severity,
235
+ ...(observation ? { summary: clampSummary(observation.summary), lastValue: observation.value } : {}),
236
+ },
237
+ });
238
+ if (resolved.count !== 1)
239
+ break;
240
+ counts.resolved += 1;
241
+ const row = await this.prisma.alertIncident.findUnique({ where: { id: incident.id } });
242
+ if (row) {
243
+ const notify = (0, alert_state_machine_1.shouldNotify)(row.firedAt ?? now, previous, rule.cooldownSeconds);
244
+ await this.dispatcher.dispatch('resolved', rule, row, notify);
245
+ }
246
+ break;
247
+ }
248
+ }
249
+ }
250
+ return counts;
251
+ }
252
+ async create(rule, labelsKey, observation, state, now) {
253
+ try {
254
+ return await this.prisma.alertIncident.create({
255
+ data: {
256
+ ruleId: rule.id,
257
+ labelsKey,
258
+ labels: observation.labels,
259
+ state,
260
+ severity: rule.severity,
261
+ pendingSince: now,
262
+ firedAt: state === 'firing' ? now : null,
263
+ lastValue: observation.value,
264
+ lastSeenAt: now,
265
+ summary: clampSummary(observation.summary),
266
+ },
267
+ });
268
+ }
269
+ catch (error) {
270
+ if (isUniqueViolation(error))
271
+ return null; // alert_incidents_open_uniq_idx: one open incident per rule and labels
272
+ throw error;
273
+ }
274
+ }
275
+ async fired(rule, incident) {
276
+ const previous = await this.previousResolvedAt(rule.id, incident.labelsKey);
277
+ await this.dispatcher.dispatch('fired', rule, incident, (0, alert_state_machine_1.shouldNotify)(incident.firedAt ?? new Date(), previous, rule.cooldownSeconds));
278
+ }
279
+ async previousResolvedAt(ruleId, labelsKey) {
280
+ const row = await this.prisma.alertIncident.findFirst({
281
+ where: { ruleId, labelsKey, state: 'resolved' },
282
+ orderBy: { resolvedAt: 'desc' },
283
+ select: { resolvedAt: true },
284
+ });
285
+ return row?.resolvedAt ?? null;
286
+ }
287
+ };
288
+ exports.AlertsEvaluationService = AlertsEvaluationService;
289
+ exports.AlertsEvaluationService = AlertsEvaluationService = AlertsEvaluationService_1 = __decorate([
290
+ (0, common_1.Injectable)(),
291
+ __param(0, (0, common_1.Inject)(index_1.PLATFORM_PRISMA)),
292
+ __param(3, (0, common_1.Inject)(alerts_constants_1.ALERTS_OPTIONS)),
293
+ __metadata("design:paramtypes", [Object, alerts_context_service_1.AlertContextService,
294
+ alerts_dispatch_service_1.AlertsDispatchService, Object])
295
+ ], AlertsEvaluationService);
296
+ //# sourceMappingURL=alerts-evaluation.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-evaluation.service.js","sourceRoot":"","sources":["../../src/alerts/alerts-evaluation.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { JobsService } from '../jobs/index';
2
+ import { type NodeEventReportedEvent } from '../nodes/index';
3
+ /**
4
+ * Turns a node event into an `alerts.evaluate_event` job. ENQUEUE ONLY: the
5
+ * body does no I/O of its own and never evaluates a rule inline (the queue's
6
+ * rule 1; the `on-event-no-io` suite scans it). Every event gets its own job
7
+ * (`skipDedup`), because the job's payload says which event to look at.
8
+ *
9
+ * @stability experimental
10
+ */
11
+ export declare class AlertsEventListener {
12
+ private readonly jobs;
13
+ private readonly logger;
14
+ constructor(jobs: JobsService);
15
+ /**
16
+ * Queues one `alerts.evaluate_event` job for a reported node event.
17
+ *
18
+ * @param event - the node event the nodes slice emitted after its write committed.
19
+ */
20
+ handleNodeEvent(event: NodeEventReportedEvent): void;
21
+ }
22
+ //# sourceMappingURL=alerts-event.listener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-event.listener.d.ts","sourceRoot":"","sources":["../../src/alerts/alerts-event.listener.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAuB,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAIlF;;;;;;;GAOG;AACH,qBACa,mBAAmB;IAGlB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;gBAElC,IAAI,EAAE,WAAW;IAE9C;;;;OAIG;IAEH,eAAe,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAqBrD"}
@@ -0,0 +1,72 @@
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 AlertsEventListener_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.AlertsEventListener = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const event_emitter_1 = require("@nestjs/event-emitter");
16
+ const index_1 = require("../jobs/index");
17
+ const index_2 = require("../nodes/index");
18
+ const alerts_constants_1 = require("./alerts.constants");
19
+ const index_3 = require("../jobs/index");
20
+ /**
21
+ * Turns a node event into an `alerts.evaluate_event` job. ENQUEUE ONLY: the
22
+ * body does no I/O of its own and never evaluates a rule inline (the queue's
23
+ * rule 1; the `on-event-no-io` suite scans it). Every event gets its own job
24
+ * (`skipDedup`), because the job's payload says which event to look at.
25
+ *
26
+ * @stability experimental
27
+ */
28
+ let AlertsEventListener = AlertsEventListener_1 = class AlertsEventListener {
29
+ jobs;
30
+ logger = new common_1.Logger(AlertsEventListener_1.name);
31
+ constructor(jobs) {
32
+ this.jobs = jobs;
33
+ }
34
+ /**
35
+ * Queues one `alerts.evaluate_event` job for a reported node event.
36
+ *
37
+ * @param event - the node event the nodes slice emitted after its write committed.
38
+ */
39
+ handleNodeEvent(event) {
40
+ void this.jobs
41
+ .enqueue({
42
+ type: alerts_constants_1.ALERTS_EVALUATE_EVENT_TYPE,
43
+ reason: 'backfill',
44
+ orgId: null,
45
+ priority: Math.min(index_3.HOUSEKEEPING_PRIORITY, 10),
46
+ skipDedup: true,
47
+ payload: {
48
+ nodeId: event.nodeId,
49
+ nodeName: event.nodeName,
50
+ type: event.type,
51
+ severity: event.severity,
52
+ attrs: { ...event.attrs },
53
+ occurredAt: event.occurredAt.toISOString(),
54
+ },
55
+ })
56
+ .catch((error) => {
57
+ this.logger.error(`Could not queue the alert evaluation for node event ${event.type}: ${error instanceof Error ? error.message : String(error)}`);
58
+ });
59
+ }
60
+ };
61
+ exports.AlertsEventListener = AlertsEventListener;
62
+ __decorate([
63
+ (0, event_emitter_1.OnEvent)(index_2.NODE_EVENT_REPORTED),
64
+ __metadata("design:type", Function),
65
+ __metadata("design:paramtypes", [Function]),
66
+ __metadata("design:returntype", void 0)
67
+ ], AlertsEventListener.prototype, "handleNodeEvent", null);
68
+ exports.AlertsEventListener = AlertsEventListener = AlertsEventListener_1 = __decorate([
69
+ (0, common_1.Injectable)(),
70
+ __metadata("design:paramtypes", [index_1.JobsService])
71
+ ], AlertsEventListener);
72
+ //# sourceMappingURL=alerts-event.listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts-event.listener.js","sourceRoot":"","sources":["../../src/alerts/alerts-event.listener.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,yDAAgD;AAEhD,yCAA4C;AAC5C,0CAAkF;AAClF,yDAAgE;AAChE,yCAAsD;AAEtD;;;;;;;GAOG;AAEI,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAGD;IAFZ,MAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IAE/D,YAA6B,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;IAAG,CAAC;IAElD;;;;OAIG;IAEH,eAAe,CAAC,KAA6B;QAC3C,KAAK,IAAI,CAAC,IAAI;aACX,OAAO,CAAC;YACP,IAAI,EAAE,6CAA0B;YAChC,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,6BAAqB,EAAE,EAAE,CAAC;YAC7C,SAAS,EAAE,IAAI;YACf,OAAO,EAAE;gBACP,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE;gBACzB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE;aAC3C;SACF,CAAC;aACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,KAAK,CAAC,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpJ,CAAC,CAAC,CAAC;IACP,CAAC;CACF,CAAA;AAhCY,kDAAmB;AAW9B;IADC,IAAA,uBAAO,EAAC,2BAAmB,CAAC;;;;0DAqB5B;8BA/BU,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;qCAIwB,mBAAW;GAHnC,mBAAmB,CAgC/B"}
@@ -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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"}