@oneuptime/common 12.0.25 → 12.0.27

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 (856) hide show
  1. package/Models/AnalyticsModels/Index.ts +2 -0
  2. package/Models/AnalyticsModels/ThreatIntelIndicator.ts +413 -0
  3. package/Models/DatabaseModels/AlertSeverity.ts +4 -1
  4. package/Models/DatabaseModels/CephClusterFeed.ts +625 -0
  5. package/Models/DatabaseModels/CloudResourceFeed.ts +625 -0
  6. package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +13 -0
  7. package/Models/DatabaseModels/DetectionRule.ts +9 -3
  8. package/Models/DatabaseModels/DockerHostFeed.ts +625 -0
  9. package/Models/DatabaseModels/DockerSwarmClusterFeed.ts +628 -0
  10. package/Models/DatabaseModels/GoogleSecOpsConnection.ts +9 -3
  11. package/Models/DatabaseModels/HostFeed.ts +625 -0
  12. package/Models/DatabaseModels/IncidentSeverity.ts +4 -1
  13. package/Models/DatabaseModels/Index.ts +22 -0
  14. package/Models/DatabaseModels/KubernetesClusterFeed.ts +628 -0
  15. package/Models/DatabaseModels/Monitor.ts +87 -0
  16. package/Models/DatabaseModels/NetworkDevice.ts +96 -5
  17. package/Models/DatabaseModels/NetworkDeviceAutoImportRule.ts +92 -6
  18. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +301 -31
  19. package/Models/DatabaseModels/NetworkSite.ts +120 -0
  20. package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +1 -0
  21. package/Models/DatabaseModels/PodmanHostFeed.ts +625 -0
  22. package/Models/DatabaseModels/ProxmoxClusterFeed.ts +626 -0
  23. package/Models/DatabaseModels/ScheduledMaintenance.ts +67 -0
  24. package/Models/DatabaseModels/ServiceFeed.ts +625 -0
  25. package/Models/DatabaseModels/TelemetrySourceMap.ts +474 -0
  26. package/Models/DatabaseModels/ThreatIntelFeed.ts +758 -0
  27. package/Models/DatabaseModels/UserOnCallLog.ts +1 -0
  28. package/Models/DatabaseModels/UserTotpAuth.ts +1 -0
  29. package/Models/DatabaseModels/UserWebAuthn.ts +1 -0
  30. package/Server/API/AlertAPI.ts +23 -1
  31. package/Server/API/BaseAPI.ts +14 -3
  32. package/Server/API/IncidentAPI.ts +41 -1
  33. package/Server/API/IncidentEpisodeAPI.ts +23 -1
  34. package/Server/API/MicrosoftTeamsAPI.ts +31 -2
  35. package/Server/API/ScheduledMaintenanceAPI.ts +23 -1
  36. package/Server/API/SlackAPI.ts +48 -0
  37. package/Server/API/TelemetryAPI.ts +167 -42
  38. package/Server/API/UserOnCallLogTimelineAPI.ts +75 -61
  39. package/Server/API/UserTotpAuthAPI.ts +67 -1
  40. package/Server/API/UserWebAuthnAPI.ts +44 -1
  41. package/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.ts +57 -0
  42. package/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.ts +49 -0
  43. package/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.ts +129 -0
  44. package/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.ts +54 -0
  45. package/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.ts +64 -0
  46. package/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.ts +64 -0
  47. package/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.ts +72 -0
  48. package/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.ts +31 -0
  49. package/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.ts +489 -0
  50. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +18 -0
  51. package/Server/Middleware/IdentityRateLimit.ts +53 -3
  52. package/Server/Services/AIService.ts +181 -41
  53. package/Server/Services/CephClusterFeedService.ts +99 -0
  54. package/Server/Services/CephClusterLabelRuleEngineService.ts +29 -0
  55. package/Server/Services/CephClusterOwnerRuleEngineService.ts +23 -0
  56. package/Server/Services/CephClusterOwnerTeamService.ts +129 -0
  57. package/Server/Services/CephClusterOwnerUserService.ts +123 -0
  58. package/Server/Services/CephClusterService.ts +223 -2
  59. package/Server/Services/CloudResourceFeedService.ts +99 -0
  60. package/Server/Services/CloudResourceLabelRuleEngineService.ts +30 -0
  61. package/Server/Services/CloudResourceOwnerRuleEngineService.ts +33 -0
  62. package/Server/Services/CloudResourceOwnerTeamService.ts +129 -0
  63. package/Server/Services/CloudResourceOwnerUserService.ts +123 -0
  64. package/Server/Services/CloudResourceService.ts +227 -2
  65. package/Server/Services/DatabaseService.ts +265 -0
  66. package/Server/Services/DockerHostFeedService.ts +99 -0
  67. package/Server/Services/DockerHostLabelRuleEngineService.ts +29 -0
  68. package/Server/Services/DockerHostOwnerRuleEngineService.ts +23 -0
  69. package/Server/Services/DockerHostOwnerTeamService.ts +129 -0
  70. package/Server/Services/DockerHostOwnerUserService.ts +123 -0
  71. package/Server/Services/DockerHostService.ts +227 -2
  72. package/Server/Services/DockerSwarmClusterFeedService.ts +102 -0
  73. package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +30 -0
  74. package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +24 -0
  75. package/Server/Services/DockerSwarmClusterOwnerTeamService.ts +133 -0
  76. package/Server/Services/DockerSwarmClusterOwnerUserService.ts +127 -0
  77. package/Server/Services/DockerSwarmClusterService.ts +229 -2
  78. package/Server/Services/EnterpriseLicenseService.ts +15 -7
  79. package/Server/Services/ExceptionAggregationService.ts +12 -2
  80. package/Server/Services/HostFeedService.ts +99 -0
  81. package/Server/Services/HostLabelRuleEngineService.ts +29 -0
  82. package/Server/Services/HostOwnerRuleEngineService.ts +23 -0
  83. package/Server/Services/HostOwnerTeamService.ts +129 -0
  84. package/Server/Services/HostOwnerUserService.ts +123 -0
  85. package/Server/Services/HostService.ts +215 -2
  86. package/Server/Services/IncidentService.ts +11 -0
  87. package/Server/Services/Index.ts +24 -0
  88. package/Server/Services/KubernetesClusterFeedService.ts +99 -0
  89. package/Server/Services/KubernetesClusterLabelRuleEngineService.ts +30 -0
  90. package/Server/Services/KubernetesClusterOwnerRuleEngineService.ts +24 -0
  91. package/Server/Services/KubernetesClusterOwnerTeamService.ts +133 -0
  92. package/Server/Services/KubernetesClusterOwnerUserService.ts +127 -0
  93. package/Server/Services/KubernetesClusterService.ts +231 -2
  94. package/Server/Services/LogAggregationService.ts +23 -280
  95. package/Server/Services/MetricAggregationService.ts +98 -1
  96. package/Server/Services/MonitorService.ts +177 -13
  97. package/Server/Services/MonitorTemplateService.ts +111 -0
  98. package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +777 -86
  99. package/Server/Services/NetworkDeviceAutoImportRuleService.ts +199 -16
  100. package/Server/Services/NetworkDeviceDiscoveryScanService.ts +1055 -14
  101. package/Server/Services/NetworkDeviceService.ts +750 -4
  102. package/Server/Services/NetworkInterfaceService.ts +415 -0
  103. package/Server/Services/NetworkSiteService.ts +485 -52
  104. package/Server/Services/PodmanHostFeedService.ts +99 -0
  105. package/Server/Services/PodmanHostLabelRuleEngineService.ts +29 -0
  106. package/Server/Services/PodmanHostOwnerRuleEngineService.ts +23 -0
  107. package/Server/Services/PodmanHostOwnerTeamService.ts +129 -0
  108. package/Server/Services/PodmanHostOwnerUserService.ts +123 -0
  109. package/Server/Services/PodmanHostService.ts +227 -2
  110. package/Server/Services/ProjectService.ts +16 -10
  111. package/Server/Services/ProxmoxClusterFeedService.ts +99 -0
  112. package/Server/Services/ProxmoxClusterLabelRuleEngineService.ts +30 -0
  113. package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +24 -0
  114. package/Server/Services/ProxmoxClusterOwnerTeamService.ts +131 -0
  115. package/Server/Services/ProxmoxClusterOwnerUserService.ts +124 -0
  116. package/Server/Services/ProxmoxClusterService.ts +225 -2
  117. package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +61 -0
  118. package/Server/Services/ServiceFeedService.ts +99 -0
  119. package/Server/Services/ServiceLabelRuleEngineService.ts +29 -0
  120. package/Server/Services/ServiceOwnerRuleEngineService.ts +26 -0
  121. package/Server/Services/ServiceOwnerTeamService.ts +129 -0
  122. package/Server/Services/ServiceOwnerUserService.ts +123 -0
  123. package/Server/Services/ServiceService.ts +227 -3
  124. package/Server/Services/StatusPageSubscriberService.ts +7 -0
  125. package/Server/Services/TelemetryAttributeService.ts +13 -3
  126. package/Server/Services/TelemetrySourceMapService.ts +307 -0
  127. package/Server/Services/ThreatIntelFeedService.ts +222 -0
  128. package/Server/Services/ThreatIntelIndicatorService.ts +428 -0
  129. package/Server/Services/TraceAggregationService.ts +101 -11
  130. package/Server/Services/UserService.ts +13 -6
  131. package/Server/Services/UserTwoFactorBackupCodeService.ts +127 -0
  132. package/Server/Services/UserWebhookService.ts +11 -2
  133. package/Server/Static/Brand/README.md +38 -0
  134. package/Server/Static/Brand/favicons/apple-touch-icon.png +0 -0
  135. package/Server/Static/Brand/favicons/favicon-16x16.png +0 -0
  136. package/Server/Static/Brand/favicons/favicon-32x32.png +0 -0
  137. package/Server/Static/Brand/favicons/favicon.ico +0 -0
  138. package/Server/Static/Brand/favicons/safari-pinned-tab.svg +31 -0
  139. package/Server/Static/Brand/hou-wb.svg +1 -0
  140. package/Server/Static/Brand/oneuptime-logo.svg +1 -0
  141. package/Server/Static/Brand/ou-wb.svg +1 -0
  142. package/Server/Static/Vendor/README.md +4 -0
  143. package/Server/Types/AnalyticsDatabase/ModelPermission.ts +13 -3
  144. package/Server/Types/Database/AggregateBy.ts +83 -0
  145. package/Server/Types/Database/AggregateResultUtil.ts +126 -0
  146. package/Server/Types/Database/JSONColumnQuery.ts +18 -0
  147. package/Server/Types/Database/QueryHelper.ts +40 -0
  148. package/Server/Types/Database/QueryUtil.ts +26 -0
  149. package/Server/Types/Workflow/Components/API/Utils.ts +10 -1
  150. package/Server/Types/Workflow/Components/JavaScript.ts +8 -0
  151. package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +9 -0
  152. package/Server/Utils/AI/SRE/InvestigationGrader.ts +18 -0
  153. package/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.ts +422 -0
  154. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +176 -0
  155. package/Server/Utils/DataSource/HttpFetch.ts +18 -0
  156. package/Server/Utils/Database/RelationIdUtil.ts +42 -0
  157. package/Server/Utils/Marketing/MarketingEventUtil.ts +38 -9
  158. package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +34 -3
  159. package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +9 -1
  160. package/Server/Utils/Monitor/Criteria/SyntheticMonitor.ts +28 -10
  161. package/Server/Utils/Monitor/MonitorAlert.ts +541 -332
  162. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +330 -64
  163. package/Server/Utils/Monitor/MonitorIncident.ts +640 -434
  164. package/Server/Utils/Monitor/MonitorResource.ts +226 -49
  165. package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +46 -3
  166. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +23 -102
  167. package/Server/Utils/Monitor/PerEntityCriteriaFanOut.ts +329 -0
  168. package/Server/Utils/NetworkDevice/DeviceHealthAggregation.ts +427 -0
  169. package/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.ts +310 -0
  170. package/Server/Utils/OnCallNotificationContext.ts +686 -0
  171. package/Server/Utils/PrivateNetworkWebhookConfig.ts +549 -0
  172. package/Server/Utils/ResourceFeed/ResourceFeedUtil.ts +139 -0
  173. package/Server/Utils/Response.ts +11 -1
  174. package/Server/Utils/SSRFProtection.ts +230 -60
  175. package/Server/Utils/SecurityEvent/ConnectorErrorMessage.ts +106 -0
  176. package/Server/Utils/SecurityEvent/DetectionRuleEvaluator.ts +84 -284
  177. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.ts +47 -20
  178. package/Server/Utils/SecurityEvent/SecurityEventAlerting.ts +318 -0
  179. package/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.ts +199 -0
  180. package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.ts +252 -0
  181. package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.ts +739 -0
  182. package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.ts +533 -0
  183. package/Server/Utils/StartServer.ts +83 -56
  184. package/Server/Utils/StatusPageSubscriberWebhook.ts +3 -0
  185. package/Server/Utils/Telemetry/SourceMapResolver.ts +480 -0
  186. package/Server/Utils/TwoFactorBackupCodeNotification.ts +106 -0
  187. package/Server/Utils/VM/VMAPI.ts +3 -0
  188. package/Server/Utils/VM/VMRunner.ts +27 -1
  189. package/Server/Utils/VendorAssets.ts +42 -0
  190. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +136 -6
  191. package/Server/Views/AcknowledgeUserOnCallNotification.ejs +11 -9
  192. package/Server/Views/Partials/Head.ejs +9 -9
  193. package/Server/Views/Partials/OnCallNotificationDetails.ejs +48 -0
  194. package/Server/Views/ViewMessage.ejs +11 -9
  195. package/Tests/App/Accounts/LoginTwoFactorRecovery.test.tsx +972 -0
  196. package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +401 -0
  197. package/Tests/App/Dashboard/DiscoveryScanEditForm.test.tsx +707 -0
  198. package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +1908 -18
  199. package/Tests/App/Dashboard/ResourceFeed.test.tsx +230 -0
  200. package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +216 -0
  201. package/Tests/App/Dashboard/TopologyAddToMonitoring.test.tsx +192 -0
  202. package/Tests/App/Dashboard/WorkspaceNotificationRuleConditions.test.tsx +439 -0
  203. package/Tests/Models/DatabaseModels/DateColumnDeserialization.test.ts +182 -0
  204. package/Tests/Models/DatabaseModels/RelationColumnModelTypeCoverage.test.ts +82 -0
  205. package/Tests/Models/DatabaseModels/ResourceFeedModels.test.ts +398 -0
  206. package/Tests/Models/DiscoveryScanNameColumn.test.ts +151 -16
  207. package/Tests/Models/DiscoveryScanSnmpEnabledColumn.test.ts +593 -0
  208. package/Tests/Models/NetworkDeviceCreateContract.test.ts +102 -0
  209. package/Tests/Server/API/AIGenerationProjectAIToggle.test.ts +607 -0
  210. package/Tests/Server/API/AIGenerationRequestBudget.test.ts +355 -0
  211. package/Tests/Server/API/AIKillSwitchBackstop.test.ts +602 -0
  212. package/Tests/Server/API/BaseAPIUpdateDateColumns.test.ts +154 -0
  213. package/Tests/Server/API/MicrosoftTeamsBotTestEndpoint.test.ts +335 -0
  214. package/Tests/Server/API/UserOnCallLogTimelineAcknowledgePage.test.ts +611 -0
  215. package/Tests/Server/API/UserTotpAuthAPI.test.ts +498 -4
  216. package/Tests/Server/API/UserWebAuthnBackupCodeMinting.test.ts +682 -0
  217. package/Tests/Server/Infrastructure/ExampleDockerfiles.test.ts +595 -0
  218. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +9 -0
  219. package/Tests/Server/Services/AIServiceProjectAccess.test.ts +6 -0
  220. package/Tests/Server/Services/AutoImportScanCredentialSelect.test.ts +18 -0
  221. package/Tests/Server/Services/DatabaseServiceAggregateBy.test.ts +590 -0
  222. package/Tests/Server/Services/DatabaseServiceUpdateWriteRouting.test.ts +12 -0
  223. package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +162 -26
  224. package/Tests/Server/Services/EnterpriseLicenseServiceCreate.test.ts +292 -0
  225. package/Tests/Server/Services/FeedRetentionConsistency.test.ts +119 -12
  226. package/Tests/Server/Services/LogAggregationAttributeOperators.test.ts +109 -0
  227. package/Tests/Server/Services/MetricAggregationAttributeOperators.test.ts +170 -0
  228. package/Tests/Server/Services/MonitorTemplateServiceNetworkDeviceSync.test.ts +383 -0
  229. package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +997 -3
  230. package/Tests/Server/Services/NetworkDeviceAutoImportRuleService.test.ts +830 -0
  231. package/Tests/Server/Services/NetworkDeviceAutoMonitorLifecycle.test.ts +528 -0
  232. package/Tests/Server/Services/NetworkDeviceDiscoveryScanService.test.ts +3141 -1
  233. package/Tests/Server/Services/NetworkDeviceRegisteredHostnames.test.ts +1023 -0
  234. package/Tests/Server/Services/NetworkDeviceSiteAssignmentRuleSkip.test.ts +728 -0
  235. package/Tests/Server/Services/NetworkInterfaceServiceUpsert.test.ts +795 -0
  236. package/Tests/Server/Services/NetworkSiteRollupPolicyAndMaintenance.test.ts +903 -0
  237. package/Tests/Server/Services/NetworkSiteService.test.ts +165 -24
  238. package/Tests/Server/Services/ProjectServiceChangePlan.test.ts +5 -3
  239. package/Tests/Server/Services/ProjectServiceCreateSubscriptionStarted.test.ts +5 -2
  240. package/Tests/Server/Services/ResourceCreationFeedWrites.test.ts +304 -0
  241. package/Tests/Server/Services/ResourceFeedServices.test.ts +269 -0
  242. package/Tests/Server/Services/ResourceOwnerFeedWrites.test.ts +245 -0
  243. package/Tests/Server/Services/SecurityEventLastErrorColumnWidth.test.ts +792 -0
  244. package/Tests/Server/Services/TelemetrySourceMapService.test.ts +483 -0
  245. package/Tests/Server/Services/ThreatIntelFeedService.test.ts +351 -0
  246. package/Tests/Server/Services/ThreatIntelIndicatorService.test.ts +366 -0
  247. package/Tests/Server/Services/TraceAggregationAttributeOperators.test.ts +507 -0
  248. package/Tests/Server/Services/UserTwoFactorBackupCodeGenerateIfNone.test.ts +705 -0
  249. package/Tests/Server/Services/WorkspaceNotificationRuleOnCallDutyPolicy.test.ts +306 -0
  250. package/Tests/Server/Types/Database/AggregateResultUtil.test.ts +386 -0
  251. package/Tests/Server/Types/Database/Permissions/SelectRejectionMessageContract.test.ts +424 -0
  252. package/Tests/Server/Types/Database/QueryHelperWildcard.test.ts +142 -0
  253. package/Tests/Server/Types/Workflow/Components/ApiComponentPrivateNetwork.test.ts +163 -0
  254. package/Tests/Server/Types/Workflow/Components/JavaScriptPrivateNetwork.test.ts +124 -0
  255. package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +5 -0
  256. package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +39 -1
  257. package/Tests/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.test.ts +338 -0
  258. package/Tests/Server/Utils/AnalyticsDatabase/StatementGeneratorWildcard.test.ts +383 -0
  259. package/Tests/Server/Utils/Marketing/EmittedMarketingEvent.ts +23 -0
  260. package/Tests/Server/Utils/Marketing/MarketingEventUtil.test.ts +51 -0
  261. package/Tests/Server/Utils/Monitor/Criteria/SyntheticMonitorCriteria.test.ts +259 -0
  262. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPerSeriesFanout.test.ts +557 -0
  263. package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +12 -2
  264. package/Tests/Server/Utils/Monitor/NetworkDeviceWalkLogWritePath.test.ts +404 -0
  265. package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +8 -2
  266. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +125 -98
  267. package/Tests/Server/Utils/Monitor/PerEntityCriteriaFanOut.test.ts +444 -0
  268. package/Tests/Server/Utils/Monitor/PerSeriesSecondEntityAlerting.test.ts +1112 -0
  269. package/Tests/Server/Utils/NetworkDevice/DeviceHealthAggregation.test.ts +717 -0
  270. package/Tests/Server/Utils/NetworkDevice/RulePatternValidator.test.ts +78 -0
  271. package/Tests/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.test.ts +363 -0
  272. package/Tests/Server/Utils/OfflineAssetHygiene.test.ts +35 -0
  273. package/Tests/Server/Utils/OnCallNotificationContext.test.ts +908 -0
  274. package/Tests/Server/Utils/PrivateNetworkWebhookConfig.test.ts +423 -0
  275. package/Tests/Server/Utils/ResourceFeed/ResourceFeedUtil.test.ts +191 -0
  276. package/Tests/Server/Utils/SSRFProtectionPrivateNetwork.test.ts +597 -0
  277. package/Tests/Server/Utils/SecurityEvent/ConnectorErrorMessage.test.ts +819 -0
  278. package/Tests/Server/Utils/SecurityEvent/DetectionRuleEvaluator.test.ts +381 -0
  279. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPoller.test.ts +417 -0
  280. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerFailureTaxonomy.test.ts +819 -0
  281. package/Tests/Server/Utils/SecurityEvent/SecurityEventAlerting.test.ts +246 -0
  282. package/Tests/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.test.ts +282 -0
  283. package/Tests/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.test.ts +312 -0
  284. package/Tests/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.test.ts +854 -0
  285. package/Tests/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.test.ts +437 -0
  286. package/Tests/Server/Utils/StartServerErrorStatus.test.ts +225 -0
  287. package/Tests/Server/Utils/StatusPage/MonitorRulePatternValidator.test.ts +62 -0
  288. package/Tests/Server/Utils/StatusPageSubscriberWebhookPrivateNetwork.test.ts +119 -0
  289. package/Tests/Server/Utils/Telemetry/SourceMapResolver.test.ts +542 -0
  290. package/Tests/Server/Utils/TwoFactorBackupCodeNotification.test.ts +272 -0
  291. package/Tests/Server/Utils/VM/VMRunnerPrivateNetworkWiring.test.ts +111 -0
  292. package/Tests/Server/Utils/VendorAssets.test.ts +117 -0
  293. package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelSend.test.ts +101 -4
  294. package/Tests/Server/Utils/Workspace/MicrosoftTeamsInstallStateDiagnostics.test.ts +922 -0
  295. package/Tests/Server/Utils/Workspace/MicrosoftTeamsRosterDiagnosticMessages.test.ts +642 -0
  296. package/Tests/Server/Views/OnCallAcknowledgePage.test.ts +430 -0
  297. package/Tests/Types/API/HostnameAuthorityParsing.test.ts +1 -0
  298. package/Tests/Types/API/URLMailtoQueryString.test.ts +439 -0
  299. package/Tests/Types/API/URLQueryString.test.ts +481 -0
  300. package/Tests/Types/API/URLRouteQuerySeparation.test.ts +491 -0
  301. package/Tests/Types/BaseDatabase/Wildcard.test.ts +163 -0
  302. package/Tests/Types/BaseDatabase/WildcardPattern.test.ts +149 -0
  303. package/Tests/Types/Database/DateColumnValue.test.ts +265 -0
  304. package/Tests/Types/DateToIsoStringOrNull.test.ts +67 -0
  305. package/Tests/Types/Log/LogQueryToFilter.test.ts +218 -43
  306. package/Tests/Types/Monitor/KubernetesTemplateGroupByKeys.test.ts +225 -0
  307. package/Tests/Types/Monitor/TemplateGroupByKeys.test.ts +296 -0
  308. package/Tests/Types/NetworkAutomation/RuleRunResult.test.ts +102 -0
  309. package/Tests/Types/NetworkAutomation/RuleRunResultDescribe.test.ts +145 -0
  310. package/Tests/Types/NetworkSite/SiteHealthRollupPolicy.test.ts +58 -0
  311. package/Tests/Types/SerializableObjectDictionaryImportCycle.test.ts +15 -0
  312. package/Tests/Types/Telemetry/TelemetrySearchQuery.test.ts +620 -0
  313. package/Tests/Types/WhatsApp/WhatsAppTemplates.test.ts +110 -0
  314. package/Tests/Types/Workspace/NotificationRuleConditionUtil.test.ts +76 -6
  315. package/Tests/Types/Workspace/NotificationRules/NotificationRuleCondition.test.ts +16 -4
  316. package/Tests/Types/Workspace/NotificationRules/OnCallDutyPolicyConditions.test.ts +669 -0
  317. package/Tests/UI/Components/DictionaryFilterOperatorWildcard.test.ts +175 -0
  318. package/Tests/UI/Components/IconOpticalSize.test.tsx +377 -0
  319. package/Tests/UI/Components/LogsHistogramDragTooltip.test.tsx +393 -0
  320. package/Tests/UI/Components/LogsViewerHistogramZoom.test.tsx +248 -0
  321. package/Tests/UI/Components/TelemetryHistogramDragTooltip.test.tsx +205 -0
  322. package/Tests/UI/Components/UseHistogramZoom.test.tsx +262 -0
  323. package/Tests/UI/MicrosoftTeams/MicrosoftTeamsChatsCardInstallGuidance.test.tsx +332 -0
  324. package/Tests/UI/MicrosoftTeams/MicrosoftTeamsInstallGuidanceContent.test.tsx +643 -0
  325. package/Tests/Utils/Monitor/InterfaceInventoryUtil.test.ts +824 -0
  326. package/Tests/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.test.ts +626 -0
  327. package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +718 -0
  328. package/Tests/Utils/NetworkDevice/DeviceHealthStateUtil.test.ts +59 -0
  329. package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +287 -2
  330. package/Tests/Utils/NetworkDiscovery/DiscoveryImportEligibility.test.ts +73 -0
  331. package/Tests/Utils/NetworkDiscovery/PingMonitorBuilder.test.ts +317 -0
  332. package/Tests/Utils/NetworkDiscovery/RescanIntervalUtil.test.ts +262 -0
  333. package/Tests/Utils/NetworkDiscovery/ScanModeUtil.test.ts +474 -0
  334. package/Tests/Utils/NetworkDiscovery/SnmpScanConfigUtil.test.ts +2442 -0
  335. package/Tests/Utils/NetworkSite/SiteMaintenanceUtil.test.ts +188 -0
  336. package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +522 -0
  337. package/Tests/Utils/NetworkSite/SiteUptimeUtil.test.ts +694 -0
  338. package/Tests/Utils/SecurityEvent/ThreatIntel/StixPatternParser.test.ts +281 -0
  339. package/Tests/Utils/Telemetry/CrossSignalScope.test.ts +87 -67
  340. package/Types/API/URL.ts +100 -28
  341. package/Types/AnalyticsDatabase/AnalyticsTableName.ts +8 -0
  342. package/Types/BaseDatabase/NotWildcard.ts +86 -0
  343. package/Types/BaseDatabase/Wildcard.ts +89 -0
  344. package/Types/BaseDatabase/WildcardPattern.ts +176 -0
  345. package/Types/Database/DateColumnValue.ts +184 -0
  346. package/Types/Database/TableColumn.ts +40 -5
  347. package/Types/Date.ts +37 -0
  348. package/Types/Email/EmailTemplateType.ts +1 -0
  349. package/Types/JSON.ts +8 -0
  350. package/Types/Log/LogQueryToFilter.ts +167 -129
  351. package/Types/Monitor/DockerAlertTemplates.ts +43 -12
  352. package/Types/Monitor/HostAlertTemplates.ts +31 -3
  353. package/Types/Monitor/KubernetesAlertTemplates.ts +98 -0
  354. package/Types/Monitor/MonitorStep.ts +49 -0
  355. package/Types/Monitor/PodmanAlertTemplates.ts +39 -12
  356. package/Types/Monitor/SnmpMonitor/CdpNeighbor.ts +14 -0
  357. package/Types/Monitor/SnmpMonitor/LldpNeighbor.ts +11 -0
  358. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +11 -4
  359. package/Types/NetworkAutomation/RuleRunResult.ts +191 -2
  360. package/Types/NetworkSite/SiteHealthRollupPolicy.ts +96 -0
  361. package/Types/Permission.ts +411 -0
  362. package/Types/Probe/ProbeApiIngestResponse.ts +42 -0
  363. package/Types/SecurityEvent/ThreatIntelConstants.ts +118 -0
  364. package/Types/SerializableObjectDictionary.ts +8 -0
  365. package/Types/Telemetry/SourceMap.ts +56 -0
  366. package/Types/Telemetry/TelemetrySearchQuery.ts +949 -0
  367. package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +12 -1
  368. package/UI/Components/Charts/Utils/useHistogramZoom.ts +101 -0
  369. package/UI/Components/Dictionary/DictionaryFilterOperator.ts +83 -0
  370. package/UI/Components/Icon/Icon.tsx +28 -1
  371. package/UI/Components/LogsViewer/LogsViewer.tsx +19 -3
  372. package/UI/Components/LogsViewer/components/LogSearchBar.tsx +26 -4
  373. package/UI/Components/LogsViewer/components/LogSearchHelp.tsx +34 -16
  374. package/UI/Components/LogsViewer/components/LogsHistogram.tsx +52 -1
  375. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +18 -2
  376. package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +52 -1
  377. package/UI/Components/TelemetryViewer/components/TelemetrySearchBar.tsx +15 -2
  378. package/Utils/Metrics/MetricExplorerUrl.ts +77 -15
  379. package/Utils/Monitor/InterfaceInventoryUtil.ts +251 -0
  380. package/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.ts +333 -0
  381. package/Utils/Monitor/NetworkTopologyUtil.ts +249 -28
  382. package/Utils/NetworkDevice/DeviceHealthStateUtil.ts +14 -6
  383. package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +2 -0
  384. package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +49 -18
  385. package/Utils/NetworkDiscovery/PingMonitorBuilder.ts +215 -0
  386. package/Utils/NetworkDiscovery/RescanIntervalUtil.ts +148 -0
  387. package/Utils/NetworkDiscovery/ScanModeUtil.ts +105 -0
  388. package/Utils/NetworkDiscovery/SnmpScanConfigUtil.ts +827 -0
  389. package/Utils/NetworkSite/SiteMaintenanceUtil.ts +110 -0
  390. package/Utils/NetworkSite/SiteStatusRollupUtil.ts +350 -19
  391. package/Utils/NetworkSite/SiteUptimeUtil.ts +422 -21
  392. package/Utils/SecurityEvent/ThreatIntel/StixPatternParser.ts +383 -0
  393. package/Utils/Telemetry/CrossSignalScope.ts +37 -39
  394. package/build/dist/Models/AnalyticsModels/Index.js +2 -0
  395. package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
  396. package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js +325 -0
  397. package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js.map +1 -0
  398. package/build/dist/Models/DatabaseModels/AlertSeverity.js +4 -1
  399. package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
  400. package/build/dist/Models/DatabaseModels/CephClusterFeed.js +648 -0
  401. package/build/dist/Models/DatabaseModels/CephClusterFeed.js.map +1 -0
  402. package/build/dist/Models/DatabaseModels/CloudResourceFeed.js +648 -0
  403. package/build/dist/Models/DatabaseModels/CloudResourceFeed.js.map +1 -0
  404. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +11 -0
  405. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
  406. package/build/dist/Models/DatabaseModels/DetectionRule.js +9 -3
  407. package/build/dist/Models/DatabaseModels/DetectionRule.js.map +1 -1
  408. package/build/dist/Models/DatabaseModels/DockerHostFeed.js +648 -0
  409. package/build/dist/Models/DatabaseModels/DockerHostFeed.js.map +1 -0
  410. package/build/dist/Models/DatabaseModels/DockerSwarmClusterFeed.js +648 -0
  411. package/build/dist/Models/DatabaseModels/DockerSwarmClusterFeed.js.map +1 -0
  412. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js +9 -3
  413. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js.map +1 -1
  414. package/build/dist/Models/DatabaseModels/HostFeed.js +648 -0
  415. package/build/dist/Models/DatabaseModels/HostFeed.js.map +1 -0
  416. package/build/dist/Models/DatabaseModels/IncidentSeverity.js +4 -1
  417. package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
  418. package/build/dist/Models/DatabaseModels/Index.js +22 -0
  419. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  420. package/build/dist/Models/DatabaseModels/KubernetesClusterFeed.js +648 -0
  421. package/build/dist/Models/DatabaseModels/KubernetesClusterFeed.js.map +1 -0
  422. package/build/dist/Models/DatabaseModels/Monitor.js +81 -0
  423. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  424. package/build/dist/Models/DatabaseModels/NetworkDevice.js +103 -7
  425. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  426. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +91 -6
  427. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
  428. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +276 -31
  429. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
  430. package/build/dist/Models/DatabaseModels/NetworkSite.js +124 -1
  431. package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -1
  432. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +1 -0
  433. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
  434. package/build/dist/Models/DatabaseModels/PodmanHostFeed.js +648 -0
  435. package/build/dist/Models/DatabaseModels/PodmanHostFeed.js.map +1 -0
  436. package/build/dist/Models/DatabaseModels/ProxmoxClusterFeed.js +648 -0
  437. package/build/dist/Models/DatabaseModels/ProxmoxClusterFeed.js.map +1 -0
  438. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +66 -0
  439. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  440. package/build/dist/Models/DatabaseModels/ServiceFeed.js +648 -0
  441. package/build/dist/Models/DatabaseModels/ServiceFeed.js.map +1 -0
  442. package/build/dist/Models/DatabaseModels/TelemetrySourceMap.js +496 -0
  443. package/build/dist/Models/DatabaseModels/TelemetrySourceMap.js.map +1 -0
  444. package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js +800 -0
  445. package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js.map +1 -0
  446. package/build/dist/Models/DatabaseModels/UserOnCallLog.js +1 -0
  447. package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
  448. package/build/dist/Models/DatabaseModels/UserTotpAuth.js +1 -0
  449. package/build/dist/Models/DatabaseModels/UserTotpAuth.js.map +1 -1
  450. package/build/dist/Models/DatabaseModels/UserWebAuthn.js +1 -0
  451. package/build/dist/Models/DatabaseModels/UserWebAuthn.js.map +1 -1
  452. package/build/dist/Server/API/AlertAPI.js +18 -1
  453. package/build/dist/Server/API/AlertAPI.js.map +1 -1
  454. package/build/dist/Server/API/BaseAPI.js +8 -1
  455. package/build/dist/Server/API/BaseAPI.js.map +1 -1
  456. package/build/dist/Server/API/IncidentAPI.js +35 -1
  457. package/build/dist/Server/API/IncidentAPI.js.map +1 -1
  458. package/build/dist/Server/API/IncidentEpisodeAPI.js +18 -1
  459. package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
  460. package/build/dist/Server/API/MicrosoftTeamsAPI.js +30 -2
  461. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  462. package/build/dist/Server/API/ScheduledMaintenanceAPI.js +18 -1
  463. package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
  464. package/build/dist/Server/API/SlackAPI.js +45 -0
  465. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  466. package/build/dist/Server/API/TelemetryAPI.js +100 -35
  467. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  468. package/build/dist/Server/API/UserOnCallLogTimelineAPI.js +64 -59
  469. package/build/dist/Server/API/UserOnCallLogTimelineAPI.js.map +1 -1
  470. package/build/dist/Server/API/UserTotpAuthAPI.js +65 -1
  471. package/build/dist/Server/API/UserTotpAuthAPI.js.map +1 -1
  472. package/build/dist/Server/API/UserWebAuthnAPI.js +42 -1
  473. package/build/dist/Server/API/UserWebAuthnAPI.js.map +1 -1
  474. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.js +26 -0
  475. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.js.map +1 -0
  476. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.js +22 -0
  477. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.js.map +1 -0
  478. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.js +88 -0
  479. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.js.map +1 -0
  480. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.js +39 -0
  481. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.js.map +1 -0
  482. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.js +34 -0
  483. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.js.map +1 -0
  484. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.js +32 -0
  485. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.js.map +1 -0
  486. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.js +61 -0
  487. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.js.map +1 -0
  488. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.js +23 -0
  489. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.js.map +1 -0
  490. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.js +179 -0
  491. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.js.map +1 -0
  492. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +18 -0
  493. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  494. package/build/dist/Server/Middleware/IdentityRateLimit.js +40 -3
  495. package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
  496. package/build/dist/Server/Services/AIService.js +177 -30
  497. package/build/dist/Server/Services/AIService.js.map +1 -1
  498. package/build/dist/Server/Services/CephClusterFeedService.js +89 -0
  499. package/build/dist/Server/Services/CephClusterFeedService.js.map +1 -0
  500. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +27 -3
  501. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -1
  502. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +21 -0
  503. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
  504. package/build/dist/Server/Services/CephClusterOwnerTeamService.js +120 -0
  505. package/build/dist/Server/Services/CephClusterOwnerTeamService.js.map +1 -1
  506. package/build/dist/Server/Services/CephClusterOwnerUserService.js +113 -0
  507. package/build/dist/Server/Services/CephClusterOwnerUserService.js.map +1 -1
  508. package/build/dist/Server/Services/CephClusterService.js +175 -1
  509. package/build/dist/Server/Services/CephClusterService.js.map +1 -1
  510. package/build/dist/Server/Services/CloudResourceFeedService.js +89 -0
  511. package/build/dist/Server/Services/CloudResourceFeedService.js.map +1 -0
  512. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +27 -3
  513. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -1
  514. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +28 -3
  515. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
  516. package/build/dist/Server/Services/CloudResourceOwnerTeamService.js +120 -0
  517. package/build/dist/Server/Services/CloudResourceOwnerTeamService.js.map +1 -1
  518. package/build/dist/Server/Services/CloudResourceOwnerUserService.js +113 -0
  519. package/build/dist/Server/Services/CloudResourceOwnerUserService.js.map +1 -1
  520. package/build/dist/Server/Services/CloudResourceService.js +177 -1
  521. package/build/dist/Server/Services/CloudResourceService.js.map +1 -1
  522. package/build/dist/Server/Services/DatabaseService.js +201 -0
  523. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  524. package/build/dist/Server/Services/DockerHostFeedService.js +89 -0
  525. package/build/dist/Server/Services/DockerHostFeedService.js.map +1 -0
  526. package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js +27 -3
  527. package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js.map +1 -1
  528. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +21 -0
  529. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
  530. package/build/dist/Server/Services/DockerHostOwnerTeamService.js +120 -0
  531. package/build/dist/Server/Services/DockerHostOwnerTeamService.js.map +1 -1
  532. package/build/dist/Server/Services/DockerHostOwnerUserService.js +113 -0
  533. package/build/dist/Server/Services/DockerHostOwnerUserService.js.map +1 -1
  534. package/build/dist/Server/Services/DockerHostService.js +177 -1
  535. package/build/dist/Server/Services/DockerHostService.js.map +1 -1
  536. package/build/dist/Server/Services/DockerSwarmClusterFeedService.js +90 -0
  537. package/build/dist/Server/Services/DockerSwarmClusterFeedService.js.map +1 -0
  538. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +27 -3
  539. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -1
  540. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +21 -0
  541. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
  542. package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js +120 -0
  543. package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js.map +1 -1
  544. package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js +113 -0
  545. package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js.map +1 -1
  546. package/build/dist/Server/Services/DockerSwarmClusterService.js +175 -1
  547. package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -1
  548. package/build/dist/Server/Services/EnterpriseLicenseService.js +40 -30
  549. package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
  550. package/build/dist/Server/Services/ExceptionAggregationService.js +8 -2
  551. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
  552. package/build/dist/Server/Services/HostFeedService.js +89 -0
  553. package/build/dist/Server/Services/HostFeedService.js.map +1 -0
  554. package/build/dist/Server/Services/HostLabelRuleEngineService.js +27 -3
  555. package/build/dist/Server/Services/HostLabelRuleEngineService.js.map +1 -1
  556. package/build/dist/Server/Services/HostOwnerRuleEngineService.js +21 -0
  557. package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
  558. package/build/dist/Server/Services/HostOwnerTeamService.js +120 -0
  559. package/build/dist/Server/Services/HostOwnerTeamService.js.map +1 -1
  560. package/build/dist/Server/Services/HostOwnerUserService.js +113 -0
  561. package/build/dist/Server/Services/HostOwnerUserService.js.map +1 -1
  562. package/build/dist/Server/Services/HostService.js +175 -1
  563. package/build/dist/Server/Services/HostService.js.map +1 -1
  564. package/build/dist/Server/Services/IncidentService.js +10 -0
  565. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  566. package/build/dist/Server/Services/Index.js +24 -0
  567. package/build/dist/Server/Services/Index.js.map +1 -1
  568. package/build/dist/Server/Services/KubernetesClusterFeedService.js +89 -0
  569. package/build/dist/Server/Services/KubernetesClusterFeedService.js.map +1 -0
  570. package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js +27 -3
  571. package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js.map +1 -1
  572. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +21 -0
  573. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
  574. package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js +120 -0
  575. package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js.map +1 -1
  576. package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js +113 -0
  577. package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js.map +1 -1
  578. package/build/dist/Server/Services/KubernetesClusterService.js +177 -1
  579. package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
  580. package/build/dist/Server/Services/LogAggregationService.js +19 -196
  581. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  582. package/build/dist/Server/Services/MetricAggregationService.js +59 -0
  583. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  584. package/build/dist/Server/Services/MonitorService.js +115 -13
  585. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  586. package/build/dist/Server/Services/MonitorTemplateService.js +86 -0
  587. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  588. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +561 -67
  589. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
  590. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +130 -16
  591. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
  592. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +850 -8
  593. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
  594. package/build/dist/Server/Services/NetworkDeviceService.js +594 -5
  595. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  596. package/build/dist/Server/Services/NetworkInterfaceService.js +306 -0
  597. package/build/dist/Server/Services/NetworkInterfaceService.js.map +1 -1
  598. package/build/dist/Server/Services/NetworkSiteService.js +408 -47
  599. package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
  600. package/build/dist/Server/Services/PodmanHostFeedService.js +89 -0
  601. package/build/dist/Server/Services/PodmanHostFeedService.js.map +1 -0
  602. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +27 -3
  603. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -1
  604. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +21 -0
  605. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
  606. package/build/dist/Server/Services/PodmanHostOwnerTeamService.js +120 -0
  607. package/build/dist/Server/Services/PodmanHostOwnerTeamService.js.map +1 -1
  608. package/build/dist/Server/Services/PodmanHostOwnerUserService.js +113 -0
  609. package/build/dist/Server/Services/PodmanHostOwnerUserService.js.map +1 -1
  610. package/build/dist/Server/Services/PodmanHostService.js +177 -1
  611. package/build/dist/Server/Services/PodmanHostService.js.map +1 -1
  612. package/build/dist/Server/Services/ProjectService.js +40 -30
  613. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  614. package/build/dist/Server/Services/ProxmoxClusterFeedService.js +89 -0
  615. package/build/dist/Server/Services/ProxmoxClusterFeedService.js.map +1 -0
  616. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +27 -3
  617. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -1
  618. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +21 -0
  619. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
  620. package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js +120 -0
  621. package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js.map +1 -1
  622. package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js +113 -0
  623. package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js.map +1 -1
  624. package/build/dist/Server/Services/ProxmoxClusterService.js +175 -1
  625. package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -1
  626. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +56 -0
  627. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
  628. package/build/dist/Server/Services/ServiceFeedService.js +89 -0
  629. package/build/dist/Server/Services/ServiceFeedService.js.map +1 -0
  630. package/build/dist/Server/Services/ServiceLabelRuleEngineService.js +27 -3
  631. package/build/dist/Server/Services/ServiceLabelRuleEngineService.js.map +1 -1
  632. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +24 -0
  633. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
  634. package/build/dist/Server/Services/ServiceOwnerTeamService.js +120 -0
  635. package/build/dist/Server/Services/ServiceOwnerTeamService.js.map +1 -1
  636. package/build/dist/Server/Services/ServiceOwnerUserService.js +113 -0
  637. package/build/dist/Server/Services/ServiceOwnerUserService.js.map +1 -1
  638. package/build/dist/Server/Services/ServiceService.js +173 -2
  639. package/build/dist/Server/Services/ServiceService.js.map +1 -1
  640. package/build/dist/Server/Services/StatusPageSubscriberService.js +7 -0
  641. package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
  642. package/build/dist/Server/Services/TelemetryAttributeService.js +9 -3
  643. package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
  644. package/build/dist/Server/Services/TelemetrySourceMapService.js +265 -0
  645. package/build/dist/Server/Services/TelemetrySourceMapService.js.map +1 -0
  646. package/build/dist/Server/Services/ThreatIntelFeedService.js +157 -0
  647. package/build/dist/Server/Services/ThreatIntelFeedService.js.map +1 -0
  648. package/build/dist/Server/Services/ThreatIntelIndicatorService.js +276 -0
  649. package/build/dist/Server/Services/ThreatIntelIndicatorService.js.map +1 -0
  650. package/build/dist/Server/Services/TraceAggregationService.js +62 -6
  651. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  652. package/build/dist/Server/Services/UserService.js +22 -13
  653. package/build/dist/Server/Services/UserService.js.map +1 -1
  654. package/build/dist/Server/Services/UserTwoFactorBackupCodeService.js +120 -0
  655. package/build/dist/Server/Services/UserTwoFactorBackupCodeService.js.map +1 -1
  656. package/build/dist/Server/Services/UserWebhookService.js +11 -2
  657. package/build/dist/Server/Services/UserWebhookService.js.map +1 -1
  658. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +12 -1
  659. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
  660. package/build/dist/Server/Types/Database/AggregateBy.js +2 -0
  661. package/build/dist/Server/Types/Database/AggregateBy.js.map +1 -0
  662. package/build/dist/Server/Types/Database/AggregateResultUtil.js +90 -0
  663. package/build/dist/Server/Types/Database/AggregateResultUtil.js.map +1 -0
  664. package/build/dist/Server/Types/Database/JSONColumnQuery.js +14 -0
  665. package/build/dist/Server/Types/Database/JSONColumnQuery.js.map +1 -1
  666. package/build/dist/Server/Types/Database/QueryHelper.js +42 -0
  667. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  668. package/build/dist/Server/Types/Database/QueryUtil.js +18 -0
  669. package/build/dist/Server/Types/Database/QueryUtil.js.map +1 -1
  670. package/build/dist/Server/Types/Workflow/Components/API/Utils.js +10 -1
  671. package/build/dist/Server/Types/Workflow/Components/API/Utils.js.map +1 -1
  672. package/build/dist/Server/Types/Workflow/Components/JavaScript.js +8 -0
  673. package/build/dist/Server/Types/Workflow/Components/JavaScript.js.map +1 -1
  674. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +8 -0
  675. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
  676. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +15 -0
  677. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -1
  678. package/build/dist/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.js +266 -0
  679. package/build/dist/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.js.map +1 -0
  680. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +134 -0
  681. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  682. package/build/dist/Server/Utils/DataSource/HttpFetch.js +8 -0
  683. package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -1
  684. package/build/dist/Server/Utils/Database/RelationIdUtil.js +31 -0
  685. package/build/dist/Server/Utils/Database/RelationIdUtil.js.map +1 -1
  686. package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js +26 -8
  687. package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js.map +1 -1
  688. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +42 -17
  689. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js.map +1 -1
  690. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +9 -1
  691. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
  692. package/build/dist/Server/Utils/Monitor/Criteria/SyntheticMonitor.js +15 -2
  693. package/build/dist/Server/Utils/Monitor/Criteria/SyntheticMonitor.js.map +1 -1
  694. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +386 -271
  695. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  696. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +278 -64
  697. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  698. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +469 -350
  699. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  700. package/build/dist/Server/Utils/Monitor/MonitorResource.js +183 -44
  701. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  702. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +46 -3
  703. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
  704. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +18 -91
  705. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  706. package/build/dist/Server/Utils/Monitor/PerEntityCriteriaFanOut.js +194 -0
  707. package/build/dist/Server/Utils/Monitor/PerEntityCriteriaFanOut.js.map +1 -0
  708. package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js +332 -0
  709. package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js.map +1 -0
  710. package/build/dist/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.js +279 -0
  711. package/build/dist/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.js.map +1 -0
  712. package/build/dist/Server/Utils/OnCallNotificationContext.js +415 -0
  713. package/build/dist/Server/Utils/OnCallNotificationContext.js.map +1 -0
  714. package/build/dist/Server/Utils/PrivateNetworkWebhookConfig.js +424 -0
  715. package/build/dist/Server/Utils/PrivateNetworkWebhookConfig.js.map +1 -0
  716. package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js +108 -0
  717. package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js.map +1 -0
  718. package/build/dist/Server/Utils/Response.js +12 -1
  719. package/build/dist/Server/Utils/Response.js.map +1 -1
  720. package/build/dist/Server/Utils/SSRFProtection.js +160 -58
  721. package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
  722. package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js +89 -0
  723. package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js.map +1 -0
  724. package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js +75 -234
  725. package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js.map +1 -1
  726. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +41 -16
  727. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -1
  728. package/build/dist/Server/Utils/SecurityEvent/SecurityEventAlerting.js +217 -0
  729. package/build/dist/Server/Utils/SecurityEvent/SecurityEventAlerting.js.map +1 -0
  730. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.js +103 -0
  731. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.js.map +1 -0
  732. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.js +168 -0
  733. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.js.map +1 -0
  734. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.js +527 -0
  735. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.js.map +1 -0
  736. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.js +376 -0
  737. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.js.map +1 -0
  738. package/build/dist/Server/Utils/StartServer.js +70 -44
  739. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  740. package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js +3 -0
  741. package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js.map +1 -1
  742. package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js +327 -0
  743. package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js.map +1 -0
  744. package/build/dist/Server/Utils/TwoFactorBackupCodeNotification.js +84 -0
  745. package/build/dist/Server/Utils/TwoFactorBackupCodeNotification.js.map +1 -0
  746. package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
  747. package/build/dist/Server/Utils/VM/VMRunner.js +10 -1
  748. package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
  749. package/build/dist/Server/Utils/VendorAssets.js +29 -0
  750. package/build/dist/Server/Utils/VendorAssets.js.map +1 -1
  751. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +121 -6
  752. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  753. package/build/dist/Types/API/URL.js +88 -27
  754. package/build/dist/Types/API/URL.js.map +1 -1
  755. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +8 -0
  756. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
  757. package/build/dist/Types/BaseDatabase/NotWildcard.js +72 -0
  758. package/build/dist/Types/BaseDatabase/NotWildcard.js.map +1 -0
  759. package/build/dist/Types/BaseDatabase/Wildcard.js +75 -0
  760. package/build/dist/Types/BaseDatabase/Wildcard.js.map +1 -0
  761. package/build/dist/Types/BaseDatabase/WildcardPattern.js +137 -0
  762. package/build/dist/Types/BaseDatabase/WildcardPattern.js.map +1 -0
  763. package/build/dist/Types/Database/DateColumnValue.js +125 -0
  764. package/build/dist/Types/Database/DateColumnValue.js.map +1 -0
  765. package/build/dist/Types/Database/TableColumn.js +18 -2
  766. package/build/dist/Types/Database/TableColumn.js.map +1 -1
  767. package/build/dist/Types/Date.js +31 -0
  768. package/build/dist/Types/Date.js.map +1 -1
  769. package/build/dist/Types/Email/EmailTemplateType.js +1 -0
  770. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  771. package/build/dist/Types/JSON.js +2 -0
  772. package/build/dist/Types/JSON.js.map +1 -1
  773. package/build/dist/Types/Log/LogQueryToFilter.js +111 -108
  774. package/build/dist/Types/Log/LogQueryToFilter.js.map +1 -1
  775. package/build/dist/Types/Monitor/DockerAlertTemplates.js +40 -16
  776. package/build/dist/Types/Monitor/DockerAlertTemplates.js.map +1 -1
  777. package/build/dist/Types/Monitor/HostAlertTemplates.js +29 -7
  778. package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -1
  779. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +98 -4
  780. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
  781. package/build/dist/Types/Monitor/MonitorStep.js +40 -0
  782. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  783. package/build/dist/Types/Monitor/PodmanAlertTemplates.js +36 -16
  784. package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -1
  785. package/build/dist/Types/NetworkAutomation/RuleRunResult.js +90 -0
  786. package/build/dist/Types/NetworkAutomation/RuleRunResult.js.map +1 -1
  787. package/build/dist/Types/NetworkSite/SiteHealthRollupPolicy.js +84 -0
  788. package/build/dist/Types/NetworkSite/SiteHealthRollupPolicy.js.map +1 -0
  789. package/build/dist/Types/Permission.js +354 -0
  790. package/build/dist/Types/Permission.js.map +1 -1
  791. package/build/dist/Types/SecurityEvent/ThreatIntelConstants.js +100 -0
  792. package/build/dist/Types/SecurityEvent/ThreatIntelConstants.js.map +1 -0
  793. package/build/dist/Types/SerializableObjectDictionary.js +8 -0
  794. package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
  795. package/build/dist/Types/Telemetry/SourceMap.js +9 -0
  796. package/build/dist/Types/Telemetry/SourceMap.js.map +1 -0
  797. package/build/dist/Types/Telemetry/TelemetrySearchQuery.js +661 -0
  798. package/build/dist/Types/Telemetry/TelemetrySearchQuery.js.map +1 -0
  799. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +12 -1
  800. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
  801. package/build/dist/UI/Components/Charts/Utils/useHistogramZoom.js +47 -0
  802. package/build/dist/UI/Components/Charts/Utils/useHistogramZoom.js.map +1 -0
  803. package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js +67 -0
  804. package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js.map +1 -1
  805. package/build/dist/UI/Components/Icon/Icon.js +28 -1
  806. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  807. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +15 -3
  808. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  809. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +25 -4
  810. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -1
  811. package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js +36 -16
  812. package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js.map +1 -1
  813. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js +33 -5
  814. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js.map +1 -1
  815. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +14 -2
  816. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
  817. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +33 -5
  818. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
  819. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js +14 -2
  820. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js.map +1 -1
  821. package/build/dist/Utils/Metrics/MetricExplorerUrl.js +54 -9
  822. package/build/dist/Utils/Metrics/MetricExplorerUrl.js.map +1 -1
  823. package/build/dist/Utils/Monitor/InterfaceInventoryUtil.js +128 -0
  824. package/build/dist/Utils/Monitor/InterfaceInventoryUtil.js.map +1 -0
  825. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js +190 -0
  826. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js.map +1 -0
  827. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +206 -28
  828. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  829. package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js +14 -7
  830. package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js.map +1 -1
  831. package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
  832. package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +34 -18
  833. package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
  834. package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js +163 -0
  835. package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js.map +1 -0
  836. package/build/dist/Utils/NetworkDiscovery/RescanIntervalUtil.js +99 -0
  837. package/build/dist/Utils/NetworkDiscovery/RescanIntervalUtil.js.map +1 -0
  838. package/build/dist/Utils/NetworkDiscovery/ScanModeUtil.js +85 -0
  839. package/build/dist/Utils/NetworkDiscovery/ScanModeUtil.js.map +1 -0
  840. package/build/dist/Utils/NetworkDiscovery/SnmpScanConfigUtil.js +560 -0
  841. package/build/dist/Utils/NetworkDiscovery/SnmpScanConfigUtil.js.map +1 -0
  842. package/build/dist/Utils/NetworkSite/SiteMaintenanceUtil.js +56 -0
  843. package/build/dist/Utils/NetworkSite/SiteMaintenanceUtil.js.map +1 -0
  844. package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +185 -10
  845. package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
  846. package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js +248 -21
  847. package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js.map +1 -1
  848. package/build/dist/Utils/SecurityEvent/ThreatIntel/StixPatternParser.js +255 -0
  849. package/build/dist/Utils/SecurityEvent/ThreatIntel/StixPatternParser.js.map +1 -0
  850. package/build/dist/Utils/Telemetry/CrossSignalScope.js +27 -30
  851. package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -1
  852. package/package.json +2 -1
  853. package/Tests/Types/Log/LogQueryParser.test.ts +0 -186
  854. package/Types/Log/LogQueryParser.ts +0 -252
  855. package/build/dist/Types/Log/LogQueryParser.js +0 -200
  856. package/build/dist/Types/Log/LogQueryParser.js.map +0 -1
@@ -49,6 +49,20 @@ export default class MonitorAlert {
49
49
  dataToProcess: DataToProcess;
50
50
  evaluationSummary?: MonitorEvaluationSummary | undefined;
51
51
  breachingSeriesFingerprints?: Set<string> | undefined;
52
+ /**
53
+ * The breaching fingerprints of EACH criteria evaluated on this
54
+ * tick, keyed by criteria id — a criteria that ran and matched
55
+ * nothing maps to an empty set.
56
+ *
57
+ * Without this, "is this series still breaching?" was answered from
58
+ * the winning criteria's set alone, so a host held critical by
59
+ * criteria A silently auto-resolved another host's still-valid alert
60
+ * from criteria B. A criteria absent from this dictionary was not
61
+ * evaluated at all, and its open alerts are left untouched.
62
+ */
63
+ breachingSeriesFingerprintsByCriteriaId?:
64
+ | Dictionary<Set<string>>
65
+ | undefined;
52
66
  /**
53
67
  * Event-driven (incoming-request / webhook) mode. When true, an open
54
68
  * alert carrying a seriesFingerprint is never auto-resolved here —
@@ -86,6 +100,8 @@ export default class MonitorAlert {
86
100
 
87
101
  // check if should close the alert.
88
102
 
103
+ const resolvedAlertIds: Set<string> = new Set<string>();
104
+
89
105
  for (const openAlert of openAlerts) {
90
106
  const shouldClose: boolean = this.shouldCloseAlert({
91
107
  openAlert,
@@ -93,10 +109,14 @@ export default class MonitorAlert {
93
109
  input.autoResolveCriteriaInstanceIdAlertIdsDictionary,
94
110
  criteriaInstance: input.criteriaInstance,
95
111
  breachingSeriesFingerprints: input.breachingSeriesFingerprints,
112
+ breachingSeriesFingerprintsByCriteriaId:
113
+ input.breachingSeriesFingerprintsByCriteriaId,
96
114
  disableSeriesAbsenceResolution: input.disableSeriesAbsenceResolution,
97
115
  });
98
116
 
99
117
  if (shouldClose) {
118
+ resolvedAlertIds.add(openAlert.id!.toString());
119
+
100
120
  // then resolve alert.
101
121
  await this.resolveOpenAlert({
102
122
  openAlert: openAlert,
@@ -118,7 +138,20 @@ export default class MonitorAlert {
118
138
  }
119
139
  }
120
140
 
121
- return openAlerts;
141
+ /*
142
+ * Return the alerts that are still open AFTER this pass. The create
143
+ * path dedupes against this list, and an alert this pass just
144
+ * resolved must not count as "already active" — that combination
145
+ * resolved a stale whole-monitor alert and then refused to create
146
+ * the per-series alerts meant to replace it.
147
+ */
148
+ if (resolvedAlertIds.size === 0) {
149
+ return openAlerts;
150
+ }
151
+
152
+ return openAlerts.filter((openAlert: Alert) => {
153
+ return !resolvedAlertIds.has(openAlert.id!.toString());
154
+ });
122
155
  }
123
156
 
124
157
  /**
@@ -229,6 +262,26 @@ export default class MonitorAlert {
229
262
  telemetryQuery?: TelemetryQuery | undefined;
230
263
  };
231
264
  matchesPerSeries?: Array<PerSeriesCriteriaMatch> | undefined;
265
+ /**
266
+ * The still-open alerts, when the caller has already run the
267
+ * resolve pass itself.
268
+ *
269
+ * A single evaluation can fan out across several matching criteria
270
+ * (host A critical while host B is only warning). The resolve pass
271
+ * has to run exactly once, with every criteria's breaching set in
272
+ * hand — running it once per criteria would let each criteria
273
+ * absence-resolve the others' alerts. So MonitorResource runs it up
274
+ * front and hands the survivors here.
275
+ */
276
+ openAlerts?: Array<Alert> | undefined;
277
+ /**
278
+ * Per-criteria breaching fingerprints, forwarded to the resolve pass
279
+ * when this method runs it itself. See
280
+ * checkOpenAlertsAndCloseIfResolved.
281
+ */
282
+ breachingSeriesFingerprintsByCriteriaId?:
283
+ | Dictionary<Set<string>>
284
+ | undefined;
232
285
  /**
233
286
  * Series fingerprints whose underlying resource is inside an
234
287
  * ongoing scheduled maintenance window. Alerts for these series are
@@ -276,22 +329,45 @@ export default class MonitorAlert {
276
329
 
277
330
  // check active alerts and if there are open alerts, do not cretae anothr alert.
278
331
  const openAlerts: Array<Alert> =
279
- await this.checkOpenAlertsAndCloseIfResolved({
280
- monitorId: input.monitor.id!,
281
- autoResolveCriteriaInstanceIdAlertIdsDictionary:
282
- input.autoResolveCriteriaInstanceIdAlertIdsDictionary,
283
- rootCause: input.rootCause,
284
- criteriaInstance: input.criteriaInstance,
285
- dataToProcess: input.dataToProcess,
286
- evaluationSummary: input.evaluationSummary,
287
- breachingSeriesFingerprints,
288
- disableSeriesAbsenceResolution: input.disableSeriesAbsenceResolution,
289
- });
332
+ input.openAlerts !== undefined
333
+ ? input.openAlerts
334
+ : await this.checkOpenAlertsAndCloseIfResolved({
335
+ monitorId: input.monitor.id!,
336
+ autoResolveCriteriaInstanceIdAlertIdsDictionary:
337
+ input.autoResolveCriteriaInstanceIdAlertIdsDictionary,
338
+ rootCause: input.rootCause,
339
+ criteriaInstance: input.criteriaInstance,
340
+ dataToProcess: input.dataToProcess,
341
+ evaluationSummary: input.evaluationSummary,
342
+ breachingSeriesFingerprints,
343
+ breachingSeriesFingerprintsByCriteriaId:
344
+ input.breachingSeriesFingerprintsByCriteriaId,
345
+ disableSeriesAbsenceResolution:
346
+ input.disableSeriesAbsenceResolution,
347
+ });
290
348
 
291
349
  if (!input.criteriaInstance.data?.createAlerts) {
292
350
  return;
293
351
  }
294
352
 
353
+ /*
354
+ * Checked once, up front. It used to be tested deep inside the
355
+ * template x series loops with a `return`, which on a grouped
356
+ * monitor abandoned every series after the first.
357
+ */
358
+ if (DisableAutomaticAlertCreation) {
359
+ input.evaluationSummary?.events.push({
360
+ type: "alert-skipped",
361
+ title: "Alert creation skipped",
362
+ message:
363
+ "Automatic alert creation is disabled by environment configuration.",
364
+ relatedCriteriaId: input.criteriaInstance.data?.id,
365
+ at: OneUptimeDate.getCurrentDate(),
366
+ });
367
+
368
+ return;
369
+ }
370
+
295
371
  /*
296
372
  * Alert-dependency suppression: a parent monitor is in a suppressing
297
373
  * status (offline by default), so skip creating any alert for this
@@ -359,332 +435,376 @@ export default class MonitorAlert {
359
435
 
360
436
  for (const criteriaAlert of input.criteriaInstance.data?.alerts || []) {
361
437
  for (const seriesMatch of seriesToProcess) {
362
- const seriesFingerprint: string | undefined = seriesMatch?.fingerprint;
363
- const seriesLabels: JSONObject | undefined = seriesMatch?.labels;
364
- const seriesRootCause: string =
365
- seriesMatch?.rootCause || input.rootCause;
366
-
367
- /*
368
- * Per-series scheduled-maintenance suppression: skip creating an
369
- * alert for a series whose resource is inside an ongoing
370
- * maintenance window. Other series on the same monitor are
371
- * unaffected. Only *new* creation is suppressed — existing open
372
- * alerts follow the normal resolve path.
373
- */
374
- if (
375
- seriesFingerprint &&
376
- input.suppressedSeriesFingerprints?.has(seriesFingerprint)
377
- ) {
378
- logger.debug(
379
- `${input.monitor.id?.toString()} - Skipping alert for series ${seriesFingerprint}: its resource is under an active scheduled maintenance window.`,
380
- alertLogAttributes,
381
- );
382
-
383
- input.evaluationSummary?.events.push({
384
- type: "alert-skipped",
385
- title: "Alert suppressed by scheduled maintenance",
386
- message:
387
- "Skipped creating an alert because the resource for this series is under an active scheduled maintenance window.",
388
- relatedCriteriaId: input.criteriaInstance.data?.id,
389
- at: OneUptimeDate.getCurrentDate(),
390
- });
391
- continue;
392
- }
438
+ try {
439
+ const seriesFingerprint: string | undefined =
440
+ seriesMatch?.fingerprint;
441
+ const seriesLabels: JSONObject | undefined = seriesMatch?.labels;
442
+ const seriesRootCause: string =
443
+ seriesMatch?.rootCause || input.rootCause;
393
444
 
394
- /*
395
- * Mirror the create path: `createdCriteriaId` is only set when the
396
- * criteria has an `id`. Guard the `.toString()` with `?.` (a criteria
397
- * with a missing id otherwise threw "Cannot read properties of
398
- * undefined (reading 'toString')" and failed the queue job every
399
- * cycle) and normalise both sides to `undefined` on missing so dedupe
400
- * stays correct instead of creating a duplicate alert each cycle.
401
- */
402
- const alreadyOpenAlert: Alert | undefined = openAlerts.find(
403
- (alert: Alert) => {
404
- return (
405
- (alert.createdCriteriaId || undefined) ===
406
- (input.criteriaInstance.data?.id?.toString() || undefined) &&
407
- (alert.seriesFingerprint || undefined) === seriesFingerprint
445
+ /*
446
+ * Per-series scheduled-maintenance suppression: skip creating an
447
+ * alert for a series whose resource is inside an ongoing
448
+ * maintenance window. Other series on the same monitor are
449
+ * unaffected. Only *new* creation is suppressed existing open
450
+ * alerts follow the normal resolve path.
451
+ */
452
+ if (
453
+ seriesFingerprint &&
454
+ input.suppressedSeriesFingerprints?.has(seriesFingerprint)
455
+ ) {
456
+ logger.debug(
457
+ `${input.monitor.id?.toString()} - Skipping alert for series ${seriesFingerprint}: its resource is under an active scheduled maintenance window.`,
458
+ alertLogAttributes,
408
459
  );
409
- },
410
- );
411
460
 
412
- const hasAlreadyOpenAlert: boolean = Boolean(alreadyOpenAlert);
461
+ input.evaluationSummary?.events.push({
462
+ type: "alert-skipped",
463
+ title: "Alert suppressed by scheduled maintenance",
464
+ message:
465
+ "Skipped creating an alert because the resource for this series is under an active scheduled maintenance window.",
466
+ relatedCriteriaId: input.criteriaInstance.data?.id,
467
+ at: OneUptimeDate.getCurrentDate(),
468
+ });
469
+ continue;
470
+ }
413
471
 
414
- logger.debug(
415
- `${input.monitor.id?.toString()} - Open Alert ${alreadyOpenAlert?.id?.toString()}`,
416
- alertLogAttributes,
417
- );
472
+ /*
473
+ * Mirror the create path: `createdCriteriaId` is only set when the
474
+ * criteria has an `id`. Guard the `.toString()` with `?.` (a criteria
475
+ * with a missing id otherwise threw "Cannot read properties of
476
+ * undefined (reading 'toString')" and failed the queue job every
477
+ * cycle) and normalise both sides to `undefined` on missing so dedupe
478
+ * stays correct instead of creating a duplicate alert each cycle.
479
+ */
480
+ const alreadyOpenAlert: Alert | undefined = openAlerts.find(
481
+ (alert: Alert) => {
482
+ return (
483
+ (alert.createdCriteriaId || undefined) ===
484
+ (input.criteriaInstance.data?.id?.toString() || undefined) &&
485
+ (alert.seriesFingerprint || undefined) === seriesFingerprint
486
+ );
487
+ },
488
+ );
418
489
 
419
- logger.debug(
420
- `${input.monitor.id?.toString()} - Has open alert ${hasAlreadyOpenAlert}`,
421
- alertLogAttributes,
422
- );
490
+ const hasAlreadyOpenAlert: boolean = Boolean(alreadyOpenAlert);
423
491
 
424
- if (hasAlreadyOpenAlert) {
425
- const renderedAlertTitle: string =
426
- alreadyOpenAlert?.title || criteriaAlert.title;
492
+ logger.debug(
493
+ `${input.monitor.id?.toString()} - Open Alert ${alreadyOpenAlert?.id?.toString()}`,
494
+ alertLogAttributes,
495
+ );
427
496
 
428
- input.evaluationSummary?.events.push({
429
- type: "alert-skipped",
430
- title: `Alert already active: ${renderedAlertTitle}`,
431
- message:
432
- "Skipped creating a new alert because an active alert exists for this criteria.",
433
- relatedCriteriaId: input.criteriaInstance.data?.id,
434
- relatedAlertId: alreadyOpenAlert?.id?.toString(),
435
- relatedAlertNumber: alreadyOpenAlert?.alertNumber,
436
- relatedAlertNumberWithPrefix:
437
- alreadyOpenAlert?.alertNumberWithPrefix,
438
- at: OneUptimeDate.getCurrentDate(),
439
- });
440
- continue;
441
- }
497
+ logger.debug(
498
+ `${input.monitor.id?.toString()} - Has open alert ${hasAlreadyOpenAlert}`,
499
+ alertLogAttributes,
500
+ );
442
501
 
443
- // create alert here.
502
+ if (hasAlreadyOpenAlert) {
503
+ const renderedAlertTitle: string =
504
+ alreadyOpenAlert?.title || criteriaAlert.title;
505
+
506
+ input.evaluationSummary?.events.push({
507
+ type: "alert-skipped",
508
+ title: `Alert already active: ${renderedAlertTitle}`,
509
+ message:
510
+ "Skipped creating a new alert because an active alert exists for this criteria.",
511
+ relatedCriteriaId: input.criteriaInstance.data?.id,
512
+ relatedAlertId: alreadyOpenAlert?.id?.toString(),
513
+ relatedAlertNumber: alreadyOpenAlert?.alertNumber,
514
+ relatedAlertNumberWithPrefix:
515
+ alreadyOpenAlert?.alertNumberWithPrefix,
516
+ at: OneUptimeDate.getCurrentDate(),
517
+ });
518
+ continue;
519
+ }
444
520
 
445
- logger.debug(
446
- `${input.monitor.id?.toString()} - Create alert.`,
447
- alertLogAttributes,
448
- );
521
+ // create alert here.
449
522
 
450
- const alert: Alert = new Alert();
451
- const storageMap: JSONObject =
452
- MonitorTemplateUtil.buildTemplateStorageMap({
453
- monitorType: input.monitor.monitorType!,
454
- dataToProcess: input.dataToProcess,
455
- monitor: input.monitor,
456
- seriesLabels,
457
- });
523
+ logger.debug(
524
+ `${input.monitor.id?.toString()} - Create alert.`,
525
+ alertLogAttributes,
526
+ );
458
527
 
459
- alert.title = MonitorTemplateUtil.processTemplateString({
460
- value: criteriaAlert.title,
461
- storageMap,
462
- });
463
- alert.description = MonitorTemplateUtil.processTemplateString({
464
- value: criteriaAlert.description,
465
- storageMap,
466
- });
528
+ const alert: Alert = new Alert();
529
+ const storageMap: JSONObject =
530
+ MonitorTemplateUtil.buildTemplateStorageMap({
531
+ monitorType: input.monitor.monitorType!,
532
+ dataToProcess: input.dataToProcess,
533
+ monitor: input.monitor,
534
+ seriesLabels,
535
+ });
467
536
 
468
- /*
469
- * A criteria severity belonging to *another* project is rejected by
470
- * AlertService on create. Throwing here would fail the whole
471
- * probe/telemetry ingest job for this monitor, so treat it as
472
- * "missing" and fall back to this project's own default — which is
473
- * also what stops the bad id spreading onto new alerts. See the same
474
- * fallback in MonitorIncident.
475
- */
476
- const isCriteriaSeverityUsable: boolean =
477
- await ProjectScopedReferenceValidator.isUsableInProject({
478
- projectId: input.monitor.projectId!,
479
- id: criteriaAlert.alertSeverityId,
480
- service: AlertSeverityService,
537
+ alert.title = MonitorTemplateUtil.processTemplateString({
538
+ value: criteriaAlert.title,
539
+ storageMap,
540
+ });
541
+ alert.description = MonitorTemplateUtil.processTemplateString({
542
+ value: criteriaAlert.description,
543
+ storageMap,
481
544
  });
482
545
 
483
- if (
484
- criteriaAlert.alertSeverityId?.toString() &&
485
- !isCriteriaSeverityUsable
486
- ) {
487
- logger.error(
488
- `${input.monitor.id?.toString()} - Criteria "${
489
- input.criteriaInstance.data?.name
490
- }" references alert severity ${criteriaAlert.alertSeverityId.toString()}, which does not belong to project ${input.monitor.projectId?.toString()}. Falling back to this project's default severity.`,
491
- );
492
- }
546
+ /*
547
+ * A criteria severity belonging to *another* project is rejected by
548
+ * AlertService on create. Throwing here would fail the whole
549
+ * probe/telemetry ingest job for this monitor, so treat it as
550
+ * "missing" and fall back to this project's own default — which is
551
+ * also what stops the bad id spreading onto new alerts. See the same
552
+ * fallback in MonitorIncident.
553
+ */
554
+ const isCriteriaSeverityUsable: boolean =
555
+ await ProjectScopedReferenceValidator.isUsableInProject({
556
+ projectId: input.monitor.projectId!,
557
+ id: criteriaAlert.alertSeverityId,
558
+ service: AlertSeverityService,
559
+ });
493
560
 
494
- if (!isCriteriaSeverityUsable) {
495
- // pick the critical criteria.
561
+ if (
562
+ criteriaAlert.alertSeverityId?.toString() &&
563
+ !isCriteriaSeverityUsable
564
+ ) {
565
+ logger.error(
566
+ `${input.monitor.id?.toString()} - Criteria "${
567
+ input.criteriaInstance.data?.name
568
+ }" references alert severity ${criteriaAlert.alertSeverityId.toString()}, which does not belong to project ${input.monitor.projectId?.toString()}. Falling back to this project's default severity.`,
569
+ );
570
+ }
496
571
 
497
- const severity: AlertSeverity | null =
498
- await AlertSeverityService.findOneBy({
499
- query: {
500
- projectId: input.monitor.projectId!,
501
- },
502
- sort: {
503
- order: SortOrder.Ascending,
504
- },
505
- props: {
506
- isRoot: true,
507
- },
508
- select: {
509
- _id: true,
510
- },
511
- });
572
+ if (!isCriteriaSeverityUsable) {
573
+ // pick the critical criteria.
574
+
575
+ const severity: AlertSeverity | null =
576
+ await AlertSeverityService.findOneBy({
577
+ query: {
578
+ projectId: input.monitor.projectId!,
579
+ },
580
+ sort: {
581
+ order: SortOrder.Ascending,
582
+ },
583
+ props: {
584
+ isRoot: true,
585
+ },
586
+ select: {
587
+ _id: true,
588
+ },
589
+ });
590
+
591
+ if (!severity?.id?.toString()) {
592
+ /*
593
+ * The project has no alert severity configured. Throwing here
594
+ * would fail the entire probe/telemetry ingest job — which
595
+ * then retries forever over a misconfiguration the worker
596
+ * cannot fix, and takes every other series on this monitor
597
+ * down with it. Skip this alert and log instead, exactly as
598
+ * the incident path does.
599
+ */
600
+ logger.error(
601
+ `${input.monitor.id?.toString()} - Cannot create alert: project ${input.monitor.projectId?.toString()} has no alert severity configured. Skipping alert creation for criteria "${
602
+ input.criteriaInstance.data?.name
603
+ }".`,
604
+ );
605
+
606
+ input.evaluationSummary?.events.push({
607
+ type: "alert-skipped",
608
+ title: "Alert creation skipped",
609
+ message:
610
+ "Skipped creating an alert because the project has no alert severity configured.",
611
+ relatedCriteriaId: input.criteriaInstance.data?.id,
612
+ at: OneUptimeDate.getCurrentDate(),
613
+ });
614
+ continue;
615
+ }
512
616
 
513
- if (!severity) {
514
- throw new BadDataException("Project does not have alert severity");
515
- } else {
516
617
  alert.alertSeverityId = severity.id!;
618
+ } else {
619
+ alert.alertSeverityId = criteriaAlert.alertSeverityId!;
517
620
  }
518
- } else {
519
- alert.alertSeverityId = criteriaAlert.alertSeverityId!;
520
- }
521
621
 
522
- alert.monitor = input.monitor;
523
- alert.projectId = input.monitor.projectId!;
524
- alert.rootCause = seriesRootCause;
525
- alert.createdStateLog = JSON.parse(
526
- JSON.stringify(input.dataToProcess, null, 2),
527
- );
622
+ alert.monitor = input.monitor;
623
+ alert.projectId = input.monitor.projectId!;
624
+ alert.rootCause = seriesRootCause;
625
+ alert.createdStateLog = JSON.parse(
626
+ JSON.stringify(input.dataToProcess, null, 2),
627
+ );
528
628
 
529
- /*
530
- * Same capture on every alert this evaluation opens - they all
531
- * came from the one check.
532
- */
533
- const serializedMonitorSummary: JSONObject | null =
534
- MonitorSummarySnapshotUtil.serialize(input.monitorSummary);
629
+ /*
630
+ * Same capture on every alert this evaluation opens - they all
631
+ * came from the one check.
632
+ */
633
+ const serializedMonitorSummary: JSONObject | null =
634
+ MonitorSummarySnapshotUtil.serialize(input.monitorSummary);
535
635
 
536
- if (serializedMonitorSummary) {
537
- alert.monitorSummary = serializedMonitorSummary;
538
- }
636
+ if (serializedMonitorSummary) {
637
+ alert.monitorSummary = serializedMonitorSummary;
638
+ }
539
639
 
540
- if (input.criteriaInstance.data?.id) {
541
- alert.createdCriteriaId = input.criteriaInstance.data.id.toString();
542
- }
640
+ if (input.criteriaInstance.data?.id) {
641
+ alert.createdCriteriaId = input.criteriaInstance.data.id.toString();
642
+ }
543
643
 
544
- if (seriesFingerprint) {
545
- alert.seriesFingerprint = seriesFingerprint;
546
- }
547
- if (seriesLabels && Object.keys(seriesLabels).length > 0) {
548
- alert.seriesLabels = seriesLabels;
644
+ if (seriesFingerprint) {
645
+ alert.seriesFingerprint = seriesFingerprint;
646
+ }
647
+ if (seriesLabels && Object.keys(seriesLabels).length > 0) {
648
+ alert.seriesLabels = seriesLabels;
649
+
650
+ /*
651
+ * Attach every resource this series identifies — host, docker
652
+ * host, podman host, k8s cluster, service, and the Proxmox /
653
+ * Ceph / Swarm / IoT clusters — resolved from the shared label
654
+ * key map. Same call the incident path makes, so the two can't
655
+ * drift apart again.
656
+ */
657
+ await SeriesResourceLinker.linkSeriesResourcesToModel({
658
+ model: alert,
659
+ seriesLabels,
660
+ projectId: input.monitor.projectId!,
661
+ monitorType: input.monitor.monitorType,
662
+ });
663
+ }
549
664
 
550
665
  /*
551
- * Attach every resource this series identifies host, docker
552
- * host, podman host, k8s cluster, service, and the Proxmox /
553
- * Ceph / Swarm / IoT clusters resolved from the shared label
554
- * key map. Same call the incident path makes, so the two can't
555
- * drift apart again.
666
+ * Deterministic resource link from the monitor's step config
667
+ * (resolved once above). For most monitor types this not the
668
+ * label path above is what makes the per-resource Activity
669
+ * tabs and badge counts see monitor-created alerts, because
670
+ * their criteria are ungrouped and emit no series labels at
671
+ * all. Runs for both grouped and ungrouped alerts, and merges
672
+ * with whatever the labels resolved.
556
673
  */
557
- await SeriesResourceLinker.linkSeriesResourcesToModel({
674
+ SeriesResourceLinker.attachResolvedResources({
558
675
  model: alert,
559
- seriesLabels,
560
- projectId: input.monitor.projectId!,
561
- monitorType: input.monitor.monitorType,
676
+ resolved: resourceContext,
562
677
  });
563
- }
564
678
 
565
- /*
566
- * Deterministic resource link from the monitor's step config
567
- * (resolved once above). For most monitor types this — not the
568
- * label path above — is what makes the per-resource Activity
569
- * tabs and badge counts see monitor-created alerts, because
570
- * their criteria are ungrouped and emit no series labels at
571
- * all. Runs for both grouped and ungrouped alerts, and merges
572
- * with whatever the labels resolved.
573
- */
574
- SeriesResourceLinker.attachResolvedResources({
575
- model: alert,
576
- resolved: resourceContext,
577
- });
679
+ alert.onCallDutyPolicies =
680
+ criteriaAlert.onCallPolicyIds?.map((id: ObjectID) => {
681
+ const onCallPolicy: OnCallDutyPolicy = new OnCallDutyPolicy();
682
+ onCallPolicy._id = id.toString();
683
+ return onCallPolicy;
684
+ }) || [];
685
+
686
+ // Set labels from criteria
687
+ alert.labels =
688
+ criteriaAlert.labelIds?.map((id: ObjectID) => {
689
+ const label: Label = new Label();
690
+ label._id = id.toString();
691
+ return label;
692
+ }) || [];
693
+
694
+ alert.isCreatedAutomatically = true;
695
+
696
+ if (criteriaAlert.isPrivate === true) {
697
+ alert.isPrivate = true;
698
+ }
578
699
 
579
- alert.onCallDutyPolicies =
580
- criteriaAlert.onCallPolicyIds?.map((id: ObjectID) => {
581
- const onCallPolicy: OnCallDutyPolicy = new OnCallDutyPolicy();
582
- onCallPolicy._id = id.toString();
583
- return onCallPolicy;
584
- }) || [];
585
-
586
- // Set labels from criteria
587
- alert.labels =
588
- criteriaAlert.labelIds?.map((id: ObjectID) => {
589
- const label: Label = new Label();
590
- label._id = id.toString();
591
- return label;
592
- }) || [];
593
-
594
- alert.isCreatedAutomatically = true;
595
-
596
- if (criteriaAlert.isPrivate === true) {
597
- alert.isPrivate = true;
598
- }
700
+ if (input.props.telemetryQuery) {
701
+ alert.telemetryQuery = input.props.telemetryQuery;
702
+ }
599
703
 
600
- if (input.props.telemetryQuery) {
601
- alert.telemetryQuery = input.props.telemetryQuery;
602
- }
704
+ if (
705
+ input.dataToProcess &&
706
+ (input.dataToProcess as ProbeMonitorResponse).probeId
707
+ ) {
708
+ alert.createdByProbeId = (
709
+ input.dataToProcess as ProbeMonitorResponse
710
+ ).probeId;
711
+ }
603
712
 
604
- if (
605
- input.dataToProcess &&
606
- (input.dataToProcess as ProbeMonitorResponse).probeId
607
- ) {
608
- alert.createdByProbeId = (
609
- input.dataToProcess as ProbeMonitorResponse
610
- ).probeId;
611
- }
713
+ if (criteriaAlert.remediationNotes) {
714
+ alert.remediationNotes = MonitorTemplateUtil.processTemplateString({
715
+ value: criteriaAlert.remediationNotes,
716
+ storageMap,
717
+ });
718
+ }
612
719
 
613
- if (criteriaAlert.remediationNotes) {
614
- alert.remediationNotes = MonitorTemplateUtil.processTemplateString({
615
- value: criteriaAlert.remediationNotes,
616
- storageMap,
720
+ const createdAlert: Alert = await AlertService.create({
721
+ data: alert,
722
+ props: {
723
+ isRoot: true,
724
+ },
617
725
  });
618
- }
619
726
 
620
- if (DisableAutomaticAlertCreation) {
727
+ /*
728
+ * Add owner teams and users after alert creation. Owners configured
729
+ * on the criteria template are merged (deduped) with the owners of
730
+ * the network device this monitor watches, so device ownership flows
731
+ * into the alerts its monitor raises.
732
+ */
733
+ if (networkDeviceOwners === null) {
734
+ networkDeviceOwners =
735
+ await NetworkDeviceOwnerUserService.getDeviceOwnersForMonitor({
736
+ monitor: input.monitor,
737
+ monitorStepId: (
738
+ input.dataToProcess as ProbeMonitorResponse
739
+ ).monitorStepId?.toString(),
740
+ });
741
+ }
742
+
743
+ const ownerUserIds: Array<ObjectID> = this.mergeOwnerIds(
744
+ criteriaAlert.ownerUserIds || [],
745
+ networkDeviceOwners.ownerUserIds,
746
+ );
747
+
748
+ const ownerTeamIds: Array<ObjectID> = this.mergeOwnerIds(
749
+ criteriaAlert.ownerTeamIds || [],
750
+ networkDeviceOwners.ownerTeamIds,
751
+ );
752
+
753
+ if (ownerTeamIds.length || ownerUserIds.length) {
754
+ await AlertService.addOwners(
755
+ input.monitor.projectId!,
756
+ createdAlert.id!,
757
+ ownerUserIds,
758
+ ownerTeamIds,
759
+ true, // notify owners
760
+ {
761
+ isRoot: true,
762
+ },
763
+ );
764
+ }
765
+
621
766
  input.evaluationSummary?.events.push({
622
- type: "alert-skipped",
623
- title: "Alert creation skipped",
624
- message:
625
- "Automatic alert creation is disabled by environment configuration.",
767
+ type: "alert-created",
768
+ title: `Alert created: ${createdAlert.title || criteriaAlert.title}`,
769
+ message: `Alert triggered from criteria "${input.criteriaInstance.data?.name || "Unnamed criteria"}".`,
626
770
  relatedCriteriaId: input.criteriaInstance.data?.id,
771
+ relatedAlertId: createdAlert.id?.toString(),
772
+ relatedAlertNumber: createdAlert.alertNumber,
773
+ relatedAlertNumberWithPrefix: createdAlert.alertNumberWithPrefix,
627
774
  at: OneUptimeDate.getCurrentDate(),
628
775
  });
629
- return;
630
- }
631
-
632
- const createdAlert: Alert = await AlertService.create({
633
- data: alert,
634
- props: {
635
- isRoot: true,
636
- },
637
- });
638
-
639
- /*
640
- * Add owner teams and users after alert creation. Owners configured
641
- * on the criteria template are merged (deduped) with the owners of
642
- * the network device this monitor watches, so device ownership flows
643
- * into the alerts its monitor raises.
644
- */
645
- if (networkDeviceOwners === null) {
646
- networkDeviceOwners =
647
- await NetworkDeviceOwnerUserService.getDeviceOwnersForMonitor({
648
- monitor: input.monitor,
649
- monitorStepId: (
650
- input.dataToProcess as ProbeMonitorResponse
651
- ).monitorStepId?.toString(),
652
- });
653
- }
654
-
655
- const ownerUserIds: Array<ObjectID> = this.mergeOwnerIds(
656
- criteriaAlert.ownerUserIds || [],
657
- networkDeviceOwners.ownerUserIds,
658
- );
776
+ } catch (err) {
777
+ /*
778
+ * One series must not take the rest of the fleet down with it.
779
+ * Everything below this loop happens per host/container/key and
780
+ * touches the database; an error thrown from here used to
781
+ * propagate out of MonitorResource (which has no catch, only a
782
+ * `finally` that releases the lock) and abandon every series
783
+ * after the failing one, plus the monitor log for the tick.
784
+ */
785
+ logger.error(
786
+ `${input.monitor.id?.toString()} - Failed to create alert${
787
+ seriesMatch?.fingerprint
788
+ ? ` for series ${seriesMatch.fingerprint}`
789
+ : ""
790
+ }.`,
791
+ );
792
+ logger.error(err);
659
793
 
660
- const ownerTeamIds: Array<ObjectID> = this.mergeOwnerIds(
661
- criteriaAlert.ownerTeamIds || [],
662
- networkDeviceOwners.ownerTeamIds,
663
- );
794
+ input.evaluationSummary?.events.push({
795
+ type: "alert-skipped",
796
+ title: "Alert creation failed",
797
+ message: `Could not create an alert${
798
+ seriesMatch?.fingerprint
799
+ ? ` for series ${seriesMatch.fingerprint}`
800
+ : ""
801
+ }: ${err instanceof Error ? err.message : String(err)}`,
802
+ relatedCriteriaId: input.criteriaInstance.data?.id,
803
+ at: OneUptimeDate.getCurrentDate(),
804
+ });
664
805
 
665
- if (ownerTeamIds.length || ownerUserIds.length) {
666
- await AlertService.addOwners(
667
- input.monitor.projectId!,
668
- createdAlert.id!,
669
- ownerUserIds,
670
- ownerTeamIds,
671
- true, // notify owners
672
- {
673
- isRoot: true,
674
- },
675
- );
806
+ continue;
676
807
  }
677
-
678
- input.evaluationSummary?.events.push({
679
- type: "alert-created",
680
- title: `Alert created: ${createdAlert.title || criteriaAlert.title}`,
681
- message: `Alert triggered from criteria "${input.criteriaInstance.data?.name || "Unnamed criteria"}".`,
682
- relatedCriteriaId: input.criteriaInstance.data?.id,
683
- relatedAlertId: createdAlert.id?.toString(),
684
- relatedAlertNumber: createdAlert.alertNumber,
685
- relatedAlertNumberWithPrefix: createdAlert.alertNumberWithPrefix,
686
- at: OneUptimeDate.getCurrentDate(),
687
- });
688
808
  }
689
809
  }
690
810
  }
@@ -778,11 +898,92 @@ export default class MonitorAlert {
778
898
  }
779
899
  }
780
900
 
901
+ /**
902
+ * Is `openAlert`'s series still breaching the criteria that raised it?
903
+ *
904
+ * Prefers the per-criteria dictionary, which answers the question for
905
+ * the criteria that actually owns this alert. The single-set fallback
906
+ * only knows the winning criteria's breaches, so it has to approximate
907
+ * with `createAlerts` — a criteria that creates no alerts is a
908
+ * recovery criteria whose "matches" are healthy series, and counting
909
+ * those as breaches would pin an offline alert open forever.
910
+ */
911
+ private static isSeriesStillBreaching(input: {
912
+ openAlert: Alert;
913
+ criteriaInstance: MonitorCriteriaInstance | null;
914
+ openSeriesFingerprint: string;
915
+ breachingSeriesFingerprints: Set<string>;
916
+ breachingSeriesFingerprintsByCriteriaId?:
917
+ | Dictionary<Set<string>>
918
+ | undefined;
919
+ }): boolean {
920
+ const owningCriteriaId: string | undefined =
921
+ input.openAlert.createdCriteriaId?.toString() || undefined;
922
+
923
+ if (input.breachingSeriesFingerprintsByCriteriaId && owningCriteriaId) {
924
+ return Boolean(
925
+ input.breachingSeriesFingerprintsByCriteriaId[owningCriteriaId]?.has(
926
+ input.openSeriesFingerprint,
927
+ ),
928
+ );
929
+ }
930
+
931
+ const matchedCriteriaCreatesAlerts: boolean =
932
+ input.criteriaInstance?.data?.createAlerts === true;
933
+
934
+ return (
935
+ matchedCriteriaCreatesAlerts &&
936
+ input.breachingSeriesFingerprints.has(input.openSeriesFingerprint)
937
+ );
938
+ }
939
+
940
+ private static wasCriteriaEvaluated(input: {
941
+ openAlert: Alert;
942
+ breachingSeriesFingerprintsByCriteriaId: Dictionary<Set<string>>;
943
+ }): boolean {
944
+ const owningCriteriaId: string | undefined =
945
+ input.openAlert.createdCriteriaId?.toString() || undefined;
946
+
947
+ if (!owningCriteriaId) {
948
+ return true;
949
+ }
950
+
951
+ return (
952
+ input.breachingSeriesFingerprintsByCriteriaId[owningCriteriaId] !==
953
+ undefined
954
+ );
955
+ }
956
+
957
+ /**
958
+ * Alert auto-resolve lists templates by criteria; the presence of any
959
+ * template for a criteria means "this criteria's alerts are configured
960
+ * to auto-resolve".
961
+ */
962
+ private static isAutoResolveConfiguredForAlert(input: {
963
+ openAlert: Alert;
964
+ autoResolveCriteriaInstanceIdAlertIdsDictionary: Dictionary<Array<string>>;
965
+ }): boolean {
966
+ const createdCriteriaId: string | undefined =
967
+ input.openAlert.createdCriteriaId?.toString() || undefined;
968
+
969
+ if (!createdCriteriaId) {
970
+ return false;
971
+ }
972
+
973
+ const autoResolveTemplates: Array<string> | undefined =
974
+ input.autoResolveCriteriaInstanceIdAlertIdsDictionary[createdCriteriaId];
975
+
976
+ return Boolean(autoResolveTemplates && autoResolveTemplates.length > 0);
977
+ }
978
+
781
979
  private static shouldCloseAlert(input: {
782
980
  openAlert: Alert;
783
981
  autoResolveCriteriaInstanceIdAlertIdsDictionary: Dictionary<Array<string>>;
784
982
  criteriaInstance: MonitorCriteriaInstance | null; // null if no criteia met.
785
983
  breachingSeriesFingerprints?: Set<string> | undefined;
984
+ breachingSeriesFingerprintsByCriteriaId?:
985
+ | Dictionary<Set<string>>
986
+ | undefined;
786
987
  disableSeriesAbsenceResolution?: boolean | undefined;
787
988
  }): boolean {
788
989
  const openSeriesFingerprint: string | undefined =
@@ -800,55 +1001,63 @@ export default class MonitorAlert {
800
1001
  return false;
801
1002
  }
802
1003
 
803
- /*
804
- * Per-series auto-resolve: when a breaching-series set is given and
805
- * this alert has a fingerprint, resolve whenever the fingerprint is
806
- * no longer in the set, independent of whether other series on the
807
- * same monitor are still breaching.
808
- */
809
- if (
810
- input.breachingSeriesFingerprints !== undefined &&
811
- openSeriesFingerprint
812
- ) {
1004
+ // Per-series mode: this evaluation knows which series are breaching.
1005
+ if (input.breachingSeriesFingerprints !== undefined) {
813
1006
  /*
814
- * The breaching set is the matched criteria's per-series matches.
815
- * On a recovery tick the matched criteria is the RECOVERY criteria
816
- * and its matches are healthy series, not breaches; counting them
817
- * would pin the open offline alert open forever. Membership only
818
- * counts as still-breaching when the matched criteria actually
819
- * creates alerts (createAlerts=false recovery criteria contributes
820
- * no breaches, letting the per-series alert auto-resolve).
1007
+ * A whole-monitor alert (no fingerprint) on a monitor that now
1008
+ * alerts per series. It was raised before the monitor was grouped,
1009
+ * and nothing can ever dedupe against it again every alert from
1010
+ * here on carries a fingerprint. Left alone it stays open forever
1011
+ * while its replacements come and go. Resolve it, on the same
1012
+ * auto-resolve terms as any other alert from its criteria.
821
1013
  */
822
- const matchedCriteriaCreatesAlerts: boolean =
823
- input.criteriaInstance?.data?.createAlerts === true;
824
-
825
- const stillBreaching: boolean =
826
- matchedCriteriaCreatesAlerts &&
827
- input.breachingSeriesFingerprints.has(openSeriesFingerprint);
1014
+ if (!openSeriesFingerprint) {
1015
+ if (input.disableSeriesAbsenceResolution) {
1016
+ return false;
1017
+ }
828
1018
 
829
- if (stillBreaching) {
830
- return false;
1019
+ return MonitorAlert.isAutoResolveConfiguredForAlert({
1020
+ openAlert: input.openAlert,
1021
+ autoResolveCriteriaInstanceIdAlertIdsDictionary:
1022
+ input.autoResolveCriteriaInstanceIdAlertIdsDictionary,
1023
+ });
831
1024
  }
832
1025
 
833
- if (!input.openAlert.createdCriteriaId?.toString()) {
1026
+ if (
1027
+ MonitorAlert.isSeriesStillBreaching({
1028
+ openAlert: input.openAlert,
1029
+ criteriaInstance: input.criteriaInstance,
1030
+ openSeriesFingerprint,
1031
+ breachingSeriesFingerprints: input.breachingSeriesFingerprints,
1032
+ breachingSeriesFingerprintsByCriteriaId:
1033
+ input.breachingSeriesFingerprintsByCriteriaId,
1034
+ })
1035
+ ) {
834
1036
  return false;
835
1037
  }
836
1038
 
837
- const autoResolveTemplates: Array<string> | undefined =
838
- input.autoResolveCriteriaInstanceIdAlertIdsDictionary[
839
- input.openAlert.createdCriteriaId.toString()
840
- ];
841
-
842
1039
  /*
843
- * Alert auto-resolve lists templates by criteria; presence of any
844
- * template for this criteria means "this criteria's alerts are
845
- * configured to auto-resolve", so resolve this series.
1040
+ * The criteria that raised this alert was not evaluated on this
1041
+ * tick at all (disabled, deleted, or the monitor stops at its
1042
+ * first match). Absence of a breaching set for it is not evidence
1043
+ * of recovery, so leave the alert alone.
846
1044
  */
847
- if (autoResolveTemplates && autoResolveTemplates.length > 0) {
848
- return true;
1045
+ if (
1046
+ input.breachingSeriesFingerprintsByCriteriaId &&
1047
+ !MonitorAlert.wasCriteriaEvaluated({
1048
+ openAlert: input.openAlert,
1049
+ breachingSeriesFingerprintsByCriteriaId:
1050
+ input.breachingSeriesFingerprintsByCriteriaId,
1051
+ })
1052
+ ) {
1053
+ return false;
849
1054
  }
850
1055
 
851
- return false;
1056
+ return MonitorAlert.isAutoResolveConfiguredForAlert({
1057
+ openAlert: input.openAlert,
1058
+ autoResolveCriteriaInstanceIdAlertIdsDictionary:
1059
+ input.autoResolveCriteriaInstanceIdAlertIdsDictionary,
1060
+ });
852
1061
  }
853
1062
 
854
1063
  if (