@oneuptime/common 11.7.3 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1165) hide show
  1. package/Models/AnalyticsModels/ExceptionInstance.ts +67 -0
  2. package/Models/AnalyticsModels/Index.ts +10 -0
  3. package/Models/AnalyticsModels/Log.ts +60 -0
  4. package/Models/AnalyticsModels/RumSession.ts +1401 -0
  5. package/Models/AnalyticsModels/RumSessionChunk.ts +798 -0
  6. package/Models/AnalyticsModels/Span.ts +60 -0
  7. package/Models/DatabaseModels/AIAgentTaskPullRequest.ts +52 -0
  8. package/Models/DatabaseModels/AIRun.ts +31 -0
  9. package/Models/DatabaseModels/Alert.ts +29 -0
  10. package/Models/DatabaseModels/AlertCustomField.ts +1 -1
  11. package/Models/DatabaseModels/AlertEpisodeStateTimeline.ts +1 -0
  12. package/Models/DatabaseModels/AlertFeed.ts +1 -0
  13. package/Models/DatabaseModels/AlertStateTimeline.ts +1 -0
  14. package/Models/DatabaseModels/AutoRemediationRule.ts +989 -0
  15. package/Models/DatabaseModels/AutoRemediationSuggestion.ts +874 -0
  16. package/Models/DatabaseModels/CodeRepository.ts +129 -0
  17. package/Models/DatabaseModels/GlobalConfig.ts +312 -0
  18. package/Models/DatabaseModels/Incident.ts +29 -0
  19. package/Models/DatabaseModels/IncidentCustomField.ts +1 -1
  20. package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +1 -0
  21. package/Models/DatabaseModels/IncidentFeed.ts +1 -0
  22. package/Models/DatabaseModels/IncidentStateTimeline.ts +1 -0
  23. package/Models/DatabaseModels/Index.ts +26 -8
  24. package/Models/DatabaseModels/InstanceHealthLog.ts +8 -0
  25. package/Models/DatabaseModels/LogDropFilter.ts +89 -0
  26. package/Models/DatabaseModels/MonitorCustomField.ts +1 -1
  27. package/Models/DatabaseModels/MonitorStatus.ts +1 -1
  28. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +13 -3
  29. package/Models/DatabaseModels/NetworkDeviceLabelRule.ts +2 -2
  30. package/Models/DatabaseModels/NetworkDeviceOwnerRule.ts +2 -2
  31. package/Models/DatabaseModels/NetworkSiteAssignmentRule.ts +1 -1
  32. package/Models/DatabaseModels/OnCallDutyPolicyCustomField.ts +1 -1
  33. package/Models/DatabaseModels/Project.ts +231 -0
  34. package/Models/DatabaseModels/RecommendationDismissal.ts +463 -0
  35. package/Models/DatabaseModels/RumApplication.ts +906 -0
  36. package/Models/DatabaseModels/RumSessionErasureRequest.ts +561 -0
  37. package/Models/DatabaseModels/RumSessionPin.ts +457 -0
  38. package/Models/DatabaseModels/RumSessionReplayView.ts +406 -0
  39. package/Models/DatabaseModels/RunbookCredential.ts +673 -0
  40. package/Models/DatabaseModels/RunbookSecret.ts +7 -7
  41. package/Models/DatabaseModels/{RunbookAgent.ts → Runner.ts} +206 -46
  42. package/Models/DatabaseModels/{RunbookAgentJob.ts → RunnerJob.ts} +151 -18
  43. package/Models/DatabaseModels/{RunbookAgentOwnerTeam.ts → RunnerOwnerTeam.ts} +41 -43
  44. package/Models/DatabaseModels/{RunbookAgentOwnerUser.ts → RunnerOwnerUser.ts} +41 -43
  45. package/Models/DatabaseModels/ScheduledMaintenanceCustomField.ts +1 -1
  46. package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +1 -0
  47. package/Models/DatabaseModels/StatusPageCustomField.ts +1 -1
  48. package/Models/DatabaseModels/StatusPageGroup.ts +95 -0
  49. package/Models/DatabaseModels/TeamCustomField.ts +1 -1
  50. package/Models/DatabaseModels/TeamMemberCustomField.ts +1 -1
  51. package/Models/DatabaseModels/TraceDropFilter.ts +89 -0
  52. package/Models/DatabaseModels/WorkflowVariable.ts +5 -1
  53. package/Server/API/AIAgentDataAPI.ts +179 -48
  54. package/Server/API/AIAgentTaskAPI.ts +36 -37
  55. package/Server/API/AIAgentTaskLogAPI.ts +19 -33
  56. package/Server/API/AlertAPI.ts +32 -17
  57. package/Server/API/AutoRemediationAPI.ts +557 -0
  58. package/Server/API/BaseAPI.ts +31 -2
  59. package/Server/API/BaseAnalyticsAPI.ts +40 -3
  60. package/Server/API/CommonAPI.ts +92 -0
  61. package/Server/API/DashboardAPI.ts +340 -15
  62. package/Server/API/IncidentAPI.ts +60 -33
  63. package/Server/API/IncidentEpisodeAPI.ts +31 -16
  64. package/Server/API/MonitorAPI.ts +30 -0
  65. package/Server/API/MonitorTemplateAPI.ts +8 -0
  66. package/Server/API/ProbeAPI.ts +196 -15
  67. package/Server/API/ProjectAPI.ts +79 -1
  68. package/Server/API/ScheduledMaintenanceAPI.ts +33 -18
  69. package/Server/API/StatusPageAPI.ts +74 -37
  70. package/Server/API/TelemetryAPI.ts +1622 -3
  71. package/Server/API/UserIncomingCallNumberAPI.ts +31 -0
  72. package/Server/API/WorkspaceNotificationRuleAPI.ts +34 -4
  73. package/Server/DatabaseConfig.ts +26 -1
  74. package/Server/EnvironmentConfig.ts +13 -0
  75. package/Server/Infrastructure/Postgres/SchemaMigrations/1785320000000-RepairCrossProjectIncidentReferences.ts +527 -0
  76. package/Server/Infrastructure/Postgres/SchemaMigrations/1785329453269-AddParentGroupToStatusPageGroup.ts +31 -0
  77. package/Server/Infrastructure/Postgres/SchemaMigrations/1785397674289-AddRecommendationDismissalTable.ts +55 -0
  78. package/Server/Infrastructure/Postgres/SchemaMigrations/1785405581596-AddDroppedCountersToDropFilters.ts +53 -0
  79. package/Server/Infrastructure/Postgres/SchemaMigrations/1785417351021-AddSessionReplay.ts +293 -0
  80. package/Server/Infrastructure/Postgres/SchemaMigrations/1785491583874-EnableSessionReplayByDefault.ts +67 -0
  81. package/Server/Infrastructure/Postgres/SchemaMigrations/1785496223183-AddMonitorSummaryToIncidentAndAlert.ts +33 -0
  82. package/Server/Infrastructure/Postgres/SchemaMigrations/1785516996695-AddSessionReplayReliabilityColumns.ts +40 -0
  83. package/Server/Infrastructure/Postgres/SchemaMigrations/1785533806494-AddSessionReplayCorrelationColumns.ts +54 -0
  84. package/Server/Infrastructure/Postgres/SchemaMigrations/1785749674203-AddRedisAndPostgresHealthNotificationColumns.ts +104 -0
  85. package/Server/Infrastructure/Postgres/SchemaMigrations/1785763818197-AddAutoRemediation.ts +349 -0
  86. package/Server/Infrastructure/Postgres/SchemaMigrations/1785768089408-AddRemediationVerification.ts +67 -0
  87. package/Server/Infrastructure/Postgres/SchemaMigrations/1785776960660-AddRunnerCapabilities.ts +23 -0
  88. package/Server/Infrastructure/Postgres/SchemaMigrations/1785790000000-AddIncidentInvestigationGating.ts +42 -0
  89. package/Server/Infrastructure/Postgres/SchemaMigrations/1785800000000-AddRunbookCredential.ts +84 -0
  90. package/Server/Infrastructure/Postgres/SchemaMigrations/1785810000000-RenameRunbookAgentToRunner.ts +152 -0
  91. package/Server/Infrastructure/Postgres/SchemaMigrations/1785860000000-SessionReplayDefaultToSensitiveInputMasking.ts +81 -0
  92. package/Server/Infrastructure/Postgres/SchemaMigrations/1785870000000-AddAiCommandRemediation.ts +151 -0
  93. package/Server/Infrastructure/Postgres/SchemaMigrations/1785880000000-AlignRunnerSchemaWithEntities.ts +597 -0
  94. package/Server/Infrastructure/Postgres/SchemaMigrations/1785890000000-AddFixVerificationAndAutomaticCodeFixes.ts +71 -0
  95. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +40 -0
  96. package/Server/Services/AIRunService.ts +10 -0
  97. package/Server/Services/AIService.ts +30 -0
  98. package/Server/Services/AlertEpisodeService.ts +47 -0
  99. package/Server/Services/AlertService.ts +166 -4
  100. package/Server/Services/AlertSeverityService.ts +25 -11
  101. package/Server/Services/AlertStateService.ts +25 -11
  102. package/Server/Services/AutoRemediationRuleEngineService.ts +1101 -0
  103. package/Server/Services/{RunbookAgentOwnerTeamService.ts → AutoRemediationRuleService.ts} +1 -1
  104. package/Server/Services/AutoRemediationSuggestionService.ts +183 -0
  105. package/Server/Services/BillingService.ts +148 -1
  106. package/Server/Services/DatabaseService.ts +274 -22
  107. package/Server/Services/IncidentEpisodeService.ts +47 -0
  108. package/Server/Services/IncidentService.ts +179 -4
  109. package/Server/Services/IncidentSeverityService.ts +25 -11
  110. package/Server/Services/IncidentStateService.ts +25 -11
  111. package/Server/Services/IncidentTemplateService.ts +123 -1
  112. package/Server/Services/Index.ts +21 -0
  113. package/Server/Services/LogDropFilterService.ts +133 -0
  114. package/Server/Services/MonitorProbeService.ts +94 -4
  115. package/Server/Services/MonitorService.ts +72 -43
  116. package/Server/Services/MonitorStatusService.ts +25 -11
  117. package/Server/Services/NetworkDeviceDiscoveryScanService.ts +70 -0
  118. package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +18 -19
  119. package/Server/Services/NetworkDeviceLabelRuleService.ts +39 -0
  120. package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +18 -19
  121. package/Server/Services/NetworkDeviceOwnerRuleService.ts +37 -0
  122. package/Server/Services/NetworkDeviceService.ts +172 -21
  123. package/Server/Services/NetworkSiteAssignmentRuleService.ts +92 -12
  124. package/Server/Services/NetworkSiteService.ts +27 -10
  125. package/Server/Services/ProbeService.ts +66 -0
  126. package/Server/Services/ProjectService.ts +178 -7
  127. package/Server/Services/RecommendationDismissalService.ts +52 -0
  128. package/Server/Services/RumApplicationService.ts +240 -1
  129. package/Server/Services/RumSessionChunkService.ts +11 -0
  130. package/Server/Services/RumSessionErasureRequestService.ts +197 -0
  131. package/Server/Services/RumSessionPinService.ts +213 -0
  132. package/Server/Services/RumSessionReplayViewService.ts +201 -0
  133. package/Server/Services/RumSessionService.ts +123 -0
  134. package/Server/Services/RunbookCredentialService.ts +76 -0
  135. package/Server/Services/{RunbookAgentJobService.ts → RunnerJobService.ts} +264 -52
  136. package/Server/Services/{RunbookAgentOwnerUserService.ts → RunnerOwnerTeamService.ts} +1 -1
  137. package/Server/Services/RunnerOwnerUserService.ts +10 -0
  138. package/Server/Services/RunnerService.ts +172 -0
  139. package/Server/Services/ScheduledMaintenanceService.ts +103 -0
  140. package/Server/Services/ScheduledMaintenanceStateService.ts +25 -11
  141. package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +15 -1
  142. package/Server/Services/ScheduledMaintenanceTemplateService.ts +90 -0
  143. package/Server/Services/ServiceService.ts +8 -2
  144. package/Server/Services/StatusPageGroupService.ts +186 -0
  145. package/Server/Services/StatusPageService.ts +240 -36
  146. package/Server/Services/StatusPageSubscriberNotificationTemplateService.ts +20 -1
  147. package/Server/Services/TelemetryExceptionService.ts +3 -16
  148. package/Server/Services/TelemetryUsageBillingService.ts +33 -2
  149. package/Server/Services/TraceAggregationService.ts +196 -32
  150. package/Server/Services/TraceDropFilterService.ts +133 -0
  151. package/Server/Types/Billing/MeteredPlan/AllMeteredPlans.ts +17 -0
  152. package/Server/Types/Billing/MeteredPlan/ServerMeteredPlan.ts +10 -0
  153. package/Server/Types/Workflow/Components/API/Delete.ts +12 -0
  154. package/Server/Types/Workflow/Components/API/Get.ts +12 -0
  155. package/Server/Types/Workflow/Components/API/Patch.ts +12 -0
  156. package/Server/Types/Workflow/Components/API/Post.ts +12 -0
  157. package/Server/Types/Workflow/Components/API/Put.ts +13 -0
  158. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +63 -7
  159. package/Server/Utils/AI/CodeFix/CodeFixAgentAuth.ts +128 -0
  160. package/Server/Utils/AI/CodeFix/CodeFixAgentAvailability.ts +54 -0
  161. package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +17 -10
  162. package/Server/Utils/AI/CodeFix/CodeFixRunQueue.ts +8 -6
  163. package/Server/Utils/AI/Remediation/RemediationCommandTools.ts +943 -0
  164. package/Server/Utils/AI/Remediation/RemediationExecutionRunner.ts +866 -0
  165. package/Server/Utils/AI/Remediation/RemediationPlanRunner.ts +823 -0
  166. package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +103 -12
  167. package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +75 -17
  168. package/Server/Utils/AI/SRE/ConfidenceSignal.ts +28 -6
  169. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +202 -12
  170. package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +264 -14
  171. package/Server/Utils/AI/SRE/Insights/Triage.ts +2 -7
  172. package/Server/Utils/AI/SRE/InvestigationGrader.ts +5 -24
  173. package/Server/Utils/AI/SRE/InvestigationQueue.ts +259 -20
  174. package/Server/Utils/AI/SRE/PostedRootCause.ts +82 -0
  175. package/Server/Utils/AI/SRE/README.md +3 -2
  176. package/Server/Utils/AI/SRE/RemediationHandoff.ts +82 -0
  177. package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +6 -19
  178. package/Server/Utils/AI/Toolbox/CodeWriteTools.ts +2 -2
  179. package/Server/Utils/Alert/AlertPrivacyFilter.ts +58 -0
  180. package/Server/Utils/AutoRemediation/CommandPlanExecutor.ts +604 -0
  181. package/Server/Utils/AutoRemediation/RemediationVerifier.ts +619 -0
  182. package/Server/Utils/CorsOptions.ts +52 -0
  183. package/Server/Utils/Database/ProjectScopedReferenceValidator.ts +212 -0
  184. package/Server/Utils/Database/RelationIdUtil.ts +68 -0
  185. package/Server/Utils/DropFilterValidation.ts +127 -0
  186. package/Server/Utils/Errors.ts +5 -0
  187. package/Server/Utils/Incident/IncidentPrivacyFilter.ts +60 -0
  188. package/Server/Utils/InstanceHealth/PostgresHealth.ts +286 -0
  189. package/Server/Utils/InstanceHealth/RedisHealth.ts +434 -0
  190. package/Server/Utils/Monitor/MonitorAlert.ts +48 -1
  191. package/Server/Utils/Monitor/MonitorIncident.ts +51 -2
  192. package/Server/Utils/Monitor/MonitorResource.ts +19 -0
  193. package/Server/Utils/Monitor/MonitorSummaryCapture.ts +104 -0
  194. package/Server/Utils/NetworkDevice/RulePatternValidator.ts +44 -0
  195. package/Server/Utils/OpenAPI.ts +2 -1
  196. package/Server/Utils/Runbook/RunbookExecutePermission.ts +94 -0
  197. package/Server/Utils/SessionReplay/SessionReplayErasureTombstone.ts +128 -0
  198. package/Server/Utils/SessionReplay/SessionReplayGateCache.ts +586 -0
  199. package/Server/Utils/SessionReplay/SessionReplayGateCacheStore.ts +188 -0
  200. package/Server/Utils/SessionReplay/SessionReplayReadService.ts +1449 -0
  201. package/Server/Utils/SessionReplay/SessionReplayRetention.ts +114 -0
  202. package/Server/Utils/SessionReplay/SessionReplayTargeting.ts +144 -0
  203. package/Server/Utils/SessionReplay/SessionReplayUsage.ts +92 -0
  204. package/Server/Utils/StartServer.ts +47 -3
  205. package/Server/Utils/Telemetry/AppMetrics.ts +31 -0
  206. package/Server/Utils/Telemetry/TelemetryFanInWriter.ts +44 -10
  207. package/Tests/App/Dashboard/AddWidgetModal.test.tsx +557 -0
  208. package/Tests/App/Dashboard/WidgetCatalog.test.ts +479 -0
  209. package/Tests/App/StatusPage/BulkAddStatusPageMonitors.test.ts +343 -0
  210. package/Tests/App/StatusPage/BulkAddStatusPageMonitorsModal.test.tsx +320 -0
  211. package/Tests/Models/AnalyticsModels/RumSessionSchema.test.ts +455 -0
  212. package/Tests/Models/AnalyticsModels/SessionIdCorrelation.test.ts +158 -0
  213. package/Tests/Models/DatabaseModels/MonitorProbeColumnAccessControl.test.ts +196 -0
  214. package/Tests/Models/DatabaseModels/SessionReplayModels.test.ts +447 -0
  215. package/Tests/Models/RecommendationDismissalModel.test.ts +269 -0
  216. package/Tests/Models/RunnerVersionLabel.test.ts +223 -0
  217. package/Tests/Server/API/BaseAPIUpdatePayloadValidation.test.ts +320 -0
  218. package/Tests/Server/API/BaseAnalyticsAPIUpdatePayloadValidation.test.ts +293 -0
  219. package/Tests/Server/API/CommonAPIAuthGuard.test.ts +164 -0
  220. package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +1287 -0
  221. package/Tests/Server/API/LegacyRunbookAgentRoutes.test.ts +117 -0
  222. package/Tests/Server/API/ProbeAPI.test.ts +422 -53
  223. package/Tests/Server/API/ProjectAPI.test.ts +180 -0
  224. package/Tests/Server/API/ProjectAPIExtendTrialBillingDisabled.test.ts +138 -0
  225. package/Tests/Server/API/ProjectScopedCustomRouteAuth.test.ts +458 -0
  226. package/Tests/Server/API/SessionReplayAPI.test.ts +2093 -0
  227. package/Tests/Server/API/UserIncomingCallNumberApi.test.ts +429 -0
  228. package/Tests/Server/API/UserSmsApi.test.ts +68 -2
  229. package/Tests/Server/DatabaseConfig.test.ts +150 -0
  230. package/Tests/Server/Infrastructure/ContainerBootConfiguration.test.ts +359 -0
  231. package/Tests/Server/Infrastructure/ProcessSignalDelivery.test.ts +426 -0
  232. package/Tests/Server/Services/AIRunCodeFixClaimScoping.test.ts +100 -0
  233. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +8 -0
  234. package/Tests/Server/Services/AutoRemediationCommandRuleEngine.test.ts +334 -0
  235. package/Tests/Server/Services/AutoRemediationRuleEngineService.test.ts +517 -0
  236. package/Tests/Server/Services/BillingService.test.ts +158 -1
  237. package/Tests/Server/Services/BillingServiceExtendTrial.test.ts +439 -0
  238. package/Tests/Server/Services/CrossProjectReferenceWriteGuard.test.ts +810 -0
  239. package/Tests/Server/Services/DatabaseServiceAtomicAddToColumns.test.ts +269 -0
  240. package/Tests/Server/Services/DatabaseServiceEmptyUpdate.test.ts +299 -0
  241. package/Tests/Server/Services/DatabaseServiceSanitizeUpdateData.test.ts +17 -10
  242. package/Tests/Server/Services/DatabaseServiceSortColumnSelect.test.ts +201 -0
  243. package/Tests/Server/Services/DatabaseServiceUpdateColumnsWithoutHooks.test.ts +128 -0
  244. package/Tests/Server/Services/DatabaseServiceUpdateWriteRouting.test.ts +178 -0
  245. package/Tests/Server/Services/DatabaseServiceUpdateWriteRoutingMonitor.test.ts +206 -0
  246. package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +81 -23
  247. package/Tests/Server/Services/DropFilterSaveValidation.test.ts +398 -0
  248. package/Tests/Server/Services/MonitorProbeDeleteHooks.test.ts +280 -0
  249. package/Tests/Server/Services/MonitorProbeServiceProbeTenancy.test.ts +304 -0
  250. package/Tests/Server/Services/MonitorServiceOperationalStatusSelection.test.ts +145 -0
  251. package/Tests/Server/Services/NetworkDeviceDiscoveryScanService.test.ts +262 -0
  252. package/Tests/Server/Services/NetworkDeviceRuleEngines.test.ts +726 -0
  253. package/Tests/Server/Services/NetworkDeviceSiteAssignment.test.ts +570 -9
  254. package/Tests/Server/Services/NetworkSiteAssignmentRuleService.test.ts +94 -1
  255. package/Tests/Server/Services/NetworkSiteService.test.ts +85 -0
  256. package/Tests/Server/Services/ProjectServiceExtendTrial.test.ts +614 -0
  257. package/Tests/Server/Services/RecommendationDismissalService.test.ts +306 -0
  258. package/Tests/Server/Services/RepairCrossProjectIncidentReferencesMigration.test.ts +528 -0
  259. package/Tests/Server/Services/RumApplicationReplayHealth.test.ts +114 -0
  260. package/Tests/Server/Services/RunbookCredentialService.test.ts +657 -0
  261. package/Tests/Server/Services/SessionReplayCreatePath.test.ts +376 -0
  262. package/Tests/Server/Services/SessionReplayGateCacheInvalidation.test.ts +211 -0
  263. package/Tests/Server/Services/SessionReplayMetering.test.ts +174 -0
  264. package/Tests/Server/Services/StatusPageGroupNesting.test.ts +395 -0
  265. package/Tests/Server/Services/StatusPageSubscriberReport.test.ts +555 -0
  266. package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +25 -4
  267. package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +17 -2
  268. package/Tests/Server/Services/TraceAggregationService.test.ts +48 -0
  269. package/Tests/Server/Services/TraceAnalyticsResourceDisplayNames.test.ts +855 -0
  270. package/Tests/Server/Services/UpdateOneByIdKeepsRowId.test.ts +38 -27
  271. package/Tests/Server/TestingUtils/Services/BillingServiceHelper.ts +26 -21
  272. package/Tests/Server/Types/Database/Permissions/WorkflowVariableColumnPermission.test.ts +227 -0
  273. package/Tests/Server/Types/Workflow/Components/ApiComponentErrorPort.test.ts +285 -0
  274. package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +44 -0
  275. package/Tests/Server/Utils/AI/AIIncidentGating.test.ts +475 -0
  276. package/Tests/Server/Utils/AI/CodeFix/CodeFixAgentAuth.test.ts +257 -0
  277. package/Tests/Server/Utils/AI/CodeFix/CodeFixAgentAvailability.test.ts +236 -0
  278. package/Tests/Server/Utils/AI/CodeFixReadiness.test.ts +44 -6
  279. package/Tests/Server/Utils/AI/CodeFixRunQueue.test.ts +47 -1
  280. package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +2 -2
  281. package/Tests/Server/Utils/AI/FixFromIncidentAutoTrigger.test.ts +294 -0
  282. package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +2 -2
  283. package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +47 -3
  284. package/Tests/Server/Utils/AI/InvestigationQueueRemediationExecution.test.ts +233 -0
  285. package/Tests/Server/Utils/AI/InvestigationSettlement.test.ts +463 -0
  286. package/Tests/Server/Utils/AI/PostedRootCause.test.ts +254 -0
  287. package/Tests/Server/Utils/AI/RemediationAllowlistNormalization.test.ts +248 -0
  288. package/Tests/Server/Utils/AI/RemediationCommandTools.test.ts +1008 -0
  289. package/Tests/Server/Utils/AI/RemediationExecutionRunner.test.ts +887 -0
  290. package/Tests/Server/Utils/AI/RemediationHandoff.test.ts +306 -0
  291. package/Tests/Server/Utils/AI/RemediationPlanRunner.test.ts +745 -0
  292. package/Tests/Server/Utils/AI/SubjectCodeFixRunDedupe.test.ts +291 -0
  293. package/Tests/Server/Utils/AutoRemediation/CommandPlanExecutor.test.ts +1050 -0
  294. package/Tests/Server/Utils/AutoRemediation/CommandPlanVerification.test.ts +350 -0
  295. package/Tests/Server/Utils/AutoRemediation/RemediationVerifier.test.ts +341 -0
  296. package/Tests/Server/Utils/CorsOptions.test.ts +119 -0
  297. package/Tests/Server/Utils/Database/ProjectScopedReferenceValidator.test.ts +463 -0
  298. package/Tests/Server/Utils/Database/RelationIdUtil.test.ts +120 -0
  299. package/Tests/Server/Utils/Database/ResolveReferenceId.test.ts +60 -0
  300. package/Tests/Server/Utils/DropFilterValidation.test.ts +269 -0
  301. package/Tests/Server/Utils/InstanceHealth/PostgresHealth.test.ts +337 -0
  302. package/Tests/Server/Utils/InstanceHealth/RedisHealth.test.ts +671 -0
  303. package/Tests/Server/Utils/Monitor/MonitorSummaryCapture.test.ts +205 -0
  304. package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +313 -0
  305. package/Tests/Server/Utils/PushNotificationUtil.test.ts +228 -0
  306. package/Tests/Server/Utils/SessionReplay/SessionReplayGateCachePolicy.test.ts +177 -0
  307. package/Tests/Server/Utils/SessionReplay/SessionReplayOriginAllowlist.test.ts +108 -0
  308. package/Tests/Server/Utils/SessionReplay/SessionReplayRetention.test.ts +229 -0
  309. package/Tests/Server/Utils/SessionReplay/SessionReplayTargeting.test.ts +246 -0
  310. package/Tests/Server/Utils/Telemetry/SpanUtil.test.ts +94 -0
  311. package/Tests/Server/Utils/Telemetry/TelemetryFanInWriter.test.ts +110 -0
  312. package/Tests/Types/AI/AIRunStatus.test.ts +25 -0
  313. package/Tests/Types/AutoRemediation/AiRemediationCommandPlan.test.ts +1063 -0
  314. package/Tests/Types/BaseDatabase/AggregationType.test.ts +56 -0
  315. package/Tests/Types/CustomField/CustomFieldDropdownOption.test.ts +227 -0
  316. package/Tests/Types/Dashboard/DashboardTemplateInvariants.test.ts +811 -0
  317. package/Tests/Types/Dashboard/RumDashboardTemplate.test.ts +1238 -0
  318. package/Tests/Types/DateUserTimezone.test.ts +52 -0
  319. package/Tests/Types/Day/DayOfWeek.test.ts +46 -0
  320. package/Tests/Types/Docker/DockerInventoryExtractor.test.ts +249 -0
  321. package/Tests/Types/Kubernetes/KubernetesInventoryExtractor.test.ts +231 -0
  322. package/Tests/Types/Kubernetes/KubernetesRightSizing.test.ts +323 -0
  323. package/Tests/Types/Metrics/MetricDownsamplingRetentionDays.test.ts +77 -0
  324. package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +177 -9
  325. package/Tests/Types/Monitor/MonitorStepDnsMonitor.test.ts +105 -0
  326. package/Tests/Types/Monitor/MonitorStepDnssecMonitor.test.ts +131 -0
  327. package/Tests/Types/Monitor/MonitorStepDomainMonitor.test.ts +60 -0
  328. package/Tests/Types/Monitor/MonitorStepExternalStatusPageMonitor.test.ts +82 -0
  329. package/Tests/Types/Monitor/MonitorStepInfrastructureMonitors.test.ts +268 -0
  330. package/Tests/Types/Monitor/MonitorStepMetricMonitor.test.ts +386 -0
  331. package/Tests/Types/Monitor/MonitorStepProfileMonitor.test.ts +185 -0
  332. package/Tests/Types/Monitor/MonitorStepSnmpMonitor.test.ts +156 -0
  333. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +399 -0
  334. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +901 -0
  335. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +608 -0
  336. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +754 -0
  337. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +963 -0
  338. package/Tests/Types/Monitor/RumAlertTemplates.test.ts +285 -0
  339. package/Tests/Types/Podman/PodmanInventoryExtractor.test.ts +159 -0
  340. package/Tests/Types/RollingTime/RollingTimeUtil.test.ts +186 -0
  341. package/Tests/Types/Runbook/RunbookExecutionDeadline.test.ts +268 -0
  342. package/Tests/Types/Runbook/RunbookStepTimeout.test.ts +410 -0
  343. package/Tests/Types/Runbook/RunbookStepType.test.ts +242 -0
  344. package/Tests/Types/Telemetry/DropFilterSampling.test.ts +241 -0
  345. package/Tests/Types/Telemetry/TelemetryRetentionConfig.test.ts +225 -0
  346. package/Tests/Types/Text.test.ts +60 -0
  347. package/Tests/Types/Workspace/NotificationRuleConditionUtil.test.ts +353 -0
  348. package/Tests/Types/Workspace/NotificationRuleUtil.test.ts +566 -0
  349. package/Tests/UI/Components/AutocompleteTextInputMenu.test.tsx +555 -0
  350. package/Tests/UI/Components/BulkLabelActions.test.tsx +1502 -0
  351. package/Tests/UI/Components/BulkOwnerActions.test.tsx +1255 -0
  352. package/Tests/UI/Components/CodeEditor.test.tsx +174 -0
  353. package/Tests/UI/Components/CustomFields/DropdownOptionsInput.test.tsx +228 -0
  354. package/Tests/UI/Components/Detail/DropdownColors.test.tsx +128 -0
  355. package/Tests/UI/Components/Dropdown/DropdownValueBadge.test.tsx +60 -0
  356. package/Tests/UI/Components/ErrorBoundary.test.tsx +555 -24
  357. package/Tests/UI/Components/FilterModalOperatorMenu.test.tsx +674 -0
  358. package/Tests/UI/Components/Forms/ColorPicker.test.tsx +48 -0
  359. package/Tests/UI/Components/Forms/ColorPickerPopup.test.tsx +222 -0
  360. package/Tests/UI/Components/Forms/IconPickerPopup.test.tsx +270 -0
  361. package/Tests/UI/Components/InfoCard.test.tsx +358 -0
  362. package/Tests/UI/Components/LogTimeRangePicker.test.tsx +138 -0
  363. package/Tests/UI/Components/Modal.test.tsx +43 -5
  364. package/Tests/UI/Components/ModelTable/BaseModelTableSearchLabels.test.tsx +397 -0
  365. package/Tests/UI/Components/ModelTable/ColumnCustomizationModal.test.tsx +427 -0
  366. package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +125 -6
  367. package/Tests/UI/Components/OperatorSelectorFilterTypes.test.tsx +1595 -0
  368. package/Tests/UI/Components/OperatorSelectorKeyboard.test.tsx +851 -0
  369. package/Tests/UI/Components/OperatorSelectorMenu.test.tsx +1229 -0
  370. package/Tests/UI/Components/Pagination.test.tsx +85 -0
  371. package/Tests/UI/Components/Runbook/StepTimeoutInput.test.tsx +386 -0
  372. package/Tests/UI/Components/StatusPage/ResourceGroupSection.test.tsx +671 -0
  373. package/Tests/UI/Components/TelemetryTimeRangePicker.test.tsx +404 -0
  374. package/Tests/UI/Monitor/MonitorSummarySnapshotRender.test.tsx +248 -0
  375. package/Tests/UI/Rum/ChunkLoader.test.ts +790 -0
  376. package/Tests/UI/Rum/ReplayScrubber.test.tsx +236 -0
  377. package/Tests/UI/Rum/ReplayStage.test.tsx +606 -0
  378. package/Tests/UI/Utils/DropdownAlignment.test.ts +306 -0
  379. package/Tests/UI/Utils/TableFilterUrlState.test.ts +292 -0
  380. package/Tests/UI/Utils/Timezone.test.ts +86 -0
  381. package/Tests/UI/Utils/UseClockTick.test.tsx +276 -0
  382. package/Tests/Utils/AiRemediation/CommandPolicy.test.ts +1063 -0
  383. package/Tests/Utils/Dashboard/ClockWidgetFormat.test.ts +1374 -0
  384. package/Tests/Utils/Dashboard/DashboardClockComponent.test.ts +362 -0
  385. package/Tests/Utils/Dashboard/DashboardHtmlComponent.test.ts +217 -0
  386. package/Tests/Utils/Dashboard/HtmlWidgetDocument.test.ts +656 -0
  387. package/Tests/Utils/Dashboard/ValueWidgetLayout.test.ts +1007 -0
  388. package/Tests/Utils/Metrics/MetricSeriesScope.test.ts +1197 -0
  389. package/Tests/Utils/Monitor/MonitorSummaryProbeUtil.test.ts +263 -0
  390. package/Tests/Utils/Monitor/MonitorSummarySnapshotUtil.test.ts +839 -0
  391. package/Tests/Utils/NetworkDiscovery/ScanTargetUtil.test.ts +583 -0
  392. package/Tests/Utils/NetworkSite/CidrMatchUtil.test.ts +69 -0
  393. package/Tests/Utils/Rules/RulePatternMatchUtil.test.ts +274 -0
  394. package/Tests/Utils/Rum/ChunkMath.test.ts +286 -0
  395. package/Tests/Utils/Rum/Masking.test.ts +186 -0
  396. package/Tests/Utils/Rum/SessionIdentity.test.ts +272 -0
  397. package/Tests/Utils/Rum/SessionSampling.test.ts +164 -0
  398. package/Tests/Utils/Rum/UrlScrubber.test.ts +175 -0
  399. package/Tests/Utils/StatusPage/GroupNestingLayout.test.ts +1072 -0
  400. package/Tests/Utils/StatusPage/GroupTree.test.ts +583 -0
  401. package/Tests/Utils/StatusPage/Report.test.ts +708 -0
  402. package/Tests/Utils/StatusPage/ResourceUptime.test.ts +411 -0
  403. package/Tests/Utils/ValueFormatter.test.ts +299 -1
  404. package/Types/AI/AIRunStatus.ts +18 -7
  405. package/Types/AI/AIRunType.ts +18 -0
  406. package/Types/AI/FixVerificationStatus.ts +21 -0
  407. package/Types/AnalyticsDatabase/AnalyticsTableName.ts +16 -0
  408. package/Types/AutoRemediation/AiRemediationCommandPlan.ts +304 -0
  409. package/Types/AutoRemediation/AutoRemediationExecutionMode.ts +17 -0
  410. package/Types/AutoRemediation/AutoRemediationSuggestionStatus.ts +35 -0
  411. package/Types/AutoRemediation/AutoRemediationSuggestionType.ts +17 -0
  412. package/Types/AutoRemediation/AutoRemediationTriggerEntity.ts +11 -0
  413. package/Types/AutoRemediation/AutoRemediationVerificationStatus.ts +21 -0
  414. package/Types/CustomField/CustomFieldDropdownOption.ts +190 -0
  415. package/Types/Dashboard/DashboardComponentType.ts +2 -0
  416. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +4 -0
  417. package/Types/Dashboard/DashboardComponents/DashboardClockComponent.ts +45 -0
  418. package/Types/Dashboard/DashboardComponents/DashboardHtmlComponent.ts +27 -0
  419. package/Types/Dashboard/DashboardComponents/DashboardValueComponent.ts +8 -0
  420. package/Types/Dashboard/DashboardTemplates.ts +516 -0
  421. package/Types/Date.ts +21 -6
  422. package/Types/Email/EmailTemplateType.ts +2 -0
  423. package/Types/Kubernetes/KubernetesRightSizing.ts +353 -0
  424. package/Types/MeteredPlan/ProductType.ts +1 -0
  425. package/Types/Monitor/KubernetesAlertTemplates.ts +205 -0
  426. package/Types/Monitor/MonitorStep.ts +10 -1
  427. package/Types/Monitor/MonitorStepMetricMonitor.ts +73 -2
  428. package/Types/Monitor/MonitorSteps.ts +5 -0
  429. package/Types/Monitor/MonitorSummarySnapshot.ts +88 -0
  430. package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +455 -0
  431. package/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts +168 -0
  432. package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +177 -0
  433. package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +824 -0
  434. package/Types/Monitor/RumAlertTemplates.ts +386 -0
  435. package/Types/Permission.ts +249 -24
  436. package/Types/Recommendation/RecommendationType.ts +20 -0
  437. package/Types/Rum/SessionReplay.ts +452 -0
  438. package/Types/Rum/SessionReplayCaptureTrigger.ts +26 -0
  439. package/Types/Rum/SessionReplayConsentMode.ts +27 -0
  440. package/Types/Rum/SessionReplayMaskingMode.ts +86 -0
  441. package/Types/Rum/SessionReplayTriggerReason.ts +31 -0
  442. package/Types/Runbook/RunbookCredentialType.ts +6 -0
  443. package/Types/Runbook/RunbookExecutionDeadline.ts +129 -0
  444. package/Types/Runbook/RunbookStep.ts +66 -1
  445. package/Types/Runbook/RunbookStepTimeout.ts +202 -0
  446. package/Types/Runbook/RunbookStepType.ts +26 -0
  447. package/Types/Runbook/RunnerJobOrigin.ts +20 -0
  448. package/Types/Runbook/{RunbookAgentJobStatus.ts → RunnerJobStatus.ts} +2 -2
  449. package/Types/StatusPage/StatusPageReport.ts +99 -0
  450. package/Types/Telemetry/DropFilterSampling.ts +92 -0
  451. package/Types/Telemetry/TelemetryRetentionConfig.ts +18 -1
  452. package/Types/Text.ts +33 -0
  453. package/UI/Components/AI/GenerateFromAIModal.tsx +0 -2
  454. package/UI/Components/Accordion/Accordion.tsx +10 -2
  455. package/UI/Components/AutocompleteTextInput/AutocompleteTextInput.tsx +260 -75
  456. package/UI/Components/BulkUpdate/BulkLabelActions.tsx +99 -10
  457. package/UI/Components/BulkUpdate/BulkOwnerActions.tsx +11 -0
  458. package/UI/Components/CodeEditor/CodeEditor.tsx +34 -20
  459. package/UI/Components/CustomFields/CustomFieldsDetail.tsx +19 -14
  460. package/UI/Components/CustomFields/DropdownOptionsInput.tsx +144 -54
  461. package/UI/Components/Date/RangeStartAndEndDateView.tsx +0 -1
  462. package/UI/Components/Detail/Detail.tsx +9 -22
  463. package/UI/Components/Dropdown/Dropdown.tsx +2 -5
  464. package/UI/Components/Dropdown/DropdownMenuZIndex.ts +7 -0
  465. package/UI/Components/Dropdown/DropdownValueBadge.tsx +61 -0
  466. package/UI/Components/EditionLabel/EditionLabel.tsx +1 -27
  467. package/UI/Components/Error/PageError.tsx +0 -4
  468. package/UI/Components/ErrorBoundary.tsx +252 -15
  469. package/UI/Components/Filters/OperatorSelector.tsx +350 -39
  470. package/UI/Components/Forms/Fields/ColorPicker.tsx +60 -27
  471. package/UI/Components/Forms/Fields/IconPicker.tsx +89 -60
  472. package/UI/Components/Forms/Validation.ts +9 -4
  473. package/UI/Components/InfoCard/InfoCard.tsx +58 -1
  474. package/UI/Components/List/List.tsx +1 -0
  475. package/UI/Components/LogsViewer/components/LogTimeRangePicker.tsx +34 -1
  476. package/UI/Components/Modal/Modal.tsx +16 -60
  477. package/UI/Components/ModelFormModal/ModelFormModal.tsx +0 -8
  478. package/UI/Components/ModelTable/BaseModelTable.tsx +116 -67
  479. package/UI/Components/ModelTable/ColumnCustomizationModal.tsx +150 -47
  480. package/UI/Components/ModelTable/CustomFieldColumns.tsx +41 -32
  481. package/UI/Components/Pagination/Pagination.tsx +33 -10
  482. package/UI/Components/Runbook/StepTimeoutInput.tsx +173 -0
  483. package/UI/Components/StatusPage/ResourceGroupSection.tsx +231 -0
  484. package/UI/Components/Table/Table.tsx +1 -0
  485. package/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.tsx +34 -1
  486. package/UI/Types/UseAnchoredFieldPopup.ts +321 -0
  487. package/UI/Utils/Dropdown.ts +26 -0
  488. package/UI/Utils/DropdownAlignment.ts +162 -0
  489. package/UI/Utils/TableFilterUrlState.ts +59 -20
  490. package/UI/Utils/Timezone.ts +18 -2
  491. package/UI/Utils/UseClockTick.ts +78 -0
  492. package/Utils/API.ts +106 -2
  493. package/Utils/AiRemediation/CommandPolicy.ts +398 -0
  494. package/Utils/Dashboard/ClockWidgetFormat.ts +604 -0
  495. package/Utils/Dashboard/Components/DashboardClockComponent.ts +181 -0
  496. package/Utils/Dashboard/Components/DashboardHtmlComponent.ts +162 -0
  497. package/Utils/Dashboard/Components/DashboardValueComponent.ts +12 -1
  498. package/Utils/Dashboard/Components/Index.ts +14 -0
  499. package/Utils/Dashboard/HtmlWidgetDocument.ts +309 -0
  500. package/Utils/Dashboard/ValueWidgetLayout.ts +471 -0
  501. package/Utils/Metrics/MetricSeriesScope.ts +301 -0
  502. package/Utils/Monitor/MonitorSummaryProbeUtil.ts +130 -0
  503. package/Utils/Monitor/MonitorSummarySnapshotUtil.ts +593 -0
  504. package/Utils/NetworkDiscovery/ScanTargetUtil.ts +434 -0
  505. package/Utils/NetworkSite/CidrMatchUtil.ts +30 -17
  506. package/Utils/Rules/RulePatternMatchUtil.ts +103 -0
  507. package/Utils/Rum/ChunkMath.ts +211 -0
  508. package/Utils/Rum/Masking.ts +168 -0
  509. package/Utils/Rum/SessionIdentity.ts +230 -0
  510. package/Utils/Rum/SessionSampling.ts +108 -0
  511. package/Utils/Rum/UrlScrubber.ts +185 -0
  512. package/Utils/Schema/ModelSchema.ts +27 -3
  513. package/Utils/StatusPage/GroupNestingLayout.ts +343 -0
  514. package/Utils/StatusPage/GroupTree.ts +307 -0
  515. package/Utils/StatusPage/Report.ts +304 -0
  516. package/Utils/StatusPage/ResourceUptime.ts +90 -17
  517. package/Utils/ValueFormatter.ts +300 -54
  518. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +63 -0
  519. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
  520. package/build/dist/Models/AnalyticsModels/Index.js +10 -0
  521. package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
  522. package/build/dist/Models/AnalyticsModels/Log.js +56 -0
  523. package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
  524. package/build/dist/Models/AnalyticsModels/RumSession.js +1159 -0
  525. package/build/dist/Models/AnalyticsModels/RumSession.js.map +1 -0
  526. package/build/dist/Models/AnalyticsModels/RumSessionChunk.js +670 -0
  527. package/build/dist/Models/AnalyticsModels/RumSessionChunk.js.map +1 -0
  528. package/build/dist/Models/AnalyticsModels/Span.js +56 -0
  529. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  530. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +54 -0
  531. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
  532. package/build/dist/Models/DatabaseModels/AIRun.js +32 -0
  533. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  534. package/build/dist/Models/DatabaseModels/Alert.js +30 -0
  535. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  536. package/build/dist/Models/DatabaseModels/AlertCustomField.js +1 -1
  537. package/build/dist/Models/DatabaseModels/AlertCustomField.js.map +1 -1
  538. package/build/dist/Models/DatabaseModels/AlertEpisodeStateTimeline.js +1 -0
  539. package/build/dist/Models/DatabaseModels/AlertEpisodeStateTimeline.js.map +1 -1
  540. package/build/dist/Models/DatabaseModels/AlertFeed.js +1 -0
  541. package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
  542. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js +1 -0
  543. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js.map +1 -1
  544. package/build/dist/Models/DatabaseModels/AutoRemediationRule.js +998 -0
  545. package/build/dist/Models/DatabaseModels/AutoRemediationRule.js.map +1 -0
  546. package/build/dist/Models/DatabaseModels/AutoRemediationSuggestion.js +917 -0
  547. package/build/dist/Models/DatabaseModels/AutoRemediationSuggestion.js.map +1 -0
  548. package/build/dist/Models/DatabaseModels/CodeRepository.js +132 -0
  549. package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
  550. package/build/dist/Models/DatabaseModels/GlobalConfig.js +327 -0
  551. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  552. package/build/dist/Models/DatabaseModels/Incident.js +30 -0
  553. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  554. package/build/dist/Models/DatabaseModels/IncidentCustomField.js +1 -1
  555. package/build/dist/Models/DatabaseModels/IncidentCustomField.js.map +1 -1
  556. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +1 -0
  557. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -1
  558. package/build/dist/Models/DatabaseModels/IncidentFeed.js +1 -0
  559. package/build/dist/Models/DatabaseModels/IncidentFeed.js.map +1 -1
  560. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +1 -0
  561. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
  562. package/build/dist/Models/DatabaseModels/Index.js +22 -8
  563. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  564. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js +8 -0
  565. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js.map +1 -1
  566. package/build/dist/Models/DatabaseModels/LogDropFilter.js +91 -0
  567. package/build/dist/Models/DatabaseModels/LogDropFilter.js.map +1 -1
  568. package/build/dist/Models/DatabaseModels/MonitorCustomField.js +1 -1
  569. package/build/dist/Models/DatabaseModels/MonitorCustomField.js.map +1 -1
  570. package/build/dist/Models/DatabaseModels/MonitorStatus.js +1 -1
  571. package/build/dist/Models/DatabaseModels/MonitorStatus.js.map +1 -1
  572. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +14 -4
  573. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
  574. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js +2 -2
  575. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js.map +1 -1
  576. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js +2 -2
  577. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js.map +1 -1
  578. package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js +1 -1
  579. package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js.map +1 -1
  580. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js +1 -1
  581. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js.map +1 -1
  582. package/build/dist/Models/DatabaseModels/Project.js +235 -0
  583. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  584. package/build/dist/Models/DatabaseModels/RecommendationDismissal.js +484 -0
  585. package/build/dist/Models/DatabaseModels/RecommendationDismissal.js.map +1 -0
  586. package/build/dist/Models/DatabaseModels/RumApplication.js +930 -0
  587. package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
  588. package/build/dist/Models/DatabaseModels/RumSessionErasureRequest.js +591 -0
  589. package/build/dist/Models/DatabaseModels/RumSessionErasureRequest.js.map +1 -0
  590. package/build/dist/Models/DatabaseModels/RumSessionPin.js +483 -0
  591. package/build/dist/Models/DatabaseModels/RumSessionPin.js.map +1 -0
  592. package/build/dist/Models/DatabaseModels/RumSessionReplayView.js +433 -0
  593. package/build/dist/Models/DatabaseModels/RumSessionReplayView.js.map +1 -0
  594. package/build/dist/Models/DatabaseModels/RunbookCredential.js +693 -0
  595. package/build/dist/Models/DatabaseModels/RunbookCredential.js.map +1 -0
  596. package/build/dist/Models/DatabaseModels/RunbookSecret.js +8 -8
  597. package/build/dist/Models/DatabaseModels/RunbookSecret.js.map +1 -1
  598. package/build/dist/Models/DatabaseModels/{RunbookAgent.js → Runner.js} +235 -70
  599. package/build/dist/Models/DatabaseModels/Runner.js.map +1 -0
  600. package/build/dist/Models/DatabaseModels/{RunbookAgentJob.js → RunnerJob.js} +173 -40
  601. package/build/dist/Models/DatabaseModels/RunnerJob.js.map +1 -0
  602. package/build/dist/Models/DatabaseModels/{RunbookAgentOwnerTeam.js → RunnerOwnerTeam.js} +57 -57
  603. package/build/dist/Models/DatabaseModels/RunnerOwnerTeam.js.map +1 -0
  604. package/build/dist/Models/DatabaseModels/{RunbookAgentOwnerUser.js → RunnerOwnerUser.js} +57 -57
  605. package/build/dist/Models/DatabaseModels/RunnerOwnerUser.js.map +1 -0
  606. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js +1 -1
  607. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js.map +1 -1
  608. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +1 -0
  609. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
  610. package/build/dist/Models/DatabaseModels/StatusPageCustomField.js +1 -1
  611. package/build/dist/Models/DatabaseModels/StatusPageCustomField.js.map +1 -1
  612. package/build/dist/Models/DatabaseModels/StatusPageGroup.js +94 -0
  613. package/build/dist/Models/DatabaseModels/StatusPageGroup.js.map +1 -1
  614. package/build/dist/Models/DatabaseModels/TeamCustomField.js +1 -1
  615. package/build/dist/Models/DatabaseModels/TeamCustomField.js.map +1 -1
  616. package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js +1 -1
  617. package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js.map +1 -1
  618. package/build/dist/Models/DatabaseModels/TraceDropFilter.js +91 -0
  619. package/build/dist/Models/DatabaseModels/TraceDropFilter.js.map +1 -1
  620. package/build/dist/Models/DatabaseModels/WorkflowVariable.js +5 -1
  621. package/build/dist/Models/DatabaseModels/WorkflowVariable.js.map +1 -1
  622. package/build/dist/Server/API/AIAgentDataAPI.js +130 -45
  623. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  624. package/build/dist/Server/API/AIAgentTaskAPI.js +26 -36
  625. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  626. package/build/dist/Server/API/AIAgentTaskLogAPI.js +11 -28
  627. package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
  628. package/build/dist/Server/API/AlertAPI.js +22 -13
  629. package/build/dist/Server/API/AlertAPI.js.map +1 -1
  630. package/build/dist/Server/API/AutoRemediationAPI.js +416 -0
  631. package/build/dist/Server/API/AutoRemediationAPI.js.map +1 -0
  632. package/build/dist/Server/API/BaseAPI.js +22 -1
  633. package/build/dist/Server/API/BaseAPI.js.map +1 -1
  634. package/build/dist/Server/API/BaseAnalyticsAPI.js +28 -2
  635. package/build/dist/Server/API/BaseAnalyticsAPI.js.map +1 -1
  636. package/build/dist/Server/API/CommonAPI.js +66 -0
  637. package/build/dist/Server/API/CommonAPI.js.map +1 -1
  638. package/build/dist/Server/API/DashboardAPI.js +265 -6
  639. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  640. package/build/dist/Server/API/IncidentAPI.js +43 -26
  641. package/build/dist/Server/API/IncidentAPI.js.map +1 -1
  642. package/build/dist/Server/API/IncidentEpisodeAPI.js +21 -12
  643. package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
  644. package/build/dist/Server/API/MonitorAPI.js +23 -0
  645. package/build/dist/Server/API/MonitorAPI.js.map +1 -1
  646. package/build/dist/Server/API/MonitorTemplateAPI.js +4 -0
  647. package/build/dist/Server/API/MonitorTemplateAPI.js.map +1 -1
  648. package/build/dist/Server/API/ProbeAPI.js +131 -15
  649. package/build/dist/Server/API/ProbeAPI.js.map +1 -1
  650. package/build/dist/Server/API/ProjectAPI.js +62 -3
  651. package/build/dist/Server/API/ProjectAPI.js.map +1 -1
  652. package/build/dist/Server/API/ScheduledMaintenanceAPI.js +23 -14
  653. package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
  654. package/build/dist/Server/API/StatusPageAPI.js +61 -33
  655. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  656. package/build/dist/Server/API/TelemetryAPI.js +940 -3
  657. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  658. package/build/dist/Server/API/UserIncomingCallNumberAPI.js +18 -0
  659. package/build/dist/Server/API/UserIncomingCallNumberAPI.js.map +1 -1
  660. package/build/dist/Server/API/WorkspaceNotificationRuleAPI.js +26 -2
  661. package/build/dist/Server/API/WorkspaceNotificationRuleAPI.js.map +1 -1
  662. package/build/dist/Server/DatabaseConfig.js +23 -4
  663. package/build/dist/Server/DatabaseConfig.js.map +1 -1
  664. package/build/dist/Server/EnvironmentConfig.js +8 -0
  665. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  666. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785320000000-RepairCrossProjectIncidentReferences.js +397 -0
  667. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785320000000-RepairCrossProjectIncidentReferences.js.map +1 -0
  668. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785329453269-AddParentGroupToStatusPageGroup.js +16 -0
  669. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785329453269-AddParentGroupToStatusPageGroup.js.map +1 -0
  670. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785397674289-AddRecommendationDismissalTable.js +30 -0
  671. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785397674289-AddRecommendationDismissalTable.js.map +1 -0
  672. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785405581596-AddDroppedCountersToDropFilters.js +34 -0
  673. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785405581596-AddDroppedCountersToDropFilters.js.map +1 -0
  674. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785417351021-AddSessionReplay.js +106 -0
  675. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785417351021-AddSessionReplay.js.map +1 -0
  676. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785491583874-EnableSessionReplayByDefault.js +37 -0
  677. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785491583874-EnableSessionReplayByDefault.js.map +1 -0
  678. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785496223183-AddMonitorSummaryToIncidentAndAlert.js +18 -0
  679. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785496223183-AddMonitorSummaryToIncidentAndAlert.js.map +1 -0
  680. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785516996695-AddSessionReplayReliabilityColumns.js +29 -0
  681. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785516996695-AddSessionReplayReliabilityColumns.js.map +1 -0
  682. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785533806494-AddSessionReplayCorrelationColumns.js +35 -0
  683. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785533806494-AddSessionReplayCorrelationColumns.js.map +1 -0
  684. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785749674203-AddRedisAndPostgresHealthNotificationColumns.js +40 -0
  685. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785749674203-AddRedisAndPostgresHealthNotificationColumns.js.map +1 -0
  686. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785763818197-AddAutoRemediation.js +128 -0
  687. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785763818197-AddAutoRemediation.js.map +1 -0
  688. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785768089408-AddRemediationVerification.js +28 -0
  689. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785768089408-AddRemediationVerification.js.map +1 -0
  690. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785776960660-AddRunnerCapabilities.js +14 -0
  691. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785776960660-AddRunnerCapabilities.js.map +1 -0
  692. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785790000000-AddIncidentInvestigationGating.js +27 -0
  693. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785790000000-AddIncidentInvestigationGating.js.map +1 -0
  694. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785800000000-AddRunbookCredential.js +44 -0
  695. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785800000000-AddRunbookCredential.js.map +1 -0
  696. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785810000000-RenameRunbookAgentToRunner.js +88 -0
  697. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785810000000-RenameRunbookAgentToRunner.js.map +1 -0
  698. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785860000000-SessionReplayDefaultToSensitiveInputMasking.js +59 -0
  699. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785860000000-SessionReplayDefaultToSensitiveInputMasking.js.map +1 -0
  700. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785870000000-AddAiCommandRemediation.js +76 -0
  701. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785870000000-AddAiCommandRemediation.js.map +1 -0
  702. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785880000000-AlignRunnerSchemaWithEntities.js +214 -0
  703. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785880000000-AlignRunnerSchemaWithEntities.js.map +1 -0
  704. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785890000000-AddFixVerificationAndAutomaticCodeFixes.js +44 -0
  705. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785890000000-AddFixVerificationAndAutomaticCodeFixes.js.map +1 -0
  706. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +40 -0
  707. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  708. package/build/dist/Server/Services/AIRunService.js +1 -4
  709. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  710. package/build/dist/Server/Services/AIService.js +26 -0
  711. package/build/dist/Server/Services/AIService.js.map +1 -1
  712. package/build/dist/Server/Services/AlertEpisodeService.js +39 -0
  713. package/build/dist/Server/Services/AlertEpisodeService.js.map +1 -1
  714. package/build/dist/Server/Services/AlertService.js +132 -4
  715. package/build/dist/Server/Services/AlertService.js.map +1 -1
  716. package/build/dist/Server/Services/AlertSeverityService.js +24 -11
  717. package/build/dist/Server/Services/AlertSeverityService.js.map +1 -1
  718. package/build/dist/Server/Services/AlertStateService.js +24 -11
  719. package/build/dist/Server/Services/AlertStateService.js.map +1 -1
  720. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +917 -0
  721. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -0
  722. package/build/dist/Server/Services/{RunbookAgentOwnerTeamService.js → AutoRemediationRuleService.js} +2 -2
  723. package/build/dist/Server/Services/AutoRemediationRuleService.js.map +1 -0
  724. package/build/dist/Server/Services/AutoRemediationSuggestionService.js +127 -0
  725. package/build/dist/Server/Services/AutoRemediationSuggestionService.js.map +1 -0
  726. package/build/dist/Server/Services/BillingService.js +116 -1
  727. package/build/dist/Server/Services/BillingService.js.map +1 -1
  728. package/build/dist/Server/Services/DatabaseService.js +210 -19
  729. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  730. package/build/dist/Server/Services/IncidentEpisodeService.js +39 -0
  731. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
  732. package/build/dist/Server/Services/IncidentService.js +152 -4
  733. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  734. package/build/dist/Server/Services/IncidentSeverityService.js +24 -11
  735. package/build/dist/Server/Services/IncidentSeverityService.js.map +1 -1
  736. package/build/dist/Server/Services/IncidentStateService.js +24 -11
  737. package/build/dist/Server/Services/IncidentStateService.js.map +1 -1
  738. package/build/dist/Server/Services/IncidentTemplateService.js +97 -0
  739. package/build/dist/Server/Services/IncidentTemplateService.js.map +1 -1
  740. package/build/dist/Server/Services/Index.js +20 -0
  741. package/build/dist/Server/Services/Index.js.map +1 -1
  742. package/build/dist/Server/Services/LogDropFilterService.js +93 -0
  743. package/build/dist/Server/Services/LogDropFilterService.js.map +1 -1
  744. package/build/dist/Server/Services/MonitorProbeService.js +73 -5
  745. package/build/dist/Server/Services/MonitorProbeService.js.map +1 -1
  746. package/build/dist/Server/Services/MonitorService.js +58 -39
  747. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  748. package/build/dist/Server/Services/MonitorStatusService.js +25 -11
  749. package/build/dist/Server/Services/MonitorStatusService.js.map +1 -1
  750. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +71 -0
  751. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
  752. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +12 -11
  753. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -1
  754. package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js +43 -0
  755. package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js.map +1 -1
  756. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +12 -11
  757. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -1
  758. package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js +41 -0
  759. package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js.map +1 -1
  760. package/build/dist/Server/Services/NetworkDeviceService.js +129 -20
  761. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  762. package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js +67 -10
  763. package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js.map +1 -1
  764. package/build/dist/Server/Services/NetworkSiteService.js +19 -8
  765. package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
  766. package/build/dist/Server/Services/ProbeService.js +64 -0
  767. package/build/dist/Server/Services/ProbeService.js.map +1 -1
  768. package/build/dist/Server/Services/ProjectService.js +146 -7
  769. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  770. package/build/dist/Server/Services/RecommendationDismissalService.js +50 -0
  771. package/build/dist/Server/Services/RecommendationDismissalService.js.map +1 -0
  772. package/build/dist/Server/Services/RumApplicationService.js +202 -0
  773. package/build/dist/Server/Services/RumApplicationService.js.map +1 -1
  774. package/build/dist/Server/Services/RumSessionChunkService.js +9 -0
  775. package/build/dist/Server/Services/RumSessionChunkService.js.map +1 -0
  776. package/build/dist/Server/Services/RumSessionErasureRequestService.js +190 -0
  777. package/build/dist/Server/Services/RumSessionErasureRequestService.js.map +1 -0
  778. package/build/dist/Server/Services/RumSessionPinService.js +208 -0
  779. package/build/dist/Server/Services/RumSessionPinService.js.map +1 -0
  780. package/build/dist/Server/Services/RumSessionReplayViewService.js +180 -0
  781. package/build/dist/Server/Services/RumSessionReplayViewService.js.map +1 -0
  782. package/build/dist/Server/Services/RumSessionService.js +102 -0
  783. package/build/dist/Server/Services/RumSessionService.js.map +1 -0
  784. package/build/dist/Server/Services/RunbookCredentialService.js +67 -0
  785. package/build/dist/Server/Services/RunbookCredentialService.js.map +1 -0
  786. package/build/dist/Server/Services/{RunbookAgentJobService.js → RunnerJobService.js} +217 -47
  787. package/build/dist/Server/Services/RunnerJobService.js.map +1 -0
  788. package/build/dist/Server/Services/{RunbookAgentOwnerUserService.js → RunnerOwnerTeamService.js} +2 -2
  789. package/build/dist/Server/Services/RunnerOwnerTeamService.js.map +1 -0
  790. package/build/dist/Server/Services/RunnerOwnerUserService.js +9 -0
  791. package/build/dist/Server/Services/RunnerOwnerUserService.js.map +1 -0
  792. package/build/dist/Server/Services/RunnerService.js +168 -0
  793. package/build/dist/Server/Services/RunnerService.js.map +1 -0
  794. package/build/dist/Server/Services/ScheduledMaintenanceService.js +83 -0
  795. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  796. package/build/dist/Server/Services/ScheduledMaintenanceStateService.js +24 -11
  797. package/build/dist/Server/Services/ScheduledMaintenanceStateService.js.map +1 -1
  798. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +15 -1
  799. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
  800. package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js +65 -0
  801. package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js.map +1 -1
  802. package/build/dist/Server/Services/ServiceService.js +8 -2
  803. package/build/dist/Server/Services/ServiceService.js.map +1 -1
  804. package/build/dist/Server/Services/StatusPageGroupService.js +136 -0
  805. package/build/dist/Server/Services/StatusPageGroupService.js.map +1 -1
  806. package/build/dist/Server/Services/StatusPageService.js +173 -16
  807. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  808. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js +17 -1
  809. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js.map +1 -1
  810. package/build/dist/Server/Services/TelemetryExceptionService.js +3 -16
  811. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  812. package/build/dist/Server/Services/TelemetryUsageBillingService.js +31 -3
  813. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  814. package/build/dist/Server/Services/TraceAggregationService.js +106 -2
  815. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  816. package/build/dist/Server/Services/TraceDropFilterService.js +93 -0
  817. package/build/dist/Server/Services/TraceDropFilterService.js.map +1 -1
  818. package/build/dist/Server/Types/Billing/MeteredPlan/AllMeteredPlans.js +16 -0
  819. package/build/dist/Server/Types/Billing/MeteredPlan/AllMeteredPlans.js.map +1 -1
  820. package/build/dist/Server/Types/Billing/MeteredPlan/ServerMeteredPlan.js +9 -0
  821. package/build/dist/Server/Types/Billing/MeteredPlan/ServerMeteredPlan.js.map +1 -1
  822. package/build/dist/Server/Types/Workflow/Components/API/Delete.js +11 -0
  823. package/build/dist/Server/Types/Workflow/Components/API/Delete.js.map +1 -1
  824. package/build/dist/Server/Types/Workflow/Components/API/Get.js +11 -0
  825. package/build/dist/Server/Types/Workflow/Components/API/Get.js.map +1 -1
  826. package/build/dist/Server/Types/Workflow/Components/API/Patch.js +11 -0
  827. package/build/dist/Server/Types/Workflow/Components/API/Patch.js.map +1 -1
  828. package/build/dist/Server/Types/Workflow/Components/API/Post.js +11 -0
  829. package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
  830. package/build/dist/Server/Types/Workflow/Components/API/Put.js +12 -0
  831. package/build/dist/Server/Types/Workflow/Components/API/Put.js.map +1 -1
  832. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +38 -6
  833. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
  834. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentAuth.js +104 -0
  835. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentAuth.js.map +1 -0
  836. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentAvailability.js +54 -0
  837. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentAvailability.js.map +1 -0
  838. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +11 -7
  839. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -1
  840. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js +3 -4
  841. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js.map +1 -1
  842. package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js +724 -0
  843. package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js.map +1 -0
  844. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js +668 -0
  845. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js.map +1 -0
  846. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js +657 -0
  847. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js.map +1 -0
  848. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +52 -7
  849. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
  850. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +53 -5
  851. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
  852. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +25 -6
  853. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -1
  854. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +131 -17
  855. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -1
  856. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +200 -5
  857. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
  858. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js +2 -7
  859. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js.map +1 -1
  860. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +4 -17
  861. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -1
  862. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +203 -19
  863. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
  864. package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js +89 -0
  865. package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js.map +1 -0
  866. package/build/dist/Server/Utils/AI/SRE/RemediationHandoff.js +82 -0
  867. package/build/dist/Server/Utils/AI/SRE/RemediationHandoff.js.map +1 -0
  868. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +4 -19
  869. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -1
  870. package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js +2 -2
  871. package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js +36 -0
  872. package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js.map +1 -1
  873. package/build/dist/Server/Utils/AutoRemediation/CommandPlanExecutor.js +498 -0
  874. package/build/dist/Server/Utils/AutoRemediation/CommandPlanExecutor.js.map +1 -0
  875. package/build/dist/Server/Utils/AutoRemediation/RemediationVerifier.js +492 -0
  876. package/build/dist/Server/Utils/AutoRemediation/RemediationVerifier.js.map +1 -0
  877. package/build/dist/Server/Utils/CorsOptions.js +47 -0
  878. package/build/dist/Server/Utils/CorsOptions.js.map +1 -0
  879. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js +132 -0
  880. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js.map +1 -0
  881. package/build/dist/Server/Utils/Database/RelationIdUtil.js +51 -0
  882. package/build/dist/Server/Utils/Database/RelationIdUtil.js.map +1 -0
  883. package/build/dist/Server/Utils/DropFilterValidation.js +80 -0
  884. package/build/dist/Server/Utils/DropFilterValidation.js.map +1 -0
  885. package/build/dist/Server/Utils/Errors.js +3 -0
  886. package/build/dist/Server/Utils/Errors.js.map +1 -1
  887. package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js +38 -0
  888. package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js.map +1 -1
  889. package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js +194 -0
  890. package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js.map +1 -0
  891. package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js +292 -0
  892. package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js.map +1 -0
  893. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +39 -12
  894. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  895. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +47 -18
  896. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  897. package/build/dist/Server/Utils/Monitor/MonitorResource.js +16 -0
  898. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  899. package/build/dist/Server/Utils/Monitor/MonitorSummaryCapture.js +92 -0
  900. package/build/dist/Server/Utils/Monitor/MonitorSummaryCapture.js.map +1 -0
  901. package/build/dist/Server/Utils/NetworkDevice/RulePatternValidator.js +27 -0
  902. package/build/dist/Server/Utils/NetworkDevice/RulePatternValidator.js.map +1 -0
  903. package/build/dist/Server/Utils/OpenAPI.js +2 -1
  904. package/build/dist/Server/Utils/OpenAPI.js.map +1 -1
  905. package/build/dist/Server/Utils/Runbook/RunbookExecutePermission.js +67 -0
  906. package/build/dist/Server/Utils/Runbook/RunbookExecutePermission.js.map +1 -0
  907. package/build/dist/Server/Utils/SessionReplay/SessionReplayErasureTombstone.js +98 -0
  908. package/build/dist/Server/Utils/SessionReplay/SessionReplayErasureTombstone.js.map +1 -0
  909. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js +378 -0
  910. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js.map +1 -0
  911. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCacheStore.js +137 -0
  912. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCacheStore.js.map +1 -0
  913. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js +998 -0
  914. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js.map +1 -0
  915. package/build/dist/Server/Utils/SessionReplay/SessionReplayRetention.js +59 -0
  916. package/build/dist/Server/Utils/SessionReplay/SessionReplayRetention.js.map +1 -0
  917. package/build/dist/Server/Utils/SessionReplay/SessionReplayTargeting.js +98 -0
  918. package/build/dist/Server/Utils/SessionReplay/SessionReplayTargeting.js.map +1 -0
  919. package/build/dist/Server/Utils/SessionReplay/SessionReplayUsage.js +69 -0
  920. package/build/dist/Server/Utils/SessionReplay/SessionReplayUsage.js.map +1 -0
  921. package/build/dist/Server/Utils/StartServer.js +40 -3
  922. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  923. package/build/dist/Server/Utils/Telemetry/AppMetrics.js +26 -0
  924. package/build/dist/Server/Utils/Telemetry/AppMetrics.js.map +1 -1
  925. package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js +27 -6
  926. package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js.map +1 -1
  927. package/build/dist/Types/AI/AIRunStatus.js +17 -5
  928. package/build/dist/Types/AI/AIRunStatus.js.map +1 -1
  929. package/build/dist/Types/AI/AIRunType.js +18 -0
  930. package/build/dist/Types/AI/AIRunType.js.map +1 -1
  931. package/build/dist/Types/AI/FixVerificationStatus.js +22 -0
  932. package/build/dist/Types/AI/FixVerificationStatus.js.map +1 -0
  933. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +16 -0
  934. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
  935. package/build/dist/Types/AutoRemediation/AiRemediationCommandPlan.js +192 -0
  936. package/build/dist/Types/AutoRemediation/AiRemediationCommandPlan.js.map +1 -0
  937. package/build/dist/Types/AutoRemediation/AutoRemediationExecutionMode.js +18 -0
  938. package/build/dist/Types/AutoRemediation/AutoRemediationExecutionMode.js.map +1 -0
  939. package/build/dist/Types/AutoRemediation/AutoRemediationSuggestionStatus.js +31 -0
  940. package/build/dist/Types/AutoRemediation/AutoRemediationSuggestionStatus.js.map +1 -0
  941. package/build/dist/Types/AutoRemediation/AutoRemediationSuggestionType.js +18 -0
  942. package/build/dist/Types/AutoRemediation/AutoRemediationSuggestionType.js.map +1 -0
  943. package/build/dist/Types/AutoRemediation/AutoRemediationTriggerEntity.js +12 -0
  944. package/build/dist/Types/AutoRemediation/AutoRemediationTriggerEntity.js.map +1 -0
  945. package/build/dist/Types/AutoRemediation/AutoRemediationVerificationStatus.js +22 -0
  946. package/build/dist/Types/AutoRemediation/AutoRemediationVerificationStatus.js.map +1 -0
  947. package/build/dist/Types/CustomField/CustomFieldDropdownOption.js +110 -0
  948. package/build/dist/Types/CustomField/CustomFieldDropdownOption.js.map +1 -0
  949. package/build/dist/Types/Dashboard/DashboardComponentType.js +2 -0
  950. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  951. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +4 -0
  952. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  953. package/build/dist/Types/Dashboard/DashboardComponents/DashboardClockComponent.js +19 -0
  954. package/build/dist/Types/Dashboard/DashboardComponents/DashboardClockComponent.js.map +1 -0
  955. package/build/dist/Types/Dashboard/DashboardComponents/DashboardHtmlComponent.js +2 -0
  956. package/build/dist/Types/Dashboard/DashboardComponents/DashboardHtmlComponent.js.map +1 -0
  957. package/build/dist/Types/Dashboard/DashboardTemplates.js +487 -0
  958. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  959. package/build/dist/Types/Date.js +20 -4
  960. package/build/dist/Types/Date.js.map +1 -1
  961. package/build/dist/Types/Email/EmailTemplateType.js +2 -0
  962. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  963. package/build/dist/Types/Kubernetes/KubernetesRightSizing.js +229 -0
  964. package/build/dist/Types/Kubernetes/KubernetesRightSizing.js.map +1 -0
  965. package/build/dist/Types/MeteredPlan/ProductType.js +1 -0
  966. package/build/dist/Types/MeteredPlan/ProductType.js.map +1 -1
  967. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +192 -0
  968. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
  969. package/build/dist/Types/Monitor/MonitorStep.js +6 -1
  970. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  971. package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js +43 -2
  972. package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js.map +1 -1
  973. package/build/dist/Types/Monitor/MonitorSteps.js +5 -0
  974. package/build/dist/Types/Monitor/MonitorSteps.js.map +1 -1
  975. package/build/dist/Types/Monitor/MonitorSummarySnapshot.js +13 -0
  976. package/build/dist/Types/Monitor/MonitorSummarySnapshot.js.map +1 -0
  977. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +326 -0
  978. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -0
  979. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js +110 -0
  980. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js.map +1 -0
  981. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +59 -0
  982. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -0
  983. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +491 -0
  984. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -0
  985. package/build/dist/Types/Monitor/RumAlertTemplates.js +297 -0
  986. package/build/dist/Types/Monitor/RumAlertTemplates.js.map +1 -0
  987. package/build/dist/Types/Permission.js +224 -24
  988. package/build/dist/Types/Permission.js.map +1 -1
  989. package/build/dist/Types/Recommendation/RecommendationType.js +21 -0
  990. package/build/dist/Types/Recommendation/RecommendationType.js.map +1 -0
  991. package/build/dist/Types/Rum/SessionReplay.js +155 -0
  992. package/build/dist/Types/Rum/SessionReplay.js.map +1 -0
  993. package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js +26 -0
  994. package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js.map +1 -0
  995. package/build/dist/Types/Rum/SessionReplayConsentMode.js +27 -0
  996. package/build/dist/Types/Rum/SessionReplayConsentMode.js.map +1 -0
  997. package/build/dist/Types/Rum/SessionReplayMaskingMode.js +79 -0
  998. package/build/dist/Types/Rum/SessionReplayMaskingMode.js.map +1 -0
  999. package/build/dist/Types/Rum/SessionReplayTriggerReason.js +28 -0
  1000. package/build/dist/Types/Rum/SessionReplayTriggerReason.js.map +1 -0
  1001. package/build/dist/Types/Runbook/RunbookCredentialType.js +7 -0
  1002. package/build/dist/Types/Runbook/RunbookCredentialType.js.map +1 -0
  1003. package/build/dist/Types/Runbook/RunbookExecutionDeadline.js +93 -0
  1004. package/build/dist/Types/Runbook/RunbookExecutionDeadline.js.map +1 -0
  1005. package/build/dist/Types/Runbook/RunbookStep.js +20 -1
  1006. package/build/dist/Types/Runbook/RunbookStep.js.map +1 -1
  1007. package/build/dist/Types/Runbook/RunbookStepTimeout.js +142 -0
  1008. package/build/dist/Types/Runbook/RunbookStepTimeout.js.map +1 -0
  1009. package/build/dist/Types/Runbook/RunbookStepType.js +24 -0
  1010. package/build/dist/Types/Runbook/RunbookStepType.js.map +1 -1
  1011. package/build/dist/Types/Runbook/RunnerJobOrigin.js +21 -0
  1012. package/build/dist/Types/Runbook/RunnerJobOrigin.js.map +1 -0
  1013. package/build/dist/Types/Runbook/RunnerJobStatus.js +22 -0
  1014. package/build/dist/Types/Runbook/RunnerJobStatus.js.map +1 -0
  1015. package/build/dist/Types/StatusPage/StatusPageReport.js +22 -0
  1016. package/build/dist/Types/StatusPage/StatusPageReport.js.map +1 -0
  1017. package/build/dist/Types/Telemetry/DropFilterSampling.js +75 -0
  1018. package/build/dist/Types/Telemetry/DropFilterSampling.js.map +1 -0
  1019. package/build/dist/Types/Telemetry/TelemetryRetentionConfig.js.map +1 -1
  1020. package/build/dist/Types/Text.js +29 -0
  1021. package/build/dist/Types/Text.js.map +1 -1
  1022. package/build/dist/UI/Components/AI/GenerateFromAIModal.js +1 -2
  1023. package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -1
  1024. package/build/dist/UI/Components/Accordion/Accordion.js +9 -2
  1025. package/build/dist/UI/Components/Accordion/Accordion.js.map +1 -1
  1026. package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js +143 -28
  1027. package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js.map +1 -1
  1028. package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js +83 -10
  1029. package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js.map +1 -1
  1030. package/build/dist/UI/Components/BulkUpdate/BulkOwnerActions.js +11 -0
  1031. package/build/dist/UI/Components/BulkUpdate/BulkOwnerActions.js.map +1 -1
  1032. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +27 -14
  1033. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  1034. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +11 -13
  1035. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
  1036. package/build/dist/UI/Components/CustomFields/DropdownOptionsInput.js +76 -45
  1037. package/build/dist/UI/Components/CustomFields/DropdownOptionsInput.js.map +1 -1
  1038. package/build/dist/UI/Components/Date/RangeStartAndEndDateView.js +1 -1
  1039. package/build/dist/UI/Components/Date/RangeStartAndEndDateView.js.map +1 -1
  1040. package/build/dist/UI/Components/Detail/Detail.js +3 -8
  1041. package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
  1042. package/build/dist/UI/Components/Dropdown/Dropdown.js +2 -5
  1043. package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
  1044. package/build/dist/UI/Components/Dropdown/DropdownMenuZIndex.js +7 -0
  1045. package/build/dist/UI/Components/Dropdown/DropdownMenuZIndex.js.map +1 -0
  1046. package/build/dist/UI/Components/Dropdown/DropdownValueBadge.js +32 -0
  1047. package/build/dist/UI/Components/Dropdown/DropdownValueBadge.js.map +1 -0
  1048. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +2 -20
  1049. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  1050. package/build/dist/UI/Components/Error/PageError.js +1 -3
  1051. package/build/dist/UI/Components/Error/PageError.js.map +1 -1
  1052. package/build/dist/UI/Components/ErrorBoundary.js +145 -11
  1053. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  1054. package/build/dist/UI/Components/Filters/OperatorSelector.js +210 -20
  1055. package/build/dist/UI/Components/Filters/OperatorSelector.js.map +1 -1
  1056. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js +26 -10
  1057. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js.map +1 -1
  1058. package/build/dist/UI/Components/Forms/Fields/IconPicker.js +28 -13
  1059. package/build/dist/UI/Components/Forms/Fields/IconPicker.js.map +1 -1
  1060. package/build/dist/UI/Components/Forms/Validation.js +9 -5
  1061. package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
  1062. package/build/dist/UI/Components/InfoCard/InfoCard.js +28 -1
  1063. package/build/dist/UI/Components/InfoCard/InfoCard.js.map +1 -1
  1064. package/build/dist/UI/Components/List/List.js +1 -1
  1065. package/build/dist/UI/Components/List/List.js.map +1 -1
  1066. package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js +13 -2
  1067. package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js.map +1 -1
  1068. package/build/dist/UI/Components/Modal/Modal.js +4 -32
  1069. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  1070. package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js.map +1 -1
  1071. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +69 -33
  1072. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  1073. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js +73 -32
  1074. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js.map +1 -1
  1075. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js +21 -19
  1076. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js.map +1 -1
  1077. package/build/dist/UI/Components/Pagination/Pagination.js +14 -3
  1078. package/build/dist/UI/Components/Pagination/Pagination.js.map +1 -1
  1079. package/build/dist/UI/Components/Runbook/StepTimeoutInput.js +101 -0
  1080. package/build/dist/UI/Components/Runbook/StepTimeoutInput.js.map +1 -0
  1081. package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js +73 -0
  1082. package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js.map +1 -0
  1083. package/build/dist/UI/Components/Table/Table.js +1 -1
  1084. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  1085. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js +13 -2
  1086. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js.map +1 -1
  1087. package/build/dist/UI/Types/UseAnchoredFieldPopup.js +197 -0
  1088. package/build/dist/UI/Types/UseAnchoredFieldPopup.js.map +1 -0
  1089. package/build/dist/UI/Utils/Dropdown.js +18 -0
  1090. package/build/dist/UI/Utils/Dropdown.js.map +1 -1
  1091. package/build/dist/UI/Utils/DropdownAlignment.js +98 -0
  1092. package/build/dist/UI/Utils/DropdownAlignment.js.map +1 -0
  1093. package/build/dist/UI/Utils/TableFilterUrlState.js +48 -15
  1094. package/build/dist/UI/Utils/TableFilterUrlState.js.map +1 -1
  1095. package/build/dist/UI/Utils/Timezone.js +13 -2
  1096. package/build/dist/UI/Utils/Timezone.js.map +1 -1
  1097. package/build/dist/UI/Utils/UseClockTick.js +41 -0
  1098. package/build/dist/UI/Utils/UseClockTick.js.map +1 -0
  1099. package/build/dist/Utils/API.js +39 -2
  1100. package/build/dist/Utils/API.js.map +1 -1
  1101. package/build/dist/Utils/AiRemediation/CommandPolicy.js +303 -0
  1102. package/build/dist/Utils/AiRemediation/CommandPolicy.js.map +1 -0
  1103. package/build/dist/Utils/Dashboard/ClockWidgetFormat.js +232 -0
  1104. package/build/dist/Utils/Dashboard/ClockWidgetFormat.js.map +1 -0
  1105. package/build/dist/Utils/Dashboard/Components/DashboardClockComponent.js +146 -0
  1106. package/build/dist/Utils/Dashboard/Components/DashboardClockComponent.js.map +1 -0
  1107. package/build/dist/Utils/Dashboard/Components/DashboardHtmlComponent.js +133 -0
  1108. package/build/dist/Utils/Dashboard/Components/DashboardHtmlComponent.js.map +1 -0
  1109. package/build/dist/Utils/Dashboard/Components/DashboardValueComponent.js +10 -1
  1110. package/build/dist/Utils/Dashboard/Components/DashboardValueComponent.js.map +1 -1
  1111. package/build/dist/Utils/Dashboard/Components/Index.js +8 -0
  1112. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  1113. package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js +198 -0
  1114. package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js.map +1 -0
  1115. package/build/dist/Utils/Dashboard/ValueWidgetLayout.js +276 -0
  1116. package/build/dist/Utils/Dashboard/ValueWidgetLayout.js.map +1 -0
  1117. package/build/dist/Utils/Metrics/MetricSeriesScope.js +203 -0
  1118. package/build/dist/Utils/Metrics/MetricSeriesScope.js.map +1 -0
  1119. package/build/dist/Utils/Monitor/MonitorSummaryProbeUtil.js +97 -0
  1120. package/build/dist/Utils/Monitor/MonitorSummaryProbeUtil.js.map +1 -0
  1121. package/build/dist/Utils/Monitor/MonitorSummarySnapshotUtil.js +382 -0
  1122. package/build/dist/Utils/Monitor/MonitorSummarySnapshotUtil.js.map +1 -0
  1123. package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js +330 -0
  1124. package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js.map +1 -0
  1125. package/build/dist/Utils/NetworkSite/CidrMatchUtil.js +13 -7
  1126. package/build/dist/Utils/NetworkSite/CidrMatchUtil.js.map +1 -1
  1127. package/build/dist/Utils/Rules/RulePatternMatchUtil.js +87 -0
  1128. package/build/dist/Utils/Rules/RulePatternMatchUtil.js.map +1 -0
  1129. package/build/dist/Utils/Rum/ChunkMath.js +147 -0
  1130. package/build/dist/Utils/Rum/ChunkMath.js.map +1 -0
  1131. package/build/dist/Utils/Rum/Masking.js +143 -0
  1132. package/build/dist/Utils/Rum/Masking.js.map +1 -0
  1133. package/build/dist/Utils/Rum/SessionIdentity.js +161 -0
  1134. package/build/dist/Utils/Rum/SessionIdentity.js.map +1 -0
  1135. package/build/dist/Utils/Rum/SessionSampling.js +91 -0
  1136. package/build/dist/Utils/Rum/SessionSampling.js.map +1 -0
  1137. package/build/dist/Utils/Rum/UrlScrubber.js +144 -0
  1138. package/build/dist/Utils/Rum/UrlScrubber.js.map +1 -0
  1139. package/build/dist/Utils/Schema/ModelSchema.js +28 -3
  1140. package/build/dist/Utils/Schema/ModelSchema.js.map +1 -1
  1141. package/build/dist/Utils/StatusPage/GroupNestingLayout.js +280 -0
  1142. package/build/dist/Utils/StatusPage/GroupNestingLayout.js.map +1 -0
  1143. package/build/dist/Utils/StatusPage/GroupTree.js +214 -0
  1144. package/build/dist/Utils/StatusPage/GroupTree.js.map +1 -0
  1145. package/build/dist/Utils/StatusPage/Report.js +194 -0
  1146. package/build/dist/Utils/StatusPage/Report.js.map +1 -0
  1147. package/build/dist/Utils/StatusPage/ResourceUptime.js +60 -16
  1148. package/build/dist/Utils/StatusPage/ResourceUptime.js.map +1 -1
  1149. package/build/dist/Utils/ValueFormatter.js +239 -46
  1150. package/build/dist/Utils/ValueFormatter.js.map +1 -1
  1151. package/jest.config.json +3 -0
  1152. package/package.json +1 -1
  1153. package/tsconfig.json +19 -1
  1154. package/Server/Services/RunbookAgentService.ts +0 -93
  1155. package/build/dist/Models/DatabaseModels/RunbookAgent.js.map +0 -1
  1156. package/build/dist/Models/DatabaseModels/RunbookAgentJob.js.map +0 -1
  1157. package/build/dist/Models/DatabaseModels/RunbookAgentOwnerTeam.js.map +0 -1
  1158. package/build/dist/Models/DatabaseModels/RunbookAgentOwnerUser.js.map +0 -1
  1159. package/build/dist/Server/Services/RunbookAgentJobService.js.map +0 -1
  1160. package/build/dist/Server/Services/RunbookAgentOwnerTeamService.js.map +0 -1
  1161. package/build/dist/Server/Services/RunbookAgentOwnerUserService.js.map +0 -1
  1162. package/build/dist/Server/Services/RunbookAgentService.js +0 -91
  1163. package/build/dist/Server/Services/RunbookAgentService.js.map +0 -1
  1164. package/build/dist/Types/Runbook/RunbookAgentJobStatus.js +0 -22
  1165. package/build/dist/Types/Runbook/RunbookAgentJobStatus.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import UserMiddleware from "../Middleware/UserAuthorization";
2
- import Express from "../Utils/Express";
2
+ import Express, { getClientIp, } from "../Utils/Express";
3
3
  import Response from "../Utils/Response";
4
4
  import BadDataException from "../../Types/Exception/BadDataException";
5
5
  import CommonAPI from "./CommonAPI";
@@ -14,10 +14,24 @@ import PprofEncoder from "../Utils/Profile/PprofEncoder";
14
14
  import ProfileService from "../Services/ProfileService";
15
15
  import ProfileSampleService from "../Services/ProfileSampleService";
16
16
  import SortOrder from "../../Types/BaseDatabase/SortOrder";
17
- import Permission from "../../Types/Permission";
17
+ import Permission, { PermissionHelper, } from "../../Types/Permission";
18
+ import DatabaseCommonInteractionPropsUtil, { PermissionType, } from "../../Types/BaseDatabase/DatabaseCommonInteractionPropsUtil";
19
+ import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
20
+ import PaymentRequiredException from "../../Types/Exception/PaymentRequiredException";
21
+ import PermissionScope from "../../Types/Database/AccessControl/PermissionScope";
22
+ import SubscriptionPlan from "../../Types/Billing/SubscriptionPlan";
23
+ import { IsBillingEnabled, getAllEnvVars } from "../EnvironmentConfig";
24
+ import RumSession from "../../Models/AnalyticsModels/RumSession";
18
25
  import ObjectID from "../../Types/ObjectID";
19
26
  import OneUptimeDate from "../../Types/Date";
20
27
  import ResourceFacetResolver from "../Utils/Telemetry/ResourceFacetResolver";
28
+ import RumApplicationService from "../Services/RumApplicationService";
29
+ import ProjectService from "../Services/ProjectService";
30
+ import SessionReplayTargeting from "../Utils/SessionReplay/SessionReplayTargeting";
31
+ import SessionReplayUsage from "../Utils/SessionReplay/SessionReplayUsage";
32
+ import RumSessionReplayViewService from "../Services/RumSessionReplayViewService";
33
+ import SessionReplayReadService, { DEFAULT_SESSION_REPLAY_LIST_LIMIT, MAX_SESSION_REPLAY_FOR_EXCEPTION_LIMIT, } from "../Utils/SessionReplay/SessionReplayReadService";
34
+ import { DEFAULT_SESSION_REPLAY_MAX_BYTES_PER_PROJECT_PER_DAY, MAX_SESSION_REPLAY_CHUNKS_PER_READ, MAX_SESSION_REPLAY_READ_BYTES, } from "../../Types/Rum/SessionReplay";
21
35
  const router = Express.getRouter();
22
36
  const createTelemetryReadAccessGuard = (signalReadPermission) => {
23
37
  return [
@@ -377,6 +391,37 @@ function parseTraceFilterBody(body) {
377
391
  }
378
392
  return Object.fromEntries(entries);
379
393
  };
394
+ /*
395
+ * Exact attribute predicates accept a single value or a list of values
396
+ * (`IN (...)`) — a multi-select dashboard variable resolves to the latter.
397
+ * Non-string array entries are dropped, and an array left empty by that
398
+ * filtering is dropped entirely so it cannot narrow to nothing.
399
+ */
400
+ const attributeFilterRecord = () => {
401
+ const raw = body["attributes"];
402
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
403
+ return undefined;
404
+ }
405
+ const filters = {};
406
+ for (const [key, value] of Object.entries(raw)) {
407
+ if (typeof value === "string") {
408
+ filters[key] = value;
409
+ continue;
410
+ }
411
+ if (Array.isArray(value)) {
412
+ const values = value.filter((v) => {
413
+ return typeof v === "string";
414
+ });
415
+ if (values.length > 0) {
416
+ filters[key] = values;
417
+ }
418
+ }
419
+ }
420
+ if (Object.keys(filters).length === 0) {
421
+ return undefined;
422
+ }
423
+ return filters;
424
+ };
380
425
  return {
381
426
  serviceIds,
382
427
  entityKeys: stringArray("entityKeys"),
@@ -416,7 +461,7 @@ function parseTraceFilterBody(body) {
416
461
  ? body["exactDurationNano"]
417
462
  : undefined,
418
463
  rootOnly: body["rootOnly"] === undefined ? undefined : Boolean(body["rootOnly"]),
419
- attributes: stringRecord("attributes"),
464
+ attributes: attributeFilterRecord(),
420
465
  attributeSearches: stringRecord("attributeSearches"),
421
466
  };
422
467
  }
@@ -1648,5 +1693,897 @@ router.post("/telemetry/profiles/breakdown", ...requireProfileReadAccess, async
1648
1693
  next(err);
1649
1694
  }
1650
1695
  });
1696
+ /*
1697
+ * ---------------------------------------------------------------------
1698
+ * Session replay playback
1699
+ * ---------------------------------------------------------------------
1700
+ *
1701
+ * These five routes are the ONLY reader of RumSessionV1 / RumSessionChunkV1:
1702
+ * both analytics models deliberately omit `crudApiPath`, so there is no
1703
+ * generic CRUD surface for them and ModelPermission is NEVER invoked on
1704
+ * this path.
1705
+ *
1706
+ * That has a consequence which is easy to get wrong and expensive to get
1707
+ * wrong: the `payload` column's own read ACL and the narrower ACL on
1708
+ * `identifiedUserLabel` are, on their own, decorative here. Nothing
1709
+ * enforces them unless this file does. Hence a dedicated guard rather
1710
+ * than createTelemetryReadAccessGuard above, whose OR-list already
1711
+ * contains ProjectMember, Viewer and TelemetryViewer - reusing it would
1712
+ * let every read-only member of a project watch recordings of that
1713
+ * project's real end users, which is precisely the outcome the design
1714
+ * rejected.
1715
+ *
1716
+ * Declared before the route registrations below for the same
1717
+ * temporal-dead-zone reason the guards at the top of this file are.
1718
+ */
1719
+ /*
1720
+ * Listing sessions. Mirrors RumSession's table-level read ACL exactly:
1721
+ * knowing WHICH sessions errored is triage.
1722
+ */
1723
+ const requireSessionReplayListAccess = [
1724
+ UserMiddleware.getUserMiddleware,
1725
+ UserMiddleware.requireUserAuthentication,
1726
+ UserMiddleware.requirePermission({
1727
+ permissions: [
1728
+ Permission.ProjectOwner,
1729
+ Permission.ProjectAdmin,
1730
+ Permission.TelemetryAdmin,
1731
+ Permission.ReadRumSessionReplay,
1732
+ ],
1733
+ }),
1734
+ ];
1735
+ /*
1736
+ * Watching a session. Deliberately a strict subset of the list guard's
1737
+ * audience: reading a recording of a real person's screen is a further
1738
+ * disclosure over knowing that their session went wrong. Mirrors the
1739
+ * `payload` column ACL on RumSessionChunk.
1740
+ */
1741
+ const requireSessionReplayPayloadAccess = [
1742
+ UserMiddleware.getUserMiddleware,
1743
+ UserMiddleware.requireUserAuthentication,
1744
+ UserMiddleware.requirePermission({
1745
+ permissions: [
1746
+ Permission.ProjectOwner,
1747
+ Permission.ProjectAdmin,
1748
+ Permission.TelemetryAdmin,
1749
+ Permission.ReadRumSessionReplayPayload,
1750
+ ],
1751
+ }),
1752
+ ];
1753
+ /* The permission list each guard above enforces, reused for label scope. */
1754
+ const SESSION_REPLAY_LIST_PERMISSIONS = [
1755
+ Permission.ProjectOwner,
1756
+ Permission.ProjectAdmin,
1757
+ Permission.TelemetryAdmin,
1758
+ Permission.ReadRumSessionReplay,
1759
+ ];
1760
+ const SESSION_REPLAY_PAYLOAD_PERMISSIONS = [
1761
+ Permission.ProjectOwner,
1762
+ Permission.ProjectAdmin,
1763
+ Permission.TelemetryAdmin,
1764
+ Permission.ReadRumSessionReplayPayload,
1765
+ ];
1766
+ /*
1767
+ * The raw end-user identifier carries its own narrower ACL on the model
1768
+ * (no TelemetryAdmin): knowing that *a* user had a bad session is triage,
1769
+ * knowing *which named person* is a further disclosure again.
1770
+ */
1771
+ const SESSION_REPLAY_IDENTITY_PERMISSIONS = [
1772
+ Permission.ProjectOwner,
1773
+ Permission.ProjectAdmin,
1774
+ Permission.ReadRumSessionReplayPayload,
1775
+ ];
1776
+ const getSessionReplayLabelScope = (databaseProps, permissions) => {
1777
+ if (databaseProps.isRoot || databaseProps.isMasterAdmin) {
1778
+ return { isUnrestricted: true };
1779
+ }
1780
+ const userPermissions = DatabaseCommonInteractionPropsUtil.getUserPermissions(databaseProps, PermissionType.Allow);
1781
+ const unscopedPermissions = PermissionHelper.getNonAccessControlPermissions(userPermissions);
1782
+ if (PermissionHelper.doesPermissionsIntersect(permissions, unscopedPermissions)) {
1783
+ return { isUnrestricted: true };
1784
+ }
1785
+ const scopedPermissions = PermissionHelper.getAccessControlPermissions(userPermissions);
1786
+ const labelIds = [];
1787
+ for (const permission of permissions) {
1788
+ for (const scopedPermission of scopedPermissions) {
1789
+ if (scopedPermission.permission === permission &&
1790
+ scopedPermission.labelIds.length > 0) {
1791
+ labelIds.push(...scopedPermission.labelIds);
1792
+ }
1793
+ }
1794
+ }
1795
+ if (labelIds.length > 0) {
1796
+ return { isUnrestricted: false, labelIds: labelIds };
1797
+ }
1798
+ /*
1799
+ * Neither an unscoped grant nor a label-scoped one, yet the route guard
1800
+ * let the caller in - so the grant they hold carries a scope this
1801
+ * bespoke path does not implement. PermissionScope.Owned is the real
1802
+ * case: both PermissionHelper filters exclude Owned rows on purpose
1803
+ * because the ORM enforces them through
1804
+ * OwnedScopePermission.addOwnedScopeToQuery, and there is no such step
1805
+ * here. Refusing is the only safe answer; returning "no labels" would
1806
+ * hand an administrator's deliberately narrowed reviewer the whole
1807
+ * project.
1808
+ */
1809
+ const hasOwnedScopedGrant = userPermissions.some((userPermission) => {
1810
+ return (userPermission.scope === PermissionScope.Owned &&
1811
+ permissions.includes(userPermission.permission));
1812
+ });
1813
+ if (hasOwnedScopedGrant) {
1814
+ throw new NotAuthorizedException("Owned-scoped session replay permissions are not supported. Ask an administrator to scope this permission to labels instead.");
1815
+ }
1816
+ /*
1817
+ * No applicable grant at all. This is reachable even behind the route
1818
+ * guard, because the guard matches on permission NAME across every
1819
+ * tenant permission row while getUserPermissions drops block rows. It
1820
+ * means the caller reaches no application, not every application.
1821
+ */
1822
+ return { isUnrestricted: false, labelIds: [] };
1823
+ };
1824
+ /*
1825
+ * Ceiling on the RUM applications scanned when resolving a label-scoped
1826
+ * caller's reachable set. RUM is keyed by application (service.name), not
1827
+ * by end-user device, so a project has tens of these, not millions.
1828
+ */
1829
+ const MAX_RUM_APPLICATIONS_SCANNED = 1000;
1830
+ const assertSessionReplayPlan = (databaseProps) => {
1831
+ if (!IsBillingEnabled || !databaseProps.currentPlan) {
1832
+ return;
1833
+ }
1834
+ const requiredPlan = new RumSession().getReadBillingPlan();
1835
+ if (!requiredPlan) {
1836
+ return;
1837
+ }
1838
+ if (!SubscriptionPlan.isFeatureAccessibleOnCurrentPlan(requiredPlan, databaseProps.currentPlan, getAllEnvVars())) {
1839
+ throw new PaymentRequiredException(`Please upgrade your plan to ${requiredPlan} to access session replay.`);
1840
+ }
1841
+ };
1842
+ const getRumApplicationLabelIds = (application) => {
1843
+ return (application.labels || [])
1844
+ .filter((label) => {
1845
+ return Boolean(label.id);
1846
+ })
1847
+ .map((label) => {
1848
+ return label.id.toString();
1849
+ });
1850
+ };
1851
+ const isApplicationInSessionReplayScope = (data) => {
1852
+ if (data.scope.isUnrestricted) {
1853
+ return true;
1854
+ }
1855
+ const applicationLabelIds = getRumApplicationLabelIds(data.application);
1856
+ return data.scope.labelIds.some((labelId) => {
1857
+ return applicationLabelIds.includes(labelId.toString());
1858
+ });
1859
+ };
1860
+ const assertSessionReplayApplicationAccess = async (data) => {
1861
+ const scope = getSessionReplayLabelScope(data.databaseProps, data.permissions);
1862
+ const application = await RumApplicationService.findOneBy({
1863
+ query: {
1864
+ _id: data.rumApplicationId.toString(),
1865
+ projectId: data.projectId,
1866
+ },
1867
+ select: {
1868
+ _id: true,
1869
+ labels: {
1870
+ _id: true,
1871
+ },
1872
+ },
1873
+ props: {
1874
+ isRoot: true,
1875
+ },
1876
+ });
1877
+ /*
1878
+ * An application that does not exist in this project is refused the
1879
+ * same way an out-of-scope one is, so the endpoint cannot be used to
1880
+ * probe which application ids exist elsewhere.
1881
+ */
1882
+ if (!application) {
1883
+ throw new NotAuthorizedException("You do not have access to session replays for this application.");
1884
+ }
1885
+ if (!isApplicationInSessionReplayScope({
1886
+ scope: scope,
1887
+ application: application,
1888
+ })) {
1889
+ throw new NotAuthorizedException("You do not have access to session replays for this application.");
1890
+ }
1891
+ return application;
1892
+ };
1893
+ const canReadIdentifiedUserLabel = (data) => {
1894
+ let scope;
1895
+ try {
1896
+ scope = getSessionReplayLabelScope(data.databaseProps, SESSION_REPLAY_IDENTITY_PERMISSIONS);
1897
+ }
1898
+ catch (_a) {
1899
+ /*
1900
+ * getSessionReplayLabelScope refuses a scope it cannot enforce. For
1901
+ * an optional column the right answer is to omit the column, not to
1902
+ * fail the whole listing the caller is otherwise entitled to.
1903
+ */
1904
+ return false;
1905
+ }
1906
+ return isApplicationInSessionReplayScope({
1907
+ scope: scope,
1908
+ application: data.application,
1909
+ });
1910
+ };
1911
+ const resolveAccessibleRumApplicationIds = async (data) => {
1912
+ const scope = getSessionReplayLabelScope(data.databaseProps, data.permissions);
1913
+ if (scope.isUnrestricted) {
1914
+ return { applicationIds: null, isTruncated: false };
1915
+ }
1916
+ if (scope.labelIds.length === 0) {
1917
+ /* Reaches no application at all - not "reaches everything". */
1918
+ return { applicationIds: [], isTruncated: false };
1919
+ }
1920
+ const applications = await RumApplicationService.findBy({
1921
+ query: {
1922
+ projectId: data.projectId,
1923
+ },
1924
+ select: {
1925
+ _id: true,
1926
+ labels: {
1927
+ _id: true,
1928
+ },
1929
+ },
1930
+ /*
1931
+ * A deterministic sort so the page that is scanned is at least
1932
+ * stable between calls, and one row past the ceiling so hitting
1933
+ * it is detectable rather than indistinguishable from a project
1934
+ * that happens to have exactly that many applications.
1935
+ */
1936
+ sort: {
1937
+ createdAt: SortOrder.Ascending,
1938
+ },
1939
+ skip: 0,
1940
+ limit: MAX_RUM_APPLICATIONS_SCANNED + 1,
1941
+ props: {
1942
+ isRoot: true,
1943
+ },
1944
+ });
1945
+ const isTruncated = applications.length > MAX_RUM_APPLICATIONS_SCANNED;
1946
+ const accessibleIds = [];
1947
+ for (const application of applications.slice(0, MAX_RUM_APPLICATIONS_SCANNED)) {
1948
+ if (isApplicationInSessionReplayScope({
1949
+ scope: scope,
1950
+ application: application,
1951
+ }) &&
1952
+ application.id) {
1953
+ accessibleIds.push(application.id);
1954
+ }
1955
+ }
1956
+ return { applicationIds: accessibleIds, isTruncated: isTruncated };
1957
+ };
1958
+ const resolveAuthorizedSession = async (data) => {
1959
+ const header = await SessionReplayReadService.getSessionHeader({
1960
+ projectId: data.projectId,
1961
+ sessionId: data.sessionId,
1962
+ });
1963
+ if (!header) {
1964
+ throw new BadDataException("Session replay not found.");
1965
+ }
1966
+ await assertSessionReplayApplicationAccess({
1967
+ projectId: data.projectId,
1968
+ rumApplicationId: new ObjectID(header.rumApplicationId),
1969
+ databaseProps: data.databaseProps,
1970
+ permissions: SESSION_REPLAY_PAYLOAD_PERMISSIONS,
1971
+ });
1972
+ return header;
1973
+ };
1974
+ const readObjectIdFromBody = (body, key) => {
1975
+ const value = body[key];
1976
+ if (typeof value !== "string" || value.length === 0) {
1977
+ throw new BadDataException(`${key} is required`);
1978
+ }
1979
+ if (!ObjectID.isValidUUID(value)) {
1980
+ throw new BadDataException(`${key} is not a valid id`);
1981
+ }
1982
+ return new ObjectID(value);
1983
+ };
1984
+ const readSessionIdFromBody = (body) => {
1985
+ const sessionId = body["sessionId"];
1986
+ if (typeof sessionId !== "string" || sessionId.length === 0) {
1987
+ throw new BadDataException("sessionId is required");
1988
+ }
1989
+ return sessionId;
1990
+ };
1991
+ const readStringArrayFromBody = (body, key) => {
1992
+ const value = body[key];
1993
+ if (!Array.isArray(value)) {
1994
+ return undefined;
1995
+ }
1996
+ const strings = value.filter((item) => {
1997
+ return typeof item === "string" && item.length > 0;
1998
+ });
1999
+ return strings.length > 0 ? strings : undefined;
2000
+ };
2001
+ // --- Session Replay List Endpoint ---
2002
+ router.post("/telemetry/rum/session-replay/list", ...requireSessionReplayListAccess, async (req, res, next) => {
2003
+ try {
2004
+ const databaseProps = await CommonAPI.getDatabaseCommonInteractionProps(req);
2005
+ if (!(databaseProps === null || databaseProps === void 0 ? void 0 : databaseProps.tenantId)) {
2006
+ return Response.sendErrorResponse(req, res, new BadDataException("Invalid Project ID"));
2007
+ }
2008
+ assertSessionReplayPlan(databaseProps);
2009
+ const projectId = databaseProps.tenantId;
2010
+ const body = req.body;
2011
+ const rumApplicationId = readObjectIdFromBody(body, "rumApplicationId");
2012
+ /*
2013
+ * The application id is caller-supplied here, which is safe only
2014
+ * because it is the thing being authorized rather than a lookup key
2015
+ * for something already authorized: a caller outside the label
2016
+ * scope is refused, and the query is tenant-pinned regardless.
2017
+ */
2018
+ const application = await assertSessionReplayApplicationAccess({
2019
+ projectId: projectId,
2020
+ rumApplicationId: rumApplicationId,
2021
+ databaseProps: databaseProps,
2022
+ permissions: SESSION_REPLAY_LIST_PERMISSIONS,
2023
+ });
2024
+ const startTime = body["startTime"]
2025
+ ? OneUptimeDate.fromString(body["startTime"])
2026
+ : OneUptimeDate.addRemoveDays(OneUptimeDate.getCurrentDate(), -7);
2027
+ const endTime = body["endTime"]
2028
+ ? OneUptimeDate.fromString(body["endTime"])
2029
+ : OneUptimeDate.getCurrentDate();
2030
+ const rawFilters = body["filters"] || {};
2031
+ const filters = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (typeof rawFilters["hasError"] === "boolean" && {
2032
+ hasError: rawFilters["hasError"],
2033
+ })), (typeof rawFilters["hasFrustration"] === "boolean" && {
2034
+ hasFrustration: rawFilters["hasFrustration"],
2035
+ })), (typeof rawFilters["isFinalized"] === "boolean" && {
2036
+ isFinalized: rawFilters["isFinalized"],
2037
+ })), (readStringArrayFromBody(rawFilters, "triggerReasons") && {
2038
+ triggerReasons: readStringArrayFromBody(rawFilters, "triggerReasons"),
2039
+ })), (readStringArrayFromBody(rawFilters, "browserNames") && {
2040
+ browserNames: readStringArrayFromBody(rawFilters, "browserNames"),
2041
+ })), (readStringArrayFromBody(rawFilters, "osNames") && {
2042
+ osNames: readStringArrayFromBody(rawFilters, "osNames"),
2043
+ })), (readStringArrayFromBody(rawFilters, "deviceTypes") && {
2044
+ deviceTypes: readStringArrayFromBody(rawFilters, "deviceTypes"),
2045
+ })), (readStringArrayFromBody(rawFilters, "countryCodes") && {
2046
+ countryCodes: readStringArrayFromBody(rawFilters, "countryCodes"),
2047
+ })), (typeof rawFilters["identifiedUserKey"] === "string" && {
2048
+ identifiedUserKey: rawFilters["identifiedUserKey"],
2049
+ })), (typeof rawFilters["route"] === "string" && {
2050
+ route: rawFilters["route"],
2051
+ })), (typeof rawFilters["minDurationMs"] === "number" && {
2052
+ minDurationMs: rawFilters["minDurationMs"],
2053
+ }));
2054
+ const rawCursor = body["cursor"]
2055
+ ? body["cursor"]
2056
+ : undefined;
2057
+ const cursor = rawCursor &&
2058
+ typeof rawCursor["startTimeUnixMs"] === "number" &&
2059
+ typeof rawCursor["sessionId"] === "string"
2060
+ ? {
2061
+ startTimeUnixMs: rawCursor["startTimeUnixMs"],
2062
+ sessionId: rawCursor["sessionId"],
2063
+ }
2064
+ : undefined;
2065
+ /*
2066
+ * The narrower identity ACL is enforced by simply not naming the
2067
+ * column in the SELECT. There is no ModelPermission on this path to
2068
+ * strip it after the fact. Decided against the application already
2069
+ * loaded by the access check, so a caller whose identity grant is
2070
+ * label-scoped elsewhere does not get named end users here.
2071
+ */
2072
+ const includeIdentifiedUserLabel = canReadIdentifiedUserLabel({
2073
+ databaseProps: databaseProps,
2074
+ application: application,
2075
+ });
2076
+ const result = await SessionReplayReadService.listSessions(Object.assign(Object.assign({ projectId: projectId, rumApplicationId: rumApplicationId, startTime: startTime, endTime: endTime, filters: filters, limit: typeof body["limit"] === "number"
2077
+ ? body["limit"]
2078
+ : DEFAULT_SESSION_REPLAY_LIST_LIMIT }, (cursor !== undefined && { cursor })), { includeIdentifiedUserLabel: includeIdentifiedUserLabel }));
2079
+ return Response.sendJsonObjectResponse(req, res, {
2080
+ sessions: result.sessions,
2081
+ nextCursor: result.nextCursor,
2082
+ });
2083
+ }
2084
+ catch (err) {
2085
+ next(err);
2086
+ }
2087
+ });
2088
+ // --- Session Replay Manifest Endpoint ---
2089
+ router.post("/telemetry/rum/session-replay/manifest", ...requireSessionReplayPayloadAccess, async (req, res, next) => {
2090
+ try {
2091
+ const databaseProps = await CommonAPI.getDatabaseCommonInteractionProps(req);
2092
+ if (!(databaseProps === null || databaseProps === void 0 ? void 0 : databaseProps.tenantId)) {
2093
+ return Response.sendErrorResponse(req, res, new BadDataException("Invalid Project ID"));
2094
+ }
2095
+ assertSessionReplayPlan(databaseProps);
2096
+ const projectId = databaseProps.tenantId;
2097
+ const body = req.body;
2098
+ const sessionId = readSessionIdFromBody(body);
2099
+ const header = await resolveAuthorizedSession({
2100
+ projectId: projectId,
2101
+ sessionId: sessionId,
2102
+ databaseProps: databaseProps,
2103
+ });
2104
+ /*
2105
+ * The authorized application, resolved server-side from the header.
2106
+ * Every chunk-table read below is pinned to it: that table's replace
2107
+ * key is (projectId, sessionId, tabId, chunkIndex) with
2108
+ * rumApplicationId a plain column, so (projectId, sessionId) alone
2109
+ * is not enough to keep two applications' recordings apart.
2110
+ */
2111
+ const authorizedApplicationId = new ObjectID(header.rumApplicationId);
2112
+ /*
2113
+ * The audit row is written BEFORE the manifest is built, not after.
2114
+ * A read that fails halfway through still happened, and an audit
2115
+ * that only records successful reads is an audit an attacker can
2116
+ * evade by aborting the request.
2117
+ */
2118
+ const view = await RumSessionReplayViewService.recordView({
2119
+ projectId: projectId,
2120
+ rumApplicationId: authorizedApplicationId,
2121
+ sessionId: sessionId,
2122
+ viewedByUserId: databaseProps.userId,
2123
+ ipAddress: getClientIp(req),
2124
+ userAgent: typeof req.headers["user-agent"] === "string"
2125
+ ? req.headers["user-agent"]
2126
+ : undefined,
2127
+ accessReason: typeof body["accessReason"] === "string"
2128
+ ? body["accessReason"]
2129
+ : undefined,
2130
+ linkedIncidentId: typeof body["linkedIncidentId"] === "string" &&
2131
+ body["linkedIncidentId"].length > 0
2132
+ ? new ObjectID(body["linkedIncidentId"])
2133
+ : undefined,
2134
+ linkedExceptionFingerprint: typeof body["linkedExceptionFingerprint"] === "string"
2135
+ ? body["linkedExceptionFingerprint"]
2136
+ : undefined,
2137
+ });
2138
+ const manifest = await SessionReplayReadService.getManifest({
2139
+ header: header,
2140
+ projectId: projectId,
2141
+ rumApplicationId: authorizedApplicationId,
2142
+ sessionId: sessionId,
2143
+ });
2144
+ return Response.sendJsonObjectResponse(req, res, {
2145
+ /*
2146
+ * viewId is echoed back so the player's heartbeat can advance the
2147
+ * very row this read created, instead of guessing at one.
2148
+ */
2149
+ viewId: view.id ? view.id.toString() : null,
2150
+ header: manifest.header,
2151
+ tabs: manifest.tabs,
2152
+ isChunkIndexTruncated: manifest.isChunkIndexTruncated,
2153
+ });
2154
+ }
2155
+ catch (err) {
2156
+ next(err);
2157
+ }
2158
+ });
2159
+ // --- Session Replay Chunk Endpoint ---
2160
+ router.post("/telemetry/rum/session-replay/chunks", ...requireSessionReplayPayloadAccess, async (req, res, next) => {
2161
+ try {
2162
+ const databaseProps = await CommonAPI.getDatabaseCommonInteractionProps(req);
2163
+ if (!(databaseProps === null || databaseProps === void 0 ? void 0 : databaseProps.tenantId)) {
2164
+ return Response.sendErrorResponse(req, res, new BadDataException("Invalid Project ID"));
2165
+ }
2166
+ assertSessionReplayPlan(databaseProps);
2167
+ const projectId = databaseProps.tenantId;
2168
+ const body = req.body;
2169
+ const sessionId = readSessionIdFromBody(body);
2170
+ const tabId = body["tabId"];
2171
+ if (typeof tabId !== "string" || tabId.length === 0) {
2172
+ return Response.sendErrorResponse(req, res, new BadDataException("tabId is required"));
2173
+ }
2174
+ const rawChunkIndexes = body["chunkIndexes"];
2175
+ if (!Array.isArray(rawChunkIndexes) || rawChunkIndexes.length === 0) {
2176
+ return Response.sendErrorResponse(req, res, new BadDataException("chunkIndexes is required"));
2177
+ }
2178
+ const chunkIndexes = rawChunkIndexes.filter((index) => {
2179
+ return (typeof index === "number" && Number.isInteger(index) && index >= 0);
2180
+ });
2181
+ if (chunkIndexes.length !== rawChunkIndexes.length) {
2182
+ return Response.sendErrorResponse(req, res, new BadDataException("chunkIndexes must contain only non-negative integers"));
2183
+ }
2184
+ /*
2185
+ * Checked here as well as inside the read service: the route should
2186
+ * refuse an abusive request before it authorizes and queries
2187
+ * anything, and the service must refuse it for any future caller
2188
+ * that does not come through this route.
2189
+ */
2190
+ if (chunkIndexes.length > MAX_SESSION_REPLAY_CHUNKS_PER_READ) {
2191
+ return Response.sendErrorResponse(req, res, new BadDataException(`A maximum of ${MAX_SESSION_REPLAY_CHUNKS_PER_READ} chunks may be requested at a time.`));
2192
+ }
2193
+ const header = await resolveAuthorizedSession({
2194
+ projectId: projectId,
2195
+ sessionId: sessionId,
2196
+ databaseProps: databaseProps,
2197
+ });
2198
+ const chunks = await SessionReplayReadService.getChunks({
2199
+ projectId: projectId,
2200
+ /* Always the application the caller was authorized against. */
2201
+ rumApplicationId: new ObjectID(header.rumApplicationId),
2202
+ sessionId: sessionId,
2203
+ tabId: tabId,
2204
+ chunkIndexes: chunkIndexes,
2205
+ });
2206
+ /*
2207
+ * Concatenated binary frames: [u32 chunkIndex][u32 byteLength][bytes]
2208
+ * repeated, little-endian, application/octet-stream.
2209
+ *
2210
+ * Not JSON: the payload is already a JSON document, so a JSON
2211
+ * envelope would force the server to re-escape and the browser to
2212
+ * double-parse several megabytes per page. The length prefix lets
2213
+ * the player slice the response without scanning it.
2214
+ */
2215
+ const frames = [];
2216
+ /*
2217
+ * The byte cap is re-checked here against the bytes actually being
2218
+ * framed, not only against what the pre-check in the read service
2219
+ * believed. This is the last place the size of the response is
2220
+ * knowable, so it is the one place a cap on the response can be
2221
+ * absolute regardless of how stored size was estimated upstream.
2222
+ */
2223
+ let responseBytes = 0;
2224
+ for (const chunk of chunks) {
2225
+ const payloadBuffer = Buffer.from(chunk.payload, "utf8");
2226
+ responseBytes += payloadBuffer.length + 8;
2227
+ if (responseBytes > MAX_SESSION_REPLAY_READ_BYTES) {
2228
+ return Response.sendErrorResponse(req, res, new BadDataException(`The requested chunks exceed the ${MAX_SESSION_REPLAY_READ_BYTES} byte limit for a single read. Request fewer chunks.`));
2229
+ }
2230
+ const headerBuffer = Buffer.alloc(8);
2231
+ headerBuffer.writeUInt32LE(chunk.chunkIndex, 0);
2232
+ headerBuffer.writeUInt32LE(payloadBuffer.length, 4);
2233
+ frames.push(headerBuffer, payloadBuffer);
2234
+ }
2235
+ const responseBody = Buffer.concat(frames);
2236
+ res.setHeader("Content-Type", "application/octet-stream");
2237
+ res.setHeader("Content-Length", responseBody.length.toString());
2238
+ /*
2239
+ * A recording is personal data. Nothing about it may sit in a
2240
+ * shared cache, and the browser should not keep it on disk either.
2241
+ */
2242
+ res.setHeader("Cache-Control", "no-store");
2243
+ res.send(responseBody);
2244
+ }
2245
+ catch (err) {
2246
+ next(err);
2247
+ }
2248
+ });
2249
+ // --- Session Replay Heartbeat Endpoint ---
2250
+ router.post("/telemetry/rum/session-replay/heartbeat", ...requireSessionReplayPayloadAccess, async (req, res, next) => {
2251
+ try {
2252
+ const databaseProps = await CommonAPI.getDatabaseCommonInteractionProps(req);
2253
+ if (!(databaseProps === null || databaseProps === void 0 ? void 0 : databaseProps.tenantId)) {
2254
+ return Response.sendErrorResponse(req, res, new BadDataException("Invalid Project ID"));
2255
+ }
2256
+ assertSessionReplayPlan(databaseProps);
2257
+ const projectId = databaseProps.tenantId;
2258
+ const body = req.body;
2259
+ const viewId = readObjectIdFromBody(body, "viewId");
2260
+ const secondsWatched = body["secondsWatched"];
2261
+ if (typeof secondsWatched !== "number" ||
2262
+ !Number.isFinite(secondsWatched)) {
2263
+ return Response.sendErrorResponse(req, res, new BadDataException("secondsWatched must be a number"));
2264
+ }
2265
+ /*
2266
+ * Floored to the 15s heartbeat cadence. recordSecondsWatched is
2267
+ * monotonic and returns without writing when the value does not
2268
+ * advance, so flooring here turns a chatty client into at most one
2269
+ * UPDATE per 15 seconds watched without any server-side timer or
2270
+ * cross-pod throttle state.
2271
+ */
2272
+ const throttledSeconds = Math.floor(Math.max(0, secondsWatched) / 15) * 15;
2273
+ /*
2274
+ * secondsWatched is a privacy control, not telemetry: it is shown on
2275
+ * the player as "who watched how much of this recording". Scoping
2276
+ * the write to the tenant alone would let any principal holding the
2277
+ * payload permission inflate somebody else's audit row for a session
2278
+ * they may not even read, which forges the very record the design
2279
+ * relies on.
2280
+ *
2281
+ * The row is therefore looked up as the CALLER'S own view row - a
2282
+ * viewId belonging to anyone else matches nothing and is refused
2283
+ * indistinguishably from one that does not exist - and the
2284
+ * application it points at is authorized exactly as a payload read
2285
+ * would be.
2286
+ */
2287
+ if (!databaseProps.userId) {
2288
+ return Response.sendErrorResponse(req, res, new NotAuthorizedException("You do not have access to this session replay view."));
2289
+ }
2290
+ const view = await RumSessionReplayViewService.findOneBy({
2291
+ query: {
2292
+ _id: viewId.toString(),
2293
+ projectId: projectId,
2294
+ viewedByUserId: databaseProps.userId,
2295
+ },
2296
+ select: {
2297
+ _id: true,
2298
+ rumApplicationId: true,
2299
+ },
2300
+ props: {
2301
+ isRoot: true,
2302
+ },
2303
+ });
2304
+ if (!view || !view.rumApplicationId) {
2305
+ return Response.sendErrorResponse(req, res, new NotAuthorizedException("You do not have access to this session replay view."));
2306
+ }
2307
+ await assertSessionReplayApplicationAccess({
2308
+ projectId: projectId,
2309
+ rumApplicationId: view.rumApplicationId,
2310
+ databaseProps: databaseProps,
2311
+ permissions: SESSION_REPLAY_PAYLOAD_PERMISSIONS,
2312
+ });
2313
+ await RumSessionReplayViewService.recordSecondsWatched({
2314
+ viewId: viewId,
2315
+ projectId: projectId,
2316
+ secondsWatched: throttledSeconds,
2317
+ });
2318
+ return Response.sendJsonObjectResponse(req, res, {
2319
+ secondsWatched: throttledSeconds,
2320
+ });
2321
+ }
2322
+ catch (err) {
2323
+ next(err);
2324
+ }
2325
+ });
2326
+ // --- Session Replay For Exception Endpoint ---
2327
+ router.post("/telemetry/rum/session-replay/for-exception", ...requireSessionReplayListAccess, async (req, res, next) => {
2328
+ try {
2329
+ const databaseProps = await CommonAPI.getDatabaseCommonInteractionProps(req);
2330
+ if (!(databaseProps === null || databaseProps === void 0 ? void 0 : databaseProps.tenantId)) {
2331
+ return Response.sendErrorResponse(req, res, new BadDataException("Invalid Project ID"));
2332
+ }
2333
+ assertSessionReplayPlan(databaseProps);
2334
+ const projectId = databaseProps.tenantId;
2335
+ const body = req.body;
2336
+ const fingerprint = body["fingerprint"];
2337
+ if (typeof fingerprint !== "string" || fingerprint.length === 0) {
2338
+ return Response.sendErrorResponse(req, res, new BadDataException("fingerprint is required"));
2339
+ }
2340
+ /*
2341
+ * An exception is not scoped to a RUM application, so there is no
2342
+ * single application to authorize against. Restrict the query to
2343
+ * the applications the caller's labels reach instead.
2344
+ */
2345
+ const accessibleApplications = await resolveAccessibleRumApplicationIds({
2346
+ projectId: projectId,
2347
+ databaseProps: databaseProps,
2348
+ permissions: SESSION_REPLAY_LIST_PERMISSIONS,
2349
+ });
2350
+ const startTime = body["startTime"]
2351
+ ? OneUptimeDate.fromString(body["startTime"])
2352
+ : undefined;
2353
+ const endTime = body["endTime"]
2354
+ ? OneUptimeDate.fromString(body["endTime"])
2355
+ : undefined;
2356
+ const sessions = await SessionReplayReadService.getSessionsForException(Object.assign(Object.assign(Object.assign({ projectId: projectId, exceptionFingerprint: fingerprint, accessibleRumApplicationIds: accessibleApplications.applicationIds }, (startTime !== undefined && { startTime })), (endTime !== undefined && { endTime })), { limit: typeof body["limit"] === "number"
2357
+ ? body["limit"]
2358
+ : MAX_SESSION_REPLAY_FOR_EXCEPTION_LIMIT }));
2359
+ return Response.sendJsonObjectResponse(req, res, {
2360
+ sessions: sessions,
2361
+ /*
2362
+ * Told, not hidden: the accessible-application scan has a ceiling,
2363
+ * and a caller who hits it is looking at a possibly short answer.
2364
+ */
2365
+ isApplicationScopeTruncated: accessibleApplications.isTruncated,
2366
+ });
2367
+ }
2368
+ catch (err) {
2369
+ next(err);
2370
+ }
2371
+ });
2372
+ // --- Session Replay Ingest Status Endpoint ---
2373
+ /*
2374
+ * Recording health for one application: is replay switched on at every
2375
+ * level, when did the last chunk actually land, and how much of the byte
2376
+ * budgets is spent. This is what lets the Dashboard answer "why are there
2377
+ * no recordings?" and "am I about to hit my budget?" as states rather than
2378
+ * leaving the customer to infer them from silence — the ingest gate's
2379
+ * refusals are deliberately quiet toward end users' browsers, so this
2380
+ * endpoint is the loud side of that trade.
2381
+ *
2382
+ * Reads settings metadata and Redis counters only; never touches recording
2383
+ * payloads, so list-level access is the right bar.
2384
+ *
2385
+ * The application row is loaded with root props even though its columns
2386
+ * carry their own read ACLs. That is deliberate and bounded: every column
2387
+ * returned here (appIdentifier, the replay policy fields, the two health
2388
+ * timestamps) is readable by a plain project Viewer under its declared
2389
+ * ACL — the least-privileged read tier there is — while this route demands
2390
+ * the STRICTER session-replay list permission and pins tenancy and label
2391
+ * scope first. Nothing is disclosed that the caller's project peers cannot
2392
+ * already read through the generic CRUD API. If a column with a narrower
2393
+ * ACL (e.g. anything identity-adjacent) is ever added to this SELECT, it
2394
+ * must get an explicit permission check, not a wider isRoot ride-along.
2395
+ */
2396
+ router.post("/telemetry/rum/session-replay/ingest-status", ...requireSessionReplayListAccess, async (req, res, next) => {
2397
+ var _a;
2398
+ try {
2399
+ const databaseProps = await CommonAPI.getDatabaseCommonInteractionProps(req);
2400
+ if (!(databaseProps === null || databaseProps === void 0 ? void 0 : databaseProps.tenantId)) {
2401
+ return Response.sendErrorResponse(req, res, new BadDataException("Invalid Project ID"));
2402
+ }
2403
+ assertSessionReplayPlan(databaseProps);
2404
+ const projectId = databaseProps.tenantId;
2405
+ const body = req.body;
2406
+ const rumApplicationId = readObjectIdFromBody(body, "rumApplicationId");
2407
+ await assertSessionReplayApplicationAccess({
2408
+ projectId: projectId,
2409
+ rumApplicationId: rumApplicationId,
2410
+ databaseProps: databaseProps,
2411
+ permissions: SESSION_REPLAY_LIST_PERMISSIONS,
2412
+ });
2413
+ const application = await RumApplicationService.findOneBy({
2414
+ query: {
2415
+ _id: rumApplicationId.toString(),
2416
+ projectId: projectId,
2417
+ },
2418
+ select: {
2419
+ _id: true,
2420
+ appIdentifier: true,
2421
+ isSessionReplayEnabled: true,
2422
+ sessionReplayAllowedOrigins: true,
2423
+ sessionReplaySamplePercentage: true,
2424
+ sessionReplayCaptureTrigger: true,
2425
+ sessionReplayMonthlyBudgetInGB: true,
2426
+ sessionReplayLastChunkReceivedAt: true,
2427
+ sessionReplayBudgetExceededAt: true,
2428
+ },
2429
+ props: {
2430
+ isRoot: true,
2431
+ },
2432
+ });
2433
+ if (!application) {
2434
+ return Response.sendErrorResponse(req, res, new BadDataException("RUM application not found."));
2435
+ }
2436
+ const project = await ProjectService.findOneBy({
2437
+ query: {
2438
+ _id: projectId.toString(),
2439
+ },
2440
+ select: {
2441
+ isSessionReplayAllowed: true,
2442
+ },
2443
+ props: {
2444
+ isRoot: true,
2445
+ },
2446
+ });
2447
+ const [projectBytesUsedToday, applicationBytesUsedThisMonth] = await Promise.all([
2448
+ SessionReplayUsage.getProjectBytesUsedToday(projectId),
2449
+ SessionReplayUsage.getApplicationBytesUsedThisMonth({
2450
+ projectId: projectId,
2451
+ rumApplicationId: rumApplicationId,
2452
+ }),
2453
+ ]);
2454
+ /*
2455
+ * Same env var, same default, as the value the ingest gate enforces
2456
+ * (App Telemetry Config). The default is a shared constant so the
2457
+ * number shown here cannot drift from the number enforced there.
2458
+ */
2459
+ const dailyCapEnv = parseInt(process.env["SESSION_REPLAY_MAX_BYTES_PER_PROJECT_PER_DAY"] || "", 10);
2460
+ const dailyByteLimit = !isNaN(dailyCapEnv) && dailyCapEnv > 0
2461
+ ? dailyCapEnv
2462
+ : DEFAULT_SESSION_REPLAY_MAX_BYTES_PER_PROJECT_PER_DAY;
2463
+ const applicationView = application;
2464
+ return Response.sendJsonObjectResponse(req, res, {
2465
+ isProjectAllowed: Boolean(project === null || project === void 0 ? void 0 : project["isSessionReplayAllowed"]),
2466
+ isApplicationEnabled: Boolean(applicationView["isSessionReplayEnabled"]),
2467
+ appIdentifier: String(applicationView["appIdentifier"] || ""),
2468
+ allowedOrigins: (applicationView["sessionReplayAllowedOrigins"] ||
2469
+ []),
2470
+ samplePercentage: Number(applicationView["sessionReplaySamplePercentage"] || 0),
2471
+ captureTrigger: String(applicationView["sessionReplayCaptureTrigger"] || ""),
2472
+ lastChunkReceivedAt: applicationView["sessionReplayLastChunkReceivedAt"] ||
2473
+ null,
2474
+ budgetExceededAt: applicationView["sessionReplayBudgetExceededAt"] || null,
2475
+ /* null = counter unreachable; render as unknown, never as zero. */
2476
+ projectBytesUsedToday: projectBytesUsedToday,
2477
+ dailyByteLimit: dailyByteLimit,
2478
+ applicationBytesUsedThisMonth: applicationBytesUsedThisMonth,
2479
+ monthlyBudgetInGB: (_a = applicationView["sessionReplayMonthlyBudgetInGB"]) !== null && _a !== void 0 ? _a : null,
2480
+ });
2481
+ }
2482
+ catch (err) {
2483
+ next(err);
2484
+ }
2485
+ });
2486
+ /*
2487
+ * "Record the next session for this user."
2488
+ *
2489
+ * One route, three actions, because all three are the same tiny
2490
+ * conversation with one Redis key: set arms a 24h one-shot target for a
2491
+ * named end-user reference, clear disarms it, status reads it. The
2492
+ * response is always the resulting { isPending }.
2493
+ *
2494
+ * The guard requires EDIT on the application, not the session-replay READ
2495
+ * permission: arming this causes a recording of a named person to be
2496
+ * made, which is a capture-policy write - the same class of action as
2497
+ * flipping the enable flag - and a reviewer who may only WATCH recordings
2498
+ * must not be able to order new ones.
2499
+ */
2500
+ const requireSessionReplayTargetAccess = [
2501
+ UserMiddleware.getUserMiddleware,
2502
+ UserMiddleware.requireUserAuthentication,
2503
+ UserMiddleware.requirePermission({
2504
+ permissions: [
2505
+ Permission.ProjectOwner,
2506
+ Permission.ProjectAdmin,
2507
+ Permission.TelemetryAdmin,
2508
+ Permission.EditRumApplication,
2509
+ ],
2510
+ }),
2511
+ ];
2512
+ router.post("/telemetry/rum/session-replay/target", ...requireSessionReplayTargetAccess, async (req, res, next) => {
2513
+ try {
2514
+ const databaseProps = await CommonAPI.getDatabaseCommonInteractionProps(req);
2515
+ if (!(databaseProps === null || databaseProps === void 0 ? void 0 : databaseProps.tenantId)) {
2516
+ return Response.sendErrorResponse(req, res, new BadDataException("Invalid Project ID"));
2517
+ }
2518
+ assertSessionReplayPlan(databaseProps);
2519
+ const projectId = databaseProps.tenantId;
2520
+ const body = req.body;
2521
+ const rumApplicationId = readObjectIdFromBody(body, "rumApplicationId");
2522
+ const action = body["action"];
2523
+ if (action !== "set" && action !== "clear" && action !== "status") {
2524
+ return Response.sendErrorResponse(req, res, new BadDataException('action must be one of "set", "clear" or "status".'));
2525
+ }
2526
+ const userRef = body["userRef"];
2527
+ if (!SessionReplayTargeting.isUsableUserRef(userRef)) {
2528
+ return Response.sendErrorResponse(req, res, new BadDataException("userRef must be a non-empty string of at most 512 characters."));
2529
+ }
2530
+ await assertSessionReplayApplicationAccess({
2531
+ projectId: projectId,
2532
+ rumApplicationId: rumApplicationId,
2533
+ databaseProps: databaseProps,
2534
+ permissions: [
2535
+ Permission.ProjectOwner,
2536
+ Permission.ProjectAdmin,
2537
+ Permission.TelemetryAdmin,
2538
+ Permission.EditRumApplication,
2539
+ ],
2540
+ });
2541
+ /*
2542
+ * The Redis key is scoped by the application's ingest identifier -
2543
+ * the name the recorder introduces itself with - not by the row id
2544
+ * the dashboard holds, so resolve one from the other here.
2545
+ */
2546
+ const application = await RumApplicationService.findOneBy({
2547
+ query: {
2548
+ _id: rumApplicationId.toString(),
2549
+ projectId: projectId,
2550
+ },
2551
+ select: {
2552
+ _id: true,
2553
+ appIdentifier: true,
2554
+ },
2555
+ props: {
2556
+ isRoot: true,
2557
+ },
2558
+ });
2559
+ const appIdentifier = String((application === null || application === void 0 ? void 0 : application["appIdentifier"]) || "");
2560
+ if (!application || !appIdentifier) {
2561
+ return Response.sendErrorResponse(req, res, new BadDataException("RUM application not found."));
2562
+ }
2563
+ const target = {
2564
+ projectId: projectId,
2565
+ appIdentifier: appIdentifier,
2566
+ userRef: userRef,
2567
+ };
2568
+ let isPending = false;
2569
+ if (action === "set") {
2570
+ await SessionReplayTargeting.setTarget(target);
2571
+ isPending = true;
2572
+ }
2573
+ else if (action === "clear") {
2574
+ await SessionReplayTargeting.clearTarget(target);
2575
+ isPending = false;
2576
+ }
2577
+ else {
2578
+ isPending = await SessionReplayTargeting.isTargetPending(target);
2579
+ }
2580
+ return Response.sendJsonObjectResponse(req, res, {
2581
+ isPending: isPending,
2582
+ });
2583
+ }
2584
+ catch (err) {
2585
+ next(err);
2586
+ }
2587
+ });
1651
2588
  export default router;
1652
2589
  //# sourceMappingURL=TelemetryAPI.js.map