@oneuptime/common 14.0.9 → 14.0.11

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 (1146) hide show
  1. package/Models/DatabaseModels/AIConversation.ts +127 -1
  2. package/Models/DatabaseModels/AutoRemediationSuggestion.ts +60 -0
  3. package/Models/DatabaseModels/CephCluster.ts +225 -0
  4. package/Models/DatabaseModels/CloudResource.ts +12 -0
  5. package/Models/DatabaseModels/DatabaseServer.ts +225 -0
  6. package/Models/DatabaseModels/DockerHost.ts +225 -0
  7. package/Models/DatabaseModels/DockerSwarmCluster.ts +225 -0
  8. package/Models/DatabaseModels/GlobalConfig.ts +1 -1
  9. package/Models/DatabaseModels/GlobalOidc.ts +0 -4
  10. package/Models/DatabaseModels/GlobalOidcProject.ts +0 -4
  11. package/Models/DatabaseModels/GlobalSso.ts +0 -4
  12. package/Models/DatabaseModels/GlobalSsoProject.ts +0 -4
  13. package/Models/DatabaseModels/Host.ts +225 -0
  14. package/Models/DatabaseModels/IncidentForm.ts +594 -0
  15. package/Models/DatabaseModels/IncidentFormSubmission.ts +283 -0
  16. package/Models/DatabaseModels/IncidentTemplate.ts +59 -0
  17. package/Models/DatabaseModels/Index.ts +16 -0
  18. package/Models/DatabaseModels/IoTFleet.ts +12 -0
  19. package/Models/DatabaseModels/KubernetesCluster.ts +12 -0
  20. package/Models/DatabaseModels/MessageQueue.ts +1102 -0
  21. package/Models/DatabaseModels/MessageQueueLabelRule.ts +553 -0
  22. package/Models/DatabaseModels/MessageQueueOwnerRule.ts +633 -0
  23. package/Models/DatabaseModels/MessageQueueOwnerTeam.ts +491 -0
  24. package/Models/DatabaseModels/MessageQueueOwnerUser.ts +490 -0
  25. package/Models/DatabaseModels/PodmanHost.ts +225 -0
  26. package/Models/DatabaseModels/Project.ts +59 -0
  27. package/Models/DatabaseModels/ProjectOidc.ts +0 -4
  28. package/Models/DatabaseModels/ProjectSso.ts +0 -4
  29. package/Models/DatabaseModels/ProxmoxCluster.ts +225 -0
  30. package/Models/DatabaseModels/ResourceAiAgent.ts +419 -0
  31. package/Models/DatabaseModels/RumApplication.ts +12 -0
  32. package/Models/DatabaseModels/RunnerJob.ts +144 -0
  33. package/Models/DatabaseModels/ServerlessFunction.ts +12 -0
  34. package/Models/DatabaseModels/Service.ts +12 -0
  35. package/Models/DatabaseModels/StatusPageOidc.ts +0 -4
  36. package/Models/DatabaseModels/StatusPageSso.ts +0 -4
  37. package/Models/DatabaseModels/TeamComplianceSetting.ts +47 -2
  38. package/Models/DatabaseModels/VMwareVCenter.ts +225 -0
  39. package/Server/API/AIChatAPI.ts +13 -114
  40. package/Server/API/AIInvestigationAPI.ts +3 -3
  41. package/Server/API/AIInvestigationConversationAPI.ts +266 -0
  42. package/Server/API/AutoRemediationAPI.ts +392 -1
  43. package/Server/API/IncidentFormAPI.ts +376 -0
  44. package/Server/API/ProjectOIDC.ts +16 -25
  45. package/Server/API/ProjectSSO.ts +16 -24
  46. package/Server/API/ResourceAiAccessAPI.ts +1669 -0
  47. package/Server/API/StatusPageAPI.ts +42 -77
  48. package/Server/Enterprise/EnterpriseEdition.ts +93 -28
  49. package/Server/Enterprise/EnterpriseFeature.ts +25 -3
  50. package/Server/Enterprise/EnterpriseLicenseSnapshot.ts +1 -1
  51. package/Server/Enterprise/EnterpriseServerModule.ts +4 -1
  52. package/Server/EnvironmentConfig.ts +1 -1
  53. package/Server/Infrastructure/Postgres/SchemaMigrations/1796300000000-AddResourceAiAgents.ts +423 -0
  54. package/Server/Infrastructure/Postgres/SchemaMigrations/1796400000000-AddIncidentForms.ts +129 -0
  55. package/Server/Infrastructure/Postgres/SchemaMigrations/1796500000000-AddTeamComplianceRuleNotificationChannels.ts +52 -0
  56. package/Server/Infrastructure/Postgres/SchemaMigrations/1796600000000-AddAIInvestigationConversationAndTimeLimits.ts +75 -0
  57. package/Server/Infrastructure/Postgres/SchemaMigrations/1796700000000-AddMessageQueueTables.ts +477 -0
  58. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  59. package/Server/Infrastructure/Semaphore.ts +22 -0
  60. package/Server/Middleware/IncidentFormRateLimit.ts +847 -0
  61. package/Server/Middleware/TelemetryIngest.ts +15 -5
  62. package/Server/Middleware/UserAuthorization.ts +16 -38
  63. package/Server/Services/AIService.ts +10 -13
  64. package/Server/Services/AnalyticsDatabaseService.ts +45 -1
  65. package/Server/Services/AutoRemediationRuleEngineService.ts +940 -112
  66. package/Server/Services/CephClusterService.ts +109 -1
  67. package/Server/Services/DatabaseServerService.ts +116 -1
  68. package/Server/Services/DockerHostService.ts +109 -1
  69. package/Server/Services/DockerSwarmClusterService.ts +113 -1
  70. package/Server/Services/HostService.ts +126 -4
  71. package/Server/Services/IncidentCustomFieldService.ts +112 -2
  72. package/Server/Services/IncidentEpisodeMemberService.ts +24 -4
  73. package/Server/Services/IncidentEpisodeService.ts +10 -1
  74. package/Server/Services/IncidentFormService.ts +1566 -0
  75. package/Server/Services/IncidentFormSubmissionService.ts +97 -0
  76. package/Server/Services/IncidentGroupingEngineService.ts +45 -8
  77. package/Server/Services/IncidentService.ts +123 -5
  78. package/Server/Services/IncidentTemplateService.ts +22 -0
  79. package/Server/Services/Index.ts +14 -0
  80. package/Server/Services/MessageQueueLabelRuleEngineService.ts +321 -0
  81. package/Server/Services/MessageQueueLabelRuleService.ts +14 -0
  82. package/Server/Services/MessageQueueOwnerRuleEngineService.ts +412 -0
  83. package/Server/Services/MessageQueueOwnerRuleService.ts +14 -0
  84. package/Server/Services/MessageQueueOwnerTeamService.ts +62 -0
  85. package/Server/Services/MessageQueueOwnerUserService.ts +62 -0
  86. package/Server/Services/MessageQueueService.ts +1463 -0
  87. package/Server/Services/MetricRecordingRuleService.ts +47 -0
  88. package/Server/Services/OpenTelemetryIngestService.ts +37 -4
  89. package/Server/Services/PodmanHostService.ts +109 -1
  90. package/Server/Services/ProjectService.ts +0 -59
  91. package/Server/Services/ProxmoxClusterService.ts +110 -1
  92. package/Server/Services/ResourceAiAccessService.ts +1439 -0
  93. package/Server/Services/ResourceAiAgentJobService.ts +202 -0
  94. package/Server/Services/ResourceAiAgentService.ts +2432 -0
  95. package/Server/Services/RunnerJobService.ts +611 -4
  96. package/Server/Services/StatusPagePrivateUserService.ts +1 -4
  97. package/Server/Services/StatusPageService.ts +1 -51
  98. package/Server/Services/TeamComplianceSettingService.ts +163 -42
  99. package/Server/Services/TelemetryUsageBillingService.ts +28 -0
  100. package/Server/Services/TraceRecordingRuleService.ts +33 -0
  101. package/Server/Services/UserNotificationRuleService.ts +8 -1
  102. package/Server/Services/VMwareVCenterService.ts +110 -1
  103. package/Server/Services/WorkspaceNotificationSummaryService.ts +12 -3
  104. package/Server/Types/Database/Permissions/CreatePermission.ts +17 -3
  105. package/Server/Types/Database/Permissions/EditionPermission.ts +140 -38
  106. package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +16 -0
  107. package/Server/Types/Database/Permissions/TablePermission.ts +3 -3
  108. package/Server/Types/Database/Permissions/UpdatePermission.ts +20 -6
  109. package/Server/Utils/AI/Chat/AgentContextCompactor.ts +200 -0
  110. package/Server/Utils/AI/Chat/ChatAgentRunner.ts +307 -48
  111. package/Server/Utils/AI/Chat/ChatRunCancellation.ts +156 -0
  112. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +78 -18
  113. package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +1 -1
  114. package/Server/Utils/AI/Chat/ToolOutputPager.ts +322 -0
  115. package/Server/Utils/AI/ClusterAccess/KubectlInvestigationToolkit.ts +88 -30
  116. package/Server/Utils/AI/ClusterAccess/KubectlJobRunner.ts +13 -1
  117. package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +0 -32
  118. package/Server/Utils/AI/CodeFix/FixRunBudget.ts +27 -25
  119. package/Server/Utils/AI/Remediation/RemediationCommandTools.ts +1442 -34
  120. package/Server/Utils/AI/Remediation/RemediationExecutionRunner.ts +968 -34
  121. package/Server/Utils/AI/Remediation/RemediationPlanRunner.ts +25 -1
  122. package/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.ts +622 -0
  123. package/Server/Utils/AI/ResourceAccess/ResourceAccessContext.ts +271 -0
  124. package/Server/Utils/AI/ResourceAccess/ResourceAccessToolNames.ts +45 -0
  125. package/Server/Utils/AI/ResourceAccess/ResourceAiAccessSettings.ts +964 -0
  126. package/Server/Utils/AI/ResourceAccess/ResourceAiDeleteCleanup.ts +333 -0
  127. package/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.ts +882 -0
  128. package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +125 -12
  129. package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +99 -15
  130. package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +99 -15
  131. package/Server/Utils/AI/SRE/InvestigationQueue.ts +16 -19
  132. package/Server/Utils/AI/SRE/InvestigationThread.ts +646 -0
  133. package/Server/Utils/AI/SRE/InvestigationThreadService.ts +715 -0
  134. package/Server/Utils/AI/Toolbox/Serializer.ts +10 -3
  135. package/Server/Utils/AutoRemediation/CommandPlanExecutor.ts +396 -13
  136. package/Server/Utils/AutoRemediation/RemediationVerifier.ts +35 -2
  137. package/Server/Utils/Database/ProjectScopedReferenceValidator.ts +9 -1
  138. package/Server/Utils/EditionEnforcement.ts +19 -202
  139. package/Server/Utils/LLM/LLMService.ts +259 -63
  140. package/Server/Utils/RelaxedScimTeamLocksReport.ts +245 -0
  141. package/Server/Utils/Rules/RuleRun/RuleRunRegistry.ts +25 -0
  142. package/Server/Utils/SameOriginRequest.ts +203 -0
  143. package/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.ts +920 -0
  144. package/Server/Utils/SessionReplay/SessionReplayUsage.ts +84 -6
  145. package/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.ts +2 -0
  146. package/Server/Utils/Telemetry/EntityRegistry.ts +4 -1
  147. package/Server/Utils/Telemetry/MessageQueueDiscovery.ts +1402 -0
  148. package/Server/Utils/Telemetry/ResourceEntityFilter.ts +4 -1
  149. package/Server/Utils/VendorAssets.ts +3 -3
  150. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.ts +35 -15
  151. package/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.ts +33 -15
  152. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.ts +21 -1
  153. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.ts +301 -225
  154. package/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.ts +38 -16
  155. package/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.ts +389 -175
  156. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +376 -144
  157. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsActivityDeduplicator.ts +163 -0
  158. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.ts +396 -0
  159. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCommands.ts +418 -0
  160. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsMessageSize.ts +152 -0
  161. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsReplies.ts +251 -0
  162. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezone.ts +214 -0
  163. package/Tests/App/Accounts/IncidentFormPage.test.tsx +2036 -0
  164. package/Tests/App/Accounts/IncidentFormServerMessages.test.ts +119 -0
  165. package/Tests/App/Accounts/IncidentFormUtils.test.ts +1157 -0
  166. package/Tests/App/Accounts/LoginPasskey.test.tsx +6 -4
  167. package/Tests/App/Accounts/LoginSso.test.tsx +724 -0
  168. package/Tests/App/AdminDashboard/AdminAuthenticationRequireSso.test.tsx +338 -0
  169. package/Tests/App/AdminDashboard/AdminAuthenticationSsoCardLocales.test.tsx +331 -0
  170. package/Tests/App/AdminDashboard/AdminEnterprisePluginPage.test.tsx +47 -33
  171. package/Tests/App/AdminDashboard/GlobalSsoOidcPages.test.tsx +1021 -0
  172. package/Tests/App/Dashboard/AffectedResourcesDisplay.test.tsx +876 -78
  173. package/Tests/App/Dashboard/AffectedResourcesSlo.test.tsx +20 -3
  174. package/Tests/App/Dashboard/CephProxmoxVMwareDocumentationCards.test.tsx +359 -0
  175. package/Tests/App/Dashboard/CephSetupGuide.test.ts +961 -0
  176. package/Tests/App/Dashboard/CloudDocumentationCard.test.tsx +381 -95
  177. package/Tests/App/Dashboard/CloudSetupGuide.test.ts +1463 -0
  178. package/Tests/App/Dashboard/ClusterAccessNotice.test.tsx +267 -12
  179. package/Tests/App/Dashboard/ContainerSetupGuideCards.test.tsx +345 -0
  180. package/Tests/App/Dashboard/CoreListEmptyStates.test.tsx +501 -0
  181. package/Tests/App/Dashboard/DashboardLazyPages.test.tsx +0 -1
  182. package/Tests/App/Dashboard/DatabaseDocumentationCard.test.tsx +400 -0
  183. package/Tests/App/Dashboard/DatabaseDocumentationMarkdown.test.ts +23 -6
  184. package/Tests/App/Dashboard/DatabaseSetupGuide.test.ts +1869 -0
  185. package/Tests/App/Dashboard/DatabaseTelemetryScope.test.ts +44 -0
  186. package/Tests/App/Dashboard/DatabaseTelemetryTabs.test.tsx +50 -9
  187. package/Tests/App/Dashboard/DockerSetupGuide.test.ts +899 -0
  188. package/Tests/App/Dashboard/DockerSwarmSetupGuide.test.ts +964 -0
  189. package/Tests/App/Dashboard/EnterpriseFeatureUpgrade.test.tsx +141 -7
  190. package/Tests/App/Dashboard/EnterprisePluginPage.test.tsx +52 -39
  191. package/Tests/App/Dashboard/EventOverviewPages.test.tsx +7 -1
  192. package/Tests/App/Dashboard/GettingStartedTaskRoutes.test.tsx +331 -0
  193. package/Tests/App/Dashboard/HomeOverviewStatsFirstRun.test.tsx +925 -0
  194. package/Tests/App/Dashboard/HostDocumentationCard.test.tsx +225 -0
  195. package/Tests/App/Dashboard/HostSetupGuide.test.ts +1183 -0
  196. package/Tests/App/Dashboard/IdentityEnterpriseShells.test.tsx +69 -45
  197. package/Tests/App/Dashboard/IncidentCreateTemplateCustomFieldSettings.test.tsx +745 -0
  198. package/Tests/App/Dashboard/IncidentCreateTemplateOwners.test.tsx +414 -0
  199. package/Tests/App/Dashboard/IncidentCustomFieldCreateSettingsForm.test.ts +1042 -0
  200. package/Tests/App/Dashboard/IncidentCustomFieldSettingsCard.test.tsx +1816 -0
  201. package/Tests/App/Dashboard/IncidentFormPlan.test.ts +89 -0
  202. package/Tests/App/Dashboard/IncidentFormShareLinkCard.test.tsx +846 -0
  203. package/Tests/App/Dashboard/IncidentFormsPages.test.tsx +1324 -0
  204. package/Tests/App/Dashboard/IncidentTemplateCustomFieldSettings.test.tsx +630 -0
  205. package/Tests/App/Dashboard/IncidentsSideMenu.test.tsx +13 -0
  206. package/Tests/App/Dashboard/IncomingEmailMonitorLinkVerifyHint.test.tsx +104 -0
  207. package/Tests/App/Dashboard/InvestigationConversation.test.tsx +1107 -0
  208. package/Tests/App/Dashboard/InvestigationConversationData.test.ts +546 -0
  209. package/Tests/App/Dashboard/InvestigationEvidenceList.test.tsx +170 -5
  210. package/Tests/App/Dashboard/InvestigationInfrastructureTools.test.tsx +506 -0
  211. package/Tests/App/Dashboard/InvestigationNotStarted.test.tsx +207 -2
  212. package/Tests/App/Dashboard/InvestigationPanel.test.tsx +729 -34
  213. package/Tests/App/Dashboard/InvestigationPanelStatus.test.tsx +9 -21
  214. package/Tests/App/Dashboard/InvestigationReportView.test.tsx +274 -37
  215. package/Tests/App/Dashboard/InvestigationStatusBadge.test.tsx +130 -0
  216. package/Tests/App/Dashboard/IoTDocumentationCard.test.tsx +218 -0
  217. package/Tests/App/Dashboard/IoTSetupGuide.test.ts +1124 -0
  218. package/Tests/App/Dashboard/KubernetesClusterAiAccessSettings.test.ts +20 -6
  219. package/Tests/App/Dashboard/KubernetesClusterAiDocumentationMarkdown.test.ts +107 -83
  220. package/Tests/App/Dashboard/KubernetesSetupGuide.test.ts +787 -0
  221. package/Tests/App/Dashboard/MessageQueueBreadcrumbs.test.tsx +228 -0
  222. package/Tests/App/Dashboard/MessageQueueBrokerHealth.test.tsx +1538 -0
  223. package/Tests/App/Dashboard/MessageQueueBrokerHealthMetricChart.test.tsx +969 -0
  224. package/Tests/App/Dashboard/MessageQueueBrokerHealthReads.test.ts +889 -0
  225. package/Tests/App/Dashboard/MessageQueueBrokerMetricsReach.test.ts +236 -0
  226. package/Tests/App/Dashboard/MessageQueueDocumentationCard.test.tsx +479 -0
  227. package/Tests/App/Dashboard/MessageQueueListPages.test.tsx +1232 -0
  228. package/Tests/App/Dashboard/MessageQueueMetricDescriptions.test.ts +244 -0
  229. package/Tests/App/Dashboard/MessageQueueMonitorLink.test.ts +952 -0
  230. package/Tests/App/Dashboard/MessageQueueMonitorLinkMonitorCreate.test.tsx +859 -0
  231. package/Tests/App/Dashboard/MessageQueueOverview.test.tsx +1773 -0
  232. package/Tests/App/Dashboard/MessageQueueOverviewPresentation.test.ts +196 -0
  233. package/Tests/App/Dashboard/MessageQueuePresentation.test.ts +799 -0
  234. package/Tests/App/Dashboard/MessageQueueProducersConsumers.test.tsx +680 -0
  235. package/Tests/App/Dashboard/MessageQueueRoutes.test.tsx +383 -0
  236. package/Tests/App/Dashboard/MessageQueueRulePages.test.tsx +278 -0
  237. package/Tests/App/Dashboard/MessageQueueSetupGuide.test.ts +2778 -0
  238. package/Tests/App/Dashboard/MessageQueueSideMenus.test.tsx +273 -0
  239. package/Tests/App/Dashboard/MessageQueueSpanPopulations.test.ts +930 -0
  240. package/Tests/App/Dashboard/MessageQueueSpanStore.ts +351 -0
  241. package/Tests/App/Dashboard/MessageQueueTelemetryScope.test.ts +375 -0
  242. package/Tests/App/Dashboard/MessageQueueTelemetryScopeTabs.test.tsx +668 -0
  243. package/Tests/App/Dashboard/MessageQueueViewPages.test.tsx +685 -0
  244. package/Tests/App/Dashboard/MonitorAndHomeNotOperationalMenus.test.tsx +342 -0
  245. package/Tests/App/Dashboard/MonitorCreateFirstRunDefaults.test.tsx +623 -0
  246. package/Tests/App/Dashboard/MonitorCreateFromMonitorBackedDevice.test.tsx +442 -0
  247. package/Tests/App/Dashboard/MonitorLogsPageViewSummary.test.tsx +814 -0
  248. package/Tests/App/Dashboard/MonitorSetupCardBodies.test.tsx +246 -0
  249. package/Tests/App/Dashboard/NavigationSearchKeywords.test.tsx +8 -0
  250. package/Tests/App/Dashboard/OnboardingSsoEmptyState.test.tsx +27 -12
  251. package/Tests/App/Dashboard/PlanGatedPage.test.tsx +292 -0
  252. package/Tests/App/Dashboard/PodmanSetupGuide.test.ts +948 -0
  253. package/Tests/App/Dashboard/ProductOrientation.test.tsx +5 -4
  254. package/Tests/App/Dashboard/ProductSettingsSectionCollapsed.test.tsx +266 -0
  255. package/Tests/App/Dashboard/ProxmoxSetupGuide.test.ts +1318 -0
  256. package/Tests/App/Dashboard/RemediationSuggestionCardDescription.test.tsx +209 -0
  257. package/Tests/App/Dashboard/RemediationSuggestionCardResource.test.tsx +317 -0
  258. package/Tests/App/Dashboard/ResourceAiAccessSettingsUtil.test.ts +921 -0
  259. package/Tests/App/Dashboard/ResourceAiAgentAttentionServerParity.test.ts +555 -0
  260. package/Tests/App/Dashboard/ResourceAiAgentInstall.test.ts +860 -0
  261. package/Tests/App/Dashboard/ResourceAiAgentPage.test.tsx +2010 -0
  262. package/Tests/App/Dashboard/ResourceAiAgentStatus.test.ts +1455 -0
  263. package/Tests/App/Dashboard/ResourceAiInsightsPage.test.tsx +931 -0
  264. package/Tests/App/Dashboard/ResourceAiNavigation.test.tsx +575 -0
  265. package/Tests/App/Dashboard/ResourceArchiveSettings.test.tsx +16 -0
  266. package/Tests/App/Dashboard/ResourceConnectionGuideCard.test.tsx +444 -0
  267. package/Tests/App/Dashboard/ResourceConnectionGuideOverviewsInfra.test.tsx +798 -0
  268. package/Tests/App/Dashboard/ResourceConnectionGuideOverviewsPlatforms.test.tsx +717 -0
  269. package/Tests/App/Dashboard/ResourceConnectionGuides.test.ts +981 -0
  270. package/Tests/App/Dashboard/ResourceConnectionState.test.ts +132 -0
  271. package/Tests/App/Dashboard/RumDocumentationCard.test.tsx +293 -0
  272. package/Tests/App/Dashboard/RumSessionReplayRetentionSettings.test.tsx +467 -0
  273. package/Tests/App/Dashboard/RumSetupGuide.test.ts +758 -0
  274. package/Tests/App/Dashboard/RunbookStepTypeMaps.test.ts +38 -7
  275. package/Tests/App/Dashboard/ScheduledMaintenanceOverviewPage.test.tsx +25 -0
  276. package/Tests/App/Dashboard/ServerlessDocumentationCard.test.tsx +254 -0
  277. package/Tests/App/Dashboard/ServerlessSetupGuide.test.ts +1074 -0
  278. package/Tests/App/Dashboard/SetupGuide.test.ts +246 -0
  279. package/Tests/App/Dashboard/SetupGuideCard.test.tsx +756 -0
  280. package/Tests/App/Dashboard/SloListSideMenu.test.tsx +120 -0
  281. package/Tests/App/Dashboard/SsoPages.test.tsx +833 -0
  282. package/Tests/App/Dashboard/TelemetryDocumentation.test.tsx +253 -0
  283. package/Tests/App/Dashboard/TelemetryRetentionShells.test.tsx +730 -0
  284. package/Tests/App/Dashboard/VMwareSetupGuide.test.ts +1033 -0
  285. package/Tests/App/StatusPage/StatusPageSsoEmptyState.test.tsx +87 -7
  286. package/Tests/Models/DatabaseModels/DatabaseServerModels.test.ts +61 -10
  287. package/Tests/Models/DatabaseModels/IncidentFormModel.test.ts +1250 -0
  288. package/Tests/Models/DatabaseModels/MessageQueueModels.test.ts +1983 -0
  289. package/Tests/Models/DatabaseModels/ResourceAiAccessColumns.test.ts +738 -0
  290. package/Tests/Models/DatabaseModels/ResourceAiAgentModel.test.ts +842 -0
  291. package/Tests/Models/DatabaseModels/StaticRuleCriteriaInheritance.test.ts +4 -2
  292. package/Tests/Models/DatabaseModels/TeamComplianceSettingModel.test.ts +190 -14
  293. package/Tests/Models/IncidentTemplateCustomFieldSettingsColumn.test.ts +291 -0
  294. package/Tests/Server/API/AIInvestigationConversationAPI.test.ts +412 -0
  295. package/Tests/Server/API/AutoRemediationApproveResourceRound.test.ts +835 -0
  296. package/Tests/Server/API/GlobalConfigLicense.test.ts +38 -9
  297. package/Tests/Server/API/IncidentFormAPI.test.ts +942 -0
  298. package/Tests/Server/API/IncidentFormPublicRoutes.test.ts +1653 -0
  299. package/Tests/Server/API/KubernetesClusterAiAccessAPI.test.ts +2 -1
  300. package/Tests/Server/API/ResourceAiAccessAPI.test.ts +2730 -0
  301. package/Tests/Server/API/{SsoProviderListingsEdition.test.ts → SsoProviderListings.test.ts} +164 -110
  302. package/Tests/Server/Enterprise/EnterpriseEdition.test.ts +76 -54
  303. package/Tests/Server/Enterprise/EnterpriseFeatureActive.test.ts +125 -42
  304. package/Tests/Server/Enterprise/EnterpriseLicenseSnapshot.test.ts +36 -10
  305. package/Tests/Server/Enterprise/EnterpriseModelFeatureMap.test.ts +51 -9
  306. package/Tests/Server/Enterprise/FakeEnterpriseModule.ts +13 -8
  307. package/Tests/Server/Enterprise/SsoInCommunityEdition.test.ts +540 -0
  308. package/Tests/Server/Infrastructure/Postgres/AddConfigurableRuleCriteriaMigration.test.ts +3 -0
  309. package/Tests/Server/Infrastructure/Postgres/AddDatabaseServerTablesMigration.test.ts +60 -0
  310. package/Tests/Server/Infrastructure/Postgres/AddIncidentFormsMigration.test.ts +438 -0
  311. package/Tests/Server/Infrastructure/Postgres/AddResourceAiAgentsMigration.test.ts +659 -0
  312. package/Tests/Server/Infrastructure/Postgres/AddTeamComplianceRuleNotificationChannelsMigration.test.ts +255 -0
  313. package/Tests/Server/Infrastructure/Postgres/MessageQueueTablesMigration.test.ts +637 -0
  314. package/Tests/Server/Infrastructure/SemaphoreMutex.test.ts +31 -0
  315. package/Tests/Server/Middleware/IncidentFormRateLimit.test.ts +1630 -0
  316. package/Tests/Server/Middleware/TelemetryIngestBrowserKey.test.ts +63 -5
  317. package/Tests/Server/Middleware/TelemetryIngestKubernetesAgentRunnerPinnedKey.test.ts +103 -5
  318. package/Tests/Server/Middleware/TelemetryIngestKubernetesAgentRunnerRateLimit.test.ts +19 -1
  319. package/Tests/Server/Middleware/UserAuthorization.test.ts +16 -17
  320. package/Tests/Server/Middleware/UserAuthorizationSsoEnforcement.test.ts +544 -0
  321. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +37 -8
  322. package/Tests/Server/Services/AutoRemediationResourceRuleEngine.test.ts +1279 -0
  323. package/Tests/Server/Services/DatabaseServerService.test.ts +55 -0
  324. package/Tests/Server/Services/GroupTelemetryUsageExcludeNames.test.ts +299 -0
  325. package/Tests/Server/Services/HostServiceFindOrCreateMemo.test.ts +44 -0
  326. package/Tests/Server/Services/IncidentCreatedFeedTitle.test.ts +212 -0
  327. package/Tests/Server/Services/IncidentCustomFieldDeleteFormQuestions.test.ts +297 -0
  328. package/Tests/Server/Services/IncidentFormOwnersCreatedNotification.test.ts +497 -0
  329. package/Tests/Server/Services/IncidentFormPostgres.test.ts +958 -0
  330. package/Tests/Server/Services/IncidentFormPublicForm.test.ts +1260 -0
  331. package/Tests/Server/Services/IncidentFormPublicSubmission.test.ts +2520 -0
  332. package/Tests/Server/Services/IncidentFormRegistration.test.ts +159 -0
  333. package/Tests/Server/Services/IncidentFormService.test.ts +663 -0
  334. package/Tests/Server/Services/IncidentFormSubmissionService.test.ts +430 -0
  335. package/Tests/Server/Services/IncidentFormSubmissionTemplateBranch.test.ts +473 -0
  336. package/Tests/Server/Services/IncidentGroupingTemplateSubstitution.test.ts +81 -0
  337. package/Tests/Server/Services/IncidentTemplateCustomFieldSettings.test.ts +262 -0
  338. package/Tests/Server/Services/IncidentTemplateOwnersOnDeclare.test.ts +566 -0
  339. package/Tests/Server/Services/IncidentTitleMarkdownSinks.test.ts +640 -0
  340. package/Tests/Server/Services/LlmLogServiceTokenAggregateParams.test.ts +3 -3
  341. package/Tests/Server/Services/MessageQueueOwnerServices.test.ts +440 -0
  342. package/Tests/Server/Services/MessageQueueRegistries.test.ts +577 -0
  343. package/Tests/Server/Services/MessageQueueRuleEngines.test.ts +900 -0
  344. package/Tests/Server/Services/MessageQueueService.test.ts +2210 -0
  345. package/Tests/Server/Services/MessageQueueSqlPostgres.test.ts +1271 -0
  346. package/Tests/Server/Services/MonitorProbeServiceIntervalScheduling.test.ts +45 -6
  347. package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +28 -1
  348. package/Tests/Server/Services/OpenTelemetryRetentionOverrideEdition.test.ts +474 -0
  349. package/Tests/Server/Services/OpenTelemetryServiceResolutionCache.test.ts +21 -0
  350. package/Tests/Server/Services/OwnerRowUniqueness.test.ts +3 -0
  351. package/Tests/Server/Services/ProjectServiceAuditLogLicense.test.ts +0 -1
  352. package/Tests/Server/Services/RecordingRuleReservedMetricName.test.ts +171 -0
  353. package/Tests/Server/Services/ResourceAiAccessChangeAuthorization.test.ts +256 -0
  354. package/Tests/Server/Services/ResourceAiAccessService.test.ts +1373 -0
  355. package/Tests/Server/Services/ResourceAiAgentJobService.test.ts +375 -0
  356. package/Tests/Server/Services/ResourceAiAgentServiceHelpers.test.ts +1114 -0
  357. package/Tests/Server/Services/ResourceAiAgentServiceLifecycle.test.ts +1050 -0
  358. package/Tests/Server/Services/ResourceAiAgentServiceRegister.test.ts +2251 -0
  359. package/Tests/Server/Services/ResourceAiSettingsCreate.test.ts +373 -0
  360. package/Tests/Server/Services/ResourceAiSettingsPermission.test.ts +1042 -0
  361. package/Tests/Server/Services/ResourceServiceDeleteCleansUpAi.test.ts +319 -0
  362. package/Tests/Server/Services/RuleRun/LabelRuleEnginesGroupBRun.test.ts +56 -6
  363. package/Tests/Server/Services/RuleRun/OwnerRuleEnginesGroupBRun.test.ts +30 -1
  364. package/Tests/Server/Services/RunnerJobEnqueueKubectl.test.ts +105 -0
  365. package/Tests/Server/Services/RunnerJobEnqueueResourceCommand.test.ts +986 -0
  366. package/Tests/Server/Services/RunnerJobResourceCommandLane.test.ts +211 -0
  367. package/Tests/Server/Services/RunnerJobResourceCommandTimeoutAndRedaction.test.ts +352 -0
  368. package/Tests/Server/Services/SsoRequirementReads.test.ts +454 -0
  369. package/Tests/Server/Services/SsoRequirementWrites.test.ts +529 -0
  370. package/Tests/Server/Services/StaticRuleCriteriaRuntimeCoverage.test.ts +3 -3
  371. package/Tests/Server/Services/StatusPagePrivateUserInvitationPolicy.test.ts +107 -89
  372. package/Tests/Server/Services/TeamComplianceSettingPostgres.test.ts +1068 -176
  373. package/Tests/Server/Services/TeamComplianceSettingService.test.ts +1962 -200
  374. package/Tests/Server/Services/TelemetryUsageBillingSloExclusion.test.ts +218 -0
  375. package/Tests/Server/TestingUtils/Services/FakeRunnerJobCount.ts +145 -0
  376. package/Tests/Server/Types/Database/Permissions/EditionPermission.test.ts +654 -297
  377. package/Tests/Server/Types/Database/Permissions/RetentionOverrideColumns.test.ts +784 -0
  378. package/Tests/Server/Types/Database/Permissions/SsoScalePlanGate.test.ts +418 -0
  379. package/Tests/Server/Utils/AI/AIAlertGating.test.ts +0 -1
  380. package/Tests/Server/Utils/AI/AIInvestigationEngineRunLimits.test.ts +136 -0
  381. package/Tests/Server/Utils/AI/AIInvestigationQueue.test.ts +15 -14
  382. package/Tests/Server/Utils/AI/AgentContextCompactor.test.ts +351 -0
  383. package/Tests/Server/Utils/AI/ChatAgentRunnerSharedThread.test.ts +842 -0
  384. package/Tests/Server/Utils/AI/ChatRunCancellation.test.ts +195 -0
  385. package/Tests/Server/Utils/AI/CodeFixReadiness.test.ts +10 -57
  386. package/Tests/Server/Utils/AI/FixRunBudget.test.ts +20 -24
  387. package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +7 -30
  388. package/Tests/Server/Utils/AI/InvestigationClusterAccessWiring.test.ts +225 -29
  389. package/Tests/Server/Utils/AI/InvestigationInfrastructureAccessWiring.test.ts +694 -0
  390. package/Tests/Server/Utils/AI/InvestigationInfrastructureReport.test.ts +721 -0
  391. package/Tests/Server/Utils/AI/InvestigationThread.test.ts +580 -0
  392. package/Tests/Server/Utils/AI/InvestigationThreadService.test.ts +801 -0
  393. package/Tests/Server/Utils/AI/KubectlInvestigationToolkit.test.ts +525 -43
  394. package/Tests/Server/Utils/AI/KubectlJobRunner.test.ts +4 -2
  395. package/Tests/Server/Utils/AI/LLMServiceUnreachableProvider.test.ts +435 -0
  396. package/Tests/Server/Utils/AI/ObservabilityAssistantLimits.test.ts +462 -0
  397. package/Tests/Server/Utils/AI/RemediationCommandTools.test.ts +94 -1
  398. package/Tests/Server/Utils/AI/RemediationCommandToolsResource.test.ts +1530 -0
  399. package/Tests/Server/Utils/AI/RemediationExecutionRunner.test.ts +14 -25
  400. package/Tests/Server/Utils/AI/RemediationExecutionRunnerResourceMode.test.ts +1251 -0
  401. package/Tests/Server/Utils/AI/RemediationPlanRunner.test.ts +117 -0
  402. package/Tests/Server/Utils/AI/RemediationResourceCopyParity.test.ts +463 -0
  403. package/Tests/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.test.ts +1004 -0
  404. package/Tests/Server/Utils/AI/ResourceAccess/ResourceAccessContext.test.ts +266 -0
  405. package/Tests/Server/Utils/AI/ResourceAccess/ResourceAiAccessSettings.test.ts +1220 -0
  406. package/Tests/Server/Utils/AI/ResourceAccess/ResourceAiDeleteCleanup.test.ts +569 -0
  407. package/Tests/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.test.ts +834 -0
  408. package/Tests/Server/Utils/AI/ToolOutputPager.test.ts +382 -0
  409. package/Tests/Server/Utils/AI/ToolResultSerializer.test.ts +23 -4
  410. package/Tests/Server/Utils/AI/Toolbox/LogTools.test.ts +25 -6
  411. package/Tests/Server/Utils/AI/Toolbox/Serializer.test.ts +14 -3
  412. package/Tests/Server/Utils/AutoRemediation/CommandPlanExecutorResource.test.ts +717 -0
  413. package/Tests/Server/Utils/AutoRemediation/RemediationVerifierResourceFollowUp.test.ts +338 -0
  414. package/Tests/Server/Utils/EditionEnforcement.test.ts +107 -147
  415. package/Tests/Server/Utils/Monitor/Criteria/SessionReplayBudgetTemplateCriteria.test.ts +422 -0
  416. package/Tests/Server/Utils/{CommunityEditionSsoReport.test.ts → RelaxedScimTeamLocksReport.test.ts} +212 -208
  417. package/Tests/Server/Utils/SameOriginRequest.test.ts +372 -0
  418. package/Tests/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.test.ts +1647 -0
  419. package/Tests/Server/Utils/SessionReplay/SessionReplayUsage.test.ts +143 -1
  420. package/Tests/Server/Utils/Telemetry/EntityRegistry.test.ts +20 -0
  421. package/Tests/Server/Utils/Telemetry/MessageQueueDiscovery.test.ts +2590 -0
  422. package/Tests/Server/Utils/Telemetry/MessageQueueSpanQueryTwin.ts +246 -0
  423. package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +23 -0
  424. package/Tests/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.test.ts +33 -3
  425. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsAccountNotLinked.test.ts +1093 -0
  426. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsActivityDeduplicator.test.ts +1049 -0
  427. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.test.ts +1676 -0
  428. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCards.test.ts +2884 -0
  429. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCommands.test.ts +2490 -0
  430. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateSubmit.test.ts +2293 -0
  431. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateSubmitServerTimezone.test.ts +386 -0
  432. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsMessageSize.test.ts +1477 -0
  433. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsReplies.test.ts +1967 -0
  434. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsStripHtmlTags.test.ts +92 -0
  435. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsSubmittedFormRemoval.test.ts +1819 -0
  436. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezone.test.ts +1033 -0
  437. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezoneServerZone.test.ts +610 -0
  438. package/Tests/Server/Utils/Workspace/MicrosoftTeamsBotMessageHandling.test.ts +2610 -0
  439. package/Tests/Server/Utils/Workspace/MicrosoftTeamsCreateCommandsEndToEnd.test.ts +4672 -0
  440. package/Tests/Server/Utils/Workspace/WorkspaceCreateProjectReferences.test.ts +190 -65
  441. package/Tests/Types/AI/AIAgentRunLimits.test.ts +255 -0
  442. package/Tests/Types/AutoRemediation/AiRemediationCommandPlan.test.ts +10 -4
  443. package/Tests/Types/AutoRemediation/AiRemediationCommandPlanResourceCommand.test.ts +305 -0
  444. package/Tests/Types/Code/JsonSyntax.test.ts +1300 -0
  445. package/Tests/Types/CustomField/CustomFieldCreateSettings.test.ts +1113 -0
  446. package/Tests/Types/CustomField/CustomFieldMappingCatalog.test.ts +91 -0
  447. package/Tests/Types/CustomField/CustomFieldValueValidator.test.ts +30 -0
  448. package/Tests/Types/Incident/IncidentFormIpAllowlist.test.ts +227 -0
  449. package/Tests/Types/Incident/IncidentFormPublic.test.ts +1916 -0
  450. package/Tests/Types/MessageQueue/MessageQueueEntityKey.test.ts +916 -0
  451. package/Tests/Types/MessageQueue/MessageQueueIdentity.test.ts +567 -0
  452. package/Tests/Types/MessageQueue/MessageQueueManualIdentity.test.ts +686 -0
  453. package/Tests/Types/MessageQueue/MessageQueueMetricCatalog.test.ts +1726 -0
  454. package/Tests/Types/MessageQueue/MessageQueueMetricResolution.test.ts +1758 -0
  455. package/Tests/Types/MessageQueue/MessagingInstrumentationFixtures.test.ts +4686 -0
  456. package/Tests/Types/MessageQueue/MessagingSystem.test.ts +840 -0
  457. package/Tests/Types/MessageQueue/MessagingTelemetryFixtures.ts +3287 -0
  458. package/Tests/Types/MessageQueue/MessagingTelemetryResolver.test.ts +2966 -0
  459. package/Tests/Types/Monitor/MessageQueueAlertTemplates.test.ts +5401 -0
  460. package/Tests/Types/Monitor/MetricEngineFold.ts +154 -0
  461. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +277 -13
  462. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +113 -0
  463. package/Tests/Types/Monitor/RumAlertTemplates.test.ts +773 -2
  464. package/Tests/Types/ResourceAiAgent/AiResourceType.test.ts +419 -0
  465. package/Tests/Types/ResourceAiAgent/ResourceAiAccess.test.ts +519 -0
  466. package/Tests/Types/Runbook/RunbookStepType.test.ts +147 -8
  467. package/Tests/Types/Team/ComplianceRule.test.ts +588 -37
  468. package/Tests/Types/Team/TeamComplianceStatus.test.ts +64 -11
  469. package/Tests/Types/XML.test.ts +51 -0
  470. package/Tests/UI/Components/CodeEditor/CodeEditor.test.tsx +2362 -0
  471. package/Tests/UI/Components/CodeEditor/CodeEditorCommands.test.ts +810 -0
  472. package/Tests/UI/Components/CodeEditor/CodeEditorHighlight.test.ts +338 -0
  473. package/Tests/UI/Components/CodeEditor/CodeEditorLanguages.test.ts +222 -0
  474. package/Tests/UI/Components/CodeEditor/CodeEditorStyles.test.ts +807 -0
  475. package/Tests/UI/Components/CodeEditor/NoMonaco.test.ts +245 -0
  476. package/Tests/UI/Components/CodeEditor/YamlEditor.test.tsx +729 -0
  477. package/Tests/UI/Components/CopyTextButton.test.tsx +76 -0
  478. package/Tests/UI/Components/EditionLabelLapseCopy.ts +51 -14
  479. package/Tests/UI/Components/EditionLabelLicenseStatus.test.tsx +131 -23
  480. package/Tests/UI/Components/ErrorMessageAction.test.tsx +142 -0
  481. package/Tests/UI/Components/FacetSidebarInScope.test.tsx +459 -0
  482. package/Tests/UI/Components/FacetValuesInScope.test.ts +270 -0
  483. package/Tests/UI/Components/Forms/FormFieldCodeEditors.test.tsx +294 -0
  484. package/Tests/UI/Components/Forms/FormFieldMarkdown.test.tsx +126 -0
  485. package/Tests/UI/Components/Forms/FormFieldYaml.test.tsx +22 -75
  486. package/Tests/UI/Components/Forms/ModelFormOnBeforeCreateMiscData.test.tsx +254 -0
  487. package/Tests/UI/Components/Icon.test.tsx +32 -0
  488. package/Tests/UI/Components/Input.test.tsx +31 -0
  489. package/Tests/UI/Components/LockedFilterChipScope.test.tsx +501 -0
  490. package/Tests/UI/Components/MarkdownConverters.test.ts +253 -1
  491. package/Tests/UI/Components/MarkdownEditor.test.tsx +2785 -2
  492. package/Tests/UI/Components/MarkdownEditorHistory.test.ts +243 -0
  493. package/Tests/UI/Components/MarkdownListEditing.test.ts +1118 -0
  494. package/Tests/UI/Components/MarkdownPaste.test.ts +1180 -0
  495. package/Tests/UI/Components/MarkdownViewerCopy.test.tsx +466 -0
  496. package/Tests/UI/Components/MarkdownVisualEditing.test.ts +1089 -0
  497. package/Tests/UI/Components/ModelTable/BaseModelTableEmptyStateAction.test.tsx +623 -0
  498. package/Tests/UI/Components/ResetObjectID.test.tsx +282 -0
  499. package/Tests/UI/Components/RuleCriteria/RuleCriteriaModelTable.test.tsx +3 -3
  500. package/Tests/UI/Components/Table/EmptyTableMessage.test.ts +439 -0
  501. package/Tests/UI/Components/Table/TableEmptyState.test.tsx +352 -0
  502. package/Tests/UI/Components/TableRowMobileTitles.test.tsx +78 -0
  503. package/Tests/UI/Components/TextArea.test.tsx +19 -0
  504. package/Tests/UI/Components/Workflow/ModelColumnEditor.render.test.tsx +12 -29
  505. package/Tests/UI/Components/fixtures/MarkdownPasteFixtures.ts +460 -0
  506. package/Tests/UI/EsbuildConfig.test.ts +115 -39
  507. package/Tests/UI/EsbuildEnterpriseAlias.test.ts +4 -4
  508. package/Tests/UI/Monitor/MonitorLogSummaryRender.test.tsx +377 -0
  509. package/Tests/UI/Rum/RecordingHealthDashboard.test.tsx +769 -1
  510. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +81 -1
  511. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +17 -0
  512. package/Tests/Utils/AiRemediation/Resource/CephCommandPolicy.test.ts +1653 -0
  513. package/Tests/Utils/AiRemediation/Resource/CephOutputRedaction.test.ts +204 -0
  514. package/Tests/Utils/AiRemediation/Resource/DatabaseCommandPolicy.test.ts +1077 -0
  515. package/Tests/Utils/AiRemediation/Resource/DatabaseDiagnosticCatalog.test.ts +558 -0
  516. package/Tests/Utils/AiRemediation/Resource/DatabaseQueryRedactor.test.ts +834 -0
  517. package/Tests/Utils/AiRemediation/Resource/DockerCliGrammar.test.ts +747 -0
  518. package/Tests/Utils/AiRemediation/Resource/DockerEngineCommandPolicy.test.ts +1259 -0
  519. package/Tests/Utils/AiRemediation/Resource/DockerOutputRedaction.test.ts +386 -0
  520. package/Tests/Utils/AiRemediation/Resource/DockerSwarmCommandPolicy.test.ts +782 -0
  521. package/Tests/Utils/AiRemediation/Resource/GovcCommandPolicy.test.ts +2259 -0
  522. package/Tests/Utils/AiRemediation/Resource/HostCommandPolicy.test.ts +2019 -0
  523. package/Tests/Utils/AiRemediation/Resource/ProxmoxCommandPolicy.test.ts +2497 -0
  524. package/Tests/Utils/AiRemediation/Resource/ResourceCommandPolicy.test.ts +1305 -0
  525. package/Tests/Utils/AiRemediation/Resource/ResourceCommandPolicyCore.test.ts +585 -0
  526. package/Tests/Utils/AiRemediation/Resource/ResourceOutputRedactor.test.ts +334 -0
  527. package/Tests/Utils/AiRemediation/Resource/ResourceOutputRedactorCopyParity.test.ts +98 -0
  528. package/Tests/Utils/AiRemediation/Resource/ResourcePolicyImportClosure.test.ts +391 -0
  529. package/Tests/Utils/AiRemediation/ResourceAiAgentPolicyCopyParity.test.ts +497 -0
  530. package/Tests/Utils/LabelRuleImportExport.test.ts +5 -0
  531. package/Tests/Utils/Markdown/DashboardMarkdownRenderer.ts +81 -0
  532. package/Tests/Utils/Markdown/UntrustedMarkdown.test.ts +1339 -0
  533. package/Tests/Utils/Monitor/MonitorLogSummaryUtil.test.ts +862 -0
  534. package/Tests/Utils/SessionReplay/SessionReplayBudgetMetricType.test.ts +383 -0
  535. package/Types/AI/AIAgentRunLimits.ts +146 -0
  536. package/Types/AI/ResourceAiAccessApi.ts +140 -0
  537. package/Types/AI/ResourceAiAccessPermissions.ts +126 -0
  538. package/Types/AutoRemediation/AiRemediationCommandPlan.ts +183 -2
  539. package/Types/Code/CodeType.ts +2 -0
  540. package/Types/Code/JsonSyntax.ts +923 -0
  541. package/Types/CustomField/CustomFieldCreateSettings.ts +549 -0
  542. package/Types/CustomField/CustomFieldMappingCatalog.ts +77 -0
  543. package/Types/CustomField/CustomFieldValueValidator.ts +10 -7
  544. package/Types/EnterpriseLicense/EnterpriseLicensePeriods.ts +1 -1
  545. package/Types/Icon/IconProp.ts +2 -0
  546. package/Types/Incident/IncidentFormIpAllowlist.ts +206 -0
  547. package/Types/Incident/IncidentFormPublic.ts +1145 -0
  548. package/Types/Kubernetes/KubernetesClusterAiAccess.ts +10 -3
  549. package/Types/MessageQueue/MessageQueueIdentity.ts +256 -0
  550. package/Types/MessageQueue/MessageQueueManualIdentity.ts +325 -0
  551. package/Types/MessageQueue/MessageQueueMetricCatalog.ts +1357 -0
  552. package/Types/MessageQueue/MessagingSystem.ts +518 -0
  553. package/Types/MessageQueue/MessagingTelemetryResolver.ts +2311 -0
  554. package/Types/Monitor/MessageQueueAlertTemplates.ts +2128 -0
  555. package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +55 -22
  556. package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +35 -3
  557. package/Types/Monitor/RumAlertTemplates.ts +351 -4
  558. package/Types/Permission.ts +310 -0
  559. package/Types/ResourceAiAgent/AiResourceType.ts +310 -0
  560. package/Types/ResourceAiAgent/ResourceAiAccess.ts +580 -0
  561. package/Types/Rules/RuleCriteriaFieldRegistry.ts +12 -0
  562. package/Types/Rules/RuleRun.ts +4 -0
  563. package/Types/Rum/SessionReplayBudgetMetricType.ts +47 -0
  564. package/Types/Runbook/RunbookStepType.ts +29 -0
  565. package/Types/Team/ComplianceNotificationChannel.ts +4 -3
  566. package/Types/Team/ComplianceRule.ts +71 -18
  567. package/Types/Team/ComplianceRuleType.ts +2 -2
  568. package/Types/Team/TeamComplianceStatus.ts +6 -2
  569. package/Types/Telemetry/EntityType.ts +16 -0
  570. package/Types/Telemetry/LockedFilterDetail.ts +22 -0
  571. package/Types/Telemetry/TelemetryIngestSurface.ts +14 -2
  572. package/Types/XML.ts +26 -0
  573. package/UI/Components/CodeEditor/CodeEditor.css +379 -0
  574. package/UI/Components/CodeEditor/CodeEditor.tsx +1128 -294
  575. package/UI/Components/CodeEditor/CodeEditorCommands.ts +774 -0
  576. package/UI/Components/CodeEditor/CodeEditorHighlight.ts +106 -0
  577. package/UI/Components/CodeEditor/CodeEditorLanguages.ts +164 -0
  578. package/UI/Components/CodeEditor/YamlEditor.tsx +28 -326
  579. package/UI/Components/CopyTextButton/CopyTextButton.tsx +5 -1
  580. package/UI/Components/CustomFields/CustomFieldModelFormFields.tsx +6 -25
  581. package/UI/Components/EditionLabel/EditionLabel.tsx +14 -13
  582. package/UI/Components/ErrorMessage/ErrorMessage.tsx +11 -1
  583. package/UI/Components/Forms/Fields/FormField.tsx +8 -0
  584. package/UI/Components/Forms/Types/Field.ts +8 -0
  585. package/UI/Components/Icon/Icon.tsx +18 -0
  586. package/UI/Components/Input/Input.tsx +11 -4
  587. package/UI/Components/LogsViewer/LogsViewer.tsx +4 -0
  588. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +21 -3
  589. package/UI/Components/Markdown.tsx/MarkdownConverters.ts +0 -0
  590. package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +877 -79
  591. package/UI/Components/Markdown.tsx/MarkdownEditorHistory.ts +284 -0
  592. package/UI/Components/Markdown.tsx/MarkdownListEditing.ts +1362 -0
  593. package/UI/Components/Markdown.tsx/MarkdownPaste.ts +1326 -0
  594. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +106 -10
  595. package/UI/Components/Markdown.tsx/MarkdownVisualEditing.ts +1032 -0
  596. package/UI/Components/ModelTable/BaseModelTable.tsx +85 -7
  597. package/UI/Components/ResetObjectID/ResetObjectID.tsx +35 -9
  598. package/UI/Components/Table/EmptyTableMessage.ts +81 -0
  599. package/UI/Components/Table/Table.tsx +50 -21
  600. package/UI/Components/Table/TableRow.tsx +9 -1
  601. package/UI/Components/TelemetryViewer/FacetVisibility.ts +97 -2
  602. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +13 -0
  603. package/UI/Components/TelemetryViewer/components/LockedFilterChip.tsx +214 -7
  604. package/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.tsx +21 -3
  605. package/UI/Components/TextArea/TextArea.tsx +9 -2
  606. package/UI/Components/Workflow/ModelFieldPicker.tsx +10 -12
  607. package/UI/Styles/Theme.css +8 -0
  608. package/UI/esbuild-config.js +2 -32
  609. package/Utils/AI/InvestigationReport.ts +121 -15
  610. package/Utils/AiRemediation/Resource/CephCommandPolicy.ts +1936 -0
  611. package/Utils/AiRemediation/Resource/DatabaseCommandPolicy.ts +166 -0
  612. package/Utils/AiRemediation/Resource/DatabaseDiagnosticCatalog.ts +1532 -0
  613. package/Utils/AiRemediation/Resource/DatabaseQueryRedactor.ts +1394 -0
  614. package/Utils/AiRemediation/Resource/DockerCliGrammar.ts +1839 -0
  615. package/Utils/AiRemediation/Resource/DockerEngineCommandPolicy.ts +490 -0
  616. package/Utils/AiRemediation/Resource/DockerSwarmCommandPolicy.ts +687 -0
  617. package/Utils/AiRemediation/Resource/GovcCommandPolicy.ts +2096 -0
  618. package/Utils/AiRemediation/Resource/HostCommandPolicy.ts +2982 -0
  619. package/Utils/AiRemediation/Resource/ProxmoxCommandPolicy.ts +1679 -0
  620. package/Utils/AiRemediation/Resource/ResourceCommandPolicy.ts +851 -0
  621. package/Utils/AiRemediation/Resource/ResourceCommandPolicyCore.ts +593 -0
  622. package/Utils/AiRemediation/Resource/ResourceOutputRedactor.ts +2812 -0
  623. package/Utils/LabelRuleImportExport.ts +2 -0
  624. package/Utils/Markdown/UntrustedMarkdown.ts +1513 -0
  625. package/Utils/Monitor/IncomingEmailMonitorRequestUtil.ts +41 -0
  626. package/Utils/Monitor/MonitorLogSummaryUtil.ts +212 -0
  627. package/Utils/SessionReplay/SessionReplayBudgetMetricType.ts +184 -0
  628. package/Utils/Telemetry/EntityKey.ts +48 -0
  629. package/build/dist/Models/DatabaseModels/AIConversation.js +125 -1
  630. package/build/dist/Models/DatabaseModels/AIConversation.js.map +1 -1
  631. package/build/dist/Models/DatabaseModels/AutoRemediationSuggestion.js +62 -0
  632. package/build/dist/Models/DatabaseModels/AutoRemediationSuggestion.js.map +1 -1
  633. package/build/dist/Models/DatabaseModels/CephCluster.js +231 -0
  634. package/build/dist/Models/DatabaseModels/CephCluster.js.map +1 -1
  635. package/build/dist/Models/DatabaseModels/CloudResource.js +12 -0
  636. package/build/dist/Models/DatabaseModels/CloudResource.js.map +1 -1
  637. package/build/dist/Models/DatabaseModels/DatabaseServer.js +231 -0
  638. package/build/dist/Models/DatabaseModels/DatabaseServer.js.map +1 -1
  639. package/build/dist/Models/DatabaseModels/DockerHost.js +231 -0
  640. package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -1
  641. package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js +231 -0
  642. package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js.map +1 -1
  643. package/build/dist/Models/DatabaseModels/GlobalConfig.js +1 -1
  644. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  645. package/build/dist/Models/DatabaseModels/GlobalOidc.js +0 -4
  646. package/build/dist/Models/DatabaseModels/GlobalOidc.js.map +1 -1
  647. package/build/dist/Models/DatabaseModels/GlobalOidcProject.js +0 -4
  648. package/build/dist/Models/DatabaseModels/GlobalOidcProject.js.map +1 -1
  649. package/build/dist/Models/DatabaseModels/GlobalSso.js +0 -4
  650. package/build/dist/Models/DatabaseModels/GlobalSso.js.map +1 -1
  651. package/build/dist/Models/DatabaseModels/GlobalSsoProject.js +0 -4
  652. package/build/dist/Models/DatabaseModels/GlobalSsoProject.js.map +1 -1
  653. package/build/dist/Models/DatabaseModels/Host.js +231 -0
  654. package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
  655. package/build/dist/Models/DatabaseModels/IncidentForm.js +605 -0
  656. package/build/dist/Models/DatabaseModels/IncidentForm.js.map +1 -0
  657. package/build/dist/Models/DatabaseModels/IncidentFormSubmission.js +299 -0
  658. package/build/dist/Models/DatabaseModels/IncidentFormSubmission.js.map +1 -0
  659. package/build/dist/Models/DatabaseModels/IncidentTemplate.js +60 -0
  660. package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
  661. package/build/dist/Models/DatabaseModels/Index.js +16 -0
  662. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  663. package/build/dist/Models/DatabaseModels/IoTFleet.js +12 -0
  664. package/build/dist/Models/DatabaseModels/IoTFleet.js.map +1 -1
  665. package/build/dist/Models/DatabaseModels/KubernetesCluster.js +12 -0
  666. package/build/dist/Models/DatabaseModels/KubernetesCluster.js.map +1 -1
  667. package/build/dist/Models/DatabaseModels/MessageQueue.js +1106 -0
  668. package/build/dist/Models/DatabaseModels/MessageQueue.js.map +1 -0
  669. package/build/dist/Models/DatabaseModels/MessageQueueLabelRule.js +562 -0
  670. package/build/dist/Models/DatabaseModels/MessageQueueLabelRule.js.map +1 -0
  671. package/build/dist/Models/DatabaseModels/MessageQueueOwnerRule.js +643 -0
  672. package/build/dist/Models/DatabaseModels/MessageQueueOwnerRule.js.map +1 -0
  673. package/build/dist/Models/DatabaseModels/MessageQueueOwnerTeam.js +506 -0
  674. package/build/dist/Models/DatabaseModels/MessageQueueOwnerTeam.js.map +1 -0
  675. package/build/dist/Models/DatabaseModels/MessageQueueOwnerUser.js +505 -0
  676. package/build/dist/Models/DatabaseModels/MessageQueueOwnerUser.js.map +1 -0
  677. package/build/dist/Models/DatabaseModels/PodmanHost.js +231 -0
  678. package/build/dist/Models/DatabaseModels/PodmanHost.js.map +1 -1
  679. package/build/dist/Models/DatabaseModels/Project.js +61 -0
  680. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  681. package/build/dist/Models/DatabaseModels/ProjectOidc.js +0 -4
  682. package/build/dist/Models/DatabaseModels/ProjectOidc.js.map +1 -1
  683. package/build/dist/Models/DatabaseModels/ProjectSso.js +0 -4
  684. package/build/dist/Models/DatabaseModels/ProjectSso.js.map +1 -1
  685. package/build/dist/Models/DatabaseModels/ProxmoxCluster.js +231 -0
  686. package/build/dist/Models/DatabaseModels/ProxmoxCluster.js.map +1 -1
  687. package/build/dist/Models/DatabaseModels/ResourceAiAgent.js +439 -0
  688. package/build/dist/Models/DatabaseModels/ResourceAiAgent.js.map +1 -0
  689. package/build/dist/Models/DatabaseModels/RumApplication.js +12 -0
  690. package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
  691. package/build/dist/Models/DatabaseModels/RunnerJob.js +145 -0
  692. package/build/dist/Models/DatabaseModels/RunnerJob.js.map +1 -1
  693. package/build/dist/Models/DatabaseModels/ServerlessFunction.js +12 -0
  694. package/build/dist/Models/DatabaseModels/ServerlessFunction.js.map +1 -1
  695. package/build/dist/Models/DatabaseModels/Service.js +12 -0
  696. package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
  697. package/build/dist/Models/DatabaseModels/StatusPageOidc.js +0 -4
  698. package/build/dist/Models/DatabaseModels/StatusPageOidc.js.map +1 -1
  699. package/build/dist/Models/DatabaseModels/StatusPageSso.js +0 -4
  700. package/build/dist/Models/DatabaseModels/StatusPageSso.js.map +1 -1
  701. package/build/dist/Models/DatabaseModels/TeamComplianceSetting.js +49 -3
  702. package/build/dist/Models/DatabaseModels/TeamComplianceSetting.js.map +1 -1
  703. package/build/dist/Models/DatabaseModels/VMwareVCenter.js +231 -0
  704. package/build/dist/Models/DatabaseModels/VMwareVCenter.js.map +1 -1
  705. package/build/dist/Server/API/AIChatAPI.js +9 -103
  706. package/build/dist/Server/API/AIChatAPI.js.map +1 -1
  707. package/build/dist/Server/API/AIInvestigationAPI.js +3 -3
  708. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  709. package/build/dist/Server/API/AIInvestigationConversationAPI.js +162 -0
  710. package/build/dist/Server/API/AIInvestigationConversationAPI.js.map +1 -0
  711. package/build/dist/Server/API/AutoRemediationAPI.js +231 -1
  712. package/build/dist/Server/API/AutoRemediationAPI.js.map +1 -1
  713. package/build/dist/Server/API/IncidentFormAPI.js +245 -0
  714. package/build/dist/Server/API/IncidentFormAPI.js.map +1 -0
  715. package/build/dist/Server/API/ProjectOIDC.js +16 -24
  716. package/build/dist/Server/API/ProjectOIDC.js.map +1 -1
  717. package/build/dist/Server/API/ProjectSSO.js +16 -24
  718. package/build/dist/Server/API/ProjectSSO.js.map +1 -1
  719. package/build/dist/Server/API/ResourceAiAccessAPI.js +1119 -0
  720. package/build/dist/Server/API/ResourceAiAccessAPI.js.map +1 -0
  721. package/build/dist/Server/API/StatusPageAPI.js +42 -75
  722. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  723. package/build/dist/Server/Enterprise/EnterpriseEdition.js +79 -25
  724. package/build/dist/Server/Enterprise/EnterpriseEdition.js.map +1 -1
  725. package/build/dist/Server/Enterprise/EnterpriseFeature.js +24 -3
  726. package/build/dist/Server/Enterprise/EnterpriseFeature.js.map +1 -1
  727. package/build/dist/Server/Enterprise/EnterpriseLicenseSnapshot.js +1 -1
  728. package/build/dist/Server/Enterprise/EnterpriseServerModule.js.map +1 -1
  729. package/build/dist/Server/EnvironmentConfig.js +1 -1
  730. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796300000000-AddResourceAiAgents.js +168 -0
  731. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796300000000-AddResourceAiAgents.js.map +1 -0
  732. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796400000000-AddIncidentForms.js +63 -0
  733. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796400000000-AddIncidentForms.js.map +1 -0
  734. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796500000000-AddTeamComplianceRuleNotificationChannels.js +41 -0
  735. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796500000000-AddTeamComplianceRuleNotificationChannels.js.map +1 -0
  736. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796600000000-AddAIInvestigationConversationAndTimeLimits.js +40 -0
  737. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796600000000-AddAIInvestigationConversationAndTimeLimits.js.map +1 -0
  738. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796700000000-AddMessageQueueTables.js +183 -0
  739. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796700000000-AddMessageQueueTables.js.map +1 -0
  740. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  741. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  742. package/build/dist/Server/Infrastructure/Semaphore.js +6 -0
  743. package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
  744. package/build/dist/Server/Middleware/IncidentFormRateLimit.js +559 -0
  745. package/build/dist/Server/Middleware/IncidentFormRateLimit.js.map +1 -0
  746. package/build/dist/Server/Middleware/TelemetryIngest.js +12 -5
  747. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  748. package/build/dist/Server/Middleware/UserAuthorization.js +11 -30
  749. package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
  750. package/build/dist/Server/Services/AIService.js +10 -13
  751. package/build/dist/Server/Services/AIService.js.map +1 -1
  752. package/build/dist/Server/Services/AnalyticsDatabaseService.js +26 -1
  753. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  754. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +601 -3
  755. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -1
  756. package/build/dist/Server/Services/CephClusterService.js +104 -0
  757. package/build/dist/Server/Services/CephClusterService.js.map +1 -1
  758. package/build/dist/Server/Services/DatabaseServerService.js +99 -0
  759. package/build/dist/Server/Services/DatabaseServerService.js.map +1 -1
  760. package/build/dist/Server/Services/DockerHostService.js +104 -0
  761. package/build/dist/Server/Services/DockerHostService.js.map +1 -1
  762. package/build/dist/Server/Services/DockerSwarmClusterService.js +104 -0
  763. package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -1
  764. package/build/dist/Server/Services/HostService.js +114 -2
  765. package/build/dist/Server/Services/HostService.js.map +1 -1
  766. package/build/dist/Server/Services/IncidentCustomFieldService.js +83 -0
  767. package/build/dist/Server/Services/IncidentCustomFieldService.js.map +1 -1
  768. package/build/dist/Server/Services/IncidentEpisodeMemberService.js +8 -4
  769. package/build/dist/Server/Services/IncidentEpisodeMemberService.js.map +1 -1
  770. package/build/dist/Server/Services/IncidentEpisodeService.js +10 -1
  771. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
  772. package/build/dist/Server/Services/IncidentFormService.js +1202 -0
  773. package/build/dist/Server/Services/IncidentFormService.js.map +1 -0
  774. package/build/dist/Server/Services/IncidentFormSubmissionService.js +91 -0
  775. package/build/dist/Server/Services/IncidentFormSubmissionService.js.map +1 -0
  776. package/build/dist/Server/Services/IncidentGroupingEngineService.js +20 -8
  777. package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
  778. package/build/dist/Server/Services/IncidentService.js +106 -4
  779. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  780. package/build/dist/Server/Services/IncidentTemplateService.js +18 -0
  781. package/build/dist/Server/Services/IncidentTemplateService.js.map +1 -1
  782. package/build/dist/Server/Services/Index.js +14 -0
  783. package/build/dist/Server/Services/Index.js.map +1 -1
  784. package/build/dist/Server/Services/MessageQueueLabelRuleEngineService.js +262 -0
  785. package/build/dist/Server/Services/MessageQueueLabelRuleEngineService.js.map +1 -0
  786. package/build/dist/Server/Services/MessageQueueLabelRuleService.js +13 -0
  787. package/build/dist/Server/Services/MessageQueueLabelRuleService.js.map +1 -0
  788. package/build/dist/Server/Services/MessageQueueOwnerRuleEngineService.js +334 -0
  789. package/build/dist/Server/Services/MessageQueueOwnerRuleEngineService.js.map +1 -0
  790. package/build/dist/Server/Services/MessageQueueOwnerRuleService.js +13 -0
  791. package/build/dist/Server/Services/MessageQueueOwnerRuleService.js.map +1 -0
  792. package/build/dist/Server/Services/MessageQueueOwnerTeamService.js +62 -0
  793. package/build/dist/Server/Services/MessageQueueOwnerTeamService.js.map +1 -0
  794. package/build/dist/Server/Services/MessageQueueOwnerUserService.js +62 -0
  795. package/build/dist/Server/Services/MessageQueueOwnerUserService.js.map +1 -0
  796. package/build/dist/Server/Services/MessageQueueService.js +1140 -0
  797. package/build/dist/Server/Services/MessageQueueService.js.map +1 -0
  798. package/build/dist/Server/Services/MetricRecordingRuleService.js +46 -0
  799. package/build/dist/Server/Services/MetricRecordingRuleService.js.map +1 -1
  800. package/build/dist/Server/Services/OpenTelemetryIngestService.js +25 -4
  801. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  802. package/build/dist/Server/Services/PodmanHostService.js +104 -0
  803. package/build/dist/Server/Services/PodmanHostService.js.map +1 -1
  804. package/build/dist/Server/Services/ProjectService.js +0 -54
  805. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  806. package/build/dist/Server/Services/ProxmoxClusterService.js +104 -0
  807. package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -1
  808. package/build/dist/Server/Services/ResourceAiAccessService.js +1028 -0
  809. package/build/dist/Server/Services/ResourceAiAccessService.js.map +1 -0
  810. package/build/dist/Server/Services/ResourceAiAgentJobService.js +173 -0
  811. package/build/dist/Server/Services/ResourceAiAgentJobService.js.map +1 -0
  812. package/build/dist/Server/Services/ResourceAiAgentService.js +1687 -0
  813. package/build/dist/Server/Services/ResourceAiAgentService.js.map +1 -0
  814. package/build/dist/Server/Services/RunnerJobService.js +344 -5
  815. package/build/dist/Server/Services/RunnerJobService.js.map +1 -1
  816. package/build/dist/Server/Services/StatusPagePrivateUserService.js +1 -4
  817. package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
  818. package/build/dist/Server/Services/StatusPageService.js +0 -46
  819. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  820. package/build/dist/Server/Services/TeamComplianceSettingService.js +120 -31
  821. package/build/dist/Server/Services/TeamComplianceSettingService.js.map +1 -1
  822. package/build/dist/Server/Services/TelemetryUsageBillingService.js +26 -0
  823. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  824. package/build/dist/Server/Services/TraceRecordingRuleService.js +37 -0
  825. package/build/dist/Server/Services/TraceRecordingRuleService.js.map +1 -1
  826. package/build/dist/Server/Services/UserNotificationRuleService.js +8 -1
  827. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  828. package/build/dist/Server/Services/VMwareVCenterService.js +104 -0
  829. package/build/dist/Server/Services/VMwareVCenterService.js.map +1 -1
  830. package/build/dist/Server/Services/WorkspaceNotificationSummaryService.js +12 -3
  831. package/build/dist/Server/Services/WorkspaceNotificationSummaryService.js.map +1 -1
  832. package/build/dist/Server/Types/Database/Permissions/CreatePermission.js +6 -3
  833. package/build/dist/Server/Types/Database/Permissions/CreatePermission.js.map +1 -1
  834. package/build/dist/Server/Types/Database/Permissions/EditionPermission.js +109 -37
  835. package/build/dist/Server/Types/Database/Permissions/EditionPermission.js.map +1 -1
  836. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +16 -0
  837. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
  838. package/build/dist/Server/Types/Database/Permissions/TablePermission.js +3 -3
  839. package/build/dist/Server/Types/Database/Permissions/UpdatePermission.js +9 -6
  840. package/build/dist/Server/Types/Database/Permissions/UpdatePermission.js.map +1 -1
  841. package/build/dist/Server/Utils/AI/Chat/AgentContextCompactor.js +128 -0
  842. package/build/dist/Server/Utils/AI/Chat/AgentContextCompactor.js.map +1 -0
  843. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +192 -50
  844. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -1
  845. package/build/dist/Server/Utils/AI/Chat/ChatRunCancellation.js +133 -0
  846. package/build/dist/Server/Utils/AI/Chat/ChatRunCancellation.js.map +1 -0
  847. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +53 -13
  848. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
  849. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +1 -1
  850. package/build/dist/Server/Utils/AI/Chat/ToolOutputPager.js +206 -0
  851. package/build/dist/Server/Utils/AI/Chat/ToolOutputPager.js.map +1 -0
  852. package/build/dist/Server/Utils/AI/ClusterAccess/KubectlInvestigationToolkit.js +53 -26
  853. package/build/dist/Server/Utils/AI/ClusterAccess/KubectlInvestigationToolkit.js.map +1 -1
  854. package/build/dist/Server/Utils/AI/ClusterAccess/KubectlJobRunner.js +4 -2
  855. package/build/dist/Server/Utils/AI/ClusterAccess/KubectlJobRunner.js.map +1 -1
  856. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +1 -29
  857. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -1
  858. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +24 -24
  859. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -1
  860. package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js +1036 -32
  861. package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js.map +1 -1
  862. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js +661 -41
  863. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js.map +1 -1
  864. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js +21 -1
  865. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js.map +1 -1
  866. package/build/dist/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.js +354 -0
  867. package/build/dist/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.js.map +1 -0
  868. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAccessContext.js +160 -0
  869. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAccessContext.js.map +1 -0
  870. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAccessToolNames.js +33 -0
  871. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAccessToolNames.js.map +1 -0
  872. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAiAccessSettings.js +640 -0
  873. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAiAccessSettings.js.map +1 -0
  874. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAiDeleteCleanup.js +226 -0
  875. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAiDeleteCleanup.js.map +1 -0
  876. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.js +602 -0
  877. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.js.map +1 -0
  878. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +90 -14
  879. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
  880. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +73 -10
  881. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
  882. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +73 -10
  883. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
  884. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +15 -18
  885. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
  886. package/build/dist/Server/Utils/AI/SRE/InvestigationThread.js +412 -0
  887. package/build/dist/Server/Utils/AI/SRE/InvestigationThread.js.map +1 -0
  888. package/build/dist/Server/Utils/AI/SRE/InvestigationThreadService.js +495 -0
  889. package/build/dist/Server/Utils/AI/SRE/InvestigationThreadService.js.map +1 -0
  890. package/build/dist/Server/Utils/AI/Toolbox/Serializer.js +10 -3
  891. package/build/dist/Server/Utils/AI/Toolbox/Serializer.js.map +1 -1
  892. package/build/dist/Server/Utils/AutoRemediation/CommandPlanExecutor.js +290 -13
  893. package/build/dist/Server/Utils/AutoRemediation/CommandPlanExecutor.js.map +1 -1
  894. package/build/dist/Server/Utils/AutoRemediation/RemediationVerifier.js +29 -1
  895. package/build/dist/Server/Utils/AutoRemediation/RemediationVerifier.js.map +1 -1
  896. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js +9 -1
  897. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js.map +1 -1
  898. package/build/dist/Server/Utils/EditionEnforcement.js +20 -158
  899. package/build/dist/Server/Utils/EditionEnforcement.js.map +1 -1
  900. package/build/dist/Server/Utils/LLM/LLMService.js +193 -54
  901. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  902. package/build/dist/Server/Utils/RelaxedScimTeamLocksReport.js +160 -0
  903. package/build/dist/Server/Utils/RelaxedScimTeamLocksReport.js.map +1 -0
  904. package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js +25 -0
  905. package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js.map +1 -1
  906. package/build/dist/Server/Utils/SameOriginRequest.js +151 -0
  907. package/build/dist/Server/Utils/SameOriginRequest.js.map +1 -0
  908. package/build/dist/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.js +627 -0
  909. package/build/dist/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.js.map +1 -0
  910. package/build/dist/Server/Utils/SessionReplay/SessionReplayUsage.js +60 -5
  911. package/build/dist/Server/Utils/SessionReplay/SessionReplayUsage.js.map +1 -1
  912. package/build/dist/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.js +2 -0
  913. package/build/dist/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.js.map +1 -1
  914. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +4 -1
  915. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
  916. package/build/dist/Server/Utils/Telemetry/MessageQueueDiscovery.js +1015 -0
  917. package/build/dist/Server/Utils/Telemetry/MessageQueueDiscovery.js.map +1 -0
  918. package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js +4 -1
  919. package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js.map +1 -1
  920. package/build/dist/Server/Utils/VendorAssets.js +3 -3
  921. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js +19 -15
  922. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js.map +1 -1
  923. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js +19 -15
  924. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js.map +1 -1
  925. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js +17 -1
  926. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js.map +1 -1
  927. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js +186 -210
  928. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js.map +1 -1
  929. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js +22 -16
  930. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js.map +1 -1
  931. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.js +233 -167
  932. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.js.map +1 -1
  933. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +273 -111
  934. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  935. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsActivityDeduplicator.js +129 -0
  936. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsActivityDeduplicator.js.map +1 -0
  937. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.js +266 -0
  938. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.js.map +1 -0
  939. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCommands.js +258 -0
  940. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCommands.js.map +1 -0
  941. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsMessageSize.js +104 -0
  942. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsMessageSize.js.map +1 -0
  943. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsReplies.js +183 -0
  944. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsReplies.js.map +1 -0
  945. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezone.js +123 -0
  946. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezone.js.map +1 -0
  947. package/build/dist/Types/AI/AIAgentRunLimits.js +91 -0
  948. package/build/dist/Types/AI/AIAgentRunLimits.js.map +1 -0
  949. package/build/dist/Types/AI/ResourceAiAccessApi.js +30 -0
  950. package/build/dist/Types/AI/ResourceAiAccessApi.js.map +1 -0
  951. package/build/dist/Types/AI/ResourceAiAccessPermissions.js +98 -0
  952. package/build/dist/Types/AI/ResourceAiAccessPermissions.js.map +1 -0
  953. package/build/dist/Types/AutoRemediation/AiRemediationCommandPlan.js +116 -29
  954. package/build/dist/Types/AutoRemediation/AiRemediationCommandPlan.js.map +1 -1
  955. package/build/dist/Types/Code/CodeType.js +2 -0
  956. package/build/dist/Types/Code/CodeType.js.map +1 -1
  957. package/build/dist/Types/Code/JsonSyntax.js +604 -0
  958. package/build/dist/Types/Code/JsonSyntax.js.map +1 -0
  959. package/build/dist/Types/CustomField/CustomFieldCreateSettings.js +310 -0
  960. package/build/dist/Types/CustomField/CustomFieldCreateSettings.js.map +1 -0
  961. package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js +38 -0
  962. package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js.map +1 -1
  963. package/build/dist/Types/CustomField/CustomFieldValueValidator.js +10 -7
  964. package/build/dist/Types/CustomField/CustomFieldValueValidator.js.map +1 -1
  965. package/build/dist/Types/EnterpriseLicense/EnterpriseLicensePeriods.js +1 -1
  966. package/build/dist/Types/Icon/IconProp.js +2 -0
  967. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  968. package/build/dist/Types/Incident/IncidentFormIpAllowlist.js +119 -0
  969. package/build/dist/Types/Incident/IncidentFormIpAllowlist.js.map +1 -0
  970. package/build/dist/Types/Incident/IncidentFormPublic.js +678 -0
  971. package/build/dist/Types/Incident/IncidentFormPublic.js.map +1 -0
  972. package/build/dist/Types/Kubernetes/KubernetesClusterAiAccess.js +10 -3
  973. package/build/dist/Types/Kubernetes/KubernetesClusterAiAccess.js.map +1 -1
  974. package/build/dist/Types/MessageQueue/MessageQueueIdentity.js +184 -0
  975. package/build/dist/Types/MessageQueue/MessageQueueIdentity.js.map +1 -0
  976. package/build/dist/Types/MessageQueue/MessageQueueManualIdentity.js +190 -0
  977. package/build/dist/Types/MessageQueue/MessageQueueManualIdentity.js.map +1 -0
  978. package/build/dist/Types/MessageQueue/MessageQueueMetricCatalog.js +1057 -0
  979. package/build/dist/Types/MessageQueue/MessageQueueMetricCatalog.js.map +1 -0
  980. package/build/dist/Types/MessageQueue/MessagingSystem.js +394 -0
  981. package/build/dist/Types/MessageQueue/MessagingSystem.js.map +1 -0
  982. package/build/dist/Types/MessageQueue/MessagingTelemetryResolver.js +1768 -0
  983. package/build/dist/Types/MessageQueue/MessagingTelemetryResolver.js.map +1 -0
  984. package/build/dist/Types/Monitor/MessageQueueAlertTemplates.js +1207 -0
  985. package/build/dist/Types/Monitor/MessageQueueAlertTemplates.js.map +1 -0
  986. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +47 -21
  987. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
  988. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +5 -0
  989. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
  990. package/build/dist/Types/Monitor/RumAlertTemplates.js +199 -3
  991. package/build/dist/Types/Monitor/RumAlertTemplates.js.map +1 -1
  992. package/build/dist/Types/Permission.js +274 -0
  993. package/build/dist/Types/Permission.js.map +1 -1
  994. package/build/dist/Types/ResourceAiAgent/AiResourceType.js +242 -0
  995. package/build/dist/Types/ResourceAiAgent/AiResourceType.js.map +1 -0
  996. package/build/dist/Types/ResourceAiAgent/ResourceAiAccess.js +281 -0
  997. package/build/dist/Types/ResourceAiAgent/ResourceAiAccess.js.map +1 -0
  998. package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js +12 -0
  999. package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js.map +1 -1
  1000. package/build/dist/Types/Rules/RuleRun.js +4 -0
  1001. package/build/dist/Types/Rules/RuleRun.js.map +1 -1
  1002. package/build/dist/Types/Rum/SessionReplayBudgetMetricType.js +45 -0
  1003. package/build/dist/Types/Rum/SessionReplayBudgetMetricType.js.map +1 -0
  1004. package/build/dist/Types/Runbook/RunbookStepType.js +27 -0
  1005. package/build/dist/Types/Runbook/RunbookStepType.js.map +1 -1
  1006. package/build/dist/Types/Team/ComplianceNotificationChannel.js +4 -3
  1007. package/build/dist/Types/Team/ComplianceNotificationChannel.js.map +1 -1
  1008. package/build/dist/Types/Team/ComplianceRule.js +48 -14
  1009. package/build/dist/Types/Team/ComplianceRule.js.map +1 -1
  1010. package/build/dist/Types/Team/ComplianceRuleType.js +2 -2
  1011. package/build/dist/Types/Telemetry/EntityType.js +16 -0
  1012. package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
  1013. package/build/dist/Types/Telemetry/TelemetryIngestSurface.js +13 -2
  1014. package/build/dist/Types/Telemetry/TelemetryIngestSurface.js.map +1 -1
  1015. package/build/dist/Types/XML.js +23 -0
  1016. package/build/dist/Types/XML.js.map +1 -1
  1017. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +641 -266
  1018. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  1019. package/build/dist/UI/Components/CodeEditor/CodeEditorCommands.js +464 -0
  1020. package/build/dist/UI/Components/CodeEditor/CodeEditorCommands.js.map +1 -0
  1021. package/build/dist/UI/Components/CodeEditor/CodeEditorHighlight.js +69 -0
  1022. package/build/dist/UI/Components/CodeEditor/CodeEditorHighlight.js.map +1 -0
  1023. package/build/dist/UI/Components/CodeEditor/CodeEditorLanguages.js +108 -0
  1024. package/build/dist/UI/Components/CodeEditor/CodeEditorLanguages.js.map +1 -0
  1025. package/build/dist/UI/Components/CodeEditor/YamlEditor.js +14 -186
  1026. package/build/dist/UI/Components/CodeEditor/YamlEditor.js.map +1 -1
  1027. package/build/dist/UI/Components/CopyTextButton/CopyTextButton.js +5 -1
  1028. package/build/dist/UI/Components/CopyTextButton/CopyTextButton.js.map +1 -1
  1029. package/build/dist/UI/Components/CustomFields/CustomFieldModelFormFields.js +5 -14
  1030. package/build/dist/UI/Components/CustomFields/CustomFieldModelFormFields.js.map +1 -1
  1031. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +14 -13
  1032. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  1033. package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js +1 -1
  1034. package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js.map +1 -1
  1035. package/build/dist/UI/Components/Forms/Fields/FormField.js +8 -3
  1036. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  1037. package/build/dist/UI/Components/Icon/Icon.js +8 -0
  1038. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  1039. package/build/dist/UI/Components/Input/Input.js +11 -3
  1040. package/build/dist/UI/Components/Input/Input.js.map +1 -1
  1041. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +2 -1
  1042. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  1043. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +14 -4
  1044. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  1045. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js +0 -0
  1046. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js.map +1 -1
  1047. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +710 -65
  1048. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js.map +1 -1
  1049. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditorHistory.js +238 -0
  1050. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditorHistory.js.map +1 -0
  1051. package/build/dist/UI/Components/Markdown.tsx/MarkdownListEditing.js +1028 -0
  1052. package/build/dist/UI/Components/Markdown.tsx/MarkdownListEditing.js.map +1 -0
  1053. package/build/dist/UI/Components/Markdown.tsx/MarkdownPaste.js +1088 -0
  1054. package/build/dist/UI/Components/Markdown.tsx/MarkdownPaste.js.map +1 -0
  1055. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +70 -10
  1056. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  1057. package/build/dist/UI/Components/Markdown.tsx/MarkdownVisualEditing.js +887 -0
  1058. package/build/dist/UI/Components/Markdown.tsx/MarkdownVisualEditing.js.map +1 -0
  1059. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +57 -6
  1060. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  1061. package/build/dist/UI/Components/ResetObjectID/ResetObjectID.js +7 -5
  1062. package/build/dist/UI/Components/ResetObjectID/ResetObjectID.js.map +1 -1
  1063. package/build/dist/UI/Components/Table/EmptyTableMessage.js +51 -0
  1064. package/build/dist/UI/Components/Table/EmptyTableMessage.js.map +1 -0
  1065. package/build/dist/UI/Components/Table/Table.js +30 -11
  1066. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  1067. package/build/dist/UI/Components/Table/TableRow.js +9 -2
  1068. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  1069. package/build/dist/UI/Components/TelemetryViewer/FacetVisibility.js +63 -1
  1070. package/build/dist/UI/Components/TelemetryViewer/FacetVisibility.js.map +1 -1
  1071. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +4 -2
  1072. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
  1073. package/build/dist/UI/Components/TelemetryViewer/components/LockedFilterChip.js +91 -10
  1074. package/build/dist/UI/Components/TelemetryViewer/components/LockedFilterChip.js.map +1 -1
  1075. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js +14 -4
  1076. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js.map +1 -1
  1077. package/build/dist/UI/Components/TextArea/TextArea.js +9 -3
  1078. package/build/dist/UI/Components/TextArea/TextArea.js.map +1 -1
  1079. package/build/dist/UI/Components/Workflow/ModelFieldPicker.js +1 -2
  1080. package/build/dist/UI/Components/Workflow/ModelFieldPicker.js.map +1 -1
  1081. package/build/dist/Utils/AI/InvestigationReport.js +71 -11
  1082. package/build/dist/Utils/AI/InvestigationReport.js.map +1 -1
  1083. package/build/dist/Utils/AiRemediation/Resource/CephCommandPolicy.js +1462 -0
  1084. package/build/dist/Utils/AiRemediation/Resource/CephCommandPolicy.js.map +1 -0
  1085. package/build/dist/Utils/AiRemediation/Resource/DatabaseCommandPolicy.js +122 -0
  1086. package/build/dist/Utils/AiRemediation/Resource/DatabaseCommandPolicy.js.map +1 -0
  1087. package/build/dist/Utils/AiRemediation/Resource/DatabaseDiagnosticCatalog.js +1139 -0
  1088. package/build/dist/Utils/AiRemediation/Resource/DatabaseDiagnosticCatalog.js.map +1 -0
  1089. package/build/dist/Utils/AiRemediation/Resource/DatabaseQueryRedactor.js +1060 -0
  1090. package/build/dist/Utils/AiRemediation/Resource/DatabaseQueryRedactor.js.map +1 -0
  1091. package/build/dist/Utils/AiRemediation/Resource/DockerCliGrammar.js +1301 -0
  1092. package/build/dist/Utils/AiRemediation/Resource/DockerCliGrammar.js.map +1 -0
  1093. package/build/dist/Utils/AiRemediation/Resource/DockerEngineCommandPolicy.js +370 -0
  1094. package/build/dist/Utils/AiRemediation/Resource/DockerEngineCommandPolicy.js.map +1 -0
  1095. package/build/dist/Utils/AiRemediation/Resource/DockerSwarmCommandPolicy.js +498 -0
  1096. package/build/dist/Utils/AiRemediation/Resource/DockerSwarmCommandPolicy.js.map +1 -0
  1097. package/build/dist/Utils/AiRemediation/Resource/GovcCommandPolicy.js +1565 -0
  1098. package/build/dist/Utils/AiRemediation/Resource/GovcCommandPolicy.js.map +1 -0
  1099. package/build/dist/Utils/AiRemediation/Resource/HostCommandPolicy.js +2206 -0
  1100. package/build/dist/Utils/AiRemediation/Resource/HostCommandPolicy.js.map +1 -0
  1101. package/build/dist/Utils/AiRemediation/Resource/ProxmoxCommandPolicy.js +1129 -0
  1102. package/build/dist/Utils/AiRemediation/Resource/ProxmoxCommandPolicy.js.map +1 -0
  1103. package/build/dist/Utils/AiRemediation/Resource/ResourceCommandPolicy.js +565 -0
  1104. package/build/dist/Utils/AiRemediation/Resource/ResourceCommandPolicy.js.map +1 -0
  1105. package/build/dist/Utils/AiRemediation/Resource/ResourceCommandPolicyCore.js +408 -0
  1106. package/build/dist/Utils/AiRemediation/Resource/ResourceCommandPolicyCore.js.map +1 -0
  1107. package/build/dist/Utils/AiRemediation/Resource/ResourceOutputRedactor.js +1910 -0
  1108. package/build/dist/Utils/AiRemediation/Resource/ResourceOutputRedactor.js.map +1 -0
  1109. package/build/dist/Utils/LabelRuleImportExport.js +2 -0
  1110. package/build/dist/Utils/LabelRuleImportExport.js.map +1 -1
  1111. package/build/dist/Utils/Markdown/UntrustedMarkdown.js +988 -0
  1112. package/build/dist/Utils/Markdown/UntrustedMarkdown.js.map +1 -0
  1113. package/build/dist/Utils/Monitor/IncomingEmailMonitorRequestUtil.js +34 -0
  1114. package/build/dist/Utils/Monitor/IncomingEmailMonitorRequestUtil.js.map +1 -0
  1115. package/build/dist/Utils/Monitor/MonitorLogSummaryUtil.js +148 -0
  1116. package/build/dist/Utils/Monitor/MonitorLogSummaryUtil.js.map +1 -0
  1117. package/build/dist/Utils/SessionReplay/SessionReplayBudgetMetricType.js +160 -0
  1118. package/build/dist/Utils/SessionReplay/SessionReplayBudgetMetricType.js.map +1 -0
  1119. package/build/dist/Utils/Telemetry/EntityKey.js +36 -0
  1120. package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
  1121. package/package.json +1 -3
  1122. package/Server/Utils/CommunityEditionSsoReport.ts +0 -361
  1123. package/Tests/App/Accounts/LoginSsoEdition.test.tsx +0 -616
  1124. package/Tests/App/AdminDashboard/AdminAuthenticationSsoEdition.test.tsx +0 -217
  1125. package/Tests/App/AdminDashboard/GlobalSSOEnterpriseShells.test.tsx +0 -271
  1126. package/Tests/App/Dashboard/CloudDocumentationMarkdown.test.ts +0 -215
  1127. package/Tests/App/Dashboard/TelemetryResourceRetentionSettings.test.tsx +0 -784
  1128. package/Tests/Server/Middleware/UserAuthorizationEditionEnforcement.test.ts +0 -518
  1129. package/Tests/Server/Services/SsoRequirementReadMasking.test.ts +0 -419
  1130. package/Tests/Server/Services/SsoRequirementWriteGuard.test.ts +0 -769
  1131. package/Tests/UI/Components/CodeEditor.test.tsx +0 -638
  1132. package/Tests/UI/Components/MonacoLoader.test.ts +0 -67
  1133. package/Tests/UI/Components/MonacoRuntime.test.ts +0 -121
  1134. package/Tests/UI/Components/Telemetry/TelemetryRetentionConfigForm.test.tsx +0 -329
  1135. package/Tests/UI/Components/YamlEditor.test.tsx +0 -847
  1136. package/UI/Components/CodeEditor/MonacoLoader.ts +0 -36
  1137. package/UI/Components/Telemetry/TelemetryRetentionConfigForm.tsx +0 -319
  1138. package/UI/Components/Telemetry/TelemetryRetentionConfigSummary.tsx +0 -223
  1139. package/build/dist/Server/Utils/CommunityEditionSsoReport.js +0 -223
  1140. package/build/dist/Server/Utils/CommunityEditionSsoReport.js.map +0 -1
  1141. package/build/dist/UI/Components/CodeEditor/MonacoLoader.js +0 -34
  1142. package/build/dist/UI/Components/CodeEditor/MonacoLoader.js.map +0 -1
  1143. package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js +0 -171
  1144. package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js.map +0 -1
  1145. package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigSummary.js +0 -119
  1146. package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigSummary.js.map +0 -1
@@ -0,0 +1,1015 @@
1
+ import { SpanKind, SpanStatus } from "../../../Models/AnalyticsModels/Span";
2
+ import AnalyticsTableName from "../../../Types/AnalyticsDatabase/AnalyticsTableName";
3
+ import { buildMessageQueueIdentifier, toMessageQueueIdentity, } from "../../../Types/MessageQueue/MessageQueueIdentity";
4
+ import { MESSAGE_QUEUE_BROKER_METRIC_NAMES, MESSAGE_QUEUE_METRICS, MESSAGING_CLIENT_METRIC_NAMES, } from "../../../Types/MessageQueue/MessageQueueMetricCatalog";
5
+ import { getMessagingBrokerMetricsSource, getMessagingSystemDescriptor, getMoreSpecificMessagingSystem, } from "../../../Types/MessageQueue/MessagingSystem";
6
+ import { AZURE_MESSAGING_PROVIDER_NAMESPACES, AZURE_RESOURCE_PROVIDER_ATTRIBUTES, MESSAGING_DESTINATION_ATTRIBUTES, MESSAGING_METRIC_RESOLVER_INPUT_ATTRIBUTES, MESSAGING_RESOLVER_INPUT_ATTRIBUTES, MESSAGING_SYSTEM_ATTRIBUTE, MESSAGING_TEMPORARY_FLAG_ATTRIBUTES, MESSAGING_TRIGGER_ATTRIBUTES, RABBITMQ_ROUTING_KEY_ATTRIBUTES, resolveMessagingMetricDatapoint, resolveMessagingSpan, } from "../../../Types/MessageQueue/MessagingTelemetryResolver";
7
+ import { QUERY_SETTINGS, escapeSql } from "./ServiceDependencyDiscovery";
8
+ /*
9
+ * Message queue discovery — the pure half of the queue step of
10
+ * "TelemetryEntity:ComputeServiceDependencies".
11
+ *
12
+ * Ingest already stamps every messaging span and every messaging datapoint
13
+ * with the entity key of the queue it names (MessagingEntityKeyResolver, per
14
+ * row, through the core's resolveMessagingSpan /
15
+ * resolveMessagingMetricDatapoint). This step turns the same evidence into
16
+ * MessageQueue rows: one grouped query over the window's spans and one over
17
+ * its metric datapoints, then the SAME resolvers ingest ran, fed each row's
18
+ * grouped attributes — so the identity a row is found or created under is
19
+ * byte-for-byte the identity whose key the telemetry carries.
20
+ *
21
+ * What makes that hold is what the queries select and group by: exactly the
22
+ * attribute keys the resolvers read (MESSAGING_RESOLVER_INPUT_ATTRIBUTES for
23
+ * spans, MESSAGING_METRIC_RESOLVER_INPUT_ATTRIBUTES for datapoints — the
24
+ * core's own lists, never a copy), plus the span kind (it decides the
25
+ * direction, and with it how a RabbitMQ consumer's joined name splits) or the
26
+ * metric name (it decides which catalog entry reads the datapoint). Every
27
+ * span of one group therefore resolves exactly as each of them did at
28
+ * ingest. None of those keys is per message or per instance by design (the
29
+ * core keeps offsets, partitions, message, client and consumer ids out of
30
+ * its lists), so a topic a thousand pods consume is a handful of rows, not
31
+ * a thousand. A few of them can still HOLD a value per message — a
32
+ * JetStream acknowledgement subject, a destination name beside its
33
+ * template, a routing key carrying an id — which the span query folds
34
+ * before grouping, without changing what the resolver answers (see
35
+ * "Values that vary per message" below).
36
+ *
37
+ * Each query returns at most its row cap, and the rows it keeps are chosen
38
+ * so that no queue is left out run after run: every broker (span query) or
39
+ * metric (metric query) gets its share, and half of each share goes to its
40
+ * busiest groups, the other half to a sample that rotates every run (see
41
+ * "Which rows the cap keeps" below). And each query ends on the server
42
+ * before the cron's client gives up on it: a window too big to read in time
43
+ * fails with ClickHouse's own timeout error, not the client's (see "The
44
+ * queue queries' settings" below).
45
+ *
46
+ * Everything here is synchronous and side-effect free apart from reading one
47
+ * environment variable, so it can be tested without ClickHouse or Postgres.
48
+ */
49
+ // Unique marker comments, so the queries can be told apart in logs and tests.
50
+ export const MESSAGE_QUEUE_SPAN_SQL_MARKER = "message-queue-span-discovery";
51
+ export const MESSAGE_QUEUE_METRIC_SQL_MARKER = "message-queue-metric-discovery";
52
+ export const MESSAGE_QUEUE_METRIC_PROJECTS_SQL_MARKER = "message-queue-metric-projects";
53
+ export const MESSAGE_QUEUE_MIN_SPANS_ENV = "MESSAGE_QUEUE_MIN_SPANS";
54
+ export const DEFAULT_MESSAGE_QUEUE_MIN_SPANS = 3;
55
+ /*
56
+ * How much further back than the span window the metric query reads
57
+ * cloud-monitoring datapoints. Cloud monitoring APIs publish their numbers
58
+ * minutes after the fact, and a datapoint is stored under the time it
59
+ * measured, not the time it arrived: the aws_cloudwatch receiver's newest
60
+ * point is typically 11 to 25 minutes old when it is ingested (its `delay`
61
+ * defaults to 10 minutes, on top of a 5-minute period), googlecloudmonitoring's
62
+ * up to 9. Read with the span window alone, most CloudWatch datapoints would
63
+ * already lie behind the window of the first run after they arrived, and an
64
+ * SQS queue its broker reports would never be sighted. 45 more minutes (an
65
+ * hour in all for the 15-minute window) covers datapoints up to 50 minutes
66
+ * late. Only those metrics read further back: a Kafka, RabbitMQ, Pulsar or
67
+ * RocketMQ scrape, a JMX Scraper push and a messaging client metric are
68
+ * stored as they happen.
69
+ */
70
+ export const MESSAGE_QUEUE_LATE_METRIC_MINUTES = 45;
71
+ const SPAN_TABLE = `oneuptime.${AnalyticsTableName.Span}`;
72
+ const METRIC_TABLE = `oneuptime.${AnalyticsTableName.Metric}`;
73
+ /*
74
+ * The one stored span kind the span query leaves out. A messaging operation
75
+ * is never SERVED, so ingest keys every messaging span EXCEPT one stored as
76
+ * SERVER (MessagingEntityKeyResolver.isMessagingSpan turns away
77
+ * `kind === SpanKind.Server` and nothing else) — and the stored kind is not
78
+ * always one of the five the ingest service maps OTLP's to: a trace
79
+ * pipeline's Span Kind Remapper runs before the stamper and stores whatever
80
+ * its mapping says (SPAN_KIND_UNSPECIFIED, which the dashboard offers; any
81
+ * string the API accepts; nothing at all). An allow-list of kinds would
82
+ * leave such a queue's spans unread though they carry its key: never
83
+ * created from them, never sighted, archived while they keep arriving.
84
+ * So the query leaves out this kind alone, and
85
+ * resolveMessagingSpanDiscoveryRows runs the core's resolver again, which
86
+ * refuses any other spelling of SERVER and reads a kind it does not know
87
+ * as no kind — exactly as ingest did. That includes OTLP's number: a
88
+ * mapping saved through the API may write the NUMBER 2, which the stamper
89
+ * sees and the kind column keeps as the text "2", and the core reads both
90
+ * as SERVER.
91
+ */
92
+ export const MESSAGE_QUEUE_DISCOVERY_EXCLUDED_SPAN_KIND = SpanKind.Server;
93
+ function uniqueSorted(values) {
94
+ return Array.from(new Set(values)).sort();
95
+ }
96
+ /*
97
+ * The metric names the metric query reads: every curated broker metric and
98
+ * every messaging client metric, in the lowercase form ingest stores names
99
+ * in — an IN list over the second sort-key column, so the query touches only
100
+ * those names' ranges of the table. Two kinds of messaging datapoint are
101
+ * deliberately not read, so they can attach to a queue at ingest (its key is
102
+ * stamped on them) but never create or sight one:
103
+ *
104
+ * - an application's own gauge that carries `messaging.system` (BullMQ's
105
+ * `queue.size`, OneUptime's own included): the docs promise it attaches
106
+ * to a queue, never that it creates one, and its name says nothing;
107
+ * - a curated name a RenameMetric pipeline rule stored in mixed case
108
+ * (`Kafka.Consumer_Group.Lag_Sum`): ingest lowercases a name on arrival,
109
+ * but a rule's rename lands in the table verbatim. Ingest still stamps
110
+ * the queue's key on it (it compares names trimmed and lowercased), but
111
+ * matching every stored spelling here would take a lower() over the name
112
+ * column of every row, which no sort-key range can serve.
113
+ */
114
+ export const MESSAGE_QUEUE_DISCOVERY_METRIC_NAMES = uniqueSorted([
115
+ ...MESSAGE_QUEUE_BROKER_METRIC_NAMES,
116
+ ...MESSAGING_CLIENT_METRIC_NAMES,
117
+ ]);
118
+ /*
119
+ * The curated metrics a cloud provider's monitoring API reports (Azure
120
+ * Monitor, CloudWatch, Cloud Monitoring): the ones read
121
+ * MESSAGE_QUEUE_LATE_METRIC_MINUTES further back.
122
+ */
123
+ export const MESSAGE_QUEUE_LATE_METRIC_NAMES = uniqueSorted(MESSAGE_QUEUE_METRICS.filter((descriptor) => {
124
+ return (getMessagingBrokerMetricsSource(descriptor.system).kind ===
125
+ "cloud-monitoring");
126
+ }).map((descriptor) => {
127
+ return descriptor.metricName;
128
+ }));
129
+ // The trigger keys whose mere presence (non-blank) admits a span.
130
+ const PRESENCE_TRIGGER_ATTRIBUTES = MESSAGING_TRIGGER_ATTRIBUTES.filter((key) => {
131
+ return !AZURE_RESOURCE_PROVIDER_ATTRIBUTES.includes(key);
132
+ });
133
+ // The column a query selects the attribute at `index` of its key list as.
134
+ export function getMessagingDiscoveryColumn(index) {
135
+ return `a${index}`;
136
+ }
137
+ function columnsByKey(keys) {
138
+ const columns = new Map();
139
+ keys.forEach((key, index) => {
140
+ columns.set(key, getMessagingDiscoveryColumn(index));
141
+ });
142
+ return columns;
143
+ }
144
+ const SPAN_ATTRIBUTE_COLUMNS = columnsByKey(MESSAGING_RESOLVER_INPUT_ATTRIBUTES);
145
+ const METRIC_ATTRIBUTE_COLUMNS = columnsByKey(MESSAGING_METRIC_RESOLVER_INPUT_ATTRIBUTES);
146
+ function sqlString(value) {
147
+ return `'${escapeSql(value)}'`;
148
+ }
149
+ function sqlArray(values) {
150
+ return `[${values.map(sqlString).join(", ")}]`;
151
+ }
152
+ function sqlTuple(values) {
153
+ return `(${values.map(sqlString).join(", ")})`;
154
+ }
155
+ /*
156
+ * Every span but a stored SERVER one (MESSAGE_QUEUE_DISCOVERY_EXCLUDED_SPAN_KIND).
157
+ * `kind` is Nullable, and a span a pipeline left without a kind is stored
158
+ * NULL: a bare `kind != …` is NULL for it, which would drop a span ingest
159
+ * keyed. ifNull() reads it as ''. Being a non-Nullable expression, it is
160
+ * also the form the kind column's set skip index (idx_kind) can skip blocks
161
+ * of SERVER spans with: on ClickHouse 26.7 no comparison of the bare
162
+ * Nullable column (=, IN, !=) skipped a single granule.
163
+ */
164
+ function spanKindSql() {
165
+ return `ifNull(kind, '') != ${sqlString(MESSAGE_QUEUE_DISCOVERY_EXCLUDED_SPAN_KIND)}`;
166
+ }
167
+ // `attributes['k'] AS a<i>` for every key, in list order.
168
+ function attributeColumnsSql(keys) {
169
+ return keys
170
+ .map((key, index) => {
171
+ return `attributes[${sqlString(key)}] AS ${getMessagingDiscoveryColumn(index)}`;
172
+ })
173
+ .join(",\n ");
174
+ }
175
+ function attributeColumnNames(keys) {
176
+ return keys
177
+ .map((_key, index) => {
178
+ return getMessagingDiscoveryColumn(index);
179
+ })
180
+ .join(", ");
181
+ }
182
+ // A usable LIMIT: at least 1, whole, whatever the caller passed.
183
+ function rowCap(maxRows) {
184
+ return Number.isFinite(maxRows) && maxRows >= 1 ? Math.floor(maxRows) : 1;
185
+ }
186
+ /*
187
+ * The span-side twin of hasMessagingTrigger, applied after the bloom-indexed
188
+ * presence check on every trigger key: the presence of any other trigger
189
+ * key, or an Azure provider key that names a messaging provider. The Azure
190
+ * SDKs stamp those keys on EVERY client span (Storage, Key Vault and Cosmos
191
+ * DB as much as Service Bus), so without the value condition every Azure SDK
192
+ * span of the window would compete for the row cap. The namespaces are the
193
+ * core's own list (AZURE_MESSAGING_PROVIDER_NAMESPACES, the values its
194
+ * trigger check admits), never a copy. A SUPERSET of the core's check, so no
195
+ * span ingest keys a queue on is ever left out: ClickHouse's trimBoth()
196
+ * trims spaces only, where the core trims every whitespace character before
197
+ * comparing, so the value is searched for the namespace case-insensitively
198
+ * instead of compared whole. Anything extra it lets through (a value merely
199
+ * containing a namespace) resolves to no queue in
200
+ * resolveMessagingSpanDiscoveryRows, which runs the core's check again.
201
+ */
202
+ function spanTriggerSql() {
203
+ const providerChecks = AZURE_RESOURCE_PROVIDER_ATTRIBUTES.map((key) => {
204
+ return `multiSearchAnyCaseInsensitive(attributes[${sqlString(key)}], ${sqlArray(AZURE_MESSAGING_PROVIDER_NAMESPACES)})`;
205
+ });
206
+ return [
207
+ `hasAny(attributeKeys, ${sqlArray(PRESENCE_TRIGGER_ATTRIBUTES)})`,
208
+ ...providerChecks,
209
+ ].join(" OR ");
210
+ }
211
+ /*
212
+ * ---- Values that vary per message --------------------------------------------
213
+ *
214
+ * The span query groups on the VALUES of the resolver's keys, and a few of
215
+ * those keys can hold a new value on every message although the resolver
216
+ * gives all of them one answer, or none:
217
+ *
218
+ * - the Java agent names a JetStream acknowledgement by its whole subject
219
+ * (`$JS.ACK.<stream>.<consumer>.<delivered>.<stream seq>.<consumer
220
+ * seq>.<timestamp>.<pending>`; the template `$JS.ACK` goes beside it
221
+ * only when boundJetStreamAckDestination is on), and a reply inbox
222
+ * (`_INBOX.<id>`) whole in its stable-semconv mode — the resolver names
223
+ * no queue for either;
224
+ * - a destination name beside a template (the spec asks for a template
225
+ * exactly when the name is not low-cardinality): the resolver reads the
226
+ * template, and the name only for whether it is blank;
227
+ * - a RabbitMQ routing key carrying an id (`order.4711.created`, the
228
+ * usual topic-exchange key) beside the exchange it was published to:
229
+ * the resolver names the exchange.
230
+ *
231
+ * Grouped as stored, each such value is a group of its own: ten million
232
+ * acknowledgements in a window took the query past its memory limit on
233
+ * every run (ClickHouse Code 241). The failure is logged and costs the
234
+ * project its span evidence, so span-only queues were never sighted, and
235
+ * were archived a week later. So the query hands the resolver the same
236
+ * answer in far fewer groups:
237
+ *
238
+ * 1. it leaves out the spans the resolver certainly names no queue for —
239
+ * a temporary or anonymous flag that is "true", and a NATS span whose
240
+ * destination is an inbox or acknowledgement subject;
241
+ * 2. a destination key after one that certainly holds text is read only
242
+ * for whether it is blank (a trigger, the Azure legacy evidence), so
243
+ * its text becomes one placeholder;
244
+ * 3. a routing key is blanked beside destinations the resolver reads as
245
+ * one name — none holds a ':' or ',' or spells the default exchange —
246
+ * where nothing reads the key at all.
247
+ *
248
+ * Each rule errs toward keeping a value as stored: "certainly holds text"
249
+ * means a printable, non-space ASCII character, which no trim removes, and
250
+ * every comparison is one ClickHouse makes exactly as the resolver does, or
251
+ * more strictly. The tests hold a TypeScript twin of these rules to the
252
+ * resolver over the core's fixture corpus and generated variants, and the
253
+ * real-ClickHouse suite holds the query to the twin. With them, ten million
254
+ * acknowledgements beside eight hundred thousand Kafka spans are three
255
+ * hundred groups: 4.2 s and 0.8 GiB at 32 threads, nearly all of it the
256
+ * scan's (see "The queue queries' settings").
257
+ *
258
+ * A shape no rule folds still makes a group per message — a joined RabbitMQ
259
+ * name per routing key, a topic named per request that the resolver
260
+ * templates into one. Such groups spill to disk past QUERY_SETTINGS'
261
+ * max_bytes_before_external_group_by, but the more threads the scan runs,
262
+ * the fewer of them merge back from disk within the memory limit: at 32
263
+ * threads a million in a window finished (1.0 GiB) and two million failed
264
+ * (Code 241, which costs the run the project's span evidence), where four
265
+ * threads finished eight million.
266
+ */
267
+ /**
268
+ * What a destination key the resolver reads only for blankness holds in the
269
+ * span query's rows (rule 2): non-blank, like the text it stands for, and a
270
+ * value the resolver reads as scrubbed — so even read as the destination it
271
+ * could never name a queue.
272
+ */
273
+ export const MESSAGE_QUEUE_DISCOVERY_SHADOWED_VALUE = "*";
274
+ /**
275
+ * The NATS subjects the resolver names no queue for, lowercased as it
276
+ * compares them: reply inboxes and JetStream acknowledgements, each on its
277
+ * own or followed by "." and anything (rule 1).
278
+ */
279
+ export const MESSAGE_QUEUE_NATS_GENERATED_SUBJECTS = [
280
+ "_inbox",
281
+ "$js.ack",
282
+ ];
283
+ /**
284
+ * The non-empty spellings of RabbitMQ's default exchange, lowercased, whose
285
+ * routing key the resolver reads as the queue (rule 3). The empty spelling
286
+ * cannot be a destination the resolver reads, and a joined name that leads
287
+ * with it holds a ':' or ',' anyway.
288
+ */
289
+ export const MESSAGE_QUEUE_RABBITMQ_DEFAULT_EXCHANGES = [
290
+ "amq.default",
291
+ "<default>",
292
+ ];
293
+ // A system's spellings the catalog maps to it, lowercased (NATS: "jetstream").
294
+ function systemSpellings(system) {
295
+ const descriptor = getMessagingSystemDescriptor(system);
296
+ return uniqueSorted((descriptor ? [descriptor.system, ...descriptor.aliases] : [system]).map((spelling) => {
297
+ return spelling.toLowerCase();
298
+ }));
299
+ }
300
+ const NATS_SPELLINGS = systemSpellings("nats");
301
+ // A span attribute as stored.
302
+ function storedAttributeSql(key) {
303
+ return `attributes[${sqlString(key)}]`;
304
+ }
305
+ /*
306
+ * The span query names the destination keys' shared tests once (a WITH
307
+ * clause, which ClickHouse expands where they are used):
308
+ *
309
+ * - destinationText<i>: destination key i (MESSAGING_DESTINATION_ATTRIBUTES
310
+ * order) certainly holds text the resolver reads as non-blank — a
311
+ * printable, non-space ASCII character, which no trim removes. Saying
312
+ * no proves nothing (a name in another script holds text too), so the
313
+ * rules then leave a value as stored;
314
+ * - storedDestinations: every destination key as stored, joined, for the
315
+ * searches that must find nothing in any of them;
316
+ * - firstStoredDestination: the first non-empty destination key as
317
+ * stored, lowercased as ClickHouse lowercases (ASCII only).
318
+ */
319
+ function destinationTextAlias(position) {
320
+ return `destinationText${position}`;
321
+ }
322
+ const STORED_DESTINATIONS_ALIAS = "storedDestinations";
323
+ const FIRST_STORED_DESTINATION_ALIAS = "firstStoredDestination";
324
+ function spanAliasesSql() {
325
+ return [
326
+ ...MESSAGING_DESTINATION_ATTRIBUTES.map((key, position) => {
327
+ return `match(${storedAttributeSql(key)}, '[!-~]') AS ${destinationTextAlias(position)}`;
328
+ }),
329
+ `concat(${MESSAGING_DESTINATION_ATTRIBUTES.map(storedAttributeSql).join(", ")}) AS ${STORED_DESTINATIONS_ALIAS}`,
330
+ `lower(ifNull(coalesce(${MESSAGING_DESTINATION_ATTRIBUTES.map((key) => {
331
+ return `nullIf(${storedAttributeSql(key)}, '')`;
332
+ }).join(", ")}), '')) AS ${FIRST_STORED_DESTINATION_ALIAS}`,
333
+ ].join(",\n ");
334
+ }
335
+ // Whether any of the first `count` destination keys certainly holds text.
336
+ function anyDestinationTextSql(count) {
337
+ return `(${MESSAGING_DESTINATION_ATTRIBUTES.slice(0, count)
338
+ .map((_key, position) => {
339
+ return destinationTextAlias(position);
340
+ })
341
+ .join(" OR ")})`;
342
+ }
343
+ /*
344
+ * The spans the resolver certainly names no queue for (rule 1):
345
+ *
346
+ * - a temporary or anonymous flag it reads as true — the stored text
347
+ * "true" in any case (the resolver trims and lowercases it); it checks
348
+ * the flags before it looks for a destination at all;
349
+ * - a NATS span (its `messaging.system` exactly a spelling the catalog
350
+ * maps to NATS) whose first non-empty destination key holds an inbox or
351
+ * acknowledgement subject: every key before it is empty and it starts
352
+ * with a character no trim removes, so it is the destination the
353
+ * resolver reads, and the resolver finds the generated subject in it.
354
+ */
355
+ function certainlyNoQueueSql() {
356
+ const flags = MESSAGING_TEMPORARY_FLAG_ATTRIBUTES.map((key) => {
357
+ return `lower(${storedAttributeSql(key)}) = 'true'`;
358
+ });
359
+ const generated = [
360
+ `${FIRST_STORED_DESTINATION_ALIAS} IN ${sqlTuple(MESSAGE_QUEUE_NATS_GENERATED_SUBJECTS)}`,
361
+ ...MESSAGE_QUEUE_NATS_GENERATED_SUBJECTS.map((subject) => {
362
+ return `startsWith(${FIRST_STORED_DESTINATION_ALIAS}, ${sqlString(`${subject}.`)})`;
363
+ }),
364
+ ];
365
+ return [
366
+ ...flags,
367
+ `(lower(${storedAttributeSql(MESSAGING_SYSTEM_ATTRIBUTE)}) IN ${sqlTuple(NATS_SPELLINGS)} AND (${generated.join(" OR ")}))`,
368
+ ].join(" OR ");
369
+ }
370
+ /*
371
+ * A destination key's column (rule 2): as stored, unless an earlier
372
+ * destination key certainly holds text — the resolver then takes the
373
+ * destination from that one, and reads this one only for whether it is
374
+ * blank — and this one certainly holds text too: then the placeholder,
375
+ * non-blank like it.
376
+ */
377
+ function destinationColumnSql(key) {
378
+ const position = MESSAGING_DESTINATION_ATTRIBUTES.indexOf(key);
379
+ const stored = storedAttributeSql(key);
380
+ if (position <= 0) {
381
+ return stored;
382
+ }
383
+ return `if(${anyDestinationTextSql(position)} AND ${destinationTextAlias(position)}, ${sqlString(MESSAGE_QUEUE_DISCOVERY_SHADOWED_VALUE)}, ${stored})`;
384
+ }
385
+ /*
386
+ * A routing key's column (rule 3): blank where the resolver never reads it —
387
+ * some destination key certainly holds text (so the key is not the
388
+ * destination), none holds a ':' or ',' (so no joined or aio-pika name is
389
+ * split and compared against it) and none spells the default exchange
390
+ * (whose routing key IS the queue) — else as stored. Beside such a
391
+ * destination the resolver keeps the name as it is, whatever the key.
392
+ */
393
+ function routingKeyColumnSql(key) {
394
+ return `if(${anyDestinationTextSql(MESSAGING_DESTINATION_ATTRIBUTES.length)} AND NOT multiSearchAny(${STORED_DESTINATIONS_ALIAS}, ${sqlArray([
395
+ ":",
396
+ ",",
397
+ ])}) AND NOT multiSearchAnyCaseInsensitive(${STORED_DESTINATIONS_ALIAS}, ${sqlArray(MESSAGE_QUEUE_RABBITMQ_DEFAULT_EXCHANGES)}), '', ${storedAttributeSql(key)})`;
398
+ }
399
+ // One span query column: folded by rule 2 or 3, or as stored.
400
+ function spanAttributeColumnSql(key) {
401
+ if (MESSAGING_DESTINATION_ATTRIBUTES.includes(key)) {
402
+ return destinationColumnSql(key);
403
+ }
404
+ if (RABBITMQ_ROUTING_KEY_ATTRIBUTES.includes(key)) {
405
+ return routingKeyColumnSql(key);
406
+ }
407
+ return storedAttributeSql(key);
408
+ }
409
+ // `<column expression> AS a<i>` for every key the span resolver reads.
410
+ function spanAttributeColumnsSql() {
411
+ return MESSAGING_RESOLVER_INPUT_ATTRIBUTES.map((key, index) => {
412
+ return `${spanAttributeColumnSql(key)} AS ${getMessagingDiscoveryColumn(index)}`;
413
+ }).join(",\n ");
414
+ }
415
+ /*
416
+ * ---- Which rows the cap keeps -------------------------------------------------
417
+ *
418
+ * A queue is several rows — one per span kind, consumer group, semconv
419
+ * generation or broker address, one per metric name — and a busy project
420
+ * has more rows than either cap. Cut busiest-first alone, the cap failed
421
+ * two ways: a busy source took every slot (a Kafka scrape's datapoints
422
+ * outnumber a CloudWatch queue's by a hundred to one, so a few hundred
423
+ * topics left no SQS queue a row), and rows that tie (every CloudWatch
424
+ * queue reports as often as the next) were cut in ClickHouse's hash order:
425
+ * the same queues, run after run. A queue left out is never created or
426
+ * sighted, and is archived a week later while its broker keeps reporting
427
+ * it.
428
+ *
429
+ * So the rows are ranked within their share — a metric name; for spans a
430
+ * `messaging.system` value — twice: busiest first, and in a rotating order
431
+ * (the row's grouped values hashed with the window's start, so it changes
432
+ * every run), which also breaks the busiest ranking's ties. They are then
433
+ * taken alternately from the two rankings, and from every share in turn:
434
+ * each share's busiest row, a rotating one, its next busiest, and so on. A
435
+ * project under the cap loses nothing; over it, every share gets its part
436
+ * (a small share all of its rows), its busiest groups are read every run,
437
+ * and the others by turns, a different sample every run (within the bound
438
+ * MESSAGE_QUEUE_RANKED_ROWS_PER_CAPPED_ROW sets).
439
+ */
440
+ /*
441
+ * A row's place in this run's rotating order: its grouped values (`values`,
442
+ * SQL) hashed with the window's start.
443
+ */
444
+ function rotationSql(startSql, values) {
445
+ return `cityHash64(toUnixTimestamp64Milli(${startSql}), ${values}) AS rotation`;
446
+ }
447
+ /**
448
+ * How many grouped rows, per row the cap keeps, are ranked for it: the
449
+ * busiest this many times the cap (ties in the rotating order). Ranking
450
+ * holds and sorts the rows it ranks in full, which is cheap for the rows of
451
+ * any real project but not for millions of per-message groups no rule folds:
452
+ * ranked in full, a million reply topics named per request took 1.49 GiB at
453
+ * 32 threads, and four million took the query past its memory limit at
454
+ * four. So the grouped rows reach the ranking through a top-N heap of this
455
+ * size (ORDER BY … LIMIT), with which those finished at 1.0 GiB and
456
+ * 1.25 GiB. That heap cuts by count alone, so a share is crowded out only
457
+ * where other shares hold more than this many times the cap of busier
458
+ * groups (100,000 for the cron's caps); its own memory is small beside the
459
+ * grouping's (one a fifth its size saved 10 MiB of the million groups'
460
+ * 1.0 GiB).
461
+ */
462
+ export const MESSAGE_QUEUE_RANKED_ROWS_PER_CAPPED_ROW = 50;
463
+ function rotatingShareOrderSql(data) {
464
+ const cap = rowCap(data.maxRows);
465
+ return `SELECT ${data.columns}
466
+ FROM (
467
+ SELECT
468
+ *,
469
+ row_number() OVER (PARTITION BY ${data.shareSql} ORDER BY ${data.countColumn} DESC, rotation) AS busiestRank,
470
+ row_number() OVER (PARTITION BY ${data.shareSql} ORDER BY rotation) AS rotationRank
471
+ FROM (${data.groupedSql}
472
+ ORDER BY ${data.countColumn} DESC, rotation
473
+ LIMIT ${cap * MESSAGE_QUEUE_RANKED_ROWS_PER_CAPPED_ROW}
474
+ )
475
+ )
476
+ ORDER BY least(2 * busiestRank - 1, 2 * rotationRank), ${data.countColumn} DESC, rotation
477
+ LIMIT ${cap}`;
478
+ }
479
+ // The span query's share: the stored `messaging.system` column.
480
+ const SPAN_SHARE_COLUMN = getMessagingDiscoveryColumn(MESSAGING_RESOLVER_INPUT_ATTRIBUTES.indexOf(MESSAGING_SYSTEM_ATTRIBUTE));
481
+ /*
482
+ * ---- The queue queries' settings ---------------------------------------------
483
+ *
484
+ * The cron reads each queue query through the App's ClickHouse client, which
485
+ * gives up on a request that has sent it nothing for its request_timeout
486
+ * (ClickhouseConfig: 58 s, an idle-socket timer), and a grouped query in
487
+ * FORMAT JSON sends nothing until it is done. QUERY_SETTINGS' own limit is
488
+ * 60 s, so a query still reading at 58 s was cut off by the client
489
+ * ("Timeout error.") while the server read on. The queue queries therefore
490
+ * end on the server first, at MESSAGE_QUEUE_DISCOVERY_MAX_EXECUTION_SECONDS:
491
+ * a window too big to read by then fails with ClickHouse's own
492
+ * TIMEOUT_EXCEEDED, which the cron logs, and costs that run the project's
493
+ * span (or metric) evidence. On ClickHouse 26.7 the error followed the
494
+ * limit within 50 ms, mid-merge of a grouping spilled to disk too, well
495
+ * inside the client's wait.
496
+ *
497
+ * They 'throw' rather than 'break': a break returns no rows at all. On
498
+ * ClickHouse 26.7 a query broken off at its time limit answers with an
499
+ * empty body — not the groups of the part of the window it read, whatever
500
+ * the query's shape — which the client then fails to parse ("Unexpected end
501
+ * of JSON input"). The real-ClickHouse suite holds both behaviours.
502
+ *
503
+ * Nothing pins the scan's threads: it runs as wide as the server lets it
504
+ * (max_threads, the server's cores by default). Measured on ClickHouse 26.7
505
+ * with 32 cores, four threads — the Logs aggregations' pin — took 14.8 s
506
+ * over 10.8 million spans where 32 took 4.2 s, and ran out of time over
507
+ * 40.8 million, which 32 read in 24 s. The price is memory, which grows
508
+ * with the threads: about 25 MiB each over spans carrying about 35
509
+ * attributes (0.8 GiB at 32 threads, 1.55 GiB at 64, of QUERY_SETTINGS'
510
+ * 1.86 GiB limit), and with it the fewer groups that no rule folds can
511
+ * spill to disk and merge back within the limit (see "Values that vary per
512
+ * message").
513
+ */
514
+ export const MESSAGE_QUEUE_DISCOVERY_MAX_EXECUTION_SECONDS = 45;
515
+ /*
516
+ * A SETTINGS clause (`SETTINGS a = 1, b = 'x'`) with `overrides` in place of
517
+ * the settings of the same name, or after them where it has none: each
518
+ * setting named once.
519
+ */
520
+ function withSettings(clause, overrides) {
521
+ const settings = new Map();
522
+ for (const setting of clause
523
+ .trim()
524
+ .replace(/^SETTINGS\s+/, "")
525
+ .split(",")) {
526
+ const equals = setting.indexOf("=");
527
+ settings.set(setting.slice(0, equals).trim(), setting.slice(equals + 1).trim());
528
+ }
529
+ for (const [name, value] of overrides) {
530
+ settings.set(name, value);
531
+ }
532
+ return `SETTINGS ${Array.from(settings.entries())
533
+ .map((setting) => {
534
+ return `${setting[0]} = ${setting[1]}`;
535
+ })
536
+ .join(", ")}`;
537
+ }
538
+ /**
539
+ * The SETTINGS clause every queue query ends with: QUERY_SETTINGS' memory
540
+ * limit and spills to disk, and a time limit of its own,
541
+ * MESSAGE_QUEUE_DISCOVERY_MAX_EXECUTION_SECONDS, at which it fails ('throw').
542
+ */
543
+ export const MESSAGE_QUEUE_DISCOVERY_QUERY_SETTINGS = withSettings(QUERY_SETTINGS, [
544
+ [
545
+ "max_execution_time",
546
+ String(MESSAGE_QUEUE_DISCOVERY_MAX_EXECUTION_SECONDS),
547
+ ],
548
+ ["timeout_overflow_mode", "'throw'"],
549
+ ]);
550
+ /**
551
+ * One row per (span kind, value of every attribute resolveMessagingSpan
552
+ * reads — folded where the resolver reads no more than a placeholder, see
553
+ * "Values that vary per message") over the window's messaging spans, with
554
+ * how many spans, how many of them failed and when the newest started;
555
+ * under the row cap, each broker's busiest and a rotating share of the rest
556
+ * (rotatingShareOrderSql). Spans are dropped on their kind (a stored SERVER
557
+ * span never names a queue; every other kind, a remapped or missing one
558
+ * included, may) and on `attributeKeys` (bloom-indexed, far smaller than
559
+ * the attribute map) before the map is read: a span carries a messaging
560
+ * trigger key, and one whose only trigger is an Azure provider key names
561
+ * Service Bus or Event Hubs there. Then the spans the resolver certainly
562
+ * names no queue for are dropped too (rule 1).
563
+ */
564
+ export function buildMessagingSpanDiscoverySql(window) {
565
+ const columns = attributeColumnNames(MESSAGING_RESOLVER_INPUT_ATTRIBUTES);
566
+ return `
567
+ /* ${MESSAGE_QUEUE_SPAN_SQL_MARKER} */
568
+ ${rotatingShareOrderSql({
569
+ groupedSql: `
570
+ WITH
571
+ ${spanAliasesSql()}
572
+ SELECT
573
+ kind,
574
+ ${spanAttributeColumnsSql()},
575
+ count() AS spanCount,
576
+ countIf(statusCode = ${SpanStatus.Error}) AS errorCount,
577
+ toUnixTimestamp64Milli(max(startTime)) AS lastSeenUnixMs,
578
+ ${rotationSql(window.startSql, `ifNull(kind, ''), ${columns}`)}
579
+ FROM ${SPAN_TABLE}
580
+ WHERE projectId = '${escapeSql(window.projectId)}'
581
+ AND startTime >= ${window.startSql}
582
+ AND startTime < ${window.endSql}
583
+ AND ${spanKindSql()}
584
+ AND hasAny(attributeKeys, ${sqlArray(MESSAGING_TRIGGER_ATTRIBUTES)})
585
+ AND (${spanTriggerSql()})
586
+ AND NOT (${certainlyNoQueueSql()})
587
+ GROUP BY kind, ${columns}`,
588
+ columns: `kind, ${columns}, spanCount, errorCount, lastSeenUnixMs`,
589
+ shareSql: SPAN_SHARE_COLUMN,
590
+ countColumn: "spanCount",
591
+ maxRows: window.maxRows,
592
+ })}
593
+ ${MESSAGE_QUEUE_DISCOVERY_QUERY_SETTINGS}
594
+ `;
595
+ }
596
+ /*
597
+ * The metric query's time predicate: the window, reaching
598
+ * MESSAGE_QUEUE_LATE_METRIC_MINUTES further back for the cloud-monitoring
599
+ * metrics alone. The widest bound is its own conjunct, so the partition key
600
+ * (toYYYYMMDD(time)) and the primary index can prune on it.
601
+ */
602
+ function metricWindowSql(window) {
603
+ return `time >= ${window.startSql} - INTERVAL ${MESSAGE_QUEUE_LATE_METRIC_MINUTES} MINUTE
604
+ AND time < ${window.endSql}
605
+ AND (time >= ${window.startSql} OR name IN ${sqlTuple(MESSAGE_QUEUE_LATE_METRIC_NAMES)})`;
606
+ }
607
+ /**
608
+ * One row per (metric name, value of every attribute
609
+ * resolveMessagingMetricDatapoint reads) over the window's curated broker
610
+ * and messaging client datapoints (MESSAGE_QUEUE_DISCOVERY_METRIC_NAMES),
611
+ * with how many datapoints and when the newest was taken; under the row
612
+ * cap, each metric's busiest and a rotating share of the rest
613
+ * (rotatingShareOrderSql), so a busy scrape never crowds out a cloud
614
+ * provider's metrics. The keys that only mark a curated metric's
615
+ * per-consumer repeat (MESSAGE_QUEUE_METRIC_EXCLUDED_SERIES_ATTRIBUTES:
616
+ * Pulsar's consumer name and id) are neither selected nor filtered on: they
617
+ * are per instance, so grouping on them would split a topic's rows per
618
+ * consumer, and a repeat folds into its subscription's own series of the
619
+ * same topic, which names the same queue.
620
+ */
621
+ export function buildMessagingMetricDiscoverySql(window) {
622
+ const columns = attributeColumnNames(MESSAGING_METRIC_RESOLVER_INPUT_ATTRIBUTES);
623
+ return `
624
+ /* ${MESSAGE_QUEUE_METRIC_SQL_MARKER} */
625
+ ${rotatingShareOrderSql({
626
+ groupedSql: `
627
+ SELECT
628
+ name,
629
+ ${attributeColumnsSql(MESSAGING_METRIC_RESOLVER_INPUT_ATTRIBUTES)},
630
+ count() AS pointCount,
631
+ toUnixTimestamp64Milli(max(time)) AS lastSeenUnixMs,
632
+ ${rotationSql(window.startSql, `name, ${columns}`)}
633
+ FROM ${METRIC_TABLE}
634
+ WHERE projectId = '${escapeSql(window.projectId)}'
635
+ AND name IN ${sqlTuple(MESSAGE_QUEUE_DISCOVERY_METRIC_NAMES)}
636
+ AND ${metricWindowSql(window)}
637
+ GROUP BY name, ${columns}`,
638
+ columns: `name, ${columns}, pointCount, lastSeenUnixMs`,
639
+ shareSql: "name",
640
+ countColumn: "pointCount",
641
+ maxRows: window.maxRows,
642
+ })}
643
+ ${MESSAGE_QUEUE_DISCOVERY_QUERY_SETTINGS}
644
+ `;
645
+ }
646
+ /**
647
+ * The projects that sent a datapoint the metric query reads, in the window
648
+ * it reads them in. The cron's project list otherwise comes from spans and
649
+ * service graph metrics only, and a project whose only messaging telemetry
650
+ * is its brokers' metrics (a collector watching Kafka or SQS, no
651
+ * instrumented application) would never have its queues discovered.
652
+ */
653
+ export function buildMessagingMetricProjectsSql(data) {
654
+ return `
655
+ /* ${MESSAGE_QUEUE_METRIC_PROJECTS_SQL_MARKER} */
656
+ SELECT DISTINCT projectId
657
+ FROM ${METRIC_TABLE}
658
+ WHERE name IN ${sqlTuple(MESSAGE_QUEUE_DISCOVERY_METRIC_NAMES)}
659
+ AND ${metricWindowSql(data)}
660
+ LIMIT ${rowCap(data.maxProjects)}
661
+ ${MESSAGE_QUEUE_DISCOVERY_QUERY_SETTINGS}
662
+ `;
663
+ }
664
+ const EVIDENCE_KINDS = [
665
+ "spans",
666
+ "brokerMetrics",
667
+ "clientMetrics",
668
+ ];
669
+ const DIRECTIONS = [
670
+ "publish",
671
+ "consume",
672
+ "settle",
673
+ "unknown",
674
+ ];
675
+ function toCount(value) {
676
+ const parsed = Math.round(Number(value));
677
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : 0;
678
+ }
679
+ // Epoch milliseconds of a row's newest time; 0 when absent or unreadable.
680
+ function toEpochMs(value) {
681
+ if (value === null || value === undefined || value === "") {
682
+ return 0;
683
+ }
684
+ const parsed = Number(value);
685
+ return Number.isFinite(parsed) && parsed > 0 ? Math.floor(parsed) : 0;
686
+ }
687
+ function newDirectionCounts() {
688
+ return { publish: 0, consume: 0, settle: 0, unknown: 0 };
689
+ }
690
+ function addWeight(weights, key, weight) {
691
+ weights.set(key, (weights.get(key) || 0) + weight);
692
+ }
693
+ // Heaviest first, then by value, so every choice below is order-independent.
694
+ function compareByWeightThenKey(a, b) {
695
+ if (a[1] !== b[1]) {
696
+ return b[1] - a[1];
697
+ }
698
+ if (a[0] < b[0]) {
699
+ return -1;
700
+ }
701
+ return a[0] > b[0] ? 1 : 0;
702
+ }
703
+ function heaviest(weights) {
704
+ const sorted = Array.from(weights.entries()).sort(compareByWeightThenKey);
705
+ return sorted.length > 0 ? sorted[0][0] : null;
706
+ }
707
+ function queueFor(queues, identity, identifier) {
708
+ let queue = queues.get(identifier);
709
+ if (!queue) {
710
+ queue = {
711
+ identity: identity,
712
+ identifier: identifier,
713
+ systems: new Map(),
714
+ destinations: new Map(),
715
+ evidence: new Map(),
716
+ };
717
+ queues.set(identifier, queue);
718
+ }
719
+ return queue;
720
+ }
721
+ function evidenceFor(queue, kind) {
722
+ let evidence = queue.evidence.get(kind);
723
+ if (!evidence) {
724
+ evidence = {
725
+ count: 0,
726
+ errorCount: 0,
727
+ directions: newDirectionCounts(),
728
+ addresses: new Map(),
729
+ lastSeenMs: 0,
730
+ };
731
+ queue.evidence.set(kind, evidence);
732
+ }
733
+ return evidence;
734
+ }
735
+ /*
736
+ * One resolved row into its queue — keyed exactly as ingest keys the row
737
+ * (MessagingEntityKeyResolver): the canonical identity of the resolution,
738
+ * and only when that identity builds an identifier. Ingest stamps no key on
739
+ * a row whose identifier cannot be built (lowercasing can push a
740
+ * 255-character destination past the identifier's length), so no row may
741
+ * be created for one either.
742
+ */
743
+ function addResolved(queues, kind, resolved, observed) {
744
+ const identity = toMessageQueueIdentity({
745
+ system: resolved.system,
746
+ brokerScope: resolved.brokerScope,
747
+ destination: resolved.destination,
748
+ });
749
+ const identifier = identity
750
+ ? buildMessageQueueIdentifier(identity)
751
+ : null;
752
+ if (!identity || !identifier) {
753
+ return;
754
+ }
755
+ const queue = queueFor(queues, identity, identifier);
756
+ addWeight(queue.systems, resolved.system, observed.count);
757
+ addWeight(queue.destinations, resolved.destination, observed.count);
758
+ const evidence = evidenceFor(queue, kind);
759
+ evidence.count += observed.count;
760
+ evidence.errorCount += observed.errorCount;
761
+ if (DIRECTIONS.includes(resolved.direction)) {
762
+ evidence.directions[resolved.direction] += observed.count;
763
+ }
764
+ if (resolved.brokerAddress) {
765
+ addWeight(evidence.addresses, resolved.brokerAddress, observed.count);
766
+ }
767
+ evidence.lastSeenMs = Math.max(evidence.lastSeenMs, observed.lastSeenMs);
768
+ }
769
+ /*
770
+ * The system a queue row should record: the evidence's systems folded with
771
+ * getMoreSpecificMessagingSystem — the rule a row's own system is refined
772
+ * by — busiest first, so a family member ("activemq") wins over the family
773
+ * ("jms") whichever was busier, and the answer never depends on row order.
774
+ */
775
+ function mostSpecificSystem(queue) {
776
+ let system = "";
777
+ for (const [candidate] of Array.from(queue.systems.entries()).sort(compareByWeightThenKey)) {
778
+ system = getMoreSpecificMessagingSystem(system, candidate) || system;
779
+ }
780
+ return system || queue.identity.system;
781
+ }
782
+ function toEvidence(accumulator) {
783
+ if (!accumulator) {
784
+ return null;
785
+ }
786
+ return {
787
+ count: accumulator.count,
788
+ errorCount: accumulator.errorCount,
789
+ directions: Object.assign({}, accumulator.directions),
790
+ brokerAddress: heaviest(accumulator.addresses),
791
+ lastSeenAt: accumulator.lastSeenMs > 0 ? new Date(accumulator.lastSeenMs) : null,
792
+ };
793
+ }
794
+ /**
795
+ * All evidence behind a discovered queue: its spans and datapoints of every
796
+ * kind, the order discovery works through queues in.
797
+ */
798
+ export function getDiscoveredMessageQueueEvidenceCount(discovered) {
799
+ var _a;
800
+ let count = 0;
801
+ for (const kind of EVIDENCE_KINDS) {
802
+ count += ((_a = discovered[kind]) === null || _a === void 0 ? void 0 : _a.count) || 0;
803
+ }
804
+ return count;
805
+ }
806
+ // Busiest first, then by identifier, so the order is stable.
807
+ function compareDiscovered(a, b) {
808
+ const difference = getDiscoveredMessageQueueEvidenceCount(b) -
809
+ getDiscoveredMessageQueueEvidenceCount(a);
810
+ if (difference !== 0) {
811
+ return difference;
812
+ }
813
+ if (a.identifier < b.identifier) {
814
+ return -1;
815
+ }
816
+ return a.identifier > b.identifier ? 1 : 0;
817
+ }
818
+ function finish(queues) {
819
+ const discovered = [];
820
+ for (const queue of queues.values()) {
821
+ discovered.push({
822
+ identity: queue.identity,
823
+ identifier: queue.identifier,
824
+ system: mostSpecificSystem(queue),
825
+ destination: heaviest(queue.destinations) || queue.identity.destination,
826
+ spans: toEvidence(queue.evidence.get("spans")),
827
+ brokerMetrics: toEvidence(queue.evidence.get("brokerMetrics")),
828
+ clientMetrics: toEvidence(queue.evidence.get("clientMetrics")),
829
+ });
830
+ }
831
+ return discovered.sort(compareDiscovered);
832
+ }
833
+ // A getter over a query row's attribute columns: what the resolver reads.
834
+ function rowAttributeGetter(row, columns) {
835
+ return (key) => {
836
+ const column = columns.get(key);
837
+ return column === undefined ? undefined : row[column];
838
+ };
839
+ }
840
+ /**
841
+ * Span query rows → the queues they name. Each row goes back through
842
+ * resolveMessagingSpan — the resolver ingest ran on each of its spans — with
843
+ * its kind and grouped attributes, so a SERVER span, a span with no
844
+ * messaging trigger (or an Azure SDK span of another service) and a
845
+ * temporary, generated, placeholder, scrubbed or overlong destination
846
+ * resolve to nothing, exactly as they got no key at ingest. Rows that land
847
+ * on one identity (the same queue named by producers and consumers, by
848
+ * several semconv generations, by several Pulsar partitions or with several
849
+ * UUIDs templated away) are merged: spans, failures and directions summed.
850
+ * Busiest first.
851
+ */
852
+ export function resolveMessagingSpanDiscoveryRows(rows) {
853
+ const queues = new Map();
854
+ for (const row of Array.isArray(rows) ? rows : []) {
855
+ if (!row || typeof row !== "object") {
856
+ continue;
857
+ }
858
+ const resolved = resolveMessagingSpan({
859
+ getAttribute: rowAttributeGetter(row, SPAN_ATTRIBUTE_COLUMNS),
860
+ kind: typeof row.kind === "string" ? row.kind : null,
861
+ });
862
+ if (!resolved) {
863
+ continue;
864
+ }
865
+ addResolved(queues, "spans", resolved, {
866
+ count: toCount(row.spanCount),
867
+ errorCount: toCount(row.errorCount),
868
+ lastSeenMs: toEpochMs(row.lastSeenUnixMs),
869
+ });
870
+ }
871
+ return finish(queues);
872
+ }
873
+ /**
874
+ * Metric query rows → the queues they name. Each row goes back through
875
+ * resolveMessagingMetricDatapoint — the resolver ingest ran on each of its
876
+ * datapoints — with its metric name and grouped attributes. A curated
877
+ * broker metric's datapoints are broker evidence (they may create a queue);
878
+ * anything else the query reads, a messaging client metric, is client
879
+ * evidence (it sights a queue that exists, never creates one). Rows that
880
+ * land on one identity are merged, datapoints summed. Busiest first.
881
+ */
882
+ export function resolveMessagingMetricDiscoveryRows(rows) {
883
+ const queues = new Map();
884
+ for (const row of Array.isArray(rows) ? rows : []) {
885
+ if (!row || typeof row !== "object") {
886
+ continue;
887
+ }
888
+ const metricName = typeof row.name === "string" ? row.name : "";
889
+ const resolved = resolveMessagingMetricDatapoint({
890
+ metricName: metricName,
891
+ getAttribute: rowAttributeGetter(row, METRIC_ATTRIBUTE_COLUMNS),
892
+ });
893
+ if (!resolved) {
894
+ continue;
895
+ }
896
+ addResolved(queues, MESSAGE_QUEUE_BROKER_METRIC_NAMES.has(metricName.trim().toLowerCase())
897
+ ? "brokerMetrics"
898
+ : "clientMetrics", resolved, {
899
+ count: toCount(row.pointCount),
900
+ errorCount: 0,
901
+ lastSeenMs: toEpochMs(row.lastSeenUnixMs),
902
+ });
903
+ }
904
+ return finish(queues);
905
+ }
906
+ /**
907
+ * Discovered queues from several sources (the span rows', the metric rows')
908
+ * merged into one entry per identity: every kind of evidence summed, the
909
+ * newest time kept, the system folded to the most specific the sources
910
+ * named, and the destination spelling and broker address the most evidence
911
+ * carried. Busiest first.
912
+ */
913
+ export function mergeDiscoveredMessageQueues(...lists) {
914
+ const queues = new Map();
915
+ for (const list of lists) {
916
+ for (const discovered of Array.isArray(list) ? list : []) {
917
+ if (!discovered || !discovered.identifier || !discovered.identity) {
918
+ continue;
919
+ }
920
+ const queue = queueFor(queues, discovered.identity, discovered.identifier);
921
+ const weight = getDiscoveredMessageQueueEvidenceCount(discovered);
922
+ addWeight(queue.systems, discovered.system, weight);
923
+ addWeight(queue.destinations, discovered.destination, weight);
924
+ for (const kind of EVIDENCE_KINDS) {
925
+ const source = discovered[kind];
926
+ if (!source) {
927
+ continue;
928
+ }
929
+ const target = evidenceFor(queue, kind);
930
+ target.count += source.count;
931
+ target.errorCount += source.errorCount;
932
+ for (const direction of DIRECTIONS) {
933
+ target.directions[direction] += source.directions[direction] || 0;
934
+ }
935
+ if (source.brokerAddress) {
936
+ addWeight(target.addresses, source.brokerAddress, source.count);
937
+ }
938
+ target.lastSeenMs = Math.max(target.lastSeenMs, source.lastSeenAt ? source.lastSeenAt.getTime() : 0);
939
+ }
940
+ }
941
+ }
942
+ return finish(queues);
943
+ }
944
+ /*
945
+ * Spans a destination needs inside one window before traces may create a
946
+ * queue for it on their own (env MESSAGE_QUEUE_MIN_SPANS, default 3, at
947
+ * least 1). One stray span of a one-off script is not a queue worth
948
+ * listing; a queue that exists is matched and sighted whatever the count.
949
+ */
950
+ export function getMessageQueueMinSpans() {
951
+ const raw = process.env[MESSAGE_QUEUE_MIN_SPANS_ENV];
952
+ if (raw === undefined || raw.trim() === "") {
953
+ return DEFAULT_MESSAGE_QUEUE_MIN_SPANS;
954
+ }
955
+ const parsed = Number(raw.trim());
956
+ if (!Number.isFinite(parsed) || !Number.isInteger(parsed)) {
957
+ return DEFAULT_MESSAGE_QUEUE_MIN_SPANS;
958
+ }
959
+ return Math.max(parsed, 1);
960
+ }
961
+ // Whether a queue's spans alone meet the minimum (never below 1 span).
962
+ function spansMeetMinimum(discovered, minSpans) {
963
+ const minimum = Number.isFinite(minSpans)
964
+ ? Math.max(minSpans, 1)
965
+ : DEFAULT_MESSAGE_QUEUE_MIN_SPANS;
966
+ return discovered.spans !== null && discovered.spans.count >= minimum;
967
+ }
968
+ /**
969
+ * The create policy for a discovered queue that has no row yet, minus the
970
+ * project budget (MessageQueueService applies it): at least `minSpans`
971
+ * spans in the window, or any curated broker metric datapoint — the broker
972
+ * reporting a queue is proof enough that it exists. Messaging client
973
+ * metrics alone never create one: like an application's own gauge, they
974
+ * attach to a queue, and sight one that exists.
975
+ */
976
+ export function isMessageQueueAutoCreateCandidate(data) {
977
+ return (data.discovered.brokerMetrics !== null ||
978
+ spansMeetMinimum(data.discovered, data.minSpans));
979
+ }
980
+ /**
981
+ * What a row created for this queue records as its discovery source: the
982
+ * application's traces when its spans meet the minimum, else the broker's
983
+ * metrics when they reported it ("traces" for anything else, which the
984
+ * create policy refuses anyway).
985
+ */
986
+ export function getMessageQueueCreationSource(data) {
987
+ if (!spansMeetMinimum(data.discovered, data.minSpans) &&
988
+ data.discovered.brokerMetrics !== null) {
989
+ return "broker-metrics";
990
+ }
991
+ return "traces";
992
+ }
993
+ /**
994
+ * The broker address a queue's row shows (display only): the one the
995
+ * application's own evidence named — its spans', else its messaging client
996
+ * metrics' (both read `server.address` / `server.port`: the broker the
997
+ * client connected to) — else the broker metrics' (the target a Prometheus
998
+ * scrape stamps on the resource: the broker's metrics port, or for
999
+ * scraped exporters the exporter itself, never what applications connect
1000
+ * to), else null.
1001
+ *
1002
+ * A row has ONE address column, and each sighting that carries an address
1003
+ * overwrites it: discovery gives a new row this address and passes it to
1004
+ * EVERY sighting of the run, never a sighting's own source's. Otherwise the
1005
+ * sighting that runs last — the broker's — would leave its scrape target on
1006
+ * the row on every run (its write gate reopens long before the next run).
1007
+ */
1008
+ export function getDiscoveredMessageQueueBrokerAddress(discovered) {
1009
+ var _a, _b, _c;
1010
+ return (((_a = discovered.spans) === null || _a === void 0 ? void 0 : _a.brokerAddress) ||
1011
+ ((_b = discovered.clientMetrics) === null || _b === void 0 ? void 0 : _b.brokerAddress) ||
1012
+ ((_c = discovered.brokerMetrics) === null || _c === void 0 ? void 0 : _c.brokerAddress) ||
1013
+ null);
1014
+ }
1015
+ //# sourceMappingURL=MessageQueueDiscovery.js.map