@oneuptime/common 12.0.33 → 12.0.34

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 (652) 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/IncidentCustomField.ts +77 -3
  6. package/Models/DatabaseModels/InventoryItemCustomField.ts +77 -3
  7. package/Models/DatabaseModels/MonitorCustomField.ts +77 -3
  8. package/Models/DatabaseModels/OnCallDutyPolicyCustomField.ts +77 -3
  9. package/Models/DatabaseModels/RumApplication.ts +6 -6
  10. package/Models/DatabaseModels/ScheduledMaintenanceCustomField.ts +77 -3
  11. package/Models/DatabaseModels/StatusPageCustomField.ts +77 -3
  12. package/Models/DatabaseModels/TeamCustomField.ts +77 -3
  13. package/Models/DatabaseModels/TeamMember.ts +0 -9
  14. package/Models/DatabaseModels/TeamMemberCustomField.ts +77 -3
  15. package/Models/DatabaseModels/TeamPermission.ts +3 -24
  16. package/Models/DatabaseModels/TelemetryIngestionKey.ts +260 -0
  17. package/Models/DatabaseModels/UserTelegram.ts +0 -4
  18. package/Scripts/benchmark-fanin-capacity.js +181 -0
  19. package/Server/API/TelemetryAPI.ts +1284 -164
  20. package/Server/API/UserNotificationSettingAPI.ts +55 -0
  21. package/Server/API/UserTelegramAPI.ts +48 -4
  22. package/Server/EnvironmentConfig.ts +35 -2
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.ts +91 -0
  24. package/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.ts +67 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.ts +139 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.ts +121 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  28. package/Server/Infrastructure/QueueWorker.ts +20 -14
  29. package/Server/Infrastructure/Semaphore.ts +2 -0
  30. package/Server/Middleware/TelemetryIngest.ts +453 -7
  31. package/Server/Services/AccessTokenService.ts +1 -0
  32. package/Server/Services/AlertCustomFieldService.ts +98 -0
  33. package/Server/Services/AlertService.ts +37 -0
  34. package/Server/Services/ApiKeyPermissionService.ts +461 -29
  35. package/Server/Services/CustomFieldMappingService.ts +879 -0
  36. package/Server/Services/GlobalConfigService.ts +194 -0
  37. package/Server/Services/IncidentCustomFieldService.ts +98 -0
  38. package/Server/Services/IncidentService.ts +35 -0
  39. package/Server/Services/MetricService.ts +194 -0
  40. package/Server/Services/MonitorService.ts +32 -0
  41. package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +78 -25
  42. package/Server/Services/ProjectService.ts +22 -0
  43. package/Server/Services/RoutineEmailSettingsService.ts +73 -0
  44. package/Server/Services/RumSessionReplayViewService.ts +104 -24
  45. package/Server/Services/ScheduledMaintenanceCustomFieldService.ts +98 -0
  46. package/Server/Services/ScheduledMaintenanceService.ts +32 -0
  47. package/Server/Services/TeamMemberService.ts +78 -0
  48. package/Server/Services/TeamPermissionService.ts +235 -3
  49. package/Server/Services/TelemetryIngestionKeyService.ts +722 -19
  50. package/Server/Services/UserNotificationSettingService.ts +34 -6
  51. package/Server/Services/UserTelegramService.ts +326 -5
  52. package/Server/Types/Database/QueryHelper.ts +2 -0
  53. package/Server/Utils/APIKey/AccessPermission.ts +5 -2
  54. package/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.ts +54 -0
  55. package/Server/Utils/CustomField/CustomFieldMappingRegistry.ts +415 -0
  56. package/Server/Utils/CustomField/CustomFieldMappingValidator.ts +335 -0
  57. package/Server/Utils/DataSource/EgressGuard.ts +177 -8
  58. package/Server/Utils/EmailRollup/EmailRollupConstants.ts +38 -5
  59. package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +57 -4
  60. package/Server/Utils/FrontendEnvironment.ts +40 -0
  61. package/Server/Utils/LogRedaction.ts +20 -0
  62. package/Server/Utils/Logger.ts +11 -0
  63. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +338 -77
  64. package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +30 -4
  65. package/Server/Utils/Monitor/MonitorAlert.ts +29 -6
  66. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +110 -15
  67. package/Server/Utils/Monitor/MonitorIncident.ts +22 -6
  68. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +29 -0
  69. package/Server/Utils/Monitor/SeriesContextEnricher.ts +304 -0
  70. package/Server/Utils/SSRFProtection.ts +217 -10
  71. package/Server/Utils/SessionReplay/SessionReplayGateCache.ts +239 -138
  72. package/Server/Utils/SessionReplay/SessionReplayHealthCounters.ts +305 -0
  73. package/Server/Utils/SessionReplay/SessionReplayReadService.ts +1430 -289
  74. package/Server/Utils/StartServer.ts +2 -17
  75. package/Server/Utils/TelegramVerificationToken.ts +185 -0
  76. package/Server/Utils/Telemetry/PinServiceName.ts +197 -0
  77. package/Server/Utils/Telemetry/TelemetryFanInWriter.ts +38 -16
  78. package/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.ts +92 -0
  79. package/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.ts +217 -0
  80. package/Server/Utils/VM/VMAPI.ts +1 -0
  81. package/Server/Utils/VM/VMRunner.ts +975 -95
  82. package/Tests/App/AdminDashboard/AdminHeaderSmallScreens.test.tsx +202 -0
  83. package/Tests/App/Dashboard/DashboardHeaderSmallScreens.test.tsx +404 -0
  84. package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +468 -0
  85. package/Tests/App/Dashboard/NotificationEmailPreferences.test.tsx +399 -0
  86. package/Tests/App/StatusPage/StatusPageLastUpdated.test.tsx +263 -0
  87. package/Tests/App/StatusPage/StatusPageOverviewLiveAndSearch.test.tsx +753 -0
  88. package/Tests/App/StatusPage/StatusPageResourceSearchBox.test.tsx +224 -0
  89. package/Tests/Models/AnalyticsModels/RumSessionReplayColumns.test.ts +262 -0
  90. package/Tests/Models/CustomFieldMappingColumns.test.ts +166 -0
  91. package/Tests/Models/DatabaseModels/SessionReplayModels.test.ts +20 -6
  92. package/Tests/ResponsiveVisibility.test.ts +115 -0
  93. package/Tests/ResponsiveVisibility.ts +183 -0
  94. package/Tests/Server/API/SessionReplayAPI.test.ts +1940 -216
  95. package/Tests/Server/API/UserNotificationSettingAPI.test.ts +186 -0
  96. package/Tests/Server/API/UserTelegramAPISecurity.test.ts +231 -0
  97. package/Tests/Server/EnvironmentConfigFrontendSecurity.test.ts +234 -0
  98. package/Tests/Server/Infrastructure/Postgres/CustomFieldValueMappingMigration.test.ts +202 -0
  99. package/Tests/Server/Infrastructure/Postgres/InventoryItemArchiveMigration.test.ts +41 -0
  100. package/Tests/Server/Infrastructure/Postgres/SessionReplayRecordEverySessionByDefaultMigration.test.ts +169 -0
  101. package/Tests/Server/Infrastructure/QueueWorkerTimeout.test.ts +210 -0
  102. package/Tests/Server/Infrastructure/TelemetryExporterDeploymentConfig.test.ts +130 -0
  103. package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +4 -1
  104. package/Tests/Server/Middleware/TelemetryIngestBrowserKey.test.ts +1163 -0
  105. package/Tests/Server/Middleware/TelemetryIngestTokenLog.test.ts +5 -3
  106. package/Tests/Server/Services/AddTelemetryIngestionKeyTypeMigration.test.ts +555 -0
  107. package/Tests/Server/Services/ApiKeyPermissionSecurity.test.ts +678 -0
  108. package/Tests/Server/Services/ApiKeyPermissionService.test.ts +276 -28
  109. package/Tests/Server/Services/CustomFieldDropdownOptionsColumnWidth.test.ts +431 -0
  110. package/Tests/Server/Services/CustomFieldMappingService.test.ts +850 -0
  111. package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +32 -0
  112. package/Tests/Server/Services/GlobalConfigService.test.ts +414 -1
  113. package/Tests/Server/Services/MetricRawEntityKeyPrune.test.ts +592 -0
  114. package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +226 -1
  115. package/Tests/Server/Services/RoutineEmailSettingsPostgres.test.ts +329 -0
  116. package/Tests/Server/Services/RumSessionReplayViewService.test.ts +267 -0
  117. package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +9 -0
  118. package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +9 -0
  119. package/Tests/Server/Services/TeamPrivilegeEscalation.test.ts +834 -0
  120. package/Tests/Server/Services/TelemetryIngestionKeyPolicyResolution.test.ts +814 -0
  121. package/Tests/Server/Services/TelemetryIngestionKeyValidation.test.ts +998 -0
  122. package/Tests/Server/Services/UserNotificationSettingRollupRouting.test.ts +141 -0
  123. package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +18 -10
  124. package/Tests/Server/Services/UserTelegramVerificationSecurity.test.ts +688 -0
  125. package/Tests/Server/Utils/AI/SRE/Insights/FixRouting.test.ts +497 -0
  126. package/Tests/Server/Utils/AI/Toolbox/Serializer.test.ts +383 -0
  127. package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +7 -3
  128. package/Tests/Server/Utils/AnalyticsDatabase/ClusterConfig.test.ts +315 -0
  129. package/Tests/Server/Utils/CustomField/CustomFieldMappingValidator.test.ts +437 -0
  130. package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +300 -11
  131. package/Tests/Server/Utils/EmailRollup/EmailRollupBurstWindow.test.ts +83 -0
  132. package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerBehaviour.test.ts +1 -1
  133. package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerPreferences.test.ts +362 -0
  134. package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +77 -1
  135. package/Tests/Server/Utils/FrontendEnvironment.test.ts +190 -0
  136. package/Tests/Server/Utils/LogRedaction.test.ts +26 -0
  137. package/Tests/Server/Utils/LoggerCredentialLeak.test.ts +23 -9
  138. package/Tests/Server/Utils/Monitor/Criteria/CompareCriteriaAggregation.test.ts +584 -0
  139. package/Tests/Server/Utils/Monitor/Criteria/IncomingRequestHeaderCriteria.test.ts +236 -0
  140. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +437 -0
  141. package/Tests/Server/Utils/Monitor/MonitorTemplateUtilSeriesContext.test.ts +176 -0
  142. package/Tests/Server/Utils/Monitor/SeriesContextEnricher.test.ts +356 -0
  143. package/Tests/Server/Utils/SSRFProtectionCloudServiceAddresses.test.ts +595 -0
  144. package/Tests/Server/Utils/SessionReplay/SessionReplayGateCachePolicy.test.ts +198 -1
  145. package/Tests/Server/Utils/SessionReplay/SessionReplayHealthCounters.test.ts +453 -0
  146. package/Tests/Server/Utils/SessionReplay/SessionReplayReadServiceQueries.test.ts +1378 -0
  147. package/Tests/Server/Utils/SessionReplayOriginAllowListRefactor.test.ts +420 -0
  148. package/Tests/Server/Utils/TelegramVerificationToken.test.ts +253 -0
  149. package/Tests/Server/Utils/Telemetry/PinServiceName.test.ts +666 -0
  150. package/Tests/Server/Utils/Telemetry/TelemetryFanInWriterCapacity.test.ts +458 -0
  151. package/Tests/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.test.ts +424 -0
  152. package/Tests/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.test.ts +528 -0
  153. package/Tests/Server/Utils/TelemetryExporterEnvironment.test.ts +56 -0
  154. package/Tests/Server/Utils/VM/VMRunnerHostBridgeLatency.test.ts +74 -0
  155. package/Tests/Server/Utils/VM/VMRunnerPrivateNetworkWiring.test.ts +100 -7
  156. package/Tests/Server/Utils/VM/VMRunnerSsrf.test.ts +1176 -6
  157. package/Tests/Types/CustomField/CustomFieldMappingCatalog.test.ts +220 -0
  158. package/Tests/Types/CustomField/CustomFieldValueMapping.test.ts +348 -0
  159. package/Tests/Types/JSONFunctions.test.ts +260 -0
  160. package/Tests/Types/Monitor/CephAlertTemplates.test.ts +422 -53
  161. package/Tests/Types/Monitor/DockerAlertTemplates.test.ts +495 -15
  162. package/Tests/Types/Monitor/DockerSwarmAlertTemplates.test.ts +191 -45
  163. package/Tests/Types/Monitor/HostAlertTemplates.test.ts +370 -42
  164. package/Tests/Types/Monitor/IotAlertTemplates.test.ts +375 -20
  165. package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +636 -42
  166. package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +189 -0
  167. package/Tests/Types/Monitor/KubernetesTemplateGroupByKeys.test.ts +95 -14
  168. package/Tests/Types/Monitor/PodmanAlertTemplates.test.ts +190 -21
  169. package/Tests/Types/Monitor/ProxmoxAlertTemplates.test.ts +352 -22
  170. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationAlertDebuggability.test.ts +363 -0
  171. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +93 -18
  172. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +259 -0
  173. package/Tests/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.test.ts +476 -0
  174. package/Tests/Types/Monitor/RumAlertTemplates.test.ts +136 -0
  175. package/Tests/Types/Monitor/SeriesContext/SeriesDebugHints.test.ts +661 -0
  176. package/Tests/Types/Monitor/SeriesContext/SeriesLabelDisplay.test.ts +507 -0
  177. package/Tests/Types/Monitor/ServiceAlertTemplates.test.ts +270 -0
  178. package/Tests/Types/Monitor/TemplateGroupByKeys.test.ts +38 -10
  179. package/Tests/Types/Monitor/Utils/RecommendationCriteriaAssertions.ts +102 -0
  180. package/Tests/Types/NotificationSetting/RoutineEmailEvents.test.ts +47 -0
  181. package/Tests/Types/Rum/SessionReplayApiContracts.test.ts +608 -0
  182. package/Tests/Types/Rum/SessionReplayCustomEvents.test.ts +434 -0
  183. package/Tests/Types/WebsiteRequest.test.ts +285 -3
  184. package/Tests/UI/Components/Charts/ChartBucketIdentity.test.ts +16 -3
  185. package/Tests/UI/Components/Charts/ChartTrailingBucketGap.test.ts +691 -0
  186. package/Tests/UI/Components/ComponentsModal.test.tsx +12 -4
  187. package/Tests/UI/Components/ComponentsModalUsability.test.tsx +518 -0
  188. package/Tests/UI/Components/CustomFields/CustomFieldsDetailMapping.test.tsx +324 -0
  189. package/Tests/UI/Components/CustomFields/MapFromCustomFieldInput.test.tsx +176 -0
  190. package/Tests/UI/Components/Graphs/DayUptimeGraph.test.tsx +484 -0
  191. package/Tests/UI/Components/HeaderRightRail.test.tsx +157 -0
  192. package/Tests/UI/Components/IconDropdownItem.test.tsx +102 -0
  193. package/Tests/UI/Components/JSONTablePrototypePollution.test.tsx +117 -0
  194. package/Tests/UI/Components/KeyboardShortcutsModal.test.tsx +214 -0
  195. package/Tests/UI/Components/ModelTable/ModelTableWrapContent.test.tsx +561 -0
  196. package/Tests/UI/Components/MonitorGraphs/UptimeBarDayModal.test.tsx +302 -0
  197. package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +28 -12
  198. package/Tests/UI/Components/ShortcutDialogGuard.test.tsx +74 -0
  199. package/Tests/UI/Components/StatusPage/ResourceGroupSectionAutoExpand.test.tsx +248 -0
  200. package/Tests/UI/Components/TableCellWrapping.test.tsx +625 -0
  201. package/Tests/UI/Components/TableLoadingStates.test.tsx +205 -0
  202. package/Tests/UI/Components/Workflow/NodePlacement.test.ts +148 -0
  203. package/Tests/UI/Components/Workflow/Workflow.test.tsx +981 -0
  204. package/Tests/UI/ConfigBrowserTelemetry.test.ts +70 -0
  205. package/Tests/UI/Rum/ChunkLoader.test.ts +1036 -2
  206. package/Tests/UI/Rum/FidelityNotices.test.ts +187 -0
  207. package/Tests/UI/Rum/InactivityMap.test.ts +341 -0
  208. package/Tests/UI/Rum/PrivacySummaryCard.test.tsx +259 -0
  209. package/Tests/UI/Rum/RecordingHealthCard.test.tsx +855 -0
  210. package/Tests/UI/Rum/RecordingHealthStrip.test.tsx +594 -0
  211. package/Tests/UI/Rum/ReplayCard.test.tsx +451 -0
  212. package/Tests/UI/Rum/ReplayCorrelationPanel.test.tsx +536 -0
  213. package/Tests/UI/Rum/ReplayEngine.test.ts +2503 -0
  214. package/Tests/UI/Rum/ReplayEngineTypes.test.ts +171 -0
  215. package/Tests/UI/Rum/ReplayHeader.test.tsx +711 -0
  216. package/Tests/UI/Rum/ReplayLink.test.tsx +119 -0
  217. package/Tests/UI/Rum/ReplayPinControl.test.tsx +408 -0
  218. package/Tests/UI/Rum/ReplayPlaybackIntent.test.ts +152 -0
  219. package/Tests/UI/Rum/ReplayRail.test.tsx +1296 -0
  220. package/Tests/UI/Rum/ReplayRailDetail.test.tsx +900 -0
  221. package/Tests/UI/Rum/ReplayScrubber.test.tsx +763 -147
  222. package/Tests/UI/Rum/ReplaySignalTypes.test.ts +189 -0
  223. package/Tests/UI/Rum/ReplaySignals.test.ts +1579 -0
  224. package/Tests/UI/Rum/ReplayStage.test.tsx +396 -473
  225. package/Tests/UI/Rum/ReplayStageOverlays.test.tsx +918 -0
  226. package/Tests/UI/Rum/ReplayTimeline.test.tsx +696 -0
  227. package/Tests/UI/Rum/SessionReplayEmptyState.test.tsx +499 -0
  228. package/Tests/UI/Rum/SessionReplaySearchBar.test.tsx +346 -0
  229. package/Tests/UI/Rum/SessionReplaySetupGuide.test.tsx +545 -0
  230. package/Tests/UI/Rum/SessionReplayTable.test.tsx +991 -0
  231. package/Tests/UI/Rum/TargetedCapturePanel.test.tsx +254 -0
  232. package/Tests/UI/Telemetry/BrowserExporterIsolation.test.ts +71 -0
  233. package/Tests/UI/Utils/GlobalKeyboardShortcut.test.ts +344 -0
  234. package/Tests/Utils/API.test.ts +308 -0
  235. package/Tests/Utils/HTTPResponseBodyReader.test.ts +323 -0
  236. package/Tests/Utils/NetworkDiscovery/DiscoveryScanStatus.test.ts +117 -0
  237. package/Tests/Utils/Rum/ChunkMath.test.ts +83 -0
  238. package/Tests/Utils/Rum/SessionReplayHealthDiagnosis.test.ts +993 -0
  239. package/Tests/Utils/Rum/SessionReplayStringMap.test.ts +245 -0
  240. package/Tests/Utils/StatusPage/ResourceSearch.test.ts +631 -0
  241. package/Tests/Utils/Telemetry/OriginAllowList.test.ts +633 -0
  242. package/Tests/Utils/Uptime/DayUptimeGraphUtil.test.ts +461 -0
  243. package/Tests/Utils/ValueFormatter.test.ts +148 -0
  244. package/Types/CustomField/CustomFieldMappingCatalog.ts +161 -0
  245. package/Types/CustomField/CustomFieldMappingSourceResource.ts +19 -0
  246. package/Types/CustomField/CustomFieldValueMapping.ts +288 -0
  247. package/Types/Icon/IconProp.ts +1 -0
  248. package/Types/JSONFunctions.ts +189 -43
  249. package/Types/Monitor/CephAlertTemplates.ts +157 -195
  250. package/Types/Monitor/DockerAlertTemplates.ts +338 -128
  251. package/Types/Monitor/DockerSwarmAlertTemplates.ts +95 -112
  252. package/Types/Monitor/HostAlertTemplates.ts +302 -130
  253. package/Types/Monitor/IotAlertTemplates.ts +112 -104
  254. package/Types/Monitor/KubernetesAlertTemplates.ts +415 -224
  255. package/Types/Monitor/KubernetesMetricCatalog.ts +23 -19
  256. package/Types/Monitor/PodmanAlertTemplates.ts +116 -163
  257. package/Types/Monitor/ProxmoxAlertTemplates.ts +217 -99
  258. package/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts +98 -6
  259. package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +44 -7
  260. package/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.ts +383 -0
  261. package/Types/Monitor/RumAlertTemplates.ts +46 -7
  262. package/Types/Monitor/SeriesContext/SeriesDebugHints.ts +596 -0
  263. package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +554 -0
  264. package/Types/Monitor/ServiceAlertTemplates.ts +98 -11
  265. package/Types/Monitor/UptimeHistoryLabels.ts +56 -0
  266. package/Types/NotificationSetting/RoutineEmailEvents.ts +30 -0
  267. package/Types/Rum/SessionReplay.ts +209 -0
  268. package/Types/Rum/SessionReplayApi.ts +722 -0
  269. package/Types/Rum/SessionReplayCaptureTrigger.ts +21 -12
  270. package/Types/Rum/SessionReplayConsentMode.ts +11 -7
  271. package/Types/Rum/SessionReplayCustomEvents.ts +549 -0
  272. package/Types/Rum/SessionReplayHealth.ts +238 -0
  273. package/Types/Telemetry/TelemetryIngestSurface.ts +95 -0
  274. package/Types/Telemetry/TelemetryIngestionKeyPolicy.ts +75 -0
  275. package/Types/Telemetry/TelemetryIngestionKeyType.ts +29 -0
  276. package/Types/WebsiteRequest.ts +85 -3
  277. package/UI/Components/Charts/Area/AreaChart.tsx +13 -2
  278. package/UI/Components/Charts/Bar/BarChart.tsx +6 -2
  279. package/UI/Components/Charts/Line/LineChart.tsx +13 -2
  280. package/UI/Components/Charts/Types/XAxis/XAxis.ts +29 -0
  281. package/UI/Components/Charts/Utils/DataPoint.ts +22 -3
  282. package/UI/Components/Charts/Utils/TimeAnnotation.ts +76 -9
  283. package/UI/Components/Charts/Utils/XAxis.ts +217 -0
  284. package/UI/Components/CustomFields/CustomFieldsDetail.tsx +143 -25
  285. package/UI/Components/CustomFields/MapFromCustomFieldInput.tsx +216 -0
  286. package/UI/Components/Graphs/DayUptimeGraph.tsx +173 -8
  287. package/UI/Components/Graphs/UptimeBarTooltip.tsx +22 -278
  288. package/UI/Components/Graphs/UptimeDaySummary.tsx +327 -0
  289. package/UI/Components/Header/Header.tsx +25 -9
  290. package/UI/Components/Header/IconDropdown/IconDropdownItem.tsx +10 -1
  291. package/UI/Components/Header/IconDropdown/IconDropdownMenu.tsx +6 -1
  292. package/UI/Components/Header/ProjectPicker/ProjectPicker.tsx +6 -1
  293. package/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.tsx +6 -1
  294. package/UI/Components/Icon/Icon.tsx +11 -0
  295. package/UI/Components/JSONTable/JSONTable.tsx +2 -2
  296. package/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.tsx +125 -0
  297. package/UI/Components/KeyboardShortcut/Screenshots/README.md +19 -0
  298. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-command-palette.png +0 -0
  299. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-dialog-dark.png +0 -0
  300. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-dialog.png +0 -0
  301. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-help-menu.png +0 -0
  302. package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-narrow.png +0 -0
  303. package/UI/Components/ModelTable/Column.ts +15 -0
  304. package/UI/Components/Monitor/SeriesDebugCommandsViewer.tsx +64 -0
  305. package/UI/Components/Monitor/SeriesLabelsViewer.tsx +93 -0
  306. package/UI/Components/MonitorGraphs/Uptime.tsx +14 -2
  307. package/UI/Components/MonitorGraphs/UptimeBarDayModal.tsx +63 -10
  308. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +44 -0
  309. package/UI/Components/StatusPage/ResourceGroupSection.tsx +40 -0
  310. package/UI/Components/Table/CellClassName.ts +81 -0
  311. package/UI/Components/Table/TableRow.tsx +20 -14
  312. package/UI/Components/Table/TableSkeletonRows.tsx +9 -9
  313. package/UI/Components/Table/Types/Column.ts +36 -0
  314. package/UI/Components/Tooltip/Tooltip.tsx +11 -1
  315. package/UI/Components/Workflow/ComponentsModal.tsx +60 -39
  316. package/UI/Components/Workflow/NodePlacement.ts +57 -0
  317. package/UI/Components/Workflow/Workflow.tsx +47 -18
  318. package/UI/Config.ts +15 -33
  319. package/UI/Utils/GlobalKeyboardShortcut.ts +208 -0
  320. package/UI/Utils/Telemetry/BrowserTelemetryConfig.ts +28 -0
  321. package/UI/Utils/Telemetry/Telemetry.ts +10 -8
  322. package/Utils/API.ts +129 -3
  323. package/Utils/HTTPResponseBodyReader.ts +221 -0
  324. package/Utils/NetworkDiscovery/DiscoveryScanStatus.ts +77 -0
  325. package/Utils/Rum/ChunkMath.ts +106 -0
  326. package/Utils/Rum/SessionReplayHealth.ts +732 -0
  327. package/Utils/Rum/SessionReplayStringMap.ts +226 -0
  328. package/Utils/Schema/ModelSchema.ts +1 -0
  329. package/Utils/StatusPage/ResourceSearch.ts +290 -0
  330. package/Utils/Telemetry/OriginAllowList.ts +355 -0
  331. package/Utils/Uptime/DayUptimeGraphUtil.ts +205 -0
  332. package/Utils/ValueFormatter.ts +35 -1
  333. package/build/dist/Models/AnalyticsModels/RumSession.js +102 -19
  334. package/build/dist/Models/AnalyticsModels/RumSession.js.map +1 -1
  335. package/build/dist/Models/AnalyticsModels/RumSessionChunk.js +11 -9
  336. package/build/dist/Models/AnalyticsModels/RumSessionChunk.js.map +1 -1
  337. package/build/dist/Models/DatabaseModels/AlertCustomField.js +79 -3
  338. package/build/dist/Models/DatabaseModels/AlertCustomField.js.map +1 -1
  339. package/build/dist/Models/DatabaseModels/ApiKeyPermission.js +3 -27
  340. package/build/dist/Models/DatabaseModels/ApiKeyPermission.js.map +1 -1
  341. package/build/dist/Models/DatabaseModels/IncidentCustomField.js +79 -3
  342. package/build/dist/Models/DatabaseModels/IncidentCustomField.js.map +1 -1
  343. package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js +79 -3
  344. package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js.map +1 -1
  345. package/build/dist/Models/DatabaseModels/MonitorCustomField.js +79 -3
  346. package/build/dist/Models/DatabaseModels/MonitorCustomField.js.map +1 -1
  347. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js +79 -3
  348. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js.map +1 -1
  349. package/build/dist/Models/DatabaseModels/RumApplication.js +6 -6
  350. package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
  351. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js +79 -3
  352. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js.map +1 -1
  353. package/build/dist/Models/DatabaseModels/StatusPageCustomField.js +79 -3
  354. package/build/dist/Models/DatabaseModels/StatusPageCustomField.js.map +1 -1
  355. package/build/dist/Models/DatabaseModels/TeamCustomField.js +79 -3
  356. package/build/dist/Models/DatabaseModels/TeamCustomField.js.map +1 -1
  357. package/build/dist/Models/DatabaseModels/TeamMember.js +0 -9
  358. package/build/dist/Models/DatabaseModels/TeamMember.js.map +1 -1
  359. package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js +79 -3
  360. package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js.map +1 -1
  361. package/build/dist/Models/DatabaseModels/TeamPermission.js +3 -24
  362. package/build/dist/Models/DatabaseModels/TeamPermission.js.map +1 -1
  363. package/build/dist/Models/DatabaseModels/TelemetryIngestionKey.js +267 -0
  364. package/build/dist/Models/DatabaseModels/TelemetryIngestionKey.js.map +1 -1
  365. package/build/dist/Models/DatabaseModels/UserTelegram.js +0 -4
  366. package/build/dist/Models/DatabaseModels/UserTelegram.js.map +1 -1
  367. package/build/dist/Server/API/TelemetryAPI.js +769 -109
  368. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  369. package/build/dist/Server/API/UserNotificationSettingAPI.js +35 -0
  370. package/build/dist/Server/API/UserNotificationSettingAPI.js.map +1 -0
  371. package/build/dist/Server/API/UserTelegramAPI.js +28 -6
  372. package/build/dist/Server/API/UserTelegramAPI.js.map +1 -1
  373. package/build/dist/Server/EnvironmentConfig.js +29 -2
  374. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  375. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.js +60 -0
  376. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.js.map +1 -0
  377. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.js +53 -0
  378. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.js.map +1 -0
  379. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.js +82 -0
  380. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.js.map +1 -0
  381. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.js +46 -0
  382. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.js.map +1 -0
  383. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  384. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  385. package/build/dist/Server/Infrastructure/QueueWorker.js +19 -7
  386. package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
  387. package/build/dist/Server/Infrastructure/Semaphore.js +1 -0
  388. package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
  389. package/build/dist/Server/Middleware/TelemetryIngest.js +315 -8
  390. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  391. package/build/dist/Server/Services/AccessTokenService.js +1 -0
  392. package/build/dist/Server/Services/AccessTokenService.js.map +1 -1
  393. package/build/dist/Server/Services/AlertCustomFieldService.js +93 -0
  394. package/build/dist/Server/Services/AlertCustomFieldService.js.map +1 -1
  395. package/build/dist/Server/Services/AlertService.js +34 -0
  396. package/build/dist/Server/Services/AlertService.js.map +1 -1
  397. package/build/dist/Server/Services/ApiKeyPermissionService.js +331 -28
  398. package/build/dist/Server/Services/ApiKeyPermissionService.js.map +1 -1
  399. package/build/dist/Server/Services/CustomFieldMappingService.js +614 -0
  400. package/build/dist/Server/Services/CustomFieldMappingService.js.map +1 -0
  401. package/build/dist/Server/Services/GlobalConfigService.js +133 -0
  402. package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
  403. package/build/dist/Server/Services/IncidentCustomFieldService.js +93 -0
  404. package/build/dist/Server/Services/IncidentCustomFieldService.js.map +1 -1
  405. package/build/dist/Server/Services/IncidentService.js +32 -0
  406. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  407. package/build/dist/Server/Services/MetricService.js +163 -0
  408. package/build/dist/Server/Services/MetricService.js.map +1 -1
  409. package/build/dist/Server/Services/MonitorService.js +29 -0
  410. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  411. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +79 -27
  412. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
  413. package/build/dist/Server/Services/ProjectService.js +22 -0
  414. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  415. package/build/dist/Server/Services/RoutineEmailSettingsService.js +69 -0
  416. package/build/dist/Server/Services/RoutineEmailSettingsService.js.map +1 -0
  417. package/build/dist/Server/Services/RumSessionReplayViewService.js +86 -24
  418. package/build/dist/Server/Services/RumSessionReplayViewService.js.map +1 -1
  419. package/build/dist/Server/Services/ScheduledMaintenanceCustomFieldService.js +93 -0
  420. package/build/dist/Server/Services/ScheduledMaintenanceCustomFieldService.js.map +1 -1
  421. package/build/dist/Server/Services/ScheduledMaintenanceService.js +29 -0
  422. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  423. package/build/dist/Server/Services/TeamMemberService.js +62 -2
  424. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  425. package/build/dist/Server/Services/TeamPermissionService.js +166 -3
  426. package/build/dist/Server/Services/TeamPermissionService.js.map +1 -1
  427. package/build/dist/Server/Services/TelemetryIngestionKeyService.js +562 -18
  428. package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
  429. package/build/dist/Server/Services/UserNotificationSettingService.js +26 -6
  430. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  431. package/build/dist/Server/Services/UserTelegramService.js +257 -4
  432. package/build/dist/Server/Services/UserTelegramService.js.map +1 -1
  433. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  434. package/build/dist/Server/Utils/APIKey/AccessPermission.js +2 -2
  435. package/build/dist/Server/Utils/APIKey/AccessPermission.js.map +1 -1
  436. package/build/dist/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.js +27 -0
  437. package/build/dist/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.js.map +1 -0
  438. package/build/dist/Server/Utils/CustomField/CustomFieldMappingRegistry.js +226 -0
  439. package/build/dist/Server/Utils/CustomField/CustomFieldMappingRegistry.js.map +1 -0
  440. package/build/dist/Server/Utils/CustomField/CustomFieldMappingValidator.js +189 -0
  441. package/build/dist/Server/Utils/CustomField/CustomFieldMappingValidator.js.map +1 -0
  442. package/build/dist/Server/Utils/DataSource/EgressGuard.js +121 -7
  443. package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
  444. package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js +38 -5
  445. package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js.map +1 -1
  446. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +44 -2
  447. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -1
  448. package/build/dist/Server/Utils/FrontendEnvironment.js +33 -0
  449. package/build/dist/Server/Utils/FrontendEnvironment.js.map +1 -0
  450. package/build/dist/Server/Utils/LogRedaction.js +20 -0
  451. package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
  452. package/build/dist/Server/Utils/Logger.js +10 -0
  453. package/build/dist/Server/Utils/Logger.js.map +1 -1
  454. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +287 -68
  455. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
  456. package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +20 -4
  457. package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js.map +1 -1
  458. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +29 -6
  459. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  460. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +88 -13
  461. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  462. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +22 -6
  463. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  464. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +22 -0
  465. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  466. package/build/dist/Server/Utils/Monitor/SeriesContextEnricher.js +237 -0
  467. package/build/dist/Server/Utils/Monitor/SeriesContextEnricher.js.map +1 -0
  468. package/build/dist/Server/Utils/SSRFProtection.js +136 -9
  469. package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
  470. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js +174 -89
  471. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js.map +1 -1
  472. package/build/dist/Server/Utils/SessionReplay/SessionReplayHealthCounters.js +223 -0
  473. package/build/dist/Server/Utils/SessionReplay/SessionReplayHealthCounters.js.map +1 -0
  474. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js +945 -164
  475. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js.map +1 -1
  476. package/build/dist/Server/Utils/StartServer.js +3 -14
  477. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  478. package/build/dist/Server/Utils/TelegramVerificationToken.js +129 -0
  479. package/build/dist/Server/Utils/TelegramVerificationToken.js.map +1 -0
  480. package/build/dist/Server/Utils/Telemetry/PinServiceName.js +163 -0
  481. package/build/dist/Server/Utils/Telemetry/PinServiceName.js.map +1 -0
  482. package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js +28 -15
  483. package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js.map +1 -1
  484. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js +64 -0
  485. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js.map +1 -0
  486. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.js +171 -0
  487. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.js.map +1 -0
  488. package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
  489. package/build/dist/Server/Utils/VM/VMRunner.js +780 -69
  490. package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
  491. package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js +60 -0
  492. package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js.map +1 -0
  493. package/build/dist/Types/CustomField/CustomFieldMappingSourceResource.js +20 -0
  494. package/build/dist/Types/CustomField/CustomFieldMappingSourceResource.js.map +1 -0
  495. package/build/dist/Types/CustomField/CustomFieldValueMapping.js +141 -0
  496. package/build/dist/Types/CustomField/CustomFieldValueMapping.js.map +1 -0
  497. package/build/dist/Types/Icon/IconProp.js +1 -0
  498. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  499. package/build/dist/Types/JSONFunctions.js +118 -37
  500. package/build/dist/Types/JSONFunctions.js.map +1 -1
  501. package/build/dist/Types/Monitor/CephAlertTemplates.js +130 -171
  502. package/build/dist/Types/Monitor/CephAlertTemplates.js.map +1 -1
  503. package/build/dist/Types/Monitor/DockerAlertTemplates.js +286 -121
  504. package/build/dist/Types/Monitor/DockerAlertTemplates.js.map +1 -1
  505. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js +84 -105
  506. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js.map +1 -1
  507. package/build/dist/Types/Monitor/HostAlertTemplates.js +250 -122
  508. package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -1
  509. package/build/dist/Types/Monitor/IotAlertTemplates.js +81 -81
  510. package/build/dist/Types/Monitor/IotAlertTemplates.js.map +1 -1
  511. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +375 -215
  512. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
  513. package/build/dist/Types/Monitor/KubernetesMetricCatalog.js +19 -19
  514. package/build/dist/Types/Monitor/KubernetesMetricCatalog.js.map +1 -1
  515. package/build/dist/Types/Monitor/PodmanAlertTemplates.js +104 -153
  516. package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -1
  517. package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js +156 -91
  518. package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js.map +1 -1
  519. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js +67 -6
  520. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js.map +1 -1
  521. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +38 -7
  522. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
  523. package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js +261 -0
  524. package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js.map +1 -0
  525. package/build/dist/Types/Monitor/RumAlertTemplates.js +46 -7
  526. package/build/dist/Types/Monitor/RumAlertTemplates.js.map +1 -1
  527. package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js +422 -0
  528. package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js.map +1 -0
  529. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +441 -0
  530. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -0
  531. package/build/dist/Types/Monitor/ServiceAlertTemplates.js +79 -15
  532. package/build/dist/Types/Monitor/ServiceAlertTemplates.js.map +1 -1
  533. package/build/dist/Types/Monitor/UptimeHistoryLabels.js +17 -0
  534. package/build/dist/Types/Monitor/UptimeHistoryLabels.js.map +1 -0
  535. package/build/dist/Types/NotificationSetting/RoutineEmailEvents.js +29 -0
  536. package/build/dist/Types/NotificationSetting/RoutineEmailEvents.js.map +1 -0
  537. package/build/dist/Types/Rum/SessionReplay.js +117 -0
  538. package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
  539. package/build/dist/Types/Rum/SessionReplayApi.js +181 -0
  540. package/build/dist/Types/Rum/SessionReplayApi.js.map +1 -0
  541. package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js +21 -12
  542. package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js.map +1 -1
  543. package/build/dist/Types/Rum/SessionReplayConsentMode.js +11 -7
  544. package/build/dist/Types/Rum/SessionReplayConsentMode.js.map +1 -1
  545. package/build/dist/Types/Rum/SessionReplayCustomEvents.js +172 -0
  546. package/build/dist/Types/Rum/SessionReplayCustomEvents.js.map +1 -0
  547. package/build/dist/Types/Rum/SessionReplayHealth.js +37 -0
  548. package/build/dist/Types/Rum/SessionReplayHealth.js.map +1 -0
  549. package/build/dist/Types/Telemetry/TelemetryIngestSurface.js +85 -0
  550. package/build/dist/Types/Telemetry/TelemetryIngestSurface.js.map +1 -0
  551. package/build/dist/Types/Telemetry/TelemetryIngestionKeyPolicy.js +15 -0
  552. package/build/dist/Types/Telemetry/TelemetryIngestionKeyPolicy.js.map +1 -0
  553. package/build/dist/Types/Telemetry/TelemetryIngestionKeyType.js +30 -0
  554. package/build/dist/Types/Telemetry/TelemetryIngestionKeyType.js.map +1 -0
  555. package/build/dist/Types/WebsiteRequest.js +55 -3
  556. package/build/dist/Types/WebsiteRequest.js.map +1 -1
  557. package/build/dist/UI/Components/Charts/Area/AreaChart.js +13 -2
  558. package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
  559. package/build/dist/UI/Components/Charts/Bar/BarChart.js +6 -2
  560. package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
  561. package/build/dist/UI/Components/Charts/Line/LineChart.js +13 -2
  562. package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
  563. package/build/dist/UI/Components/Charts/Types/XAxis/XAxis.js.map +1 -1
  564. package/build/dist/UI/Components/Charts/Utils/DataPoint.js +15 -3
  565. package/build/dist/UI/Components/Charts/Utils/DataPoint.js.map +1 -1
  566. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js +40 -9
  567. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js.map +1 -1
  568. package/build/dist/UI/Components/Charts/Utils/XAxis.js +186 -0
  569. package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
  570. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +80 -6
  571. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
  572. package/build/dist/UI/Components/CustomFields/MapFromCustomFieldInput.js +118 -0
  573. package/build/dist/UI/Components/CustomFields/MapFromCustomFieldInput.js.map +1 -0
  574. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js +112 -7
  575. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js.map +1 -1
  576. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js +5 -162
  577. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js.map +1 -1
  578. package/build/dist/UI/Components/Graphs/UptimeDaySummary.js +181 -0
  579. package/build/dist/UI/Components/Graphs/UptimeDaySummary.js.map +1 -0
  580. package/build/dist/UI/Components/Header/Header.js +2 -3
  581. package/build/dist/UI/Components/Header/Header.js.map +1 -1
  582. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js +2 -1
  583. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js.map +1 -1
  584. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js +7 -1
  585. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js.map +1 -1
  586. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js +7 -1
  587. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js.map +1 -1
  588. package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.js +7 -1
  589. package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.js.map +1 -1
  590. package/build/dist/UI/Components/Icon/Icon.js +5 -0
  591. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  592. package/build/dist/UI/Components/JSONTable/JSONTable.js +2 -2
  593. package/build/dist/UI/Components/JSONTable/JSONTable.js.map +1 -1
  594. package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.js +35 -0
  595. package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.js.map +1 -0
  596. package/build/dist/UI/Components/Monitor/SeriesDebugCommandsViewer.js +34 -0
  597. package/build/dist/UI/Components/Monitor/SeriesDebugCommandsViewer.js.map +1 -0
  598. package/build/dist/UI/Components/Monitor/SeriesLabelsViewer.js +49 -0
  599. package/build/dist/UI/Components/Monitor/SeriesLabelsViewer.js.map +1 -0
  600. package/build/dist/UI/Components/MonitorGraphs/Uptime.js +1 -1
  601. package/build/dist/UI/Components/MonitorGraphs/Uptime.js.map +1 -1
  602. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js +32 -6
  603. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js.map +1 -1
  604. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +38 -0
  605. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  606. package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js +22 -1
  607. package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js.map +1 -1
  608. package/build/dist/UI/Components/Table/CellClassName.js +55 -0
  609. package/build/dist/UI/Components/Table/CellClassName.js.map +1 -0
  610. package/build/dist/UI/Components/Table/TableRow.js +16 -13
  611. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  612. package/build/dist/UI/Components/Table/TableSkeletonRows.js +9 -8
  613. package/build/dist/UI/Components/Table/TableSkeletonRows.js.map +1 -1
  614. package/build/dist/UI/Components/Tooltip/Tooltip.js +25 -1
  615. package/build/dist/UI/Components/Tooltip/Tooltip.js.map +1 -1
  616. package/build/dist/UI/Components/Workflow/ComponentsModal.js +47 -30
  617. package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
  618. package/build/dist/UI/Components/Workflow/NodePlacement.js +37 -0
  619. package/build/dist/UI/Components/Workflow/NodePlacement.js.map +1 -0
  620. package/build/dist/UI/Components/Workflow/Workflow.js +35 -18
  621. package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
  622. package/build/dist/UI/Config.js +10 -20
  623. package/build/dist/UI/Config.js.map +1 -1
  624. package/build/dist/UI/Utils/GlobalKeyboardShortcut.js +138 -0
  625. package/build/dist/UI/Utils/GlobalKeyboardShortcut.js.map +1 -0
  626. package/build/dist/UI/Utils/Telemetry/BrowserTelemetryConfig.js +14 -0
  627. package/build/dist/UI/Utils/Telemetry/BrowserTelemetryConfig.js.map +1 -0
  628. package/build/dist/UI/Utils/Telemetry/Telemetry.js +7 -5
  629. package/build/dist/UI/Utils/Telemetry/Telemetry.js.map +1 -1
  630. package/build/dist/Utils/API.js +67 -5
  631. package/build/dist/Utils/API.js.map +1 -1
  632. package/build/dist/Utils/HTTPResponseBodyReader.js +157 -0
  633. package/build/dist/Utils/HTTPResponseBodyReader.js.map +1 -0
  634. package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js +69 -0
  635. package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js.map +1 -0
  636. package/build/dist/Utils/Rum/ChunkMath.js +76 -0
  637. package/build/dist/Utils/Rum/ChunkMath.js.map +1 -1
  638. package/build/dist/Utils/Rum/SessionReplayHealth.js +534 -0
  639. package/build/dist/Utils/Rum/SessionReplayHealth.js.map +1 -0
  640. package/build/dist/Utils/Rum/SessionReplayStringMap.js +165 -0
  641. package/build/dist/Utils/Rum/SessionReplayStringMap.js.map +1 -0
  642. package/build/dist/Utils/Schema/ModelSchema.js +1 -0
  643. package/build/dist/Utils/Schema/ModelSchema.js.map +1 -1
  644. package/build/dist/Utils/StatusPage/ResourceSearch.js +200 -0
  645. package/build/dist/Utils/StatusPage/ResourceSearch.js.map +1 -0
  646. package/build/dist/Utils/Telemetry/OriginAllowList.js +299 -0
  647. package/build/dist/Utils/Telemetry/OriginAllowList.js.map +1 -0
  648. package/build/dist/Utils/Uptime/DayUptimeGraphUtil.js +147 -0
  649. package/build/dist/Utils/Uptime/DayUptimeGraphUtil.js.map +1 -0
  650. package/build/dist/Utils/ValueFormatter.js +32 -1
  651. package/build/dist/Utils/ValueFormatter.js.map +1 -1
  652. package/package.json +1 -1
@@ -105,16 +105,19 @@ export interface ServiceAlertTemplate {
105
105
  }
106
106
 
107
107
  /*
108
- * `EvaluateOverTimeType` names the window collapse, and its two members used
109
- * here do NOT mean what their names suggest — worth stating once, here, rather
110
- * than being rediscovered per template:
108
+ * `EvaluateOverTimeType` names the window collapse. The two members these
109
+ * templates use are worth stating once, here, rather than being rediscovered
110
+ * per template:
111
111
  *
112
112
  * AnyValue -> ANY bucket in the rolling window breaching is a breach.
113
113
  * Right for spikes.
114
- * AllValues -> EVERY bucket must breach. Right for sustained pressure, and
115
- * what the comparators actually do for every member that is not
116
- * `AnyValue` (they fall through to `.every()`; there is no
117
- * averaging on this code path despite `Average` existing).
114
+ * AllValues -> EVERY bucket must breach. Right for sustained pressure.
115
+ *
116
+ * The reducing members (`Average`, `Sum`, `MaximumValue`, `MunimumValue`) do
117
+ * now collapse the window to one sample before the comparison —
118
+ * `CompareCriteria.reduceWindow` — so they mean what they say. `AllValues` is
119
+ * still the right default here: a reduced window hides the shape, and a metric
120
+ * that spends half the window fine is not under sustained pressure.
118
121
  *
119
122
  * A window with no samples at all never reaches the comparator — the
120
123
  * evaluator's no-data guard returns "not breaching" under the default
@@ -129,6 +132,34 @@ export interface ServiceAlertTemplate {
129
132
  */
130
133
  const SUSTAINED: EvaluateOverTimeType = EvaluateOverTimeType.AllValues;
131
134
 
135
+ /*
136
+ * The resource attribute that identifies ONE process of a service.
137
+ *
138
+ * Every metric template here except the two request-latency percentiles
139
+ * thresholds a property of a single process — a heap, an event loop, a
140
+ * goroutine count, a thread pool. Without a group-by the ClickHouse
141
+ * aggregation collapses every replica of the service into one number, so an
142
+ * `Avg` template on three replicas at 95/20/20 reads 45 and stays green while
143
+ * one of them OOM-kills, and a `Max` template fires on the worst replica with
144
+ * no way to say which. Grouping fixes both at once: the worker emits one
145
+ * series per instance and the alert carries that instance in `seriesLabels`,
146
+ * which `SeriesLabelDisplay` renders into the title and the description block.
147
+ *
148
+ * `service.instance.id` is OPTIONAL in the resource semantic conventions, and
149
+ * this degrades safely when it is absent: the query returns one series whose
150
+ * label value is the empty string (ClickHouse `attributes[k]` on a missing key
151
+ * yields ""), `MetricSeriesFingerprint.extractSeriesLabels` keeps the key so
152
+ * the fingerprint stays stable across evaluations, and
153
+ * `SeriesLabelDisplay.getDisplayLabels` drops empty values rather than
154
+ * rendering "Instance: ". A service that does not report it therefore gets
155
+ * exactly today's single-series behaviour, not silence.
156
+ *
157
+ * The `resource.` prefix is the one OtelMetricsIngestService stamps onto OTel
158
+ * resource attributes (`prefixKeysWithString: "resource"`), the same spelling
159
+ * KubernetesAlertTemplates uses for `resource.k8s.pod.name`.
160
+ */
161
+ const PER_INSTANCE_GROUP_BY: Array<string> = ["resource.service.instance.id"];
162
+
132
163
  interface CountCriteriaArgs {
133
164
  args: ServiceAlertTemplateArgs;
134
165
  checkOn: CheckOn.SpanCount | CheckOn.ExceptionCount;
@@ -201,7 +232,17 @@ function buildCriteriaPair(data: {
201
232
  checkOn: data.checkOn,
202
233
  filterType: data.unhealthyFilterType,
203
234
  value: data.threshold,
204
- metricMonitorOptions: metricMonitorOptions,
235
+ /*
236
+ * A copy per filter, not the shared object. `MetricMonitorCriteria`
237
+ * writes its `AnyValue` default straight back through this reference
238
+ * when `metricAggregationType` is unset, and the criteria form spreads
239
+ * and re-assigns it on edit — either of which, on a shared object,
240
+ * changes the healthy criteria as a side effect of touching the
241
+ * unhealthy one.
242
+ */
243
+ metricMonitorOptions: metricMonitorOptions
244
+ ? { ...metricMonitorOptions }
245
+ : undefined,
205
246
  },
206
247
  ],
207
248
  incidents: [
@@ -242,7 +283,10 @@ function buildCriteriaPair(data: {
242
283
  checkOn: data.checkOn,
243
284
  filterType: data.healthyFilterType,
244
285
  value: data.threshold,
245
- metricMonitorOptions: metricMonitorOptions,
286
+ // A copy per filter — see the unhealthy filter above.
287
+ metricMonitorOptions: metricMonitorOptions
288
+ ? { ...metricMonitorOptions }
289
+ : undefined,
246
290
  },
247
291
  ],
248
292
  incidents: [],
@@ -316,6 +360,7 @@ function buildQueryConfig(data: {
316
360
  aggregationType: MetricsAggregationType;
317
361
  attributes?: Record<string, string> | undefined;
318
362
  legendUnit?: string | undefined;
363
+ groupByAttributeKeys?: Array<string> | undefined;
319
364
  }): MetricQueryConfigData {
320
365
  return {
321
366
  metricAliasData: {
@@ -332,6 +377,14 @@ function buildQueryConfig(data: {
332
377
  aggegationType: data.aggregationType,
333
378
  aggregateBy: {},
334
379
  },
380
+ /*
381
+ * Omitted entirely rather than written as [] when there is nothing to
382
+ * group by, so an ungrouped template serializes to exactly the shape it
383
+ * did before this parameter existed.
384
+ */
385
+ ...(data.groupByAttributeKeys && data.groupByAttributeKeys.length > 0
386
+ ? { groupByAttributeKeys: data.groupByAttributeKeys }
387
+ : {}),
335
388
  },
336
389
  };
337
390
  }
@@ -356,6 +409,13 @@ function buildMetricTemplate(data: {
356
409
  rollingTime?: RollingTime | undefined;
357
410
  unhealthyFilterType?: FilterType | undefined;
358
411
  healthyFilterType?: FilterType | undefined;
412
+ /*
413
+ * Defaults to per-instance. Pass `[]` only for a metric that is a property
414
+ * of the SERVICE rather than of one process — the request latency
415
+ * percentiles are the only two here, and grouping them would quietly change
416
+ * "the service's p95" into "some replica's p95", which is a different alert.
417
+ */
418
+ groupByAttributeKeys?: Array<string> | undefined;
359
419
  incidentDescription: string;
360
420
  }): ServiceAlertTemplate {
361
421
  return {
@@ -388,6 +448,8 @@ function buildMetricTemplate(data: {
388
448
  aggregationType: data.aggregationType,
389
449
  attributes: data.attributes,
390
450
  legendUnit: data.legendUnit,
451
+ groupByAttributeKeys:
452
+ data.groupByAttributeKeys || PER_INSTANCE_GROUP_BY,
391
453
  }),
392
454
  ],
393
455
  formulaConfigs: [],
@@ -443,6 +505,7 @@ function buildRatioTemplate(data: {
443
505
  denominatorAlias: string;
444
506
  resultAlias: string;
445
507
  thresholdPercent: number;
508
+ groupByAttributeKeys?: Array<string> | undefined;
446
509
  incidentDescription: string;
447
510
  }): ServiceAlertTemplate {
448
511
  return {
@@ -494,6 +557,18 @@ function buildRatioTemplate(data: {
494
557
  title: `${data.name} (used)`,
495
558
  aggregationType: MetricsAggregationType.Sum,
496
559
  attributes: data.numeratorAttributes,
560
+ /*
561
+ * The SAME key set on both queries. The worker splits every
562
+ * query on the UNION of their keys, so the split itself cannot
563
+ * go wrong from setting only one side — but
564
+ * `MetricMonitorCriteria.buildContext` reads
565
+ * `groupByAttributeKeys` off a SINGLE query config when it
566
+ * builds the alert's "Grouped By" root-cause block, and a
567
+ * one-sided setting renders that block empty for whichever side
568
+ * it read.
569
+ */
570
+ groupByAttributeKeys:
571
+ data.groupByAttributeKeys || PER_INSTANCE_GROUP_BY,
497
572
  }),
498
573
  buildQueryConfig({
499
574
  metricName: data.denominatorMetricName,
@@ -501,6 +576,8 @@ function buildRatioTemplate(data: {
501
576
  title: `${data.name} (limit)`,
502
577
  aggregationType: MetricsAggregationType.Sum,
503
578
  attributes: data.denominatorAttributes,
579
+ groupByAttributeKeys:
580
+ data.groupByAttributeKeys || PER_INSTANCE_GROUP_BY,
504
581
  }),
505
582
  ],
506
583
  formulaConfigs: [formulaConfig],
@@ -760,6 +837,14 @@ const latencyP95Template: ServiceAlertTemplate = buildMetricTemplate({
760
837
  metricAlias: "service_latency_p95",
761
838
  aggregationType: MetricsAggregationType.P95,
762
839
  legendUnit: "ms",
840
+ /*
841
+ * Not grouped, unlike every other metric template here. A request latency
842
+ * percentile is a property of the SERVICE — it is the number the SLO is
843
+ * written against — and splitting it per instance would turn "the service's
844
+ * p95 is above a second" into "one replica's p95 is above a second", which
845
+ * fires on a single slow pod and means something else.
846
+ */
847
+ groupByAttributeKeys: [],
763
848
  threshold: 1000,
764
849
  thresholdLabel: "1,000 ms",
765
850
  incidentDescription:
@@ -777,6 +862,8 @@ const latencyP99Template: ServiceAlertTemplate = buildMetricTemplate({
777
862
  metricAlias: "service_latency_p99",
778
863
  aggregationType: MetricsAggregationType.P99,
779
864
  legendUnit: "ms",
865
+ // Service-level, not per instance — see latencyP95Template.
866
+ groupByAttributeKeys: [],
780
867
  threshold: 2500,
781
868
  thresholdLabel: "2,500 ms",
782
869
  incidentDescription:
@@ -1147,7 +1234,7 @@ const pythonTemplates: Array<ServiceAlertTemplate> = [
1147
1234
  id: "service-python-rss-memory",
1148
1235
  name: "Resident Memory High",
1149
1236
  description:
1150
- "Alert when resident memory stays above 1 GB per worker — the signal that precedes an OOM kill. Needs the system-metrics instrumentation enabled.",
1237
+ "Alert when a worker's resident memory stays above 1 GB — the signal that precedes an OOM kill. Needs the system-metrics instrumentation enabled. Reads process.runtime.cpython.memory with type=rss; newer opentelemetry-python releases report this as process.memory.usage, which the language-agnostic Process Memory High template already covers.",
1151
1238
  category: "Python Runtime",
1152
1239
  severity: "Warning",
1153
1240
  language: "python",
@@ -1166,7 +1253,7 @@ const pythonTemplates: Array<ServiceAlertTemplate> = [
1166
1253
  id: "service-python-thread-growth",
1167
1254
  name: "Thread Count Growth",
1168
1255
  description:
1169
- "Alert when thread count stays above 200, which usually means a leaked executor or an unclosed client pool. Needs the system-metrics instrumentation enabled.",
1256
+ "Alert when thread count stays above 200, which usually means a leaked executor or an unclosed client pool. Needs the system-metrics instrumentation enabled. Reads process.runtime.cpython.thread_count; newer opentelemetry-python releases report this as process.thread.count — retarget the created monitor in one edit if your SDK emits that instead.",
1170
1257
  category: "Python Runtime",
1171
1258
  severity: "Warning",
1172
1259
  language: "python",
@@ -0,0 +1,56 @@
1
+ /*
2
+ * Every string the day-by-day uptime history speaks: the accessible names on
3
+ * the strip itself, and the chrome of the dialog a day opens.
4
+ *
5
+ * These live in one interface, rather than one per component, because a
6
+ * caller who translates the strip must also translate the dialog it opens -
7
+ * splitting them is how you end up with a French status page whose bars
8
+ * announce themselves in French and whose dialog is in English.
9
+ *
10
+ * Every field has an English default (DefaultUptimeHistoryLabels), so the
11
+ * dashboard - which is English-only, like the tooltip next to it - passes
12
+ * nothing.
13
+ */
14
+ export default interface UptimeHistoryLabels {
15
+ /* Names the strip. {{total}} is the number of days it covers. */
16
+ graphLabel: string;
17
+ /* A day with data. {{date}}, {{uptime}}. */
18
+ dayLabel: string;
19
+ /* A day with data and incidents. {{date}}, {{uptime}}, {{total}}. */
20
+ dayLabelWithIncidents: string;
21
+ /* A day with no timeline rows at all. {{date}}. */
22
+ dayLabelNoData: string;
23
+ /* No timeline rows, but incidents. {{date}}, {{total}}. */
24
+ dayLabelNoDataWithIncidents: string;
25
+
26
+ /* Dialog + tooltip body. */
27
+ uptime: string;
28
+ noMonitoringData: string;
29
+ incidents: string;
30
+ noIncidents: string;
31
+ noIncidentsDescription: string;
32
+ /* Dialog subtitle when the day carried exactly one incident. */
33
+ oneIncidentOnThisDay: string;
34
+ /* Dialog subtitle for two or more. {{total}}. */
35
+ incidentsOnThisDay: string;
36
+ /* Prefixes an incident's declaration time: "Declared Mar 03 2026, 14:12". */
37
+ declared: string;
38
+ close: string;
39
+ }
40
+
41
+ export const DefaultUptimeHistoryLabels: UptimeHistoryLabels = {
42
+ graphLabel: "Uptime history for the last {{total}} days",
43
+ dayLabel: "{{date}}: {{uptime}}% uptime",
44
+ dayLabelWithIncidents: "{{date}}: {{uptime}}% uptime, {{total}} incidents",
45
+ dayLabelNoData: "{{date}}: no data",
46
+ dayLabelNoDataWithIncidents: "{{date}}: no data, {{total}} incidents",
47
+ uptime: "Uptime",
48
+ noMonitoringData: "No monitoring data for this day",
49
+ incidents: "Incidents",
50
+ noIncidents: "No incidents",
51
+ noIncidentsDescription: "No incidents were reported on this day.",
52
+ oneIncidentOnThisDay: "1 incident reported on this day",
53
+ incidentsOnThisDay: "{{total}} incidents reported on this day",
54
+ declared: "Declared",
55
+ close: "Close",
56
+ };
@@ -0,0 +1,30 @@
1
+ import NotificationSettingEventType from "./NotificationSettingEventType";
2
+
3
+ /*
4
+ * Keep this an explicit allowlist: newly introduced events retain their existing
5
+ * email preference until someone deliberately classifies them as routine.
6
+ */
7
+ export const ROUTINE_EMAIL_EVENT_TYPES: ReadonlyArray<NotificationSettingEventType> =
8
+ Object.freeze([
9
+ NotificationSettingEventType.SEND_INCIDENT_NOTE_POSTED_OWNER_NOTIFICATION,
10
+ NotificationSettingEventType.SEND_ALERT_NOTE_POSTED_OWNER_NOTIFICATION,
11
+ NotificationSettingEventType.SEND_INCIDENT_EPISODE_NOTE_POSTED_OWNER_NOTIFICATION,
12
+ NotificationSettingEventType.SEND_ALERT_EPISODE_NOTE_POSTED_OWNER_NOTIFICATION,
13
+ NotificationSettingEventType.SEND_SCHEDULED_MAINTENANCE_NOTE_POSTED_OWNER_NOTIFICATION,
14
+ NotificationSettingEventType.SEND_INCIDENT_OWNER_ADDED_NOTIFICATION,
15
+ NotificationSettingEventType.SEND_ALERT_OWNER_ADDED_NOTIFICATION,
16
+ NotificationSettingEventType.SEND_INCIDENT_EPISODE_OWNER_ADDED_NOTIFICATION,
17
+ NotificationSettingEventType.SEND_ALERT_EPISODE_OWNER_ADDED_NOTIFICATION,
18
+ NotificationSettingEventType.SEND_MONITOR_OWNER_ADDED_NOTIFICATION,
19
+ NotificationSettingEventType.SEND_SLO_OWNER_ADDED_NOTIFICATION,
20
+ NotificationSettingEventType.SEND_PROBE_OWNER_ADDED_NOTIFICATION,
21
+ NotificationSettingEventType.SEND_AI_AGENT_OWNER_ADDED_NOTIFICATION,
22
+ NotificationSettingEventType.SEND_STATUS_PAGE_OWNER_ADDED_NOTIFICATION,
23
+ NotificationSettingEventType.SEND_SCHEDULED_MAINTENANCE_OWNER_ADDED_NOTIFICATION,
24
+ NotificationSettingEventType.SEND_INCIDENT_ADDED_TO_EPISODE_OWNER_NOTIFICATION,
25
+ NotificationSettingEventType.SEND_ALERT_ADDED_TO_EPISODE_OWNER_NOTIFICATION,
26
+ NotificationSettingEventType.SEND_WHEN_USER_IS_ADDED_TO_ON_CALL_POLICY,
27
+ NotificationSettingEventType.SEND_WHEN_USER_IS_REMOVED_FROM_ON_CALL_POLICY,
28
+ NotificationSettingEventType.SEND_MONITOR_CREATED_OWNER_NOTIFICATION,
29
+ NotificationSettingEventType.SEND_STATUS_PAGE_CREATED_OWNER_NOTIFICATION,
30
+ ]);
@@ -158,6 +158,111 @@ export const SESSION_REPLAY_ALLOWED_RETENTION_DAYS: Array<number> = [
158
158
  */
159
159
  export const DEFAULT_SESSION_REPLAY_RETENTION_IN_DAYS: number = 7;
160
160
 
161
+ /*
162
+ * ---- Caps on host-page supplied strings (identify / setTags / track). ----
163
+ *
164
+ * Every one of these is enforced twice, on the client before the bytes
165
+ * leave the page and again at ingest, and the two sides MUST agree: a
166
+ * recorder that sends more than the server keeps produces silent
167
+ * truncation nobody can explain from the dashboard, and a server that
168
+ * keeps more than the recorder sends is a cap that protects nothing. The
169
+ * numbers are small on purpose. These maps ride on the header row of a
170
+ * ReplacingMergeTree that is rewritten by the finalizer, so every byte
171
+ * here is merge amplification, and they are rendered in list cells that
172
+ * have to stay one line.
173
+ */
174
+
175
+ /* identify(ref, traits): the traits map. */
176
+ export const SESSION_REPLAY_MAX_TRAIT_KEYS: number = 20;
177
+ export const SESSION_REPLAY_MAX_TRAIT_KEY_LENGTH: number = 40;
178
+ export const SESSION_REPLAY_MAX_TRAIT_VALUE_LENGTH: number = 200;
179
+
180
+ /*
181
+ * setTags()/addTag(): tighter than traits because tags are indexed for the
182
+ * tag:key=value search and shown as pills, where a 200-character value is
183
+ * unreadable anyway.
184
+ */
185
+ export const SESSION_REPLAY_MAX_TAG_KEYS: number = 20;
186
+ export const SESSION_REPLAY_MAX_TAG_KEY_LENGTH: number = 32;
187
+ export const SESSION_REPLAY_MAX_TAG_VALUE_LENGTH: number = 128;
188
+
189
+ /*
190
+ * track(name, properties): a custom event's name is a rail row title, and
191
+ * its properties map shares the trait caps for key/value length.
192
+ */
193
+ export const SESSION_REPLAY_MAX_CUSTOM_EVENT_NAME_LENGTH: number = 64;
194
+ export const SESSION_REPLAY_MAX_CUSTOM_EVENT_PROPERTY_KEYS: number = 20;
195
+
196
+ /*
197
+ * Per-CHUNK caps on the two custom-event kinds the host page can fire in a
198
+ * loop. Per chunk rather than per session so a long session keeps
199
+ * recording interactions after a busy minute; the recorder emits one
200
+ * "-dropped { count }" event per chunk once a cap is hit, so the player
201
+ * can say "212 clicks not labelled" instead of showing a quiet stretch.
202
+ */
203
+ export const SESSION_REPLAY_MAX_CUSTOM_EVENTS_PER_CHUNK: number = 50;
204
+ export const SESSION_REPLAY_MAX_CLICK_EVENTS_PER_CHUNK: number = 100;
205
+
206
+ /*
207
+ * The visible text carried on a click event (aria-label, name or text
208
+ * content, after the active masking transform). Enough to read "Place
209
+ * order", short enough that a click on a paragraph cannot smuggle it.
210
+ */
211
+ export const SESSION_REPLAY_MAX_CLICK_TEXT_LENGTH: number = 40;
212
+
213
+ /* captureSession(reason): the reason becomes a custom event property. */
214
+ export const SESSION_REPLAY_MAX_CAPTURE_REASON_LENGTH: number = 80;
215
+
216
+ /*
217
+ * ---- Player-side activity model. ----
218
+ *
219
+ * A stretch with no user input for at least this long is an idle band on
220
+ * the timeline and a candidate for "skip idle". 5s is the smallest gap a
221
+ * viewer perceives as waiting rather than reading; shorter bands would
222
+ * turn every pause-to-read into a jump.
223
+ */
224
+ export const SESSION_REPLAY_IDLE_THRESHOLD_MS: number = 5 * 1000;
225
+
226
+ /*
227
+ * Coarse activity from the manifest alone: a chunk carrying fewer events
228
+ * than this is provisionally idle before it is decoded. A chunk always
229
+ * holds a handful of housekeeping events (meta, viewport, the flush
230
+ * checkout), so "3 or fewer" means nothing the user did reached it. The
231
+ * finalizer uses the same threshold to compute activeMs on the header, so
232
+ * the list's "idle 40%" and the timeline's hatched bands agree.
233
+ */
234
+ export const SESSION_REPLAY_ACTIVE_CHUNK_MIN_EVENTS: number = 4;
235
+
236
+ /*
237
+ * ---- List search. ----
238
+ *
239
+ * Free-text search runs as a case-insensitive substring match over several
240
+ * argMax'd header columns, which cannot use an index. The string cap keeps
241
+ * the predicate cheap; the window cap bounds how many partitions it may
242
+ * scan, and the handler answers "narrow the range" rather than timing out
243
+ * against a wider window.
244
+ */
245
+ export const SESSION_REPLAY_LIST_SEARCH_MAX_LENGTH: number = 200;
246
+ export const SESSION_REPLAY_LIST_SEARCH_MAX_WINDOW_DAYS: number = 30;
247
+
248
+ /*
249
+ * Everything a current recorder build can capture beyond the rrweb DOM
250
+ * stream. The recorder sends the subset it implements on chunk 0
251
+ * (SessionReplayChunkEnvelope.capabilities); the player and the setup page
252
+ * compare a recording against this list to explain what an older cached
253
+ * artifact could not have captured, e.g. "click labels: no". Additive
254
+ * only: a value is never removed or renamed, because stored headers quote
255
+ * these strings.
256
+ */
257
+ export const SESSION_REPLAY_RECORDER_CAPABILITIES: ReadonlyArray<string> = [
258
+ "click-events",
259
+ "web-vitals",
260
+ "custom-events",
261
+ "traits",
262
+ "tags",
263
+ "visibility",
264
+ ];
265
+
161
266
  /* How the payload bytes were compressed by the recorder. */
162
267
  export type SessionReplayPayloadEncoding = "gzip" | "identity";
163
268
 
@@ -197,6 +302,21 @@ export enum SessionReplayFidelityNotice {
197
302
  * may be noisier than the application's settings intend.
198
303
  */
199
304
  IgnorePatternsDiscarded = "ignore-patterns-discarded",
305
+ /*
306
+ * A per-session cap on recorded console lines, errors, network requests
307
+ * or route changes was reached, so later signals of that kind were not
308
+ * recorded. The footage itself is complete; only the rail is truncated
309
+ * past this point. The recorder emits an in-band cap marker too, so the
310
+ * rail can show WHERE the truncation started.
311
+ */
312
+ SignalCapReached = "signal-cap-reached",
313
+ /*
314
+ * rrweb threw inside the recorder's own emit path (its errorHandler
315
+ * swallowed it so the host page kept working) three or more times on
316
+ * this page. The recorder took a fresh checkout after the burst, so the
317
+ * footage recovers, but playback may skip or freeze around those points.
318
+ */
319
+ RecorderError = "recorder-error",
200
320
  }
201
321
 
202
322
  /* Why a session stopped accumulating chunks. */
@@ -227,6 +347,19 @@ export interface SessionReplaySignalCounts {
227
347
  errorClickCount: number;
228
348
  refreshRageCount: number;
229
349
  routeCount: number;
350
+
351
+ /*
352
+ * Engagement counters, optional because a recorder that predates them
353
+ * omits them and the server reads absence as 0. clickCount counts the
354
+ * oneuptime.click events the chunk carries (capped per chunk, see
355
+ * SESSION_REPLAY_MAX_CLICK_EVENTS_PER_CHUNK), customEventCount the
356
+ * oneuptime.custom events from the host page's track() calls. Both are
357
+ * summed into the session header by the finalizer like the others, and
358
+ * feed the list's "41 clicks" column and the player's activity lane
359
+ * before any chunk is decoded.
360
+ */
361
+ clickCount?: number;
362
+ customEventCount?: number;
230
363
  }
231
364
 
232
365
  /*
@@ -249,6 +382,27 @@ export interface SessionReplayChunkMeta {
249
382
  * explicitly enabled user-identity capture.
250
383
  */
251
384
  identifiedUserRef?: string;
385
+
386
+ /*
387
+ * Traits the host page attached to the identified user through
388
+ * identify(ref, traits): plan, role, tenant - never the reference itself.
389
+ * Already stringified, capped (SESSION_REPLAY_MAX_TRAIT_*) and masked on
390
+ * the client; the server re-caps and stores them ONLY when the
391
+ * application has user-identity capture on, in a column under the same
392
+ * narrow identity ACL as identifiedUserLabel. Absent from an older
393
+ * recorder, and absent whenever identify() was never called.
394
+ */
395
+ identifiedUserTraits?: Record<string, string>;
396
+
397
+ /*
398
+ * Per-session key/value tags from setTags()/addTag(): a build id, an
399
+ * experiment arm, a customer tier. Unlike traits these describe the
400
+ * session rather than the person, so they live under the ordinary
401
+ * session ACL and are searchable from the list (tag:key=value). Carried
402
+ * on whichever chunk carries meta so a tag set after chunk 0 still
403
+ * reaches the header.
404
+ */
405
+ tags?: Record<string, string>;
252
406
  }
253
407
 
254
408
  /*
@@ -346,6 +500,17 @@ export interface SessionReplayChunkEnvelope {
346
500
 
347
501
  /* Trace ids observed in this chunk's network events, for correlation. */
348
502
  traceIds?: Array<string>;
503
+
504
+ /*
505
+ * What this recorder build can capture, as a subset of
506
+ * SESSION_REPLAY_RECORDER_CAPABILITIES. Sent on chunk 0 only and purely
507
+ * informational: the server stores it on the header so the player can
508
+ * say "this recording predates click labels" instead of rendering an
509
+ * empty Interactions tab, and the setup page can tell a customer on a
510
+ * stale cached artifact which features their visitors' browsers are
511
+ * still missing. Never used to gate ingest.
512
+ */
513
+ capabilities?: Array<string>;
349
514
  }
350
515
 
351
516
  /*
@@ -388,6 +553,15 @@ export enum SessionReplayDisabledReason {
388
553
  * not match one, or a kill key is set.
389
554
  */
390
555
  NotEnabledForApplication = "not-enabled-for-application",
556
+
557
+ /*
558
+ * The project's daily byte budget or the application's monthly budget
559
+ * is already spent, so the recorder is told at config time not to
560
+ * record at all. Without this every new page load would record,
561
+ * compress and upload a chunk only to be refused. `disabledDetail`
562
+ * says which budget and `budgetResetsAt` when it clears.
563
+ */
564
+ BudgetExhausted = "budget-exhausted",
391
565
  }
392
566
 
393
567
  /*
@@ -486,6 +660,25 @@ export interface SessionReplayConfigResponse {
486
660
  */
487
661
  disabledReason?: SessionReplayDisabledReason;
488
662
 
663
+ /*
664
+ * Narrows disabledReason so the customer's console and the Dashboard's
665
+ * installation test can name the exact switch or budget: for
666
+ * NotEnabledForApplication one of project-not-allowed,
667
+ * application-not-enabled, application-unknown, project-killed; for
668
+ * BudgetExhausted one of project-daily-budget-exhausted,
669
+ * app-monthly-budget-exhausted. Free-form on purpose - the vocabulary
670
+ * belongs to the server's gate cache, and an older recorder just logs
671
+ * whatever string it receives.
672
+ */
673
+ disabledDetail?: string;
674
+
675
+ /*
676
+ * ISO timestamp of when a spent budget clears, set only alongside
677
+ * BudgetExhausted, so the recorder's diagnostics can say "resets at
678
+ * 00:00 UTC" instead of "disabled".
679
+ */
680
+ budgetResetsAt?: string;
681
+
489
682
  /*
490
683
  * Ask every recorder that reads this policy to print its decisions to
491
684
  * the browser console (SESSION_REPLAY_DEBUG on the deployment).
@@ -538,6 +731,22 @@ export interface SessionReplayChunkManifestEntry {
538
731
  errorClickCount: number;
539
732
  refreshRageCount: number;
540
733
  routeCount: number;
734
+
735
+ /*
736
+ * Optional because a manifest from a server that predates the column
737
+ * simply omits it, and the player must not draw "0 clicks" for a chunk
738
+ * that was never counted. Feeds the coarse activity heat on the timeline
739
+ * before the chunk is decoded.
740
+ */
741
+ clickCount?: number;
742
+
743
+ /*
744
+ * Scrubbed URL the chunk was flushed from (the chunk row's url column).
745
+ * Lets the stage's URL bar and the timeline preview name the page for a
746
+ * chunk that is not loaded yet; the exact navigation events take over
747
+ * once it is decoded.
748
+ */
749
+ url?: string;
541
750
  }
542
751
 
543
752
  /* A hole in the chunk sequence. Never crossed silently during playback. */