@oneuptime/common 11.4.0 → 11.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/Models/DatabaseModels/AIRun.ts +50 -0
  2. package/Models/DatabaseModels/AlertSeverity.ts +6 -0
  3. package/Models/DatabaseModels/IncidentSeverity.ts +6 -0
  4. package/Models/DatabaseModels/Index.ts +16 -0
  5. package/Models/DatabaseModels/IoTDeviceCredential.ts +471 -0
  6. package/Models/DatabaseModels/LlmLog.ts +56 -0
  7. package/Models/DatabaseModels/LlmProvider.ts +33 -0
  8. package/Models/DatabaseModels/NetworkDevice.ts +1385 -0
  9. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +717 -0
  10. package/Models/DatabaseModels/NetworkDeviceLabelRule.ts +514 -0
  11. package/Models/DatabaseModels/NetworkDeviceOwnerRule.ts +596 -0
  12. package/Models/DatabaseModels/NetworkDeviceOwnerTeam.ts +487 -0
  13. package/Models/DatabaseModels/NetworkDeviceOwnerUser.ts +486 -0
  14. package/Models/DatabaseModels/NetworkInterface.ts +563 -0
  15. package/Models/DatabaseModels/Project.ts +145 -0
  16. package/Models/DatabaseModels/TelemetryEntityRelationship.ts +54 -0
  17. package/Server/API/AIAgentTaskAPI.ts +10 -24
  18. package/Server/API/AIInvestigationAPI.ts +131 -63
  19. package/Server/API/AlertAPI.ts +5 -0
  20. package/Server/API/IncidentAPI.ts +10 -0
  21. package/Server/API/IncidentEpisodeAPI.ts +5 -0
  22. package/Server/API/LlmProviderAPI.ts +4 -0
  23. package/Server/API/ScheduledMaintenanceAPI.ts +5 -0
  24. package/Server/API/TelemetryAPI.ts +4 -3
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.ts +19 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1783695782697-AddCacheTokenColumnsToLlmLog.ts +25 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1783701585317-AddAlertInvestigationGating.ts +31 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1783702431535-AddAiDailyAutonomousTokenLimitToProject.ts +19 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1783720000000-AddNetworkDeviceTables.ts +105 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1783721121260-AddAttemptCountToAIRun.ts +15 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1783730000000-AddNetworkDeviceOwnersAndRules.ts +192 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1783740000000-AddNetworkDeviceDiscoveryScan.ts +37 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1783750000000-AddLldpNeighborsToNetworkDevice.ts +19 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1783760576655-AddInvestigationTuningToProject.ts +25 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1783762505482-AddTelemetryEntityRelationshipMetrics.ts +31 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1783780000000-AddIoTDeviceCredentialTable.ts +79 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1783790000000-AddSnmpV3AuthColumnsToNetworkDevice.ts +49 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +24 -0
  39. package/Server/Services/AIAgentTaskService.ts +62 -0
  40. package/Server/Services/AIRunService.ts +58 -0
  41. package/Server/Services/AIService.ts +101 -0
  42. package/Server/Services/AnalyticsDatabaseService.ts +27 -0
  43. package/Server/Services/IncidentService.ts +14 -41
  44. package/Server/Services/Index.ts +14 -0
  45. package/Server/Services/IoTDeviceCredentialService.ts +351 -0
  46. package/Server/Services/IoTDeviceService.ts +64 -21
  47. package/Server/Services/LlmLogService.ts +26 -0
  48. package/Server/Services/LlmProviderService.ts +3 -0
  49. package/Server/Services/LogAggregationService.ts +29 -11
  50. package/Server/Services/MetricService.ts +603 -13
  51. package/Server/Services/MonitorService.ts +4 -1
  52. package/Server/Services/NetworkDeviceDiscoveryScanService.ts +10 -0
  53. package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +204 -0
  54. package/Server/Services/NetworkDeviceLabelRuleService.ts +14 -0
  55. package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +222 -0
  56. package/Server/Services/NetworkDeviceOwnerRuleService.ts +14 -0
  57. package/Server/Services/NetworkDeviceOwnerTeamService.ts +10 -0
  58. package/Server/Services/NetworkDeviceOwnerUserService.ts +10 -0
  59. package/Server/Services/NetworkDeviceService.ts +50 -0
  60. package/Server/Services/NetworkInterfaceService.ts +10 -0
  61. package/Server/Services/TelemetryEntityRelationshipService.ts +23 -0
  62. package/Server/Services/TelemetryEntityService.ts +72 -2
  63. package/Server/Utils/AI/Sentinel/AlertInvestigationRunner.ts +244 -12
  64. package/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.ts +92 -19
  65. package/Server/Utils/AI/Sentinel/InvestigationQueue.ts +493 -0
  66. package/Server/Utils/AI/Sentinel/README.md +10 -0
  67. package/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.ts +88 -68
  68. package/Server/Utils/AI/Toolbox/Index.ts +2 -1
  69. package/Server/Utils/AI/Toolbox/MetricTools.ts +391 -0
  70. package/Server/Utils/LLM/LLMService.ts +21 -0
  71. package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +44 -0
  72. package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +170 -2
  73. package/Server/Utils/Monitor/IoTDeviceAbsenceSeries.ts +101 -0
  74. package/Server/Utils/Monitor/MonitorAlert.ts +15 -3
  75. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +1 -1
  76. package/Server/Utils/Monitor/MonitorIncident.ts +19 -3
  77. package/Server/Utils/Monitor/MonitorMetricUtil.ts +195 -2
  78. package/Server/Utils/Monitor/MonitorResource.ts +77 -21
  79. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +1 -1
  80. package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +201 -0
  81. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +215 -0
  82. package/Server/Utils/Monitor/SnmpInterfaceRateUtil.ts +169 -0
  83. package/Tests/Server/Services/AIAgentTaskServiceClaim.test.ts +146 -0
  84. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +173 -0
  85. package/Tests/Server/Services/IncidentInternalNoteAnnouncement.test.ts +97 -0
  86. package/Tests/Server/Services/IoTDeviceService.test.ts +54 -0
  87. package/Tests/Server/Services/LogAggregationService.test.ts +22 -0
  88. package/Tests/Server/Services/MetricServiceAggregate.test.ts +194 -0
  89. package/Tests/Server/Utils/AI/BaselineAnomalyTool.test.ts +253 -0
  90. package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +44 -0
  91. package/Tests/Server/Utils/AI/SentinelAlertGating.test.ts +360 -0
  92. package/Tests/Server/Utils/AI/SentinelInvestigationQueue.test.ts +295 -0
  93. package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +59 -0
  94. package/Tests/Server/Utils/Monitor/IoTDeviceAbsenceSeries.test.ts +113 -0
  95. package/Tests/Server/Utils/Monitor/PerSeriesRecoveryResolution.test.ts +198 -0
  96. package/Tests/Types/AI/AIAgentTaskStatus.test.ts +86 -0
  97. package/Tests/Types/BaseDatabase/AggregationIntervalUtil.test.ts +127 -0
  98. package/Tests/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.test.ts +152 -0
  99. package/Tests/Types/Monitor/MonitorType.test.ts +1 -1
  100. package/Tests/Types/Trace/TraceRecordingRuleDefinition.test.ts +308 -0
  101. package/Tests/UI/Components/Dropdown.test.tsx +17 -0
  102. package/Tests/UI/Components/EntityDropdown.test.tsx +130 -0
  103. package/Tests/UI/Components/Modal.test.tsx +144 -2
  104. package/Tests/UI/Components/TelemetrySearchBar.test.tsx +90 -0
  105. package/Tests/UI/Utils/Theme.test.ts +161 -0
  106. package/Tests/Utils/Monitor/LatencyMatrixUtil.test.ts +111 -0
  107. package/Types/AI/AIRunStatus.ts +9 -0
  108. package/Types/BaseDatabase/AggregateBy.ts +12 -0
  109. package/Types/Dashboard/DashboardComponentType.ts +1 -0
  110. package/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.ts +24 -0
  111. package/Types/Dashboard/DashboardTemplates.ts +9 -1
  112. package/Types/LlmLogStatus.ts +1 -0
  113. package/Types/Monitor/CriteriaFilter.ts +9 -0
  114. package/Types/Monitor/HttpPhaseTimings.ts +16 -0
  115. package/Types/Monitor/IotAlertTemplates.ts +22 -3
  116. package/Types/Monitor/LatencyMatrix.ts +27 -0
  117. package/Types/Monitor/MonitorCriteriaInstance.ts +2 -2
  118. package/Types/Monitor/MonitorMetricType.ts +27 -0
  119. package/Types/Monitor/MonitorStep.ts +36 -11
  120. package/Types/Monitor/MonitorStepNetworkDeviceMonitor.ts +55 -0
  121. package/Types/Monitor/MonitorStepSnmpMonitor.ts +8 -0
  122. package/Types/Monitor/MonitorType.ts +14 -9
  123. package/Types/Monitor/PingMonitor/PingMonitorResponse.ts +20 -0
  124. package/Types/Monitor/SnmpMonitor/LldpNeighbor.ts +12 -0
  125. package/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.ts +116 -0
  126. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +29 -0
  127. package/Types/Monitor/SnmpMonitor/SnmpInterface.ts +31 -0
  128. package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +24 -0
  129. package/Types/Monitor/SnmpMonitor/SnmpTrap.ts +20 -0
  130. package/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.ts +173 -0
  131. package/Types/Permission.ts +314 -0
  132. package/Types/Probe/ProbeMonitorResponse.ts +22 -0
  133. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +8 -5
  134. package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +4 -1
  135. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +6 -3
  136. package/UI/Components/CodeBlock/CodeBlock.tsx +2 -1
  137. package/UI/Components/CodeEditor/CodeEditor.tsx +3 -0
  138. package/UI/Components/Divider/Divider.tsx +1 -1
  139. package/UI/Components/Dropdown/Dropdown.tsx +13 -4
  140. package/UI/Components/EntityDropdown/EntityDropdown.tsx +110 -2
  141. package/UI/Components/ErrorBoundary.tsx +2 -1
  142. package/UI/Components/EventItem/EventItem.tsx +2 -2
  143. package/UI/Components/GanttChart/Bar/Index.tsx +1 -1
  144. package/UI/Components/Graphs/UptimeBarTooltip.tsx +30 -23
  145. package/UI/Components/Header/Header.tsx +7 -0
  146. package/UI/Components/Header/HeaderIconDropdownButton.tsx +2 -0
  147. package/UI/Components/Icon/Icon.tsx +8 -6
  148. package/UI/Components/Label/Label.tsx +2 -2
  149. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +22 -10
  150. package/UI/Components/LogsViewer/components/LogsHistogram.tsx +9 -3
  151. package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +8 -8
  152. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +44 -20
  153. package/UI/Components/Modal/ConfirmModal.tsx +1 -1
  154. package/UI/Components/Modal/Modal.tsx +213 -121
  155. package/UI/Components/Modal/ModalFooter.tsx +33 -22
  156. package/UI/Components/ModelTable/TableView.tsx +1 -1
  157. package/UI/Components/MonitorGraphs/UptimeBarDayModal.tsx +20 -12
  158. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +2 -2
  159. package/UI/Components/Pill/Pill.tsx +21 -13
  160. package/UI/Components/StatusBubble/StatusBubble.tsx +3 -3
  161. package/UI/Components/Tabs/Tabs.tsx +10 -1
  162. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +7 -1
  163. package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +9 -3
  164. package/UI/Components/TelemetryViewer/components/TelemetrySearchBar.tsx +62 -4
  165. package/UI/Components/Workflow/Component.tsx +53 -33
  166. package/UI/Components/Workflow/ComponentPortViewer.tsx +6 -6
  167. package/UI/Components/Workflow/ComponentReturnValueViewer.tsx +8 -8
  168. package/UI/Components/Workflow/ComponentsModal.tsx +16 -9
  169. package/UI/Components/Workflow/Workflow.tsx +13 -11
  170. package/UI/Utils/Navigation.ts +10 -1
  171. package/UI/Utils/Theme.ts +140 -0
  172. package/Utils/Dashboard/Components/DashboardLogChartComponent.ts +99 -0
  173. package/Utils/Dashboard/Components/Index.ts +7 -0
  174. package/Utils/Monitor/LatencyMatrixUtil.ts +162 -0
  175. package/Utils/Monitor/MonitorMetricType.ts +141 -3
  176. package/Utils/Monitor/NetworkTopologyUtil.ts +159 -0
  177. package/Utils/Telemetry/EntityRelationship.ts +11 -0
  178. package/build/dist/Models/DatabaseModels/AIRun.js +52 -0
  179. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  180. package/build/dist/Models/DatabaseModels/AlertSeverity.js +6 -0
  181. package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
  182. package/build/dist/Models/DatabaseModels/IncidentSeverity.js +6 -0
  183. package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
  184. package/build/dist/Models/DatabaseModels/Index.js +16 -0
  185. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  186. package/build/dist/Models/DatabaseModels/IoTDeviceCredential.js +493 -0
  187. package/build/dist/Models/DatabaseModels/IoTDeviceCredential.js.map +1 -0
  188. package/build/dist/Models/DatabaseModels/LlmLog.js +58 -0
  189. package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
  190. package/build/dist/Models/DatabaseModels/LlmProvider.js +33 -0
  191. package/build/dist/Models/DatabaseModels/LlmProvider.js.map +1 -1
  192. package/build/dist/Models/DatabaseModels/NetworkDevice.js +1426 -0
  193. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -0
  194. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +738 -0
  195. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -0
  196. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js +522 -0
  197. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js.map +1 -0
  198. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js +603 -0
  199. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js.map +1 -0
  200. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js +503 -0
  201. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js.map +1 -0
  202. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js +502 -0
  203. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js.map +1 -0
  204. package/build/dist/Models/DatabaseModels/NetworkInterface.js +589 -0
  205. package/build/dist/Models/DatabaseModels/NetworkInterface.js.map +1 -0
  206. package/build/dist/Models/DatabaseModels/Project.js +147 -0
  207. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  208. package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js +57 -0
  209. package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js.map +1 -1
  210. package/build/dist/Server/API/AIAgentTaskAPI.js +8 -23
  211. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  212. package/build/dist/Server/API/AIInvestigationAPI.js +95 -55
  213. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  214. package/build/dist/Server/API/AlertAPI.js +5 -0
  215. package/build/dist/Server/API/AlertAPI.js.map +1 -1
  216. package/build/dist/Server/API/IncidentAPI.js +10 -0
  217. package/build/dist/Server/API/IncidentAPI.js.map +1 -1
  218. package/build/dist/Server/API/IncidentEpisodeAPI.js +5 -0
  219. package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
  220. package/build/dist/Server/API/LlmProviderAPI.js +5 -7
  221. package/build/dist/Server/API/LlmProviderAPI.js.map +1 -1
  222. package/build/dist/Server/API/ScheduledMaintenanceAPI.js +5 -0
  223. package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
  224. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  225. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.js +12 -0
  226. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.js.map +1 -0
  227. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783695782697-AddCacheTokenColumnsToLlmLog.js +14 -0
  228. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783695782697-AddCacheTokenColumnsToLlmLog.js.map +1 -0
  229. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783701585317-AddAlertInvestigationGating.js +18 -0
  230. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783701585317-AddAlertInvestigationGating.js.map +1 -0
  231. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783702431535-AddAiDailyAutonomousTokenLimitToProject.js +12 -0
  232. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783702431535-AddAiDailyAutonomousTokenLimitToProject.js.map +1 -0
  233. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783720000000-AddNetworkDeviceTables.js +51 -0
  234. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783720000000-AddNetworkDeviceTables.js.map +1 -0
  235. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783721121260-AddAttemptCountToAIRun.js +12 -0
  236. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783721121260-AddAttemptCountToAIRun.js.map +1 -0
  237. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783730000000-AddNetworkDeviceOwnersAndRules.js +101 -0
  238. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783730000000-AddNetworkDeviceOwnersAndRules.js.map +1 -0
  239. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783740000000-AddNetworkDeviceDiscoveryScan.js +18 -0
  240. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783740000000-AddNetworkDeviceDiscoveryScan.js.map +1 -0
  241. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783750000000-AddLldpNeighborsToNetworkDevice.js +12 -0
  242. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783750000000-AddLldpNeighborsToNetworkDevice.js.map +1 -0
  243. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783760576655-AddInvestigationTuningToProject.js +14 -0
  244. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783760576655-AddInvestigationTuningToProject.js.map +1 -0
  245. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783762505482-AddTelemetryEntityRelationshipMetrics.js +16 -0
  246. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783762505482-AddTelemetryEntityRelationshipMetrics.js.map +1 -0
  247. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783780000000-AddIoTDeviceCredentialTable.js +38 -0
  248. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783780000000-AddIoTDeviceCredentialTable.js.map +1 -0
  249. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783790000000-AddSnmpV3AuthColumnsToNetworkDevice.js +22 -0
  250. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783790000000-AddSnmpV3AuthColumnsToNetworkDevice.js.map +1 -0
  251. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +24 -0
  252. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  253. package/build/dist/Server/Services/AIAgentTaskService.js +59 -0
  254. package/build/dist/Server/Services/AIAgentTaskService.js.map +1 -1
  255. package/build/dist/Server/Services/AIRunService.js +33 -0
  256. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  257. package/build/dist/Server/Services/AIService.js +82 -9
  258. package/build/dist/Server/Services/AIService.js.map +1 -1
  259. package/build/dist/Server/Services/AnalyticsDatabaseService.js +19 -0
  260. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  261. package/build/dist/Server/Services/IncidentService.js +14 -25
  262. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  263. package/build/dist/Server/Services/Index.js +14 -0
  264. package/build/dist/Server/Services/Index.js.map +1 -1
  265. package/build/dist/Server/Services/IoTDeviceCredentialService.js +321 -0
  266. package/build/dist/Server/Services/IoTDeviceCredentialService.js.map +1 -0
  267. package/build/dist/Server/Services/IoTDeviceService.js +49 -15
  268. package/build/dist/Server/Services/IoTDeviceService.js.map +1 -1
  269. package/build/dist/Server/Services/LlmLogService.js +29 -0
  270. package/build/dist/Server/Services/LlmLogService.js.map +1 -1
  271. package/build/dist/Server/Services/LlmProviderService.js +3 -0
  272. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  273. package/build/dist/Server/Services/LogAggregationService.js +21 -7
  274. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  275. package/build/dist/Server/Services/MetricService.js +449 -7
  276. package/build/dist/Server/Services/MetricService.js.map +1 -1
  277. package/build/dist/Server/Services/MonitorService.js +2 -1
  278. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  279. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +9 -0
  280. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -0
  281. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +166 -0
  282. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -0
  283. package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js +13 -0
  284. package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js.map +1 -0
  285. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +186 -0
  286. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -0
  287. package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js +13 -0
  288. package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js.map +1 -0
  289. package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js +9 -0
  290. package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js.map +1 -0
  291. package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js +9 -0
  292. package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js.map +1 -0
  293. package/build/dist/Server/Services/NetworkDeviceService.js +52 -0
  294. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -0
  295. package/build/dist/Server/Services/NetworkInterfaceService.js +9 -0
  296. package/build/dist/Server/Services/NetworkInterfaceService.js.map +1 -0
  297. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js +22 -0
  298. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +1 -1
  299. package/build/dist/Server/Services/TelemetryEntityService.js +64 -2
  300. package/build/dist/Server/Services/TelemetryEntityService.js.map +1 -1
  301. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js +189 -9
  302. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js.map +1 -1
  303. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js +84 -17
  304. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js.map +1 -1
  305. package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js +428 -0
  306. package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js.map +1 -0
  307. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js +63 -47
  308. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js.map +1 -1
  309. package/build/dist/Server/Utils/AI/Toolbox/Index.js +2 -1
  310. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  311. package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js +300 -0
  312. package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js.map +1 -1
  313. package/build/dist/Server/Utils/LLM/LLMService.js +16 -0
  314. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  315. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +29 -0
  316. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
  317. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +130 -2
  318. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
  319. package/build/dist/Server/Utils/Monitor/IoTDeviceAbsenceSeries.js +81 -0
  320. package/build/dist/Server/Utils/Monitor/IoTDeviceAbsenceSeries.js.map +1 -0
  321. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +18 -7
  322. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  323. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +1 -1
  324. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  325. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +25 -10
  326. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  327. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +155 -5
  328. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  329. package/build/dist/Server/Utils/Monitor/MonitorResource.js +76 -30
  330. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  331. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +1 -1
  332. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  333. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +147 -0
  334. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -0
  335. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +167 -0
  336. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -0
  337. package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js +93 -0
  338. package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js.map +1 -0
  339. package/build/dist/Types/AI/AIRunStatus.js +9 -0
  340. package/build/dist/Types/AI/AIRunStatus.js.map +1 -1
  341. package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
  342. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  343. package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.js +2 -0
  344. package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.js.map +1 -0
  345. package/build/dist/Types/Dashboard/DashboardTemplates.js +9 -1
  346. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  347. package/build/dist/Types/LlmLogStatus.js +1 -0
  348. package/build/dist/Types/LlmLogStatus.js.map +1 -1
  349. package/build/dist/Types/Monitor/CriteriaFilter.js +9 -0
  350. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  351. package/build/dist/Types/Monitor/HttpPhaseTimings.js +2 -0
  352. package/build/dist/Types/Monitor/HttpPhaseTimings.js.map +1 -0
  353. package/build/dist/Types/Monitor/IotAlertTemplates.js +7 -7
  354. package/build/dist/Types/Monitor/IotAlertTemplates.js.map +1 -1
  355. package/build/dist/Types/Monitor/LatencyMatrix.js +2 -0
  356. package/build/dist/Types/Monitor/LatencyMatrix.js.map +1 -0
  357. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +2 -2
  358. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  359. package/build/dist/Types/Monitor/MonitorMetricType.js +24 -0
  360. package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
  361. package/build/dist/Types/Monitor/MonitorStep.js +22 -9
  362. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  363. package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js +36 -0
  364. package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js.map +1 -0
  365. package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js +3 -0
  366. package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js.map +1 -1
  367. package/build/dist/Types/Monitor/MonitorType.js +14 -9
  368. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  369. package/build/dist/Types/Monitor/PingMonitor/PingMonitorResponse.js +2 -0
  370. package/build/dist/Types/Monitor/PingMonitor/PingMonitorResponse.js.map +1 -0
  371. package/build/dist/Types/Monitor/SnmpMonitor/LldpNeighbor.js +2 -0
  372. package/build/dist/Types/Monitor/SnmpMonitor/LldpNeighbor.js.map +1 -0
  373. package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js +89 -0
  374. package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js.map +1 -0
  375. package/build/dist/Types/Monitor/SnmpMonitor/NetworkTopology.js +2 -0
  376. package/build/dist/Types/Monitor/SnmpMonitor/NetworkTopology.js.map +1 -0
  377. package/build/dist/Types/Monitor/SnmpMonitor/SnmpInterface.js +2 -0
  378. package/build/dist/Types/Monitor/SnmpMonitor/SnmpInterface.js.map +1 -0
  379. package/build/dist/Types/Monitor/SnmpMonitor/SnmpTrap.js +2 -0
  380. package/build/dist/Types/Monitor/SnmpMonitor/SnmpTrap.js.map +1 -0
  381. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js +137 -0
  382. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js.map +1 -0
  383. package/build/dist/Types/Permission.js +280 -0
  384. package/build/dist/Types/Permission.js.map +1 -1
  385. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +7 -4
  386. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
  387. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +4 -1
  388. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
  389. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +6 -3
  390. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  391. package/build/dist/UI/Components/CodeBlock/CodeBlock.js +1 -1
  392. package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
  393. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +3 -1
  394. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  395. package/build/dist/UI/Components/Divider/Divider.js +1 -1
  396. package/build/dist/UI/Components/Divider/Divider.js.map +1 -1
  397. package/build/dist/UI/Components/Dropdown/Dropdown.js +10 -4
  398. package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
  399. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js +76 -3
  400. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js.map +1 -1
  401. package/build/dist/UI/Components/ErrorBoundary.js +2 -1
  402. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  403. package/build/dist/UI/Components/EventItem/EventItem.js +2 -2
  404. package/build/dist/UI/Components/EventItem/EventItem.js.map +1 -1
  405. package/build/dist/UI/Components/GanttChart/Bar/Index.js +1 -1
  406. package/build/dist/UI/Components/GanttChart/Bar/Index.js.map +1 -1
  407. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js +29 -23
  408. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js.map +1 -1
  409. package/build/dist/UI/Components/Header/Header.js +1 -0
  410. package/build/dist/UI/Components/Header/Header.js.map +1 -1
  411. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -1
  412. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  413. package/build/dist/UI/Components/Icon/Icon.js +8 -6
  414. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  415. package/build/dist/UI/Components/Label/Label.js +2 -2
  416. package/build/dist/UI/Components/Label/Label.js.map +1 -1
  417. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +20 -8
  418. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  419. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js +8 -2
  420. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js.map +1 -1
  421. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +8 -8
  422. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +40 -20
  423. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  424. package/build/dist/UI/Components/Modal/ConfirmModal.js +1 -1
  425. package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
  426. package/build/dist/UI/Components/Modal/Modal.js +109 -51
  427. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  428. package/build/dist/UI/Components/Modal/ModalFooter.js +13 -10
  429. package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
  430. package/build/dist/UI/Components/ModelTable/TableView.js +1 -1
  431. package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
  432. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js +17 -12
  433. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js.map +1 -1
  434. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +2 -2
  435. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  436. package/build/dist/UI/Components/Pill/Pill.js +12 -13
  437. package/build/dist/UI/Components/Pill/Pill.js.map +1 -1
  438. package/build/dist/UI/Components/StatusBubble/StatusBubble.js +3 -3
  439. package/build/dist/UI/Components/StatusBubble/StatusBubble.js.map +1 -1
  440. package/build/dist/UI/Components/Tabs/Tabs.js +3 -1
  441. package/build/dist/UI/Components/Tabs/Tabs.js.map +1 -1
  442. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +1 -1
  443. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
  444. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +8 -2
  445. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
  446. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js +36 -6
  447. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js.map +1 -1
  448. package/build/dist/UI/Components/Workflow/Component.js +43 -33
  449. package/build/dist/UI/Components/Workflow/Component.js.map +1 -1
  450. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js +6 -6
  451. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js.map +1 -1
  452. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js +8 -8
  453. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js.map +1 -1
  454. package/build/dist/UI/Components/Workflow/ComponentsModal.js +15 -9
  455. package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
  456. package/build/dist/UI/Components/Workflow/Workflow.js +13 -11
  457. package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
  458. package/build/dist/UI/Utils/Navigation.js +11 -1
  459. package/build/dist/UI/Utils/Navigation.js.map +1 -1
  460. package/build/dist/UI/Utils/Theme.js +106 -0
  461. package/build/dist/UI/Utils/Theme.js.map +1 -0
  462. package/build/dist/Utils/Dashboard/Components/DashboardLogChartComponent.js +89 -0
  463. package/build/dist/Utils/Dashboard/Components/DashboardLogChartComponent.js.map +1 -0
  464. package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
  465. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  466. package/build/dist/Utils/Monitor/LatencyMatrixUtil.js +89 -0
  467. package/build/dist/Utils/Monitor/LatencyMatrixUtil.js.map +1 -0
  468. package/build/dist/Utils/Monitor/MonitorMetricType.js +138 -4
  469. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  470. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +112 -0
  471. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -0
  472. package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -1
  473. package/package.json +1 -1
@@ -18,14 +18,42 @@ export interface ComponentProps {
18
18
  const ModalFooter: FunctionComponent<ComponentProps> = (
19
19
  props: ComponentProps,
20
20
  ): ReactElement => {
21
+ if (!props.onClose && !props.onSubmit && !props.leftFooterElement) {
22
+ return <></>;
23
+ }
24
+
21
25
  return (
22
- <div className="bg-gray-50 px-4 py-3 flex flex-row gap-3 md:px-6 md:justify-between">
26
+ <div
27
+ className="flex shrink-0 flex-col gap-3 rounded-b-2xl border-t border-gray-100 bg-gray-50/70 px-5 py-3 sm:flex-row sm:items-center sm:justify-between sm:rounded-b-xl sm:px-6"
28
+ data-testid="modal-footer"
29
+ >
23
30
  {props.leftFooterElement ? (
24
- <div className="flex flex-row gap-3">{props.leftFooterElement}</div>
31
+ <div className="flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:flex-wrap sm:items-center [&>div]:w-full [&>div]:flex-col [&_button]:!w-full sm:[&>div]:w-auto sm:[&>div]:flex-row sm:[&_button]:!ml-0 sm:[&_button]:!w-auto">
32
+ {props.leftFooterElement}
33
+ </div>
25
34
  ) : (
26
- <div />
35
+ <div className="hidden sm:block" />
27
36
  )}
28
- <div className="flex flex-row gap-3 md:flex-row-reverse">
37
+ <div className="flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center">
38
+ {props.onClose ? (
39
+ <Button
40
+ buttonStyle={
41
+ props.closeButtonStyleType
42
+ ? props.closeButtonStyleType
43
+ : ButtonStyleType.NORMAL
44
+ }
45
+ title={props.closeButtonText ? props.closeButtonText : "Cancel"}
46
+ data-dismiss="modal"
47
+ onClick={() => {
48
+ props.onClose?.();
49
+ }}
50
+ dataTestId="modal-footer-close-button"
51
+ className="sm:!w-auto md:!ml-0"
52
+ />
53
+ ) : (
54
+ <></>
55
+ )}
56
+
29
57
  {props.onSubmit ? (
30
58
  <Button
31
59
  buttonStyle={
@@ -47,24 +75,7 @@ const ModalFooter: FunctionComponent<ComponentProps> = (
47
75
  : ButtonType.Button
48
76
  }
49
77
  dataTestId="modal-footer-submit-button"
50
- />
51
- ) : (
52
- <></>
53
- )}
54
-
55
- {props.onClose ? (
56
- <Button
57
- buttonStyle={
58
- props.closeButtonStyleType
59
- ? props.closeButtonStyleType
60
- : ButtonStyleType.NORMAL
61
- }
62
- title={props.closeButtonText ? props.closeButtonText : "Cancel"}
63
- data-dismiss="modal"
64
- onClick={() => {
65
- props.onClose?.();
66
- }}
67
- dataTestId="modal-footer-close-button"
78
+ className="sm:!w-auto md:!ml-0"
68
79
  />
69
80
  ) : (
70
81
  <></>
@@ -226,7 +226,7 @@ const TableViewElement: <T extends DatabaseBaseModel | AnalyticsBaseModel>(
226
226
  const getMenuContents: GetReactElementArrayFunction =
227
227
  (): Array<ReactElement> => {
228
228
  if (isLoading) {
229
- return [<BarLoader key={-1} />];
229
+ return [<BarLoader key={-1} color="var(--ou-link, #4f46e5)" />];
230
230
  }
231
231
 
232
232
  const elements: Array<ReactElement> = [];
@@ -41,7 +41,8 @@ const UptimeBarDayModal: FunctionComponent<ComponentProps> = (
41
41
  width: "48px",
42
42
  height: "48px",
43
43
  borderRadius: "50%",
44
- backgroundColor: "#f0fdf4",
44
+ backgroundColor:
45
+ "color-mix(in srgb, #22c55e 14%, var(--ou-surface-primary, #ffffff))",
45
46
  display: "flex",
46
47
  alignItems: "center",
47
48
  justifyContent: "center",
@@ -65,13 +66,18 @@ const UptimeBarDayModal: FunctionComponent<ComponentProps> = (
65
66
  style={{
66
67
  fontSize: "14px",
67
68
  fontWeight: 600,
68
- color: "#111827",
69
+ color: "var(--ou-text-primary, #111827)",
69
70
  marginBottom: "4px",
70
71
  }}
71
72
  >
72
73
  No incidents
73
74
  </div>
74
- <div style={{ fontSize: "13px", color: "#6b7280" }}>
75
+ <div
76
+ style={{
77
+ fontSize: "13px",
78
+ color: "var(--ou-text-muted, #6b7280)",
79
+ }}
80
+ >
75
81
  No incidents were reported on this day.
76
82
  </div>
77
83
  </div>
@@ -91,20 +97,20 @@ const UptimeBarDayModal: FunctionComponent<ComponentProps> = (
91
97
  : undefined
92
98
  }
93
99
  style={{
94
- border: "1px solid #e5e7eb",
100
+ border: "1px solid var(--ou-border-default, #e5e7eb)",
95
101
  borderRadius: "10px",
96
102
  padding: "14px 16px",
97
103
  marginBottom: "10px",
98
104
  cursor: isClickable ? "pointer" : "default",
99
105
  transition: "all 0.15s ease",
100
- backgroundColor: "#ffffff",
106
+ backgroundColor: "var(--ou-surface-primary, #ffffff)",
101
107
  }}
102
108
  onMouseEnter={(e: React.MouseEvent<HTMLDivElement>) => {
103
109
  if (isClickable) {
104
110
  (e.currentTarget as HTMLDivElement).style.backgroundColor =
105
- "#f9fafb";
111
+ "var(--ou-surface-secondary, #f9fafb)";
106
112
  (e.currentTarget as HTMLDivElement).style.borderColor =
107
- "#d1d5db";
113
+ "var(--ou-border-strong, #d1d5db)";
108
114
  (e.currentTarget as HTMLDivElement).style.boxShadow =
109
115
  "0 1px 3px rgba(0,0,0,0.06)";
110
116
  }
@@ -112,9 +118,9 @@ const UptimeBarDayModal: FunctionComponent<ComponentProps> = (
112
118
  onMouseLeave={(e: React.MouseEvent<HTMLDivElement>) => {
113
119
  if (isClickable) {
114
120
  (e.currentTarget as HTMLDivElement).style.backgroundColor =
115
- "#ffffff";
121
+ "var(--ou-surface-primary, #ffffff)";
116
122
  (e.currentTarget as HTMLDivElement).style.borderColor =
117
- "#e5e7eb";
123
+ "var(--ou-border-default, #e5e7eb)";
118
124
  (e.currentTarget as HTMLDivElement).style.boxShadow = "none";
119
125
  }
120
126
  }}
@@ -132,7 +138,9 @@ const UptimeBarDayModal: FunctionComponent<ComponentProps> = (
132
138
  style={{
133
139
  fontSize: "14px",
134
140
  fontWeight: 600,
135
- color: isClickable ? "#2563eb" : "#111827",
141
+ color: isClickable
142
+ ? "var(--ou-link, #2563eb)"
143
+ : "var(--ou-text-primary, #111827)",
136
144
  lineHeight: "1.4",
137
145
  marginBottom: "4px",
138
146
  }}
@@ -142,7 +150,7 @@ const UptimeBarDayModal: FunctionComponent<ComponentProps> = (
142
150
  <div
143
151
  style={{
144
152
  fontSize: "12px",
145
- color: "#6b7280",
153
+ color: "var(--ou-text-muted, #6b7280)",
146
154
  }}
147
155
  >
148
156
  Declared{" "}
@@ -162,7 +170,7 @@ const UptimeBarDayModal: FunctionComponent<ComponentProps> = (
162
170
  >
163
171
  <path
164
172
  d="M6 3l5 5-5 5"
165
- stroke="#9ca3af"
173
+ stroke="var(--ou-text-subtle, #9ca3af)"
166
174
  strokeWidth="1.5"
167
175
  strokeLinecap="round"
168
176
  strokeLinejoin="round"
@@ -344,9 +344,9 @@ export default class TemplateVariablesCatalog {
344
344
  ],
345
345
  };
346
346
 
347
- case MonitorType.SNMP:
347
+ case MonitorType.NetworkDevice:
348
348
  return {
349
- title: "SNMP",
349
+ title: "Network Device (SNMP)",
350
350
  variables: [
351
351
  {
352
352
  key: "isOnline",
@@ -1,4 +1,4 @@
1
- import { Black } from "../../../Types/BrandColors";
1
+ import { Gray500 } from "../../../Types/BrandColors";
2
2
  import Color from "../../../Types/Color";
3
3
  import Icon, { SizeProp, ThickProp } from "../Icon/Icon";
4
4
  import IconProp from "../../../Types/Icon/IconProp";
@@ -26,22 +26,32 @@ export interface ComponentProps {
26
26
  const Pill: FunctionComponent<ComponentProps> = (
27
27
  props: ComponentProps,
28
28
  ): ReactElement => {
29
+ const color: Color = props.color || Gray500;
30
+ const backgroundColor: string = color.toString();
31
+
29
32
  if (props.isMinimal) {
30
33
  return (
31
- <span className="relative inline-flex items-center rounded-full border border-gray-300 px-3 py-0.5 text-sm">
34
+ <span
35
+ className="relative inline-flex items-center rounded-full border px-3 py-0.5 text-sm"
36
+ style={{
37
+ borderColor: "var(--ou-border-strong, #d1d5db)",
38
+ }}
39
+ >
32
40
  <span className="absolute flex flex-shrink-0 items-center justify-center">
33
41
  <span
34
42
  className="h-1.5 w-1.5 rounded-full bg-rose-500"
35
43
  style={{
36
- backgroundColor:
37
- props.style?.backgroundColor || props.color
38
- ? props.color.toString()
39
- : Black.toString(),
44
+ backgroundColor: backgroundColor,
40
45
  }}
41
46
  aria-hidden="true"
42
47
  ></span>
43
48
  </span>
44
- <span className="ml-3.5 font-medium text-gray-900">{props.text}</span>
49
+ <span
50
+ className="ml-3.5 font-medium"
51
+ style={{ color: "var(--ou-text-primary, #111827)" }}
52
+ >
53
+ {props.text}
54
+ </span>
45
55
  </span>
46
56
  );
47
57
  }
@@ -50,18 +60,16 @@ const Pill: FunctionComponent<ComponentProps> = (
50
60
  return (
51
61
  <span
52
62
  data-testid="pill"
53
- className="inline-flex items-center rounded-full p-1 pl-3 pr-3"
63
+ className="inline-flex items-center rounded-full border p-1 pl-3 pr-3"
54
64
  style={{
55
65
  // https://stackoverflow.com/questions/3942878/how-to-decide-font-color-in-white-or-black-depending-on-background-color
56
66
 
57
67
  color:
58
- props.style?.color || Color.shouldUseDarkText(props.color || Black)
68
+ props.style?.color || Color.shouldUseDarkText(color)
59
69
  ? "#000000"
60
70
  : "#ffffff",
61
- backgroundColor:
62
- props.style?.backgroundColor || props.color
63
- ? props.color.toString()
64
- : Black.toString(),
71
+ backgroundColor: backgroundColor,
72
+ borderColor: "var(--ou-border-strong, #d1d5db)",
65
73
  fontSize: props.size ? props.size.toString() : PillSize.Normal,
66
74
  ...props.style,
67
75
  }}
@@ -1,4 +1,3 @@
1
- import { Black } from "../../../Types/BrandColors";
2
1
  import Color from "../../../Types/Color";
3
2
  import React, { CSSProperties, FunctionComponent, ReactElement } from "react";
4
3
 
@@ -14,7 +13,7 @@ const Statusbubble: FunctionComponent<ComponentProps> = (
14
13
  ): ReactElement => {
15
14
  const backgroundColor: string = props.color
16
15
  ? props.color.toString()
17
- : Black.toString();
16
+ : "var(--ou-text-subtle, #9ca3af)";
18
17
 
19
18
  return (
20
19
  <div
@@ -37,6 +36,7 @@ const Statusbubble: FunctionComponent<ComponentProps> = (
37
36
  className="relative inline-flex rounded-full h-3.5 w-3.5"
38
37
  style={{
39
38
  backgroundColor: backgroundColor,
39
+ boxShadow: "0 0 0 1px var(--ou-border-strong, #d1d5db)",
40
40
  }}
41
41
  ></span>
42
42
  </span>
@@ -44,7 +44,7 @@ const Statusbubble: FunctionComponent<ComponentProps> = (
44
44
  <div
45
45
  className="text-sm font-medium"
46
46
  style={{
47
- color: props.color ? props.color.toString() : Black.toString(),
47
+ color: "var(--ou-text-secondary, #4b5563)",
48
48
  }}
49
49
  >
50
50
  {props.text}
@@ -10,6 +10,11 @@ import React, {
10
10
  export interface ComponentProps {
11
11
  tabs: Array<Tab>;
12
12
  onTabChange: (tab: Tab) => void;
13
+ /**
14
+ * Tab selected on first render (e.g. restored from a URL param).
15
+ * Falls back to the first tab when absent or unknown.
16
+ */
17
+ initialTabName?: string | undefined;
13
18
  }
14
19
 
15
20
  const Tabs: FunctionComponent<ComponentProps> = (
@@ -88,7 +93,11 @@ const Tabs: FunctionComponent<ComponentProps> = (
88
93
 
89
94
  if (!hasInitialized.current && props.tabs.length > 0) {
90
95
  hasInitialized.current = true;
91
- setCurrentTabName(props.tabs[0]!.name);
96
+ setCurrentTabName(
97
+ props.initialTabName && tabNames.includes(props.initialTabName)
98
+ ? props.initialTabName
99
+ : props.tabs[0]!.name,
100
+ );
92
101
  return;
93
102
  }
94
103
 
@@ -45,8 +45,13 @@ export interface TelemetryViewerProps<T> {
45
45
  searchAttributeSuggestions?: Array<string> | undefined;
46
46
  searchValueSuggestions?: Record<string, Array<string>> | undefined;
47
47
  searchFieldAliasMap?: Record<string, string> | undefined;
48
+ /*
49
+ * Return `false` when the field is filtered via the raw search string
50
+ * rather than a chip — the search bar then keeps the token in the input
51
+ * and submits the search instead of clearing the token.
52
+ */
48
53
  onSearchFieldValueSelect?:
49
- | ((fieldKey: string, value: string) => void)
54
+ | ((fieldKey: string, value: string) => boolean | void)
50
55
  | undefined;
51
56
  searchHelpRows?: Array<SearchHelpRow> | undefined;
52
57
  searchHelpCombinedExample?: string | undefined;
@@ -147,6 +152,7 @@ function TelemetryViewerInner<T>(props: TelemetryViewerProps<T>): ReactElement {
147
152
  helpCombinedExample={props.searchHelpCombinedExample}
148
153
  isAttributesLoading={props.searchAttributesLoading}
149
154
  isValuesLoading={props.searchValuesLoading}
155
+ isLoading={props.isLoading}
150
156
  />
151
157
  </div>
152
158
 
@@ -242,15 +242,21 @@ const TelemetryHistogram: FunctionComponent<TelemetryHistogramProps> = (
242
242
  <XAxis
243
243
  dataKey="time"
244
244
  tickFormatter={formatTickTime}
245
- tick={{ fontSize: 10, fill: "#9ca3af" }}
246
- axisLine={{ stroke: "#e5e7eb" }}
245
+ tick={{
246
+ fontSize: 10,
247
+ fill: "var(--ou-chart-tick, #9ca3af)",
248
+ }}
249
+ axisLine={{ stroke: "var(--ou-chart-grid, #e5e7eb)" }}
247
250
  tickLine={false}
248
251
  minTickGap={40}
249
252
  dy={4}
250
253
  interval="preserveStartEnd"
251
254
  />
252
255
  <YAxis
253
- tick={{ fontSize: 10, fill: "#9ca3af" }}
256
+ tick={{
257
+ fontSize: 10,
258
+ fill: "var(--ou-chart-tick, #9ca3af)",
259
+ }}
254
260
  axisLine={false}
255
261
  tickLine={false}
256
262
  width={48}
@@ -31,8 +31,16 @@ export interface TelemetrySearchBarProps {
31
31
  attributeSuggestions?: Array<string> | undefined;
32
32
  // field → allowed value completions (resolved field keys).
33
33
  valueSuggestions?: Record<string, Array<string>> | undefined;
34
- // Called when the user picks a concrete field:value chip from the dropdown.
35
- onFieldValueSelect?: ((fieldKey: string, value: string) => void) | undefined;
34
+ /*
35
+ * Called when the user picks a concrete field:value chip from the dropdown.
36
+ * Return `false` when the field is NOT consumed as a chip (the parent
37
+ * filters it through the raw search string instead, e.g. `name:` in the
38
+ * metrics viewer) — the bar then keeps the token in the input and submits
39
+ * the search as-is rather than clearing the token.
40
+ */
41
+ onFieldValueSelect?:
42
+ | ((fieldKey: string, value: string) => boolean | void)
43
+ | undefined;
36
44
  // User-facing alias → backing field key (e.g. "service" -> "serviceId").
37
45
  fieldAliasMap?: Record<string, string> | undefined;
38
46
  placeholder?: string | undefined;
@@ -43,6 +51,8 @@ export interface TelemetrySearchBarProps {
43
51
  isAttributesLoading?: boolean | undefined;
44
52
  // Loading state for `@attribute:value` autocomplete (per-key value fetch).
45
53
  isValuesLoading?: boolean | undefined;
54
+ // Loading state for the telemetry results shown by the parent viewer.
55
+ isLoading?: boolean | undefined;
46
56
  }
47
57
 
48
58
  export interface TelemetrySearchBarRef {
@@ -198,7 +208,24 @@ const TelemetrySearchBar: React.ForwardRefExoticComponent<
198
208
  ? filteredSuggestions[0]!
199
209
  : partialValue);
200
210
 
201
- props.onFieldValueSelect(fieldPrefix, resolvedMatch);
211
+ const consumed: boolean | void = props.onFieldValueSelect(
212
+ fieldPrefix,
213
+ resolvedMatch,
214
+ );
215
+
216
+ if (consumed === false) {
217
+ /*
218
+ * The parent filters this field through the raw search
219
+ * string. Keep the token in the input and submit — clearing
220
+ * it here would erase the filter the user just typed.
221
+ */
222
+ props.onSubmit();
223
+ setShowSuggestions(false);
224
+ setShowHelp(false);
225
+ e.preventDefault();
226
+ return;
227
+ }
228
+
202
229
  const parts: Array<string> = props.value.split(/\s+/);
203
230
  parts.pop();
204
231
  const remaining: string = parts.join(" ");
@@ -256,12 +283,32 @@ const TelemetrySearchBar: React.ForwardRefExoticComponent<
256
283
  const applySuggestion: (suggestion: string) => void = useCallback(
257
284
  (suggestion: string): void => {
258
285
  if (isValueMode) {
286
+ let consumed: boolean | void = undefined;
259
287
  if (props.onFieldValueSelect) {
260
- props.onFieldValueSelect(fieldPrefix, suggestion);
288
+ consumed = props.onFieldValueSelect(fieldPrefix, suggestion);
261
289
  }
262
290
 
263
291
  const parts: Array<string> = props.value.split(/\s+/);
264
292
  parts.pop();
293
+
294
+ if (consumed === false) {
295
+ /*
296
+ * Not consumed as a chip — the parent filters this field via
297
+ * the raw search string, so complete the token in place
298
+ * instead of clearing it.
299
+ */
300
+ const completedToken: string = `${hasAtPrefix ? "@" : ""}${fieldPrefix}:${suggestion}`;
301
+ props.onChange(
302
+ parts.length > 0
303
+ ? `${parts.join(" ")} ${completedToken}`
304
+ : completedToken,
305
+ );
306
+ setShowSuggestions(false);
307
+ setShowHelp(false);
308
+ inputRef.current?.focus();
309
+ return;
310
+ }
311
+
265
312
  const remaining: string = parts.join(" ");
266
313
  props.onChange(remaining ? remaining + " " : "");
267
314
  setShowSuggestions(false);
@@ -337,6 +384,7 @@ const TelemetrySearchBar: React.ForwardRefExoticComponent<
337
384
  ? "border-indigo-400 ring-2 ring-indigo-100"
338
385
  : "border-gray-200 hover:border-gray-300"
339
386
  }`}
387
+ aria-busy={props.isLoading || false}
340
388
  >
341
389
  <Icon
342
390
  icon={IconProp.Search}
@@ -367,6 +415,16 @@ const TelemetrySearchBar: React.ForwardRefExoticComponent<
367
415
  spellCheck={false}
368
416
  autoComplete="off"
369
417
  />
418
+ {props.isLoading && (
419
+ <div
420
+ className="flex-none text-indigo-500"
421
+ role="status"
422
+ aria-label="Loading results"
423
+ title="Loading results..."
424
+ >
425
+ <Icon icon={IconProp.Spinner} className="h-4 w-4 animate-spin" />
426
+ </div>
427
+ )}
370
428
  {props.value.length > 0 && (
371
429
  <button
372
430
  type="button"