@oneuptime/common 12.0.25 → 12.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/AnalyticsModels/Index.ts +2 -0
- package/Models/AnalyticsModels/ThreatIntelIndicator.ts +413 -0
- package/Models/DatabaseModels/AlertSeverity.ts +4 -1
- package/Models/DatabaseModels/CephClusterFeed.ts +625 -0
- package/Models/DatabaseModels/CloudResourceFeed.ts +625 -0
- package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +13 -0
- package/Models/DatabaseModels/DetectionRule.ts +9 -3
- package/Models/DatabaseModels/DockerHostFeed.ts +625 -0
- package/Models/DatabaseModels/DockerSwarmClusterFeed.ts +628 -0
- package/Models/DatabaseModels/GoogleSecOpsConnection.ts +9 -3
- package/Models/DatabaseModels/HostFeed.ts +625 -0
- package/Models/DatabaseModels/IncidentSeverity.ts +4 -1
- package/Models/DatabaseModels/Index.ts +22 -0
- package/Models/DatabaseModels/KubernetesClusterFeed.ts +628 -0
- package/Models/DatabaseModels/Monitor.ts +87 -0
- package/Models/DatabaseModels/NetworkDevice.ts +96 -5
- package/Models/DatabaseModels/NetworkDeviceAutoImportRule.ts +92 -6
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +301 -31
- package/Models/DatabaseModels/NetworkSite.ts +120 -0
- package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +1 -0
- package/Models/DatabaseModels/PodmanHostFeed.ts +625 -0
- package/Models/DatabaseModels/ProxmoxClusterFeed.ts +626 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +67 -0
- package/Models/DatabaseModels/ServiceFeed.ts +625 -0
- package/Models/DatabaseModels/TelemetrySourceMap.ts +474 -0
- package/Models/DatabaseModels/ThreatIntelFeed.ts +758 -0
- package/Models/DatabaseModels/UserOnCallLog.ts +1 -0
- package/Models/DatabaseModels/UserTotpAuth.ts +1 -0
- package/Models/DatabaseModels/UserWebAuthn.ts +1 -0
- package/Server/API/AlertAPI.ts +23 -1
- package/Server/API/BaseAPI.ts +14 -3
- package/Server/API/IncidentAPI.ts +41 -1
- package/Server/API/IncidentEpisodeAPI.ts +23 -1
- package/Server/API/MicrosoftTeamsAPI.ts +31 -2
- package/Server/API/ScheduledMaintenanceAPI.ts +23 -1
- package/Server/API/SlackAPI.ts +48 -0
- package/Server/API/TelemetryAPI.ts +167 -42
- package/Server/API/UserOnCallLogTimelineAPI.ts +75 -61
- package/Server/API/UserTotpAuthAPI.ts +67 -1
- package/Server/API/UserWebAuthnAPI.ts +44 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.ts +57 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.ts +49 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.ts +129 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.ts +54 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.ts +64 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.ts +64 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.ts +72 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.ts +489 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +18 -0
- package/Server/Middleware/IdentityRateLimit.ts +53 -3
- package/Server/Services/AIService.ts +181 -41
- package/Server/Services/CephClusterFeedService.ts +99 -0
- package/Server/Services/CephClusterLabelRuleEngineService.ts +29 -0
- package/Server/Services/CephClusterOwnerRuleEngineService.ts +23 -0
- package/Server/Services/CephClusterOwnerTeamService.ts +129 -0
- package/Server/Services/CephClusterOwnerUserService.ts +123 -0
- package/Server/Services/CephClusterService.ts +223 -2
- package/Server/Services/CloudResourceFeedService.ts +99 -0
- package/Server/Services/CloudResourceLabelRuleEngineService.ts +30 -0
- package/Server/Services/CloudResourceOwnerRuleEngineService.ts +33 -0
- package/Server/Services/CloudResourceOwnerTeamService.ts +129 -0
- package/Server/Services/CloudResourceOwnerUserService.ts +123 -0
- package/Server/Services/CloudResourceService.ts +227 -2
- package/Server/Services/DatabaseService.ts +265 -0
- package/Server/Services/DockerHostFeedService.ts +99 -0
- package/Server/Services/DockerHostLabelRuleEngineService.ts +29 -0
- package/Server/Services/DockerHostOwnerRuleEngineService.ts +23 -0
- package/Server/Services/DockerHostOwnerTeamService.ts +129 -0
- package/Server/Services/DockerHostOwnerUserService.ts +123 -0
- package/Server/Services/DockerHostService.ts +227 -2
- package/Server/Services/DockerSwarmClusterFeedService.ts +102 -0
- package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +30 -0
- package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +24 -0
- package/Server/Services/DockerSwarmClusterOwnerTeamService.ts +133 -0
- package/Server/Services/DockerSwarmClusterOwnerUserService.ts +127 -0
- package/Server/Services/DockerSwarmClusterService.ts +229 -2
- package/Server/Services/EnterpriseLicenseService.ts +15 -7
- package/Server/Services/ExceptionAggregationService.ts +12 -2
- package/Server/Services/HostFeedService.ts +99 -0
- package/Server/Services/HostLabelRuleEngineService.ts +29 -0
- package/Server/Services/HostOwnerRuleEngineService.ts +23 -0
- package/Server/Services/HostOwnerTeamService.ts +129 -0
- package/Server/Services/HostOwnerUserService.ts +123 -0
- package/Server/Services/HostService.ts +215 -2
- package/Server/Services/IncidentService.ts +11 -0
- package/Server/Services/Index.ts +24 -0
- package/Server/Services/KubernetesClusterFeedService.ts +99 -0
- package/Server/Services/KubernetesClusterLabelRuleEngineService.ts +30 -0
- package/Server/Services/KubernetesClusterOwnerRuleEngineService.ts +24 -0
- package/Server/Services/KubernetesClusterOwnerTeamService.ts +133 -0
- package/Server/Services/KubernetesClusterOwnerUserService.ts +127 -0
- package/Server/Services/KubernetesClusterService.ts +231 -2
- package/Server/Services/LogAggregationService.ts +23 -280
- package/Server/Services/MetricAggregationService.ts +98 -1
- package/Server/Services/MonitorService.ts +177 -13
- package/Server/Services/MonitorTemplateService.ts +111 -0
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +777 -86
- package/Server/Services/NetworkDeviceAutoImportRuleService.ts +199 -16
- package/Server/Services/NetworkDeviceDiscoveryScanService.ts +1055 -14
- package/Server/Services/NetworkDeviceService.ts +750 -4
- package/Server/Services/NetworkInterfaceService.ts +415 -0
- package/Server/Services/NetworkSiteService.ts +485 -52
- package/Server/Services/PodmanHostFeedService.ts +99 -0
- package/Server/Services/PodmanHostLabelRuleEngineService.ts +29 -0
- package/Server/Services/PodmanHostOwnerRuleEngineService.ts +23 -0
- package/Server/Services/PodmanHostOwnerTeamService.ts +129 -0
- package/Server/Services/PodmanHostOwnerUserService.ts +123 -0
- package/Server/Services/PodmanHostService.ts +227 -2
- package/Server/Services/ProjectService.ts +16 -10
- package/Server/Services/ProxmoxClusterFeedService.ts +99 -0
- package/Server/Services/ProxmoxClusterLabelRuleEngineService.ts +30 -0
- package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +24 -0
- package/Server/Services/ProxmoxClusterOwnerTeamService.ts +131 -0
- package/Server/Services/ProxmoxClusterOwnerUserService.ts +124 -0
- package/Server/Services/ProxmoxClusterService.ts +225 -2
- package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +61 -0
- package/Server/Services/ServiceFeedService.ts +99 -0
- package/Server/Services/ServiceLabelRuleEngineService.ts +29 -0
- package/Server/Services/ServiceOwnerRuleEngineService.ts +26 -0
- package/Server/Services/ServiceOwnerTeamService.ts +129 -0
- package/Server/Services/ServiceOwnerUserService.ts +123 -0
- package/Server/Services/ServiceService.ts +227 -3
- package/Server/Services/StatusPageSubscriberService.ts +7 -0
- package/Server/Services/TelemetryAttributeService.ts +13 -3
- package/Server/Services/TelemetrySourceMapService.ts +307 -0
- package/Server/Services/ThreatIntelFeedService.ts +222 -0
- package/Server/Services/ThreatIntelIndicatorService.ts +428 -0
- package/Server/Services/TraceAggregationService.ts +101 -11
- package/Server/Services/UserService.ts +13 -6
- package/Server/Services/UserTwoFactorBackupCodeService.ts +127 -0
- package/Server/Services/UserWebhookService.ts +11 -2
- package/Server/Static/Brand/README.md +38 -0
- package/Server/Static/Brand/favicons/apple-touch-icon.png +0 -0
- package/Server/Static/Brand/favicons/favicon-16x16.png +0 -0
- package/Server/Static/Brand/favicons/favicon-32x32.png +0 -0
- package/Server/Static/Brand/favicons/favicon.ico +0 -0
- package/Server/Static/Brand/favicons/safari-pinned-tab.svg +31 -0
- package/Server/Static/Brand/hou-wb.svg +1 -0
- package/Server/Static/Brand/oneuptime-logo.svg +1 -0
- package/Server/Static/Brand/ou-wb.svg +1 -0
- package/Server/Static/Vendor/README.md +4 -0
- package/Server/Types/AnalyticsDatabase/ModelPermission.ts +13 -3
- package/Server/Types/Database/AggregateBy.ts +83 -0
- package/Server/Types/Database/AggregateResultUtil.ts +126 -0
- package/Server/Types/Database/JSONColumnQuery.ts +18 -0
- package/Server/Types/Database/QueryHelper.ts +40 -0
- package/Server/Types/Database/QueryUtil.ts +26 -0
- package/Server/Types/Workflow/Components/API/Utils.ts +10 -1
- package/Server/Types/Workflow/Components/JavaScript.ts +8 -0
- package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +9 -0
- package/Server/Utils/AI/SRE/InvestigationGrader.ts +18 -0
- package/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.ts +422 -0
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +176 -0
- package/Server/Utils/DataSource/HttpFetch.ts +18 -0
- package/Server/Utils/Database/RelationIdUtil.ts +42 -0
- package/Server/Utils/Marketing/MarketingEventUtil.ts +38 -9
- package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +34 -3
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +9 -1
- package/Server/Utils/Monitor/Criteria/SyntheticMonitor.ts +28 -10
- package/Server/Utils/Monitor/MonitorAlert.ts +541 -332
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +330 -64
- package/Server/Utils/Monitor/MonitorIncident.ts +640 -434
- package/Server/Utils/Monitor/MonitorResource.ts +226 -49
- package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +46 -3
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +23 -102
- package/Server/Utils/Monitor/PerEntityCriteriaFanOut.ts +329 -0
- package/Server/Utils/NetworkDevice/DeviceHealthAggregation.ts +427 -0
- package/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.ts +310 -0
- package/Server/Utils/OnCallNotificationContext.ts +686 -0
- package/Server/Utils/PrivateNetworkWebhookConfig.ts +549 -0
- package/Server/Utils/ResourceFeed/ResourceFeedUtil.ts +139 -0
- package/Server/Utils/Response.ts +11 -1
- package/Server/Utils/SSRFProtection.ts +230 -60
- package/Server/Utils/SecurityEvent/ConnectorErrorMessage.ts +106 -0
- package/Server/Utils/SecurityEvent/DetectionRuleEvaluator.ts +84 -284
- package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.ts +47 -20
- package/Server/Utils/SecurityEvent/SecurityEventAlerting.ts +318 -0
- package/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.ts +199 -0
- package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.ts +252 -0
- package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.ts +739 -0
- package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.ts +533 -0
- package/Server/Utils/StartServer.ts +83 -56
- package/Server/Utils/StatusPageSubscriberWebhook.ts +3 -0
- package/Server/Utils/Telemetry/SourceMapResolver.ts +480 -0
- package/Server/Utils/TwoFactorBackupCodeNotification.ts +106 -0
- package/Server/Utils/VM/VMAPI.ts +3 -0
- package/Server/Utils/VM/VMRunner.ts +27 -1
- package/Server/Utils/VendorAssets.ts +42 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +136 -6
- package/Server/Views/AcknowledgeUserOnCallNotification.ejs +11 -9
- package/Server/Views/Partials/Head.ejs +9 -9
- package/Server/Views/Partials/OnCallNotificationDetails.ejs +48 -0
- package/Server/Views/ViewMessage.ejs +11 -9
- package/Tests/App/Accounts/LoginTwoFactorRecovery.test.tsx +972 -0
- package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +401 -0
- package/Tests/App/Dashboard/DiscoveryScanEditForm.test.tsx +707 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +1908 -18
- package/Tests/App/Dashboard/ResourceFeed.test.tsx +230 -0
- package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +216 -0
- package/Tests/App/Dashboard/TopologyAddToMonitoring.test.tsx +192 -0
- package/Tests/App/Dashboard/WorkspaceNotificationRuleConditions.test.tsx +439 -0
- package/Tests/Models/DatabaseModels/DateColumnDeserialization.test.ts +182 -0
- package/Tests/Models/DatabaseModels/RelationColumnModelTypeCoverage.test.ts +82 -0
- package/Tests/Models/DatabaseModels/ResourceFeedModels.test.ts +398 -0
- package/Tests/Models/DiscoveryScanNameColumn.test.ts +151 -16
- package/Tests/Models/DiscoveryScanSnmpEnabledColumn.test.ts +593 -0
- package/Tests/Models/NetworkDeviceCreateContract.test.ts +102 -0
- package/Tests/Server/API/AIGenerationProjectAIToggle.test.ts +607 -0
- package/Tests/Server/API/AIGenerationRequestBudget.test.ts +355 -0
- package/Tests/Server/API/AIKillSwitchBackstop.test.ts +602 -0
- package/Tests/Server/API/BaseAPIUpdateDateColumns.test.ts +154 -0
- package/Tests/Server/API/MicrosoftTeamsBotTestEndpoint.test.ts +335 -0
- package/Tests/Server/API/UserOnCallLogTimelineAcknowledgePage.test.ts +611 -0
- package/Tests/Server/API/UserTotpAuthAPI.test.ts +498 -4
- package/Tests/Server/API/UserWebAuthnBackupCodeMinting.test.ts +682 -0
- package/Tests/Server/Infrastructure/ExampleDockerfiles.test.ts +595 -0
- package/Tests/Server/Services/AIServiceDailyBudget.test.ts +9 -0
- package/Tests/Server/Services/AIServiceProjectAccess.test.ts +6 -0
- package/Tests/Server/Services/AutoImportScanCredentialSelect.test.ts +18 -0
- package/Tests/Server/Services/DatabaseServiceAggregateBy.test.ts +590 -0
- package/Tests/Server/Services/DatabaseServiceUpdateWriteRouting.test.ts +12 -0
- package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +162 -26
- package/Tests/Server/Services/EnterpriseLicenseServiceCreate.test.ts +292 -0
- package/Tests/Server/Services/FeedRetentionConsistency.test.ts +119 -12
- package/Tests/Server/Services/LogAggregationAttributeOperators.test.ts +109 -0
- package/Tests/Server/Services/MetricAggregationAttributeOperators.test.ts +170 -0
- package/Tests/Server/Services/MonitorTemplateServiceNetworkDeviceSync.test.ts +383 -0
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +997 -3
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleService.test.ts +830 -0
- package/Tests/Server/Services/NetworkDeviceAutoMonitorLifecycle.test.ts +528 -0
- package/Tests/Server/Services/NetworkDeviceDiscoveryScanService.test.ts +3141 -1
- package/Tests/Server/Services/NetworkDeviceRegisteredHostnames.test.ts +1023 -0
- package/Tests/Server/Services/NetworkDeviceSiteAssignmentRuleSkip.test.ts +728 -0
- package/Tests/Server/Services/NetworkInterfaceServiceUpsert.test.ts +795 -0
- package/Tests/Server/Services/NetworkSiteRollupPolicyAndMaintenance.test.ts +903 -0
- package/Tests/Server/Services/NetworkSiteService.test.ts +165 -24
- package/Tests/Server/Services/ProjectServiceChangePlan.test.ts +5 -3
- package/Tests/Server/Services/ProjectServiceCreateSubscriptionStarted.test.ts +5 -2
- package/Tests/Server/Services/ResourceCreationFeedWrites.test.ts +304 -0
- package/Tests/Server/Services/ResourceFeedServices.test.ts +269 -0
- package/Tests/Server/Services/ResourceOwnerFeedWrites.test.ts +245 -0
- package/Tests/Server/Services/SecurityEventLastErrorColumnWidth.test.ts +792 -0
- package/Tests/Server/Services/TelemetrySourceMapService.test.ts +483 -0
- package/Tests/Server/Services/ThreatIntelFeedService.test.ts +351 -0
- package/Tests/Server/Services/ThreatIntelIndicatorService.test.ts +366 -0
- package/Tests/Server/Services/TraceAggregationAttributeOperators.test.ts +507 -0
- package/Tests/Server/Services/UserTwoFactorBackupCodeGenerateIfNone.test.ts +705 -0
- package/Tests/Server/Services/WorkspaceNotificationRuleOnCallDutyPolicy.test.ts +306 -0
- package/Tests/Server/Types/Database/AggregateResultUtil.test.ts +386 -0
- package/Tests/Server/Types/Database/Permissions/SelectRejectionMessageContract.test.ts +424 -0
- package/Tests/Server/Types/Database/QueryHelperWildcard.test.ts +142 -0
- package/Tests/Server/Types/Workflow/Components/ApiComponentPrivateNetwork.test.ts +163 -0
- package/Tests/Server/Types/Workflow/Components/JavaScriptPrivateNetwork.test.ts +124 -0
- package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +5 -0
- package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +39 -1
- package/Tests/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.test.ts +338 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGeneratorWildcard.test.ts +383 -0
- package/Tests/Server/Utils/Marketing/EmittedMarketingEvent.ts +23 -0
- package/Tests/Server/Utils/Marketing/MarketingEventUtil.test.ts +51 -0
- package/Tests/Server/Utils/Monitor/Criteria/SyntheticMonitorCriteria.test.ts +259 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPerSeriesFanout.test.ts +557 -0
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +12 -2
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkLogWritePath.test.ts +404 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +8 -2
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +125 -98
- package/Tests/Server/Utils/Monitor/PerEntityCriteriaFanOut.test.ts +444 -0
- package/Tests/Server/Utils/Monitor/PerSeriesSecondEntityAlerting.test.ts +1112 -0
- package/Tests/Server/Utils/NetworkDevice/DeviceHealthAggregation.test.ts +717 -0
- package/Tests/Server/Utils/NetworkDevice/RulePatternValidator.test.ts +78 -0
- package/Tests/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.test.ts +363 -0
- package/Tests/Server/Utils/OfflineAssetHygiene.test.ts +35 -0
- package/Tests/Server/Utils/OnCallNotificationContext.test.ts +908 -0
- package/Tests/Server/Utils/PrivateNetworkWebhookConfig.test.ts +423 -0
- package/Tests/Server/Utils/ResourceFeed/ResourceFeedUtil.test.ts +191 -0
- package/Tests/Server/Utils/SSRFProtectionPrivateNetwork.test.ts +597 -0
- package/Tests/Server/Utils/SecurityEvent/ConnectorErrorMessage.test.ts +819 -0
- package/Tests/Server/Utils/SecurityEvent/DetectionRuleEvaluator.test.ts +381 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPoller.test.ts +417 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerFailureTaxonomy.test.ts +819 -0
- package/Tests/Server/Utils/SecurityEvent/SecurityEventAlerting.test.ts +246 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.test.ts +282 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.test.ts +312 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.test.ts +854 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.test.ts +437 -0
- package/Tests/Server/Utils/StartServerErrorStatus.test.ts +225 -0
- package/Tests/Server/Utils/StatusPage/MonitorRulePatternValidator.test.ts +62 -0
- package/Tests/Server/Utils/StatusPageSubscriberWebhookPrivateNetwork.test.ts +119 -0
- package/Tests/Server/Utils/Telemetry/SourceMapResolver.test.ts +542 -0
- package/Tests/Server/Utils/TwoFactorBackupCodeNotification.test.ts +272 -0
- package/Tests/Server/Utils/VM/VMRunnerPrivateNetworkWiring.test.ts +111 -0
- package/Tests/Server/Utils/VendorAssets.test.ts +117 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelSend.test.ts +101 -4
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsInstallStateDiagnostics.test.ts +922 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsRosterDiagnosticMessages.test.ts +642 -0
- package/Tests/Server/Views/OnCallAcknowledgePage.test.ts +430 -0
- package/Tests/Types/API/HostnameAuthorityParsing.test.ts +1 -0
- package/Tests/Types/API/URLMailtoQueryString.test.ts +439 -0
- package/Tests/Types/API/URLQueryString.test.ts +481 -0
- package/Tests/Types/API/URLRouteQuerySeparation.test.ts +491 -0
- package/Tests/Types/BaseDatabase/Wildcard.test.ts +163 -0
- package/Tests/Types/BaseDatabase/WildcardPattern.test.ts +149 -0
- package/Tests/Types/Database/DateColumnValue.test.ts +265 -0
- package/Tests/Types/DateToIsoStringOrNull.test.ts +67 -0
- package/Tests/Types/Log/LogQueryToFilter.test.ts +218 -43
- package/Tests/Types/Monitor/KubernetesTemplateGroupByKeys.test.ts +225 -0
- package/Tests/Types/Monitor/TemplateGroupByKeys.test.ts +296 -0
- package/Tests/Types/NetworkAutomation/RuleRunResult.test.ts +102 -0
- package/Tests/Types/NetworkAutomation/RuleRunResultDescribe.test.ts +145 -0
- package/Tests/Types/NetworkSite/SiteHealthRollupPolicy.test.ts +58 -0
- package/Tests/Types/SerializableObjectDictionaryImportCycle.test.ts +15 -0
- package/Tests/Types/Telemetry/TelemetrySearchQuery.test.ts +620 -0
- package/Tests/Types/WhatsApp/WhatsAppTemplates.test.ts +110 -0
- package/Tests/Types/Workspace/NotificationRuleConditionUtil.test.ts +76 -6
- package/Tests/Types/Workspace/NotificationRules/NotificationRuleCondition.test.ts +16 -4
- package/Tests/Types/Workspace/NotificationRules/OnCallDutyPolicyConditions.test.ts +669 -0
- package/Tests/UI/Components/DictionaryFilterOperatorWildcard.test.ts +175 -0
- package/Tests/UI/Components/IconOpticalSize.test.tsx +377 -0
- package/Tests/UI/Components/LogsHistogramDragTooltip.test.tsx +393 -0
- package/Tests/UI/Components/LogsViewerHistogramZoom.test.tsx +248 -0
- package/Tests/UI/Components/TelemetryHistogramDragTooltip.test.tsx +205 -0
- package/Tests/UI/Components/UseHistogramZoom.test.tsx +262 -0
- package/Tests/UI/MicrosoftTeams/MicrosoftTeamsChatsCardInstallGuidance.test.tsx +332 -0
- package/Tests/UI/MicrosoftTeams/MicrosoftTeamsInstallGuidanceContent.test.tsx +643 -0
- package/Tests/Utils/Monitor/InterfaceInventoryUtil.test.ts +824 -0
- package/Tests/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.test.ts +626 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +718 -0
- package/Tests/Utils/NetworkDevice/DeviceHealthStateUtil.test.ts +59 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +287 -2
- package/Tests/Utils/NetworkDiscovery/DiscoveryImportEligibility.test.ts +73 -0
- package/Tests/Utils/NetworkDiscovery/PingMonitorBuilder.test.ts +317 -0
- package/Tests/Utils/NetworkDiscovery/RescanIntervalUtil.test.ts +262 -0
- package/Tests/Utils/NetworkDiscovery/ScanModeUtil.test.ts +474 -0
- package/Tests/Utils/NetworkDiscovery/SnmpScanConfigUtil.test.ts +2442 -0
- package/Tests/Utils/NetworkSite/SiteMaintenanceUtil.test.ts +188 -0
- package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +522 -0
- package/Tests/Utils/NetworkSite/SiteUptimeUtil.test.ts +694 -0
- package/Tests/Utils/SecurityEvent/ThreatIntel/StixPatternParser.test.ts +281 -0
- package/Tests/Utils/Telemetry/CrossSignalScope.test.ts +87 -67
- package/Types/API/URL.ts +100 -28
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +8 -0
- package/Types/BaseDatabase/NotWildcard.ts +86 -0
- package/Types/BaseDatabase/Wildcard.ts +89 -0
- package/Types/BaseDatabase/WildcardPattern.ts +176 -0
- package/Types/Database/DateColumnValue.ts +184 -0
- package/Types/Database/TableColumn.ts +40 -5
- package/Types/Date.ts +37 -0
- package/Types/Email/EmailTemplateType.ts +1 -0
- package/Types/JSON.ts +8 -0
- package/Types/Log/LogQueryToFilter.ts +167 -129
- package/Types/Monitor/DockerAlertTemplates.ts +43 -12
- package/Types/Monitor/HostAlertTemplates.ts +31 -3
- package/Types/Monitor/KubernetesAlertTemplates.ts +98 -0
- package/Types/Monitor/MonitorStep.ts +49 -0
- package/Types/Monitor/PodmanAlertTemplates.ts +39 -12
- package/Types/Monitor/SnmpMonitor/CdpNeighbor.ts +14 -0
- package/Types/Monitor/SnmpMonitor/LldpNeighbor.ts +11 -0
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +11 -4
- package/Types/NetworkAutomation/RuleRunResult.ts +191 -2
- package/Types/NetworkSite/SiteHealthRollupPolicy.ts +96 -0
- package/Types/Permission.ts +411 -0
- package/Types/Probe/ProbeApiIngestResponse.ts +42 -0
- package/Types/SecurityEvent/ThreatIntelConstants.ts +118 -0
- package/Types/SerializableObjectDictionary.ts +8 -0
- package/Types/Telemetry/SourceMap.ts +56 -0
- package/Types/Telemetry/TelemetrySearchQuery.ts +949 -0
- package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +12 -1
- package/UI/Components/Charts/Utils/useHistogramZoom.ts +101 -0
- package/UI/Components/Dictionary/DictionaryFilterOperator.ts +83 -0
- package/UI/Components/Icon/Icon.tsx +28 -1
- package/UI/Components/LogsViewer/LogsViewer.tsx +19 -3
- package/UI/Components/LogsViewer/components/LogSearchBar.tsx +26 -4
- package/UI/Components/LogsViewer/components/LogSearchHelp.tsx +34 -16
- package/UI/Components/LogsViewer/components/LogsHistogram.tsx +52 -1
- package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +18 -2
- package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +52 -1
- package/UI/Components/TelemetryViewer/components/TelemetrySearchBar.tsx +15 -2
- package/Utils/Metrics/MetricExplorerUrl.ts +77 -15
- package/Utils/Monitor/InterfaceInventoryUtil.ts +251 -0
- package/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.ts +333 -0
- package/Utils/Monitor/NetworkTopologyUtil.ts +249 -28
- package/Utils/NetworkDevice/DeviceHealthStateUtil.ts +14 -6
- package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +2 -0
- package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +49 -18
- package/Utils/NetworkDiscovery/PingMonitorBuilder.ts +215 -0
- package/Utils/NetworkDiscovery/RescanIntervalUtil.ts +148 -0
- package/Utils/NetworkDiscovery/ScanModeUtil.ts +105 -0
- package/Utils/NetworkDiscovery/SnmpScanConfigUtil.ts +827 -0
- package/Utils/NetworkSite/SiteMaintenanceUtil.ts +110 -0
- package/Utils/NetworkSite/SiteStatusRollupUtil.ts +350 -19
- package/Utils/NetworkSite/SiteUptimeUtil.ts +422 -21
- package/Utils/SecurityEvent/ThreatIntel/StixPatternParser.ts +383 -0
- package/Utils/Telemetry/CrossSignalScope.ts +37 -39
- package/build/dist/Models/AnalyticsModels/Index.js +2 -0
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js +325 -0
- package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AlertSeverity.js +4 -1
- package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CephClusterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/CephClusterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/CloudResourceFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +11 -0
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DetectionRule.js +9 -3
- package/build/dist/Models/DatabaseModels/DetectionRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHostFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/DockerHostFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js +9 -3
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js.map +1 -1
- package/build/dist/Models/DatabaseModels/HostFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/HostFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentSeverity.js +4 -1
- package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +22 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/KubernetesClusterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Monitor.js +81 -0
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +103 -7
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +91 -6
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +276 -31
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSite.js +124 -1
- package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +1 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/PodmanHostFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/PodmanHostFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +66 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/ServiceFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TelemetrySourceMap.js +496 -0
- package/build/dist/Models/DatabaseModels/TelemetrySourceMap.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js +800 -0
- package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js +1 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserTotpAuth.js +1 -0
- package/build/dist/Models/DatabaseModels/UserTotpAuth.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js +1 -0
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js.map +1 -1
- package/build/dist/Server/API/AlertAPI.js +18 -1
- package/build/dist/Server/API/AlertAPI.js.map +1 -1
- package/build/dist/Server/API/BaseAPI.js +8 -1
- package/build/dist/Server/API/BaseAPI.js.map +1 -1
- package/build/dist/Server/API/IncidentAPI.js +35 -1
- package/build/dist/Server/API/IncidentAPI.js.map +1 -1
- package/build/dist/Server/API/IncidentEpisodeAPI.js +18 -1
- package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
- package/build/dist/Server/API/MicrosoftTeamsAPI.js +30 -2
- package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
- package/build/dist/Server/API/ScheduledMaintenanceAPI.js +18 -1
- package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
- package/build/dist/Server/API/SlackAPI.js +45 -0
- package/build/dist/Server/API/SlackAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +100 -35
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/API/UserOnCallLogTimelineAPI.js +64 -59
- package/build/dist/Server/API/UserOnCallLogTimelineAPI.js.map +1 -1
- package/build/dist/Server/API/UserTotpAuthAPI.js +65 -1
- package/build/dist/Server/API/UserTotpAuthAPI.js.map +1 -1
- package/build/dist/Server/API/UserWebAuthnAPI.js +42 -1
- package/build/dist/Server/API/UserWebAuthnAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.js +26 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.js +88 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.js +39 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.js +34 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.js +32 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.js +61 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.js +23 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.js +179 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/IdentityRateLimit.js +40 -3
- package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
- package/build/dist/Server/Services/AIService.js +177 -30
- package/build/dist/Server/Services/AIService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterFeedService.js +89 -0
- package/build/dist/Server/Services/CephClusterFeedService.js.map +1 -0
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/CephClusterOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerUserService.js +113 -0
- package/build/dist/Server/Services/CephClusterOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterService.js +175 -1
- package/build/dist/Server/Services/CephClusterService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceFeedService.js +89 -0
- package/build/dist/Server/Services/CloudResourceFeedService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +28 -3
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/CloudResourceOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerUserService.js +113 -0
- package/build/dist/Server/Services/CloudResourceOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceService.js +177 -1
- package/build/dist/Server/Services/CloudResourceService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +201 -0
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostFeedService.js +89 -0
- package/build/dist/Server/Services/DockerHostFeedService.js.map +1 -0
- package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/DockerHostOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerUserService.js +113 -0
- package/build/dist/Server/Services/DockerHostOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostService.js +177 -1
- package/build/dist/Server/Services/DockerHostService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterFeedService.js +90 -0
- package/build/dist/Server/Services/DockerSwarmClusterFeedService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js +113 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterService.js +175 -1
- package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseService.js +40 -30
- package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
- package/build/dist/Server/Services/ExceptionAggregationService.js +8 -2
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/HostFeedService.js +89 -0
- package/build/dist/Server/Services/HostFeedService.js.map +1 -0
- package/build/dist/Server/Services/HostLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/HostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/HostOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerUserService.js +113 -0
- package/build/dist/Server/Services/HostOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +175 -1
- package/build/dist/Server/Services/HostService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +10 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +24 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterFeedService.js +89 -0
- package/build/dist/Server/Services/KubernetesClusterFeedService.js.map +1 -0
- package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js +113 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterService.js +177 -1
- package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +19 -196
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +59 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +115 -13
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +86 -0
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +561 -67
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +130 -16
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +850 -8
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceService.js +594 -5
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkInterfaceService.js +306 -0
- package/build/dist/Server/Services/NetworkInterfaceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteService.js +408 -47
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostFeedService.js +89 -0
- package/build/dist/Server/Services/PodmanHostFeedService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/PodmanHostOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerUserService.js +113 -0
- package/build/dist/Server/Services/PodmanHostOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostService.js +177 -1
- package/build/dist/Server/Services/PodmanHostService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +40 -30
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterFeedService.js +89 -0
- package/build/dist/Server/Services/ProxmoxClusterFeedService.js.map +1 -0
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js +113 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterService.js +175 -1
- package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +56 -0
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceFeedService.js +89 -0
- package/build/dist/Server/Services/ServiceFeedService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/ServiceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +24 -0
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/ServiceOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerUserService.js +113 -0
- package/build/dist/Server/Services/ServiceOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/ServiceService.js +173 -2
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageSubscriberService.js +7 -0
- package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryAttributeService.js +9 -3
- package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
- package/build/dist/Server/Services/TelemetrySourceMapService.js +265 -0
- package/build/dist/Server/Services/TelemetrySourceMapService.js.map +1 -0
- package/build/dist/Server/Services/ThreatIntelFeedService.js +157 -0
- package/build/dist/Server/Services/ThreatIntelFeedService.js.map +1 -0
- package/build/dist/Server/Services/ThreatIntelIndicatorService.js +276 -0
- package/build/dist/Server/Services/ThreatIntelIndicatorService.js.map +1 -0
- package/build/dist/Server/Services/TraceAggregationService.js +62 -6
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +22 -13
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/UserTwoFactorBackupCodeService.js +120 -0
- package/build/dist/Server/Services/UserTwoFactorBackupCodeService.js.map +1 -1
- package/build/dist/Server/Services/UserWebhookService.js +11 -2
- package/build/dist/Server/Services/UserWebhookService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +12 -1
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/AggregateBy.js +2 -0
- package/build/dist/Server/Types/Database/AggregateBy.js.map +1 -0
- package/build/dist/Server/Types/Database/AggregateResultUtil.js +90 -0
- package/build/dist/Server/Types/Database/AggregateResultUtil.js.map +1 -0
- package/build/dist/Server/Types/Database/JSONColumnQuery.js +14 -0
- package/build/dist/Server/Types/Database/JSONColumnQuery.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +42 -0
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryUtil.js +18 -0
- package/build/dist/Server/Types/Database/QueryUtil.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Utils.js +10 -1
- package/build/dist/Server/Types/Workflow/Components/API/Utils.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/JavaScript.js +8 -0
- package/build/dist/Server/Types/Workflow/Components/JavaScript.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +8 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +15 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.js +266 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.js.map +1 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +134 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/DataSource/HttpFetch.js +8 -0
- package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -1
- package/build/dist/Server/Utils/Database/RelationIdUtil.js +31 -0
- package/build/dist/Server/Utils/Database/RelationIdUtil.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js +26 -8
- package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +42 -17
- package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +9 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SyntheticMonitor.js +15 -2
- package/build/dist/Server/Utils/Monitor/Criteria/SyntheticMonitor.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +386 -271
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +278 -64
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +469 -350
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +183 -44
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +46 -3
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +18 -91
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/PerEntityCriteriaFanOut.js +194 -0
- package/build/dist/Server/Utils/Monitor/PerEntityCriteriaFanOut.js.map +1 -0
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js +332 -0
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js.map +1 -0
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.js +279 -0
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.js.map +1 -0
- package/build/dist/Server/Utils/OnCallNotificationContext.js +415 -0
- package/build/dist/Server/Utils/OnCallNotificationContext.js.map +1 -0
- package/build/dist/Server/Utils/PrivateNetworkWebhookConfig.js +424 -0
- package/build/dist/Server/Utils/PrivateNetworkWebhookConfig.js.map +1 -0
- package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js +108 -0
- package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js.map +1 -0
- package/build/dist/Server/Utils/Response.js +12 -1
- package/build/dist/Server/Utils/Response.js.map +1 -1
- package/build/dist/Server/Utils/SSRFProtection.js +160 -58
- package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js +89 -0
- package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js +75 -234
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +41 -16
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/SecurityEventAlerting.js +217 -0
- package/build/dist/Server/Utils/SecurityEvent/SecurityEventAlerting.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.js +103 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.js +168 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.js +527 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.js +376 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.js.map +1 -0
- package/build/dist/Server/Utils/StartServer.js +70 -44
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js +3 -0
- package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js +327 -0
- package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js.map +1 -0
- package/build/dist/Server/Utils/TwoFactorBackupCodeNotification.js +84 -0
- package/build/dist/Server/Utils/TwoFactorBackupCodeNotification.js.map +1 -0
- package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
- package/build/dist/Server/Utils/VM/VMRunner.js +10 -1
- package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
- package/build/dist/Server/Utils/VendorAssets.js +29 -0
- package/build/dist/Server/Utils/VendorAssets.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +121 -6
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Types/API/URL.js +88 -27
- package/build/dist/Types/API/URL.js.map +1 -1
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +8 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
- package/build/dist/Types/BaseDatabase/NotWildcard.js +72 -0
- package/build/dist/Types/BaseDatabase/NotWildcard.js.map +1 -0
- package/build/dist/Types/BaseDatabase/Wildcard.js +75 -0
- package/build/dist/Types/BaseDatabase/Wildcard.js.map +1 -0
- package/build/dist/Types/BaseDatabase/WildcardPattern.js +137 -0
- package/build/dist/Types/BaseDatabase/WildcardPattern.js.map +1 -0
- package/build/dist/Types/Database/DateColumnValue.js +125 -0
- package/build/dist/Types/Database/DateColumnValue.js.map +1 -0
- package/build/dist/Types/Database/TableColumn.js +18 -2
- package/build/dist/Types/Database/TableColumn.js.map +1 -1
- package/build/dist/Types/Date.js +31 -0
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/JSON.js +2 -0
- package/build/dist/Types/JSON.js.map +1 -1
- package/build/dist/Types/Log/LogQueryToFilter.js +111 -108
- package/build/dist/Types/Log/LogQueryToFilter.js.map +1 -1
- package/build/dist/Types/Monitor/DockerAlertTemplates.js +40 -16
- package/build/dist/Types/Monitor/DockerAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/HostAlertTemplates.js +29 -7
- package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +98 -4
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +40 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js +36 -16
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -1
- package/build/dist/Types/NetworkAutomation/RuleRunResult.js +90 -0
- package/build/dist/Types/NetworkAutomation/RuleRunResult.js.map +1 -1
- package/build/dist/Types/NetworkSite/SiteHealthRollupPolicy.js +84 -0
- package/build/dist/Types/NetworkSite/SiteHealthRollupPolicy.js.map +1 -0
- package/build/dist/Types/Permission.js +354 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/SecurityEvent/ThreatIntelConstants.js +100 -0
- package/build/dist/Types/SecurityEvent/ThreatIntelConstants.js.map +1 -0
- package/build/dist/Types/SerializableObjectDictionary.js +8 -0
- package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
- package/build/dist/Types/Telemetry/SourceMap.js +9 -0
- package/build/dist/Types/Telemetry/SourceMap.js.map +1 -0
- package/build/dist/Types/Telemetry/TelemetrySearchQuery.js +661 -0
- package/build/dist/Types/Telemetry/TelemetrySearchQuery.js.map +1 -0
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +12 -1
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/useHistogramZoom.js +47 -0
- package/build/dist/UI/Components/Charts/Utils/useHistogramZoom.js.map +1 -0
- package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js +67 -0
- package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +28 -1
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +15 -3
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +25 -4
- package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js +36 -16
- package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js +33 -5
- package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +14 -2
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +33 -5
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js +14 -2
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js.map +1 -1
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js +54 -9
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js.map +1 -1
- package/build/dist/Utils/Monitor/InterfaceInventoryUtil.js +128 -0
- package/build/dist/Utils/Monitor/InterfaceInventoryUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js +190 -0
- package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +206 -28
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js +14 -7
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +34 -18
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js +163 -0
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/RescanIntervalUtil.js +99 -0
- package/build/dist/Utils/NetworkDiscovery/RescanIntervalUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/ScanModeUtil.js +85 -0
- package/build/dist/Utils/NetworkDiscovery/ScanModeUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/SnmpScanConfigUtil.js +560 -0
- package/build/dist/Utils/NetworkDiscovery/SnmpScanConfigUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteMaintenanceUtil.js +56 -0
- package/build/dist/Utils/NetworkSite/SiteMaintenanceUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +185 -10
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
- package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js +248 -21
- package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js.map +1 -1
- package/build/dist/Utils/SecurityEvent/ThreatIntel/StixPatternParser.js +255 -0
- package/build/dist/Utils/SecurityEvent/ThreatIntel/StixPatternParser.js.map +1 -0
- package/build/dist/Utils/Telemetry/CrossSignalScope.js +27 -30
- package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -1
- package/package.json +2 -1
- package/Tests/Types/Log/LogQueryParser.test.ts +0 -186
- package/Types/Log/LogQueryParser.ts +0 -252
- package/build/dist/Types/Log/LogQueryParser.js +0 -200
- package/build/dist/Types/Log/LogQueryParser.js.map +0 -1
|
@@ -61,15 +61,18 @@ export default class MonitorIncident {
|
|
|
61
61
|
},
|
|
62
62
|
});
|
|
63
63
|
// check if should close the incident.
|
|
64
|
+
const resolvedIncidentIds = new Set();
|
|
64
65
|
for (const openIncident of openIncidents) {
|
|
65
66
|
const shouldClose = this.shouldCloseIncident({
|
|
66
67
|
openIncident,
|
|
67
68
|
autoResolveCriteriaInstanceIdIncidentIdsDictionary: input.autoResolveCriteriaInstanceIdIncidentIdsDictionary,
|
|
68
69
|
criteriaInstance: input.criteriaInstance,
|
|
69
70
|
breachingSeriesFingerprints: input.breachingSeriesFingerprints,
|
|
71
|
+
breachingSeriesFingerprintsByCriteriaId: input.breachingSeriesFingerprintsByCriteriaId,
|
|
70
72
|
disableSeriesAbsenceResolution: input.disableSeriesAbsenceResolution,
|
|
71
73
|
});
|
|
72
74
|
if (shouldClose) {
|
|
75
|
+
resolvedIncidentIds.add(openIncident.id.toString());
|
|
73
76
|
// then resolve incident.
|
|
74
77
|
await this.resolveOpenIncident({
|
|
75
78
|
openIncident: openIncident,
|
|
@@ -88,7 +91,19 @@ export default class MonitorIncident {
|
|
|
88
91
|
});
|
|
89
92
|
}
|
|
90
93
|
}
|
|
91
|
-
|
|
94
|
+
/*
|
|
95
|
+
* Return the incidents still open AFTER this pass. The create path
|
|
96
|
+
* dedupes against this list, and an incident this pass just resolved
|
|
97
|
+
* must not count as "already active" — that combination resolved a
|
|
98
|
+
* stale whole-monitor incident and then refused to create the
|
|
99
|
+
* per-series incidents meant to replace it.
|
|
100
|
+
*/
|
|
101
|
+
if (resolvedIncidentIds.size === 0) {
|
|
102
|
+
return openIncidents;
|
|
103
|
+
}
|
|
104
|
+
return openIncidents.filter((openIncident) => {
|
|
105
|
+
return !resolvedIncidentIds.has(openIncident.id.toString());
|
|
106
|
+
});
|
|
92
107
|
}
|
|
93
108
|
/**
|
|
94
109
|
* Event-driven (incoming-request / webhook) resolution: resolve the
|
|
@@ -163,7 +178,7 @@ export default class MonitorIncident {
|
|
|
163
178
|
}
|
|
164
179
|
}
|
|
165
180
|
static async criteriaMetCreateIncidentsAndUpdateMonitorStatus(input) {
|
|
166
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16;
|
|
181
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19;
|
|
167
182
|
const incidentLogAttributes = {
|
|
168
183
|
projectId: (_a = input.monitor.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
169
184
|
};
|
|
@@ -180,19 +195,37 @@ export default class MonitorIncident {
|
|
|
180
195
|
}))
|
|
181
196
|
: undefined;
|
|
182
197
|
// check active incidents and if there are open incidents, do not cretae anothr incident.
|
|
183
|
-
const openIncidents =
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
198
|
+
const openIncidents = input.openIncidents !== undefined
|
|
199
|
+
? input.openIncidents
|
|
200
|
+
: await this.checkOpenIncidentsAndCloseIfResolved({
|
|
201
|
+
monitorId: input.monitor.id,
|
|
202
|
+
autoResolveCriteriaInstanceIdIncidentIdsDictionary: input.autoResolveCriteriaInstanceIdIncidentIdsDictionary,
|
|
203
|
+
rootCause: input.rootCause,
|
|
204
|
+
criteriaInstance: input.criteriaInstance,
|
|
205
|
+
dataToProcess: input.dataToProcess,
|
|
206
|
+
evaluationSummary: input.evaluationSummary,
|
|
207
|
+
breachingSeriesFingerprints,
|
|
208
|
+
breachingSeriesFingerprintsByCriteriaId: input.breachingSeriesFingerprintsByCriteriaId,
|
|
209
|
+
disableSeriesAbsenceResolution: input.disableSeriesAbsenceResolution,
|
|
210
|
+
});
|
|
193
211
|
if (!((_c = input.criteriaInstance.data) === null || _c === void 0 ? void 0 : _c.createIncidents)) {
|
|
194
212
|
return;
|
|
195
213
|
}
|
|
214
|
+
/*
|
|
215
|
+
* Checked once, up front. It used to be tested deep inside the
|
|
216
|
+
* template x series loops with a `return`, which on a grouped
|
|
217
|
+
* monitor abandoned every series after the first.
|
|
218
|
+
*/
|
|
219
|
+
if (DisableAutomaticIncidentCreation) {
|
|
220
|
+
(_d = input.evaluationSummary) === null || _d === void 0 ? void 0 : _d.events.push({
|
|
221
|
+
type: "incident-skipped",
|
|
222
|
+
title: "Incident creation skipped",
|
|
223
|
+
message: "Automatic incident creation is disabled by environment configuration.",
|
|
224
|
+
relatedCriteriaId: (_e = input.criteriaInstance.data) === null || _e === void 0 ? void 0 : _e.id,
|
|
225
|
+
at: OneUptimeDate.getCurrentDate(),
|
|
226
|
+
});
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
196
229
|
/*
|
|
197
230
|
* Alert-dependency suppression: a parent monitor is in a suppressing
|
|
198
231
|
* status (offline by default), so skip creating any incident for this
|
|
@@ -200,14 +233,14 @@ export default class MonitorIncident {
|
|
|
200
233
|
* purpose — an incident raised before the parent went down must still
|
|
201
234
|
* resolve normally; only new creation is silenced.
|
|
202
235
|
*/
|
|
203
|
-
if ((
|
|
236
|
+
if ((_f = input.dependencySuppression) === null || _f === void 0 ? void 0 : _f.isSuppressed) {
|
|
204
237
|
const suppressionReason = MonitorDependencySuppression.buildSuppressionReason(input.dependencySuppression.suppressingParents);
|
|
205
|
-
logger.debug(`${(
|
|
206
|
-
(
|
|
238
|
+
logger.debug(`${(_g = input.monitor.id) === null || _g === void 0 ? void 0 : _g.toString()} - Skipping incident creation: ${suppressionReason}.`, incidentLogAttributes);
|
|
239
|
+
(_h = input.evaluationSummary) === null || _h === void 0 ? void 0 : _h.events.push({
|
|
207
240
|
type: "incident-skipped",
|
|
208
241
|
title: "Incident suppressed by monitor dependency",
|
|
209
242
|
message: `Skipped creating incidents because ${suppressionReason}. This monitor's status still updates normally; open incidents still auto-resolve.`,
|
|
210
|
-
relatedCriteriaId: (
|
|
243
|
+
relatedCriteriaId: (_j = input.criteriaInstance.data) === null || _j === void 0 ? void 0 : _j.id,
|
|
211
244
|
at: OneUptimeDate.getCurrentDate(),
|
|
212
245
|
});
|
|
213
246
|
return;
|
|
@@ -247,320 +280,337 @@ export default class MonitorIncident {
|
|
|
247
280
|
* created incident's owners alongside the criteria-configured ones.
|
|
248
281
|
*/
|
|
249
282
|
let networkDeviceOwners = null;
|
|
250
|
-
for (const criteriaIncident of ((
|
|
283
|
+
for (const criteriaIncident of ((_k = input.criteriaInstance.data) === null || _k === void 0 ? void 0 : _k.incidents) ||
|
|
251
284
|
[]) {
|
|
252
285
|
for (const seriesMatch of seriesToProcess) {
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
* Per-series scheduled-maintenance suppression: this series'
|
|
258
|
-
* resource is inside an ongoing maintenance window, so skip
|
|
259
|
-
* creating an incident for it. Other series on the same monitor
|
|
260
|
-
* whose resources are not under maintenance still get incidents.
|
|
261
|
-
* Note: we only suppress *new* creation — any incident already
|
|
262
|
-
* open for this series is left to the normal resolve path
|
|
263
|
-
* (checkOpenIncidentsAndCloseIfResolved still sees the full
|
|
264
|
-
* breaching set), so a real incident raised before maintenance
|
|
265
|
-
* is not silently closed.
|
|
266
|
-
*/
|
|
267
|
-
if (seriesFingerprint &&
|
|
268
|
-
((_j = input.suppressedSeriesFingerprints) === null || _j === void 0 ? void 0 : _j.has(seriesFingerprint))) {
|
|
269
|
-
logger.debug(`${(_k = input.monitor.id) === null || _k === void 0 ? void 0 : _k.toString()} - Skipping incident for series ${seriesFingerprint}: its resource is under an active scheduled maintenance window.`, incidentLogAttributes);
|
|
270
|
-
(_l = input.evaluationSummary) === null || _l === void 0 ? void 0 : _l.events.push({
|
|
271
|
-
type: "incident-skipped",
|
|
272
|
-
title: "Incident suppressed by scheduled maintenance",
|
|
273
|
-
message: "Skipped creating an incident because the resource for this series is under an active scheduled maintenance window.",
|
|
274
|
-
relatedCriteriaId: (_m = input.criteriaInstance.data) === null || _m === void 0 ? void 0 : _m.id,
|
|
275
|
-
at: OneUptimeDate.getCurrentDate(),
|
|
276
|
-
});
|
|
277
|
-
continue;
|
|
278
|
-
}
|
|
279
|
-
/*
|
|
280
|
-
* Dedupe match must mirror the create path below (which sets
|
|
281
|
-
* `createdCriteriaId` / `createdIncidentTemplateId` only when the
|
|
282
|
-
* corresponding id is present). A criteria incident template can be
|
|
283
|
-
* missing its `id` (legacy/API-authored criteria), so guard the
|
|
284
|
-
* `.toString()` with `?.` — an unguarded call previously threw
|
|
285
|
-
* "Cannot read properties of undefined (reading 'toString')" here and
|
|
286
|
-
* failed the probe/telemetry queue job on every cycle for the affected
|
|
287
|
-
* monitor. Normalise both sides to `undefined` on missing so a created
|
|
288
|
-
* incident (whose template id was left NULL) still matches itself next
|
|
289
|
-
* cycle instead of being recreated as a duplicate.
|
|
290
|
-
*/
|
|
291
|
-
const alreadyOpenIncident = openIncidents.find((incident) => {
|
|
292
|
-
var _a, _b, _c;
|
|
293
|
-
return ((incident.createdCriteriaId || undefined) ===
|
|
294
|
-
(((_b = (_a = input.criteriaInstance.data) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.toString()) || undefined) &&
|
|
295
|
-
(incident.createdIncidentTemplateId || undefined) ===
|
|
296
|
-
(((_c = criteriaIncident.id) === null || _c === void 0 ? void 0 : _c.toString()) || undefined) &&
|
|
297
|
-
(incident.seriesFingerprint || undefined) === seriesFingerprint);
|
|
298
|
-
});
|
|
299
|
-
const hasAlreadyOpenIncident = Boolean(alreadyOpenIncident);
|
|
300
|
-
logger.debug(`${(_o = input.monitor.id) === null || _o === void 0 ? void 0 : _o.toString()} - Open Incident ${(_p = alreadyOpenIncident === null || alreadyOpenIncident === void 0 ? void 0 : alreadyOpenIncident.id) === null || _p === void 0 ? void 0 : _p.toString()}`, incidentLogAttributes);
|
|
301
|
-
logger.debug(`${(_q = input.monitor.id) === null || _q === void 0 ? void 0 : _q.toString()} - Has open incident ${hasAlreadyOpenIncident}`, incidentLogAttributes);
|
|
302
|
-
if (hasAlreadyOpenIncident) {
|
|
286
|
+
try {
|
|
287
|
+
const seriesFingerprint = seriesMatch === null || seriesMatch === void 0 ? void 0 : seriesMatch.fingerprint;
|
|
288
|
+
const seriesLabels = seriesMatch === null || seriesMatch === void 0 ? void 0 : seriesMatch.labels;
|
|
289
|
+
const seriesRootCause = (seriesMatch === null || seriesMatch === void 0 ? void 0 : seriesMatch.rootCause) || input.rootCause;
|
|
303
290
|
/*
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
308
|
-
*
|
|
309
|
-
*
|
|
291
|
+
* Per-series scheduled-maintenance suppression: this series'
|
|
292
|
+
* resource is inside an ongoing maintenance window, so skip
|
|
293
|
+
* creating an incident for it. Other series on the same monitor
|
|
294
|
+
* whose resources are not under maintenance still get incidents.
|
|
295
|
+
* Note: we only suppress *new* creation — any incident already
|
|
296
|
+
* open for this series is left to the normal resolve path
|
|
297
|
+
* (checkOpenIncidentsAndCloseIfResolved still sees the full
|
|
298
|
+
* breaching set), so a real incident raised before maintenance
|
|
299
|
+
* is not silently closed.
|
|
310
300
|
*/
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
* can be a truthy-but-EMPTY ObjectID (id === "") — a stored
|
|
343
|
-
* `{"_type":"ObjectID","value":""}` deserializes to `new ObjectID("")`,
|
|
344
|
-
* which is an object so `!incidentSeverityId` is false. That empty id
|
|
345
|
-
* serializes to "" for the `uuid` (not-null) column and lands as NULL,
|
|
346
|
-
* throwing 23502 inside the probe-ingest worker and retrying forever.
|
|
347
|
-
* Use `?.toString()` truthiness so an empty/blank ObjectID is treated
|
|
348
|
-
* the same as "missing" and falls through to the project-default lookup.
|
|
349
|
-
*/
|
|
350
|
-
/*
|
|
351
|
-
* A criteria severity that belongs to *another* project is rejected by
|
|
352
|
-
* IncidentService on create. Throwing here would fail the whole
|
|
353
|
-
* probe/telemetry ingest job for this monitor — no incident, and no
|
|
354
|
-
* payload or monitor log persisted either, because those run after the
|
|
355
|
-
* create. Treat it as "missing" and fall back to this project's own
|
|
356
|
-
* default, which is also what stops the bad id spreading onto new
|
|
357
|
-
* incidents. monitorSteps can still hold one: the 1785240000000
|
|
358
|
-
* repair skipped ids it could not resolve.
|
|
359
|
-
*/
|
|
360
|
-
const isCriteriaSeverityUsable = await ProjectScopedReferenceValidator.isUsableInProject({
|
|
361
|
-
projectId: input.monitor.projectId,
|
|
362
|
-
id: criteriaIncident.incidentSeverityId,
|
|
363
|
-
service: IncidentSeverityService,
|
|
364
|
-
});
|
|
365
|
-
if (((_v = criteriaIncident.incidentSeverityId) === null || _v === void 0 ? void 0 : _v.toString()) &&
|
|
366
|
-
!isCriteriaSeverityUsable) {
|
|
367
|
-
logger.error(`${(_w = input.monitor.id) === null || _w === void 0 ? void 0 : _w.toString()} - Criteria "${(_x = input.criteriaInstance.data) === null || _x === void 0 ? void 0 : _x.name}" references incident severity ${criteriaIncident.incidentSeverityId.toString()}, which does not belong to project ${(_y = input.monitor.projectId) === null || _y === void 0 ? void 0 : _y.toString()}. Falling back to this project's default severity.`);
|
|
368
|
-
}
|
|
369
|
-
if (!isCriteriaSeverityUsable) {
|
|
370
|
-
// pick the critical (first/lowest-order root) severity.
|
|
371
|
-
const severity = await IncidentSeverityService.findOneBy({
|
|
372
|
-
query: {
|
|
373
|
-
projectId: input.monitor.projectId,
|
|
374
|
-
},
|
|
375
|
-
sort: {
|
|
376
|
-
order: SortOrder.Ascending,
|
|
377
|
-
},
|
|
378
|
-
props: {
|
|
379
|
-
isRoot: true,
|
|
380
|
-
},
|
|
381
|
-
select: {
|
|
382
|
-
_id: true,
|
|
383
|
-
},
|
|
301
|
+
if (seriesFingerprint &&
|
|
302
|
+
((_l = input.suppressedSeriesFingerprints) === null || _l === void 0 ? void 0 : _l.has(seriesFingerprint))) {
|
|
303
|
+
logger.debug(`${(_m = input.monitor.id) === null || _m === void 0 ? void 0 : _m.toString()} - Skipping incident for series ${seriesFingerprint}: its resource is under an active scheduled maintenance window.`, incidentLogAttributes);
|
|
304
|
+
(_o = input.evaluationSummary) === null || _o === void 0 ? void 0 : _o.events.push({
|
|
305
|
+
type: "incident-skipped",
|
|
306
|
+
title: "Incident suppressed by scheduled maintenance",
|
|
307
|
+
message: "Skipped creating an incident because the resource for this series is under an active scheduled maintenance window.",
|
|
308
|
+
relatedCriteriaId: (_p = input.criteriaInstance.data) === null || _p === void 0 ? void 0 : _p.id,
|
|
309
|
+
at: OneUptimeDate.getCurrentDate(),
|
|
310
|
+
});
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
/*
|
|
314
|
+
* Dedupe match must mirror the create path below (which sets
|
|
315
|
+
* `createdCriteriaId` / `createdIncidentTemplateId` only when the
|
|
316
|
+
* corresponding id is present). A criteria incident template can be
|
|
317
|
+
* missing its `id` (legacy/API-authored criteria), so guard the
|
|
318
|
+
* `.toString()` with `?.` — an unguarded call previously threw
|
|
319
|
+
* "Cannot read properties of undefined (reading 'toString')" here and
|
|
320
|
+
* failed the probe/telemetry queue job on every cycle for the affected
|
|
321
|
+
* monitor. Normalise both sides to `undefined` on missing so a created
|
|
322
|
+
* incident (whose template id was left NULL) still matches itself next
|
|
323
|
+
* cycle instead of being recreated as a duplicate.
|
|
324
|
+
*/
|
|
325
|
+
const alreadyOpenIncident = openIncidents.find((incident) => {
|
|
326
|
+
var _a, _b, _c;
|
|
327
|
+
return ((incident.createdCriteriaId || undefined) ===
|
|
328
|
+
(((_b = (_a = input.criteriaInstance.data) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.toString()) || undefined) &&
|
|
329
|
+
(incident.createdIncidentTemplateId || undefined) ===
|
|
330
|
+
(((_c = criteriaIncident.id) === null || _c === void 0 ? void 0 : _c.toString()) || undefined) &&
|
|
331
|
+
(incident.seriesFingerprint || undefined) === seriesFingerprint);
|
|
384
332
|
});
|
|
385
|
-
|
|
333
|
+
const hasAlreadyOpenIncident = Boolean(alreadyOpenIncident);
|
|
334
|
+
logger.debug(`${(_q = input.monitor.id) === null || _q === void 0 ? void 0 : _q.toString()} - Open Incident ${(_r = alreadyOpenIncident === null || alreadyOpenIncident === void 0 ? void 0 : alreadyOpenIncident.id) === null || _r === void 0 ? void 0 : _r.toString()}`, incidentLogAttributes);
|
|
335
|
+
logger.debug(`${(_s = input.monitor.id) === null || _s === void 0 ? void 0 : _s.toString()} - Has open incident ${hasAlreadyOpenIncident}`, incidentLogAttributes);
|
|
336
|
+
if (hasAlreadyOpenIncident) {
|
|
386
337
|
/*
|
|
387
|
-
*
|
|
388
|
-
*
|
|
389
|
-
*
|
|
390
|
-
*
|
|
338
|
+
* Use the open incident's already-rendered title when
|
|
339
|
+
* available — the template (`criteriaIncident.title`) still
|
|
340
|
+
* contains unresolved `{{…}}` placeholders because it's the
|
|
341
|
+
* criterion's template string, not the instance's rendered
|
|
342
|
+
* output. Falling back to the template only when the open
|
|
343
|
+
* incident somehow has no title.
|
|
391
344
|
*/
|
|
392
|
-
|
|
393
|
-
(
|
|
345
|
+
const renderedTitle = (alreadyOpenIncident === null || alreadyOpenIncident === void 0 ? void 0 : alreadyOpenIncident.title) || criteriaIncident.title;
|
|
346
|
+
(_t = input.evaluationSummary) === null || _t === void 0 ? void 0 : _t.events.push({
|
|
394
347
|
type: "incident-skipped",
|
|
395
|
-
title:
|
|
396
|
-
message: "Skipped creating
|
|
397
|
-
relatedCriteriaId: (
|
|
348
|
+
title: `Incident already active: ${renderedTitle}`,
|
|
349
|
+
message: "Skipped creating a new incident because an active incident exists for this criteria.",
|
|
350
|
+
relatedCriteriaId: (_u = input.criteriaInstance.data) === null || _u === void 0 ? void 0 : _u.id,
|
|
351
|
+
relatedIncidentId: (_v = alreadyOpenIncident === null || alreadyOpenIncident === void 0 ? void 0 : alreadyOpenIncident.id) === null || _v === void 0 ? void 0 : _v.toString(),
|
|
352
|
+
relatedIncidentNumber: alreadyOpenIncident === null || alreadyOpenIncident === void 0 ? void 0 : alreadyOpenIncident.incidentNumber,
|
|
353
|
+
relatedIncidentNumberWithPrefix: alreadyOpenIncident === null || alreadyOpenIncident === void 0 ? void 0 : alreadyOpenIncident.incidentNumberWithPrefix,
|
|
398
354
|
at: OneUptimeDate.getCurrentDate(),
|
|
399
355
|
});
|
|
400
356
|
continue;
|
|
401
357
|
}
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
incident.incidentSeverityId = criteriaIncident.incidentSeverityId;
|
|
406
|
-
}
|
|
407
|
-
incident.monitors = [input.monitor];
|
|
408
|
-
incident.projectId = input.monitor.projectId;
|
|
409
|
-
incident.rootCause = seriesRootCause;
|
|
410
|
-
incident.createdStateLog = JSON.parse(JSON.stringify(input.dataToProcess, null, 2));
|
|
411
|
-
/*
|
|
412
|
-
* Same capture on every incident this evaluation opens - they all
|
|
413
|
-
* came from the one check.
|
|
414
|
-
*/
|
|
415
|
-
const serializedMonitorSummary = MonitorSummarySnapshotUtil.serialize(input.monitorSummary);
|
|
416
|
-
if (serializedMonitorSummary) {
|
|
417
|
-
incident.monitorSummary = serializedMonitorSummary;
|
|
418
|
-
}
|
|
419
|
-
/*
|
|
420
|
-
* Guard against missing ids — these are optional reference fields and
|
|
421
|
-
* must not crash incident creation (which runs inside the probe /
|
|
422
|
-
* telemetry queue workers). A missing id previously threw
|
|
423
|
-
* "Cannot read properties of undefined (reading 'toString')" and failed
|
|
424
|
-
* the job on every cycle for the affected monitor.
|
|
425
|
-
*/
|
|
426
|
-
if ((_5 = input.criteriaInstance.data) === null || _5 === void 0 ? void 0 : _5.id) {
|
|
427
|
-
incident.createdCriteriaId =
|
|
428
|
-
input.criteriaInstance.data.id.toString();
|
|
429
|
-
}
|
|
430
|
-
if (criteriaIncident.id) {
|
|
431
|
-
incident.createdIncidentTemplateId = criteriaIncident.id.toString();
|
|
432
|
-
}
|
|
433
|
-
if (seriesFingerprint) {
|
|
434
|
-
incident.seriesFingerprint = seriesFingerprint;
|
|
435
|
-
}
|
|
436
|
-
if (seriesLabels && Object.keys(seriesLabels).length > 0) {
|
|
437
|
-
incident.seriesLabels = seriesLabels;
|
|
438
|
-
await SeriesResourceLinker.linkSeriesResourcesToModel({
|
|
439
|
-
model: incident,
|
|
440
|
-
seriesLabels,
|
|
441
|
-
projectId: input.monitor.projectId,
|
|
358
|
+
logger.debug(`${(_w = input.monitor.id) === null || _w === void 0 ? void 0 : _w.toString()} - Create incident.`, incidentLogAttributes);
|
|
359
|
+
const incident = new Incident();
|
|
360
|
+
const storageMap = MonitorTemplateUtil.buildTemplateStorageMap({
|
|
442
361
|
monitorType: input.monitor.monitorType,
|
|
362
|
+
dataToProcess: input.dataToProcess,
|
|
363
|
+
monitor: input.monitor,
|
|
364
|
+
seriesLabels,
|
|
443
365
|
});
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
* Deterministic resource link from the monitor's step config
|
|
447
|
-
* (resolved once above). Runs for both grouped and ungrouped
|
|
448
|
-
* incidents and merges with anything the series-label path
|
|
449
|
-
* resolved, so the per-resource Activity tabs always see
|
|
450
|
-
* monitor-created incidents.
|
|
451
|
-
*/
|
|
452
|
-
SeriesResourceLinker.attachResolvedResources({
|
|
453
|
-
model: incident,
|
|
454
|
-
resolved: resourceContext,
|
|
455
|
-
});
|
|
456
|
-
incident.onCallDutyPolicies =
|
|
457
|
-
((_6 = criteriaIncident.onCallPolicyIds) === null || _6 === void 0 ? void 0 : _6.map((id) => {
|
|
458
|
-
const onCallPolicy = new OnCallDutyPolicy();
|
|
459
|
-
onCallPolicy._id = id.toString();
|
|
460
|
-
return onCallPolicy;
|
|
461
|
-
})) || [];
|
|
462
|
-
// Set labels from criteria
|
|
463
|
-
incident.labels =
|
|
464
|
-
((_7 = criteriaIncident.labelIds) === null || _7 === void 0 ? void 0 : _7.map((id) => {
|
|
465
|
-
const label = new Label();
|
|
466
|
-
label._id = id.toString();
|
|
467
|
-
return label;
|
|
468
|
-
})) || [];
|
|
469
|
-
incident.isCreatedAutomatically = true;
|
|
470
|
-
// Set status page visibility (defaults to true if not specified)
|
|
471
|
-
if (criteriaIncident.showIncidentOnStatusPage !== undefined) {
|
|
472
|
-
incident.isVisibleOnStatusPage =
|
|
473
|
-
criteriaIncident.showIncidentOnStatusPage;
|
|
474
|
-
}
|
|
475
|
-
if (criteriaIncident.isPrivate === true) {
|
|
476
|
-
incident.isPrivate = true;
|
|
477
|
-
}
|
|
478
|
-
if (input.props.telemetryQuery) {
|
|
479
|
-
incident.telemetryQuery = input.props.telemetryQuery;
|
|
480
|
-
}
|
|
481
|
-
if (input.dataToProcess &&
|
|
482
|
-
input.dataToProcess.probeId) {
|
|
483
|
-
incident.createdByProbeId = input.dataToProcess.probeId;
|
|
484
|
-
}
|
|
485
|
-
if (criteriaIncident.remediationNotes) {
|
|
486
|
-
incident.remediationNotes = MonitorTemplateUtil.processTemplateString({
|
|
487
|
-
value: criteriaIncident.remediationNotes,
|
|
366
|
+
incident.title = MonitorTemplateUtil.processTemplateString({
|
|
367
|
+
value: criteriaIncident.title,
|
|
488
368
|
storageMap,
|
|
489
369
|
});
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
type: "incident-skipped",
|
|
494
|
-
title: "Incident creation skipped",
|
|
495
|
-
message: "Automatic incident creation is disabled by environment configuration.",
|
|
496
|
-
relatedCriteriaId: (_9 = input.criteriaInstance.data) === null || _9 === void 0 ? void 0 : _9.id,
|
|
497
|
-
at: OneUptimeDate.getCurrentDate(),
|
|
370
|
+
incident.description = MonitorTemplateUtil.processTemplateString({
|
|
371
|
+
value: criteriaIncident.description,
|
|
372
|
+
storageMap,
|
|
498
373
|
});
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
374
|
+
/*
|
|
375
|
+
* Resolve the incident severity. `criteriaIncident.incidentSeverityId`
|
|
376
|
+
* can be a truthy-but-EMPTY ObjectID (id === "") — a stored
|
|
377
|
+
* `{"_type":"ObjectID","value":""}` deserializes to `new ObjectID("")`,
|
|
378
|
+
* which is an object so `!incidentSeverityId` is false. That empty id
|
|
379
|
+
* serializes to "" for the `uuid` (not-null) column and lands as NULL,
|
|
380
|
+
* throwing 23502 inside the probe-ingest worker and retrying forever.
|
|
381
|
+
* Use `?.toString()` truthiness so an empty/blank ObjectID is treated
|
|
382
|
+
* the same as "missing" and falls through to the project-default lookup.
|
|
383
|
+
*/
|
|
384
|
+
/*
|
|
385
|
+
* A criteria severity that belongs to *another* project is rejected by
|
|
386
|
+
* IncidentService on create. Throwing here would fail the whole
|
|
387
|
+
* probe/telemetry ingest job for this monitor — no incident, and no
|
|
388
|
+
* payload or monitor log persisted either, because those run after the
|
|
389
|
+
* create. Treat it as "missing" and fall back to this project's own
|
|
390
|
+
* default, which is also what stops the bad id spreading onto new
|
|
391
|
+
* incidents. monitorSteps can still hold one: the 1785240000000
|
|
392
|
+
* repair skipped ids it could not resolve.
|
|
393
|
+
*/
|
|
394
|
+
const isCriteriaSeverityUsable = await ProjectScopedReferenceValidator.isUsableInProject({
|
|
395
|
+
projectId: input.monitor.projectId,
|
|
396
|
+
id: criteriaIncident.incidentSeverityId,
|
|
397
|
+
service: IncidentSeverityService,
|
|
398
|
+
});
|
|
399
|
+
if (((_x = criteriaIncident.incidentSeverityId) === null || _x === void 0 ? void 0 : _x.toString()) &&
|
|
400
|
+
!isCriteriaSeverityUsable) {
|
|
401
|
+
logger.error(`${(_y = input.monitor.id) === null || _y === void 0 ? void 0 : _y.toString()} - Criteria "${(_z = input.criteriaInstance.data) === null || _z === void 0 ? void 0 : _z.name}" references incident severity ${criteriaIncident.incidentSeverityId.toString()}, which does not belong to project ${(_0 = input.monitor.projectId) === null || _0 === void 0 ? void 0 : _0.toString()}. Falling back to this project's default severity.`);
|
|
402
|
+
}
|
|
403
|
+
if (!isCriteriaSeverityUsable) {
|
|
404
|
+
// pick the critical (first/lowest-order root) severity.
|
|
405
|
+
const severity = await IncidentSeverityService.findOneBy({
|
|
406
|
+
query: {
|
|
407
|
+
projectId: input.monitor.projectId,
|
|
408
|
+
},
|
|
409
|
+
sort: {
|
|
410
|
+
order: SortOrder.Ascending,
|
|
411
|
+
},
|
|
412
|
+
props: {
|
|
413
|
+
isRoot: true,
|
|
414
|
+
},
|
|
415
|
+
select: {
|
|
416
|
+
_id: true,
|
|
417
|
+
},
|
|
518
418
|
});
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
419
|
+
if (!((_1 = severity === null || severity === void 0 ? void 0 : severity.id) === null || _1 === void 0 ? void 0 : _1.toString())) {
|
|
420
|
+
/*
|
|
421
|
+
* The project has no incident severity configured. Throwing here
|
|
422
|
+
* would fail the entire probe/telemetry ingest job, which then
|
|
423
|
+
* retries forever for a misconfiguration the worker cannot fix.
|
|
424
|
+
* Skip incident creation gracefully and log instead.
|
|
425
|
+
*/
|
|
426
|
+
logger.error(`${(_2 = input.monitor.id) === null || _2 === void 0 ? void 0 : _2.toString()} - Cannot create incident: project ${(_3 = input.monitor.projectId) === null || _3 === void 0 ? void 0 : _3.toString()} has no incident severity configured. Skipping incident creation for criteria "${(_4 = input.criteriaInstance.data) === null || _4 === void 0 ? void 0 : _4.name}".`);
|
|
427
|
+
(_5 = input.evaluationSummary) === null || _5 === void 0 ? void 0 : _5.events.push({
|
|
428
|
+
type: "incident-skipped",
|
|
429
|
+
title: "Incident creation skipped",
|
|
430
|
+
message: "Skipped creating an incident because the project has no incident severity configured.",
|
|
431
|
+
relatedCriteriaId: (_6 = input.criteriaInstance.data) === null || _6 === void 0 ? void 0 : _6.id,
|
|
432
|
+
at: OneUptimeDate.getCurrentDate(),
|
|
433
|
+
});
|
|
434
|
+
continue;
|
|
435
|
+
}
|
|
436
|
+
incident.incidentSeverityId = severity.id;
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
incident.incidentSeverityId = criteriaIncident.incidentSeverityId;
|
|
440
|
+
}
|
|
441
|
+
incident.monitors = [input.monitor];
|
|
442
|
+
incident.projectId = input.monitor.projectId;
|
|
443
|
+
incident.rootCause = seriesRootCause;
|
|
444
|
+
incident.createdStateLog = JSON.parse(JSON.stringify(input.dataToProcess, null, 2));
|
|
445
|
+
/*
|
|
446
|
+
* Same capture on every incident this evaluation opens - they all
|
|
447
|
+
* came from the one check.
|
|
448
|
+
*/
|
|
449
|
+
const serializedMonitorSummary = MonitorSummarySnapshotUtil.serialize(input.monitorSummary);
|
|
450
|
+
if (serializedMonitorSummary) {
|
|
451
|
+
incident.monitorSummary = serializedMonitorSummary;
|
|
452
|
+
}
|
|
453
|
+
/*
|
|
454
|
+
* Guard against missing ids — these are optional reference fields and
|
|
455
|
+
* must not crash incident creation (which runs inside the probe /
|
|
456
|
+
* telemetry queue workers). A missing id previously threw
|
|
457
|
+
* "Cannot read properties of undefined (reading 'toString')" and failed
|
|
458
|
+
* the job on every cycle for the affected monitor.
|
|
459
|
+
*/
|
|
460
|
+
if ((_7 = input.criteriaInstance.data) === null || _7 === void 0 ? void 0 : _7.id) {
|
|
461
|
+
incident.createdCriteriaId =
|
|
462
|
+
input.criteriaInstance.data.id.toString();
|
|
463
|
+
}
|
|
464
|
+
if (criteriaIncident.id) {
|
|
465
|
+
incident.createdIncidentTemplateId = criteriaIncident.id.toString();
|
|
466
|
+
}
|
|
467
|
+
if (seriesFingerprint) {
|
|
468
|
+
incident.seriesFingerprint = seriesFingerprint;
|
|
469
|
+
}
|
|
470
|
+
if (seriesLabels && Object.keys(seriesLabels).length > 0) {
|
|
471
|
+
incident.seriesLabels = seriesLabels;
|
|
472
|
+
await SeriesResourceLinker.linkSeriesResourcesToModel({
|
|
473
|
+
model: incident,
|
|
474
|
+
seriesLabels,
|
|
475
|
+
projectId: input.monitor.projectId,
|
|
476
|
+
monitorType: input.monitor.monitorType,
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
/*
|
|
480
|
+
* Deterministic resource link from the monitor's step config
|
|
481
|
+
* (resolved once above). Runs for both grouped and ungrouped
|
|
482
|
+
* incidents and merges with anything the series-label path
|
|
483
|
+
* resolved, so the per-resource Activity tabs always see
|
|
484
|
+
* monitor-created incidents.
|
|
485
|
+
*/
|
|
486
|
+
SeriesResourceLinker.attachResolvedResources({
|
|
487
|
+
model: incident,
|
|
488
|
+
resolved: resourceContext,
|
|
526
489
|
});
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
490
|
+
incident.onCallDutyPolicies =
|
|
491
|
+
((_8 = criteriaIncident.onCallPolicyIds) === null || _8 === void 0 ? void 0 : _8.map((id) => {
|
|
492
|
+
const onCallPolicy = new OnCallDutyPolicy();
|
|
493
|
+
onCallPolicy._id = id.toString();
|
|
494
|
+
return onCallPolicy;
|
|
495
|
+
})) || [];
|
|
496
|
+
// Set labels from criteria
|
|
497
|
+
incident.labels =
|
|
498
|
+
((_9 = criteriaIncident.labelIds) === null || _9 === void 0 ? void 0 : _9.map((id) => {
|
|
499
|
+
const label = new Label();
|
|
500
|
+
label._id = id.toString();
|
|
501
|
+
return label;
|
|
502
|
+
})) || [];
|
|
503
|
+
incident.isCreatedAutomatically = true;
|
|
504
|
+
// Set status page visibility (defaults to true if not specified)
|
|
505
|
+
if (criteriaIncident.showIncidentOnStatusPage !== undefined) {
|
|
506
|
+
incident.isVisibleOnStatusPage =
|
|
507
|
+
criteriaIncident.showIncidentOnStatusPage;
|
|
508
|
+
}
|
|
509
|
+
if (criteriaIncident.isPrivate === true) {
|
|
510
|
+
incident.isPrivate = true;
|
|
511
|
+
}
|
|
512
|
+
if (input.props.telemetryQuery) {
|
|
513
|
+
incident.telemetryQuery = input.props.telemetryQuery;
|
|
514
|
+
}
|
|
515
|
+
if (input.dataToProcess &&
|
|
516
|
+
input.dataToProcess.probeId) {
|
|
517
|
+
incident.createdByProbeId = input.dataToProcess.probeId;
|
|
518
|
+
}
|
|
519
|
+
if (criteriaIncident.remediationNotes) {
|
|
520
|
+
incident.remediationNotes =
|
|
521
|
+
MonitorTemplateUtil.processTemplateString({
|
|
522
|
+
value: criteriaIncident.remediationNotes,
|
|
523
|
+
storageMap,
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
const createdIncident = await IncidentService.create({
|
|
527
|
+
data: incident,
|
|
528
|
+
props: {
|
|
529
|
+
isRoot: true,
|
|
530
|
+
},
|
|
531
|
+
});
|
|
532
|
+
/*
|
|
533
|
+
* Add owner teams and users after incident creation. Owners
|
|
534
|
+
* configured on the criteria template are merged (deduped) with the
|
|
535
|
+
* owners of the network device this monitor watches, so device
|
|
536
|
+
* ownership flows into the incidents its monitor raises.
|
|
537
|
+
*/
|
|
538
|
+
if (networkDeviceOwners === null) {
|
|
539
|
+
networkDeviceOwners =
|
|
540
|
+
await NetworkDeviceOwnerUserService.getDeviceOwnersForMonitor({
|
|
541
|
+
monitor: input.monitor,
|
|
542
|
+
monitorStepId: (_10 = input.dataToProcess.monitorStepId) === null || _10 === void 0 ? void 0 : _10.toString(),
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
const ownerUserIds = this.mergeOwnerIds(criteriaIncident.ownerUserIds || [], networkDeviceOwners.ownerUserIds);
|
|
546
|
+
const ownerTeamIds = this.mergeOwnerIds(criteriaIncident.ownerTeamIds || [], networkDeviceOwners.ownerTeamIds);
|
|
547
|
+
if (ownerTeamIds.length || ownerUserIds.length) {
|
|
548
|
+
await IncidentService.addOwners(input.monitor.projectId, createdIncident.id, ownerUserIds, ownerTeamIds, true, // notify owners
|
|
549
|
+
{
|
|
550
|
+
isRoot: true,
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
// Add incident member role assignments after incident creation
|
|
554
|
+
if (criteriaIncident.incidentMemberRoles &&
|
|
555
|
+
criteriaIncident.incidentMemberRoles.length > 0) {
|
|
556
|
+
for (const roleAssignment of criteriaIncident.incidentMemberRoles) {
|
|
557
|
+
try {
|
|
558
|
+
const assignment = roleAssignment;
|
|
559
|
+
if (assignment.roleId && assignment.userId) {
|
|
560
|
+
const incidentMember = new IncidentMember();
|
|
561
|
+
incidentMember.incidentId = createdIncident.id;
|
|
562
|
+
incidentMember.projectId = input.monitor.projectId;
|
|
563
|
+
incidentMember.userId = new ObjectID(assignment.userId.toString());
|
|
564
|
+
incidentMember.incidentRoleId = new ObjectID(assignment.roleId.toString());
|
|
565
|
+
await IncidentMemberService.create({
|
|
566
|
+
data: incidentMember,
|
|
567
|
+
props: {
|
|
568
|
+
isRoot: true,
|
|
569
|
+
},
|
|
570
|
+
});
|
|
571
|
+
logger.debug(`${(_11 = input.monitor.id) === null || _11 === void 0 ? void 0 : _11.toString()} - Assigned incident member role ${assignment.roleId.toString()} to user ${assignment.userId.toString()}`, incidentLogAttributes);
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
catch (memberError) {
|
|
575
|
+
logger.error(`${(_12 = input.monitor.id) === null || _12 === void 0 ? void 0 : _12.toString()} - Failed to assign incident member role: ${memberError}`, incidentLogAttributes);
|
|
547
576
|
}
|
|
548
|
-
}
|
|
549
|
-
catch (memberError) {
|
|
550
|
-
logger.error(`${(_12 = input.monitor.id) === null || _12 === void 0 ? void 0 : _12.toString()} - Failed to assign incident member role: ${memberError}`, incidentLogAttributes);
|
|
551
577
|
}
|
|
552
578
|
}
|
|
579
|
+
(_13 = input.evaluationSummary) === null || _13 === void 0 ? void 0 : _13.events.push({
|
|
580
|
+
type: "incident-created",
|
|
581
|
+
title: `Incident created: ${createdIncident.title || criteriaIncident.title}`,
|
|
582
|
+
message: `Incident triggered from criteria "${((_14 = input.criteriaInstance.data) === null || _14 === void 0 ? void 0 : _14.name) || "Unnamed criteria"}".`,
|
|
583
|
+
relatedCriteriaId: (_15 = input.criteriaInstance.data) === null || _15 === void 0 ? void 0 : _15.id,
|
|
584
|
+
relatedIncidentId: (_16 = createdIncident.id) === null || _16 === void 0 ? void 0 : _16.toString(),
|
|
585
|
+
relatedIncidentNumber: createdIncident.incidentNumber,
|
|
586
|
+
relatedIncidentNumberWithPrefix: createdIncident.incidentNumberWithPrefix,
|
|
587
|
+
at: OneUptimeDate.getCurrentDate(),
|
|
588
|
+
});
|
|
589
|
+
}
|
|
590
|
+
catch (err) {
|
|
591
|
+
/*
|
|
592
|
+
* One series must not take the rest of the fleet down with it.
|
|
593
|
+
* Everything in this loop happens per host/container/key and
|
|
594
|
+
* touches the database; an error thrown from here used to
|
|
595
|
+
* propagate out of MonitorResource (which has no catch, only a
|
|
596
|
+
* `finally` that releases the lock) and abandon every series
|
|
597
|
+
* after the failing one, plus the monitor log for the tick.
|
|
598
|
+
*/
|
|
599
|
+
logger.error(`${(_17 = input.monitor.id) === null || _17 === void 0 ? void 0 : _17.toString()} - Failed to create incident${(seriesMatch === null || seriesMatch === void 0 ? void 0 : seriesMatch.fingerprint)
|
|
600
|
+
? ` for series ${seriesMatch.fingerprint}`
|
|
601
|
+
: ""}.`);
|
|
602
|
+
logger.error(err);
|
|
603
|
+
(_18 = input.evaluationSummary) === null || _18 === void 0 ? void 0 : _18.events.push({
|
|
604
|
+
type: "incident-skipped",
|
|
605
|
+
title: "Incident creation failed",
|
|
606
|
+
message: `Could not create an incident${(seriesMatch === null || seriesMatch === void 0 ? void 0 : seriesMatch.fingerprint)
|
|
607
|
+
? ` for series ${seriesMatch.fingerprint}`
|
|
608
|
+
: ""}: ${err instanceof Error ? err.message : String(err)}`,
|
|
609
|
+
relatedCriteriaId: (_19 = input.criteriaInstance.data) === null || _19 === void 0 ? void 0 : _19.id,
|
|
610
|
+
at: OneUptimeDate.getCurrentDate(),
|
|
611
|
+
});
|
|
612
|
+
continue;
|
|
553
613
|
}
|
|
554
|
-
(_13 = input.evaluationSummary) === null || _13 === void 0 ? void 0 : _13.events.push({
|
|
555
|
-
type: "incident-created",
|
|
556
|
-
title: `Incident created: ${createdIncident.title || criteriaIncident.title}`,
|
|
557
|
-
message: `Incident triggered from criteria "${((_14 = input.criteriaInstance.data) === null || _14 === void 0 ? void 0 : _14.name) || "Unnamed criteria"}".`,
|
|
558
|
-
relatedCriteriaId: (_15 = input.criteriaInstance.data) === null || _15 === void 0 ? void 0 : _15.id,
|
|
559
|
-
relatedIncidentId: (_16 = createdIncident.id) === null || _16 === void 0 ? void 0 : _16.toString(),
|
|
560
|
-
relatedIncidentNumber: createdIncident.incidentNumber,
|
|
561
|
-
relatedIncidentNumberWithPrefix: createdIncident.incidentNumberWithPrefix,
|
|
562
|
-
at: OneUptimeDate.getCurrentDate(),
|
|
563
|
-
});
|
|
564
614
|
}
|
|
565
615
|
}
|
|
566
616
|
}
|
|
@@ -627,8 +677,65 @@ export default class MonitorIncident {
|
|
|
627
677
|
}
|
|
628
678
|
}
|
|
629
679
|
}
|
|
680
|
+
/**
|
|
681
|
+
* Is `openIncident`'s series still breaching the criteria that raised
|
|
682
|
+
* it?
|
|
683
|
+
*
|
|
684
|
+
* Prefers the per-criteria dictionary, which answers the question for
|
|
685
|
+
* the criteria that actually owns this incident. The single-set
|
|
686
|
+
* fallback only knows the winning criteria's breaches, so it has to
|
|
687
|
+
* approximate with `createIncidents` — a criteria that creates no
|
|
688
|
+
* incidents is a recovery criteria whose "matches" are healthy series,
|
|
689
|
+
* and counting those as breaches would pin an offline incident open
|
|
690
|
+
* forever.
|
|
691
|
+
*/
|
|
692
|
+
static isSeriesStillBreaching(input) {
|
|
693
|
+
var _a, _b, _c, _d;
|
|
694
|
+
const owningCriteriaId = ((_a = input.openIncident.createdCriteriaId) === null || _a === void 0 ? void 0 : _a.toString()) || undefined;
|
|
695
|
+
if (input.breachingSeriesFingerprintsByCriteriaId && owningCriteriaId) {
|
|
696
|
+
return Boolean((_b = input.breachingSeriesFingerprintsByCriteriaId[owningCriteriaId]) === null || _b === void 0 ? void 0 : _b.has(input.openSeriesFingerprint));
|
|
697
|
+
}
|
|
698
|
+
const matchedCriteriaCreatesIncidents = ((_d = (_c = input.criteriaInstance) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.createIncidents) === true;
|
|
699
|
+
return (matchedCriteriaCreatesIncidents &&
|
|
700
|
+
input.breachingSeriesFingerprints.has(input.openSeriesFingerprint));
|
|
701
|
+
}
|
|
702
|
+
static wasCriteriaEvaluated(input) {
|
|
703
|
+
var _a;
|
|
704
|
+
const owningCriteriaId = ((_a = input.openIncident.createdCriteriaId) === null || _a === void 0 ? void 0 : _a.toString()) || undefined;
|
|
705
|
+
if (!owningCriteriaId) {
|
|
706
|
+
return true;
|
|
707
|
+
}
|
|
708
|
+
return (input.breachingSeriesFingerprintsByCriteriaId[owningCriteriaId] !==
|
|
709
|
+
undefined);
|
|
710
|
+
}
|
|
711
|
+
/**
|
|
712
|
+
* Did the criteria that raised this incident opt into auto-resolve for
|
|
713
|
+
* the template that raised it?
|
|
714
|
+
*
|
|
715
|
+
* An incident whose `createdIncidentTemplateId` is missing (legacy or
|
|
716
|
+
* API-authored criteria whose template carries no id) is matched
|
|
717
|
+
* against the criteria as a whole. Requiring an exact template id
|
|
718
|
+
* there meant such an incident could never auto-resolve — and, because
|
|
719
|
+
* it stayed open, its criteria could never raise a new one either.
|
|
720
|
+
*/
|
|
721
|
+
static isAutoResolveConfiguredForIncident(input) {
|
|
722
|
+
var _a, _b;
|
|
723
|
+
const createdCriteriaId = ((_a = input.openIncident.createdCriteriaId) === null || _a === void 0 ? void 0 : _a.toString()) || undefined;
|
|
724
|
+
if (!createdCriteriaId) {
|
|
725
|
+
return false;
|
|
726
|
+
}
|
|
727
|
+
const autoResolveTemplates = input.autoResolveCriteriaInstanceIdIncidentIdsDictionary[createdCriteriaId];
|
|
728
|
+
if (!autoResolveTemplates || autoResolveTemplates.length === 0) {
|
|
729
|
+
return false;
|
|
730
|
+
}
|
|
731
|
+
const createdTemplateId = ((_b = input.openIncident.createdIncidentTemplateId) === null || _b === void 0 ? void 0 : _b.toString()) || undefined;
|
|
732
|
+
if (!createdTemplateId) {
|
|
733
|
+
return true;
|
|
734
|
+
}
|
|
735
|
+
return autoResolveTemplates.includes(createdTemplateId);
|
|
736
|
+
}
|
|
630
737
|
static shouldCloseIncident(input) {
|
|
631
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k
|
|
738
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
632
739
|
const openSeriesFingerprint = input.openIncident.seriesFingerprint || undefined;
|
|
633
740
|
/*
|
|
634
741
|
* Event-driven (incoming-request / webhook) per-key incidents must
|
|
@@ -644,66 +751,78 @@ export default class MonitorIncident {
|
|
|
644
751
|
if (input.disableSeriesAbsenceResolution && openSeriesFingerprint) {
|
|
645
752
|
return false;
|
|
646
753
|
}
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
* series set and this open incident has a fingerprint, resolve
|
|
650
|
-
* whenever the fingerprint is no longer in the set — regardless
|
|
651
|
-
* of whether some *other* series is still breaching the same
|
|
652
|
-
* criteria. This is the whole point of per-host incidents.
|
|
653
|
-
*/
|
|
654
|
-
if (input.breachingSeriesFingerprints !== undefined &&
|
|
655
|
-
openSeriesFingerprint) {
|
|
754
|
+
// Per-series mode: this evaluation knows which series are breaching.
|
|
755
|
+
if (input.breachingSeriesFingerprints !== undefined) {
|
|
656
756
|
/*
|
|
657
|
-
*
|
|
658
|
-
*
|
|
659
|
-
*
|
|
660
|
-
*
|
|
661
|
-
*
|
|
662
|
-
*
|
|
663
|
-
*
|
|
664
|
-
* as still-breaching when the matched criteria actually creates
|
|
665
|
-
* incidents (an offline/breach criteria); a recovery criteria
|
|
666
|
-
* (createIncidents=false) contributes no breaches and lets the
|
|
667
|
-
* per-series incident auto-resolve.
|
|
757
|
+
* A whole-monitor incident (no fingerprint) on a monitor that now
|
|
758
|
+
* raises incidents per series. It was raised before the monitor
|
|
759
|
+
* was grouped, and nothing can ever dedupe against it again —
|
|
760
|
+
* every incident from here on carries a fingerprint. Left alone it
|
|
761
|
+
* stays open forever while its replacements come and go. Resolve
|
|
762
|
+
* it, on the same auto-resolve terms as any other incident from
|
|
763
|
+
* its criteria.
|
|
668
764
|
*/
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
return
|
|
765
|
+
if (!openSeriesFingerprint) {
|
|
766
|
+
if (input.disableSeriesAbsenceResolution) {
|
|
767
|
+
return false;
|
|
768
|
+
}
|
|
769
|
+
return MonitorIncident.isAutoResolveConfiguredForIncident({
|
|
770
|
+
openIncident: input.openIncident,
|
|
771
|
+
autoResolveCriteriaInstanceIdIncidentIdsDictionary: input.autoResolveCriteriaInstanceIdIncidentIdsDictionary,
|
|
772
|
+
});
|
|
674
773
|
}
|
|
675
774
|
/*
|
|
676
|
-
*
|
|
677
|
-
*
|
|
678
|
-
*
|
|
775
|
+
* Per-series auto-resolve: resolve whenever this fingerprint is no
|
|
776
|
+
* longer breaching the criteria that raised it — regardless of
|
|
777
|
+
* whether some *other* series is still breaching. That is the
|
|
778
|
+
* whole point of per-host incidents.
|
|
679
779
|
*/
|
|
680
|
-
if (
|
|
780
|
+
if (MonitorIncident.isSeriesStillBreaching({
|
|
781
|
+
openIncident: input.openIncident,
|
|
782
|
+
criteriaInstance: input.criteriaInstance,
|
|
783
|
+
openSeriesFingerprint,
|
|
784
|
+
breachingSeriesFingerprints: input.breachingSeriesFingerprints,
|
|
785
|
+
breachingSeriesFingerprintsByCriteriaId: input.breachingSeriesFingerprintsByCriteriaId,
|
|
786
|
+
})) {
|
|
681
787
|
return false;
|
|
682
788
|
}
|
|
683
|
-
|
|
789
|
+
/*
|
|
790
|
+
* The criteria that raised this incident was not evaluated on this
|
|
791
|
+
* tick at all (disabled, deleted, or the monitor stops at its
|
|
792
|
+
* first match). Absence of a breaching set for it is not evidence
|
|
793
|
+
* of recovery, so leave the incident alone.
|
|
794
|
+
*/
|
|
795
|
+
if (input.breachingSeriesFingerprintsByCriteriaId &&
|
|
796
|
+
!MonitorIncident.wasCriteriaEvaluated({
|
|
797
|
+
openIncident: input.openIncident,
|
|
798
|
+
breachingSeriesFingerprintsByCriteriaId: input.breachingSeriesFingerprintsByCriteriaId,
|
|
799
|
+
})) {
|
|
684
800
|
return false;
|
|
685
801
|
}
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
return
|
|
802
|
+
/*
|
|
803
|
+
* Series no longer breaching. Only auto-close if the criteria was
|
|
804
|
+
* configured to auto-resolve in the first place; otherwise stay
|
|
805
|
+
* open so a human can acknowledge.
|
|
806
|
+
*/
|
|
807
|
+
return MonitorIncident.isAutoResolveConfiguredForIncident({
|
|
808
|
+
openIncident: input.openIncident,
|
|
809
|
+
autoResolveCriteriaInstanceIdIncidentIdsDictionary: input.autoResolveCriteriaInstanceIdIncidentIdsDictionary,
|
|
810
|
+
});
|
|
692
811
|
}
|
|
693
|
-
if (((
|
|
694
|
-
((
|
|
812
|
+
if (((_a = input.openIncident.createdCriteriaId) === null || _a === void 0 ? void 0 : _a.toString()) ===
|
|
813
|
+
((_d = (_c = (_b = input.criteriaInstance) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.id) === null || _d === void 0 ? void 0 : _d.toString())) {
|
|
695
814
|
// same incident active. So, do not close.
|
|
696
815
|
return false;
|
|
697
816
|
}
|
|
698
817
|
// If antoher criteria is active then, check if the incident id is present in the map.
|
|
699
|
-
if (!((
|
|
818
|
+
if (!((_e = input.openIncident.createdCriteriaId) === null || _e === void 0 ? void 0 : _e.toString())) {
|
|
700
819
|
return false;
|
|
701
820
|
}
|
|
702
|
-
if (!((
|
|
821
|
+
if (!((_f = input.openIncident.createdIncidentTemplateId) === null || _f === void 0 ? void 0 : _f.toString())) {
|
|
703
822
|
return false;
|
|
704
823
|
}
|
|
705
|
-
if (input.autoResolveCriteriaInstanceIdIncidentIdsDictionary[(
|
|
706
|
-
if ((
|
|
824
|
+
if (input.autoResolveCriteriaInstanceIdIncidentIdsDictionary[(_g = input.openIncident.createdCriteriaId) === null || _g === void 0 ? void 0 : _g.toString()]) {
|
|
825
|
+
if ((_j = input.autoResolveCriteriaInstanceIdIncidentIdsDictionary[(_h = input.openIncident.createdCriteriaId) === null || _h === void 0 ? void 0 : _h.toString()]) === null || _j === void 0 ? void 0 : _j.includes((_k = input.openIncident.createdIncidentTemplateId) === null || _k === void 0 ? void 0 : _k.toString())) {
|
|
707
826
|
return true;
|
|
708
827
|
}
|
|
709
828
|
}
|