@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 @@
1
+ {"version":3,"file":"EmailRollupFlushRunner.js","sourceRoot":"","sources":["../../../../../Server/Utils/EmailRollup/EmailRollupFlushRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,497 @@
1
+ import { MAX_ROWS_IN_ROLLUP, ROLLUP_PROJECT_NAME_MAX, ROLLUP_SUBJECT_LEAD_TITLE_MAX, ROLLUP_SUBJECT_MAX_CATEGORIES, } from "./EmailRollupConstants";
2
+ import RollupCategory, { ROLLUP_CATEGORY_LABEL, ROLLUP_CATEGORY_ORDER, } from "../../../Types/NotificationSetting/NotificationEmailRollupCategory";
3
+ /*
4
+ * Deliberately a local copy, matching the convention the identical function
5
+ * in WeeklyReadinessDigest.ts already establishes: an escape routine is small
6
+ * enough that duplicating it costs less than the coupling of exporting one,
7
+ * and a shared one invites a caller to escape twice.
8
+ */
9
+ const escapeHtml = (value) => {
10
+ return value
11
+ .replace(/&/g, "&")
12
+ .replace(/</g, "&lt;")
13
+ .replace(/>/g, "&gt;")
14
+ .replace(/"/g, "&quot;")
15
+ .replace(/'/g, "&#39;");
16
+ };
17
+ /*
18
+ * MailService compiles the SUBJECT through Handlebars as well as the body, so
19
+ * an incident titled "{{projectName}} is down" would otherwise be substituted
20
+ * away to nothing on its journey to the inbox. Stripping the braces is the
21
+ * cheapest fix that cannot itself break anything: the characters are removed,
22
+ * never interpreted.
23
+ */
24
+ const stripHandlebarsBraces = (value) => {
25
+ return value.replace(/\{\{/g, "").replace(/\}\}/g, "");
26
+ };
27
+ /*
28
+ * The ellipsis replaces the last kept character rather than being appended,
29
+ * so the result is never longer than maxLength. Callers use this to stay
30
+ * under a column length or a sane subject length, and a truncation that
31
+ * overshoots its own limit by one character is exactly the kind of bug those
32
+ * limits exist to prevent.
33
+ */
34
+ const truncate = (value, maxLength) => {
35
+ if (value.length <= maxLength) {
36
+ return value;
37
+ }
38
+ if (maxLength <= 1) {
39
+ return value.slice(0, Math.max(maxLength, 0));
40
+ }
41
+ return `${value.slice(0, maxLength - 1)}…`;
42
+ };
43
+ const pluralise = (count, singular, plural) => {
44
+ return count === 1 ? singular : plural;
45
+ };
46
+ /*
47
+ * rollupCategory is a plain string column, so a row written by a newer build
48
+ * - or by a build that had a category this one has since removed - can carry
49
+ * a code this process has never heard of. Such a row still belongs in the
50
+ * counts; it just counts as Other rather than crashing the render of an email
51
+ * that is standing in for a hundred others.
52
+ */
53
+ const normaliseCategory = (value) => {
54
+ if (value !== undefined &&
55
+ Object.prototype.hasOwnProperty.call(ROLLUP_CATEGORY_LABEL, value)) {
56
+ return value;
57
+ }
58
+ return RollupCategory.Other;
59
+ };
60
+ /*
61
+ * Collapse the raw notification list into the rows a human reads.
62
+ *
63
+ * The fold key is the deep link ALONE when there is one, not the event type
64
+ * plus the link. That is the whole point: an incident's created,
65
+ * acknowledged and resolved emails all point at the same incident, so they
66
+ * become ONE row carrying the LATEST subject. A storm of 120 emails becomes
67
+ * roughly 40 rows, and each row is more accurate than any of the individual
68
+ * emails it replaces - every one of those was a stale snapshot by the time it
69
+ * was read, and the row is not.
70
+ *
71
+ * Items with no link have nothing to fold on but their own words, so they
72
+ * fold on event type plus subject. Two identical probe-flip notices collapse;
73
+ * two different ones stay apart.
74
+ */
75
+ export const foldItems = (items) => {
76
+ var _a, _b, _c, _d;
77
+ const groups = new Map();
78
+ for (const item of items) {
79
+ const link = typeof item.viewLink === "string" ? item.viewLink : "";
80
+ const key = link === "" ? `E:${(_a = item.eventType) !== null && _a !== void 0 ? _a : ""}|${(_b = item.subject) !== null && _b !== void 0 ? _b : ""}` : link;
81
+ const createdAtMs = item.createdAt instanceof Date ? item.createdAt.getTime() : 0;
82
+ const existing = groups.get(key);
83
+ if (!existing) {
84
+ groups.set(key, {
85
+ latestAt: createdAtMs,
86
+ firstAt: createdAtMs,
87
+ title: (_c = item.subject) !== null && _c !== void 0 ? _c : "",
88
+ link: link,
89
+ category: normaliseCategory(item.rollupCategory),
90
+ itemCount: 1,
91
+ });
92
+ continue;
93
+ }
94
+ existing.itemCount = existing.itemCount + 1;
95
+ /*
96
+ * Tracked rather than assumed from input order. The flush runner reads its
97
+ * items back sorted ascending, so firstAt is almost always the first item
98
+ * seen - but "almost always" is not a property a row's own timestamp
99
+ * should depend on, and a Math.min costs nothing.
100
+ */
101
+ if (createdAtMs < existing.firstAt) {
102
+ existing.firstAt = createdAtMs;
103
+ }
104
+ /*
105
+ * >= rather than > so that when a group's items share a timestamp the
106
+ * LAST one in input order wins, which is what "input is sorted ascending"
107
+ * is supposed to buy the reader.
108
+ */
109
+ if (createdAtMs >= existing.latestAt) {
110
+ existing.latestAt = createdAtMs;
111
+ existing.title = (_d = item.subject) !== null && _d !== void 0 ? _d : "";
112
+ existing.link = link;
113
+ /*
114
+ * The category follows the LATEST item too. A group is keyed on its deep
115
+ * link, and two events about one resource can in principle be filed
116
+ * under different categories - a monitor status change and the incident
117
+ * it declared both linking to the incident, say - so the section this
118
+ * row lands in is the one its newest event says, not the one its oldest
119
+ * happened to say.
120
+ */
121
+ existing.category = normaliseCategory(item.rollupCategory);
122
+ }
123
+ }
124
+ const groupList = Array.from(groups.values());
125
+ // Newest state first: the reader's eye lands on what is true right now.
126
+ groupList.sort((a, b) => {
127
+ return b.latestAt - a.latestAt;
128
+ });
129
+ return groupList.map((group) => {
130
+ return {
131
+ title: group.title,
132
+ link: group.link,
133
+ hasLink: group.link === "" ? "false" : "true",
134
+ itemCount: group.itemCount,
135
+ category: group.category,
136
+ firstAtMs: group.firstAt,
137
+ latestAtMs: group.latestAt,
138
+ };
139
+ });
140
+ };
141
+ const MONTH_NAMES = [
142
+ "Jan",
143
+ "Feb",
144
+ "Mar",
145
+ "Apr",
146
+ "May",
147
+ "Jun",
148
+ "Jul",
149
+ "Aug",
150
+ "Sep",
151
+ "Oct",
152
+ "Nov",
153
+ "Dec",
154
+ ];
155
+ const pad = (value) => {
156
+ return value < 10 ? `0${value}` : `${value}`;
157
+ };
158
+ /*
159
+ * UTC, spelled out, and never the server's local time.
160
+ *
161
+ * The times in this email are the one piece of information the individual
162
+ * emails it replaces did not carry - each of those WAS its own timestamp,
163
+ * because it arrived when it happened, and a rollup that arrives minutes
164
+ * later owes the reader the difference. Getting the zone wrong turns that
165
+ * into a lie, and there are two ways to get it wrong: this process's TZ is a
166
+ * deployment detail that says nothing about where the recipient is, and the
167
+ * recipient's own timezone is not a thing this pure function is allowed to
168
+ * go and look up. An explicit "UTC" suffix is the honest answer, is the same
169
+ * for every recipient of the same storm - so two colleagues comparing inboxes
170
+ * see the same numbers - and is deterministic in a test.
171
+ *
172
+ * Intl is deliberately not used: it would pull the format from an ICU build
173
+ * that differs between the App image and a developer's laptop, and a rollup
174
+ * email is not the place to discover that.
175
+ */
176
+ const formatTime = (ms, withDate) => {
177
+ const date = new Date(ms);
178
+ const clock = `${pad(date.getUTCHours())}:${pad(date.getUTCMinutes())}`;
179
+ if (!withDate) {
180
+ return `${clock} UTC`;
181
+ }
182
+ return `${MONTH_NAMES[date.getUTCMonth()]} ${date.getUTCDate()}, ${clock} UTC`;
183
+ };
184
+ /*
185
+ * True when the window crosses a UTC date boundary, in which case EVERY time
186
+ * in the email prints its date.
187
+ *
188
+ * A rollup normally covers ten minutes, so the date is noise. But a backlog
189
+ * that drained slowly, or a bucket that sat behind a wedged send, can carry
190
+ * items hours or days apart - and "14:22" against "09:03" with no date is
191
+ * actively misleading about which came first. The decision is made once, for
192
+ * the whole email, because a table where some rows carry a date and others do
193
+ * not is harder to read than either consistent choice.
194
+ */
195
+ const spansMultipleDays = (earliestMs, latestMs) => {
196
+ const earliest = new Date(earliestMs);
197
+ const latest = new Date(latestMs);
198
+ return (earliest.getUTCFullYear() !== latest.getUTCFullYear() ||
199
+ earliest.getUTCMonth() !== latest.getUTCMonth() ||
200
+ earliest.getUTCDate() !== latest.getUTCDate());
201
+ };
202
+ /*
203
+ * Split the rendered rows into the sections the email lists them under.
204
+ *
205
+ * Sections follow ROLLUP_CATEGORY_ORDER - fixed, urgency-first - and rows
206
+ * inside a section keep the newest-first order foldItems gave them. A
207
+ * category with no rows produces no section at all, so an email about one
208
+ * flapping probe is one heading, not eleven empty ones.
209
+ */
210
+ const groupRowsIntoSections = (rows) => {
211
+ const byCategory = new Map();
212
+ for (const row of rows) {
213
+ const existing = byCategory.get(row.category);
214
+ if (existing) {
215
+ existing.push(row);
216
+ continue;
217
+ }
218
+ byCategory.set(row.category, [row]);
219
+ }
220
+ const sections = [];
221
+ for (const category of ROLLUP_CATEGORY_ORDER) {
222
+ const sectionRows = byCategory.get(category);
223
+ if (!sectionRows || sectionRows.length === 0) {
224
+ continue;
225
+ }
226
+ sections.push({
227
+ category: category,
228
+ label: ROLLUP_CATEGORY_LABEL[category],
229
+ rows: sectionRows,
230
+ });
231
+ byCategory.delete(category);
232
+ }
233
+ /*
234
+ * ANYTHING ROLLUP_CATEGORY_ORDER FORGOT STILL GETS RENDERED, at the end.
235
+ *
236
+ * A category missing from that array is a bug, and the ratchet test exists
237
+ * to catch it - but the failure mode if one ever slips through must not be
238
+ * that a recipient's incidents quietly do not appear in an email whose one
239
+ * promise is that nothing was suppressed. Sorted by label so the output
240
+ * stays deterministic instead of depending on Map insertion order.
241
+ */
242
+ const leftovers = Array.from(byCategory.entries()).map((entry) => {
243
+ var _a;
244
+ return {
245
+ category: entry[0],
246
+ label: (_a = ROLLUP_CATEGORY_LABEL[entry[0]]) !== null && _a !== void 0 ? _a : ROLLUP_CATEGORY_LABEL[RollupCategory.Other],
247
+ rows: entry[1],
248
+ };
249
+ });
250
+ leftovers.sort((a, b) => {
251
+ if (a.label === b.label) {
252
+ return 0;
253
+ }
254
+ return a.label < b.label ? -1 : 1;
255
+ });
256
+ return sections.concat(leftovers);
257
+ };
258
+ /*
259
+ * Build the subject and the complete Handlebars variable set for one rollup
260
+ * email. Every string the recipient sees is composed HERE, in TypeScript,
261
+ * because the `concat` helper the templates register takes exactly two
262
+ * arguments and silently drops the rest - a trap two shipped templates are
263
+ * standing in today. NotificationRollup.hbs therefore contains no `concat`
264
+ * call at all, and a test pins that.
265
+ */
266
+ export const buildRollupEmail = (input) => {
267
+ var _a, _b, _c;
268
+ const items = input.items;
269
+ const allRows = foldItems(items);
270
+ const rows = allRows.slice(0, MAX_ROWS_IN_ROLLUP);
271
+ const hiddenRowList = allRows.slice(rows.length);
272
+ const hiddenRows = hiddenRowList.length;
273
+ let hiddenItems = 0;
274
+ for (const row of hiddenRowList) {
275
+ hiddenItems = hiddenItems + row.itemCount;
276
+ }
277
+ /*
278
+ * Counted over ALL items, never over the rendered slice. A 300-item rollup
279
+ * that can only show 100 rows still tells the reader there were 300 things,
280
+ * because the whole promise of this email is that nothing was suppressed.
281
+ */
282
+ const countsByCategory = new Map();
283
+ for (const item of items) {
284
+ const category = normaliseCategory(item.rollupCategory);
285
+ countsByCategory.set(category, ((_a = countsByCategory.get(category)) !== null && _a !== void 0 ? _a : 0) + 1);
286
+ }
287
+ const categoryCountList = Array.from(countsByCategory.entries()).map((entry) => {
288
+ return {
289
+ label: ROLLUP_CATEGORY_LABEL[entry[0]],
290
+ count: entry[1],
291
+ };
292
+ });
293
+ categoryCountList.sort((a, b) => {
294
+ if (a.count !== b.count) {
295
+ return b.count - a.count;
296
+ }
297
+ if (a.label === b.label) {
298
+ return 0;
299
+ }
300
+ return a.label < b.label ? -1 : 1;
301
+ });
302
+ const categoryCounts = categoryCountList
303
+ .map((entry) => {
304
+ return `${entry.count} ${entry.label}`;
305
+ })
306
+ .join(" · ");
307
+ const projectName = truncate(stripHandlebarsBraces(input.projectName || "your project"), ROLLUP_PROJECT_NAME_MAX);
308
+ const notificationCount = items.length;
309
+ const notificationWord = pluralise(notificationCount, "notification", "notifications");
310
+ const rollupTitle = `${notificationCount} ${notificationWord} from ${projectName}`;
311
+ /*
312
+ * THE TIME WINDOW, WHICH IS THE ONE THING THE INDIVIDUAL EMAILS ALREADY
313
+ * TOLD THE READER AND THIS EMAIL OTHERWISE WOULD NOT.
314
+ *
315
+ * Each of the forty emails this replaces arrived when its event happened,
316
+ * so its arrival time WAS its timestamp. One email that lands five minutes
317
+ * later has to say what period it covers, or a reader cannot tell a storm
318
+ * that ended twenty minutes ago from one still in progress.
319
+ *
320
+ * Empty items produce an empty window rather than a formatted epoch zero.
321
+ * buildRollupEmail is never called with none - the flush runner returns
322
+ * Empty before it gets here - but "1 Jan 1970" is a bad way to find that
323
+ * out, and the test suite calls it directly.
324
+ */
325
+ const timestamps = allRows
326
+ .flatMap((row) => {
327
+ return [row.firstAtMs, row.latestAtMs];
328
+ })
329
+ .filter((value) => {
330
+ return value > 0;
331
+ });
332
+ const earliestMs = timestamps.length === 0 ? 0 : Math.min(...timestamps);
333
+ const latestMs = timestamps.length === 0 ? 0 : Math.max(...timestamps);
334
+ const withDate = timestamps.length > 0 && spansMultipleDays(earliestMs, latestMs);
335
+ let summaryWindow = "";
336
+ if (timestamps.length > 0) {
337
+ const earliestLabel = formatTime(earliestMs, withDate);
338
+ const latestLabel = formatTime(latestMs, withDate);
339
+ summaryWindow =
340
+ earliestLabel === latestLabel
341
+ ? earliestLabel
342
+ : `${earliestLabel} to ${latestLabel}`;
343
+ }
344
+ const summaryCount = `${notificationCount} ${notificationWord}`;
345
+ /*
346
+ * The intro says WHY this email exists; the summary card beside it says
347
+ * what is in it. Splitting the two that way is what keeps the count, the
348
+ * window and the category breakdown out of the prose, where they read as a
349
+ * paragraph nobody finishes, and in the card, where they are three lines
350
+ * the eye takes in at once.
351
+ */
352
+ const rollupIntro = notificationCount === 1
353
+ ? `OneUptime grouped this notification from ${projectName} into a single email. Nothing was suppressed.`
354
+ : `OneUptime grouped these ${notificationCount} notifications from ${projectName} into a single email ` +
355
+ `instead of sending ${notificationCount} separate messages. Nothing was suppressed.`;
356
+ const moreText = hiddenRows === 0
357
+ ? ""
358
+ : `Showing the ${rows.length} most recent. ${hiddenRows} more ${pluralise(hiddenRows, "update", "updates")} ` +
359
+ `(covering ${hiddenItems} ${pluralise(hiddenItems, "notification", "notifications")}) ` +
360
+ `${pluralise(hiddenRows, "is", "are")} not listed here. Open the project to see everything.`;
361
+ /*
362
+ * The reader of this email did not ask for it, so the footer owes them the
363
+ * way out and not just an explanation. Rollup ships on with no preference,
364
+ * which means somebody who wants an email per event has no idea a switch
365
+ * exists unless this paragraph says so - and it is a per-project switch, so
366
+ * "for this project" is load-bearing rather than padding. It sits under the
367
+ * template's own heading, "Why did I get one email instead of several?",
368
+ * and ends in a colon because the preferencesLink is rendered immediately
369
+ * below it as the sentence's object.
370
+ */
371
+ const preferencesText = "OneUptime groups owner notifications into a single email when several arrive at once for the same project. " +
372
+ "To go back to one email per notification, sent the moment it happens, turn off email rollup for this project in your notification settings. " +
373
+ "The same page is where you choose which notifications you receive, or turn email off entirely:";
374
+ /*
375
+ * ONE FLAT ARRAY, WITH THE SECTION HEADING CARRIED ON ITS FIRST ROW.
376
+ *
377
+ * The alternative - nesting rows inside a sections array and using two
378
+ * {{#each}} blocks - reads better as data and worse as everything else. It
379
+ * needs a second `this.`-scope in the template, which the test that pins
380
+ * "the template reads no field the builder does not set" cannot then tell
381
+ * apart from the row scope; and a heading in its own <table> breaks the
382
+ * shared borders that make the list look like one list in Outlook. A flag
383
+ * on the first row of each section keeps the template to one loop and one
384
+ * scope, and keeps the whole list inside one <table>.
385
+ */
386
+ const sections = groupRowsIntoSections(rows);
387
+ const rowsForTemplate = [];
388
+ for (const section of sections) {
389
+ /*
390
+ * THE HEADING COUNTS NOTIFICATIONS, NOT ROWS, so the numbers in this
391
+ * email reconcile instead of contradicting each other.
392
+ *
393
+ * A section of two incidents can carry five notifications - created,
394
+ * acknowledged and resolved for one, created and a note for the other -
395
+ * and a heading that said "2" beside a summary card saying "5 Incidents"
396
+ * would read as a bug in the email. Counting updates makes the heading
397
+ * the sum of its rows' own "3 updates" labels AND the matching entry in
398
+ * the card, which is the only version a reader can check.
399
+ */
400
+ let sectionItemCount = 0;
401
+ for (const row of section.rows) {
402
+ sectionItemCount = sectionItemCount + row.itemCount;
403
+ }
404
+ const sectionCount = `${sectionItemCount} ${pluralise(sectionItemCount, "update", "updates")}`;
405
+ section.rows.forEach((row, index) => {
406
+ /*
407
+ * The row's own timestamp, and the count of what folded into it. A
408
+ * single-update row says only when it happened; a folded one says how
409
+ * many updates there were and when the LATEST of them was, because the
410
+ * title it carries is that latest update's words.
411
+ */
412
+ const timeLabel = formatTime(row.latestAtMs, withDate);
413
+ const metaLabel = row.itemCount === 1
414
+ ? timeLabel
415
+ : `${row.itemCount} updates · latest ${timeLabel}`;
416
+ rowsForTemplate.push({
417
+ title: row.title,
418
+ link: row.link,
419
+ hasLink: row.hasLink,
420
+ metaLabel: metaLabel,
421
+ /*
422
+ * The heading is emitted by the first row of the section rather than
423
+ * by an entry of its own, so every element of this array is a real
424
+ * row with a real title - an array with two shapes in it is how a
425
+ * heading ends up rendering an empty href.
426
+ */
427
+ isSectionStart: index === 0 ? "true" : "false",
428
+ sectionLabel: section.label,
429
+ sectionCount: sectionCount,
430
+ /*
431
+ * The zebra stripe is decided here, not in the template. Handlebars
432
+ * has @index, @first, @last and @key but NOT @odd or @even, and an
433
+ * unknown @-variable resolves to undefined rather than erroring - so
434
+ * `{{#if @odd}}` is silently always false and every row comes out the
435
+ * same colour. Emitting the colour as a plain string cannot rot that
436
+ * way, and it keeps the arithmetic in the language that has some.
437
+ *
438
+ * The index is the row's position WITHIN ITS SECTION, so every
439
+ * section starts on white and the stripe reads as part of the section
440
+ * rather than as a pattern running underneath the headings.
441
+ */
442
+ rowBackground: index % 2 === 1 ? "#f7f9fc" : "#ffffff",
443
+ });
444
+ });
445
+ }
446
+ const vars = {
447
+ rollupTitle: rollupTitle,
448
+ rollupIntroHtml: escapeHtml(rollupIntro),
449
+ summaryCount: summaryCount,
450
+ summaryWindow: summaryWindow,
451
+ categoryCounts: categoryCounts,
452
+ /*
453
+ * Dictionary<string | JSONObject> does not accept a bare array, and every
454
+ * other template in the codebase that renders a table launders its rows
455
+ * through this same double cast.
456
+ */
457
+ rows: rowsForTemplate,
458
+ hasMore: hiddenRows === 0 ? "false" : "true",
459
+ moreTextHtml: escapeHtml(moreText),
460
+ projectHomeLink: input.projectHomeLink,
461
+ preferencesHtml: escapeHtml(preferencesText),
462
+ preferencesLink: input.preferencesLink,
463
+ };
464
+ const leadTitle = truncate(stripHandlebarsBraces((_c = (_b = allRows[0]) === null || _b === void 0 ? void 0 : _b.title) !== null && _c !== void 0 ? _c : ""), ROLLUP_SUBJECT_LEAD_TITLE_MAX);
465
+ /*
466
+ * THE SUBJECT SAYS WHAT KIND OF STORM THIS IS, not just how big it was.
467
+ *
468
+ * "[Acme] 15 notifications" is what a reader sees in a list of forty other
469
+ * subjects, and it does not distinguish a probe that flapped fifteen times
470
+ * - which can wait until after lunch - from three incidents and a monitor
471
+ * outage, which cannot. The categories are already counted for the summary
472
+ * card; spending them on the subject line costs nothing and is the only
473
+ * part of this email that gets read before it is opened.
474
+ *
475
+ * Sorted by count, so the biggest thing leads; capped, because a client
476
+ * truncates the tail at a width this code cannot see, and a truncation this
477
+ * code performs can at least say how much it left out.
478
+ */
479
+ const namedCategories = categoryCountList.slice(0, ROLLUP_SUBJECT_MAX_CATEGORIES);
480
+ const unnamedCategories = categoryCountList.length - namedCategories.length;
481
+ const categorySummary = namedCategories
482
+ .map((entry) => {
483
+ return `${entry.count} ${entry.label}`;
484
+ })
485
+ .join(", ");
486
+ const subjectTail = unnamedCategories === 0
487
+ ? categorySummary
488
+ : `${categorySummary} +${unnamedCategories} more`;
489
+ const subject = notificationCount === 1
490
+ ? `[${projectName}] 1 notification: ${leadTitle}`
491
+ : `[${projectName}] ${notificationCount} notifications: ${subjectTail}`;
492
+ return {
493
+ subject: subject,
494
+ vars: vars,
495
+ };
496
+ };
497
+ //# sourceMappingURL=EmailRollupRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmailRollupRenderer.js","sourceRoot":"","sources":["../../../../../Server/Utils/EmailRollup/EmailRollupRenderer.ts"],"names":[],"mappings":"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"}