@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
@@ -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
  IncidentEpisodeFeedEventType,
@@ -107,12 +107,24 @@ export class Service extends DatabaseService<Model> {
107
107
  });
108
108
  }
109
109
  } catch (e) {
110
- logger.error("Error in sending notification to slack and teams");
111
- logger.error(e);
110
+ logger.error("Error in sending notification to slack and teams", {
111
+ projectId: data.projectId?.toString(),
112
+ incidentEpisodeId: data.incidentEpisodeId?.toString(),
113
+ } as LogAttributes);
114
+ logger.error(e, {
115
+ projectId: data.projectId?.toString(),
116
+ incidentEpisodeId: data.incidentEpisodeId?.toString(),
117
+ } as LogAttributes);
112
118
  }
113
119
  } catch (error) {
114
- logger.error("IncidentEpisodeFeedService.createIncidentEpisodeFeedItem");
115
- logger.error(error);
120
+ logger.error("IncidentEpisodeFeedService.createIncidentEpisodeFeedItem", {
121
+ projectId: data.projectId?.toString(),
122
+ incidentEpisodeId: data.incidentEpisodeId?.toString(),
123
+ } as LogAttributes);
124
+ logger.error(error, {
125
+ projectId: data.projectId?.toString(),
126
+ incidentEpisodeId: data.incidentEpisodeId?.toString(),
127
+ } as LogAttributes);
116
128
  // we dont want to throw the error here, as this is a non-critical operation
117
129
  }
118
130
  }
@@ -10,7 +10,7 @@ import IncidentState from "../../Models/DatabaseModels/IncidentState";
10
10
  import IncidentSeverity from "../../Models/DatabaseModels/IncidentSeverity";
11
11
  import SortOrder from "../../Types/BaseDatabase/SortOrder";
12
12
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
13
- import logger from "../Utils/Logger";
13
+ import logger, { LogAttributes } from "../Utils/Logger";
14
14
  import DatabaseCommonInteractionProps from "../../Types/BaseDatabase/DatabaseCommonInteractionProps";
15
15
  import IncidentEpisodeStateTimeline from "../../Models/DatabaseModels/IncidentEpisodeStateTimeline";
16
16
  import IncidentEpisodeStateTimelineService from "./IncidentEpisodeStateTimelineService";
@@ -157,6 +157,10 @@ export class Service extends DatabaseService<Model> {
157
157
  } catch (error) {
158
158
  logger.error(
159
159
  `Workspace operations failed in IncidentEpisodeService.onCreateSuccess: ${error}`,
160
+ {
161
+ projectId: createdItem.projectId?.toString(),
162
+ incidentEpisodeId: createdItem.id?.toString(),
163
+ } as LogAttributes,
160
164
  );
161
165
  }
162
166
  })
@@ -175,6 +179,10 @@ export class Service extends DatabaseService<Model> {
175
179
  } catch (error) {
176
180
  logger.error(
177
181
  `Handle episode state change failed in IncidentEpisodeService.onCreateSuccess: ${error}`,
182
+ {
183
+ projectId: createdItem.projectId?.toString(),
184
+ incidentEpisodeId: createdItem.id?.toString(),
185
+ } as LogAttributes,
178
186
  );
179
187
  }
180
188
  })
@@ -184,6 +192,10 @@ export class Service extends DatabaseService<Model> {
184
192
  } catch (error) {
185
193
  logger.error(
186
194
  `Create episode feed failed in IncidentEpisodeService.onCreateSuccess: ${error}`,
195
+ {
196
+ projectId: createdItem.projectId?.toString(),
197
+ incidentEpisodeId: createdItem.id?.toString(),
198
+ } as LogAttributes,
187
199
  );
188
200
  }
189
201
  })
@@ -194,12 +206,20 @@ export class Service extends DatabaseService<Model> {
194
206
  } catch (error) {
195
207
  logger.error(
196
208
  `On-call duty policy execution failed in IncidentEpisodeService.onCreateSuccess: ${error}`,
209
+ {
210
+ projectId: createdItem.projectId?.toString(),
211
+ incidentEpisodeId: createdItem.id?.toString(),
212
+ } as LogAttributes,
197
213
  );
198
214
  }
199
215
  })
200
216
  .catch((error: Error) => {
201
217
  logger.error(
202
218
  `Critical error in IncidentEpisodeService.onCreateSuccess: ${error}`,
219
+ {
220
+ projectId: createdItem.projectId?.toString(),
221
+ incidentEpisodeId: createdItem.id?.toString(),
222
+ } as LogAttributes,
203
223
  );
204
224
  });
205
225
 
@@ -246,7 +266,10 @@ export class Service extends DatabaseService<Model> {
246
266
  });
247
267
  }
248
268
  } catch (error) {
249
- logger.error(`Error in handleEpisodeWorkspaceOperationsAsync: ${error}`);
269
+ logger.error(`Error in handleEpisodeWorkspaceOperationsAsync: ${error}`, {
270
+ projectId: createdItem.projectId?.toString(),
271
+ incidentEpisodeId: createdItem.id?.toString(),
272
+ } as LogAttributes);
250
273
  throw error;
251
274
  }
252
275
  }
@@ -375,7 +398,10 @@ export class Service extends DatabaseService<Model> {
375
398
  feedInfoInMarkdown: feedInfoInMarkdown,
376
399
  });
377
400
  } catch (error) {
378
- logger.error(`Error in executeEpisodeOnCallDutyPoliciesAsync: ${error}`);
401
+ logger.error(`Error in executeEpisodeOnCallDutyPoliciesAsync: ${error}`, {
402
+ projectId: createdItem.projectId?.toString(),
403
+ incidentEpisodeId: createdItem.id?.toString(),
404
+ } as LogAttributes);
379
405
  throw error;
380
406
  }
381
407
  }
@@ -512,6 +538,11 @@ export class Service extends DatabaseService<Model> {
512
538
  } catch (error) {
513
539
  logger.error(
514
540
  `Failed to cascade state change to incident ${member.incidentId.toString()}: ${error}`,
541
+ {
542
+ projectId: projectId.toString(),
543
+ incidentEpisodeId: episodeId.toString(),
544
+ incidentId: member.incidentId.toString(),
545
+ } as LogAttributes,
515
546
  );
516
547
  }
517
548
  }
@@ -15,7 +15,7 @@ import IncidentEpisode from "../../Models/DatabaseModels/IncidentEpisode";
15
15
  import IncidentEpisodeStateTimeline from "../../Models/DatabaseModels/IncidentEpisodeStateTimeline";
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 IncidentEpisodeFeedService from "./IncidentEpisodeFeedService";
20
20
  import { IncidentEpisodeFeedEventType } from "../../Models/DatabaseModels/IncidentEpisodeFeed";
21
21
  import Semaphore, { SemaphoreMutex } from "../Infrastructure/Semaphore";
@@ -50,7 +50,10 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
50
50
  namespace: "IncidentEpisodeStateTimeline.create",
51
51
  });
52
52
  } catch (err) {
53
- logger.error(err);
53
+ logger.error(err, {
54
+ projectId: createBy.data.projectId?.toString(),
55
+ incidentEpisodeId: createBy.data.incidentEpisodeId?.toString(),
56
+ } as LogAttributes);
54
57
  }
55
58
 
56
59
  if (
@@ -109,8 +112,14 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
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
+ incidentEpisodeId: createBy.data.incidentEpisodeId?.toString(),
118
+ } as LogAttributes);
119
+ logger.debug(stateBeforeThis, {
120
+ projectId: createBy.data.projectId?.toString(),
121
+ incidentEpisodeId: createBy.data.incidentEpisodeId?.toString(),
122
+ } as LogAttributes);
114
123
 
115
124
  // If this is the first state, then do not notify the owner.
116
125
  if (!stateBeforeThis) {
@@ -170,8 +179,14 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
170
179
  }
171
180
  }
172
181
 
173
- logger.debug("State After this");
174
- logger.debug(stateAfterThis);
182
+ logger.debug("State After this", {
183
+ projectId: createBy.data.projectId?.toString(),
184
+ incidentEpisodeId: createBy.data.incidentEpisodeId?.toString(),
185
+ } as LogAttributes);
186
+ logger.debug(stateAfterThis, {
187
+ projectId: createBy.data.projectId?.toString(),
188
+ incidentEpisodeId: createBy.data.incidentEpisodeId?.toString(),
189
+ } as LogAttributes);
175
190
 
176
191
  return {
177
192
  createBy,
@@ -187,7 +202,10 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
187
202
  try {
188
203
  await Semaphore.release(mutex);
189
204
  } catch (err) {
190
- logger.error(err);
205
+ logger.error(err, {
206
+ projectId: createBy.data.projectId?.toString(),
207
+ incidentEpisodeId: createBy.data.incidentEpisodeId?.toString(),
208
+ } as LogAttributes);
191
209
  }
192
210
  }
193
211
 
@@ -210,19 +228,40 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
210
228
  throw new BadDataException("incidentStateId is null");
211
229
  }
212
230
 
213
- logger.debug("Status Timeline Before this");
214
- logger.debug(onCreate.carryForward.statusTimelineBeforeThisStatus);
215
-
216
- logger.debug("Status Timeline After this");
217
- logger.debug(onCreate.carryForward.statusTimelineAfterThisStatus);
218
-
219
- logger.debug("Created Item");
220
- logger.debug(createdItem);
231
+ logger.debug("Status Timeline Before this", {
232
+ projectId: createdItem.projectId?.toString(),
233
+ incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
234
+ } as LogAttributes);
235
+ logger.debug(onCreate.carryForward.statusTimelineBeforeThisStatus, {
236
+ projectId: createdItem.projectId?.toString(),
237
+ incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
238
+ } as LogAttributes);
239
+
240
+ logger.debug("Status Timeline After this", {
241
+ projectId: createdItem.projectId?.toString(),
242
+ incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
243
+ } as LogAttributes);
244
+ logger.debug(onCreate.carryForward.statusTimelineAfterThisStatus, {
245
+ projectId: createdItem.projectId?.toString(),
246
+ incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
247
+ } as LogAttributes);
248
+
249
+ logger.debug("Created Item", {
250
+ projectId: createdItem.projectId?.toString(),
251
+ incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
252
+ } as LogAttributes);
253
+ logger.debug(createdItem, {
254
+ projectId: createdItem.projectId?.toString(),
255
+ incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
256
+ } as LogAttributes);
221
257
 
222
258
  // Handle timeline updates
223
259
  if (!onCreate.carryForward.statusTimelineBeforeThisStatus) {
224
260
  // This is the first status, no need to update previous status.
225
- logger.debug("This is the first status.");
261
+ logger.debug("This is the first status.", {
262
+ projectId: createdItem.projectId?.toString(),
263
+ incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
264
+ } as LogAttributes);
226
265
  } else if (!onCreate.carryForward.statusTimelineAfterThisStatus) {
227
266
  // This is the last status. Update the previous status to end at the start of this status.
228
267
  await this.updateOneById({
@@ -234,7 +273,10 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
234
273
  isRoot: true,
235
274
  },
236
275
  });
237
- logger.debug("This is the last status.");
276
+ logger.debug("This is the last status.", {
277
+ projectId: createdItem.projectId?.toString(),
278
+ incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
279
+ } as LogAttributes);
238
280
  } else {
239
281
  // This is in the middle. Update the previous status to end at the start of this status.
240
282
  await this.updateOneById({
@@ -257,7 +299,10 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
257
299
  isRoot: true,
258
300
  },
259
301
  });
260
- logger.debug("This status is in the middle.");
302
+ logger.debug("This status is in the middle.", {
303
+ projectId: createdItem.projectId?.toString(),
304
+ incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
305
+ } as LogAttributes);
261
306
  }
262
307
 
263
308
  // Update episode's current state if this is the latest timeline entry
@@ -311,6 +356,10 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
311
356
  } catch (error) {
312
357
  logger.error(
313
358
  `Failed to cascade state change to member incidents: ${error}`,
359
+ {
360
+ projectId: createdItem.projectId?.toString(),
361
+ incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
362
+ } as LogAttributes,
314
363
  );
315
364
  }
316
365
  }
@@ -320,7 +369,10 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
320
369
  try {
321
370
  await Semaphore.release(mutex);
322
371
  } catch (err) {
323
- logger.error(err);
372
+ logger.error(err, {
373
+ projectId: createdItem.projectId?.toString(),
374
+ incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
375
+ } as LogAttributes);
324
376
  }
325
377
  }
326
378
 
@@ -480,7 +532,9 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
480
532
 
481
533
  if (!stateBeforeThis) {
482
534
  // This is the first state, no need to update previous state.
483
- logger.debug("This is the first state.");
535
+ logger.debug("This is the first state.", {
536
+ incidentEpisodeId: episodeId?.toString(),
537
+ } as LogAttributes);
484
538
  } else if (!stateAfterThis) {
485
539
  // This is the last state. Update the previous state to end at the end of this state.
486
540
  await this.updateOneById({
@@ -492,7 +546,9 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
492
546
  isRoot: true,
493
547
  },
494
548
  });
495
- logger.debug("This is the last state.");
549
+ logger.debug("This is the last state.", {
550
+ incidentEpisodeId: episodeId?.toString(),
551
+ } as LogAttributes);
496
552
  } else {
497
553
  // This state is in the middle. Update the previous state to end at the start of the next state.
498
554
  await this.updateOneById({
@@ -515,7 +571,9 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
515
571
  isRoot: true,
516
572
  },
517
573
  });
518
- logger.debug("This state is in the middle.");
574
+ logger.debug("This state is in the middle.", {
575
+ incidentEpisodeId: episodeId?.toString(),
576
+ } as LogAttributes);
519
577
  }
520
578
  }
521
579
 
@@ -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 IncidentFeed, {
10
10
  IncidentFeedEventType,
@@ -43,8 +43,14 @@ export class Service extends DatabaseService<IncidentFeed> {
43
43
  | undefined;
44
44
  }): Promise<void> {
45
45
  try {
46
- logger.debug("IncidentFeedService.createIncidentFeedItem");
47
- logger.debug(data);
46
+ logger.debug("IncidentFeedService.createIncidentFeedItem", {
47
+ projectId: data.projectId?.toString(),
48
+ incidentId: data.incidentId?.toString(),
49
+ } as LogAttributes);
50
+ logger.debug(data, {
51
+ projectId: data.projectId?.toString(),
52
+ incidentId: data.incidentId?.toString(),
53
+ } as LogAttributes);
48
54
 
49
55
  const incidentFeed: IncidentFeed = new IncidentFeed();
50
56
 
@@ -93,8 +99,14 @@ export class Service extends DatabaseService<IncidentFeed> {
93
99
  },
94
100
  });
95
101
 
96
- logger.debug("Incident Feed created");
97
- logger.debug(createdIncidentFeed);
102
+ logger.debug("Incident Feed created", {
103
+ projectId: data.projectId?.toString(),
104
+ incidentId: data.incidentId?.toString(),
105
+ } as LogAttributes);
106
+ logger.debug(createdIncidentFeed, {
107
+ projectId: data.projectId?.toString(),
108
+ incidentId: data.incidentId?.toString(),
109
+ } as LogAttributes);
98
110
 
99
111
  try {
100
112
  // send notification to slack and teams
@@ -110,14 +122,26 @@ export class Service extends DatabaseService<IncidentFeed> {
110
122
  });
111
123
  }
112
124
  } catch (e) {
113
- logger.error("Error in sending notification to slack and teams");
114
- logger.error(e);
125
+ logger.error("Error in sending notification to slack and teams", {
126
+ projectId: data.projectId?.toString(),
127
+ incidentId: data.incidentId?.toString(),
128
+ } as LogAttributes);
129
+ logger.error(e, {
130
+ projectId: data.projectId?.toString(),
131
+ incidentId: data.incidentId?.toString(),
132
+ } as LogAttributes);
115
133
 
116
134
  // we dont throw this error as it is not a critical error
117
135
  }
118
136
  } catch (e) {
119
- logger.error("Error in creating incident feed");
120
- logger.error(e);
137
+ logger.error("Error in creating incident feed", {
138
+ projectId: data.projectId?.toString(),
139
+ incidentId: data.incidentId?.toString(),
140
+ } as LogAttributes);
141
+ logger.error(e, {
142
+ projectId: data.projectId?.toString(),
143
+ incidentId: data.incidentId?.toString(),
144
+ } as LogAttributes);
121
145
 
122
146
  // we dont throw this error as it is not a critical error
123
147
  }
@@ -13,7 +13,7 @@ import Monitor from "../../Models/DatabaseModels/Monitor";
13
13
  import IncidentSeverity from "../../Models/DatabaseModels/IncidentSeverity";
14
14
  import ServiceMonitor from "../../Models/DatabaseModels/ServiceMonitor";
15
15
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
16
- import logger from "../Utils/Logger";
16
+ import logger, { LogAttributes } from "../Utils/Logger";
17
17
  import SortOrder from "../../Types/BaseDatabase/SortOrder";
18
18
  import OneUptimeDate from "../../Types/Date";
19
19
  import QueryHelper from "../Types/Database/QueryHelper";
@@ -40,11 +40,15 @@ export interface GroupingResult {
40
40
  class IncidentGroupingEngineServiceClass {
41
41
  @CaptureSpan()
42
42
  public async processIncident(incident: Incident): Promise<GroupingResult> {
43
- logger.debug(`Processing incident ${incident.id} for grouping`);
43
+ logger.debug(`Processing incident ${incident.id} for grouping`, {
44
+ projectId: incident.projectId?.toString(),
45
+ } as LogAttributes);
44
46
 
45
47
  try {
46
48
  if (!incident.id || !incident.projectId) {
47
- logger.warn("Incident missing id or projectId, skipping grouping");
49
+ logger.warn("Incident missing id or projectId, skipping grouping", {
50
+ projectId: incident.projectId?.toString(),
51
+ } as LogAttributes);
48
52
  return { grouped: false };
49
53
  }
50
54
 
@@ -130,12 +134,14 @@ class IncidentGroupingEngineServiceClass {
130
134
  if (rules.length === 0) {
131
135
  logger.debug(
132
136
  `No enabled grouping rules found for project ${incident.projectId}`,
137
+ { projectId: incident.projectId?.toString() } as LogAttributes,
133
138
  );
134
139
  return { grouped: false };
135
140
  }
136
141
 
137
142
  logger.debug(
138
143
  `Found ${rules.length} enabled grouping rules for project ${incident.projectId}`,
144
+ { projectId: incident.projectId?.toString() } as LogAttributes,
139
145
  );
140
146
 
141
147
  // Find first matching rule
@@ -148,6 +154,7 @@ class IncidentGroupingEngineServiceClass {
148
154
  if (matches) {
149
155
  logger.debug(
150
156
  `Incident ${incident.id} matches rule ${rule.name || rule.id}`,
157
+ { projectId: incident.projectId?.toString() } as LogAttributes,
151
158
  );
152
159
 
153
160
  // Try to find existing episode or create new one
@@ -159,10 +166,14 @@ class IncidentGroupingEngineServiceClass {
159
166
  }
160
167
  }
161
168
 
162
- logger.debug(`Incident ${incident.id} did not match any grouping rules`);
169
+ logger.debug(`Incident ${incident.id} did not match any grouping rules`, {
170
+ projectId: incident.projectId?.toString(),
171
+ } as LogAttributes);
163
172
  return { grouped: false };
164
173
  } catch (error) {
165
- logger.error(`Error processing incident for grouping: ${error}`);
174
+ logger.error(`Error processing incident for grouping: ${error}`, {
175
+ projectId: incident.projectId?.toString(),
176
+ } as LogAttributes);
166
177
  return { grouped: false };
167
178
  }
168
179
  }
@@ -174,6 +185,7 @@ class IncidentGroupingEngineServiceClass {
174
185
  ): Promise<boolean> {
175
186
  logger.debug(
176
187
  `Checking if incident ${incident.id} matches rule ${rule.name || rule.id}`,
188
+ { projectId: incident.projectId?.toString() } as LogAttributes,
177
189
  );
178
190
 
179
191
  // Check monitor IDs - if monitors are specified, incident must be from one of them
@@ -319,6 +331,7 @@ class IncidentGroupingEngineServiceClass {
319
331
  } catch {
320
332
  logger.warn(
321
333
  `Invalid regex pattern in rule ${rule.id}: ${rule.monitorNamePattern}`,
334
+ { projectId: incident.projectId?.toString() } as LogAttributes,
322
335
  );
323
336
  monitorMatches = false;
324
337
  }
@@ -341,6 +354,7 @@ class IncidentGroupingEngineServiceClass {
341
354
  } catch {
342
355
  logger.warn(
343
356
  `Invalid regex pattern in rule ${rule.id}: ${rule.monitorDescriptionPattern}`,
357
+ { projectId: incident.projectId?.toString() } as LogAttributes,
344
358
  );
345
359
  monitorMatches = false;
346
360
  }
@@ -371,6 +385,7 @@ class IncidentGroupingEngineServiceClass {
371
385
  } catch {
372
386
  logger.warn(
373
387
  `Invalid regex pattern in rule ${rule.id}: ${rule.incidentTitlePattern}`,
388
+ { projectId: incident.projectId?.toString() } as LogAttributes,
374
389
  );
375
390
  return false;
376
391
  }
@@ -389,6 +404,7 @@ class IncidentGroupingEngineServiceClass {
389
404
  } catch {
390
405
  logger.warn(
391
406
  `Invalid regex pattern in rule ${rule.id}: ${rule.incidentDescriptionPattern}`,
407
+ { projectId: incident.projectId?.toString() } as LogAttributes,
392
408
  );
393
409
  return false;
394
410
  }
@@ -397,6 +413,7 @@ class IncidentGroupingEngineServiceClass {
397
413
  // If no criteria specified (all fields empty), rule matches all incidents
398
414
  logger.debug(
399
415
  `Rule ${rule.name || rule.id} matched incident ${incident.id} (all criteria passed)`,
416
+ { projectId: incident.projectId?.toString() } as LogAttributes,
400
417
  );
401
418
  return true;
402
419
  }
@@ -421,6 +438,7 @@ class IncidentGroupingEngineServiceClass {
421
438
  */
422
439
  logger.debug(
423
440
  `Acquiring mutex for grouping key: ${mutexKey} for incident ${incident.id}`,
441
+ { projectId: incident.projectId?.toString() } as LogAttributes,
424
442
  );
425
443
  mutex = await Semaphore.lock({
426
444
  key: mutexKey,
@@ -430,6 +448,7 @@ class IncidentGroupingEngineServiceClass {
430
448
  });
431
449
  logger.debug(
432
450
  `Acquired mutex for grouping key: ${mutexKey} for incident ${incident.id}`,
451
+ { projectId: incident.projectId?.toString() } as LogAttributes,
433
452
  );
434
453
 
435
454
  // Calculate time window cutoff (only if time window is enabled)
@@ -546,14 +565,17 @@ class IncidentGroupingEngineServiceClass {
546
565
  try {
547
566
  logger.debug(
548
567
  `Releasing mutex for grouping key: ${mutexKey} for incident ${incident.id}`,
568
+ { projectId: incident.projectId?.toString() } as LogAttributes,
549
569
  );
550
570
  await Semaphore.release(mutex);
551
571
  logger.debug(
552
572
  `Released mutex for grouping key: ${mutexKey} for incident ${incident.id}`,
573
+ { projectId: incident.projectId?.toString() } as LogAttributes,
553
574
  );
554
575
  } catch (err) {
555
576
  logger.error(
556
577
  `Error releasing mutex for grouping key: ${mutexKey}: ${err}`,
578
+ { projectId: incident.projectId?.toString() } as LogAttributes,
557
579
  );
558
580
  }
559
581
  }
@@ -817,6 +839,7 @@ class IncidentGroupingEngineServiceClass {
817
839
  } catch (ownerError) {
818
840
  logger.error(
819
841
  `Error adding owner user ${user.id} to episode: ${ownerError}`,
842
+ { projectId: incident.projectId?.toString() } as LogAttributes,
820
843
  );
821
844
  }
822
845
  }
@@ -847,6 +870,7 @@ class IncidentGroupingEngineServiceClass {
847
870
  } catch (ownerError) {
848
871
  logger.error(
849
872
  `Error adding owner team ${team.id} to episode: ${ownerError}`,
873
+ { projectId: incident.projectId?.toString() } as LogAttributes,
850
874
  );
851
875
  }
852
876
  }
@@ -878,6 +902,7 @@ class IncidentGroupingEngineServiceClass {
878
902
  } catch (memberError) {
879
903
  logger.error(
880
904
  `Error adding member role assignment to episode: ${memberError}`,
905
+ { projectId: incident.projectId?.toString() } as LogAttributes,
881
906
  );
882
907
  }
883
908
  }
@@ -926,13 +951,16 @@ class IncidentGroupingEngineServiceClass {
926
951
  } catch (feedError) {
927
952
  logger.error(
928
953
  `Error creating episode feed for episode creation: ${feedError}`,
954
+ { projectId: incident.projectId?.toString() } as LogAttributes,
929
955
  );
930
956
  }
931
957
  }
932
958
 
933
959
  return createdEpisode;
934
960
  } catch (error) {
935
- logger.error(`Error creating new episode: ${error}`);
961
+ logger.error(`Error creating new episode: ${error}`, {
962
+ projectId: incident.projectId?.toString(),
963
+ } as LogAttributes);
936
964
  return null;
937
965
  }
938
966
  }
@@ -1118,6 +1146,7 @@ class IncidentGroupingEngineServiceClass {
1118
1146
  ) {
1119
1147
  logger.debug(
1120
1148
  `Incident ${incident.id} is already in episode ${episodeId}`,
1149
+ { projectId: incident.projectId?.toString() } as LogAttributes,
1121
1150
  );
1122
1151
  return;
1123
1152
  }