@oneuptime/common 12.0.32 → 12.0.33
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/Span.ts +14 -0
- package/Models/DatabaseModels/EnterpriseLicense.ts +56 -0
- package/Models/DatabaseModels/Index.ts +10 -0
- package/Models/DatabaseModels/Monitor.ts +76 -0
- package/Models/DatabaseModels/NetworkAlertPolicy.ts +690 -0
- package/Models/DatabaseModels/NetworkDevice.ts +176 -1
- package/Models/DatabaseModels/NetworkSite.ts +201 -2
- package/Models/DatabaseModels/NetworkSiteType.ts +102 -3
- package/Models/DatabaseModels/NetworkSnmpCredentialProfile.ts +841 -0
- package/Models/DatabaseModels/TelemetryException.ts +119 -0
- package/Models/DatabaseModels/UserNotificationEmailRollupBatch.ts +334 -0
- package/Models/DatabaseModels/UserNotificationEmailRollupItem.ts +370 -0
- package/Models/DatabaseModels/UserNotificationEmailRollupSetting.ts +282 -0
- package/Server/API/EnterpriseLicenseAPI.ts +391 -64
- package/Server/API/LlmProviderAPI.ts +137 -22
- package/Server/EnvironmentConfig.ts +14 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.ts +55 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.ts +124 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.ts +132 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.ts +79 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.ts +191 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
- package/Server/Infrastructure/QueueWorker.ts +38 -8
- package/Server/Middleware/BearerTokenAuthorization.ts +12 -0
- package/Server/Middleware/ProjectAuthorization.ts +11 -0
- package/Server/Middleware/SCIMAuthorization.ts +12 -0
- package/Server/Middleware/TelemetryIngest.ts +11 -0
- package/Server/Services/AIBillingService.ts +101 -27
- package/Server/Services/EnterpriseLicenseInstanceService.ts +197 -0
- package/Server/Services/EnterpriseLicenseService.ts +55 -0
- package/Server/Services/Index.ts +10 -0
- package/Server/Services/MonitorService.ts +143 -21
- package/Server/Services/MonitorStatusTimelineService.ts +150 -8
- package/Server/Services/MonitorTemplateService.ts +217 -1
- package/Server/Services/NetworkAlertPolicyEngineService.ts +2159 -0
- package/Server/Services/NetworkAlertPolicyService.ts +944 -0
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +9 -10
- package/Server/Services/NetworkDeviceAutoImportRuleService.ts +60 -15
- package/Server/Services/NetworkDeviceService.ts +1032 -73
- package/Server/Services/NetworkSiteService.ts +1502 -129
- package/Server/Services/NetworkSiteTypeService.ts +1216 -0
- package/Server/Services/NetworkSnmpCredentialProfileService.ts +238 -0
- package/Server/Services/NotificationService.ts +118 -28
- package/Server/Services/ProjectService.ts +105 -48
- package/Server/Services/StatusPagePrivateUserService.ts +103 -3
- package/Server/Services/UserNotificationEmailRollupBatchService.ts +78 -0
- package/Server/Services/UserNotificationEmailRollupItemService.ts +79 -0
- package/Server/Services/UserNotificationEmailRollupSettingService.ts +113 -0
- package/Server/Services/UserNotificationSettingService.ts +62 -25
- package/Server/Services/UserService.ts +95 -0
- package/Server/Types/Database/QueryHelper.ts +2 -2
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +14 -3
- package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +10 -0
- package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +10 -0
- package/Server/Utils/AI/SRE/Insights/InsightTriageRunner.ts +62 -1
- package/Server/Utils/AI/Toolbox/AlertTools.ts +15 -1
- package/Server/Utils/Billing/BillingFailureNoticeThrottle.ts +80 -0
- package/Server/Utils/DataSource/HttpFetch.ts +9 -2
- package/Server/Utils/EmailRollup/EmailRollupConstants.ts +98 -0
- package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +872 -0
- package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +781 -0
- package/Server/Utils/EmailRollup/EmailRollupWriter.ts +368 -0
- package/Server/Utils/LLM/LLMService.ts +78 -0
- package/Server/Utils/LogRedaction.ts +8 -0
- package/Server/Utils/Logger.ts +79 -1
- package/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.ts +190 -0
- package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +9 -2
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +61 -1
- package/Server/Utils/Monitor/MonitorCriteriaDataExtractor.ts +14 -0
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +49 -0
- package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +255 -4
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +41 -0
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +43 -0
- package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +499 -19
- package/Server/Utils/Monitor/NetworkDeviceMetricUtil.ts +66 -10
- package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +238 -44
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +146 -39
- package/Server/Utils/NetworkDevice/DeviceHealthAggregation.ts +31 -18
- package/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.ts +213 -0
- package/Server/Utils/OutboundUserAgent.ts +152 -0
- package/Server/Utils/StartServer.ts +51 -19
- package/Server/Utils/Telemetry/CaptureSpan.ts +32 -8
- package/Server/Utils/Telemetry/ErrorClassResolver.ts +120 -0
- package/Server/Utils/Telemetry/SpanUtil.ts +33 -0
- package/Server/Utils/Telemetry.ts +198 -51
- package/Server/Views/Partials/SensitiveUrlToken.ejs +140 -0
- package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +134 -33
- package/Tests/App/Dashboard/AskAiSuggestedPrompts.test.ts +279 -0
- package/Tests/App/Dashboard/DashboardEditPermissions.test.tsx +517 -0
- package/Tests/App/Dashboard/DashboardVariablesDiscard.test.tsx +26 -0
- package/Tests/App/Dashboard/DeviceStatusHero.test.tsx +588 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +18 -9
- package/Tests/App/Dashboard/MonitorCreateFromMonitorBackedDevice.test.tsx +632 -0
- package/Tests/App/Dashboard/MonitorRecommendationCreateProgress.test.tsx +682 -0
- package/Tests/App/Dashboard/MonitorTypePicker.test.tsx +4 -2
- package/Tests/App/Dashboard/NetworkDeviceCreateFormMonitorBinding.test.tsx +676 -0
- package/Tests/App/Dashboard/NetworkDeviceCreateFormPingMonitor.test.tsx +791 -0
- package/Tests/App/Dashboard/NetworkDeviceCreateFormProbeAndSnmp.test.tsx +833 -0
- package/Tests/App/Dashboard/NetworkDeviceCriteriaFilter.test.ts +161 -0
- package/Tests/App/Dashboard/NetworkDeviceSettingsMonitoringSection.test.tsx +458 -0
- package/Tests/App/Dashboard/NetworkSideMenu.test.tsx +41 -5
- package/Tests/App/Dashboard/PingMonitorProvisioning.test.ts +368 -0
- package/Tests/App/Dashboard/RecommendationCard.test.tsx +796 -0
- package/Tests/App/Dashboard/RecommendationToolbar.test.tsx +519 -0
- package/Tests/App/Dashboard/RecommendationsList.test.tsx +661 -0
- package/Tests/App/Dashboard/UseBulkCreatePingMonitors.test.tsx +899 -0
- package/Tests/App/Dashboard/UseBulkSnmpCredentialProfileActions.test.tsx +732 -0
- package/Tests/App/SensitiveUrlTokenBootstrap.test.ts +256 -0
- package/Tests/App/StatusPage/StatusPageIndexPageRobotsMeta.test.ts +11 -1
- package/Tests/App/StatusPage/StatusPageLoginCodeBootstrap.test.ts +9 -4
- package/Tests/Models/NetworkSiteHierarchy.test.ts +41 -4
- package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +951 -7
- package/Tests/Server/API/LlmProviderConnectionTest.test.ts +522 -0
- package/Tests/Server/Infrastructure/Postgres/NetworkSnmpCredentialProfilesAndAlertPoliciesMigration.test.ts +854 -0
- package/Tests/Server/Infrastructure/Postgres/SchemaMigrationsOrdering.test.ts +18 -0
- package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupTableMigration.test.ts +535 -0
- package/Tests/Server/Services/AIChatPrivacyPin.test.ts +560 -0
- package/Tests/Server/Services/BillingRechargeOwnerEmailGuards.test.ts +783 -0
- package/Tests/Server/Services/EnterpriseLicenseInstanceServiceDeletionUsage.test.ts +707 -0
- package/Tests/Server/Services/EnterpriseLicenseServiceUsageAggregationLock.test.ts +329 -0
- package/Tests/Server/Services/MonitorServiceDeleteNetworkDeviceCleanup.test.ts +294 -0
- package/Tests/Server/Services/MonitorStatusBridgeProbePath.test.ts +802 -0
- package/Tests/Server/Services/MonitorStatusTimelineService.test.ts +72 -2
- package/Tests/Server/Services/NetworkAlertPolicyEngineHooks.test.ts +752 -0
- package/Tests/Server/Services/NetworkAlertPolicyEngineService.test.ts +1849 -0
- package/Tests/Server/Services/NetworkAlertPolicyModel.test.ts +1793 -0
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +47 -4
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleService.test.ts +97 -12
- package/Tests/Server/Services/NetworkDeviceAutoMonitorLifecycle.test.ts +148 -3
- package/Tests/Server/Services/NetworkDeviceMonitorBindingUpdateGuard.test.ts +514 -0
- package/Tests/Server/Services/NetworkDeviceMonitorStatusStamp.test.ts +447 -58
- package/Tests/Server/Services/NetworkDeviceMonitoringMethodTransition.test.ts +739 -0
- package/Tests/Server/Services/NetworkDevicePollingTenancy.test.ts +501 -0
- package/Tests/Server/Services/NetworkDeviceSiteDefaultProbe.test.ts +432 -0
- package/Tests/Server/Services/NetworkSiteMonitoringDefaults.test.ts +498 -0
- package/Tests/Server/Services/NetworkSiteRollupPolicyAndMaintenance.test.ts +337 -55
- package/Tests/Server/Services/NetworkSiteService.test.ts +1868 -131
- package/Tests/Server/Services/NetworkSiteTypeService.test.ts +1109 -0
- package/Tests/Server/Services/NetworkSnmpCredentialProfileModel.test.ts +926 -0
- package/Tests/Server/Services/NetworkSnmpCredentialProfileService.test.ts +796 -0
- package/Tests/Server/Services/ProjectServiceNetworkSiteTypeDefaults.test.ts +214 -0
- package/Tests/Server/Services/StatusPagePrivateUserEmailChangePasswordResetExpiry.test.ts +269 -0
- package/Tests/Server/Services/UserEmailChangePasswordResetExpiry.test.ts +472 -0
- package/Tests/Server/Services/UserNotificationEmailRollupModels.test.ts +569 -0
- package/Tests/Server/Services/UserNotificationEmailRollupSettingModel.test.ts +314 -0
- package/Tests/Server/Services/UserNotificationEmailRollupSettingService.test.ts +409 -0
- package/Tests/Server/Services/UserNotificationSettingRollupRouting.test.ts +856 -0
- package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +102 -1
- package/Tests/Server/Types/Database/Permissions/DashboardAccessPermission.test.ts +321 -0
- package/Tests/Server/Types/Database/QueryHelperOperators.test.ts +17 -0
- package/Tests/Server/Utils/AI/AlertMonitorFilters.test.ts +124 -0
- package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +208 -0
- package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +235 -0
- package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +253 -0
- package/Tests/Server/Utils/Captcha.test.ts +422 -0
- package/Tests/Server/Utils/DataSource/HttpFetch.test.ts +96 -2
- package/Tests/Server/Utils/Database/MigrationFailureLog.test.ts +466 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerBehaviour.test.ts +1096 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerClaim.test.ts +466 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +1428 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +752 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupWriter.test.ts +864 -0
- package/Tests/Server/Utils/LoggerFaultDemotion.test.ts +346 -0
- package/Tests/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.test.ts +633 -0
- package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +196 -0
- package/Tests/Server/Utils/Monitor/DatabaseMetricWrite.test.ts +367 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +100 -0
- package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +5 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +512 -31
- package/Tests/Server/Utils/Monitor/NetworkDeviceMetricUtil.test.ts +252 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +479 -42
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +351 -5
- package/Tests/Server/Utils/NetworkDevice/DeviceHealthAggregation.test.ts +136 -12
- package/Tests/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.test.ts +306 -0
- package/Tests/Server/Utils/OutboundUserAgent.test.ts +266 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClientUserAgent.test.ts +141 -0
- package/Tests/Server/Utils/Telemetry/ErrorClassResolver.test.ts +298 -0
- package/Tests/Server/Utils/Telemetry.test.ts +456 -66
- package/Tests/Types/Monitor/DatabaseMetricCatalog.test.ts +388 -0
- package/Tests/Types/Monitor/MonitorStepDatabaseMonitor.test.ts +243 -0
- package/Tests/Types/Monitor/MonitorStepDefaultTelemetryConfig.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorType.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorTypeKeywords.test.ts +16 -7
- package/Tests/Types/Monitor/NetworkDeviceAlertPack.test.ts +60 -0
- package/Tests/Types/NetworkDevice/NetworkAlertPolicyScope.test.ts +655 -0
- package/Tests/Types/NetworkDevice/NetworkDeviceMonitoringMethod.test.ts +115 -26
- package/Tests/Types/NetworkSite/DefaultNetworkSiteType.test.ts +39 -0
- package/Tests/Types/NotificationSetting/NotificationEmailRollupPolicy.test.ts +299 -0
- package/Tests/Types/Telemetry/ErrorClass.test.ts +483 -0
- package/Tests/UI/Components/BasicRadioButtons.test.tsx +336 -0
- package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +15 -0
- package/Tests/UI/Components/ProgressBar.test.tsx +38 -2
- package/Tests/UI/Components/SideMenuItem.test.tsx +226 -4
- package/Tests/UI/Components/SideMenuSection.test.tsx +310 -0
- package/Tests/UI/Components/SideOverSubmitState.test.tsx +335 -0
- package/Tests/UI/Utils/PageScrollLock.test.tsx +377 -0
- package/Tests/UI/Utils/PermissionGate.test.ts +78 -0
- package/Tests/UI/Utils/SensitiveUrlToken.test.ts +140 -0
- package/Tests/Utils/EnterpriseLicenseSeats.test.ts +69 -0
- package/Tests/Utils/EnterpriseLicenseSync.test.ts +7 -1
- package/Tests/Utils/EnterpriseLicenseUsage.test.ts +433 -2
- package/Tests/Utils/Monitor/MonitorMetricType.test.ts +280 -1
- package/Tests/Utils/Monitor/MonitorSummarySnapshotUtil.test.ts +1 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +38 -0
- package/Tests/Utils/NetworkDevice/DeviceHealthStateUtil.test.ts +284 -23
- package/Tests/Utils/NetworkDevice/DeviceReachabilityUtil.test.ts +177 -0
- package/Tests/Utils/NetworkDevice/MonitoringMethodThreadedClassifiers.test.ts +992 -0
- package/Tests/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.test.ts +427 -0
- package/Tests/Utils/NetworkDevice/ReachabilityStampConsistency.test.ts +185 -0
- package/Tests/Utils/NetworkDevice/SnmpCredentialUtil.test.ts +268 -0
- package/Tests/Utils/NetworkDiscovery/AutoImportRuleMatcher.test.ts +55 -5
- package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +98 -21
- package/Tests/Utils/NetworkDiscovery/DiscoveryImportEligibility.test.ts +98 -20
- package/Tests/Utils/NetworkDiscovery/DiscoveryReverseDnsChain.test.ts +8 -7
- package/Tests/Utils/NetworkDiscovery/PingMonitorBuilderForAddress.test.ts +274 -0
- package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +230 -51
- package/Tests/Utils/NetworkSite/TypeHierarchyUtil.test.ts +209 -0
- package/Tests/Utils/Telemetry/CaptureSpanExportGating.test.ts +145 -0
- package/Types/AI/ExceptionAIClassification.ts +10 -24
- package/Types/Email/EmailTemplateType.ts +2 -0
- package/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.ts +5 -0
- package/Types/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.ts +13 -0
- package/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.ts +6 -0
- package/Types/Exception/ApiException.ts +10 -0
- package/Types/Exception/BadDataException.ts +11 -0
- package/Types/Exception/BadRequestException.ts +11 -0
- package/Types/Exception/Exception.ts +65 -0
- package/Types/Exception/ForbiddenException.ts +10 -0
- package/Types/Exception/NotAuthenticatedException.ts +10 -0
- package/Types/Exception/NotAuthorizedException.ts +10 -0
- package/Types/Exception/NotFoundException.ts +11 -0
- package/Types/Exception/PayloadTooLargeException.ts +11 -0
- package/Types/Exception/PaymentRequiredException.ts +10 -0
- package/Types/Exception/ServiceUnavailableException.ts +10 -0
- package/Types/Exception/SsoAuthorizationException.ts +10 -0
- package/Types/Exception/TenantNotFoundException.ts +11 -0
- package/Types/Exception/TimeoutException.ts +10 -0
- package/Types/Exception/TooManyRequestsException.ts +10 -0
- package/Types/Exception/UnableToReachServer.ts +10 -0
- package/Types/Exception/WebsiteRequestException.ts +10 -0
- package/Types/Monitor/CriteriaFilter.ts +60 -2
- package/Types/Monitor/DatabaseMetricCatalog.ts +693 -0
- package/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.ts +83 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +76 -0
- package/Types/Monitor/MonitorMetricType.ts +71 -0
- package/Types/Monitor/MonitorStep.ts +76 -0
- package/Types/Monitor/MonitorStepDatabaseMonitor.ts +171 -0
- package/Types/Monitor/MonitorStepSqlMonitor.ts +2 -20
- package/Types/Monitor/MonitorType.ts +47 -1
- package/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.ts +22 -1
- package/Types/Monitor/SqlConnectionConfig.ts +31 -0
- package/Types/NetworkDevice/NetworkAlertPolicyScope.ts +343 -0
- package/Types/NetworkDevice/NetworkDeviceMonitoringMethod.ts +42 -22
- package/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.ts +30 -0
- package/Types/NotificationSetting/NotificationEmailRollupCategory.ts +255 -0
- package/Types/NotificationSetting/NotificationEmailRollupPolicy.ts +104 -0
- package/Types/Permission.ts +90 -0
- package/Types/Probe/ProbeMonitorResponse.ts +16 -0
- package/Types/Telemetry/ErrorClass.ts +274 -0
- package/Types/Telemetry/UnitOfWork.ts +59 -0
- package/UI/Components/CommandPalette/CommandPalette.tsx +2 -8
- package/UI/Components/EditionLabel/EditionLabel.tsx +4 -0
- package/UI/Components/Modal/Modal.tsx +2 -8
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +44 -0
- package/UI/Components/ProgressBar/ProgressBar.tsx +12 -1
- package/UI/Components/RadioButtons/BasicRadioButtons.tsx +37 -7
- package/UI/Components/SideMenu/SideMenu.tsx +123 -5
- package/UI/Components/SideMenu/SideMenuItem.tsx +76 -84
- package/UI/Components/SideMenu/SideMenuSection.tsx +55 -23
- package/UI/Components/SideOver/SideOver.tsx +21 -20
- package/UI/Utils/PageScrollLock.ts +79 -3
- package/UI/Utils/PermissionGate.ts +61 -0
- package/UI/Utils/SensitiveUrlToken.ts +112 -0
- package/UI/Utils/TestLLMProvider.ts +11 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +16 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +191 -11
- package/Utils/Monitor/MonitorMetricType.ts +153 -1
- package/Utils/Monitor/NetworkTopologyUtil.ts +23 -3
- package/Utils/NetworkDevice/DeviceHealthStateUtil.ts +65 -14
- package/Utils/NetworkDevice/DeviceReachabilityUtil.ts +43 -14
- package/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.ts +247 -0
- package/Utils/NetworkDevice/SnmpCredentialUtil.ts +68 -0
- package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +15 -7
- package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +52 -17
- package/Utils/NetworkDiscovery/DiscoveryImportEligibility.ts +55 -23
- package/Utils/NetworkDiscovery/PingMonitorBuilder.ts +115 -13
- package/Utils/NetworkSite/SiteStatusRollupUtil.ts +66 -20
- package/Utils/NetworkSite/TypeHierarchyUtil.ts +313 -0
- package/build/dist/Models/AnalyticsModels/Span.js +14 -0
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/EnterpriseLicense.js +59 -0
- package/build/dist/Models/DatabaseModels/EnterpriseLicense.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +10 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Monitor.js +75 -0
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkAlertPolicy.js +713 -0
- package/build/dist/Models/DatabaseModels/NetworkAlertPolicy.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +180 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSite.js +200 -2
- package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js +102 -3
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSnmpCredentialProfile.js +878 -0
- package/build/dist/Models/DatabaseModels/NetworkSnmpCredentialProfile.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js +123 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupBatch.js +363 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupBatch.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js +402 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupSetting.js +296 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupSetting.js.map +1 -0
- package/build/dist/Server/API/EnterpriseLicenseAPI.js +273 -60
- package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +1 -1
- package/build/dist/Server/API/LlmProviderAPI.js +108 -13
- package/build/dist/Server/API/LlmProviderAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +12 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.js +24 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.js +111 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.js +77 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.js +50 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.js +83 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/QueueWorker.js +33 -5
- package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
- package/build/dist/Server/Middleware/BearerTokenAuthorization.js +12 -0
- package/build/dist/Server/Middleware/BearerTokenAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/ProjectAuthorization.js +11 -0
- package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/SCIMAuthorization.js +12 -0
- package/build/dist/Server/Middleware/SCIMAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +11 -0
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AIBillingService.js +70 -16
- package/build/dist/Server/Services/AIBillingService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js +167 -0
- package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseService.js +39 -0
- package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +10 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +119 -21
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorStatusTimelineService.js +127 -8
- package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +162 -0
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/NetworkAlertPolicyEngineService.js +1683 -0
- package/build/dist/Server/Services/NetworkAlertPolicyEngineService.js.map +1 -0
- package/build/dist/Server/Services/NetworkAlertPolicyService.js +732 -0
- package/build/dist/Server/Services/NetworkAlertPolicyService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +10 -9
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +54 -11
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceService.js +841 -70
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteService.js +1145 -107
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteTypeService.js +863 -0
- package/build/dist/Server/Services/NetworkSiteTypeService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSnmpCredentialProfileService.js +217 -0
- package/build/dist/Server/Services/NetworkSnmpCredentialProfileService.js.map +1 -0
- package/build/dist/Server/Services/NotificationService.js +80 -17
- package/build/dist/Server/Services/NotificationService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +66 -30
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/StatusPagePrivateUserService.js +92 -2
- package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationEmailRollupBatchService.js +76 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupBatchService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupItemService.js +77 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupItemService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupSettingService.js +111 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupSettingService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationSettingService.js +46 -20
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +90 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +14 -3
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +10 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +10 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js +54 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js +18 -4
- package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js.map +1 -1
- package/build/dist/Server/Utils/Billing/BillingFailureNoticeThrottle.js +59 -0
- package/build/dist/Server/Utils/Billing/BillingFailureNoticeThrottle.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/HttpFetch.js +2 -1
- package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js +91 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js.map +1 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +691 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +497 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js +257 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js.map +1 -0
- package/build/dist/Server/Utils/LLM/LLMService.js +64 -1
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/LogRedaction.js +8 -0
- package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
- package/build/dist/Server/Utils/Logger.js +63 -1
- package/build/dist/Server/Utils/Logger.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.js +141 -0
- package/build/dist/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +8 -1
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +51 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js +7 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +37 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +158 -6
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +33 -0
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +32 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +330 -21
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js +55 -10
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +178 -49
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +119 -29
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js +30 -17
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js.map +1 -1
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.js +158 -0
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.js.map +1 -0
- package/build/dist/Server/Utils/OutboundUserAgent.js +123 -0
- package/build/dist/Server/Utils/OutboundUserAgent.js.map +1 -0
- package/build/dist/Server/Utils/StartServer.js +38 -14
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/CaptureSpan.js +28 -8
- package/build/dist/Server/Utils/Telemetry/CaptureSpan.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ErrorClassResolver.js +95 -0
- package/build/dist/Server/Utils/Telemetry/ErrorClassResolver.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/SpanUtil.js +29 -0
- package/build/dist/Server/Utils/Telemetry/SpanUtil.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry.js +162 -46
- package/build/dist/Server/Utils/Telemetry.js.map +1 -1
- package/build/dist/Types/AI/ExceptionAIClassification.js +10 -24
- package/build/dist/Types/AI/ExceptionAIClassification.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/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.js +2 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.js.map +1 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.js +7 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.js.map +1 -0
- package/build/dist/Types/Exception/ApiException.js +9 -0
- package/build/dist/Types/Exception/ApiException.js.map +1 -1
- package/build/dist/Types/Exception/BadDataException.js +10 -0
- package/build/dist/Types/Exception/BadDataException.js.map +1 -1
- package/build/dist/Types/Exception/BadRequestException.js +10 -0
- package/build/dist/Types/Exception/BadRequestException.js.map +1 -1
- package/build/dist/Types/Exception/Exception.js +56 -0
- package/build/dist/Types/Exception/Exception.js.map +1 -1
- package/build/dist/Types/Exception/ForbiddenException.js +9 -0
- package/build/dist/Types/Exception/ForbiddenException.js.map +1 -1
- package/build/dist/Types/Exception/NotAuthenticatedException.js +9 -0
- package/build/dist/Types/Exception/NotAuthenticatedException.js.map +1 -1
- package/build/dist/Types/Exception/NotAuthorizedException.js +9 -0
- package/build/dist/Types/Exception/NotAuthorizedException.js.map +1 -1
- package/build/dist/Types/Exception/NotFoundException.js +10 -0
- package/build/dist/Types/Exception/NotFoundException.js.map +1 -1
- package/build/dist/Types/Exception/PayloadTooLargeException.js +10 -0
- package/build/dist/Types/Exception/PayloadTooLargeException.js.map +1 -1
- package/build/dist/Types/Exception/PaymentRequiredException.js +9 -0
- package/build/dist/Types/Exception/PaymentRequiredException.js.map +1 -1
- package/build/dist/Types/Exception/ServiceUnavailableException.js +9 -0
- package/build/dist/Types/Exception/ServiceUnavailableException.js.map +1 -1
- package/build/dist/Types/Exception/SsoAuthorizationException.js +9 -0
- package/build/dist/Types/Exception/SsoAuthorizationException.js.map +1 -1
- package/build/dist/Types/Exception/TenantNotFoundException.js +10 -0
- package/build/dist/Types/Exception/TenantNotFoundException.js.map +1 -1
- package/build/dist/Types/Exception/TimeoutException.js +9 -0
- package/build/dist/Types/Exception/TimeoutException.js.map +1 -1
- package/build/dist/Types/Exception/TooManyRequestsException.js +9 -0
- package/build/dist/Types/Exception/TooManyRequestsException.js.map +1 -1
- package/build/dist/Types/Exception/UnableToReachServer.js +9 -0
- package/build/dist/Types/Exception/UnableToReachServer.js.map +1 -1
- package/build/dist/Types/Exception/WebsiteRequestException.js +9 -0
- package/build/dist/Types/Exception/WebsiteRequestException.js.map +1 -1
- package/build/dist/Types/Monitor/CriteriaFilter.js +45 -2
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/DatabaseMetricCatalog.js +594 -0
- package/build/dist/Types/Monitor/DatabaseMetricCatalog.js.map +1 -0
- package/build/dist/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.js +21 -0
- package/build/dist/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +70 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorMetricType.js +61 -0
- package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +54 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepDatabaseMonitor.js +122 -0
- package/build/dist/Types/Monitor/MonitorStepDatabaseMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +45 -1
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js +21 -1
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js.map +1 -1
- package/build/dist/Types/Monitor/SqlConnectionConfig.js +2 -0
- package/build/dist/Types/Monitor/SqlConnectionConfig.js.map +1 -0
- package/build/dist/Types/NetworkDevice/NetworkAlertPolicyScope.js +172 -0
- package/build/dist/Types/NetworkDevice/NetworkAlertPolicyScope.js.map +1 -0
- package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js +40 -22
- package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js.map +1 -1
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.js +26 -0
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.js.map +1 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupCategory.js +186 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupCategory.js.map +1 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupPolicy.js +87 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupPolicy.js.map +1 -0
- package/build/dist/Types/Permission.js +80 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Telemetry/ErrorClass.js +216 -0
- package/build/dist/Types/Telemetry/ErrorClass.js.map +1 -0
- package/build/dist/Types/Telemetry/UnitOfWork.js +59 -0
- package/build/dist/Types/Telemetry/UnitOfWork.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js +2 -7
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +3 -0
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +2 -7
- package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +39 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Components/ProgressBar/ProgressBar.js +12 -1
- package/build/dist/UI/Components/ProgressBar/ProgressBar.js.map +1 -1
- package/build/dist/UI/Components/RadioButtons/BasicRadioButtons.js +6 -6
- package/build/dist/UI/Components/RadioButtons/BasicRadioButtons.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js +67 -5
- package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js +49 -53
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js +25 -7
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js.map +1 -1
- package/build/dist/UI/Components/SideOver/SideOver.js +5 -20
- package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
- package/build/dist/UI/Utils/PageScrollLock.js +31 -3
- package/build/dist/UI/Utils/PageScrollLock.js.map +1 -1
- package/build/dist/UI/Utils/PermissionGate.js +42 -1
- package/build/dist/UI/Utils/PermissionGate.js.map +1 -1
- package/build/dist/UI/Utils/SensitiveUrlToken.js +97 -0
- package/build/dist/UI/Utils/SensitiveUrlToken.js.map +1 -0
- package/build/dist/UI/Utils/TestLLMProvider.js +4 -5
- package/build/dist/UI/Utils/TestLLMProvider.js.map +1 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js +15 -0
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js.map +1 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +111 -9
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js +109 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +8 -3
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js +27 -7
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js +7 -5
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.js +180 -0
- package/build/dist/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDevice/SnmpCredentialUtil.js +12 -0
- package/build/dist/Utils/NetworkDevice/SnmpCredentialUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js +15 -5
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +44 -15
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveryImportEligibility.js +52 -23
- package/build/dist/Utils/NetworkDiscovery/DiscoveryImportEligibility.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js +85 -13
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js.map +1 -1
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +30 -15
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
- package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js +191 -0
- package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Client half of the sensitive-URL-token handoff.
|
|
3
|
+
*
|
|
4
|
+
* Common/Server/Views/Partials/SensitiveUrlToken.ejs runs in <head>, moves the
|
|
5
|
+
* bearer token out of the path into sessionStorage and rewrites the address bar
|
|
6
|
+
* to the token-free route. By the time React mounts, the token is no longer a
|
|
7
|
+
* route parameter, so pages read it from here instead of from the router.
|
|
8
|
+
*
|
|
9
|
+
* Deliberately not routed through Common/UI/Utils/Navigation: this is read
|
|
10
|
+
* during the reset and verification flows, where the value has to be available
|
|
11
|
+
* whether or not the bootstrap managed to clean the URL, and Navigation only
|
|
12
|
+
* ever sees whatever the router was given.
|
|
13
|
+
*
|
|
14
|
+
* TOKEN_ROUTES is duplicated in the partial. The two lists have to agree about
|
|
15
|
+
* which routes carry a token; Common/Tests/App/SensitiveUrlTokenBootstrap.test.ts
|
|
16
|
+
* asserts that they do.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const STORAGE_KEY: string = "oneuptime-sensitive-url-token";
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* Route segments whose NEXT path segment is a single-use bearer token. Matched
|
|
23
|
+
* against the second-to-last segment, so this covers
|
|
24
|
+
* /accounts/reset-password/<token>, /reset-password/<token> and
|
|
25
|
+
* /status-page/<id>/reset-password/<token> alike.
|
|
26
|
+
*/
|
|
27
|
+
const TOKEN_ROUTES: Array<string> = ["reset-password", "verify-email"];
|
|
28
|
+
|
|
29
|
+
interface HandoffWindow extends Window {
|
|
30
|
+
__ONEUPTIME_SENSITIVE_URL_TOKEN__?: string | undefined;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export default class SensitiveUrlToken {
|
|
34
|
+
/*
|
|
35
|
+
* The token for the current page, or "" when there is none.
|
|
36
|
+
*
|
|
37
|
+
* Order matters. sessionStorage is where the bootstrap normally puts it and
|
|
38
|
+
* is the only source that survives a reload of the cleaned URL. The in-memory
|
|
39
|
+
* handoff covers blocked storage. The path is the last resort: it only holds
|
|
40
|
+
* a token when the bootstrap could not run, and reading it keeps the flow
|
|
41
|
+
* working on the browsers where that happens.
|
|
42
|
+
*/
|
|
43
|
+
public static read(): string {
|
|
44
|
+
try {
|
|
45
|
+
const stored: string | null = window.sessionStorage.getItem(STORAGE_KEY);
|
|
46
|
+
|
|
47
|
+
if (stored) {
|
|
48
|
+
return stored;
|
|
49
|
+
}
|
|
50
|
+
} catch {
|
|
51
|
+
/* Private mode or storage disabled; fall through. */
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const handedOff: string | undefined = (window as HandoffWindow)
|
|
55
|
+
.__ONEUPTIME_SENSITIVE_URL_TOKEN__;
|
|
56
|
+
|
|
57
|
+
if (handedOff) {
|
|
58
|
+
return handedOff;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return SensitiveUrlToken.readFromPath(window.location.pathname);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/*
|
|
65
|
+
* Pull the token out of a path, if that path is a token-bearing route.
|
|
66
|
+
* Returns "" for the cleaned form of the same route, which is what the
|
|
67
|
+
* address bar holds once the bootstrap has run.
|
|
68
|
+
*/
|
|
69
|
+
public static readFromPath(pathname: string): string {
|
|
70
|
+
const segments: Array<string> = SensitiveUrlToken.segmentsOf(pathname);
|
|
71
|
+
|
|
72
|
+
if (segments.length < 2) {
|
|
73
|
+
return "";
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (!TOKEN_ROUTES.includes(segments[segments.length - 2]!)) {
|
|
77
|
+
return "";
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const token: string = segments[segments.length - 1]!;
|
|
81
|
+
|
|
82
|
+
try {
|
|
83
|
+
return decodeURIComponent(token);
|
|
84
|
+
} catch {
|
|
85
|
+
// A malformed escape sequence is handed on verbatim.
|
|
86
|
+
return token;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/*
|
|
91
|
+
* Drop the stashed token once the flow that needed it has completed.
|
|
92
|
+
*
|
|
93
|
+
* Only call this on success. A failed reset (an expired token, a password the
|
|
94
|
+
* server rejected) has to leave the stash intact, or the retry — and any
|
|
95
|
+
* reload of the now token-free URL — has nothing to submit.
|
|
96
|
+
*/
|
|
97
|
+
public static clear(): void {
|
|
98
|
+
try {
|
|
99
|
+
window.sessionStorage.removeItem(STORAGE_KEY);
|
|
100
|
+
} catch {
|
|
101
|
+
/* Nothing was stored, so nothing to remove. */
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
delete (window as HandoffWindow).__ONEUPTIME_SENSITIVE_URL_TOKEN__;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
private static segmentsOf(pathname: string): Array<string> {
|
|
108
|
+
return (pathname || "").split("/").filter((segment: string): boolean => {
|
|
109
|
+
return segment !== "";
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -9,6 +9,14 @@ import API from "./API/API";
|
|
|
9
9
|
export interface LLMProviderTestResult {
|
|
10
10
|
success: boolean;
|
|
11
11
|
message: string;
|
|
12
|
+
/*
|
|
13
|
+
* Whether the provider actually used the tool offered by the connection
|
|
14
|
+
* test. Reachability alone is not enough for Ask AI or investigations —
|
|
15
|
+
* they read the user's data exclusively through tools — so a provider can
|
|
16
|
+
* connect successfully and still be unusable for every AI feature.
|
|
17
|
+
* Undefined for an older server that does not report it.
|
|
18
|
+
*/
|
|
19
|
+
supportsToolCalling?: boolean | undefined;
|
|
12
20
|
}
|
|
13
21
|
|
|
14
22
|
export default class TestLLMProvider {
|
|
@@ -48,6 +56,9 @@ export default class TestLLMProvider {
|
|
|
48
56
|
message:
|
|
49
57
|
(responseData["message"] as string) ||
|
|
50
58
|
"Connection successful. The LLM provider responded to a test prompt.",
|
|
59
|
+
...(typeof responseData["supportsToolCalling"] === "boolean"
|
|
60
|
+
? { supportsToolCalling: responseData["supportsToolCalling"] }
|
|
61
|
+
: {}),
|
|
51
62
|
};
|
|
52
63
|
} catch (err) {
|
|
53
64
|
return {
|
|
@@ -222,6 +222,22 @@ export default class EnterpriseLicenseSeatsUtil {
|
|
|
222
222
|
return null;
|
|
223
223
|
}
|
|
224
224
|
|
|
225
|
+
/*
|
|
226
|
+
* The active-only aggregate contains none of this installation's stale
|
|
227
|
+
* reported users. Subtracting that old count would remove users belonging
|
|
228
|
+
* to active instances and under-enforce the license. Treat the complete
|
|
229
|
+
* aggregate as other-instance usage. We also cannot add the two counts:
|
|
230
|
+
* the same users may exist on both this installation and active ones.
|
|
231
|
+
* Return null to use the existing uncertainty fallback, which takes the
|
|
232
|
+
* larger complete-or-live total without subtracting or double-counting.
|
|
233
|
+
*
|
|
234
|
+
* Undefined retains the legacy behavior for responses from older license
|
|
235
|
+
* servers that did not send activity provenance.
|
|
236
|
+
*/
|
|
237
|
+
if (thisInstance.isCountedTowardsUsage === false) {
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
|
|
225
241
|
const ownReportedCount: number | null = this.parseCount(
|
|
226
242
|
thisInstance.userCount,
|
|
227
243
|
);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import EnterpriseLicenseUserCountSource from "../../Types/EnterpriseLicense/EnterpriseLicenseUserCountSource";
|
|
2
2
|
|
|
3
3
|
/*
|
|
4
4
|
* Usage reported by one self-hosted instance of an enterprise license.
|
|
@@ -7,11 +7,37 @@ import OneUptimeDate from "../../Types/Date";
|
|
|
7
7
|
* on staging, production and gov-cloud consumes a single seat.
|
|
8
8
|
*/
|
|
9
9
|
export interface EnterpriseLicenseInstanceUsage {
|
|
10
|
+
/*
|
|
11
|
+
* Registration is the initial communication until the instance sends its
|
|
12
|
+
* first usage report.
|
|
13
|
+
*/
|
|
14
|
+
createdAt?: Date | undefined;
|
|
10
15
|
userCount?: number | undefined;
|
|
11
16
|
userEmailHashes?: Array<string> | undefined;
|
|
12
17
|
lastReportedAt?: Date | undefined;
|
|
13
18
|
}
|
|
14
19
|
|
|
20
|
+
export interface EffectiveEnterpriseLicenseUserCountOptions {
|
|
21
|
+
instances: Array<EnterpriseLicenseInstanceUsage>;
|
|
22
|
+
storedUserCount?: number | null | undefined;
|
|
23
|
+
storedUserCountUpdatedAt?: Date | undefined;
|
|
24
|
+
storedUserCountSource?: EnterpriseLicenseUserCountSource | undefined;
|
|
25
|
+
legacyUserCount?: number | null | undefined;
|
|
26
|
+
legacyUserCountUpdatedAt?: Date | undefined;
|
|
27
|
+
/*
|
|
28
|
+
* Callers that just replaced/deleted modern rows know the stored aggregate
|
|
29
|
+
* came from those rows. They can suppress the one-time compatibility path
|
|
30
|
+
* for license records created before dedicated legacy fields existed.
|
|
31
|
+
*/
|
|
32
|
+
allowStoredUserCountAsLegacyFallback?: boolean | undefined;
|
|
33
|
+
now: Date;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface EffectiveEnterpriseLicenseUserCount {
|
|
37
|
+
userCount: number | null;
|
|
38
|
+
source: EnterpriseLicenseUserCountSource | null;
|
|
39
|
+
}
|
|
40
|
+
|
|
15
41
|
export default class EnterpriseLicenseUsageUtil {
|
|
16
42
|
/*
|
|
17
43
|
* How many days before a license expires that expiry reminder emails
|
|
@@ -41,11 +67,11 @@ export default class EnterpriseLicenseUsageUtil {
|
|
|
41
67
|
)}`;
|
|
42
68
|
}
|
|
43
69
|
/*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
70
|
+
* An instance is inactive once it has gone this many complete days without
|
|
71
|
+
* communicating with oneuptime.com. Inactive instances stay visible, but
|
|
72
|
+
* their users no longer consume seats.
|
|
47
73
|
*/
|
|
48
|
-
public static readonly InstanceUsageFreshnessInDays: number =
|
|
74
|
+
public static readonly InstanceUsageFreshnessInDays: number = 7;
|
|
49
75
|
|
|
50
76
|
// SHA-256 hex digest.
|
|
51
77
|
private static readonly emailHashRegex: RegExp = /^[a-f0-9]{64}$/;
|
|
@@ -136,17 +162,171 @@ export default class EnterpriseLicenseUsageUtil {
|
|
|
136
162
|
instance: EnterpriseLicenseInstanceUsage,
|
|
137
163
|
now: Date,
|
|
138
164
|
): boolean {
|
|
139
|
-
|
|
140
|
-
|
|
165
|
+
const lastCommunicatedAt: Date | undefined =
|
|
166
|
+
this.getInstanceLastCommunicatedAt(instance);
|
|
167
|
+
|
|
168
|
+
if (!lastCommunicatedAt) {
|
|
141
169
|
return false;
|
|
142
170
|
}
|
|
143
171
|
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
172
|
+
const inactiveAfterInMilliseconds: number =
|
|
173
|
+
this.InstanceUsageFreshnessInDays * 24 * 60 * 60 * 1000;
|
|
174
|
+
const staleBefore: number = now.getTime() - inactiveAfterInMilliseconds;
|
|
175
|
+
|
|
176
|
+
/*
|
|
177
|
+
* Strictly greater than: at the exact seven-day boundary the instance has
|
|
178
|
+
* gone a full week without communicating and must already be inactive.
|
|
179
|
+
* Elapsed milliseconds are intentional; a daylight-saving transition
|
|
180
|
+
* must not shorten or extend the week.
|
|
181
|
+
*/
|
|
182
|
+
return lastCommunicatedAt.getTime() > staleBefore;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
public static getInstanceLastCommunicatedAt(
|
|
186
|
+
instance: EnterpriseLicenseInstanceUsage,
|
|
187
|
+
): Date | undefined {
|
|
188
|
+
return instance.lastReportedAt || instance.createdAt;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/* A registration is active, but only a real report is modern seat data. */
|
|
192
|
+
public static hasActiveReportedInstanceUsage(
|
|
193
|
+
instances: Array<EnterpriseLicenseInstanceUsage>,
|
|
194
|
+
now: Date,
|
|
195
|
+
): boolean {
|
|
196
|
+
return instances.some(
|
|
197
|
+
(instance: EnterpriseLicenseInstanceUsage): boolean => {
|
|
198
|
+
return (
|
|
199
|
+
Boolean(instance.lastReportedAt) &&
|
|
200
|
+
this.isInstanceCountedTowardsUsage(instance, now)
|
|
201
|
+
);
|
|
202
|
+
},
|
|
147
203
|
);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
public static isTimestampWithinUsageWindow(
|
|
207
|
+
timestamp: Date | undefined,
|
|
208
|
+
now: Date,
|
|
209
|
+
): boolean {
|
|
210
|
+
return timestamp
|
|
211
|
+
? this.isInstanceCountedTowardsUsage({ lastReportedAt: timestamp }, now)
|
|
212
|
+
: false;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
public static hasReportedInstanceUsage(
|
|
216
|
+
instances: Array<EnterpriseLicenseInstanceUsage>,
|
|
217
|
+
): boolean {
|
|
218
|
+
return instances.some(
|
|
219
|
+
(instance: EnterpriseLicenseInstanceUsage): boolean => {
|
|
220
|
+
return Boolean(instance.lastReportedAt);
|
|
221
|
+
},
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/*
|
|
226
|
+
* Choose between modern per-instance reports and a separately persisted
|
|
227
|
+
* legacy license-wide heartbeat. The stored count fallback exists only for
|
|
228
|
+
* records written before those dedicated legacy columns were introduced;
|
|
229
|
+
* seeing any historical modern report proves that aggregate is not legacy.
|
|
230
|
+
* Once every authoritative communication timestamp is a week old, usage is
|
|
231
|
+
* zero.
|
|
232
|
+
*/
|
|
233
|
+
public static getEffectiveUserCount(
|
|
234
|
+
options: EffectiveEnterpriseLicenseUserCountOptions,
|
|
235
|
+
): number | null {
|
|
236
|
+
return this.getEffectiveUserCountAndSource(options).userCount;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
public static getEffectiveUserCountAndSource(
|
|
240
|
+
options: EffectiveEnterpriseLicenseUserCountOptions,
|
|
241
|
+
): EffectiveEnterpriseLicenseUserCount {
|
|
242
|
+
if (this.hasActiveReportedInstanceUsage(options.instances, options.now)) {
|
|
243
|
+
return {
|
|
244
|
+
userCount: this.getUniqueUserCount(options.instances, options.now),
|
|
245
|
+
source: EnterpriseLicenseUserCountSource.Instance,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
if (
|
|
250
|
+
this.isTimestampWithinUsageWindow(
|
|
251
|
+
options.legacyUserCountUpdatedAt,
|
|
252
|
+
options.now,
|
|
253
|
+
)
|
|
254
|
+
) {
|
|
255
|
+
return {
|
|
256
|
+
userCount: options.legacyUserCount ?? null,
|
|
257
|
+
source: EnterpriseLicenseUserCountSource.Legacy,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
const hasRecentRegistration: boolean = options.instances.some(
|
|
262
|
+
(instance: EnterpriseLicenseInstanceUsage): boolean => {
|
|
263
|
+
return (
|
|
264
|
+
!instance.lastReportedAt &&
|
|
265
|
+
this.isInstanceCountedTowardsUsage(instance, options.now)
|
|
266
|
+
);
|
|
267
|
+
},
|
|
268
|
+
);
|
|
269
|
+
const hasRecentLegacyReport: boolean = options.storedUserCountUpdatedAt
|
|
270
|
+
? this.isTimestampWithinUsageWindow(
|
|
271
|
+
options.storedUserCountUpdatedAt,
|
|
272
|
+
options.now,
|
|
273
|
+
)
|
|
274
|
+
: false;
|
|
275
|
+
const isExplicitLegacyFallback: boolean =
|
|
276
|
+
options.storedUserCountSource ===
|
|
277
|
+
EnterpriseLicenseUserCountSource.Legacy &&
|
|
278
|
+
!options.legacyUserCountUpdatedAt &&
|
|
279
|
+
hasRecentLegacyReport;
|
|
280
|
+
const canUseCompatibilityFallback: boolean =
|
|
281
|
+
options.allowStoredUserCountAsLegacyFallback !== false &&
|
|
282
|
+
options.storedUserCountSource !==
|
|
283
|
+
EnterpriseLicenseUserCountSource.Instance &&
|
|
284
|
+
!options.legacyUserCountUpdatedAt &&
|
|
285
|
+
!this.hasReportedInstanceUsage(options.instances);
|
|
286
|
+
|
|
287
|
+
if (
|
|
288
|
+
isExplicitLegacyFallback ||
|
|
289
|
+
(canUseCompatibilityFallback &&
|
|
290
|
+
(hasRecentRegistration || hasRecentLegacyReport))
|
|
291
|
+
) {
|
|
292
|
+
return {
|
|
293
|
+
userCount: options.storedUserCount ?? null,
|
|
294
|
+
source: EnterpriseLicenseUserCountSource.Legacy,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
if (
|
|
299
|
+
options.instances.length === 0 &&
|
|
300
|
+
(options.storedUserCount === undefined ||
|
|
301
|
+
options.storedUserCount === null) &&
|
|
302
|
+
!options.storedUserCountUpdatedAt &&
|
|
303
|
+
(options.legacyUserCount === undefined ||
|
|
304
|
+
options.legacyUserCount === null) &&
|
|
305
|
+
!options.legacyUserCountUpdatedAt &&
|
|
306
|
+
!options.storedUserCountSource
|
|
307
|
+
) {
|
|
308
|
+
return {
|
|
309
|
+
userCount: null,
|
|
310
|
+
source: null,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
let inactiveUsageSource: EnterpriseLicenseUserCountSource | null =
|
|
315
|
+
options.storedUserCountSource || null;
|
|
316
|
+
|
|
317
|
+
if (
|
|
318
|
+
!inactiveUsageSource &&
|
|
319
|
+
this.hasReportedInstanceUsage(options.instances)
|
|
320
|
+
) {
|
|
321
|
+
inactiveUsageSource = EnterpriseLicenseUserCountSource.Instance;
|
|
322
|
+
} else if (!inactiveUsageSource && options.legacyUserCountUpdatedAt) {
|
|
323
|
+
inactiveUsageSource = EnterpriseLicenseUserCountSource.Legacy;
|
|
324
|
+
}
|
|
148
325
|
|
|
149
|
-
return
|
|
326
|
+
return {
|
|
327
|
+
userCount: 0,
|
|
328
|
+
source: inactiveUsageSource,
|
|
329
|
+
};
|
|
150
330
|
}
|
|
151
331
|
|
|
152
332
|
/*
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import AggregationType from "../../Types/BaseDatabase/AggregationType";
|
|
2
|
-
import { CheckOn } from "../../Types/Monitor/CriteriaFilter";
|
|
2
|
+
import { CheckOn, CriteriaFilter } from "../../Types/Monitor/CriteriaFilter";
|
|
3
|
+
import {
|
|
4
|
+
DatabaseMetricCategory,
|
|
5
|
+
DatabaseMetricDefinition,
|
|
6
|
+
getAllDatabaseMetrics,
|
|
7
|
+
getDatabaseMetricByMetricType,
|
|
8
|
+
getDatabaseMetricCategoryDescription,
|
|
9
|
+
getDatabaseMetricCategoryOrder,
|
|
10
|
+
getDatabaseMetricsByCategory,
|
|
11
|
+
getDatabaseMetricsForEngine,
|
|
12
|
+
} from "../../Types/Monitor/DatabaseMetricCatalog";
|
|
13
|
+
import SqlDatabaseType from "../../Types/Monitor/SqlDatabaseType";
|
|
3
14
|
import MonitorMetricType from "../../Types/Monitor/MonitorMetricType";
|
|
4
15
|
import MonitorType, {
|
|
5
16
|
MonitorTypeHelper,
|
|
@@ -20,6 +31,19 @@ class MonitorMetricTypeUtil {
|
|
|
20
31
|
public static getAggregationTypeByMonitorMetricType(
|
|
21
32
|
monitorMetricType: MonitorMetricType,
|
|
22
33
|
): AggregationType {
|
|
34
|
+
/*
|
|
35
|
+
* Database Health series carry their own aggregation in the catalog, so
|
|
36
|
+
* they resolve here instead of adding ~40 cases to this switch (and to
|
|
37
|
+
* the four other switches in this file). The catalog is the one place a
|
|
38
|
+
* new database metric has to be declared.
|
|
39
|
+
*/
|
|
40
|
+
const databaseMetric: DatabaseMetricDefinition | null =
|
|
41
|
+
getDatabaseMetricByMetricType(monitorMetricType);
|
|
42
|
+
|
|
43
|
+
if (databaseMetric) {
|
|
44
|
+
return databaseMetric.defaultAggregation;
|
|
45
|
+
}
|
|
46
|
+
|
|
23
47
|
switch (monitorMetricType) {
|
|
24
48
|
case MonitorMetricType.ResponseTime:
|
|
25
49
|
return AggregationType.Avg;
|
|
@@ -275,6 +299,22 @@ class MonitorMetricTypeUtil {
|
|
|
275
299
|
];
|
|
276
300
|
}
|
|
277
301
|
|
|
302
|
+
if (monitorType === MonitorType.Database) {
|
|
303
|
+
/*
|
|
304
|
+
* Availability first, then every catalog series in category order.
|
|
305
|
+
* Engine filtering happens in getDatabaseMetricCategories, which is
|
|
306
|
+
* the only caller that knows which engine the monitor points at - this
|
|
307
|
+
* list is the full capability set for the monitor type.
|
|
308
|
+
*/
|
|
309
|
+
return [
|
|
310
|
+
MonitorMetricType.IsOnline,
|
|
311
|
+
MonitorMetricType.ResponseTime,
|
|
312
|
+
...getAllDatabaseMetrics().map((metric: DatabaseMetricDefinition) => {
|
|
313
|
+
return metric.metricType;
|
|
314
|
+
}),
|
|
315
|
+
];
|
|
316
|
+
}
|
|
317
|
+
|
|
278
318
|
if (
|
|
279
319
|
monitorType === MonitorType.DNS ||
|
|
280
320
|
monitorType === MonitorType.DNSSEC ||
|
|
@@ -308,6 +348,14 @@ class MonitorMetricTypeUtil {
|
|
|
308
348
|
*/
|
|
309
349
|
public static getMonitorMetricCategoriesByMonitorType(
|
|
310
350
|
monitorType: MonitorType,
|
|
351
|
+
/*
|
|
352
|
+
* Database Health only. When the caller knows which engine the monitor
|
|
353
|
+
* is pointed at, pass it and the cards drop the series that engine can
|
|
354
|
+
* never write - so a MySQL monitor does not show a permanently empty
|
|
355
|
+
* "Transaction ID Used" chart. Omitting it shows the full capability
|
|
356
|
+
* set, which is the right fallback when the engine is not loaded yet.
|
|
357
|
+
*/
|
|
358
|
+
databaseType?: SqlDatabaseType | undefined,
|
|
311
359
|
): Array<MonitorMetricCategory> {
|
|
312
360
|
if (monitorType === MonitorType.Server) {
|
|
313
361
|
return [
|
|
@@ -375,6 +423,10 @@ class MonitorMetricTypeUtil {
|
|
|
375
423
|
];
|
|
376
424
|
}
|
|
377
425
|
|
|
426
|
+
if (monitorType === MonitorType.Database) {
|
|
427
|
+
return this.getDatabaseMetricCategories(databaseType);
|
|
428
|
+
}
|
|
429
|
+
|
|
378
430
|
if (monitorType === MonitorType.NetworkDevice) {
|
|
379
431
|
return [
|
|
380
432
|
{
|
|
@@ -423,6 +475,13 @@ class MonitorMetricTypeUtil {
|
|
|
423
475
|
return "Total Connection Time (DNS + TCP)";
|
|
424
476
|
}
|
|
425
477
|
|
|
478
|
+
const databaseMetric: DatabaseMetricDefinition | null =
|
|
479
|
+
getDatabaseMetricByMetricType(monitorMetricType);
|
|
480
|
+
|
|
481
|
+
if (databaseMetric) {
|
|
482
|
+
return databaseMetric.friendlyName;
|
|
483
|
+
}
|
|
484
|
+
|
|
426
485
|
switch (monitorMetricType) {
|
|
427
486
|
case MonitorMetricType.ResponseTime:
|
|
428
487
|
return "Response Time";
|
|
@@ -534,6 +593,13 @@ class MonitorMetricTypeUtil {
|
|
|
534
593
|
public static getLegendUnitByMonitorMetricType(
|
|
535
594
|
monitorMetricType: MonitorMetricType,
|
|
536
595
|
): string {
|
|
596
|
+
const databaseMetric: DatabaseMetricDefinition | null =
|
|
597
|
+
getDatabaseMetricByMetricType(monitorMetricType);
|
|
598
|
+
|
|
599
|
+
if (databaseMetric) {
|
|
600
|
+
return databaseMetric.unit;
|
|
601
|
+
}
|
|
602
|
+
|
|
537
603
|
switch (monitorMetricType) {
|
|
538
604
|
case MonitorMetricType.ResponseTime:
|
|
539
605
|
return "ms";
|
|
@@ -619,6 +685,13 @@ class MonitorMetricTypeUtil {
|
|
|
619
685
|
return "Total time spent resolving the hostname (when needed) and establishing the TCP connection.";
|
|
620
686
|
}
|
|
621
687
|
|
|
688
|
+
const databaseMetric: DatabaseMetricDefinition | null =
|
|
689
|
+
getDatabaseMetricByMetricType(monitorMetricType);
|
|
690
|
+
|
|
691
|
+
if (databaseMetric) {
|
|
692
|
+
return databaseMetric.description;
|
|
693
|
+
}
|
|
694
|
+
|
|
622
695
|
switch (monitorMetricType) {
|
|
623
696
|
case MonitorMetricType.ResponseTime:
|
|
624
697
|
return "Response time is the time taken for a server to respond to a request. It is the sum of the time spent waiting to establish the connection, the time spent waiting for the request to be processed, and the time spent waiting for the response to be sent.";
|
|
@@ -714,6 +787,85 @@ class MonitorMetricTypeUtil {
|
|
|
714
787
|
return "";
|
|
715
788
|
}
|
|
716
789
|
}
|
|
790
|
+
|
|
791
|
+
/**
|
|
792
|
+
* One card per catalog category, in the order an operator walks them
|
|
793
|
+
* during an incident. When `databaseType` is given, a category whose
|
|
794
|
+
* metrics are all unsupported on that engine is dropped entirely rather
|
|
795
|
+
* than rendered as a card of empty charts.
|
|
796
|
+
*/
|
|
797
|
+
public static getDatabaseMetricCategories(
|
|
798
|
+
databaseType?: SqlDatabaseType | undefined,
|
|
799
|
+
): Array<MonitorMetricCategory> {
|
|
800
|
+
const supported: Array<MonitorMetricType> | null = databaseType
|
|
801
|
+
? getDatabaseMetricsForEngine(databaseType).map(
|
|
802
|
+
(metric: DatabaseMetricDefinition) => {
|
|
803
|
+
return metric.metricType;
|
|
804
|
+
},
|
|
805
|
+
)
|
|
806
|
+
: null;
|
|
807
|
+
|
|
808
|
+
const categories: Array<MonitorMetricCategory> = [];
|
|
809
|
+
|
|
810
|
+
for (const category of getDatabaseMetricCategoryOrder()) {
|
|
811
|
+
const metrics: Array<MonitorMetricType> = getDatabaseMetricsByCategory(
|
|
812
|
+
category,
|
|
813
|
+
)
|
|
814
|
+
.filter((metric: DatabaseMetricDefinition) => {
|
|
815
|
+
return !supported || supported.includes(metric.metricType);
|
|
816
|
+
})
|
|
817
|
+
.map((metric: DatabaseMetricDefinition) => {
|
|
818
|
+
return metric.metricType;
|
|
819
|
+
});
|
|
820
|
+
|
|
821
|
+
/*
|
|
822
|
+
* Availability additionally carries the shared probe series, so it is
|
|
823
|
+
* never empty even if every catalog metric in it were filtered out.
|
|
824
|
+
*/
|
|
825
|
+
if (category === DatabaseMetricCategory.Availability) {
|
|
826
|
+
metrics.unshift(
|
|
827
|
+
MonitorMetricType.IsOnline,
|
|
828
|
+
MonitorMetricType.ResponseTime,
|
|
829
|
+
);
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
if (metrics.length === 0) {
|
|
833
|
+
continue;
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
categories.push({
|
|
837
|
+
title: category,
|
|
838
|
+
description: getDatabaseMetricCategoryDescription(category),
|
|
839
|
+
metrics: metrics,
|
|
840
|
+
});
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
return categories;
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
/**
|
|
847
|
+
* The metric series a criteria filter reads.
|
|
848
|
+
*
|
|
849
|
+
* Database Health filters name their series in
|
|
850
|
+
* databaseMonitorOptions.metricType rather than in the CheckOn itself, so
|
|
851
|
+
* resolving from the CheckOn alone would return null and silently turn
|
|
852
|
+
* "evaluate over time" into an instantaneous comparison. Callers that hold
|
|
853
|
+
* the whole filter - EvaluateOverTime does - must use this instead of
|
|
854
|
+
* getMonitorMetricTypeByCheckOnOrNull.
|
|
855
|
+
*/
|
|
856
|
+
public static getMonitorMetricTypeByCriteriaFilterOrNull(
|
|
857
|
+
criteriaFilter: CriteriaFilter,
|
|
858
|
+
): MonitorMetricType | null {
|
|
859
|
+
if (criteriaFilter.checkOn === CheckOn.DatabaseMetric) {
|
|
860
|
+
return criteriaFilter.databaseMonitorOptions?.metricType || null;
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
if (criteriaFilter.checkOn === CheckOn.DatabaseIsOnline) {
|
|
864
|
+
return MonitorMetricType.IsOnline;
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
return this.getMonitorMetricTypeByCheckOnOrNull(criteriaFilter.checkOn);
|
|
868
|
+
}
|
|
717
869
|
}
|
|
718
870
|
|
|
719
871
|
export default MonitorMetricTypeUtil;
|
|
@@ -42,6 +42,21 @@ export interface TopologyDeviceInput {
|
|
|
42
42
|
lastPolledAt?: Date | undefined;
|
|
43
43
|
lastSeenAt?: Date | undefined;
|
|
44
44
|
pollingIntervalInMinutes?: number | undefined;
|
|
45
|
+
/*
|
|
46
|
+
* How this device's health is established. NULL, empty and anything
|
|
47
|
+
* unrecognised read as Probe — see NetworkDeviceMonitoringMethodUtil.parse,
|
|
48
|
+
* which is why an omitted value keeps every existing caller on the poll
|
|
49
|
+
* rule unchanged.
|
|
50
|
+
*
|
|
51
|
+
* Read only when `monitorStatus` below is absent, and load-bearing there:
|
|
52
|
+
* a monitor-backed device (monitoringMethod "Monitor") with nothing
|
|
53
|
+
* stamped yet is drawn "unknown", which is what the device list says
|
|
54
|
+
* about it too. Without this the poll columns above would decide — and on
|
|
55
|
+
* a device switched over from SNMP they hold the last thing a probe found
|
|
56
|
+
* before it stopped asking, so a months-old lastSeenAt would draw the node
|
|
57
|
+
* red while its row in the device list reads Pending.
|
|
58
|
+
*/
|
|
59
|
+
monitoringMethod?: string | null | undefined;
|
|
45
60
|
interfacesUp?: number | undefined;
|
|
46
61
|
interfacesDown?: number | undefined;
|
|
47
62
|
vendor?: string | undefined;
|
|
@@ -1654,9 +1669,13 @@ export default class NetworkTopologyUtil {
|
|
|
1654
1669
|
|
|
1655
1670
|
/*
|
|
1656
1671
|
* The shared reachability rule (DeviceReachabilityUtil), mapped onto the
|
|
1657
|
-
* graph's three node states. "Pending" — never polled
|
|
1658
|
-
*
|
|
1659
|
-
* as a failure.
|
|
1672
|
+
* graph's three node states. "Pending" — never polled, or monitor-backed
|
|
1673
|
+
* with nothing reported yet — is the graph's "unknown", which is what
|
|
1674
|
+
* keeps a device nothing walks from being drawn as a failure.
|
|
1675
|
+
*
|
|
1676
|
+
* Only reached with no stamped status (deviceStatus took every stamped
|
|
1677
|
+
* one), so the monitoring method is the one fact left that tells the rule
|
|
1678
|
+
* whether the poll columns are evidence or leftovers.
|
|
1660
1679
|
*/
|
|
1661
1680
|
private static statusFromPoll(
|
|
1662
1681
|
device: TopologyDeviceInput,
|
|
@@ -1668,6 +1687,7 @@ export default class NetworkTopologyUtil {
|
|
|
1668
1687
|
lastPolledAt: device.lastPolledAt,
|
|
1669
1688
|
lastSeenAt: device.lastSeenAt,
|
|
1670
1689
|
pollingIntervalInMinutes: device.pollingIntervalInMinutes,
|
|
1690
|
+
monitoringMethod: device.monitoringMethod,
|
|
1671
1691
|
},
|
|
1672
1692
|
now,
|
|
1673
1693
|
);
|