@oneuptime/common 11.3.28 → 11.4.1

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 (244) hide show
  1. package/Models/DatabaseModels/AIRun.ts +50 -0
  2. package/Models/DatabaseModels/Project.ts +60 -0
  3. package/Server/API/AIAgentTaskAPI.ts +10 -24
  4. package/Server/API/AIInvestigationAPI.ts +148 -0
  5. package/Server/API/TelemetryAPI.ts +4 -3
  6. package/Server/Infrastructure/Postgres/SchemaMigrations/1783598145111-AddEnableAutomaticIncidentInvestigationToProject.ts +19 -0
  7. package/Server/Infrastructure/Postgres/SchemaMigrations/1783615884106-AddInvestigationSubjectToAIRun.ts +33 -0
  8. package/Server/Infrastructure/Postgres/SchemaMigrations/1783632447975-AddEnableAutomaticAlertInvestigationToProject.ts +19 -0
  9. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  10. package/Server/Services/AIAgentTaskService.ts +62 -0
  11. package/Server/Services/AlertService.ts +25 -0
  12. package/Server/Services/AnalyticsDatabaseService.ts +27 -0
  13. package/Server/Services/IncidentService.ts +25 -0
  14. package/Server/Services/IncidentStateTimelineService.ts +19 -0
  15. package/Server/Services/LogAggregationService.ts +29 -11
  16. package/Server/Services/MetricService.ts +603 -13
  17. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +119 -11
  18. package/Server/Utils/AI/Sentinel/AlertInvestigationRunner.ts +141 -0
  19. package/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.ts +178 -0
  20. package/Server/Utils/AI/Sentinel/IncidentPostmortemRunner.ts +105 -0
  21. package/Server/Utils/AI/Sentinel/README.md +10 -0
  22. package/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.ts +405 -0
  23. package/Server/Utils/AI/Sentinel/SentinelMemory.ts +167 -0
  24. package/Server/Utils/AI/Toolbox/Index.ts +11 -0
  25. package/Server/Utils/AI/Toolbox/SentinelActionTools.ts +577 -0
  26. package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +44 -0
  27. package/Server/Utils/Monitor/MonitorMetricUtil.ts +108 -2
  28. package/Tests/Server/API/BaseAPI.test.ts +1 -0
  29. package/Tests/Server/Services/AIAgentTaskServiceClaim.test.ts +146 -0
  30. package/Tests/Server/Services/LogAggregationService.test.ts +22 -0
  31. package/Tests/Server/Services/MetricServiceAggregate.test.ts +194 -0
  32. package/Tests/Types/AI/AIAgentTaskStatus.test.ts +86 -0
  33. package/Tests/Types/BaseDatabase/AggregationIntervalUtil.test.ts +127 -0
  34. package/Tests/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.test.ts +152 -0
  35. package/Tests/Types/OnCallDutyPolicy/ScheduleShiftUtil.test.ts +260 -0
  36. package/Tests/Types/Trace/TraceRecordingRuleDefinition.test.ts +308 -0
  37. package/Tests/UI/Components/Dropdown.test.tsx +17 -0
  38. package/Tests/UI/Components/EntityDropdown.test.tsx +130 -0
  39. package/Tests/UI/Components/Modal.test.tsx +144 -2
  40. package/Tests/UI/Components/TelemetrySearchBar.test.tsx +90 -0
  41. package/Tests/UI/Utils/Theme.test.ts +161 -0
  42. package/Types/BaseDatabase/AggregateBy.ts +12 -0
  43. package/Types/Dashboard/DashboardComponentType.ts +1 -0
  44. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
  45. package/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.ts +19 -0
  46. package/Types/Dashboard/DashboardTemplates.ts +9 -1
  47. package/Types/Date.ts +46 -0
  48. package/Types/Monitor/CriteriaFilter.ts +4 -0
  49. package/Types/Monitor/HttpPhaseTimings.ts +16 -0
  50. package/Types/Monitor/MonitorMetricType.ts +17 -0
  51. package/Types/Monitor/PingMonitor/PingMonitorResponse.ts +20 -0
  52. package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +257 -0
  53. package/Types/Probe/ProbeMonitorResponse.ts +14 -0
  54. package/UI/Components/Calendar/Calendar.tsx +8 -2
  55. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +5 -5
  56. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +8 -5
  57. package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +4 -1
  58. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +6 -3
  59. package/UI/Components/CodeBlock/CodeBlock.tsx +2 -1
  60. package/UI/Components/CodeEditor/CodeEditor.tsx +3 -0
  61. package/UI/Components/Divider/Divider.tsx +1 -1
  62. package/UI/Components/Dropdown/Dropdown.tsx +13 -4
  63. package/UI/Components/EntityDropdown/EntityDropdown.tsx +110 -2
  64. package/UI/Components/ErrorBoundary.tsx +2 -1
  65. package/UI/Components/EventItem/EventItem.tsx +2 -2
  66. package/UI/Components/GanttChart/Bar/Index.tsx +1 -1
  67. package/UI/Components/Graphs/UptimeBarTooltip.tsx +30 -23
  68. package/UI/Components/Header/Header.tsx +7 -0
  69. package/UI/Components/Header/HeaderIconDropdownButton.tsx +2 -0
  70. package/UI/Components/Label/Label.tsx +2 -2
  71. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +22 -10
  72. package/UI/Components/LogsViewer/components/LogsHistogram.tsx +9 -3
  73. package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +8 -8
  74. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +44 -20
  75. package/UI/Components/Modal/ConfirmModal.tsx +1 -1
  76. package/UI/Components/Modal/Modal.tsx +213 -121
  77. package/UI/Components/Modal/ModalFooter.tsx +33 -22
  78. package/UI/Components/ModelTable/TableView.tsx +1 -1
  79. package/UI/Components/MonitorGraphs/UptimeBarDayModal.tsx +20 -12
  80. package/UI/Components/Pill/Pill.tsx +21 -13
  81. package/UI/Components/StatusBubble/StatusBubble.tsx +3 -3
  82. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +7 -1
  83. package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +9 -3
  84. package/UI/Components/TelemetryViewer/components/TelemetrySearchBar.tsx +62 -4
  85. package/UI/Components/Workflow/Component.tsx +53 -33
  86. package/UI/Components/Workflow/ComponentPortViewer.tsx +6 -6
  87. package/UI/Components/Workflow/ComponentReturnValueViewer.tsx +8 -8
  88. package/UI/Components/Workflow/ComponentsModal.tsx +16 -9
  89. package/UI/Components/Workflow/Workflow.tsx +13 -11
  90. package/UI/Utils/Theme.ts +140 -0
  91. package/Utils/Dashboard/Components/DashboardLogChartComponent.ts +104 -0
  92. package/Utils/Dashboard/Components/Index.ts +7 -0
  93. package/Utils/Monitor/MonitorMetricType.ts +70 -2
  94. package/build/dist/Models/DatabaseModels/AIRun.js +52 -0
  95. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  96. package/build/dist/Models/DatabaseModels/Project.js +62 -0
  97. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  98. package/build/dist/Server/API/AIAgentTaskAPI.js +8 -23
  99. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  100. package/build/dist/Server/API/AIInvestigationAPI.js +107 -0
  101. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -0
  102. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  103. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783598145111-AddEnableAutomaticIncidentInvestigationToProject.js +12 -0
  104. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783598145111-AddEnableAutomaticIncidentInvestigationToProject.js.map +1 -0
  105. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783615884106-AddInvestigationSubjectToAIRun.js +18 -0
  106. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783615884106-AddInvestigationSubjectToAIRun.js.map +1 -0
  107. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783632447975-AddEnableAutomaticAlertInvestigationToProject.js +12 -0
  108. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783632447975-AddEnableAutomaticAlertInvestigationToProject.js.map +1 -0
  109. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  110. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  111. package/build/dist/Server/Services/AIAgentTaskService.js +59 -0
  112. package/build/dist/Server/Services/AIAgentTaskService.js.map +1 -1
  113. package/build/dist/Server/Services/AlertService.js +24 -0
  114. package/build/dist/Server/Services/AlertService.js.map +1 -1
  115. package/build/dist/Server/Services/AnalyticsDatabaseService.js +19 -0
  116. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  117. package/build/dist/Server/Services/IncidentService.js +24 -0
  118. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  119. package/build/dist/Server/Services/IncidentStateTimelineService.js +19 -0
  120. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  121. package/build/dist/Server/Services/LogAggregationService.js +21 -7
  122. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  123. package/build/dist/Server/Services/MetricService.js +449 -7
  124. package/build/dist/Server/Services/MetricService.js.map +1 -1
  125. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +59 -11
  126. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
  127. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js +119 -0
  128. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js.map +1 -0
  129. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js +147 -0
  130. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js.map +1 -0
  131. package/build/dist/Server/Utils/AI/Sentinel/IncidentPostmortemRunner.js +93 -0
  132. package/build/dist/Server/Utils/AI/Sentinel/IncidentPostmortemRunner.js.map +1 -0
  133. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js +311 -0
  134. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js.map +1 -0
  135. package/build/dist/Server/Utils/AI/Sentinel/SentinelMemory.js +143 -0
  136. package/build/dist/Server/Utils/AI/Sentinel/SentinelMemory.js.map +1 -0
  137. package/build/dist/Server/Utils/AI/Toolbox/Index.js +6 -0
  138. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  139. package/build/dist/Server/Utils/AI/Toolbox/SentinelActionTools.js +451 -0
  140. package/build/dist/Server/Utils/AI/Toolbox/SentinelActionTools.js.map +1 -0
  141. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +29 -0
  142. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
  143. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +86 -2
  144. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  145. package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
  146. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  147. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
  148. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  149. package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.js +2 -0
  150. package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.js.map +1 -0
  151. package/build/dist/Types/Dashboard/DashboardTemplates.js +9 -1
  152. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  153. package/build/dist/Types/Date.js +32 -0
  154. package/build/dist/Types/Date.js.map +1 -1
  155. package/build/dist/Types/Monitor/CriteriaFilter.js +4 -0
  156. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  157. package/build/dist/Types/Monitor/HttpPhaseTimings.js +2 -0
  158. package/build/dist/Types/Monitor/HttpPhaseTimings.js.map +1 -0
  159. package/build/dist/Types/Monitor/MonitorMetricType.js +15 -0
  160. package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
  161. package/build/dist/Types/Monitor/PingMonitor/PingMonitorResponse.js +2 -0
  162. package/build/dist/Types/Monitor/PingMonitor/PingMonitorResponse.js.map +1 -0
  163. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +159 -0
  164. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -0
  165. package/build/dist/UI/Components/Calendar/Calendar.js +2 -2
  166. package/build/dist/UI/Components/Calendar/Calendar.js.map +1 -1
  167. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +2 -2
  168. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  169. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +7 -4
  170. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
  171. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +4 -1
  172. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
  173. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +6 -3
  174. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  175. package/build/dist/UI/Components/CodeBlock/CodeBlock.js +1 -1
  176. package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
  177. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +3 -1
  178. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  179. package/build/dist/UI/Components/Divider/Divider.js +1 -1
  180. package/build/dist/UI/Components/Divider/Divider.js.map +1 -1
  181. package/build/dist/UI/Components/Dropdown/Dropdown.js +10 -4
  182. package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
  183. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js +76 -3
  184. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js.map +1 -1
  185. package/build/dist/UI/Components/ErrorBoundary.js +2 -1
  186. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  187. package/build/dist/UI/Components/EventItem/EventItem.js +2 -2
  188. package/build/dist/UI/Components/EventItem/EventItem.js.map +1 -1
  189. package/build/dist/UI/Components/GanttChart/Bar/Index.js +1 -1
  190. package/build/dist/UI/Components/GanttChart/Bar/Index.js.map +1 -1
  191. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js +29 -23
  192. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js.map +1 -1
  193. package/build/dist/UI/Components/Header/Header.js +1 -0
  194. package/build/dist/UI/Components/Header/Header.js.map +1 -1
  195. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -1
  196. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  197. package/build/dist/UI/Components/Label/Label.js +2 -2
  198. package/build/dist/UI/Components/Label/Label.js.map +1 -1
  199. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +20 -8
  200. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  201. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js +8 -2
  202. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js.map +1 -1
  203. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +8 -8
  204. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +40 -20
  205. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  206. package/build/dist/UI/Components/Modal/ConfirmModal.js +1 -1
  207. package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
  208. package/build/dist/UI/Components/Modal/Modal.js +109 -51
  209. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  210. package/build/dist/UI/Components/Modal/ModalFooter.js +13 -10
  211. package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
  212. package/build/dist/UI/Components/ModelTable/TableView.js +1 -1
  213. package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
  214. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js +17 -12
  215. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js.map +1 -1
  216. package/build/dist/UI/Components/Pill/Pill.js +12 -13
  217. package/build/dist/UI/Components/Pill/Pill.js.map +1 -1
  218. package/build/dist/UI/Components/StatusBubble/StatusBubble.js +3 -3
  219. package/build/dist/UI/Components/StatusBubble/StatusBubble.js.map +1 -1
  220. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +1 -1
  221. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
  222. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +8 -2
  223. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
  224. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js +36 -6
  225. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js.map +1 -1
  226. package/build/dist/UI/Components/Workflow/Component.js +43 -33
  227. package/build/dist/UI/Components/Workflow/Component.js.map +1 -1
  228. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js +6 -6
  229. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js.map +1 -1
  230. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js +8 -8
  231. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js.map +1 -1
  232. package/build/dist/UI/Components/Workflow/ComponentsModal.js +15 -9
  233. package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
  234. package/build/dist/UI/Components/Workflow/Workflow.js +13 -11
  235. package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
  236. package/build/dist/UI/Utils/Theme.js +106 -0
  237. package/build/dist/UI/Utils/Theme.js.map +1 -0
  238. package/build/dist/Utils/Dashboard/Components/DashboardLogChartComponent.js +92 -0
  239. package/build/dist/Utils/Dashboard/Components/DashboardLogChartComponent.js.map +1 -0
  240. package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
  241. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  242. package/build/dist/Utils/Monitor/MonitorMetricType.js +70 -3
  243. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  244. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"LogAggregationService.js","sourceRoot":"","sources":["../../../../Server/Services/LogAggregationService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,kBAAkB,MAAM,cAAc,CAAC;AAC9C,OAAO,eAAe,MAAM,+CAA+C,CAAC;AAG5E,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,QAAQ,MAAM,mCAAmC,CAAC;AACzD,OAAO,kBAAkB,MAAM,kDAAkD,CAAC;AAClF,OAAO,WAAW,MAAM,gCAAgC,CAAC;AAEzD,OAAO,WAAW,MAAM,mCAAmC,CAAC;AA+E5D,MAAM,OAAO,qBAAqB;IA6CZ,AAAb,MAAM,CAAC,KAAK,CAAC,YAAY,CAC9B,OAAyB;QAEzB,MAAM,SAAS,GACb,qBAAqB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAEzD,MAAM,QAAQ,GAAY,MAAM,kBAAkB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAmB,MAAM,QAAQ,CAAC,IAAI,EAEhD,CAAC;QAEL,MAAM,IAAI,GAAsB,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QAEpD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAe,EAAmB,EAAE;YACnD,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACjC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,aAAa,CAAC;gBACtD,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC/B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,cAAc,CAChC,OAAqB;QAErB,MAAM,SAAS,GACb,qBAAqB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAErD,MAAM,QAAQ,GAAY,MAAM,kBAAkB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAmB,MAAM,QAAQ,CAAC,IAAI,EAEhD,CAAC;QAEL,MAAM,IAAI,GAAsB,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QAEpD,OAAO,IAAI;aACR,GAAG,CAAC,CAAC,GAAe,EAAc,EAAE;YACnC,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC/B,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC/B,CAAC;QACJ,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,KAAiB,EAAW,EAAE;YACrC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,OAAyB;QAC9D,MAAM,eAAe,GAAW,OAAO,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAEjE;;;;;;;;;;;;;;;;WAgBG;QACH,MAAM,SAAS,GAAc,GAAG,CAAA;;6CAES;YACnC,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,KAAK,EAAE,eAAe;SACvB;;;;;;;;eAQM,qBAAqB,CAAC,UAAU;4BACnB;YAClB,IAAI,EAAE,eAAe,CAAC,QAAQ;YAC9B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;gFACuE;YACpE,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;gFACqE;YACpE,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,OAAO;SACvB;KACN,CAAC;QAEF,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE9D,SAAS,CAAC,MAAM,CACd,oFAAoF,CACrF,CAAC;QAEF;;;;;WAKG;QACH,SAAS,CAAC,MAAM,CACd,gBAAgB,CAAC;YACf,yBAAyB,EAAE,EAAE;YAC7B,mBAAmB,EAAE,OAAO;YAC5B,kBAAkB,EAAE,EAAE,wBAAwB,EAAE,CAAC,EAAE;SACpD,CAAC,CACH,CAAC;QAEF,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,OAAqB;;QACtD,yEAAyE;QACzE,IAAI,OAAO,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACrC,OAAO,CAAC,QAAQ,GAAG,iBAAiB,CAAC;QACvC,CAAC;QAED,MAAM,KAAK,GACT,MAAA,OAAO,CAAC,KAAK,mCAAI,qBAAqB,CAAC,mBAAmB,CAAC;QAE7D,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEzD,MAAM,mBAAmB,GACvB,qBAAqB,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,eAAe,GAAY,mBAAmB,KAAK,SAAS,CAAC;QACnE,MAAM,gBAAgB,GACpB,eAAe;YACf,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3D,MAAM,SAAS,GAAc,IAAI,SAAS,EAAE,CAAC;QAE7C,IAAI,eAAe,EAAE,CAAC;YACpB;;;;eAIG;YACH,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,gEAAgE,qBAAqB,CAAC,UAAU,EAAE,CACtG,CAAC;QACJ,CAAC;aAAM,IAAI,gBAAgB,EAAE,CAAC;YAC5B,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,mBAAmB,OAAO,CAAC,QAAQ,iCAAiC,qBAAqB,CAAC,UAAU,EAAE,CAC1G,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,4EAA4E;YAC5E,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,qBAAqB;gBACtB,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,KAAK,EAAE,OAAO,CAAC,QAAQ;aACxB,iCAAiC,qBAAqB,CAAC,UAAU,EAAE,CACrE,CAAC;QACJ,CAAC;QAED,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,sBAAsB;YACvB,IAAI,EAAE,eAAe,CAAC,QAAQ;YAC9B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB,gBAAgB;YACf,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB,gBAAgB;YACf,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,OAAO;SACvB,EAAE,CACJ,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,4BAA4B;gBAC7B,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,KAAK,EAAE,mBAA6B;aACrC,EAAE,CACJ,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,iBAAiB,EAAE,CAAC;YAClD;;;;eAIG;YACH,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,uDAAuD;gBACxD,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,KAAK,EAAE,WAAW,CAAC,aAAuB;aAC3C,GAAG,CACL,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC7B,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,gCAAgC;gBACjC,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,KAAK,EAAE,OAAO,CAAC,QAAQ;aACxB,GAAG,CACL,CAAC;QACJ,CAAC;QAED,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAEzD,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE9D,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,yCAAyC;YAC1C,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,KAAK,EAAE,KAAK;SACb,EAAE,CACJ,CAAC;QAEF;;;WAGG;QACH,SAAS,CAAC,MAAM,CACd,gBAAgB,CAAC;YACf,yBAAyB,EAAE,EAAE;YAC7B,mBAAmB,EAAE,OAAO;SAC7B,CAAC,CACH,CAAC;QAEF,OAAO,SAAS,CAAC;IACnB,CAAC;IAMmB,AAAb,MAAM,CAAC,KAAK,CAAC,sBAAsB,CACxC,OAAyB;QAEzB,MAAM,SAAS,GACb,qBAAqB,CAAC,iCAAiC,CAAC,OAAO,CAAC,CAAC;QAEnE,MAAM,QAAQ,GAAY,MAAM,kBAAkB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAmB,MAAM,QAAQ,CAAC,IAAI,EAEhD,CAAC;QAEL,MAAM,IAAI,GAAsB,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QACpD,MAAM,WAAW,GAAkB,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QAEzD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAe,EAA0B,EAAE;YAC1D,MAAM,WAAW,GAA2B,EAAE,CAAC;YAE/C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAW,qBAAqB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC9D,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACjC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,WAAW;aACZ,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACrC,OAAyB;QAEzB,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,gBAAgB,CACxB,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GACb,qBAAqB,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAY,MAAM,kBAAkB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAmB,MAAM,QAAQ,CAAC,IAAI,EAEhD,CAAC;QAEL,MAAM,IAAI,GAAsB,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QAEpD,OAAO,IAAI;aACR,GAAG,CAAC,CAAC,GAAe,EAAoB,EAAE;YACzC,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC/B,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC/B,CAAC;QACJ,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,IAAsB,EAAW,EAAE;YAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,iBAAiB,CACnC,OAAyB;QAEzB,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,gBAAgB,CACxB,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GACb,qBAAqB,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAY,MAAM,kBAAkB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAmB,MAAM,QAAQ,CAAC,IAAI,EAEhD,CAAC;QAEL,MAAM,IAAI,GAAsB,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QACpD,MAAM,WAAW,GAAkB,OAAO,CAAC,OAAO,CAAC;QAEnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAe,EAAqB,EAAE;YACrD,MAAM,WAAW,GAA2B,EAAE,CAAC;YAE/C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAW,qBAAqB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC9D,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;YAED,OAAO;gBACL,WAAW;gBACX,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC/B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,GAAW;QACrC,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,4CAA4C;QAC5C,OAAO,QAAQ,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC;IACtD,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAChC,SAAoB,EACpB,WAA0B;QAE1B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAE5C,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,SAAS,CAAC,MAAM,CAAC,cAAc,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAW,qBAAqB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC9D,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,gBAAgB;oBACjB,IAAI,EAAE,eAAe,CAAC,IAAI;oBAC1B,KAAK,EAAE,GAAG;iBACX,QAAQ,KAAK,EAAE,CACjB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAChC,SAAoB,EACpB,WAA0B;QAE1B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAW,qBAAqB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC9D,SAAS,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,wBAAwB,CAAC,OAAyB;QAC/D,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACjE,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAEjE,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACrE,OAAO,aAAa,OAAO,CAAC,gBAAgB,GAAG,CAAC;YAClD,CAAC;YAED,OAAO,yBAAyB,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;QACrF,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,OAAkC;QAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,qBAAqB,CAAC,uBAAuB,EAAE,CAAC;YACnE,MAAM,IAAI,gBAAgB,CACxB,4BAA4B,qBAAqB,CAAC,uBAAuB,aAAa,CACvF,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,iCAAiC,CAC9C,OAAyB;QAEzB,qBAAqB,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvD,MAAM,eAAe,GAAW,OAAO,CAAC,mBAAmB,GAAG,EAAE,CAAC;QACjE,MAAM,OAAO,GACX,qBAAqB,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAE1D,MAAM,SAAS,GAAc,GAAG,CAAA;;2CAEO;YACjC,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,KAAK,EAAE,eAAe;SACvB,oBAAoB,CAAC;QAE1B,SAAS,CAAC,MAAM,CAAC,KAAK,OAAO,SAAS,CAAC,CAAC;QAExC,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC;QAED,SAAS,CAAC,MAAM,CACd,GAAG,CAAA;aACI,qBAAqB,CAAC,UAAU;0BACnB;YAClB,IAAI,EAAE,eAAe,CAAC,QAAQ;YAC9B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;sBACe;YACZ,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;sBACa;YACZ,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,OAAO;SACvB,EAAE,CACN,CAAC;QAEF,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAEzD,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE9D,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAErC,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC;QAED,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAEzC;;;;WAIG;QACH,SAAS,CAAC,MAAM,CACd,gBAAgB,CAAC;YACf,yBAAyB,EAAE,EAAE;YAC7B,mBAAmB,EAAE,OAAO;SAC7B,CAAC,CACH,CAAC;QAEF,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,8BAA8B,CAC3C,OAAyB;;QAEzB,MAAM,UAAU,GAAW,OAAO,CAAC,OAAQ,CAAC,CAAC,CAAE,CAAC;QAChD,qBAAqB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEnD,MAAM,KAAK,GACT,MAAA,OAAO,CAAC,KAAK,mCAAI,qBAAqB,CAAC,uBAAuB,CAAC;QACjE,MAAM,OAAO,GACX,qBAAqB,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAE1D,MAAM,UAAU,GACd,qBAAqB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAErD,MAAM,SAAS,GAAc,IAAI,SAAS,EAAE,CAAC;QAE7C,IAAI,UAAU,EAAE,CAAC;YACf,SAAS,CAAC,MAAM,CACd,mBAAmB,UAAU,aAAa,OAAO,gBAAgB,qBAAqB,CAAC,UAAU,EAAE,CACpG,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACvC,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,GAAG;gBACJ,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,KAAK,EAAE,UAAU;aAClB,EAAE,CACJ,CAAC;YACF,SAAS,CAAC,MAAM,CACd,aAAa,OAAO,gBAAgB,qBAAqB,CAAC,UAAU,EAAE,CACvE,CAAC;QACJ,CAAC;QAED,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,sBAAsB;YACvB,IAAI,EAAE,eAAe,CAAC,QAAQ;YAC9B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB,gBAAgB;YACf,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB,gBAAgB;YACf,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,OAAO;SACvB,EAAE,CACJ,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,gCAAgC;gBACjC,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,KAAK,EAAE,UAAU;aAClB,GAAG,CACL,CAAC;QACJ,CAAC;QAED,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAEzD,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE9D,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,yCAAyC;YAC1C,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,KAAK,EAAE,KAAK;SACb,EAAE,CACJ,CAAC;QAEF;;;WAGG;QACH,SAAS,CAAC,MAAM,CACd,gBAAgB,CAAC;YACf,yBAAyB,EAAE,EAAE;YAC7B,mBAAmB,EAAE,OAAO;SAC7B,CAAC,CACH,CAAC;QAEF,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,4BAA4B,CACzC,OAAyB;;QAEzB,qBAAqB,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvD,MAAM,WAAW,GAAkB,OAAO,CAAC,OAAQ,CAAC;QACpD,MAAM,KAAK,GACT,MAAA,OAAO,CAAC,KAAK,mCAAI,qBAAqB,CAAC,uBAAuB,CAAC;QACjE,MAAM,OAAO,GACX,qBAAqB,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAE1D,MAAM,SAAS,GAAc,IAAI,SAAS,EAAE,CAAC;QAC7C,SAAS,CAAC,MAAM,CAAC,UAAU,OAAO,SAAS,CAAC,CAAC;QAE7C,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAElE,SAAS,CAAC,MAAM,CACd,GAAG,CAAA;aACI,qBAAqB,CAAC,UAAU;0BACnB;YAClB,IAAI,EAAE,eAAe,CAAC,QAAQ;YAC9B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;sBACe;YACZ,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;sBACa;YACZ,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,OAAO;SACvB,EAAE,CACN,CAAC;QAEF,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAEzD,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE9D,8BAA8B;QAC9B,MAAM,OAAO,GAAkB,WAAW,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE;YAC7D,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,OAAO,GAAG,CAAC;YACb,CAAC;YAED,OAAO,qBAAqB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,MAAM,CAAC,aAAa,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpD,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,4BAA4B;YAC7B,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,KAAK,EAAE,KAAK;SACb,EAAE,CACJ,CAAC;QAEF;;;WAGG;QACH,SAAS,CAAC,MAAM,CACd,gBAAgB,CAAC;YACf,yBAAyB,EAAE,EAAE;YAC7B,mBAAmB,EAAE,OAAO;SAC7B,CAAC,CACH,CAAC;QAEF,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAChC,SAAoB,EACpB,OASC;QAED,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,4BAA4B;gBAC7B,IAAI,EAAE,eAAe,CAAC,QAAQ;gBAC9B,KAAK,EAAE,IAAI,QAAQ,CACjB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAY,EAAE,EAAE;oBACtC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;gBACvB,CAAC,CAAC,CACH;aACF,GAAG,CACL,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,2BAA2B;gBAC5B,IAAI,EAAE,eAAe,CAAC,SAAS;gBAC/B,KAAK,EAAE,OAAO,CAAC,UAAU;aAC1B,GAAG,CACL,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,yBAAyB;gBAC1B,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,KAAK,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;aAC3C,GAAG,CACL,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,oBAAoB;gBACrB,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,KAAK,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;aACtC,GAAG,CACL,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,mBAAmB;gBACpB,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,KAAK,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;aACrC,GAAG,CACL,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvE,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,mBAAmB;gBACpB,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,KAAK,EAAE,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG;aAC5C,EAAE,CACJ,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrE,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtE,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAEhD;;;;;;mBAMG;gBACH,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,uDAAuD;oBACxD,IAAI,EAAE,eAAe,CAAC,IAAI;oBAC1B,KAAK,EAAE,OAAO;iBACf,aAAa;oBACZ,IAAI,EAAE,eAAe,CAAC,IAAI;oBAC1B,KAAK,EAAE,SAAS;iBACjB,+CAA+C,CACjD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAWjC;QACC,MAAM,QAAQ,GAAW,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,KAAK,CAAC,CAAC;QAEjE,MAAM,SAAS,GAAc,GAAG,CAAA;;;;;;;;;;aAUvB,qBAAqB,CAAC,UAAU;0BACnB;YAClB,IAAI,EAAE,eAAe,CAAC,QAAQ;YAC9B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;sBACe;YACZ,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;sBACa;YACZ,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,OAAO;SACvB;KACJ,CAAC;QAEF,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAEzD,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE9D,SAAS,CAAC,MAAM,CACd,GAAG,CAAA,6BAA6B;YAC9B,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,KAAK,EAAE,QAAQ;SAChB,EAAE,CACJ,CAAC;QAEF;;;WAGG;QACH,SAAS,CAAC,MAAM,CACd,gBAAgB,CAAC;YACf,yBAAyB,EAAE,EAAE;YAC7B,mBAAmB,EAAE,OAAO;SAC7B,CAAC,CACH,CAAC;QAEF,MAAM,QAAQ,GAAY,MAAM,kBAAkB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAmB,MAAM,QAAQ,CAAC,IAAI,EAEhD,CAAC;QAEL,OAAO,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAMjC;QACC,MAAM,KAAK,GAAW,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAEvD,MAAM,eAAe,GAAc,GAAG,CAAA;;;;;;;;;;;;aAY7B,qBAAqB,CAAC,UAAU;0BACnB;YAClB,IAAI,EAAE,eAAe,CAAC,QAAQ;YAC9B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;gCACyB;YACtB,IAAI,EAAE,eAAe,CAAC,QAAQ;YAC9B,KAAK,EAAE,OAAO,CAAC,eAAe;SAC/B;sBACa;YACZ,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,IAAI;SACpB;qBACY;YACX,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB;;;cAGK;YACN,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,KAAK,EAAE,KAAK;SACb;KACF,CAAC;QAEF,MAAM,cAAc,GAAc,GAAG,CAAA;;;;;;;;;;;;aAY5B,qBAAqB,CAAC,UAAU;0BACnB;YAClB,IAAI,EAAE,eAAe,CAAC,QAAQ;YAC9B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;gCACyB;YACtB,IAAI,EAAE,eAAe,CAAC,QAAQ;YAC9B,KAAK,EAAE,OAAO,CAAC,eAAe;SAC/B;sBACa;YACZ,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,IAAI;SACpB;qBACY;YACX,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB;;;cAGK;YACN,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,KAAK,EAAE,KAAK;SACb;KACF,CAAC;QAEF,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpD,kBAAkB,CAAC,YAAY,CAAC,eAAe,CAAC;YAChD,kBAAkB,CAAC,YAAY,CAAC,cAAc,CAAC;SAChD,CAAC,CAAC;QAEH,MAAM,cAAc,GAAmB,MAAM,YAAY,CAAC,IAAI,EAE1D,CAAC;QACL,MAAM,aAAa,GAAmB,MAAM,WAAW,CAAC,IAAI,EAExD,CAAC;QAEL,MAAM,UAAU,GAAsB,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5E,MAAM,SAAS,GAAsB,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC;QAE9D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAQzC;;QAKC,kBAAkB;QAClB,MAAM,cAAc,GAAc,GAAG,CAAA;;aAE5B,qBAAqB,CAAC,UAAU;0BACnB;YAClB,IAAI,EAAE,eAAe,CAAC,QAAQ;YAC9B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;sBACe;YACZ,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;sBACa;YACZ,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,OAAO;SACvB;KACJ,CAAC;QAEF,cAAc,CAAC,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAE9D,qBAAqB,CAAC,mBAAmB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAEnE;;;WAGG;QACH,cAAc,CAAC,MAAM,CACnB,gBAAgB,CAAC;YACf,yBAAyB,EAAE,EAAE;YAC7B,mBAAmB,EAAE,OAAO;SAC7B,CAAC,CACH,CAAC;QAEF,2DAA2D;QAC3D,MAAM,cAAc,GAAc,GAAG,CAAA;;aAE5B,qBAAqB,CAAC,UAAU;0BACnB;YAClB,IAAI,EAAE,eAAe,CAAC,QAAQ;YAC9B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;sBACe;YACZ,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,SAAS;SACzB;sBACa;YACZ,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,KAAK,EAAE,OAAO,CAAC,OAAO;SACvB;KACJ,CAAC;QAEF,cAAc,CAAC,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAE9D,qBAAqB,CAAC,mBAAmB,CAAC,cAAc,kCACnD,OAAO,KACV,cAAc,EAAE,OAAO,CAAC,WAAW,IACnC,CAAC;QAEH;;;WAGG;QACH,cAAc,CAAC,MAAM,CACnB,gBAAgB,CAAC;YACf,yBAAyB,EAAE,EAAE;YAC7B,mBAAmB,EAAE,OAAO;SAC7B,CAAC,CACH,CAAC;QAEF,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnD,kBAAkB,CAAC,YAAY,CAAC,cAAc,CAAC;YAC/C,kBAAkB,CAAC,YAAY,CAAC,cAAc,CAAC;SAChD,CAAC,CAAC;QAEH,MAAM,aAAa,GAAmB,MAAM,WAAW,CAAC,IAAI,EAExD,CAAC;QACL,MAAM,aAAa,GAAmB,MAAM,WAAW,CAAC,IAAI,EAExD,CAAC;QAEL,MAAM,SAAS,GAAsB,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC;QAC9D,MAAM,SAAS,GAAsB,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC;QAE9D,MAAM,SAAS,GAAW,MAAM,CAAC,CAAA,MAAA,SAAS,CAAC,CAAC,CAAC,0CAAG,KAAK,CAAC,KAAI,CAAC,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAW,MAAM,CAAC,CAAA,MAAA,SAAS,CAAC,CAAC,CAAC,0CAAG,KAAK,CAAC,KAAI,CAAC,CAAC,CAAC;QAChE,MAAM,yBAAyB,GAC7B,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC;IAChE,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,GAAW;QACzC,OAAO,qBAAqB,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAC7B,QAAiB;QAEjB,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QACjD,CAAC;QAED,IACE,QAAQ,CAAC,MAAM,KAAK,CAAC;YACrB,QAAQ,CAAC,MAAM,GAAG,qBAAqB,CAAC,oBAAoB,EAC5D,CAAC;YACD,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QACjD,CAAC;QAED,IACE,qBAAqB,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAChD,qBAAqB,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EACvD,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;;AAxiCuB,yCAAmB,GAAW,GAAG,CAAC;AAClC,gCAAU,GAAW,kBAAkB,CAAC,GAAG,CAAC;AAC5C,uCAAiB,GAAgB,IAAI,GAAG,CAAC;IAC/D,cAAc;IACd,iBAAiB;IACjB,SAAS;IACT,QAAQ;CACT,CAAC,CAAC;AACH;;;;;;;GAOG;AACqB,yCAAmB,GACzC,IAAI,GAAG,CAAC;IACN,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC;IAC5B,CAAC,cAAc,EAAE,WAAW,CAAC,UAAU,CAAC;IACxC,CAAC,cAAc,EAAE,WAAW,CAAC,UAAU,CAAC;IACxC,CAAC,qBAAqB,EAAE,WAAW,CAAC,iBAAiB,CAAC;IACtD,CAAC,kBAAkB,EAAE,WAAW,CAAC,cAAc,CAAC;IAChD,CAAC,eAAe,EAAE,WAAW,CAAC,WAAW,CAAC;IAC1C,CAAC,sBAAsB,EAAE,WAAW,CAAC,kBAAkB,CAAC;IACxD,CAAC,iBAAiB,EAAE,WAAW,CAAC,aAAa,CAAC;IAC9C,CAAC,kBAAkB,EAAE,WAAW,CAAC,eAAe,CAAC;CAClD,CAAC,CAAC;AACmB,2CAAqB,GAAW,qBAAqB,CAAC;AACtD,0CAAoB,GAAW,GAAG,CAAC;AAC3D;;;;;;;;;GASG;AACqB,sCAAgB,GACtC,6BAA6B,CAAC;AAuOR,6CAAuB,GAAW,EAAE,CAAC;AACrC,6CAAuB,GAAW,CAAC,CAAC;AArOxC;IADnB,WAAW,EAAE;;;;+CAqBb;AAGmB;IADnB,WAAW,EAAE;;;;iDAwBb;AA0LmB;IADnB,WAAW,EAAE;;;;yDA6Bb;AAGmB;IADnB,WAAW,EAAE;;;;sDA8Bb;AAGmB;IADnB,WAAW,EAAE;;;;oDAkCb;AAmYmB;IADnB,WAAW,EAAE;;;;gDAoEb;AAGmB;IADnB,WAAW,EAAE;;;;gDAoGb;AAGmB;IADnB,WAAW,EAAE;;;;wDAwGb;AAiCH,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"LogAggregationService.js","sourceRoot":"","sources":["../../../../Server/Services/LogAggregationService.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,242 @@ import { getQuerySettings } from "../Utils/AnalyticsDatabase/QuerySettingsHelper
7
7
  import AggregationType, { getPercentileLevel, isPercentileAggregation, } from "../../Types/BaseDatabase/AggregationType";
8
8
  import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName";
9
9
  import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
10
+ import BadDataException from "../../Types/Exception/BadDataException";
10
11
  import { keyForHost } from "../../Utils/Telemetry/EntityKey";
11
12
  import ObjectID from "../../Types/ObjectID";
12
13
  import logger from "../Utils/Logger";
14
+ /*
15
+ * Metric point types whose rows carry a pre-aggregated distribution
16
+ * (count/sum/min/max + buckets) instead of a single observation. For
17
+ * these rows the `value` column holds the datapoint's SUM of all
18
+ * observations in the export interval (see OtelMetricsIngestService's
19
+ * buildMetricRow: value = asInt ?? asDouble ?? sum), so aggregating
20
+ * `value` directly produces sum-scale numbers — e.g. "Avg of
21
+ * http.client.request.duration" would return ~110s for a service whose
22
+ * true mean latency is 0.586s at ~188 requests per export interval.
23
+ */
24
+ const DISTRIBUTION_POINT_TYPES = [
25
+ "Histogram",
26
+ "ExponentialHistogram",
27
+ "Summary",
28
+ ];
29
+ const MAX_GROUP_BY_ATTRIBUTE_KEYS = 10;
30
+ const MAX_GROUP_BY_ATTRIBUTE_KEY_LENGTH = 256;
31
+ const POINT_TYPE_CACHE_TTL_MS = 10 * 60 * 1000;
32
+ const POINT_TYPE_CACHE_MAX_ENTRIES = 5000;
13
33
  export class MetricService extends AnalyticsDatabaseService {
14
34
  constructor(clickhouseDatabase) {
15
35
  super({ modelType: Metric, database: clickhouseDatabase });
36
+ /*
37
+ * (projectId|metricName) -> metricPointType, resolved lazily on the
38
+ * aggregate path so scalar aggregations of distribution metrics can
39
+ * skip the MVs (whose states collapse `value` — the histogram sum)
40
+ * and use the count-weighted expressions instead. Bounded + TTL'd so
41
+ * a tenant churning metric names can't grow it without limit.
42
+ */
43
+ this.metricPointTypeCache = new Map();
44
+ /*
45
+ * Point-type hint per aggregateBy call. toAggregateStatement is a
46
+ * synchronous override, so the async lookup happens in aggregateBy
47
+ * and is handed over keyed on the (shared) aggregateBy object.
48
+ */
49
+ this.pointTypeHintByAggregate = new WeakMap();
50
+ this.inFlightPointTypeLookups = new Map();
51
+ }
52
+ async aggregateBy(aggregateBy) {
53
+ /*
54
+ * Only scalar aggregations over `value` need the point type — the
55
+ * percentile path is already distribution-aware via the bucket
56
+ * fanout, and MV routing is the only decision the hint drives.
57
+ * Grouped queries (model-column or attribute-key) never route to
58
+ * the MVs, so the lookup would be dead weight there.
59
+ */
60
+ if (!isPercentileAggregation(aggregateBy.aggregationType) &&
61
+ aggregateBy.aggregateColumnName.toString() === "value" &&
62
+ (!aggregateBy.groupBy || Object.keys(aggregateBy.groupBy).length === 0) &&
63
+ (!aggregateBy.groupByAttributeKeys ||
64
+ aggregateBy.groupByAttributeKeys.length === 0)) {
65
+ const pointType = await this.resolveMetricPointType(aggregateBy);
66
+ this.pointTypeHintByAggregate.set(aggregateBy, pointType);
67
+ }
68
+ return super.aggregateBy(aggregateBy);
69
+ }
70
+ async resolveMetricPointType(aggregateBy) {
71
+ const metricName = this.getExactMetricNameFromQuery(aggregateBy.query);
72
+ if (!metricName) {
73
+ return null;
74
+ }
75
+ const queryRecord = aggregateBy.query || {};
76
+ const projectIdValue = queryRecord["projectId"];
77
+ let projectId = "";
78
+ if (projectIdValue instanceof ObjectID) {
79
+ projectId = projectIdValue.toString();
80
+ }
81
+ else if (typeof projectIdValue === "string") {
82
+ projectId = projectIdValue;
83
+ }
84
+ if (!projectId) {
85
+ return null;
86
+ }
87
+ const cacheKey = `${projectId}|${metricName}`;
88
+ const cached = this.metricPointTypeCache.get(cacheKey);
89
+ if (cached && cached.expiresAt > Date.now()) {
90
+ return cached.pointType;
91
+ }
92
+ /*
93
+ * Coalesce concurrent misses: a dashboard refresh fires many
94
+ * aggregates for the same metric at once; without this every one
95
+ * of them would issue the same lookup before any could populate
96
+ * the cache.
97
+ */
98
+ const inFlight = this.inFlightPointTypeLookups.get(cacheKey);
99
+ if (inFlight) {
100
+ return inFlight;
101
+ }
102
+ const lookup = this.lookupMetricPointType(aggregateBy, projectId, metricName)
103
+ .then((pointType) => {
104
+ this.evictExpiredPointTypeCacheEntries();
105
+ this.metricPointTypeCache.set(cacheKey, {
106
+ pointType,
107
+ expiresAt: Date.now() + POINT_TYPE_CACHE_TTL_MS,
108
+ });
109
+ return pointType;
110
+ })
111
+ .finally(() => {
112
+ this.inFlightPointTypeLookups.delete(cacheKey);
113
+ });
114
+ this.inFlightPointTypeLookups.set(cacheKey, lookup);
115
+ return lookup;
116
+ }
117
+ async lookupMetricPointType(aggregateBy, projectId, metricName) {
118
+ try {
119
+ if (!this.database) {
120
+ this.useDefaultDatabase();
121
+ }
122
+ const databaseName = this.database.getDatasourceOptions().database;
123
+ const statement = SQL `SELECT metricPointType FROM `;
124
+ statement.append(`${databaseName}.${this.model.tableName}`);
125
+ statement.append(SQL ` WHERE projectId = ${{
126
+ value: projectId,
127
+ type: TableColumnType.ObjectID,
128
+ }} AND name = ${{
129
+ value: metricName,
130
+ type: TableColumnType.Text,
131
+ }} AND isNotNull(metricPointType)`);
132
+ /*
133
+ * Bound the lookup to the aggregation's own window so ClickHouse
134
+ * can prune daily partitions (the table partitions on
135
+ * toYYYYMMDD(time)); without this the LIMIT 1 seek could touch
136
+ * every partition in retention for a metric with all-null point
137
+ * types. The point type is stable per metric name, so any window
138
+ * that has data answers correctly.
139
+ */
140
+ if (aggregateBy.startTimestamp && aggregateBy.endTimestamp) {
141
+ statement.append(` AND time >= toDateTime('${this.formatDateTime(aggregateBy.startTimestamp)}') AND time <= toDateTime('${this.formatDateTime(aggregateBy.endTimestamp)}')`);
142
+ }
143
+ statement.append(SQL ` LIMIT 1`);
144
+ const dbResult = await this.executeQuery(statement);
145
+ const responseJSON = await dbResult.json();
146
+ const row = (responseJSON.data || [])[0];
147
+ const rawPointType = row ? row["metricPointType"] : undefined;
148
+ return typeof rawPointType === "string" ? rawPointType : null;
149
+ }
150
+ catch (err) {
151
+ /*
152
+ * Lookup failures must not fail the aggregation — fall back to
153
+ * the (possibly MV-served) scalar path, which is today's
154
+ * behavior for unknown point types.
155
+ */
156
+ logger.debug("Metric point type lookup failed");
157
+ logger.debug(err);
158
+ return null;
159
+ }
160
+ }
161
+ evictExpiredPointTypeCacheEntries() {
162
+ if (this.metricPointTypeCache.size < POINT_TYPE_CACHE_MAX_ENTRIES) {
163
+ return;
164
+ }
165
+ const now = Date.now();
166
+ for (const [key, entry] of this.metricPointTypeCache) {
167
+ if (entry.expiresAt <= now) {
168
+ this.metricPointTypeCache.delete(key);
169
+ }
170
+ }
171
+ /*
172
+ * Still full after dropping expired entries: evict oldest-inserted
173
+ * until under the cap (Map preserves insertion order). Never
174
+ * clear() — that would stampede every active dashboard into
175
+ * re-issuing its lookup at once.
176
+ */
177
+ while (this.metricPointTypeCache.size >= POINT_TYPE_CACHE_MAX_ENTRIES) {
178
+ const oldestKey = this.metricPointTypeCache
179
+ .keys()
180
+ .next().value;
181
+ if (oldestKey === undefined) {
182
+ break;
183
+ }
184
+ this.metricPointTypeCache.delete(oldestKey);
185
+ }
186
+ }
187
+ isDistributionMetricAggregate(aggregateBy) {
188
+ const pointType = this.pointTypeHintByAggregate.get(aggregateBy);
189
+ return Boolean(pointType && DISTRIBUTION_POINT_TYPES.includes(pointType));
190
+ }
191
+ /**
192
+ * Validated, deduplicated attribute keys to group the aggregation by.
193
+ * Keys are bound as query parameters wherever they reach SQL, so this
194
+ * is shape validation (not injection defense): drop non-strings and
195
+ * empties, cap key length and count.
196
+ */
197
+ getSanitizedGroupByAttributeKeys(aggregateBy) {
198
+ const keys = [];
199
+ for (const rawKey of aggregateBy.groupByAttributeKeys || []) {
200
+ if (typeof rawKey !== "string") {
201
+ continue;
202
+ }
203
+ const key = rawKey.trim();
204
+ if (!key ||
205
+ key.length > MAX_GROUP_BY_ATTRIBUTE_KEY_LENGTH ||
206
+ keys.includes(key)) {
207
+ continue;
208
+ }
209
+ keys.push(key);
210
+ }
211
+ if (keys.length > MAX_GROUP_BY_ATTRIBUTE_KEYS) {
212
+ throw new BadDataException(`A maximum of ${MAX_GROUP_BY_ATTRIBUTE_KEYS} group-by attribute keys is supported.`);
213
+ }
214
+ return keys;
215
+ }
216
+ /**
217
+ * Appends `, attributes[{key}] AS __attr_grp_<i>` for every group-by
218
+ * attribute key. Used in the (inner) SELECT so the outer/main query
219
+ * can group on and re-project the extracted values.
220
+ */
221
+ appendAttributeGroupExtractionColumns(statement, attributeGroupKeys) {
222
+ attributeGroupKeys.forEach((key, index) => {
223
+ statement.append(`, `);
224
+ statement.append(SQL `attributes[${{ value: key, type: TableColumnType.Text }}]`);
225
+ statement.append(` AS __attr_grp_${index}`);
226
+ });
227
+ }
228
+ /**
229
+ * Appends `, map({key0}, __attr_grp_0, ...) AS attributes` so grouped
230
+ * rows return exactly the selected keys as an attributes map — the
231
+ * same shape series splitters already read (`row.attributes[key]`).
232
+ */
233
+ appendAttributeGroupMapColumn(statement, attributeGroupKeys) {
234
+ if (attributeGroupKeys.length === 0) {
235
+ return;
236
+ }
237
+ statement.append(`, map(`);
238
+ attributeGroupKeys.forEach((key, index) => {
239
+ if (index > 0) {
240
+ statement.append(`, `);
241
+ }
242
+ statement.append(SQL `${{ value: key, type: TableColumnType.Text }}`);
243
+ statement.append(`, __attr_grp_${index}`);
244
+ });
245
+ statement.append(`) AS attributes`);
16
246
  }
17
247
  /*
18
248
  * Cascade deletes from `MetricItemV3` into the aggregating
@@ -141,6 +371,7 @@ export class MetricService extends AnalyticsDatabaseService {
141
371
  if (mutableMetricStatement) {
142
372
  return mutableMetricStatement;
143
373
  }
374
+ const attributeGroupKeys = this.getSanitizedGroupByAttributeKeys(aggregateBy);
144
375
  if (!isPercentileAggregation(aggregateBy.aggregationType)) {
145
376
  /*
146
377
  * Try the per-host MV first — host detail pages are the
@@ -148,14 +379,27 @@ export class MetricService extends AnalyticsDatabaseService {
148
379
  * the only one that can serve them. If it doesn't apply
149
380
  * (no host filter, or extra attrs/groupBy), fall through
150
381
  * to the project/primaryEntityId MV, then to the base table.
382
+ *
383
+ * Distribution metrics (histograms/summaries) must skip the
384
+ * MVs entirely: their states collapse `value`, which for
385
+ * distribution rows is the datapoint SUM — merging those can
386
+ * only ever produce sum-scale results. The base-table builder
387
+ * below weights by the datapoint `count` instead.
151
388
  */
152
- const hostMvStatement = this.tryBuildHostAggregateMVStatement(aggregateBy);
153
- if (hostMvStatement) {
154
- return hostMvStatement;
389
+ if (attributeGroupKeys.length === 0 &&
390
+ !this.isDistributionMetricAggregate(aggregateBy)) {
391
+ const hostMvStatement = this.tryBuildHostAggregateMVStatement(aggregateBy);
392
+ if (hostMvStatement) {
393
+ return hostMvStatement;
394
+ }
395
+ const mvStatement = this.tryBuildMinuteAggregateMVStatement(aggregateBy);
396
+ if (mvStatement) {
397
+ return mvStatement;
398
+ }
155
399
  }
156
- const mvStatement = this.tryBuildMinuteAggregateMVStatement(aggregateBy);
157
- if (mvStatement) {
158
- return mvStatement;
400
+ if (aggregateBy.aggregateColumnName.toString() === "value" &&
401
+ aggregateBy.aggregationTimestampColumnName.toString() === "time") {
402
+ return this.buildScalarAggregateStatement(aggregateBy, attributeGroupKeys);
159
403
  }
160
404
  return super.toAggregateStatement(aggregateBy);
161
405
  }
@@ -177,7 +421,10 @@ export class MetricService extends AnalyticsDatabaseService {
177
421
  * Group-by columns from the caller need to be carried through the
178
422
  * inner subquery so the outer GROUP BY can reference them. Only
179
423
  * columns that exist on the model are accepted (matches the base
180
- * generator's safety net).
424
+ * generator's safety net). A whole-map `attributes` group-by is
425
+ * dropped when key-scoped grouping is requested — keeping both
426
+ * would fragment the series again and collide with the
427
+ * `map(...) AS attributes` projection.
181
428
  */
182
429
  const groupByKeys = [];
183
430
  if (aggregateBy.groupBy) {
@@ -185,6 +432,9 @@ export class MetricService extends AnalyticsDatabaseService {
185
432
  if (!this.model.getTableColumn(key)) {
186
433
  continue;
187
434
  }
435
+ if (key === "attributes" && attributeGroupKeys.length > 0) {
436
+ continue;
437
+ }
188
438
  groupByKeys.push(key);
189
439
  }
190
440
  }
@@ -266,8 +516,19 @@ export class MetricService extends AnalyticsDatabaseService {
266
516
  for (const key of groupByKeys) {
267
517
  statement.append(`, ${key}`);
268
518
  }
519
+ /*
520
+ * Attribute-key grouping: the inner subquery extracts each selected
521
+ * key into `__attr_grp_<i>`; the outer query groups on those and
522
+ * folds them back into a per-row `attributes` map so the result
523
+ * shape matches what series splitters read. Grouping happens on the
524
+ * individual keys — NOT the whole attributes map, which would
525
+ * fragment the quantile into one near-constant series per unique
526
+ * attribute combination.
527
+ */
528
+ this.appendAttributeGroupMapColumn(statement, attributeGroupKeys);
269
529
  statement.append(SQL ` FROM (`);
270
530
  statement.append(`SELECT ${innerSelectClause}`);
531
+ this.appendAttributeGroupExtractionColumns(statement, attributeGroupKeys);
271
532
  statement.append(` FROM ${databaseName}.${this.model.tableName} WHERE TRUE `);
272
533
  statement.append(whereStatement);
273
534
  statement.append(this.getRetentionReadFilter());
@@ -276,6 +537,9 @@ export class MetricService extends AnalyticsDatabaseService {
276
537
  for (const key of groupByKeys) {
277
538
  statement.append(`, ${key}`);
278
539
  }
540
+ attributeGroupKeys.forEach((_key, index) => {
541
+ statement.append(`, __attr_grp_${index}`);
542
+ });
279
543
  statement.append(SQL ` ORDER BY `).append(sortStatement);
280
544
  statement.append(SQL ` LIMIT ${{
281
545
  value: Number(aggregateBy.limit),
@@ -302,6 +566,7 @@ export class MetricService extends AnalyticsDatabaseService {
302
566
  aggregationColumn,
303
567
  aggregationTimestampColumn,
304
568
  ...groupByKeys,
569
+ ...(attributeGroupKeys.length > 0 ? ["attributes"] : []),
305
570
  ];
306
571
  logger.debug(`${this.model.tableName} Percentile Aggregate Statement`, {
307
572
  tableName: this.model.tableName,
@@ -311,6 +576,171 @@ export class MetricService extends AnalyticsDatabaseService {
311
576
  });
312
577
  return { statement, columns };
313
578
  }
579
+ /**
580
+ * Distribution-aware per-bucket expression for scalar aggregations
581
+ * over `value`. Distribution rows (histogram/summary — identified by
582
+ * a non-null `count`) carry the datapoint's observation total in
583
+ * `sum` (mirrored into `value` at ingest) and the observation count
584
+ * in `count`, so:
585
+ *
586
+ * Avg -> sum(sum) / sum(count) (count-weighted mean of
587
+ * observations, not the mean of per-export-interval sums)
588
+ * Sum -> sum(sum) (total of all observations)
589
+ * Count -> sum(count) (number of observations, not
590
+ * the number of export intervals)
591
+ * Min -> min(min), falling back to the datapoint mean when the
592
+ * optional OTLP min is absent
593
+ * Max -> max(max), same fallback
594
+ *
595
+ * Scalar rows (Sum/Gauge points — `count` is null) degrade to the
596
+ * plain value semantics these aggregations always had: each row is
597
+ * one observation of `value` with weight 1.
598
+ */
599
+ getDistributionAwareAggregationExpression(aggregationType, column) {
600
+ const distRowCondition = `isNotNull(count) AND isNotNull(coalesce(sum, ${column}))`;
601
+ const observationTotalExpression = `sum(multiIf(${distRowCondition}, toFloat64(coalesce(sum, ${column})), isNotNull(${column}), toFloat64(${column}), 0))`;
602
+ const observationCountExpression = `sum(multiIf(${distRowCondition}, toFloat64(count), isNotNull(${column}), 1, 0))`;
603
+ const datapointMeanExpression = `toFloat64(coalesce(sum, ${column})) / toFloat64(count)`;
604
+ switch (aggregationType) {
605
+ case AggregationType.Sum:
606
+ return observationTotalExpression;
607
+ case AggregationType.Count:
608
+ return observationCountExpression;
609
+ case AggregationType.Avg:
610
+ return `if(${observationCountExpression} = 0, 0, ${observationTotalExpression} / ${observationCountExpression})`;
611
+ case AggregationType.Min:
612
+ return `min(multiIf(isNotNull(min), toFloat64(min), ${distRowCondition} AND count > 0, ${datapointMeanExpression}, isNotNull(${column}), toFloat64(${column}), NULL))`;
613
+ case AggregationType.Max:
614
+ return `max(multiIf(isNotNull(max), toFloat64(max), ${distRowCondition} AND count > 0, ${datapointMeanExpression}, isNotNull(${column}), toFloat64(${column}), NULL))`;
615
+ default:
616
+ return `${aggregationType.toLocaleLowerCase()}(${column})`;
617
+ }
618
+ }
619
+ /**
620
+ * Base-table statement for non-percentile aggregations over `value`,
621
+ * used whenever the MV fast paths don't apply (attribute filters,
622
+ * group-by, or a distribution metric). Compared to the generic
623
+ * statement in AnalyticsDatabaseService this adds:
624
+ *
625
+ * - distribution-aware aggregation expressions (see
626
+ * getDistributionAwareAggregationExpression), and
627
+ * - grouping by individual attribute keys via
628
+ * `attributes['<key>']` (aliased and re-projected as a compact
629
+ * `attributes` map), which GroupBy<Metric> cannot express since
630
+ * it only references whole model columns.
631
+ *
632
+ * Model-column group-bys (including the legacy whole-map
633
+ * `groupBy: { attributes: true }` used by the infra pages) are
634
+ * carried through unchanged, appended as raw identifiers exactly
635
+ * like the percentile path does.
636
+ */
637
+ buildScalarAggregateStatement(aggregateBy, attributeGroupKeys) {
638
+ if (!this.database) {
639
+ this.useDefaultDatabase();
640
+ }
641
+ const databaseName = this.database.getDatasourceOptions().database;
642
+ const aggregationColumn = aggregateBy.aggregateColumnName.toString();
643
+ const aggregationTimestampColumn = aggregateBy.aggregationTimestampColumnName.toString();
644
+ const aggregationInterval = AggregateUtil.getAggregationInterval({
645
+ startDate: aggregateBy.startTimestamp,
646
+ endDate: aggregateBy.endTimestamp,
647
+ }).toLowerCase();
648
+ const groupByKeys = [];
649
+ if (aggregateBy.groupBy) {
650
+ for (const key of Object.keys(aggregateBy.groupBy)) {
651
+ if (!this.model.getTableColumn(key)) {
652
+ continue;
653
+ }
654
+ /*
655
+ * Key-scoped grouping supersedes a whole-map `attributes`
656
+ * group-by: keeping both would fragment the series again AND
657
+ * collide with the `map(...) AS attributes` projection below.
658
+ */
659
+ if (key === "attributes" && attributeGroupKeys.length > 0) {
660
+ continue;
661
+ }
662
+ groupByKeys.push(key);
663
+ }
664
+ }
665
+ const whereStatement = this.statementGenerator.toWhereStatement(aggregateBy.query);
666
+ const sortStatement = this.statementGenerator.toSortStatement(aggregateBy.sort);
667
+ const aggregationExpression = this.getDistributionAwareAggregationExpression(aggregateBy.aggregationType, aggregationColumn);
668
+ const statement = SQL ``;
669
+ statement.append(`SELECT ${aggregationExpression} as ${aggregationColumn}, date_trunc('${aggregationInterval}', toStartOfInterval(${aggregationTimestampColumn}, INTERVAL 1 ${aggregationInterval})) as ${aggregationTimestampColumn}`);
670
+ for (const key of groupByKeys) {
671
+ statement.append(`, ${key}`);
672
+ }
673
+ this.appendAttributeGroupMapColumn(statement, attributeGroupKeys);
674
+ if (attributeGroupKeys.length > 0) {
675
+ /*
676
+ * Subquery form: extract the selected keys into `__attr_grp_<i>`
677
+ * one level down so the outer `map(...) AS attributes` alias can
678
+ * never shadow (or cycle with) the real `attributes` column the
679
+ * extraction and WHERE filters read. Mirrors the percentile path.
680
+ */
681
+ const innerColumns = [
682
+ aggregationTimestampColumn,
683
+ "value",
684
+ "sum",
685
+ "count",
686
+ "min",
687
+ "max",
688
+ ];
689
+ for (const key of groupByKeys) {
690
+ if (!innerColumns.includes(key)) {
691
+ innerColumns.push(key);
692
+ }
693
+ }
694
+ statement.append(SQL ` FROM (`);
695
+ statement.append(`SELECT ${innerColumns.join(", ")}`);
696
+ this.appendAttributeGroupExtractionColumns(statement, attributeGroupKeys);
697
+ statement.append(` FROM ${databaseName}.${this.model.tableName} WHERE TRUE `);
698
+ statement.append(whereStatement);
699
+ statement.append(this.getRetentionReadFilter());
700
+ statement.append(SQL `) `);
701
+ }
702
+ else {
703
+ statement.append(` FROM ${databaseName}.${this.model.tableName} WHERE TRUE `);
704
+ statement.append(whereStatement);
705
+ statement.append(this.getRetentionReadFilter());
706
+ }
707
+ statement.append(SQL ` GROUP BY `).append(`${aggregationTimestampColumn}`);
708
+ for (const key of groupByKeys) {
709
+ statement.append(`, ${key}`);
710
+ }
711
+ attributeGroupKeys.forEach((_key, index) => {
712
+ statement.append(`, __attr_grp_${index}`);
713
+ });
714
+ statement.append(SQL ` ORDER BY `).append(sortStatement);
715
+ statement.append(SQL ` LIMIT ${{
716
+ value: Number(aggregateBy.limit),
717
+ type: TableColumnType.Number,
718
+ }}`);
719
+ statement.append(SQL ` OFFSET ${{
720
+ value: Number(aggregateBy.skip),
721
+ type: TableColumnType.Number,
722
+ }} `);
723
+ statement.append(getQuerySettings({
724
+ additionalSettings: {
725
+ optimize_aggregation_in_order: 1,
726
+ optimize_move_to_prewhere: 1,
727
+ max_threads: 4,
728
+ },
729
+ }));
730
+ const columns = [
731
+ aggregationColumn,
732
+ aggregationTimestampColumn,
733
+ ...groupByKeys,
734
+ ...(attributeGroupKeys.length > 0 ? ["attributes"] : []),
735
+ ];
736
+ logger.debug(`${this.model.tableName} Scalar Aggregate Statement`, {
737
+ tableName: this.model.tableName,
738
+ });
739
+ logger.debug(statement, {
740
+ tableName: this.model.tableName,
741
+ });
742
+ return { statement, columns };
743
+ }
314
744
  tryBuildMutableMetricAggregateStatement(aggregateBy) {
315
745
  const metricName = this.getExactMetricNameFromQuery(aggregateBy.query);
316
746
  if (!MutableMetricServiceClass.isMutableMetricName(metricName || undefined)) {
@@ -422,6 +852,10 @@ export class MetricService extends AnalyticsDatabaseService {
422
852
  return metricName;
423
853
  }
424
854
  canRouteAggregateToMutableMetricTable(aggregateBy) {
855
+ if (aggregateBy.groupByAttributeKeys &&
856
+ aggregateBy.groupByAttributeKeys.length > 0) {
857
+ return false;
858
+ }
425
859
  const supportedColumns = new Set([
426
860
  "projectId",
427
861
  "name",
@@ -519,6 +953,10 @@ export class MetricService extends AnalyticsDatabaseService {
519
953
  if (aggregateBy.groupBy && Object.keys(aggregateBy.groupBy).length > 0) {
520
954
  return null;
521
955
  }
956
+ if (aggregateBy.groupByAttributeKeys &&
957
+ aggregateBy.groupByAttributeKeys.length > 0) {
958
+ return null;
959
+ }
522
960
  /*
523
961
  * The MV only carries projectId/name/primaryEntityId/bucketTime, so a
524
962
  * query filtering on any other column (e.g. entityKeys membership,
@@ -647,6 +1085,10 @@ export class MetricService extends AnalyticsDatabaseService {
647
1085
  if (aggregateBy.groupBy && Object.keys(aggregateBy.groupBy).length > 0) {
648
1086
  return null;
649
1087
  }
1088
+ if (aggregateBy.groupByAttributeKeys &&
1089
+ aggregateBy.groupByAttributeKeys.length > 0) {
1090
+ return null;
1091
+ }
650
1092
  /*
651
1093
  * Inspect the attribute filter. This MV is only safe when
652
1094
  * the user is filtering by exactly one attribute,