@oneuptime/common 10.1.7 → 10.2.1

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 (378) hide show
  1. package/Models/DatabaseModels/Alert.ts +41 -0
  2. package/Models/DatabaseModels/AlertEpisode.ts +41 -0
  3. package/Models/DatabaseModels/AlertEpisodeFeed.ts +4 -0
  4. package/Models/DatabaseModels/AlertEpisodeLabelRule.ts +584 -0
  5. package/Models/DatabaseModels/AlertEpisodeOnCallRule.ts +583 -0
  6. package/Models/DatabaseModels/AlertEpisodeOwnerRule.ts +668 -0
  7. package/Models/DatabaseModels/AlertEpisodePrivacyRule.ts +535 -0
  8. package/Models/DatabaseModels/AlertFeed.ts +4 -0
  9. package/Models/DatabaseModels/AlertLabelRule.ts +788 -0
  10. package/Models/DatabaseModels/AlertOnCallRule.ts +755 -0
  11. package/Models/DatabaseModels/AlertOwnerRule.ts +907 -0
  12. package/Models/DatabaseModels/AlertPrivacyRule.ts +704 -0
  13. package/Models/DatabaseModels/DatabaseBaseModel/FileModel.ts +27 -0
  14. package/Models/DatabaseModels/Incident.ts +41 -0
  15. package/Models/DatabaseModels/IncidentEpisode.ts +41 -0
  16. package/Models/DatabaseModels/IncidentEpisodeFeed.ts +4 -0
  17. package/Models/DatabaseModels/IncidentEpisodeLabelRule.ts +584 -0
  18. package/Models/DatabaseModels/IncidentEpisodeOnCallRule.ts +585 -0
  19. package/Models/DatabaseModels/IncidentEpisodeOwnerRule.ts +670 -0
  20. package/Models/DatabaseModels/IncidentEpisodePrivacyRule.ts +535 -0
  21. package/Models/DatabaseModels/IncidentFeed.ts +4 -0
  22. package/Models/DatabaseModels/IncidentLabelRule.ts +828 -0
  23. package/Models/DatabaseModels/IncidentOnCallRule.ts +755 -0
  24. package/Models/DatabaseModels/IncidentOwnerRule.ts +914 -0
  25. package/Models/DatabaseModels/IncidentPrivacyRule.ts +704 -0
  26. package/Models/DatabaseModels/Index.ts +32 -0
  27. package/Server/API/FileAPI.ts +89 -1
  28. package/Server/API/StatusPageAPI.ts +3 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1778269764550-MigrationName.ts +395 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1778271406963-MigrationName.ts +1003 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1778274719786-MigrationName.ts +635 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1778359982682-AddIncidentIsPrivate.ts +21 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1778361904715-AddFileImageAccessToken.ts +25 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1778413144103-AddOwnerRuleInheritFlags.ts +37 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1778438949454-AddAlertIsPrivate.ts +21 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1778440665575-AddPrivacyRules.ts +315 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1778442385970-AddEpisodePrivacyRules.ts +233 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +18 -0
  39. package/Server/Services/AlertEpisodeFeedService.ts +51 -0
  40. package/Server/Services/AlertEpisodeInternalNoteService.ts +51 -1
  41. package/Server/Services/AlertEpisodeLabelRuleEngineService.ts +293 -0
  42. package/Server/Services/AlertEpisodeLabelRuleService.ts +14 -0
  43. package/Server/Services/AlertEpisodeOnCallRuleEngineService.ts +310 -0
  44. package/Server/Services/AlertEpisodeOnCallRuleService.ts +14 -0
  45. package/Server/Services/AlertEpisodeOwnerRuleEngineService.ts +325 -0
  46. package/Server/Services/AlertEpisodeOwnerRuleService.ts +14 -0
  47. package/Server/Services/AlertEpisodeOwnerTeamService.ts +43 -1
  48. package/Server/Services/AlertEpisodeOwnerUserService.ts +43 -1
  49. package/Server/Services/AlertEpisodePrivacyRuleEngineService.ts +218 -0
  50. package/Server/Services/AlertEpisodePrivacyRuleService.ts +14 -0
  51. package/Server/Services/AlertEpisodeService.ts +126 -1
  52. package/Server/Services/AlertFeedService.ts +51 -0
  53. package/Server/Services/AlertInternalNoteService.ts +51 -1
  54. package/Server/Services/AlertLabelRuleEngineService.ts +408 -0
  55. package/Server/Services/AlertLabelRuleService.ts +14 -0
  56. package/Server/Services/AlertOnCallRuleEngineService.ts +414 -0
  57. package/Server/Services/AlertOnCallRuleService.ts +14 -0
  58. package/Server/Services/AlertOwnerRuleEngineService.ts +559 -0
  59. package/Server/Services/AlertOwnerRuleService.ts +14 -0
  60. package/Server/Services/AlertOwnerTeamService.ts +43 -1
  61. package/Server/Services/AlertOwnerUserService.ts +43 -1
  62. package/Server/Services/AlertPrivacyRuleEngineService.ts +302 -0
  63. package/Server/Services/AlertPrivacyRuleService.ts +14 -0
  64. package/Server/Services/AlertService.ts +106 -1
  65. package/Server/Services/FileService.ts +24 -1
  66. package/Server/Services/HostService.ts +96 -0
  67. package/Server/Services/IncidentEpisodeFeedService.ts +51 -0
  68. package/Server/Services/IncidentEpisodeInternalNoteService.ts +51 -1
  69. package/Server/Services/IncidentEpisodeLabelRuleEngineService.ts +294 -0
  70. package/Server/Services/IncidentEpisodeLabelRuleService.ts +14 -0
  71. package/Server/Services/IncidentEpisodeOnCallRuleEngineService.ts +312 -0
  72. package/Server/Services/IncidentEpisodeOnCallRuleService.ts +14 -0
  73. package/Server/Services/IncidentEpisodeOwnerRuleEngineService.ts +309 -0
  74. package/Server/Services/IncidentEpisodeOwnerRuleService.ts +14 -0
  75. package/Server/Services/IncidentEpisodeOwnerTeamService.ts +43 -1
  76. package/Server/Services/IncidentEpisodeOwnerUserService.ts +43 -1
  77. package/Server/Services/IncidentEpisodePrivacyRuleEngineService.ts +220 -0
  78. package/Server/Services/IncidentEpisodePrivacyRuleService.ts +14 -0
  79. package/Server/Services/IncidentEpisodeService.ts +126 -1
  80. package/Server/Services/IncidentFeedService.ts +51 -0
  81. package/Server/Services/IncidentInternalNoteService.ts +51 -1
  82. package/Server/Services/IncidentLabelRuleEngineService.ts +484 -0
  83. package/Server/Services/IncidentLabelRuleService.ts +14 -0
  84. package/Server/Services/IncidentOnCallRuleEngineService.ts +452 -0
  85. package/Server/Services/IncidentOnCallRuleService.ts +14 -0
  86. package/Server/Services/IncidentOwnerRuleEngineService.ts +623 -0
  87. package/Server/Services/IncidentOwnerRuleService.ts +14 -0
  88. package/Server/Services/IncidentOwnerTeamService.ts +44 -1
  89. package/Server/Services/IncidentOwnerUserService.ts +44 -1
  90. package/Server/Services/IncidentPrivacyRuleEngineService.ts +347 -0
  91. package/Server/Services/IncidentPrivacyRuleService.ts +14 -0
  92. package/Server/Services/IncidentService.ts +173 -1
  93. package/Server/Services/LabelService.ts +143 -0
  94. package/Server/Services/OpenTelemetryIngestService.ts +56 -0
  95. package/Server/Services/ServiceService.ts +92 -0
  96. package/Server/Services/WorkspaceNotificationRuleService.ts +8 -0
  97. package/Server/Utils/Alert/AlertPrivacyFilter.ts +148 -0
  98. package/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.ts +131 -0
  99. package/Server/Utils/Incident/IncidentPrivacyFilter.ts +148 -0
  100. package/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.ts +137 -0
  101. package/Server/Utils/InlineImageAccessTokenSync.ts +83 -0
  102. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +23 -0
  103. package/Server/Utils/Monitor/MonitorAlert.ts +4 -0
  104. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +98 -3
  105. package/Server/Utils/Monitor/MonitorIncident.ts +4 -0
  106. package/Server/Utils/Telemetry/OneuptimeLabel.ts +78 -0
  107. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +2 -1
  108. package/Server/Utils/Workspace/Slack/Slack.ts +10 -3
  109. package/Server/Utils/Workspace/WorkspaceBase.ts +1 -0
  110. package/Server/Utils/Workspace/WorkspaceMessages/Alert.ts +2 -0
  111. package/Server/Utils/Workspace/WorkspaceMessages/AlertEpisode.ts +2 -0
  112. package/Server/Utils/Workspace/WorkspaceMessages/Incident.ts +2 -0
  113. package/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.ts +2 -0
  114. package/Tests/UI/Components/MarkdownEditor.test.tsx +39 -31
  115. package/Tests/Utils/MetricUnitUtil.test.ts +38 -1
  116. package/Types/Monitor/CriteriaAlert.ts +2 -0
  117. package/Types/Monitor/CriteriaIncident.ts +2 -0
  118. package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +8 -0
  119. package/Types/Permission.ts +764 -0
  120. package/UI/Components/Charts/Utils/DataPoint.ts +2 -47
  121. package/UI/Components/Forms/BasicForm.tsx +106 -75
  122. package/UI/Components/Forms/Types/Field.ts +8 -0
  123. package/UI/Components/Forms/Types/FormStep.ts +5 -0
  124. package/UI/Components/Markdown.tsx/MarkdownConverters.ts +0 -0
  125. package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +745 -46
  126. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +9 -0
  127. package/Utils/MetricUnitUtil.ts +24 -0
  128. package/Utils/ValueFormatter.ts +19 -4
  129. package/build/dist/Models/DatabaseModels/Alert.js +42 -0
  130. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  131. package/build/dist/Models/DatabaseModels/AlertEpisode.js +42 -0
  132. package/build/dist/Models/DatabaseModels/AlertEpisode.js.map +1 -1
  133. package/build/dist/Models/DatabaseModels/AlertEpisodeFeed.js +4 -0
  134. package/build/dist/Models/DatabaseModels/AlertEpisodeFeed.js.map +1 -1
  135. package/build/dist/Models/DatabaseModels/AlertEpisodeLabelRule.js +592 -0
  136. package/build/dist/Models/DatabaseModels/AlertEpisodeLabelRule.js.map +1 -0
  137. package/build/dist/Models/DatabaseModels/AlertEpisodeOnCallRule.js +592 -0
  138. package/build/dist/Models/DatabaseModels/AlertEpisodeOnCallRule.js.map +1 -0
  139. package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerRule.js +676 -0
  140. package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerRule.js.map +1 -0
  141. package/build/dist/Models/DatabaseModels/AlertEpisodePrivacyRule.js +545 -0
  142. package/build/dist/Models/DatabaseModels/AlertEpisodePrivacyRule.js.map +1 -0
  143. package/build/dist/Models/DatabaseModels/AlertFeed.js +4 -0
  144. package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
  145. package/build/dist/Models/DatabaseModels/AlertLabelRule.js +795 -0
  146. package/build/dist/Models/DatabaseModels/AlertLabelRule.js.map +1 -0
  147. package/build/dist/Models/DatabaseModels/AlertOnCallRule.js +759 -0
  148. package/build/dist/Models/DatabaseModels/AlertOnCallRule.js.map +1 -0
  149. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js +917 -0
  150. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js.map +1 -0
  151. package/build/dist/Models/DatabaseModels/AlertPrivacyRule.js +711 -0
  152. package/build/dist/Models/DatabaseModels/AlertPrivacyRule.js.map +1 -0
  153. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/FileModel.js +29 -0
  154. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/FileModel.js.map +1 -1
  155. package/build/dist/Models/DatabaseModels/Incident.js +42 -0
  156. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  157. package/build/dist/Models/DatabaseModels/IncidentEpisode.js +42 -0
  158. package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -1
  159. package/build/dist/Models/DatabaseModels/IncidentEpisodeFeed.js +4 -0
  160. package/build/dist/Models/DatabaseModels/IncidentEpisodeFeed.js.map +1 -1
  161. package/build/dist/Models/DatabaseModels/IncidentEpisodeLabelRule.js +592 -0
  162. package/build/dist/Models/DatabaseModels/IncidentEpisodeLabelRule.js.map +1 -0
  163. package/build/dist/Models/DatabaseModels/IncidentEpisodeOnCallRule.js +593 -0
  164. package/build/dist/Models/DatabaseModels/IncidentEpisodeOnCallRule.js.map +1 -0
  165. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerRule.js +677 -0
  166. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerRule.js.map +1 -0
  167. package/build/dist/Models/DatabaseModels/IncidentEpisodePrivacyRule.js +545 -0
  168. package/build/dist/Models/DatabaseModels/IncidentEpisodePrivacyRule.js.map +1 -0
  169. package/build/dist/Models/DatabaseModels/IncidentFeed.js +4 -0
  170. package/build/dist/Models/DatabaseModels/IncidentFeed.js.map +1 -1
  171. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js +834 -0
  172. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js.map +1 -0
  173. package/build/dist/Models/DatabaseModels/IncidentOnCallRule.js +759 -0
  174. package/build/dist/Models/DatabaseModels/IncidentOnCallRule.js.map +1 -0
  175. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js +919 -0
  176. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js.map +1 -0
  177. package/build/dist/Models/DatabaseModels/IncidentPrivacyRule.js +711 -0
  178. package/build/dist/Models/DatabaseModels/IncidentPrivacyRule.js.map +1 -0
  179. package/build/dist/Models/DatabaseModels/Index.js +32 -0
  180. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  181. package/build/dist/Server/API/FileAPI.js +64 -3
  182. package/build/dist/Server/API/FileAPI.js.map +1 -1
  183. package/build/dist/Server/API/StatusPageAPI.js +3 -0
  184. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  185. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778269764550-MigrationName.js +146 -0
  186. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778269764550-MigrationName.js.map +1 -0
  187. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778271406963-MigrationName.js +358 -0
  188. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778271406963-MigrationName.js.map +1 -0
  189. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778274719786-MigrationName.js +230 -0
  190. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778274719786-MigrationName.js.map +1 -0
  191. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778359982682-AddIncidentIsPrivate.js +14 -0
  192. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778359982682-AddIncidentIsPrivate.js.map +1 -0
  193. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778361904715-AddFileImageAccessToken.js +14 -0
  194. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778361904715-AddFileImageAccessToken.js.map +1 -0
  195. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778413144103-AddOwnerRuleInheritFlags.js +18 -0
  196. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778413144103-AddOwnerRuleInheritFlags.js.map +1 -0
  197. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778438949454-AddAlertIsPrivate.js +14 -0
  198. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778438949454-AddAlertIsPrivate.js.map +1 -0
  199. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778440665575-AddPrivacyRules.js +118 -0
  200. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778440665575-AddPrivacyRules.js.map +1 -0
  201. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778442385970-AddEpisodePrivacyRules.js +86 -0
  202. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778442385970-AddEpisodePrivacyRules.js.map +1 -0
  203. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +18 -0
  204. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  205. package/build/dist/Server/Services/AlertEpisodeFeedService.js +41 -0
  206. package/build/dist/Server/Services/AlertEpisodeFeedService.js.map +1 -1
  207. package/build/dist/Server/Services/AlertEpisodeInternalNoteService.js +41 -0
  208. package/build/dist/Server/Services/AlertEpisodeInternalNoteService.js.map +1 -1
  209. package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js +245 -0
  210. package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js.map +1 -0
  211. package/build/dist/Server/Services/AlertEpisodeLabelRuleService.js +13 -0
  212. package/build/dist/Server/Services/AlertEpisodeLabelRuleService.js.map +1 -0
  213. package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js +260 -0
  214. package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js.map +1 -0
  215. package/build/dist/Server/Services/AlertEpisodeOnCallRuleService.js +13 -0
  216. package/build/dist/Server/Services/AlertEpisodeOnCallRuleService.js.map +1 -0
  217. package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js +269 -0
  218. package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js.map +1 -0
  219. package/build/dist/Server/Services/AlertEpisodeOwnerRuleService.js +13 -0
  220. package/build/dist/Server/Services/AlertEpisodeOwnerRuleService.js.map +1 -0
  221. package/build/dist/Server/Services/AlertEpisodeOwnerTeamService.js +32 -0
  222. package/build/dist/Server/Services/AlertEpisodeOwnerTeamService.js.map +1 -1
  223. package/build/dist/Server/Services/AlertEpisodeOwnerUserService.js +32 -0
  224. package/build/dist/Server/Services/AlertEpisodeOwnerUserService.js.map +1 -1
  225. package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js +184 -0
  226. package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js.map +1 -0
  227. package/build/dist/Server/Services/AlertEpisodePrivacyRuleService.js +13 -0
  228. package/build/dist/Server/Services/AlertEpisodePrivacyRuleService.js.map +1 -0
  229. package/build/dist/Server/Services/AlertEpisodeService.js +106 -2
  230. package/build/dist/Server/Services/AlertEpisodeService.js.map +1 -1
  231. package/build/dist/Server/Services/AlertFeedService.js +41 -0
  232. package/build/dist/Server/Services/AlertFeedService.js.map +1 -1
  233. package/build/dist/Server/Services/AlertInternalNoteService.js +41 -0
  234. package/build/dist/Server/Services/AlertInternalNoteService.js.map +1 -1
  235. package/build/dist/Server/Services/AlertLabelRuleEngineService.js +354 -0
  236. package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -0
  237. package/build/dist/Server/Services/AlertLabelRuleService.js +13 -0
  238. package/build/dist/Server/Services/AlertLabelRuleService.js.map +1 -0
  239. package/build/dist/Server/Services/AlertOnCallRuleEngineService.js +353 -0
  240. package/build/dist/Server/Services/AlertOnCallRuleEngineService.js.map +1 -0
  241. package/build/dist/Server/Services/AlertOnCallRuleService.js +13 -0
  242. package/build/dist/Server/Services/AlertOnCallRuleService.js.map +1 -0
  243. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +469 -0
  244. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -0
  245. package/build/dist/Server/Services/AlertOwnerRuleService.js +13 -0
  246. package/build/dist/Server/Services/AlertOwnerRuleService.js.map +1 -0
  247. package/build/dist/Server/Services/AlertOwnerTeamService.js +32 -0
  248. package/build/dist/Server/Services/AlertOwnerTeamService.js.map +1 -1
  249. package/build/dist/Server/Services/AlertOwnerUserService.js +32 -0
  250. package/build/dist/Server/Services/AlertOwnerUserService.js.map +1 -1
  251. package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js +265 -0
  252. package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js.map +1 -0
  253. package/build/dist/Server/Services/AlertPrivacyRuleService.js +13 -0
  254. package/build/dist/Server/Services/AlertPrivacyRuleService.js.map +1 -0
  255. package/build/dist/Server/Services/AlertService.js +98 -2
  256. package/build/dist/Server/Services/AlertService.js.map +1 -1
  257. package/build/dist/Server/Services/FileService.js +21 -0
  258. package/build/dist/Server/Services/FileService.js.map +1 -1
  259. package/build/dist/Server/Services/HostService.js +78 -0
  260. package/build/dist/Server/Services/HostService.js.map +1 -1
  261. package/build/dist/Server/Services/IncidentEpisodeFeedService.js +41 -0
  262. package/build/dist/Server/Services/IncidentEpisodeFeedService.js.map +1 -1
  263. package/build/dist/Server/Services/IncidentEpisodeInternalNoteService.js +41 -0
  264. package/build/dist/Server/Services/IncidentEpisodeInternalNoteService.js.map +1 -1
  265. package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js +245 -0
  266. package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js.map +1 -0
  267. package/build/dist/Server/Services/IncidentEpisodeLabelRuleService.js +13 -0
  268. package/build/dist/Server/Services/IncidentEpisodeLabelRuleService.js.map +1 -0
  269. package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js +261 -0
  270. package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js.map +1 -0
  271. package/build/dist/Server/Services/IncidentEpisodeOnCallRuleService.js +13 -0
  272. package/build/dist/Server/Services/IncidentEpisodeOnCallRuleService.js.map +1 -0
  273. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js +263 -0
  274. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js.map +1 -0
  275. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleService.js +13 -0
  276. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleService.js.map +1 -0
  277. package/build/dist/Server/Services/IncidentEpisodeOwnerTeamService.js +32 -0
  278. package/build/dist/Server/Services/IncidentEpisodeOwnerTeamService.js.map +1 -1
  279. package/build/dist/Server/Services/IncidentEpisodeOwnerUserService.js +32 -0
  280. package/build/dist/Server/Services/IncidentEpisodeOwnerUserService.js.map +1 -1
  281. package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js +186 -0
  282. package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js.map +1 -0
  283. package/build/dist/Server/Services/IncidentEpisodePrivacyRuleService.js +13 -0
  284. package/build/dist/Server/Services/IncidentEpisodePrivacyRuleService.js.map +1 -0
  285. package/build/dist/Server/Services/IncidentEpisodeService.js +106 -2
  286. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
  287. package/build/dist/Server/Services/IncidentFeedService.js +41 -0
  288. package/build/dist/Server/Services/IncidentFeedService.js.map +1 -1
  289. package/build/dist/Server/Services/IncidentInternalNoteService.js +41 -0
  290. package/build/dist/Server/Services/IncidentInternalNoteService.js.map +1 -1
  291. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +407 -0
  292. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -0
  293. package/build/dist/Server/Services/IncidentLabelRuleService.js +13 -0
  294. package/build/dist/Server/Services/IncidentLabelRuleService.js.map +1 -0
  295. package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js +376 -0
  296. package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js.map +1 -0
  297. package/build/dist/Server/Services/IncidentOnCallRuleService.js +13 -0
  298. package/build/dist/Server/Services/IncidentOnCallRuleService.js.map +1 -0
  299. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +510 -0
  300. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -0
  301. package/build/dist/Server/Services/IncidentOwnerRuleService.js +13 -0
  302. package/build/dist/Server/Services/IncidentOwnerRuleService.js.map +1 -0
  303. package/build/dist/Server/Services/IncidentOwnerTeamService.js +32 -0
  304. package/build/dist/Server/Services/IncidentOwnerTeamService.js.map +1 -1
  305. package/build/dist/Server/Services/IncidentOwnerUserService.js +32 -0
  306. package/build/dist/Server/Services/IncidentOwnerUserService.js.map +1 -1
  307. package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js +288 -0
  308. package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js.map +1 -0
  309. package/build/dist/Server/Services/IncidentPrivacyRuleService.js +13 -0
  310. package/build/dist/Server/Services/IncidentPrivacyRuleService.js.map +1 -0
  311. package/build/dist/Server/Services/IncidentService.js +134 -2
  312. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  313. package/build/dist/Server/Services/LabelService.js +117 -0
  314. package/build/dist/Server/Services/LabelService.js.map +1 -1
  315. package/build/dist/Server/Services/OpenTelemetryIngestService.js +42 -0
  316. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  317. package/build/dist/Server/Services/ServiceService.js +74 -0
  318. package/build/dist/Server/Services/ServiceService.js.map +1 -1
  319. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +4 -9
  320. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  321. package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js +96 -0
  322. package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js.map +1 -0
  323. package/build/dist/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.js +79 -0
  324. package/build/dist/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.js.map +1 -0
  325. package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js +96 -0
  326. package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js.map +1 -0
  327. package/build/dist/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.js +85 -0
  328. package/build/dist/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.js.map +1 -0
  329. package/build/dist/Server/Utils/InlineImageAccessTokenSync.js +67 -0
  330. package/build/dist/Server/Utils/InlineImageAccessTokenSync.js.map +1 -0
  331. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +25 -8
  332. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  333. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +3 -0
  334. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  335. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +71 -1
  336. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
  337. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +3 -0
  338. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  339. package/build/dist/Server/Utils/Telemetry/OneuptimeLabel.js +61 -0
  340. package/build/dist/Server/Utils/Telemetry/OneuptimeLabel.js.map +1 -0
  341. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +1 -1
  342. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  343. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +7 -3
  344. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  345. package/build/dist/Server/Utils/Workspace/WorkspaceBase.js.map +1 -1
  346. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Alert.js +2 -7
  347. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Alert.js.map +1 -1
  348. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/AlertEpisode.js +2 -7
  349. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/AlertEpisode.js.map +1 -1
  350. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Incident.js +2 -7
  351. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Incident.js.map +1 -1
  352. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.js +2 -7
  353. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.js.map +1 -1
  354. package/build/dist/Tests/UI/Components/MarkdownEditor.test.js +34 -21
  355. package/build/dist/Tests/UI/Components/MarkdownEditor.test.js.map +1 -1
  356. package/build/dist/Tests/Utils/MetricUnitUtil.test.js +29 -1
  357. package/build/dist/Tests/Utils/MetricUnitUtil.test.js.map +1 -1
  358. package/build/dist/Types/Monitor/CriteriaAlert.js +1 -0
  359. package/build/dist/Types/Monitor/CriteriaAlert.js.map +1 -1
  360. package/build/dist/Types/Monitor/CriteriaIncident.js +1 -0
  361. package/build/dist/Types/Monitor/CriteriaIncident.js.map +1 -1
  362. package/build/dist/Types/Permission.js +668 -0
  363. package/build/dist/Types/Permission.js.map +1 -1
  364. package/build/dist/UI/Components/Charts/Utils/DataPoint.js +1 -27
  365. package/build/dist/UI/Components/Charts/Utils/DataPoint.js.map +1 -1
  366. package/build/dist/UI/Components/Forms/BasicForm.js +29 -17
  367. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  368. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js +0 -0
  369. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js.map +1 -0
  370. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +604 -66
  371. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js.map +1 -1
  372. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +4 -0
  373. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  374. package/build/dist/Utils/MetricUnitUtil.js +22 -0
  375. package/build/dist/Utils/MetricUnitUtil.js.map +1 -1
  376. package/build/dist/Utils/ValueFormatter.js +18 -4
  377. package/build/dist/Utils/ValueFormatter.js.map +1 -1
  378. package/package.json +1 -1
@@ -1418,4 +1418,45 @@ export default class Alert extends BaseModel {
1418
1418
  transformer: ObjectID.getDatabaseTransformer(),
1419
1419
  })
1420
1420
  public alertEpisodeId?: ObjectID = undefined;
1421
+
1422
+ @ColumnAccessControl({
1423
+ create: [
1424
+ Permission.ProjectOwner,
1425
+ Permission.ProjectAdmin,
1426
+ Permission.ProjectMember,
1427
+ Permission.AlertManager,
1428
+ Permission.CreateAlert,
1429
+ ],
1430
+ read: [
1431
+ Permission.ProjectOwner,
1432
+ Permission.ProjectAdmin,
1433
+ Permission.ProjectMember,
1434
+ Permission.Viewer,
1435
+ Permission.AlertManager,
1436
+ Permission.ReadAlert,
1437
+ Permission.ReadAllProjectResources,
1438
+ ],
1439
+ update: [
1440
+ Permission.ProjectOwner,
1441
+ Permission.ProjectAdmin,
1442
+ Permission.ProjectMember,
1443
+ Permission.AlertManager,
1444
+ Permission.EditAlert,
1445
+ ],
1446
+ })
1447
+ @Index()
1448
+ @TableColumn({
1449
+ isDefaultValueColumn: true,
1450
+ type: TableColumnType.Boolean,
1451
+ title: "Is Private?",
1452
+ description:
1453
+ "If true, this alert is only visible to its owners (users in 'owner users' and members of 'owner teams'), project admins, and project owners.",
1454
+ defaultValue: false,
1455
+ })
1456
+ @Column({
1457
+ type: ColumnType.Boolean,
1458
+ default: false,
1459
+ nullable: true,
1460
+ })
1461
+ public isPrivate?: boolean = undefined;
1421
1462
  }
@@ -1400,4 +1400,45 @@ export default class AlertEpisode extends BaseModel {
1400
1400
  })
1401
1401
  public postUpdatesToWorkspaceChannels?: Array<NotificationRuleWorkspaceChannel> =
1402
1402
  undefined;
1403
+
1404
+ @ColumnAccessControl({
1405
+ create: [
1406
+ Permission.ProjectOwner,
1407
+ Permission.ProjectAdmin,
1408
+ Permission.ProjectMember,
1409
+ Permission.AlertManager,
1410
+ Permission.CreateAlertEpisode,
1411
+ ],
1412
+ read: [
1413
+ Permission.ProjectOwner,
1414
+ Permission.ProjectAdmin,
1415
+ Permission.ProjectMember,
1416
+ Permission.Viewer,
1417
+ Permission.AlertManager,
1418
+ Permission.ReadAlertEpisode,
1419
+ Permission.ReadAllProjectResources,
1420
+ ],
1421
+ update: [
1422
+ Permission.ProjectOwner,
1423
+ Permission.ProjectAdmin,
1424
+ Permission.ProjectMember,
1425
+ Permission.AlertManager,
1426
+ Permission.EditAlertEpisode,
1427
+ ],
1428
+ })
1429
+ @Index()
1430
+ @TableColumn({
1431
+ isDefaultValueColumn: true,
1432
+ type: TableColumnType.Boolean,
1433
+ title: "Is Private?",
1434
+ description:
1435
+ "If true, this alert episode is only visible to its owners (users in 'owner users' and members of 'owner teams'), project admins, and project owners.",
1436
+ defaultValue: false,
1437
+ })
1438
+ @Column({
1439
+ type: ColumnType.Boolean,
1440
+ default: false,
1441
+ nullable: true,
1442
+ })
1443
+ public isPrivate?: boolean = undefined;
1403
1444
  }
@@ -38,6 +38,10 @@ export enum AlertEpisodeFeedEventType {
38
38
  OnCallPolicy = "OnCallPolicy",
39
39
  OnCallNotification = "OnCallNotification",
40
40
  SeverityChanged = "SeverityChanged",
41
+ LabelRuleExecuted = "LabelRuleExecuted",
42
+ OwnerRuleExecuted = "OwnerRuleExecuted",
43
+ PrivacyRuleExecuted = "PrivacyRuleExecuted",
44
+ OnCallRuleExecuted = "OnCallRuleExecuted",
41
45
  }
42
46
 
43
47
  @EnableDocumentation()
@@ -0,0 +1,584 @@
1
+ import AlertSeverity from "./AlertSeverity";
2
+ import Label from "./Label";
3
+ import Project from "./Project";
4
+ import User from "./User";
5
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
6
+ import Route from "../../Types/API/Route";
7
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
8
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
9
+ import ColumnLength from "../../Types/Database/ColumnLength";
10
+ import ColumnType from "../../Types/Database/ColumnType";
11
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
12
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
13
+ import EnableWorkflow from "../../Types/Database/EnableWorkflow";
14
+ import TableColumn from "../../Types/Database/TableColumn";
15
+ import TableColumnType from "../../Types/Database/TableColumnType";
16
+ import TableMetadata from "../../Types/Database/TableMetadata";
17
+ import TenantColumn from "../../Types/Database/TenantColumn";
18
+ import IconProp from "../../Types/Icon/IconProp";
19
+ import ObjectID from "../../Types/ObjectID";
20
+ import Permission from "../../Types/Permission";
21
+ import {
22
+ Column,
23
+ Entity,
24
+ Index,
25
+ JoinColumn,
26
+ JoinTable,
27
+ ManyToMany,
28
+ ManyToOne,
29
+ } from "typeorm";
30
+
31
+ @EnableDocumentation()
32
+ @TenantColumn("projectId")
33
+ @TableAccessControl({
34
+ create: [
35
+ Permission.ProjectOwner,
36
+ Permission.ProjectAdmin,
37
+ Permission.CreateAlertEpisodeLabelRule,
38
+ ],
39
+ read: [
40
+ Permission.ProjectOwner,
41
+ Permission.ProjectAdmin,
42
+ Permission.ProjectMember,
43
+ Permission.Viewer,
44
+ Permission.AlertManager,
45
+ Permission.ReadAlertEpisodeLabelRule,
46
+ Permission.ReadAllProjectResources,
47
+ ],
48
+ delete: [
49
+ Permission.ProjectOwner,
50
+ Permission.ProjectAdmin,
51
+ Permission.DeleteAlertEpisodeLabelRule,
52
+ ],
53
+ update: [
54
+ Permission.ProjectOwner,
55
+ Permission.ProjectAdmin,
56
+ Permission.EditAlertEpisodeLabelRule,
57
+ ],
58
+ })
59
+ @CrudApiEndpoint(new Route("/alert-episode-label-rule"))
60
+ @Entity({
61
+ name: "AlertEpisodeLabelRule",
62
+ })
63
+ @EnableWorkflow({
64
+ create: true,
65
+ delete: true,
66
+ update: true,
67
+ read: true,
68
+ })
69
+ @TableMetadata({
70
+ tableName: "AlertEpisodeLabelRule",
71
+ singularName: "Alert Episode Label Rule",
72
+ pluralName: "Alert Episode Label Rules",
73
+ icon: IconProp.Tag,
74
+ tableDescription:
75
+ "Configure rules for automatically attaching labels to alert episodes when matching episodes are created",
76
+ })
77
+ export default class AlertEpisodeLabelRule extends BaseModel {
78
+ @ColumnAccessControl({
79
+ create: [
80
+ Permission.ProjectOwner,
81
+ Permission.ProjectAdmin,
82
+ Permission.CreateAlertEpisodeLabelRule,
83
+ ],
84
+ read: [
85
+ Permission.ProjectOwner,
86
+ Permission.ProjectAdmin,
87
+ Permission.ProjectMember,
88
+ Permission.Viewer,
89
+ Permission.AlertManager,
90
+ Permission.ReadAlertEpisodeLabelRule,
91
+ Permission.ReadAllProjectResources,
92
+ ],
93
+ update: [],
94
+ })
95
+ @TableColumn({
96
+ manyToOneRelationColumn: "projectId",
97
+ type: TableColumnType.Entity,
98
+ modelType: Project,
99
+ title: "Project",
100
+ description: "Relation to Project Resource in which this object belongs",
101
+ })
102
+ @ManyToOne(
103
+ () => {
104
+ return Project;
105
+ },
106
+ {
107
+ eager: false,
108
+ nullable: true,
109
+ onDelete: "CASCADE",
110
+ orphanedRowAction: "nullify",
111
+ },
112
+ )
113
+ @JoinColumn({ name: "projectId" })
114
+ public project?: Project = undefined;
115
+
116
+ @ColumnAccessControl({
117
+ create: [
118
+ Permission.ProjectOwner,
119
+ Permission.ProjectAdmin,
120
+ Permission.CreateAlertEpisodeLabelRule,
121
+ ],
122
+ read: [
123
+ Permission.ProjectOwner,
124
+ Permission.ProjectAdmin,
125
+ Permission.ProjectMember,
126
+ Permission.Viewer,
127
+ Permission.AlertManager,
128
+ Permission.ReadAlertEpisodeLabelRule,
129
+ Permission.ReadAllProjectResources,
130
+ ],
131
+ update: [],
132
+ })
133
+ @Index()
134
+ @TableColumn({
135
+ type: TableColumnType.ObjectID,
136
+ required: true,
137
+ canReadOnRelationQuery: true,
138
+ title: "Project ID",
139
+ description: "ID of your OneUptime Project in which this object belongs",
140
+ })
141
+ @Column({
142
+ type: ColumnType.ObjectID,
143
+ nullable: false,
144
+ transformer: ObjectID.getDatabaseTransformer(),
145
+ })
146
+ public projectId?: ObjectID = undefined;
147
+
148
+ @ColumnAccessControl({
149
+ create: [
150
+ Permission.ProjectOwner,
151
+ Permission.ProjectAdmin,
152
+ Permission.CreateAlertEpisodeLabelRule,
153
+ ],
154
+ read: [
155
+ Permission.ProjectOwner,
156
+ Permission.ProjectAdmin,
157
+ Permission.ProjectMember,
158
+ Permission.Viewer,
159
+ Permission.AlertManager,
160
+ Permission.ReadAlertEpisodeLabelRule,
161
+ Permission.ReadAllProjectResources,
162
+ ],
163
+ update: [
164
+ Permission.ProjectOwner,
165
+ Permission.ProjectAdmin,
166
+ Permission.EditAlertEpisodeLabelRule,
167
+ ],
168
+ })
169
+ @Index()
170
+ @TableColumn({
171
+ required: true,
172
+ type: TableColumnType.ShortText,
173
+ canReadOnRelationQuery: true,
174
+ title: "Name",
175
+ description: "Name of this alert episode label rule",
176
+ })
177
+ @Column({
178
+ nullable: false,
179
+ type: ColumnType.ShortText,
180
+ length: ColumnLength.ShortText,
181
+ })
182
+ public name?: string = undefined;
183
+
184
+ @ColumnAccessControl({
185
+ create: [
186
+ Permission.ProjectOwner,
187
+ Permission.ProjectAdmin,
188
+ Permission.CreateAlertEpisodeLabelRule,
189
+ ],
190
+ read: [
191
+ Permission.ProjectOwner,
192
+ Permission.ProjectAdmin,
193
+ Permission.ProjectMember,
194
+ Permission.Viewer,
195
+ Permission.AlertManager,
196
+ Permission.ReadAlertEpisodeLabelRule,
197
+ Permission.ReadAllProjectResources,
198
+ ],
199
+ update: [
200
+ Permission.ProjectOwner,
201
+ Permission.ProjectAdmin,
202
+ Permission.EditAlertEpisodeLabelRule,
203
+ ],
204
+ })
205
+ @TableColumn({
206
+ required: false,
207
+ type: TableColumnType.LongText,
208
+ title: "Description",
209
+ description: "Description of this alert episode label rule",
210
+ })
211
+ @Column({
212
+ nullable: true,
213
+ type: ColumnType.LongText,
214
+ length: ColumnLength.LongText,
215
+ })
216
+ public description?: string = undefined;
217
+
218
+ @ColumnAccessControl({
219
+ create: [
220
+ Permission.ProjectOwner,
221
+ Permission.ProjectAdmin,
222
+ Permission.CreateAlertEpisodeLabelRule,
223
+ ],
224
+ read: [
225
+ Permission.ProjectOwner,
226
+ Permission.ProjectAdmin,
227
+ Permission.ProjectMember,
228
+ Permission.Viewer,
229
+ Permission.AlertManager,
230
+ Permission.ReadAlertEpisodeLabelRule,
231
+ Permission.ReadAllProjectResources,
232
+ ],
233
+ update: [
234
+ Permission.ProjectOwner,
235
+ Permission.ProjectAdmin,
236
+ Permission.EditAlertEpisodeLabelRule,
237
+ ],
238
+ })
239
+ @Index()
240
+ @TableColumn({
241
+ required: true,
242
+ type: TableColumnType.Boolean,
243
+ title: "Is Enabled",
244
+ description: "Whether this rule is enabled",
245
+ defaultValue: true,
246
+ isDefaultValueColumn: true,
247
+ })
248
+ @Column({
249
+ type: ColumnType.Boolean,
250
+ nullable: false,
251
+ default: true,
252
+ })
253
+ public isEnabled?: boolean = undefined;
254
+
255
+ @ColumnAccessControl({
256
+ create: [
257
+ Permission.ProjectOwner,
258
+ Permission.ProjectAdmin,
259
+ Permission.CreateAlertEpisodeLabelRule,
260
+ ],
261
+ read: [
262
+ Permission.ProjectOwner,
263
+ Permission.ProjectAdmin,
264
+ Permission.ProjectMember,
265
+ Permission.Viewer,
266
+ Permission.AlertManager,
267
+ Permission.ReadAlertEpisodeLabelRule,
268
+ Permission.ReadAllProjectResources,
269
+ ],
270
+ update: [
271
+ Permission.ProjectOwner,
272
+ Permission.ProjectAdmin,
273
+ Permission.EditAlertEpisodeLabelRule,
274
+ ],
275
+ })
276
+ @TableColumn({
277
+ required: false,
278
+ type: TableColumnType.EntityArray,
279
+ modelType: AlertSeverity,
280
+ title: "Alert Severities",
281
+ description:
282
+ "Only trigger for episodes with these severities. Leave empty to match any severity.",
283
+ })
284
+ @ManyToMany(
285
+ () => {
286
+ return AlertSeverity;
287
+ },
288
+ { eager: false },
289
+ )
290
+ @JoinTable({
291
+ name: "AlertEpisodeLabelRuleAlertSeverity",
292
+ inverseJoinColumn: {
293
+ name: "alertSeverityId",
294
+ referencedColumnName: "_id",
295
+ },
296
+ joinColumn: {
297
+ name: "alertEpisodeLabelRuleId",
298
+ referencedColumnName: "_id",
299
+ },
300
+ })
301
+ public alertSeverities?: Array<AlertSeverity> = undefined;
302
+
303
+ @ColumnAccessControl({
304
+ create: [
305
+ Permission.ProjectOwner,
306
+ Permission.ProjectAdmin,
307
+ Permission.CreateAlertEpisodeLabelRule,
308
+ ],
309
+ read: [
310
+ Permission.ProjectOwner,
311
+ Permission.ProjectAdmin,
312
+ Permission.ProjectMember,
313
+ Permission.Viewer,
314
+ Permission.AlertManager,
315
+ Permission.ReadAlertEpisodeLabelRule,
316
+ Permission.ReadAllProjectResources,
317
+ ],
318
+ update: [
319
+ Permission.ProjectOwner,
320
+ Permission.ProjectAdmin,
321
+ Permission.EditAlertEpisodeLabelRule,
322
+ ],
323
+ })
324
+ @TableColumn({
325
+ required: false,
326
+ type: TableColumnType.EntityArray,
327
+ modelType: Label,
328
+ title: "Episode Labels",
329
+ description:
330
+ "Only trigger for episodes that already have at least one of these labels.",
331
+ })
332
+ @ManyToMany(
333
+ () => {
334
+ return Label;
335
+ },
336
+ { eager: false },
337
+ )
338
+ @JoinTable({
339
+ name: "AlertEpisodeLabelRuleEpisodeLabel",
340
+ inverseJoinColumn: {
341
+ name: "labelId",
342
+ referencedColumnName: "_id",
343
+ },
344
+ joinColumn: {
345
+ name: "alertEpisodeLabelRuleId",
346
+ referencedColumnName: "_id",
347
+ },
348
+ })
349
+ public episodeLabels?: Array<Label> = undefined;
350
+
351
+ @ColumnAccessControl({
352
+ create: [
353
+ Permission.ProjectOwner,
354
+ Permission.ProjectAdmin,
355
+ Permission.CreateAlertEpisodeLabelRule,
356
+ ],
357
+ read: [
358
+ Permission.ProjectOwner,
359
+ Permission.ProjectAdmin,
360
+ Permission.ProjectMember,
361
+ Permission.Viewer,
362
+ Permission.AlertManager,
363
+ Permission.ReadAlertEpisodeLabelRule,
364
+ Permission.ReadAllProjectResources,
365
+ ],
366
+ update: [
367
+ Permission.ProjectOwner,
368
+ Permission.ProjectAdmin,
369
+ Permission.EditAlertEpisodeLabelRule,
370
+ ],
371
+ })
372
+ @TableColumn({
373
+ required: false,
374
+ type: TableColumnType.LongText,
375
+ title: "Episode Title Pattern",
376
+ description: "Regex (case-insensitive) matched against the episode title.",
377
+ })
378
+ @Column({
379
+ type: ColumnType.LongText,
380
+ nullable: true,
381
+ length: ColumnLength.LongText,
382
+ })
383
+ public episodeTitlePattern?: string = undefined;
384
+
385
+ @ColumnAccessControl({
386
+ create: [
387
+ Permission.ProjectOwner,
388
+ Permission.ProjectAdmin,
389
+ Permission.CreateAlertEpisodeLabelRule,
390
+ ],
391
+ read: [
392
+ Permission.ProjectOwner,
393
+ Permission.ProjectAdmin,
394
+ Permission.ProjectMember,
395
+ Permission.Viewer,
396
+ Permission.AlertManager,
397
+ Permission.ReadAlertEpisodeLabelRule,
398
+ Permission.ReadAllProjectResources,
399
+ ],
400
+ update: [
401
+ Permission.ProjectOwner,
402
+ Permission.ProjectAdmin,
403
+ Permission.EditAlertEpisodeLabelRule,
404
+ ],
405
+ })
406
+ @TableColumn({
407
+ required: false,
408
+ type: TableColumnType.LongText,
409
+ title: "Episode Description Pattern",
410
+ description:
411
+ "Regex (case-insensitive) matched against the episode description.",
412
+ })
413
+ @Column({
414
+ type: ColumnType.LongText,
415
+ nullable: true,
416
+ length: ColumnLength.LongText,
417
+ })
418
+ public episodeDescriptionPattern?: string = undefined;
419
+
420
+ // Action: Labels to add
421
+
422
+ @ColumnAccessControl({
423
+ create: [
424
+ Permission.ProjectOwner,
425
+ Permission.ProjectAdmin,
426
+ Permission.CreateAlertEpisodeLabelRule,
427
+ ],
428
+ read: [
429
+ Permission.ProjectOwner,
430
+ Permission.ProjectAdmin,
431
+ Permission.ProjectMember,
432
+ Permission.Viewer,
433
+ Permission.AlertManager,
434
+ Permission.ReadAlertEpisodeLabelRule,
435
+ Permission.ReadAllProjectResources,
436
+ ],
437
+ update: [
438
+ Permission.ProjectOwner,
439
+ Permission.ProjectAdmin,
440
+ Permission.EditAlertEpisodeLabelRule,
441
+ ],
442
+ })
443
+ @TableColumn({
444
+ required: false,
445
+ type: TableColumnType.EntityArray,
446
+ modelType: Label,
447
+ title: "Labels to Add",
448
+ description:
449
+ "Labels to attach to the episode when this rule matches. Already-attached labels are not duplicated.",
450
+ })
451
+ @ManyToMany(
452
+ () => {
453
+ return Label;
454
+ },
455
+ { eager: false },
456
+ )
457
+ @JoinTable({
458
+ name: "AlertEpisodeLabelRuleLabelToAdd",
459
+ inverseJoinColumn: {
460
+ name: "labelId",
461
+ referencedColumnName: "_id",
462
+ },
463
+ joinColumn: {
464
+ name: "alertEpisodeLabelRuleId",
465
+ referencedColumnName: "_id",
466
+ },
467
+ })
468
+ public labelsToAdd?: Array<Label> = undefined;
469
+
470
+ @ColumnAccessControl({
471
+ create: [
472
+ Permission.ProjectOwner,
473
+ Permission.ProjectAdmin,
474
+ Permission.CreateAlertEpisodeLabelRule,
475
+ ],
476
+ read: [
477
+ Permission.ProjectOwner,
478
+ Permission.ProjectAdmin,
479
+ Permission.ProjectMember,
480
+ Permission.Viewer,
481
+ Permission.AlertManager,
482
+ Permission.ReadAlertEpisodeLabelRule,
483
+ Permission.ReadAllProjectResources,
484
+ ],
485
+ update: [],
486
+ })
487
+ @TableColumn({
488
+ manyToOneRelationColumn: "createdByUserId",
489
+ type: TableColumnType.Entity,
490
+ modelType: User,
491
+ title: "Created by User",
492
+ description:
493
+ "Relation to User who created this object (if this object was created by a User)",
494
+ })
495
+ @ManyToOne(
496
+ () => {
497
+ return User;
498
+ },
499
+ {
500
+ eager: false,
501
+ nullable: true,
502
+ onDelete: "SET NULL",
503
+ orphanedRowAction: "nullify",
504
+ },
505
+ )
506
+ @JoinColumn({ name: "createdByUserId" })
507
+ public createdByUser?: User = undefined;
508
+
509
+ @ColumnAccessControl({
510
+ create: [
511
+ Permission.ProjectOwner,
512
+ Permission.ProjectAdmin,
513
+ Permission.CreateAlertEpisodeLabelRule,
514
+ ],
515
+ read: [
516
+ Permission.ProjectOwner,
517
+ Permission.ProjectAdmin,
518
+ Permission.ProjectMember,
519
+ Permission.Viewer,
520
+ Permission.AlertManager,
521
+ Permission.ReadAlertEpisodeLabelRule,
522
+ Permission.ReadAllProjectResources,
523
+ ],
524
+ update: [],
525
+ })
526
+ @TableColumn({
527
+ type: TableColumnType.ObjectID,
528
+ title: "Created by User ID",
529
+ description:
530
+ "User ID who created this object (if this object was created by a User)",
531
+ })
532
+ @Column({
533
+ type: ColumnType.ObjectID,
534
+ nullable: true,
535
+ transformer: ObjectID.getDatabaseTransformer(),
536
+ })
537
+ public createdByUserId?: ObjectID = undefined;
538
+
539
+ @ColumnAccessControl({
540
+ create: [],
541
+ read: [],
542
+ update: [],
543
+ })
544
+ @TableColumn({
545
+ manyToOneRelationColumn: "deletedByUserId",
546
+ type: TableColumnType.Entity,
547
+ title: "Deleted by User",
548
+ modelType: User,
549
+ description:
550
+ "Relation to User who deleted this object (if this object was deleted by a User)",
551
+ })
552
+ @ManyToOne(
553
+ () => {
554
+ return User;
555
+ },
556
+ {
557
+ cascade: false,
558
+ eager: false,
559
+ nullable: true,
560
+ onDelete: "SET NULL",
561
+ orphanedRowAction: "nullify",
562
+ },
563
+ )
564
+ @JoinColumn({ name: "deletedByUserId" })
565
+ public deletedByUser?: User = undefined;
566
+
567
+ @ColumnAccessControl({
568
+ create: [],
569
+ read: [],
570
+ update: [],
571
+ })
572
+ @TableColumn({
573
+ type: TableColumnType.ObjectID,
574
+ title: "Deleted by User ID",
575
+ description:
576
+ "User ID who deleted this object (if this object was deleted by a User)",
577
+ })
578
+ @Column({
579
+ type: ColumnType.ObjectID,
580
+ nullable: true,
581
+ transformer: ObjectID.getDatabaseTransformer(),
582
+ })
583
+ public deletedByUserId?: ObjectID = undefined;
584
+ }