@oneuptime/common 14.0.2 → 14.0.5

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 (765) hide show
  1. package/Models/DatabaseModels/Alert.ts +55 -0
  2. package/Models/DatabaseModels/AlertFeed.ts +2 -0
  3. package/Models/DatabaseModels/DatabaseServer.ts +1650 -0
  4. package/Models/DatabaseModels/DatabaseServerEndpoint.ts +540 -0
  5. package/Models/DatabaseModels/DatabaseServerFeed.ts +625 -0
  6. package/Models/DatabaseModels/DatabaseServerLabelRule.ts +514 -0
  7. package/Models/DatabaseModels/DatabaseServerOwnerRule.ts +596 -0
  8. package/Models/DatabaseModels/DatabaseServerOwnerTeam.ts +491 -0
  9. package/Models/DatabaseModels/DatabaseServerOwnerUser.ts +490 -0
  10. package/Models/DatabaseModels/Incident.ts +55 -0
  11. package/Models/DatabaseModels/IncidentAlert.ts +540 -0
  12. package/Models/DatabaseModels/IncidentFeed.ts +2 -0
  13. package/Models/DatabaseModels/Index.ts +18 -0
  14. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +26 -0
  15. package/Models/DatabaseModels/Project.ts +60 -0
  16. package/Models/DatabaseModels/RumApplication.ts +52 -1
  17. package/Models/DatabaseModels/ScheduledMaintenance.ts +55 -0
  18. package/Models/DatabaseModels/TelemetryException.ts +2 -0
  19. package/Models/DatabaseModels/UserProjectSsoConsent.ts +146 -0
  20. package/Server/Infrastructure/Postgres/SchemaMigrations/1794800000000-AddSessionReplaySameOriginTracePropagation.ts +28 -0
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/1794900000000-AddIncidentAlert.ts +89 -0
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/1795000000000-AddDatabaseServerTables.ts +673 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/1795100000000-AddUserProjectSsoConsent.ts +51 -0
  24. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  25. package/Server/Middleware/MultipartFormData.ts +1 -1
  26. package/Server/Middleware/TelemetryIngest.ts +15 -8
  27. package/Server/Services/AlertReminderRuleService.ts +100 -24
  28. package/Server/Services/DatabaseServerEndpointService.ts +895 -0
  29. package/Server/Services/DatabaseServerFeedService.ts +128 -0
  30. package/Server/Services/DatabaseServerLabelRuleEngineService.ts +340 -0
  31. package/Server/Services/DatabaseServerLabelRuleService.ts +14 -0
  32. package/Server/Services/DatabaseServerOwnerRuleEngineService.ts +425 -0
  33. package/Server/Services/DatabaseServerOwnerRuleService.ts +14 -0
  34. package/Server/Services/DatabaseServerOwnerTeamService.ts +180 -0
  35. package/Server/Services/DatabaseServerOwnerUserService.ts +173 -0
  36. package/Server/Services/DatabaseServerService.ts +4546 -0
  37. package/Server/Services/DatabaseService.ts +14 -8
  38. package/Server/Services/DockerResourceService.ts +43 -2
  39. package/Server/Services/IncidentAlertService.ts +1811 -0
  40. package/Server/Services/IncidentReminderRuleService.ts +103 -23
  41. package/Server/Services/IncidentService.ts +210 -10
  42. package/Server/Services/IncidentStateTimelineService.ts +24 -0
  43. package/Server/Services/Index.ts +18 -0
  44. package/Server/Services/InventoryItemService.ts +113 -5
  45. package/Server/Services/IoTDeviceService.ts +145 -37
  46. package/Server/Services/OpenTelemetryIngestService.ts +19 -0
  47. package/Server/Services/PodmanResourceService.ts +43 -2
  48. package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +107 -23
  49. package/Server/Services/ServiceService.ts +1 -1
  50. package/Server/Services/TelemetryUsageBillingService.ts +29 -2
  51. package/Server/Services/UserProjectSsoConsentService.ts +74 -0
  52. package/Server/Services/UserService.ts +14 -1
  53. package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +18 -0
  54. package/Server/Types/Database/QueryHelper.ts +30 -1
  55. package/Server/Utils/AI/Toolbox/ResourceTools.ts +69 -1
  56. package/Server/Utils/Database/AffectedResourceRelations.ts +6 -0
  57. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +188 -6
  58. package/Server/Utils/Monitor/MonitorAlert.ts +28 -1
  59. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +2262 -755
  60. package/Server/Utils/Monitor/MonitorIncident.ts +28 -1
  61. package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +268 -6
  62. package/Server/Utils/Monitor/MonitorResource.ts +47 -11
  63. package/Server/Utils/Monitor/MonitorResourceContext.ts +1 -0
  64. package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +239 -21
  65. package/Server/Utils/Monitor/PerSeriesResolutionRootCause.ts +43 -0
  66. package/Server/Utils/Monitor/SeriesResourceLabels.ts +291 -0
  67. package/Server/Utils/Monitor/SeriesResourceLinker.ts +111 -12
  68. package/Server/Utils/Rules/RuleRun/RuleRunRegistry.ts +25 -0
  69. package/Server/Utils/SessionReplay/SessionReplayGateCache.ts +24 -2
  70. package/Server/Utils/StartServer.ts +26 -6
  71. package/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.ts +2 -0
  72. package/Server/Utils/Telemetry/DatabaseEndpointDiscovery.ts +688 -0
  73. package/Server/Utils/Telemetry/EntityRegistry.ts +5 -1
  74. package/Server/Utils/Telemetry/LogExceptionExtractor.ts +18 -1
  75. package/Server/Utils/Telemetry/ResourceEntityFilter.ts +175 -12
  76. package/Server/Utils/Telemetry/ResourceFacetResolver.ts +12 -0
  77. package/Server/Utils/Telemetry/ServiceDependencyDiscovery.ts +606 -36
  78. package/Server/Utils/Telemetry/Telemetry.ts +16 -0
  79. package/Server/Utils/Telemetry/TelemetryEntity.ts +22 -22
  80. package/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.ts +16 -10
  81. package/Tests/App/Accounts/SignedInRedirect.test.tsx +241 -0
  82. package/Tests/App/AdminDashboard/AdminHeaderSmallScreens.test.tsx +221 -4
  83. package/Tests/App/Dashboard/AIInsightsResourcePageContext.test.ts +42 -0
  84. package/Tests/App/Dashboard/AffectedResourcesDisplay.test.tsx +100 -0
  85. package/Tests/App/Dashboard/AffectedResourcesPicker.test.tsx +86 -0
  86. package/Tests/App/Dashboard/AffectedResourcesPickerHiddenTypes.test.tsx +2 -0
  87. package/Tests/App/Dashboard/AffectedResourcesSummaryStep.test.tsx +19 -0
  88. package/Tests/App/Dashboard/BreadcrumbCoverage.test.tsx +14 -0
  89. package/Tests/App/Dashboard/BulkIncidentLinkActions.test.tsx +869 -0
  90. package/Tests/App/Dashboard/CephMetricTooltips.test.tsx +1777 -0
  91. package/Tests/App/Dashboard/CloudFleetSummary.test.ts +8 -0
  92. package/Tests/App/Dashboard/CloudMetricTooltips.test.tsx +887 -0
  93. package/Tests/App/Dashboard/ContainerHostMetricTooltips.test.tsx +1309 -0
  94. package/Tests/App/Dashboard/CorrelateFilterBuilder.test.tsx +26 -1
  95. package/Tests/App/Dashboard/DashboardAppSsoError.test.tsx +501 -0
  96. package/Tests/App/Dashboard/DashboardHeaderRequests.test.tsx +64 -1
  97. package/Tests/App/Dashboard/DashboardHeaderSmallScreens.test.tsx +178 -18
  98. package/Tests/App/Dashboard/DashboardMasterPageSsoRedirect.test.tsx +444 -0
  99. package/Tests/App/Dashboard/DashboardNavBarForeignHiddenRule.test.tsx +573 -0
  100. package/Tests/App/Dashboard/DatabaseChartAxes.test.tsx +431 -0
  101. package/Tests/App/Dashboard/DatabaseContainerDetailBadge.test.tsx +249 -0
  102. package/Tests/App/Dashboard/DatabaseDashboardE2EFixes.test.ts +681 -0
  103. package/Tests/App/Dashboard/DatabaseDocumentationMarkdown.test.ts +1801 -0
  104. package/Tests/App/Dashboard/DatabaseFleetSummaryRefresh.test.tsx +280 -0
  105. package/Tests/App/Dashboard/DatabaseFormHelpers.test.tsx +321 -0
  106. package/Tests/App/Dashboard/DatabaseMetricMonitorLink.test.tsx +795 -0
  107. package/Tests/App/Dashboard/DatabaseOverviewHeader.test.tsx +580 -0
  108. package/Tests/App/Dashboard/DatabaseRecommendationsEngineMetrics.test.ts +270 -0
  109. package/Tests/App/Dashboard/DatabaseServerComponents.test.tsx +1486 -0
  110. package/Tests/App/Dashboard/DatabaseServerEngineMetricsFilter.test.ts +223 -0
  111. package/Tests/App/Dashboard/DatabaseServerPresentation.test.ts +435 -0
  112. package/Tests/App/Dashboard/DatabaseServerSummary.test.ts +186 -0
  113. package/Tests/App/Dashboard/DatabaseServerTelemetryQueries.test.ts +1553 -0
  114. package/Tests/App/Dashboard/DatabaseTableTruncation.test.tsx +326 -0
  115. package/Tests/App/Dashboard/DatabaseTelemetryScope.test.ts +512 -0
  116. package/Tests/App/Dashboard/DatabaseTelemetryTabs.test.tsx +774 -0
  117. package/Tests/App/Dashboard/DatabaseViewLayout.test.tsx +233 -0
  118. package/Tests/App/Dashboard/DatabaseWorkloadBadge.test.tsx +972 -0
  119. package/Tests/App/Dashboard/DiscoveryReviewInventoryRefresh.test.tsx +5 -0
  120. package/Tests/App/Dashboard/DiscoveryReviewUnnamedHostHint.test.tsx +1061 -0
  121. package/Tests/App/Dashboard/DiscoveryScanLivePage.test.tsx +39 -0
  122. package/Tests/App/Dashboard/DockerSwarmClustersListTooltips.test.tsx +414 -0
  123. package/Tests/App/Dashboard/DockerSwarmMetricTooltips.test.ts +796 -0
  124. package/Tests/App/Dashboard/DockerSwarmOverviewTooltips.test.tsx +747 -0
  125. package/Tests/App/Dashboard/EventOverlayScope.test.ts +147 -0
  126. package/Tests/App/Dashboard/EventOverlayScopeHook.test.tsx +1 -0
  127. package/Tests/App/Dashboard/ExceptionMonitorEnvironmentFilter.test.tsx +38 -18
  128. package/Tests/App/Dashboard/HostDetailViewTooltips.test.tsx +725 -0
  129. package/Tests/App/Dashboard/HostListColumnTooltips.test.tsx +472 -0
  130. package/Tests/App/Dashboard/HostMetricTooltips.test.ts +709 -0
  131. package/Tests/App/Dashboard/HostOverviewTooltips.test.tsx +698 -0
  132. package/Tests/App/Dashboard/HostTooltipHarness.ts +124 -0
  133. package/Tests/App/Dashboard/HostsListTooltips.test.tsx +395 -0
  134. package/Tests/App/Dashboard/IncidentAlertLinkDialog.test.tsx +691 -0
  135. package/Tests/App/Dashboard/IncidentAlertLinkHelpers.test.ts +458 -0
  136. package/Tests/App/Dashboard/IncidentAlertLinkPages.test.tsx +828 -0
  137. package/Tests/App/Dashboard/IncidentAlertLinkSideMenus.test.tsx +231 -0
  138. package/Tests/App/Dashboard/IncidentCreateFromAlerts.test.tsx +689 -0
  139. package/Tests/App/Dashboard/IoTMetricTooltips.test.tsx +1123 -0
  140. package/Tests/App/Dashboard/KubernetesClusterMetricTooltips.test.ts +837 -0
  141. package/Tests/App/Dashboard/KubernetesClusterOverviewTooltips.test.tsx +699 -0
  142. package/Tests/App/Dashboard/KubernetesContainersTabTooltips.test.tsx +320 -0
  143. package/Tests/App/Dashboard/KubernetesCostTooltips.test.tsx +502 -0
  144. package/Tests/App/Dashboard/KubernetesInsightsTooltips.test.tsx +222 -0
  145. package/Tests/App/Dashboard/KubernetesResourceMetricTooltips.test.ts +561 -0
  146. package/Tests/App/Dashboard/KubernetesResourcePagesTooltips.test.tsx +1168 -0
  147. package/Tests/App/Dashboard/LinkIncidentAlertModal.test.tsx +154 -0
  148. package/Tests/App/Dashboard/LogsResourceFacetChips.test.tsx +1 -0
  149. package/Tests/App/Dashboard/MetricDescriptionRules.ts +170 -0
  150. package/Tests/App/Dashboard/MetricDescriptionsCatalog.test.ts +206 -0
  151. package/Tests/App/Dashboard/MetricDescriptionsConsistency.test.ts +275 -0
  152. package/Tests/App/Dashboard/MetricsViewerDrillDown.test.tsx +310 -0
  153. package/Tests/App/Dashboard/MetricsViewerEntityScopedRows.test.tsx +495 -0
  154. package/Tests/App/Dashboard/MonitorCreateFromMonitorBackedDevice.test.tsx +132 -1
  155. package/Tests/App/Dashboard/NavigationSearchKeywords.test.tsx +5 -0
  156. package/Tests/App/Dashboard/NetworkDeviceTooltips.test.tsx +852 -0
  157. package/Tests/App/Dashboard/NetworkDiagnosticsTooltips.test.tsx +556 -0
  158. package/Tests/App/Dashboard/NetworkMetricTooltips.test.ts +1348 -0
  159. package/Tests/App/Dashboard/NetworkSiteTooltips.test.tsx +679 -0
  160. package/Tests/App/Dashboard/ProductOrientation.test.tsx +4 -3
  161. package/Tests/App/Dashboard/ProxmoxMetricTooltips.test.ts +592 -0
  162. package/Tests/App/Dashboard/ProxmoxOverviewTooltips.test.tsx +1002 -0
  163. package/Tests/App/Dashboard/ProxmoxResourcePageTooltips.test.tsx +923 -0
  164. package/Tests/App/Dashboard/RecommendationsLoadedContext.test.tsx +349 -0
  165. package/Tests/App/Dashboard/ResourceArchiveSettings.test.tsx +62 -0
  166. package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +8 -1
  167. package/Tests/App/Dashboard/ResourceFeedPagesFilterSort.test.tsx +14 -0
  168. package/Tests/App/Dashboard/ResourceOverviewTileTooltips.test.tsx +1066 -0
  169. package/Tests/App/Dashboard/RumOverviewPage.test.tsx +1195 -0
  170. package/Tests/App/Dashboard/ScheduledMaintenanceOverviewPage.test.tsx +2 -0
  171. package/Tests/App/Dashboard/ServerlessMetricTooltips.test.tsx +474 -0
  172. package/Tests/App/Dashboard/ServiceMapDatabaseLink.test.tsx +1085 -0
  173. package/Tests/App/Dashboard/ServiceMetricTooltips.test.tsx +772 -0
  174. package/Tests/App/Dashboard/SessionReplayAuditTable.test.tsx +56 -1
  175. package/Tests/App/Dashboard/TelemetryMetricsSignals.test.ts +1207 -0
  176. package/Tests/App/Dashboard/TelemetryResourceRetentionSettings.test.tsx +10 -0
  177. package/Tests/App/Dashboard/TelemetryResourceTabTooltips.test.tsx +437 -0
  178. package/Tests/App/Dashboard/TracesResourceFacets.test.tsx +2 -1
  179. package/Tests/App/Dashboard/VMwareMetricTooltips.test.ts +801 -0
  180. package/Tests/App/Dashboard/VMwareOverviewTooltips.test.tsx +601 -0
  181. package/Tests/App/Dashboard/VMwareResourcePagesTooltips.test.tsx +646 -0
  182. package/Tests/App/Dashboard/VMwareTooltipHarness.ts +145 -0
  183. package/Tests/App/StatusPage/StatusPageHeaderForeignHiddenRule.test.tsx +284 -0
  184. package/Tests/ClassStrings.ts +178 -0
  185. package/Tests/Fixtures/MobilePasskeyUser.json +1 -2
  186. package/Tests/ForeignHiddenRuleGuard.ts +2152 -0
  187. package/Tests/Models/DatabaseModels/DatabaseServerModels.test.ts +2250 -0
  188. package/Tests/Models/DatabaseModels/IncidentAlertModel.test.ts +554 -0
  189. package/Tests/Models/DatabaseModels/ResourceFeedModels.test.ts +24 -5
  190. package/Tests/Models/DatabaseModels/SessionReplayModels.test.ts +117 -0
  191. package/Tests/Models/DatabaseModels/StaticRuleCriteriaInheritance.test.ts +4 -2
  192. package/Tests/RenderedMarkup.ts +518 -0
  193. package/Tests/ResponsiveVisibility.test.ts +490 -4
  194. package/Tests/ResponsiveVisibility.ts +505 -52
  195. package/Tests/Server/Infrastructure/Postgres/AddConfigurableRuleCriteriaMigration.test.ts +3 -0
  196. package/Tests/Server/Infrastructure/Postgres/AddDatabaseServerTablesMigration.test.ts +541 -0
  197. package/Tests/Server/Infrastructure/Postgres/AddIncidentAlertMigration.test.ts +341 -0
  198. package/Tests/Server/Infrastructure/Postgres/AddSessionReplaySameOriginTracePropagationMigration.test.ts +247 -0
  199. package/Tests/Server/Infrastructure/Postgres/AddUserProjectSsoConsentMigration.test.ts +234 -0
  200. package/Tests/Server/Services/ContainerSnapshotUpsertPostgres.test.ts +319 -0
  201. package/Tests/Server/Services/CrossProjectRelationWriteGuard.test.ts +13 -0
  202. package/Tests/Server/Services/DatabaseServerEndpointService.test.ts +2033 -0
  203. package/Tests/Server/Services/DatabaseServerFeedAndOwnerServices.test.ts +529 -0
  204. package/Tests/Server/Services/DatabaseServerLifecycle.test.ts +3302 -0
  205. package/Tests/Server/Services/DatabaseServerRegistries.test.ts +603 -0
  206. package/Tests/Server/Services/DatabaseServerRuleEngines.test.ts +754 -0
  207. package/Tests/Server/Services/DatabaseServerService.test.ts +3558 -0
  208. package/Tests/Server/Services/DatabaseServerSqlPostgres.test.ts +2045 -0
  209. package/Tests/Server/Services/DatabaseServiceUpdateColumnsIfUnlockedPostgres.test.ts +362 -0
  210. package/Tests/Server/Services/DatabaseServiceUpdateColumnsIfUnlockedReply.test.ts +210 -0
  211. package/Tests/Server/Services/HookFreeWriteLengthClamp.test.ts +18 -0
  212. package/Tests/Server/Services/IncidentAlertPostgres.test.ts +903 -0
  213. package/Tests/Server/Services/IncidentAlertRegistration.test.ts +96 -0
  214. package/Tests/Server/Services/IncidentAlertService.test.ts +2225 -0
  215. package/Tests/Server/Services/IncidentAlertSloLinkSurvivesEdit.test.ts +2 -0
  216. package/Tests/Server/Services/IncidentAlertStateCascade.test.ts +970 -0
  217. package/Tests/Server/Services/IncidentCreateFromAlerts.test.ts +1284 -0
  218. package/Tests/Server/Services/IncomingCallPolicyEscalationRuleTarget.test.ts +225 -0
  219. package/Tests/Server/Services/InventoryItemDisplayName.test.ts +280 -2
  220. package/Tests/Server/Services/InventoryUpsertSchemaParity.test.ts +8 -2
  221. package/Tests/Server/Services/IoTDeviceLatestMetricsPostgres.test.ts +689 -0
  222. package/Tests/Server/Services/IoTDeviceService.test.ts +379 -0
  223. package/Tests/Server/Services/LatestMetricsValuesShape.test.ts +360 -0
  224. package/Tests/Server/Services/LlmModelPriceService.test.ts +402 -0
  225. package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +7 -1
  226. package/Tests/Server/Services/OwnerRowUniqueness.test.ts +61 -9
  227. package/Tests/Server/Services/ReminderRuleLookupPostgres.test.ts +2250 -0
  228. package/Tests/Server/Services/ReminderRuleRefreshOpenSubjectsPaging.test.ts +653 -0
  229. package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +68 -20
  230. package/Tests/Server/Services/StaticRuleCriteriaRuntimeCoverage.test.ts +3 -3
  231. package/Tests/Server/Services/TelemetryResourceFacetCounting.test.ts +9 -0
  232. package/Tests/Server/Services/UserProjectSsoConsentPostgres.test.ts +153 -0
  233. package/Tests/Server/Services/UserProjectSsoConsentService.test.ts +192 -0
  234. package/Tests/Server/Services/UserServiceFirstMasterAdminElection.test.ts +71 -0
  235. package/Tests/Server/Services/UserSignupIdTakeoverPostgres.test.ts +238 -0
  236. package/Tests/Server/Services/WorkspaceNotificationSummaryHelpers.test.ts +592 -0
  237. package/Tests/Server/Types/Billing/PayAsYouGoMeteredAuthorization.test.ts +3 -0
  238. package/Tests/Server/Types/Database/EventOverlayScopePostgres.test.ts +1 -0
  239. package/Tests/Server/Types/Database/FeedEventTypeFilterQuery.test.ts +11 -0
  240. package/Tests/Server/Types/Database/Permissions/InfrastructureOwnershipScope.test.ts +8 -0
  241. package/Tests/Server/Types/Database/QueryHelperBooleanForCriteriaBackedRule.test.ts +1094 -0
  242. package/Tests/Server/Utils/AI/ResourceTools.test.ts +134 -0
  243. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +41 -0
  244. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaAnomalyUnits.test.ts +279 -9
  245. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaDisplayContext.test.ts +933 -0
  246. package/Tests/Server/Utils/Monitor/DatabaseMaintenanceSuppression.test.ts +582 -0
  247. package/Tests/Server/Utils/Monitor/DatabaseServerMonitorLinking.test.ts +753 -0
  248. package/Tests/Server/Utils/Monitor/MonitorActionTimestamps.test.ts +1 -0
  249. package/Tests/Server/Utils/Monitor/MonitorAlertCriteriaReferences.test.ts +1 -0
  250. package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +119 -0
  251. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +60 -25
  252. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorAffectedResourceEdgeCases.test.ts +1719 -0
  253. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorKubernetesAffectedResources.test.ts +1447 -0
  254. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorKubernetesRatioEmail.test.ts +352 -0
  255. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPlatformMetricUnits.test.ts +717 -0
  256. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPlatformRawScan.test.ts +2125 -0
  257. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPlatformSeriesAffectedResources.test.ts +1288 -0
  258. package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +1 -0
  259. package/Tests/Server/Utils/Monitor/MonitorIncidentCriteriaReferences.test.ts +1 -0
  260. package/Tests/Server/Utils/Monitor/MonitorIncidentMemberRoleMembership.test.ts +1 -0
  261. package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +88 -0
  262. package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +205 -0
  263. package/Tests/Server/Utils/Monitor/MonitorResourceContext.test.ts +62 -0
  264. package/Tests/Server/Utils/Monitor/MonitorResourceDatabaseMaintenance.test.ts +803 -0
  265. package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +133 -3
  266. package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +1 -0
  267. package/Tests/Server/Utils/Monitor/PerSeriesRecoveryResolution.test.ts +472 -1
  268. package/Tests/Server/Utils/Monitor/PerSeriesSecondEntityAlerting.test.ts +1 -0
  269. package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +236 -2
  270. package/Tests/Server/Utils/SeriesResourceLabels.test.ts +70 -0
  271. package/Tests/Server/Utils/SessionReplay/SessionReplayGateCachePolicy.test.ts +103 -0
  272. package/Tests/Server/Utils/StartServerProtobufContentType.test.ts +54 -0
  273. package/Tests/Server/Utils/Telemetry/DatabaseEndpointDiscovery.test.ts +1895 -0
  274. package/Tests/Server/Utils/Telemetry/EntityRegistry.test.ts +7 -0
  275. package/Tests/Server/Utils/Telemetry/LogExceptionExtractorSeverityGate.test.ts +90 -0
  276. package/Tests/Server/Utils/Telemetry/ResourceEntityFilter.test.ts +570 -0
  277. package/Tests/Server/Utils/Telemetry/ResourceFacetResolver.test.ts +97 -2
  278. package/Tests/Server/Utils/Telemetry/ServiceDependencyDiscovery.test.ts +1337 -0
  279. package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +295 -0
  280. package/Tests/Types/AI/AIResourceContext.test.ts +30 -0
  281. package/Tests/Types/DatabaseServer/DatabaseContainerClassifier.test.ts +3644 -0
  282. package/Tests/Types/DatabaseServer/DatabaseContainerCommand.test.ts +340 -0
  283. package/Tests/Types/DatabaseServer/DatabaseContainerCommandCorpus.ts +826 -0
  284. package/Tests/Types/DatabaseServer/DatabaseContainerCommandPostgres.test.ts +150 -0
  285. package/Tests/Types/DatabaseServer/DatabaseEndpoint.test.ts +2657 -0
  286. package/Tests/Types/DatabaseServer/DatabaseServerDiscoverySource.test.ts +64 -0
  287. package/Tests/Types/DatabaseServer/DatabaseServerEntityKeys.test.ts +952 -0
  288. package/Tests/Types/DatabaseServer/DatabaseServerMetricCatalog.test.ts +1161 -0
  289. package/Tests/Types/DatabaseServer/DatabaseSystem.test.ts +1514 -0
  290. package/Tests/Types/DatabaseServer/DatabaseTelemetryResolver.test.ts +1558 -0
  291. package/Tests/Types/Monitor/CephAlertTemplates.test.ts +255 -6
  292. package/Tests/Types/Monitor/DatabaseAlertTemplates.test.ts +2254 -0
  293. package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +298 -0
  294. package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +271 -0
  295. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +253 -9
  296. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +13 -5
  297. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +4 -2
  298. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +111 -2
  299. package/Tests/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.test.ts +61 -0
  300. package/Tests/Types/Monitor/SeriesContext/SeriesLabelDisplay.test.ts +114 -0
  301. package/Tests/Types/Monitor/Utils/KubernetesAgentEmittedMetrics.ts +181 -0
  302. package/Tests/Types/NetworkDevice/DiscoveredHostNamingStatus.test.ts +401 -0
  303. package/Tests/Types/Rum/WebVitals.test.ts +173 -0
  304. package/Tests/Types/Telemetry/ResourceEntityFacet.test.ts +4 -1
  305. package/Tests/Types/Telemetry/ResourceFacetCatalog.test.ts +24 -2
  306. package/Tests/UI/Components/Card.test.tsx +93 -2
  307. package/Tests/UI/Components/FeedOptions.test.ts +6 -0
  308. package/Tests/UI/Components/FeedOptionsButton.test.tsx +8 -1
  309. package/Tests/UI/Components/FieldLabelInfoCardTooltip.test.tsx +413 -0
  310. package/Tests/UI/Components/ForeignHiddenRuleResilience.test.tsx +1147 -0
  311. package/Tests/UI/Components/HeaderRightRail.test.tsx +41 -1
  312. package/Tests/UI/Components/InfoTooltip.test.tsx +242 -0
  313. package/Tests/UI/Components/LogsEntityNames.test.ts +16 -1
  314. package/Tests/UI/Components/LogsFacetSidebarHiddenFacets.test.tsx +7 -3
  315. package/Tests/UI/Components/ModelTable/BaseModelTableBulkDelete.test.tsx +207 -3
  316. package/Tests/UI/Components/ModelTable/BaseModelTableBulkDeleteVerb.test.tsx +367 -0
  317. package/Tests/UI/Components/ModelTable/BaseModelTableCreateButtonTitle.test.tsx +275 -0
  318. package/Tests/UI/Components/ResourceFacetConfigs.test.ts +2 -1
  319. package/Tests/UI/Components/RuleCriteria/RuleCriteriaModelTable.test.tsx +3 -3
  320. package/Tests/UI/Components/SrOnlyForeignRule.test.tsx +994 -0
  321. package/Tests/UI/Components/StatusPage/ResourceListSelection.test.tsx +34 -1
  322. package/Tests/UI/Components/TableHeaderTooltip.test.tsx +662 -0
  323. package/Tests/UI/Components/TelemetryFacetSidebarHiddenFacets.test.tsx +4 -1
  324. package/Tests/UI/ForeignHiddenRuleGuard.test.ts +1951 -0
  325. package/Tests/UI/Rum/PrivacySummaryCard.test.tsx +166 -9
  326. package/Tests/UI/Rum/RecordingHealthTooltips.test.tsx +447 -0
  327. package/Tests/UI/Rum/ReplayCorrelationPanel.test.tsx +164 -0
  328. package/Tests/UI/Rum/ReplayFrameCapture.test.ts +6750 -0
  329. package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +19 -1
  330. package/Tests/UI/Rum/ReplayRail.test.tsx +723 -12
  331. package/Tests/UI/Rum/ReplayRailDetail.test.tsx +86 -0
  332. package/Tests/UI/Rum/ReplayScreenshot.test.ts +2124 -0
  333. package/Tests/UI/Rum/ReplayScreenshotActions.test.tsx +3288 -0
  334. package/Tests/UI/Rum/ReplayStage.test.tsx +62 -0
  335. package/Tests/UI/Rum/ReplayStageOverlays.test.tsx +983 -2
  336. package/Tests/UI/Rum/ReplayTabSwitcher.test.tsx +19 -1
  337. package/Tests/UI/Rum/SessionReplaySettingsPolicyLoading.test.tsx +149 -0
  338. package/Tests/UI/Rum/SessionReplaySetupGuide.test.tsx +107 -6
  339. package/Tests/UI/Rum/SessionReplayUsersTableTooltips.test.tsx +330 -0
  340. package/Tests/UI/Rum/UserFlowTooltips.test.tsx +886 -0
  341. package/Tests/UI/TailwindPlayCdnForeignHiddenRule.test.ts +1005 -0
  342. package/Tests/UI/ThemeGroupHoverReveal.test.ts +847 -0
  343. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +80 -0
  344. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +23 -0
  345. package/Tests/UI/Utils/ModelAPISsoRedirect.test.ts +127 -0
  346. package/Tests/UI/Utils/Navigation.test.ts +102 -0
  347. package/Tests/UI/Utils/PermissionGate.test.ts +76 -0
  348. package/Tests/UI/Utils/Telemetry/TelemetryEntityNames.test.ts +23 -0
  349. package/Tests/Utils/Incident/IncidentFromAlerts.test.ts +696 -0
  350. package/Tests/Utils/LabelRuleImportExport.test.ts +5 -0
  351. package/Tests/Utils/MetricUnitUtil.test.ts +227 -2
  352. package/Tests/Utils/Monitor/MetricValueFormatter.test.ts +288 -2
  353. package/Tests/Utils/Monitor/PlatformResourceIdentityAndUnits.test.ts +1559 -0
  354. package/Tests/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.test.ts +2546 -0
  355. package/Tests/Utils/NetworkDiscovery/DiscoveredHostUtil.test.ts +315 -0
  356. package/Tests/Utils/NetworkDiscovery/DiscoveryReverseDnsChain.test.ts +336 -1
  357. package/Tests/Utils/NetworkDiscovery/NetbiosNameUtil.test.ts +244 -0
  358. package/Tests/Utils/Rum/SessionTraceState.test.ts +239 -0
  359. package/Tests/Utils/ValueFormatter.test.ts +50 -0
  360. package/Tests/tsconfig.json +16 -0
  361. package/Types/AI/AIResourceContext.ts +7 -0
  362. package/Types/Dashboard/DashboardTemplates.ts +2 -1
  363. package/Types/DatabaseServer/DatabaseConnectionSpan.ts +77 -0
  364. package/Types/DatabaseServer/DatabaseContainerClassifier.ts +2068 -0
  365. package/Types/DatabaseServer/DatabaseContainerCommand.ts +801 -0
  366. package/Types/DatabaseServer/DatabaseEndpoint.ts +1943 -0
  367. package/Types/DatabaseServer/DatabaseServerDiscoverySource.ts +68 -0
  368. package/Types/DatabaseServer/DatabaseServerMetricCatalog.ts +966 -0
  369. package/Types/DatabaseServer/DatabaseSystem.ts +2124 -0
  370. package/Types/DatabaseServer/DatabaseTelemetryResolver.ts +555 -0
  371. package/Types/Email/EmailTemplateType.ts +1 -0
  372. package/Types/Incident/IncidentAlertLink.ts +38 -0
  373. package/Types/Monitor/CephAlertTemplates.ts +18 -0
  374. package/Types/Monitor/DatabaseAlertTemplates.ts +2020 -0
  375. package/Types/Monitor/KubernetesAlertTemplates.ts +64 -24
  376. package/Types/Monitor/KubernetesMetricCatalog.ts +118 -19
  377. package/Types/Monitor/MetricMonitor/MetricCriteriaContext.ts +14 -0
  378. package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +93 -10
  379. package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +109 -8
  380. package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +36 -7
  381. package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +43 -2
  382. package/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.ts +41 -6
  383. package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +26 -0
  384. package/Types/NetworkDevice/DiscoveredHostNamingStatus.ts +147 -0
  385. package/Types/Permission.ts +315 -0
  386. package/Types/Probe/ProbeApiIngestResponse.ts +8 -0
  387. package/Types/Rules/RuleCriteriaFieldRegistry.ts +10 -0
  388. package/Types/Rules/RuleRun.ts +12 -0
  389. package/Types/Rum/SessionReplay.ts +25 -6
  390. package/Types/Rum/WebVitals.ts +52 -0
  391. package/Types/Telemetry/EntityType.ts +23 -0
  392. package/Types/Telemetry/ResourceFacetCatalog.ts +14 -0
  393. package/Types/Telemetry/ServiceType.ts +8 -0
  394. package/UI/Components/Banner/Banner.tsx +1 -1
  395. package/UI/Components/Card/Card.tsx +1 -1
  396. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +2 -2
  397. package/UI/Components/Charts/Line/LineChart.tsx +7 -0
  398. package/UI/Components/CommandPalette/CommandPalette.tsx +1 -1
  399. package/UI/Components/Date/StartAndEndDate.tsx +5 -5
  400. package/UI/Components/Detail/FieldLabel.tsx +8 -0
  401. package/UI/Components/Diagram/HorizontalStepChain.tsx +1 -1
  402. package/UI/Components/Feed/FeedOptionsButton.tsx +1 -1
  403. package/UI/Components/Forms/BasicForm.tsx +1 -1
  404. package/UI/Components/Header/Header.tsx +1 -1
  405. package/UI/Components/Header/HeaderIconDropdownButton.tsx +1 -1
  406. package/UI/Components/HeaderAlert/HeaderAlert.tsx +1 -1
  407. package/UI/Components/InfoCard/InfoCard.tsx +47 -1
  408. package/UI/Components/LogsViewer/components/FacetValueRow.tsx +1 -1
  409. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +1 -1
  410. package/UI/Components/Modal/ModalFooter.tsx +1 -1
  411. package/UI/Components/ModelDetail/CardModelDetail.tsx +2 -2
  412. package/UI/Components/ModelTable/BaseModelTable.tsx +99 -21
  413. package/UI/Components/ModelTable/Column.ts +5 -0
  414. package/UI/Components/Navbar/NavBar.tsx +9 -2
  415. package/UI/Components/Navbar/NavBarMenuModal.tsx +2 -2
  416. package/UI/Components/Page/Page.tsx +1 -1
  417. package/UI/Components/Pagination/Pagination.tsx +3 -3
  418. package/UI/Components/ProgressButtons/ProgressButtonItem.tsx +1 -1
  419. package/UI/Components/SideMenu/SideMenu.tsx +4 -1
  420. package/UI/Components/StatusPage/ResourceGroupNavigator.tsx +4 -2
  421. package/UI/Components/StatusPage/ResourceList.tsx +6 -6
  422. package/UI/Components/Table/TableHeader.tsx +47 -2
  423. package/UI/Components/Table/Types/Column.ts +7 -0
  424. package/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.tsx +1 -1
  425. package/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.tsx +1 -1
  426. package/UI/Components/Tooltip/InfoTooltip.tsx +78 -0
  427. package/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.tsx +1 -1
  428. package/UI/Components/Workflow/ComponentsModal.tsx +2 -2
  429. package/UI/Components/Workflow/StepTraceViewer.tsx +1 -1
  430. package/UI/Styles/Theme.css +8 -1
  431. package/UI/Utils/Navigation.ts +89 -42
  432. package/UI/Utils/PermissionGate.ts +11 -2
  433. package/UI/Utils/Telemetry/TelemetryEntityNames.ts +7 -0
  434. package/UI/Utils/TelemetryService.ts +4 -3
  435. package/Utils/Incident/IncidentFromAlerts.ts +516 -0
  436. package/Utils/LabelRuleImportExport.ts +2 -0
  437. package/Utils/MetricUnitUtil.ts +103 -11
  438. package/Utils/Monitor/MetricValueFormatter.ts +66 -13
  439. package/Utils/Monitor/PlatformMetricUnitUtil.ts +215 -0
  440. package/Utils/Monitor/PlatformResourceIdentity.ts +514 -0
  441. package/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.ts +425 -0
  442. package/Utils/NetworkDiscovery/DiscoveredHostUtil.ts +32 -0
  443. package/Utils/NetworkDiscovery/NetbiosNameUtil.ts +73 -0
  444. package/Utils/Rum/SessionTraceState.ts +212 -0
  445. package/Utils/Telemetry/DatabaseServerEntityKeys.ts +275 -0
  446. package/Utils/Telemetry/EntityKey.ts +176 -0
  447. package/Utils/ValueFormatter.ts +16 -0
  448. package/build/dist/Models/DatabaseModels/Alert.js +54 -0
  449. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  450. package/build/dist/Models/DatabaseModels/AlertFeed.js +2 -0
  451. package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
  452. package/build/dist/Models/DatabaseModels/DatabaseServer.js +1683 -0
  453. package/build/dist/Models/DatabaseModels/DatabaseServer.js.map +1 -0
  454. package/build/dist/Models/DatabaseModels/DatabaseServerEndpoint.js +559 -0
  455. package/build/dist/Models/DatabaseModels/DatabaseServerEndpoint.js.map +1 -0
  456. package/build/dist/Models/DatabaseModels/DatabaseServerFeed.js +648 -0
  457. package/build/dist/Models/DatabaseModels/DatabaseServerFeed.js.map +1 -0
  458. package/build/dist/Models/DatabaseModels/DatabaseServerLabelRule.js +522 -0
  459. package/build/dist/Models/DatabaseModels/DatabaseServerLabelRule.js.map +1 -0
  460. package/build/dist/Models/DatabaseModels/DatabaseServerOwnerRule.js +603 -0
  461. package/build/dist/Models/DatabaseModels/DatabaseServerOwnerRule.js.map +1 -0
  462. package/build/dist/Models/DatabaseModels/DatabaseServerOwnerTeam.js +506 -0
  463. package/build/dist/Models/DatabaseModels/DatabaseServerOwnerTeam.js.map +1 -0
  464. package/build/dist/Models/DatabaseModels/DatabaseServerOwnerUser.js +505 -0
  465. package/build/dist/Models/DatabaseModels/DatabaseServerOwnerUser.js.map +1 -0
  466. package/build/dist/Models/DatabaseModels/Incident.js +54 -0
  467. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  468. package/build/dist/Models/DatabaseModels/IncidentAlert.js +553 -0
  469. package/build/dist/Models/DatabaseModels/IncidentAlert.js.map +1 -0
  470. package/build/dist/Models/DatabaseModels/IncidentFeed.js +2 -0
  471. package/build/dist/Models/DatabaseModels/IncidentFeed.js.map +1 -1
  472. package/build/dist/Models/DatabaseModels/Index.js +18 -0
  473. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  474. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
  475. package/build/dist/Models/DatabaseModels/Project.js +62 -0
  476. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  477. package/build/dist/Models/DatabaseModels/RumApplication.js +53 -1
  478. package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
  479. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +54 -0
  480. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  481. package/build/dist/Models/DatabaseModels/TelemetryException.js +2 -0
  482. package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
  483. package/build/dist/Models/DatabaseModels/UserProjectSsoConsent.js +162 -0
  484. package/build/dist/Models/DatabaseModels/UserProjectSsoConsent.js.map +1 -0
  485. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794800000000-AddSessionReplaySameOriginTracePropagation.js +20 -0
  486. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794800000000-AddSessionReplaySameOriginTracePropagation.js.map +1 -0
  487. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794900000000-AddIncidentAlert.js +42 -0
  488. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794900000000-AddIncidentAlert.js.map +1 -0
  489. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795000000000-AddDatabaseServerTables.js +240 -0
  490. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795000000000-AddDatabaseServerTables.js.map +1 -0
  491. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795100000000-AddUserProjectSsoConsent.js +26 -0
  492. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795100000000-AddUserProjectSsoConsent.js.map +1 -0
  493. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  494. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  495. package/build/dist/Server/Middleware/MultipartFormData.js +1 -1
  496. package/build/dist/Server/Middleware/TelemetryIngest.js +15 -8
  497. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  498. package/build/dist/Server/Services/AlertReminderRuleService.js +72 -23
  499. package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -1
  500. package/build/dist/Server/Services/DatabaseServerEndpointService.js +694 -0
  501. package/build/dist/Server/Services/DatabaseServerEndpointService.js.map +1 -0
  502. package/build/dist/Server/Services/DatabaseServerFeedService.js +110 -0
  503. package/build/dist/Server/Services/DatabaseServerFeedService.js.map +1 -0
  504. package/build/dist/Server/Services/DatabaseServerLabelRuleEngineService.js +272 -0
  505. package/build/dist/Server/Services/DatabaseServerLabelRuleEngineService.js.map +1 -0
  506. package/build/dist/Server/Services/DatabaseServerLabelRuleService.js +13 -0
  507. package/build/dist/Server/Services/DatabaseServerLabelRuleService.js.map +1 -0
  508. package/build/dist/Server/Services/DatabaseServerOwnerRuleEngineService.js +340 -0
  509. package/build/dist/Server/Services/DatabaseServerOwnerRuleEngineService.js.map +1 -0
  510. package/build/dist/Server/Services/DatabaseServerOwnerRuleService.js +13 -0
  511. package/build/dist/Server/Services/DatabaseServerOwnerRuleService.js.map +1 -0
  512. package/build/dist/Server/Services/DatabaseServerOwnerTeamService.js +160 -0
  513. package/build/dist/Server/Services/DatabaseServerOwnerTeamService.js.map +1 -0
  514. package/build/dist/Server/Services/DatabaseServerOwnerUserService.js +153 -0
  515. package/build/dist/Server/Services/DatabaseServerOwnerUserService.js.map +1 -0
  516. package/build/dist/Server/Services/DatabaseServerService.js +3272 -0
  517. package/build/dist/Server/Services/DatabaseServerService.js.map +1 -0
  518. package/build/dist/Server/Services/DatabaseService.js +8 -4
  519. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  520. package/build/dist/Server/Services/DockerResourceService.js +30 -3
  521. package/build/dist/Server/Services/DockerResourceService.js.map +1 -1
  522. package/build/dist/Server/Services/IncidentAlertService.js +1370 -0
  523. package/build/dist/Server/Services/IncidentAlertService.js.map +1 -0
  524. package/build/dist/Server/Services/IncidentReminderRuleService.js +73 -23
  525. package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -1
  526. package/build/dist/Server/Services/IncidentService.js +164 -12
  527. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  528. package/build/dist/Server/Services/IncidentStateTimelineService.js +21 -0
  529. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  530. package/build/dist/Server/Services/Index.js +18 -0
  531. package/build/dist/Server/Services/Index.js.map +1 -1
  532. package/build/dist/Server/Services/InventoryItemService.js +88 -5
  533. package/build/dist/Server/Services/InventoryItemService.js.map +1 -1
  534. package/build/dist/Server/Services/IoTDeviceService.js +111 -24
  535. package/build/dist/Server/Services/IoTDeviceService.js.map +1 -1
  536. package/build/dist/Server/Services/OpenTelemetryIngestService.js +24 -9
  537. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  538. package/build/dist/Server/Services/PodmanResourceService.js +30 -3
  539. package/build/dist/Server/Services/PodmanResourceService.js.map +1 -1
  540. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +75 -23
  541. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -1
  542. package/build/dist/Server/Services/ServiceService.js +1 -1
  543. package/build/dist/Server/Services/ServiceService.js.map +1 -1
  544. package/build/dist/Server/Services/TelemetryUsageBillingService.js +23 -2
  545. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  546. package/build/dist/Server/Services/UserProjectSsoConsentService.js +79 -0
  547. package/build/dist/Server/Services/UserProjectSsoConsentService.js.map +1 -0
  548. package/build/dist/Server/Services/UserService.js +13 -1
  549. package/build/dist/Server/Services/UserService.js.map +1 -1
  550. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +18 -0
  551. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
  552. package/build/dist/Server/Types/Database/QueryHelper.js +26 -1
  553. package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
  554. package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js +46 -0
  555. package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js.map +1 -1
  556. package/build/dist/Server/Utils/Database/AffectedResourceRelations.js +6 -0
  557. package/build/dist/Server/Utils/Database/AffectedResourceRelations.js.map +1 -1
  558. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +134 -13
  559. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  560. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +22 -6
  561. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  562. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +1489 -524
  563. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  564. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +22 -6
  565. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  566. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +196 -6
  567. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
  568. package/build/dist/Server/Utils/Monitor/MonitorResource.js +36 -9
  569. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  570. package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js +1 -0
  571. package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js.map +1 -1
  572. package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +175 -17
  573. package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -1
  574. package/build/dist/Server/Utils/Monitor/PerSeriesResolutionRootCause.js +29 -0
  575. package/build/dist/Server/Utils/Monitor/PerSeriesResolutionRootCause.js.map +1 -0
  576. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +211 -0
  577. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
  578. package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +82 -10
  579. package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -1
  580. package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js +25 -0
  581. package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js.map +1 -1
  582. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js +8 -0
  583. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js.map +1 -1
  584. package/build/dist/Server/Utils/StartServer.js +20 -4
  585. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  586. package/build/dist/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.js +2 -0
  587. package/build/dist/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.js.map +1 -1
  588. package/build/dist/Server/Utils/Telemetry/DatabaseEndpointDiscovery.js +442 -0
  589. package/build/dist/Server/Utils/Telemetry/DatabaseEndpointDiscovery.js.map +1 -0
  590. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +5 -1
  591. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
  592. package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js +15 -1
  593. package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js.map +1 -1
  594. package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js +121 -5
  595. package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js.map +1 -1
  596. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +12 -0
  597. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
  598. package/build/dist/Server/Utils/Telemetry/ServiceDependencyDiscovery.js +438 -36
  599. package/build/dist/Server/Utils/Telemetry/ServiceDependencyDiscovery.js.map +1 -1
  600. package/build/dist/Server/Utils/Telemetry/Telemetry.js +12 -0
  601. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  602. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +17 -18
  603. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  604. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js +16 -10
  605. package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js.map +1 -1
  606. package/build/dist/Types/AI/AIResourceContext.js +7 -0
  607. package/build/dist/Types/AI/AIResourceContext.js.map +1 -1
  608. package/build/dist/Types/Dashboard/DashboardTemplates.js +2 -1
  609. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  610. package/build/dist/Types/DatabaseServer/DatabaseConnectionSpan.js +71 -0
  611. package/build/dist/Types/DatabaseServer/DatabaseConnectionSpan.js.map +1 -0
  612. package/build/dist/Types/DatabaseServer/DatabaseContainerClassifier.js +1462 -0
  613. package/build/dist/Types/DatabaseServer/DatabaseContainerClassifier.js.map +1 -0
  614. package/build/dist/Types/DatabaseServer/DatabaseContainerCommand.js +691 -0
  615. package/build/dist/Types/DatabaseServer/DatabaseContainerCommand.js.map +1 -0
  616. package/build/dist/Types/DatabaseServer/DatabaseEndpoint.js +1407 -0
  617. package/build/dist/Types/DatabaseServer/DatabaseEndpoint.js.map +1 -0
  618. package/build/dist/Types/DatabaseServer/DatabaseServerDiscoverySource.js +60 -0
  619. package/build/dist/Types/DatabaseServer/DatabaseServerDiscoverySource.js.map +1 -0
  620. package/build/dist/Types/DatabaseServer/DatabaseServerMetricCatalog.js +804 -0
  621. package/build/dist/Types/DatabaseServer/DatabaseServerMetricCatalog.js.map +1 -0
  622. package/build/dist/Types/DatabaseServer/DatabaseSystem.js +1860 -0
  623. package/build/dist/Types/DatabaseServer/DatabaseSystem.js.map +1 -0
  624. package/build/dist/Types/DatabaseServer/DatabaseTelemetryResolver.js +406 -0
  625. package/build/dist/Types/DatabaseServer/DatabaseTelemetryResolver.js.map +1 -0
  626. package/build/dist/Types/Email/EmailTemplateType.js +1 -0
  627. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  628. package/build/dist/Types/Incident/IncidentAlertLink.js +34 -0
  629. package/build/dist/Types/Incident/IncidentAlertLink.js.map +1 -0
  630. package/build/dist/Types/Monitor/CephAlertTemplates.js +18 -0
  631. package/build/dist/Types/Monitor/CephAlertTemplates.js.map +1 -1
  632. package/build/dist/Types/Monitor/DatabaseAlertTemplates.js +1518 -0
  633. package/build/dist/Types/Monitor/DatabaseAlertTemplates.js.map +1 -0
  634. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +57 -24
  635. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
  636. package/build/dist/Types/Monitor/KubernetesMetricCatalog.js +104 -18
  637. package/build/dist/Types/Monitor/KubernetesMetricCatalog.js.map +1 -1
  638. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +80 -3
  639. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
  640. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +10 -3
  641. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
  642. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +29 -0
  643. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
  644. package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js +21 -6
  645. package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js.map +1 -1
  646. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +25 -0
  647. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -1
  648. package/build/dist/Types/NetworkDevice/DiscoveredHostNamingStatus.js +136 -0
  649. package/build/dist/Types/NetworkDevice/DiscoveredHostNamingStatus.js.map +1 -0
  650. package/build/dist/Types/Permission.js +276 -0
  651. package/build/dist/Types/Permission.js.map +1 -1
  652. package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js +10 -0
  653. package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js.map +1 -1
  654. package/build/dist/Types/Rules/RuleRun.js +4 -0
  655. package/build/dist/Types/Rules/RuleRun.js.map +1 -1
  656. package/build/dist/Types/Rum/WebVitals.js +25 -0
  657. package/build/dist/Types/Rum/WebVitals.js.map +1 -1
  658. package/build/dist/Types/Telemetry/EntityType.js +23 -0
  659. package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
  660. package/build/dist/Types/Telemetry/ResourceFacetCatalog.js +14 -0
  661. package/build/dist/Types/Telemetry/ResourceFacetCatalog.js.map +1 -1
  662. package/build/dist/Types/Telemetry/ServiceType.js +8 -0
  663. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
  664. package/build/dist/UI/Components/Banner/Banner.js +1 -1
  665. package/build/dist/UI/Components/Banner/Banner.js.map +1 -1
  666. package/build/dist/UI/Components/Card/Card.js +1 -1
  667. package/build/dist/UI/Components/Card/Card.js.map +1 -1
  668. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +2 -2
  669. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  670. package/build/dist/UI/Components/Charts/Line/LineChart.js +1 -1
  671. package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
  672. package/build/dist/UI/Components/CommandPalette/CommandPalette.js +1 -1
  673. package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -1
  674. package/build/dist/UI/Components/Date/StartAndEndDate.js +5 -5
  675. package/build/dist/UI/Components/Date/StartAndEndDate.js.map +1 -1
  676. package/build/dist/UI/Components/Detail/FieldLabel.js +2 -0
  677. package/build/dist/UI/Components/Detail/FieldLabel.js.map +1 -1
  678. package/build/dist/UI/Components/Diagram/HorizontalStepChain.js +1 -1
  679. package/build/dist/UI/Components/Diagram/HorizontalStepChain.js.map +1 -1
  680. package/build/dist/UI/Components/Feed/FeedOptionsButton.js +1 -1
  681. package/build/dist/UI/Components/Feed/FeedOptionsButton.js.map +1 -1
  682. package/build/dist/UI/Components/Forms/BasicForm.js +1 -1
  683. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  684. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -1
  685. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  686. package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js +1 -1
  687. package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js.map +1 -1
  688. package/build/dist/UI/Components/InfoCard/InfoCard.js +22 -1
  689. package/build/dist/UI/Components/InfoCard/InfoCard.js.map +1 -1
  690. package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js +1 -1
  691. package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js.map +1 -1
  692. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +1 -1
  693. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  694. package/build/dist/UI/Components/Modal/ModalFooter.js +1 -1
  695. package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
  696. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +2 -2
  697. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
  698. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +70 -18
  699. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  700. package/build/dist/UI/Components/Navbar/NavBar.js +9 -2
  701. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  702. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +2 -2
  703. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
  704. package/build/dist/UI/Components/Page/Page.js +1 -1
  705. package/build/dist/UI/Components/Page/Page.js.map +1 -1
  706. package/build/dist/UI/Components/Pagination/Pagination.js +3 -3
  707. package/build/dist/UI/Components/Pagination/Pagination.js.map +1 -1
  708. package/build/dist/UI/Components/ProgressButtons/ProgressButtonItem.js +1 -1
  709. package/build/dist/UI/Components/ProgressButtons/ProgressButtonItem.js.map +1 -1
  710. package/build/dist/UI/Components/SideMenu/SideMenu.js +4 -1
  711. package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
  712. package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js +3 -1
  713. package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js.map +1 -1
  714. package/build/dist/UI/Components/StatusPage/ResourceList.js +6 -6
  715. package/build/dist/UI/Components/StatusPage/ResourceList.js.map +1 -1
  716. package/build/dist/UI/Components/Table/TableHeader.js +18 -2
  717. package/build/dist/UI/Components/Table/TableHeader.js.map +1 -1
  718. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js +1 -1
  719. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js.map +1 -1
  720. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js +1 -1
  721. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js.map +1 -1
  722. package/build/dist/UI/Components/Tooltip/InfoTooltip.js +28 -0
  723. package/build/dist/UI/Components/Tooltip/InfoTooltip.js.map +1 -0
  724. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js +1 -1
  725. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js.map +1 -1
  726. package/build/dist/UI/Components/Workflow/ComponentsModal.js +2 -2
  727. package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
  728. package/build/dist/UI/Components/Workflow/StepTraceViewer.js +1 -1
  729. package/build/dist/UI/Components/Workflow/StepTraceViewer.js.map +1 -1
  730. package/build/dist/UI/Utils/Navigation.js +66 -33
  731. package/build/dist/UI/Utils/Navigation.js.map +1 -1
  732. package/build/dist/UI/Utils/PermissionGate.js +4 -2
  733. package/build/dist/UI/Utils/PermissionGate.js.map +1 -1
  734. package/build/dist/UI/Utils/Telemetry/TelemetryEntityNames.js +7 -0
  735. package/build/dist/UI/Utils/Telemetry/TelemetryEntityNames.js.map +1 -1
  736. package/build/dist/UI/Utils/TelemetryService.js +3 -2
  737. package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
  738. package/build/dist/Utils/Incident/IncidentFromAlerts.js +306 -0
  739. package/build/dist/Utils/Incident/IncidentFromAlerts.js.map +1 -0
  740. package/build/dist/Utils/LabelRuleImportExport.js +2 -0
  741. package/build/dist/Utils/LabelRuleImportExport.js.map +1 -1
  742. package/build/dist/Utils/MetricUnitUtil.js +77 -13
  743. package/build/dist/Utils/MetricUnitUtil.js.map +1 -1
  744. package/build/dist/Utils/Monitor/MetricValueFormatter.js +58 -13
  745. package/build/dist/Utils/Monitor/MetricValueFormatter.js.map +1 -1
  746. package/build/dist/Utils/Monitor/PlatformMetricUnitUtil.js +161 -0
  747. package/build/dist/Utils/Monitor/PlatformMetricUnitUtil.js.map +1 -0
  748. package/build/dist/Utils/Monitor/PlatformResourceIdentity.js +323 -0
  749. package/build/dist/Utils/Monitor/PlatformResourceIdentity.js.map +1 -0
  750. package/build/dist/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.js +270 -0
  751. package/build/dist/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.js.map +1 -0
  752. package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js +23 -0
  753. package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js.map +1 -1
  754. package/build/dist/Utils/NetworkDiscovery/NetbiosNameUtil.js +61 -0
  755. package/build/dist/Utils/NetworkDiscovery/NetbiosNameUtil.js.map +1 -1
  756. package/build/dist/Utils/Rum/SessionTraceState.js +154 -0
  757. package/build/dist/Utils/Rum/SessionTraceState.js.map +1 -0
  758. package/build/dist/Utils/Telemetry/DatabaseServerEntityKeys.js +178 -0
  759. package/build/dist/Utils/Telemetry/DatabaseServerEntityKeys.js.map +1 -0
  760. package/build/dist/Utils/Telemetry/EntityKey.js +133 -0
  761. package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
  762. package/build/dist/Utils/ValueFormatter.js +15 -0
  763. package/build/dist/Utils/ValueFormatter.js.map +1 -1
  764. package/package.json +1 -1
  765. package/tsconfig.tests.json +7 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlatformResourceIdentity.js","sourceRoot":"","sources":["../../../../Utils/Monitor/PlatformResourceIdentity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,270 @@
1
+ import { DiscoveredHostNetbiosStatus, DiscoveredHostReverseDnsStatus, readDiscoveredHostNetbiosStatus, readDiscoveredHostReverseDnsStatus, } from "../../Types/NetworkDevice/DiscoveredHostNamingStatus";
2
+ import { DiscoveryScanStatus } from "./DiscoveryScanStatus";
3
+ import { isNetbiosQueryableIPv4Address, normalizeNetbiosName, } from "./NetbiosNameUtil";
4
+ import { normalizeReverseDnsName } from "./ReverseDnsNameUtil";
5
+ import { ScanModeUtil } from "./ScanModeUtil";
6
+ export const UNNAMED_HOST_LABEL = "No name found";
7
+ export const NOT_YET_NAMED_HOST_LABEL = "Not named yet";
8
+ /*
9
+ * Said for a scan still sweeping. Names are looked up only after the sweep
10
+ * finishes (Probe/Jobs/Discovery/FetchScans.ts, scanWithDeadline), so every
11
+ * host a running scan has reported so far is unnamed by construction — the
12
+ * interesting question has not been asked yet.
13
+ */
14
+ export const IN_PROGRESS_EXPLANATION = "Names are looked up after the sweep finishes, so hosts found so far are listed by address. Open Review Results again when the scan completes.";
15
+ /*
16
+ * Said for a scan that failed. A sweep that misses its deadline or throws is
17
+ * reported without ever reaching the naming passes, so its hosts are the ones
18
+ * it had uploaded along the way — which carry no names by design.
19
+ */
20
+ export const FAILED_SCAN_EXPLANATION = "This scan stopped before it looked up names, so its hosts are listed by address. Run it again to name them.";
21
+ /*
22
+ * One sentence per code. None of them says how many times the probe asked:
23
+ * a retry has to fit in the naming pass's time budget, so "even on a retry"
24
+ * could be false for exactly the hosts a slow DNS server pushed past the
25
+ * deadline. The tip that follows these codes says to rescan, which is the
26
+ * part the operator can act on.
27
+ */
28
+ const REVERSE_DNS_SENTENCES = {
29
+ [DiscoveredHostReverseDnsStatus.NoRecord]: "Reverse DNS: the probe's DNS server has no PTR record for this address.",
30
+ [DiscoveredHostReverseDnsStatus.UnusableName]: "Reverse DNS: a PTR record came back, but it is not a valid hostname, so it was not used.",
31
+ [DiscoveredHostReverseDnsStatus.Timeout]: "Reverse DNS: the probe's DNS server did not answer in time.",
32
+ [DiscoveredHostReverseDnsStatus.ServerFailure]: "Reverse DNS: the probe's DNS server answered with a server failure (SERVFAIL).",
33
+ [DiscoveredHostReverseDnsStatus.Refused]: "Reverse DNS: the probe's DNS server refused the query.",
34
+ [DiscoveredHostReverseDnsStatus.Unreachable]: "Reverse DNS: the probe could not reach its DNS server.",
35
+ [DiscoveredHostReverseDnsStatus.Failed]: "Reverse DNS: the lookup failed on the probe.",
36
+ [DiscoveredHostReverseDnsStatus.SkippedTimeBudget]: "Reverse DNS: not looked up. The scan ran out of time for name lookups before reaching this address.",
37
+ [DiscoveredHostReverseDnsStatus.SkippedNoResolver]: "Reverse DNS: not looked up. The probe's DNS server was not answering, so it stopped asking.",
38
+ };
39
+ /*
40
+ * A row with no reverse-DNS code: stored by a probe older than the codes, or
41
+ * by one whose pass failed outright. Nothing on the row says which, or why,
42
+ * so this claims neither.
43
+ */
44
+ export const REVERSE_DNS_NOT_RECORDED_SENTENCE = "Reverse DNS: no name was recorded for this address.";
45
+ const NETBIOS_SENTENCES = {
46
+ [DiscoveredHostNetbiosStatus.NoReply]: "NetBIOS: no reply on UDP 137, which is usual for devices that are not Windows, or when a firewall blocks it.",
47
+ [DiscoveredHostNetbiosStatus.NoUsableName]: "NetBIOS: the device replied, but reported no usable name.",
48
+ [DiscoveredHostNetbiosStatus.SendFailed]: "NetBIOS: the query could not be sent from the probe.",
49
+ [DiscoveredHostNetbiosStatus.Skipped]: "NetBIOS: not asked. The lookup stopped before reaching this address.",
50
+ [DiscoveredHostNetbiosStatus.SkippedHostCap]: "NetBIOS: not asked. The scan reached the probe's NetBIOS host limit.",
51
+ [DiscoveredHostNetbiosStatus.SkippedIneligibleAddress]: "NetBIOS: not asked. Only private addresses are asked.",
52
+ [DiscoveredHostNetbiosStatus.SkippedGlobalProbe]: "NetBIOS: not asked. This scan ran on a global probe, and global probes never send NetBIOS queries.",
53
+ };
54
+ export const NETBIOS_OFF_SENTENCE = "NetBIOS: off for this scan.";
55
+ // NetBIOS was on, and yet the row carries no code: an older probe's row.
56
+ export const NETBIOS_NOT_RECORDED_SENTENCE = "NetBIOS: no name was recorded.";
57
+ export const SNMP_NOT_CHECKED_SENTENCE = "SNMP: not checked by this scan.";
58
+ export const SNMP_NO_ANSWER_SENTENCE = "SNMP: no answer with this scan's credentials.";
59
+ export const SNMP_NO_SYSNAME_SENTENCE = "SNMP: the device answered, but reported no name (sysName).";
60
+ /*
61
+ * The one piece of advice that fits the reverse-DNS code best, when any
62
+ * does. "No record" gets the one that matters most for the issue this came
63
+ * from: the probe resolves through ITS OWN DNS server, which need not be the
64
+ * one the operator checked with, so the comparison worth making is from where
65
+ * the probe resolves. That is inside its container or pod, not the machine
66
+ * under it (#3916): a pod's resolver is the cluster DNS, not the node's
67
+ * /etc/resolv.conf, and a Docker container's can differ from its host's too,
68
+ * so "from the probe's host" sent the operator to a lookup that could name
69
+ * the device while the probe's could not. The probe image ships nslookup
70
+ * (dnsutils, Probe/Dockerfile.tpl), so the advice can be followed as written.
71
+ */
72
+ export const NO_RECORD_TIP = "The probe uses its own DNS server, which may not be the one you checked with. Run nslookup on this address inside the probe's container or pod to compare.";
73
+ export const TRANSIENT_FAILURE_TIP = "Rescan to try again. If it keeps happening, check the DNS servers the probe uses, inside its container or pod.";
74
+ /*
75
+ * Offered when the scan left one or both of the ways of asking the DEVICE for
76
+ * its name switched off. Those are exactly the names the issue asked to see
77
+ * first — the one configured on the device — so saying where they come from
78
+ * is the useful answer to "but it has a hostname". Only the sources that were
79
+ * actually off, and would run if turned on, are named — for NetBIOS that
80
+ * means the probe is not a global one AND the address is one its lookup
81
+ * would query at all (isNetbiosQueryableIPv4Address).
82
+ */
83
+ export const ASK_THE_DEVICE_TIP = "Checking SNMP, or NetBIOS lookup for Windows hosts, asks the device for its own name.";
84
+ export const ASK_THE_DEVICE_SNMP_TIP = "Checking SNMP asks the device for its own name.";
85
+ export const ASK_THE_DEVICE_NETBIOS_TIP = "NetBIOS lookup asks Windows hosts for their own name.";
86
+ /*
87
+ * The codes that get TRANSIENT_FAILURE_TIP: the lookup failed rather than
88
+ * answered, so a rescan may name the host, and the DNS servers the probe's
89
+ * host uses are where to look when it does not.
90
+ *
91
+ * SkippedNoResolver is one of them although its address was never looked up
92
+ * (#3916). The probe stopped asking only because every lookup before it had
93
+ * failed in these same ways, so the advice is the same. Without it, the hosts
94
+ * a pass gave up on were the only failed lookups with nothing to check.
95
+ */
96
+ const TRANSIENT_REVERSE_DNS_STATUSES = new Set([
97
+ DiscoveredHostReverseDnsStatus.Timeout,
98
+ DiscoveredHostReverseDnsStatus.ServerFailure,
99
+ DiscoveredHostReverseDnsStatus.Refused,
100
+ DiscoveredHostReverseDnsStatus.Unreachable,
101
+ DiscoveredHostReverseDnsStatus.Failed,
102
+ DiscoveredHostReverseDnsStatus.SkippedNoResolver,
103
+ ]);
104
+ // A string with something in it besides whitespace.
105
+ function hasText(value) {
106
+ return typeof value === "string" && value.trim().length > 0;
107
+ }
108
+ /**
109
+ * True when the row would be named by something other than its address: a
110
+ * sysName, a usable PTR name or a usable NetBIOS name. Mirrors
111
+ * getDiscoveredHostFullName's order and its re-normalisation, so the hint is
112
+ * shown on exactly the rows whose name line is the address.
113
+ */
114
+ export function isDiscoveredHostNamed(host) {
115
+ return (hasText(host.sysName) ||
116
+ Boolean(normalizeReverseDnsName(host.dnsHostname)) ||
117
+ Boolean(normalizeNetbiosName(host.netbiosName)));
118
+ }
119
+ function describeSnmp(data) {
120
+ if (data.scan && !ScanModeUtil.isSnmpEnabled(data.scan)) {
121
+ return SNMP_NOT_CHECKED_SENTENCE;
122
+ }
123
+ if (data.host.snmpReachable === false) {
124
+ return SNMP_NO_ANSWER_SENTENCE;
125
+ }
126
+ /*
127
+ * Answered SNMP — or a row from before `snmpReachable` existed, when every
128
+ * host listed had answered it. Either way the host is unnamed, so whatever
129
+ * it said had no sysName in it.
130
+ */
131
+ if (data.scan || data.host.snmpReachable === true) {
132
+ return SNMP_NO_SYSNAME_SENTENCE;
133
+ }
134
+ return undefined;
135
+ }
136
+ function describeNetbios(data) {
137
+ if (data.status) {
138
+ return NETBIOS_SENTENCES[data.status];
139
+ }
140
+ // Without the scan there is no telling whether NetBIOS was ever on.
141
+ if (!data.scan) {
142
+ return undefined;
143
+ }
144
+ if (data.scan.isNetbiosLookupEnabled !== true) {
145
+ return NETBIOS_OFF_SENTENCE;
146
+ }
147
+ /*
148
+ * On, but no code: a row from a probe older than the codes. If the scan's
149
+ * probe is a global one, the lookup was skipped whatever that probe's
150
+ * version — the global-probe refusal predates the codes.
151
+ */
152
+ if (data.isGlobalProbe) {
153
+ return NETBIOS_SENTENCES[DiscoveredHostNetbiosStatus.SkippedGlobalProbe];
154
+ }
155
+ /*
156
+ * Likewise for an address outside the private and CGNAT ranges (#3916):
157
+ * the probe's refusal of those shipped in the same change as the
158
+ * isNetbiosLookupEnabled column, so no probe that honoured the setting
159
+ * ever asked one.
160
+ */
161
+ if (!data.isQueryableAddress) {
162
+ return NETBIOS_SENTENCES[DiscoveredHostNetbiosStatus.SkippedIneligibleAddress];
163
+ }
164
+ return NETBIOS_NOT_RECORDED_SENTENCE;
165
+ }
166
+ /**
167
+ * Why this discovered host has no name, or undefined when it has one (or has
168
+ * no address, which its row already explains).
169
+ *
170
+ * `isGlobalProbe` is whether the scan's probe is a global one, when the
171
+ * caller knows. It matters only for rows that carry no NetBIOS code, and for
172
+ * whether a scan with NetBIOS off is advised to turn it on.
173
+ */
174
+ export function explainUnnamedDiscoveredHost(data) {
175
+ var _a, _b;
176
+ const host = data.host;
177
+ if (!host || typeof host !== "object") {
178
+ return undefined;
179
+ }
180
+ /*
181
+ * A row with no address cannot be imported, and says so on its checkbox.
182
+ * Nullish is checked before stringifying: String(null) is "null", which
183
+ * would read as an address.
184
+ */
185
+ if (host.ipAddress === undefined ||
186
+ host.ipAddress === null ||
187
+ !hasText(String(host.ipAddress))) {
188
+ return undefined;
189
+ }
190
+ if (isDiscoveredHostNamed(host)) {
191
+ return undefined;
192
+ }
193
+ const dnsHostnameStatus = readDiscoveredHostReverseDnsStatus(host.dnsHostnameStatus);
194
+ const netbiosNameStatus = readDiscoveredHostNetbiosStatus(host.netbiosNameStatus);
195
+ /*
196
+ * A per-host code means the naming passes ran for this row, whatever the
197
+ * scan is doing now — a recurring scan keeps its previous run's results
198
+ * while the next run starts. Only a row with no code at all is explained by
199
+ * the scan's state.
200
+ */
201
+ if (!dnsHostnameStatus && !netbiosNameStatus) {
202
+ if (((_a = data.scan) === null || _a === void 0 ? void 0 : _a.status) === DiscoveryScanStatus.InProgress) {
203
+ return {
204
+ label: NOT_YET_NAMED_HOST_LABEL,
205
+ text: IN_PROGRESS_EXPLANATION,
206
+ };
207
+ }
208
+ if (((_b = data.scan) === null || _b === void 0 ? void 0 : _b.status) === DiscoveryScanStatus.Failed) {
209
+ return { label: UNNAMED_HOST_LABEL, text: FAILED_SCAN_EXPLANATION };
210
+ }
211
+ }
212
+ /*
213
+ * Whether the probe's NetBIOS lookup would send this address a query at
214
+ * all. It refuses everything but private and CGNAT IPv4, whoever asks.
215
+ */
216
+ const isNetbiosQueryableAddress = isNetbiosQueryableIPv4Address(host.ipAddress);
217
+ const netbiosSentence = describeNetbios({
218
+ status: netbiosNameStatus,
219
+ scan: data.scan,
220
+ isGlobalProbe: data.isGlobalProbe === true,
221
+ isQueryableAddress: isNetbiosQueryableAddress,
222
+ });
223
+ const sentences = [];
224
+ // The naming order, so the sentences read in the order the sources win.
225
+ const snmpSentence = describeSnmp({
226
+ host: host,
227
+ scan: data.scan,
228
+ });
229
+ if (snmpSentence) {
230
+ sentences.push(snmpSentence);
231
+ }
232
+ sentences.push(dnsHostnameStatus
233
+ ? REVERSE_DNS_SENTENCES[dnsHostnameStatus]
234
+ : REVERSE_DNS_NOT_RECORDED_SENTENCE);
235
+ if (netbiosSentence) {
236
+ sentences.push(netbiosSentence);
237
+ }
238
+ if (dnsHostnameStatus === DiscoveredHostReverseDnsStatus.NoRecord) {
239
+ sentences.push(NO_RECORD_TIP);
240
+ }
241
+ else if (dnsHostnameStatus &&
242
+ TRANSIENT_REVERSE_DNS_STATUSES.has(dnsHostnameStatus)) {
243
+ sentences.push(TRANSIENT_FAILURE_TIP);
244
+ }
245
+ const isSnmpOff = snmpSentence === SNMP_NOT_CHECKED_SENTENCE;
246
+ /*
247
+ * NetBIOS is suggested only where turning it on could work. A global probe
248
+ * never sends NetBIOS queries whatever the scan asks for, so on one this
249
+ * advice would send the operator to a setting whose only effect is the
250
+ * "not asked" line on the next scan (#3916). The bundled self-hosted probes
251
+ * are global, so that is not a rare case. The same goes for an address the
252
+ * lookup refuses — public space, IPv6, anything not a strict dotted quad —
253
+ * where the next scan would only say "Only private addresses are asked".
254
+ */
255
+ const shouldSuggestNetbios = netbiosSentence === NETBIOS_OFF_SENTENCE &&
256
+ data.isGlobalProbe !== true &&
257
+ isNetbiosQueryableAddress;
258
+ if (isSnmpOff && shouldSuggestNetbios) {
259
+ sentences.push(ASK_THE_DEVICE_TIP);
260
+ }
261
+ else if (isSnmpOff) {
262
+ sentences.push(ASK_THE_DEVICE_SNMP_TIP);
263
+ }
264
+ else if (shouldSuggestNetbios) {
265
+ sentences.push(ASK_THE_DEVICE_NETBIOS_TIP);
266
+ }
267
+ return { label: UNNAMED_HOST_LABEL, text: sentences.join(" ") };
268
+ }
269
+ export default explainUnnamedDiscoveredHost;
270
+ //# sourceMappingURL=DiscoveredHostNamingDiagnosis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscoveredHostNamingDiagnosis.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { readDiscoveredHostNetbiosStatus, readDiscoveredHostReverseDnsStatus, } from "../../Types/NetworkDevice/DiscoveredHostNamingStatus";
1
2
  import { normalizeNetbiosName } from "./NetbiosNameUtil";
2
3
  import { normalizeReverseDnsName } from "./ReverseDnsNameUtil";
3
4
  /*
@@ -121,6 +122,28 @@ export function normalizeDiscoveredHosts(hosts) {
121
122
  else {
122
123
  delete normalized.netbiosName;
123
124
  }
125
+ /*
126
+ * The two "why is this host unnamed" codes (OneUptime issue #3916). Not
127
+ * chosen by the scanned network, but still read out of the same verbatim
128
+ * jsonb, and the dialog turns them into tooltip copy — so only the exact
129
+ * codes survive, and anything else is DELETED for the reason the names
130
+ * above are. A code this build does not know (a newer probe's) goes the
131
+ * same way and the row falls back to the explanation older rows get.
132
+ */
133
+ const dnsHostnameStatus = readDiscoveredHostReverseDnsStatus(host.dnsHostnameStatus);
134
+ if (dnsHostnameStatus) {
135
+ normalized.dnsHostnameStatus = dnsHostnameStatus;
136
+ }
137
+ else {
138
+ delete normalized.dnsHostnameStatus;
139
+ }
140
+ const netbiosNameStatus = readDiscoveredHostNetbiosStatus(host.netbiosNameStatus);
141
+ if (netbiosNameStatus) {
142
+ normalized.netbiosNameStatus = netbiosNameStatus;
143
+ }
144
+ else {
145
+ delete normalized.netbiosNameStatus;
146
+ }
124
147
  cleaned.push(normalized);
125
148
  }
126
149
  // An address the scan reports as registered is registered on every row.
@@ -1 +1 @@
1
- {"version":3,"file":"DiscoveredHostUtil.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/DiscoveredHostUtil.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;;;;GAOG;AAEH;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,IAAa;IAEb,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAqC;IAErC,MAAM,OAAO,GAAmC,EAAE,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED;;;;WAIG;QACH,MAAM,UAAU,mCACX,IAAI,KACP,SAAS,EACP,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;gBACrD,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,GACpC,CAAC;QAEF;;;;;;;;;;;;;;;;;;;WAmBG;QACH,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACnE,UAAU,CAAC,OAAO,GAAG,EAAE,CAAC;QAC1B,CAAC;QAED;;;;;;;;;WASG;QACH,MAAM,WAAW,GAAuB,uBAAuB,CAC7D,IAAI,CAAC,WAAW,CACjB,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,UAAU,CAAC,WAAW,CAAC;QAChC,CAAC;QAED;;;;;;;;;;WAUG;QACH,MAAM,WAAW,GAAuB,oBAAoB,CAC1D,IAAI,CAAC,WAAW,CACjB,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,UAAU,CAAC,WAAW,CAAC;QAChC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;IAED,wEAAwE;IACxE,MAAM,qBAAqB,GAAgB,IAAI,GAAG,EAAU,CAAC;IAE7D,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC/C,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,qBAAqB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAA6B,EAAE,EAAE;QACnD,IACE,IAAI,CAAC,mBAAmB;YACxB,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAC1C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uCAAY,IAAI,KAAE,mBAAmB,EAAE,IAAI,IAAG;IAChD,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"DiscoveredHostUtil.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/DiscoveredHostUtil.ts"],"names":[],"mappings":"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"}
@@ -125,5 +125,66 @@ export function normalizeNetbiosName(value) {
125
125
  }
126
126
  return lowerCased;
127
127
  }
128
+ /*
129
+ * One octet of a dotted quad in the only spelling the probe's sweep reports:
130
+ * ASCII digits, no leading zero. The 0-255 bound is checked on the number.
131
+ */
132
+ const IPV4_OCTET_PATTERN = /^(?:0|[1-9][0-9]{0,2})$/;
133
+ /**
134
+ * True exactly for the addresses the probe's NetBIOS lookup would send a
135
+ * query to: a strict dotted-quad IPv4 literal in 10.0.0.0/8, 172.16.0.0/12,
136
+ * 192.168.0.0/16 or the 100.64.0.0/10 CGNAT range (OneUptime issue #3916).
137
+ *
138
+ * The probe's own rule is isNetbiosQueryAddressAllowed
139
+ * (Probe/Utils/Discovery/NetbiosNameResolver.ts), which refuses every other
140
+ * address whoever asks. This is the dashboard's copy of it, for the Review
141
+ * dialog: an unnamed host on a scan with NetBIOS off used to be told that
142
+ * "NetBIOS lookup asks Windows hosts for their own name" whatever its
143
+ * address, so an operator scanning public space turned NetBIOS on, rescanned,
144
+ * and got "not asked. Only private addresses are asked." — advice whose only
145
+ * effect was a different way of saying no name.
146
+ *
147
+ * A copy rather than an import, because Common is bundled into the dashboard
148
+ * and the probe's rule leans on Node's `net.isIPv4`. The strict form below is
149
+ * what `net.isIPv4` accepts (no leading zeros, no whitespace, no IPv6 or
150
+ * IPv4-mapped IPv6). The probe's NetbiosEligibilityParity test holds the two
151
+ * to the same answer on every range edge, on a sweep of every first and
152
+ * second octet, and on the malformed spellings, so changing one without the
153
+ * other fails it.
154
+ *
155
+ * `unknown`, like normalizeNetbiosName, because the dashboard reads the
156
+ * address out of jsonb.
157
+ */
158
+ export function isNetbiosQueryableIPv4Address(value) {
159
+ if (typeof value !== "string") {
160
+ return false;
161
+ }
162
+ const parts = value.split(".");
163
+ if (parts.length !== 4) {
164
+ return false;
165
+ }
166
+ const octets = [];
167
+ for (const part of parts) {
168
+ if (!IPV4_OCTET_PATTERN.test(part)) {
169
+ return false;
170
+ }
171
+ const octet = parseInt(part, 10);
172
+ if (octet > 255) {
173
+ return false;
174
+ }
175
+ octets.push(octet);
176
+ }
177
+ const first = octets[0];
178
+ const second = octets[1];
179
+ return (
180
+ // 10.0.0.0/8, RFC 1918.
181
+ first === 10 ||
182
+ // 172.16.0.0/12, RFC 1918: second octet 16-31.
183
+ (first === 172 && second >= 16 && second <= 31) ||
184
+ // 192.168.0.0/16, RFC 1918.
185
+ (first === 192 && second === 168) ||
186
+ // 100.64.0.0/10, RFC 6598 shared/CGNAT space: second octet 64-127.
187
+ (first === 100 && second >= 64 && second <= 127));
188
+ }
128
189
  export default normalizeNetbiosName;
129
190
  //# sourceMappingURL=NetbiosNameUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NetbiosNameUtil.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/NetbiosNameUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAW,EAAE,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,4BAA4B,GAAW,cAAc,CAAC;AAE5D,uEAAuE;AACvE,MAAM,cAAc,GAAW,UAAU,CAAC;AAE1C;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,KAAa;IACzC,IAAI,GAAG,GAAW,KAAK,CAAC,MAAM,CAAC;IAE/B,OAAO,GAAG,GAAG,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,EAAE,CAAC;IACR,CAAC;IAED,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAW,oBAAoB,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7D,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,IAAI,uBAAuB,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAW,SAAS,CAAC,WAAW,EAAE,CAAC;IAEnD,IAAI,UAAU,KAAK,4BAA4B,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"NetbiosNameUtil.js","sourceRoot":"","sources":["../../../../Utils/NetworkDiscovery/NetbiosNameUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ /*
2
+ * The replay session id, carried on W3C trace context.
3
+ *
4
+ * The browser recorder adds one `tracestate` list member to the requests a
5
+ * page makes to its own origin:
6
+ *
7
+ * tracestate: oneuptime=sid:<32 hex session id>[;p:<16 hex parent id>]
8
+ *
9
+ * tracestate is the one channel a stock OpenTelemetry backend carries
10
+ * without being told to. Every SDK's W3C propagator extracts it onto the
11
+ * remote parent, every child span inherits it, every OTLP exporter sends
12
+ * it as the span's `traceState`, and every outgoing call re-injects it. So
13
+ * span ingest can stamp Span.sessionId for every service a browser request
14
+ * touched, with no code in the customer's backend. (OTLP log records carry
15
+ * no trace state; logs are joined to a session by trace id instead.)
16
+ *
17
+ * `p` is present only when the recorder MINTED the traceparent. Its parent
18
+ * id then names a browser span that is never exported, so the backend's
19
+ * entry span would otherwise arrive pointing at a parent that does not
20
+ * exist: never a root span, flagged as missing its parent. Ingest treats a
21
+ * span whose parent is exactly `p` as the root it really is.
22
+ *
23
+ * Both halves live here so the recorder that writes the member and the
24
+ * ingest that reads it cannot drift. Standalone functions rather than
25
+ * class statics, because the recorder bundle tree-shakes unused exports
26
+ * but not unused statics - the recorder imports only the builder.
27
+ *
28
+ * Dependency-free: bundled into the browser recorder as well as imported
29
+ * by the server.
30
+ */
31
+ /* The list-member key. A valid W3C tracestate simple key. */
32
+ export const SESSION_TRACE_STATE_KEY = "oneuptime";
33
+ /*
34
+ * Hostile-input bounds for the parser. W3C caps a well-formed header at 32
35
+ * members, and the OpenTelemetry JS SDK at 512 characters, but other SDKs
36
+ * only cap member count and member length, so a legitimate value carrying
37
+ * other vendors' members can be longer than 512. Past these a value is not
38
+ * one the recorder wrote, so no session is read out of it - but our
39
+ * members are still stripped from it.
40
+ */
41
+ const MAX_TRACE_STATE_LENGTH = 8192;
42
+ const MAX_TRACE_STATE_MEMBERS = 64;
43
+ const SESSION_ID_PATTERN = /^[0-9a-f]{32}$/;
44
+ const PARENT_SPAN_ID_PATTERN = /^[0-9a-f]{16}$/;
45
+ const ALL_ZERO_PATTERN = /^0+$/;
46
+ /*
47
+ * The tracestate list member for a session. Callers pass recorder-minted
48
+ * values (a 32-hex session id, a 16-hex parent id); nothing here needs
49
+ * escaping, because hex and the ':' / ';' separators are all legal in a
50
+ * tracestate value.
51
+ */
52
+ export function buildSessionTraceStateMember(sessionId, syntheticParentSpanId) {
53
+ return (SESSION_TRACE_STATE_KEY +
54
+ "=sid:" +
55
+ sessionId +
56
+ (syntheticParentSpanId ? ";p:" + syntheticParentSpanId : ""));
57
+ }
58
+ /*
59
+ * Read the session member out of a span's trace state.
60
+ *
61
+ * Accepts anything, because the value comes from an OTLP body a customer
62
+ * (or anyone holding an ingestion key) controls: a non-string, an
63
+ * oversized string or a malformed member yields no session and never
64
+ * throws. The first `oneuptime` member wins, as in the W3C rule that a
65
+ * vendor's own member is the left-most one; fields inside it are
66
+ * `name:value` pairs separated by ';', in any order, and unknown fields are
67
+ * ignored so the format can grow.
68
+ */
69
+ export function parseSessionTraceState(traceState) {
70
+ if (typeof traceState !== "string") {
71
+ return { sessionTraceState: null, remainingTraceState: "" };
72
+ }
73
+ /*
74
+ * Fast path, and the path almost every span takes: no member of ours,
75
+ * nothing to parse and nothing to strip.
76
+ */
77
+ if (traceState.indexOf(SESSION_TRACE_STATE_KEY) === -1) {
78
+ return { sessionTraceState: null, remainingTraceState: traceState };
79
+ }
80
+ const members = traceState.split(",");
81
+ /*
82
+ * Past the bounds nothing is READ as a session - a value this far out of
83
+ * spec is not one the recorder wrote - but our members are still
84
+ * stripped, so an id cannot survive in the raw trace state just because
85
+ * the value around it was oversized.
86
+ */
87
+ const isWithinBounds = traceState.length <= MAX_TRACE_STATE_LENGTH &&
88
+ members.length <= MAX_TRACE_STATE_MEMBERS;
89
+ let sessionTraceState = null;
90
+ let sawSessionMember = false;
91
+ const remaining = [];
92
+ for (const rawMember of members) {
93
+ const member = rawMember.trim();
94
+ if (member === "") {
95
+ continue;
96
+ }
97
+ const equalsIndex = member.indexOf("=");
98
+ const key = equalsIndex === -1 ? member : member.slice(0, equalsIndex).trim();
99
+ if (key !== SESSION_TRACE_STATE_KEY) {
100
+ remaining.push(member);
101
+ continue;
102
+ }
103
+ /*
104
+ * Every member under our key is stripped, parsed or not: a malformed
105
+ * one can still hold an id, and the point of stripping is that no id
106
+ * survives outside the sessionId column.
107
+ */
108
+ if (isWithinBounds && !sawSessionMember && equalsIndex !== -1) {
109
+ sessionTraceState = readSessionMemberValue(member.slice(equalsIndex + 1));
110
+ }
111
+ sawSessionMember = true;
112
+ }
113
+ return {
114
+ sessionTraceState: sessionTraceState,
115
+ remainingTraceState: remaining.join(","),
116
+ };
117
+ }
118
+ function readSessionMemberValue(value) {
119
+ let sessionId = null;
120
+ let syntheticParentSpanId = null;
121
+ for (const rawField of value.split(";")) {
122
+ const field = rawField.trim();
123
+ const colonIndex = field.indexOf(":");
124
+ if (colonIndex === -1) {
125
+ continue;
126
+ }
127
+ const name = field.slice(0, colonIndex);
128
+ const fieldValue = field.slice(colonIndex + 1).toLowerCase();
129
+ if (name === "sid" && sessionId === null) {
130
+ if (!SESSION_ID_PATTERN.test(fieldValue)) {
131
+ return null;
132
+ }
133
+ sessionId = fieldValue;
134
+ }
135
+ else if (name === "p" && syntheticParentSpanId === null) {
136
+ /*
137
+ * A malformed parent id costs only the root-span repair, never the
138
+ * session: the session id is what the member is for.
139
+ */
140
+ if (PARENT_SPAN_ID_PATTERN.test(fieldValue) &&
141
+ !ALL_ZERO_PATTERN.test(fieldValue)) {
142
+ syntheticParentSpanId = fieldValue;
143
+ }
144
+ }
145
+ }
146
+ if (sessionId === null || ALL_ZERO_PATTERN.test(sessionId)) {
147
+ return null;
148
+ }
149
+ return {
150
+ sessionId: sessionId,
151
+ syntheticParentSpanId: syntheticParentSpanId,
152
+ };
153
+ }
154
+ //# sourceMappingURL=SessionTraceState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionTraceState.js","sourceRoot":"","sources":["../../../../Utils/Rum/SessionTraceState.ts"],"names":[],"mappings":"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"}