@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
|
@@ -0,0 +1,642 @@
|
|
|
1
|
+
import { describe, expect, test } from "@jest/globals";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* Tests for the two diagnostic message builders an admin actually reads when a
|
|
7
|
+
* Microsoft Teams notification fails: getBotNotInTeamMessage and
|
|
8
|
+
* getRosterRejectionMessage.
|
|
9
|
+
*
|
|
10
|
+
* The failure these messages exist to end is a self-hosted deployment whose
|
|
11
|
+
* admin installed the "OneUptime" app from the Microsoft Teams store. That
|
|
12
|
+
* package's bot belongs to OneUptime Cloud, so Teams installs it happily, shows
|
|
13
|
+
* a OneUptime tile under Manage team > Apps, and then refuses every proactive
|
|
14
|
+
* post from this deployment with "The bot is not part of the conversation
|
|
15
|
+
* roster." An admin looking straight at that tile reads "the OneUptime app is
|
|
16
|
+
* not installed" as nonsense and goes round the loop again, which is how this
|
|
17
|
+
* turns into a multi-day investigation.
|
|
18
|
+
*
|
|
19
|
+
* So both builders now carry the wrong-package note, and getRosterRejectionMessage
|
|
20
|
+
* distinguishes the four install states:
|
|
21
|
+
*
|
|
22
|
+
* - Installed: Graph confirmed a package with THIS deployment's app id is in
|
|
23
|
+
* the team, so the package stops leading and the message must NOT send the
|
|
24
|
+
* admin back to re-verify it. The wording stays hedged ("probably"), because
|
|
25
|
+
* the check matches the manifest id rather than the bot id directly. This is
|
|
26
|
+
* a behaviour change from the previous wording and is pinned below.
|
|
27
|
+
* - NotInstalled / Unknown: the package is still a live suspect, so the
|
|
28
|
+
* "different package whose bot id is not this deployment's
|
|
29
|
+
* MICROSOFT_TEAMS_APP_CLIENT_ID" wording stays.
|
|
30
|
+
* - PermissionDenied: Graph refused the installed-apps read, so OneUptime is
|
|
31
|
+
* guessing only because it was not allowed to know. This — and only this —
|
|
32
|
+
* state names TeamsAppInstallation.ReadForTeam.All and tells the admin that
|
|
33
|
+
* granting it turns the guess into an answer.
|
|
34
|
+
*
|
|
35
|
+
* Message-shape coverage that already lives in MicrosoftTeamsChannelSend.test.ts
|
|
36
|
+
* (branch selection by membershipType, the basic "names the channel" case,
|
|
37
|
+
* quoting Microsoft's error) is not repeated here; this file covers the new
|
|
38
|
+
* behaviour and the branches that file misses.
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
jest.mock("../../../../Server/EnvironmentConfig", () => {
|
|
42
|
+
return {
|
|
43
|
+
...(jest.requireActual("../../../../Server/EnvironmentConfig") as Record<
|
|
44
|
+
string,
|
|
45
|
+
unknown
|
|
46
|
+
>),
|
|
47
|
+
MicrosoftTeamsAppClientId: "11111111-2222-3333-4444-555555555555",
|
|
48
|
+
MicrosoftTeamsAppClientSecret: "test-secret",
|
|
49
|
+
MicrosoftTeamsAppTenantId: "test-tenant",
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
import MicrosoftTeamsUtil, {
|
|
54
|
+
MICROSOFT_TEAMS_INSTALL_READ_PERMISSION,
|
|
55
|
+
MicrosoftTeamsAppInstallState,
|
|
56
|
+
} from "../../../../Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams";
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* The note that must appear in BOTH branches of getBotNotInTeamMessage. Asserted
|
|
60
|
+
* as three separate claims rather than one long literal, so a rewording that
|
|
61
|
+
* keeps the substance does not fail, but dropping any of the three does.
|
|
62
|
+
*/
|
|
63
|
+
const WRONG_PACKAGE_IS_DIFFERENT: string = "it is a different package";
|
|
64
|
+
const WRONG_PACKAGE_POINTS_AT_CLOUD: string =
|
|
65
|
+
"the app from the Teams store points at OneUptime Cloud's bot";
|
|
66
|
+
const WRONG_PACKAGE_FIX: string =
|
|
67
|
+
"upload the manifest from Project Settings > Workspace > Microsoft Teams";
|
|
68
|
+
|
|
69
|
+
/*
|
|
70
|
+
* The instruction the Installed branch used to carry and must not carry any
|
|
71
|
+
* more: Graph has already confirmed the package, so sending the admin back to
|
|
72
|
+
* check it is the thing that made this message feel unread.
|
|
73
|
+
*/
|
|
74
|
+
const OLD_RE_VERIFY_PACKAGE_INSTRUCTION: string =
|
|
75
|
+
"check that the Teams app package was built from this deployment";
|
|
76
|
+
|
|
77
|
+
const AZURE_BOT_CAUSE: string =
|
|
78
|
+
"the Azure Bot resource for this deployment does not have the Microsoft Teams channel enabled";
|
|
79
|
+
|
|
80
|
+
const MICROSOFT_QUOTE_PREFIX: string = "Microsoft's response was";
|
|
81
|
+
|
|
82
|
+
const ALL_INSTALL_STATES: Array<MicrosoftTeamsAppInstallState> = [
|
|
83
|
+
MicrosoftTeamsAppInstallState.Installed,
|
|
84
|
+
MicrosoftTeamsAppInstallState.NotInstalled,
|
|
85
|
+
MicrosoftTeamsAppInstallState.PermissionDenied,
|
|
86
|
+
MicrosoftTeamsAppInstallState.Unknown,
|
|
87
|
+
];
|
|
88
|
+
|
|
89
|
+
function expectWrongPackageNote(message: string): void {
|
|
90
|
+
expect(message).toContain(WRONG_PACKAGE_IS_DIFFERENT);
|
|
91
|
+
expect(message).toContain(WRONG_PACKAGE_POINTS_AT_CLOUD);
|
|
92
|
+
expect(message).toContain(WRONG_PACKAGE_FIX);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
describe("MicrosoftTeamsAppInstallState", () => {
|
|
96
|
+
test("PermissionDenied is a distinct state, not an alias of Unknown", () => {
|
|
97
|
+
/*
|
|
98
|
+
* The whole point of splitting it out: a tenant that answers "I won't tell
|
|
99
|
+
* you" is fixable in a minute, and a transport failure is not. Collapsing
|
|
100
|
+
* the two back together silently removes the one actionable hint.
|
|
101
|
+
*/
|
|
102
|
+
expect(MicrosoftTeamsAppInstallState.PermissionDenied).toBe(
|
|
103
|
+
"PermissionDenied",
|
|
104
|
+
);
|
|
105
|
+
expect(MicrosoftTeamsAppInstallState.PermissionDenied).not.toBe(
|
|
106
|
+
MicrosoftTeamsAppInstallState.Unknown,
|
|
107
|
+
);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
test("the permission the error names is the one the setup docs tell you to grant", () => {
|
|
111
|
+
/*
|
|
112
|
+
* A real cross-file check rather than asserting the constant equals its own
|
|
113
|
+
* literal. The error string builds off the constant while the setup guide
|
|
114
|
+
* and the docs site spell it out in prose, so a rename here silently leaves
|
|
115
|
+
* an admin hunting for a permission the documentation never mentions.
|
|
116
|
+
*/
|
|
117
|
+
const docSources: Array<string> = [
|
|
118
|
+
"../../../../../App/FeatureSet/Docs/Content/en/self-hosted/microsoft-teams-integration.md",
|
|
119
|
+
"../../../../../App/FeatureSet/Dashboard/src/Components/MicrosoftTeams/MicrosoftTeamsIntegrationDocumentation.tsx",
|
|
120
|
+
].map((relativePath: string) => {
|
|
121
|
+
return fs.readFileSync(path.join(__dirname, relativePath), "utf8");
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
for (const source of docSources) {
|
|
125
|
+
expect(source).toContain(MICROSOFT_TEAMS_INSTALL_READ_PERMISSION);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
describe("MicrosoftTeamsUtil.getBotNotInTeamMessage - wrong-package note", () => {
|
|
131
|
+
test("the standard-channel branch keeps its install path AND names the wrong-package case", () => {
|
|
132
|
+
const message: string = MicrosoftTeamsUtil.getBotNotInTeamMessage({
|
|
133
|
+
channelName: "General",
|
|
134
|
+
membershipType: "standard",
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
expect(message).toContain('team that owns "General"');
|
|
138
|
+
expect(message).toContain('"..."');
|
|
139
|
+
expect(message).toContain("Manage team > Apps > More apps");
|
|
140
|
+
expectWrongPackageNote(message);
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
test("the private-channel branch keeps its install path and deliberately omits the wrong-package note", () => {
|
|
144
|
+
/*
|
|
145
|
+
* The note must NOT appear here. The install check reads
|
|
146
|
+
* /teams/{id}/installedApps — team scope — while a private channel needs its
|
|
147
|
+
* own channel-scope install, so a perfectly correct channel install still
|
|
148
|
+
* comes back NotInstalled. Telling that admin their package is the wrong one
|
|
149
|
+
* and to "remove it" would talk them into destroying a working install to
|
|
150
|
+
* fix a problem they do not have.
|
|
151
|
+
*/
|
|
152
|
+
const message: string = MicrosoftTeamsUtil.getBotNotInTeamMessage({
|
|
153
|
+
channelName: "Ops War Room",
|
|
154
|
+
membershipType: "private",
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
expect(message).toContain('private channel "Ops War Room"');
|
|
158
|
+
expect(message).toContain("Manage channel > Apps > Add an app");
|
|
159
|
+
expect(message).toContain(
|
|
160
|
+
"Installing OneUptime in the parent team does not cover private channels.",
|
|
161
|
+
);
|
|
162
|
+
expect(message).not.toContain(WRONG_PACKAGE_IS_DIFFERENT);
|
|
163
|
+
expect(message).not.toContain("Remove it");
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
test("an undefined membershipType takes the standard branch and still carries the note", () => {
|
|
167
|
+
const message: string = MicrosoftTeamsUtil.getBotNotInTeamMessage({
|
|
168
|
+
channelName: "General",
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
expect(message).toContain("Manage team > Apps > More apps");
|
|
172
|
+
expect(message).not.toContain("Manage channel");
|
|
173
|
+
expectWrongPackageNote(message);
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
test("the note explains why a OneUptime tile is not proof of anything", () => {
|
|
177
|
+
/*
|
|
178
|
+
* "Remove it, then upload ours" is the actionable half. Without it the note
|
|
179
|
+
* only tells the admin that what they are looking at is wrong, which is
|
|
180
|
+
* where they already were.
|
|
181
|
+
*/
|
|
182
|
+
const message: string = MicrosoftTeamsUtil.getBotNotInTeamMessage({
|
|
183
|
+
channelName: "General",
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
expect(message).toContain("If a tile named OneUptime is already listed");
|
|
187
|
+
expect(message).toContain("Remove it");
|
|
188
|
+
expect(message).toContain("MICROSOFT_TEAMS_APP_CLIENT_ID");
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
test("the note is appended to, not substituted for, the install instructions", () => {
|
|
192
|
+
const standard: string = MicrosoftTeamsUtil.getBotNotInTeamMessage({
|
|
193
|
+
channelName: "General",
|
|
194
|
+
membershipType: "standard",
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
expect(standard.indexOf("Manage team > Apps > More apps")).toBeLessThan(
|
|
198
|
+
standard.indexOf(WRONG_PACKAGE_IS_DIFFERENT),
|
|
199
|
+
);
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
test("a channel name containing quotes is interpolated verbatim in both branches", () => {
|
|
203
|
+
/*
|
|
204
|
+
* Teams allows quotes in channel names, and the message wraps the name in
|
|
205
|
+
* quotes of its own. Nothing escapes or strips it, and nothing should
|
|
206
|
+
* silently truncate at the inner quote.
|
|
207
|
+
*/
|
|
208
|
+
const channelName: string = 'The "Real" Ops Channel';
|
|
209
|
+
|
|
210
|
+
const standard: string = MicrosoftTeamsUtil.getBotNotInTeamMessage({
|
|
211
|
+
channelName: channelName,
|
|
212
|
+
membershipType: "standard",
|
|
213
|
+
});
|
|
214
|
+
const privateChannel: string = MicrosoftTeamsUtil.getBotNotInTeamMessage({
|
|
215
|
+
channelName: channelName,
|
|
216
|
+
membershipType: "private",
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
expect(standard).toContain(`team that owns "${channelName}"`);
|
|
220
|
+
expect(privateChannel).toContain(`private channel "${channelName}"`);
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
test("a unicode channel name is interpolated verbatim in both branches", () => {
|
|
224
|
+
const channelName: string = "運用 – アラート 🚨";
|
|
225
|
+
|
|
226
|
+
const standard: string = MicrosoftTeamsUtil.getBotNotInTeamMessage({
|
|
227
|
+
channelName: channelName,
|
|
228
|
+
membershipType: "standard",
|
|
229
|
+
});
|
|
230
|
+
const privateChannel: string = MicrosoftTeamsUtil.getBotNotInTeamMessage({
|
|
231
|
+
channelName: channelName,
|
|
232
|
+
membershipType: "private",
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
expect(standard).toContain(`team that owns "${channelName}"`);
|
|
236
|
+
expect(privateChannel).toContain(`private channel "${channelName}"`);
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
test("an empty channel name still produces the instructions rather than an empty message", () => {
|
|
240
|
+
const message: string = MicrosoftTeamsUtil.getBotNotInTeamMessage({
|
|
241
|
+
channelName: "",
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
expect(message).toContain("Manage team > Apps > More apps");
|
|
245
|
+
expectWrongPackageNote(message);
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
describe("MicrosoftTeamsUtil.getRosterRejectionMessage - invariants across every install state", () => {
|
|
250
|
+
test.each(ALL_INSTALL_STATES)(
|
|
251
|
+
"%s names the refused channel and blames the roster",
|
|
252
|
+
(installState: MicrosoftTeamsAppInstallState) => {
|
|
253
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
254
|
+
channelName: "test public channel",
|
|
255
|
+
installState: installState,
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
expect(message).toContain(
|
|
259
|
+
'Microsoft Teams refused the message to "test public channel"',
|
|
260
|
+
);
|
|
261
|
+
expect(message).toContain(
|
|
262
|
+
"the OneUptime bot is not a member of that conversation",
|
|
263
|
+
);
|
|
264
|
+
},
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
test.each(ALL_INSTALL_STATES)(
|
|
268
|
+
"%s always lists the Azure Bot Microsoft Teams channel as a cause",
|
|
269
|
+
(installState: MicrosoftTeamsAppInstallState) => {
|
|
270
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
271
|
+
channelName: "General",
|
|
272
|
+
installState: installState,
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
expect(message).toContain(AZURE_BOT_CAUSE);
|
|
276
|
+
},
|
|
277
|
+
);
|
|
278
|
+
|
|
279
|
+
/*
|
|
280
|
+
* Removed: a test asserting getRosterRejectionMessage never contains "The
|
|
281
|
+
* OneUptime app is not installed in the Microsoft Teams team". That sentence
|
|
282
|
+
* only ever lived in getBotNotInTeamMessage, so the assertion could not fail
|
|
283
|
+
* before or after this change. The property it was reaching for — that a
|
|
284
|
+
* refusal to answer never reaches the admin as a statement that the app is
|
|
285
|
+
* missing — is real, but it belongs on the send path where the two builders
|
|
286
|
+
* are actually selected between. It is covered in
|
|
287
|
+
* MicrosoftTeamsChannelSend.test.ts ("a Graph permission refusal reaches the
|
|
288
|
+
* admin as a named grant, end to end").
|
|
289
|
+
*/
|
|
290
|
+
test.each(ALL_INSTALL_STATES)(
|
|
291
|
+
"%s names the channel it is talking about",
|
|
292
|
+
(installState: MicrosoftTeamsAppInstallState) => {
|
|
293
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
294
|
+
channelName: "General",
|
|
295
|
+
installState: installState,
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
expect(message).toContain('"General"');
|
|
299
|
+
},
|
|
300
|
+
);
|
|
301
|
+
|
|
302
|
+
test.each(ALL_INSTALL_STATES)(
|
|
303
|
+
"%s produces a single sentence-terminated message with no dangling separators",
|
|
304
|
+
(installState: MicrosoftTeamsAppInstallState) => {
|
|
305
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
306
|
+
channelName: "General",
|
|
307
|
+
installState: installState,
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
expect(message.endsWith(".")).toBe(true);
|
|
311
|
+
expect(message).not.toContain(";.");
|
|
312
|
+
expect(message).not.toContain(" ");
|
|
313
|
+
},
|
|
314
|
+
);
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
describe("MicrosoftTeamsUtil.getRosterRejectionMessage - the PermissionDenied hint", () => {
|
|
318
|
+
test("PermissionDenied names the permission, the grant, and the retry", () => {
|
|
319
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
320
|
+
channelName: "General",
|
|
321
|
+
installState: MicrosoftTeamsAppInstallState.PermissionDenied,
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
expect(message).toContain(MICROSOFT_TEAMS_INSTALL_READ_PERMISSION);
|
|
325
|
+
expect(message).toContain(
|
|
326
|
+
"Microsoft Graph denied the installed-apps check",
|
|
327
|
+
);
|
|
328
|
+
expect(message).toContain("application permission");
|
|
329
|
+
expect(message).toContain("re-grant admin consent");
|
|
330
|
+
expect(message).toContain("try again");
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
test.each([
|
|
334
|
+
MicrosoftTeamsAppInstallState.Installed,
|
|
335
|
+
MicrosoftTeamsAppInstallState.NotInstalled,
|
|
336
|
+
MicrosoftTeamsAppInstallState.Unknown,
|
|
337
|
+
])(
|
|
338
|
+
"%s does NOT carry the grant-this-permission hint",
|
|
339
|
+
(installState: MicrosoftTeamsAppInstallState) => {
|
|
340
|
+
/*
|
|
341
|
+
* The hint is only true when Graph refused. Attaching it to a transport
|
|
342
|
+
* failure or to a successful read sends an admin to change a permission
|
|
343
|
+
* that was never the problem.
|
|
344
|
+
*/
|
|
345
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
346
|
+
channelName: "General",
|
|
347
|
+
installState: installState,
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
expect(message).not.toContain(MICROSOFT_TEAMS_INSTALL_READ_PERMISSION);
|
|
351
|
+
expect(message).not.toContain(
|
|
352
|
+
"Microsoft Graph denied the installed-apps check",
|
|
353
|
+
);
|
|
354
|
+
},
|
|
355
|
+
);
|
|
356
|
+
|
|
357
|
+
test("the hint survives a private channel, which takes a different causes branch", () => {
|
|
358
|
+
/*
|
|
359
|
+
* membershipType decides the FIRST cause; installState decides the hint.
|
|
360
|
+
* They are independent, and a private channel in a tenant that refused the
|
|
361
|
+
* Graph read needs both.
|
|
362
|
+
*/
|
|
363
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
364
|
+
channelName: "Ops War Room",
|
|
365
|
+
membershipType: "private",
|
|
366
|
+
installState: MicrosoftTeamsAppInstallState.PermissionDenied,
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
expect(message).toContain("Manage channel > Apps");
|
|
370
|
+
expect(message).toContain(MICROSOFT_TEAMS_INSTALL_READ_PERMISSION);
|
|
371
|
+
});
|
|
372
|
+
});
|
|
373
|
+
|
|
374
|
+
describe("MicrosoftTeamsUtil.getRosterRejectionMessage - the Installed branch no longer re-litigates the package", () => {
|
|
375
|
+
test("Installed states that the package is ruled out", () => {
|
|
376
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
377
|
+
channelName: "General",
|
|
378
|
+
installState: MicrosoftTeamsAppInstallState.Installed,
|
|
379
|
+
});
|
|
380
|
+
|
|
381
|
+
/*
|
|
382
|
+
* "Probably", not "definitely". The check matches teamsApp.externalId, which
|
|
383
|
+
* is the manifest id; only OneUptime's own generator guarantees that equals
|
|
384
|
+
* the bot id, so a hand-edited manifest can satisfy it and still carry a
|
|
385
|
+
* foreign bot. The wording must not promise more than the evidence supports.
|
|
386
|
+
*/
|
|
387
|
+
expect(message).toContain(
|
|
388
|
+
"already matches this deployment's MICROSOFT_TEAMS_APP_CLIENT_ID",
|
|
389
|
+
);
|
|
390
|
+
expect(message).toContain("probably not the problem");
|
|
391
|
+
expect(message).not.toContain("the package is not the problem");
|
|
392
|
+
});
|
|
393
|
+
|
|
394
|
+
test("Installed points at the Azure Bot resource as the remaining cause", () => {
|
|
395
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
396
|
+
channelName: "General",
|
|
397
|
+
installState: MicrosoftTeamsAppInstallState.Installed,
|
|
398
|
+
});
|
|
399
|
+
|
|
400
|
+
expect(message).toContain(
|
|
401
|
+
"the most likely remaining cause is the Azure Bot resource",
|
|
402
|
+
);
|
|
403
|
+
expect(message).toContain(AZURE_BOT_CAUSE);
|
|
404
|
+
});
|
|
405
|
+
|
|
406
|
+
test("Installed no longer tells the admin to go and re-verify the package", () => {
|
|
407
|
+
/*
|
|
408
|
+
* Behaviour change, pinned deliberately. Graph already compared the
|
|
409
|
+
* installed package's externalId against this deployment's client id — that
|
|
410
|
+
* is the entire reason the state is Installed. Asking the admin to redo the
|
|
411
|
+
* check by eye is worse than saying nothing, because it reads as a message
|
|
412
|
+
* that did not take its own evidence into account.
|
|
413
|
+
*/
|
|
414
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
415
|
+
channelName: "General",
|
|
416
|
+
installState: MicrosoftTeamsAppInstallState.Installed,
|
|
417
|
+
});
|
|
418
|
+
|
|
419
|
+
expect(message).not.toContain(OLD_RE_VERIFY_PACKAGE_INSTRUCTION);
|
|
420
|
+
expect(message).not.toContain("Manage team > Apps");
|
|
421
|
+
/*
|
|
422
|
+
* The identifier itself stays. It is the value an admin compares against the
|
|
423
|
+
* installed app's bot id, so naming it is useful; what had to go was the
|
|
424
|
+
* instruction to go and redo a check OneUptime had already done for them.
|
|
425
|
+
*/
|
|
426
|
+
expect(message).toContain("MICROSOFT_TEAMS_APP_CLIENT_ID");
|
|
427
|
+
});
|
|
428
|
+
|
|
429
|
+
test.each([
|
|
430
|
+
MicrosoftTeamsAppInstallState.NotInstalled,
|
|
431
|
+
MicrosoftTeamsAppInstallState.Unknown,
|
|
432
|
+
])(
|
|
433
|
+
"%s still warns that the added app may be somebody else's package",
|
|
434
|
+
(installState: MicrosoftTeamsAppInstallState) => {
|
|
435
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
436
|
+
channelName: "General",
|
|
437
|
+
installState: installState,
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
expect(message).toContain("Manage team > Apps > More apps");
|
|
441
|
+
expect(message).toContain(
|
|
442
|
+
"the app that was added is a different package whose bot id is not this deployment's MICROSOFT_TEAMS_APP_CLIENT_ID",
|
|
443
|
+
);
|
|
444
|
+
},
|
|
445
|
+
);
|
|
446
|
+
|
|
447
|
+
test("PermissionDenied shares the not-installed causes, because we could not rule them out", () => {
|
|
448
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
449
|
+
channelName: "General",
|
|
450
|
+
installState: MicrosoftTeamsAppInstallState.PermissionDenied,
|
|
451
|
+
});
|
|
452
|
+
|
|
453
|
+
expect(message).toContain("Manage team > Apps > More apps");
|
|
454
|
+
expect(message).toContain(
|
|
455
|
+
"the app that was added is a different package whose bot id is not this deployment's MICROSOFT_TEAMS_APP_CLIENT_ID",
|
|
456
|
+
);
|
|
457
|
+
});
|
|
458
|
+
|
|
459
|
+
test.each(ALL_INSTALL_STATES)(
|
|
460
|
+
"a private channel takes the private branch regardless of installState (%s)",
|
|
461
|
+
(installState: MicrosoftTeamsAppInstallState) => {
|
|
462
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
463
|
+
channelName: "Ops War Room",
|
|
464
|
+
membershipType: "private",
|
|
465
|
+
installState: installState,
|
|
466
|
+
});
|
|
467
|
+
|
|
468
|
+
expect(message).toContain(
|
|
469
|
+
'"Ops War Room" is a private channel, which needs the app installed into the channel itself',
|
|
470
|
+
);
|
|
471
|
+
expect(message).toContain("Manage channel > Apps > Add an app");
|
|
472
|
+
expect(message).toContain("a team-level install does not cover it");
|
|
473
|
+
expect(message).not.toContain("Manage team > Apps");
|
|
474
|
+
},
|
|
475
|
+
);
|
|
476
|
+
|
|
477
|
+
test("only the exact string 'private' selects the private-channel cause", () => {
|
|
478
|
+
/*
|
|
479
|
+
* Graph returns membershipType lowercase, so the comparison is exact. Pin
|
|
480
|
+
* it here too: a loosened comparison would silently change which cause an
|
|
481
|
+
* admin is shown first.
|
|
482
|
+
*/
|
|
483
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
484
|
+
channelName: "General",
|
|
485
|
+
membershipType: "Private",
|
|
486
|
+
installState: MicrosoftTeamsAppInstallState.Unknown,
|
|
487
|
+
});
|
|
488
|
+
|
|
489
|
+
expect(message).toContain("Manage team > Apps > More apps");
|
|
490
|
+
expect(message).not.toContain("Manage channel");
|
|
491
|
+
});
|
|
492
|
+
});
|
|
493
|
+
|
|
494
|
+
describe("MicrosoftTeamsUtil.getRosterRejectionMessage - Microsoft's raw response", () => {
|
|
495
|
+
test("an Error has its message appended in quotes", () => {
|
|
496
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
497
|
+
channelName: "General",
|
|
498
|
+
installState: MicrosoftTeamsAppInstallState.Unknown,
|
|
499
|
+
microsoftError: new Error(
|
|
500
|
+
"The bot is not part of the conversation roster.",
|
|
501
|
+
),
|
|
502
|
+
});
|
|
503
|
+
|
|
504
|
+
expect(message).toContain(
|
|
505
|
+
`${MICROSOFT_QUOTE_PREFIX}: "The bot is not part of the conversation roster."`,
|
|
506
|
+
);
|
|
507
|
+
});
|
|
508
|
+
|
|
509
|
+
test("a subclassed Error is treated the same as a plain Error", () => {
|
|
510
|
+
class GraphError extends Error {}
|
|
511
|
+
|
|
512
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
513
|
+
channelName: "General",
|
|
514
|
+
installState: MicrosoftTeamsAppInstallState.Unknown,
|
|
515
|
+
microsoftError: new GraphError("BotNotInConversationRoster"),
|
|
516
|
+
});
|
|
517
|
+
|
|
518
|
+
expect(message).toContain(
|
|
519
|
+
`${MICROSOFT_QUOTE_PREFIX}: "BotNotInConversationRoster"`,
|
|
520
|
+
);
|
|
521
|
+
});
|
|
522
|
+
|
|
523
|
+
test("a plain string is appended as-is", () => {
|
|
524
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
525
|
+
channelName: "General",
|
|
526
|
+
installState: MicrosoftTeamsAppInstallState.Unknown,
|
|
527
|
+
microsoftError: "Forbidden: bot is not in roster",
|
|
528
|
+
});
|
|
529
|
+
|
|
530
|
+
expect(message).toContain(
|
|
531
|
+
`${MICROSOFT_QUOTE_PREFIX}: "Forbidden: bot is not in roster"`,
|
|
532
|
+
);
|
|
533
|
+
});
|
|
534
|
+
|
|
535
|
+
test.each(ALL_INSTALL_STATES)(
|
|
536
|
+
"an undefined microsoftError appends nothing (%s)",
|
|
537
|
+
(installState: MicrosoftTeamsAppInstallState) => {
|
|
538
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
539
|
+
channelName: "General",
|
|
540
|
+
installState: installState,
|
|
541
|
+
microsoftError: undefined,
|
|
542
|
+
});
|
|
543
|
+
|
|
544
|
+
expect(message).not.toContain(MICROSOFT_QUOTE_PREFIX);
|
|
545
|
+
},
|
|
546
|
+
);
|
|
547
|
+
|
|
548
|
+
test("a null microsoftError appends nothing rather than the word null", () => {
|
|
549
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
550
|
+
channelName: "General",
|
|
551
|
+
installState: MicrosoftTeamsAppInstallState.Unknown,
|
|
552
|
+
microsoftError: null,
|
|
553
|
+
});
|
|
554
|
+
|
|
555
|
+
expect(message).not.toContain(MICROSOFT_QUOTE_PREFIX);
|
|
556
|
+
expect(message).not.toContain("null");
|
|
557
|
+
});
|
|
558
|
+
|
|
559
|
+
test("an empty-string microsoftError appends nothing rather than an empty quote", () => {
|
|
560
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
561
|
+
channelName: "General",
|
|
562
|
+
installState: MicrosoftTeamsAppInstallState.Unknown,
|
|
563
|
+
microsoftError: "",
|
|
564
|
+
});
|
|
565
|
+
|
|
566
|
+
expect(message).not.toContain(MICROSOFT_QUOTE_PREFIX);
|
|
567
|
+
expect(message).not.toContain('""');
|
|
568
|
+
});
|
|
569
|
+
|
|
570
|
+
test("an Error with an empty message appends nothing", () => {
|
|
571
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
572
|
+
channelName: "General",
|
|
573
|
+
installState: MicrosoftTeamsAppInstallState.Unknown,
|
|
574
|
+
microsoftError: new Error(""),
|
|
575
|
+
});
|
|
576
|
+
|
|
577
|
+
expect(message).not.toContain(MICROSOFT_QUOTE_PREFIX);
|
|
578
|
+
});
|
|
579
|
+
});
|
|
580
|
+
|
|
581
|
+
describe("MicrosoftTeamsUtil.getRosterRejectionMessage - ordering when both suffixes apply", () => {
|
|
582
|
+
test("PermissionDenied plus a Microsoft error yields both, hint first", () => {
|
|
583
|
+
/*
|
|
584
|
+
* The hint is the thing the admin can act on; Microsoft's raw wording is
|
|
585
|
+
* evidence. Evidence last, so the message does not trail off into the same
|
|
586
|
+
* opaque sentence that sent them here.
|
|
587
|
+
*/
|
|
588
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
589
|
+
channelName: "General",
|
|
590
|
+
installState: MicrosoftTeamsAppInstallState.PermissionDenied,
|
|
591
|
+
microsoftError: new Error(
|
|
592
|
+
"The bot is not part of the conversation roster.",
|
|
593
|
+
),
|
|
594
|
+
});
|
|
595
|
+
|
|
596
|
+
const hintIndex: number = message.indexOf(
|
|
597
|
+
MICROSOFT_TEAMS_INSTALL_READ_PERMISSION,
|
|
598
|
+
);
|
|
599
|
+
const quoteIndex: number = message.indexOf(MICROSOFT_QUOTE_PREFIX);
|
|
600
|
+
|
|
601
|
+
expect(hintIndex).toBeGreaterThan(-1);
|
|
602
|
+
expect(quoteIndex).toBeGreaterThan(-1);
|
|
603
|
+
expect(hintIndex).toBeLessThan(quoteIndex);
|
|
604
|
+
});
|
|
605
|
+
|
|
606
|
+
test("both suffixes come after the list of likely causes", () => {
|
|
607
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
608
|
+
channelName: "General",
|
|
609
|
+
installState: MicrosoftTeamsAppInstallState.PermissionDenied,
|
|
610
|
+
microsoftError: "Forbidden",
|
|
611
|
+
});
|
|
612
|
+
|
|
613
|
+
const causesIndex: number = message.indexOf(AZURE_BOT_CAUSE);
|
|
614
|
+
|
|
615
|
+
expect(causesIndex).toBeGreaterThan(-1);
|
|
616
|
+
expect(causesIndex).toBeLessThan(
|
|
617
|
+
message.indexOf(MICROSOFT_TEAMS_INSTALL_READ_PERMISSION),
|
|
618
|
+
);
|
|
619
|
+
expect(causesIndex).toBeLessThan(message.indexOf(MICROSOFT_QUOTE_PREFIX));
|
|
620
|
+
});
|
|
621
|
+
|
|
622
|
+
test("a non-PermissionDenied state with a Microsoft error yields only the quote", () => {
|
|
623
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
624
|
+
channelName: "General",
|
|
625
|
+
installState: MicrosoftTeamsAppInstallState.Unknown,
|
|
626
|
+
microsoftError: "Forbidden",
|
|
627
|
+
});
|
|
628
|
+
|
|
629
|
+
expect(message).toContain(MICROSOFT_QUOTE_PREFIX);
|
|
630
|
+
expect(message).not.toContain(MICROSOFT_TEAMS_INSTALL_READ_PERMISSION);
|
|
631
|
+
});
|
|
632
|
+
|
|
633
|
+
test("PermissionDenied without a Microsoft error yields only the hint", () => {
|
|
634
|
+
const message: string = MicrosoftTeamsUtil.getRosterRejectionMessage({
|
|
635
|
+
channelName: "General",
|
|
636
|
+
installState: MicrosoftTeamsAppInstallState.PermissionDenied,
|
|
637
|
+
});
|
|
638
|
+
|
|
639
|
+
expect(message).toContain(MICROSOFT_TEAMS_INSTALL_READ_PERMISSION);
|
|
640
|
+
expect(message).not.toContain(MICROSOFT_QUOTE_PREFIX);
|
|
641
|
+
});
|
|
642
|
+
});
|