@oneuptime/common 11.7.4 → 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 (872) 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/AlertFeed.ts +1 -0
  12. package/Models/DatabaseModels/AutoRemediationRule.ts +989 -0
  13. package/Models/DatabaseModels/AutoRemediationSuggestion.ts +874 -0
  14. package/Models/DatabaseModels/CodeRepository.ts +129 -0
  15. package/Models/DatabaseModels/GlobalConfig.ts +312 -0
  16. package/Models/DatabaseModels/Incident.ts +29 -0
  17. package/Models/DatabaseModels/IncidentCustomField.ts +1 -1
  18. package/Models/DatabaseModels/IncidentFeed.ts +1 -0
  19. package/Models/DatabaseModels/Index.ts +21 -8
  20. package/Models/DatabaseModels/InstanceHealthLog.ts +8 -0
  21. package/Models/DatabaseModels/MonitorCustomField.ts +1 -1
  22. package/Models/DatabaseModels/MonitorStatus.ts +1 -1
  23. package/Models/DatabaseModels/NetworkDeviceLabelRule.ts +2 -2
  24. package/Models/DatabaseModels/NetworkDeviceOwnerRule.ts +2 -2
  25. package/Models/DatabaseModels/NetworkSiteAssignmentRule.ts +1 -1
  26. package/Models/DatabaseModels/OnCallDutyPolicyCustomField.ts +1 -1
  27. package/Models/DatabaseModels/Project.ts +231 -0
  28. package/Models/DatabaseModels/RumApplication.ts +906 -0
  29. package/Models/DatabaseModels/RumSessionErasureRequest.ts +561 -0
  30. package/Models/DatabaseModels/RumSessionPin.ts +457 -0
  31. package/Models/DatabaseModels/RumSessionReplayView.ts +406 -0
  32. package/Models/DatabaseModels/RunbookCredential.ts +673 -0
  33. package/Models/DatabaseModels/RunbookSecret.ts +7 -7
  34. package/Models/DatabaseModels/{RunbookAgent.ts → Runner.ts} +206 -46
  35. package/Models/DatabaseModels/{RunbookAgentJob.ts → RunnerJob.ts} +151 -18
  36. package/Models/DatabaseModels/{RunbookAgentOwnerTeam.ts → RunnerOwnerTeam.ts} +41 -43
  37. package/Models/DatabaseModels/{RunbookAgentOwnerUser.ts → RunnerOwnerUser.ts} +41 -43
  38. package/Models/DatabaseModels/ScheduledMaintenanceCustomField.ts +1 -1
  39. package/Models/DatabaseModels/StatusPageCustomField.ts +1 -1
  40. package/Models/DatabaseModels/TeamCustomField.ts +1 -1
  41. package/Models/DatabaseModels/TeamMemberCustomField.ts +1 -1
  42. package/Server/API/AIAgentDataAPI.ts +179 -48
  43. package/Server/API/AIAgentTaskAPI.ts +36 -37
  44. package/Server/API/AIAgentTaskLogAPI.ts +19 -33
  45. package/Server/API/AutoRemediationAPI.ts +557 -0
  46. package/Server/API/BaseAnalyticsAPI.ts +4 -1
  47. package/Server/API/CommonAPI.ts +35 -0
  48. package/Server/API/DashboardAPI.ts +340 -15
  49. package/Server/API/TelemetryAPI.ts +1622 -3
  50. package/Server/API/UserIncomingCallNumberAPI.ts +31 -0
  51. package/Server/DatabaseConfig.ts +26 -1
  52. package/Server/EnvironmentConfig.ts +13 -0
  53. package/Server/Infrastructure/Postgres/SchemaMigrations/1785417351021-AddSessionReplay.ts +293 -0
  54. package/Server/Infrastructure/Postgres/SchemaMigrations/1785491583874-EnableSessionReplayByDefault.ts +67 -0
  55. package/Server/Infrastructure/Postgres/SchemaMigrations/1785496223183-AddMonitorSummaryToIncidentAndAlert.ts +33 -0
  56. package/Server/Infrastructure/Postgres/SchemaMigrations/1785516996695-AddSessionReplayReliabilityColumns.ts +40 -0
  57. package/Server/Infrastructure/Postgres/SchemaMigrations/1785533806494-AddSessionReplayCorrelationColumns.ts +54 -0
  58. package/Server/Infrastructure/Postgres/SchemaMigrations/1785749674203-AddRedisAndPostgresHealthNotificationColumns.ts +104 -0
  59. package/Server/Infrastructure/Postgres/SchemaMigrations/1785763818197-AddAutoRemediation.ts +349 -0
  60. package/Server/Infrastructure/Postgres/SchemaMigrations/1785768089408-AddRemediationVerification.ts +67 -0
  61. package/Server/Infrastructure/Postgres/SchemaMigrations/1785776960660-AddRunnerCapabilities.ts +23 -0
  62. package/Server/Infrastructure/Postgres/SchemaMigrations/1785790000000-AddIncidentInvestigationGating.ts +42 -0
  63. package/Server/Infrastructure/Postgres/SchemaMigrations/1785800000000-AddRunbookCredential.ts +84 -0
  64. package/Server/Infrastructure/Postgres/SchemaMigrations/1785810000000-RenameRunbookAgentToRunner.ts +152 -0
  65. package/Server/Infrastructure/Postgres/SchemaMigrations/1785860000000-SessionReplayDefaultToSensitiveInputMasking.ts +81 -0
  66. package/Server/Infrastructure/Postgres/SchemaMigrations/1785870000000-AddAiCommandRemediation.ts +151 -0
  67. package/Server/Infrastructure/Postgres/SchemaMigrations/1785880000000-AlignRunnerSchemaWithEntities.ts +597 -0
  68. package/Server/Infrastructure/Postgres/SchemaMigrations/1785890000000-AddFixVerificationAndAutomaticCodeFixes.ts +71 -0
  69. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +32 -0
  70. package/Server/Services/AIRunService.ts +10 -0
  71. package/Server/Services/AIService.ts +30 -0
  72. package/Server/Services/AlertService.ts +41 -4
  73. package/Server/Services/AlertSeverityService.ts +25 -11
  74. package/Server/Services/AlertStateService.ts +25 -11
  75. package/Server/Services/AutoRemediationRuleEngineService.ts +1101 -0
  76. package/Server/Services/{RunbookAgentOwnerTeamService.ts → AutoRemediationRuleService.ts} +1 -1
  77. package/Server/Services/AutoRemediationSuggestionService.ts +183 -0
  78. package/Server/Services/BillingService.ts +50 -1
  79. package/Server/Services/DatabaseService.ts +92 -4
  80. package/Server/Services/IncidentService.ts +56 -4
  81. package/Server/Services/IncidentSeverityService.ts +25 -11
  82. package/Server/Services/IncidentStateService.ts +25 -11
  83. package/Server/Services/Index.ts +19 -0
  84. package/Server/Services/MonitorService.ts +24 -0
  85. package/Server/Services/MonitorStatusService.ts +25 -11
  86. package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +18 -19
  87. package/Server/Services/NetworkDeviceLabelRuleService.ts +39 -0
  88. package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +18 -19
  89. package/Server/Services/NetworkDeviceOwnerRuleService.ts +37 -0
  90. package/Server/Services/NetworkDeviceService.ts +172 -21
  91. package/Server/Services/NetworkSiteAssignmentRuleService.ts +92 -12
  92. package/Server/Services/NetworkSiteService.ts +27 -10
  93. package/Server/Services/ProjectService.ts +47 -0
  94. package/Server/Services/RumApplicationService.ts +240 -1
  95. package/Server/Services/RumSessionChunkService.ts +11 -0
  96. package/Server/Services/RumSessionErasureRequestService.ts +197 -0
  97. package/Server/Services/RumSessionPinService.ts +213 -0
  98. package/Server/Services/RumSessionReplayViewService.ts +201 -0
  99. package/Server/Services/RumSessionService.ts +123 -0
  100. package/Server/Services/RunbookCredentialService.ts +76 -0
  101. package/Server/Services/{RunbookAgentJobService.ts → RunnerJobService.ts} +202 -51
  102. package/Server/Services/{RunbookAgentOwnerUserService.ts → RunnerOwnerTeamService.ts} +1 -1
  103. package/Server/Services/RunnerOwnerUserService.ts +10 -0
  104. package/Server/Services/RunnerService.ts +172 -0
  105. package/Server/Services/ScheduledMaintenanceStateService.ts +25 -11
  106. package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +15 -1
  107. package/Server/Services/ServiceService.ts +8 -2
  108. package/Server/Services/StatusPageService.ts +240 -36
  109. package/Server/Services/StatusPageSubscriberNotificationTemplateService.ts +20 -1
  110. package/Server/Services/TelemetryExceptionService.ts +3 -16
  111. package/Server/Services/TelemetryUsageBillingService.ts +33 -2
  112. package/Server/Services/TraceAggregationService.ts +196 -32
  113. package/Server/Types/Billing/MeteredPlan/AllMeteredPlans.ts +17 -0
  114. package/Server/Types/Billing/MeteredPlan/ServerMeteredPlan.ts +10 -0
  115. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +63 -7
  116. package/Server/Utils/AI/CodeFix/CodeFixAgentAuth.ts +128 -0
  117. package/Server/Utils/AI/CodeFix/CodeFixAgentAvailability.ts +54 -0
  118. package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +17 -10
  119. package/Server/Utils/AI/CodeFix/CodeFixRunQueue.ts +8 -6
  120. package/Server/Utils/AI/Remediation/RemediationCommandTools.ts +943 -0
  121. package/Server/Utils/AI/Remediation/RemediationExecutionRunner.ts +866 -0
  122. package/Server/Utils/AI/Remediation/RemediationPlanRunner.ts +823 -0
  123. package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +103 -12
  124. package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +75 -17
  125. package/Server/Utils/AI/SRE/ConfidenceSignal.ts +28 -6
  126. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +202 -12
  127. package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +264 -14
  128. package/Server/Utils/AI/SRE/Insights/Triage.ts +2 -7
  129. package/Server/Utils/AI/SRE/InvestigationGrader.ts +5 -24
  130. package/Server/Utils/AI/SRE/InvestigationQueue.ts +259 -20
  131. package/Server/Utils/AI/SRE/PostedRootCause.ts +82 -0
  132. package/Server/Utils/AI/SRE/README.md +3 -2
  133. package/Server/Utils/AI/SRE/RemediationHandoff.ts +82 -0
  134. package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +6 -19
  135. package/Server/Utils/AI/Toolbox/CodeWriteTools.ts +2 -2
  136. package/Server/Utils/Alert/AlertPrivacyFilter.ts +58 -0
  137. package/Server/Utils/AutoRemediation/CommandPlanExecutor.ts +604 -0
  138. package/Server/Utils/AutoRemediation/RemediationVerifier.ts +619 -0
  139. package/Server/Utils/CorsOptions.ts +52 -0
  140. package/Server/Utils/Database/RelationIdUtil.ts +68 -0
  141. package/Server/Utils/Incident/IncidentPrivacyFilter.ts +60 -0
  142. package/Server/Utils/InstanceHealth/PostgresHealth.ts +286 -0
  143. package/Server/Utils/InstanceHealth/RedisHealth.ts +434 -0
  144. package/Server/Utils/Monitor/MonitorAlert.ts +20 -0
  145. package/Server/Utils/Monitor/MonitorIncident.ts +20 -0
  146. package/Server/Utils/Monitor/MonitorResource.ts +19 -0
  147. package/Server/Utils/Monitor/MonitorSummaryCapture.ts +104 -0
  148. package/Server/Utils/NetworkDevice/RulePatternValidator.ts +44 -0
  149. package/Server/Utils/OpenAPI.ts +2 -1
  150. package/Server/Utils/Runbook/RunbookExecutePermission.ts +94 -0
  151. package/Server/Utils/SessionReplay/SessionReplayErasureTombstone.ts +128 -0
  152. package/Server/Utils/SessionReplay/SessionReplayGateCache.ts +586 -0
  153. package/Server/Utils/SessionReplay/SessionReplayGateCacheStore.ts +188 -0
  154. package/Server/Utils/SessionReplay/SessionReplayReadService.ts +1449 -0
  155. package/Server/Utils/SessionReplay/SessionReplayRetention.ts +114 -0
  156. package/Server/Utils/SessionReplay/SessionReplayTargeting.ts +144 -0
  157. package/Server/Utils/SessionReplay/SessionReplayUsage.ts +92 -0
  158. package/Server/Utils/StartServer.ts +47 -3
  159. package/Server/Utils/Telemetry/TelemetryFanInWriter.ts +44 -10
  160. package/Tests/App/Dashboard/AddWidgetModal.test.tsx +557 -0
  161. package/Tests/App/Dashboard/WidgetCatalog.test.ts +479 -0
  162. package/Tests/App/StatusPage/BulkAddStatusPageMonitors.test.ts +343 -0
  163. package/Tests/App/StatusPage/BulkAddStatusPageMonitorsModal.test.tsx +320 -0
  164. package/Tests/Models/AnalyticsModels/RumSessionSchema.test.ts +455 -0
  165. package/Tests/Models/AnalyticsModels/SessionIdCorrelation.test.ts +158 -0
  166. package/Tests/Models/DatabaseModels/SessionReplayModels.test.ts +447 -0
  167. package/Tests/Models/RunnerVersionLabel.test.ts +223 -0
  168. package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +1287 -0
  169. package/Tests/Server/API/LegacyRunbookAgentRoutes.test.ts +117 -0
  170. package/Tests/Server/API/SessionReplayAPI.test.ts +2093 -0
  171. package/Tests/Server/API/UserIncomingCallNumberApi.test.ts +429 -0
  172. package/Tests/Server/API/UserSmsApi.test.ts +68 -2
  173. package/Tests/Server/DatabaseConfig.test.ts +150 -0
  174. package/Tests/Server/Infrastructure/ContainerBootConfiguration.test.ts +2 -2
  175. package/Tests/Server/Infrastructure/ProcessSignalDelivery.test.ts +2 -3
  176. package/Tests/Server/Services/AIRunCodeFixClaimScoping.test.ts +100 -0
  177. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +8 -0
  178. package/Tests/Server/Services/AutoRemediationCommandRuleEngine.test.ts +334 -0
  179. package/Tests/Server/Services/AutoRemediationRuleEngineService.test.ts +517 -0
  180. package/Tests/Server/Services/BillingService.test.ts +158 -1
  181. package/Tests/Server/Services/DatabaseServiceEmptyUpdate.test.ts +24 -2
  182. package/Tests/Server/Services/DatabaseServiceSanitizeUpdateData.test.ts +17 -10
  183. package/Tests/Server/Services/DatabaseServiceUpdateColumnsWithoutHooks.test.ts +128 -0
  184. package/Tests/Server/Services/DatabaseServiceUpdateWriteRouting.test.ts +178 -0
  185. package/Tests/Server/Services/DatabaseServiceUpdateWriteRoutingMonitor.test.ts +206 -0
  186. package/Tests/Server/Services/MonitorServiceOperationalStatusSelection.test.ts +145 -0
  187. package/Tests/Server/Services/NetworkDeviceRuleEngines.test.ts +726 -0
  188. package/Tests/Server/Services/NetworkDeviceSiteAssignment.test.ts +570 -9
  189. package/Tests/Server/Services/NetworkSiteAssignmentRuleService.test.ts +94 -1
  190. package/Tests/Server/Services/NetworkSiteService.test.ts +85 -0
  191. package/Tests/Server/Services/RumApplicationReplayHealth.test.ts +114 -0
  192. package/Tests/Server/Services/RunbookCredentialService.test.ts +657 -0
  193. package/Tests/Server/Services/SessionReplayCreatePath.test.ts +376 -0
  194. package/Tests/Server/Services/SessionReplayGateCacheInvalidation.test.ts +211 -0
  195. package/Tests/Server/Services/SessionReplayMetering.test.ts +174 -0
  196. package/Tests/Server/Services/StatusPageSubscriberReport.test.ts +555 -0
  197. package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +25 -4
  198. package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +17 -2
  199. package/Tests/Server/Services/TraceAggregationService.test.ts +48 -0
  200. package/Tests/Server/Services/TraceAnalyticsResourceDisplayNames.test.ts +855 -0
  201. package/Tests/Server/Services/UpdateOneByIdKeepsRowId.test.ts +38 -27
  202. package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +44 -0
  203. package/Tests/Server/Utils/AI/AIIncidentGating.test.ts +475 -0
  204. package/Tests/Server/Utils/AI/CodeFix/CodeFixAgentAuth.test.ts +257 -0
  205. package/Tests/Server/Utils/AI/CodeFix/CodeFixAgentAvailability.test.ts +236 -0
  206. package/Tests/Server/Utils/AI/CodeFixReadiness.test.ts +44 -6
  207. package/Tests/Server/Utils/AI/CodeFixRunQueue.test.ts +47 -1
  208. package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +2 -2
  209. package/Tests/Server/Utils/AI/FixFromIncidentAutoTrigger.test.ts +294 -0
  210. package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +2 -2
  211. package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +47 -3
  212. package/Tests/Server/Utils/AI/InvestigationQueueRemediationExecution.test.ts +233 -0
  213. package/Tests/Server/Utils/AI/InvestigationSettlement.test.ts +463 -0
  214. package/Tests/Server/Utils/AI/PostedRootCause.test.ts +254 -0
  215. package/Tests/Server/Utils/AI/RemediationAllowlistNormalization.test.ts +248 -0
  216. package/Tests/Server/Utils/AI/RemediationCommandTools.test.ts +1008 -0
  217. package/Tests/Server/Utils/AI/RemediationExecutionRunner.test.ts +887 -0
  218. package/Tests/Server/Utils/AI/RemediationHandoff.test.ts +306 -0
  219. package/Tests/Server/Utils/AI/RemediationPlanRunner.test.ts +745 -0
  220. package/Tests/Server/Utils/AI/SubjectCodeFixRunDedupe.test.ts +291 -0
  221. package/Tests/Server/Utils/AutoRemediation/CommandPlanExecutor.test.ts +1050 -0
  222. package/Tests/Server/Utils/AutoRemediation/CommandPlanVerification.test.ts +350 -0
  223. package/Tests/Server/Utils/AutoRemediation/RemediationVerifier.test.ts +341 -0
  224. package/Tests/Server/Utils/CorsOptions.test.ts +119 -0
  225. package/Tests/Server/Utils/Database/RelationIdUtil.test.ts +120 -0
  226. package/Tests/Server/Utils/Database/ResolveReferenceId.test.ts +60 -0
  227. package/Tests/Server/Utils/InstanceHealth/PostgresHealth.test.ts +337 -0
  228. package/Tests/Server/Utils/InstanceHealth/RedisHealth.test.ts +671 -0
  229. package/Tests/Server/Utils/Monitor/MonitorSummaryCapture.test.ts +205 -0
  230. package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +313 -0
  231. package/Tests/Server/Utils/PushNotificationUtil.test.ts +228 -0
  232. package/Tests/Server/Utils/SessionReplay/SessionReplayGateCachePolicy.test.ts +177 -0
  233. package/Tests/Server/Utils/SessionReplay/SessionReplayOriginAllowlist.test.ts +108 -0
  234. package/Tests/Server/Utils/SessionReplay/SessionReplayRetention.test.ts +229 -0
  235. package/Tests/Server/Utils/SessionReplay/SessionReplayTargeting.test.ts +246 -0
  236. package/Tests/Server/Utils/Telemetry/TelemetryFanInWriter.test.ts +110 -0
  237. package/Tests/Types/AI/AIRunStatus.test.ts +25 -0
  238. package/Tests/Types/AutoRemediation/AiRemediationCommandPlan.test.ts +1063 -0
  239. package/Tests/Types/BaseDatabase/AggregationType.test.ts +56 -0
  240. package/Tests/Types/CustomField/CustomFieldDropdownOption.test.ts +227 -0
  241. package/Tests/Types/Dashboard/DashboardTemplateInvariants.test.ts +811 -0
  242. package/Tests/Types/Dashboard/RumDashboardTemplate.test.ts +1238 -0
  243. package/Tests/Types/Day/DayOfWeek.test.ts +46 -0
  244. package/Tests/Types/Docker/DockerInventoryExtractor.test.ts +249 -0
  245. package/Tests/Types/Kubernetes/KubernetesInventoryExtractor.test.ts +231 -0
  246. package/Tests/Types/Kubernetes/KubernetesRightSizing.test.ts +323 -0
  247. package/Tests/Types/Metrics/MetricDownsamplingRetentionDays.test.ts +77 -0
  248. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +42 -14
  249. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +2 -2
  250. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +3 -2
  251. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +1 -1
  252. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +6 -3
  253. package/Tests/Types/Monitor/RumAlertTemplates.test.ts +285 -0
  254. package/Tests/Types/Podman/PodmanInventoryExtractor.test.ts +159 -0
  255. package/Tests/Types/Runbook/RunbookExecutionDeadline.test.ts +268 -0
  256. package/Tests/Types/Runbook/RunbookStepType.test.ts +242 -0
  257. package/Tests/Types/Telemetry/TelemetryRetentionConfig.test.ts +225 -0
  258. package/Tests/Types/Text.test.ts +60 -0
  259. package/Tests/UI/Components/AutocompleteTextInputMenu.test.tsx +555 -0
  260. package/Tests/UI/Components/BulkLabelActions.test.tsx +1502 -0
  261. package/Tests/UI/Components/BulkOwnerActions.test.tsx +1255 -0
  262. package/Tests/UI/Components/CustomFields/DropdownOptionsInput.test.tsx +228 -0
  263. package/Tests/UI/Components/Detail/DropdownColors.test.tsx +128 -0
  264. package/Tests/UI/Components/Dropdown/DropdownValueBadge.test.tsx +60 -0
  265. package/Tests/UI/Components/FilterModalOperatorMenu.test.tsx +674 -0
  266. package/Tests/UI/Components/Forms/ColorPicker.test.tsx +48 -0
  267. package/Tests/UI/Components/Forms/ColorPickerPopup.test.tsx +222 -0
  268. package/Tests/UI/Components/Forms/IconPickerPopup.test.tsx +270 -0
  269. package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +125 -6
  270. package/Tests/UI/Components/OperatorSelectorFilterTypes.test.tsx +1595 -0
  271. package/Tests/UI/Components/OperatorSelectorKeyboard.test.tsx +851 -0
  272. package/Tests/UI/Components/OperatorSelectorMenu.test.tsx +1229 -0
  273. package/Tests/UI/Components/Pagination.test.tsx +85 -0
  274. package/Tests/UI/Monitor/MonitorSummarySnapshotRender.test.tsx +248 -0
  275. package/Tests/UI/Rum/ChunkLoader.test.ts +790 -0
  276. package/Tests/UI/Rum/ReplayScrubber.test.tsx +236 -0
  277. package/Tests/UI/Rum/ReplayStage.test.tsx +606 -0
  278. package/Tests/UI/Utils/Timezone.test.ts +86 -0
  279. package/Tests/UI/Utils/UseClockTick.test.tsx +276 -0
  280. package/Tests/Utils/AiRemediation/CommandPolicy.test.ts +1063 -0
  281. package/Tests/Utils/Dashboard/ClockWidgetFormat.test.ts +1374 -0
  282. package/Tests/Utils/Dashboard/DashboardClockComponent.test.ts +362 -0
  283. package/Tests/Utils/Dashboard/DashboardHtmlComponent.test.ts +217 -0
  284. package/Tests/Utils/Dashboard/HtmlWidgetDocument.test.ts +656 -0
  285. package/Tests/Utils/Dashboard/ValueWidgetLayout.test.ts +1007 -0
  286. package/Tests/Utils/Metrics/MetricSeriesScope.test.ts +1197 -0
  287. package/Tests/Utils/Monitor/MonitorSummarySnapshotUtil.test.ts +839 -0
  288. package/Tests/Utils/NetworkSite/CidrMatchUtil.test.ts +69 -0
  289. package/Tests/Utils/Rules/RulePatternMatchUtil.test.ts +274 -0
  290. package/Tests/Utils/Rum/ChunkMath.test.ts +286 -0
  291. package/Tests/Utils/Rum/Masking.test.ts +186 -0
  292. package/Tests/Utils/Rum/SessionIdentity.test.ts +272 -0
  293. package/Tests/Utils/Rum/SessionSampling.test.ts +164 -0
  294. package/Tests/Utils/Rum/UrlScrubber.test.ts +175 -0
  295. package/Tests/Utils/StatusPage/Report.test.ts +708 -0
  296. package/Tests/Utils/ValueFormatter.test.ts +299 -1
  297. package/Types/AI/AIRunStatus.ts +18 -7
  298. package/Types/AI/AIRunType.ts +18 -0
  299. package/Types/AI/FixVerificationStatus.ts +21 -0
  300. package/Types/AnalyticsDatabase/AnalyticsTableName.ts +16 -0
  301. package/Types/AutoRemediation/AiRemediationCommandPlan.ts +304 -0
  302. package/Types/AutoRemediation/AutoRemediationExecutionMode.ts +17 -0
  303. package/Types/AutoRemediation/AutoRemediationSuggestionStatus.ts +35 -0
  304. package/Types/AutoRemediation/AutoRemediationSuggestionType.ts +17 -0
  305. package/Types/AutoRemediation/AutoRemediationTriggerEntity.ts +11 -0
  306. package/Types/AutoRemediation/AutoRemediationVerificationStatus.ts +21 -0
  307. package/Types/CustomField/CustomFieldDropdownOption.ts +190 -0
  308. package/Types/Dashboard/DashboardComponentType.ts +2 -0
  309. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +4 -0
  310. package/Types/Dashboard/DashboardComponents/DashboardClockComponent.ts +45 -0
  311. package/Types/Dashboard/DashboardComponents/DashboardHtmlComponent.ts +27 -0
  312. package/Types/Dashboard/DashboardComponents/DashboardValueComponent.ts +8 -0
  313. package/Types/Dashboard/DashboardTemplates.ts +516 -0
  314. package/Types/Date.ts +6 -0
  315. package/Types/Email/EmailTemplateType.ts +2 -0
  316. package/Types/Kubernetes/KubernetesRightSizing.ts +353 -0
  317. package/Types/MeteredPlan/ProductType.ts +1 -0
  318. package/Types/Monitor/MonitorStepMetricMonitor.ts +27 -1
  319. package/Types/Monitor/MonitorSteps.ts +5 -0
  320. package/Types/Monitor/MonitorSummarySnapshot.ts +88 -0
  321. package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +52 -10
  322. package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +7 -5
  323. package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +101 -20
  324. package/Types/Monitor/RumAlertTemplates.ts +386 -0
  325. package/Types/Permission.ts +204 -24
  326. package/Types/Rum/SessionReplay.ts +452 -0
  327. package/Types/Rum/SessionReplayCaptureTrigger.ts +26 -0
  328. package/Types/Rum/SessionReplayConsentMode.ts +27 -0
  329. package/Types/Rum/SessionReplayMaskingMode.ts +86 -0
  330. package/Types/Rum/SessionReplayTriggerReason.ts +31 -0
  331. package/Types/Runbook/RunbookCredentialType.ts +6 -0
  332. package/Types/Runbook/RunbookStep.ts +66 -1
  333. package/Types/Runbook/RunbookStepType.ts +26 -0
  334. package/Types/Runbook/RunnerJobOrigin.ts +20 -0
  335. package/Types/Runbook/{RunbookAgentJobStatus.ts → RunnerJobStatus.ts} +2 -2
  336. package/Types/StatusPage/StatusPageReport.ts +99 -0
  337. package/Types/Telemetry/TelemetryRetentionConfig.ts +18 -1
  338. package/Types/Text.ts +33 -0
  339. package/UI/Components/AutocompleteTextInput/AutocompleteTextInput.tsx +260 -75
  340. package/UI/Components/BulkUpdate/BulkLabelActions.tsx +99 -9
  341. package/UI/Components/BulkUpdate/BulkOwnerActions.tsx +11 -0
  342. package/UI/Components/CustomFields/CustomFieldsDetail.tsx +19 -14
  343. package/UI/Components/CustomFields/DropdownOptionsInput.tsx +144 -54
  344. package/UI/Components/Detail/Detail.tsx +9 -22
  345. package/UI/Components/Dropdown/Dropdown.tsx +2 -5
  346. package/UI/Components/Dropdown/DropdownMenuZIndex.ts +7 -0
  347. package/UI/Components/Dropdown/DropdownValueBadge.tsx +61 -0
  348. package/UI/Components/Filters/OperatorSelector.tsx +350 -39
  349. package/UI/Components/Forms/Fields/ColorPicker.tsx +60 -27
  350. package/UI/Components/Forms/Fields/IconPicker.tsx +89 -60
  351. package/UI/Components/Forms/Validation.ts +9 -4
  352. package/UI/Components/List/List.tsx +1 -0
  353. package/UI/Components/ModelTable/CustomFieldColumns.tsx +41 -32
  354. package/UI/Components/Pagination/Pagination.tsx +33 -10
  355. package/UI/Components/Table/Table.tsx +1 -0
  356. package/UI/Types/UseAnchoredFieldPopup.ts +321 -0
  357. package/UI/Utils/Dropdown.ts +26 -0
  358. package/UI/Utils/Timezone.ts +18 -2
  359. package/UI/Utils/UseClockTick.ts +78 -0
  360. package/Utils/AiRemediation/CommandPolicy.ts +398 -0
  361. package/Utils/Dashboard/ClockWidgetFormat.ts +604 -0
  362. package/Utils/Dashboard/Components/DashboardClockComponent.ts +181 -0
  363. package/Utils/Dashboard/Components/DashboardHtmlComponent.ts +162 -0
  364. package/Utils/Dashboard/Components/DashboardValueComponent.ts +12 -1
  365. package/Utils/Dashboard/Components/Index.ts +14 -0
  366. package/Utils/Dashboard/HtmlWidgetDocument.ts +309 -0
  367. package/Utils/Dashboard/ValueWidgetLayout.ts +471 -0
  368. package/Utils/Metrics/MetricSeriesScope.ts +301 -0
  369. package/Utils/Monitor/MonitorSummarySnapshotUtil.ts +593 -0
  370. package/Utils/NetworkSite/CidrMatchUtil.ts +30 -17
  371. package/Utils/Rules/RulePatternMatchUtil.ts +103 -0
  372. package/Utils/Rum/ChunkMath.ts +211 -0
  373. package/Utils/Rum/Masking.ts +168 -0
  374. package/Utils/Rum/SessionIdentity.ts +230 -0
  375. package/Utils/Rum/SessionSampling.ts +108 -0
  376. package/Utils/Rum/UrlScrubber.ts +185 -0
  377. package/Utils/Schema/ModelSchema.ts +27 -3
  378. package/Utils/StatusPage/Report.ts +304 -0
  379. package/Utils/ValueFormatter.ts +300 -54
  380. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +63 -0
  381. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
  382. package/build/dist/Models/AnalyticsModels/Index.js +10 -0
  383. package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
  384. package/build/dist/Models/AnalyticsModels/Log.js +56 -0
  385. package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
  386. package/build/dist/Models/AnalyticsModels/RumSession.js +1159 -0
  387. package/build/dist/Models/AnalyticsModels/RumSession.js.map +1 -0
  388. package/build/dist/Models/AnalyticsModels/RumSessionChunk.js +670 -0
  389. package/build/dist/Models/AnalyticsModels/RumSessionChunk.js.map +1 -0
  390. package/build/dist/Models/AnalyticsModels/Span.js +56 -0
  391. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  392. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +54 -0
  393. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
  394. package/build/dist/Models/DatabaseModels/AIRun.js +32 -0
  395. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  396. package/build/dist/Models/DatabaseModels/Alert.js +30 -0
  397. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  398. package/build/dist/Models/DatabaseModels/AlertCustomField.js +1 -1
  399. package/build/dist/Models/DatabaseModels/AlertCustomField.js.map +1 -1
  400. package/build/dist/Models/DatabaseModels/AlertFeed.js +1 -0
  401. package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
  402. package/build/dist/Models/DatabaseModels/AutoRemediationRule.js +998 -0
  403. package/build/dist/Models/DatabaseModels/AutoRemediationRule.js.map +1 -0
  404. package/build/dist/Models/DatabaseModels/AutoRemediationSuggestion.js +917 -0
  405. package/build/dist/Models/DatabaseModels/AutoRemediationSuggestion.js.map +1 -0
  406. package/build/dist/Models/DatabaseModels/CodeRepository.js +132 -0
  407. package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
  408. package/build/dist/Models/DatabaseModels/GlobalConfig.js +327 -0
  409. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  410. package/build/dist/Models/DatabaseModels/Incident.js +30 -0
  411. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  412. package/build/dist/Models/DatabaseModels/IncidentCustomField.js +1 -1
  413. package/build/dist/Models/DatabaseModels/IncidentCustomField.js.map +1 -1
  414. package/build/dist/Models/DatabaseModels/IncidentFeed.js +1 -0
  415. package/build/dist/Models/DatabaseModels/IncidentFeed.js.map +1 -1
  416. package/build/dist/Models/DatabaseModels/Index.js +20 -8
  417. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  418. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js +8 -0
  419. package/build/dist/Models/DatabaseModels/InstanceHealthLog.js.map +1 -1
  420. package/build/dist/Models/DatabaseModels/MonitorCustomField.js +1 -1
  421. package/build/dist/Models/DatabaseModels/MonitorCustomField.js.map +1 -1
  422. package/build/dist/Models/DatabaseModels/MonitorStatus.js +1 -1
  423. package/build/dist/Models/DatabaseModels/MonitorStatus.js.map +1 -1
  424. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js +2 -2
  425. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js.map +1 -1
  426. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js +2 -2
  427. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js.map +1 -1
  428. package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js +1 -1
  429. package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js.map +1 -1
  430. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js +1 -1
  431. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js.map +1 -1
  432. package/build/dist/Models/DatabaseModels/Project.js +235 -0
  433. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  434. package/build/dist/Models/DatabaseModels/RumApplication.js +930 -0
  435. package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
  436. package/build/dist/Models/DatabaseModels/RumSessionErasureRequest.js +591 -0
  437. package/build/dist/Models/DatabaseModels/RumSessionErasureRequest.js.map +1 -0
  438. package/build/dist/Models/DatabaseModels/RumSessionPin.js +483 -0
  439. package/build/dist/Models/DatabaseModels/RumSessionPin.js.map +1 -0
  440. package/build/dist/Models/DatabaseModels/RumSessionReplayView.js +433 -0
  441. package/build/dist/Models/DatabaseModels/RumSessionReplayView.js.map +1 -0
  442. package/build/dist/Models/DatabaseModels/RunbookCredential.js +693 -0
  443. package/build/dist/Models/DatabaseModels/RunbookCredential.js.map +1 -0
  444. package/build/dist/Models/DatabaseModels/RunbookSecret.js +8 -8
  445. package/build/dist/Models/DatabaseModels/RunbookSecret.js.map +1 -1
  446. package/build/dist/Models/DatabaseModels/{RunbookAgent.js → Runner.js} +235 -70
  447. package/build/dist/Models/DatabaseModels/Runner.js.map +1 -0
  448. package/build/dist/Models/DatabaseModels/{RunbookAgentJob.js → RunnerJob.js} +173 -40
  449. package/build/dist/Models/DatabaseModels/RunnerJob.js.map +1 -0
  450. package/build/dist/Models/DatabaseModels/{RunbookAgentOwnerTeam.js → RunnerOwnerTeam.js} +57 -57
  451. package/build/dist/Models/DatabaseModels/RunnerOwnerTeam.js.map +1 -0
  452. package/build/dist/Models/DatabaseModels/{RunbookAgentOwnerUser.js → RunnerOwnerUser.js} +57 -57
  453. package/build/dist/Models/DatabaseModels/RunnerOwnerUser.js.map +1 -0
  454. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js +1 -1
  455. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js.map +1 -1
  456. package/build/dist/Models/DatabaseModels/StatusPageCustomField.js +1 -1
  457. package/build/dist/Models/DatabaseModels/StatusPageCustomField.js.map +1 -1
  458. package/build/dist/Models/DatabaseModels/TeamCustomField.js +1 -1
  459. package/build/dist/Models/DatabaseModels/TeamCustomField.js.map +1 -1
  460. package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js +1 -1
  461. package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js.map +1 -1
  462. package/build/dist/Server/API/AIAgentDataAPI.js +130 -45
  463. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  464. package/build/dist/Server/API/AIAgentTaskAPI.js +26 -36
  465. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  466. package/build/dist/Server/API/AIAgentTaskLogAPI.js +11 -28
  467. package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
  468. package/build/dist/Server/API/AutoRemediationAPI.js +416 -0
  469. package/build/dist/Server/API/AutoRemediationAPI.js.map +1 -0
  470. package/build/dist/Server/API/BaseAnalyticsAPI.js +4 -1
  471. package/build/dist/Server/API/BaseAnalyticsAPI.js.map +1 -1
  472. package/build/dist/Server/API/CommonAPI.js +24 -0
  473. package/build/dist/Server/API/CommonAPI.js.map +1 -1
  474. package/build/dist/Server/API/DashboardAPI.js +265 -6
  475. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  476. package/build/dist/Server/API/TelemetryAPI.js +940 -3
  477. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  478. package/build/dist/Server/API/UserIncomingCallNumberAPI.js +18 -0
  479. package/build/dist/Server/API/UserIncomingCallNumberAPI.js.map +1 -1
  480. package/build/dist/Server/DatabaseConfig.js +23 -4
  481. package/build/dist/Server/DatabaseConfig.js.map +1 -1
  482. package/build/dist/Server/EnvironmentConfig.js +8 -0
  483. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  484. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785417351021-AddSessionReplay.js +106 -0
  485. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785417351021-AddSessionReplay.js.map +1 -0
  486. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785491583874-EnableSessionReplayByDefault.js +37 -0
  487. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785491583874-EnableSessionReplayByDefault.js.map +1 -0
  488. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785496223183-AddMonitorSummaryToIncidentAndAlert.js +18 -0
  489. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785496223183-AddMonitorSummaryToIncidentAndAlert.js.map +1 -0
  490. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785516996695-AddSessionReplayReliabilityColumns.js +29 -0
  491. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785516996695-AddSessionReplayReliabilityColumns.js.map +1 -0
  492. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785533806494-AddSessionReplayCorrelationColumns.js +35 -0
  493. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785533806494-AddSessionReplayCorrelationColumns.js.map +1 -0
  494. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785749674203-AddRedisAndPostgresHealthNotificationColumns.js +40 -0
  495. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785749674203-AddRedisAndPostgresHealthNotificationColumns.js.map +1 -0
  496. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785763818197-AddAutoRemediation.js +128 -0
  497. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785763818197-AddAutoRemediation.js.map +1 -0
  498. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785768089408-AddRemediationVerification.js +28 -0
  499. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785768089408-AddRemediationVerification.js.map +1 -0
  500. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785776960660-AddRunnerCapabilities.js +14 -0
  501. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785776960660-AddRunnerCapabilities.js.map +1 -0
  502. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785790000000-AddIncidentInvestigationGating.js +27 -0
  503. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785790000000-AddIncidentInvestigationGating.js.map +1 -0
  504. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785800000000-AddRunbookCredential.js +44 -0
  505. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785800000000-AddRunbookCredential.js.map +1 -0
  506. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785810000000-RenameRunbookAgentToRunner.js +88 -0
  507. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785810000000-RenameRunbookAgentToRunner.js.map +1 -0
  508. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785860000000-SessionReplayDefaultToSensitiveInputMasking.js +59 -0
  509. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785860000000-SessionReplayDefaultToSensitiveInputMasking.js.map +1 -0
  510. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785870000000-AddAiCommandRemediation.js +76 -0
  511. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785870000000-AddAiCommandRemediation.js.map +1 -0
  512. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785880000000-AlignRunnerSchemaWithEntities.js +214 -0
  513. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785880000000-AlignRunnerSchemaWithEntities.js.map +1 -0
  514. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785890000000-AddFixVerificationAndAutomaticCodeFixes.js +44 -0
  515. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785890000000-AddFixVerificationAndAutomaticCodeFixes.js.map +1 -0
  516. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +32 -0
  517. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  518. package/build/dist/Server/Services/AIRunService.js +1 -4
  519. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  520. package/build/dist/Server/Services/AIService.js +26 -0
  521. package/build/dist/Server/Services/AIService.js.map +1 -1
  522. package/build/dist/Server/Services/AlertService.js +37 -4
  523. package/build/dist/Server/Services/AlertService.js.map +1 -1
  524. package/build/dist/Server/Services/AlertSeverityService.js +24 -11
  525. package/build/dist/Server/Services/AlertSeverityService.js.map +1 -1
  526. package/build/dist/Server/Services/AlertStateService.js +24 -11
  527. package/build/dist/Server/Services/AlertStateService.js.map +1 -1
  528. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +917 -0
  529. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -0
  530. package/build/dist/Server/Services/{RunbookAgentOwnerTeamService.js → AutoRemediationRuleService.js} +2 -2
  531. package/build/dist/Server/Services/AutoRemediationRuleService.js.map +1 -0
  532. package/build/dist/Server/Services/AutoRemediationSuggestionService.js +127 -0
  533. package/build/dist/Server/Services/AutoRemediationSuggestionService.js.map +1 -0
  534. package/build/dist/Server/Services/BillingService.js +45 -1
  535. package/build/dist/Server/Services/BillingService.js.map +1 -1
  536. package/build/dist/Server/Services/DatabaseService.js +72 -4
  537. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  538. package/build/dist/Server/Services/IncidentService.js +52 -4
  539. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  540. package/build/dist/Server/Services/IncidentSeverityService.js +24 -11
  541. package/build/dist/Server/Services/IncidentSeverityService.js.map +1 -1
  542. package/build/dist/Server/Services/IncidentStateService.js +24 -11
  543. package/build/dist/Server/Services/IncidentStateService.js.map +1 -1
  544. package/build/dist/Server/Services/Index.js +18 -0
  545. package/build/dist/Server/Services/Index.js.map +1 -1
  546. package/build/dist/Server/Services/MonitorService.js +24 -0
  547. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  548. package/build/dist/Server/Services/MonitorStatusService.js +25 -11
  549. package/build/dist/Server/Services/MonitorStatusService.js.map +1 -1
  550. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +12 -11
  551. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -1
  552. package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js +43 -0
  553. package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js.map +1 -1
  554. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +12 -11
  555. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -1
  556. package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js +41 -0
  557. package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js.map +1 -1
  558. package/build/dist/Server/Services/NetworkDeviceService.js +129 -20
  559. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  560. package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js +67 -10
  561. package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js.map +1 -1
  562. package/build/dist/Server/Services/NetworkSiteService.js +19 -8
  563. package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
  564. package/build/dist/Server/Services/ProjectService.js +43 -0
  565. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  566. package/build/dist/Server/Services/RumApplicationService.js +202 -0
  567. package/build/dist/Server/Services/RumApplicationService.js.map +1 -1
  568. package/build/dist/Server/Services/RumSessionChunkService.js +9 -0
  569. package/build/dist/Server/Services/RumSessionChunkService.js.map +1 -0
  570. package/build/dist/Server/Services/RumSessionErasureRequestService.js +190 -0
  571. package/build/dist/Server/Services/RumSessionErasureRequestService.js.map +1 -0
  572. package/build/dist/Server/Services/RumSessionPinService.js +208 -0
  573. package/build/dist/Server/Services/RumSessionPinService.js.map +1 -0
  574. package/build/dist/Server/Services/RumSessionReplayViewService.js +180 -0
  575. package/build/dist/Server/Services/RumSessionReplayViewService.js.map +1 -0
  576. package/build/dist/Server/Services/RumSessionService.js +102 -0
  577. package/build/dist/Server/Services/RumSessionService.js.map +1 -0
  578. package/build/dist/Server/Services/RunbookCredentialService.js +67 -0
  579. package/build/dist/Server/Services/RunbookCredentialService.js.map +1 -0
  580. package/build/dist/Server/Services/{RunbookAgentJobService.js → RunnerJobService.js} +158 -46
  581. package/build/dist/Server/Services/RunnerJobService.js.map +1 -0
  582. package/build/dist/Server/Services/{RunbookAgentOwnerUserService.js → RunnerOwnerTeamService.js} +2 -2
  583. package/build/dist/Server/Services/RunnerOwnerTeamService.js.map +1 -0
  584. package/build/dist/Server/Services/RunnerOwnerUserService.js +9 -0
  585. package/build/dist/Server/Services/RunnerOwnerUserService.js.map +1 -0
  586. package/build/dist/Server/Services/RunnerService.js +168 -0
  587. package/build/dist/Server/Services/RunnerService.js.map +1 -0
  588. package/build/dist/Server/Services/ScheduledMaintenanceStateService.js +24 -11
  589. package/build/dist/Server/Services/ScheduledMaintenanceStateService.js.map +1 -1
  590. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +15 -1
  591. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
  592. package/build/dist/Server/Services/ServiceService.js +8 -2
  593. package/build/dist/Server/Services/ServiceService.js.map +1 -1
  594. package/build/dist/Server/Services/StatusPageService.js +173 -16
  595. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  596. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js +17 -1
  597. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js.map +1 -1
  598. package/build/dist/Server/Services/TelemetryExceptionService.js +3 -16
  599. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  600. package/build/dist/Server/Services/TelemetryUsageBillingService.js +31 -3
  601. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  602. package/build/dist/Server/Services/TraceAggregationService.js +106 -2
  603. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  604. package/build/dist/Server/Types/Billing/MeteredPlan/AllMeteredPlans.js +16 -0
  605. package/build/dist/Server/Types/Billing/MeteredPlan/AllMeteredPlans.js.map +1 -1
  606. package/build/dist/Server/Types/Billing/MeteredPlan/ServerMeteredPlan.js +9 -0
  607. package/build/dist/Server/Types/Billing/MeteredPlan/ServerMeteredPlan.js.map +1 -1
  608. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +38 -6
  609. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
  610. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentAuth.js +104 -0
  611. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentAuth.js.map +1 -0
  612. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentAvailability.js +54 -0
  613. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentAvailability.js.map +1 -0
  614. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +11 -7
  615. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -1
  616. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js +3 -4
  617. package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js.map +1 -1
  618. package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js +724 -0
  619. package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js.map +1 -0
  620. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js +668 -0
  621. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js.map +1 -0
  622. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js +657 -0
  623. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js.map +1 -0
  624. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +52 -7
  625. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
  626. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +53 -5
  627. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
  628. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +25 -6
  629. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -1
  630. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +131 -17
  631. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -1
  632. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +200 -5
  633. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
  634. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js +2 -7
  635. package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js.map +1 -1
  636. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +4 -17
  637. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -1
  638. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +203 -19
  639. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
  640. package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js +89 -0
  641. package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js.map +1 -0
  642. package/build/dist/Server/Utils/AI/SRE/RemediationHandoff.js +82 -0
  643. package/build/dist/Server/Utils/AI/SRE/RemediationHandoff.js.map +1 -0
  644. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +4 -19
  645. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -1
  646. package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js +2 -2
  647. package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js +36 -0
  648. package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js.map +1 -1
  649. package/build/dist/Server/Utils/AutoRemediation/CommandPlanExecutor.js +498 -0
  650. package/build/dist/Server/Utils/AutoRemediation/CommandPlanExecutor.js.map +1 -0
  651. package/build/dist/Server/Utils/AutoRemediation/RemediationVerifier.js +492 -0
  652. package/build/dist/Server/Utils/AutoRemediation/RemediationVerifier.js.map +1 -0
  653. package/build/dist/Server/Utils/CorsOptions.js +47 -0
  654. package/build/dist/Server/Utils/CorsOptions.js.map +1 -0
  655. package/build/dist/Server/Utils/Database/RelationIdUtil.js +51 -0
  656. package/build/dist/Server/Utils/Database/RelationIdUtil.js.map +1 -0
  657. package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js +38 -0
  658. package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js.map +1 -1
  659. package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js +194 -0
  660. package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js.map +1 -0
  661. package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js +292 -0
  662. package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js.map +1 -0
  663. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +9 -0
  664. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  665. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +9 -0
  666. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  667. package/build/dist/Server/Utils/Monitor/MonitorResource.js +16 -0
  668. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  669. package/build/dist/Server/Utils/Monitor/MonitorSummaryCapture.js +92 -0
  670. package/build/dist/Server/Utils/Monitor/MonitorSummaryCapture.js.map +1 -0
  671. package/build/dist/Server/Utils/NetworkDevice/RulePatternValidator.js +27 -0
  672. package/build/dist/Server/Utils/NetworkDevice/RulePatternValidator.js.map +1 -0
  673. package/build/dist/Server/Utils/OpenAPI.js +2 -1
  674. package/build/dist/Server/Utils/OpenAPI.js.map +1 -1
  675. package/build/dist/Server/Utils/Runbook/RunbookExecutePermission.js +67 -0
  676. package/build/dist/Server/Utils/Runbook/RunbookExecutePermission.js.map +1 -0
  677. package/build/dist/Server/Utils/SessionReplay/SessionReplayErasureTombstone.js +98 -0
  678. package/build/dist/Server/Utils/SessionReplay/SessionReplayErasureTombstone.js.map +1 -0
  679. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js +378 -0
  680. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js.map +1 -0
  681. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCacheStore.js +137 -0
  682. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCacheStore.js.map +1 -0
  683. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js +998 -0
  684. package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js.map +1 -0
  685. package/build/dist/Server/Utils/SessionReplay/SessionReplayRetention.js +59 -0
  686. package/build/dist/Server/Utils/SessionReplay/SessionReplayRetention.js.map +1 -0
  687. package/build/dist/Server/Utils/SessionReplay/SessionReplayTargeting.js +98 -0
  688. package/build/dist/Server/Utils/SessionReplay/SessionReplayTargeting.js.map +1 -0
  689. package/build/dist/Server/Utils/SessionReplay/SessionReplayUsage.js +69 -0
  690. package/build/dist/Server/Utils/SessionReplay/SessionReplayUsage.js.map +1 -0
  691. package/build/dist/Server/Utils/StartServer.js +40 -3
  692. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  693. package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js +27 -6
  694. package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js.map +1 -1
  695. package/build/dist/Types/AI/AIRunStatus.js +17 -5
  696. package/build/dist/Types/AI/AIRunStatus.js.map +1 -1
  697. package/build/dist/Types/AI/AIRunType.js +18 -0
  698. package/build/dist/Types/AI/AIRunType.js.map +1 -1
  699. package/build/dist/Types/AI/FixVerificationStatus.js +22 -0
  700. package/build/dist/Types/AI/FixVerificationStatus.js.map +1 -0
  701. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +16 -0
  702. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
  703. package/build/dist/Types/AutoRemediation/AiRemediationCommandPlan.js +192 -0
  704. package/build/dist/Types/AutoRemediation/AiRemediationCommandPlan.js.map +1 -0
  705. package/build/dist/Types/AutoRemediation/AutoRemediationExecutionMode.js +18 -0
  706. package/build/dist/Types/AutoRemediation/AutoRemediationExecutionMode.js.map +1 -0
  707. package/build/dist/Types/AutoRemediation/AutoRemediationSuggestionStatus.js +31 -0
  708. package/build/dist/Types/AutoRemediation/AutoRemediationSuggestionStatus.js.map +1 -0
  709. package/build/dist/Types/AutoRemediation/AutoRemediationSuggestionType.js +18 -0
  710. package/build/dist/Types/AutoRemediation/AutoRemediationSuggestionType.js.map +1 -0
  711. package/build/dist/Types/AutoRemediation/AutoRemediationTriggerEntity.js +12 -0
  712. package/build/dist/Types/AutoRemediation/AutoRemediationTriggerEntity.js.map +1 -0
  713. package/build/dist/Types/AutoRemediation/AutoRemediationVerificationStatus.js +22 -0
  714. package/build/dist/Types/AutoRemediation/AutoRemediationVerificationStatus.js.map +1 -0
  715. package/build/dist/Types/CustomField/CustomFieldDropdownOption.js +110 -0
  716. package/build/dist/Types/CustomField/CustomFieldDropdownOption.js.map +1 -0
  717. package/build/dist/Types/Dashboard/DashboardComponentType.js +2 -0
  718. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  719. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +4 -0
  720. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  721. package/build/dist/Types/Dashboard/DashboardComponents/DashboardClockComponent.js +19 -0
  722. package/build/dist/Types/Dashboard/DashboardComponents/DashboardClockComponent.js.map +1 -0
  723. package/build/dist/Types/Dashboard/DashboardComponents/DashboardHtmlComponent.js +2 -0
  724. package/build/dist/Types/Dashboard/DashboardComponents/DashboardHtmlComponent.js.map +1 -0
  725. package/build/dist/Types/Dashboard/DashboardTemplates.js +487 -0
  726. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  727. package/build/dist/Types/Date.js +6 -0
  728. package/build/dist/Types/Date.js.map +1 -1
  729. package/build/dist/Types/Email/EmailTemplateType.js +2 -0
  730. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  731. package/build/dist/Types/Kubernetes/KubernetesRightSizing.js +229 -0
  732. package/build/dist/Types/Kubernetes/KubernetesRightSizing.js.map +1 -0
  733. package/build/dist/Types/MeteredPlan/ProductType.js +1 -0
  734. package/build/dist/Types/MeteredPlan/ProductType.js.map +1 -1
  735. package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js +12 -2
  736. package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js.map +1 -1
  737. package/build/dist/Types/Monitor/MonitorSteps.js +5 -0
  738. package/build/dist/Types/Monitor/MonitorSteps.js.map +1 -1
  739. package/build/dist/Types/Monitor/MonitorSummarySnapshot.js +13 -0
  740. package/build/dist/Types/Monitor/MonitorSummarySnapshot.js.map +1 -0
  741. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +40 -8
  742. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
  743. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +4 -3
  744. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
  745. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +50 -10
  746. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
  747. package/build/dist/Types/Monitor/RumAlertTemplates.js +297 -0
  748. package/build/dist/Types/Monitor/RumAlertTemplates.js.map +1 -0
  749. package/build/dist/Types/Permission.js +184 -24
  750. package/build/dist/Types/Permission.js.map +1 -1
  751. package/build/dist/Types/Rum/SessionReplay.js +155 -0
  752. package/build/dist/Types/Rum/SessionReplay.js.map +1 -0
  753. package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js +26 -0
  754. package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js.map +1 -0
  755. package/build/dist/Types/Rum/SessionReplayConsentMode.js +27 -0
  756. package/build/dist/Types/Rum/SessionReplayConsentMode.js.map +1 -0
  757. package/build/dist/Types/Rum/SessionReplayMaskingMode.js +79 -0
  758. package/build/dist/Types/Rum/SessionReplayMaskingMode.js.map +1 -0
  759. package/build/dist/Types/Rum/SessionReplayTriggerReason.js +28 -0
  760. package/build/dist/Types/Rum/SessionReplayTriggerReason.js.map +1 -0
  761. package/build/dist/Types/Runbook/RunbookCredentialType.js +7 -0
  762. package/build/dist/Types/Runbook/RunbookCredentialType.js.map +1 -0
  763. package/build/dist/Types/Runbook/RunbookStep.js +20 -1
  764. package/build/dist/Types/Runbook/RunbookStep.js.map +1 -1
  765. package/build/dist/Types/Runbook/RunbookStepType.js +24 -0
  766. package/build/dist/Types/Runbook/RunbookStepType.js.map +1 -1
  767. package/build/dist/Types/Runbook/RunnerJobOrigin.js +21 -0
  768. package/build/dist/Types/Runbook/RunnerJobOrigin.js.map +1 -0
  769. package/build/dist/Types/Runbook/RunnerJobStatus.js +22 -0
  770. package/build/dist/Types/Runbook/RunnerJobStatus.js.map +1 -0
  771. package/build/dist/Types/StatusPage/StatusPageReport.js +22 -0
  772. package/build/dist/Types/StatusPage/StatusPageReport.js.map +1 -0
  773. package/build/dist/Types/Telemetry/TelemetryRetentionConfig.js.map +1 -1
  774. package/build/dist/Types/Text.js +29 -0
  775. package/build/dist/Types/Text.js.map +1 -1
  776. package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js +143 -28
  777. package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js.map +1 -1
  778. package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js +82 -9
  779. package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js.map +1 -1
  780. package/build/dist/UI/Components/BulkUpdate/BulkOwnerActions.js +11 -0
  781. package/build/dist/UI/Components/BulkUpdate/BulkOwnerActions.js.map +1 -1
  782. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +11 -13
  783. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
  784. package/build/dist/UI/Components/CustomFields/DropdownOptionsInput.js +76 -45
  785. package/build/dist/UI/Components/CustomFields/DropdownOptionsInput.js.map +1 -1
  786. package/build/dist/UI/Components/Detail/Detail.js +3 -8
  787. package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
  788. package/build/dist/UI/Components/Dropdown/Dropdown.js +2 -5
  789. package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
  790. package/build/dist/UI/Components/Dropdown/DropdownMenuZIndex.js +7 -0
  791. package/build/dist/UI/Components/Dropdown/DropdownMenuZIndex.js.map +1 -0
  792. package/build/dist/UI/Components/Dropdown/DropdownValueBadge.js +32 -0
  793. package/build/dist/UI/Components/Dropdown/DropdownValueBadge.js.map +1 -0
  794. package/build/dist/UI/Components/Filters/OperatorSelector.js +210 -20
  795. package/build/dist/UI/Components/Filters/OperatorSelector.js.map +1 -1
  796. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js +26 -10
  797. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js.map +1 -1
  798. package/build/dist/UI/Components/Forms/Fields/IconPicker.js +28 -13
  799. package/build/dist/UI/Components/Forms/Fields/IconPicker.js.map +1 -1
  800. package/build/dist/UI/Components/Forms/Validation.js +9 -5
  801. package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
  802. package/build/dist/UI/Components/List/List.js +1 -1
  803. package/build/dist/UI/Components/List/List.js.map +1 -1
  804. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js +21 -19
  805. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js.map +1 -1
  806. package/build/dist/UI/Components/Pagination/Pagination.js +14 -3
  807. package/build/dist/UI/Components/Pagination/Pagination.js.map +1 -1
  808. package/build/dist/UI/Components/Table/Table.js +1 -1
  809. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  810. package/build/dist/UI/Types/UseAnchoredFieldPopup.js +197 -0
  811. package/build/dist/UI/Types/UseAnchoredFieldPopup.js.map +1 -0
  812. package/build/dist/UI/Utils/Dropdown.js +18 -0
  813. package/build/dist/UI/Utils/Dropdown.js.map +1 -1
  814. package/build/dist/UI/Utils/Timezone.js +13 -2
  815. package/build/dist/UI/Utils/Timezone.js.map +1 -1
  816. package/build/dist/UI/Utils/UseClockTick.js +41 -0
  817. package/build/dist/UI/Utils/UseClockTick.js.map +1 -0
  818. package/build/dist/Utils/AiRemediation/CommandPolicy.js +303 -0
  819. package/build/dist/Utils/AiRemediation/CommandPolicy.js.map +1 -0
  820. package/build/dist/Utils/Dashboard/ClockWidgetFormat.js +232 -0
  821. package/build/dist/Utils/Dashboard/ClockWidgetFormat.js.map +1 -0
  822. package/build/dist/Utils/Dashboard/Components/DashboardClockComponent.js +146 -0
  823. package/build/dist/Utils/Dashboard/Components/DashboardClockComponent.js.map +1 -0
  824. package/build/dist/Utils/Dashboard/Components/DashboardHtmlComponent.js +133 -0
  825. package/build/dist/Utils/Dashboard/Components/DashboardHtmlComponent.js.map +1 -0
  826. package/build/dist/Utils/Dashboard/Components/DashboardValueComponent.js +10 -1
  827. package/build/dist/Utils/Dashboard/Components/DashboardValueComponent.js.map +1 -1
  828. package/build/dist/Utils/Dashboard/Components/Index.js +8 -0
  829. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  830. package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js +198 -0
  831. package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js.map +1 -0
  832. package/build/dist/Utils/Dashboard/ValueWidgetLayout.js +276 -0
  833. package/build/dist/Utils/Dashboard/ValueWidgetLayout.js.map +1 -0
  834. package/build/dist/Utils/Metrics/MetricSeriesScope.js +203 -0
  835. package/build/dist/Utils/Metrics/MetricSeriesScope.js.map +1 -0
  836. package/build/dist/Utils/Monitor/MonitorSummarySnapshotUtil.js +382 -0
  837. package/build/dist/Utils/Monitor/MonitorSummarySnapshotUtil.js.map +1 -0
  838. package/build/dist/Utils/NetworkSite/CidrMatchUtil.js +13 -7
  839. package/build/dist/Utils/NetworkSite/CidrMatchUtil.js.map +1 -1
  840. package/build/dist/Utils/Rules/RulePatternMatchUtil.js +87 -0
  841. package/build/dist/Utils/Rules/RulePatternMatchUtil.js.map +1 -0
  842. package/build/dist/Utils/Rum/ChunkMath.js +147 -0
  843. package/build/dist/Utils/Rum/ChunkMath.js.map +1 -0
  844. package/build/dist/Utils/Rum/Masking.js +143 -0
  845. package/build/dist/Utils/Rum/Masking.js.map +1 -0
  846. package/build/dist/Utils/Rum/SessionIdentity.js +161 -0
  847. package/build/dist/Utils/Rum/SessionIdentity.js.map +1 -0
  848. package/build/dist/Utils/Rum/SessionSampling.js +91 -0
  849. package/build/dist/Utils/Rum/SessionSampling.js.map +1 -0
  850. package/build/dist/Utils/Rum/UrlScrubber.js +144 -0
  851. package/build/dist/Utils/Rum/UrlScrubber.js.map +1 -0
  852. package/build/dist/Utils/Schema/ModelSchema.js +28 -3
  853. package/build/dist/Utils/Schema/ModelSchema.js.map +1 -1
  854. package/build/dist/Utils/StatusPage/Report.js +194 -0
  855. package/build/dist/Utils/StatusPage/Report.js.map +1 -0
  856. package/build/dist/Utils/ValueFormatter.js +239 -46
  857. package/build/dist/Utils/ValueFormatter.js.map +1 -1
  858. package/jest.config.json +3 -0
  859. package/package.json +1 -1
  860. package/tsconfig.json +19 -1
  861. package/Server/Services/RunbookAgentService.ts +0 -93
  862. package/build/dist/Models/DatabaseModels/RunbookAgent.js.map +0 -1
  863. package/build/dist/Models/DatabaseModels/RunbookAgentJob.js.map +0 -1
  864. package/build/dist/Models/DatabaseModels/RunbookAgentOwnerTeam.js.map +0 -1
  865. package/build/dist/Models/DatabaseModels/RunbookAgentOwnerUser.js.map +0 -1
  866. package/build/dist/Server/Services/RunbookAgentJobService.js.map +0 -1
  867. package/build/dist/Server/Services/RunbookAgentOwnerTeamService.js.map +0 -1
  868. package/build/dist/Server/Services/RunbookAgentOwnerUserService.js.map +0 -1
  869. package/build/dist/Server/Services/RunbookAgentService.js +0 -91
  870. package/build/dist/Server/Services/RunbookAgentService.js.map +0 -1
  871. package/build/dist/Types/Runbook/RunbookAgentJobStatus.js +0 -22
  872. package/build/dist/Types/Runbook/RunbookAgentJobStatus.js.map +0 -1
@@ -0,0 +1,917 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import Alert from "../../Models/DatabaseModels/Alert";
11
+ import AutoRemediationSuggestion from "../../Models/DatabaseModels/AutoRemediationSuggestion";
12
+ import Incident from "../../Models/DatabaseModels/Incident";
13
+ import { AlertFeedEventType } from "../../Models/DatabaseModels/AlertFeed";
14
+ import { IncidentFeedEventType } from "../../Models/DatabaseModels/IncidentFeed";
15
+ import AIRunType from "../../Types/AI/AIRunType";
16
+ import AutoRemediationExecutionMode from "../../Types/AutoRemediation/AutoRemediationExecutionMode";
17
+ import AutoRemediationSuggestionStatus from "../../Types/AutoRemediation/AutoRemediationSuggestionStatus";
18
+ import AutoRemediationSuggestionType from "../../Types/AutoRemediation/AutoRemediationSuggestionType";
19
+ import AutoRemediationVerificationStatus from "../../Types/AutoRemediation/AutoRemediationVerificationStatus";
20
+ import AutoRemediationTriggerEntity from "../../Types/AutoRemediation/AutoRemediationTriggerEntity";
21
+ import { Indigo500 } from "../../Types/BrandColors";
22
+ import OneUptimeDate from "../../Types/Date";
23
+ import QueryHelper from "../Types/Database/QueryHelper";
24
+ import AlertService from "./AlertService";
25
+ import IncidentService from "./IncidentService";
26
+ import AlertFeedService from "./AlertFeedService";
27
+ import AutoRemediationRuleService from "./AutoRemediationRuleService";
28
+ import AutoRemediationSuggestionService from "./AutoRemediationSuggestionService";
29
+ import IncidentFeedService from "./IncidentFeedService";
30
+ import LlmProviderService from "./LlmProviderService";
31
+ import MonitorService from "./MonitorService";
32
+ import ProjectService from "./ProjectService";
33
+ import RunbookRuleEngineService from "./RunbookRuleEngineService";
34
+ import AIInvestigationQueue from "../Utils/AI/SRE/InvestigationQueue";
35
+ import Semaphore from "../Infrastructure/Semaphore";
36
+ import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
37
+ import logger from "../Utils/Logger";
38
+ /*
39
+ * Guardrails (minimal G1 for auto-remediation Phase 1):
40
+ * - At most this many suggestions per incident/alert, ever. Stops rule
41
+ * fan-out and repeated matching from flooding a subject with proposals.
42
+ */
43
+ export const MAX_SUGGESTIONS_PER_SUBJECT = 3;
44
+ /*
45
+ * - A FullAuto rule that has auto-executed this many times in the last hour
46
+ * is downgraded to Suggest for the next match (remediation-storm circuit
47
+ * breaker). A human gets pulled back into the loop instead of a runbook
48
+ * being started in a tight flap loop.
49
+ */
50
+ export const MAX_AUTO_EXECUTIONS_PER_RULE_PER_HOUR = 3;
51
+ /*
52
+ * How long the subject's monitors get to recover after a remediation
53
+ * runbook starts, when the rule does not set its own window. The verifier
54
+ * fails the remediation past this deadline — escalation continues as
55
+ * normal either way.
56
+ */
57
+ export const DEFAULT_VERIFICATION_WINDOW_MINUTES = 15;
58
+ class AutoRemediationRuleEngineServiceClass {
59
+ /*
60
+ * Reload an incident and run the rules against it. Used by the
61
+ * post-investigation remediation hand-off (RemediationHandoff), which
62
+ * holds only the subject id: the create-hook's in-memory model is long
63
+ * gone by the time the investigation settles, and the reload also picks
64
+ * up edits made while the investigation ran. The select mirrors exactly
65
+ * what doesIncidentMatchRule reads — keep the two in sync.
66
+ */
67
+ async applyRulesToIncidentById(data) {
68
+ const incident = await IncidentService.findOneById({
69
+ id: data.incidentId,
70
+ select: {
71
+ _id: true,
72
+ projectId: true,
73
+ title: true,
74
+ description: true,
75
+ incidentSeverityId: true,
76
+ monitors: { _id: true },
77
+ labels: { _id: true },
78
+ },
79
+ props: { isRoot: true },
80
+ });
81
+ if (!incident) {
82
+ return;
83
+ }
84
+ await this.applyRulesToIncident(incident);
85
+ }
86
+ // The alert twin of applyRulesToIncidentById — mirrors doesAlertMatchRule.
87
+ async applyRulesToAlertById(data) {
88
+ const alert = await AlertService.findOneById({
89
+ id: data.alertId,
90
+ select: {
91
+ _id: true,
92
+ projectId: true,
93
+ title: true,
94
+ description: true,
95
+ alertSeverityId: true,
96
+ monitorId: true,
97
+ labels: { _id: true },
98
+ },
99
+ props: { isRoot: true },
100
+ });
101
+ if (!alert) {
102
+ return;
103
+ }
104
+ await this.applyRulesToAlert(alert);
105
+ }
106
+ async applyRulesToIncident(incident) {
107
+ var _a, _b;
108
+ if (!incident.id || !incident.projectId) {
109
+ return;
110
+ }
111
+ try {
112
+ await this.applyRules({
113
+ projectId: incident.projectId,
114
+ triggerEntityType: AutoRemediationTriggerEntity.Incident,
115
+ incident,
116
+ });
117
+ }
118
+ catch (error) {
119
+ logger.error(`Error applying auto-remediation rules: ${error}`, {
120
+ projectId: (_a = incident.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
121
+ incidentId: (_b = incident.id) === null || _b === void 0 ? void 0 : _b.toString(),
122
+ });
123
+ }
124
+ }
125
+ async applyRulesToAlert(alert) {
126
+ var _a, _b;
127
+ if (!alert.id || !alert.projectId) {
128
+ return;
129
+ }
130
+ try {
131
+ await this.applyRules({
132
+ projectId: alert.projectId,
133
+ triggerEntityType: AutoRemediationTriggerEntity.Alert,
134
+ alert,
135
+ });
136
+ }
137
+ catch (error) {
138
+ logger.error(`Error applying auto-remediation rules: ${error}`, {
139
+ projectId: (_a = alert.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
140
+ alertId: (_b = alert.id) === null || _b === void 0 ? void 0 : _b.toString(),
141
+ });
142
+ }
143
+ }
144
+ async applyRules(data) {
145
+ var _a, _b, _c, _d, _e, _f, _g, _h;
146
+ /*
147
+ * Project-level kill switch. === false so a missing column (older rows,
148
+ * self-hosted defaults) counts as enabled — same semantics as enableAi.
149
+ */
150
+ const project = await ProjectService.findOneById({
151
+ id: data.projectId,
152
+ select: {
153
+ enableAi: true,
154
+ enableAutoRemediation: true,
155
+ enableAiCommandExecution: true,
156
+ },
157
+ props: { isRoot: true },
158
+ });
159
+ if (!project || project.enableAutoRemediation === false) {
160
+ return;
161
+ }
162
+ const rules = await AutoRemediationRuleService.findBy({
163
+ query: {
164
+ projectId: data.projectId,
165
+ isEnabled: true,
166
+ triggerEntityType: data.triggerEntityType,
167
+ },
168
+ props: { isRoot: true },
169
+ select: {
170
+ _id: true,
171
+ name: true,
172
+ executionMode: true,
173
+ aiSelectsRunbook: true,
174
+ aiComposesCommands: true,
175
+ verificationWindowMinutes: true,
176
+ autoResolveOnVerifiedRecovery: true,
177
+ titlePattern: true,
178
+ descriptionPattern: true,
179
+ monitors: { _id: true },
180
+ incidentSeverities: { _id: true },
181
+ alertSeverities: { _id: true },
182
+ labels: { _id: true },
183
+ monitorLabels: { _id: true },
184
+ runbooks: { _id: true, name: true },
185
+ },
186
+ limit: 100,
187
+ skip: 0,
188
+ });
189
+ if (rules.length === 0) {
190
+ return;
191
+ }
192
+ const matchedRules = [];
193
+ for (const rule of rules) {
194
+ const isMatch = data.incident
195
+ ? await this.doesIncidentMatchRule(data.incident, rule)
196
+ : data.alert
197
+ ? await this.doesAlertMatchRule(data.alert, rule)
198
+ : false;
199
+ if (isMatch) {
200
+ matchedRules.push(rule);
201
+ }
202
+ }
203
+ if (matchedRules.length === 0) {
204
+ return;
205
+ }
206
+ const linkage = {
207
+ incidentId: ((_a = data.incident) === null || _a === void 0 ? void 0 : _a.id) || undefined,
208
+ alertId: ((_b = data.alert) === null || _b === void 0 ? void 0 : _b.id) || undefined,
209
+ };
210
+ /*
211
+ * Per-subject cap + per-rule dedupe. A rule that already produced a
212
+ * suggestion on this subject never produces another (a dismissal is a
213
+ * human "no" — do not re-ask).
214
+ */
215
+ const existingSuggestions = await AutoRemediationSuggestionService.findBy({
216
+ query: linkage.incidentId
217
+ ? { incidentId: linkage.incidentId }
218
+ : { alertId: linkage.alertId },
219
+ props: { isRoot: true },
220
+ select: {
221
+ _id: true,
222
+ autoRemediationRuleId: true,
223
+ },
224
+ limit: MAX_SUGGESTIONS_PER_SUBJECT * 10,
225
+ skip: 0,
226
+ });
227
+ let remainingBudget = MAX_SUGGESTIONS_PER_SUBJECT - existingSuggestions.length;
228
+ if (remainingBudget <= 0) {
229
+ logger.debug(`AutoRemediationRuleEngine: suggestion cap reached for subject; skipping ${matchedRules.length} matched rule(s).`, {
230
+ projectId: data.projectId.toString(),
231
+ incidentId: (_c = linkage.incidentId) === null || _c === void 0 ? void 0 : _c.toString(),
232
+ alertId: (_d = linkage.alertId) === null || _d === void 0 ? void 0 : _d.toString(),
233
+ });
234
+ return;
235
+ }
236
+ const ruleIdsWithExistingSuggestion = new Set(existingSuggestions
237
+ .map((s) => {
238
+ var _a;
239
+ return ((_a = s.autoRemediationRuleId) === null || _a === void 0 ? void 0 : _a.toString()) || "";
240
+ })
241
+ .filter((id) => {
242
+ return id !== "";
243
+ }));
244
+ // Lazily evaluated once: AI rules need AI enabled and a provider.
245
+ let aiAvailable = null;
246
+ for (const rule of matchedRules) {
247
+ if (remainingBudget <= 0) {
248
+ break;
249
+ }
250
+ if (rule.id && ruleIdsWithExistingSuggestion.has(rule.id.toString())) {
251
+ continue;
252
+ }
253
+ /*
254
+ * Command composition wins over runbook selection when a rule has
255
+ * both flags — one run per rule, never two.
256
+ */
257
+ if (rule.aiComposesCommands) {
258
+ if (aiAvailable === null) {
259
+ aiAvailable =
260
+ project.enableAi !== false &&
261
+ (await LlmProviderService.getLLMProviderForProject(data.projectId)) !== null;
262
+ }
263
+ if (!aiAvailable) {
264
+ logger.debug(`AutoRemediationRuleEngine: skipping AI command rule ${(_e = rule.id) === null || _e === void 0 ? void 0 : _e.toString()} — AI disabled or no LLM provider configured.`, { projectId: data.projectId.toString() });
265
+ continue;
266
+ }
267
+ /*
268
+ * Opt-in semantics (=== true): the project must have explicitly
269
+ * enabled AI command execution, on top of the AI/auto-remediation
270
+ * kill switches.
271
+ */
272
+ if (project.enableAiCommandExecution !== true) {
273
+ logger.debug(`AutoRemediationRuleEngine: skipping AI command rule ${(_f = rule.id) === null || _f === void 0 ? void 0 : _f.toString()} — the project has not enabled AI command execution.`, { projectId: data.projectId.toString() });
274
+ continue;
275
+ }
276
+ await this.startAiCommandRun({
277
+ projectId: data.projectId,
278
+ rule,
279
+ linkage,
280
+ });
281
+ remainingBudget -= 1;
282
+ continue;
283
+ }
284
+ if (rule.aiSelectsRunbook) {
285
+ if (aiAvailable === null) {
286
+ aiAvailable =
287
+ project.enableAi !== false &&
288
+ (await LlmProviderService.getLLMProviderForProject(data.projectId)) !== null;
289
+ }
290
+ if (!aiAvailable) {
291
+ logger.debug(`AutoRemediationRuleEngine: skipping AI rule ${(_g = rule.id) === null || _g === void 0 ? void 0 : _g.toString()} — AI disabled or no LLM provider configured.`, { projectId: data.projectId.toString() });
292
+ continue;
293
+ }
294
+ await this.startAiPlanning({
295
+ projectId: data.projectId,
296
+ rule,
297
+ linkage,
298
+ });
299
+ remainingBudget -= 1;
300
+ continue;
301
+ }
302
+ // Deterministic rule: propose or start every attached runbook.
303
+ const runbooks = rule.runbooks || [];
304
+ if (runbooks.length === 0) {
305
+ logger.warn(`AutoRemediationRuleEngine: rule ${(_h = rule.id) === null || _h === void 0 ? void 0 : _h.toString()} matched but has no runbooks attached and does not use AI selection; skipping.`, { projectId: data.projectId.toString() });
306
+ continue;
307
+ }
308
+ if (rule.executionMode === AutoRemediationExecutionMode.FullAuto) {
309
+ remainingBudget -= await this.applyFullAutoRule({
310
+ projectId: data.projectId,
311
+ rule,
312
+ runbooks,
313
+ linkage,
314
+ budget: remainingBudget,
315
+ });
316
+ continue;
317
+ }
318
+ for (const runbook of runbooks) {
319
+ if (remainingBudget <= 0) {
320
+ break;
321
+ }
322
+ if (!runbook.id) {
323
+ continue;
324
+ }
325
+ await this.suggestRunbook({
326
+ projectId: data.projectId,
327
+ rule,
328
+ runbook,
329
+ linkage,
330
+ downgradedByCircuitBreaker: false,
331
+ });
332
+ remainingBudget -= 1;
333
+ }
334
+ }
335
+ }
336
+ /*
337
+ * FullAuto with the hourly circuit breaker. The whole
338
+ * count-decide-execute-record section is serialized per rule through a
339
+ * distributed mutex: concurrent incident creations (flap storm, multiple
340
+ * App pods) would otherwise all read a stale count and blow past the cap
341
+ * together. The AutoExecuted suggestion rows are written inside the lock,
342
+ * so the next holder's count sees them. If the lock cannot be acquired
343
+ * (e.g. Redis unavailable) the engine degrades to the unserialized check
344
+ * rather than dropping remediation entirely — the breaker is
345
+ * defense-in-depth, not a correctness invariant.
346
+ *
347
+ * Returns how many suggestions were consumed from the per-subject budget.
348
+ */
349
+ async applyFullAutoRule(data) {
350
+ var _a, _b, _c;
351
+ let mutex = null;
352
+ try {
353
+ mutex = await Semaphore.lock({
354
+ key: `auto-remediation-rule-${(_a = data.rule.id) === null || _a === void 0 ? void 0 : _a.toString()}`,
355
+ namespace: "AutoRemediationRuleEngine",
356
+ lockTimeout: 60 * 1000,
357
+ acquireTimeout: 20 * 1000,
358
+ });
359
+ }
360
+ catch (error) {
361
+ logger.warn(`AutoRemediationRuleEngine: could not acquire circuit-breaker lock for rule ${(_b = data.rule.id) === null || _b === void 0 ? void 0 : _b.toString()} — continuing without cross-pod serialization: ${error}`, { projectId: data.projectId.toString() });
362
+ }
363
+ let consumed = 0;
364
+ try {
365
+ /*
366
+ * Count inside the lock, and keep counting in-memory as this
367
+ * invocation executes — a rule with several attached runbooks must
368
+ * not execute all of them off one stale pre-loop count.
369
+ */
370
+ let executedInWindow = (await AutoRemediationSuggestionService.countBy({
371
+ query: {
372
+ autoRemediationRuleId: data.rule.id,
373
+ status: AutoRemediationSuggestionStatus.AutoExecuted,
374
+ createdAt: QueryHelper.greaterThan(OneUptimeDate.getSomeHoursAgo(1)),
375
+ },
376
+ props: { isRoot: true },
377
+ })).toNumber();
378
+ for (const runbook of data.runbooks) {
379
+ if (consumed >= data.budget) {
380
+ break;
381
+ }
382
+ if (!runbook.id) {
383
+ continue;
384
+ }
385
+ if (executedInWindow >= MAX_AUTO_EXECUTIONS_PER_RULE_PER_HOUR) {
386
+ logger.warn(`AutoRemediationRuleEngine: circuit breaker tripped for rule ${(_c = data.rule.id) === null || _c === void 0 ? void 0 : _c.toString()} (${executedInWindow} auto-executions in the last hour); downgrading to Suggest.`, { projectId: data.projectId.toString() });
387
+ await this.suggestRunbook({
388
+ projectId: data.projectId,
389
+ rule: data.rule,
390
+ runbook,
391
+ linkage: data.linkage,
392
+ downgradedByCircuitBreaker: true,
393
+ });
394
+ }
395
+ else {
396
+ await this.autoExecuteRunbook({
397
+ projectId: data.projectId,
398
+ rule: data.rule,
399
+ runbook,
400
+ linkage: data.linkage,
401
+ });
402
+ /*
403
+ * Counted even when the start failed (no row written): within
404
+ * this invocation the fail direction of a breaker is to close
405
+ * early, never to keep firing.
406
+ */
407
+ executedInWindow += 1;
408
+ }
409
+ consumed += 1;
410
+ }
411
+ }
412
+ finally {
413
+ if (mutex) {
414
+ try {
415
+ await Semaphore.release(mutex);
416
+ }
417
+ catch (error) {
418
+ logger.error(`AutoRemediationRuleEngine: failed to release circuit-breaker lock: ${error}`, { projectId: data.projectId.toString() });
419
+ }
420
+ }
421
+ }
422
+ return consumed;
423
+ }
424
+ /*
425
+ * AI path: create a Planning suggestion and enqueue a RemediationPlan run
426
+ * on the durable AI queue. The planning runner fills in the picked runbook
427
+ * and rationale (or NoneApplicable). AI-picked runbooks are always
428
+ * suggest-only — never full-auto.
429
+ */
430
+ async startAiPlanning(data) {
431
+ const suggestion = new AutoRemediationSuggestion();
432
+ suggestion.projectId = data.projectId;
433
+ suggestion.autoRemediationRuleId = data.rule.id;
434
+ suggestion.ruleNameSnapshot = data.rule.name || "Auto Remediation Rule";
435
+ suggestion.status = AutoRemediationSuggestionStatus.Planning;
436
+ suggestion.executionMode = AutoRemediationExecutionMode.Suggest;
437
+ suggestion.verificationWindowMinutes =
438
+ data.rule.verificationWindowMinutes ||
439
+ DEFAULT_VERIFICATION_WINDOW_MINUTES;
440
+ suggestion.autoResolveOnRecovery =
441
+ data.rule.autoResolveOnVerifiedRecovery === true;
442
+ if (data.linkage.incidentId) {
443
+ suggestion.incidentId = data.linkage.incidentId;
444
+ }
445
+ if (data.linkage.alertId) {
446
+ suggestion.alertId = data.linkage.alertId;
447
+ }
448
+ const created = await AutoRemediationSuggestionService.create({
449
+ data: suggestion,
450
+ props: { isRoot: true },
451
+ });
452
+ const aiRunId = await AIInvestigationQueue.enqueue({
453
+ projectId: data.projectId,
454
+ subjectIncidentId: data.linkage.incidentId,
455
+ subjectAlertId: data.linkage.alertId,
456
+ subjectAutoRemediationSuggestionId: created.id,
457
+ });
458
+ if (!aiRunId) {
459
+ /*
460
+ * Budget exhausted or run creation failed — do not leave the
461
+ * suggestion stuck in Planning forever.
462
+ */
463
+ await AutoRemediationSuggestionService.updateOneById({
464
+ id: created.id,
465
+ data: {
466
+ status: AutoRemediationSuggestionStatus.NoneApplicable,
467
+ rationaleMarkdown: "AI planning could not be started — the daily autonomous AI budget is exhausted or no run could be queued. Re-enable by raising the budget or waiting for the daily reset.",
468
+ },
469
+ props: { isRoot: true },
470
+ });
471
+ return;
472
+ }
473
+ await AutoRemediationSuggestionService.updateOneById({
474
+ id: created.id,
475
+ data: {
476
+ aiRunId,
477
+ },
478
+ props: { isRoot: true },
479
+ });
480
+ await this.postFeedItem({
481
+ projectId: data.projectId,
482
+ linkage: data.linkage,
483
+ markdown: `⚡ **Auto Remediation Rule "${data.rule.name}" matched.** AI is picking the most applicable runbook — a suggestion will appear here shortly.`,
484
+ pingWorkspace: false,
485
+ });
486
+ }
487
+ /*
488
+ * AI command path (rules with aiComposesCommands): create a Planning
489
+ * CommandPlan suggestion and enqueue a RemediationExecution run. The
490
+ * execution runner decides Suggest vs FullAuto from the rule's execution
491
+ * mode + allowlist + circuit breaker at run time; the suggestion's
492
+ * executionMode snapshots the rule's intent for display.
493
+ */
494
+ async startAiCommandRun(data) {
495
+ const suggestion = new AutoRemediationSuggestion();
496
+ suggestion.projectId = data.projectId;
497
+ suggestion.autoRemediationRuleId = data.rule.id;
498
+ suggestion.ruleNameSnapshot = data.rule.name || "Auto Remediation Rule";
499
+ suggestion.status = AutoRemediationSuggestionStatus.Planning;
500
+ suggestion.suggestionType = AutoRemediationSuggestionType.CommandPlan;
501
+ suggestion.executionMode =
502
+ data.rule.executionMode === AutoRemediationExecutionMode.FullAuto
503
+ ? AutoRemediationExecutionMode.FullAuto
504
+ : AutoRemediationExecutionMode.Suggest;
505
+ suggestion.verificationWindowMinutes =
506
+ data.rule.verificationWindowMinutes ||
507
+ DEFAULT_VERIFICATION_WINDOW_MINUTES;
508
+ suggestion.autoResolveOnRecovery =
509
+ data.rule.autoResolveOnVerifiedRecovery === true;
510
+ if (data.linkage.incidentId) {
511
+ suggestion.incidentId = data.linkage.incidentId;
512
+ }
513
+ if (data.linkage.alertId) {
514
+ suggestion.alertId = data.linkage.alertId;
515
+ }
516
+ const created = await AutoRemediationSuggestionService.create({
517
+ data: suggestion,
518
+ props: { isRoot: true },
519
+ });
520
+ const aiRunId = await AIInvestigationQueue.enqueue({
521
+ projectId: data.projectId,
522
+ subjectIncidentId: data.linkage.incidentId,
523
+ subjectAlertId: data.linkage.alertId,
524
+ subjectAutoRemediationSuggestionId: created.id,
525
+ remediationRunType: AIRunType.RemediationExecution,
526
+ });
527
+ if (!aiRunId) {
528
+ await AutoRemediationSuggestionService.updateOneById({
529
+ id: created.id,
530
+ data: {
531
+ status: AutoRemediationSuggestionStatus.NoneApplicable,
532
+ rationaleMarkdown: "The AI command run could not be started — the daily autonomous AI budget is exhausted or no run could be queued. Re-enable by raising the budget or waiting for the daily reset.",
533
+ },
534
+ props: { isRoot: true },
535
+ });
536
+ return;
537
+ }
538
+ await AutoRemediationSuggestionService.updateOneById({
539
+ id: created.id,
540
+ data: {
541
+ aiRunId,
542
+ },
543
+ props: { isRoot: true },
544
+ });
545
+ await this.postFeedItem({
546
+ projectId: data.projectId,
547
+ linkage: data.linkage,
548
+ markdown: `⚡ **Auto Remediation Rule "${data.rule.name}" matched.** AI is diagnosing the signal and composing remediation commands — a suggestion will appear here shortly.`,
549
+ pingWorkspace: false,
550
+ });
551
+ }
552
+ // Deterministic Suggest path: propose the runbook for one-click approval.
553
+ async suggestRunbook(data) {
554
+ const suggestion = new AutoRemediationSuggestion();
555
+ suggestion.projectId = data.projectId;
556
+ suggestion.autoRemediationRuleId = data.rule.id;
557
+ suggestion.ruleNameSnapshot = data.rule.name || "Auto Remediation Rule";
558
+ suggestion.runbookId = data.runbook.id;
559
+ suggestion.runbookNameSnapshot = data.runbook.name || "Runbook";
560
+ suggestion.status = AutoRemediationSuggestionStatus.Suggested;
561
+ suggestion.executionMode = AutoRemediationExecutionMode.Suggest;
562
+ suggestion.verificationWindowMinutes =
563
+ data.rule.verificationWindowMinutes ||
564
+ DEFAULT_VERIFICATION_WINDOW_MINUTES;
565
+ suggestion.autoResolveOnRecovery =
566
+ data.rule.autoResolveOnVerifiedRecovery === true;
567
+ suggestion.rationaleMarkdown = data.downgradedByCircuitBreaker
568
+ ? "Proposed by a FullAuto rule that was downgraded to suggest-only by the hourly circuit breaker (too many recent auto-executions). Approve to start the runbook."
569
+ : "Proposed by a matching auto-remediation rule. Approve to start the runbook.";
570
+ if (data.linkage.incidentId) {
571
+ suggestion.incidentId = data.linkage.incidentId;
572
+ }
573
+ if (data.linkage.alertId) {
574
+ suggestion.alertId = data.linkage.alertId;
575
+ }
576
+ await AutoRemediationSuggestionService.create({
577
+ data: suggestion,
578
+ props: { isRoot: true },
579
+ });
580
+ await this.postFeedItem({
581
+ projectId: data.projectId,
582
+ linkage: data.linkage,
583
+ markdown: `⚡ **Auto Remediation Rule "${data.rule.name}" proposed runbook "${data.runbook.name}".** Review and approve it with one click to start remediation.`,
584
+ pingWorkspace: true,
585
+ });
586
+ }
587
+ /*
588
+ * FullAuto path: start the runbook immediately. startRunbookFor re-checks
589
+ * project ownership, isEnabled and non-empty steps, so a stale or
590
+ * cross-project runbook reference can never execute.
591
+ */
592
+ async autoExecuteRunbook(data) {
593
+ var _a, _b;
594
+ const runbookLinkage = {};
595
+ if (data.linkage.incidentId) {
596
+ runbookLinkage.incidentId = data.linkage.incidentId;
597
+ }
598
+ if (data.linkage.alertId) {
599
+ runbookLinkage.alertId = data.linkage.alertId;
600
+ }
601
+ const execution = await RunbookRuleEngineService.startRunbookFor({
602
+ projectId: data.projectId,
603
+ runbookId: data.runbook.id,
604
+ linkage: runbookLinkage,
605
+ });
606
+ if (!execution) {
607
+ logger.warn(`AutoRemediationRuleEngine: FullAuto rule ${(_a = data.rule.id) === null || _a === void 0 ? void 0 : _a.toString()} could not start runbook ${(_b = data.runbook.id) === null || _b === void 0 ? void 0 : _b.toString()} (missing, disabled, cross-project or empty).`, { projectId: data.projectId.toString() });
608
+ await this.postFeedItem({
609
+ projectId: data.projectId,
610
+ linkage: data.linkage,
611
+ markdown: `⚡ **Auto Remediation Rule "${data.rule.name}" matched, but runbook "${data.runbook.name}" could not be started** (it may be disabled or have no steps).`,
612
+ pingWorkspace: false,
613
+ });
614
+ return;
615
+ }
616
+ const suggestion = new AutoRemediationSuggestion();
617
+ suggestion.projectId = data.projectId;
618
+ suggestion.autoRemediationRuleId = data.rule.id;
619
+ suggestion.ruleNameSnapshot = data.rule.name || "Auto Remediation Rule";
620
+ suggestion.runbookId = data.runbook.id;
621
+ suggestion.runbookNameSnapshot = data.runbook.name || "Runbook";
622
+ suggestion.status = AutoRemediationSuggestionStatus.AutoExecuted;
623
+ suggestion.executionMode = AutoRemediationExecutionMode.FullAuto;
624
+ suggestion.runbookExecutionId = execution.id;
625
+ suggestion.verificationWindowMinutes =
626
+ data.rule.verificationWindowMinutes ||
627
+ DEFAULT_VERIFICATION_WINDOW_MINUTES;
628
+ suggestion.autoResolveOnRecovery =
629
+ data.rule.autoResolveOnVerifiedRecovery === true;
630
+ // The runbook is already running — verification starts now.
631
+ suggestion.verificationStatus = AutoRemediationVerificationStatus.Pending;
632
+ suggestion.verificationDeadlineAt = OneUptimeDate.addRemoveMinutes(OneUptimeDate.getCurrentDate(), data.rule.verificationWindowMinutes ||
633
+ DEFAULT_VERIFICATION_WINDOW_MINUTES);
634
+ suggestion.rationaleMarkdown =
635
+ "Automatically executed by a FullAuto auto-remediation rule.";
636
+ if (data.linkage.incidentId) {
637
+ suggestion.incidentId = data.linkage.incidentId;
638
+ }
639
+ if (data.linkage.alertId) {
640
+ suggestion.alertId = data.linkage.alertId;
641
+ }
642
+ await AutoRemediationSuggestionService.create({
643
+ data: suggestion,
644
+ props: { isRoot: true },
645
+ });
646
+ await this.postFeedItem({
647
+ projectId: data.projectId,
648
+ linkage: data.linkage,
649
+ markdown: `⚡ **Auto Remediation Rule "${data.rule.name}" automatically started runbook "${data.runbook.name}".** Follow its progress on the runbook execution page.`,
650
+ pingWorkspace: true,
651
+ });
652
+ }
653
+ // Feed posting is best-effort observability — the feed services never throw.
654
+ async postFeedItem(data) {
655
+ var _a, _b;
656
+ try {
657
+ if (data.linkage.incidentId) {
658
+ await IncidentFeedService.createIncidentFeedItem({
659
+ incidentId: data.linkage.incidentId,
660
+ projectId: data.projectId,
661
+ incidentFeedEventType: IncidentFeedEventType.AutoRemediation,
662
+ displayColor: Indigo500,
663
+ feedInfoInMarkdown: data.markdown,
664
+ workspaceNotification: {
665
+ sendWorkspaceNotification: data.pingWorkspace,
666
+ },
667
+ });
668
+ }
669
+ else if (data.linkage.alertId) {
670
+ await AlertFeedService.createAlertFeedItem({
671
+ alertId: data.linkage.alertId,
672
+ projectId: data.projectId,
673
+ alertFeedEventType: AlertFeedEventType.AutoRemediation,
674
+ displayColor: Indigo500,
675
+ feedInfoInMarkdown: data.markdown,
676
+ workspaceNotification: {
677
+ sendWorkspaceNotification: data.pingWorkspace,
678
+ },
679
+ });
680
+ }
681
+ }
682
+ catch (error) {
683
+ logger.error(`AutoRemediationRuleEngine: failed to create feed item: ${error}`, {
684
+ projectId: data.projectId.toString(),
685
+ incidentId: (_a = data.linkage.incidentId) === null || _a === void 0 ? void 0 : _a.toString(),
686
+ alertId: (_b = data.linkage.alertId) === null || _b === void 0 ? void 0 : _b.toString(),
687
+ });
688
+ }
689
+ }
690
+ /*
691
+ * Matching. Every criterion is skip-if-empty with AND semantics across
692
+ * criteria — the same shape as IncidentOnCallRuleEngineService.
693
+ */
694
+ async doesIncidentMatchRule(incident, rule) {
695
+ // Monitors: incident must come from at least one of the rule's monitors.
696
+ if (rule.monitors && rule.monitors.length > 0) {
697
+ if (!incident.monitors || incident.monitors.length === 0) {
698
+ return false;
699
+ }
700
+ const ruleMonitorIds = rule.monitors.map((m) => {
701
+ var _a;
702
+ return ((_a = m.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
703
+ });
704
+ const incidentMonitorIds = incident.monitors.map((m) => {
705
+ var _a;
706
+ return ((_a = m.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
707
+ });
708
+ const hasMatch = ruleMonitorIds.some((id) => {
709
+ return incidentMonitorIds.includes(id);
710
+ });
711
+ if (!hasMatch) {
712
+ return false;
713
+ }
714
+ }
715
+ // Severity
716
+ if (rule.incidentSeverities && rule.incidentSeverities.length > 0) {
717
+ if (!incident.incidentSeverityId) {
718
+ return false;
719
+ }
720
+ const severityIds = rule.incidentSeverities.map((s) => {
721
+ var _a;
722
+ return ((_a = s.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
723
+ });
724
+ if (!severityIds.includes(incident.incidentSeverityId.toString())) {
725
+ return false;
726
+ }
727
+ }
728
+ // Entity labels
729
+ if (rule.labels && rule.labels.length > 0) {
730
+ if (!incident.labels || incident.labels.length === 0) {
731
+ return false;
732
+ }
733
+ const ruleLabelIds = rule.labels.map((l) => {
734
+ var _a;
735
+ return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
736
+ });
737
+ const incidentLabelIds = incident.labels.map((l) => {
738
+ var _a;
739
+ return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
740
+ });
741
+ const hasMatch = ruleLabelIds.some((id) => {
742
+ return incidentLabelIds.includes(id);
743
+ });
744
+ if (!hasMatch) {
745
+ return false;
746
+ }
747
+ }
748
+ // Monitor labels: any of the incident's monitors carrying one is enough.
749
+ if (rule.monitorLabels && rule.monitorLabels.length > 0) {
750
+ if (!incident.monitors || incident.monitors.length === 0) {
751
+ return false;
752
+ }
753
+ let anyMonitorMatches = false;
754
+ for (const incidentMonitor of incident.monitors) {
755
+ if (!incidentMonitor.id) {
756
+ continue;
757
+ }
758
+ if (await this.doesMonitorCarryAnyLabel(incidentMonitor.id, rule.monitorLabels)) {
759
+ anyMonitorMatches = true;
760
+ break;
761
+ }
762
+ }
763
+ if (!anyMonitorMatches) {
764
+ return false;
765
+ }
766
+ }
767
+ if (rule.titlePattern) {
768
+ if (!incident.title ||
769
+ !this.testRegex(rule.titlePattern, incident.title, rule)) {
770
+ return false;
771
+ }
772
+ }
773
+ if (rule.descriptionPattern) {
774
+ if (!incident.description ||
775
+ !this.testRegex(rule.descriptionPattern, incident.description, rule)) {
776
+ return false;
777
+ }
778
+ }
779
+ return true;
780
+ }
781
+ async doesAlertMatchRule(alert, rule) {
782
+ // Monitors: alerts carry a single scalar monitorId.
783
+ if (rule.monitors && rule.monitors.length > 0) {
784
+ if (!alert.monitorId) {
785
+ return false;
786
+ }
787
+ const monitorIds = rule.monitors.map((m) => {
788
+ var _a;
789
+ return ((_a = m.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
790
+ });
791
+ if (!monitorIds.includes(alert.monitorId.toString())) {
792
+ return false;
793
+ }
794
+ }
795
+ // Severity
796
+ if (rule.alertSeverities && rule.alertSeverities.length > 0) {
797
+ if (!alert.alertSeverityId) {
798
+ return false;
799
+ }
800
+ const severityIds = rule.alertSeverities.map((s) => {
801
+ var _a;
802
+ return ((_a = s.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
803
+ });
804
+ if (!severityIds.includes(alert.alertSeverityId.toString())) {
805
+ return false;
806
+ }
807
+ }
808
+ // Entity labels
809
+ if (rule.labels && rule.labels.length > 0) {
810
+ if (!alert.labels || alert.labels.length === 0) {
811
+ return false;
812
+ }
813
+ const ruleLabelIds = rule.labels.map((l) => {
814
+ var _a;
815
+ return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
816
+ });
817
+ const alertLabelIds = alert.labels.map((l) => {
818
+ var _a;
819
+ return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
820
+ });
821
+ const hasMatch = ruleLabelIds.some((id) => {
822
+ return alertLabelIds.includes(id);
823
+ });
824
+ if (!hasMatch) {
825
+ return false;
826
+ }
827
+ }
828
+ // Monitor labels
829
+ if (rule.monitorLabels && rule.monitorLabels.length > 0) {
830
+ if (!alert.monitorId) {
831
+ return false;
832
+ }
833
+ if (!(await this.doesMonitorCarryAnyLabel(alert.monitorId, rule.monitorLabels))) {
834
+ return false;
835
+ }
836
+ }
837
+ if (rule.titlePattern) {
838
+ if (!alert.title ||
839
+ !this.testRegex(rule.titlePattern, alert.title, rule)) {
840
+ return false;
841
+ }
842
+ }
843
+ if (rule.descriptionPattern) {
844
+ if (!alert.description ||
845
+ !this.testRegex(rule.descriptionPattern, alert.description, rule)) {
846
+ return false;
847
+ }
848
+ }
849
+ return true;
850
+ }
851
+ async doesMonitorCarryAnyLabel(monitorId, ruleMonitorLabels) {
852
+ const monitor = await MonitorService.findOneById({
853
+ id: monitorId,
854
+ select: {
855
+ labels: { _id: true },
856
+ },
857
+ props: { isRoot: true },
858
+ });
859
+ if (!monitor || !monitor.labels || monitor.labels.length === 0) {
860
+ return false;
861
+ }
862
+ const ruleLabelIds = ruleMonitorLabels.map((l) => {
863
+ var _a;
864
+ return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
865
+ });
866
+ const monitorLabelIds = monitor.labels.map((l) => {
867
+ var _a;
868
+ return ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
869
+ });
870
+ return ruleLabelIds.some((id) => {
871
+ return monitorLabelIds.includes(id);
872
+ });
873
+ }
874
+ testRegex(pattern, value, rule) {
875
+ try {
876
+ const regex = new RegExp(pattern, "i");
877
+ return regex.test(value);
878
+ }
879
+ catch (_a) {
880
+ logger.warn(`Invalid regex pattern in auto-remediation rule ${rule.id}: ${pattern}`);
881
+ return false;
882
+ }
883
+ }
884
+ }
885
+ __decorate([
886
+ CaptureSpan(),
887
+ __metadata("design:type", Function),
888
+ __metadata("design:paramtypes", [Object]),
889
+ __metadata("design:returntype", Promise)
890
+ ], AutoRemediationRuleEngineServiceClass.prototype, "applyRulesToIncidentById", null);
891
+ __decorate([
892
+ CaptureSpan(),
893
+ __metadata("design:type", Function),
894
+ __metadata("design:paramtypes", [Object]),
895
+ __metadata("design:returntype", Promise)
896
+ ], AutoRemediationRuleEngineServiceClass.prototype, "applyRulesToAlertById", null);
897
+ __decorate([
898
+ CaptureSpan(),
899
+ __metadata("design:type", Function),
900
+ __metadata("design:paramtypes", [Incident]),
901
+ __metadata("design:returntype", Promise)
902
+ ], AutoRemediationRuleEngineServiceClass.prototype, "applyRulesToIncident", null);
903
+ __decorate([
904
+ CaptureSpan(),
905
+ __metadata("design:type", Function),
906
+ __metadata("design:paramtypes", [Alert]),
907
+ __metadata("design:returntype", Promise)
908
+ ], AutoRemediationRuleEngineServiceClass.prototype, "applyRulesToAlert", null);
909
+ __decorate([
910
+ CaptureSpan(),
911
+ __metadata("design:type", Function),
912
+ __metadata("design:paramtypes", [Object]),
913
+ __metadata("design:returntype", Promise)
914
+ ], AutoRemediationRuleEngineServiceClass.prototype, "applyRules", null);
915
+ const AutoRemediationRuleEngineService = new AutoRemediationRuleEngineServiceClass();
916
+ export default AutoRemediationRuleEngineService;
917
+ //# sourceMappingURL=AutoRemediationRuleEngineService.js.map