@oneuptime/common 12.0.8 → 12.0.9

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 (769) hide show
  1. package/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.ts +1 -1
  2. package/Models/AnalyticsModels/MetricItemAggMV1mByService.ts +1 -1
  3. package/Models/DatabaseModels/AIConversation.ts +32 -0
  4. package/Models/DatabaseModels/AIConversationMessage.ts +41 -0
  5. package/Models/DatabaseModels/AlertEpisodeMember.ts +27 -0
  6. package/Models/DatabaseModels/IncidentEpisodeMember.ts +28 -0
  7. package/Models/DatabaseModels/Index.ts +12 -4
  8. package/Models/DatabaseModels/{TelemetryEntity.ts → InventoryItem.ts} +139 -9
  9. package/Models/DatabaseModels/InventoryItemCustomField.ts +434 -0
  10. package/Models/DatabaseModels/{TelemetryEntityRelationship.ts → InventoryItemRelationship.ts} +8 -8
  11. package/Models/DatabaseModels/NetworkDevice.ts +141 -0
  12. package/Models/DatabaseModels/NetworkDeviceLink.ts +699 -0
  13. package/Models/DatabaseModels/NetworkDeviceLinkRule.ts +467 -0
  14. package/Models/DatabaseModels/NetworkTopologySuppression.ts +429 -0
  15. package/Models/DatabaseModels/OnCallDutyPolicyFeed.ts +9 -0
  16. package/Models/DatabaseModels/Project.ts +78 -0
  17. package/Models/DatabaseModels/UserCall.ts +42 -0
  18. package/Models/DatabaseModels/UserEmail.ts +44 -0
  19. package/Models/DatabaseModels/UserNotificationRule.ts +425 -55
  20. package/Models/DatabaseModels/UserOnCallLogTimeline.ts +24 -2
  21. package/Models/DatabaseModels/UserPush.ts +49 -0
  22. package/Models/DatabaseModels/UserSMS.ts +43 -0
  23. package/Models/DatabaseModels/UserTelegram.ts +59 -0
  24. package/Models/DatabaseModels/UserWebhook.ts +52 -0
  25. package/Models/DatabaseModels/UserWhatsApp.ts +41 -0
  26. package/Models/DatabaseModels/WorkflowVariable.ts +12 -0
  27. package/Server/API/AIChatAPI.ts +315 -1
  28. package/Server/API/DashboardAPI.ts +217 -1
  29. package/Server/API/OnCallReadinessAPI.ts +841 -0
  30. package/Server/API/TeamComplianceAPI.ts +69 -17
  31. package/Server/API/TelemetryAPI.ts +220 -12
  32. package/Server/EnvironmentConfig.ts +52 -0
  33. package/Server/Infrastructure/Postgres/DataSourceOptions.ts +22 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.ts +4 -4
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.ts +5 -5
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1786625176831-AddMonitoringMethodToNetworkDevice.ts +35 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1786634985763-AddNetworkDeviceLink.ts +82 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/1786639512056-AddNetworkDeviceLinkRule.ts +91 -0
  39. package/Server/Infrastructure/Postgres/SchemaMigrations/1786639972982-AddNetworkTopologySuppression.ts +47 -0
  40. package/Server/Infrastructure/Postgres/SchemaMigrations/1786800000000-RenameTelemetryEntityToInventoryItem.ts +255 -0
  41. package/Server/Infrastructure/Postgres/SchemaMigrations/1786900000000-AddInventoryItemArchiveAndCustomFields.ts +107 -0
  42. package/Server/Infrastructure/Postgres/SchemaMigrations/1787000000000-AddOnCallNotificationFallbackColumns.ts +90 -0
  43. package/Server/Infrastructure/Postgres/SchemaMigrations/1787100000000-AddAIConversationPageContext.ts +39 -0
  44. package/Server/Infrastructure/Postgres/SchemaMigrations/1787200000000-AddAIChatMessageFeedback.ts +33 -0
  45. package/Server/Infrastructure/Postgres/SchemaMigrations/1787300000000-AddEpisodeMemberNotifyIndexes.ts +59 -0
  46. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +20 -0
  47. package/Server/Infrastructure/Queue.ts +78 -13
  48. package/Server/Middleware/PublicDashboardRateLimit.ts +593 -0
  49. package/Server/Services/AIService.ts +7 -0
  50. package/Server/Services/AlertEpisodeStateTimelineService.ts +29 -0
  51. package/Server/Services/AlertSeverityService.ts +63 -0
  52. package/Server/Services/DashboardService.ts +9 -10
  53. package/Server/Services/DatabaseService.ts +32 -2
  54. package/Server/Services/IncidentEpisodeStateTimelineService.ts +29 -0
  55. package/Server/Services/IncidentSeverityService.ts +76 -0
  56. package/Server/Services/Index.ts +12 -4
  57. package/Server/Services/InventoryItemCustomFieldService.ts +9 -0
  58. package/Server/Services/{TelemetryEntityRelationshipService.ts → InventoryItemRelationshipService.ts} +4 -4
  59. package/Server/Services/{TelemetryEntityService.ts → InventoryItemService.ts} +89 -20
  60. package/Server/Services/LogAggregationService.ts +45 -8
  61. package/Server/Services/MetricAggregationService.ts +121 -0
  62. package/Server/Services/MetricService.ts +7 -7
  63. package/Server/Services/NetworkDeviceLinkRuleService.ts +10 -0
  64. package/Server/Services/NetworkDeviceLinkService.ts +84 -0
  65. package/Server/Services/NetworkDeviceService.ts +140 -0
  66. package/Server/Services/NetworkSiteService.ts +77 -25
  67. package/Server/Services/NetworkTopologySuppressionService.ts +84 -0
  68. package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +41 -29
  69. package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +8 -0
  70. package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +62 -13
  71. package/Server/Services/OnCallDutyPolicyScheduleService.ts +61 -1
  72. package/Server/Services/OnCallNotificationAlertingService.ts +742 -0
  73. package/Server/Services/OnCallReadinessService.ts +2803 -0
  74. package/Server/Services/OnCallSetupReminderService.ts +955 -0
  75. package/Server/Services/ProfileAggregationService.ts +123 -0
  76. package/Server/Services/StatusPageService.ts +9 -10
  77. package/Server/Services/TeamComplianceService.ts +429 -252
  78. package/Server/Services/UserCallService.ts +26 -1
  79. package/Server/Services/UserEmailService.ts +26 -1
  80. package/Server/Services/UserNotificationRuleAdminService.ts +1183 -0
  81. package/Server/Services/UserNotificationRuleService.ts +3812 -333
  82. package/Server/Services/UserOnCallLogService.ts +561 -48
  83. package/Server/Services/UserPushService.ts +29 -0
  84. package/Server/Services/UserService.ts +11 -0
  85. package/Server/Services/UserSmsService.ts +26 -1
  86. package/Server/Services/UserTelegramService.ts +24 -1
  87. package/Server/Services/UserWebhookService.ts +28 -1
  88. package/Server/Services/UserWhatsAppService.ts +24 -1
  89. package/Server/Types/Database/Permissions/BasePermission.ts +19 -0
  90. package/Server/Types/Database/Permissions/CreatePermission.ts +164 -0
  91. package/Server/Types/Database/Permissions/OwnerOnlyColumnPermission.ts +340 -0
  92. package/Server/Types/Database/Permissions/QueryPermission.ts +48 -0
  93. package/Server/Types/Database/Permissions/TenantPermission.ts +8 -1
  94. package/Server/Types/Workflow/Components/API/Delete.ts +1 -1
  95. package/Server/Types/Workflow/Components/API/Get.ts +1 -1
  96. package/Server/Types/Workflow/Components/API/Patch.ts +1 -1
  97. package/Server/Types/Workflow/Components/API/Post.ts +1 -1
  98. package/Server/Types/Workflow/Components/API/Put.ts +1 -1
  99. package/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.ts +29 -5
  100. package/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.ts +18 -10
  101. package/Server/Types/Workflow/Components/BaseModel/ModelArguments.ts +55 -0
  102. package/Server/Types/Workflow/Components/Conditions/IfElse.ts +3 -17
  103. package/Server/Types/Workflow/Components/Email.ts +25 -7
  104. package/Server/Types/Workflow/Components/JavaScript.ts +10 -3
  105. package/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.ts +1 -1
  106. package/Server/Utils/AI/Chat/ChatAgentRunner.ts +643 -48
  107. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +32 -3
  108. package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +20 -6
  109. package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +7 -0
  110. package/Server/Utils/AI/Toolbox/AIActionTools.ts +2 -2
  111. package/Server/Utils/AI/Toolbox/AIMetaTools.ts +863 -0
  112. package/Server/Utils/AI/Toolbox/AlertTools.ts +177 -15
  113. package/Server/Utils/AI/Toolbox/IncidentTools.ts +191 -10
  114. package/Server/Utils/AI/Toolbox/Index.ts +48 -0
  115. package/Server/Utils/AI/Toolbox/MonitorTools.ts +298 -11
  116. package/Server/Utils/AI/Toolbox/NoteWriteTools.ts +295 -0
  117. package/Server/Utils/AI/Toolbox/OnCallTools.ts +1246 -0
  118. package/Server/Utils/AI/Toolbox/RunbookTools.ts +424 -0
  119. package/Server/Utils/AI/Toolbox/SloTools.ts +456 -0
  120. package/Server/Utils/AI/Toolbox/StatusPageTools.ts +559 -0
  121. package/Server/Utils/AI/Toolbox/TeamTools.ts +327 -0
  122. package/Server/Utils/AI/Toolbox/TimelineTools.ts +615 -0
  123. package/Server/Utils/AI/Toolbox/WorkflowProbeTools.ts +664 -0
  124. package/Server/Utils/ClientIp.ts +221 -0
  125. package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +47 -0
  126. package/Server/Utils/Dashboard/PublicDashboardSloHistoryPolicy.ts +163 -0
  127. package/Server/Utils/Dashboard/PublicDashboardSloWidget.ts +147 -0
  128. package/Server/Utils/Express.ts +12 -17
  129. package/Server/Utils/LLM/LLMService.ts +85 -8
  130. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +204 -10
  131. package/Server/Utils/SSRFProtection.ts +98 -23
  132. package/Server/Utils/StartServer.ts +12 -3
  133. package/Server/Utils/Telemetry/EntityRegistry.ts +205 -18
  134. package/Server/Utils/Telemetry/InventoryEntityRegistry.ts +25 -25
  135. package/Server/Utils/Telemetry/TelemetryEntity.ts +160 -52
  136. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +7 -3
  137. package/Tests/App/Dashboard/AdminNotificationRulesPage.test.tsx +2146 -0
  138. package/Tests/App/Dashboard/CreateWorkflowModal.test.tsx +561 -0
  139. package/Tests/App/Dashboard/EscalationRuleReadiness.test.tsx +2470 -0
  140. package/Tests/App/Dashboard/OnCallPreventionGuards.test.tsx +1897 -0
  141. package/Tests/App/Dashboard/OnCallReadinessSurfaces.test.tsx +3606 -0
  142. package/Tests/App/Dashboard/OnCallRulesDeleteGuard.test.tsx +784 -0
  143. package/Tests/App/Dashboard/OnCallRulesTable.test.tsx +1119 -0
  144. package/Tests/App/Dashboard/SloWidgetFetching.test.tsx +531 -0
  145. package/Tests/App/Dashboard/UserSettingsSetupChecklistModel.test.ts +1312 -0
  146. package/Tests/App/Dashboard/UserSettingsSetupChecklistPage.test.tsx +1390 -0
  147. package/Tests/Models/InventoryItemModel.test.ts +174 -0
  148. package/Tests/Models/InventoryItemNaming.test.ts +302 -0
  149. package/Tests/Server/API/AIChatCancelAndFeedback.test.ts +437 -0
  150. package/Tests/Server/API/DashboardPublicRateLimit.test.ts +659 -0
  151. package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +18 -0
  152. package/Tests/Server/API/DashboardPublicSloAPI.test.ts +880 -0
  153. package/Tests/Server/API/Helpers.ts +24 -15
  154. package/Tests/Server/API/OnCallReadinessAPI.test.ts +2680 -0
  155. package/Tests/Server/API/OnCallSetupReminderAPI.test.ts +915 -0
  156. package/Tests/Server/Infrastructure/Postgres/EpisodeMemberNotifyIndexesMigration.test.ts +533 -0
  157. package/Tests/Server/Infrastructure/Postgres/InventoryItemArchiveMigration.test.ts +213 -0
  158. package/Tests/Server/Infrastructure/Postgres/RenameInventoryItemMigration.test.ts +432 -0
  159. package/Tests/Server/Infrastructure/Queue.test.ts +293 -0
  160. package/Tests/Server/Middleware/PublicDashboardRateLimit.test.ts +1645 -0
  161. package/Tests/Server/Services/AdminRuleEditGuards.test.ts +2848 -0
  162. package/Tests/Server/Services/DeliverNotificationForRuleExtraction.test.ts +1393 -0
  163. package/Tests/Server/Services/EpisodeRuleSeverityRepair.test.ts +1802 -0
  164. package/Tests/Server/Services/EpisodeStateTimelineNote.test.ts +304 -0
  165. package/Tests/Server/Services/InventoryItemDisplayName.test.ts +339 -0
  166. package/Tests/Server/Services/{TelemetryEntityManualCreate.test.ts → InventoryItemManualCreate.test.ts} +27 -27
  167. package/Tests/Server/Services/IpAllowlistSpoofing.test.ts +450 -0
  168. package/Tests/Server/Services/LogAggregationService.test.ts +235 -1
  169. package/Tests/Server/Services/MetricAggregationService.test.ts +231 -0
  170. package/Tests/Server/Services/MetricEntityMVKeyParity.test.ts +80 -29
  171. package/Tests/Server/Services/MetricServiceAggregate.test.ts +30 -30
  172. package/Tests/Server/Services/NetworkSiteService.test.ts +18 -3
  173. package/Tests/Server/Services/NotificationChannelEventCoverage.test.ts +1728 -0
  174. package/Tests/Server/Services/NotificationDeletionImpact.test.ts +2402 -0
  175. package/Tests/Server/Services/OnCallDutyPolicyExecutionLogTimelineGapFeed.test.ts +394 -0
  176. package/Tests/Server/Services/OnCallNotificationFallback.test.ts +1744 -0
  177. package/Tests/Server/Services/OnCallReadinessService.test.ts +4295 -0
  178. package/Tests/Server/Services/OnCallSetupReminder.test.ts +1272 -0
  179. package/Tests/Server/Services/OnCallWeeklyReadinessDigest.test.ts +1021 -0
  180. package/Tests/Server/Services/ProfileAggregationService.test.ts +296 -0
  181. package/Tests/Server/Services/SeverityCreationRuleBackfill.test.ts +1536 -0
  182. package/Tests/Server/Services/SeverityRuleBackfill.test.ts +1818 -0
  183. package/Tests/Server/Services/TeamComplianceServiceBehaviour.test.ts +1845 -0
  184. package/Tests/Server/Services/UserNotificationRuleAdminGuards.test.ts +1394 -0
  185. package/Tests/Server/Services/UserNotificationRuleDefaultCreation.test.ts +1166 -0
  186. package/Tests/Server/Services/UserNotificationRuleExecuteItem.test.ts +1468 -0
  187. package/Tests/Server/Services/UserOnCallLogNoNotificationRules.test.ts +1457 -0
  188. package/Tests/Server/Types/Database/Permissions/AdminNotificationRuleAccess.test.ts +1546 -0
  189. package/Tests/Server/Types/Database/Permissions/CreateOwnershipScoping.test.ts +529 -0
  190. package/Tests/Server/Types/Database/Permissions/OwnerOnlyColumns.test.ts +1219 -0
  191. package/Tests/Server/Types/Database/Permissions/UserNotificationRuleScoping.test.ts +1089 -0
  192. package/Tests/Server/Types/Workflow/Components/ApiComponentErrorPort.test.ts +2 -1
  193. package/Tests/Server/Types/Workflow/Components/BaseModelDatabaseComponents.test.ts +190 -0
  194. package/Tests/Server/Types/Workflow/Components/ChatWebhookComponents.test.ts +44 -14
  195. package/Tests/Server/Types/Workflow/Components/Email.test.ts +151 -0
  196. package/Tests/Server/Types/Workflow/Components/IfElse.test.ts +98 -0
  197. package/Tests/Server/Types/Workflow/Components/JavaScript.test.ts +51 -0
  198. package/Tests/Server/Utils/AI/AIMetaTools.test.ts +586 -0
  199. package/Tests/Server/Utils/AI/AlertMonitorFilters.test.ts +582 -0
  200. package/Tests/Server/Utils/AI/ChatAgentRunner.test.ts +726 -0
  201. package/Tests/Server/Utils/AI/IncidentToolsFilters.test.ts +315 -0
  202. package/Tests/Server/Utils/AI/LLMServiceStopReason.test.ts +314 -0
  203. package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +26 -3
  204. package/Tests/Server/Utils/AI/NoteWriteTools.test.ts +268 -0
  205. package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +169 -0
  206. package/Tests/Server/Utils/AI/OnCallTools.test.ts +664 -0
  207. package/Tests/Server/Utils/AI/RunbookTools.test.ts +325 -0
  208. package/Tests/Server/Utils/AI/SloTools.test.ts +306 -0
  209. package/Tests/Server/Utils/AI/StatusPageTools.test.ts +391 -0
  210. package/Tests/Server/Utils/AI/TeamTools.test.ts +257 -0
  211. package/Tests/Server/Utils/AI/TimelineTools.test.ts +472 -0
  212. package/Tests/Server/Utils/AI/WorkflowProbeTools.test.ts +428 -0
  213. package/Tests/Server/Utils/ClientIp.test.ts +438 -0
  214. package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +171 -0
  215. package/Tests/Server/Utils/Dashboard/PublicDashboardSloHistoryPolicy.test.ts +383 -0
  216. package/Tests/Server/Utils/EntityRegistryRowFence.test.ts +23 -25
  217. package/Tests/Server/Utils/MicrosoftTeamsWebhookUrlValidation.test.ts +6 -0
  218. package/Tests/Server/Utils/Monitor/Criteria/DnssecMonitorCriteria.test.ts +307 -0
  219. package/Tests/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.test.ts +468 -0
  220. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorTelemetryDeepLinks.test.ts +460 -0
  221. package/Tests/Server/Utils/ResponseRateLimitStatusCodes.test.ts +137 -0
  222. package/Tests/Server/Utils/SSRFProtectionBypasses.test.ts +40 -8
  223. package/Tests/Server/Utils/SSRFProtectionUserInfo.test.ts +351 -0
  224. package/Tests/Server/Utils/Telemetry/EntityRegistryRetirement.test.ts +531 -0
  225. package/Tests/Server/Utils/Telemetry/InventoryEntityRegistry.test.ts +15 -15
  226. package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +356 -39
  227. package/Tests/Types/IP/IP.test.ts +263 -0
  228. package/Tests/Types/IP/IPWhitelist.test.ts +197 -0
  229. package/Tests/Types/IP/IPv6.test.ts +12 -1
  230. package/Tests/Types/Monitor/SnmpOid.test.ts +64 -0
  231. package/Tests/Types/NetworkDevice/NetworkDeviceMonitoringMethod.test.ts +110 -0
  232. package/Tests/Types/OnCallDutyPolicy/LayerUtilMergeAudit.test.ts +106 -0
  233. package/Tests/Types/OnCallDutyPolicy/LayerUtilMergeDifferential.test.ts +511 -0
  234. package/Tests/Types/OnCallDutyPolicy/ScheduleCoverageEndToEnd.test.ts +489 -0
  235. package/Tests/Types/OnCallDutyPolicy/ScheduleCoverageGapTolerance.test.ts +479 -0
  236. package/Tests/Types/OnCallDutyPolicy/ScheduleCoverageState.test.ts +822 -0
  237. package/Tests/Types/Telemetry/EntityTypeGroups.test.ts +6 -6
  238. package/Tests/Types/Workflow/BaseModelComponents.test.ts +429 -0
  239. package/Tests/Types/Workflow/Components/BaseModel.test.ts +225 -0
  240. package/Tests/Types/Workflow/IntegrationCredentialMetadata.test.ts +100 -0
  241. package/Tests/Types/Workflow/TemplateSyntax.test.ts +112 -0
  242. package/Tests/Types/Workflow/Templates.test.ts +916 -101
  243. package/Tests/UI/Components/ActiveFilterChipsOpenRoute.test.tsx +82 -0
  244. package/Tests/UI/Components/ComponentsModal.test.tsx +564 -7
  245. package/Tests/UI/Components/KeyboardShortcut.test.tsx +95 -0
  246. package/Tests/UI/Components/LogDetailsPanelCrossSignal.test.tsx +448 -0
  247. package/Tests/UI/Components/LogsTableCrossLinks.test.tsx +263 -0
  248. package/Tests/UI/Components/PendingProjectInvitations.test.tsx +913 -0
  249. package/Tests/UI/Components/SimpleLogViewer.test.tsx +228 -0
  250. package/Tests/UI/Components/TableRowSelectability.test.tsx +312 -0
  251. package/Tests/UI/Components/Workflow/GraphLint.test.ts +72 -0
  252. package/Tests/UI/Components/Workflow/GraphLintSummary.test.ts +755 -0
  253. package/Tests/UI/Components/Workflow/ModelColumnEditor.test.ts +242 -7
  254. package/Tests/UI/Components/Workflow/ModelColumnEditorServerContract.test.ts +15 -7
  255. package/Tests/UI/Components/Workflow/ModelSchema.test.ts +242 -28
  256. package/Tests/UI/Components/Workflow/RunStatusWatcher.test.ts +59 -1
  257. package/Tests/UI/Components/Workflow/StepTraceViewer.test.tsx +256 -0
  258. package/Tests/UI/Components/Workflow/UseRunWatch.test.tsx +665 -0
  259. package/Tests/UI/Components/Workflow/WorkflowIssuesModal.test.tsx +485 -0
  260. package/Tests/UI/Components/Workflow/WorkflowLogModal.test.tsx +478 -0
  261. package/Tests/UI/Components/Workflow/WorkflowStatusBar.test.tsx +379 -0
  262. package/Tests/UI/EsbuildConfig.test.ts +607 -0
  263. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +5 -0
  264. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +11 -4
  265. package/Tests/UI/Utils/ModelAPICreateMiscData.test.ts +94 -0
  266. package/Tests/UI/Utils/Platform.test.ts +147 -0
  267. package/Tests/UI/Utils/ProjectInvitationDisplay.test.ts +357 -0
  268. package/Tests/Utils/Monitor/NetworkDeviceLinkRuleUtil.test.ts +198 -0
  269. package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +487 -0
  270. package/Tests/Utils/Telemetry/CrossSignalScope.test.ts +698 -0
  271. package/Tests/__mocks__/bullmq.js +55 -0
  272. package/Types/AI/AIChatMessageStatus.ts +8 -1
  273. package/Types/AI/AIChatTypes.ts +12 -0
  274. package/Types/Database/AccessControl/OwnerOnlyColumn.ts +88 -0
  275. package/Types/Exception/ExceptionCode.ts +2 -0
  276. package/Types/Exception/ServiceUnavailableException.ts +8 -0
  277. package/Types/Exception/TooManyRequestsException.ts +8 -0
  278. package/Types/IP/IP.ts +93 -47
  279. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +49 -3
  280. package/Types/NetworkDevice/NetworkDeviceMonitoringMethod.ts +55 -0
  281. package/Types/OnCallDutyPolicy/Layer.ts +203 -149
  282. package/Types/OnCallDutyPolicy/OnCallDutyPolicyStatus.ts +13 -0
  283. package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +155 -10
  284. package/Types/Permission.ts +193 -0
  285. package/Types/Telemetry/EntityRelationshipType.ts +1 -1
  286. package/Types/Telemetry/EntitySource.ts +1 -1
  287. package/Types/Telemetry/EntityType.ts +1 -1
  288. package/Types/Telemetry/EntityTypeGroups.ts +1 -1
  289. package/Types/Workflow/Components/BaseModel.ts +75 -29
  290. package/Types/Workflow/Components/Discord.ts +1 -0
  291. package/Types/Workflow/Components/Email.ts +12 -3
  292. package/Types/Workflow/Components/JavaScript.ts +7 -0
  293. package/Types/Workflow/Components/MicrosoftTeams.ts +3 -2
  294. package/Types/Workflow/Components/Slack.ts +1 -0
  295. package/Types/Workflow/Components/Telegram.ts +1 -0
  296. package/Types/Workflow/TemplateSyntax.ts +44 -0
  297. package/Types/Workflow/Templates.ts +2097 -45
  298. package/UI/Components/Calendar/Calendar.css +43 -0
  299. package/UI/Components/Calendar/Calendar.tsx +8 -0
  300. package/UI/Components/Card/Card.tsx +2 -2
  301. package/UI/Components/Checkbox/Checkbox.tsx +16 -0
  302. package/UI/Components/Dictionary/Dictionary.tsx +48 -9
  303. package/UI/Components/FormModal/BasicFormModal.tsx +2 -1
  304. package/UI/Components/Header/HeaderIconDropdownButton.tsx +53 -3
  305. package/UI/Components/Input/Input.tsx +1 -0
  306. package/UI/Components/KeyboardShortcut/KeyboardKey.ts +185 -0
  307. package/UI/Components/KeyboardShortcut/KeyboardShortcut.tsx +87 -0
  308. package/UI/Components/LogsViewer/LogsViewer.tsx +28 -0
  309. package/UI/Components/LogsViewer/components/ActiveFilterChips.tsx +31 -0
  310. package/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.tsx +18 -18
  311. package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +363 -14
  312. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +11 -0
  313. package/UI/Components/LogsViewer/components/LogsTable.tsx +155 -12
  314. package/UI/Components/LogsViewer/components/LogsViewerToolbar.tsx +29 -0
  315. package/UI/Components/LogsViewer/types.ts +23 -0
  316. package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +9 -2
  317. package/UI/Components/Navbar/NavBarMenuModal.tsx +15 -30
  318. package/UI/Components/ProjectInvitations/PendingProjectInvitations.tsx +442 -0
  319. package/UI/Components/SimpleLogViewer/SimpleLogViewer.tsx +23 -1
  320. package/UI/Components/Table/Table.tsx +49 -16
  321. package/UI/Components/Table/TableBody.tsx +53 -28
  322. package/UI/Components/Table/TableHeader.tsx +13 -0
  323. package/UI/Components/Table/TableRow.tsx +58 -26
  324. package/UI/Components/Workflow/ArgumentsForm.tsx +155 -9
  325. package/UI/Components/Workflow/ComponentReturnValueViewer.tsx +26 -0
  326. package/UI/Components/Workflow/ComponentSettingsModal.tsx +10 -1
  327. package/UI/Components/Workflow/ComponentValuePickerModal.tsx +135 -7
  328. package/UI/Components/Workflow/ComponentsModal.tsx +116 -22
  329. package/UI/Components/Workflow/DocumentationViewer.tsx +59 -9
  330. package/UI/Components/Workflow/GraphLint.ts +42 -5
  331. package/UI/Components/Workflow/GraphLintSummary.ts +390 -0
  332. package/UI/Components/Workflow/ModelColumnEditor.tsx +154 -22
  333. package/UI/Components/Workflow/ModelSchema.ts +115 -33
  334. package/UI/Components/Workflow/RunStatusWatcher.ts +1 -1
  335. package/UI/Components/Workflow/StepTraceViewer.tsx +1 -1
  336. package/UI/Components/Workflow/UseRunWatch.ts +212 -0
  337. package/UI/Components/Workflow/VariableModal.tsx +6 -2
  338. package/UI/Components/Workflow/Workflow.tsx +49 -3
  339. package/UI/Components/Workflow/WorkflowIssuesModal.tsx +255 -0
  340. package/UI/Components/Workflow/WorkflowLogModal.tsx +128 -0
  341. package/UI/Components/Workflow/WorkflowStatusBar.tsx +224 -0
  342. package/UI/Utils/AIChatExport/ConversationMarkdown.ts +10 -0
  343. package/UI/Utils/ModelAPI/ModelAPI.ts +7 -1
  344. package/UI/Utils/Platform.ts +149 -0
  345. package/UI/Utils/ProjectInvitationDisplay.ts +118 -0
  346. package/UI/esbuild-config.js +22 -1
  347. package/Utils/Monitor/NetworkDeviceLinkRuleUtil.ts +187 -0
  348. package/Utils/Monitor/NetworkTopologyUtil.ts +888 -164
  349. package/Utils/Telemetry/CrossSignalScope.ts +502 -0
  350. package/Utils/Telemetry/EntityKey.ts +5 -5
  351. package/Utils/Telemetry/EntityRelationship.ts +1 -1
  352. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js +1 -1
  353. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js +1 -1
  354. package/build/dist/Models/DatabaseModels/AIConversation.js +32 -0
  355. package/build/dist/Models/DatabaseModels/AIConversation.js.map +1 -1
  356. package/build/dist/Models/DatabaseModels/AIConversationMessage.js +42 -0
  357. package/build/dist/Models/DatabaseModels/AIConversationMessage.js.map +1 -1
  358. package/build/dist/Models/DatabaseModels/AlertEpisodeMember.js +28 -0
  359. package/build/dist/Models/DatabaseModels/AlertEpisodeMember.js.map +1 -1
  360. package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js +29 -0
  361. package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js.map +1 -1
  362. package/build/dist/Models/DatabaseModels/Index.js +12 -4
  363. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  364. package/build/dist/Models/DatabaseModels/{TelemetryEntity.js → InventoryItem.js} +167 -31
  365. package/build/dist/Models/DatabaseModels/InventoryItem.js.map +1 -0
  366. package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js +454 -0
  367. package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js.map +1 -0
  368. package/build/dist/Models/DatabaseModels/{TelemetryEntityRelationship.js → InventoryItemRelationship.js} +27 -27
  369. package/build/dist/Models/DatabaseModels/InventoryItemRelationship.js.map +1 -0
  370. package/build/dist/Models/DatabaseModels/NetworkDevice.js +141 -0
  371. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  372. package/build/dist/Models/DatabaseModels/NetworkDeviceLink.js +719 -0
  373. package/build/dist/Models/DatabaseModels/NetworkDeviceLink.js.map +1 -0
  374. package/build/dist/Models/DatabaseModels/NetworkDeviceLinkRule.js +475 -0
  375. package/build/dist/Models/DatabaseModels/NetworkDeviceLinkRule.js.map +1 -0
  376. package/build/dist/Models/DatabaseModels/NetworkTopologySuppression.js +446 -0
  377. package/build/dist/Models/DatabaseModels/NetworkTopologySuppression.js.map +1 -0
  378. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyFeed.js +9 -0
  379. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyFeed.js.map +1 -1
  380. package/build/dist/Models/DatabaseModels/Project.js +80 -0
  381. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  382. package/build/dist/Models/DatabaseModels/UserCall.js +46 -2
  383. package/build/dist/Models/DatabaseModels/UserCall.js.map +1 -1
  384. package/build/dist/Models/DatabaseModels/UserEmail.js +48 -2
  385. package/build/dist/Models/DatabaseModels/UserEmail.js.map +1 -1
  386. package/build/dist/Models/DatabaseModels/UserNotificationRule.js +424 -55
  387. package/build/dist/Models/DatabaseModels/UserNotificationRule.js.map +1 -1
  388. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +24 -2
  389. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
  390. package/build/dist/Models/DatabaseModels/UserPush.js +51 -1
  391. package/build/dist/Models/DatabaseModels/UserPush.js.map +1 -1
  392. package/build/dist/Models/DatabaseModels/UserSMS.js +47 -2
  393. package/build/dist/Models/DatabaseModels/UserSMS.js.map +1 -1
  394. package/build/dist/Models/DatabaseModels/UserTelegram.js +65 -3
  395. package/build/dist/Models/DatabaseModels/UserTelegram.js.map +1 -1
  396. package/build/dist/Models/DatabaseModels/UserWebhook.js +56 -2
  397. package/build/dist/Models/DatabaseModels/UserWebhook.js.map +1 -1
  398. package/build/dist/Models/DatabaseModels/UserWhatsApp.js +45 -2
  399. package/build/dist/Models/DatabaseModels/UserWhatsApp.js.map +1 -1
  400. package/build/dist/Models/DatabaseModels/WorkflowVariable.js +12 -0
  401. package/build/dist/Models/DatabaseModels/WorkflowVariable.js.map +1 -1
  402. package/build/dist/Server/API/AIChatAPI.js +237 -1
  403. package/build/dist/Server/API/AIChatAPI.js.map +1 -1
  404. package/build/dist/Server/API/DashboardAPI.js +165 -13
  405. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  406. package/build/dist/Server/API/OnCallReadinessAPI.js +599 -0
  407. package/build/dist/Server/API/OnCallReadinessAPI.js.map +1 -0
  408. package/build/dist/Server/API/TeamComplianceAPI.js +68 -9
  409. package/build/dist/Server/API/TeamComplianceAPI.js.map +1 -1
  410. package/build/dist/Server/API/TelemetryAPI.js +129 -18
  411. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  412. package/build/dist/Server/EnvironmentConfig.js +45 -0
  413. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  414. package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js +22 -0
  415. package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js.map +1 -1
  416. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.js +4 -4
  417. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786625176831-AddMonitoringMethodToNetworkDevice.js +18 -0
  418. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786625176831-AddMonitoringMethodToNetworkDevice.js.map +1 -0
  419. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786634985763-AddNetworkDeviceLink.js +39 -0
  420. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786634985763-AddNetworkDeviceLink.js.map +1 -0
  421. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786639512056-AddNetworkDeviceLinkRule.js +38 -0
  422. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786639512056-AddNetworkDeviceLinkRule.js.map +1 -0
  423. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786639972982-AddNetworkTopologySuppression.js +22 -0
  424. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786639972982-AddNetworkTopologySuppression.js.map +1 -0
  425. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786800000000-RenameTelemetryEntityToInventoryItem.js +150 -0
  426. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786800000000-RenameTelemetryEntityToInventoryItem.js.map +1 -0
  427. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786900000000-AddInventoryItemArchiveAndCustomFields.js +57 -0
  428. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786900000000-AddInventoryItemArchiveAndCustomFields.js.map +1 -0
  429. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787000000000-AddOnCallNotificationFallbackColumns.js +69 -0
  430. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787000000000-AddOnCallNotificationFallbackColumns.js.map +1 -0
  431. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787100000000-AddAIConversationPageContext.js +32 -0
  432. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787100000000-AddAIConversationPageContext.js.map +1 -0
  433. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787200000000-AddAIChatMessageFeedback.js +26 -0
  434. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787200000000-AddAIChatMessageFeedback.js.map +1 -0
  435. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787300000000-AddEpisodeMemberNotifyIndexes.js +48 -0
  436. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787300000000-AddEpisodeMemberNotifyIndexes.js.map +1 -0
  437. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +20 -0
  438. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  439. package/build/dist/Server/Infrastructure/Queue.js +72 -13
  440. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  441. package/build/dist/Server/Middleware/PublicDashboardRateLimit.js +399 -0
  442. package/build/dist/Server/Middleware/PublicDashboardRateLimit.js.map +1 -0
  443. package/build/dist/Server/Services/AIService.js +1 -0
  444. package/build/dist/Server/Services/AIService.js.map +1 -1
  445. package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js +24 -3
  446. package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js.map +1 -1
  447. package/build/dist/Server/Services/AlertSeverityService.js +54 -0
  448. package/build/dist/Server/Services/AlertSeverityService.js.map +1 -1
  449. package/build/dist/Server/Services/DashboardService.js +10 -9
  450. package/build/dist/Server/Services/DashboardService.js.map +1 -1
  451. package/build/dist/Server/Services/DatabaseService.js +24 -2
  452. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  453. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js +24 -3
  454. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js.map +1 -1
  455. package/build/dist/Server/Services/IncidentSeverityService.js +67 -0
  456. package/build/dist/Server/Services/IncidentSeverityService.js.map +1 -1
  457. package/build/dist/Server/Services/Index.js +12 -4
  458. package/build/dist/Server/Services/Index.js.map +1 -1
  459. package/build/dist/Server/Services/InventoryItemCustomFieldService.js +9 -0
  460. package/build/dist/Server/Services/InventoryItemCustomFieldService.js.map +1 -0
  461. package/build/dist/Server/Services/{TelemetryEntityRelationshipService.js → InventoryItemRelationshipService.js} +6 -6
  462. package/build/dist/Server/Services/InventoryItemRelationshipService.js.map +1 -0
  463. package/build/dist/Server/Services/{TelemetryEntityService.js → InventoryItemService.js} +68 -23
  464. package/build/dist/Server/Services/InventoryItemService.js.map +1 -0
  465. package/build/dist/Server/Services/LogAggregationService.js +27 -8
  466. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  467. package/build/dist/Server/Services/MetricAggregationService.js +80 -0
  468. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  469. package/build/dist/Server/Services/MetricService.js +6 -6
  470. package/build/dist/Server/Services/MetricService.js.map +1 -1
  471. package/build/dist/Server/Services/NetworkDeviceLinkRuleService.js +9 -0
  472. package/build/dist/Server/Services/NetworkDeviceLinkRuleService.js.map +1 -0
  473. package/build/dist/Server/Services/NetworkDeviceLinkService.js +71 -0
  474. package/build/dist/Server/Services/NetworkDeviceLinkService.js.map +1 -0
  475. package/build/dist/Server/Services/NetworkDeviceService.js +113 -0
  476. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  477. package/build/dist/Server/Services/NetworkSiteService.js +53 -13
  478. package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
  479. package/build/dist/Server/Services/NetworkTopologySuppressionService.js +85 -0
  480. package/build/dist/Server/Services/NetworkTopologySuppressionService.js.map +1 -0
  481. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +48 -32
  482. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
  483. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +8 -0
  484. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
  485. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +51 -12
  486. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
  487. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +57 -13
  488. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  489. package/build/dist/Server/Services/OnCallNotificationAlertingService.js +548 -0
  490. package/build/dist/Server/Services/OnCallNotificationAlertingService.js.map +1 -0
  491. package/build/dist/Server/Services/OnCallReadinessService.js +1961 -0
  492. package/build/dist/Server/Services/OnCallReadinessService.js.map +1 -0
  493. package/build/dist/Server/Services/OnCallSetupReminderService.js +738 -0
  494. package/build/dist/Server/Services/OnCallSetupReminderService.js.map +1 -0
  495. package/build/dist/Server/Services/ProfileAggregationService.js +68 -4
  496. package/build/dist/Server/Services/ProfileAggregationService.js.map +1 -1
  497. package/build/dist/Server/Services/StatusPageService.js +11 -10
  498. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  499. package/build/dist/Server/Services/TeamComplianceService.js +312 -160
  500. package/build/dist/Server/Services/TeamComplianceService.js.map +1 -1
  501. package/build/dist/Server/Services/UserCallService.js +24 -1
  502. package/build/dist/Server/Services/UserCallService.js.map +1 -1
  503. package/build/dist/Server/Services/UserEmailService.js +24 -1
  504. package/build/dist/Server/Services/UserEmailService.js.map +1 -1
  505. package/build/dist/Server/Services/UserNotificationRuleAdminService.js +858 -0
  506. package/build/dist/Server/Services/UserNotificationRuleAdminService.js.map +1 -0
  507. package/build/dist/Server/Services/UserNotificationRuleService.js +2830 -175
  508. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  509. package/build/dist/Server/Services/UserOnCallLogService.js +488 -43
  510. package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
  511. package/build/dist/Server/Services/UserPushService.js +26 -0
  512. package/build/dist/Server/Services/UserPushService.js.map +1 -1
  513. package/build/dist/Server/Services/UserService.js +10 -0
  514. package/build/dist/Server/Services/UserService.js.map +1 -1
  515. package/build/dist/Server/Services/UserSmsService.js +24 -1
  516. package/build/dist/Server/Services/UserSmsService.js.map +1 -1
  517. package/build/dist/Server/Services/UserTelegramService.js +22 -1
  518. package/build/dist/Server/Services/UserTelegramService.js.map +1 -1
  519. package/build/dist/Server/Services/UserWebhookService.js +25 -1
  520. package/build/dist/Server/Services/UserWebhookService.js.map +1 -1
  521. package/build/dist/Server/Services/UserWhatsAppService.js +22 -1
  522. package/build/dist/Server/Services/UserWhatsAppService.js.map +1 -1
  523. package/build/dist/Server/Types/Database/Permissions/BasePermission.js +12 -1
  524. package/build/dist/Server/Types/Database/Permissions/BasePermission.js.map +1 -1
  525. package/build/dist/Server/Types/Database/Permissions/CreatePermission.js +126 -0
  526. package/build/dist/Server/Types/Database/Permissions/CreatePermission.js.map +1 -1
  527. package/build/dist/Server/Types/Database/Permissions/OwnerOnlyColumnPermission.js +254 -0
  528. package/build/dist/Server/Types/Database/Permissions/OwnerOnlyColumnPermission.js.map +1 -0
  529. package/build/dist/Server/Types/Database/Permissions/QueryPermission.js +47 -2
  530. package/build/dist/Server/Types/Database/Permissions/QueryPermission.js.map +1 -1
  531. package/build/dist/Server/Types/Database/Permissions/TenantPermission.js +7 -0
  532. package/build/dist/Server/Types/Database/Permissions/TenantPermission.js.map +1 -1
  533. package/build/dist/Server/Types/Workflow/Components/API/Delete.js +1 -1
  534. package/build/dist/Server/Types/Workflow/Components/API/Delete.js.map +1 -1
  535. package/build/dist/Server/Types/Workflow/Components/API/Get.js +1 -1
  536. package/build/dist/Server/Types/Workflow/Components/API/Get.js.map +1 -1
  537. package/build/dist/Server/Types/Workflow/Components/API/Patch.js +1 -1
  538. package/build/dist/Server/Types/Workflow/Components/API/Patch.js.map +1 -1
  539. package/build/dist/Server/Types/Workflow/Components/API/Post.js +1 -1
  540. package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
  541. package/build/dist/Server/Types/Workflow/Components/API/Put.js +1 -1
  542. package/build/dist/Server/Types/Workflow/Components/API/Put.js.map +1 -1
  543. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js +21 -5
  544. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js.map +1 -1
  545. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js +14 -10
  546. package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js.map +1 -1
  547. package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js +31 -0
  548. package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js.map +1 -1
  549. package/build/dist/Server/Types/Workflow/Components/Conditions/IfElse.js +3 -9
  550. package/build/dist/Server/Types/Workflow/Components/Conditions/IfElse.js.map +1 -1
  551. package/build/dist/Server/Types/Workflow/Components/Email.js +15 -4
  552. package/build/dist/Server/Types/Workflow/Components/Email.js.map +1 -1
  553. package/build/dist/Server/Types/Workflow/Components/JavaScript.js +7 -2
  554. package/build/dist/Server/Types/Workflow/Components/JavaScript.js.map +1 -1
  555. package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js +1 -1
  556. package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js.map +1 -1
  557. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +514 -56
  558. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -1
  559. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +20 -3
  560. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
  561. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +19 -6
  562. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
  563. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +7 -0
  564. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
  565. package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js +2 -2
  566. package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js.map +1 -1
  567. package/build/dist/Server/Utils/AI/Toolbox/AIMetaTools.js +692 -0
  568. package/build/dist/Server/Utils/AI/Toolbox/AIMetaTools.js.map +1 -0
  569. package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js +148 -12
  570. package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js.map +1 -1
  571. package/build/dist/Server/Utils/AI/Toolbox/IncidentTools.js +157 -10
  572. package/build/dist/Server/Utils/AI/Toolbox/IncidentTools.js.map +1 -1
  573. package/build/dist/Server/Utils/AI/Toolbox/Index.js +37 -0
  574. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  575. package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js +259 -14
  576. package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js.map +1 -1
  577. package/build/dist/Server/Utils/AI/Toolbox/NoteWriteTools.js +235 -0
  578. package/build/dist/Server/Utils/AI/Toolbox/NoteWriteTools.js.map +1 -0
  579. package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js +1000 -0
  580. package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js.map +1 -0
  581. package/build/dist/Server/Utils/AI/Toolbox/RunbookTools.js +356 -0
  582. package/build/dist/Server/Utils/AI/Toolbox/RunbookTools.js.map +1 -0
  583. package/build/dist/Server/Utils/AI/Toolbox/SloTools.js +394 -0
  584. package/build/dist/Server/Utils/AI/Toolbox/SloTools.js.map +1 -0
  585. package/build/dist/Server/Utils/AI/Toolbox/StatusPageTools.js +465 -0
  586. package/build/dist/Server/Utils/AI/Toolbox/StatusPageTools.js.map +1 -0
  587. package/build/dist/Server/Utils/AI/Toolbox/TeamTools.js +280 -0
  588. package/build/dist/Server/Utils/AI/Toolbox/TeamTools.js.map +1 -0
  589. package/build/dist/Server/Utils/AI/Toolbox/TimelineTools.js +527 -0
  590. package/build/dist/Server/Utils/AI/Toolbox/TimelineTools.js.map +1 -0
  591. package/build/dist/Server/Utils/AI/Toolbox/WorkflowProbeTools.js +548 -0
  592. package/build/dist/Server/Utils/AI/Toolbox/WorkflowProbeTools.js.map +1 -0
  593. package/build/dist/Server/Utils/ClientIp.js +137 -0
  594. package/build/dist/Server/Utils/ClientIp.js.map +1 -0
  595. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +38 -0
  596. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -1
  597. package/build/dist/Server/Utils/Dashboard/PublicDashboardSloHistoryPolicy.js +89 -0
  598. package/build/dist/Server/Utils/Dashboard/PublicDashboardSloHistoryPolicy.js.map +1 -0
  599. package/build/dist/Server/Utils/Dashboard/PublicDashboardSloWidget.js +77 -0
  600. package/build/dist/Server/Utils/Dashboard/PublicDashboardSloWidget.js.map +1 -0
  601. package/build/dist/Server/Utils/Express.js +12 -12
  602. package/build/dist/Server/Utils/Express.js.map +1 -1
  603. package/build/dist/Server/Utils/LLM/LLMService.js +70 -7
  604. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  605. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +121 -11
  606. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  607. package/build/dist/Server/Utils/SSRFProtection.js +82 -21
  608. package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
  609. package/build/dist/Server/Utils/StartServer.js +12 -4
  610. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  611. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +165 -18
  612. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
  613. package/build/dist/Server/Utils/Telemetry/InventoryEntityRegistry.js +11 -11
  614. package/build/dist/Server/Utils/Telemetry/InventoryEntityRegistry.js.map +1 -1
  615. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +122 -47
  616. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  617. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +7 -3
  618. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  619. package/build/dist/Types/AI/AIChatMessageStatus.js +8 -1
  620. package/build/dist/Types/AI/AIChatMessageStatus.js.map +1 -1
  621. package/build/dist/Types/AI/AIChatTypes.js +12 -0
  622. package/build/dist/Types/AI/AIChatTypes.js.map +1 -1
  623. package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js +60 -0
  624. package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js.map +1 -0
  625. package/build/dist/Types/Exception/ExceptionCode.js +2 -0
  626. package/build/dist/Types/Exception/ExceptionCode.js.map +1 -1
  627. package/build/dist/Types/Exception/ServiceUnavailableException.js +8 -0
  628. package/build/dist/Types/Exception/ServiceUnavailableException.js.map +1 -0
  629. package/build/dist/Types/Exception/TooManyRequestsException.js +8 -0
  630. package/build/dist/Types/Exception/TooManyRequestsException.js.map +1 -0
  631. package/build/dist/Types/IP/IP.js +87 -43
  632. package/build/dist/Types/IP/IP.js.map +1 -1
  633. package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js +50 -0
  634. package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js.map +1 -0
  635. package/build/dist/Types/OnCallDutyPolicy/Layer.js +186 -123
  636. package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
  637. package/build/dist/Types/OnCallDutyPolicy/OnCallDutyPolicyStatus.js +13 -0
  638. package/build/dist/Types/OnCallDutyPolicy/OnCallDutyPolicyStatus.js.map +1 -1
  639. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +105 -11
  640. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -1
  641. package/build/dist/Types/Permission.js +174 -0
  642. package/build/dist/Types/Permission.js.map +1 -1
  643. package/build/dist/Types/Telemetry/EntityRelationshipType.js +1 -1
  644. package/build/dist/Types/Telemetry/EntitySource.js +1 -1
  645. package/build/dist/Types/Telemetry/EntityType.js +1 -1
  646. package/build/dist/Types/Telemetry/EntityTypeGroups.js +1 -1
  647. package/build/dist/Types/Telemetry/EntityTypeGroups.js.map +1 -1
  648. package/build/dist/Types/Workflow/Components/BaseModel.js +66 -28
  649. package/build/dist/Types/Workflow/Components/BaseModel.js.map +1 -1
  650. package/build/dist/Types/Workflow/Components/Discord.js +1 -0
  651. package/build/dist/Types/Workflow/Components/Discord.js.map +1 -1
  652. package/build/dist/Types/Workflow/Components/Email.js +12 -3
  653. package/build/dist/Types/Workflow/Components/Email.js.map +1 -1
  654. package/build/dist/Types/Workflow/Components/JavaScript.js +7 -0
  655. package/build/dist/Types/Workflow/Components/JavaScript.js.map +1 -1
  656. package/build/dist/Types/Workflow/Components/MicrosoftTeams.js +3 -2
  657. package/build/dist/Types/Workflow/Components/MicrosoftTeams.js.map +1 -1
  658. package/build/dist/Types/Workflow/Components/Slack.js +1 -0
  659. package/build/dist/Types/Workflow/Components/Slack.js.map +1 -1
  660. package/build/dist/Types/Workflow/Components/Telegram.js +1 -0
  661. package/build/dist/Types/Workflow/Components/Telegram.js.map +1 -1
  662. package/build/dist/Types/Workflow/TemplateSyntax.js +12 -0
  663. package/build/dist/Types/Workflow/TemplateSyntax.js.map +1 -1
  664. package/build/dist/Types/Workflow/Templates.js +1931 -38
  665. package/build/dist/Types/Workflow/Templates.js.map +1 -1
  666. package/build/dist/UI/Components/Calendar/Calendar.js +1 -1
  667. package/build/dist/UI/Components/Calendar/Calendar.js.map +1 -1
  668. package/build/dist/UI/Components/Checkbox/Checkbox.js +1 -1
  669. package/build/dist/UI/Components/Checkbox/Checkbox.js.map +1 -1
  670. package/build/dist/UI/Components/Dictionary/Dictionary.js +25 -11
  671. package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
  672. package/build/dist/UI/Components/FormModal/BasicFormModal.js.map +1 -1
  673. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +27 -4
  674. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  675. package/build/dist/UI/Components/Input/Input.js +1 -0
  676. package/build/dist/UI/Components/Input/Input.js.map +1 -1
  677. package/build/dist/UI/Components/KeyboardShortcut/KeyboardKey.js +163 -0
  678. package/build/dist/UI/Components/KeyboardShortcut/KeyboardKey.js.map +1 -0
  679. package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcut.js +47 -0
  680. package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcut.js.map +1 -0
  681. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +4 -4
  682. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  683. package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js +11 -1
  684. package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js.map +1 -1
  685. package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js +10 -8
  686. package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js.map +1 -1
  687. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js +227 -14
  688. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
  689. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +5 -0
  690. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  691. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js +69 -5
  692. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
  693. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js +8 -0
  694. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js.map +1 -1
  695. package/build/dist/UI/Components/LogsViewer/types.js.map +1 -1
  696. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +9 -2
  697. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js.map +1 -1
  698. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +8 -21
  699. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
  700. package/build/dist/UI/Components/ProjectInvitations/PendingProjectInvitations.js +251 -0
  701. package/build/dist/UI/Components/ProjectInvitations/PendingProjectInvitations.js.map +1 -0
  702. package/build/dist/UI/Components/SimpleLogViewer/SimpleLogViewer.js +9 -2
  703. package/build/dist/UI/Components/SimpleLogViewer/SimpleLogViewer.js.map +1 -1
  704. package/build/dist/UI/Components/Table/Table.js +27 -15
  705. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  706. package/build/dist/UI/Components/Table/TableBody.js +24 -18
  707. package/build/dist/UI/Components/Table/TableBody.js.map +1 -1
  708. package/build/dist/UI/Components/Table/TableHeader.js +9 -1
  709. package/build/dist/UI/Components/Table/TableHeader.js.map +1 -1
  710. package/build/dist/UI/Components/Table/TableRow.js +29 -21
  711. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  712. package/build/dist/UI/Components/Workflow/ArgumentsForm.js +130 -12
  713. package/build/dist/UI/Components/Workflow/ArgumentsForm.js.map +1 -1
  714. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js +10 -1
  715. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js.map +1 -1
  716. package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js +4 -4
  717. package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js.map +1 -1
  718. package/build/dist/UI/Components/Workflow/ComponentValuePickerModal.js +57 -7
  719. package/build/dist/UI/Components/Workflow/ComponentValuePickerModal.js.map +1 -1
  720. package/build/dist/UI/Components/Workflow/ComponentsModal.js +53 -18
  721. package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
  722. package/build/dist/UI/Components/Workflow/DocumentationViewer.js +19 -6
  723. package/build/dist/UI/Components/Workflow/DocumentationViewer.js.map +1 -1
  724. package/build/dist/UI/Components/Workflow/GraphLint.js +33 -4
  725. package/build/dist/UI/Components/Workflow/GraphLint.js.map +1 -1
  726. package/build/dist/UI/Components/Workflow/GraphLintSummary.js +231 -0
  727. package/build/dist/UI/Components/Workflow/GraphLintSummary.js.map +1 -0
  728. package/build/dist/UI/Components/Workflow/ModelColumnEditor.js +116 -21
  729. package/build/dist/UI/Components/Workflow/ModelColumnEditor.js.map +1 -1
  730. package/build/dist/UI/Components/Workflow/ModelSchema.js +72 -34
  731. package/build/dist/UI/Components/Workflow/ModelSchema.js.map +1 -1
  732. package/build/dist/UI/Components/Workflow/RunStatusWatcher.js +1 -1
  733. package/build/dist/UI/Components/Workflow/RunStatusWatcher.js.map +1 -1
  734. package/build/dist/UI/Components/Workflow/StepTraceViewer.js +1 -1
  735. package/build/dist/UI/Components/Workflow/StepTraceViewer.js.map +1 -1
  736. package/build/dist/UI/Components/Workflow/UseRunWatch.js +123 -0
  737. package/build/dist/UI/Components/Workflow/UseRunWatch.js.map +1 -0
  738. package/build/dist/UI/Components/Workflow/VariableModal.js +3 -2
  739. package/build/dist/UI/Components/Workflow/VariableModal.js.map +1 -1
  740. package/build/dist/UI/Components/Workflow/Workflow.js +41 -1
  741. package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
  742. package/build/dist/UI/Components/Workflow/WorkflowIssuesModal.js +99 -0
  743. package/build/dist/UI/Components/Workflow/WorkflowIssuesModal.js.map +1 -0
  744. package/build/dist/UI/Components/Workflow/WorkflowLogModal.js +56 -0
  745. package/build/dist/UI/Components/Workflow/WorkflowLogModal.js.map +1 -0
  746. package/build/dist/UI/Components/Workflow/WorkflowStatusBar.js +92 -0
  747. package/build/dist/UI/Components/Workflow/WorkflowStatusBar.js.map +1 -0
  748. package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js +9 -0
  749. package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js.map +1 -1
  750. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +1 -1
  751. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
  752. package/build/dist/UI/Utils/Platform.js +118 -0
  753. package/build/dist/UI/Utils/Platform.js.map +1 -0
  754. package/build/dist/UI/Utils/ProjectInvitationDisplay.js +106 -0
  755. package/build/dist/UI/Utils/ProjectInvitationDisplay.js.map +1 -0
  756. package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js +108 -0
  757. package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js.map +1 -0
  758. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +642 -136
  759. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  760. package/build/dist/Utils/Telemetry/CrossSignalScope.js +328 -0
  761. package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -0
  762. package/build/dist/Utils/Telemetry/EntityKey.js +5 -5
  763. package/build/dist/Utils/Telemetry/EntityRelationship.js +1 -1
  764. package/jest.config.json +1 -0
  765. package/package.json +1 -1
  766. package/build/dist/Models/DatabaseModels/TelemetryEntity.js.map +0 -1
  767. package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js.map +0 -1
  768. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +0 -1
  769. package/build/dist/Server/Services/TelemetryEntityService.js.map +0 -1
@@ -35,44 +35,391 @@ import NotificationRuleType from "../../Types/NotificationRule/NotificationRuleT
35
35
  import ObjectID from "../../Types/ObjectID";
36
36
  import Permission from "../../Types/Permission";
37
37
  import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
38
+ /*
39
+ * Who, other than the owner, may look at a member's paging configuration, and
40
+ * who may repair it. Named once and spread everywhere so the table-level gate
41
+ * and the per-column gates cannot drift apart - a column quietly narrower than
42
+ * its table is how a required field becomes unwritable by the very permission
43
+ * that was supposed to be able to write it.
44
+ */
45
+ const ADMIN_READ_PERMISSIONS = [
46
+ Permission.ProjectOwner,
47
+ Permission.ProjectAdmin,
48
+ Permission.ReadProjectUserNotificationRule,
49
+ ];
50
+ const ADMIN_WRITE_PERMISSIONS = [
51
+ Permission.ProjectOwner,
52
+ Permission.ProjectAdmin,
53
+ Permission.EditProjectUserNotificationRule,
54
+ ];
55
+ /*
56
+ * Two audiences, one table, and the difference between them is decided by which
57
+ * permission let the caller through rather than by two different endpoints.
58
+ *
59
+ * Permission.CurrentUser stays first in every list and
60
+ * @CurrentUserCanAccessRecordBy("userId") stays on the class, because together
61
+ * they are what keeps an ordinary member scoped. TenantPermission
62
+ * .isAccessGrantedOnlyByCurrentUser intersects what the caller holds with what
63
+ * the model accepts: a plain member matches nothing here but the auto-granted
64
+ * CurrentUser, so addCurrentUserScopeToQuery rewrites their query to
65
+ * `userId = me` and rejects outright any attempt to name somebody else. Adding
66
+ * the admin entries below does not weaken that - a member holds none of them,
67
+ * so their intersection is unchanged.
68
+ *
69
+ * For a caller who DOES hold one of them the intersection is no longer
70
+ * CurrentUser alone, the ownership predicate is not applied, and they can read
71
+ * and repair another member's rules. TeamMember already carries exactly this
72
+ * combination and behaves the same way, which is the reason to reuse the
73
+ * mechanism here rather than invent a second one.
74
+ *
75
+ * That capability is the entire point of this table being reachable by an
76
+ * administrator at all. An on-call policy can say "page the engineer on duty",
77
+ * but whether that page arrives is decided by rows in THIS table, and until now
78
+ * nobody but the engineer themselves could see them. A member with no matching
79
+ * rule was silently unpageable, and the only person able to notice was the
80
+ * person who was not being notified.
81
+ *
82
+ * ProjectOwner and ProjectAdmin are listed ALONGSIDE the granular permissions,
83
+ * not instead of them, and that is load-bearing rather than belt-and-braces.
84
+ * Existing project teams are seeded with ROLES only, so a brand-new granular
85
+ * permission is held by literally nobody on the day it ships; a list containing
86
+ * only EditProjectUserNotificationRule would leave the feature dead on arrival
87
+ * for every project that already exists.
88
+ *
89
+ * Note the asymmetry with the seven notification-method models this rule points
90
+ * at (UserEmail, UserSMS, UserCall, UserPush, UserWhatsApp, UserTelegram,
91
+ * UserWebhook). There, only `read` is widened. An administrator may see which
92
+ * methods a member has and repair the rules that route to them, but may never
93
+ * create or edit a method on somebody else's behalf. Letting them would hand
94
+ * any administrator a paging-hijack primitive - add a phone number or webhook
95
+ * you control, point the victim's rules at it, and their pages arrive at your
96
+ * device - and it would not even solve the problem it appears to solve, because
97
+ * a member with no methods needs to verify a device THEY own. The lever for
98
+ * that case is a reminder, not a keyboard.
99
+ */
38
100
  let UserNotificationRule = class UserNotificationRule extends BaseModel {
39
101
  constructor() {
40
102
  super(...arguments);
103
+ /*
104
+ * Writable at create, readable by an administrator, and permanently frozen
105
+ * afterwards - see the essay on `userId` below, which applies to this column
106
+ * for the same reason. A rule that could be moved between projects would
107
+ * escape the tenant scope it was created under.
108
+ */
41
109
  this.project = undefined;
110
+ /*
111
+ * update: [] - deliberately, and not merely inherited from the shape this
112
+ * model had before administrators could touch it. See `userId`.
113
+ */
42
114
  this.projectId = undefined;
115
+ /*
116
+ * The rule type, together with the severity relations further down, is the
117
+ * ADDRESS of this rule - the cell in the grid it occupies. Changing it would
118
+ * silently move a rule from one cell to another, which reads as an edit but
119
+ * behaves as a delete plus a create, so it stays create-only for everybody.
120
+ * An administrator repairing a member's setup adds and removes rules; they do
121
+ * not slide an existing one sideways.
122
+ */
43
123
  this.ruleType = undefined;
124
+ /*
125
+ * The relation spelling of the ownership column. It is `update: []` for the
126
+ * same reason `userId` is, and it has to be stated separately because the two
127
+ * are different decorated members over one physical column: an update
128
+ * expressed as `user: { _id }` is resolved by TypeORM to the same join column
129
+ * that `userId` writes. Closing one spelling and leaving the other open would
130
+ * close nothing at all.
131
+ */
44
132
  this.user = undefined;
133
+ /*
134
+ * READ THIS BEFORE WIDENING `update` HERE.
135
+ *
136
+ * This column is the ownership column - the one @CurrentUserCanAccessRecordBy
137
+ * points at, and therefore the one that decides whose pages this rule is
138
+ * consulted for. It is writable at CREATE, because provisioning a rule on
139
+ * behalf of a member who has none is the entire point of the administrator
140
+ * capability; it is writable at UPDATE by nobody, including the
141
+ * administrators who may otherwise rewrite every other field on the row.
142
+ *
143
+ * The temptation to mirror the widened lists onto this column is strong and
144
+ * wrong. An administrator who can re-point an EXISTING rule's userId does not
145
+ * gain a convenience, they gain a paging hijack: take a rule that already
146
+ * points at their own verified phone, move its userId to a colleague, and the
147
+ * colleague's pages now ring the administrator's handset - or take the
148
+ * colleague's rule and hand it to themselves. Nothing about that is
149
+ * distinguishable from a legitimate edit at the row level, and it is exactly
150
+ * the hole the create-side ownership gate was written to close
151
+ * (Common/Server/Types/Database/Permissions/CreatePermission.ts), reopened
152
+ * through a different verb.
153
+ *
154
+ * Create is safe by comparison only because it is guarded: the create gate
155
+ * defers to a real role permission rather than stamping the caller, and the
156
+ * service layer verifies that the supplied userId is a member of
157
+ * props.tenantId before the row is written. A rule pointed at a stranger from
158
+ * another project is refused there, not here.
159
+ *
160
+ * The correct way for an administrator to move a rule to a different member is
161
+ * to delete it and create another. That leaves two audit events instead of a
162
+ * silent mutation, which is the behaviour we want.
163
+ */
45
164
  this.userId = undefined;
165
+ /*
166
+ * Read is widened but create is not, because this column is stamped
167
+ * server-side from props.userId after the permission checks have run and is
168
+ * never accepted from a request body. Widening the read matters for a reason
169
+ * beyond completeness: it is what lets a member see that a rule on their own
170
+ * account was written by an administrator rather than by themselves.
171
+ */
46
172
  this.createdByUser = undefined;
47
173
  this.createdByUserId = undefined;
48
174
  this.deletedByUser = undefined;
49
175
  this.deletedByUserId = undefined;
176
+ /*
177
+ * THE SEVEN METHOD RELATIONS BELOW ARE THE MOST DANGEROUS COLUMNS ON THIS
178
+ * MODEL. What follows applies to every one of them - userCall, userPush,
179
+ * userSms, userWhatsApp, userTelegram, userWebhook and userEmail, in both
180
+ * their relation and their `*Id` spelling - and is written out once here
181
+ * rather than fourteen times.
182
+ *
183
+ * A rule is a pair: the ownership column decides WHOSE pages select the row,
184
+ * and the method relation decides WHERE those pages are delivered. The two
185
+ * halves are read from different tables and nothing in the schema requires
186
+ * them to agree. A row owned by a victim and pointing at an administrator's
187
+ * own webhook or email is perfectly well-formed, and it silently redirects the
188
+ * victim's pages to the administrator's device. That is the whole hijack, and
189
+ * it needs no other bug to work.
190
+ *
191
+ * The `*Id` columns are open to UPDATE because repairing a member's routing is
192
+ * the capability this phase exists to provide: "your rules point at an email
193
+ * you never verified" is only actionable if somebody can re-point them at one
194
+ * the member did verify. But THIS ACCESS CONTROL LIST IS NOT WHAT MAKES THAT
195
+ * SAFE. A column list answers "may this caller write this column at all"; it
196
+ * never sees the VALUE being written, so it cannot tell a repair from a
197
+ * redirect.
198
+ *
199
+ * What makes it safe is a service-layer assertion: whenever one of these FKs
200
+ * is written, on create or on update, the referenced method row must belong to
201
+ * the same user as the rule's own userId - and on update that userId is
202
+ * re-read from the database rather than taken from the request body, because
203
+ * the body is exactly what an attacker controls. DO NOT REMOVE THAT ASSERTION
204
+ * BELIEVING THIS DECORATOR COVERS IT. It does not, and the failure is silent:
205
+ * everything keeps working, pages just start arriving somewhere else.
206
+ *
207
+ * The relation spellings stay `update: []` while the `*Id` spellings open.
208
+ * That is not an oversight. They are two decorated members over one physical
209
+ * join column, so leaving both writable would give the same hijack two
210
+ * different shapes to arrive in, and the ownership assertion would have to
211
+ * recognise both to be complete. One spelling in, one spelling out, and the
212
+ * check has exactly one form to validate.
213
+ */
214
+ /*
215
+ * READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
216
+ *
217
+ * Widening the relation would re-open the exposure that reverting the seven
218
+ * method models was meant to close, by a different route. A read of this
219
+ * table is NOT pinned to the caller's own rows for an administrator - that is
220
+ * the whole point of the phase - and QueryPermission.checkRelationQueryPermission
221
+ * authorises each nested field with relatedModel.hasReadPermissions, a
222
+ * name-intersection in which Permission.CurrentUser is auto-granted to every
223
+ * authenticated caller. So `select: { userCall: { phone: true } }` on somebody
224
+ * else's rule would hand back their raw phone number with no row scope
225
+ * anywhere in the path.
226
+ *
227
+ * The FK below stays admin-readable: an id is not sensitive, and it is what
228
+ * correlates a rule with the masked entry in OnCallReadinessService's
229
+ * ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
230
+ * That masked payload is the administrator's sanctioned view of a method.
231
+ */
50
232
  this.userCall = undefined;
233
+ // Re-pointable by an administrator. Read the essay above `userCall` first.
51
234
  this.userCallId = undefined;
235
+ /*
236
+ * READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
237
+ *
238
+ * Widening the relation would re-open the exposure that reverting the seven
239
+ * method models was meant to close, by a different route. A read of this
240
+ * table is NOT pinned to the caller's own rows for an administrator - that is
241
+ * the whole point of the phase - and QueryPermission.checkRelationQueryPermission
242
+ * authorises each nested field with relatedModel.hasReadPermissions, a
243
+ * name-intersection in which Permission.CurrentUser is auto-granted to every
244
+ * authenticated caller. So `select: { userPush: { deviceToken: true } }` on somebody
245
+ * else's rule would hand back their raw device token with no row scope
246
+ * anywhere in the path.
247
+ *
248
+ * The FK below stays admin-readable: an id is not sensitive, and it is what
249
+ * correlates a rule with the masked entry in OnCallReadinessService's
250
+ * ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
251
+ * That masked payload is the administrator's sanctioned view of a method.
252
+ */
52
253
  this.userPush = undefined;
254
+ // Re-pointable by an administrator. Read the essay above `userCall` first.
53
255
  this.userPushId = undefined;
256
+ /*
257
+ * READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
258
+ *
259
+ * Widening the relation would re-open the exposure that reverting the seven
260
+ * method models was meant to close, by a different route. A read of this
261
+ * table is NOT pinned to the caller's own rows for an administrator - that is
262
+ * the whole point of the phase - and QueryPermission.checkRelationQueryPermission
263
+ * authorises each nested field with relatedModel.hasReadPermissions, a
264
+ * name-intersection in which Permission.CurrentUser is auto-granted to every
265
+ * authenticated caller. So `select: { userSms: { phone: true } }` on somebody
266
+ * else's rule would hand back their raw phone number with no row scope
267
+ * anywhere in the path.
268
+ *
269
+ * The FK below stays admin-readable: an id is not sensitive, and it is what
270
+ * correlates a rule with the masked entry in OnCallReadinessService's
271
+ * ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
272
+ * That masked payload is the administrator's sanctioned view of a method.
273
+ */
54
274
  this.userSms = undefined;
275
+ // Re-pointable by an administrator. Read the essay above `userCall` first.
55
276
  this.userSmsId = undefined;
277
+ /*
278
+ * READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
279
+ *
280
+ * Widening the relation would re-open the exposure that reverting the seven
281
+ * method models was meant to close, by a different route. A read of this
282
+ * table is NOT pinned to the caller's own rows for an administrator - that is
283
+ * the whole point of the phase - and QueryPermission.checkRelationQueryPermission
284
+ * authorises each nested field with relatedModel.hasReadPermissions, a
285
+ * name-intersection in which Permission.CurrentUser is auto-granted to every
286
+ * authenticated caller. So `select: { userWhatsApp: { phone: true } }` on somebody
287
+ * else's rule would hand back their raw phone number with no row scope
288
+ * anywhere in the path.
289
+ *
290
+ * The FK below stays admin-readable: an id is not sensitive, and it is what
291
+ * correlates a rule with the masked entry in OnCallReadinessService's
292
+ * ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
293
+ * That masked payload is the administrator's sanctioned view of a method.
294
+ */
56
295
  this.userWhatsApp = undefined;
296
+ // Re-pointable by an administrator. Read the essay above `userCall` first.
57
297
  this.userWhatsAppId = undefined;
298
+ /*
299
+ * READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
300
+ *
301
+ * Widening the relation would re-open the exposure that reverting the seven
302
+ * method models was meant to close, by a different route. A read of this
303
+ * table is NOT pinned to the caller's own rows for an administrator - that is
304
+ * the whole point of the phase - and QueryPermission.checkRelationQueryPermission
305
+ * authorises each nested field with relatedModel.hasReadPermissions, a
306
+ * name-intersection in which Permission.CurrentUser is auto-granted to every
307
+ * authenticated caller. So `select: { userTelegram: { telegramChatId: true } }` on somebody
308
+ * else's rule would hand back their raw Telegram chat id with no row scope
309
+ * anywhere in the path.
310
+ *
311
+ * The FK below stays admin-readable: an id is not sensitive, and it is what
312
+ * correlates a rule with the masked entry in OnCallReadinessService's
313
+ * ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
314
+ * That masked payload is the administrator's sanctioned view of a method.
315
+ */
58
316
  this.userTelegram = undefined;
317
+ // Re-pointable by an administrator. Read the essay above `userCall` first.
59
318
  this.userTelegramId = undefined;
319
+ /*
320
+ * READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
321
+ *
322
+ * Widening the relation would re-open the exposure that reverting the seven
323
+ * method models was meant to close, by a different route. A read of this
324
+ * table is NOT pinned to the caller's own rows for an administrator - that is
325
+ * the whole point of the phase - and QueryPermission.checkRelationQueryPermission
326
+ * authorises each nested field with relatedModel.hasReadPermissions, a
327
+ * name-intersection in which Permission.CurrentUser is auto-granted to every
328
+ * authenticated caller. So `select: { userWebhook: { webhookUrl: true } }` on somebody
329
+ * else's rule would hand back their raw webhook URL with no row scope
330
+ * anywhere in the path.
331
+ *
332
+ * The FK below stays admin-readable: an id is not sensitive, and it is what
333
+ * correlates a rule with the masked entry in OnCallReadinessService's
334
+ * ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
335
+ * That masked payload is the administrator's sanctioned view of a method.
336
+ */
60
337
  this.userWebhook = undefined;
338
+ // Re-pointable by an administrator. Read the essay above `userCall` first.
61
339
  this.userWebhookId = undefined;
340
+ /*
341
+ * READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
342
+ *
343
+ * Widening the relation would re-open the exposure that reverting the seven
344
+ * method models was meant to close, by a different route. A read of this
345
+ * table is NOT pinned to the caller's own rows for an administrator - that is
346
+ * the whole point of the phase - and QueryPermission.checkRelationQueryPermission
347
+ * authorises each nested field with relatedModel.hasReadPermissions, a
348
+ * name-intersection in which Permission.CurrentUser is auto-granted to every
349
+ * authenticated caller. So `select: { userEmail: { email: true } }` on somebody
350
+ * else's rule would hand back their raw email address with no row scope
351
+ * anywhere in the path.
352
+ *
353
+ * The FK below stays admin-readable: an id is not sensitive, and it is what
354
+ * correlates a rule with the masked entry in OnCallReadinessService's
355
+ * ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
356
+ * That masked payload is the administrator's sanctioned view of a method.
357
+ */
62
358
  this.userEmail = undefined;
359
+ // Re-pointable by an administrator. Read the essay above `userCall` first.
63
360
  this.userEmailId = undefined;
361
+ /*
362
+ * The escalation delay, and one of only two plain preference columns an
363
+ * administrator may rewrite. It is here rather than frozen because "you are
364
+ * on the escalation policy but your first rule waits thirty minutes" is a
365
+ * real, common misconfiguration, and correcting a number carries none of the
366
+ * redirect risk the method relations do - the page still goes to the same
367
+ * place, it just goes sooner.
368
+ */
64
369
  this.notifyAfterMinutes = undefined;
370
+ /*
371
+ * Part of the rule's address, like `ruleType` - create-only for everybody.
372
+ */
65
373
  this.incidentSeverity = undefined;
66
374
  this.incidentSeverityId = undefined;
67
375
  // alert severity.
68
376
  this.alertSeverity = undefined;
69
377
  this.alertSeverityId = undefined;
378
+ /*
379
+ * An opt-out row is a rule that exists in order to send nothing. It carries a
380
+ * `ruleType` and a severity exactly like a normal rule, sets `isOptOut` to true, and
381
+ * holds NO notification-method relation at all — there is no userEmail, userSms,
382
+ * userCall, userPush, userWhatsApp, userTelegram or userWebhook on it, and that
383
+ * absence is the point rather than a misconfiguration.
384
+ *
385
+ * It exists because "this user has zero rules matching this ruleType and severity" is
386
+ * otherwise two completely different situations wearing the same clothes. Almost
387
+ * always it means the user never configured anything for that cell — a severity added
388
+ * after they joined, an episode rule type they never opened the page for — and a page
389
+ * routed to them must still land somewhere. Occasionally it means the user genuinely
390
+ * asked not to be woken for that cell, and paging them anyway would be the bug.
391
+ *
392
+ * Before this column the runtime could not tell those apart, so it chose the safe-
393
+ * looking option and delivered nothing, which is how pages were being lost silently.
394
+ * Making deliberate silence expressible as a row is the precondition for the fallback:
395
+ * once "do not page me" has somewhere to live, the remaining zero-row cases can be
396
+ * treated as misconfiguration and rescued by notifying the user on whatever verified
397
+ * method they do have.
398
+ *
399
+ * Note the `update` permission below. Every column on this model except
400
+ * `notifyAfterMinutes` is `update: []`, so copying a neighbour's access control would
401
+ * have left this flag writable only at create time — a user could opt out but never
402
+ * opt back in without deleting and recreating the row. Muting and unmuting is exactly
403
+ * the kind of preference that gets toggled, so it is explicitly updatable by its owner.
404
+ *
405
+ * An administrator may toggle it too, and that deserves a word because it looks
406
+ * like the one place where the admin capability could be used to silence somebody.
407
+ * It could - but an administrator who wanted a colleague unpageable has a far
408
+ * blunter tool available in the same breath, which is to delete their rules
409
+ * outright, and that is a capability nobody proposes withholding. The reason
410
+ * this direction matters more is the opposite one: a member who opted out of a
411
+ * severity months ago and forgot is precisely the invisible gap this phase
412
+ * exists to close, and leaving an administrator able to SEE the opt-out but not
413
+ * lift it would stop one step short of the fix. Both directions are audited
414
+ * against props.userId, so a suppression an administrator made is attributable.
415
+ */
416
+ this.isOptOut = undefined;
70
417
  }
71
418
  };
72
419
  __decorate([
73
420
  ColumnAccessControl({
74
- create: [Permission.CurrentUser],
75
- read: [Permission.CurrentUser],
421
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
422
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
76
423
  update: [],
77
424
  }),
78
425
  TableColumn({
@@ -95,8 +442,8 @@ __decorate([
95
442
  ], UserNotificationRule.prototype, "project", void 0);
96
443
  __decorate([
97
444
  ColumnAccessControl({
98
- create: [Permission.CurrentUser],
99
- read: [Permission.CurrentUser],
445
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
446
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
100
447
  update: [],
101
448
  }),
102
449
  Index(),
@@ -117,8 +464,8 @@ __decorate([
117
464
  ], UserNotificationRule.prototype, "projectId", void 0);
118
465
  __decorate([
119
466
  ColumnAccessControl({
120
- create: [Permission.CurrentUser],
121
- read: [Permission.CurrentUser],
467
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
468
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
122
469
  update: [],
123
470
  }),
124
471
  TableColumn({
@@ -139,8 +486,8 @@ __decorate([
139
486
  ], UserNotificationRule.prototype, "ruleType", void 0);
140
487
  __decorate([
141
488
  ColumnAccessControl({
142
- create: [Permission.CurrentUser],
143
- read: [Permission.CurrentUser],
489
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
490
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
144
491
  update: [],
145
492
  }),
146
493
  TableColumn({
@@ -163,8 +510,8 @@ __decorate([
163
510
  ], UserNotificationRule.prototype, "user", void 0);
164
511
  __decorate([
165
512
  ColumnAccessControl({
166
- create: [Permission.CurrentUser],
167
- read: [Permission.CurrentUser],
513
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
514
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
168
515
  update: [],
169
516
  }),
170
517
  TableColumn({
@@ -184,7 +531,7 @@ __decorate([
184
531
  __decorate([
185
532
  ColumnAccessControl({
186
533
  create: [Permission.CurrentUser],
187
- read: [Permission.CurrentUser],
534
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
188
535
  update: [],
189
536
  }),
190
537
  TableColumn({
@@ -208,7 +555,7 @@ __decorate([
208
555
  __decorate([
209
556
  ColumnAccessControl({
210
557
  create: [Permission.CurrentUser],
211
- read: [Permission.CurrentUser],
558
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
212
559
  update: [],
213
560
  }),
214
561
  TableColumn({
@@ -270,7 +617,7 @@ __decorate([
270
617
  ], UserNotificationRule.prototype, "deletedByUserId", void 0);
271
618
  __decorate([
272
619
  ColumnAccessControl({
273
- create: [Permission.CurrentUser],
620
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
274
621
  read: [Permission.CurrentUser],
275
622
  update: [],
276
623
  }),
@@ -294,9 +641,9 @@ __decorate([
294
641
  ], UserNotificationRule.prototype, "userCall", void 0);
295
642
  __decorate([
296
643
  ColumnAccessControl({
297
- create: [Permission.CurrentUser],
298
- read: [Permission.CurrentUser],
299
- update: [],
644
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
645
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
646
+ update: [...ADMIN_WRITE_PERMISSIONS],
300
647
  }),
301
648
  Index(),
302
649
  TableColumn({
@@ -316,7 +663,7 @@ __decorate([
316
663
  ], UserNotificationRule.prototype, "userCallId", void 0);
317
664
  __decorate([
318
665
  ColumnAccessControl({
319
- create: [Permission.CurrentUser],
666
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
320
667
  read: [Permission.CurrentUser],
321
668
  update: [],
322
669
  }),
@@ -340,9 +687,9 @@ __decorate([
340
687
  ], UserNotificationRule.prototype, "userPush", void 0);
341
688
  __decorate([
342
689
  ColumnAccessControl({
343
- create: [Permission.CurrentUser],
344
- read: [Permission.CurrentUser],
345
- update: [],
690
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
691
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
692
+ update: [...ADMIN_WRITE_PERMISSIONS],
346
693
  }),
347
694
  Index(),
348
695
  TableColumn({
@@ -362,7 +709,7 @@ __decorate([
362
709
  ], UserNotificationRule.prototype, "userPushId", void 0);
363
710
  __decorate([
364
711
  ColumnAccessControl({
365
- create: [Permission.CurrentUser],
712
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
366
713
  read: [Permission.CurrentUser],
367
714
  update: [],
368
715
  }),
@@ -386,9 +733,9 @@ __decorate([
386
733
  ], UserNotificationRule.prototype, "userSms", void 0);
387
734
  __decorate([
388
735
  ColumnAccessControl({
389
- create: [Permission.CurrentUser],
390
- read: [Permission.CurrentUser],
391
- update: [],
736
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
737
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
738
+ update: [...ADMIN_WRITE_PERMISSIONS],
392
739
  }),
393
740
  Index(),
394
741
  TableColumn({
@@ -408,7 +755,7 @@ __decorate([
408
755
  ], UserNotificationRule.prototype, "userSmsId", void 0);
409
756
  __decorate([
410
757
  ColumnAccessControl({
411
- create: [Permission.CurrentUser],
758
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
412
759
  read: [Permission.CurrentUser],
413
760
  update: [],
414
761
  }),
@@ -432,9 +779,9 @@ __decorate([
432
779
  ], UserNotificationRule.prototype, "userWhatsApp", void 0);
433
780
  __decorate([
434
781
  ColumnAccessControl({
435
- create: [Permission.CurrentUser],
436
- read: [Permission.CurrentUser],
437
- update: [],
782
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
783
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
784
+ update: [...ADMIN_WRITE_PERMISSIONS],
438
785
  }),
439
786
  Index(),
440
787
  TableColumn({
@@ -454,7 +801,7 @@ __decorate([
454
801
  ], UserNotificationRule.prototype, "userWhatsAppId", void 0);
455
802
  __decorate([
456
803
  ColumnAccessControl({
457
- create: [Permission.CurrentUser],
804
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
458
805
  read: [Permission.CurrentUser],
459
806
  update: [],
460
807
  }),
@@ -478,9 +825,9 @@ __decorate([
478
825
  ], UserNotificationRule.prototype, "userTelegram", void 0);
479
826
  __decorate([
480
827
  ColumnAccessControl({
481
- create: [Permission.CurrentUser],
482
- read: [Permission.CurrentUser],
483
- update: [],
828
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
829
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
830
+ update: [...ADMIN_WRITE_PERMISSIONS],
484
831
  }),
485
832
  Index(),
486
833
  TableColumn({
@@ -500,7 +847,7 @@ __decorate([
500
847
  ], UserNotificationRule.prototype, "userTelegramId", void 0);
501
848
  __decorate([
502
849
  ColumnAccessControl({
503
- create: [Permission.CurrentUser],
850
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
504
851
  read: [Permission.CurrentUser],
505
852
  update: [],
506
853
  }),
@@ -524,9 +871,9 @@ __decorate([
524
871
  ], UserNotificationRule.prototype, "userWebhook", void 0);
525
872
  __decorate([
526
873
  ColumnAccessControl({
527
- create: [Permission.CurrentUser],
528
- read: [Permission.CurrentUser],
529
- update: [],
874
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
875
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
876
+ update: [...ADMIN_WRITE_PERMISSIONS],
530
877
  }),
531
878
  Index(),
532
879
  TableColumn({
@@ -546,7 +893,7 @@ __decorate([
546
893
  ], UserNotificationRule.prototype, "userWebhookId", void 0);
547
894
  __decorate([
548
895
  ColumnAccessControl({
549
- create: [Permission.CurrentUser],
896
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
550
897
  read: [Permission.CurrentUser],
551
898
  update: [],
552
899
  }),
@@ -570,9 +917,9 @@ __decorate([
570
917
  ], UserNotificationRule.prototype, "userEmail", void 0);
571
918
  __decorate([
572
919
  ColumnAccessControl({
573
- create: [Permission.CurrentUser],
574
- read: [Permission.CurrentUser],
575
- update: [],
920
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
921
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
922
+ update: [...ADMIN_WRITE_PERMISSIONS],
576
923
  }),
577
924
  Index(),
578
925
  TableColumn({
@@ -592,9 +939,9 @@ __decorate([
592
939
  ], UserNotificationRule.prototype, "userEmailId", void 0);
593
940
  __decorate([
594
941
  ColumnAccessControl({
595
- create: [Permission.CurrentUser],
596
- read: [Permission.CurrentUser],
597
- update: [Permission.CurrentUser],
942
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
943
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
944
+ update: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
598
945
  }),
599
946
  Index(),
600
947
  TableColumn({
@@ -615,8 +962,8 @@ __decorate([
615
962
  ], UserNotificationRule.prototype, "notifyAfterMinutes", void 0);
616
963
  __decorate([
617
964
  ColumnAccessControl({
618
- create: [Permission.CurrentUser],
619
- read: [Permission.CurrentUser],
965
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
966
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
620
967
  update: [],
621
968
  }),
622
969
  TableColumn({
@@ -639,8 +986,8 @@ __decorate([
639
986
  ], UserNotificationRule.prototype, "incidentSeverity", void 0);
640
987
  __decorate([
641
988
  ColumnAccessControl({
642
- create: [Permission.CurrentUser],
643
- read: [Permission.CurrentUser],
989
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
990
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
644
991
  update: [],
645
992
  }),
646
993
  Index(),
@@ -661,8 +1008,8 @@ __decorate([
661
1008
  ], UserNotificationRule.prototype, "incidentSeverityId", void 0);
662
1009
  __decorate([
663
1010
  ColumnAccessControl({
664
- create: [Permission.CurrentUser],
665
- read: [Permission.CurrentUser],
1011
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
1012
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
666
1013
  update: [],
667
1014
  }),
668
1015
  TableColumn({
@@ -685,8 +1032,8 @@ __decorate([
685
1032
  ], UserNotificationRule.prototype, "alertSeverity", void 0);
686
1033
  __decorate([
687
1034
  ColumnAccessControl({
688
- create: [Permission.CurrentUser],
689
- read: [Permission.CurrentUser],
1035
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
1036
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
690
1037
  update: [],
691
1038
  }),
692
1039
  Index(),
@@ -705,13 +1052,35 @@ __decorate([
705
1052
  }),
706
1053
  __metadata("design:type", ObjectID)
707
1054
  ], UserNotificationRule.prototype, "alertSeverityId", void 0);
1055
+ __decorate([
1056
+ ColumnAccessControl({
1057
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
1058
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
1059
+ update: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
1060
+ }),
1061
+ TableColumn({
1062
+ type: TableColumnType.Boolean,
1063
+ required: false,
1064
+ isDefaultValueColumn: true,
1065
+ title: "Opt Out of Notifications",
1066
+ description: "When true, this rule deliberately suppresses notifications for its rule type and severity instead of delivering any. A rule with this set carries no notification method.",
1067
+ defaultValue: false,
1068
+ example: false,
1069
+ }),
1070
+ Column({
1071
+ type: ColumnType.Boolean,
1072
+ nullable: true,
1073
+ default: false,
1074
+ }),
1075
+ __metadata("design:type", Boolean)
1076
+ ], UserNotificationRule.prototype, "isOptOut", void 0);
708
1077
  UserNotificationRule = __decorate([
709
1078
  TenantColumn("projectId"),
710
1079
  TableAccessControl({
711
- create: [Permission.CurrentUser],
712
- read: [Permission.CurrentUser],
713
- delete: [Permission.CurrentUser],
714
- update: [Permission.CurrentUser],
1080
+ create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
1081
+ read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
1082
+ delete: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
1083
+ update: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
715
1084
  }),
716
1085
  CrudApiEndpoint(new Route("/user-notification-rule")),
717
1086
  Entity({