@oneuptime/common 12.0.33 → 13.0.0

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 (877) hide show
  1. package/Models/AnalyticsModels/RumSession.ts +117 -1
  2. package/Models/AnalyticsModels/RumSessionChunk.ts +13 -0
  3. package/Models/DatabaseModels/AlertCustomField.ts +77 -3
  4. package/Models/DatabaseModels/ApiKeyPermission.ts +3 -27
  5. package/Models/DatabaseModels/GlobalConfig.ts +12 -12
  6. package/Models/DatabaseModels/IncidentCustomField.ts +77 -3
  7. package/Models/DatabaseModels/InventoryItem.ts +44 -1
  8. package/Models/DatabaseModels/InventoryItemCustomField.ts +77 -3
  9. package/Models/DatabaseModels/MonitorCustomField.ts +77 -3
  10. package/Models/DatabaseModels/NetworkDevice.ts +126 -0
  11. package/Models/DatabaseModels/OnCallDutyPolicyCustomField.ts +77 -3
  12. package/Models/DatabaseModels/RumApplication.ts +6 -6
  13. package/Models/DatabaseModels/ScheduledMaintenanceCustomField.ts +77 -3
  14. package/Models/DatabaseModels/StatusPageCustomField.ts +77 -3
  15. package/Models/DatabaseModels/TeamCustomField.ts +77 -3
  16. package/Models/DatabaseModels/TeamMember.ts +0 -9
  17. package/Models/DatabaseModels/TeamMemberCustomField.ts +77 -3
  18. package/Models/DatabaseModels/TeamPermission.ts +3 -24
  19. package/Models/DatabaseModels/TelemetryIngestionKey.ts +260 -0
  20. package/Models/DatabaseModels/UserTelegram.ts +0 -4
  21. package/Scripts/benchmark-fanin-capacity.js +181 -0
  22. package/Server/API/TelemetryAPI.ts +1284 -164
  23. package/Server/API/UserNotificationSettingAPI.ts +55 -0
  24. package/Server/API/UserTelegramAPI.ts +48 -4
  25. package/Server/EnvironmentConfig.ts +82 -18
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.ts +91 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.ts +67 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.ts +139 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.ts +121 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.ts +25 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  32. package/Server/Infrastructure/QueueWorker.ts +20 -14
  33. package/Server/Infrastructure/Redis.ts +8 -8
  34. package/Server/Infrastructure/Semaphore.ts +2 -0
  35. package/Server/Infrastructure/Status.ts +10 -4
  36. package/Server/Middleware/TelemetryIngest.ts +453 -7
  37. package/Server/Services/AccessTokenService.ts +1 -0
  38. package/Server/Services/AlertCustomFieldService.ts +98 -0
  39. package/Server/Services/AlertService.ts +37 -0
  40. package/Server/Services/ApiKeyPermissionService.ts +461 -29
  41. package/Server/Services/CustomFieldMappingService.ts +879 -0
  42. package/Server/Services/DatabaseService.ts +65 -13
  43. package/Server/Services/GlobalConfigService.ts +194 -0
  44. package/Server/Services/IncidentCustomFieldService.ts +98 -0
  45. package/Server/Services/IncidentService.ts +35 -0
  46. package/Server/Services/InventoryItemService.ts +31 -1
  47. package/Server/Services/MetricService.ts +194 -0
  48. package/Server/Services/MonitorService.ts +32 -0
  49. package/Server/Services/MonitorTemplateService.ts +140 -19
  50. package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +427 -66
  51. package/Server/Services/NetworkDeviceDiscoveryScanService.ts +87 -2
  52. package/Server/Services/NetworkDeviceService.ts +69 -0
  53. package/Server/Services/ProjectService.ts +22 -0
  54. package/Server/Services/RoutineEmailSettingsService.ts +73 -0
  55. package/Server/Services/RumSessionReplayViewService.ts +104 -24
  56. package/Server/Services/ScheduledMaintenanceCustomFieldService.ts +98 -0
  57. package/Server/Services/ScheduledMaintenanceService.ts +32 -0
  58. package/Server/Services/TeamMemberService.ts +78 -0
  59. package/Server/Services/TeamPermissionService.ts +235 -3
  60. package/Server/Services/TelemetryIngestionKeyService.ts +722 -19
  61. package/Server/Services/UserNotificationRuleService.ts +76 -25
  62. package/Server/Services/UserNotificationSettingService.ts +34 -6
  63. package/Server/Services/UserTelegramService.ts +326 -5
  64. package/Server/Types/Database/Permissions/ReadPermission.ts +45 -5
  65. package/Server/Types/Database/QueryHelper.ts +2 -0
  66. package/Server/Types/Database/QueryUtil.ts +56 -0
  67. package/Server/Types/Markdown.ts +93 -1
  68. package/Server/Utils/APIKey/AccessPermission.ts +5 -2
  69. package/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.ts +54 -0
  70. package/Server/Utils/CustomField/CustomFieldMappingRegistry.ts +415 -0
  71. package/Server/Utils/CustomField/CustomFieldMappingValidator.ts +335 -0
  72. package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +82 -17
  73. package/Server/Utils/DataSource/EgressGuard.ts +177 -8
  74. package/Server/Utils/EmailRollup/EmailRollupConstants.ts +38 -5
  75. package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +67 -5
  76. package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +2 -2
  77. package/Server/Utils/FrontendEnvironment.ts +40 -0
  78. package/Server/Utils/LogRedaction.ts +20 -0
  79. package/Server/Utils/Logger.ts +11 -0
  80. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +394 -86
  81. package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +30 -4
  82. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +31 -5
  83. package/Server/Utils/Monitor/MonitorAlert.ts +29 -6
  84. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +312 -52
  85. package/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +82 -9
  86. package/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.ts +16 -7
  87. package/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.ts +29 -17
  88. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +107 -48
  89. package/Server/Utils/Monitor/MonitorIncident.ts +22 -6
  90. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +29 -0
  91. package/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.ts +158 -0
  92. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +27 -0
  93. package/Server/Utils/Monitor/SeriesContextEnricher.ts +304 -0
  94. package/Server/Utils/SSRFProtection.ts +217 -10
  95. package/Server/Utils/SessionReplay/SessionReplayGateCache.ts +239 -138
  96. package/Server/Utils/SessionReplay/SessionReplayHealthCounters.ts +305 -0
  97. package/Server/Utils/SessionReplay/SessionReplayReadService.ts +1430 -289
  98. package/Server/Utils/StartServer.ts +2 -17
  99. package/Server/Utils/TelegramVerificationToken.ts +185 -0
  100. package/Server/Utils/Telemetry/EntityRegistry.ts +11 -1
  101. package/Server/Utils/Telemetry/PinServiceName.ts +197 -0
  102. package/Server/Utils/Telemetry/TelemetryEntity.ts +83 -9
  103. package/Server/Utils/Telemetry/TelemetryFanInWriter.ts +38 -16
  104. package/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.ts +92 -0
  105. package/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.ts +217 -0
  106. package/Server/Utils/VM/VMAPI.ts +1 -0
  107. package/Server/Utils/VM/VMRunner.ts +975 -95
  108. package/Tests/App/AdminDashboard/AdminHeaderSmallScreens.test.tsx +202 -0
  109. package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +32 -0
  110. package/Tests/App/Dashboard/AdoptedDeviceDrawer.test.tsx +374 -0
  111. package/Tests/App/Dashboard/DashboardHeaderSmallScreens.test.tsx +404 -0
  112. package/Tests/App/Dashboard/DashboardLabelVariables.test.tsx +580 -0
  113. package/Tests/App/Dashboard/DashboardMonitorLabelVariable.test.tsx +438 -0
  114. package/Tests/App/Dashboard/DashboardVariableAllContract.test.tsx +5 -2
  115. package/Tests/App/Dashboard/DeviceAttachmentCard.test.tsx +273 -0
  116. package/Tests/App/Dashboard/DiscoveryReviewInventoryRefresh.test.tsx +505 -0
  117. package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +468 -0
  118. package/Tests/App/Dashboard/EntityDetailPanel.test.tsx +163 -0
  119. package/Tests/App/Dashboard/InfrastructureExplorer.test.tsx +401 -0
  120. package/Tests/App/Dashboard/InfrastructureGraph.test.tsx +232 -0
  121. package/Tests/App/Dashboard/InventoryItems.test.tsx +201 -0
  122. package/Tests/App/Dashboard/InventoryTypeAndStatusFacets.test.tsx +798 -0
  123. package/Tests/App/Dashboard/NetworkTopologyLiveView.test.tsx +320 -0
  124. package/Tests/App/Dashboard/NetworkTopologyToolbar.test.tsx +275 -0
  125. package/Tests/App/Dashboard/OnCallCalendarFeedEmptyState.test.tsx +975 -0
  126. package/Tests/App/Dashboard/OnCallCalendarFeedPlanGate.test.tsx +63 -0
  127. package/Tests/App/Dashboard/ServiceMapGraph.test.tsx +626 -0
  128. package/Tests/App/Dashboard/TopologyDataLoading.test.tsx +348 -0
  129. package/Tests/App/Dashboard/TopologyPageNavigation.test.tsx +331 -0
  130. package/Tests/App/Dashboard/UserSettingsEmailPreferences.test.tsx +603 -0
  131. package/Tests/App/Dashboard/UserSettingsNotificationSettings.test.tsx +324 -0
  132. package/Tests/App/PublicDashboard/DashboardVariableSelector.test.tsx +13 -4
  133. package/Tests/App/StatusPage/StatusPageLastUpdated.test.tsx +263 -0
  134. package/Tests/App/StatusPage/StatusPageOidcOrigin.test.tsx +223 -0
  135. package/Tests/App/StatusPage/StatusPageOverviewLiveAndSearch.test.tsx +753 -0
  136. package/Tests/App/StatusPage/StatusPageResourceSearchBox.test.tsx +224 -0
  137. package/Tests/Models/AnalyticsModels/RumSessionReplayColumns.test.ts +262 -0
  138. package/Tests/Models/CustomFieldMappingColumns.test.ts +166 -0
  139. package/Tests/Models/DatabaseModels/SessionReplayModels.test.ts +20 -6
  140. package/Tests/Models/InventoryItemStatus.test.ts +147 -0
  141. package/Tests/Models/NetworkDeviceMacAddressColumn.test.ts +294 -0
  142. package/Tests/ResponsiveVisibility.test.ts +115 -0
  143. package/Tests/ResponsiveVisibility.ts +183 -0
  144. package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +129 -0
  145. package/Tests/Server/API/SessionReplayAPI.test.ts +1940 -216
  146. package/Tests/Server/API/UserNotificationSettingAPI.test.ts +186 -0
  147. package/Tests/Server/API/UserTelegramAPISecurity.test.ts +231 -0
  148. package/Tests/Server/EnvironmentConfigFrontendSecurity.test.ts +234 -0
  149. package/Tests/Server/EnvironmentConfigValkey.test.ts +227 -0
  150. package/Tests/Server/Infrastructure/Postgres/AddMacAddressToNetworkDeviceMigration.test.ts +365 -0
  151. package/Tests/Server/Infrastructure/Postgres/CustomFieldValueMappingMigration.test.ts +241 -0
  152. package/Tests/Server/Infrastructure/Postgres/InventoryItemArchiveMigration.test.ts +41 -0
  153. package/Tests/Server/Infrastructure/Postgres/SessionReplayRecordEverySessionByDefaultMigration.test.ts +169 -0
  154. package/Tests/Server/Infrastructure/QueueWorkerTimeout.test.ts +210 -0
  155. package/Tests/Server/Infrastructure/TelemetryExporterDeploymentConfig.test.ts +130 -0
  156. package/Tests/Server/Infrastructure/ValkeyDeploymentConfig.test.ts +265 -0
  157. package/Tests/Server/Middleware/HttpMetricsMiddleware.test.ts +382 -0
  158. package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +4 -1
  159. package/Tests/Server/Middleware/SCIMAuthorization.test.ts +525 -0
  160. package/Tests/Server/Middleware/TelemetryIngestBrowserKey.test.ts +1163 -0
  161. package/Tests/Server/Middleware/TelemetryIngestTokenLog.test.ts +5 -3
  162. package/Tests/Server/Services/AddTelemetryIngestionKeyTypeMigration.test.ts +555 -0
  163. package/Tests/Server/Services/ApiKeyPermissionSecurity.test.ts +678 -0
  164. package/Tests/Server/Services/ApiKeyPermissionService.test.ts +276 -28
  165. package/Tests/Server/Services/CustomFieldDropdownOptionsColumnWidth.test.ts +431 -0
  166. package/Tests/Server/Services/CustomFieldMappingService.test.ts +850 -0
  167. package/Tests/Server/Services/DatabaseServiceAggregateBy.test.ts +291 -56
  168. package/Tests/Server/Services/DatabaseServiceSortTiebreaker.test.ts +151 -0
  169. package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +32 -0
  170. package/Tests/Server/Services/GlobalConfigService.test.ts +414 -1
  171. package/Tests/Server/Services/InventoryItemManualCreate.test.ts +105 -0
  172. package/Tests/Server/Services/InventoryItemPromotionGate.test.ts +178 -0
  173. package/Tests/Server/Services/MetricRawEntityKeyPrune.test.ts +592 -0
  174. package/Tests/Server/Services/MonitorTemplateServiceCustomFieldSync.test.ts +502 -0
  175. package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +1351 -74
  176. package/Tests/Server/Services/NetworkDeviceDiscoveryScanRegistration.test.ts +520 -0
  177. package/Tests/Server/Services/NetworkDeviceMacAddressNormalization.test.ts +572 -0
  178. package/Tests/Server/Services/RoutineEmailSettingsPostgres.test.ts +329 -0
  179. package/Tests/Server/Services/RumSessionReplayViewService.test.ts +267 -0
  180. package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +9 -0
  181. package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +9 -0
  182. package/Tests/Server/Services/TeamPrivilegeEscalation.test.ts +834 -0
  183. package/Tests/Server/Services/TelemetryIngestionKeyPolicyResolution.test.ts +814 -0
  184. package/Tests/Server/Services/TelemetryIngestionKeyValidation.test.ts +998 -0
  185. package/Tests/Server/Services/UserNotificationSettingRollupRouting.test.ts +141 -0
  186. package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +18 -10
  187. package/Tests/Server/Services/UserTelegramVerificationSecurity.test.ts +688 -0
  188. package/Tests/Server/Types/Database/InventoryStatusPostgres.test.ts +368 -0
  189. package/Tests/Server/Types/Database/Permissions/ReadBlockPermission.test.ts +261 -14
  190. package/Tests/Server/Types/Database/QueryUtilIncludesAnyOfGroups.test.ts +169 -0
  191. package/Tests/Server/Types/Database/QueryUtilIncludesAnyOfGroupsPostgres.test.ts +297 -0
  192. package/Tests/Server/Types/Markdown.test.ts +194 -1
  193. package/Tests/Server/Types/Workflow/Components/IncomingWebhookUtils.test.ts +279 -0
  194. package/Tests/Server/Types/Workflow/Components/TextToJson.test.ts +212 -0
  195. package/Tests/Server/Utils/AI/SRE/Insights/FixRouting.test.ts +497 -0
  196. package/Tests/Server/Utils/AI/Toolbox/Serializer.test.ts +383 -0
  197. package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +7 -3
  198. package/Tests/Server/Utils/AnalyticsDatabase/ClusterConfig.test.ts +315 -0
  199. package/Tests/Server/Utils/CustomField/CustomFieldMappingRegistry.test.ts +436 -0
  200. package/Tests/Server/Utils/CustomField/CustomFieldMappingValidator.test.ts +437 -0
  201. package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +214 -0
  202. package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +300 -11
  203. package/Tests/Server/Utils/EmailRollup/EmailRollupBurstWindow.test.ts +83 -0
  204. package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerBehaviour.test.ts +2 -2
  205. package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerPreferences.test.ts +362 -0
  206. package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +10 -3
  207. package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +77 -1
  208. package/Tests/Server/Utils/EventLoop.test.ts +359 -0
  209. package/Tests/Server/Utils/FrontendEnvironment.test.ts +190 -0
  210. package/Tests/Server/Utils/JsonWebToken.test.ts +30 -0
  211. package/Tests/Server/Utils/LogRedaction.test.ts +26 -0
  212. package/Tests/Server/Utils/LoggerCredentialLeak.test.ts +23 -9
  213. package/Tests/Server/Utils/Monitor/Criteria/CompareCriteria.test.ts +242 -0
  214. package/Tests/Server/Utils/Monitor/Criteria/CompareCriteriaAggregation.test.ts +590 -0
  215. package/Tests/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.test.ts +29 -0
  216. package/Tests/Server/Utils/Monitor/Criteria/IncomingRequestHeaderCriteria.test.ts +236 -0
  217. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +30 -6
  218. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaAnomalyUnits.test.ts +246 -0
  219. package/Tests/Server/Utils/Monitor/MonitorCriteriaEmailEvalLogAgreement.test.ts +280 -0
  220. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +659 -8
  221. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorMetricUnits.test.ts +570 -0
  222. package/Tests/Server/Utils/Monitor/MonitorCriteriaExpectationBuilderUnits.test.ts +30 -5
  223. package/Tests/Server/Utils/Monitor/MonitorCriteriaMessageBuilderUnits.test.ts +68 -21
  224. package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +36 -19
  225. package/Tests/Server/Utils/Monitor/MonitorTemplateUtilSeriesContext.test.ts +176 -0
  226. package/Tests/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.test.ts +573 -0
  227. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +317 -0
  228. package/Tests/Server/Utils/Monitor/SeriesContextEnricher.test.ts +356 -0
  229. package/Tests/Server/Utils/SSRFProtectionCloudServiceAddresses.test.ts +595 -0
  230. package/Tests/Server/Utils/SessionReplay/SessionReplayGateCachePolicy.test.ts +198 -1
  231. package/Tests/Server/Utils/SessionReplay/SessionReplayHealthCounters.test.ts +453 -0
  232. package/Tests/Server/Utils/SessionReplay/SessionReplayReadServiceQueries.test.ts +1378 -0
  233. package/Tests/Server/Utils/SessionReplayOriginAllowListRefactor.test.ts +420 -0
  234. package/Tests/Server/Utils/TelegramVerificationToken.test.ts +253 -0
  235. package/Tests/Server/Utils/Telemetry/ContextSpanProcessor.test.ts +281 -0
  236. package/Tests/Server/Utils/Telemetry/InventoryDuplicateIdentity.test.ts +316 -0
  237. package/Tests/Server/Utils/Telemetry/PinServiceName.test.ts +666 -0
  238. package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +111 -8
  239. package/Tests/Server/Utils/Telemetry/TelemetryFanInWriterCapacity.test.ts +458 -0
  240. package/Tests/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.test.ts +424 -0
  241. package/Tests/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.test.ts +528 -0
  242. package/Tests/Server/Utils/TelemetryExporterEnvironment.test.ts +56 -0
  243. package/Tests/Server/Utils/VM/VMRunnerHostBridgeLatency.test.ts +74 -0
  244. package/Tests/Server/Utils/VM/VMRunnerPrivateNetworkWiring.test.ts +100 -7
  245. package/Tests/Server/Utils/VM/VMRunnerSsrf.test.ts +1176 -6
  246. package/Tests/Types/CustomField/CustomFieldMappingCatalog.test.ts +220 -0
  247. package/Tests/Types/CustomField/CustomFieldValueMapping.test.ts +348 -0
  248. package/Tests/Types/Database/IncludesAnyOfGroups.test.ts +106 -0
  249. package/Tests/Types/JSONFunctions.test.ts +300 -0
  250. package/Tests/Types/Monitor/CephAlertTemplates.test.ts +422 -53
  251. package/Tests/Types/Monitor/DockerAlertTemplates.test.ts +495 -15
  252. package/Tests/Types/Monitor/DockerSwarmAlertTemplates.test.ts +191 -45
  253. package/Tests/Types/Monitor/HostAlertTemplates.test.ts +370 -42
  254. package/Tests/Types/Monitor/IotAlertTemplates.test.ts +375 -20
  255. package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +636 -42
  256. package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +189 -0
  257. package/Tests/Types/Monitor/KubernetesTemplateGroupByKeys.test.ts +95 -14
  258. package/Tests/Types/Monitor/PodmanAlertTemplates.test.ts +190 -21
  259. package/Tests/Types/Monitor/ProxmoxAlertTemplates.test.ts +352 -22
  260. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationAlertDebuggability.test.ts +363 -0
  261. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +93 -18
  262. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +259 -0
  263. package/Tests/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.test.ts +476 -0
  264. package/Tests/Types/Monitor/RumAlertTemplates.test.ts +136 -0
  265. package/Tests/Types/Monitor/SeriesContext/SeriesDebugHints.test.ts +661 -0
  266. package/Tests/Types/Monitor/SeriesContext/SeriesLabelDisplay.test.ts +507 -0
  267. package/Tests/Types/Monitor/ServiceAlertTemplates.test.ts +270 -0
  268. package/Tests/Types/Monitor/TemplateGroupByKeys.test.ts +38 -10
  269. package/Tests/Types/Monitor/Utils/RecommendationCriteriaAssertions.ts +102 -0
  270. package/Tests/Types/NetworkAutomation/AutoImportRunMerge.test.ts +235 -0
  271. package/Tests/Types/NetworkAutomation/RuleRunResult.test.ts +66 -0
  272. package/Tests/Types/NetworkAutomation/RuleRunResultDescribe.test.ts +309 -1
  273. package/Tests/Types/NotificationSetting/RoutineEmailEvents.test.ts +47 -0
  274. package/Tests/Types/Rum/SessionReplayApiContracts.test.ts +608 -0
  275. package/Tests/Types/Rum/SessionReplayCustomEvents.test.ts +434 -0
  276. package/Tests/Types/Telemetry/InventoryLiveness.test.ts +99 -0
  277. package/Tests/Types/WebsiteRequest.test.ts +285 -3
  278. package/Tests/UI/Components/Charts/ChartBucketIdentity.test.ts +16 -3
  279. package/Tests/UI/Components/Charts/ChartTrailingBucketGap.test.ts +691 -0
  280. package/Tests/UI/Components/ComponentsModal.test.tsx +12 -4
  281. package/Tests/UI/Components/ComponentsModalUsability.test.tsx +518 -0
  282. package/Tests/UI/Components/CustomFields/CustomFieldsDetail.test.tsx +160 -0
  283. package/Tests/UI/Components/CustomFields/CustomFieldsDetailMapping.test.tsx +324 -0
  284. package/Tests/UI/Components/CustomFields/MapFromCustomFieldInput.test.tsx +176 -0
  285. package/Tests/UI/Components/Graphs/DayUptimeGraph.test.tsx +484 -0
  286. package/Tests/UI/Components/HeaderRightRail.test.tsx +157 -0
  287. package/Tests/UI/Components/IconDropdownItem.test.tsx +102 -0
  288. package/Tests/UI/Components/JSONTablePrototypePollution.test.tsx +117 -0
  289. package/Tests/UI/Components/KeyboardShortcutsModal.test.tsx +214 -0
  290. package/Tests/UI/Components/ModelTable/ModelTableWrapContent.test.tsx +561 -0
  291. package/Tests/UI/Components/MonitorGraphs/UptimeBarDayModal.test.tsx +302 -0
  292. package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +28 -12
  293. package/Tests/UI/Components/ShortcutDialogGuard.test.tsx +74 -0
  294. package/Tests/UI/Components/StatusPage/ResourceGroupSectionAutoExpand.test.tsx +248 -0
  295. package/Tests/UI/Components/TableCellWrapping.test.tsx +625 -0
  296. package/Tests/UI/Components/TableLoadingStates.test.tsx +205 -0
  297. package/Tests/UI/Components/Workflow/NodePlacement.test.ts +148 -0
  298. package/Tests/UI/Components/Workflow/Workflow.test.tsx +981 -0
  299. package/Tests/UI/ConfigBrowserTelemetry.test.ts +70 -0
  300. package/Tests/UI/ReactRouterSingletonBuild.test.ts +133 -0
  301. package/Tests/UI/Rum/ChunkLoader.test.ts +1036 -2
  302. package/Tests/UI/Rum/FidelityNotices.test.ts +187 -0
  303. package/Tests/UI/Rum/InactivityMap.test.ts +341 -0
  304. package/Tests/UI/Rum/PrivacySummaryCard.test.tsx +259 -0
  305. package/Tests/UI/Rum/RecordingHealthCard.test.tsx +855 -0
  306. package/Tests/UI/Rum/RecordingHealthStrip.test.tsx +594 -0
  307. package/Tests/UI/Rum/ReplayCard.test.tsx +451 -0
  308. package/Tests/UI/Rum/ReplayCorrelationPanel.test.tsx +536 -0
  309. package/Tests/UI/Rum/ReplayEngine.test.ts +2503 -0
  310. package/Tests/UI/Rum/ReplayEngineTypes.test.ts +171 -0
  311. package/Tests/UI/Rum/ReplayHeader.test.tsx +719 -0
  312. package/Tests/UI/Rum/ReplayLink.test.tsx +119 -0
  313. package/Tests/UI/Rum/ReplayPinControl.test.tsx +408 -0
  314. package/Tests/UI/Rum/ReplayPlaybackIntent.test.ts +152 -0
  315. package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +514 -0
  316. package/Tests/UI/Rum/ReplayRail.test.tsx +1296 -0
  317. package/Tests/UI/Rum/ReplayRailDetail.test.tsx +900 -0
  318. package/Tests/UI/Rum/ReplayScrubber.test.tsx +763 -147
  319. package/Tests/UI/Rum/ReplaySignalTypes.test.ts +189 -0
  320. package/Tests/UI/Rum/ReplaySignals.test.ts +1579 -0
  321. package/Tests/UI/Rum/ReplayStage.test.tsx +396 -473
  322. package/Tests/UI/Rum/ReplayStageOverlays.test.tsx +918 -0
  323. package/Tests/UI/Rum/ReplayTimeFormat.test.ts +94 -0
  324. package/Tests/UI/Rum/ReplayTimeline.test.tsx +696 -0
  325. package/Tests/UI/Rum/ReplayUi.test.tsx +559 -0
  326. package/Tests/UI/Rum/SessionReplayEmptyState.test.tsx +499 -0
  327. package/Tests/UI/Rum/SessionReplaySearchBar.test.tsx +346 -0
  328. package/Tests/UI/Rum/SessionReplaySetupGuide.test.tsx +545 -0
  329. package/Tests/UI/Rum/SessionReplayTable.test.tsx +991 -0
  330. package/Tests/UI/Rum/TargetedCapturePanel.test.tsx +254 -0
  331. package/Tests/UI/Telemetry/BrowserExporterIsolation.test.ts +71 -0
  332. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +5 -0
  333. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +1 -0
  334. package/Tests/UI/Utils/GlobalKeyboardShortcut.test.ts +344 -0
  335. package/Tests/Utils/API.test.ts +308 -0
  336. package/Tests/Utils/Dashboard/Components/DashboardMonitorListComponent.test.ts +11 -1
  337. package/Tests/Utils/Dashboard/LabelVariable.test.ts +257 -0
  338. package/Tests/Utils/Dashboard/VariableUrlState.test.ts +144 -14
  339. package/Tests/Utils/HTTPResponseBodyReader.test.ts +323 -0
  340. package/Tests/Utils/MetricUnitUtil.test.ts +81 -0
  341. package/Tests/Utils/Monitor/DeviceMacLearningUtil.test.ts +497 -0
  342. package/Tests/Utils/Monitor/MetricValueFormatter.test.ts +546 -0
  343. package/Tests/Utils/Monitor/MonitorTemplateCustomFieldUtil.test.ts +218 -0
  344. package/Tests/Utils/Monitor/NetworkTopologyEndpointAdoption.test.ts +1755 -0
  345. package/Tests/Utils/NetworkAutomation/AutoImportRunChain.test.ts +320 -0
  346. package/Tests/Utils/NetworkDiscovery/DiscoveryScanStatus.test.ts +117 -0
  347. package/Tests/Utils/Rum/ChunkMath.test.ts +83 -0
  348. package/Tests/Utils/Rum/SessionReplayHealthDiagnosis.test.ts +993 -0
  349. package/Tests/Utils/Rum/SessionReplayStringMap.test.ts +245 -0
  350. package/Tests/Utils/StatusPage/ResourceSearch.test.ts +631 -0
  351. package/Tests/Utils/Telemetry/OriginAllowList.test.ts +633 -0
  352. package/Tests/Utils/Uptime/DayUptimeGraphUtil.test.ts +461 -0
  353. package/Tests/Utils/ValueFormatter.test.ts +148 -0
  354. package/Types/BaseDatabase/IncludesAnyOfGroups.ts +77 -0
  355. package/Types/CustomField/CustomFieldMappingCatalog.ts +161 -0
  356. package/Types/CustomField/CustomFieldMappingSourceResource.ts +19 -0
  357. package/Types/CustomField/CustomFieldValueMapping.ts +288 -0
  358. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
  359. package/Types/Dashboard/DashboardComponents/DashboardMonitorListComponent.ts +1 -0
  360. package/Types/Dashboard/DashboardVariable.ts +8 -0
  361. package/Types/Icon/IconProp.ts +1 -0
  362. package/Types/JSON.ts +4 -0
  363. package/Types/JSONFunctions.ts +205 -43
  364. package/Types/Monitor/CephAlertTemplates.ts +157 -195
  365. package/Types/Monitor/DockerAlertTemplates.ts +338 -128
  366. package/Types/Monitor/DockerSwarmAlertTemplates.ts +95 -112
  367. package/Types/Monitor/HostAlertTemplates.ts +302 -130
  368. package/Types/Monitor/IotAlertTemplates.ts +112 -104
  369. package/Types/Monitor/KubernetesAlertTemplates.ts +415 -224
  370. package/Types/Monitor/KubernetesMetricCatalog.ts +23 -19
  371. package/Types/Monitor/PodmanAlertTemplates.ts +116 -163
  372. package/Types/Monitor/ProxmoxAlertTemplates.ts +217 -99
  373. package/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts +98 -6
  374. package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +44 -7
  375. package/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.ts +383 -0
  376. package/Types/Monitor/RumAlertTemplates.ts +46 -7
  377. package/Types/Monitor/SeriesContext/SeriesDebugHints.ts +596 -0
  378. package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +554 -0
  379. package/Types/Monitor/ServiceAlertTemplates.ts +98 -11
  380. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +13 -0
  381. package/Types/Monitor/UptimeHistoryLabels.ts +56 -0
  382. package/Types/NetworkAutomation/RuleRunResult.ts +402 -13
  383. package/Types/NotificationSetting/RoutineEmailEvents.ts +30 -0
  384. package/Types/Rum/SessionReplay.ts +209 -0
  385. package/Types/Rum/SessionReplayApi.ts +722 -0
  386. package/Types/Rum/SessionReplayCaptureTrigger.ts +21 -12
  387. package/Types/Rum/SessionReplayConsentMode.ts +11 -7
  388. package/Types/Rum/SessionReplayCustomEvents.ts +549 -0
  389. package/Types/Rum/SessionReplayHealth.ts +238 -0
  390. package/Types/SerializableObjectDictionary.ts +4 -0
  391. package/Types/Telemetry/InventoryLiveness.ts +56 -0
  392. package/Types/Telemetry/TelemetryIngestSurface.ts +95 -0
  393. package/Types/Telemetry/TelemetryIngestionKeyPolicy.ts +75 -0
  394. package/Types/Telemetry/TelemetryIngestionKeyType.ts +29 -0
  395. package/Types/WebsiteRequest.ts +85 -3
  396. package/UI/Components/CSVFileUpload/CSVFileUpload.tsx +9 -2
  397. package/UI/Components/Charts/Area/AreaChart.tsx +13 -2
  398. package/UI/Components/Charts/Bar/BarChart.tsx +6 -2
  399. package/UI/Components/Charts/Line/LineChart.tsx +13 -2
  400. package/UI/Components/Charts/Types/XAxis/XAxis.ts +29 -0
  401. package/UI/Components/Charts/Utils/DataPoint.ts +22 -3
  402. package/UI/Components/Charts/Utils/TimeAnnotation.ts +76 -9
  403. package/UI/Components/Charts/Utils/XAxis.ts +217 -0
  404. package/UI/Components/CustomFields/CustomFieldsDetail.tsx +189 -46
  405. package/UI/Components/CustomFields/MapFromCustomFieldInput.tsx +216 -0
  406. package/UI/Components/Dashboard/DashboardVariableControl.tsx +285 -0
  407. package/UI/Components/Graphs/DayUptimeGraph.tsx +173 -8
  408. package/UI/Components/Graphs/UptimeBarTooltip.tsx +22 -278
  409. package/UI/Components/Graphs/UptimeDaySummary.tsx +327 -0
  410. package/UI/Components/Header/Header.tsx +25 -9
  411. package/UI/Components/Header/IconDropdown/IconDropdownItem.tsx +10 -1
  412. package/UI/Components/Header/IconDropdown/IconDropdownMenu.tsx +6 -1
  413. package/UI/Components/Header/ProjectPicker/ProjectPicker.tsx +6 -1
  414. package/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.tsx +6 -1
  415. package/UI/Components/Icon/Icon.tsx +11 -0
  416. package/UI/Components/JSONTable/JSONTable.tsx +2 -2
  417. package/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.tsx +125 -0
  418. package/UI/Components/KeyboardShortcut/Screenshots/README.md +19 -0
  419. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-command-palette.png +0 -0
  420. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-dialog-dark.png +0 -0
  421. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-dialog.png +0 -0
  422. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-help-menu.png +0 -0
  423. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-narrow.png +0 -0
  424. package/UI/Components/ModelTable/Column.ts +15 -0
  425. package/UI/Components/Monitor/SeriesDebugCommandsViewer.tsx +64 -0
  426. package/UI/Components/Monitor/SeriesLabelsViewer.tsx +93 -0
  427. package/UI/Components/MonitorGraphs/Uptime.tsx +14 -2
  428. package/UI/Components/MonitorGraphs/UptimeBarDayModal.tsx +63 -10
  429. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +44 -0
  430. package/UI/Components/StatusPage/ResourceGroupSection.tsx +40 -0
  431. package/UI/Components/Table/CellClassName.ts +81 -0
  432. package/UI/Components/Table/TableRow.tsx +20 -14
  433. package/UI/Components/Table/TableSkeletonRows.tsx +9 -9
  434. package/UI/Components/Table/Types/Column.ts +36 -0
  435. package/UI/Components/Tooltip/Tooltip.tsx +11 -1
  436. package/UI/Components/Workflow/ComponentsModal.tsx +60 -39
  437. package/UI/Components/Workflow/NodePlacement.ts +57 -0
  438. package/UI/Components/Workflow/Workflow.tsx +47 -18
  439. package/UI/Config.ts +15 -33
  440. package/UI/Utils/GlobalKeyboardShortcut.ts +208 -0
  441. package/UI/Utils/Telemetry/BrowserTelemetryConfig.ts +28 -0
  442. package/UI/Utils/Telemetry/Telemetry.ts +10 -8
  443. package/UI/esbuild-config.js +6 -0
  444. package/Utils/API.ts +129 -3
  445. package/Utils/Dashboard/Components/DashboardMonitorListComponent.ts +12 -1
  446. package/Utils/Dashboard/LabelVariable.ts +152 -0
  447. package/Utils/Dashboard/VariableUrlState.ts +27 -5
  448. package/Utils/HTTPResponseBodyReader.ts +221 -0
  449. package/Utils/MetricUnitUtil.ts +34 -0
  450. package/Utils/Monitor/DeviceMacLearningUtil.ts +177 -0
  451. package/Utils/Monitor/MetricValueFormatter.ts +342 -0
  452. package/Utils/Monitor/MonitorTemplateCustomFieldUtil.ts +124 -0
  453. package/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.ts +7 -2
  454. package/Utils/Monitor/NetworkTopologyUtil.ts +693 -0
  455. package/Utils/NetworkAutomation/AutoImportRunChain.ts +138 -0
  456. package/Utils/NetworkDiscovery/DiscoveryScanStatus.ts +77 -0
  457. package/Utils/Rum/ChunkMath.ts +106 -0
  458. package/Utils/Rum/SessionReplayHealth.ts +732 -0
  459. package/Utils/Rum/SessionReplayStringMap.ts +226 -0
  460. package/Utils/Schema/ModelSchema.ts +1 -0
  461. package/Utils/StatusPage/ResourceSearch.ts +290 -0
  462. package/Utils/Telemetry/OriginAllowList.ts +355 -0
  463. package/Utils/Uptime/DayUptimeGraphUtil.ts +205 -0
  464. package/Utils/ValueFormatter.ts +35 -1
  465. package/build/dist/Models/AnalyticsModels/RumSession.js +102 -19
  466. package/build/dist/Models/AnalyticsModels/RumSession.js.map +1 -1
  467. package/build/dist/Models/AnalyticsModels/RumSessionChunk.js +11 -9
  468. package/build/dist/Models/AnalyticsModels/RumSessionChunk.js.map +1 -1
  469. package/build/dist/Models/DatabaseModels/AlertCustomField.js +79 -3
  470. package/build/dist/Models/DatabaseModels/AlertCustomField.js.map +1 -1
  471. package/build/dist/Models/DatabaseModels/ApiKeyPermission.js +3 -27
  472. package/build/dist/Models/DatabaseModels/ApiKeyPermission.js.map +1 -1
  473. package/build/dist/Models/DatabaseModels/GlobalConfig.js +12 -12
  474. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  475. package/build/dist/Models/DatabaseModels/IncidentCustomField.js +79 -3
  476. package/build/dist/Models/DatabaseModels/IncidentCustomField.js.map +1 -1
  477. package/build/dist/Models/DatabaseModels/InventoryItem.js +34 -1
  478. package/build/dist/Models/DatabaseModels/InventoryItem.js.map +1 -1
  479. package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js +79 -3
  480. package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js.map +1 -1
  481. package/build/dist/Models/DatabaseModels/MonitorCustomField.js +79 -3
  482. package/build/dist/Models/DatabaseModels/MonitorCustomField.js.map +1 -1
  483. package/build/dist/Models/DatabaseModels/NetworkDevice.js +128 -0
  484. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  485. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js +79 -3
  486. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js.map +1 -1
  487. package/build/dist/Models/DatabaseModels/RumApplication.js +6 -6
  488. package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
  489. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js +79 -3
  490. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js.map +1 -1
  491. package/build/dist/Models/DatabaseModels/StatusPageCustomField.js +79 -3
  492. package/build/dist/Models/DatabaseModels/StatusPageCustomField.js.map +1 -1
  493. package/build/dist/Models/DatabaseModels/TeamCustomField.js +79 -3
  494. package/build/dist/Models/DatabaseModels/TeamCustomField.js.map +1 -1
  495. package/build/dist/Models/DatabaseModels/TeamMember.js +0 -9
  496. package/build/dist/Models/DatabaseModels/TeamMember.js.map +1 -1
  497. package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js +79 -3
  498. package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js.map +1 -1
  499. package/build/dist/Models/DatabaseModels/TeamPermission.js +3 -24
  500. package/build/dist/Models/DatabaseModels/TeamPermission.js.map +1 -1
  501. package/build/dist/Models/DatabaseModels/TelemetryIngestionKey.js +267 -0
  502. package/build/dist/Models/DatabaseModels/TelemetryIngestionKey.js.map +1 -1
  503. package/build/dist/Models/DatabaseModels/UserTelegram.js +0 -4
  504. package/build/dist/Models/DatabaseModels/UserTelegram.js.map +1 -1
  505. package/build/dist/Server/API/TelemetryAPI.js +769 -109
  506. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  507. package/build/dist/Server/API/UserNotificationSettingAPI.js +35 -0
  508. package/build/dist/Server/API/UserNotificationSettingAPI.js.map +1 -0
  509. package/build/dist/Server/API/UserTelegramAPI.js +28 -6
  510. package/build/dist/Server/API/UserTelegramAPI.js.map +1 -1
  511. package/build/dist/Server/EnvironmentConfig.js +73 -14
  512. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  513. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.js +60 -0
  514. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.js.map +1 -0
  515. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.js +53 -0
  516. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.js.map +1 -0
  517. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.js +82 -0
  518. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.js.map +1 -0
  519. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.js +46 -0
  520. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.js.map +1 -0
  521. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.js +14 -0
  522. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.js.map +1 -0
  523. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  524. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  525. package/build/dist/Server/Infrastructure/QueueWorker.js +19 -7
  526. package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
  527. package/build/dist/Server/Infrastructure/Redis.js +8 -8
  528. package/build/dist/Server/Infrastructure/Redis.js.map +1 -1
  529. package/build/dist/Server/Infrastructure/Semaphore.js +1 -0
  530. package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
  531. package/build/dist/Server/Infrastructure/Status.js +10 -4
  532. package/build/dist/Server/Infrastructure/Status.js.map +1 -1
  533. package/build/dist/Server/Middleware/TelemetryIngest.js +315 -8
  534. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  535. package/build/dist/Server/Services/AccessTokenService.js +1 -0
  536. package/build/dist/Server/Services/AccessTokenService.js.map +1 -1
  537. package/build/dist/Server/Services/AlertCustomFieldService.js +93 -0
  538. package/build/dist/Server/Services/AlertCustomFieldService.js.map +1 -1
  539. package/build/dist/Server/Services/AlertService.js +34 -0
  540. package/build/dist/Server/Services/AlertService.js.map +1 -1
  541. package/build/dist/Server/Services/ApiKeyPermissionService.js +331 -28
  542. package/build/dist/Server/Services/ApiKeyPermissionService.js.map +1 -1
  543. package/build/dist/Server/Services/CustomFieldMappingService.js +614 -0
  544. package/build/dist/Server/Services/CustomFieldMappingService.js.map +1 -0
  545. package/build/dist/Server/Services/DatabaseService.js +58 -13
  546. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  547. package/build/dist/Server/Services/GlobalConfigService.js +133 -0
  548. package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
  549. package/build/dist/Server/Services/IncidentCustomFieldService.js +93 -0
  550. package/build/dist/Server/Services/IncidentCustomFieldService.js.map +1 -1
  551. package/build/dist/Server/Services/IncidentService.js +32 -0
  552. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  553. package/build/dist/Server/Services/InventoryItemService.js +28 -1
  554. package/build/dist/Server/Services/InventoryItemService.js.map +1 -1
  555. package/build/dist/Server/Services/MetricService.js +163 -0
  556. package/build/dist/Server/Services/MetricService.js.map +1 -1
  557. package/build/dist/Server/Services/MonitorService.js +29 -0
  558. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  559. package/build/dist/Server/Services/MonitorTemplateService.js +116 -17
  560. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  561. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +349 -64
  562. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
  563. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +65 -0
  564. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
  565. package/build/dist/Server/Services/NetworkDeviceService.js +54 -0
  566. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  567. package/build/dist/Server/Services/ProjectService.js +22 -0
  568. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  569. package/build/dist/Server/Services/RoutineEmailSettingsService.js +69 -0
  570. package/build/dist/Server/Services/RoutineEmailSettingsService.js.map +1 -0
  571. package/build/dist/Server/Services/RumSessionReplayViewService.js +86 -24
  572. package/build/dist/Server/Services/RumSessionReplayViewService.js.map +1 -1
  573. package/build/dist/Server/Services/ScheduledMaintenanceCustomFieldService.js +93 -0
  574. package/build/dist/Server/Services/ScheduledMaintenanceCustomFieldService.js.map +1 -1
  575. package/build/dist/Server/Services/ScheduledMaintenanceService.js +29 -0
  576. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  577. package/build/dist/Server/Services/TeamMemberService.js +62 -2
  578. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  579. package/build/dist/Server/Services/TeamPermissionService.js +166 -3
  580. package/build/dist/Server/Services/TeamPermissionService.js.map +1 -1
  581. package/build/dist/Server/Services/TelemetryIngestionKeyService.js +562 -18
  582. package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
  583. package/build/dist/Server/Services/UserNotificationRuleService.js +60 -25
  584. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  585. package/build/dist/Server/Services/UserNotificationSettingService.js +26 -6
  586. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  587. package/build/dist/Server/Services/UserTelegramService.js +257 -4
  588. package/build/dist/Server/Services/UserTelegramService.js.map +1 -1
  589. package/build/dist/Server/Types/Database/Permissions/ReadPermission.js +29 -4
  590. package/build/dist/Server/Types/Database/Permissions/ReadPermission.js.map +1 -1
  591. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  592. package/build/dist/Server/Types/Database/QueryUtil.js +36 -0
  593. package/build/dist/Server/Types/Database/QueryUtil.js.map +1 -1
  594. package/build/dist/Server/Types/Markdown.js +75 -0
  595. package/build/dist/Server/Types/Markdown.js.map +1 -1
  596. package/build/dist/Server/Utils/APIKey/AccessPermission.js +2 -2
  597. package/build/dist/Server/Utils/APIKey/AccessPermission.js.map +1 -1
  598. package/build/dist/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.js +27 -0
  599. package/build/dist/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.js.map +1 -0
  600. package/build/dist/Server/Utils/CustomField/CustomFieldMappingRegistry.js +226 -0
  601. package/build/dist/Server/Utils/CustomField/CustomFieldMappingRegistry.js.map +1 -0
  602. package/build/dist/Server/Utils/CustomField/CustomFieldMappingValidator.js +189 -0
  603. package/build/dist/Server/Utils/CustomField/CustomFieldMappingValidator.js.map +1 -0
  604. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +53 -18
  605. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -1
  606. package/build/dist/Server/Utils/DataSource/EgressGuard.js +121 -7
  607. package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
  608. package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js +38 -5
  609. package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js.map +1 -1
  610. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +54 -3
  611. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -1
  612. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +2 -2
  613. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -1
  614. package/build/dist/Server/Utils/FrontendEnvironment.js +33 -0
  615. package/build/dist/Server/Utils/FrontendEnvironment.js.map +1 -0
  616. package/build/dist/Server/Utils/LogRedaction.js +20 -0
  617. package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
  618. package/build/dist/Server/Utils/Logger.js +10 -0
  619. package/build/dist/Server/Utils/Logger.js.map +1 -1
  620. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +323 -81
  621. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
  622. package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +20 -4
  623. package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js.map +1 -1
  624. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +29 -5
  625. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  626. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +29 -6
  627. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  628. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +254 -48
  629. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  630. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +58 -9
  631. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js.map +1 -1
  632. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js +9 -3
  633. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js.map +1 -1
  634. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js +26 -12
  635. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js.map +1 -1
  636. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +74 -33
  637. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
  638. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +22 -6
  639. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  640. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +22 -0
  641. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  642. package/build/dist/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.js +114 -0
  643. package/build/dist/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.js.map +1 -0
  644. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +25 -0
  645. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  646. package/build/dist/Server/Utils/Monitor/SeriesContextEnricher.js +237 -0
  647. package/build/dist/Server/Utils/Monitor/SeriesContextEnricher.js.map +1 -0
  648. package/build/dist/Server/Utils/SSRFProtection.js +136 -9
  649. package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
  650. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js +174 -89
  651. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js.map +1 -1
  652. package/build/dist/Server/Utils/SessionReplay/SessionReplayHealthCounters.js +223 -0
  653. package/build/dist/Server/Utils/SessionReplay/SessionReplayHealthCounters.js.map +1 -0
  654. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js +945 -164
  655. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js.map +1 -1
  656. package/build/dist/Server/Utils/StartServer.js +3 -14
  657. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  658. package/build/dist/Server/Utils/TelegramVerificationToken.js +129 -0
  659. package/build/dist/Server/Utils/TelegramVerificationToken.js.map +1 -0
  660. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +9 -1
  661. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
  662. package/build/dist/Server/Utils/Telemetry/PinServiceName.js +163 -0
  663. package/build/dist/Server/Utils/Telemetry/PinServiceName.js.map +1 -0
  664. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +70 -13
  665. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  666. package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js +28 -15
  667. package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js.map +1 -1
  668. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js +64 -0
  669. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js.map +1 -0
  670. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.js +171 -0
  671. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.js.map +1 -0
  672. package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
  673. package/build/dist/Server/Utils/VM/VMRunner.js +780 -69
  674. package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
  675. package/build/dist/Types/BaseDatabase/IncludesAnyOfGroups.js +54 -0
  676. package/build/dist/Types/BaseDatabase/IncludesAnyOfGroups.js.map +1 -0
  677. package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js +60 -0
  678. package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js.map +1 -0
  679. package/build/dist/Types/CustomField/CustomFieldMappingSourceResource.js +20 -0
  680. package/build/dist/Types/CustomField/CustomFieldMappingSourceResource.js.map +1 -0
  681. package/build/dist/Types/CustomField/CustomFieldValueMapping.js +141 -0
  682. package/build/dist/Types/CustomField/CustomFieldValueMapping.js.map +1 -0
  683. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
  684. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  685. package/build/dist/Types/Dashboard/DashboardVariable.js +1 -0
  686. package/build/dist/Types/Dashboard/DashboardVariable.js.map +1 -1
  687. package/build/dist/Types/Icon/IconProp.js +1 -0
  688. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  689. package/build/dist/Types/JSON.js +1 -0
  690. package/build/dist/Types/JSON.js.map +1 -1
  691. package/build/dist/Types/JSONFunctions.js +131 -37
  692. package/build/dist/Types/JSONFunctions.js.map +1 -1
  693. package/build/dist/Types/Monitor/CephAlertTemplates.js +130 -171
  694. package/build/dist/Types/Monitor/CephAlertTemplates.js.map +1 -1
  695. package/build/dist/Types/Monitor/DockerAlertTemplates.js +286 -121
  696. package/build/dist/Types/Monitor/DockerAlertTemplates.js.map +1 -1
  697. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js +84 -105
  698. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js.map +1 -1
  699. package/build/dist/Types/Monitor/HostAlertTemplates.js +250 -122
  700. package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -1
  701. package/build/dist/Types/Monitor/IotAlertTemplates.js +81 -81
  702. package/build/dist/Types/Monitor/IotAlertTemplates.js.map +1 -1
  703. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +375 -215
  704. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
  705. package/build/dist/Types/Monitor/KubernetesMetricCatalog.js +19 -19
  706. package/build/dist/Types/Monitor/KubernetesMetricCatalog.js.map +1 -1
  707. package/build/dist/Types/Monitor/PodmanAlertTemplates.js +104 -153
  708. package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -1
  709. package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js +156 -91
  710. package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js.map +1 -1
  711. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js +67 -6
  712. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js.map +1 -1
  713. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +38 -7
  714. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
  715. package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js +261 -0
  716. package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js.map +1 -0
  717. package/build/dist/Types/Monitor/RumAlertTemplates.js +46 -7
  718. package/build/dist/Types/Monitor/RumAlertTemplates.js.map +1 -1
  719. package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js +422 -0
  720. package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js.map +1 -0
  721. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +441 -0
  722. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -0
  723. package/build/dist/Types/Monitor/ServiceAlertTemplates.js +79 -15
  724. package/build/dist/Types/Monitor/ServiceAlertTemplates.js.map +1 -1
  725. package/build/dist/Types/Monitor/UptimeHistoryLabels.js +17 -0
  726. package/build/dist/Types/Monitor/UptimeHistoryLabels.js.map +1 -0
  727. package/build/dist/Types/NetworkAutomation/RuleRunResult.js +291 -6
  728. package/build/dist/Types/NetworkAutomation/RuleRunResult.js.map +1 -1
  729. package/build/dist/Types/NotificationSetting/RoutineEmailEvents.js +29 -0
  730. package/build/dist/Types/NotificationSetting/RoutineEmailEvents.js.map +1 -0
  731. package/build/dist/Types/Rum/SessionReplay.js +117 -0
  732. package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
  733. package/build/dist/Types/Rum/SessionReplayApi.js +181 -0
  734. package/build/dist/Types/Rum/SessionReplayApi.js.map +1 -0
  735. package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js +21 -12
  736. package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js.map +1 -1
  737. package/build/dist/Types/Rum/SessionReplayConsentMode.js +11 -7
  738. package/build/dist/Types/Rum/SessionReplayConsentMode.js.map +1 -1
  739. package/build/dist/Types/Rum/SessionReplayCustomEvents.js +172 -0
  740. package/build/dist/Types/Rum/SessionReplayCustomEvents.js.map +1 -0
  741. package/build/dist/Types/Rum/SessionReplayHealth.js +37 -0
  742. package/build/dist/Types/Rum/SessionReplayHealth.js.map +1 -0
  743. package/build/dist/Types/SerializableObjectDictionary.js +4 -0
  744. package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
  745. package/build/dist/Types/Telemetry/InventoryLiveness.js +37 -0
  746. package/build/dist/Types/Telemetry/InventoryLiveness.js.map +1 -0
  747. package/build/dist/Types/Telemetry/TelemetryIngestSurface.js +85 -0
  748. package/build/dist/Types/Telemetry/TelemetryIngestSurface.js.map +1 -0
  749. package/build/dist/Types/Telemetry/TelemetryIngestionKeyPolicy.js +15 -0
  750. package/build/dist/Types/Telemetry/TelemetryIngestionKeyPolicy.js.map +1 -0
  751. package/build/dist/Types/Telemetry/TelemetryIngestionKeyType.js +30 -0
  752. package/build/dist/Types/Telemetry/TelemetryIngestionKeyType.js.map +1 -0
  753. package/build/dist/Types/WebsiteRequest.js +55 -3
  754. package/build/dist/Types/WebsiteRequest.js.map +1 -1
  755. package/build/dist/UI/Components/CSVFileUpload/CSVFileUpload.js +7 -0
  756. package/build/dist/UI/Components/CSVFileUpload/CSVFileUpload.js.map +1 -1
  757. package/build/dist/UI/Components/Charts/Area/AreaChart.js +13 -2
  758. package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
  759. package/build/dist/UI/Components/Charts/Bar/BarChart.js +6 -2
  760. package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
  761. package/build/dist/UI/Components/Charts/Line/LineChart.js +13 -2
  762. package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
  763. package/build/dist/UI/Components/Charts/Types/XAxis/XAxis.js.map +1 -1
  764. package/build/dist/UI/Components/Charts/Utils/DataPoint.js +15 -3
  765. package/build/dist/UI/Components/Charts/Utils/DataPoint.js.map +1 -1
  766. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js +40 -9
  767. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js.map +1 -1
  768. package/build/dist/UI/Components/Charts/Utils/XAxis.js +186 -0
  769. package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
  770. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +89 -8
  771. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
  772. package/build/dist/UI/Components/CustomFields/MapFromCustomFieldInput.js +118 -0
  773. package/build/dist/UI/Components/CustomFields/MapFromCustomFieldInput.js.map +1 -0
  774. package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js +137 -0
  775. package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js.map +1 -0
  776. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js +112 -7
  777. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js.map +1 -1
  778. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js +5 -162
  779. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js.map +1 -1
  780. package/build/dist/UI/Components/Graphs/UptimeDaySummary.js +181 -0
  781. package/build/dist/UI/Components/Graphs/UptimeDaySummary.js.map +1 -0
  782. package/build/dist/UI/Components/Header/Header.js +2 -3
  783. package/build/dist/UI/Components/Header/Header.js.map +1 -1
  784. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js +2 -1
  785. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js.map +1 -1
  786. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js +7 -1
  787. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js.map +1 -1
  788. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js +7 -1
  789. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js.map +1 -1
  790. package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.js +7 -1
  791. package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.js.map +1 -1
  792. package/build/dist/UI/Components/Icon/Icon.js +5 -0
  793. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  794. package/build/dist/UI/Components/JSONTable/JSONTable.js +2 -2
  795. package/build/dist/UI/Components/JSONTable/JSONTable.js.map +1 -1
  796. package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.js +35 -0
  797. package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.js.map +1 -0
  798. package/build/dist/UI/Components/Monitor/SeriesDebugCommandsViewer.js +34 -0
  799. package/build/dist/UI/Components/Monitor/SeriesDebugCommandsViewer.js.map +1 -0
  800. package/build/dist/UI/Components/Monitor/SeriesLabelsViewer.js +49 -0
  801. package/build/dist/UI/Components/Monitor/SeriesLabelsViewer.js.map +1 -0
  802. package/build/dist/UI/Components/MonitorGraphs/Uptime.js +1 -1
  803. package/build/dist/UI/Components/MonitorGraphs/Uptime.js.map +1 -1
  804. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js +32 -6
  805. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js.map +1 -1
  806. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +38 -0
  807. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  808. package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js +22 -1
  809. package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js.map +1 -1
  810. package/build/dist/UI/Components/Table/CellClassName.js +55 -0
  811. package/build/dist/UI/Components/Table/CellClassName.js.map +1 -0
  812. package/build/dist/UI/Components/Table/TableRow.js +16 -13
  813. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  814. package/build/dist/UI/Components/Table/TableSkeletonRows.js +9 -8
  815. package/build/dist/UI/Components/Table/TableSkeletonRows.js.map +1 -1
  816. package/build/dist/UI/Components/Tooltip/Tooltip.js +25 -1
  817. package/build/dist/UI/Components/Tooltip/Tooltip.js.map +1 -1
  818. package/build/dist/UI/Components/Workflow/ComponentsModal.js +47 -30
  819. package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
  820. package/build/dist/UI/Components/Workflow/NodePlacement.js +37 -0
  821. package/build/dist/UI/Components/Workflow/NodePlacement.js.map +1 -0
  822. package/build/dist/UI/Components/Workflow/Workflow.js +35 -18
  823. package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
  824. package/build/dist/UI/Config.js +10 -20
  825. package/build/dist/UI/Config.js.map +1 -1
  826. package/build/dist/UI/Utils/GlobalKeyboardShortcut.js +138 -0
  827. package/build/dist/UI/Utils/GlobalKeyboardShortcut.js.map +1 -0
  828. package/build/dist/UI/Utils/Telemetry/BrowserTelemetryConfig.js +14 -0
  829. package/build/dist/UI/Utils/Telemetry/BrowserTelemetryConfig.js.map +1 -0
  830. package/build/dist/UI/Utils/Telemetry/Telemetry.js +7 -5
  831. package/build/dist/UI/Utils/Telemetry/Telemetry.js.map +1 -1
  832. package/build/dist/Utils/API.js +67 -5
  833. package/build/dist/Utils/API.js.map +1 -1
  834. package/build/dist/Utils/Dashboard/Components/DashboardMonitorListComponent.js +9 -1
  835. package/build/dist/Utils/Dashboard/Components/DashboardMonitorListComponent.js.map +1 -1
  836. package/build/dist/Utils/Dashboard/LabelVariable.js +96 -0
  837. package/build/dist/Utils/Dashboard/LabelVariable.js.map +1 -0
  838. package/build/dist/Utils/Dashboard/VariableUrlState.js +19 -4
  839. package/build/dist/Utils/Dashboard/VariableUrlState.js.map +1 -1
  840. package/build/dist/Utils/HTTPResponseBodyReader.js +157 -0
  841. package/build/dist/Utils/HTTPResponseBodyReader.js.map +1 -0
  842. package/build/dist/Utils/MetricUnitUtil.js +26 -0
  843. package/build/dist/Utils/MetricUnitUtil.js.map +1 -1
  844. package/build/dist/Utils/Monitor/DeviceMacLearningUtil.js +112 -0
  845. package/build/dist/Utils/Monitor/DeviceMacLearningUtil.js.map +1 -0
  846. package/build/dist/Utils/Monitor/MetricValueFormatter.js +276 -0
  847. package/build/dist/Utils/Monitor/MetricValueFormatter.js.map +1 -0
  848. package/build/dist/Utils/Monitor/MonitorTemplateCustomFieldUtil.js +101 -0
  849. package/build/dist/Utils/Monitor/MonitorTemplateCustomFieldUtil.js.map +1 -0
  850. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js +7 -2
  851. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js.map +1 -1
  852. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +484 -0
  853. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  854. package/build/dist/Utils/NetworkAutomation/AutoImportRunChain.js +59 -0
  855. package/build/dist/Utils/NetworkAutomation/AutoImportRunChain.js.map +1 -0
  856. package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js +69 -0
  857. package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js.map +1 -0
  858. package/build/dist/Utils/Rum/ChunkMath.js +76 -0
  859. package/build/dist/Utils/Rum/ChunkMath.js.map +1 -1
  860. package/build/dist/Utils/Rum/SessionReplayHealth.js +534 -0
  861. package/build/dist/Utils/Rum/SessionReplayHealth.js.map +1 -0
  862. package/build/dist/Utils/Rum/SessionReplayStringMap.js +165 -0
  863. package/build/dist/Utils/Rum/SessionReplayStringMap.js.map +1 -0
  864. package/build/dist/Utils/Schema/ModelSchema.js +1 -0
  865. package/build/dist/Utils/Schema/ModelSchema.js.map +1 -1
  866. package/build/dist/Utils/StatusPage/ResourceSearch.js +200 -0
  867. package/build/dist/Utils/StatusPage/ResourceSearch.js.map +1 -0
  868. package/build/dist/Utils/Telemetry/OriginAllowList.js +299 -0
  869. package/build/dist/Utils/Telemetry/OriginAllowList.js.map +1 -0
  870. package/build/dist/Utils/Uptime/DayUptimeGraphUtil.js +147 -0
  871. package/build/dist/Utils/Uptime/DayUptimeGraphUtil.js.map +1 -0
  872. package/build/dist/Utils/ValueFormatter.js +32 -1
  873. package/build/dist/Utils/ValueFormatter.js.map +1 -1
  874. package/jest.config.json +2 -0
  875. package/package.json +1 -1
  876. package/test-setup.sh +9 -9
  877. package/tsconfig.json +51 -11
@@ -0,0 +1,534 @@
1
+ import { isSessionReplayRefusalReason, } from "../../Types/Rum/SessionReplayHealth";
2
+ import SessionReplayCaptureTrigger from "../../Types/Rum/SessionReplayCaptureTrigger";
3
+ import SessionReplayConsentMode from "../../Types/Rum/SessionReplayConsentMode";
4
+ import { readDtoBoolean, readDtoNumber, readDtoOptionalNumber, readDtoString, readDtoStringArray, } from "../../Types/Rum/SessionReplayApi";
5
+ /*
6
+ * diagnoseRecordingHealth: one pure function that turns the ingest-status
7
+ * response into the single sentence the list page, the settings page and
8
+ * the setup guide all show.
9
+ *
10
+ * Pure and isomorphic (no Date.now(), no I/O, no DOM) so every state in
11
+ * the priority table is a unit test with a fixed clock. The copy rules it
12
+ * enforces are the product's, not decoration: name the cause, quantify
13
+ * it, offer ONE action, never render a counter that was not read as 0,
14
+ * and never say "disconnected" without saying why.
15
+ */
16
+ /*
17
+ * A refusal reason has to recur before it is reported as THE problem: a
18
+ * handful of origin-not-allowed refusals in a day is a developer's local
19
+ * build, hundreds is a misconfigured allowlist.
20
+ */
21
+ export const SESSION_REPLAY_REFUSAL_ALERT_THRESHOLD = 5;
22
+ /*
23
+ * A recorder that keeps fetching its policy but has not delivered a chunk
24
+ * for this long is stuck, not quiet. 6h spans a working day's lull
25
+ * without flagging a site that simply has evening traffic.
26
+ */
27
+ export const SESSION_REPLAY_STALE_CHUNK_MS = 6 * 60 * 60 * 1000;
28
+ /*
29
+ * "The recorder is loading on the site" means a policy fetch inside this
30
+ * window. Past it no recorder is running right now, which is why a silent
31
+ * application splits in two: a recorder that keeps fetching but delivers
32
+ * nothing is STUCK (state "stale"), while one that is not fetching either
33
+ * is simply not on any page being served - and the health copy says so
34
+ * rather than calling the second one healthy.
35
+ */
36
+ export const SESSION_REPLAY_RECORDER_ACTIVE_WINDOW_MS = 24 * 60 * 60 * 1000;
37
+ const SECOND_MS = 1000;
38
+ const MINUTE_MS = 60 * SECOND_MS;
39
+ const HOUR_MS = 60 * MINUTE_MS;
40
+ const DAY_MS = 24 * HOUR_MS;
41
+ /*
42
+ * "12s ago", "5m ago", "7h ago", "3d ago". A future or sub-second time is
43
+ * "just now" (clock skew between the browser and the server is normal); a
44
+ * non-finite input is "unknown" so a bad timestamp can never render as
45
+ * "0s ago", which would claim liveness that was never observed.
46
+ */
47
+ export function formatRelativeAge(fromUnixMs, nowUnixMs) {
48
+ if (!Number.isFinite(fromUnixMs) || !Number.isFinite(nowUnixMs)) {
49
+ return "unknown";
50
+ }
51
+ const ageMs = nowUnixMs - fromUnixMs;
52
+ if (ageMs < SECOND_MS) {
53
+ return "just now";
54
+ }
55
+ if (ageMs < MINUTE_MS) {
56
+ return `${Math.floor(ageMs / SECOND_MS)}s ago`;
57
+ }
58
+ if (ageMs < HOUR_MS) {
59
+ return `${Math.floor(ageMs / MINUTE_MS)}m ago`;
60
+ }
61
+ if (ageMs < DAY_MS) {
62
+ return `${Math.floor(ageMs / HOUR_MS)}h ago`;
63
+ }
64
+ return `${Math.floor(ageMs / DAY_MS)}d ago`;
65
+ }
66
+ /* "1h", "6h", "3d" - a duration rather than an age, for "no chunk for 7h". */
67
+ export function formatDurationForCopy(durationMs) {
68
+ if (!Number.isFinite(durationMs) || durationMs < 0) {
69
+ return "unknown";
70
+ }
71
+ if (durationMs < MINUTE_MS) {
72
+ return `${Math.floor(durationMs / SECOND_MS)}s`;
73
+ }
74
+ if (durationMs < HOUR_MS) {
75
+ return `${Math.floor(durationMs / MINUTE_MS)}m`;
76
+ }
77
+ if (durationMs < DAY_MS) {
78
+ return `${Math.floor(durationMs / HOUR_MS)}h`;
79
+ }
80
+ return `${Math.floor(durationMs / DAY_MS)}d`;
81
+ }
82
+ /*
83
+ * A count for copy: "1,234", or "unknown" for null. Formatted by hand
84
+ * rather than toLocaleString so the sentence is identical in every
85
+ * browser locale and in tests.
86
+ */
87
+ export function formatCountForCopy(count) {
88
+ if (count === null || !Number.isFinite(count)) {
89
+ return "unknown";
90
+ }
91
+ const rounded = Math.max(0, Math.floor(count));
92
+ const digits = String(rounded);
93
+ let formatted = "";
94
+ for (let index = 0; index < digits.length; index++) {
95
+ const fromEnd = digits.length - index;
96
+ if (index > 0 && fromEnd % 3 === 0) {
97
+ formatted += ",";
98
+ }
99
+ formatted += digits[index];
100
+ }
101
+ return formatted;
102
+ }
103
+ /* "1 GB", "512 MB", "2.5 GB". Byte budgets are set in whole GB or MB. */
104
+ export function formatBytesForCopy(bytes) {
105
+ if (!Number.isFinite(bytes) || bytes < 0) {
106
+ return "unknown";
107
+ }
108
+ const gb = bytes / (1024 * 1024 * 1024);
109
+ if (gb >= 1) {
110
+ return `${Number.isInteger(gb) ? gb : gb.toFixed(1)} GB`;
111
+ }
112
+ const mb = bytes / (1024 * 1024);
113
+ return `${Math.round(mb)} MB`;
114
+ }
115
+ /* ISO string -> unix ms, or null when absent or unparseable. */
116
+ export function parseHealthTimestamp(value) {
117
+ if (typeof value !== "string" || value.length === 0) {
118
+ return null;
119
+ }
120
+ const parsed = Date.parse(value);
121
+ return Number.isFinite(parsed) ? parsed : null;
122
+ }
123
+ /*
124
+ * Normalise the /ingest-status JSON. The legacy top-level policy fields
125
+ * are folded into `policy`; every additive field defaults to null (not
126
+ * measured) rather than 0 or "", and unknown refusal reasons are dropped
127
+ * so the diagnosis only ever names a reason it has copy for. Returns null
128
+ * for a body that is not an object at all, which the caller reports as
129
+ * "unknown" health.
130
+ */
131
+ export function parseRecordingHealthStatus(raw) {
132
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
133
+ return null;
134
+ }
135
+ const row = raw;
136
+ const readNullableString = (key) => {
137
+ const value = row[key];
138
+ return typeof value === "string" && value.length > 0 ? value : null;
139
+ };
140
+ const readNullableNumber = (key) => {
141
+ const value = readDtoOptionalNumber(row, key);
142
+ return value === undefined ? null : value;
143
+ };
144
+ const rawRefusals = row["refusalsLast24h"];
145
+ let refusals = null;
146
+ if (Array.isArray(rawRefusals)) {
147
+ refusals = [];
148
+ for (const entry of rawRefusals) {
149
+ if (entry === null || typeof entry !== "object") {
150
+ continue;
151
+ }
152
+ const entryRow = entry;
153
+ const reason = entryRow["reason"];
154
+ const count = readDtoOptionalNumber(entryRow, "count");
155
+ if (isSessionReplayRefusalReason(reason) && count !== undefined) {
156
+ refusals.push({ reason: reason, count: count });
157
+ }
158
+ }
159
+ }
160
+ /*
161
+ * Drops keep whatever reason string the worker used: they are shown
162
+ * verbatim ("12 chunks dropped after acceptance: scrub-incomplete") and
163
+ * never drive a diagnosis state, so an unknown reason is still worth
164
+ * showing rather than filtering.
165
+ */
166
+ const rawDrops = row["dropsLast24h"];
167
+ let drops = null;
168
+ if (Array.isArray(rawDrops)) {
169
+ drops = [];
170
+ for (const entry of rawDrops) {
171
+ if (entry === null || typeof entry !== "object") {
172
+ continue;
173
+ }
174
+ const entryRow = entry;
175
+ const reason = entryRow["reason"];
176
+ const count = readDtoOptionalNumber(entryRow, "count");
177
+ if (typeof reason === "string" && reason && count !== undefined) {
178
+ drops.push({ reason: reason, count: count });
179
+ }
180
+ }
181
+ }
182
+ /*
183
+ * Absent or not an array means the server never reported capabilities
184
+ * (unknown); an empty array means a recorder uploaded and announced
185
+ * none. Entries are kept verbatim rather than filtered against a known
186
+ * list: the vocabulary belongs to the recorder, and a capability this
187
+ * build has not heard of is exactly what somebody debugging a mixed
188
+ * rollout needs to see.
189
+ */
190
+ const rawCapabilities = row["recorderCapabilities"];
191
+ const recorderCapabilities = Array.isArray(rawCapabilities)
192
+ ? readDtoStringArray(row, "recorderCapabilities")
193
+ : null;
194
+ const retentionInDays = readDtoOptionalNumber(row, "retentionInDays");
195
+ const policy = {
196
+ isProjectEnabled: readDtoBoolean(row, "isProjectAllowed"),
197
+ isApplicationEnabled: readDtoBoolean(row, "isApplicationEnabled"),
198
+ captureTrigger: readDtoString(row, "captureTrigger"),
199
+ samplePercentage: readDtoNumber(row, "samplePercentage"),
200
+ consentMode: readDtoString(row, "consentMode"),
201
+ maskingMode: readDtoString(row, "maskingMode"),
202
+ retentionInDays: retentionInDays === undefined ? null : retentionInDays,
203
+ };
204
+ return {
205
+ appIdentifier: readDtoString(row, "appIdentifier"),
206
+ allowedOrigins: readDtoStringArray(row, "allowedOrigins"),
207
+ policy: policy,
208
+ publishedRecorderVersion: readNullableString("publishedRecorderVersion"),
209
+ lastConfigFetchAt: readNullableString("lastConfigFetchAt"),
210
+ lastChunkReceivedAt: readNullableString("lastChunkReceivedAt"),
211
+ lastSessionStartedAt: readNullableString("lastSessionStartedAt"),
212
+ budgetExceededAt: readNullableString("budgetExceededAt"),
213
+ sessionsLast24h: readNullableNumber("sessionsLast24h"),
214
+ playableSessionsLast24h: readNullableNumber("playableSessionsLast24h"),
215
+ refusalsLast24h: refusals,
216
+ dropsLast24h: drops,
217
+ recorderCapabilities: recorderCapabilities,
218
+ projectBytesUsedToday: readNullableNumber("projectBytesUsedToday"),
219
+ dailyByteLimit: readDtoNumber(row, "dailyByteLimit"),
220
+ applicationBytesUsedThisMonth: readNullableNumber("applicationBytesUsedThisMonth"),
221
+ monthlyBudgetInGB: readNullableNumber("monthlyBudgetInGB"),
222
+ };
223
+ }
224
+ /* The most frequent refusal reason, or null when nothing was refused. */
225
+ export function getTopRefusal(refusals) {
226
+ if (refusals === null || refusals.length === 0) {
227
+ return null;
228
+ }
229
+ let top = null;
230
+ for (const refusal of refusals) {
231
+ if (top === null || refusal.count > top.count) {
232
+ top = refusal;
233
+ }
234
+ }
235
+ return top;
236
+ }
237
+ /*
238
+ * One entry per gate reason, so the title never shows the bare reason
239
+ * code. Deployment-level causes (ingest switched off, no artifact, Redis
240
+ * down) have no action: nothing on a settings page fixes them, and
241
+ * offering a link that cannot help is worse than saying so.
242
+ */
243
+ const REFUSAL_COPY = {
244
+ "ingest-disabled": {
245
+ label: "ingest is switched off on this deployment",
246
+ detail: "SESSION_REPLAY_INGEST_ENABLED is false on the server, so every chunk is refused. Only the operator of this deployment can change that.",
247
+ },
248
+ "instance-not-offering-replay": {
249
+ label: "this deployment publishes no recorder",
250
+ detail: "No recorder artifact is built on this deployment, so chunks from a cached recorder are refused. Only the operator of this deployment can change that.",
251
+ },
252
+ "policy-unavailable": {
253
+ label: "the policy lookup failed",
254
+ detail: "The server could not load this application's replay policy and refused rather than guess. This clears on its own once the database is reachable.",
255
+ },
256
+ "not-enabled": {
257
+ label: "replay was switched off when they arrived",
258
+ detail: "Chunks arrived while the application or project had session replay switched off.",
259
+ action: { label: "Check the switch", target: "app-settings" },
260
+ },
261
+ "origin-not-allowed": {
262
+ label: "origin not allowed",
263
+ detail: "Requests came from an origin that is not in your allowed origins.",
264
+ action: { label: "Edit allowed origins", target: "allowed-origins" },
265
+ },
266
+ "session-chunk-cap": {
267
+ label: "sessions hit the chunk cap",
268
+ detail: "Some sessions reached the per-session chunk cap and stopped uploading; the recording up to that point is kept.",
269
+ },
270
+ "not-sampled": {
271
+ label: "not sampled",
272
+ detail: "The server's sampling draw refused chunks the recorder sent, which happens when the sample percentage was lowered while sessions were live.",
273
+ action: { label: "Review sampling", target: "app-settings" },
274
+ },
275
+ "rate-limited": {
276
+ label: "rate limited",
277
+ detail: "Uploads exceeded the per-application rate limit and were refused. A burst of page loads clears on its own.",
278
+ },
279
+ "rate-counter-unavailable": {
280
+ label: "the rate counter was unreachable",
281
+ detail: "The server could not reach its rate counter and refused rather than guess. This clears on its own once the counter store is reachable.",
282
+ },
283
+ "budget-exhausted": {
284
+ label: "the project's daily budget is spent",
285
+ detail: "This project used its daily byte budget for session replay.",
286
+ action: { label: "Review the budget", target: "budget" },
287
+ },
288
+ "budget-counter-unavailable": {
289
+ label: "the budget counter was unreachable",
290
+ detail: "The server could not reach its budget counter and refused rather than guess. This clears on its own once the counter store is reachable.",
291
+ },
292
+ "app-monthly-budget-exhausted": {
293
+ label: "the monthly budget is spent",
294
+ detail: "This application used its monthly byte budget for session replay.",
295
+ action: { label: "Raise the budget", target: "budget" },
296
+ },
297
+ "consent-required": {
298
+ label: "consent was not granted",
299
+ detail: "Uploads arrived before your page called OneUptimeReplay.grantConsent(). The recorder keeps recording in memory; nothing is stored until consent is granted.",
300
+ action: { label: "How consent works", target: "docs-consent" },
301
+ },
302
+ };
303
+ function action(label, target) {
304
+ return { label: label, target: target };
305
+ }
306
+ /* "for acme-web" when the identifier is known, "" otherwise. */
307
+ function appSuffix(status) {
308
+ return status.appIdentifier ? ` for ${status.appIdentifier}` : "";
309
+ }
310
+ /*
311
+ * What keeps a loaded recorder from ever uploading, read off the policy
312
+ * alone. Ordered by how absolute the block is: sampling at 0% records
313
+ * nothing at all; consent gates every upload until the page grants it;
314
+ * the error/frustration trigger uploads nothing on a quiet day. When
315
+ * none applies, the generic explanation points at the request path.
316
+ */
317
+ function explainLoadedNeverUploaded(status) {
318
+ const policy = status.policy;
319
+ if (policy.samplePercentage <= 0) {
320
+ return {
321
+ detail: "Your sample percentage is 0%, so no session is recorded. Raise it to record the next visitor.",
322
+ action: action("Set sampling to 100%", "app-settings"),
323
+ };
324
+ }
325
+ if (policy.consentMode === SessionReplayConsentMode.RequireExplicit) {
326
+ return {
327
+ detail: "Waiting for consent: the page has not called OneUptimeReplay.grantConsent(), and nothing uploads until it does.",
328
+ action: action("How consent works", "docs-consent"),
329
+ };
330
+ }
331
+ if (policy.captureTrigger === SessionReplayCaptureTrigger.OnErrorOrFrustration) {
332
+ return {
333
+ detail: "Uploads only start when an error or frustration signal fires; a quiet day looks like nothing. Switch the trigger to Always to record every session.",
334
+ action: action("Record every session", "app-settings"),
335
+ };
336
+ }
337
+ return {
338
+ detail: "The policy fetch succeeds but no chunk has arrived. Uploads flush every 15s, so a request is being blocked on the way: check the browser console for a CSP or ad-blocker refusal of the ingest URL.",
339
+ action: action("Allow the recorder through your CSP", "docs-csp"),
340
+ };
341
+ }
342
+ function isDailyBudgetSpent(status) {
343
+ return (status.projectBytesUsedToday !== null &&
344
+ status.dailyByteLimit > 0 &&
345
+ status.projectBytesUsedToday >= status.dailyByteLimit);
346
+ }
347
+ /*
348
+ * budgetExceededAt is a stamp, not a live flag. When the month's usage is
349
+ * known and sits under the budget, the stamp is from a previous month and
350
+ * uploads are flowing again; only then is it ignored.
351
+ */
352
+ function isMonthlyBudgetPaused(status) {
353
+ if (status.budgetExceededAt === null) {
354
+ return false;
355
+ }
356
+ if (status.applicationBytesUsedThisMonth !== null &&
357
+ status.monthlyBudgetInGB !== null &&
358
+ status.monthlyBudgetInGB > 0 &&
359
+ status.applicationBytesUsedThisMonth <
360
+ status.monthlyBudgetInGB * 1024 * 1024 * 1024) {
361
+ return false;
362
+ }
363
+ return true;
364
+ }
365
+ /* "143 sessions in 24h (120 playable)", with unknown counters said so. */
366
+ function describeSessions(status) {
367
+ const sessions = formatCountForCopy(status.sessionsLast24h);
368
+ if (status.sessionsLast24h === null) {
369
+ return "sessions in 24h: unknown";
370
+ }
371
+ const playable = status.playableSessionsLast24h === null
372
+ ? ""
373
+ : ` (${formatCountForCopy(status.playableSessionsLast24h)} playable)`;
374
+ return `${sessions} session${status.sessionsLast24h === 1 ? "" : "s"} in 24h${playable}`;
375
+ }
376
+ /*
377
+ * The diagnosis. Strict priority, first match wins:
378
+ *
379
+ * disabled-project > disabled-app > budget-paused > refusing >
380
+ * never-loaded > loaded-never-uploaded > stale > healthy-quiet > healthy
381
+ *
382
+ * The last two split the same silence by whether a recorder is still
383
+ * running: past SESSION_REPLAY_STALE_CHUNK_MS without a chunk, a policy
384
+ * fetch inside SESSION_REPLAY_RECORDER_ACTIVE_WINDOW_MS means "stale"
385
+ * (loading but not uploading - something is blocking the request), and no
386
+ * policy fetch in that window means "healthy-quiet" (no recorder is on a
387
+ * page right now: quiet traffic, or a snippet that was removed).
388
+ *
389
+ * and "unknown" when there is no status to read. The order is the order
390
+ * in which a fix has to happen: a switched-off project makes every later
391
+ * signal moot, a spent budget explains any refusal, a refusal explains a
392
+ * missing chunk, and only a recorder that is loading and uploading can be
393
+ * stale or healthy.
394
+ */
395
+ export function diagnoseRecordingHealth(status, nowUnixMs) {
396
+ if (status === null) {
397
+ return {
398
+ state: "unknown",
399
+ severity: "info",
400
+ title: "Recording health is unknown",
401
+ detail: "The health status could not be loaded, so nothing here says whether recording works. Reload to try again.",
402
+ };
403
+ }
404
+ const policy = status.policy;
405
+ if (!policy.isProjectEnabled) {
406
+ return {
407
+ state: "disabled-project",
408
+ severity: "error",
409
+ title: "Session replay is switched off for this project",
410
+ detail: "Nothing is recorded for any application while the project switch is off, whatever the application settings say.",
411
+ action: action("Turn it on", "project-settings"),
412
+ };
413
+ }
414
+ if (!policy.isApplicationEnabled) {
415
+ return {
416
+ state: "disabled-app",
417
+ severity: "error",
418
+ title: `Session replay is switched off${appSuffix(status)}`,
419
+ detail: "Recorders on this application's pages fetch a disabled policy and record nothing.",
420
+ action: action("Turn it on", "app-settings"),
421
+ };
422
+ }
423
+ if (isMonthlyBudgetPaused(status)) {
424
+ const since = parseHealthTimestamp(status.budgetExceededAt);
425
+ const sinceCopy = since === null ? "" : ` ${formatRelativeAge(since, nowUnixMs)}`;
426
+ const budgetCopy = status.monthlyBudgetInGB === null
427
+ ? "its monthly budget"
428
+ : `its ${status.monthlyBudgetInGB} GB monthly budget`;
429
+ return {
430
+ state: "budget-paused",
431
+ severity: "error",
432
+ title: `Uploads paused${sinceCopy}`,
433
+ detail: `This application used ${budgetCopy}. Uploads resume next month, or as soon as the budget is raised.`,
434
+ action: action("Raise the budget", "budget"),
435
+ };
436
+ }
437
+ if (isDailyBudgetSpent(status)) {
438
+ return {
439
+ state: "budget-paused",
440
+ severity: "error",
441
+ title: "Uploads paused for today",
442
+ detail: `This project used its ${formatBytesForCopy(status.dailyByteLimit)} daily budget for session replay (${formatBytesForCopy(status.projectBytesUsedToday)} used). Uploads resume tomorrow.`,
443
+ action: action("Review the budget", "budget"),
444
+ };
445
+ }
446
+ const topRefusal = getTopRefusal(status.refusalsLast24h);
447
+ if (topRefusal !== null &&
448
+ topRefusal.count >= SESSION_REPLAY_REFUSAL_ALERT_THRESHOLD) {
449
+ const copy = REFUSAL_COPY[topRefusal.reason];
450
+ return Object.assign({ state: "refusing", severity: "warning", title: `${formatCountForCopy(topRefusal.count)} uploads refused in 24h: ${copy.label}`, detail: copy.detail }, (copy.action && { action: copy.action }));
451
+ }
452
+ const lastConfigFetchUnixMs = parseHealthTimestamp(status.lastConfigFetchAt);
453
+ const lastChunkUnixMs = parseHealthTimestamp(status.lastChunkReceivedAt);
454
+ /*
455
+ * Both null, not just the config stamp: an older server never sends
456
+ * lastConfigFetchAt, and a recorder that has delivered a chunk has
457
+ * self-evidently loaded.
458
+ */
459
+ if (lastConfigFetchUnixMs === null && lastChunkUnixMs === null) {
460
+ return {
461
+ state: "never-loaded",
462
+ severity: "warning",
463
+ title: `The recorder has never loaded${appSuffix(status)}`,
464
+ detail: "No page has fetched this application's replay policy and no chunk has arrived. Add the script tag to your site, then reload a page that uses it.",
465
+ action: action("Open the setup guide", "setup-guide"),
466
+ };
467
+ }
468
+ if (lastChunkUnixMs === null) {
469
+ const explanation = explainLoadedNeverUploaded(status);
470
+ return {
471
+ state: "loaded-never-uploaded",
472
+ severity: "warning",
473
+ title: `The recorder loaded ${formatRelativeAge(lastConfigFetchUnixMs, nowUnixMs)} but nothing has been uploaded`,
474
+ detail: explanation.detail,
475
+ action: explanation.action,
476
+ };
477
+ }
478
+ const chunkAgeMs = nowUnixMs - lastChunkUnixMs;
479
+ const isRecorderStillLoading = lastConfigFetchUnixMs !== null &&
480
+ nowUnixMs - lastConfigFetchUnixMs <=
481
+ SESSION_REPLAY_RECORDER_ACTIVE_WINDOW_MS;
482
+ if (chunkAgeMs > SESSION_REPLAY_STALE_CHUNK_MS && isRecorderStillLoading) {
483
+ const explanation = explainLoadedNeverUploaded(status);
484
+ return {
485
+ state: "stale",
486
+ severity: "warning",
487
+ title: `No chunk for ${formatDurationForCopy(chunkAgeMs)} while the recorder keeps loading`,
488
+ detail: `The recorder last fetched its policy ${formatRelativeAge(lastConfigFetchUnixMs, nowUnixMs)}, but the last chunk arrived ${formatRelativeAge(lastChunkUnixMs, nowUnixMs)}. ${explanation.detail}`,
489
+ action: explanation.action,
490
+ };
491
+ }
492
+ /*
493
+ * What is left of the >6h case: no chunk AND no policy fetch inside the
494
+ * active window either (or no policy-fetch stamp at all on an older
495
+ * server). Nothing is switched off, over budget or being refused, so
496
+ * this is not an error - but "no recorder has loaded for a day" is also
497
+ * exactly what a removed script tag looks like, and the previous copy
498
+ * ("quiet traffic rather than a broken install") handed out that
499
+ * reassurance for the one silent case it cannot actually vouch for. The
500
+ * copy now names what it knows, quantifies both silences, and offers
501
+ * the install check as the single next step.
502
+ */
503
+ if (chunkAgeMs > SESSION_REPLAY_STALE_CHUNK_MS) {
504
+ const quietTitle = `No session recorded in the past ${formatDurationForCopy(chunkAgeMs)}`;
505
+ const chunkAgeCopy = formatRelativeAge(lastChunkUnixMs, nowUnixMs);
506
+ /*
507
+ * No action in this branch: an older server sends no lastConfigFetchAt
508
+ * at all, so nothing here says the install is wrong, and pointing at
509
+ * the setup guide would be a guess dressed as advice.
510
+ */
511
+ if (lastConfigFetchUnixMs === null) {
512
+ return {
513
+ state: "healthy-quiet",
514
+ severity: "info",
515
+ title: quietTitle,
516
+ detail: `The last chunk arrived ${chunkAgeCopy} and this server does not report policy fetches, so whether a recorder is still loading on your pages cannot be told from here. The policy is healthy (sampling ${policy.samplePercentage}%).`,
517
+ };
518
+ }
519
+ return {
520
+ state: "healthy-quiet",
521
+ severity: "info",
522
+ title: quietTitle,
523
+ detail: `The last chunk arrived ${chunkAgeCopy} and no page has fetched the policy for ${formatDurationForCopy(nowUnixMs - lastConfigFetchUnixMs)} either, so no recorder is running on this application right now - quiet traffic on a low-traffic or staging app, or a snippet that is no longer on the page. The policy is healthy (sampling ${policy.samplePercentage}%).`,
524
+ action: action("Check the install", "setup-guide"),
525
+ };
526
+ }
527
+ return {
528
+ state: "healthy",
529
+ severity: "ok",
530
+ title: "Recording healthy",
531
+ detail: `Last chunk ${formatRelativeAge(lastChunkUnixMs, nowUnixMs)} - ${describeSessions(status)} - sampling ${policy.samplePercentage}%.`,
532
+ };
533
+ }
534
+ //# sourceMappingURL=SessionReplayHealth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionReplayHealth.js","sourceRoot":"","sources":["../../../../Utils/Rum/SessionReplayHealth.ts"],"names":[],"mappings":"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"}