@oneuptime/common 11.5.8 → 11.5.10

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 (542) hide show
  1. package/Models/AnalyticsModels/Index.ts +13 -0
  2. package/Models/AnalyticsModels/MetricItemAggMV1mByContainer.ts +178 -0
  3. package/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.ts +179 -0
  4. package/Models/AnalyticsModels/MetricItemAggMV1mByService.ts +179 -0
  5. package/Models/AnalyticsModels/NetworkFlow.ts +397 -0
  6. package/Models/DatabaseModels/AIAgentTaskPullRequest.ts +15 -6
  7. package/Models/DatabaseModels/AIRun.ts +37 -0
  8. package/Models/DatabaseModels/AIRunEvent.ts +34 -1
  9. package/Models/DatabaseModels/EnterpriseLicenseInstance.ts +18 -0
  10. package/Models/DatabaseModels/GlobalConfig.ts +36 -0
  11. package/Models/DatabaseModels/Index.ts +2 -0
  12. package/Models/DatabaseModels/MarketingConversion.ts +198 -0
  13. package/Models/DatabaseModels/MetricSavedView.ts +34 -0
  14. package/Models/DatabaseModels/MetricType.ts +74 -0
  15. package/Models/DatabaseModels/NetworkDevice.ts +332 -0
  16. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +328 -0
  17. package/Models/DatabaseModels/NetworkInterface.ts +58 -0
  18. package/Models/DatabaseModels/Project.ts +62 -0
  19. package/Models/DatabaseModels/StatusPage.ts +42 -0
  20. package/Models/DatabaseModels/User.ts +37 -0
  21. package/Server/API/AIAgentTaskAPI.ts +38 -12
  22. package/Server/API/AIAgentTaskLogAPI.ts +49 -0
  23. package/Server/API/AIChatAPI.ts +16 -0
  24. package/Server/API/AIReadinessAPI.ts +84 -0
  25. package/Server/API/BaseAnalyticsAPI.ts +23 -0
  26. package/Server/API/CodeFixRunAPI.ts +182 -0
  27. package/Server/API/EnterpriseLicenseAPI.ts +14 -0
  28. package/Server/API/TelemetryExceptionAPI.ts +6 -1
  29. package/Server/EnvironmentConfig.ts +84 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.ts +95 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.ts +52 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.ts +30 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1784191414522-AddCounterSemanticsToMetricType.ts +38 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1784191414600-AddViewTypeToMetricSavedView.ts +28 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.ts +49 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1784211212164-AddNetworkDeviceInventoryAndDiscoverySchedule.ts +108 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1784218257664-AddEnterpriseLicenseNotificationColumns.ts +31 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/1784293516000-AddAttributionColumnsToUserAndProject.ts +29 -0
  39. package/Server/Infrastructure/Postgres/SchemaMigrations/1784298000000-AddMarketingConversionTable.ts +35 -0
  40. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +20 -0
  41. package/Server/Services/AIRunEventService.ts +15 -1
  42. package/Server/Services/AIRunService.ts +38 -1
  43. package/Server/Services/AnalyticsDatabaseService.ts +70 -1
  44. package/Server/Services/IncidentService.ts +13 -0
  45. package/Server/Services/Index.ts +10 -0
  46. package/Server/Services/LlmProviderService.ts +2 -0
  47. package/Server/Services/MarketingConversionService.ts +10 -0
  48. package/Server/Services/MetricItemAggMV1mByContainerService.ts +31 -0
  49. package/Server/Services/MetricItemAggMV1mByK8sClusterService.ts +31 -0
  50. package/Server/Services/MetricItemAggMV1mByServiceService.ts +31 -0
  51. package/Server/Services/MetricService.ts +970 -122
  52. package/Server/Services/MonitorService.ts +14 -0
  53. package/Server/Services/NetworkDeviceOwnerTeamService.ts +42 -0
  54. package/Server/Services/NetworkDeviceOwnerUserService.ts +106 -0
  55. package/Server/Services/NetworkFlowService.ts +11 -0
  56. package/Server/Services/OnCallDutyPolicyService.ts +11 -1
  57. package/Server/Services/ProjectService.ts +178 -0
  58. package/Server/Services/SpanService.ts +13 -9
  59. package/Server/Services/StatusPageService.ts +97 -0
  60. package/Server/Services/TeamMemberService.ts +11 -0
  61. package/Server/Services/TelemetryExceptionService.ts +19 -90
  62. package/Server/Services/UserService.ts +59 -0
  63. package/Server/Types/AnalyticsDatabase/AggregateBy.ts +37 -7
  64. package/Server/Types/Markdown.ts +9 -9
  65. package/Server/Types/MarkdownSlugify.ts +47 -0
  66. package/Server/Utils/AI/AIRunTranscript.ts +240 -0
  67. package/Server/Utils/AI/Chat/ChatAgentRunner.ts +9 -0
  68. package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +119 -5
  69. package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +75 -0
  70. package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +235 -0
  71. package/Server/Utils/AI/SRE/Insights/FixRouting.ts +2 -3
  72. package/Server/Utils/AI/Toolbox/CodeTools.ts +883 -0
  73. package/Server/Utils/AI/Toolbox/CodeWriteTools.ts +519 -0
  74. package/Server/Utils/AI/Toolbox/Index.ts +27 -0
  75. package/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.ts +279 -0
  76. package/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.ts +19 -1
  77. package/Server/Utils/Attribution.ts +99 -0
  78. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +600 -0
  79. package/Server/Utils/CodeRepository/StackTraceRepoResolver.ts +7 -2
  80. package/Server/Utils/LLM/LLMService.ts +397 -18
  81. package/Server/Utils/Marketing/ConversionUploadProvider.ts +103 -0
  82. package/Server/Utils/Marketing/ConversionUploadProviders.ts +22 -0
  83. package/Server/Utils/Marketing/Providers/GoogleAds.ts +270 -0
  84. package/Server/Utils/Marketing/Providers/LinkedIn.ts +147 -0
  85. package/Server/Utils/Marketing/Providers/Meta.ts +148 -0
  86. package/Server/Utils/Marketing/Providers/MicrosoftAds.ts +196 -0
  87. package/Server/Utils/Marketing/Providers/Reddit.ts +178 -0
  88. package/Server/Utils/Monitor/MonitorAlert.ts +71 -7
  89. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +31 -19
  90. package/Server/Utils/Monitor/MonitorIncident.ts +71 -7
  91. package/Server/Utils/Monitor/MonitorMetricUtil.ts +57 -0
  92. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +94 -0
  93. package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +19 -11
  94. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +125 -14
  95. package/Server/Utils/ProductAnalytics.ts +133 -0
  96. package/Server/Utils/Telemetry/Telemetry.ts +39 -0
  97. package/Server/Utils/Telemetry/TelemetryEntity.ts +21 -0
  98. package/Tests/Models/StatusPageEnableMcpServer.test.ts +125 -0
  99. package/Tests/Server/API/BaseAnalyticsAPI.test.ts +72 -0
  100. package/Tests/Server/Infrastructure/SemaphorePermit.test.ts +9 -1
  101. package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +21 -2
  102. package/Tests/Server/Services/MetricEntityMVKeyParity.test.ts +173 -0
  103. package/Tests/Server/Services/MetricServiceAggregate.test.ts +1391 -0
  104. package/Tests/Server/Services/NetworkDeviceOwnerServices.test.ts +260 -0
  105. package/Tests/Server/Services/StatusPageServiceMcp.test.ts +223 -0
  106. package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +26 -3
  107. package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +12 -0
  108. package/Tests/Server/Types/Markdown.test.ts +106 -0
  109. package/Tests/Server/Utils/AI/AIRunTranscript.test.ts +182 -0
  110. package/Tests/Server/Utils/AI/CodeFixReadiness.test.ts +411 -0
  111. package/Tests/Server/Utils/AI/CodeTools.test.ts +596 -0
  112. package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +475 -0
  113. package/Tests/Server/Utils/AI/LLMServiceModelCompatibility.test.ts +548 -0
  114. package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +142 -0
  115. package/Tests/Server/Utils/AI/ScheduledMaintenanceTools.test.ts +176 -0
  116. package/Tests/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.test.ts +63 -0
  117. package/Tests/Server/Utils/GitHubGetFileContent.test.ts +197 -0
  118. package/Tests/Server/Utils/Monitor/MonitorTemplateUtilNetworkDevice.test.ts +389 -0
  119. package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +502 -0
  120. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +764 -0
  121. package/Tests/Types/AI/AIAgentTaskStatus.test.ts +7 -6
  122. package/Tests/Types/AI/AIChatPageContext.test.ts +0 -0
  123. package/Tests/Types/AI/AIRunStatus.test.ts +42 -0
  124. package/Tests/Types/BaseDatabase/AggregationIntervalUtil.test.ts +111 -2
  125. package/Tests/Types/Database/EndsWith.test.ts +64 -0
  126. package/Tests/Types/Database/GreaterThan.test.ts +62 -0
  127. package/Tests/Types/Database/GreaterThanOrEqual.test.ts +65 -0
  128. package/Tests/Types/Database/GreaterThanOrNull.test.ts +63 -0
  129. package/Tests/Types/Database/Includes.test.ts +65 -0
  130. package/Tests/Types/Database/IncludesAll.test.ts +65 -0
  131. package/Tests/Types/Database/IncludesNone.test.ts +65 -0
  132. package/Tests/Types/Database/IsNull.test.ts +44 -0
  133. package/Tests/Types/Database/LessThan.test.ts +62 -0
  134. package/Tests/Types/Database/LessThanOrEqual.test.ts +62 -0
  135. package/Tests/Types/Database/LessThanOrNull.test.ts +62 -0
  136. package/Tests/Types/Database/MultiSearch.test.ts +81 -0
  137. package/Tests/Types/Database/NotContains.test.ts +64 -0
  138. package/Tests/Types/Database/NotNull.test.ts +44 -0
  139. package/Tests/Types/Database/StartsWith.test.ts +64 -0
  140. package/Tests/Types/Log/LogSeverity.test.ts +78 -0
  141. package/Tests/Types/Monitor/MonitorStepSqlMonitor.test.ts +83 -1
  142. package/Tests/Types/Monitor/SnmpV3EnumParsing.test.ts +247 -0
  143. package/Tests/Types/Monitor/SnmpVendorTemplate.test.ts +263 -0
  144. package/Tests/UI/Components/BasicFormDropdownNormalization.test.tsx +167 -0
  145. package/Tests/UI/Components/Charts/AxisTickColor.test.tsx +66 -0
  146. package/Tests/UI/Components/XAxis.test.ts +5 -3
  147. package/Tests/UI/Utils/AIChatExport/ChatWidgetData.test.ts +319 -0
  148. package/Tests/UI/Utils/AIChatExport/ChatWidgetMarkdown.test.ts +188 -0
  149. package/Tests/Utils/EnterpriseLicenseUsage.test.ts +76 -0
  150. package/Tests/Utils/Metrics/MetricExplorerUrl.test.ts +622 -0
  151. package/Tests/Utils/Metrics/MetricFormulaEvaluator.test.ts +474 -0
  152. package/Tests/Utils/Telemetry/HeartbeatAvailability.test.ts +52 -4
  153. package/Types/AI/AIAgentTaskStatus.ts +13 -0
  154. package/Types/AI/AIChatPageContext.ts +137 -0
  155. package/Types/AI/AIChatTypes.ts +44 -0
  156. package/Types/AI/AIFixReadiness.ts +46 -0
  157. package/Types/AI/AIRunStatus.ts +11 -0
  158. package/Types/AnalyticsDatabase/AnalyticsTableName.ts +11 -0
  159. package/Types/BaseDatabase/AggregateBy.ts +31 -2
  160. package/Types/BaseDatabase/AggregatedResult.ts +22 -0
  161. package/Types/BaseDatabase/AggregationInterval.ts +11 -0
  162. package/Types/BaseDatabase/AggregationIntervalUtil.ts +30 -5
  163. package/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.ts +16 -0
  164. package/Types/Email/EmailTemplateType.ts +3 -0
  165. package/Types/Log/LogSeverity.ts +61 -0
  166. package/Types/Marketing/MarketingConversion.ts +11 -0
  167. package/Types/Metrics/MetricQueryConfigData.ts +21 -0
  168. package/Types/Metrics/MetricQueryData.ts +8 -0
  169. package/Types/Metrics/MetricViewData.ts +8 -0
  170. package/Types/Monitor/MonitorMetricType.ts +8 -0
  171. package/Types/Monitor/MonitorStep.ts +9 -0
  172. package/Types/Monitor/MonitorStepSqlMonitor.ts +12 -0
  173. package/Types/Monitor/MonitorType.ts +2 -1
  174. package/Types/Monitor/SSLMonitor/SslMonitorResponse.ts +17 -12
  175. package/Types/Monitor/SnmpMonitor/CdpNeighbor.ts +13 -0
  176. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +37 -3
  177. package/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.ts +46 -0
  178. package/Types/Monitor/SnmpMonitor/SnmpEntityInfo.ts +15 -0
  179. package/Types/Monitor/SnmpMonitor/SnmpInterface.ts +8 -0
  180. package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +17 -8
  181. package/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.ts +53 -0
  182. package/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.ts +43 -0
  183. package/Types/Monitor/SnmpMonitor/SnmpSystemInfo.ts +16 -0
  184. package/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.ts +119 -3
  185. package/Types/Monitor/SnmpMonitor/SnmpVersion.ts +40 -0
  186. package/Types/NetFlow/NetworkFlowRecord.ts +25 -0
  187. package/Types/Syslog/SyslogMessage.ts +18 -0
  188. package/Types/Telemetry/TelemetrySavedViewState.ts +9 -0
  189. package/Types/Telemetry/TelemetrySavedViewType.ts +12 -0
  190. package/UI/Components/Charts/Area/AreaChart.tsx +51 -0
  191. package/UI/Components/Charts/Bar/BarChart.tsx +51 -1
  192. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +97 -26
  193. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +336 -3
  194. package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +118 -1
  195. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +336 -3
  196. package/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.ts +7 -0
  197. package/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.ts +15 -0
  198. package/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.ts +13 -0
  199. package/UI/Components/Charts/Line/LineChart.tsx +51 -0
  200. package/UI/Components/Charts/Types/ReferenceRegionProps.ts +12 -0
  201. package/UI/Components/Charts/Types/TimeReferenceLineProps.ts +12 -0
  202. package/UI/Components/Charts/Types/XAxis/XAxisPrecision.ts +1 -0
  203. package/UI/Components/Charts/Utils/DataPoint.ts +0 -0
  204. package/UI/Components/Charts/Utils/TimeAnnotation.ts +169 -0
  205. package/UI/Components/Charts/Utils/XAxis.ts +28 -4
  206. package/UI/Components/Forms/BasicForm.tsx +26 -8
  207. package/UI/Components/Icon/Icon.tsx +33 -13
  208. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +9 -0
  209. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +67 -0
  210. package/UI/Components/Page/ModelPage.tsx +6 -1
  211. package/UI/Components/TelemetryViewer/components/SavedViewsDropdown.tsx +33 -4
  212. package/UI/Styles/Theme.css +1324 -0
  213. package/UI/Utils/AIChatExport/ChatWidgetData.ts +316 -0
  214. package/UI/Utils/AIChatExport/ChatWidgetMarkdown.ts +349 -0
  215. package/UI/Utils/AIChatExport/ConversationMarkdown.ts +177 -0
  216. package/UI/Utils/AIChatExport/MarkdownBlocks.ts +327 -0
  217. package/UI/Utils/AIChatExport/MarkdownSafety.ts +215 -0
  218. package/UI/Utils/DownloadFile.ts +54 -0
  219. package/UI/Utils/User.ts +41 -2
  220. package/Utils/Analytics.ts +8 -6
  221. package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +74 -0
  222. package/Utils/Metrics/MetricExplorerUrl.ts +771 -0
  223. package/Utils/Metrics/MetricFormulaEvaluator.ts +410 -46
  224. package/Utils/Monitor/NetworkTopologyUtil.ts +261 -49
  225. package/Utils/ValueFormatter.ts +22 -1
  226. package/build/dist/Models/AnalyticsModels/Index.js +13 -0
  227. package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
  228. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js +159 -0
  229. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js.map +1 -0
  230. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js +158 -0
  231. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js.map +1 -0
  232. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js +160 -0
  233. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js.map +1 -0
  234. package/build/dist/Models/AnalyticsModels/NetworkFlow.js +351 -0
  235. package/build/dist/Models/AnalyticsModels/NetworkFlow.js.map +1 -0
  236. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +15 -7
  237. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
  238. package/build/dist/Models/DatabaseModels/AIRun.js +38 -0
  239. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  240. package/build/dist/Models/DatabaseModels/AIRunEvent.js +31 -0
  241. package/build/dist/Models/DatabaseModels/AIRunEvent.js.map +1 -1
  242. package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js +19 -0
  243. package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js.map +1 -1
  244. package/build/dist/Models/DatabaseModels/GlobalConfig.js +38 -0
  245. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  246. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  247. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  248. package/build/dist/Models/DatabaseModels/MarketingConversion.js +219 -0
  249. package/build/dist/Models/DatabaseModels/MarketingConversion.js.map +1 -0
  250. package/build/dist/Models/DatabaseModels/MetricSavedView.js +35 -0
  251. package/build/dist/Models/DatabaseModels/MetricSavedView.js.map +1 -1
  252. package/build/dist/Models/DatabaseModels/MetricType.js +76 -0
  253. package/build/dist/Models/DatabaseModels/MetricType.js.map +1 -1
  254. package/build/dist/Models/DatabaseModels/NetworkDevice.js +341 -0
  255. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  256. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +341 -0
  257. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
  258. package/build/dist/Models/DatabaseModels/NetworkInterface.js +60 -0
  259. package/build/dist/Models/DatabaseModels/NetworkInterface.js.map +1 -1
  260. package/build/dist/Models/DatabaseModels/Project.js +65 -0
  261. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  262. package/build/dist/Models/DatabaseModels/StatusPage.js +43 -0
  263. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  264. package/build/dist/Models/DatabaseModels/User.js +38 -0
  265. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  266. package/build/dist/Server/API/AIAgentTaskAPI.js +37 -11
  267. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  268. package/build/dist/Server/API/AIAgentTaskLogAPI.js +32 -7
  269. package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
  270. package/build/dist/Server/API/AIChatAPI.js +9 -0
  271. package/build/dist/Server/API/AIChatAPI.js.map +1 -1
  272. package/build/dist/Server/API/AIReadinessAPI.js +57 -0
  273. package/build/dist/Server/API/AIReadinessAPI.js.map +1 -0
  274. package/build/dist/Server/API/BaseAnalyticsAPI.js +19 -0
  275. package/build/dist/Server/API/BaseAnalyticsAPI.js.map +1 -1
  276. package/build/dist/Server/API/CodeFixRunAPI.js +142 -0
  277. package/build/dist/Server/API/CodeFixRunAPI.js.map +1 -1
  278. package/build/dist/Server/API/EnterpriseLicenseAPI.js +8 -0
  279. package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +1 -1
  280. package/build/dist/Server/API/TelemetryExceptionAPI.js +4 -0
  281. package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
  282. package/build/dist/Server/EnvironmentConfig.js +51 -0
  283. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  284. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.js +80 -0
  285. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.js.map +1 -0
  286. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.js +37 -0
  287. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.js.map +1 -0
  288. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.js +23 -0
  289. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.js.map +1 -0
  290. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414522-AddCounterSemanticsToMetricType.js +27 -0
  291. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414522-AddCounterSemanticsToMetricType.js.map +1 -0
  292. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414600-AddViewTypeToMetricSavedView.js +21 -0
  293. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414600-AddViewTypeToMetricSavedView.js.map +1 -0
  294. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.js +22 -0
  295. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.js.map +1 -0
  296. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784211212164-AddNetworkDeviceInventoryAndDiscoverySchedule.js +47 -0
  297. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784211212164-AddNetworkDeviceInventoryAndDiscoverySchedule.js.map +1 -0
  298. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784218257664-AddEnterpriseLicenseNotificationColumns.js +16 -0
  299. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784218257664-AddEnterpriseLicenseNotificationColumns.js.map +1 -0
  300. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784293516000-AddAttributionColumnsToUserAndProject.js +18 -0
  301. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784293516000-AddAttributionColumnsToUserAndProject.js.map +1 -0
  302. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784298000000-AddMarketingConversionTable.js +20 -0
  303. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784298000000-AddMarketingConversionTable.js.map +1 -0
  304. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +20 -0
  305. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  306. package/build/dist/Server/Services/AIRunEventService.js +8 -0
  307. package/build/dist/Server/Services/AIRunEventService.js.map +1 -1
  308. package/build/dist/Server/Services/AIRunService.js +29 -0
  309. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  310. package/build/dist/Server/Services/AnalyticsDatabaseService.js +58 -4
  311. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  312. package/build/dist/Server/Services/IncidentService.js +12 -0
  313. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  314. package/build/dist/Server/Services/Index.js +10 -0
  315. package/build/dist/Server/Services/Index.js.map +1 -1
  316. package/build/dist/Server/Services/LlmProviderService.js +2 -0
  317. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  318. package/build/dist/Server/Services/MarketingConversionService.js +9 -0
  319. package/build/dist/Server/Services/MarketingConversionService.js.map +1 -0
  320. package/build/dist/Server/Services/MetricItemAggMV1mByContainerService.js +29 -0
  321. package/build/dist/Server/Services/MetricItemAggMV1mByContainerService.js.map +1 -0
  322. package/build/dist/Server/Services/MetricItemAggMV1mByK8sClusterService.js +29 -0
  323. package/build/dist/Server/Services/MetricItemAggMV1mByK8sClusterService.js.map +1 -0
  324. package/build/dist/Server/Services/MetricItemAggMV1mByServiceService.js +29 -0
  325. package/build/dist/Server/Services/MetricItemAggMV1mByServiceService.js.map +1 -0
  326. package/build/dist/Server/Services/MetricService.js +761 -125
  327. package/build/dist/Server/Services/MetricService.js.map +1 -1
  328. package/build/dist/Server/Services/MonitorService.js +18 -5
  329. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  330. package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js +44 -0
  331. package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js.map +1 -1
  332. package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js +88 -0
  333. package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js.map +1 -1
  334. package/build/dist/Server/Services/NetworkFlowService.js +9 -0
  335. package/build/dist/Server/Services/NetworkFlowService.js.map +1 -0
  336. package/build/dist/Server/Services/OnCallDutyPolicyService.js +15 -6
  337. package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
  338. package/build/dist/Server/Services/ProjectService.js +146 -6
  339. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  340. package/build/dist/Server/Services/SpanService.js +8 -6
  341. package/build/dist/Server/Services/SpanService.js.map +1 -1
  342. package/build/dist/Server/Services/StatusPageService.js +91 -0
  343. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  344. package/build/dist/Server/Services/TeamMemberService.js +11 -0
  345. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  346. package/build/dist/Server/Services/TelemetryExceptionService.js +14 -61
  347. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  348. package/build/dist/Server/Services/UserService.js +52 -0
  349. package/build/dist/Server/Services/UserService.js.map +1 -1
  350. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +33 -7
  351. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js.map +1 -1
  352. package/build/dist/Server/Types/Markdown.js +8 -8
  353. package/build/dist/Server/Types/Markdown.js.map +1 -1
  354. package/build/dist/Server/Types/MarkdownSlugify.js +47 -0
  355. package/build/dist/Server/Types/MarkdownSlugify.js.map +1 -0
  356. package/build/dist/Server/Utils/AI/AIRunTranscript.js +180 -0
  357. package/build/dist/Server/Utils/AI/AIRunTranscript.js.map +1 -0
  358. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +1 -0
  359. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -1
  360. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +103 -5
  361. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
  362. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +55 -0
  363. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
  364. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +211 -0
  365. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -0
  366. package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -1
  367. package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js +654 -0
  368. package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js.map +1 -0
  369. package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js +389 -0
  370. package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js.map +1 -0
  371. package/build/dist/Server/Utils/AI/Toolbox/Index.js +19 -0
  372. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  373. package/build/dist/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.js +239 -0
  374. package/build/dist/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.js.map +1 -0
  375. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js +19 -1
  376. package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js.map +1 -1
  377. package/build/dist/Server/Utils/Attribution.js +74 -0
  378. package/build/dist/Server/Utils/Attribution.js.map +1 -0
  379. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +439 -0
  380. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  381. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js +1 -1
  382. package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js.map +1 -1
  383. package/build/dist/Server/Utils/LLM/LLMService.js +275 -19
  384. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  385. package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js +40 -0
  386. package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js.map +1 -0
  387. package/build/dist/Server/Utils/Marketing/ConversionUploadProviders.js +20 -0
  388. package/build/dist/Server/Utils/Marketing/ConversionUploadProviders.js.map +1 -0
  389. package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js +177 -0
  390. package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js.map +1 -0
  391. package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js +113 -0
  392. package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js.map +1 -0
  393. package/build/dist/Server/Utils/Marketing/Providers/Meta.js +109 -0
  394. package/build/dist/Server/Utils/Marketing/Providers/Meta.js.map +1 -0
  395. package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js +130 -0
  396. package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js.map +1 -0
  397. package/build/dist/Server/Utils/Marketing/Providers/Reddit.js +126 -0
  398. package/build/dist/Server/Utils/Marketing/Providers/Reddit.js.map +1 -0
  399. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +53 -9
  400. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  401. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +21 -10
  402. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  403. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +54 -11
  404. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  405. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +43 -3
  406. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  407. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +68 -0
  408. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  409. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +17 -11
  410. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
  411. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +100 -15
  412. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  413. package/build/dist/Server/Utils/ProductAnalytics.js +111 -0
  414. package/build/dist/Server/Utils/ProductAnalytics.js.map +1 -0
  415. package/build/dist/Server/Utils/Telemetry/Telemetry.js +32 -5
  416. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  417. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +17 -0
  418. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  419. package/build/dist/Types/AI/AIAgentTaskStatus.js +12 -0
  420. package/build/dist/Types/AI/AIAgentTaskStatus.js.map +1 -1
  421. package/build/dist/Types/AI/AIChatPageContext.js +101 -0
  422. package/build/dist/Types/AI/AIChatPageContext.js.map +1 -0
  423. package/build/dist/Types/AI/AIChatTypes.js +2 -0
  424. package/build/dist/Types/AI/AIChatTypes.js.map +1 -1
  425. package/build/dist/Types/AI/AIFixReadiness.js +9 -0
  426. package/build/dist/Types/AI/AIFixReadiness.js.map +1 -0
  427. package/build/dist/Types/AI/AIRunStatus.js +11 -0
  428. package/build/dist/Types/AI/AIRunStatus.js.map +1 -1
  429. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +11 -0
  430. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
  431. package/build/dist/Types/BaseDatabase/AggregationInterval.js +11 -0
  432. package/build/dist/Types/BaseDatabase/AggregationInterval.js.map +1 -1
  433. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +33 -5
  434. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -1
  435. package/build/dist/Types/Email/EmailTemplateType.js +2 -0
  436. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  437. package/build/dist/Types/Log/LogSeverity.js +56 -0
  438. package/build/dist/Types/Log/LogSeverity.js.map +1 -1
  439. package/build/dist/Types/Marketing/MarketingConversion.js +13 -0
  440. package/build/dist/Types/Marketing/MarketingConversion.js.map +1 -0
  441. package/build/dist/Types/Monitor/MonitorMetricType.js +7 -0
  442. package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
  443. package/build/dist/Types/Monitor/MonitorStep.js +6 -0
  444. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  445. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js +3 -0
  446. package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -1
  447. package/build/dist/Types/Monitor/MonitorType.js +2 -1
  448. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  449. package/build/dist/Types/Monitor/SnmpMonitor/CdpNeighbor.js +2 -0
  450. package/build/dist/Types/Monitor/SnmpMonitor/CdpNeighbor.js.map +1 -0
  451. package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js +41 -0
  452. package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js.map +1 -1
  453. package/build/dist/Types/Monitor/SnmpMonitor/SnmpEntityInfo.js +2 -0
  454. package/build/dist/Types/Monitor/SnmpMonitor/SnmpEntityInfo.js.map +1 -0
  455. package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js +48 -0
  456. package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js.map +1 -1
  457. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js +38 -0
  458. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js.map +1 -1
  459. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSystemInfo.js +2 -0
  460. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSystemInfo.js.map +1 -0
  461. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js +96 -3
  462. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js.map +1 -1
  463. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js +38 -0
  464. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js.map +1 -1
  465. package/build/dist/Types/NetFlow/NetworkFlowRecord.js +2 -0
  466. package/build/dist/Types/NetFlow/NetworkFlowRecord.js.map +1 -0
  467. package/build/dist/Types/Syslog/SyslogMessage.js +2 -0
  468. package/build/dist/Types/Syslog/SyslogMessage.js.map +1 -0
  469. package/build/dist/Types/Telemetry/TelemetrySavedViewState.js +0 -7
  470. package/build/dist/Types/Telemetry/TelemetrySavedViewState.js.map +1 -1
  471. package/build/dist/Types/Telemetry/TelemetrySavedViewType.js +13 -0
  472. package/build/dist/Types/Telemetry/TelemetrySavedViewType.js.map +1 -0
  473. package/build/dist/UI/Components/Charts/Area/AreaChart.js +25 -1
  474. package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
  475. package/build/dist/UI/Components/Charts/Bar/BarChart.js +26 -2
  476. package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
  477. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +36 -12
  478. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  479. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +217 -8
  480. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
  481. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +55 -4
  482. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
  483. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +217 -8
  484. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  485. package/build/dist/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.js +6 -1
  486. package/build/dist/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.js.map +1 -1
  487. package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.js +2 -0
  488. package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.js.map +1 -0
  489. package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.js +2 -0
  490. package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.js.map +1 -0
  491. package/build/dist/UI/Components/Charts/Line/LineChart.js +25 -1
  492. package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
  493. package/build/dist/UI/Components/Charts/Types/ReferenceRegionProps.js +2 -0
  494. package/build/dist/UI/Components/Charts/Types/ReferenceRegionProps.js.map +1 -0
  495. package/build/dist/UI/Components/Charts/Types/TimeReferenceLineProps.js +2 -0
  496. package/build/dist/UI/Components/Charts/Types/TimeReferenceLineProps.js.map +1 -0
  497. package/build/dist/UI/Components/Charts/Types/XAxis/XAxisPrecision.js +1 -0
  498. package/build/dist/UI/Components/Charts/Types/XAxis/XAxisPrecision.js.map +1 -1
  499. package/build/dist/UI/Components/Charts/Utils/DataPoint.js +0 -0
  500. package/build/dist/UI/Components/Charts/Utils/DataPoint.js.map +1 -1
  501. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js +121 -0
  502. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js.map +1 -0
  503. package/build/dist/UI/Components/Charts/Utils/XAxis.js +27 -4
  504. package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
  505. package/build/dist/UI/Components/Forms/BasicForm.js +24 -6
  506. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  507. package/build/dist/UI/Components/Icon/Icon.js +15 -8
  508. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  509. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  510. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +58 -0
  511. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  512. package/build/dist/UI/Components/Page/ModelPage.js +7 -1
  513. package/build/dist/UI/Components/Page/ModelPage.js.map +1 -1
  514. package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js +10 -4
  515. package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js.map +1 -1
  516. package/build/dist/UI/Utils/AIChatExport/ChatWidgetData.js +217 -0
  517. package/build/dist/UI/Utils/AIChatExport/ChatWidgetData.js.map +1 -0
  518. package/build/dist/UI/Utils/AIChatExport/ChatWidgetMarkdown.js +234 -0
  519. package/build/dist/UI/Utils/AIChatExport/ChatWidgetMarkdown.js.map +1 -0
  520. package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js +111 -0
  521. package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js.map +1 -0
  522. package/build/dist/UI/Utils/AIChatExport/MarkdownBlocks.js +233 -0
  523. package/build/dist/UI/Utils/AIChatExport/MarkdownBlocks.js.map +1 -0
  524. package/build/dist/UI/Utils/AIChatExport/MarkdownSafety.js +134 -0
  525. package/build/dist/UI/Utils/AIChatExport/MarkdownSafety.js.map +1 -0
  526. package/build/dist/UI/Utils/DownloadFile.js +41 -0
  527. package/build/dist/UI/Utils/DownloadFile.js.map +1 -0
  528. package/build/dist/UI/Utils/User.js +35 -2
  529. package/build/dist/UI/Utils/User.js.map +1 -1
  530. package/build/dist/Utils/Analytics.js +8 -5
  531. package/build/dist/Utils/Analytics.js.map +1 -1
  532. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +57 -0
  533. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -1
  534. package/build/dist/Utils/Metrics/MetricExplorerUrl.js +418 -0
  535. package/build/dist/Utils/Metrics/MetricExplorerUrl.js.map +1 -0
  536. package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js +296 -37
  537. package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js.map +1 -1
  538. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +176 -40
  539. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  540. package/build/dist/Utils/ValueFormatter.js +20 -1
  541. package/build/dist/Utils/ValueFormatter.js.map +1 -1
  542. package/package.json +6 -2
@@ -11,6 +11,7 @@ import {
11
11
  Dot,
12
12
  Label,
13
13
  Legend as RechartsLegend,
14
+ ReferenceArea,
14
15
  ReferenceDot,
15
16
  ReferenceLine,
16
17
  ResponsiveContainer,
@@ -21,6 +22,9 @@ import {
21
22
  import ChartReferenceLineProps from "../../Types/ReferenceLineProps";
22
23
  import ExemplarPoint from "../../Types/ExemplarPoint";
23
24
  import FormattedExemplarPoint from "../Types/FormattedExemplarPoint";
25
+ import FormattedReferenceRegion from "../Types/FormattedReferenceRegion";
26
+ import FormattedTimeReferenceLine from "../Types/FormattedTimeReferenceLine";
27
+ import { CHART_DATA_POINT_DATE_KEY } from "../Types/ChartDataPoint";
24
28
  import { AxisDomain } from "recharts/types/util/types";
25
29
 
26
30
  import { useOnWindowResize } from "../Utils/UseWindowOnResize";
@@ -37,6 +41,15 @@ import { getYAxisDomain } from "../Utils/GetYAxisDomain";
37
41
  import { hasOnlyOneValueForKey } from "../Utils/HasOnlyOneValueForKey";
38
42
  import ChartCurve from "../../Types/ChartCurve";
39
43
 
44
+ /*
45
+ * Incident/alert time markers each label at the same "insideTop" band, so
46
+ * several events in one window pile their labels into an unreadable stack.
47
+ * A single marker keeps the classic horizontal top label; a handful get
48
+ * rotated to run along their lines; past this cap inline labels are hidden
49
+ * entirely (the dashed lines and their click-through remain).
50
+ */
51
+ const MAX_LABELED_TIME_REFERENCE_LINES: number = 6;
52
+
40
53
  //#region Legend
41
54
 
42
55
  interface LegendItemProps {
@@ -540,6 +553,15 @@ type BaseEventProps = {
540
553
 
541
554
  type AreaChartEventProps = BaseEventProps | null | undefined;
542
555
 
556
+ /*
557
+ * Subset of the recharts MouseHandlerDataParam passed to chart-level
558
+ * mouse handlers — just the fields range selection needs.
559
+ */
560
+ type RangeSelectionChartState = {
561
+ activeTooltipIndex?: number | string | null | undefined;
562
+ activeLabel?: string | number | undefined;
563
+ };
564
+
543
565
  interface AreaChartProps extends React.HTMLAttributes<HTMLDivElement> {
544
566
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
545
567
  data: Record<string, any>[];
@@ -571,8 +593,11 @@ interface AreaChartProps extends React.HTMLAttributes<HTMLDivElement> {
571
593
  customTooltip?: React.ComponentType<TooltipProps>;
572
594
  syncid?: string | undefined;
573
595
  referenceLines?: Array<ChartReferenceLineProps> | undefined;
596
+ formattedTimeReferenceLines?: Array<FormattedTimeReferenceLine> | undefined;
597
+ formattedReferenceRegions?: Array<FormattedReferenceRegion> | undefined;
574
598
  formattedExemplarPoints?: Array<FormattedExemplarPoint> | undefined;
575
599
  onExemplarClick?: ((exemplar: ExemplarPoint) => void) | undefined;
600
+ onTimeRangeSelect?: ((startTime: Date, endTime: Date) => void) | undefined;
576
601
  /**
577
602
  * Render a shaded "expected range" band underneath the data lines.
578
603
  * Both keys must already be present on every entry of `data` (the
@@ -618,6 +643,9 @@ const AreaChart: React.ForwardRefExoticComponent<
618
643
  legendPosition = "right",
619
644
  tooltipCallback,
620
645
  customTooltip,
646
+ formattedTimeReferenceLines,
647
+ formattedReferenceRegions,
648
+ onTimeRangeSelect,
621
649
  ...other
622
650
  } = props;
623
651
  const CustomTooltip: React.ComponentType<TooltipProps> | undefined =
@@ -631,8 +659,27 @@ const AreaChart: React.ForwardRefExoticComponent<
631
659
  const [activeLegend, setActiveLegend] = React.useState<string | undefined>(
632
660
  undefined,
633
661
  );
662
+ const hasOnTimeRangeSelect: boolean = Boolean(onTimeRangeSelect);
663
+ const [rangeSelectionStart, setRangeSelectionStart] = React.useState<
664
+ string | null
665
+ >(null);
666
+ const [rangeSelectionEnd, setRangeSelectionEnd] = React.useState<
667
+ string | null
668
+ >(null);
669
+ const isRangeSelecting: React.MutableRefObject<boolean> =
670
+ React.useRef<boolean>(false);
671
+ const rangeSelectionStartIndexRef: React.MutableRefObject<number | null> =
672
+ React.useRef<number | null>(null);
673
+ const rangeSelectionEndIndexRef: React.MutableRefObject<number | null> =
674
+ React.useRef<number | null>(null);
675
+ const suppressNextClickRef: React.MutableRefObject<boolean> =
676
+ React.useRef<boolean>(false);
634
677
  const categoryColors: Map<string, ChartColorValue> =
635
678
  constructCategoryColors(categories, colors);
679
+ const timeReferenceLineCount: number =
680
+ formattedTimeReferenceLines?.length || 0;
681
+ const showTimeReferenceLineLabels: boolean =
682
+ timeReferenceLineCount <= MAX_LABELED_TIME_REFERENCE_LINES;
636
683
 
637
684
  const yAxisDomain: (number | "auto")[] = getYAxisDomain(
638
685
  autoMinValue,
@@ -650,6 +697,11 @@ const AreaChart: React.ForwardRefExoticComponent<
650
697
  function onDotClick(itemData: any, event: React.MouseEvent): void {
651
698
  event.stopPropagation();
652
699
 
700
+ // Ignore the click that immediately follows a drag-to-select.
701
+ if (suppressNextClickRef.current) {
702
+ return;
703
+ }
704
+
653
705
  if (!hasOnValueChange) {
654
706
  return;
655
707
  }
@@ -678,6 +730,10 @@ const AreaChart: React.ForwardRefExoticComponent<
678
730
  }
679
731
 
680
732
  function onCategoryClick(dataKey: string): void {
733
+ // Ignore the click that immediately follows a drag-to-select.
734
+ if (suppressNextClickRef.current) {
735
+ return;
736
+ }
681
737
  if (!hasOnValueChange) {
682
738
  return;
683
739
  }
@@ -699,15 +755,179 @@ const AreaChart: React.ForwardRefExoticComponent<
699
755
  setActiveDot(undefined);
700
756
  }
701
757
 
758
+ function getRowIndexFromChartState(
759
+ chartState: RangeSelectionChartState,
760
+ ): number | null {
761
+ const activeTooltipIndex: number | string | null | undefined =
762
+ chartState.activeTooltipIndex;
763
+ const numericIndex: number =
764
+ typeof activeTooltipIndex === "number"
765
+ ? activeTooltipIndex
766
+ : Number(activeTooltipIndex);
767
+ if (
768
+ activeTooltipIndex !== undefined &&
769
+ activeTooltipIndex !== null &&
770
+ Number.isInteger(numericIndex) &&
771
+ numericIndex >= 0 &&
772
+ numericIndex < data.length
773
+ ) {
774
+ return numericIndex;
775
+ }
776
+ // Fall back to matching activeLabel against the row labels.
777
+ if (chartState.activeLabel !== undefined) {
778
+ const rowIndex: number = data.findIndex(
779
+ (row: Record<string, unknown>) => {
780
+ return row[index] === chartState.activeLabel;
781
+ },
782
+ );
783
+ return rowIndex >= 0 ? rowIndex : null;
784
+ }
785
+ return null;
786
+ }
787
+
788
+ function getBucketDateAtIndex(rowIndex: number): Date | null {
789
+ const rawDate: unknown = data[rowIndex]?.[CHART_DATA_POINT_DATE_KEY];
790
+ return typeof rawDate === "number" ? new Date(rawDate) : null;
791
+ }
792
+
793
+ function handleRangeSelectMouseDown(
794
+ chartState: RangeSelectionChartState,
795
+ ): void {
796
+ if (!hasOnTimeRangeSelect) {
797
+ return;
798
+ }
799
+ const rowIndex: number | null = getRowIndexFromChartState(chartState);
800
+ if (rowIndex === null) {
801
+ return;
802
+ }
803
+ const rowLabel: unknown = data[rowIndex]?.[index];
804
+ if (typeof rowLabel !== "string") {
805
+ return;
806
+ }
807
+ isRangeSelecting.current = true;
808
+ rangeSelectionStartIndexRef.current = rowIndex;
809
+ rangeSelectionEndIndexRef.current = rowIndex;
810
+ setRangeSelectionStart(rowLabel);
811
+ setRangeSelectionEnd(null);
812
+ }
813
+
814
+ function handleRangeSelectMouseMove(
815
+ chartState: RangeSelectionChartState,
816
+ mouseEvent: React.MouseEvent<SVGGraphicsElement>,
817
+ ): void {
818
+ if (!isRangeSelecting.current) {
819
+ return;
820
+ }
821
+ // Button was released outside the chart — abandon the selection.
822
+ if (mouseEvent.buttons === 0) {
823
+ isRangeSelecting.current = false;
824
+ rangeSelectionStartIndexRef.current = null;
825
+ rangeSelectionEndIndexRef.current = null;
826
+ setRangeSelectionStart(null);
827
+ setRangeSelectionEnd(null);
828
+ return;
829
+ }
830
+ const rowIndex: number | null = getRowIndexFromChartState(chartState);
831
+ if (rowIndex === null) {
832
+ return;
833
+ }
834
+ const rowLabel: unknown = data[rowIndex]?.[index];
835
+ if (typeof rowLabel !== "string") {
836
+ return;
837
+ }
838
+ rangeSelectionEndIndexRef.current = rowIndex;
839
+ setRangeSelectionEnd(rowLabel);
840
+ }
841
+
842
+ function handleRangeSelectMouseUp(): void {
843
+ if (!isRangeSelecting.current) {
844
+ return;
845
+ }
846
+ isRangeSelecting.current = false;
847
+
848
+ const startIndex: number | null = rangeSelectionStartIndexRef.current;
849
+ const endIndex: number | null = rangeSelectionEndIndexRef.current;
850
+ rangeSelectionStartIndexRef.current = null;
851
+ rangeSelectionEndIndexRef.current = null;
852
+ setRangeSelectionStart(null);
853
+ setRangeSelectionEnd(null);
854
+
855
+ /*
856
+ * A plain click (pointer never left the starting bucket) must keep
857
+ * behaving exactly as before — only a real drag selects a range.
858
+ */
859
+ if (startIndex === null || endIndex === null || startIndex === endIndex) {
860
+ return;
861
+ }
862
+
863
+ /*
864
+ * The browser fires a click right after mouseup; swallow it so a
865
+ * drag doesn't also toggle legend/dot selection. Cleared on a
866
+ * timeout so a never-delivered click can't suppress a later one.
867
+ */
868
+ suppressNextClickRef.current = true;
869
+ setTimeout(() => {
870
+ suppressNextClickRef.current = false;
871
+ }, 0);
872
+
873
+ if (!onTimeRangeSelect) {
874
+ return;
875
+ }
876
+
877
+ const lowerIndex: number = Math.min(startIndex, endIndex);
878
+ const upperIndex: number = Math.max(startIndex, endIndex);
879
+ const startDate: Date | null = getBucketDateAtIndex(lowerIndex);
880
+ const lastBucketDate: Date | null = getBucketDateAtIndex(upperIndex);
881
+ if (!startDate || !lastBucketDate) {
882
+ return;
883
+ }
884
+
885
+ /*
886
+ * Cover the full final bucket: its end is its start plus one
887
+ * bucket width, derived from adjacent row dates.
888
+ */
889
+ const adjacentDate: Date | null =
890
+ upperIndex > 0
891
+ ? getBucketDateAtIndex(upperIndex - 1)
892
+ : getBucketDateAtIndex(upperIndex + 1);
893
+ const bucketWidthInMs: number = adjacentDate
894
+ ? Math.abs(lastBucketDate.getTime() - adjacentDate.getTime())
895
+ : 0;
896
+ const endDate: Date = new Date(
897
+ lastBucketDate.getTime() + bucketWidthInMs,
898
+ );
899
+
900
+ onTimeRangeSelect(startDate, endDate);
901
+ }
902
+
702
903
  return (
703
- <div ref={ref} className={cx("flex-1 w-full", className)} {...other}>
904
+ <div
905
+ ref={ref}
906
+ className={cx(
907
+ "flex-1 w-full",
908
+ hasOnTimeRangeSelect && "cursor-crosshair",
909
+ className,
910
+ )}
911
+ {...other}
912
+ >
704
913
  <ResponsiveContainer>
705
914
  <RechartsAreaChart
706
915
  data={data}
707
916
  syncId={props.syncid?.toString() || ""}
917
+ {...(hasOnTimeRangeSelect
918
+ ? {
919
+ onMouseDown: handleRangeSelectMouseDown,
920
+ onMouseMove: handleRangeSelectMouseMove,
921
+ onMouseUp: handleRangeSelectMouseUp,
922
+ }
923
+ : {})}
708
924
  onClick={
709
925
  hasOnValueChange && (activeLegend || activeDot)
710
926
  ? () => {
927
+ // Ignore the click that follows a drag-to-select.
928
+ if (suppressNextClickRef.current) {
929
+ return;
930
+ }
711
931
  setActiveDot(undefined);
712
932
  setActiveLegend(undefined);
713
933
  onValueChange?.(null);
@@ -762,6 +982,7 @@ const AreaChart: React.ForwardRefExoticComponent<
762
982
  transform: "translate(0, 6)",
763
983
  fontSize: 10,
764
984
  fontWeight: 500,
985
+ fill: "var(--ou-chart-tick)",
765
986
  }}
766
987
  ticks={
767
988
  startEndOnly
@@ -802,6 +1023,7 @@ const AreaChart: React.ForwardRefExoticComponent<
802
1023
  transform: "translate(-4, 0)",
803
1024
  fontSize: 10,
804
1025
  fontWeight: 500,
1026
+ fill: "var(--ou-chart-tick)",
805
1027
  }}
806
1028
  fill=""
807
1029
  stroke=""
@@ -822,7 +1044,7 @@ const AreaChart: React.ForwardRefExoticComponent<
822
1044
  )}
823
1045
  </YAxis>
824
1046
  <Tooltip
825
- wrapperStyle={{ outline: "none" }}
1047
+ wrapperStyle={{ outline: "none", zIndex: 10 }}
826
1048
  isAnimationActive={true}
827
1049
  animationDuration={100}
828
1050
  cursor={{
@@ -1056,6 +1278,98 @@ const AreaChart: React.ForwardRefExoticComponent<
1056
1278
  );
1057
1279
  },
1058
1280
  )}
1281
+ {/* Time-anchored shaded regions (e.g. incident/maintenance windows) */}
1282
+ {formattedReferenceRegions?.map(
1283
+ (region: FormattedReferenceRegion, regionIndex: number) => {
1284
+ const regionColor: string = region.original.color || "#6366f1";
1285
+ return (
1286
+ <ReferenceArea
1287
+ key={`ref-region-${regionIndex}`}
1288
+ x1={region.formattedX1}
1289
+ x2={region.formattedX2}
1290
+ fill={regionColor}
1291
+ fillOpacity={0.12}
1292
+ stroke={regionColor}
1293
+ strokeOpacity={0.35}
1294
+ strokeWidth={1}
1295
+ {...(region.original.onClick
1296
+ ? {
1297
+ style: { cursor: "pointer" as const },
1298
+ onClick: (): void => {
1299
+ if (suppressNextClickRef.current) {
1300
+ return;
1301
+ }
1302
+ region.original.onClick?.();
1303
+ },
1304
+ }
1305
+ : {})}
1306
+ >
1307
+ {region.original.label && (
1308
+ <Label
1309
+ value={region.original.label}
1310
+ position="insideTop"
1311
+ fill={regionColor}
1312
+ fontSize={10}
1313
+ fontWeight={500}
1314
+ />
1315
+ )}
1316
+ </ReferenceArea>
1317
+ );
1318
+ },
1319
+ )}
1320
+ {/* Time-anchored vertical event markers (e.g. deploys, incidents) */}
1321
+ {formattedTimeReferenceLines?.map(
1322
+ (
1323
+ timeRefLine: FormattedTimeReferenceLine,
1324
+ timeRefIndex: number,
1325
+ ) => {
1326
+ const lineColor: string =
1327
+ timeRefLine.original.color || "#f59e0b";
1328
+ return (
1329
+ <ReferenceLine
1330
+ key={`time-ref-${timeRefIndex}`}
1331
+ x={timeRefLine.formattedX}
1332
+ stroke={lineColor}
1333
+ strokeDasharray={
1334
+ timeRefLine.original.strokeDasharray || "4 4"
1335
+ }
1336
+ strokeWidth={1.5}
1337
+ {...(timeRefLine.original.onClick
1338
+ ? {
1339
+ style: { cursor: "pointer" as const },
1340
+ onClick: (): void => {
1341
+ if (suppressNextClickRef.current) {
1342
+ return;
1343
+ }
1344
+ timeRefLine.original.onClick?.();
1345
+ },
1346
+ }
1347
+ : {})}
1348
+ >
1349
+ {timeRefLine.original.label &&
1350
+ showTimeReferenceLineLabels && (
1351
+ <Label
1352
+ value={timeRefLine.original.label}
1353
+ {...(timeReferenceLineCount > 1
1354
+ ? {
1355
+ /*
1356
+ * Several markers: run each label down its
1357
+ * own line so labels at different x stop
1358
+ * sharing one horizontal band.
1359
+ */
1360
+ position: "insideTopLeft" as const,
1361
+ angle: 90,
1362
+ }
1363
+ : { position: "insideTop" as const })}
1364
+ fill={lineColor}
1365
+ fontSize={10}
1366
+ fontWeight={500}
1367
+ />
1368
+ )}
1369
+ </ReferenceLine>
1370
+ );
1371
+ },
1372
+ )}
1059
1373
  {/* Exemplar dots - clickable markers linking to traces */}
1060
1374
  {props.formattedExemplarPoints?.map(
1061
1375
  (exemplar: FormattedExemplarPoint, exemplarIndex: number) => {
@@ -1070,13 +1384,21 @@ const AreaChart: React.ForwardRefExoticComponent<
1070
1384
  strokeWidth={2}
1071
1385
  style={{ cursor: "pointer" }}
1072
1386
  onClick={() => {
1387
+ // Ignore the click that follows a drag-to-select.
1388
+ if (suppressNextClickRef.current) {
1389
+ return;
1390
+ }
1073
1391
  props.onExemplarClick?.(exemplar.original);
1074
1392
  }}
1075
1393
  >
1076
1394
  <Label
1077
1395
  value="E"
1078
1396
  position="center"
1079
- fill="var(--ou-chart-marker-ring, #ffffff)"
1397
+ /*
1398
+ * Sits on the dot's purple, not on the surface, so it must
1399
+ * not follow the ring token that flips dark with the theme.
1400
+ */
1401
+ fill="#ffffff"
1080
1402
  fontSize={8}
1081
1403
  fontWeight={700}
1082
1404
  />
@@ -1084,6 +1406,17 @@ const AreaChart: React.ForwardRefExoticComponent<
1084
1406
  );
1085
1407
  },
1086
1408
  )}
1409
+ {/* Live drag-to-select highlight */}
1410
+ {rangeSelectionStart && rangeSelectionEnd ? (
1411
+ <ReferenceArea
1412
+ x1={rangeSelectionStart}
1413
+ x2={rangeSelectionEnd}
1414
+ fill="rgba(99,102,241,0.12)"
1415
+ stroke="rgba(99,102,241,0.5)"
1416
+ strokeWidth={1}
1417
+ radius={2}
1418
+ />
1419
+ ) : null}
1087
1420
  </RechartsAreaChart>
1088
1421
  </ResponsiveContainer>
1089
1422
  </div>
@@ -11,6 +11,7 @@ import {
11
11
  Label,
12
12
  BarChart as RechartsBarChart,
13
13
  Legend as RechartsLegend,
14
+ ReferenceArea,
14
15
  ReferenceLine,
15
16
  ResponsiveContainer,
16
17
  Tooltip,
@@ -18,6 +19,8 @@ import {
18
19
  YAxis,
19
20
  } from "recharts";
20
21
  import ChartReferenceLineProps from "../../Types/ReferenceLineProps";
22
+ import FormattedReferenceRegion from "../Types/FormattedReferenceRegion";
23
+ import FormattedTimeReferenceLine from "../Types/FormattedTimeReferenceLine";
21
24
  import type { AxisDomain } from "recharts/types/util/types";
22
25
 
23
26
  import {
@@ -32,6 +35,15 @@ import { cx } from "../Utils/Cx";
32
35
  import { getYAxisDomain } from "../Utils/GetYAxisDomain";
33
36
  import { useOnWindowResize } from "../Utils/UseWindowOnResize";
34
37
 
38
+ /*
39
+ * Incident/alert time markers each label at the same "insideTop" band, so
40
+ * several events in one window pile their labels into an unreadable stack.
41
+ * A single marker keeps the classic horizontal top label; a handful get
42
+ * rotated to run along their lines; past this cap inline labels are hidden
43
+ * entirely (the dashed lines and their click-through remain).
44
+ */
45
+ const MAX_LABELED_TIME_REFERENCE_LINES: number = 6;
46
+
35
47
  //#region Shape
36
48
 
37
49
  function deepEqual<T>(obj1: T, obj2: T): boolean {
@@ -667,6 +679,8 @@ interface BarChartProps extends React.HTMLAttributes<HTMLDivElement> {
667
679
  customTooltip?: React.ComponentType<TooltipProps>;
668
680
  syncid?: string | undefined;
669
681
  referenceLines?: Array<ChartReferenceLineProps> | undefined;
682
+ formattedTimeReferenceLines?: Array<FormattedTimeReferenceLine> | undefined;
683
+ formattedReferenceRegions?: Array<FormattedReferenceRegion> | undefined;
670
684
  }
671
685
 
672
686
  const BarChart: React.ForwardRefExoticComponent<
@@ -708,6 +722,8 @@ const BarChart: React.ForwardRefExoticComponent<
708
722
  legendPosition = "right",
709
723
  tooltipCallback,
710
724
  customTooltip,
725
+ formattedTimeReferenceLines,
726
+ formattedReferenceRegions,
711
727
  ...other
712
728
  } = props;
713
729
  const CustomTooltip: React.ComponentType<any> | undefined = customTooltip;
@@ -719,6 +735,10 @@ const BarChart: React.ForwardRefExoticComponent<
719
735
  );
720
736
  const categoryColors: Map<string, ChartColorValue> =
721
737
  constructCategoryColors(categories, colors);
738
+ const timeReferenceLineCount: number =
739
+ formattedTimeReferenceLines?.length || 0;
740
+ const showTimeReferenceLineLabels: boolean =
741
+ timeReferenceLineCount <= MAX_LABELED_TIME_REFERENCE_LINES;
722
742
  const [activeBar, setActiveBar] = React.useState<any | undefined>(
723
743
  undefined,
724
744
  );
@@ -836,6 +856,7 @@ const BarChart: React.ForwardRefExoticComponent<
836
856
  layout !== "vertical" ? "translate(0, 6)" : undefined,
837
857
  fontSize: 10,
838
858
  fontWeight: 500,
859
+ fill: "var(--ou-chart-tick)",
839
860
  }}
840
861
  fill=""
841
862
  stroke=""
@@ -904,6 +925,7 @@ const BarChart: React.ForwardRefExoticComponent<
904
925
  : "translate(0, 0)",
905
926
  fontSize: 10,
906
927
  fontWeight: 500,
928
+ fill: "var(--ou-chart-tick)",
907
929
  }}
908
930
  {...(layout !== "vertical"
909
931
  ? {
@@ -940,7 +962,7 @@ const BarChart: React.ForwardRefExoticComponent<
940
962
  )}
941
963
  </YAxis>
942
964
  <Tooltip
943
- wrapperStyle={{ outline: "none" }}
965
+ wrapperStyle={{ outline: "none", zIndex: 10 }}
944
966
  isAnimationActive={true}
945
967
  animationDuration={100}
946
968
  cursor={{
@@ -1068,6 +1090,101 @@ const BarChart: React.ForwardRefExoticComponent<
1068
1090
  );
1069
1091
  },
1070
1092
  )}
1093
+ {/*
1094
+ * Time annotations need the x-axis to be the category axis,
1095
+ * which is only true in horizontal layout.
1096
+ */}
1097
+ {/* Time-anchored shaded regions (e.g. incident/maintenance windows) */}
1098
+ {layout !== "vertical"
1099
+ ? formattedReferenceRegions?.map(
1100
+ (region: FormattedReferenceRegion, regionIndex: number) => {
1101
+ const regionColor: string =
1102
+ region.original.color || "#6366f1";
1103
+ return (
1104
+ <ReferenceArea
1105
+ key={`ref-region-${regionIndex}`}
1106
+ x1={region.formattedX1}
1107
+ x2={region.formattedX2}
1108
+ fill={regionColor}
1109
+ fillOpacity={0.12}
1110
+ stroke={regionColor}
1111
+ strokeOpacity={0.35}
1112
+ strokeWidth={1}
1113
+ {...(region.original.onClick
1114
+ ? {
1115
+ style: { cursor: "pointer" as const },
1116
+ onClick: (): void => {
1117
+ region.original.onClick?.();
1118
+ },
1119
+ }
1120
+ : {})}
1121
+ >
1122
+ {region.original.label && (
1123
+ <Label
1124
+ value={region.original.label}
1125
+ position="insideTop"
1126
+ fill={regionColor}
1127
+ fontSize={10}
1128
+ fontWeight={500}
1129
+ />
1130
+ )}
1131
+ </ReferenceArea>
1132
+ );
1133
+ },
1134
+ )
1135
+ : null}
1136
+ {/* Time-anchored vertical event markers (e.g. deploys, incidents) */}
1137
+ {layout !== "vertical"
1138
+ ? formattedTimeReferenceLines?.map(
1139
+ (
1140
+ timeRefLine: FormattedTimeReferenceLine,
1141
+ timeRefIndex: number,
1142
+ ) => {
1143
+ const lineColor: string =
1144
+ timeRefLine.original.color || "#f59e0b";
1145
+ return (
1146
+ <ReferenceLine
1147
+ key={`time-ref-${timeRefIndex}`}
1148
+ x={timeRefLine.formattedX}
1149
+ stroke={lineColor}
1150
+ strokeDasharray={
1151
+ timeRefLine.original.strokeDasharray || "4 4"
1152
+ }
1153
+ strokeWidth={1.5}
1154
+ {...(timeRefLine.original.onClick
1155
+ ? {
1156
+ style: { cursor: "pointer" as const },
1157
+ onClick: (): void => {
1158
+ timeRefLine.original.onClick?.();
1159
+ },
1160
+ }
1161
+ : {})}
1162
+ >
1163
+ {timeRefLine.original.label &&
1164
+ showTimeReferenceLineLabels && (
1165
+ <Label
1166
+ value={timeRefLine.original.label}
1167
+ {...(timeReferenceLineCount > 1
1168
+ ? {
1169
+ /*
1170
+ * Several markers: run each label down
1171
+ * its own line so labels at different x
1172
+ * stop sharing one horizontal band.
1173
+ */
1174
+ position: "insideTopLeft" as const,
1175
+ angle: 90,
1176
+ }
1177
+ : { position: "insideTop" as const })}
1178
+ fill={lineColor}
1179
+ fontSize={10}
1180
+ fontWeight={500}
1181
+ />
1182
+ )}
1183
+ </ReferenceLine>
1184
+ );
1185
+ },
1186
+ )
1187
+ : null}
1071
1188
  </RechartsBarChart>
1072
1189
  </ResponsiveContainer>
1073
1190
  </div>