@oneuptime/common 12.0.25 → 12.0.26

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 (834) 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/URLQueryString.test.ts +472 -0
  298. package/Tests/Types/BaseDatabase/Wildcard.test.ts +163 -0
  299. package/Tests/Types/BaseDatabase/WildcardPattern.test.ts +149 -0
  300. package/Tests/Types/Database/DateColumnValue.test.ts +265 -0
  301. package/Tests/Types/DateToIsoStringOrNull.test.ts +67 -0
  302. package/Tests/Types/Log/LogQueryToFilter.test.ts +218 -43
  303. package/Tests/Types/Monitor/KubernetesTemplateGroupByKeys.test.ts +225 -0
  304. package/Tests/Types/Monitor/TemplateGroupByKeys.test.ts +296 -0
  305. package/Tests/Types/NetworkAutomation/RuleRunResult.test.ts +102 -0
  306. package/Tests/Types/NetworkAutomation/RuleRunResultDescribe.test.ts +145 -0
  307. package/Tests/Types/NetworkSite/SiteHealthRollupPolicy.test.ts +58 -0
  308. package/Tests/Types/SerializableObjectDictionaryImportCycle.test.ts +15 -0
  309. package/Tests/Types/Telemetry/TelemetrySearchQuery.test.ts +620 -0
  310. package/Tests/Types/WhatsApp/WhatsAppTemplates.test.ts +110 -0
  311. package/Tests/Types/Workspace/NotificationRuleConditionUtil.test.ts +76 -6
  312. package/Tests/Types/Workspace/NotificationRules/NotificationRuleCondition.test.ts +16 -4
  313. package/Tests/Types/Workspace/NotificationRules/OnCallDutyPolicyConditions.test.ts +669 -0
  314. package/Tests/UI/Components/DictionaryFilterOperatorWildcard.test.ts +175 -0
  315. package/Tests/UI/Components/IconOpticalSize.test.tsx +377 -0
  316. package/Tests/UI/MicrosoftTeams/MicrosoftTeamsChatsCardInstallGuidance.test.tsx +332 -0
  317. package/Tests/UI/MicrosoftTeams/MicrosoftTeamsInstallGuidanceContent.test.tsx +643 -0
  318. package/Tests/Utils/Monitor/InterfaceInventoryUtil.test.ts +824 -0
  319. package/Tests/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.test.ts +626 -0
  320. package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +718 -0
  321. package/Tests/Utils/NetworkDevice/DeviceHealthStateUtil.test.ts +59 -0
  322. package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +287 -2
  323. package/Tests/Utils/NetworkDiscovery/DiscoveryImportEligibility.test.ts +73 -0
  324. package/Tests/Utils/NetworkDiscovery/PingMonitorBuilder.test.ts +317 -0
  325. package/Tests/Utils/NetworkDiscovery/RescanIntervalUtil.test.ts +262 -0
  326. package/Tests/Utils/NetworkDiscovery/ScanModeUtil.test.ts +474 -0
  327. package/Tests/Utils/NetworkDiscovery/SnmpScanConfigUtil.test.ts +2442 -0
  328. package/Tests/Utils/NetworkSite/SiteMaintenanceUtil.test.ts +188 -0
  329. package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +522 -0
  330. package/Tests/Utils/NetworkSite/SiteUptimeUtil.test.ts +694 -0
  331. package/Tests/Utils/SecurityEvent/ThreatIntel/StixPatternParser.test.ts +281 -0
  332. package/Tests/Utils/Telemetry/CrossSignalScope.test.ts +87 -67
  333. package/Types/API/URL.ts +45 -10
  334. package/Types/AnalyticsDatabase/AnalyticsTableName.ts +8 -0
  335. package/Types/BaseDatabase/NotWildcard.ts +86 -0
  336. package/Types/BaseDatabase/Wildcard.ts +89 -0
  337. package/Types/BaseDatabase/WildcardPattern.ts +176 -0
  338. package/Types/Database/DateColumnValue.ts +184 -0
  339. package/Types/Database/TableColumn.ts +40 -5
  340. package/Types/Date.ts +37 -0
  341. package/Types/Email/EmailTemplateType.ts +1 -0
  342. package/Types/JSON.ts +8 -0
  343. package/Types/Log/LogQueryToFilter.ts +167 -129
  344. package/Types/Monitor/DockerAlertTemplates.ts +43 -12
  345. package/Types/Monitor/HostAlertTemplates.ts +31 -3
  346. package/Types/Monitor/KubernetesAlertTemplates.ts +98 -0
  347. package/Types/Monitor/MonitorStep.ts +49 -0
  348. package/Types/Monitor/PodmanAlertTemplates.ts +39 -12
  349. package/Types/Monitor/SnmpMonitor/CdpNeighbor.ts +14 -0
  350. package/Types/Monitor/SnmpMonitor/LldpNeighbor.ts +11 -0
  351. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +11 -4
  352. package/Types/NetworkAutomation/RuleRunResult.ts +191 -2
  353. package/Types/NetworkSite/SiteHealthRollupPolicy.ts +96 -0
  354. package/Types/Permission.ts +411 -0
  355. package/Types/Probe/ProbeApiIngestResponse.ts +42 -0
  356. package/Types/SecurityEvent/ThreatIntelConstants.ts +118 -0
  357. package/Types/SerializableObjectDictionary.ts +8 -0
  358. package/Types/Telemetry/SourceMap.ts +56 -0
  359. package/Types/Telemetry/TelemetrySearchQuery.ts +949 -0
  360. package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +12 -1
  361. package/UI/Components/Dictionary/DictionaryFilterOperator.ts +83 -0
  362. package/UI/Components/Icon/Icon.tsx +28 -1
  363. package/UI/Components/LogsViewer/components/LogSearchBar.tsx +26 -4
  364. package/UI/Components/LogsViewer/components/LogSearchHelp.tsx +34 -16
  365. package/UI/Components/TelemetryViewer/components/TelemetrySearchBar.tsx +15 -2
  366. package/Utils/Metrics/MetricExplorerUrl.ts +77 -15
  367. package/Utils/Monitor/InterfaceInventoryUtil.ts +251 -0
  368. package/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.ts +333 -0
  369. package/Utils/Monitor/NetworkTopologyUtil.ts +249 -28
  370. package/Utils/NetworkDevice/DeviceHealthStateUtil.ts +14 -6
  371. package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +2 -0
  372. package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +49 -18
  373. package/Utils/NetworkDiscovery/PingMonitorBuilder.ts +215 -0
  374. package/Utils/NetworkDiscovery/RescanIntervalUtil.ts +148 -0
  375. package/Utils/NetworkDiscovery/ScanModeUtil.ts +105 -0
  376. package/Utils/NetworkDiscovery/SnmpScanConfigUtil.ts +827 -0
  377. package/Utils/NetworkSite/SiteMaintenanceUtil.ts +110 -0
  378. package/Utils/NetworkSite/SiteStatusRollupUtil.ts +350 -19
  379. package/Utils/NetworkSite/SiteUptimeUtil.ts +422 -21
  380. package/Utils/SecurityEvent/ThreatIntel/StixPatternParser.ts +383 -0
  381. package/Utils/Telemetry/CrossSignalScope.ts +37 -39
  382. package/build/dist/Models/AnalyticsModels/Index.js +2 -0
  383. package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
  384. package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js +325 -0
  385. package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js.map +1 -0
  386. package/build/dist/Models/DatabaseModels/AlertSeverity.js +4 -1
  387. package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
  388. package/build/dist/Models/DatabaseModels/CephClusterFeed.js +648 -0
  389. package/build/dist/Models/DatabaseModels/CephClusterFeed.js.map +1 -0
  390. package/build/dist/Models/DatabaseModels/CloudResourceFeed.js +648 -0
  391. package/build/dist/Models/DatabaseModels/CloudResourceFeed.js.map +1 -0
  392. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +11 -0
  393. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
  394. package/build/dist/Models/DatabaseModels/DetectionRule.js +9 -3
  395. package/build/dist/Models/DatabaseModels/DetectionRule.js.map +1 -1
  396. package/build/dist/Models/DatabaseModels/DockerHostFeed.js +648 -0
  397. package/build/dist/Models/DatabaseModels/DockerHostFeed.js.map +1 -0
  398. package/build/dist/Models/DatabaseModels/DockerSwarmClusterFeed.js +648 -0
  399. package/build/dist/Models/DatabaseModels/DockerSwarmClusterFeed.js.map +1 -0
  400. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js +9 -3
  401. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js.map +1 -1
  402. package/build/dist/Models/DatabaseModels/HostFeed.js +648 -0
  403. package/build/dist/Models/DatabaseModels/HostFeed.js.map +1 -0
  404. package/build/dist/Models/DatabaseModels/IncidentSeverity.js +4 -1
  405. package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
  406. package/build/dist/Models/DatabaseModels/Index.js +22 -0
  407. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  408. package/build/dist/Models/DatabaseModels/KubernetesClusterFeed.js +648 -0
  409. package/build/dist/Models/DatabaseModels/KubernetesClusterFeed.js.map +1 -0
  410. package/build/dist/Models/DatabaseModels/Monitor.js +81 -0
  411. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  412. package/build/dist/Models/DatabaseModels/NetworkDevice.js +103 -7
  413. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  414. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +91 -6
  415. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
  416. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +276 -31
  417. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
  418. package/build/dist/Models/DatabaseModels/NetworkSite.js +124 -1
  419. package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -1
  420. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +1 -0
  421. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
  422. package/build/dist/Models/DatabaseModels/PodmanHostFeed.js +648 -0
  423. package/build/dist/Models/DatabaseModels/PodmanHostFeed.js.map +1 -0
  424. package/build/dist/Models/DatabaseModels/ProxmoxClusterFeed.js +648 -0
  425. package/build/dist/Models/DatabaseModels/ProxmoxClusterFeed.js.map +1 -0
  426. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +66 -0
  427. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  428. package/build/dist/Models/DatabaseModels/ServiceFeed.js +648 -0
  429. package/build/dist/Models/DatabaseModels/ServiceFeed.js.map +1 -0
  430. package/build/dist/Models/DatabaseModels/TelemetrySourceMap.js +496 -0
  431. package/build/dist/Models/DatabaseModels/TelemetrySourceMap.js.map +1 -0
  432. package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js +800 -0
  433. package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js.map +1 -0
  434. package/build/dist/Models/DatabaseModels/UserOnCallLog.js +1 -0
  435. package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
  436. package/build/dist/Models/DatabaseModels/UserTotpAuth.js +1 -0
  437. package/build/dist/Models/DatabaseModels/UserTotpAuth.js.map +1 -1
  438. package/build/dist/Models/DatabaseModels/UserWebAuthn.js +1 -0
  439. package/build/dist/Models/DatabaseModels/UserWebAuthn.js.map +1 -1
  440. package/build/dist/Server/API/AlertAPI.js +18 -1
  441. package/build/dist/Server/API/AlertAPI.js.map +1 -1
  442. package/build/dist/Server/API/BaseAPI.js +8 -1
  443. package/build/dist/Server/API/BaseAPI.js.map +1 -1
  444. package/build/dist/Server/API/IncidentAPI.js +35 -1
  445. package/build/dist/Server/API/IncidentAPI.js.map +1 -1
  446. package/build/dist/Server/API/IncidentEpisodeAPI.js +18 -1
  447. package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
  448. package/build/dist/Server/API/MicrosoftTeamsAPI.js +30 -2
  449. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  450. package/build/dist/Server/API/ScheduledMaintenanceAPI.js +18 -1
  451. package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
  452. package/build/dist/Server/API/SlackAPI.js +45 -0
  453. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  454. package/build/dist/Server/API/TelemetryAPI.js +100 -35
  455. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  456. package/build/dist/Server/API/UserOnCallLogTimelineAPI.js +64 -59
  457. package/build/dist/Server/API/UserOnCallLogTimelineAPI.js.map +1 -1
  458. package/build/dist/Server/API/UserTotpAuthAPI.js +65 -1
  459. package/build/dist/Server/API/UserTotpAuthAPI.js.map +1 -1
  460. package/build/dist/Server/API/UserWebAuthnAPI.js +42 -1
  461. package/build/dist/Server/API/UserWebAuthnAPI.js.map +1 -1
  462. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.js +26 -0
  463. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.js.map +1 -0
  464. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.js +22 -0
  465. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.js.map +1 -0
  466. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.js +88 -0
  467. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.js.map +1 -0
  468. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.js +39 -0
  469. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.js.map +1 -0
  470. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.js +34 -0
  471. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.js.map +1 -0
  472. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.js +32 -0
  473. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.js.map +1 -0
  474. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.js +61 -0
  475. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.js.map +1 -0
  476. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.js +23 -0
  477. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.js.map +1 -0
  478. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.js +179 -0
  479. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.js.map +1 -0
  480. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +18 -0
  481. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  482. package/build/dist/Server/Middleware/IdentityRateLimit.js +40 -3
  483. package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
  484. package/build/dist/Server/Services/AIService.js +177 -30
  485. package/build/dist/Server/Services/AIService.js.map +1 -1
  486. package/build/dist/Server/Services/CephClusterFeedService.js +89 -0
  487. package/build/dist/Server/Services/CephClusterFeedService.js.map +1 -0
  488. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +27 -3
  489. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -1
  490. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +21 -0
  491. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
  492. package/build/dist/Server/Services/CephClusterOwnerTeamService.js +120 -0
  493. package/build/dist/Server/Services/CephClusterOwnerTeamService.js.map +1 -1
  494. package/build/dist/Server/Services/CephClusterOwnerUserService.js +113 -0
  495. package/build/dist/Server/Services/CephClusterOwnerUserService.js.map +1 -1
  496. package/build/dist/Server/Services/CephClusterService.js +175 -1
  497. package/build/dist/Server/Services/CephClusterService.js.map +1 -1
  498. package/build/dist/Server/Services/CloudResourceFeedService.js +89 -0
  499. package/build/dist/Server/Services/CloudResourceFeedService.js.map +1 -0
  500. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +27 -3
  501. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -1
  502. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +28 -3
  503. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
  504. package/build/dist/Server/Services/CloudResourceOwnerTeamService.js +120 -0
  505. package/build/dist/Server/Services/CloudResourceOwnerTeamService.js.map +1 -1
  506. package/build/dist/Server/Services/CloudResourceOwnerUserService.js +113 -0
  507. package/build/dist/Server/Services/CloudResourceOwnerUserService.js.map +1 -1
  508. package/build/dist/Server/Services/CloudResourceService.js +177 -1
  509. package/build/dist/Server/Services/CloudResourceService.js.map +1 -1
  510. package/build/dist/Server/Services/DatabaseService.js +201 -0
  511. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  512. package/build/dist/Server/Services/DockerHostFeedService.js +89 -0
  513. package/build/dist/Server/Services/DockerHostFeedService.js.map +1 -0
  514. package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js +27 -3
  515. package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js.map +1 -1
  516. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +21 -0
  517. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
  518. package/build/dist/Server/Services/DockerHostOwnerTeamService.js +120 -0
  519. package/build/dist/Server/Services/DockerHostOwnerTeamService.js.map +1 -1
  520. package/build/dist/Server/Services/DockerHostOwnerUserService.js +113 -0
  521. package/build/dist/Server/Services/DockerHostOwnerUserService.js.map +1 -1
  522. package/build/dist/Server/Services/DockerHostService.js +177 -1
  523. package/build/dist/Server/Services/DockerHostService.js.map +1 -1
  524. package/build/dist/Server/Services/DockerSwarmClusterFeedService.js +90 -0
  525. package/build/dist/Server/Services/DockerSwarmClusterFeedService.js.map +1 -0
  526. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +27 -3
  527. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -1
  528. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +21 -0
  529. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
  530. package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js +120 -0
  531. package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js.map +1 -1
  532. package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js +113 -0
  533. package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js.map +1 -1
  534. package/build/dist/Server/Services/DockerSwarmClusterService.js +175 -1
  535. package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -1
  536. package/build/dist/Server/Services/EnterpriseLicenseService.js +40 -30
  537. package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
  538. package/build/dist/Server/Services/ExceptionAggregationService.js +8 -2
  539. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
  540. package/build/dist/Server/Services/HostFeedService.js +89 -0
  541. package/build/dist/Server/Services/HostFeedService.js.map +1 -0
  542. package/build/dist/Server/Services/HostLabelRuleEngineService.js +27 -3
  543. package/build/dist/Server/Services/HostLabelRuleEngineService.js.map +1 -1
  544. package/build/dist/Server/Services/HostOwnerRuleEngineService.js +21 -0
  545. package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
  546. package/build/dist/Server/Services/HostOwnerTeamService.js +120 -0
  547. package/build/dist/Server/Services/HostOwnerTeamService.js.map +1 -1
  548. package/build/dist/Server/Services/HostOwnerUserService.js +113 -0
  549. package/build/dist/Server/Services/HostOwnerUserService.js.map +1 -1
  550. package/build/dist/Server/Services/HostService.js +175 -1
  551. package/build/dist/Server/Services/HostService.js.map +1 -1
  552. package/build/dist/Server/Services/IncidentService.js +10 -0
  553. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  554. package/build/dist/Server/Services/Index.js +24 -0
  555. package/build/dist/Server/Services/Index.js.map +1 -1
  556. package/build/dist/Server/Services/KubernetesClusterFeedService.js +89 -0
  557. package/build/dist/Server/Services/KubernetesClusterFeedService.js.map +1 -0
  558. package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js +27 -3
  559. package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js.map +1 -1
  560. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +21 -0
  561. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
  562. package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js +120 -0
  563. package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js.map +1 -1
  564. package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js +113 -0
  565. package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js.map +1 -1
  566. package/build/dist/Server/Services/KubernetesClusterService.js +177 -1
  567. package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
  568. package/build/dist/Server/Services/LogAggregationService.js +19 -196
  569. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  570. package/build/dist/Server/Services/MetricAggregationService.js +59 -0
  571. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  572. package/build/dist/Server/Services/MonitorService.js +115 -13
  573. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  574. package/build/dist/Server/Services/MonitorTemplateService.js +86 -0
  575. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  576. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +561 -67
  577. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
  578. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +130 -16
  579. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
  580. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +850 -8
  581. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
  582. package/build/dist/Server/Services/NetworkDeviceService.js +594 -5
  583. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  584. package/build/dist/Server/Services/NetworkInterfaceService.js +306 -0
  585. package/build/dist/Server/Services/NetworkInterfaceService.js.map +1 -1
  586. package/build/dist/Server/Services/NetworkSiteService.js +408 -47
  587. package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
  588. package/build/dist/Server/Services/PodmanHostFeedService.js +89 -0
  589. package/build/dist/Server/Services/PodmanHostFeedService.js.map +1 -0
  590. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +27 -3
  591. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -1
  592. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +21 -0
  593. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
  594. package/build/dist/Server/Services/PodmanHostOwnerTeamService.js +120 -0
  595. package/build/dist/Server/Services/PodmanHostOwnerTeamService.js.map +1 -1
  596. package/build/dist/Server/Services/PodmanHostOwnerUserService.js +113 -0
  597. package/build/dist/Server/Services/PodmanHostOwnerUserService.js.map +1 -1
  598. package/build/dist/Server/Services/PodmanHostService.js +177 -1
  599. package/build/dist/Server/Services/PodmanHostService.js.map +1 -1
  600. package/build/dist/Server/Services/ProjectService.js +40 -30
  601. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  602. package/build/dist/Server/Services/ProxmoxClusterFeedService.js +89 -0
  603. package/build/dist/Server/Services/ProxmoxClusterFeedService.js.map +1 -0
  604. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +27 -3
  605. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -1
  606. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +21 -0
  607. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
  608. package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js +120 -0
  609. package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js.map +1 -1
  610. package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js +113 -0
  611. package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js.map +1 -1
  612. package/build/dist/Server/Services/ProxmoxClusterService.js +175 -1
  613. package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -1
  614. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +56 -0
  615. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
  616. package/build/dist/Server/Services/ServiceFeedService.js +89 -0
  617. package/build/dist/Server/Services/ServiceFeedService.js.map +1 -0
  618. package/build/dist/Server/Services/ServiceLabelRuleEngineService.js +27 -3
  619. package/build/dist/Server/Services/ServiceLabelRuleEngineService.js.map +1 -1
  620. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +24 -0
  621. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
  622. package/build/dist/Server/Services/ServiceOwnerTeamService.js +120 -0
  623. package/build/dist/Server/Services/ServiceOwnerTeamService.js.map +1 -1
  624. package/build/dist/Server/Services/ServiceOwnerUserService.js +113 -0
  625. package/build/dist/Server/Services/ServiceOwnerUserService.js.map +1 -1
  626. package/build/dist/Server/Services/ServiceService.js +173 -2
  627. package/build/dist/Server/Services/ServiceService.js.map +1 -1
  628. package/build/dist/Server/Services/StatusPageSubscriberService.js +7 -0
  629. package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
  630. package/build/dist/Server/Services/TelemetryAttributeService.js +9 -3
  631. package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
  632. package/build/dist/Server/Services/TelemetrySourceMapService.js +265 -0
  633. package/build/dist/Server/Services/TelemetrySourceMapService.js.map +1 -0
  634. package/build/dist/Server/Services/ThreatIntelFeedService.js +157 -0
  635. package/build/dist/Server/Services/ThreatIntelFeedService.js.map +1 -0
  636. package/build/dist/Server/Services/ThreatIntelIndicatorService.js +276 -0
  637. package/build/dist/Server/Services/ThreatIntelIndicatorService.js.map +1 -0
  638. package/build/dist/Server/Services/TraceAggregationService.js +62 -6
  639. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  640. package/build/dist/Server/Services/UserService.js +22 -13
  641. package/build/dist/Server/Services/UserService.js.map +1 -1
  642. package/build/dist/Server/Services/UserTwoFactorBackupCodeService.js +120 -0
  643. package/build/dist/Server/Services/UserTwoFactorBackupCodeService.js.map +1 -1
  644. package/build/dist/Server/Services/UserWebhookService.js +11 -2
  645. package/build/dist/Server/Services/UserWebhookService.js.map +1 -1
  646. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +12 -1
  647. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
  648. package/build/dist/Server/Types/Database/AggregateBy.js +2 -0
  649. package/build/dist/Server/Types/Database/AggregateBy.js.map +1 -0
  650. package/build/dist/Server/Types/Database/AggregateResultUtil.js +90 -0
  651. package/build/dist/Server/Types/Database/AggregateResultUtil.js.map +1 -0
  652. package/build/dist/Server/Types/Database/JSONColumnQuery.js +14 -0
  653. package/build/dist/Server/Types/Database/JSONColumnQuery.js.map +1 -1
  654. package/build/dist/Server/Types/Database/QueryHelper.js +42 -0
  655. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  656. package/build/dist/Server/Types/Database/QueryUtil.js +18 -0
  657. package/build/dist/Server/Types/Database/QueryUtil.js.map +1 -1
  658. package/build/dist/Server/Types/Workflow/Components/API/Utils.js +10 -1
  659. package/build/dist/Server/Types/Workflow/Components/API/Utils.js.map +1 -1
  660. package/build/dist/Server/Types/Workflow/Components/JavaScript.js +8 -0
  661. package/build/dist/Server/Types/Workflow/Components/JavaScript.js.map +1 -1
  662. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +8 -0
  663. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
  664. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +15 -0
  665. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -1
  666. package/build/dist/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.js +266 -0
  667. package/build/dist/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.js.map +1 -0
  668. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +134 -0
  669. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  670. package/build/dist/Server/Utils/DataSource/HttpFetch.js +8 -0
  671. package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -1
  672. package/build/dist/Server/Utils/Database/RelationIdUtil.js +31 -0
  673. package/build/dist/Server/Utils/Database/RelationIdUtil.js.map +1 -1
  674. package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js +26 -8
  675. package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js.map +1 -1
  676. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +42 -17
  677. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js.map +1 -1
  678. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +9 -1
  679. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
  680. package/build/dist/Server/Utils/Monitor/Criteria/SyntheticMonitor.js +15 -2
  681. package/build/dist/Server/Utils/Monitor/Criteria/SyntheticMonitor.js.map +1 -1
  682. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +386 -271
  683. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  684. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +278 -64
  685. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  686. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +469 -350
  687. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  688. package/build/dist/Server/Utils/Monitor/MonitorResource.js +183 -44
  689. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  690. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +46 -3
  691. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
  692. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +18 -91
  693. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  694. package/build/dist/Server/Utils/Monitor/PerEntityCriteriaFanOut.js +194 -0
  695. package/build/dist/Server/Utils/Monitor/PerEntityCriteriaFanOut.js.map +1 -0
  696. package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js +332 -0
  697. package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js.map +1 -0
  698. package/build/dist/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.js +279 -0
  699. package/build/dist/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.js.map +1 -0
  700. package/build/dist/Server/Utils/OnCallNotificationContext.js +415 -0
  701. package/build/dist/Server/Utils/OnCallNotificationContext.js.map +1 -0
  702. package/build/dist/Server/Utils/PrivateNetworkWebhookConfig.js +424 -0
  703. package/build/dist/Server/Utils/PrivateNetworkWebhookConfig.js.map +1 -0
  704. package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js +108 -0
  705. package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js.map +1 -0
  706. package/build/dist/Server/Utils/Response.js +12 -1
  707. package/build/dist/Server/Utils/Response.js.map +1 -1
  708. package/build/dist/Server/Utils/SSRFProtection.js +160 -58
  709. package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
  710. package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js +89 -0
  711. package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js.map +1 -0
  712. package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js +75 -234
  713. package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js.map +1 -1
  714. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +41 -16
  715. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -1
  716. package/build/dist/Server/Utils/SecurityEvent/SecurityEventAlerting.js +217 -0
  717. package/build/dist/Server/Utils/SecurityEvent/SecurityEventAlerting.js.map +1 -0
  718. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.js +103 -0
  719. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.js.map +1 -0
  720. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.js +168 -0
  721. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.js.map +1 -0
  722. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.js +527 -0
  723. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.js.map +1 -0
  724. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.js +376 -0
  725. package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.js.map +1 -0
  726. package/build/dist/Server/Utils/StartServer.js +70 -44
  727. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  728. package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js +3 -0
  729. package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js.map +1 -1
  730. package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js +327 -0
  731. package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js.map +1 -0
  732. package/build/dist/Server/Utils/TwoFactorBackupCodeNotification.js +84 -0
  733. package/build/dist/Server/Utils/TwoFactorBackupCodeNotification.js.map +1 -0
  734. package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
  735. package/build/dist/Server/Utils/VM/VMRunner.js +10 -1
  736. package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
  737. package/build/dist/Server/Utils/VendorAssets.js +29 -0
  738. package/build/dist/Server/Utils/VendorAssets.js.map +1 -1
  739. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +121 -6
  740. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  741. package/build/dist/Types/API/URL.js +40 -10
  742. package/build/dist/Types/API/URL.js.map +1 -1
  743. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +8 -0
  744. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
  745. package/build/dist/Types/BaseDatabase/NotWildcard.js +72 -0
  746. package/build/dist/Types/BaseDatabase/NotWildcard.js.map +1 -0
  747. package/build/dist/Types/BaseDatabase/Wildcard.js +75 -0
  748. package/build/dist/Types/BaseDatabase/Wildcard.js.map +1 -0
  749. package/build/dist/Types/BaseDatabase/WildcardPattern.js +137 -0
  750. package/build/dist/Types/BaseDatabase/WildcardPattern.js.map +1 -0
  751. package/build/dist/Types/Database/DateColumnValue.js +125 -0
  752. package/build/dist/Types/Database/DateColumnValue.js.map +1 -0
  753. package/build/dist/Types/Database/TableColumn.js +18 -2
  754. package/build/dist/Types/Database/TableColumn.js.map +1 -1
  755. package/build/dist/Types/Date.js +31 -0
  756. package/build/dist/Types/Date.js.map +1 -1
  757. package/build/dist/Types/Email/EmailTemplateType.js +1 -0
  758. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  759. package/build/dist/Types/JSON.js +2 -0
  760. package/build/dist/Types/JSON.js.map +1 -1
  761. package/build/dist/Types/Log/LogQueryToFilter.js +111 -108
  762. package/build/dist/Types/Log/LogQueryToFilter.js.map +1 -1
  763. package/build/dist/Types/Monitor/DockerAlertTemplates.js +40 -16
  764. package/build/dist/Types/Monitor/DockerAlertTemplates.js.map +1 -1
  765. package/build/dist/Types/Monitor/HostAlertTemplates.js +29 -7
  766. package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -1
  767. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +98 -4
  768. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
  769. package/build/dist/Types/Monitor/MonitorStep.js +40 -0
  770. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  771. package/build/dist/Types/Monitor/PodmanAlertTemplates.js +36 -16
  772. package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -1
  773. package/build/dist/Types/NetworkAutomation/RuleRunResult.js +90 -0
  774. package/build/dist/Types/NetworkAutomation/RuleRunResult.js.map +1 -1
  775. package/build/dist/Types/NetworkSite/SiteHealthRollupPolicy.js +84 -0
  776. package/build/dist/Types/NetworkSite/SiteHealthRollupPolicy.js.map +1 -0
  777. package/build/dist/Types/Permission.js +354 -0
  778. package/build/dist/Types/Permission.js.map +1 -1
  779. package/build/dist/Types/SecurityEvent/ThreatIntelConstants.js +100 -0
  780. package/build/dist/Types/SecurityEvent/ThreatIntelConstants.js.map +1 -0
  781. package/build/dist/Types/SerializableObjectDictionary.js +8 -0
  782. package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
  783. package/build/dist/Types/Telemetry/SourceMap.js +9 -0
  784. package/build/dist/Types/Telemetry/SourceMap.js.map +1 -0
  785. package/build/dist/Types/Telemetry/TelemetrySearchQuery.js +661 -0
  786. package/build/dist/Types/Telemetry/TelemetrySearchQuery.js.map +1 -0
  787. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +12 -1
  788. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
  789. package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js +67 -0
  790. package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js.map +1 -1
  791. package/build/dist/UI/Components/Icon/Icon.js +28 -1
  792. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  793. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +25 -4
  794. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -1
  795. package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js +36 -16
  796. package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js.map +1 -1
  797. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js +14 -2
  798. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js.map +1 -1
  799. package/build/dist/Utils/Metrics/MetricExplorerUrl.js +54 -9
  800. package/build/dist/Utils/Metrics/MetricExplorerUrl.js.map +1 -1
  801. package/build/dist/Utils/Monitor/InterfaceInventoryUtil.js +128 -0
  802. package/build/dist/Utils/Monitor/InterfaceInventoryUtil.js.map +1 -0
  803. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js +190 -0
  804. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js.map +1 -0
  805. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +206 -28
  806. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  807. package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js +14 -7
  808. package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js.map +1 -1
  809. package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
  810. package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +34 -18
  811. package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
  812. package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js +163 -0
  813. package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js.map +1 -0
  814. package/build/dist/Utils/NetworkDiscovery/RescanIntervalUtil.js +99 -0
  815. package/build/dist/Utils/NetworkDiscovery/RescanIntervalUtil.js.map +1 -0
  816. package/build/dist/Utils/NetworkDiscovery/ScanModeUtil.js +85 -0
  817. package/build/dist/Utils/NetworkDiscovery/ScanModeUtil.js.map +1 -0
  818. package/build/dist/Utils/NetworkDiscovery/SnmpScanConfigUtil.js +560 -0
  819. package/build/dist/Utils/NetworkDiscovery/SnmpScanConfigUtil.js.map +1 -0
  820. package/build/dist/Utils/NetworkSite/SiteMaintenanceUtil.js +56 -0
  821. package/build/dist/Utils/NetworkSite/SiteMaintenanceUtil.js.map +1 -0
  822. package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +185 -10
  823. package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
  824. package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js +248 -21
  825. package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js.map +1 -1
  826. package/build/dist/Utils/SecurityEvent/ThreatIntel/StixPatternParser.js +255 -0
  827. package/build/dist/Utils/SecurityEvent/ThreatIntel/StixPatternParser.js.map +1 -0
  828. package/build/dist/Utils/Telemetry/CrossSignalScope.js +27 -30
  829. package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -1
  830. package/package.json +2 -1
  831. package/Tests/Types/Log/LogQueryParser.test.ts +0 -186
  832. package/Types/Log/LogQueryParser.ts +0 -252
  833. package/build/dist/Types/Log/LogQueryParser.js +0 -200
  834. package/build/dist/Types/Log/LogQueryParser.js.map +0 -1
@@ -0,0 +1,332 @@
1
+ import SortOrder from "../../../Types/BaseDatabase/SortOrder";
2
+ import AggregateResultUtil from "../../Types/Database/AggregateResultUtil";
3
+ import { DEFAULT_DEVICE_POLLING_INTERVAL_IN_MINUTES, DEVICE_MIN_STALE_WINDOW_IN_MINUTES, DEVICE_MISSED_POLL_ALLOWANCE, } from "../../../Utils/NetworkDevice/DeviceReachabilityUtil";
4
+ import OneUptimeDate from "../../../Types/Date";
5
+ /*
6
+ * Counting device health for a whole estate WITHOUT loading the estate.
7
+ *
8
+ * The obvious way to make a per-site health rollup fast is to write the
9
+ * classification rule a second time, in SQL: `CASE WHEN isReachable = false
10
+ * THEN 'down' WHEN ...`. That is also the way to guarantee the product
11
+ * eventually contradicts itself — a device the site card counts as healthy and
12
+ * the topology map next to it draws red — which is the exact outcome
13
+ * DeviceHealthStateUtil was created to make impossible. A rule with two
14
+ * implementations has two behaviours the moment either one is edited.
15
+ *
16
+ * So the rule does not move. What moves is the DATA REDUCTION.
17
+ *
18
+ * `deviceHealthState` is a pure function of six facts about a row, and five of
19
+ * them are already booleans or three-state flags. Group the table by those
20
+ * facts in SQL and 80,000 rows collapse into at most a few per site — one
21
+ * bucket per distinct combination that actually occurs. Then hand each bucket
22
+ * back to the REAL classifier once and multiply its verdict by the bucket's
23
+ * count.
24
+ *
25
+ * One rule, one implementation, and the wire carries buckets instead of rows.
26
+ *
27
+ * The one fact that is not already discrete is staleness — "nothing has polled
28
+ * this device in a long time" — because the window is per-device, derived from
29
+ * each row's own interval. That predicate is computed in SQL below, from the
30
+ * very constants DeviceReachabilityUtil derives its window from, so there is
31
+ * still only one definition of how long "a long time" is.
32
+ */
33
+ /**
34
+ * Column names on `NetworkDevice`, qualified with the alias
35
+ * `DatabaseService.aggregateBy` runs under (which is the model name).
36
+ */
37
+ function column(columnName) {
38
+ return `"NetworkDevice"."${columnName}"`;
39
+ }
40
+ /*
41
+ * The staleness window, in minutes, as SQL — the exact expression
42
+ * `DeviceReachabilityUtil.getStaleWindowInMinutes` computes in TypeScript,
43
+ * built from the same three exported constants so the two cannot drift.
44
+ */
45
+ const STALE_WINDOW_IN_MINUTES_SQL = `GREATEST(
46
+ (CASE
47
+ WHEN ${column("pollingIntervalInMinutes")} IS NULL
48
+ OR ${column("pollingIntervalInMinutes")} <= 0
49
+ THEN ${DEFAULT_DEVICE_POLLING_INTERVAL_IN_MINUTES}
50
+ ELSE GREATEST(${column("pollingIntervalInMinutes")}, 1)
51
+ END)::numeric * ${DEVICE_MISSED_POLL_ALLOWANCE},
52
+ ${DEVICE_MIN_STALE_WINDOW_IN_MINUTES}
53
+ )`;
54
+ /*
55
+ * Newest of the two contact timestamps — `DeviceReachabilityUtil`'s `newerOf`.
56
+ * Postgres GREATEST ignores NULL arguments and is NULL only when every
57
+ * argument is, which is precisely that function's behaviour.
58
+ */
59
+ const LAST_CONTACT_AT_SQL = `GREATEST(${column("lastPolledAt")}, ${column("lastSeenAt")})`;
60
+ /**
61
+ * The name of the bound parameter carrying "now".
62
+ *
63
+ * Passed in rather than using the database's `NOW()` so that a caller
64
+ * classifying several groups — or comparing an aggregate against a row it also
65
+ * fetched — measures every one of them against a single instant. `NOW()` would
66
+ * also be the transaction's start time rather than the caller's, which is a
67
+ * different clock from the one the TypeScript rule reads.
68
+ */
69
+ export const DEVICE_HEALTH_NOW_PARAMETER = "deviceHealthNow";
70
+ /** Aliases the grouped columns come back under. */
71
+ export var DeviceHealthGroupAlias;
72
+ (function (DeviceHealthGroupAlias) {
73
+ DeviceHealthGroupAlias["SiteId"] = "siteId";
74
+ DeviceHealthGroupAlias["MonitorStatusId"] = "monitorStatusId";
75
+ DeviceHealthGroupAlias["MonitoringMethod"] = "monitoringMethod";
76
+ DeviceHealthGroupAlias["IsReachable"] = "isReachable";
77
+ DeviceHealthGroupAlias["HasBeenPolled"] = "hasBeenPolled";
78
+ DeviceHealthGroupAlias["HasBeenSeen"] = "hasBeenSeen";
79
+ DeviceHealthGroupAlias["IsStale"] = "isStale";
80
+ DeviceHealthGroupAlias["HasDownInterfaces"] = "hasDownInterfaces";
81
+ DeviceHealthGroupAlias["DeviceCount"] = "deviceCount";
82
+ DeviceHealthGroupAlias["InterfacesDownTotal"] = "interfacesDownTotal";
83
+ })(DeviceHealthGroupAlias || (DeviceHealthGroupAlias = {}));
84
+ /*
85
+ * Every fact `deviceHealthState` reads, and nothing else.
86
+ *
87
+ * Reduced to its coarsest form on purpose: `interfacesDown` is grouped as
88
+ * "> 0 or not" rather than by value, and the timestamps as "set or not" plus
89
+ * the staleness verdict, because that is all the rule can distinguish. Grouping
90
+ * by the raw values instead would produce almost one bucket per device and
91
+ * defeat the whole exercise.
92
+ */
93
+ const DEVICE_HEALTH_DISCRIMINATOR_COLUMNS = [
94
+ {
95
+ expression: column("currentMonitorStatusId"),
96
+ alias: DeviceHealthGroupAlias.MonitorStatusId,
97
+ },
98
+ /*
99
+ * Grouped raw rather than pre-parsed into "is monitor backed", because
100
+ * `NetworkDeviceMonitoringMethodUtil.parse` owns what an unrecognised or
101
+ * NULL value means and there is no reason for SQL to hold a second opinion.
102
+ * The column only ever holds a handful of distinct values, so the raw form
103
+ * costs nothing in bucket count.
104
+ *
105
+ * Note carefully WHO reads it: `deviceHealthState` never receives it (it is
106
+ * not part of `DeviceHealthStateInput`, and `deviceHealthInputForGroup` does
107
+ * not emit it), so the per-site health rollups are indifferent to it. Its
108
+ * one consumer is the Overview's fleet tally, which re-attaches it and calls
109
+ * `DeviceReachabilityUtil` directly — and a tally that dropped it would
110
+ * report every ping-only device as Pending forever (issue #3392, one level
111
+ * up).
112
+ *
113
+ * It therefore costs the rollup path a discriminator it does not use. On a
114
+ * real fleet that costs nothing, because `monitoringMethod` is almost
115
+ * perfectly correlated with whether the device carries a stamped monitor
116
+ * status — which is already a group key — so it splits no bucket that
117
+ * `currentMonitorStatusId` had not split anyway. Keeping one discriminator
118
+ * set is worth more than saving that.
119
+ */
120
+ {
121
+ expression: column("monitoringMethod"),
122
+ alias: DeviceHealthGroupAlias.MonitoringMethod,
123
+ },
124
+ {
125
+ expression: column("isReachable"),
126
+ alias: DeviceHealthGroupAlias.IsReachable,
127
+ },
128
+ {
129
+ expression: `(${column("lastPolledAt")} IS NOT NULL)`,
130
+ alias: DeviceHealthGroupAlias.HasBeenPolled,
131
+ },
132
+ {
133
+ expression: `(${column("lastSeenAt")} IS NOT NULL)`,
134
+ alias: DeviceHealthGroupAlias.HasBeenSeen,
135
+ },
136
+ /*
137
+ * Guarded by the only branch that can read it.
138
+ *
139
+ * `DeviceReachabilityUtil` lets staleness decide up-vs-down in exactly one
140
+ * case — a row with no recorded poll outcome that has nevertheless been seen
141
+ * (`isReachable IS NULL AND lastSeenAt IS NOT NULL`), which is a row written
142
+ * before the outcome column existed. Everywhere else staleness is an
143
+ * annotation the health rule ignores entirely.
144
+ *
145
+ * So the interval arithmetic is skipped for every row that cannot be
146
+ * affected by it — which, after the backfill migration, is essentially all
147
+ * of them. The guard is not an optimisation that changes the answer: for any
148
+ * row outside that branch the classifier's verdict is identical whether this
149
+ * says true or false, and constant-false keeps the buckets from splitting on
150
+ * a fact nothing reads.
151
+ */
152
+ {
153
+ /*
154
+ * Written as "how many minutes since last contact, compared against the
155
+ * window" rather than as "before now minus an interval", which is both
156
+ * the shape `DeviceReachabilityUtil` uses and the one that cannot
157
+ * overflow.
158
+ *
159
+ * The interval form — `now - make_interval(mins => window)` — takes an
160
+ * `int` parameter, and `pollingIntervalInMinutes` is an unbounded `integer`
161
+ * column with no CHECK behind it. Any value above 214,748,364 overflows
162
+ * `int4` on the `* 10`, and Postgres aborts the STATEMENT: one absurd row
163
+ * would 500 the overview, the hierarchy drill-down and every rollup for
164
+ * the whole project. The TypeScript twin is a double and has no such
165
+ * ceiling, so that was a genuine divergence rather than a shared limit.
166
+ * `::numeric` and a subtraction have neither.
167
+ */
168
+ expression: `(
169
+ CASE WHEN ${column("isReachable")} IS NULL
170
+ AND ${column("lastSeenAt")} IS NOT NULL
171
+ THEN (
172
+ ${LAST_CONTACT_AT_SQL} IS NOT NULL
173
+ AND EXTRACT(
174
+ EPOCH FROM (:${DEVICE_HEALTH_NOW_PARAMETER}::timestamptz - ${LAST_CONTACT_AT_SQL})
175
+ ) / 60 > ${STALE_WINDOW_IN_MINUTES_SQL}
176
+ )
177
+ ELSE false END
178
+ )`,
179
+ alias: DeviceHealthGroupAlias.IsStale,
180
+ },
181
+ {
182
+ expression: `(COALESCE(${column("interfacesDown")}, 0) > 0)`,
183
+ alias: DeviceHealthGroupAlias.HasDownInterfaces,
184
+ },
185
+ ];
186
+ /** How many devices are in a bucket. */
187
+ export const DEVICE_COUNT_AGGREGATE = {
188
+ expression: "COUNT(*)",
189
+ alias: DeviceHealthGroupAlias.DeviceCount,
190
+ };
191
+ /**
192
+ * How many INTERFACES are down across a bucket's devices.
193
+ *
194
+ * A real SUM, not a count of devices with dark ports: a switch with three
195
+ * down interfaces contributes three. Carried alongside the bucket counts so a
196
+ * caller that wants both the fleet's health tally and its total dark ports
197
+ * gets them from one statement.
198
+ */
199
+ export const INTERFACES_DOWN_AGGREGATE = {
200
+ expression: `COALESCE(SUM(${column("interfacesDown")}), 0)`,
201
+ alias: DeviceHealthGroupAlias.InterfacesDownTotal,
202
+ };
203
+ /** Both aggregates, which is what every health grouping selects. */
204
+ export const DEVICE_HEALTH_AGGREGATES = [
205
+ DEVICE_COUNT_AGGREGATE,
206
+ INTERFACES_DOWN_AGGREGATE,
207
+ ];
208
+ /** Health buckets for the whole matched set, with no per-site breakdown. */
209
+ export const DEVICE_HEALTH_GROUP_COLUMNS = [
210
+ ...DEVICE_HEALTH_DISCRIMINATOR_COLUMNS,
211
+ ];
212
+ /** Health buckets broken down by the site each device is attached to. */
213
+ export const DEVICE_HEALTH_GROUP_COLUMNS_BY_SITE = [
214
+ { expression: column("siteId"), alias: DeviceHealthGroupAlias.SiteId },
215
+ ...DEVICE_HEALTH_DISCRIMINATOR_COLUMNS,
216
+ ];
217
+ /**
218
+ * A stable order for the buckets.
219
+ *
220
+ * `SiteStatusRollupUtil.worstStatus` documents that a priority tie keeps the
221
+ * FIRST contributor. Buckets arrive in whatever order a HashAggregate produces
222
+ * them, which is not merely unspecified but can differ between two executions
223
+ * of the same statement — so without this, a project that ever defined two
224
+ * MonitorStatus rows at the same priority could see a site's rolled-up status
225
+ * flip between page loads with nothing having changed.
226
+ *
227
+ * Sorting a few thousand already-aggregated rows costs nothing next to the
228
+ * scan that produced them.
229
+ */
230
+ export const DEVICE_HEALTH_GROUP_ORDER = [
231
+ {
232
+ expression: `"${DeviceHealthGroupAlias.MonitorStatusId}"`,
233
+ sortOrder: SortOrder.Ascending,
234
+ },
235
+ {
236
+ expression: `"${DeviceHealthGroupAlias.DeviceCount}"`,
237
+ sortOrder: SortOrder.Descending,
238
+ },
239
+ ];
240
+ export function parseDeviceHealthGroup(row) {
241
+ return {
242
+ siteId: AggregateResultUtil.toStringOrNull(row, DeviceHealthGroupAlias.SiteId),
243
+ monitorStatusId: AggregateResultUtil.toStringOrNull(row, DeviceHealthGroupAlias.MonitorStatusId),
244
+ monitoringMethod: AggregateResultUtil.toStringOrNull(row, DeviceHealthGroupAlias.MonitoringMethod),
245
+ isReachable: AggregateResultUtil.toNullableBoolean(row, DeviceHealthGroupAlias.IsReachable),
246
+ hasBeenPolled: AggregateResultUtil.toBoolean(row, DeviceHealthGroupAlias.HasBeenPolled),
247
+ hasBeenSeen: AggregateResultUtil.toBoolean(row, DeviceHealthGroupAlias.HasBeenSeen),
248
+ isStale: AggregateResultUtil.toBoolean(row, DeviceHealthGroupAlias.IsStale),
249
+ hasDownInterfaces: AggregateResultUtil.toBoolean(row, DeviceHealthGroupAlias.HasDownInterfaces),
250
+ deviceCount: AggregateResultUtil.toNumber(row, DeviceHealthGroupAlias.DeviceCount),
251
+ interfacesDownTotal: AggregateResultUtil.toNumber(row, DeviceHealthGroupAlias.InterfacesDownTotal),
252
+ };
253
+ }
254
+ /*
255
+ * How far back a synthetic "stale" timestamp is placed.
256
+ *
257
+ * `deviceHealthInputForGroup` hands the classifier dates rather than the
258
+ * staleness flag itself, because the flag is not part of the classifier's
259
+ * input shape — it is something the classifier derives. So the dates have to
260
+ * be chosen to make it derive the answer SQL already reached: comfortably
261
+ * outside any window `getStaleWindowInMinutes` can return for the default
262
+ * interval (60 minutes) to mean stale, and the caller's own "now" to mean
263
+ * fresh.
264
+ */
265
+ const SYNTHETIC_STALE_AGE_IN_MINUTES = 365 * 24 * 60;
266
+ /**
267
+ * One bucket, expressed as the input the REAL classifier takes.
268
+ *
269
+ * The dates are synthetic and deliberately so: SQL has already decided
270
+ * staleness per device, against each device's own interval, and a bucket has
271
+ * no single interval to re-derive it from. Feeding back the default interval
272
+ * plus a timestamp on the correct side of that window reproduces the verdict
273
+ * exactly — and, importantly, leaves the decision itself with
274
+ * `deviceHealthState` rather than copying it here.
275
+ */
276
+ export function deviceHealthInputForGroup(data) {
277
+ const { group, now } = data;
278
+ const contactAt = group.isStale
279
+ ? OneUptimeDate.addRemoveMinutes(now, -SYNTHETIC_STALE_AGE_IN_MINUTES)
280
+ : now;
281
+ return {
282
+ monitorStatusIsOffline: data.monitorStatusIsOffline,
283
+ isReachable: group.isReachable,
284
+ lastPolledAt: group.hasBeenPolled ? contactAt : null,
285
+ lastSeenAt: group.hasBeenSeen ? contactAt : null,
286
+ /*
287
+ * Left unset on purpose. The window has already been applied in SQL
288
+ * against each device's real interval; re-supplying an interval here
289
+ * would ask the classifier to re-derive staleness from a bucket that no
290
+ * longer has one. Unset reads as the column default, which is the window
291
+ * the synthetic dates above are placed relative to.
292
+ */
293
+ pollingIntervalInMinutes: undefined,
294
+ interfacesDown: group.hasDownInterfaces ? 1 : 0,
295
+ };
296
+ }
297
+ /**
298
+ * One bucket, expressed as the input the site ROLLUP rule takes.
299
+ *
300
+ * `SiteStatusRollupUtil` answers a different question from
301
+ * `deviceHealthState` — which MonitorStatus a site inherits, rather than how
302
+ * healthy one device is — but it reads the same reachability facts, so the
303
+ * same buckets serve it.
304
+ *
305
+ * `deviceCount` is carried through because the two rollup policies disagree
306
+ * about whether it matters. Worst-of is indifferent: one representative per
307
+ * bucket produces the identical winner that every device in the bucket
308
+ * would have. A percentage is not — a bucket of four hundred healthy devices
309
+ * and a bucket of one dark device are the same NUMBER of buckets, and
310
+ * scoring the share off buckets would read that region as 50% down.
311
+ *
312
+ * The synthetic timestamps are chosen exactly as in
313
+ * `deviceHealthInputForGroup`, and for the same reason.
314
+ */
315
+ export function deviceRollupStateForGroup(data) {
316
+ const { group, now } = data;
317
+ const contactAt = group.isStale
318
+ ? OneUptimeDate.addRemoveMinutes(now, -SYNTHETIC_STALE_AGE_IN_MINUTES)
319
+ : now;
320
+ return {
321
+ currentMonitorStatusId: group.monitorStatusId,
322
+ monitorStatusPriority: data.monitorStatusPriority,
323
+ monitorStatusIsOperational: data.monitorStatusIsOperational,
324
+ isReachable: group.isReachable,
325
+ lastPolledAt: group.hasBeenPolled ? contactAt : null,
326
+ lastSeenAt: group.hasBeenSeen ? contactAt : null,
327
+ // See deviceHealthInputForGroup — staleness is already applied.
328
+ pollingIntervalInMinutes: undefined,
329
+ deviceCount: group.deviceCount,
330
+ };
331
+ }
332
+ //# sourceMappingURL=DeviceHealthAggregation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceHealthAggregation.js","sourceRoot":"","sources":["../../../../../Server/Utils/NetworkDevice/DeviceHealthAggregation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,279 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import NetworkSiteService from "../../Services/NetworkSiteService";
11
+ import ScheduledMaintenanceService from "../../Services/ScheduledMaintenanceService";
12
+ import { LIMIT_PER_PROJECT } from "../../../Types/Database/LimitMax";
13
+ import ObjectID from "../../../Types/ObjectID";
14
+ import OneUptimeDate from "../../../Types/Date";
15
+ import QueryHelper from "../../Types/Database/QueryHelper";
16
+ import CaptureSpan from "../Telemetry/CaptureSpan";
17
+ import logger from "../Logger";
18
+ /*
19
+ * Which NetworkSites a scheduled maintenance event is currently silencing,
20
+ * and which windows to subtract from a site's uptime.
21
+ *
22
+ * Network sites are the one maintenance-attachable resource whose health is
23
+ * COMPUTED rather than reported, so the monitor treatment - flip
24
+ * `disableActiveMonitoringBecauseOfScheduledMaintenanceEvent` and let the
25
+ * absence of new checks do the rest - does not transfer. A site under
26
+ * maintenance keeps reporting the truth about itself; what changes is who
27
+ * else has to listen:
28
+ *
29
+ * - The site's OWN status is untouched. Someone looking at a unit during a
30
+ * planned outage needs to see it is down.
31
+ *
32
+ * - Its devices stop voting in its ANCESTORS' rollups, so the region above
33
+ * it does not turn red for a cutover that was on the calendar. Because
34
+ * the ancestor never records the outage, its uptime needs no correction
35
+ * afterwards - which matters, since subtracting the window from the
36
+ * region's denominator instead would also erase any GENUINE failure that
37
+ * happened elsewhere in the region during the same hours.
38
+ *
39
+ * - Its own uptime percentage excludes the window (see SiteUptimeUtil).
40
+ */
41
+ /*
42
+ * Ongoing-maintenance lookups are cached per project for a few seconds.
43
+ *
44
+ * recomputeRollupForSite runs once per site per rollup, and the stale-rollup
45
+ * sweep walks up to five hundred sites in one pass; without this, each of
46
+ * those pays two queries to learn the same thing about the same project. The
47
+ * TTL is the entire staleness budget - a window that has just started takes
48
+ * at most this long to begin suppressing, which is nothing next to the
49
+ * five-minute sweep it is racing.
50
+ */
51
+ const ONGOING_MAINTENANCE_CACHE_TTL_MS = 15 * 1000;
52
+ /*
53
+ * Ceiling on cached projects. The map is keyed by project and each entry is a
54
+ * set of site ids, so on a large multi-tenant install it would otherwise grow
55
+ * to every project the process has ever rolled up and never shrink. Past this
56
+ * many entries the expired ones are swept before another is added.
57
+ */
58
+ const MAX_CACHED_PROJECTS = 512;
59
+ class NetworkSiteMaintenanceSuppression {
60
+ /*
61
+ * Ids of every site currently inside an ongoing maintenance window,
62
+ * expanded downward: attaching a Region yields the Region and every Market
63
+ * and Unit beneath it.
64
+ *
65
+ * Returns an empty set - without touching the hierarchy at all - when the
66
+ * project has no ongoing event, which is the overwhelmingly common case.
67
+ */
68
+ static async getSiteIdsUnderOngoingMaintenance(projectId) {
69
+ const cacheKey = projectId.toString();
70
+ const cached = this.cache.get(cacheKey);
71
+ const nowInMs = OneUptimeDate.getCurrentDate().getTime();
72
+ if (cached && cached.expiresAtInMs > nowInMs) {
73
+ return cached.siteIds;
74
+ }
75
+ const generationAtStart = this.generation;
76
+ let siteIds = new Set();
77
+ try {
78
+ siteIds = await this.resolveSiteIdsUnderOngoingMaintenance(projectId);
79
+ }
80
+ catch (err) {
81
+ /*
82
+ * A rollup must not fail because the maintenance lookup did. Falling
83
+ * back to "nothing is under maintenance" reproduces the behaviour from
84
+ * before this feature existed, which is the safe direction: a site may
85
+ * briefly turn red for planned work, rather than a real outage going
86
+ * unnoticed.
87
+ */
88
+ logger.error(`NetworkSiteMaintenanceSuppression: could not resolve ongoing maintenance for project ${cacheKey}; treating nothing as suppressed.`);
89
+ logger.error(err);
90
+ return new Set();
91
+ }
92
+ /*
93
+ * Someone invalidated while this query was in flight, so the answer in
94
+ * hand is already known to be stale. Serve it to this caller (it is no
95
+ * worse than what they would have got a moment earlier) but do not
96
+ * install it, so the next caller re-reads.
97
+ */
98
+ if (this.generation === generationAtStart) {
99
+ this.sweepIfCrowded();
100
+ this.cache.set(cacheKey, {
101
+ /*
102
+ * Measured from AFTER the query, not before it. A slow query would
103
+ * otherwise burn most of its own TTL before the entry was written.
104
+ */
105
+ expiresAtInMs: OneUptimeDate.getCurrentDate().getTime() +
106
+ ONGOING_MAINTENANCE_CACHE_TTL_MS,
107
+ siteIds: siteIds,
108
+ });
109
+ }
110
+ return siteIds;
111
+ }
112
+ // Drop expired entries once the map has grown past its ceiling.
113
+ static sweepIfCrowded() {
114
+ if (this.cache.size < MAX_CACHED_PROJECTS) {
115
+ return;
116
+ }
117
+ const nowInMs = OneUptimeDate.getCurrentDate().getTime();
118
+ for (const [key, entry] of this.cache) {
119
+ if (entry.expiresAtInMs <= nowInMs) {
120
+ this.cache.delete(key);
121
+ }
122
+ }
123
+ /*
124
+ * Everything was still live. Entries are a few seconds old at most, so
125
+ * clearing is cheap and bounded — far better than growing without limit.
126
+ */
127
+ if (this.cache.size >= MAX_CACHED_PROJECTS) {
128
+ this.cache.clear();
129
+ }
130
+ }
131
+ /*
132
+ * Drops the cached answer for a project. Called when an event changes
133
+ * state, so a window that has just started or ended takes effect on the
134
+ * very next rollup instead of up to a TTL later.
135
+ */
136
+ static invalidateCache(projectId) {
137
+ /*
138
+ * Bumped before the delete so a lookup that is mid-flight right now is
139
+ * refused its write-back too, not just future ones.
140
+ */
141
+ this.generation++;
142
+ if (!projectId) {
143
+ this.cache.clear();
144
+ return;
145
+ }
146
+ this.cache.delete(projectId.toString());
147
+ }
148
+ /*
149
+ * Every maintenance event in the project that OVERLAPS [windowStart,
150
+ * windowEnd), as the interval math needs it: the declared window plus the
151
+ * sites attached to it.
152
+ *
153
+ * The declared `startsAt`/`endsAt` are used rather than the state
154
+ * timeline's actual ongoing/ended transitions. They are what the user
155
+ * scheduled and what the event page shows, so the uptime number can be
156
+ * reconciled by hand against the calendar; deriving it from transitions
157
+ * would make the excluded interval depend on when a worker happened to run.
158
+ */
159
+ static async getMaintenanceEventWindows(data) {
160
+ const events = await ScheduledMaintenanceService.findBy({
161
+ query: {
162
+ projectId: data.projectId,
163
+ startsAt: QueryHelper.lessThanEqualTo(data.windowEnd),
164
+ endsAt: QueryHelper.greaterThanOrNull(data.windowStart),
165
+ },
166
+ select: {
167
+ _id: true,
168
+ startsAt: true,
169
+ endsAt: true,
170
+ networkSites: {
171
+ _id: true,
172
+ },
173
+ },
174
+ limit: LIMIT_PER_PROJECT,
175
+ skip: 0,
176
+ props: {
177
+ isRoot: true,
178
+ },
179
+ });
180
+ return this.toEventWindows(events);
181
+ }
182
+ /*
183
+ * Shared shaping step: an event with no sites attached is dropped, because
184
+ * it excludes nothing and would only make the caller's loops longer.
185
+ */
186
+ static toEventWindows(events) {
187
+ const windows = [];
188
+ for (const event of events) {
189
+ if (!event.startsAt) {
190
+ continue;
191
+ }
192
+ const siteIds = (event.networkSites || [])
193
+ .map((site) => {
194
+ return site._id ? String(site._id) : "";
195
+ })
196
+ .filter((id) => {
197
+ return id.length > 0;
198
+ });
199
+ if (siteIds.length === 0) {
200
+ continue;
201
+ }
202
+ windows.push({
203
+ startsAt: event.startsAt,
204
+ endsAt: event.endsAt || null,
205
+ siteIds: siteIds,
206
+ });
207
+ }
208
+ return windows;
209
+ }
210
+ static async resolveSiteIdsUnderOngoingMaintenance(projectId) {
211
+ const ongoingEvents = await ScheduledMaintenanceService.findBy({
212
+ query: {
213
+ projectId: projectId,
214
+ currentScheduledMaintenanceState: {
215
+ isOngoingState: true,
216
+ },
217
+ },
218
+ select: {
219
+ _id: true,
220
+ networkSites: {
221
+ _id: true,
222
+ },
223
+ },
224
+ limit: LIMIT_PER_PROJECT,
225
+ skip: 0,
226
+ props: {
227
+ isRoot: true,
228
+ },
229
+ });
230
+ const attachedSiteIds = [];
231
+ const seen = new Set();
232
+ for (const event of ongoingEvents) {
233
+ for (const site of event.networkSites || []) {
234
+ if (!site._id) {
235
+ continue;
236
+ }
237
+ const id = String(site._id);
238
+ if (seen.has(id)) {
239
+ continue;
240
+ }
241
+ seen.add(id);
242
+ attachedSiteIds.push(new ObjectID(id));
243
+ }
244
+ }
245
+ if (attachedSiteIds.length === 0) {
246
+ return new Set();
247
+ }
248
+ return NetworkSiteService.getSubtreeSiteIds({
249
+ siteIds: attachedSiteIds,
250
+ projectId: projectId,
251
+ });
252
+ }
253
+ }
254
+ NetworkSiteMaintenanceSuppression.cache = new Map();
255
+ /*
256
+ * Bumped by every invalidateCache. A lookup captures it BEFORE its query
257
+ * and refuses to write its answer back if it changed in the meantime.
258
+ *
259
+ * Without it the cache has a lost-update window exactly where it hurts: a
260
+ * maintenance event flips state and calls invalidateCache while an
261
+ * in-flight lookup is still awaiting the OLD answer, that lookup then
262
+ * stores the stale set, and the window it was supposed to start (or stop)
263
+ * is wrong for a further full TTL.
264
+ */
265
+ NetworkSiteMaintenanceSuppression.generation = 0;
266
+ export default NetworkSiteMaintenanceSuppression;
267
+ __decorate([
268
+ CaptureSpan(),
269
+ __metadata("design:type", Function),
270
+ __metadata("design:paramtypes", [ObjectID]),
271
+ __metadata("design:returntype", Promise)
272
+ ], NetworkSiteMaintenanceSuppression, "getSiteIdsUnderOngoingMaintenance", null);
273
+ __decorate([
274
+ CaptureSpan(),
275
+ __metadata("design:type", Function),
276
+ __metadata("design:paramtypes", [Object]),
277
+ __metadata("design:returntype", Promise)
278
+ ], NetworkSiteMaintenanceSuppression, "getMaintenanceEventWindows", null);
279
+ //# sourceMappingURL=NetworkSiteMaintenanceSuppression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkSiteMaintenanceSuppression.js","sourceRoot":"","sources":["../../../../../Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.ts"],"names":[],"mappings":"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"}