@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.
Files changed (597) hide show
  1. package/Models/AnalyticsModels/Span.ts +14 -0
  2. package/Models/DatabaseModels/EnterpriseLicense.ts +56 -0
  3. package/Models/DatabaseModels/Index.ts +10 -0
  4. package/Models/DatabaseModels/Monitor.ts +76 -0
  5. package/Models/DatabaseModels/NetworkAlertPolicy.ts +690 -0
  6. package/Models/DatabaseModels/NetworkDevice.ts +176 -1
  7. package/Models/DatabaseModels/NetworkSite.ts +201 -2
  8. package/Models/DatabaseModels/NetworkSiteType.ts +102 -3
  9. package/Models/DatabaseModels/NetworkSnmpCredentialProfile.ts +841 -0
  10. package/Models/DatabaseModels/TelemetryException.ts +119 -0
  11. package/Models/DatabaseModels/UserNotificationEmailRollupBatch.ts +334 -0
  12. package/Models/DatabaseModels/UserNotificationEmailRollupItem.ts +370 -0
  13. package/Models/DatabaseModels/UserNotificationEmailRollupSetting.ts +282 -0
  14. package/Server/API/EnterpriseLicenseAPI.ts +391 -64
  15. package/Server/API/LlmProviderAPI.ts +137 -22
  16. package/Server/EnvironmentConfig.ts +14 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.ts +55 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.ts +31 -0
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.ts +124 -0
  20. package/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.ts +132 -0
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.ts +79 -0
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.ts +191 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
  24. package/Server/Infrastructure/QueueWorker.ts +38 -8
  25. package/Server/Middleware/BearerTokenAuthorization.ts +12 -0
  26. package/Server/Middleware/ProjectAuthorization.ts +11 -0
  27. package/Server/Middleware/SCIMAuthorization.ts +12 -0
  28. package/Server/Middleware/TelemetryIngest.ts +11 -0
  29. package/Server/Services/AIBillingService.ts +101 -27
  30. package/Server/Services/EnterpriseLicenseInstanceService.ts +197 -0
  31. package/Server/Services/EnterpriseLicenseService.ts +55 -0
  32. package/Server/Services/Index.ts +10 -0
  33. package/Server/Services/MonitorService.ts +143 -21
  34. package/Server/Services/MonitorStatusTimelineService.ts +150 -8
  35. package/Server/Services/MonitorTemplateService.ts +217 -1
  36. package/Server/Services/NetworkAlertPolicyEngineService.ts +2159 -0
  37. package/Server/Services/NetworkAlertPolicyService.ts +944 -0
  38. package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +9 -10
  39. package/Server/Services/NetworkDeviceAutoImportRuleService.ts +60 -15
  40. package/Server/Services/NetworkDeviceService.ts +1032 -73
  41. package/Server/Services/NetworkSiteService.ts +1502 -129
  42. package/Server/Services/NetworkSiteTypeService.ts +1216 -0
  43. package/Server/Services/NetworkSnmpCredentialProfileService.ts +238 -0
  44. package/Server/Services/NotificationService.ts +118 -28
  45. package/Server/Services/ProjectService.ts +105 -48
  46. package/Server/Services/StatusPagePrivateUserService.ts +103 -3
  47. package/Server/Services/UserNotificationEmailRollupBatchService.ts +78 -0
  48. package/Server/Services/UserNotificationEmailRollupItemService.ts +79 -0
  49. package/Server/Services/UserNotificationEmailRollupSettingService.ts +113 -0
  50. package/Server/Services/UserNotificationSettingService.ts +62 -25
  51. package/Server/Services/UserService.ts +95 -0
  52. package/Server/Types/Database/QueryHelper.ts +2 -2
  53. package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +14 -3
  54. package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +10 -0
  55. package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +10 -0
  56. package/Server/Utils/AI/SRE/Insights/InsightTriageRunner.ts +62 -1
  57. package/Server/Utils/AI/Toolbox/AlertTools.ts +15 -1
  58. package/Server/Utils/Billing/BillingFailureNoticeThrottle.ts +80 -0
  59. package/Server/Utils/DataSource/HttpFetch.ts +9 -2
  60. package/Server/Utils/EmailRollup/EmailRollupConstants.ts +98 -0
  61. package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +872 -0
  62. package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +781 -0
  63. package/Server/Utils/EmailRollup/EmailRollupWriter.ts +368 -0
  64. package/Server/Utils/LLM/LLMService.ts +78 -0
  65. package/Server/Utils/LogRedaction.ts +8 -0
  66. package/Server/Utils/Logger.ts +79 -1
  67. package/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.ts +190 -0
  68. package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +9 -2
  69. package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +61 -1
  70. package/Server/Utils/Monitor/MonitorCriteriaDataExtractor.ts +14 -0
  71. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +49 -0
  72. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +255 -4
  73. package/Server/Utils/Monitor/MonitorMetricUtil.ts +41 -0
  74. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +43 -0
  75. package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +499 -19
  76. package/Server/Utils/Monitor/NetworkDeviceMetricUtil.ts +66 -10
  77. package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +238 -44
  78. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +146 -39
  79. package/Server/Utils/NetworkDevice/DeviceHealthAggregation.ts +31 -18
  80. package/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.ts +213 -0
  81. package/Server/Utils/OutboundUserAgent.ts +152 -0
  82. package/Server/Utils/StartServer.ts +51 -19
  83. package/Server/Utils/Telemetry/CaptureSpan.ts +32 -8
  84. package/Server/Utils/Telemetry/ErrorClassResolver.ts +120 -0
  85. package/Server/Utils/Telemetry/SpanUtil.ts +33 -0
  86. package/Server/Utils/Telemetry.ts +198 -51
  87. package/Server/Views/Partials/SensitiveUrlToken.ejs +140 -0
  88. package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +134 -33
  89. package/Tests/App/Dashboard/AskAiSuggestedPrompts.test.ts +279 -0
  90. package/Tests/App/Dashboard/DashboardEditPermissions.test.tsx +517 -0
  91. package/Tests/App/Dashboard/DashboardVariablesDiscard.test.tsx +26 -0
  92. package/Tests/App/Dashboard/DeviceStatusHero.test.tsx +588 -0
  93. package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +18 -9
  94. package/Tests/App/Dashboard/MonitorCreateFromMonitorBackedDevice.test.tsx +632 -0
  95. package/Tests/App/Dashboard/MonitorRecommendationCreateProgress.test.tsx +682 -0
  96. package/Tests/App/Dashboard/MonitorTypePicker.test.tsx +4 -2
  97. package/Tests/App/Dashboard/NetworkDeviceCreateFormMonitorBinding.test.tsx +676 -0
  98. package/Tests/App/Dashboard/NetworkDeviceCreateFormPingMonitor.test.tsx +791 -0
  99. package/Tests/App/Dashboard/NetworkDeviceCreateFormProbeAndSnmp.test.tsx +833 -0
  100. package/Tests/App/Dashboard/NetworkDeviceCriteriaFilter.test.ts +161 -0
  101. package/Tests/App/Dashboard/NetworkDeviceSettingsMonitoringSection.test.tsx +458 -0
  102. package/Tests/App/Dashboard/NetworkSideMenu.test.tsx +41 -5
  103. package/Tests/App/Dashboard/PingMonitorProvisioning.test.ts +368 -0
  104. package/Tests/App/Dashboard/RecommendationCard.test.tsx +796 -0
  105. package/Tests/App/Dashboard/RecommendationToolbar.test.tsx +519 -0
  106. package/Tests/App/Dashboard/RecommendationsList.test.tsx +661 -0
  107. package/Tests/App/Dashboard/UseBulkCreatePingMonitors.test.tsx +899 -0
  108. package/Tests/App/Dashboard/UseBulkSnmpCredentialProfileActions.test.tsx +732 -0
  109. package/Tests/App/SensitiveUrlTokenBootstrap.test.ts +256 -0
  110. package/Tests/App/StatusPage/StatusPageIndexPageRobotsMeta.test.ts +11 -1
  111. package/Tests/App/StatusPage/StatusPageLoginCodeBootstrap.test.ts +9 -4
  112. package/Tests/Models/NetworkSiteHierarchy.test.ts +41 -4
  113. package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +951 -7
  114. package/Tests/Server/API/LlmProviderConnectionTest.test.ts +522 -0
  115. package/Tests/Server/Infrastructure/Postgres/NetworkSnmpCredentialProfilesAndAlertPoliciesMigration.test.ts +854 -0
  116. package/Tests/Server/Infrastructure/Postgres/SchemaMigrationsOrdering.test.ts +18 -0
  117. package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupTableMigration.test.ts +535 -0
  118. package/Tests/Server/Services/AIChatPrivacyPin.test.ts +560 -0
  119. package/Tests/Server/Services/BillingRechargeOwnerEmailGuards.test.ts +783 -0
  120. package/Tests/Server/Services/EnterpriseLicenseInstanceServiceDeletionUsage.test.ts +707 -0
  121. package/Tests/Server/Services/EnterpriseLicenseServiceUsageAggregationLock.test.ts +329 -0
  122. package/Tests/Server/Services/MonitorServiceDeleteNetworkDeviceCleanup.test.ts +294 -0
  123. package/Tests/Server/Services/MonitorStatusBridgeProbePath.test.ts +802 -0
  124. package/Tests/Server/Services/MonitorStatusTimelineService.test.ts +72 -2
  125. package/Tests/Server/Services/NetworkAlertPolicyEngineHooks.test.ts +752 -0
  126. package/Tests/Server/Services/NetworkAlertPolicyEngineService.test.ts +1849 -0
  127. package/Tests/Server/Services/NetworkAlertPolicyModel.test.ts +1793 -0
  128. package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +47 -4
  129. package/Tests/Server/Services/NetworkDeviceAutoImportRuleService.test.ts +97 -12
  130. package/Tests/Server/Services/NetworkDeviceAutoMonitorLifecycle.test.ts +148 -3
  131. package/Tests/Server/Services/NetworkDeviceMonitorBindingUpdateGuard.test.ts +514 -0
  132. package/Tests/Server/Services/NetworkDeviceMonitorStatusStamp.test.ts +447 -58
  133. package/Tests/Server/Services/NetworkDeviceMonitoringMethodTransition.test.ts +739 -0
  134. package/Tests/Server/Services/NetworkDevicePollingTenancy.test.ts +501 -0
  135. package/Tests/Server/Services/NetworkDeviceSiteDefaultProbe.test.ts +432 -0
  136. package/Tests/Server/Services/NetworkSiteMonitoringDefaults.test.ts +498 -0
  137. package/Tests/Server/Services/NetworkSiteRollupPolicyAndMaintenance.test.ts +337 -55
  138. package/Tests/Server/Services/NetworkSiteService.test.ts +1868 -131
  139. package/Tests/Server/Services/NetworkSiteTypeService.test.ts +1109 -0
  140. package/Tests/Server/Services/NetworkSnmpCredentialProfileModel.test.ts +926 -0
  141. package/Tests/Server/Services/NetworkSnmpCredentialProfileService.test.ts +796 -0
  142. package/Tests/Server/Services/ProjectServiceNetworkSiteTypeDefaults.test.ts +214 -0
  143. package/Tests/Server/Services/StatusPagePrivateUserEmailChangePasswordResetExpiry.test.ts +269 -0
  144. package/Tests/Server/Services/UserEmailChangePasswordResetExpiry.test.ts +472 -0
  145. package/Tests/Server/Services/UserNotificationEmailRollupModels.test.ts +569 -0
  146. package/Tests/Server/Services/UserNotificationEmailRollupSettingModel.test.ts +314 -0
  147. package/Tests/Server/Services/UserNotificationEmailRollupSettingService.test.ts +409 -0
  148. package/Tests/Server/Services/UserNotificationSettingRollupRouting.test.ts +856 -0
  149. package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +102 -1
  150. package/Tests/Server/Types/Database/Permissions/DashboardAccessPermission.test.ts +321 -0
  151. package/Tests/Server/Types/Database/QueryHelperOperators.test.ts +17 -0
  152. package/Tests/Server/Utils/AI/AlertMonitorFilters.test.ts +124 -0
  153. package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +208 -0
  154. package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +235 -0
  155. package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +253 -0
  156. package/Tests/Server/Utils/Captcha.test.ts +422 -0
  157. package/Tests/Server/Utils/DataSource/HttpFetch.test.ts +96 -2
  158. package/Tests/Server/Utils/Database/MigrationFailureLog.test.ts +466 -0
  159. package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerBehaviour.test.ts +1096 -0
  160. package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerClaim.test.ts +466 -0
  161. package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +1428 -0
  162. package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +752 -0
  163. package/Tests/Server/Utils/EmailRollup/EmailRollupWriter.test.ts +864 -0
  164. package/Tests/Server/Utils/LoggerFaultDemotion.test.ts +346 -0
  165. package/Tests/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.test.ts +633 -0
  166. package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +196 -0
  167. package/Tests/Server/Utils/Monitor/DatabaseMetricWrite.test.ts +367 -0
  168. package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +100 -0
  169. package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +5 -0
  170. package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +512 -31
  171. package/Tests/Server/Utils/Monitor/NetworkDeviceMetricUtil.test.ts +252 -0
  172. package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +479 -42
  173. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +351 -5
  174. package/Tests/Server/Utils/NetworkDevice/DeviceHealthAggregation.test.ts +136 -12
  175. package/Tests/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.test.ts +306 -0
  176. package/Tests/Server/Utils/OutboundUserAgent.test.ts +266 -0
  177. package/Tests/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClientUserAgent.test.ts +141 -0
  178. package/Tests/Server/Utils/Telemetry/ErrorClassResolver.test.ts +298 -0
  179. package/Tests/Server/Utils/Telemetry.test.ts +456 -66
  180. package/Tests/Types/Monitor/DatabaseMetricCatalog.test.ts +388 -0
  181. package/Tests/Types/Monitor/MonitorStepDatabaseMonitor.test.ts +243 -0
  182. package/Tests/Types/Monitor/MonitorStepDefaultTelemetryConfig.test.ts +1 -0
  183. package/Tests/Types/Monitor/MonitorType.test.ts +1 -0
  184. package/Tests/Types/Monitor/MonitorTypeKeywords.test.ts +16 -7
  185. package/Tests/Types/Monitor/NetworkDeviceAlertPack.test.ts +60 -0
  186. package/Tests/Types/NetworkDevice/NetworkAlertPolicyScope.test.ts +655 -0
  187. package/Tests/Types/NetworkDevice/NetworkDeviceMonitoringMethod.test.ts +115 -26
  188. package/Tests/Types/NetworkSite/DefaultNetworkSiteType.test.ts +39 -0
  189. package/Tests/Types/NotificationSetting/NotificationEmailRollupPolicy.test.ts +299 -0
  190. package/Tests/Types/Telemetry/ErrorClass.test.ts +483 -0
  191. package/Tests/UI/Components/BasicRadioButtons.test.tsx +336 -0
  192. package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +15 -0
  193. package/Tests/UI/Components/ProgressBar.test.tsx +38 -2
  194. package/Tests/UI/Components/SideMenuItem.test.tsx +226 -4
  195. package/Tests/UI/Components/SideMenuSection.test.tsx +310 -0
  196. package/Tests/UI/Components/SideOverSubmitState.test.tsx +335 -0
  197. package/Tests/UI/Utils/PageScrollLock.test.tsx +377 -0
  198. package/Tests/UI/Utils/PermissionGate.test.ts +78 -0
  199. package/Tests/UI/Utils/SensitiveUrlToken.test.ts +140 -0
  200. package/Tests/Utils/EnterpriseLicenseSeats.test.ts +69 -0
  201. package/Tests/Utils/EnterpriseLicenseSync.test.ts +7 -1
  202. package/Tests/Utils/EnterpriseLicenseUsage.test.ts +433 -2
  203. package/Tests/Utils/Monitor/MonitorMetricType.test.ts +280 -1
  204. package/Tests/Utils/Monitor/MonitorSummarySnapshotUtil.test.ts +1 -0
  205. package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +38 -0
  206. package/Tests/Utils/NetworkDevice/DeviceHealthStateUtil.test.ts +284 -23
  207. package/Tests/Utils/NetworkDevice/DeviceReachabilityUtil.test.ts +177 -0
  208. package/Tests/Utils/NetworkDevice/MonitoringMethodThreadedClassifiers.test.ts +992 -0
  209. package/Tests/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.test.ts +427 -0
  210. package/Tests/Utils/NetworkDevice/ReachabilityStampConsistency.test.ts +185 -0
  211. package/Tests/Utils/NetworkDevice/SnmpCredentialUtil.test.ts +268 -0
  212. package/Tests/Utils/NetworkDiscovery/AutoImportRuleMatcher.test.ts +55 -5
  213. package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +98 -21
  214. package/Tests/Utils/NetworkDiscovery/DiscoveryImportEligibility.test.ts +98 -20
  215. package/Tests/Utils/NetworkDiscovery/DiscoveryReverseDnsChain.test.ts +8 -7
  216. package/Tests/Utils/NetworkDiscovery/PingMonitorBuilderForAddress.test.ts +274 -0
  217. package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +230 -51
  218. package/Tests/Utils/NetworkSite/TypeHierarchyUtil.test.ts +209 -0
  219. package/Tests/Utils/Telemetry/CaptureSpanExportGating.test.ts +145 -0
  220. package/Types/AI/ExceptionAIClassification.ts +10 -24
  221. package/Types/Email/EmailTemplateType.ts +2 -0
  222. package/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.ts +5 -0
  223. package/Types/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.ts +13 -0
  224. package/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.ts +6 -0
  225. package/Types/Exception/ApiException.ts +10 -0
  226. package/Types/Exception/BadDataException.ts +11 -0
  227. package/Types/Exception/BadRequestException.ts +11 -0
  228. package/Types/Exception/Exception.ts +65 -0
  229. package/Types/Exception/ForbiddenException.ts +10 -0
  230. package/Types/Exception/NotAuthenticatedException.ts +10 -0
  231. package/Types/Exception/NotAuthorizedException.ts +10 -0
  232. package/Types/Exception/NotFoundException.ts +11 -0
  233. package/Types/Exception/PayloadTooLargeException.ts +11 -0
  234. package/Types/Exception/PaymentRequiredException.ts +10 -0
  235. package/Types/Exception/ServiceUnavailableException.ts +10 -0
  236. package/Types/Exception/SsoAuthorizationException.ts +10 -0
  237. package/Types/Exception/TenantNotFoundException.ts +11 -0
  238. package/Types/Exception/TimeoutException.ts +10 -0
  239. package/Types/Exception/TooManyRequestsException.ts +10 -0
  240. package/Types/Exception/UnableToReachServer.ts +10 -0
  241. package/Types/Exception/WebsiteRequestException.ts +10 -0
  242. package/Types/Monitor/CriteriaFilter.ts +60 -2
  243. package/Types/Monitor/DatabaseMetricCatalog.ts +693 -0
  244. package/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.ts +83 -0
  245. package/Types/Monitor/MonitorCriteriaInstance.ts +76 -0
  246. package/Types/Monitor/MonitorMetricType.ts +71 -0
  247. package/Types/Monitor/MonitorStep.ts +76 -0
  248. package/Types/Monitor/MonitorStepDatabaseMonitor.ts +171 -0
  249. package/Types/Monitor/MonitorStepSqlMonitor.ts +2 -20
  250. package/Types/Monitor/MonitorType.ts +47 -1
  251. package/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.ts +22 -1
  252. package/Types/Monitor/SqlConnectionConfig.ts +31 -0
  253. package/Types/NetworkDevice/NetworkAlertPolicyScope.ts +343 -0
  254. package/Types/NetworkDevice/NetworkDeviceMonitoringMethod.ts +42 -22
  255. package/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.ts +30 -0
  256. package/Types/NotificationSetting/NotificationEmailRollupCategory.ts +255 -0
  257. package/Types/NotificationSetting/NotificationEmailRollupPolicy.ts +104 -0
  258. package/Types/Permission.ts +90 -0
  259. package/Types/Probe/ProbeMonitorResponse.ts +16 -0
  260. package/Types/Telemetry/ErrorClass.ts +274 -0
  261. package/Types/Telemetry/UnitOfWork.ts +59 -0
  262. package/UI/Components/CommandPalette/CommandPalette.tsx +2 -8
  263. package/UI/Components/EditionLabel/EditionLabel.tsx +4 -0
  264. package/UI/Components/Modal/Modal.tsx +2 -8
  265. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +44 -0
  266. package/UI/Components/ProgressBar/ProgressBar.tsx +12 -1
  267. package/UI/Components/RadioButtons/BasicRadioButtons.tsx +37 -7
  268. package/UI/Components/SideMenu/SideMenu.tsx +123 -5
  269. package/UI/Components/SideMenu/SideMenuItem.tsx +76 -84
  270. package/UI/Components/SideMenu/SideMenuSection.tsx +55 -23
  271. package/UI/Components/SideOver/SideOver.tsx +21 -20
  272. package/UI/Utils/PageScrollLock.ts +79 -3
  273. package/UI/Utils/PermissionGate.ts +61 -0
  274. package/UI/Utils/SensitiveUrlToken.ts +112 -0
  275. package/UI/Utils/TestLLMProvider.ts +11 -0
  276. package/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +16 -0
  277. package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +191 -11
  278. package/Utils/Monitor/MonitorMetricType.ts +153 -1
  279. package/Utils/Monitor/NetworkTopologyUtil.ts +23 -3
  280. package/Utils/NetworkDevice/DeviceHealthStateUtil.ts +65 -14
  281. package/Utils/NetworkDevice/DeviceReachabilityUtil.ts +43 -14
  282. package/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.ts +247 -0
  283. package/Utils/NetworkDevice/SnmpCredentialUtil.ts +68 -0
  284. package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +15 -7
  285. package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +52 -17
  286. package/Utils/NetworkDiscovery/DiscoveryImportEligibility.ts +55 -23
  287. package/Utils/NetworkDiscovery/PingMonitorBuilder.ts +115 -13
  288. package/Utils/NetworkSite/SiteStatusRollupUtil.ts +66 -20
  289. package/Utils/NetworkSite/TypeHierarchyUtil.ts +313 -0
  290. package/build/dist/Models/AnalyticsModels/Span.js +14 -0
  291. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  292. package/build/dist/Models/DatabaseModels/EnterpriseLicense.js +59 -0
  293. package/build/dist/Models/DatabaseModels/EnterpriseLicense.js.map +1 -1
  294. package/build/dist/Models/DatabaseModels/Index.js +10 -0
  295. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  296. package/build/dist/Models/DatabaseModels/Monitor.js +75 -0
  297. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  298. package/build/dist/Models/DatabaseModels/NetworkAlertPolicy.js +713 -0
  299. package/build/dist/Models/DatabaseModels/NetworkAlertPolicy.js.map +1 -0
  300. package/build/dist/Models/DatabaseModels/NetworkDevice.js +180 -1
  301. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  302. package/build/dist/Models/DatabaseModels/NetworkSite.js +200 -2
  303. package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -1
  304. package/build/dist/Models/DatabaseModels/NetworkSiteType.js +102 -3
  305. package/build/dist/Models/DatabaseModels/NetworkSiteType.js.map +1 -1
  306. package/build/dist/Models/DatabaseModels/NetworkSnmpCredentialProfile.js +878 -0
  307. package/build/dist/Models/DatabaseModels/NetworkSnmpCredentialProfile.js.map +1 -0
  308. package/build/dist/Models/DatabaseModels/TelemetryException.js +123 -0
  309. package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
  310. package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupBatch.js +363 -0
  311. package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupBatch.js.map +1 -0
  312. package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js +402 -0
  313. package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js.map +1 -0
  314. package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupSetting.js +296 -0
  315. package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupSetting.js.map +1 -0
  316. package/build/dist/Server/API/EnterpriseLicenseAPI.js +273 -60
  317. package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +1 -1
  318. package/build/dist/Server/API/LlmProviderAPI.js +108 -13
  319. package/build/dist/Server/API/LlmProviderAPI.js.map +1 -1
  320. package/build/dist/Server/EnvironmentConfig.js +12 -0
  321. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  322. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.js +24 -0
  323. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.js.map +1 -0
  324. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.js +16 -0
  325. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.js.map +1 -0
  326. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.js +111 -0
  327. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.js.map +1 -0
  328. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.js +77 -0
  329. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.js.map +1 -0
  330. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.js +50 -0
  331. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.js.map +1 -0
  332. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.js +83 -0
  333. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.js.map +1 -0
  334. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
  335. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  336. package/build/dist/Server/Infrastructure/QueueWorker.js +33 -5
  337. package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
  338. package/build/dist/Server/Middleware/BearerTokenAuthorization.js +12 -0
  339. package/build/dist/Server/Middleware/BearerTokenAuthorization.js.map +1 -1
  340. package/build/dist/Server/Middleware/ProjectAuthorization.js +11 -0
  341. package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
  342. package/build/dist/Server/Middleware/SCIMAuthorization.js +12 -0
  343. package/build/dist/Server/Middleware/SCIMAuthorization.js.map +1 -1
  344. package/build/dist/Server/Middleware/TelemetryIngest.js +11 -0
  345. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  346. package/build/dist/Server/Services/AIBillingService.js +70 -16
  347. package/build/dist/Server/Services/AIBillingService.js.map +1 -1
  348. package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js +167 -0
  349. package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js.map +1 -1
  350. package/build/dist/Server/Services/EnterpriseLicenseService.js +39 -0
  351. package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
  352. package/build/dist/Server/Services/Index.js +10 -0
  353. package/build/dist/Server/Services/Index.js.map +1 -1
  354. package/build/dist/Server/Services/MonitorService.js +119 -21
  355. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  356. package/build/dist/Server/Services/MonitorStatusTimelineService.js +127 -8
  357. package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
  358. package/build/dist/Server/Services/MonitorTemplateService.js +162 -0
  359. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  360. package/build/dist/Server/Services/NetworkAlertPolicyEngineService.js +1683 -0
  361. package/build/dist/Server/Services/NetworkAlertPolicyEngineService.js.map +1 -0
  362. package/build/dist/Server/Services/NetworkAlertPolicyService.js +732 -0
  363. package/build/dist/Server/Services/NetworkAlertPolicyService.js.map +1 -0
  364. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +10 -9
  365. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
  366. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +54 -11
  367. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
  368. package/build/dist/Server/Services/NetworkDeviceService.js +841 -70
  369. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  370. package/build/dist/Server/Services/NetworkSiteService.js +1145 -107
  371. package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
  372. package/build/dist/Server/Services/NetworkSiteTypeService.js +863 -0
  373. package/build/dist/Server/Services/NetworkSiteTypeService.js.map +1 -1
  374. package/build/dist/Server/Services/NetworkSnmpCredentialProfileService.js +217 -0
  375. package/build/dist/Server/Services/NetworkSnmpCredentialProfileService.js.map +1 -0
  376. package/build/dist/Server/Services/NotificationService.js +80 -17
  377. package/build/dist/Server/Services/NotificationService.js.map +1 -1
  378. package/build/dist/Server/Services/ProjectService.js +66 -30
  379. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  380. package/build/dist/Server/Services/StatusPagePrivateUserService.js +92 -2
  381. package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
  382. package/build/dist/Server/Services/UserNotificationEmailRollupBatchService.js +76 -0
  383. package/build/dist/Server/Services/UserNotificationEmailRollupBatchService.js.map +1 -0
  384. package/build/dist/Server/Services/UserNotificationEmailRollupItemService.js +77 -0
  385. package/build/dist/Server/Services/UserNotificationEmailRollupItemService.js.map +1 -0
  386. package/build/dist/Server/Services/UserNotificationEmailRollupSettingService.js +111 -0
  387. package/build/dist/Server/Services/UserNotificationEmailRollupSettingService.js.map +1 -0
  388. package/build/dist/Server/Services/UserNotificationSettingService.js +46 -20
  389. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  390. package/build/dist/Server/Services/UserService.js +90 -0
  391. package/build/dist/Server/Services/UserService.js.map +1 -1
  392. package/build/dist/Server/Types/Database/QueryHelper.js +1 -1
  393. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  394. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +14 -3
  395. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
  396. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +10 -0
  397. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -1
  398. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +10 -0
  399. package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -1
  400. package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js +54 -1
  401. package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js.map +1 -1
  402. package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js +18 -4
  403. package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js.map +1 -1
  404. package/build/dist/Server/Utils/Billing/BillingFailureNoticeThrottle.js +59 -0
  405. package/build/dist/Server/Utils/Billing/BillingFailureNoticeThrottle.js.map +1 -0
  406. package/build/dist/Server/Utils/DataSource/HttpFetch.js +2 -1
  407. package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -1
  408. package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js +91 -0
  409. package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js.map +1 -0
  410. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +691 -0
  411. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -0
  412. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +497 -0
  413. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -0
  414. package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js +257 -0
  415. package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js.map +1 -0
  416. package/build/dist/Server/Utils/LLM/LLMService.js +64 -1
  417. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  418. package/build/dist/Server/Utils/LogRedaction.js +8 -0
  419. package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
  420. package/build/dist/Server/Utils/Logger.js +63 -1
  421. package/build/dist/Server/Utils/Logger.js.map +1 -1
  422. package/build/dist/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.js +141 -0
  423. package/build/dist/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.js.map +1 -0
  424. package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +8 -1
  425. package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
  426. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +51 -1
  427. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
  428. package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js +7 -0
  429. package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js.map +1 -1
  430. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +37 -0
  431. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  432. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +158 -6
  433. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
  434. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +33 -0
  435. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  436. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +32 -0
  437. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  438. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +330 -21
  439. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
  440. package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js +55 -10
  441. package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js.map +1 -1
  442. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +178 -49
  443. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
  444. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +119 -29
  445. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  446. package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js +30 -17
  447. package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js.map +1 -1
  448. package/build/dist/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.js +158 -0
  449. package/build/dist/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.js.map +1 -0
  450. package/build/dist/Server/Utils/OutboundUserAgent.js +123 -0
  451. package/build/dist/Server/Utils/OutboundUserAgent.js.map +1 -0
  452. package/build/dist/Server/Utils/StartServer.js +38 -14
  453. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  454. package/build/dist/Server/Utils/Telemetry/CaptureSpan.js +28 -8
  455. package/build/dist/Server/Utils/Telemetry/CaptureSpan.js.map +1 -1
  456. package/build/dist/Server/Utils/Telemetry/ErrorClassResolver.js +95 -0
  457. package/build/dist/Server/Utils/Telemetry/ErrorClassResolver.js.map +1 -0
  458. package/build/dist/Server/Utils/Telemetry/SpanUtil.js +29 -0
  459. package/build/dist/Server/Utils/Telemetry/SpanUtil.js.map +1 -1
  460. package/build/dist/Server/Utils/Telemetry.js +162 -46
  461. package/build/dist/Server/Utils/Telemetry.js.map +1 -1
  462. package/build/dist/Types/AI/ExceptionAIClassification.js +10 -24
  463. package/build/dist/Types/AI/ExceptionAIClassification.js.map +1 -1
  464. package/build/dist/Types/Email/EmailTemplateType.js +1 -0
  465. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  466. package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.js +2 -0
  467. package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.js.map +1 -0
  468. package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.js +7 -0
  469. package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.js.map +1 -0
  470. package/build/dist/Types/Exception/ApiException.js +9 -0
  471. package/build/dist/Types/Exception/ApiException.js.map +1 -1
  472. package/build/dist/Types/Exception/BadDataException.js +10 -0
  473. package/build/dist/Types/Exception/BadDataException.js.map +1 -1
  474. package/build/dist/Types/Exception/BadRequestException.js +10 -0
  475. package/build/dist/Types/Exception/BadRequestException.js.map +1 -1
  476. package/build/dist/Types/Exception/Exception.js +56 -0
  477. package/build/dist/Types/Exception/Exception.js.map +1 -1
  478. package/build/dist/Types/Exception/ForbiddenException.js +9 -0
  479. package/build/dist/Types/Exception/ForbiddenException.js.map +1 -1
  480. package/build/dist/Types/Exception/NotAuthenticatedException.js +9 -0
  481. package/build/dist/Types/Exception/NotAuthenticatedException.js.map +1 -1
  482. package/build/dist/Types/Exception/NotAuthorizedException.js +9 -0
  483. package/build/dist/Types/Exception/NotAuthorizedException.js.map +1 -1
  484. package/build/dist/Types/Exception/NotFoundException.js +10 -0
  485. package/build/dist/Types/Exception/NotFoundException.js.map +1 -1
  486. package/build/dist/Types/Exception/PayloadTooLargeException.js +10 -0
  487. package/build/dist/Types/Exception/PayloadTooLargeException.js.map +1 -1
  488. package/build/dist/Types/Exception/PaymentRequiredException.js +9 -0
  489. package/build/dist/Types/Exception/PaymentRequiredException.js.map +1 -1
  490. package/build/dist/Types/Exception/ServiceUnavailableException.js +9 -0
  491. package/build/dist/Types/Exception/ServiceUnavailableException.js.map +1 -1
  492. package/build/dist/Types/Exception/SsoAuthorizationException.js +9 -0
  493. package/build/dist/Types/Exception/SsoAuthorizationException.js.map +1 -1
  494. package/build/dist/Types/Exception/TenantNotFoundException.js +10 -0
  495. package/build/dist/Types/Exception/TenantNotFoundException.js.map +1 -1
  496. package/build/dist/Types/Exception/TimeoutException.js +9 -0
  497. package/build/dist/Types/Exception/TimeoutException.js.map +1 -1
  498. package/build/dist/Types/Exception/TooManyRequestsException.js +9 -0
  499. package/build/dist/Types/Exception/TooManyRequestsException.js.map +1 -1
  500. package/build/dist/Types/Exception/UnableToReachServer.js +9 -0
  501. package/build/dist/Types/Exception/UnableToReachServer.js.map +1 -1
  502. package/build/dist/Types/Exception/WebsiteRequestException.js +9 -0
  503. package/build/dist/Types/Exception/WebsiteRequestException.js.map +1 -1
  504. package/build/dist/Types/Monitor/CriteriaFilter.js +45 -2
  505. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  506. package/build/dist/Types/Monitor/DatabaseMetricCatalog.js +594 -0
  507. package/build/dist/Types/Monitor/DatabaseMetricCatalog.js.map +1 -0
  508. package/build/dist/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.js +21 -0
  509. package/build/dist/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.js.map +1 -0
  510. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +70 -0
  511. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  512. package/build/dist/Types/Monitor/MonitorMetricType.js +61 -0
  513. package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
  514. package/build/dist/Types/Monitor/MonitorStep.js +54 -0
  515. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  516. package/build/dist/Types/Monitor/MonitorStepDatabaseMonitor.js +122 -0
  517. package/build/dist/Types/Monitor/MonitorStepDatabaseMonitor.js.map +1 -0
  518. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -1
  519. package/build/dist/Types/Monitor/MonitorType.js +45 -1
  520. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  521. package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js +21 -1
  522. package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js.map +1 -1
  523. package/build/dist/Types/Monitor/SqlConnectionConfig.js +2 -0
  524. package/build/dist/Types/Monitor/SqlConnectionConfig.js.map +1 -0
  525. package/build/dist/Types/NetworkDevice/NetworkAlertPolicyScope.js +172 -0
  526. package/build/dist/Types/NetworkDevice/NetworkAlertPolicyScope.js.map +1 -0
  527. package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js +40 -22
  528. package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js.map +1 -1
  529. package/build/dist/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.js +26 -0
  530. package/build/dist/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.js.map +1 -0
  531. package/build/dist/Types/NotificationSetting/NotificationEmailRollupCategory.js +186 -0
  532. package/build/dist/Types/NotificationSetting/NotificationEmailRollupCategory.js.map +1 -0
  533. package/build/dist/Types/NotificationSetting/NotificationEmailRollupPolicy.js +87 -0
  534. package/build/dist/Types/NotificationSetting/NotificationEmailRollupPolicy.js.map +1 -0
  535. package/build/dist/Types/Permission.js +80 -0
  536. package/build/dist/Types/Permission.js.map +1 -1
  537. package/build/dist/Types/Telemetry/ErrorClass.js +216 -0
  538. package/build/dist/Types/Telemetry/ErrorClass.js.map +1 -0
  539. package/build/dist/Types/Telemetry/UnitOfWork.js +59 -0
  540. package/build/dist/Types/Telemetry/UnitOfWork.js.map +1 -0
  541. package/build/dist/UI/Components/CommandPalette/CommandPalette.js +2 -7
  542. package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -1
  543. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +3 -0
  544. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  545. package/build/dist/UI/Components/Modal/Modal.js +2 -7
  546. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  547. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +39 -0
  548. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  549. package/build/dist/UI/Components/ProgressBar/ProgressBar.js +12 -1
  550. package/build/dist/UI/Components/ProgressBar/ProgressBar.js.map +1 -1
  551. package/build/dist/UI/Components/RadioButtons/BasicRadioButtons.js +6 -6
  552. package/build/dist/UI/Components/RadioButtons/BasicRadioButtons.js.map +1 -1
  553. package/build/dist/UI/Components/SideMenu/SideMenu.js +67 -5
  554. package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
  555. package/build/dist/UI/Components/SideMenu/SideMenuItem.js +49 -53
  556. package/build/dist/UI/Components/SideMenu/SideMenuItem.js.map +1 -1
  557. package/build/dist/UI/Components/SideMenu/SideMenuSection.js +25 -7
  558. package/build/dist/UI/Components/SideMenu/SideMenuSection.js.map +1 -1
  559. package/build/dist/UI/Components/SideOver/SideOver.js +5 -20
  560. package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
  561. package/build/dist/UI/Utils/PageScrollLock.js +31 -3
  562. package/build/dist/UI/Utils/PageScrollLock.js.map +1 -1
  563. package/build/dist/UI/Utils/PermissionGate.js +42 -1
  564. package/build/dist/UI/Utils/PermissionGate.js.map +1 -1
  565. package/build/dist/UI/Utils/SensitiveUrlToken.js +97 -0
  566. package/build/dist/UI/Utils/SensitiveUrlToken.js.map +1 -0
  567. package/build/dist/UI/Utils/TestLLMProvider.js +4 -5
  568. package/build/dist/UI/Utils/TestLLMProvider.js.map +1 -1
  569. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js +15 -0
  570. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js.map +1 -1
  571. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +111 -9
  572. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -1
  573. package/build/dist/Utils/Monitor/MonitorMetricType.js +109 -1
  574. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  575. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +8 -3
  576. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  577. package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js +27 -7
  578. package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js.map +1 -1
  579. package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js +7 -5
  580. package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js.map +1 -1
  581. package/build/dist/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.js +180 -0
  582. package/build/dist/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.js.map +1 -0
  583. package/build/dist/Utils/NetworkDevice/SnmpCredentialUtil.js +12 -0
  584. package/build/dist/Utils/NetworkDevice/SnmpCredentialUtil.js.map +1 -0
  585. package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js +15 -5
  586. package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
  587. package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +44 -15
  588. package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
  589. package/build/dist/Utils/NetworkDiscovery/DiscoveryImportEligibility.js +52 -23
  590. package/build/dist/Utils/NetworkDiscovery/DiscoveryImportEligibility.js.map +1 -1
  591. package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js +85 -13
  592. package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js.map +1 -1
  593. package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +30 -15
  594. package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
  595. package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js +191 -0
  596. package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js.map +1 -0
  597. package/package.json +2 -2
@@ -0,0 +1,180 @@
1
+ import MonitorTemplate from "../../Models/DatabaseModels/MonitorTemplate";
2
+ import NetworkAlertPolicy from "../../Models/DatabaseModels/NetworkAlertPolicy";
3
+ import MonitorCriteria from "../../Types/Monitor/MonitorCriteria";
4
+ import MonitorStep from "../../Types/Monitor/MonitorStep";
5
+ import { MonitorStepNetworkDeviceMonitorUtil } from "../../Types/Monitor/MonitorStepNetworkDeviceMonitor";
6
+ import MonitorSteps from "../../Types/Monitor/MonitorSteps";
7
+ import MonitorType from "../../Types/Monitor/MonitorType";
8
+ import NetworkDeviceAlertPackUtil from "../../Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack";
9
+ import { NetworkAlertPolicyScopeUtil } from "../../Types/NetworkDevice/NetworkAlertPolicyScope";
10
+ import ObjectID from "../../Types/ObjectID";
11
+ /*
12
+ * The "one click to alerting" path for network devices.
13
+ *
14
+ * An alert policy is only useful once it has a Network Device monitor
15
+ * template to clone, and building one by hand means walking the monitor
16
+ * template form: pick the type, add a step, add five criteria, fill in a
17
+ * severity and a status on each. Most operators want exactly the Recommended
18
+ * Alert Pack (NetworkDeviceAlertPack) on every device, so this util builds
19
+ * that template and the policy that applies it to the whole project, and the
20
+ * settings page find-or-creates the pair from its empty state.
21
+ *
22
+ * FIND-OR-CREATE BY MARKER. The template carries RECOMMENDED_TEMPLATE_MARKER
23
+ * in its description. The name is what an operator renames; the marker is
24
+ * what the bootstrap looks for, so clicking "create the recommended policy"
25
+ * twice — or after the recommended policy was deleted and its template kept
26
+ * — reuses the template instead of minting a second one, and instead of
27
+ * tripping the policy service's "another policy already uses this template"
28
+ * refusal on a duplicate nobody meant to make.
29
+ *
30
+ * WHY THE ITEMS ARE FILLED IN HERE. NetworkDeviceAlertPackUtil deliberately
31
+ * leaves severities and on-call policies for the user to complete on the
32
+ * monitor form. A policy's monitors are never opened in that form — the
33
+ * engine clones them — so a criteria whose `createIncidents` is on but whose
34
+ * `incidents` list is empty would clone into monitors that fire nothing.
35
+ * Every incident-creating item therefore gets one CriteriaIncident and every
36
+ * alert-creating item one CriteriaAlert, both auto-resolving, at the
37
+ * project's lowest-order severity (PingMonitorSeedIds resolves that).
38
+ *
39
+ * NO DEVICE ON THE TEMPLATE STEP. A Network Device step names the device it
40
+ * watches; a template step is a placeholder the engine rebinds per device
41
+ * (NetworkDeviceMonitorTemplateUtil.rebindMonitorSteps), which requires the
42
+ * `networkDeviceMonitor` block to exist and ignores what id it holds. The
43
+ * step is built with the block present and the id unset, which the
44
+ * template's reference validator skips rather than rejects.
45
+ *
46
+ * Pure: no database, no permissions. The caller persists both rows through
47
+ * ModelAPI / the services so tenancy, billing and the policy engine's hooks
48
+ * all run.
49
+ */
50
+ export const RECOMMENDED_TEMPLATE_MARKER = "[oneuptime:network-alert-pack:v1]";
51
+ export const RECOMMENDED_TEMPLATE_NAME = "Network device alert pack (recommended)";
52
+ export const RECOMMENDED_POLICY_NAME = "Alert on every device";
53
+ export default class NetworkAlertPolicyBootstrapUtil {
54
+ /**
55
+ * The template every device's monitor is cloned from: a Network Device
56
+ * template whose single step carries the Recommended Alert Pack, with an
57
+ * incident or an alert filled in on every item.
58
+ */
59
+ static buildRecommendedMonitorTemplate(data) {
60
+ const criteriaInstances = NetworkDeviceAlertPackUtil.buildCriteriaInstances({
61
+ downMonitorStatusId: data.offlineMonitorStatusId,
62
+ });
63
+ for (const criteriaInstance of criteriaInstances) {
64
+ NetworkAlertPolicyBootstrapUtil.fillCriteriaActions({
65
+ criteriaInstance: criteriaInstance,
66
+ incidentSeverityId: data.incidentSeverityId,
67
+ alertSeverityId: data.alertSeverityId,
68
+ });
69
+ }
70
+ const monitorCriteria = new MonitorCriteria();
71
+ monitorCriteria.data = {
72
+ monitorCriteriaInstanceArray: criteriaInstances,
73
+ };
74
+ const monitorStep = new MonitorStep();
75
+ monitorStep.data.networkDeviceMonitor =
76
+ MonitorStepNetworkDeviceMonitorUtil.getDefault();
77
+ monitorStep.data.monitorCriteria = monitorCriteria;
78
+ const monitorSteps = new MonitorSteps();
79
+ monitorSteps.data = {
80
+ monitorStepsInstanceArray: [monitorStep],
81
+ /*
82
+ * Where the monitor goes when no pack item matches — the device is
83
+ * reachable, its walk succeeds, its interfaces are up. Without this a
84
+ * monitor that once went Offline would never come back.
85
+ */
86
+ defaultMonitorStatusId: new ObjectID(data.onlineMonitorStatusId.toString()),
87
+ };
88
+ const template = new MonitorTemplate();
89
+ template.projectId = new ObjectID(data.projectId.toString());
90
+ template.templateName = RECOMMENDED_TEMPLATE_NAME;
91
+ template.templateDescription =
92
+ NetworkAlertPolicyBootstrapUtil.buildRecommendedTemplateDescription();
93
+ template.monitorType = MonitorType.NetworkDevice;
94
+ template.monitorSteps = monitorSteps;
95
+ /*
96
+ * Left blank on purpose: a policy's monitors are named after the device
97
+ * alone, and a default monitor name would become a suffix on every one
98
+ * of them (the auto-import precedent, issue #3486).
99
+ */
100
+ template.monitorDescription =
101
+ "Provisioned by a Network Alert Policy. Edit the policy's template to change what this monitor alerts on; it is re-synced from the template, so edits made here are overwritten.";
102
+ return template;
103
+ }
104
+ /**
105
+ * The policy that applies the template to every device in the project.
106
+ * Unscoped on purpose — that is what "recommended" means here, and the
107
+ * settings table says "All devices" against it so nobody misreads the
108
+ * reach.
109
+ */
110
+ static buildRecommendedPolicy(data) {
111
+ const policy = new NetworkAlertPolicy();
112
+ policy.projectId = new ObjectID(data.projectId.toString());
113
+ policy.name = RECOMMENDED_POLICY_NAME;
114
+ policy.description =
115
+ "Every probe-polled device in the project gets a Network Device monitor cloned from the recommended alert pack: an incident when it stops answering ping and SNMP or an interface goes down, and an alert when its SNMP walk fails, an interface saturates or an interface logs errors. A device with no SNMP credentials is pinged rather than walked, so only the reachability item can fire on it until credentials are set. Narrow the scope to sites, roles or labels to cover fewer devices.";
116
+ policy.isEnabled = true;
117
+ policy.monitorTemplateId = new ObjectID(data.monitorTemplateId.toString());
118
+ policy.scope = NetworkAlertPolicyScopeUtil.normalize({});
119
+ return policy;
120
+ }
121
+ /** Whether a template is the one this util minted, by its marker. */
122
+ static isRecommendedTemplate(template) {
123
+ return ((template === null || template === void 0 ? void 0 : template.templateDescription) || "").includes(RECOMMENDED_TEMPLATE_MARKER);
124
+ }
125
+ /**
126
+ * The recommended template among a project's templates, or null. The
127
+ * first marked one wins so a project that somehow holds two keeps reusing
128
+ * the same one rather than alternating.
129
+ */
130
+ static findRecommendedTemplate(templates) {
131
+ for (const template of templates) {
132
+ if (NetworkAlertPolicyBootstrapUtil.isRecommendedTemplate(template)) {
133
+ return template;
134
+ }
135
+ }
136
+ return null;
137
+ }
138
+ /**
139
+ * The description the marker lives in. The marker is on its own line at
140
+ * the end so an operator can rewrite the prose above it without losing
141
+ * the tag that makes the template findable.
142
+ */
143
+ static buildRecommendedTemplateDescription() {
144
+ return `The Recommended Alert Pack for network devices: an incident when a device stops answering ping and SNMP or an interface goes down, an alert when the SNMP walk fails, an interface runs above 80% utilization or an interface logs errors. Created by the "Create the recommended policy" action under Network > Settings > Alert Policies; edit the criteria here and every monitor the policy provisions follows. Keep the marker below so the action can find this template again.\n\n${RECOMMENDED_TEMPLATE_MARKER}`;
145
+ }
146
+ /*
147
+ * One CriteriaIncident on an incident-creating item, one CriteriaAlert on
148
+ * an alert-creating one, titled after the pack item so the incident an
149
+ * operator is paged with reads "Device unreachable", not "Criteria 1".
150
+ */
151
+ static fillCriteriaActions(data) {
152
+ const criteriaData = data.criteriaInstance.data;
153
+ if (!criteriaData) {
154
+ return;
155
+ }
156
+ if (criteriaData.createIncidents) {
157
+ const incident = {
158
+ id: ObjectID.generate().toString(),
159
+ title: criteriaData.name,
160
+ description: criteriaData.description,
161
+ incidentSeverityId: new ObjectID(data.incidentSeverityId.toString()),
162
+ autoResolveIncident: true,
163
+ onCallPolicyIds: [],
164
+ };
165
+ criteriaData.incidents = [incident];
166
+ }
167
+ if (criteriaData.createAlerts) {
168
+ const alert = {
169
+ id: ObjectID.generate().toString(),
170
+ title: criteriaData.name,
171
+ description: criteriaData.description,
172
+ alertSeverityId: new ObjectID(data.alertSeverityId.toString()),
173
+ autoResolveAlert: true,
174
+ onCallPolicyIds: [],
175
+ };
176
+ criteriaData.alerts = [alert];
177
+ }
178
+ }
179
+ }
180
+ //# sourceMappingURL=NetworkAlertPolicyBootstrapUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkAlertPolicyBootstrapUtil.js","sourceRoot":"","sources":["../../../../Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { SnmpVersionUtil } from "../../Types/Monitor/SnmpMonitor/SnmpVersion";
2
+ function isNonEmpty(value) {
3
+ return typeof value === "string" && value.trim().length > 0;
4
+ }
5
+ export const hasUsableCredentials = (carrier) => {
6
+ if (SnmpVersionUtil.isV3(carrier.snmpVersion)) {
7
+ return isNonEmpty(carrier.snmpV3Username);
8
+ }
9
+ return isNonEmpty(carrier.snmpCommunityString);
10
+ };
11
+ export default hasUsableCredentials;
12
+ //# sourceMappingURL=SnmpCredentialUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnmpCredentialUtil.js","sourceRoot":"","sources":["../../../../Utils/NetworkDevice/SnmpCredentialUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAqD9E,SAAS,UAAU,CAAC,KAAgC;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAiC,CAChE,OAA8B,EACrB,EAAE;IACX,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9C,OAAO,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -1,7 +1,6 @@
1
- import NetworkDeviceMonitoringMethod from "../../Types/NetworkDevice/NetworkDeviceMonitoringMethod";
2
1
  import CidrMatchUtil from "../NetworkSite/CidrMatchUtil";
3
2
  import RulePatternMatchUtil from "../Rules/RulePatternMatchUtil";
4
- import { monitoringMethodForDiscoveredHost } from "./DiscoveryImportEligibility";
3
+ import { isPingOnlyDiscoveredHost } from "./DiscoveryImportEligibility";
5
4
  import ScanTargetUtil from "./ScanTargetUtil";
6
5
  /*
7
6
  * Longest subject string a pattern is evaluated against. SNMP DisplayStrings
@@ -58,10 +57,21 @@ export function matchesOidPattern(value, pattern) {
58
57
  return oid === oidPattern || oid.startsWith(oidPattern + ".");
59
58
  }
60
59
  export class AutoImportRuleMatcher {
61
- // True when the host answered ping but not SNMP.
60
+ /*
61
+ * True when the host answered ping but not SNMP.
62
+ *
63
+ * Asked of the host's own SNMP answer (`isPingOnlyDiscoveredHost`), NOT of
64
+ * the method it would import under. Under ping-first polling EVERY
65
+ * discovered host imports as a Probe device, so
66
+ * `monitoringMethodForDiscoveredHost` is a constant — routing this gate
67
+ * through it made `isPingOnlyHost` permanently false and silently opened
68
+ * the default-closed gate below: one SNMP credential typo would have
69
+ * imported a whole subnet of half-identified hosts through rules that never
70
+ * opted in. How a host is MONITORED and what it ANSWERED are two different
71
+ * questions now, and this one is the second.
72
+ */
62
73
  static isPingOnlyHost(host) {
63
- return (monitoringMethodForDiscoveredHost(host) ===
64
- NetworkDeviceMonitoringMethod.Monitor);
74
+ return isPingOnlyDiscoveredHost(host);
65
75
  }
66
76
  /*
67
77
  * True when this rule's populated conditions all match the host.
@@ -1 +1 @@
1
- {"version":3,"file":"AutoImportRuleMatcher.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/AutoImportRuleMatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AutoImportRuleMatcher.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/AutoImportRuleMatcher.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import NetworkDevice from "../../Models/DatabaseModels/NetworkDevice";
2
- import NetworkDeviceMonitoringMethod from "../../Types/NetworkDevice/NetworkDeviceMonitoringMethod";
3
2
  import ObjectID from "../../Types/ObjectID";
4
3
  import SnmpScanConfigUtil from "./SnmpScanConfigUtil";
5
- import { monitoringMethodForDiscoveredHost } from "./DiscoveryImportEligibility";
4
+ import { isPingOnlyDiscoveredHost, monitoringMethodForDiscoveredHost, } from "./DiscoveryImportEligibility";
6
5
  import { normalizeReverseDnsName } from "./ReverseDnsNameUtil";
7
6
  /*
8
7
  * One discovered host -> one NetworkDevice, the same way everywhere.
@@ -148,11 +147,18 @@ export function buildFallbackDeviceName(host) {
148
147
  /**
149
148
  * The NetworkDevice a discovered host imports as.
150
149
  *
151
- * An SNMP-reachable host becomes a polled device carrying the scan's probe
152
- * and credentials. A ping-only host becomes a monitor-backed device with no
153
- * probe, no credentials and polling off: it is recorded so it can belong to a
154
- * site and appear on the topology map, and binding a monitor to it stays a
155
- * separate, deliberate step.
150
+ * Every host becomes a Probe device polled by the scan's probe — the probe
151
+ * that just proved the host answers, so the one that can keep asking. An
152
+ * SNMP-reachable host also carries the credential set that answered it, so
153
+ * its first poll walks it for interfaces, inventory and health. A ping-only
154
+ * host carries no credentials at all: the probe pings it and nothing more, it
155
+ * has a status from its first poll, and adding credentials later on its
156
+ * Settings page is what turns the walk on.
157
+ *
158
+ * (It used to import as a monitor-backed device with no probe and polling
159
+ * off, which left it on "Pending" until an operator hand-bound a Ping monitor
160
+ * — issue #3447. Reachability is a built-in capability of every probe-polled
161
+ * device now, so that dead end is gone.)
156
162
  *
157
163
  * The caller supplies the name (normally `buildDeviceName(host)`) so the
158
164
  * name-collision retry can rebuild the same device under
@@ -191,12 +197,39 @@ export function buildNetworkDeviceFromDiscoveredHost(data) {
191
197
  }
192
198
  const monitoringMethod = monitoringMethodForDiscoveredHost(host);
193
199
  device.monitoringMethod = monitoringMethod;
194
- if (monitoringMethod === NetworkDeviceMonitoringMethod.Monitor) {
200
+ /*
201
+ * The scan's probe, on EVERY device. It is the probe that just reached this
202
+ * host — over ping at the very least — so it is the one that can keep
203
+ * polling it. Written explicitly rather than left to the column default:
204
+ * a Probe device with no probe is claimed by nothing and never polls, which
205
+ * is the "Pending forever" the whole change exists to end.
206
+ */
207
+ if (data.scan.probeId) {
208
+ // Re-wrapped: the scan may hold a serialized id rather than an ObjectID.
209
+ device.probeId = new ObjectID(data.scan.probeId.toString());
210
+ }
211
+ /*
212
+ * Polling on, for both kinds of host. The column defaults to true, but this
213
+ * function is the recipe both import paths share and "the probe polls this
214
+ * device" is the whole point of it, so the recipe says so itself rather
215
+ * than trusting a default that a ping-only host used to override to false.
216
+ */
217
+ device.isPollingEnabled = true;
218
+ if (isPingOnlyDiscoveredHost(host)) {
195
219
  /*
196
- * A ping-only host is never SNMP-polled, so the vendor-template
197
- * auto-apply (which keys off a polled sysObjectID) stays off too.
220
+ * A ping-only host carries NO credentials, decided BEFORE any config is
221
+ * looked up: `snmpConfigId` and `snmpReachable` are two fields of the
222
+ * same probe-written jsonb row, and nothing enforces that a ping-only row
223
+ * leaves the first one unset. A device that answered nothing but a ping
224
+ * must not import carrying a community string it rejected — it would be
225
+ * walked with it on every poll and read as an SNMP failure rather than
226
+ * as the credential-less device it is. The probe pings it and nothing
227
+ * more until credentials are added on its Settings page.
228
+ *
229
+ * The OID template and the vendor-template auto-apply stay off too: both
230
+ * key off SNMP data — a polled sysObjectID, a walked OID list — that
231
+ * this host did not supply and will not until it has credentials.
198
232
  */
199
- device.isPollingEnabled = false;
200
233
  return device;
201
234
  }
202
235
  if (data.oidTemplateId) {
@@ -205,10 +238,6 @@ export function buildNetworkDeviceFromDiscoveredHost(data) {
205
238
  if (data.autoApplyVendorHealthTemplate) {
206
239
  device.autoApplyVendorHealthTemplate = true;
207
240
  }
208
- if (data.scan.probeId) {
209
- // Re-wrapped: the scan may hold a serialized id rather than an ObjectID.
210
- device.probeId = new ObjectID(data.scan.probeId.toString());
211
- }
212
241
  /*
213
242
  * THE credential set that answered this host, not the scan's first one.
214
243
  *
@@ -1 +1 @@
1
- {"version":3,"file":"DiscoveredDeviceBuilder.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DiscoveredDeviceBuilder.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,19 @@ import NetworkDeviceMonitoringMethod from "../../Types/NetworkDevice/NetworkDevi
2
2
  /*
3
3
  * Pure, react-free import rule for discovery scan results.
4
4
  *
5
- * Every host the sweep found alive is importable; what differs is HOW. A host
6
- * that answered SNMP becomes a polled device with the scan's credentials. A
7
- * host that answered only ping becomes a monitor-backed device: no probe, no
8
- * credentials, health supplied later by a monitor the operator binds to it.
5
+ * Every host the sweep found alive is importable, and every one of them
6
+ * imports as a probe-polled device: the scan's probe pings it on its schedule,
7
+ * and walks it over SNMP as well when it has credentials. What differs between
8
+ * a host that answered SNMP and one that only answered ping is therefore not
9
+ * HOW it is monitored but WHAT rides along — the SNMP host carries the scan's
10
+ * credential set that answered it, the ping-only host carries none and is
11
+ * simply pinged until somebody adds credentials.
12
+ *
13
+ * That is a change from the SNMP-first era, when a ping-only host had to
14
+ * import as a monitor-backed device with no probe and polling off, and read
15
+ * "Pending" until an operator hand-bound a Ping monitor to it (issue #3447).
16
+ * Reachability is a built-in capability of every probe-polled device now, so
17
+ * the ping-only host gets a status from its first poll like any other.
9
18
  *
10
19
  * Ping-only hosts used to be refused outright, on the reasoning that they
11
20
  * would turn up as ARP/FDB endpoints once their switch was monitored. That is
@@ -18,30 +27,50 @@ import NetworkDeviceMonitoringMethod from "../../Types/NetworkDevice/NetworkDevi
18
27
  * because the dashboard's Review dialog and the server-side auto-import rule
19
28
  * engine both decide "how does this host import" through it, and the two must
20
29
  * never disagree: the group a host is shown under in the dialog and the
21
- * monitoring method a rule imports it with are the same decision.
30
+ * device a rule imports it as are the same decision.
31
+ */
32
+ /**
33
+ * True when the host answered ping but not SNMP — the "No SNMP" group in the
34
+ * Review dialog, and the host that imports with no credentials.
35
+ *
36
+ * Only an EXPLICIT snmpReachable === false is ping-only: scans stored before
37
+ * the field existed carry undefined, and every host on those scans answered
38
+ * SNMP (ping-only sweeps did not exist yet), so legacy rows keep importing
39
+ * with the scan's credentials.
40
+ *
41
+ * Nullish hosts read as NOT ping-only rather than throwing. `discoveredDevices`
42
+ * is jsonb written verbatim from the probe's payload and the only guard on it
43
+ * (DiscoveryScanOutcome.getDiscoveredHosts) checks that the VALUE is an array
44
+ * — never that its elements are objects. A single null element used to take
45
+ * the whole page down from inside a table cell or a modal body, where a thrown
46
+ * TypeError has nowhere useful to go. Every other kind of junk element (a
47
+ * number, a string, {}) already read as an SNMP host; null is simply
48
+ * consistent with them.
22
49
  */
50
+ export function isPingOnlyDiscoveredHost(host) {
51
+ return (host === null || host === void 0 ? void 0 : host.snmpReachable) === false;
52
+ }
23
53
  /**
24
54
  * Which monitoring method a discovered host should be imported under.
25
55
  *
26
- * Only an EXPLICIT snmpReachable === false means ping-only: scans stored
27
- * before the field existed carry undefined, and every host on those scans
28
- * answered SNMP (ping-only sweeps did not exist yet), so legacy rows keep
29
- * importing as SNMP devices.
56
+ * Probe, for every host. Under ping-first polling there is no discovered host
57
+ * a probe cannot monitor: the scan's probe just proved the host answers ping,
58
+ * and that is all a probe-polled device needs to have a status. SNMP is an
59
+ * enrichment layered on top when the host answered it, and
60
+ * `buildNetworkDeviceFromDiscoveredHost` decides that by
61
+ * `isPingOnlyDiscoveredHost`, not by this function.
62
+ *
63
+ * `Monitor` — a bound monitor's status IS the device's status — is an override
64
+ * an operator chooses on a device's Settings page for gear a probe cannot
65
+ * reach at all. Discovery never has grounds to choose it: every host it offers
66
+ * was reached by the probe that found it.
67
+ *
68
+ * Kept as a function, with the host as its argument, because it is the one
69
+ * seam through which the dialog and the rule engine ask the question, and a
70
+ * future rule that DID need to look at the host would land here.
30
71
  */
31
- export function monitoringMethodForDiscoveredHost(host) {
32
- /*
33
- * Nullish hosts read as SNMP rather than throwing. `discoveredDevices` is
34
- * jsonb written verbatim from the probe's payload and the only guard on it
35
- * (DiscoveryScanOutcome.getDiscoveredHosts) checks that the VALUE is an
36
- * array — never that its elements are objects. A single null element used
37
- * to take the whole page down from inside a table cell or a modal body,
38
- * where a thrown TypeError has nowhere useful to go. Every other kind of
39
- * junk element (a number, a string, {}) already read as SNMP; null is now
40
- * simply consistent with them.
41
- */
42
- return (host === null || host === void 0 ? void 0 : host.snmpReachable) === false
43
- ? NetworkDeviceMonitoringMethod.Monitor
44
- : NetworkDeviceMonitoringMethod.Snmp;
72
+ export function monitoringMethodForDiscoveredHost(_host) {
73
+ return NetworkDeviceMonitoringMethod.Probe;
45
74
  }
46
75
  /** True when the discovered host can be imported as a Network Device. */
47
76
  export function isImportableDiscoveredHost(_host) {
@@ -1 +1 @@
1
- {"version":3,"file":"DiscoveryImportEligibility.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/DiscoveryImportEligibility.ts"],"names":[],"mappings":"AACA,OAAO,6BAA6B,MAAM,yDAAyD,CAAC;AAEpG;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,iCAAiC,CAC/C,IAAgD;IAEhD;;;;;;;;;OASG;IACH,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,MAAK,KAAK;QAClC,CAAC,CAAC,6BAA6B,CAAC,OAAO;QACvC,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC;AACzC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,0BAA0B,CACxC,KAA8B;IAE9B;;;;;;;;OAQG;IACH,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"DiscoveryImportEligibility.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/DiscoveryImportEligibility.ts"],"names":[],"mappings":"AACA,OAAO,6BAA6B,MAAM,yDAAyD,CAAC;AAEpG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAgD;IAEhD,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,MAAK,KAAK,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iCAAiC,CAC/C,KAAiD;IAEjD,OAAO,6BAA6B,CAAC,KAAK,CAAC;AAC7C,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,0BAA0B,CACxC,KAA8B;IAE9B;;;;;;;;OAQG;IACH,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -60,6 +60,23 @@ const PING_MONITOR_NAME_PREFIX = "Ping ";
60
60
  * from the same dropdown.
61
61
  */
62
62
  export const PING_MONITOR_INTERVAL = "*/5 * * * *";
63
+ /**
64
+ * Where a Ping monitor is being built FROM. The sentence it writes into the
65
+ * monitor's description is the only thing that differs, and it matters: an
66
+ * operator reading the monitor list months later should be told whether a
67
+ * scan, a form, or a bulk action put it there.
68
+ */
69
+ export var PingMonitorOrigin;
70
+ (function (PingMonitorOrigin) {
71
+ // A host that answered a discovery sweep's ping but not its SNMP probe.
72
+ PingMonitorOrigin["DiscoveryImport"] = "DiscoveryImport";
73
+ // The device create form, with "create a Ping monitor" ticked.
74
+ PingMonitorOrigin["DeviceCreateForm"] = "DeviceCreateForm";
75
+ // The "Create Ping Monitor" button on a device's Overview or Monitors page.
76
+ PingMonitorOrigin["DevicePage"] = "DevicePage";
77
+ // The device list's bulk "Create Ping Monitors" action.
78
+ PingMonitorOrigin["BulkAction"] = "BulkAction";
79
+ })(PingMonitorOrigin || (PingMonitorOrigin = {}));
63
80
  /**
64
81
  * The monitor's name: "Ping <device name>", clamped to the column.
65
82
  *
@@ -116,26 +133,53 @@ function suppressIncidentCreation(step) {
116
133
  }
117
134
  }
118
135
  /**
119
- * One ping-only discovered host -> the Ping monitor that will report its
120
- * health once bound to the device through `NetworkDevice.monitorId`.
136
+ * The sentence a provisioned monitor carries so its origin is legible later.
137
+ * Exported so the surfaces that build one can be tested against the exact
138
+ * wording rather than a paraphrase.
139
+ */
140
+ export function buildPingMonitorDescription(data) {
141
+ const reachability = `Reachability for ${data.address}`;
142
+ switch (data.origin) {
143
+ case PingMonitorOrigin.DiscoveryImport:
144
+ return `${reachability}, created when this device was imported from a network discovery scan. The device answered ping but not SNMP, so this monitor is what reports whether it is up.`;
145
+ case PingMonitorOrigin.DeviceCreateForm:
146
+ return `${reachability}, created with this network device. The device is monitor-backed — nothing polls it over SNMP — so this monitor is what reports whether it is up.`;
147
+ case PingMonitorOrigin.BulkAction:
148
+ return `${reachability}, created by the device list's "Create Ping Monitors" action. The device is monitor-backed — nothing polls it over SNMP — so this monitor is what reports whether it is up.`;
149
+ case PingMonitorOrigin.DevicePage:
150
+ default:
151
+ return `${reachability}, created from this network device's page. The device is monitor-backed — nothing polls it over SNMP — so this monitor is what reports whether it is up.`;
152
+ }
153
+ }
154
+ /**
155
+ * One device address -> the Ping monitor that will report the device's
156
+ * health once bound to it through `NetworkDevice.monitorId`.
121
157
  *
122
- * The caller creates this monitor FIRST, then creates the device carrying the
123
- * new monitor's id: `NetworkDeviceService.onCreateSuccess` stamps the
124
- * monitor's current status onto the device at bind time, so the device's
125
- * status pill resolves on the first render rather than waiting for the
126
- * monitor's next status CHANGE (which on a healthy network may never come —
127
- * that was OneUptime/oneuptime#3392).
158
+ * This is the shape every provisioning surface shares: discovery import, the
159
+ * device create form, the "Create Ping Monitor" button on a device's page and
160
+ * the bulk action on the device list. They differ only in where the address
161
+ * and the name come from and in the origin sentence; the monitor itself
162
+ * type, interval, criteria, incident suppression is identical, which is
163
+ * what lets an operator treat every provisioned monitor the same way.
164
+ *
165
+ * Order of operations is the caller's: discovery creates the monitor FIRST
166
+ * and then the device carrying its id (so the create-time stamp resolves the
167
+ * pill immediately), while the create form and the bulk action create or
168
+ * already have the device and bind afterwards — which re-stamps through
169
+ * `NetworkDeviceService.onUpdateSuccess`, so the pill resolves just the same.
128
170
  */
129
- export function buildPingMonitorForDiscoveredHost(data) {
130
- var _a;
131
- const address = (((_a = data.host) === null || _a === void 0 ? void 0 : _a.ipAddress) || "").trim();
171
+ export function buildPingMonitorForAddress(data) {
172
+ const address = (data.address || "").trim();
132
173
  if (!address) {
133
- throw new Error("A discovered host needs an address before a Ping monitor can be built for it.");
174
+ throw new Error("A device needs an address before a Ping monitor can be built for it.");
134
175
  }
135
176
  const monitor = new Monitor();
136
177
  monitor.projectId = new ObjectID(data.projectId.toString());
137
178
  monitor.name = buildPingMonitorName(data.deviceName);
138
- monitor.description = `Reachability for ${address}, created when this device was imported from a network discovery scan. The device answered ping but not SNMP, so this monitor is what reports whether it is up.`;
179
+ monitor.description = buildPingMonitorDescription({
180
+ address: address,
181
+ origin: data.origin,
182
+ });
139
183
  monitor.monitorType = MonitorType.Ping;
140
184
  monitor.monitoringInterval = PING_MONITOR_INTERVAL;
141
185
  const step = MonitorStep.getDefaultMonitorStep({
@@ -160,4 +204,32 @@ export function buildPingMonitorForDiscoveredHost(data) {
160
204
  monitor.monitorSteps = monitorSteps;
161
205
  return monitor;
162
206
  }
207
+ /**
208
+ * One ping-only discovered host -> the Ping monitor that will report its
209
+ * health once bound to the device through `NetworkDevice.monitorId`.
210
+ *
211
+ * The caller creates this monitor FIRST, then creates the device carrying the
212
+ * new monitor's id: `NetworkDeviceService.onCreateSuccess` stamps the
213
+ * monitor's current status onto the device at bind time, so the device's
214
+ * status pill resolves on the first render rather than waiting for the
215
+ * monitor's next status CHANGE (which on a healthy network may never come —
216
+ * that was OneUptime/oneuptime#3392).
217
+ *
218
+ * A thin adapter over `buildPingMonitorForAddress`: the only thing a
219
+ * discovered host contributes is its address.
220
+ */
221
+ export function buildPingMonitorForDiscoveredHost(data) {
222
+ var _a;
223
+ const address = (((_a = data.host) === null || _a === void 0 ? void 0 : _a.ipAddress) || "").trim();
224
+ if (!address) {
225
+ throw new Error("A discovered host needs an address before a Ping monitor can be built for it.");
226
+ }
227
+ return buildPingMonitorForAddress({
228
+ projectId: data.projectId,
229
+ address: address,
230
+ deviceName: data.deviceName,
231
+ seedIds: data.seedIds,
232
+ origin: PingMonitorOrigin.DiscoveryImport,
233
+ });
234
+ }
163
235
  //# sourceMappingURL=PingMonitorBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PingMonitorBuilder.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/PingMonitorBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qCAAqC,CAAC;AAE1D,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEnC,OAAO,WAAW,MAAM,iCAAiC,CAAC;AAC1D,OAAO,YAAY,MAAM,kCAAkC,CAAC;AAC5D,OAAO,WAAW,MAAM,iCAAiC,CAAC;AAC1D,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAW,EAAE,CAAC;AAEvD,MAAM,wBAAwB,GAAW,OAAO,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAW,aAAa,CAAC;AA4B3D;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,MAAM,iBAAiB,GAAW,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE5D,MAAM,QAAQ,GAAW,GAAG,wBAAwB,GAAG,iBAAiB,EAAE,CAAC;IAE3E,OAAO,QAAQ,CAAC,MAAM,GAAG,4BAA4B;QACnD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,4BAA4B,CAAC;QACrD,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,MAAM,cAAc,GAAW,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEtD,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,wBAAwB,CAAC,IAAiB;;IACjD,MAAM,iBAAiB,GACrB,CAAA,MAAA,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,eAAe,0CAAE,IAAI,0CAAE,4BAA4B,KAAI,EAAE,CAAC;IAEvE,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;QACjD,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC1B,gBAAgB,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iCAAiC,CAC/C,IAA0B;;IAE1B,MAAM,OAAO,GAAW,CAAC,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,SAAS,KAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAY,IAAI,OAAO,EAAE,CAAC;IAEvC,OAAO,CAAC,SAAS,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrD,OAAO,CAAC,WAAW,GAAG,oBAAoB,OAAO,iKAAiK,CAAC;IACnN,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;IACvC,OAAO,CAAC,kBAAkB,GAAG,qBAAqB,CAAC;IAEnD,MAAM,IAAI,GAAgB,WAAW,CAAC,qBAAqB,CAAC;QAC1D,WAAW,EAAE,OAAO,CAAC,IAAI;QACzB,WAAW,EAAE,WAAW,CAAC,IAAI;QAC7B,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB;QACzD,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,sBAAsB;QAC3D,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB;QACjE,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,sBAAsB;KAC5D,CAAC,CAAC;IAEH;;;OAGG;IACH,IAAI,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjE,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,YAAY,GAAiB,IAAI,YAAY,EAAE,CAAC;IACtD,YAAY,CAAC,IAAI,GAAG;QAClB,yBAAyB,EAAE,CAAC,IAAI,CAAC;QACjC,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB;KAC3D,CAAC;IAEF,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;IAEpC,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"PingMonitorBuilder.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/PingMonitorBuilder.ts"],"names":[],"mappings":"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"}