@oneuptime/common 10.8.2 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (724) hide show
  1. package/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.ts +16 -18
  2. package/Models/AnalyticsModels/AuditLog.ts +3 -1
  3. package/Models/AnalyticsModels/ExceptionInstance.ts +200 -82
  4. package/Models/AnalyticsModels/Index.ts +7 -2
  5. package/Models/AnalyticsModels/Log.ts +197 -81
  6. package/Models/AnalyticsModels/Metric.ts +199 -86
  7. package/Models/AnalyticsModels/MetricBaselineHourly.ts +44 -25
  8. package/Models/AnalyticsModels/MetricItemAggMV1m.ts +23 -20
  9. package/Models/AnalyticsModels/{MetricItemAggMV1mByHost.ts → MetricItemAggMV1mByHostV2.ts} +58 -47
  10. package/Models/AnalyticsModels/MonitorLog.ts +5 -1
  11. package/Models/AnalyticsModels/Profile.ts +206 -85
  12. package/Models/AnalyticsModels/ProfileSample.ts +196 -83
  13. package/Models/AnalyticsModels/Span.ts +218 -85
  14. package/Models/DatabaseModels/Index.ts +4 -0
  15. package/Models/DatabaseModels/Service.ts +29 -0
  16. package/Models/DatabaseModels/TelemetryEntity.ts +393 -0
  17. package/Models/DatabaseModels/TelemetryEntityRelationship.ts +294 -0
  18. package/Models/DatabaseModels/TelemetryException.ts +10 -10
  19. package/Models/DatabaseModels/TelemetryUsageBilling.ts +5 -5
  20. package/Server/API/AIAgentDataAPI.ts +13 -12
  21. package/Server/API/DashboardAPI.ts +2 -2
  22. package/Server/API/TelemetryAPI.ts +656 -141
  23. package/Server/API/TelemetryExceptionAPI.ts +2 -2
  24. package/Server/Infrastructure/ClickhouseConfig.ts +12 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1781100000001-RenameTelemetryServiceIdToPrimaryEntityId.ts +48 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1781200000000-AddTelemetryEntityTable.ts +70 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1781200000001-AddTelemetryEntityRelationshipTable.ts +57 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1781250074195-MigrationName.ts +207 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1781300000000-AddTelemetryEntityLabels.ts +24 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1781400000000-AddServiceTelemetrySdkLanguage.ts +25 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
  32. package/Server/Infrastructure/Queue.ts +36 -3
  33. package/Server/Middleware/TelemetryIngest.ts +27 -22
  34. package/Server/Services/AlertService.ts +9 -9
  35. package/Server/Services/AnalyticsDatabaseService.ts +204 -35
  36. package/Server/Services/ExceptionAggregationService.ts +41 -18
  37. package/Server/Services/HostService.ts +2 -1
  38. package/Server/Services/IncidentService.ts +19 -19
  39. package/Server/Services/Index.ts +6 -2
  40. package/Server/Services/LogAggregationService.ts +116 -43
  41. package/Server/Services/MetricAggregationService.ts +29 -14
  42. package/Server/Services/MetricBaselineService.ts +34 -34
  43. package/Server/Services/MetricItemAggMV1mByHostV2Service.ts +30 -0
  44. package/Server/Services/MetricService.ts +119 -31
  45. package/Server/Services/OpenTelemetryIngestService.ts +186 -50
  46. package/Server/Services/ProfileAggregationService.ts +904 -126
  47. package/Server/Services/ServiceService.ts +6 -0
  48. package/Server/Services/SpanService.ts +274 -14
  49. package/Server/Services/TelemetryEntityRelationshipService.ts +71 -0
  50. package/Server/Services/TelemetryEntityService.ts +246 -0
  51. package/Server/Services/TelemetryExceptionService.ts +27 -23
  52. package/Server/Services/TelemetryUsageBillingService.ts +38 -31
  53. package/Server/Services/TraceAggregationService.ts +875 -43
  54. package/Server/Types/AnalyticsDatabase/ModelPermission.ts +43 -2
  55. package/Server/Types/Database/Permissions/AccessControlPermission.ts +47 -2
  56. package/Server/Types/Database/Permissions/BasePermission.ts +37 -1
  57. package/Server/Types/Database/Permissions/OwnedScopePermission.ts +21 -3
  58. package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +1 -0
  59. package/Server/Types/Database/QueryHelper.ts +41 -0
  60. package/Server/Utils/Alert/AlertPrivacyFilter.ts +9 -2
  61. package/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.ts +9 -2
  62. package/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.ts +95 -0
  63. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +133 -0
  64. package/Server/Utils/Incident/IncidentPrivacyFilter.ts +9 -2
  65. package/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.ts +9 -2
  66. package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +1 -1
  67. package/Server/Utils/Monitor/MonitorLogUtil.ts +1 -2
  68. package/Server/Utils/Monitor/MonitorMetricUtil.ts +3 -4
  69. package/Server/Utils/PrivacyFilterUtil.ts +72 -0
  70. package/Server/Utils/Profile/PprofEncoder.ts +135 -11
  71. package/Server/Utils/Telemetry/EntityRegistry.ts +316 -0
  72. package/Server/Utils/Telemetry/ResourceFacetResolver.ts +5 -0
  73. package/Server/Utils/Telemetry/TelemetryEntity.ts +783 -0
  74. package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +79 -4
  75. package/Tests/Server/Services/LogAggregationService.test.ts +7 -2
  76. package/Tests/Server/Services/ProfileAggregationService.test.ts +280 -0
  77. package/Tests/Server/Services/ProfileBreakdown.test.ts +161 -0
  78. package/Tests/Server/Services/ProfileFunctionFocus.test.ts +349 -0
  79. package/Tests/Server/Services/TelemetryAttributeService.test.ts +1 -1
  80. package/Tests/Server/Services/TraceAggregationService.test.ts +403 -0
  81. package/Tests/Server/Types/AnalyticsDatabase/ModelPermissionOwnedScope.test.ts +114 -0
  82. package/Tests/Server/Types/Database/Permissions/AccessControlPermission.test.ts +189 -0
  83. package/Tests/Server/Types/Database/Permissions/BasePermission.test.ts +118 -0
  84. package/Tests/Server/Types/Database/Permissions/OwnedScopePermission.test.ts +159 -0
  85. package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +275 -8
  86. package/Tests/Server/Utils/PrivacyFilterUtil.test.ts +177 -0
  87. package/Tests/Server/Utils/Profile/PprofEncoder.test.ts +276 -0
  88. package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +761 -0
  89. package/Tests/Types/Monitor/MonitorStepEntityScope.test.ts +275 -0
  90. package/Tests/Types/Text.test.ts +52 -0
  91. package/Tests/Utils/Telemetry/EntityKey.test.ts +150 -0
  92. package/Tests/Utils/Telemetry/EntityKeySqlParity.test.ts +40 -0
  93. package/Tests/Utils/Telemetry/EntityRelationship.test.ts +150 -0
  94. package/Tests/Utils/UUID.test.ts +47 -0
  95. package/Types/AnalyticsDatabase/AnalyticsTableName.ts +14 -9
  96. package/Types/AnalyticsDatabase/TableColumnType.ts +1 -0
  97. package/Types/Dashboard/DashboardComponentType.ts +1 -0
  98. package/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.ts +37 -0
  99. package/Types/Dashboard/DashboardTemplates.ts +4 -5
  100. package/Types/Log/LogQueryParser.ts +2 -2
  101. package/Types/Log/LogQueryToFilter.ts +2 -2
  102. package/Types/Monitor/MonitorStepExceptionMonitor.ts +19 -1
  103. package/Types/Monitor/MonitorStepLogMonitor.ts +20 -1
  104. package/Types/Monitor/MonitorStepMetricMonitor.ts +27 -0
  105. package/Types/Monitor/MonitorStepProfileMonitor.ts +19 -1
  106. package/Types/Monitor/MonitorStepTraceMonitor.ts +18 -1
  107. package/Types/Monitor/MonitorType.ts +8 -1
  108. package/Types/ObjectID.ts +10 -0
  109. package/Types/Telemetry/EntityRelationshipType.ts +31 -0
  110. package/Types/Telemetry/EntityType.ts +33 -0
  111. package/Types/Telemetry/TelemetrySavedViewState.ts +2 -0
  112. package/Types/Text.ts +34 -0
  113. package/Types/Trace/TraceAggregationType.ts +1 -0
  114. package/Types/Trace/TraceRecordingRuleDefinition.ts +74 -0
  115. package/UI/Components/LogsViewer/LogsViewer.tsx +12 -9
  116. package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +10 -9
  117. package/UI/Components/LogsViewer/components/LogSearchBar.tsx +1 -1
  118. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +2 -2
  119. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +4 -4
  120. package/UI/Components/LogsViewer/components/LogsTable.tsx +5 -3
  121. package/UI/Components/Navbar/NavBarMenuModal.tsx +81 -44
  122. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +33 -10
  123. package/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.tsx +18 -3
  124. package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +91 -68
  125. package/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.tsx +9 -2
  126. package/UI/Utils/LogExport.ts +2 -2
  127. package/UI/Utils/TelemetryService.ts +20 -20
  128. package/Utils/Dashboard/Components/DashboardTraceChartComponent.ts +134 -0
  129. package/Utils/Dashboard/Components/Index.ts +7 -0
  130. package/Utils/Telemetry/EntityKey.ts +151 -0
  131. package/Utils/Telemetry/EntityRelationship.ts +113 -0
  132. package/Utils/Traces/CriticalPath.ts +7 -7
  133. package/Utils/UUID.ts +57 -0
  134. package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js +14 -13
  135. package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js.map +1 -1
  136. package/build/dist/Models/AnalyticsModels/AuditLog.js +2 -1
  137. package/build/dist/Models/AnalyticsModels/AuditLog.js.map +1 -1
  138. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +125 -22
  139. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
  140. package/build/dist/Models/AnalyticsModels/Index.js +7 -2
  141. package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
  142. package/build/dist/Models/AnalyticsModels/Log.js +123 -22
  143. package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
  144. package/build/dist/Models/AnalyticsModels/Metric.js +125 -27
  145. package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
  146. package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js +38 -21
  147. package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js.map +1 -1
  148. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js +17 -16
  149. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js.map +1 -1
  150. package/build/dist/Models/AnalyticsModels/{MetricItemAggMV1mByHost.js → MetricItemAggMV1mByHostV2.js} +54 -42
  151. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHostV2.js.map +1 -0
  152. package/build/dist/Models/AnalyticsModels/MonitorLog.js +4 -1
  153. package/build/dist/Models/AnalyticsModels/MonitorLog.js.map +1 -1
  154. package/build/dist/Models/AnalyticsModels/Profile.js +132 -26
  155. package/build/dist/Models/AnalyticsModels/Profile.js.map +1 -1
  156. package/build/dist/Models/AnalyticsModels/ProfileSample.js +121 -23
  157. package/build/dist/Models/AnalyticsModels/ProfileSample.js.map +1 -1
  158. package/build/dist/Models/AnalyticsModels/Span.js +144 -26
  159. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  160. package/build/dist/Models/DatabaseModels/Index.js +4 -0
  161. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  162. package/build/dist/Models/DatabaseModels/Service.js +30 -0
  163. package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
  164. package/build/dist/Models/DatabaseModels/TelemetryEntity.js +419 -0
  165. package/build/dist/Models/DatabaseModels/TelemetryEntity.js.map +1 -0
  166. package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js +317 -0
  167. package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js.map +1 -0
  168. package/build/dist/Models/DatabaseModels/TelemetryException.js +12 -12
  169. package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
  170. package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js +7 -7
  171. package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js.map +1 -1
  172. package/build/dist/Server/API/AIAgentDataAPI.js +14 -13
  173. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  174. package/build/dist/Server/API/DashboardAPI.js +2 -2
  175. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  176. package/build/dist/Server/API/TelemetryAPI.js +425 -129
  177. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  178. package/build/dist/Server/API/TelemetryExceptionAPI.js +2 -2
  179. package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
  180. package/build/dist/Server/Infrastructure/ClickhouseConfig.js +12 -0
  181. package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
  182. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781100000001-RenameTelemetryServiceIdToPrimaryEntityId.js +29 -0
  183. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781100000001-RenameTelemetryServiceIdToPrimaryEntityId.js.map +1 -0
  184. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000000-AddTelemetryEntityTable.js +38 -0
  185. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000000-AddTelemetryEntityTable.js.map +1 -0
  186. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000001-AddTelemetryEntityRelationshipTable.js +33 -0
  187. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000001-AddTelemetryEntityRelationshipTable.js.map +1 -0
  188. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781250074195-MigrationName.js +78 -0
  189. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781250074195-MigrationName.js.map +1 -0
  190. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781300000000-AddTelemetryEntityLabels.js +19 -0
  191. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781300000000-AddTelemetryEntityLabels.js.map +1 -0
  192. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781400000000-AddServiceTelemetrySdkLanguage.js +18 -0
  193. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781400000000-AddServiceTelemetrySdkLanguage.js.map +1 -0
  194. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
  195. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  196. package/build/dist/Server/Infrastructure/Queue.js +14 -3
  197. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  198. package/build/dist/Server/Middleware/TelemetryIngest.js +16 -18
  199. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  200. package/build/dist/Server/Services/AlertService.js +9 -9
  201. package/build/dist/Server/Services/AlertService.js.map +1 -1
  202. package/build/dist/Server/Services/AnalyticsDatabaseService.js +115 -40
  203. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  204. package/build/dist/Server/Services/ExceptionAggregationService.js +38 -18
  205. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
  206. package/build/dist/Server/Services/HostService.js +2 -1
  207. package/build/dist/Server/Services/HostService.js.map +1 -1
  208. package/build/dist/Server/Services/IncidentService.js +19 -19
  209. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  210. package/build/dist/Server/Services/Index.js +6 -2
  211. package/build/dist/Server/Services/Index.js.map +1 -1
  212. package/build/dist/Server/Services/LogAggregationService.js +100 -42
  213. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  214. package/build/dist/Server/Services/MetricAggregationService.js +27 -14
  215. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  216. package/build/dist/Server/Services/MetricBaselineService.js +28 -28
  217. package/build/dist/Server/Services/MetricBaselineService.js.map +1 -1
  218. package/build/dist/Server/Services/MetricItemAggMV1mByHostV2Service.js +28 -0
  219. package/build/dist/Server/Services/MetricItemAggMV1mByHostV2Service.js.map +1 -0
  220. package/build/dist/Server/Services/MetricService.js +116 -31
  221. package/build/dist/Server/Services/MetricService.js.map +1 -1
  222. package/build/dist/Server/Services/OpenTelemetryIngestService.js +103 -36
  223. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  224. package/build/dist/Server/Services/ProfileAggregationService.js +613 -105
  225. package/build/dist/Server/Services/ProfileAggregationService.js.map +1 -1
  226. package/build/dist/Server/Services/ServiceService.js +9 -5
  227. package/build/dist/Server/Services/ServiceService.js.map +1 -1
  228. package/build/dist/Server/Services/SpanService.js +217 -15
  229. package/build/dist/Server/Services/SpanService.js.map +1 -1
  230. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js +72 -0
  231. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +1 -0
  232. package/build/dist/Server/Services/TelemetryEntityService.js +201 -0
  233. package/build/dist/Server/Services/TelemetryEntityService.js.map +1 -0
  234. package/build/dist/Server/Services/TelemetryExceptionService.js +18 -18
  235. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  236. package/build/dist/Server/Services/TelemetryUsageBillingService.js +27 -21
  237. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  238. package/build/dist/Server/Services/TraceAggregationService.js +568 -43
  239. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  240. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +38 -2
  241. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
  242. package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js +36 -2
  243. package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js.map +1 -1
  244. package/build/dist/Server/Types/Database/Permissions/BasePermission.js +25 -1
  245. package/build/dist/Server/Types/Database/Permissions/BasePermission.js.map +1 -1
  246. package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js +17 -3
  247. package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js.map +1 -1
  248. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +1 -0
  249. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
  250. package/build/dist/Server/Types/Database/QueryHelper.js +31 -0
  251. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  252. package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js +3 -2
  253. package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js.map +1 -1
  254. package/build/dist/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.js +3 -2
  255. package/build/dist/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.js.map +1 -1
  256. package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js +46 -0
  257. package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js.map +1 -0
  258. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +97 -3
  259. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  260. package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js +3 -2
  261. package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js.map +1 -1
  262. package/build/dist/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.js +3 -2
  263. package/build/dist/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.js.map +1 -1
  264. package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +1 -1
  265. package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
  266. package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js +1 -2
  267. package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js.map +1 -1
  268. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +3 -4
  269. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  270. package/build/dist/Server/Utils/PrivacyFilterUtil.js +47 -0
  271. package/build/dist/Server/Utils/PrivacyFilterUtil.js.map +1 -0
  272. package/build/dist/Server/Utils/Profile/PprofEncoder.js +132 -4
  273. package/build/dist/Server/Utils/Profile/PprofEncoder.js.map +1 -1
  274. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +228 -0
  275. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -0
  276. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +5 -0
  277. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
  278. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +569 -0
  279. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -0
  280. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +14 -9
  281. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
  282. package/build/dist/Types/AnalyticsDatabase/TableColumnType.js +1 -0
  283. package/build/dist/Types/AnalyticsDatabase/TableColumnType.js.map +1 -1
  284. package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
  285. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  286. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.js +2 -0
  287. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.js.map +1 -0
  288. package/build/dist/Types/Dashboard/DashboardTemplates.js +4 -5
  289. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  290. package/build/dist/Types/Log/LogQueryParser.js +2 -2
  291. package/build/dist/Types/Log/LogQueryParser.js.map +1 -1
  292. package/build/dist/Types/Log/LogQueryToFilter.js +1 -1
  293. package/build/dist/Types/Log/LogQueryToFilter.js.map +1 -1
  294. package/build/dist/Types/Monitor/MonitorStepExceptionMonitor.js +9 -1
  295. package/build/dist/Types/Monitor/MonitorStepExceptionMonitor.js.map +1 -1
  296. package/build/dist/Types/Monitor/MonitorStepLogMonitor.js +9 -1
  297. package/build/dist/Types/Monitor/MonitorStepLogMonitor.js.map +1 -1
  298. package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js +13 -0
  299. package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js.map +1 -1
  300. package/build/dist/Types/Monitor/MonitorStepProfileMonitor.js +9 -1
  301. package/build/dist/Types/Monitor/MonitorStepProfileMonitor.js.map +1 -1
  302. package/build/dist/Types/Monitor/MonitorStepTraceMonitor.js +9 -1
  303. package/build/dist/Types/Monitor/MonitorStepTraceMonitor.js.map +1 -1
  304. package/build/dist/Types/Monitor/MonitorType.js +8 -1
  305. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  306. package/build/dist/Types/ObjectID.js +9 -0
  307. package/build/dist/Types/ObjectID.js.map +1 -1
  308. package/build/dist/Types/Telemetry/EntityRelationshipType.js +32 -0
  309. package/build/dist/Types/Telemetry/EntityRelationshipType.js.map +1 -0
  310. package/build/dist/Types/Telemetry/EntityType.js +34 -0
  311. package/build/dist/Types/Telemetry/EntityType.js.map +1 -0
  312. package/build/dist/Types/Text.js +32 -1
  313. package/build/dist/Types/Text.js.map +1 -1
  314. package/build/dist/Types/Trace/TraceAggregationType.js +1 -0
  315. package/build/dist/Types/Trace/TraceAggregationType.js.map +1 -1
  316. package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js +50 -1
  317. package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js.map +1 -1
  318. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +10 -9
  319. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  320. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js +8 -8
  321. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
  322. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +1 -1
  323. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -1
  324. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +2 -2
  325. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  326. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +4 -4
  327. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  328. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js +3 -3
  329. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
  330. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +43 -30
  331. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
  332. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +6 -2
  333. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
  334. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js +14 -3
  335. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js.map +1 -1
  336. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +18 -10
  337. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
  338. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js +4 -2
  339. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js.map +1 -1
  340. package/build/dist/UI/Utils/LogExport.js +2 -2
  341. package/build/dist/UI/Utils/LogExport.js.map +1 -1
  342. package/build/dist/UI/Utils/TelemetryService.js +16 -16
  343. package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
  344. package/build/dist/Utils/Dashboard/Components/DashboardTraceChartComponent.js +110 -0
  345. package/build/dist/Utils/Dashboard/Components/DashboardTraceChartComponent.js.map +1 -0
  346. package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
  347. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  348. package/build/dist/Utils/Telemetry/EntityKey.js +115 -0
  349. package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -0
  350. package/build/dist/Utils/Telemetry/EntityRelationship.js +71 -0
  351. package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -0
  352. package/build/dist/Utils/Traces/CriticalPath.js +5 -5
  353. package/build/dist/Utils/Traces/CriticalPath.js.map +1 -1
  354. package/build/dist/Utils/UUID.js +50 -0
  355. package/build/dist/Utils/UUID.js.map +1 -1
  356. package/package.json +2 -1
  357. package/tsconfig.json +10 -1
  358. package/Server/Services/MetricItemAggMV1mByHostService.ts +0 -30
  359. package/Types/Profile/ProfileMetricType.ts +0 -16
  360. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHost.js.map +0 -1
  361. package/build/dist/Server/Services/MetricItemAggMV1mByHostService.js +0 -28
  362. package/build/dist/Server/Services/MetricItemAggMV1mByHostService.js.map +0 -1
  363. package/build/dist/Tests/MockType.js +0 -5
  364. package/build/dist/Tests/MockType.js.map +0 -1
  365. package/build/dist/Tests/Models/AnalyticsModels/Log.test.js +0 -12
  366. package/build/dist/Tests/Models/AnalyticsModels/Log.test.js.map +0 -1
  367. package/build/dist/Tests/Models/File.test.js +0 -10
  368. package/build/dist/Tests/Models/File.test.js.map +0 -1
  369. package/build/dist/Tests/Server/API/BaseAPI.test.js +0 -590
  370. package/build/dist/Tests/Server/API/BaseAPI.test.js.map +0 -1
  371. package/build/dist/Tests/Server/API/Helpers.js +0 -27
  372. package/build/dist/Tests/Server/API/Helpers.js.map +0 -1
  373. package/build/dist/Tests/Server/API/ProbeAPI.test.js +0 -84
  374. package/build/dist/Tests/Server/API/ProbeAPI.test.js.map +0 -1
  375. package/build/dist/Tests/Server/API/ProjectAPI.test.js +0 -170
  376. package/build/dist/Tests/Server/API/ProjectAPI.test.js.map +0 -1
  377. package/build/dist/Tests/Server/API/UserSmsApi.test.js +0 -177
  378. package/build/dist/Tests/Server/API/UserSmsApi.test.js.map +0 -1
  379. package/build/dist/Tests/Server/Middleware/BearerTokenAuthorization.test.js +0 -63
  380. package/build/dist/Tests/Server/Middleware/BearerTokenAuthorization.test.js.map +0 -1
  381. package/build/dist/Tests/Server/Middleware/ClusterKeyAuthorization.test.js +0 -58
  382. package/build/dist/Tests/Server/Middleware/ClusterKeyAuthorization.test.js.map +0 -1
  383. package/build/dist/Tests/Server/Middleware/NotificationMiddleware.test.js +0 -101
  384. package/build/dist/Tests/Server/Middleware/NotificationMiddleware.test.js.map +0 -1
  385. package/build/dist/Tests/Server/Middleware/ProjectAuthorization.test.js +0 -160
  386. package/build/dist/Tests/Server/Middleware/ProjectAuthorization.test.js.map +0 -1
  387. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js +0 -410
  388. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js.map +0 -1
  389. package/build/dist/Tests/Server/Services/AlertEpisodeMemberService.test.js +0 -165
  390. package/build/dist/Tests/Server/Services/AlertEpisodeMemberService.test.js.map +0 -1
  391. package/build/dist/Tests/Server/Services/AlertEpisodeService.test.js +0 -193
  392. package/build/dist/Tests/Server/Services/AlertEpisodeService.test.js.map +0 -1
  393. package/build/dist/Tests/Server/Services/AlertGroupingEngineService.test.js +0 -435
  394. package/build/dist/Tests/Server/Services/AlertGroupingEngineService.test.js.map +0 -1
  395. package/build/dist/Tests/Server/Services/AlertGroupingRuleService.test.js +0 -320
  396. package/build/dist/Tests/Server/Services/AlertGroupingRuleService.test.js.map +0 -1
  397. package/build/dist/Tests/Server/Services/AnalyticsDatabaseService.test.js +0 -266
  398. package/build/dist/Tests/Server/Services/AnalyticsDatabaseService.test.js.map +0 -1
  399. package/build/dist/Tests/Server/Services/BillingService.test.js +0 -910
  400. package/build/dist/Tests/Server/Services/BillingService.test.js.map +0 -1
  401. package/build/dist/Tests/Server/Services/LogAggregationService.test.js +0 -75
  402. package/build/dist/Tests/Server/Services/LogAggregationService.test.js.map +0 -1
  403. package/build/dist/Tests/Server/Services/ProbeService.test.js +0 -127
  404. package/build/dist/Tests/Server/Services/ProbeService.test.js.map +0 -1
  405. package/build/dist/Tests/Server/Services/ScheduledMaintenanceService.test.js +0 -114
  406. package/build/dist/Tests/Server/Services/ScheduledMaintenanceService.test.js.map +0 -1
  407. package/build/dist/Tests/Server/Services/TeamMemberService.test.js +0 -106
  408. package/build/dist/Tests/Server/Services/TeamMemberService.test.js.map +0 -1
  409. package/build/dist/Tests/Server/Services/TelemetryAttributeService.test.js +0 -50
  410. package/build/dist/Tests/Server/Services/TelemetryAttributeService.test.js.map +0 -1
  411. package/build/dist/Tests/Server/TestingUtils/Init.js +0 -4
  412. package/build/dist/Tests/Server/TestingUtils/Init.js.map +0 -1
  413. package/build/dist/Tests/Server/TestingUtils/Postgres/TestDataSourceOptions.js +0 -9
  414. package/build/dist/Tests/Server/TestingUtils/Postgres/TestDataSourceOptions.js.map +0 -1
  415. package/build/dist/Tests/Server/TestingUtils/Redis/TestRedisOptions.js +0 -16
  416. package/build/dist/Tests/Server/TestingUtils/Redis/TestRedisOptions.js.map +0 -1
  417. package/build/dist/Tests/Server/TestingUtils/Services/BillingServiceHelper.js +0 -125
  418. package/build/dist/Tests/Server/TestingUtils/Services/BillingServiceHelper.js.map +0 -1
  419. package/build/dist/Tests/Server/TestingUtils/Services/ProjectServiceHelper.js +0 -39
  420. package/build/dist/Tests/Server/TestingUtils/Services/ProjectServiceHelper.js.map +0 -1
  421. package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceServiceHelper.js +0 -20
  422. package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceServiceHelper.js.map +0 -1
  423. package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceStateServiceHelper.js +0 -31
  424. package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceStateServiceHelper.js.map +0 -1
  425. package/build/dist/Tests/Server/TestingUtils/Services/TeamMemberServiceHelper.js +0 -14
  426. package/build/dist/Tests/Server/TestingUtils/Services/TeamMemberServiceHelper.js.map +0 -1
  427. package/build/dist/Tests/Server/TestingUtils/Services/TeamServiceHelper.js +0 -21
  428. package/build/dist/Tests/Server/TestingUtils/Services/TeamServiceHelper.js.map +0 -1
  429. package/build/dist/Tests/Server/TestingUtils/Services/Types.js +0 -2
  430. package/build/dist/Tests/Server/TestingUtils/Services/Types.js.map +0 -1
  431. package/build/dist/Tests/Server/TestingUtils/Services/UserServiceHelper.js +0 -37
  432. package/build/dist/Tests/Server/TestingUtils/Services/UserServiceHelper.js.map +0 -1
  433. package/build/dist/Tests/Server/TestingUtils/__mocks__/Stripe.mock.js +0 -13
  434. package/build/dist/Tests/Server/TestingUtils/__mocks__/Stripe.mock.js.map +0 -1
  435. package/build/dist/Tests/Server/TestingUtils/__mocks__/TestDatabase.mock.js +0 -22
  436. package/build/dist/Tests/Server/TestingUtils/__mocks__/TestDatabase.mock.js.map +0 -1
  437. package/build/dist/Tests/Server/Types/Domain.test.js +0 -78
  438. package/build/dist/Tests/Server/Types/Domain.test.js.map +0 -1
  439. package/build/dist/Tests/Server/Utils/AnalyticsDatabase/Statement.test.js +0 -94
  440. package/build/dist/Tests/Server/Utils/AnalyticsDatabase/Statement.test.js.map +0 -1
  441. package/build/dist/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.js +0 -459
  442. package/build/dist/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.js.map +0 -1
  443. package/build/dist/Tests/Server/Utils/Cookie.test.js +0 -83
  444. package/build/dist/Tests/Server/Utils/Cookie.test.js.map +0 -1
  445. package/build/dist/Tests/Server/Utils/CronTab.test.js +0 -29
  446. package/build/dist/Tests/Server/Utils/CronTab.test.js.map +0 -1
  447. package/build/dist/Tests/Server/Utils/JsonToCsv.test.js +0 -114
  448. package/build/dist/Tests/Server/Utils/JsonToCsv.test.js.map +0 -1
  449. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js +0 -606
  450. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js.map +0 -1
  451. package/build/dist/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.js +0 -255
  452. package/build/dist/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.js.map +0 -1
  453. package/build/dist/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.js +0 -142
  454. package/build/dist/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.js.map +0 -1
  455. package/build/dist/Tests/Server/Utils/StatusPageResource.test.js +0 -122
  456. package/build/dist/Tests/Server/Utils/StatusPageResource.test.js.map +0 -1
  457. package/build/dist/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.js +0 -0
  458. package/build/dist/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.js.map +0 -1
  459. package/build/dist/Tests/Server/Utils/VM/VMAPI.test.js +0 -205
  460. package/build/dist/Tests/Server/Utils/VM/VMAPI.test.js.map +0 -1
  461. package/build/dist/Tests/Spy.js +0 -4
  462. package/build/dist/Tests/Spy.js.map +0 -1
  463. package/build/dist/Tests/Types/API/ErrorResponse.test.js +0 -13
  464. package/build/dist/Tests/Types/API/ErrorResponse.test.js.map +0 -1
  465. package/build/dist/Tests/Types/API/HTTPErrorResponse.test.js +0 -33
  466. package/build/dist/Tests/Types/API/HTTPErrorResponse.test.js.map +0 -1
  467. package/build/dist/Tests/Types/API/HTTPMethod.test.js +0 -16
  468. package/build/dist/Tests/Types/API/HTTPMethod.test.js.map +0 -1
  469. package/build/dist/Tests/Types/API/Headers.test.js +0 -14
  470. package/build/dist/Tests/Types/API/Headers.test.js.map +0 -1
  471. package/build/dist/Tests/Types/API/Hostname.test.js +0 -22
  472. package/build/dist/Tests/Types/API/Hostname.test.js.map +0 -1
  473. package/build/dist/Tests/Types/API/Protocal.test.js +0 -19
  474. package/build/dist/Tests/Types/API/Protocal.test.js.map +0 -1
  475. package/build/dist/Tests/Types/API/Response.test.js +0 -14
  476. package/build/dist/Tests/Types/API/Response.test.js.map +0 -1
  477. package/build/dist/Tests/Types/API/ResponseType.test.js +0 -13
  478. package/build/dist/Tests/Types/API/ResponseType.test.js.map +0 -1
  479. package/build/dist/Tests/Types/API/Route.test.js +0 -30
  480. package/build/dist/Tests/Types/API/Route.test.js.map +0 -1
  481. package/build/dist/Tests/Types/API/StatusCode.test.js +0 -26
  482. package/build/dist/Tests/Types/API/StatusCode.test.js.map +0 -1
  483. package/build/dist/Tests/Types/API/URL.test.js +0 -33
  484. package/build/dist/Tests/Types/API/URL.test.js.map +0 -1
  485. package/build/dist/Tests/Types/Alerts/AlertEventType.test.js +0 -34
  486. package/build/dist/Tests/Types/Alerts/AlertEventType.test.js.map +0 -1
  487. package/build/dist/Tests/Types/Alerts/AlertType.test.js +0 -19
  488. package/build/dist/Tests/Types/Alerts/AlertType.test.js.map +0 -1
  489. package/build/dist/Tests/Types/AppEnvironment.test.js +0 -13
  490. package/build/dist/Tests/Types/AppEnvironment.test.js.map +0 -1
  491. package/build/dist/Tests/Types/ApplicationLog/ApplicationLogType.test.js +0 -13
  492. package/build/dist/Tests/Types/ApplicationLog/ApplicationLogType.test.js.map +0 -1
  493. package/build/dist/Tests/Types/ArrayUtil.test.js +0 -71
  494. package/build/dist/Tests/Types/ArrayUtil.test.js.map +0 -1
  495. package/build/dist/Tests/Types/Billing/SubscriptionPlan.test.js +0 -181
  496. package/build/dist/Tests/Types/Billing/SubscriptionPlan.test.js.map +0 -1
  497. package/build/dist/Tests/Types/BrandColors.test.js +0 -124
  498. package/build/dist/Tests/Types/BrandColors.test.js.map +0 -1
  499. package/build/dist/Tests/Types/Char.test.js +0 -82
  500. package/build/dist/Tests/Types/Char.test.js.map +0 -1
  501. package/build/dist/Tests/Types/Code/CodeType.test.js +0 -13
  502. package/build/dist/Tests/Types/Code/CodeType.test.js.map +0 -1
  503. package/build/dist/Tests/Types/Color.test.js +0 -44
  504. package/build/dist/Tests/Types/Color.test.js.map +0 -1
  505. package/build/dist/Tests/Types/Company/CompanySize.test.js +0 -20
  506. package/build/dist/Tests/Types/Company/CompanySize.test.js.map +0 -1
  507. package/build/dist/Tests/Types/Company/JobRole.test.js +0 -22
  508. package/build/dist/Tests/Types/Company/JobRole.test.js.map +0 -1
  509. package/build/dist/Tests/Types/Countries.test.js +0 -249
  510. package/build/dist/Tests/Types/Countries.test.js.map +0 -1
  511. package/build/dist/Tests/Types/Database/ColumnLength.test.js +0 -43
  512. package/build/dist/Tests/Types/Database/ColumnLength.test.js.map +0 -1
  513. package/build/dist/Tests/Types/Database/ColumnType.test.js +0 -79
  514. package/build/dist/Tests/Types/Database/ColumnType.test.js.map +0 -1
  515. package/build/dist/Tests/Types/Database/Columns.test.js +0 -20
  516. package/build/dist/Tests/Types/Database/Columns.test.js.map +0 -1
  517. package/build/dist/Tests/Types/Database/CompareBase.test.js +0 -37
  518. package/build/dist/Tests/Types/Database/CompareBase.test.js.map +0 -1
  519. package/build/dist/Tests/Types/Database/Date.test.js +0 -62
  520. package/build/dist/Tests/Types/Database/Date.test.js.map +0 -1
  521. package/build/dist/Tests/Types/Database/EqualTo.test.js +0 -65
  522. package/build/dist/Tests/Types/Database/EqualTo.test.js.map +0 -1
  523. package/build/dist/Tests/Types/Database/EqualToOrNull.test.js +0 -62
  524. package/build/dist/Tests/Types/Database/EqualToOrNull.test.js.map +0 -1
  525. package/build/dist/Tests/Types/Database/InBetween.test.js +0 -72
  526. package/build/dist/Tests/Types/Database/InBetween.test.js.map +0 -1
  527. package/build/dist/Tests/Types/Database/LimitMax.test.js +0 -18
  528. package/build/dist/Tests/Types/Database/LimitMax.test.js.map +0 -1
  529. package/build/dist/Tests/Types/Database/NotEqual.test.js +0 -19
  530. package/build/dist/Tests/Types/Database/NotEqual.test.js.map +0 -1
  531. package/build/dist/Tests/Types/Database/Search.test.js +0 -10
  532. package/build/dist/Tests/Types/Database/Search.test.js.map +0 -1
  533. package/build/dist/Tests/Types/DatabaseType.test.js +0 -7
  534. package/build/dist/Tests/Types/DatabaseType.test.js.map +0 -1
  535. package/build/dist/Tests/Types/Date.test.js +0 -194
  536. package/build/dist/Tests/Types/Date.test.js.map +0 -1
  537. package/build/dist/Tests/Types/Dictionary.test.js +0 -25
  538. package/build/dist/Tests/Types/Dictionary.test.js.map +0 -1
  539. package/build/dist/Tests/Types/Domain.test.js +0 -54
  540. package/build/dist/Tests/Types/Domain.test.js.map +0 -1
  541. package/build/dist/Tests/Types/Email/Email.test.js +0 -51
  542. package/build/dist/Tests/Types/Email/Email.test.js.map +0 -1
  543. package/build/dist/Tests/Types/EmailWithName.test.js +0 -36
  544. package/build/dist/Tests/Types/EmailWithName.test.js.map +0 -1
  545. package/build/dist/Tests/Types/EncryptionAlgorithm.test.js +0 -7
  546. package/build/dist/Tests/Types/EncryptionAlgorithm.test.js.map +0 -1
  547. package/build/dist/Tests/Types/Exception/ApiException.test.js +0 -10
  548. package/build/dist/Tests/Types/Exception/ApiException.test.js.map +0 -1
  549. package/build/dist/Tests/Types/Exception/BadDataException.test.js +0 -12
  550. package/build/dist/Tests/Types/Exception/BadDataException.test.js.map +0 -1
  551. package/build/dist/Tests/Types/Exception/BadOperationException.test.js +0 -10
  552. package/build/dist/Tests/Types/Exception/BadOperationException.test.js.map +0 -1
  553. package/build/dist/Tests/Types/Exception/BadRequestException.test.js +0 -12
  554. package/build/dist/Tests/Types/Exception/BadRequestException.test.js.map +0 -1
  555. package/build/dist/Tests/Types/Exception/DatabaseNotConnectedException.test.js +0 -10
  556. package/build/dist/Tests/Types/Exception/DatabaseNotConnectedException.test.js.map +0 -1
  557. package/build/dist/Tests/Types/Exception/Exception.test.js +0 -15
  558. package/build/dist/Tests/Types/Exception/Exception.test.js.map +0 -1
  559. package/build/dist/Tests/Types/Exception/NotImplementedException.test.js +0 -12
  560. package/build/dist/Tests/Types/Exception/NotImplementedException.test.js.map +0 -1
  561. package/build/dist/Tests/Types/File.test.js +0 -22
  562. package/build/dist/Tests/Types/File.test.js.map +0 -1
  563. package/build/dist/Tests/Types/HashedString.test.js +0 -51
  564. package/build/dist/Tests/Types/HashedString.test.js.map +0 -1
  565. package/build/dist/Tests/Types/Html.test.js +0 -8
  566. package/build/dist/Tests/Types/Html.test.js.map +0 -1
  567. package/build/dist/Tests/Types/IP/IP.test.js +0 -65
  568. package/build/dist/Tests/Types/IP/IP.test.js.map +0 -1
  569. package/build/dist/Tests/Types/IP/IPType.test.js +0 -10
  570. package/build/dist/Tests/Types/IP/IPType.test.js.map +0 -1
  571. package/build/dist/Tests/Types/IP/IPv4.test.js +0 -17
  572. package/build/dist/Tests/Types/IP/IPv4.test.js.map +0 -1
  573. package/build/dist/Tests/Types/IP/IPv6.test.js +0 -17
  574. package/build/dist/Tests/Types/IP/IPv6.test.js.map +0 -1
  575. package/build/dist/Tests/Types/JSON.test.js +0 -37
  576. package/build/dist/Tests/Types/JSON.test.js.map +0 -1
  577. package/build/dist/Tests/Types/JSONFunctions.test.js +0 -38
  578. package/build/dist/Tests/Types/JSONFunctions.test.js.map +0 -1
  579. package/build/dist/Tests/Types/ListData.test.js +0 -34
  580. package/build/dist/Tests/Types/ListData.test.js.map +0 -1
  581. package/build/dist/Tests/Types/Monitor/KubernetesAlertTemplates.test.js +0 -121
  582. package/build/dist/Tests/Types/Monitor/KubernetesAlertTemplates.test.js.map +0 -1
  583. package/build/dist/Tests/Types/Name.test.js +0 -26
  584. package/build/dist/Tests/Types/Name.test.js.map +0 -1
  585. package/build/dist/Tests/Types/ObjectID.test.js +0 -12
  586. package/build/dist/Tests/Types/ObjectID.test.js.map +0 -1
  587. package/build/dist/Tests/Types/OnCallDutyPolicy/LayerUtil.test.js +0 -530
  588. package/build/dist/Tests/Types/OnCallDutyPolicy/LayerUtil.test.js.map +0 -1
  589. package/build/dist/Tests/Types/Permission.test.js +0 -99
  590. package/build/dist/Tests/Types/Permission.test.js.map +0 -1
  591. package/build/dist/Tests/Types/Phone.test.js +0 -37
  592. package/build/dist/Tests/Types/Phone.test.js.map +0 -1
  593. package/build/dist/Tests/Types/Port.test.js +0 -35
  594. package/build/dist/Tests/Types/Port.test.js.map +0 -1
  595. package/build/dist/Tests/Types/PositiveNumber.test.js +0 -101
  596. package/build/dist/Tests/Types/PositiveNumber.test.js.map +0 -1
  597. package/build/dist/Tests/Types/SecuritySeverity.test.js +0 -16
  598. package/build/dist/Tests/Types/SecuritySeverity.test.js.map +0 -1
  599. package/build/dist/Tests/Types/SerializableObject.test.js +0 -37
  600. package/build/dist/Tests/Types/SerializableObject.test.js.map +0 -1
  601. package/build/dist/Tests/Types/Sleep.test.js +0 -14
  602. package/build/dist/Tests/Types/Sleep.test.js.map +0 -1
  603. package/build/dist/Tests/Types/Text.test.js +0 -8
  604. package/build/dist/Tests/Types/Text.test.js.map +0 -1
  605. package/build/dist/Tests/Types/Timezone.test.js +0 -596
  606. package/build/dist/Tests/Types/Timezone.test.js.map +0 -1
  607. package/build/dist/Tests/Types/Typeof.test.js +0 -16
  608. package/build/dist/Tests/Types/Typeof.test.js.map +0 -1
  609. package/build/dist/Tests/Types/UserType.test.js +0 -16
  610. package/build/dist/Tests/Types/UserType.test.js.map +0 -1
  611. package/build/dist/Tests/Types/Version.test.js +0 -35
  612. package/build/dist/Tests/Types/Version.test.js.map +0 -1
  613. package/build/dist/Tests/Types/XML.test.js +0 -35
  614. package/build/dist/Tests/Types/XML.test.js.map +0 -1
  615. package/build/dist/Tests/UI/Components/404.test.js +0 -59
  616. package/build/dist/Tests/UI/Components/404.test.js.map +0 -1
  617. package/build/dist/Tests/UI/Components/Alert.test.js +0 -83
  618. package/build/dist/Tests/UI/Components/Alert.test.js.map +0 -1
  619. package/build/dist/Tests/UI/Components/Badge.test.js +0 -59
  620. package/build/dist/Tests/UI/Components/Badge.test.js.map +0 -1
  621. package/build/dist/Tests/UI/Components/BasicForm.test.js +0 -92
  622. package/build/dist/Tests/UI/Components/BasicForm.test.js.map +0 -1
  623. package/build/dist/Tests/UI/Components/Breadcrumbs.test.js +0 -69
  624. package/build/dist/Tests/UI/Components/Breadcrumbs.test.js.map +0 -1
  625. package/build/dist/Tests/UI/Components/Button.test.js +0 -104
  626. package/build/dist/Tests/UI/Components/Button.test.js.map +0 -1
  627. package/build/dist/Tests/UI/Components/Card.test.js +0 -81
  628. package/build/dist/Tests/UI/Components/Card.test.js.map +0 -1
  629. package/build/dist/Tests/UI/Components/ColorViewer.test.js +0 -42
  630. package/build/dist/Tests/UI/Components/ColorViewer.test.js.map +0 -1
  631. package/build/dist/Tests/UI/Components/ComponentsModal.test.js +0 -233
  632. package/build/dist/Tests/UI/Components/ComponentsModal.test.js.map +0 -1
  633. package/build/dist/Tests/UI/Components/ConfirmModal.test.js +0 -57
  634. package/build/dist/Tests/UI/Components/ConfirmModal.test.js.map +0 -1
  635. package/build/dist/Tests/UI/Components/DictionaryOfStrings.test.js +0 -84
  636. package/build/dist/Tests/UI/Components/DictionaryOfStrings.test.js.map +0 -1
  637. package/build/dist/Tests/UI/Components/Dropdown.test.js +0 -146
  638. package/build/dist/Tests/UI/Components/Dropdown.test.js.map +0 -1
  639. package/build/dist/Tests/UI/Components/DuplicateModel.test.js +0 -229
  640. package/build/dist/Tests/UI/Components/DuplicateModel.test.js.map +0 -1
  641. package/build/dist/Tests/UI/Components/EmptyState/EmptyState.test.js +0 -26
  642. package/build/dist/Tests/UI/Components/EmptyState/EmptyState.test.js.map +0 -1
  643. package/build/dist/Tests/UI/Components/ErrorBoundary.test.js +0 -32
  644. package/build/dist/Tests/UI/Components/ErrorBoundary.test.js.map +0 -1
  645. package/build/dist/Tests/UI/Components/FilePicker.test.js +0 -342
  646. package/build/dist/Tests/UI/Components/FilePicker.test.js.map +0 -1
  647. package/build/dist/Tests/UI/Components/HiddenText.test.js +0 -50
  648. package/build/dist/Tests/UI/Components/HiddenText.test.js.map +0 -1
  649. package/build/dist/Tests/UI/Components/Input.test.js +0 -223
  650. package/build/dist/Tests/UI/Components/Input.test.js.map +0 -1
  651. package/build/dist/Tests/UI/Components/Item.test.js +0 -58
  652. package/build/dist/Tests/UI/Components/Item.test.js.map +0 -1
  653. package/build/dist/Tests/UI/Components/List.test.js +0 -83
  654. package/build/dist/Tests/UI/Components/List.test.js.map +0 -1
  655. package/build/dist/Tests/UI/Components/Loader.test.js +0 -19
  656. package/build/dist/Tests/UI/Components/Loader.test.js.map +0 -1
  657. package/build/dist/Tests/UI/Components/MarkdownEditor.test.js +0 -85
  658. package/build/dist/Tests/UI/Components/MarkdownEditor.test.js.map +0 -1
  659. package/build/dist/Tests/UI/Components/MasterPage.test.js +0 -46
  660. package/build/dist/Tests/UI/Components/MasterPage.test.js.map +0 -1
  661. package/build/dist/Tests/UI/Components/Modal.test.js +0 -127
  662. package/build/dist/Tests/UI/Components/Modal.test.js.map +0 -1
  663. package/build/dist/Tests/UI/Components/NavBar.test.js +0 -52
  664. package/build/dist/Tests/UI/Components/NavBar.test.js.map +0 -1
  665. package/build/dist/Tests/UI/Components/OrderedStatesList.test.js +0 -86
  666. package/build/dist/Tests/UI/Components/OrderedStatesList.test.js.map +0 -1
  667. package/build/dist/Tests/UI/Components/Pagination.test.js +0 -137
  668. package/build/dist/Tests/UI/Components/Pagination.test.js.map +0 -1
  669. package/build/dist/Tests/UI/Components/Pill.test.js +0 -55
  670. package/build/dist/Tests/UI/Components/Pill.test.js.map +0 -1
  671. package/build/dist/Tests/UI/Components/Probe.test.js +0 -52
  672. package/build/dist/Tests/UI/Components/Probe.test.js.map +0 -1
  673. package/build/dist/Tests/UI/Components/ProgressBar.test.js +0 -41
  674. package/build/dist/Tests/UI/Components/ProgressBar.test.js.map +0 -1
  675. package/build/dist/Tests/UI/Components/RadioButtons.test.js +0 -66
  676. package/build/dist/Tests/UI/Components/RadioButtons.test.js.map +0 -1
  677. package/build/dist/Tests/UI/Components/SideMenuItem.test.js +0 -99
  678. package/build/dist/Tests/UI/Components/SideMenuItem.test.js.map +0 -1
  679. package/build/dist/Tests/UI/Components/SideOver.test.js +0 -77
  680. package/build/dist/Tests/UI/Components/SideOver.test.js.map +0 -1
  681. package/build/dist/Tests/UI/Components/Tabs.test.js +0 -56
  682. package/build/dist/Tests/UI/Components/Tabs.test.js.map +0 -1
  683. package/build/dist/Tests/UI/Components/Template/Template.test.js +0 -15
  684. package/build/dist/Tests/UI/Components/Template/Template.test.js.map +0 -1
  685. package/build/dist/Tests/UI/Components/TextArea.test.js +0 -112
  686. package/build/dist/Tests/UI/Components/TextArea.test.js.map +0 -1
  687. package/build/dist/Tests/UI/Components/TimePicker/TimePicker.test.js +0 -352
  688. package/build/dist/Tests/UI/Components/TimePicker/TimePicker.test.js.map +0 -1
  689. package/build/dist/Tests/UI/Components/Toast.test.js +0 -48
  690. package/build/dist/Tests/UI/Components/Toast.test.js.map +0 -1
  691. package/build/dist/Tests/UI/Components/Toggle.test.js +0 -95
  692. package/build/dist/Tests/UI/Components/Toggle.test.js.map +0 -1
  693. package/build/dist/Tests/UI/Components/TopSection.test.js +0 -33
  694. package/build/dist/Tests/UI/Components/TopSection.test.js.map +0 -1
  695. package/build/dist/Tests/UI/Components/XAxis.test.js +0 -21
  696. package/build/dist/Tests/UI/Components/XAxis.test.js.map +0 -1
  697. package/build/dist/Tests/UI/Index.js +0 -2
  698. package/build/dist/Tests/UI/Index.js.map +0 -1
  699. package/build/dist/Tests/UI/Mocks/FileMock.js +0 -3
  700. package/build/dist/Tests/UI/Mocks/FileMock.js.map +0 -1
  701. package/build/dist/Tests/Utils/API.test.js +0 -399
  702. package/build/dist/Tests/Utils/API.test.js.map +0 -1
  703. package/build/dist/Tests/Utils/Analytics.test.js +0 -67
  704. package/build/dist/Tests/Utils/Analytics.test.js.map +0 -1
  705. package/build/dist/Tests/Utils/CronTime.test.js +0 -22
  706. package/build/dist/Tests/Utils/CronTime.test.js.map +0 -1
  707. package/build/dist/Tests/Utils/Faker.test.js +0 -27
  708. package/build/dist/Tests/Utils/Faker.test.js.map +0 -1
  709. package/build/dist/Tests/Utils/MetricUnitUtil.test.js +0 -187
  710. package/build/dist/Tests/Utils/MetricUnitUtil.test.js.map +0 -1
  711. package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js +0 -224
  712. package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js.map +0 -1
  713. package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js +0 -180
  714. package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js.map +0 -1
  715. package/build/dist/Tests/Utils/RecordingRuleExpression.test.js +0 -142
  716. package/build/dist/Tests/Utils/RecordingRuleExpression.test.js.map +0 -1
  717. package/build/dist/Tests/Utils/Slug.test.js +0 -20
  718. package/build/dist/Tests/Utils/Slug.test.js.map +0 -1
  719. package/build/dist/Tests/Utils/UUID.test.js +0 -48
  720. package/build/dist/Tests/Utils/UUID.test.js.map +0 -1
  721. package/build/dist/Tests/jest.setup.js +0 -30
  722. package/build/dist/Tests/jest.setup.js.map +0 -1
  723. package/build/dist/Types/Profile/ProfileMetricType.js +0 -17
  724. package/build/dist/Types/Profile/ProfileMetricType.js.map +0 -1
@@ -6,6 +6,11 @@ import TraceAggregationType from "./TraceAggregationType";
6
6
  * match. Each source is aliased (A, B, C, ...) and referenced from the rule's
7
7
  * expression string.
8
8
  */
9
+ export interface TraceRecordingRuleAttributeFilter {
10
+ key: string;
11
+ value: string;
12
+ }
13
+
9
14
  export interface TraceRecordingRuleSource {
10
15
  alias: string;
11
16
  aggregationType: TraceAggregationType;
@@ -13,8 +18,16 @@ export interface TraceRecordingRuleSource {
13
18
  spanNameRegex?: string;
14
19
  spanKind?: string;
15
20
  onlyErrors?: boolean;
21
+ /*
22
+ * Legacy single attribute filter — superseded by `filterAttributes` but
23
+ * still honored for rules saved before multi-filter support. Use
24
+ * TraceRecordingRuleDefinitionUtil.getSourceAttributeFilters to read the
25
+ * combined set.
26
+ */
16
27
  filterAttributeKey?: string;
17
28
  filterAttributeValue?: string;
29
+ // Multiple attribute equality filters — ANDed (e.g. http.route AND url.host).
30
+ filterAttributes?: Array<TraceRecordingRuleAttributeFilter>;
18
31
  }
19
32
 
20
33
  /*
@@ -78,6 +91,11 @@ export class TraceRecordingRuleDefinitionUtil {
78
91
  label: "p50 Duration (s)",
79
92
  description: "Median span duration.",
80
93
  },
94
+ {
95
+ value: TraceAggregationType.P90DurationSeconds,
96
+ label: "p90 Duration (s)",
97
+ description: "90th percentile span duration.",
98
+ },
81
99
  {
82
100
  value: TraceAggregationType.P95DurationSeconds,
83
101
  label: "p95 Duration (s)",
@@ -112,6 +130,38 @@ export class TraceRecordingRuleDefinitionUtil {
112
130
  ];
113
131
  }
114
132
 
133
+ /*
134
+ * Combined attribute filters for a source: the multi-filter array plus the
135
+ * legacy single pair (deduplicated by key, array entries win).
136
+ */
137
+ public static getSourceAttributeFilters(
138
+ source: TraceRecordingRuleSource,
139
+ ): Array<TraceRecordingRuleAttributeFilter> {
140
+ const filters: Array<TraceRecordingRuleAttributeFilter> = [];
141
+ const seenKeys: Set<string> = new Set<string>();
142
+
143
+ for (const filter of source.filterAttributes || []) {
144
+ if (!filter || typeof filter !== "object") {
145
+ continue;
146
+ }
147
+ const key: string = (filter.key || "").trim();
148
+ const value: string = (filter.value || "").trim();
149
+ if (!key || !value || seenKeys.has(key)) {
150
+ continue;
151
+ }
152
+ seenKeys.add(key);
153
+ filters.push({ key, value });
154
+ }
155
+
156
+ const legacyKey: string = (source.filterAttributeKey || "").trim();
157
+ const legacyValue: string = (source.filterAttributeValue || "").trim();
158
+ if (legacyKey && legacyValue && !seenKeys.has(legacyKey)) {
159
+ filters.push({ key: legacyKey, value: legacyValue });
160
+ }
161
+
162
+ return filters;
163
+ }
164
+
115
165
  public static getNextAlias(
116
166
  sources: Array<TraceRecordingRuleSource> | undefined,
117
167
  ): string {
@@ -161,6 +211,12 @@ export class TraceRecordingRuleDefinitionUtil {
161
211
  const aliases: Set<string> = new Set<string>();
162
212
  for (let i: number = 0; i < sources.length; i++) {
163
213
  const source: TraceRecordingRuleSource = sources[i]!;
214
+
215
+ // Definitions arrive as JSON (deep links, API writes) — never throw.
216
+ if (!source || typeof source !== "object") {
217
+ return `Source #${i + 1}: Invalid source.`;
218
+ }
219
+
164
220
  const prefix: string = `Source ${source.alias || `#${i + 1}`}: `;
165
221
 
166
222
  if (!source.alias || !ALIAS_REGEX.test(source.alias)) {
@@ -184,6 +240,24 @@ export class TraceRecordingRuleDefinitionUtil {
184
240
  if (hasFilterKey !== hasFilterValue) {
185
241
  return `${prefix}Attribute filter needs both a key and a value (or leave both empty).`;
186
242
  }
243
+
244
+ if (
245
+ source.filterAttributes !== undefined &&
246
+ !Array.isArray(source.filterAttributes)
247
+ ) {
248
+ return `${prefix}Invalid attribute filters.`;
249
+ }
250
+
251
+ for (const filter of source.filterAttributes || []) {
252
+ if (!filter || typeof filter !== "object") {
253
+ return `${prefix}Invalid attribute filter row.`;
254
+ }
255
+ const hasKey: boolean = Boolean(filter.key?.trim());
256
+ const hasValue: boolean = Boolean(filter.value?.trim());
257
+ if (hasKey !== hasValue) {
258
+ return `${prefix}Attribute filter needs both a key and a value (or remove the row).`;
259
+ }
260
+ }
187
261
  }
188
262
 
189
263
  const expression: string = (definition.expression || "").trim();
@@ -466,7 +466,7 @@ const LogsViewer: FunctionComponent<ComponentProps> = (
466
466
  * Logs without a service.name are tagged with the projectId
467
467
  * (ServiceType.Unknown) and have no Service row. Register a
468
468
  * synthetic "Unknown Service" keyed by the projectId so the
469
- * serviceId -> name resolution and the serviceId facet render
469
+ * primaryEntityId -> name resolution and the service facet render
470
470
  * "Unknown Service" instead of a raw id. Harmless when no logs
471
471
  * are unattributed — nothing resolves against it.
472
472
  */
@@ -631,17 +631,17 @@ const LogsViewer: FunctionComponent<ComponentProps> = (
631
631
 
632
632
  // Resolve human-readable service name to UUID if needed
633
633
  if (
634
- queryFilter["serviceId"] &&
635
- typeof queryFilter["serviceId"] === "string"
634
+ queryFilter["primaryEntityId"] &&
635
+ typeof queryFilter["primaryEntityId"] === "string"
636
636
  ) {
637
- const serviceName: string = queryFilter["serviceId"] as string;
637
+ const serviceName: string = queryFilter["primaryEntityId"] as string;
638
638
  const resolvedId: string | undefined = resolveServiceNameToId(
639
639
  serviceName,
640
640
  serviceMap,
641
641
  );
642
642
 
643
643
  if (resolvedId) {
644
- queryFilter["serviceId"] = resolvedId;
644
+ queryFilter["primaryEntityId"] = resolvedId;
645
645
  }
646
646
  }
647
647
 
@@ -824,7 +824,7 @@ const LogsViewer: FunctionComponent<ComponentProps> = (
824
824
  }
825
825
 
826
826
  return props.activeFilters.map((filter: ActiveFilter): ActiveFilter => {
827
- if (filter.facetKey === "serviceId" && serviceMap[filter.value]) {
827
+ if (filter.facetKey === "primaryEntityId" && serviceMap[filter.value]) {
828
828
  const service: Service | undefined = serviceMap[filter.value];
829
829
  return {
830
830
  ...filter,
@@ -870,7 +870,7 @@ const LogsViewer: FunctionComponent<ComponentProps> = (
870
870
  ]);
871
871
 
872
872
  /*
873
- * Replace serviceId UUIDs with human-readable names in value suggestions,
873
+ * Replace primaryEntityId UUIDs with human-readable names in value suggestions,
874
874
  * and merge in the lazily-fetched attribute value suggestions.
875
875
  * Must be before early returns to maintain consistent hook call order.
876
876
  */
@@ -889,8 +889,11 @@ const LogsViewer: FunctionComponent<ComponentProps> = (
889
889
  ...attributeValueSuggestions,
890
890
  };
891
891
 
892
- if (suggestions["serviceId"] && Object.keys(serviceMap).length > 0) {
893
- suggestions["serviceId"] = suggestions["serviceId"].map(
892
+ if (
893
+ suggestions["primaryEntityId"] &&
894
+ Object.keys(serviceMap).length > 0
895
+ ) {
896
+ suggestions["primaryEntityId"] = suggestions["primaryEntityId"].map(
894
897
  (id: string) => {
895
898
  const service: Service | undefined = serviceMap[id];
896
899
  return service?.name || id;
@@ -65,7 +65,7 @@ interface ContextLog {
65
65
  time: string;
66
66
  severity: string;
67
67
  body: string;
68
- serviceId: string;
68
+ primaryEntityId: string;
69
69
  }
70
70
 
71
71
  const prepareBody: (body: string | undefined) => PreparedBody = (
@@ -106,7 +106,7 @@ function parseContextRow(row: JSONObject): ContextLog {
106
106
  time: String(row["time"] || ""),
107
107
  severity: String(row["severityText"] || "Unspecified"),
108
108
  body: String(row["body"] || ""),
109
- serviceId: String(row["serviceId"] || ""),
109
+ primaryEntityId: String(row["primaryEntityId"] || ""),
110
110
  };
111
111
  }
112
112
 
@@ -121,9 +121,10 @@ const LogDetailsPanel: FunctionComponent<LogDetailsPanelProps> = (
121
121
  const [contextLoaded, setContextLoaded] = useState<boolean>(false);
122
122
 
123
123
  const variant: "floating" | "embedded" = props.variant || "floating";
124
- const serviceId: string = props.log.serviceId?.toString() || "";
125
- const service: Service | undefined = props.serviceMap[serviceId];
126
- const serviceName: string = service?.name || serviceId || "Unknown service";
124
+ const primaryEntityId: string = props.log.primaryEntityId?.toString() || "";
125
+ const service: Service | undefined = props.serviceMap[primaryEntityId];
126
+ const serviceName: string =
127
+ service?.name || primaryEntityId || "Unknown service";
127
128
  const serviceColor: string =
128
129
  (service?.serviceColor && service?.serviceColor.toString()) || "#64748b";
129
130
 
@@ -214,7 +215,7 @@ const LogDetailsPanel: FunctionComponent<LogDetailsPanelProps> = (
214
215
 
215
216
  const loadContext: () => Promise<void> =
216
217
  useCallback(async (): Promise<void> => {
217
- if (!props.projectId || !serviceId || !props.log.time) {
218
+ if (!props.projectId || !primaryEntityId || !props.log.time) {
218
219
  setContextError("Missing project or service information for context.");
219
220
  return;
220
221
  }
@@ -230,7 +231,7 @@ const LogDetailsPanel: FunctionComponent<LogDetailsPanelProps> = (
230
231
  ),
231
232
  data: {
232
233
  logId: props.log.getColumnValue("_id")?.toString() || "",
233
- serviceId: serviceId,
234
+ primaryEntityId: primaryEntityId,
234
235
  time: props.log.time
235
236
  ? OneUptimeDate.toString(props.log.time)
236
237
  : "",
@@ -260,7 +261,7 @@ const LogDetailsPanel: FunctionComponent<LogDetailsPanelProps> = (
260
261
  } finally {
261
262
  setContextLoading(false);
262
263
  }
263
- }, [props.projectId, serviceId, props.log]);
264
+ }, [props.projectId, primaryEntityId, props.log]);
264
265
 
265
266
  useEffect(() => {
266
267
  if (activeTab === "context" && !contextLoaded && !contextLoading) {
@@ -622,7 +623,7 @@ const LogDetailsPanel: FunctionComponent<LogDetailsPanelProps> = (
622
623
  time: props.log.time ? props.log.time.toString() : "",
623
624
  severity: props.log.severityText?.toString() || "Unspecified",
624
625
  body: props.log.body || "",
625
- serviceId: serviceId,
626
+ primaryEntityId: primaryEntityId,
626
627
  },
627
628
  true,
628
629
  )}
@@ -398,7 +398,7 @@ function extractCurrentWord(value: string): string {
398
398
  const FIELD_ALIAS_MAP: Record<string, string> = {
399
399
  severity: "severityText",
400
400
  level: "severityText",
401
- service: "serviceId",
401
+ service: "primaryEntityId",
402
402
  trace: "traceId",
403
403
  span: "spanId",
404
404
  };
@@ -85,7 +85,7 @@ const CHART_COLORS_MUTED: Array<string> = [
85
85
 
86
86
  const DIMENSION_OPTIONS: Array<{ value: string; label: string }> = [
87
87
  { value: "severityText", label: "Severity" },
88
- { value: "serviceId", label: "Service" },
88
+ { value: "primaryEntityId", label: "Service" },
89
89
  { value: "traceId", label: "Trace ID" },
90
90
  { value: "spanId", label: "Span ID" },
91
91
  ];
@@ -372,7 +372,7 @@ const LogsAnalyticsView: FunctionComponent<LogsAnalyticsViewProps> = (
372
372
  }
373
373
 
374
374
  const serviceFilterValues: Set<string> | undefined =
375
- props.appliedFacetFilters.get("serviceId");
375
+ props.appliedFacetFilters.get("primaryEntityId");
376
376
 
377
377
  if (serviceFilterValues && serviceFilterValues.size > 0) {
378
378
  (requestData as Record<string, unknown>)["serviceIds"] =
@@ -39,7 +39,7 @@ export interface LogsFacetSidebarProps {
39
39
  }
40
40
 
41
41
  const RESOURCE_FACET_KEYS: ReadonlySet<string> = new Set([
42
- "serviceId",
42
+ "primaryEntityId",
43
43
  "hostId",
44
44
  "dockerHostId",
45
45
  "kubernetesClusterId",
@@ -146,7 +146,7 @@ function buildClusterDisplayMap(
146
146
  function getFacetTitle(key: string): string {
147
147
  const titleMap: Record<string, string> = {
148
148
  severityText: "Severity",
149
- serviceId: "Service",
149
+ primaryEntityId: "Service",
150
150
  hostId: "Host",
151
151
  dockerHostId: "Docker Host",
152
152
  kubernetesClusterId: "Kubernetes Cluster",
@@ -187,7 +187,7 @@ const LogsFacetSidebar: FunctionComponent<LogsFacetSidebarProps> = (
187
187
  const facetKeys: Array<string> = useMemo(() => {
188
188
  const priorityKeys: Array<string> = [
189
189
  "severityText",
190
- "serviceId",
190
+ "primaryEntityId",
191
191
  "hostId",
192
192
  "dockerHostId",
193
193
  "kubernetesClusterId",
@@ -280,7 +280,7 @@ const LogsFacetSidebar: FunctionComponent<LogsFacetSidebarProps> = (
280
280
  let valueDisplayMap: Record<string, string> | undefined;
281
281
  let valueColorMap: Record<string, string> | undefined;
282
282
 
283
- if (key === "serviceId") {
283
+ if (key === "primaryEntityId") {
284
284
  valueDisplayMap = serviceDisplayMap;
285
285
  valueColorMap = serviceColorMap;
286
286
  } else if (key === "hostId") {
@@ -233,10 +233,12 @@ const LogsTable: FunctionComponent<LogsTableProps> = (
233
233
  <tbody className="divide-y divide-gray-100">
234
234
  {props.logs.map((log: Log, index: number) => {
235
235
  const rowId: string = resolveLogIdentifier(log, index);
236
- const serviceId: string = log.serviceId?.toString() || "";
237
- const service: Service | undefined = props.serviceMap[serviceId];
236
+ const primaryEntityId: string =
237
+ log.primaryEntityId?.toString() || "";
238
+ const service: Service | undefined =
239
+ props.serviceMap[primaryEntityId];
238
240
  const serviceName: string =
239
- service?.name || serviceId || "Unknown";
241
+ service?.name || primaryEntityId || "Unknown";
240
242
  const serviceColor: string =
241
243
  (service?.serviceColor && service?.serviceColor.toString()) ||
242
244
  "#94a3b8";
@@ -137,11 +137,13 @@ interface IndexedItem {
137
137
  interface MenuGroup {
138
138
  category: string;
139
139
  items: IndexedItem[];
140
+ isRecent: boolean;
140
141
  }
141
142
 
142
143
  interface RawGroup {
143
144
  category: string;
144
145
  items: MoreMenuItem[];
146
+ isRecent: boolean;
145
147
  }
146
148
 
147
149
  const NavBarMenuModal: FunctionComponent<ComponentProps> = (
@@ -230,7 +232,7 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
230
232
  byCategory.get(category)!.push(item);
231
233
  });
232
234
  return order.map((category: string) => {
233
- return { category, items: byCategory.get(category)! };
235
+ return { category, items: byCategory.get(category)!, isRecent: false };
234
236
  });
235
237
  }, [filteredItems]);
236
238
 
@@ -242,7 +244,7 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
242
244
  const displayGroups: MenuGroup[] = useMemo(() => {
243
245
  const raw: RawGroup[] = [];
244
246
  if (!query.trim() && recentItems.length > 0) {
245
- raw.push({ category: recentLabel, items: recentItems });
247
+ raw.push({ category: recentLabel, items: recentItems, isRecent: true });
246
248
  }
247
249
  raw.push(...categoryGroups);
248
250
 
@@ -253,7 +255,7 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
253
255
  flatIndex++;
254
256
  return entry;
255
257
  });
256
- return { category: group.category, items };
258
+ return { category: group.category, items, isRecent: group.isRecent };
257
259
  });
258
260
  }, [query, recentItems, categoryGroups, recentLabel]);
259
261
 
@@ -444,7 +446,7 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
444
446
  >
445
447
  {/* Backdrop */}
446
448
  <div
447
- className={`fixed inset-0 bg-gray-900 bg-opacity-50 backdrop-blur-sm transition-opacity duration-200 ${
449
+ className={`fixed inset-0 bg-gray-900/50 backdrop-blur-sm transition-opacity duration-200 ${
448
450
  isShown ? "opacity-100" : "opacity-0"
449
451
  }`}
450
452
  />
@@ -456,8 +458,10 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
456
458
  >
457
459
  <div className="flex min-h-full items-start justify-center p-4 sm:p-6">
458
460
  <div
459
- className={`relative mt-[6vh] flex w-full max-w-4xl flex-col overflow-hidden rounded-2xl bg-white shadow-2xl ring-1 ring-black ring-opacity-5 transition-all duration-200 ease-out ${
460
- isShown ? "scale-100 opacity-100" : "scale-95 opacity-0"
461
+ className={`relative mt-[6vh] flex w-full max-w-4xl flex-col overflow-hidden rounded-2xl bg-white shadow-2xl ring-1 ring-gray-900/5 transition-all duration-200 ease-out ${
462
+ isShown
463
+ ? "translate-y-0 scale-100 opacity-100"
464
+ : "translate-y-2 scale-[0.98] opacity-0"
461
465
  }`}
462
466
  style={{ maxHeight: "80vh" }}
463
467
  onClick={(event: React.MouseEvent<HTMLDivElement>) => {
@@ -465,7 +469,7 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
465
469
  }}
466
470
  >
467
471
  {/* Search header */}
468
- <div className="flex items-center gap-3 border-b border-gray-100 px-4 py-3">
472
+ <div className="flex items-center gap-3 border-b border-gray-100 px-5 py-4">
469
473
  <Icon
470
474
  icon={IconProp.Search}
471
475
  className="h-5 w-5 flex-shrink-0 text-gray-400"
@@ -482,6 +486,10 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
482
486
  : undefined
483
487
  }
484
488
  aria-label={props.searchPlaceholder || "Search products"}
489
+ autoComplete="off"
490
+ autoCorrect="off"
491
+ autoCapitalize="off"
492
+ spellCheck={false}
485
493
  value={query}
486
494
  onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
487
495
  setQuery(event.target.value);
@@ -490,9 +498,23 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
490
498
  placeholder={props.searchPlaceholder || "Search…"}
491
499
  className="flex-1 border-0 bg-transparent p-0 text-base text-gray-900 placeholder-gray-400 focus:outline-none focus:ring-0"
492
500
  />
493
- <kbd className="hidden items-center rounded border border-gray-200 bg-gray-50 px-1.5 py-0.5 text-xs font-medium text-gray-400 sm:inline-flex">
494
- {shortcutLabel}
495
- </kbd>
501
+ {query ? (
502
+ <button
503
+ type="button"
504
+ aria-label="Clear search"
505
+ onClick={() => {
506
+ setQuery("");
507
+ inputRef.current?.focus();
508
+ }}
509
+ className="flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600"
510
+ >
511
+ <Icon icon={IconProp.Close} className="h-4 w-4" />
512
+ </button>
513
+ ) : (
514
+ <kbd className="hidden items-center rounded border border-gray-200 bg-gray-50 px-1.5 py-0.5 text-xs font-medium text-gray-400 sm:inline-flex">
515
+ {shortcutLabel}
516
+ </kbd>
517
+ )}
496
518
  </div>
497
519
 
498
520
  {/* Body */}
@@ -500,19 +522,21 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
500
522
  id="navbar-menu-listbox"
501
523
  role="listbox"
502
524
  aria-label="Products"
503
- className="flex-1 overflow-y-auto px-4 py-4"
525
+ className="flex-1 overflow-y-auto overscroll-contain px-5 pb-5 pt-4"
504
526
  >
505
527
  {flatItems.length === 0 ? (
506
528
  <div className="flex flex-col items-center justify-center py-16 text-center">
507
- <Icon
508
- icon={IconProp.Search}
509
- className="mb-3 h-8 w-8 text-gray-300"
510
- />
511
- <p className="text-sm text-gray-500">
529
+ <div className="mb-3 flex h-12 w-12 items-center justify-center rounded-full bg-gray-50 ring-1 ring-gray-100">
530
+ <Icon
531
+ icon={IconProp.Search}
532
+ className="h-5 w-5 text-gray-400"
533
+ />
534
+ </div>
535
+ <p className="text-sm font-medium text-gray-900">
512
536
  {props.noResultsText || "No results found."}
513
537
  </p>
514
538
  {query && (
515
- <p className="mt-1 text-xs text-gray-400">
539
+ <p className="mt-1 text-xs text-gray-500">
516
540
  &ldquo;{query}&rdquo;
517
541
  </p>
518
542
  )}
@@ -521,10 +545,18 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
521
545
  displayGroups.map((group: MenuGroup) => {
522
546
  return (
523
547
  <div key={group.category} className="mb-6 last:mb-1">
524
- <h3 className="mb-2 px-1 text-xs font-semibold uppercase tracking-wider text-gray-500">
525
- {group.category}
526
- </h3>
527
- <div className="grid grid-cols-2 gap-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5">
548
+ <div className="mb-2.5 flex items-center gap-1.5 px-1">
549
+ {group.isRecent && (
550
+ <Icon
551
+ icon={IconProp.Clock}
552
+ className="h-3.5 w-3.5 text-gray-500"
553
+ />
554
+ )}
555
+ <h3 className="text-[11px] font-semibold uppercase tracking-[0.1em] text-gray-500">
556
+ {group.category}
557
+ </h3>
558
+ </div>
559
+ <div className="grid grid-cols-1 gap-2 sm:grid-cols-2 lg:grid-cols-3">
528
560
  {group.items.map((entry: IndexedItem) => {
529
561
  const item: MoreMenuItem = entry.item;
530
562
  const flatIndex: number = entry.flatIndex;
@@ -543,43 +575,44 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
543
575
  ref={(element: HTMLDivElement | null) => {
544
576
  cellRefs.current[flatIndex] = element;
545
577
  }}
546
- onMouseEnter={() => {
578
+ onMouseMove={() => {
547
579
  setActiveIndex(flatIndex);
548
580
  }}
549
- className="relative"
550
581
  >
551
- {isCurrent && (
552
- <span
553
- aria-hidden="true"
554
- className="absolute right-2 top-2 z-10 h-2 w-2 rounded-full bg-indigo-500 ring-2 ring-white"
555
- />
556
- )}
557
582
  <Link
558
583
  to={item.route}
559
584
  onClick={() => {
560
585
  selectItem(item);
561
586
  }}
562
- className={`group flex h-full flex-col items-center gap-2 rounded-xl p-3 text-center transition-all duration-150 ${
587
+ className={`group flex h-full items-start gap-3 rounded-xl border p-3 text-left transition-colors duration-150 ${
563
588
  isActive
564
- ? "scale-[1.03] bg-indigo-50 shadow-sm ring-2 ring-indigo-400"
589
+ ? "border-indigo-300 bg-indigo-50 shadow-sm"
565
590
  : isCurrent
566
- ? "bg-indigo-50/60 ring-1 ring-indigo-200 hover:bg-indigo-50"
567
- : "hover:bg-gray-50"
591
+ ? "border-indigo-100 bg-indigo-50/40"
592
+ : "border-transparent"
568
593
  }`}
569
594
  >
570
595
  <div
571
- className={`flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-xl ${colors.bg} ring-1 ${colors.ring}`}
596
+ className={`flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg ${colors.bg} ring-1 ${colors.ring}`}
572
597
  >
573
598
  <Icon
574
599
  icon={item.icon}
575
- className={`h-6 w-6 transition-transform duration-150 group-hover:scale-110 ${colors.text}`}
600
+ className={`h-5 w-5 transition-transform duration-150 group-hover:scale-110 ${colors.text}`}
576
601
  />
577
602
  </div>
578
- <div className="w-full">
579
- <p className="text-sm font-medium text-gray-900">
580
- {highlightMatch(item.title)}
603
+ <div className="min-w-0 flex-1">
604
+ <p className="flex items-center gap-1.5 text-sm font-medium text-gray-900">
605
+ <span className="truncate">
606
+ {highlightMatch(item.title)}
607
+ </span>
608
+ {isCurrent && (
609
+ <span
610
+ aria-hidden="true"
611
+ className="h-1.5 w-1.5 flex-shrink-0 rounded-full bg-indigo-500"
612
+ />
613
+ )}
581
614
  </p>
582
- <p className="mt-0.5 text-xs leading-snug text-gray-500 line-clamp-2">
615
+ <p className="mt-0.5 text-xs leading-relaxed text-gray-500 line-clamp-2">
583
616
  {highlightMatch(item.description)}
584
617
  </p>
585
618
  </div>
@@ -596,21 +629,25 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
596
629
 
597
630
  {/* Footer */}
598
631
  {props.footer && (
599
- <div className="flex items-center justify-between gap-4 border-t border-gray-100 bg-gray-50 px-4 py-3">
632
+ <div className="flex items-center justify-between gap-4 border-t border-gray-100 bg-gray-50/80 px-5 py-3">
600
633
  <Link
601
634
  to={props.footer.link}
602
635
  openInNewTab={true}
603
636
  className="group flex min-w-0 items-center gap-3"
604
637
  >
605
- <div className="flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-gray-100 ring-1 ring-gray-200 transition-all group-hover:bg-gray-200">
638
+ <div className="flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-gray-900 transition-colors group-hover:bg-gray-700">
606
639
  <Icon
607
640
  icon={IconProp.GitHub}
608
- className="h-4 w-4 text-gray-700"
641
+ className="h-4 w-4 text-white"
609
642
  />
610
643
  </div>
611
644
  <div className="min-w-0 text-left">
612
- <p className="truncate text-sm font-medium text-gray-900">
613
- {props.footer.title}
645
+ <p className="flex items-center gap-1 text-sm font-medium text-gray-900">
646
+ <span className="truncate">{props.footer.title}</span>
647
+ <Icon
648
+ icon={IconProp.ExternalLink}
649
+ className="h-3 w-3 flex-shrink-0 text-gray-400 opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-visible:opacity-100"
650
+ />
614
651
  </p>
615
652
  <p className="truncate text-xs text-gray-500">
616
653
  {props.footer.description}
@@ -92,6 +92,17 @@ export interface TelemetryViewerProps<T> {
92
92
  onHistogramTimeRangeSelect?:
93
93
  | ((startTime: Date, endTime: Date) => void)
94
94
  | undefined;
95
+ // Extra controls in the histogram header (e.g. a chart-metric selector).
96
+ histogramHeaderActions?: ReactNode;
97
+ // Y-axis / tooltip value formatting (e.g. latency metrics in ms).
98
+ histogramValueFormatter?: ((value: number) => string) | undefined;
99
+
100
+ /*
101
+ * When set, replaces the histogram + facet sidebar + list with the given
102
+ * content (e.g. an analytics view). The toolbar, search bar, and active
103
+ * filter chips stay, so the override content can consume the same filters.
104
+ */
105
+ mainContentOverride?: ReactNode;
95
106
 
96
107
  // -- Pagination --
97
108
  page: number;
@@ -201,19 +212,31 @@ function TelemetryViewerInner<T>(props: TelemetryViewerProps<T>): ReactElement {
201
212
  />
202
213
  )}
203
214
 
215
+ {/* Main content override (e.g. analytics view) */}
216
+ {props.mainContentOverride}
217
+
204
218
  {/* Histogram */}
205
- {showHistogram && props.histogramBuckets && props.histogramSeries && (
206
- <TelemetryHistogram
207
- buckets={props.histogramBuckets}
208
- isLoading={props.histogramLoading || false}
209
- series={props.histogramSeries}
210
- title={props.histogramTitle}
211
- onTimeRangeSelect={props.onHistogramTimeRangeSelect}
212
- />
213
- )}
219
+ {!props.mainContentOverride &&
220
+ showHistogram &&
221
+ props.histogramBuckets &&
222
+ props.histogramSeries && (
223
+ <TelemetryHistogram
224
+ buckets={props.histogramBuckets}
225
+ isLoading={props.histogramLoading || false}
226
+ series={props.histogramSeries}
227
+ title={props.histogramTitle}
228
+ onTimeRangeSelect={props.onHistogramTimeRangeSelect}
229
+ headerActions={props.histogramHeaderActions}
230
+ valueFormatter={props.histogramValueFormatter}
231
+ />
232
+ )}
214
233
 
215
234
  {/* Main area: facets + list */}
216
- <div className="flex min-h-0 flex-1 gap-3">
235
+ <div
236
+ className={`flex min-h-0 flex-1 gap-3 ${
237
+ props.mainContentOverride ? "hidden" : ""
238
+ }`}
239
+ >
217
240
  {showFacets && (
218
241
  <TelemetryFacetSidebar
219
242
  facetData={props.facetData || {}}