@oneuptime/common 10.0.52 → 10.0.54

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 (405) hide show
  1. package/Models/AnalyticsModels/Metric.ts +78 -0
  2. package/Server/API/AIAgentDataAPI.ts +6 -1
  3. package/Server/API/BillingAPI.ts +28 -6
  4. package/Server/API/CommonAPI.ts +11 -0
  5. package/Server/API/DashboardAPI.ts +6 -2
  6. package/Server/API/DashboardDomainAPI.ts +10 -3
  7. package/Server/API/GitHubAPI.ts +58 -14
  8. package/Server/API/MicrosoftTeamsAPI.ts +97 -33
  9. package/Server/API/OpenSourceDeploymentAPI.ts +2 -2
  10. package/Server/API/SlackAPI.ts +107 -36
  11. package/Server/API/StatusAPI.ts +37 -16
  12. package/Server/API/StatusPageAPI.ts +97 -23
  13. package/Server/API/StatusPageDomainAPI.ts +6 -3
  14. package/Server/API/TelemetryAPI.ts +81 -0
  15. package/Server/API/UserAPI.ts +3 -3
  16. package/Server/API/UserCallAPI.ts +5 -2
  17. package/Server/API/UserEmailAPI.ts +5 -2
  18. package/Server/API/UserPushAPI.ts +9 -3
  19. package/Server/API/UserSmsAPI.ts +5 -2
  20. package/Server/API/UserWhatsAppAPI.ts +5 -2
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/1774559064921-MigrationName.ts +47 -0
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/1775735059360-MigrationName.ts +35 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  24. package/Server/Middleware/NotificationMiddleware.ts +2 -2
  25. package/Server/Middleware/ProjectAuthorization.ts +6 -0
  26. package/Server/Middleware/SCIMAuthorization.ts +2 -1
  27. package/Server/Middleware/SlackAuthorization.ts +28 -10
  28. package/Server/Middleware/TelemetryIngest.ts +16 -3
  29. package/Server/Middleware/UserAuthorization.ts +22 -5
  30. package/Server/Middleware/WhatsAppAuthorization.ts +15 -4
  31. package/Server/Services/AIAgentService.ts +13 -6
  32. package/Server/Services/AIService.ts +9 -3
  33. package/Server/Services/AlertEpisodeFeedService.ts +17 -5
  34. package/Server/Services/AlertEpisodeService.ts +34 -3
  35. package/Server/Services/AlertEpisodeStateTimelineService.ts +80 -22
  36. package/Server/Services/AlertFeedService.ts +17 -5
  37. package/Server/Services/AlertGroupingEngineService.ts +36 -7
  38. package/Server/Services/AlertService.ts +60 -8
  39. package/Server/Services/AlertStateTimelineService.ts +29 -7
  40. package/Server/Services/AnalyticsDatabaseService.ts +59 -25
  41. package/Server/Services/BillingInvoiceService.ts +7 -3
  42. package/Server/Services/BillingService.ts +9 -2
  43. package/Server/Services/DashboardDomainService.ts +56 -22
  44. package/Server/Services/DashboardService.ts +11 -4
  45. package/Server/Services/DatabaseService.ts +31 -11
  46. package/Server/Services/IncidentEpisodeFeedService.ts +17 -5
  47. package/Server/Services/IncidentEpisodeService.ts +34 -3
  48. package/Server/Services/IncidentEpisodeStateTimelineService.ts +80 -22
  49. package/Server/Services/IncidentFeedService.ts +33 -9
  50. package/Server/Services/IncidentGroupingEngineService.ts +35 -6
  51. package/Server/Services/IncidentService.ts +103 -9
  52. package/Server/Services/IncidentSlaRuleService.ts +16 -4
  53. package/Server/Services/IncidentSlaService.ts +20 -4
  54. package/Server/Services/IncidentStateTimelineService.ts +120 -31
  55. package/Server/Services/KubernetesClusterService.ts +62 -14
  56. package/Server/Services/LabelService.ts +14 -1
  57. package/Server/Services/MonitorFeedService.ts +33 -9
  58. package/Server/Services/MonitorProbeService.ts +31 -2
  59. package/Server/Services/MonitorService.ts +35 -4
  60. package/Server/Services/MonitorStatusTimelineService.ts +68 -20
  61. package/Server/Services/NotificationService.ts +4 -2
  62. package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +53 -9
  63. package/Server/Services/OnCallDutyPolicyEscalationRuleUserService.ts +9 -2
  64. package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +29 -8
  65. package/Server/Services/OnCallDutyPolicyFeedService.ts +33 -8
  66. package/Server/Services/OnCallDutyPolicyScheduleService.ts +97 -24
  67. package/Server/Services/OnCallDutyPolicyService.ts +2 -1
  68. package/Server/Services/OpenTelemetryIngestService.ts +51 -20
  69. package/Server/Services/ProbeService.ts +16 -7
  70. package/Server/Services/ProjectService.ts +29 -11
  71. package/Server/Services/ScheduledMaintenanceFeedService.ts +17 -4
  72. package/Server/Services/ScheduledMaintenanceService.ts +52 -6
  73. package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +72 -20
  74. package/Server/Services/StatusPageDomainService.ts +59 -23
  75. package/Server/Services/StatusPageService.ts +26 -8
  76. package/Server/Services/StatusPageSubscriberService.ts +382 -111
  77. package/Server/Services/TeamMemberService.ts +9 -3
  78. package/Server/Services/TelemetryAttributeService.ts +117 -4
  79. package/Server/Services/UserNotificationRuleService.ts +9 -3
  80. package/Server/Services/UserService.ts +6 -4
  81. package/Server/Services/UserWhatsAppService.ts +9 -3
  82. package/Server/Services/WorkflowService.ts +7 -3
  83. package/Server/Services/WorkspaceNotificationRuleService.ts +398 -156
  84. package/Server/Types/Domain.ts +15 -5
  85. package/Server/Types/Workflow/Components/API/Post.ts +22 -8
  86. package/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.ts +12 -4
  87. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +10 -0
  88. package/Server/Utils/CodeRepository/CodeRepository.ts +62 -13
  89. package/Server/Utils/Express.ts +1 -0
  90. package/Server/Utils/Greenlock/Greenlock.ts +75 -20
  91. package/Server/Utils/LLM/LLMService.ts +22 -7
  92. package/Server/Utils/Logger.ts +93 -13
  93. package/Server/Utils/Monitor/MonitorAlert.ts +15 -3
  94. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +15 -5
  95. package/Server/Utils/Monitor/MonitorIncident.ts +17 -3
  96. package/Server/Utils/Monitor/MonitorStatusTimeline.ts +6 -1
  97. package/Server/Utils/Profiling.ts +11 -5
  98. package/Server/Utils/Realtime.ts +90 -31
  99. package/Server/Utils/Response.ts +2 -2
  100. package/Server/Utils/StartServer.ts +43 -9
  101. package/Server/Utils/Telemetry/SpanUtil.ts +90 -0
  102. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.ts +58 -15
  103. package/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.ts +58 -15
  104. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.ts +19 -3
  105. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.ts +87 -22
  106. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Monitor.ts +12 -3
  107. package/Server/Utils/Workspace/MicrosoftTeams/Actions/OnCallDutyPolicy.ts +25 -7
  108. package/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.ts +55 -8
  109. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +100 -22
  110. package/Server/Utils/Workspace/Slack/Actions/Alert.ts +35 -9
  111. package/Server/Utils/Workspace/Slack/Actions/AlertEpisode.ts +32 -8
  112. package/Server/Utils/Workspace/Slack/Actions/Auth.ts +3 -1
  113. package/Server/Utils/Workspace/Slack/Actions/Incident.ts +52 -11
  114. package/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.ts +4 -1
  115. package/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.ts +89 -20
  116. package/Server/Utils/Workspace/Slack/Slack.ts +498 -247
  117. package/Server/Utils/Workspace/Workspace.ts +33 -11
  118. package/Server/Utils/Workspace/WorkspaceBase.ts +3 -1
  119. package/Server/Utils/Workspace/WorkspaceMessages/Alert.ts +8 -2
  120. package/Tests/Server/Middleware/UserAuthorization.test.ts +1 -1
  121. package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +12 -3
  122. package/UI/Components/BulkUpdate/BulkUpdateForm.tsx +60 -38
  123. package/UI/Components/Charts/Area/AreaChart.tsx +35 -1
  124. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +7 -0
  125. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +33 -0
  126. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +33 -0
  127. package/UI/Components/Charts/ChartLibrary/Types/FormattedExemplarPoint.ts +14 -0
  128. package/UI/Components/Charts/Line/LineChart.tsx +35 -1
  129. package/UI/Components/Charts/Types/ExemplarPoint.ts +6 -0
  130. package/UI/Components/Dictionary/Dictionary.tsx +13 -1
  131. package/UI/Components/Filters/FiltersForm.tsx +2 -0
  132. package/UI/Components/Filters/JSONFilter.tsx +5 -1
  133. package/UI/Components/Filters/Types/Filter.ts +2 -0
  134. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +3 -3
  135. package/UI/Components/ModelTable/BaseModelTable.tsx +10 -6
  136. package/UI/Components/Navbar/NavBar.tsx +10 -0
  137. package/build/dist/Models/AnalyticsModels/Metric.js +70 -0
  138. package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
  139. package/build/dist/Server/API/AIAgentDataAPI.js +6 -6
  140. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  141. package/build/dist/Server/API/BillingAPI.js +13 -13
  142. package/build/dist/Server/API/BillingAPI.js.map +1 -1
  143. package/build/dist/Server/API/CommonAPI.js +5 -0
  144. package/build/dist/Server/API/CommonAPI.js.map +1 -1
  145. package/build/dist/Server/API/DashboardAPI.js +2 -2
  146. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  147. package/build/dist/Server/API/DashboardDomainAPI.js +3 -3
  148. package/build/dist/Server/API/DashboardDomainAPI.js.map +1 -1
  149. package/build/dist/Server/API/GitHubAPI.js +19 -19
  150. package/build/dist/Server/API/GitHubAPI.js.map +1 -1
  151. package/build/dist/Server/API/MicrosoftTeamsAPI.js +34 -34
  152. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  153. package/build/dist/Server/API/OpenSourceDeploymentAPI.js +2 -2
  154. package/build/dist/Server/API/OpenSourceDeploymentAPI.js.map +1 -1
  155. package/build/dist/Server/API/SlackAPI.js +38 -38
  156. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  157. package/build/dist/Server/API/StatusAPI.js +16 -16
  158. package/build/dist/Server/API/StatusAPI.js.map +1 -1
  159. package/build/dist/Server/API/StatusPageAPI.js +52 -52
  160. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  161. package/build/dist/Server/API/StatusPageDomainAPI.js +3 -3
  162. package/build/dist/Server/API/StatusPageDomainAPI.js.map +1 -1
  163. package/build/dist/Server/API/TelemetryAPI.js +39 -0
  164. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  165. package/build/dist/Server/API/UserAPI.js +3 -3
  166. package/build/dist/Server/API/UserAPI.js.map +1 -1
  167. package/build/dist/Server/API/UserCallAPI.js +2 -2
  168. package/build/dist/Server/API/UserCallAPI.js.map +1 -1
  169. package/build/dist/Server/API/UserEmailAPI.js +2 -2
  170. package/build/dist/Server/API/UserEmailAPI.js.map +1 -1
  171. package/build/dist/Server/API/UserPushAPI.js +3 -3
  172. package/build/dist/Server/API/UserPushAPI.js.map +1 -1
  173. package/build/dist/Server/API/UserSmsAPI.js +2 -2
  174. package/build/dist/Server/API/UserSmsAPI.js.map +1 -1
  175. package/build/dist/Server/API/UserWhatsAppAPI.js +2 -2
  176. package/build/dist/Server/API/UserWhatsAppAPI.js.map +1 -1
  177. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774559064921-MigrationName.js +40 -0
  178. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774559064921-MigrationName.js.map +1 -0
  179. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1775735059360-MigrationName.js +18 -0
  180. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1775735059360-MigrationName.js.map +1 -0
  181. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  182. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  183. package/build/dist/Server/Middleware/NotificationMiddleware.js +2 -2
  184. package/build/dist/Server/Middleware/NotificationMiddleware.js.map +1 -1
  185. package/build/dist/Server/Middleware/ProjectAuthorization.js +5 -0
  186. package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
  187. package/build/dist/Server/Middleware/SCIMAuthorization.js +2 -2
  188. package/build/dist/Server/Middleware/SCIMAuthorization.js.map +1 -1
  189. package/build/dist/Server/Middleware/SlackAuthorization.js +10 -10
  190. package/build/dist/Server/Middleware/SlackAuthorization.js.map +1 -1
  191. package/build/dist/Server/Middleware/TelemetryIngest.js +9 -4
  192. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  193. package/build/dist/Server/Middleware/UserAuthorization.js +10 -5
  194. package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
  195. package/build/dist/Server/Middleware/WhatsAppAuthorization.js +6 -6
  196. package/build/dist/Server/Middleware/WhatsAppAuthorization.js.map +1 -1
  197. package/build/dist/Server/Services/AIAgentService.js +13 -7
  198. package/build/dist/Server/Services/AIAgentService.js.map +1 -1
  199. package/build/dist/Server/Services/AIService.js +9 -2
  200. package/build/dist/Server/Services/AIService.js.map +1 -1
  201. package/build/dist/Server/Services/AlertEpisodeFeedService.js +17 -5
  202. package/build/dist/Server/Services/AlertEpisodeFeedService.js.map +1 -1
  203. package/build/dist/Server/Services/AlertEpisodeService.js +40 -10
  204. package/build/dist/Server/Services/AlertEpisodeService.js.map +1 -1
  205. package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js +81 -24
  206. package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js.map +1 -1
  207. package/build/dist/Server/Services/AlertFeedService.js +17 -5
  208. package/build/dist/Server/Services/AlertFeedService.js.map +1 -1
  209. package/build/dist/Server/Services/AlertGroupingEngineService.js +44 -28
  210. package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
  211. package/build/dist/Server/Services/AlertService.js +72 -20
  212. package/build/dist/Server/Services/AlertService.js.map +1 -1
  213. package/build/dist/Server/Services/AlertStateTimelineService.js +36 -13
  214. package/build/dist/Server/Services/AlertStateTimelineService.js.map +1 -1
  215. package/build/dist/Server/Services/AnalyticsDatabaseService.js +52 -28
  216. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  217. package/build/dist/Server/Services/BillingInvoiceService.js +7 -2
  218. package/build/dist/Server/Services/BillingInvoiceService.js.map +1 -1
  219. package/build/dist/Server/Services/BillingService.js +8 -8
  220. package/build/dist/Server/Services/BillingService.js.map +1 -1
  221. package/build/dist/Server/Services/DashboardDomainService.js +49 -27
  222. package/build/dist/Server/Services/DashboardDomainService.js.map +1 -1
  223. package/build/dist/Server/Services/DashboardService.js +11 -4
  224. package/build/dist/Server/Services/DashboardService.js.map +1 -1
  225. package/build/dist/Server/Services/DatabaseService.js +32 -12
  226. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  227. package/build/dist/Server/Services/IncidentEpisodeFeedService.js +17 -5
  228. package/build/dist/Server/Services/IncidentEpisodeFeedService.js.map +1 -1
  229. package/build/dist/Server/Services/IncidentEpisodeService.js +40 -10
  230. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
  231. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js +81 -24
  232. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js.map +1 -1
  233. package/build/dist/Server/Services/IncidentFeedService.js +34 -10
  234. package/build/dist/Server/Services/IncidentFeedService.js.map +1 -1
  235. package/build/dist/Server/Services/IncidentGroupingEngineService.js +43 -29
  236. package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
  237. package/build/dist/Server/Services/IncidentService.js +116 -28
  238. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  239. package/build/dist/Server/Services/IncidentSlaRuleService.js +19 -11
  240. package/build/dist/Server/Services/IncidentSlaRuleService.js.map +1 -1
  241. package/build/dist/Server/Services/IncidentSlaService.js +21 -14
  242. package/build/dist/Server/Services/IncidentSlaService.js.map +1 -1
  243. package/build/dist/Server/Services/IncidentStateTimelineService.js +130 -37
  244. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  245. package/build/dist/Server/Services/KubernetesClusterService.js +51 -14
  246. package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
  247. package/build/dist/Server/Services/LabelService.js +10 -1
  248. package/build/dist/Server/Services/LabelService.js.map +1 -1
  249. package/build/dist/Server/Services/MonitorFeedService.js +34 -10
  250. package/build/dist/Server/Services/MonitorFeedService.js.map +1 -1
  251. package/build/dist/Server/Services/MonitorProbeService.js +23 -3
  252. package/build/dist/Server/Services/MonitorProbeService.js.map +1 -1
  253. package/build/dist/Server/Services/MonitorService.js +42 -11
  254. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  255. package/build/dist/Server/Services/MonitorStatusTimelineService.js +69 -21
  256. package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
  257. package/build/dist/Server/Services/NotificationService.js +4 -3
  258. package/build/dist/Server/Services/NotificationService.js.map +1 -1
  259. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +49 -12
  260. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
  261. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleUserService.js +9 -3
  262. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleUserService.js.map +1 -1
  263. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +26 -11
  264. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
  265. package/build/dist/Server/Services/OnCallDutyPolicyFeedService.js +34 -10
  266. package/build/dist/Server/Services/OnCallDutyPolicyFeedService.js.map +1 -1
  267. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +94 -37
  268. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  269. package/build/dist/Server/Services/OnCallDutyPolicyService.js +1 -1
  270. package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
  271. package/build/dist/Server/Services/OpenTelemetryIngestService.js +45 -17
  272. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  273. package/build/dist/Server/Services/ProbeService.js +13 -7
  274. package/build/dist/Server/Services/ProbeService.js.map +1 -1
  275. package/build/dist/Server/Services/ProjectService.js +41 -21
  276. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  277. package/build/dist/Server/Services/ScheduledMaintenanceFeedService.js +17 -5
  278. package/build/dist/Server/Services/ScheduledMaintenanceFeedService.js.map +1 -1
  279. package/build/dist/Server/Services/ScheduledMaintenanceService.js +71 -24
  280. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  281. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +72 -24
  282. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
  283. package/build/dist/Server/Services/StatusPageDomainService.js +55 -29
  284. package/build/dist/Server/Services/StatusPageDomainService.js.map +1 -1
  285. package/build/dist/Server/Services/StatusPageService.js +29 -9
  286. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  287. package/build/dist/Server/Services/StatusPageSubscriberService.js +393 -130
  288. package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
  289. package/build/dist/Server/Services/TeamMemberService.js +10 -2
  290. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  291. package/build/dist/Server/Services/TelemetryAttributeService.js +83 -6
  292. package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
  293. package/build/dist/Server/Services/UserNotificationRuleService.js +10 -2
  294. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  295. package/build/dist/Server/Services/UserService.js +8 -3
  296. package/build/dist/Server/Services/UserService.js.map +1 -1
  297. package/build/dist/Server/Services/UserWhatsAppService.js +10 -2
  298. package/build/dist/Server/Services/UserWhatsAppService.js.map +1 -1
  299. package/build/dist/Server/Services/WorkflowService.js +7 -2
  300. package/build/dist/Server/Services/WorkflowService.js.map +1 -1
  301. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +367 -180
  302. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  303. package/build/dist/Server/Types/Domain.js +12 -6
  304. package/build/dist/Server/Types/Domain.js.map +1 -1
  305. package/build/dist/Server/Types/Workflow/Components/API/Post.js +11 -7
  306. package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
  307. package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js +11 -4
  308. package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js.map +1 -1
  309. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +7 -0
  310. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  311. package/build/dist/Server/Utils/CodeRepository/CodeRepository.js +45 -17
  312. package/build/dist/Server/Utils/CodeRepository/CodeRepository.js.map +1 -1
  313. package/build/dist/Server/Utils/Express.js.map +1 -1
  314. package/build/dist/Server/Utils/Greenlock/Greenlock.js +36 -29
  315. package/build/dist/Server/Utils/Greenlock/Greenlock.js.map +1 -1
  316. package/build/dist/Server/Utils/LLM/LLMService.js +18 -6
  317. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  318. package/build/dist/Server/Utils/Logger.js +61 -13
  319. package/build/dist/Server/Utils/Logger.js.map +1 -1
  320. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +23 -20
  321. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  322. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +13 -4
  323. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  324. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +25 -22
  325. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  326. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js +6 -3
  327. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js.map +1 -1
  328. package/build/dist/Server/Utils/Profiling.js +9 -6
  329. package/build/dist/Server/Utils/Profiling.js.map +1 -1
  330. package/build/dist/Server/Utils/Realtime.js +50 -34
  331. package/build/dist/Server/Utils/Realtime.js.map +1 -1
  332. package/build/dist/Server/Utils/Response.js +2 -2
  333. package/build/dist/Server/Utils/Response.js.map +1 -1
  334. package/build/dist/Server/Utils/StartServer.js +23 -11
  335. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  336. package/build/dist/Server/Utils/Telemetry/SpanUtil.js +52 -0
  337. package/build/dist/Server/Utils/Telemetry/SpanUtil.js.map +1 -0
  338. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js +58 -15
  339. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js.map +1 -1
  340. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js +58 -15
  341. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js.map +1 -1
  342. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js +19 -5
  343. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js.map +1 -1
  344. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js +90 -26
  345. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js.map +1 -1
  346. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Monitor.js +12 -3
  347. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Monitor.js.map +1 -1
  348. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/OnCallDutyPolicy.js +25 -7
  349. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/OnCallDutyPolicy.js.map +1 -1
  350. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.js +58 -19
  351. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.js.map +1 -1
  352. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +102 -29
  353. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  354. package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js +38 -9
  355. package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js.map +1 -1
  356. package/build/dist/Server/Utils/Workspace/Slack/Actions/AlertEpisode.js +34 -8
  357. package/build/dist/Server/Utils/Workspace/Slack/Actions/AlertEpisode.js.map +1 -1
  358. package/build/dist/Server/Utils/Workspace/Slack/Actions/Auth.js +3 -1
  359. package/build/dist/Server/Utils/Workspace/Slack/Actions/Auth.js.map +1 -1
  360. package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js +55 -13
  361. package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js.map +1 -1
  362. package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js +5 -1
  363. package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js.map +1 -1
  364. package/build/dist/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.js +91 -26
  365. package/build/dist/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.js.map +1 -1
  366. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +355 -270
  367. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  368. package/build/dist/Server/Utils/Workspace/Workspace.js +21 -12
  369. package/build/dist/Server/Utils/Workspace/Workspace.js.map +1 -1
  370. package/build/dist/Server/Utils/Workspace/WorkspaceBase.js +3 -1
  371. package/build/dist/Server/Utils/Workspace/WorkspaceBase.js.map +1 -1
  372. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Alert.js +9 -2
  373. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Alert.js.map +1 -1
  374. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js +1 -1
  375. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js.map +1 -1
  376. package/build/dist/Tests/Server/Services/AnalyticsDatabaseService.test.js +12 -6
  377. package/build/dist/Tests/Server/Services/AnalyticsDatabaseService.test.js.map +1 -1
  378. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js +31 -30
  379. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js.map +1 -1
  380. package/build/dist/UI/Components/Charts/Area/AreaChart.js +20 -2
  381. package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
  382. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +2 -2
  383. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  384. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +9 -2
  385. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
  386. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +9 -2
  387. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  388. package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedExemplarPoint.js +2 -0
  389. package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedExemplarPoint.js.map +1 -0
  390. package/build/dist/UI/Components/Charts/Line/LineChart.js +20 -2
  391. package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
  392. package/build/dist/UI/Components/Charts/Types/ExemplarPoint.js +2 -0
  393. package/build/dist/UI/Components/Charts/Types/ExemplarPoint.js.map +1 -0
  394. package/build/dist/UI/Components/Dictionary/Dictionary.js +9 -1
  395. package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
  396. package/build/dist/UI/Components/Filters/FiltersForm.js +1 -1
  397. package/build/dist/UI/Components/Filters/FiltersForm.js.map +1 -1
  398. package/build/dist/UI/Components/Filters/JSONFilter.js +1 -1
  399. package/build/dist/UI/Components/Filters/JSONFilter.js.map +1 -1
  400. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +3 -3
  401. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +9 -5
  402. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  403. package/build/dist/UI/Components/Navbar/NavBar.js +9 -1
  404. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  405. package/package.json +1 -1
@@ -15,7 +15,7 @@ import AlertEpisode from "../../Models/DatabaseModels/AlertEpisode";
15
15
  import AlertEpisodeStateTimeline from "../../Models/DatabaseModels/AlertEpisodeStateTimeline";
16
16
  import { IsBillingEnabled } from "../EnvironmentConfig";
17
17
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
18
- import logger from "../Utils/Logger";
18
+ import logger, { LogAttributes } from "../Utils/Logger";
19
19
  import AlertEpisodeFeedService from "./AlertEpisodeFeedService";
20
20
  import { AlertEpisodeFeedEventType } from "../../Models/DatabaseModels/AlertEpisodeFeed";
21
21
  import Semaphore, { SemaphoreMutex } from "../Infrastructure/Semaphore";
@@ -50,7 +50,10 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
50
50
  namespace: "AlertEpisodeStateTimeline.create",
51
51
  });
52
52
  } catch (err) {
53
- logger.error(err);
53
+ logger.error(err, {
54
+ projectId: createBy.data.projectId?.toString(),
55
+ alertEpisodeId: createBy.data.alertEpisodeId?.toString(),
56
+ } as LogAttributes);
54
57
  }
55
58
 
56
59
  if (
@@ -109,8 +112,14 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
109
112
  },
110
113
  });
111
114
 
112
- logger.debug("State Before this");
113
- logger.debug(stateBeforeThis);
115
+ logger.debug("State Before this", {
116
+ projectId: createBy.data.projectId?.toString(),
117
+ alertEpisodeId: createBy.data.alertEpisodeId?.toString(),
118
+ } as LogAttributes);
119
+ logger.debug(stateBeforeThis, {
120
+ projectId: createBy.data.projectId?.toString(),
121
+ alertEpisodeId: createBy.data.alertEpisodeId?.toString(),
122
+ } as LogAttributes);
114
123
 
115
124
  // If this is the first state, then do not notify the owner.
116
125
  if (!stateBeforeThis) {
@@ -164,8 +173,14 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
164
173
  }
165
174
  }
166
175
 
167
- logger.debug("State After this");
168
- logger.debug(stateAfterThis);
176
+ logger.debug("State After this", {
177
+ projectId: createBy.data.projectId?.toString(),
178
+ alertEpisodeId: createBy.data.alertEpisodeId?.toString(),
179
+ } as LogAttributes);
180
+ logger.debug(stateAfterThis, {
181
+ projectId: createBy.data.projectId?.toString(),
182
+ alertEpisodeId: createBy.data.alertEpisodeId?.toString(),
183
+ } as LogAttributes);
169
184
 
170
185
  return {
171
186
  createBy,
@@ -181,7 +196,10 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
181
196
  try {
182
197
  await Semaphore.release(mutex);
183
198
  } catch (err) {
184
- logger.error(err);
199
+ logger.error(err, {
200
+ projectId: createBy.data.projectId?.toString(),
201
+ alertEpisodeId: createBy.data.alertEpisodeId?.toString(),
202
+ } as LogAttributes);
185
203
  }
186
204
  }
187
205
 
@@ -204,19 +222,40 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
204
222
  throw new BadDataException("alertStateId is null");
205
223
  }
206
224
 
207
- logger.debug("Status Timeline Before this");
208
- logger.debug(onCreate.carryForward.statusTimelineBeforeThisStatus);
209
-
210
- logger.debug("Status Timeline After this");
211
- logger.debug(onCreate.carryForward.statusTimelineAfterThisStatus);
212
-
213
- logger.debug("Created Item");
214
- logger.debug(createdItem);
225
+ logger.debug("Status Timeline Before this", {
226
+ projectId: createdItem.projectId?.toString(),
227
+ alertEpisodeId: createdItem.alertEpisodeId?.toString(),
228
+ } as LogAttributes);
229
+ logger.debug(onCreate.carryForward.statusTimelineBeforeThisStatus, {
230
+ projectId: createdItem.projectId?.toString(),
231
+ alertEpisodeId: createdItem.alertEpisodeId?.toString(),
232
+ } as LogAttributes);
233
+
234
+ logger.debug("Status Timeline After this", {
235
+ projectId: createdItem.projectId?.toString(),
236
+ alertEpisodeId: createdItem.alertEpisodeId?.toString(),
237
+ } as LogAttributes);
238
+ logger.debug(onCreate.carryForward.statusTimelineAfterThisStatus, {
239
+ projectId: createdItem.projectId?.toString(),
240
+ alertEpisodeId: createdItem.alertEpisodeId?.toString(),
241
+ } as LogAttributes);
242
+
243
+ logger.debug("Created Item", {
244
+ projectId: createdItem.projectId?.toString(),
245
+ alertEpisodeId: createdItem.alertEpisodeId?.toString(),
246
+ } as LogAttributes);
247
+ logger.debug(createdItem, {
248
+ projectId: createdItem.projectId?.toString(),
249
+ alertEpisodeId: createdItem.alertEpisodeId?.toString(),
250
+ } as LogAttributes);
215
251
 
216
252
  // Handle timeline updates
217
253
  if (!onCreate.carryForward.statusTimelineBeforeThisStatus) {
218
254
  // This is the first status, no need to update previous status.
219
- logger.debug("This is the first status.");
255
+ logger.debug("This is the first status.", {
256
+ projectId: createdItem.projectId?.toString(),
257
+ alertEpisodeId: createdItem.alertEpisodeId?.toString(),
258
+ } as LogAttributes);
220
259
  } else if (!onCreate.carryForward.statusTimelineAfterThisStatus) {
221
260
  // This is the last status. Update the previous status to end at the start of this status.
222
261
  await this.updateOneById({
@@ -228,7 +267,10 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
228
267
  isRoot: true,
229
268
  },
230
269
  });
231
- logger.debug("This is the last status.");
270
+ logger.debug("This is the last status.", {
271
+ projectId: createdItem.projectId?.toString(),
272
+ alertEpisodeId: createdItem.alertEpisodeId?.toString(),
273
+ } as LogAttributes);
232
274
  } else {
233
275
  // This is in the middle. Update the previous status to end at the start of this status.
234
276
  await this.updateOneById({
@@ -251,7 +293,10 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
251
293
  isRoot: true,
252
294
  },
253
295
  });
254
- logger.debug("This status is in the middle.");
296
+ logger.debug("This status is in the middle.", {
297
+ projectId: createdItem.projectId?.toString(),
298
+ alertEpisodeId: createdItem.alertEpisodeId?.toString(),
299
+ } as LogAttributes);
255
300
  }
256
301
 
257
302
  // Update episode's current state if this is the latest timeline entry
@@ -305,6 +350,10 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
305
350
  } catch (error) {
306
351
  logger.error(
307
352
  `Failed to cascade state change to member alerts: ${error}`,
353
+ {
354
+ projectId: createdItem.projectId?.toString(),
355
+ alertEpisodeId: createdItem.alertEpisodeId?.toString(),
356
+ } as LogAttributes,
308
357
  );
309
358
  }
310
359
  }
@@ -314,7 +363,10 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
314
363
  try {
315
364
  await Semaphore.release(mutex);
316
365
  } catch (err) {
317
- logger.error(err);
366
+ logger.error(err, {
367
+ projectId: createdItem.projectId?.toString(),
368
+ alertEpisodeId: createdItem.alertEpisodeId?.toString(),
369
+ } as LogAttributes);
318
370
  }
319
371
  }
320
372
 
@@ -471,7 +523,9 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
471
523
 
472
524
  if (!stateBeforeThis) {
473
525
  // This is the first state, no need to update previous state.
474
- logger.debug("This is the first state.");
526
+ logger.debug("This is the first state.", {
527
+ alertEpisodeId: episodeId?.toString(),
528
+ } as LogAttributes);
475
529
  } else if (!stateAfterThis) {
476
530
  // This is the last state. Update the previous state to end at the end of this state.
477
531
  await this.updateOneById({
@@ -483,7 +537,9 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
483
537
  isRoot: true,
484
538
  },
485
539
  });
486
- logger.debug("This is the last state.");
540
+ logger.debug("This is the last state.", {
541
+ alertEpisodeId: episodeId?.toString(),
542
+ } as LogAttributes);
487
543
  } else {
488
544
  // This state is in the middle. Update the previous state to end at the start of the next state.
489
545
  await this.updateOneById({
@@ -506,7 +562,9 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
506
562
  isRoot: true,
507
563
  },
508
564
  });
509
- logger.debug("This state is in the middle.");
565
+ logger.debug("This state is in the middle.", {
566
+ alertEpisodeId: episodeId?.toString(),
567
+ } as LogAttributes);
510
568
  }
511
569
  }
512
570
 
@@ -4,7 +4,7 @@ import OneUptimeDate from "../../Types/Date";
4
4
  import BadDataException from "../../Types/Exception/BadDataException";
5
5
  import ObjectID from "../../Types/ObjectID";
6
6
  import { IsBillingEnabled } from "../EnvironmentConfig";
7
- import logger from "../Utils/Logger";
7
+ import logger, { LogAttributes } from "../Utils/Logger";
8
8
  import DatabaseService from "./DatabaseService";
9
9
  import Model, {
10
10
  AlertFeedEventType,
@@ -101,14 +101,26 @@ export class Service extends DatabaseService<Model> {
101
101
  });
102
102
  }
103
103
  } catch (e) {
104
- logger.error("Error in sending notification to slack and teams");
105
- logger.error(e);
104
+ logger.error("Error in sending notification to slack and teams", {
105
+ projectId: data.projectId?.toString(),
106
+ alertId: data.alertId?.toString(),
107
+ } as LogAttributes);
108
+ logger.error(e, {
109
+ projectId: data.projectId?.toString(),
110
+ alertId: data.alertId?.toString(),
111
+ } as LogAttributes);
106
112
 
107
113
  // we dont throw this error as it is not a critical error
108
114
  }
109
115
  } catch (error) {
110
- logger.error("AlertFeedService.createAlertFeedItem");
111
- logger.error(error);
116
+ logger.error("AlertFeedService.createAlertFeedItem", {
117
+ projectId: data.projectId?.toString(),
118
+ alertId: data.alertId?.toString(),
119
+ } as LogAttributes);
120
+ logger.error(error, {
121
+ projectId: data.projectId?.toString(),
122
+ alertId: data.alertId?.toString(),
123
+ } as LogAttributes);
112
124
  // we dont want to throw the error here, as this is a non-critical operation
113
125
  }
114
126
  }
@@ -12,7 +12,7 @@ import Monitor from "../../Models/DatabaseModels/Monitor";
12
12
  import AlertSeverity from "../../Models/DatabaseModels/AlertSeverity";
13
13
  import ServiceMonitor from "../../Models/DatabaseModels/ServiceMonitor";
14
14
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
15
- import logger from "../Utils/Logger";
15
+ import logger, { LogAttributes } from "../Utils/Logger";
16
16
  import SortOrder from "../../Types/BaseDatabase/SortOrder";
17
17
  import OneUptimeDate from "../../Types/Date";
18
18
  import QueryHelper from "../Types/Database/QueryHelper";
@@ -38,11 +38,15 @@ export interface GroupingResult {
38
38
  class AlertGroupingEngineServiceClass {
39
39
  @CaptureSpan()
40
40
  public async processAlert(alert: Alert): Promise<GroupingResult> {
41
- logger.debug(`Processing alert ${alert.id} for grouping`);
41
+ logger.debug(`Processing alert ${alert.id} for grouping`, {
42
+ projectId: alert.projectId?.toString(),
43
+ } as LogAttributes);
42
44
 
43
45
  try {
44
46
  if (!alert.id || !alert.projectId) {
45
- logger.warn("Alert missing id or projectId, skipping grouping");
47
+ logger.warn("Alert missing id or projectId, skipping grouping", {
48
+ projectId: alert.projectId?.toString(),
49
+ } as LogAttributes);
46
50
  return { grouped: false };
47
51
  }
48
52
 
@@ -124,12 +128,14 @@ class AlertGroupingEngineServiceClass {
124
128
  if (rules.length === 0) {
125
129
  logger.debug(
126
130
  `No enabled grouping rules found for project ${alert.projectId}`,
131
+ { projectId: alert.projectId?.toString() } as LogAttributes,
127
132
  );
128
133
  return { grouped: false };
129
134
  }
130
135
 
131
136
  logger.debug(
132
137
  `Found ${rules.length} enabled grouping rules for project ${alert.projectId}`,
138
+ { projectId: alert.projectId?.toString() } as LogAttributes,
133
139
  );
134
140
 
135
141
  // Find first matching rule
@@ -139,6 +145,7 @@ class AlertGroupingEngineServiceClass {
139
145
  if (matches) {
140
146
  logger.debug(
141
147
  `Alert ${alert.id} matches rule ${rule.name || rule.id}`,
148
+ { projectId: alert.projectId?.toString() } as LogAttributes,
142
149
  );
143
150
 
144
151
  // Try to find existing episode or create new one
@@ -150,10 +157,14 @@ class AlertGroupingEngineServiceClass {
150
157
  }
151
158
  }
152
159
 
153
- logger.debug(`Alert ${alert.id} did not match any grouping rules`);
160
+ logger.debug(`Alert ${alert.id} did not match any grouping rules`, {
161
+ projectId: alert.projectId?.toString(),
162
+ } as LogAttributes);
154
163
  return { grouped: false };
155
164
  } catch (error) {
156
- logger.error(`Error processing alert for grouping: ${error}`);
165
+ logger.error(`Error processing alert for grouping: ${error}`, {
166
+ projectId: alert.projectId?.toString(),
167
+ } as LogAttributes);
157
168
  return { grouped: false };
158
169
  }
159
170
  }
@@ -165,6 +176,7 @@ class AlertGroupingEngineServiceClass {
165
176
  ): Promise<boolean> {
166
177
  logger.debug(
167
178
  `Checking if alert ${alert.id} matches rule ${rule.name || rule.id}`,
179
+ { projectId: alert.projectId?.toString() } as LogAttributes,
168
180
  );
169
181
 
170
182
  // Check monitor IDs - if monitors are specified, alert must be from one of them
@@ -286,6 +298,7 @@ class AlertGroupingEngineServiceClass {
286
298
  } catch {
287
299
  logger.warn(
288
300
  `Invalid regex pattern in rule ${rule.id}: ${rule.monitorNamePattern}`,
301
+ { projectId: alert.projectId?.toString() } as LogAttributes,
289
302
  );
290
303
  return false;
291
304
  }
@@ -304,6 +317,7 @@ class AlertGroupingEngineServiceClass {
304
317
  } catch {
305
318
  logger.warn(
306
319
  `Invalid regex pattern in rule ${rule.id}: ${rule.monitorDescriptionPattern}`,
320
+ { projectId: alert.projectId?.toString() } as LogAttributes,
307
321
  );
308
322
  return false;
309
323
  }
@@ -323,6 +337,7 @@ class AlertGroupingEngineServiceClass {
323
337
  } catch {
324
338
  logger.warn(
325
339
  `Invalid regex pattern in rule ${rule.id}: ${rule.alertTitlePattern}`,
340
+ { projectId: alert.projectId?.toString() } as LogAttributes,
326
341
  );
327
342
  return false;
328
343
  }
@@ -341,6 +356,7 @@ class AlertGroupingEngineServiceClass {
341
356
  } catch {
342
357
  logger.warn(
343
358
  `Invalid regex pattern in rule ${rule.id}: ${rule.alertDescriptionPattern}`,
359
+ { projectId: alert.projectId?.toString() } as LogAttributes,
344
360
  );
345
361
  return false;
346
362
  }
@@ -349,6 +365,7 @@ class AlertGroupingEngineServiceClass {
349
365
  // If no criteria specified (all fields empty), rule matches all alerts
350
366
  logger.debug(
351
367
  `Rule ${rule.name || rule.id} matched alert ${alert.id} (all criteria passed)`,
368
+ { projectId: alert.projectId?.toString() } as LogAttributes,
352
369
  );
353
370
  return true;
354
371
  }
@@ -373,6 +390,7 @@ class AlertGroupingEngineServiceClass {
373
390
  */
374
391
  logger.debug(
375
392
  `Acquiring mutex for grouping key: ${mutexKey} for alert ${alert.id}`,
393
+ { projectId: alert.projectId?.toString() } as LogAttributes,
376
394
  );
377
395
  mutex = await Semaphore.lock({
378
396
  key: mutexKey,
@@ -382,6 +400,7 @@ class AlertGroupingEngineServiceClass {
382
400
  });
383
401
  logger.debug(
384
402
  `Acquired mutex for grouping key: ${mutexKey} for alert ${alert.id}`,
403
+ { projectId: alert.projectId?.toString() } as LogAttributes,
385
404
  );
386
405
 
387
406
  // Calculate time window cutoff (only if time window is enabled)
@@ -496,14 +515,17 @@ class AlertGroupingEngineServiceClass {
496
515
  try {
497
516
  logger.debug(
498
517
  `Releasing mutex for grouping key: ${mutexKey} for alert ${alert.id}`,
518
+ { projectId: alert.projectId?.toString() } as LogAttributes,
499
519
  );
500
520
  await Semaphore.release(mutex);
501
521
  logger.debug(
502
522
  `Released mutex for grouping key: ${mutexKey} for alert ${alert.id}`,
523
+ { projectId: alert.projectId?.toString() } as LogAttributes,
503
524
  );
504
525
  } catch (err) {
505
526
  logger.error(
506
527
  `Error releasing mutex for grouping key: ${mutexKey}: ${err}`,
528
+ { projectId: alert.projectId?.toString() } as LogAttributes,
507
529
  );
508
530
  }
509
531
  }
@@ -747,6 +769,7 @@ class AlertGroupingEngineServiceClass {
747
769
  } catch (ownerError) {
748
770
  logger.error(
749
771
  `Error adding owner user ${user.id} to episode: ${ownerError}`,
772
+ { projectId: alert.projectId?.toString() } as LogAttributes,
750
773
  );
751
774
  }
752
775
  }
@@ -777,6 +800,7 @@ class AlertGroupingEngineServiceClass {
777
800
  } catch (ownerError) {
778
801
  logger.error(
779
802
  `Error adding owner team ${team.id} to episode: ${ownerError}`,
803
+ { projectId: alert.projectId?.toString() } as LogAttributes,
780
804
  );
781
805
  }
782
806
  }
@@ -824,13 +848,16 @@ class AlertGroupingEngineServiceClass {
824
848
  } catch (feedError) {
825
849
  logger.error(
826
850
  `Error creating episode feed for episode creation: ${feedError}`,
851
+ { projectId: alert.projectId?.toString() } as LogAttributes,
827
852
  );
828
853
  }
829
854
  }
830
855
 
831
856
  return createdEpisode;
832
857
  } catch (error) {
833
- logger.error(`Error creating new episode: ${error}`);
858
+ logger.error(`Error creating new episode: ${error}`, {
859
+ projectId: alert.projectId?.toString(),
860
+ } as LogAttributes);
834
861
  return null;
835
862
  }
836
863
  }
@@ -989,7 +1016,9 @@ class AlertGroupingEngineServiceClass {
989
1016
  error instanceof Error &&
990
1017
  error.message.includes("already a member")
991
1018
  ) {
992
- logger.debug(`Alert ${alert.id} is already in episode ${episodeId}`);
1019
+ logger.debug(`Alert ${alert.id} is already in episode ${episodeId}`, {
1020
+ projectId: alert.projectId?.toString(),
1021
+ } as LogAttributes);
993
1022
  return;
994
1023
  }
995
1024
  throw error;
@@ -28,7 +28,7 @@ import AlertState from "../../Models/DatabaseModels/AlertState";
28
28
  import AlertStateTimeline from "../../Models/DatabaseModels/AlertStateTimeline";
29
29
  import User from "../../Models/DatabaseModels/User";
30
30
  import { IsBillingEnabled } from "../EnvironmentConfig";
31
- import logger from "../Utils/Logger";
31
+ import logger, { LogAttributes } from "../Utils/Logger";
32
32
  import TelemetryUtil from "../Utils/Telemetry/Telemetry";
33
33
  import MetricService from "./MetricService";
34
34
  import GlobalConfigService from "./GlobalConfigService";
@@ -261,6 +261,10 @@ export class Service extends DatabaseService<Model> {
261
261
  } catch (error) {
262
262
  logger.error(
263
263
  `Workspace operations failed in AlertService.onCreateSuccess: ${error}`,
264
+ {
265
+ projectId: createdItem.projectId?.toString(),
266
+ alertId: createdItem.id?.toString(),
267
+ } as LogAttributes,
264
268
  );
265
269
  return Promise.resolve();
266
270
  }
@@ -273,6 +277,10 @@ export class Service extends DatabaseService<Model> {
273
277
  } catch (error) {
274
278
  logger.error(
275
279
  `Create alert feed failed in AlertService.onCreateSuccess: ${error}`,
280
+ {
281
+ projectId: createdItem.projectId?.toString(),
282
+ alertId: createdItem.id?.toString(),
283
+ } as LogAttributes,
276
284
  );
277
285
  return Promise.resolve(); // Continue chain even on error
278
286
  }
@@ -283,6 +291,10 @@ export class Service extends DatabaseService<Model> {
283
291
  } catch (error) {
284
292
  logger.error(
285
293
  `Handle alert state change failed in AlertService.onCreateSuccess: ${error}`,
294
+ {
295
+ projectId: createdItem.projectId?.toString(),
296
+ alertId: createdItem.id?.toString(),
297
+ } as LogAttributes,
286
298
  );
287
299
  return Promise.resolve(); // Continue chain even on error
288
300
  }
@@ -311,6 +323,10 @@ export class Service extends DatabaseService<Model> {
311
323
  } catch (error) {
312
324
  logger.error(
313
325
  `Add owners failed in AlertService.onCreateSuccess: ${error}`,
326
+ {
327
+ projectId: createdItem.projectId?.toString(),
328
+ alertId: createdItem.id?.toString(),
329
+ } as LogAttributes,
314
330
  );
315
331
  return Promise.resolve(); // Continue chain even on error
316
332
  }
@@ -325,6 +341,10 @@ export class Service extends DatabaseService<Model> {
325
341
  } catch (error) {
326
342
  logger.error(
327
343
  `On-call duty policy execution failed in AlertService.onCreateSuccess: ${error}`,
344
+ {
345
+ projectId: createdItem.projectId?.toString(),
346
+ alertId: createdItem.id?.toString(),
347
+ } as LogAttributes,
328
348
  );
329
349
  return Promise.resolve();
330
350
  }
@@ -338,6 +358,10 @@ export class Service extends DatabaseService<Model> {
338
358
  } catch (error) {
339
359
  logger.error(
340
360
  `Alert grouping failed in AlertService.onCreateSuccess: ${error}`,
361
+ {
362
+ projectId: createdItem.projectId?.toString(),
363
+ alertId: createdItem.id?.toString(),
364
+ } as LogAttributes,
341
365
  );
342
366
  return Promise.resolve();
343
367
  }
@@ -345,6 +369,10 @@ export class Service extends DatabaseService<Model> {
345
369
  .catch((error: Error) => {
346
370
  logger.error(
347
371
  `Critical error in AlertService sequential operations: ${error}`,
372
+ {
373
+ projectId: createdItem.projectId?.toString(),
374
+ alertId: createdItem.id?.toString(),
375
+ } as LogAttributes,
348
376
  );
349
377
  });
350
378
 
@@ -375,8 +403,14 @@ export class Service extends DatabaseService<Model> {
375
403
  : {}),
376
404
  });
377
405
 
378
- logger.debug("Alert created. Workspace result:");
379
- logger.debug(workspaceResult);
406
+ logger.debug("Alert created. Workspace result:", {
407
+ projectId: createdItem.projectId?.toString(),
408
+ alertId: createdItem.id?.toString(),
409
+ } as LogAttributes);
410
+ logger.debug(workspaceResult, {
411
+ projectId: createdItem.projectId?.toString(),
412
+ alertId: createdItem.id?.toString(),
413
+ } as LogAttributes);
380
414
 
381
415
  if (workspaceResult && workspaceResult.channelsCreated?.length > 0) {
382
416
  // update alert with these channels.
@@ -392,7 +426,10 @@ export class Service extends DatabaseService<Model> {
392
426
  });
393
427
  }
394
428
  } catch (error) {
395
- logger.error(`Error in handleAlertWorkspaceOperationsAsync: ${error}`);
429
+ logger.error(`Error in handleAlertWorkspaceOperationsAsync: ${error}`, {
430
+ projectId: createdItem.projectId?.toString(),
431
+ alertId: createdItem.id?.toString(),
432
+ } as LogAttributes);
396
433
  throw error;
397
434
  }
398
435
  }
@@ -506,7 +543,9 @@ ${alert.remediationNotes || "No remediation notes provided."}
506
543
  },
507
544
  });
508
545
  } catch (error) {
509
- logger.error(`Error in createAlertFeedAsync: ${error}`);
546
+ logger.error(`Error in createAlertFeedAsync: ${error}`, {
547
+ alertId: alertId?.toString(),
548
+ } as LogAttributes);
510
549
  throw error;
511
550
  }
512
551
  }
@@ -532,7 +571,10 @@ ${alert.remediationNotes || "No remediation notes provided."}
532
571
  },
533
572
  });
534
573
  } catch (error) {
535
- logger.error(`Error in handleAlertStateChangeAsync: ${error}`);
574
+ logger.error(`Error in handleAlertStateChangeAsync: ${error}`, {
575
+ projectId: createdItem.projectId?.toString(),
576
+ alertId: createdItem.id?.toString(),
577
+ } as LogAttributes);
536
578
  throw error;
537
579
  }
538
580
  }
@@ -562,7 +604,10 @@ ${alert.remediationNotes || "No remediation notes provided."}
562
604
  await Promise.allSettled(policyPromises);
563
605
  }
564
606
  } catch (error) {
565
- logger.error(`Error in executeAlertOnCallDutyPoliciesAsync: ${error}`);
607
+ logger.error(`Error in executeAlertOnCallDutyPoliciesAsync: ${error}`, {
608
+ projectId: createdItem.projectId?.toString(),
609
+ alertId: createdItem.id?.toString(),
610
+ } as LogAttributes);
566
611
  throw error;
567
612
  }
568
613
  }
@@ -1385,7 +1430,10 @@ ${alertSeverity.name}
1385
1430
  metricNameServiceNameMap: metricTypesMap,
1386
1431
  projectId: alert.projectId,
1387
1432
  }).catch((err: Error) => {
1388
- logger.error(err);
1433
+ logger.error(err, {
1434
+ projectId: alert.projectId?.toString(),
1435
+ alertId: alert.id?.toString(),
1436
+ } as LogAttributes);
1389
1437
  });
1390
1438
  }
1391
1439
 
@@ -1562,6 +1610,10 @@ ${alertSeverity.name}
1562
1610
  });
1563
1611
  logger.info(
1564
1612
  `Updated Alert ${alert.id} current state to ${latestTimeline.alertStateId}`,
1613
+ {
1614
+ projectId: alert.projectId?.toString(),
1615
+ alertId: alert.id?.toString(),
1616
+ } as LogAttributes,
1565
1617
  );
1566
1618
  }
1567
1619
  }
@@ -18,7 +18,7 @@ import { JSONObject } from "../../Types/JSON";
18
18
  import AlertInternalNote from "../../Models/DatabaseModels/AlertInternalNote";
19
19
  import AlertInternalNoteService from "./AlertInternalNoteService";
20
20
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
21
- import logger from "../Utils/Logger";
21
+ import logger, { LogAttributes } from "../Utils/Logger";
22
22
  import AlertFeedService from "./AlertFeedService";
23
23
  import { AlertFeedEventType } from "../../Models/DatabaseModels/AlertFeed";
24
24
  import WorkspaceNotificationRuleService from "./WorkspaceNotificationRuleService";
@@ -78,7 +78,10 @@ export class Service extends DatabaseService<AlertStateTimeline> {
78
78
  namespace: "AlertStateTimeline.create",
79
79
  });
80
80
  } catch (err) {
81
- logger.error(err);
81
+ logger.error(err, {
82
+ projectId: createBy.data.projectId?.toString(),
83
+ alertId: createBy.data.alertId?.toString(),
84
+ } as LogAttributes);
82
85
  }
83
86
 
84
87
  if (
@@ -267,7 +270,10 @@ export class Service extends DatabaseService<AlertStateTimeline> {
267
270
  try {
268
271
  await Semaphore.release(mutex);
269
272
  } catch (err) {
270
- logger.error(err);
273
+ logger.error(err, {
274
+ projectId: createBy.data.projectId?.toString(),
275
+ alertId: createBy.data.alertId?.toString(),
276
+ } as LogAttributes);
271
277
  }
272
278
  }
273
279
 
@@ -365,7 +371,10 @@ export class Service extends DatabaseService<AlertStateTimeline> {
365
371
  try {
366
372
  await Semaphore.release(mutex);
367
373
  } catch (err) {
368
- logger.error(err);
374
+ logger.error(err, {
375
+ projectId: createdItem.projectId?.toString(),
376
+ alertId: createdItem.alertId?.toString(),
377
+ } as LogAttributes);
369
378
  }
370
379
  }
371
380
 
@@ -450,8 +459,15 @@ ${createdItem.rootCause}`,
450
459
  }).catch((error: Error) => {
451
460
  logger.error(
452
461
  "Error while refreshing alert metrics after alert state timeline creation",
462
+ {
463
+ projectId: createdItem.projectId?.toString(),
464
+ alertId: createdItem.alertId?.toString(),
465
+ } as LogAttributes,
453
466
  );
454
- logger.error(error);
467
+ logger.error(error, {
468
+ projectId: createdItem.projectId?.toString(),
469
+ alertId: createdItem.alertId?.toString(),
470
+ } as LogAttributes);
455
471
  });
456
472
 
457
473
  const isLastAlertState: boolean = await this.isLastAlertState({
@@ -475,8 +491,14 @@ ${createdItem.rootCause}`,
475
491
  ).toString()})** is resolved. Archiving channel.`,
476
492
  },
477
493
  }).catch((error: Error) => {
478
- logger.error(`Error while archiving workspace channels:`);
479
- logger.error(error);
494
+ logger.error(`Error while archiving workspace channels:`, {
495
+ projectId: createdItem.projectId?.toString(),
496
+ alertId: createdItem.alertId?.toString(),
497
+ } as LogAttributes);
498
+ logger.error(error, {
499
+ projectId: createdItem.projectId?.toString(),
500
+ alertId: createdItem.alertId?.toString(),
501
+ } as LogAttributes);
480
502
  });
481
503
  }
482
504