@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.
- package/Models/AnalyticsModels/ExceptionInstance.ts +67 -0
- package/Models/AnalyticsModels/Index.ts +10 -0
- package/Models/AnalyticsModels/Log.ts +60 -0
- package/Models/AnalyticsModels/RumSession.ts +1401 -0
- package/Models/AnalyticsModels/RumSessionChunk.ts +798 -0
- package/Models/AnalyticsModels/Span.ts +60 -0
- package/Models/DatabaseModels/AIAgentTaskPullRequest.ts +52 -0
- package/Models/DatabaseModels/AIRun.ts +31 -0
- package/Models/DatabaseModels/Alert.ts +29 -0
- package/Models/DatabaseModels/AlertCustomField.ts +1 -1
- package/Models/DatabaseModels/AlertFeed.ts +1 -0
- package/Models/DatabaseModels/AutoRemediationRule.ts +989 -0
- package/Models/DatabaseModels/AutoRemediationSuggestion.ts +874 -0
- package/Models/DatabaseModels/CodeRepository.ts +129 -0
- package/Models/DatabaseModels/GlobalConfig.ts +312 -0
- package/Models/DatabaseModels/Incident.ts +29 -0
- package/Models/DatabaseModels/IncidentCustomField.ts +1 -1
- package/Models/DatabaseModels/IncidentFeed.ts +1 -0
- package/Models/DatabaseModels/Index.ts +21 -8
- package/Models/DatabaseModels/InstanceHealthLog.ts +8 -0
- package/Models/DatabaseModels/MonitorCustomField.ts +1 -1
- package/Models/DatabaseModels/MonitorStatus.ts +1 -1
- package/Models/DatabaseModels/NetworkDeviceLabelRule.ts +2 -2
- package/Models/DatabaseModels/NetworkDeviceOwnerRule.ts +2 -2
- package/Models/DatabaseModels/NetworkSiteAssignmentRule.ts +1 -1
- package/Models/DatabaseModels/OnCallDutyPolicyCustomField.ts +1 -1
- package/Models/DatabaseModels/Project.ts +231 -0
- package/Models/DatabaseModels/RumApplication.ts +906 -0
- package/Models/DatabaseModels/RumSessionErasureRequest.ts +561 -0
- package/Models/DatabaseModels/RumSessionPin.ts +457 -0
- package/Models/DatabaseModels/RumSessionReplayView.ts +406 -0
- package/Models/DatabaseModels/RunbookCredential.ts +673 -0
- package/Models/DatabaseModels/RunbookSecret.ts +7 -7
- package/Models/DatabaseModels/{RunbookAgent.ts → Runner.ts} +206 -46
- package/Models/DatabaseModels/{RunbookAgentJob.ts → RunnerJob.ts} +151 -18
- package/Models/DatabaseModels/{RunbookAgentOwnerTeam.ts → RunnerOwnerTeam.ts} +41 -43
- package/Models/DatabaseModels/{RunbookAgentOwnerUser.ts → RunnerOwnerUser.ts} +41 -43
- package/Models/DatabaseModels/ScheduledMaintenanceCustomField.ts +1 -1
- package/Models/DatabaseModels/StatusPageCustomField.ts +1 -1
- package/Models/DatabaseModels/TeamCustomField.ts +1 -1
- package/Models/DatabaseModels/TeamMemberCustomField.ts +1 -1
- package/Server/API/AIAgentDataAPI.ts +179 -48
- package/Server/API/AIAgentTaskAPI.ts +36 -37
- package/Server/API/AIAgentTaskLogAPI.ts +19 -33
- package/Server/API/AutoRemediationAPI.ts +557 -0
- package/Server/API/BaseAnalyticsAPI.ts +4 -1
- package/Server/API/CommonAPI.ts +35 -0
- package/Server/API/DashboardAPI.ts +340 -15
- package/Server/API/TelemetryAPI.ts +1622 -3
- package/Server/API/UserIncomingCallNumberAPI.ts +31 -0
- package/Server/DatabaseConfig.ts +26 -1
- package/Server/EnvironmentConfig.ts +13 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785417351021-AddSessionReplay.ts +293 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785491583874-EnableSessionReplayByDefault.ts +67 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785496223183-AddMonitorSummaryToIncidentAndAlert.ts +33 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785516996695-AddSessionReplayReliabilityColumns.ts +40 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785533806494-AddSessionReplayCorrelationColumns.ts +54 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785749674203-AddRedisAndPostgresHealthNotificationColumns.ts +104 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785763818197-AddAutoRemediation.ts +349 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785768089408-AddRemediationVerification.ts +67 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785776960660-AddRunnerCapabilities.ts +23 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785790000000-AddIncidentInvestigationGating.ts +42 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785800000000-AddRunbookCredential.ts +84 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785810000000-RenameRunbookAgentToRunner.ts +152 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785860000000-SessionReplayDefaultToSensitiveInputMasking.ts +81 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785870000000-AddAiCommandRemediation.ts +151 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785880000000-AlignRunnerSchemaWithEntities.ts +597 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1785890000000-AddFixVerificationAndAutomaticCodeFixes.ts +71 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +32 -0
- package/Server/Services/AIRunService.ts +10 -0
- package/Server/Services/AIService.ts +30 -0
- package/Server/Services/AlertService.ts +41 -4
- package/Server/Services/AlertSeverityService.ts +25 -11
- package/Server/Services/AlertStateService.ts +25 -11
- package/Server/Services/AutoRemediationRuleEngineService.ts +1101 -0
- package/Server/Services/{RunbookAgentOwnerTeamService.ts → AutoRemediationRuleService.ts} +1 -1
- package/Server/Services/AutoRemediationSuggestionService.ts +183 -0
- package/Server/Services/BillingService.ts +50 -1
- package/Server/Services/DatabaseService.ts +92 -4
- package/Server/Services/IncidentService.ts +56 -4
- package/Server/Services/IncidentSeverityService.ts +25 -11
- package/Server/Services/IncidentStateService.ts +25 -11
- package/Server/Services/Index.ts +19 -0
- package/Server/Services/MonitorService.ts +24 -0
- package/Server/Services/MonitorStatusService.ts +25 -11
- package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +18 -19
- package/Server/Services/NetworkDeviceLabelRuleService.ts +39 -0
- package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +18 -19
- package/Server/Services/NetworkDeviceOwnerRuleService.ts +37 -0
- package/Server/Services/NetworkDeviceService.ts +172 -21
- package/Server/Services/NetworkSiteAssignmentRuleService.ts +92 -12
- package/Server/Services/NetworkSiteService.ts +27 -10
- package/Server/Services/ProjectService.ts +47 -0
- package/Server/Services/RumApplicationService.ts +240 -1
- package/Server/Services/RumSessionChunkService.ts +11 -0
- package/Server/Services/RumSessionErasureRequestService.ts +197 -0
- package/Server/Services/RumSessionPinService.ts +213 -0
- package/Server/Services/RumSessionReplayViewService.ts +201 -0
- package/Server/Services/RumSessionService.ts +123 -0
- package/Server/Services/RunbookCredentialService.ts +76 -0
- package/Server/Services/{RunbookAgentJobService.ts → RunnerJobService.ts} +202 -51
- package/Server/Services/{RunbookAgentOwnerUserService.ts → RunnerOwnerTeamService.ts} +1 -1
- package/Server/Services/RunnerOwnerUserService.ts +10 -0
- package/Server/Services/RunnerService.ts +172 -0
- package/Server/Services/ScheduledMaintenanceStateService.ts +25 -11
- package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +15 -1
- package/Server/Services/ServiceService.ts +8 -2
- package/Server/Services/StatusPageService.ts +240 -36
- package/Server/Services/StatusPageSubscriberNotificationTemplateService.ts +20 -1
- package/Server/Services/TelemetryExceptionService.ts +3 -16
- package/Server/Services/TelemetryUsageBillingService.ts +33 -2
- package/Server/Services/TraceAggregationService.ts +196 -32
- package/Server/Types/Billing/MeteredPlan/AllMeteredPlans.ts +17 -0
- package/Server/Types/Billing/MeteredPlan/ServerMeteredPlan.ts +10 -0
- package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +63 -7
- package/Server/Utils/AI/CodeFix/CodeFixAgentAuth.ts +128 -0
- package/Server/Utils/AI/CodeFix/CodeFixAgentAvailability.ts +54 -0
- package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +17 -10
- package/Server/Utils/AI/CodeFix/CodeFixRunQueue.ts +8 -6
- package/Server/Utils/AI/Remediation/RemediationCommandTools.ts +943 -0
- package/Server/Utils/AI/Remediation/RemediationExecutionRunner.ts +866 -0
- package/Server/Utils/AI/Remediation/RemediationPlanRunner.ts +823 -0
- package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +103 -12
- package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +75 -17
- package/Server/Utils/AI/SRE/ConfidenceSignal.ts +28 -6
- package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +202 -12
- package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +264 -14
- package/Server/Utils/AI/SRE/Insights/Triage.ts +2 -7
- package/Server/Utils/AI/SRE/InvestigationGrader.ts +5 -24
- package/Server/Utils/AI/SRE/InvestigationQueue.ts +259 -20
- package/Server/Utils/AI/SRE/PostedRootCause.ts +82 -0
- package/Server/Utils/AI/SRE/README.md +3 -2
- package/Server/Utils/AI/SRE/RemediationHandoff.ts +82 -0
- package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +6 -19
- package/Server/Utils/AI/Toolbox/CodeWriteTools.ts +2 -2
- package/Server/Utils/Alert/AlertPrivacyFilter.ts +58 -0
- package/Server/Utils/AutoRemediation/CommandPlanExecutor.ts +604 -0
- package/Server/Utils/AutoRemediation/RemediationVerifier.ts +619 -0
- package/Server/Utils/CorsOptions.ts +52 -0
- package/Server/Utils/Database/RelationIdUtil.ts +68 -0
- package/Server/Utils/Incident/IncidentPrivacyFilter.ts +60 -0
- package/Server/Utils/InstanceHealth/PostgresHealth.ts +286 -0
- package/Server/Utils/InstanceHealth/RedisHealth.ts +434 -0
- package/Server/Utils/Monitor/MonitorAlert.ts +20 -0
- package/Server/Utils/Monitor/MonitorIncident.ts +20 -0
- package/Server/Utils/Monitor/MonitorResource.ts +19 -0
- package/Server/Utils/Monitor/MonitorSummaryCapture.ts +104 -0
- package/Server/Utils/NetworkDevice/RulePatternValidator.ts +44 -0
- package/Server/Utils/OpenAPI.ts +2 -1
- package/Server/Utils/Runbook/RunbookExecutePermission.ts +94 -0
- package/Server/Utils/SessionReplay/SessionReplayErasureTombstone.ts +128 -0
- package/Server/Utils/SessionReplay/SessionReplayGateCache.ts +586 -0
- package/Server/Utils/SessionReplay/SessionReplayGateCacheStore.ts +188 -0
- package/Server/Utils/SessionReplay/SessionReplayReadService.ts +1449 -0
- package/Server/Utils/SessionReplay/SessionReplayRetention.ts +114 -0
- package/Server/Utils/SessionReplay/SessionReplayTargeting.ts +144 -0
- package/Server/Utils/SessionReplay/SessionReplayUsage.ts +92 -0
- package/Server/Utils/StartServer.ts +47 -3
- package/Server/Utils/Telemetry/TelemetryFanInWriter.ts +44 -10
- package/Tests/App/Dashboard/AddWidgetModal.test.tsx +557 -0
- package/Tests/App/Dashboard/WidgetCatalog.test.ts +479 -0
- package/Tests/App/StatusPage/BulkAddStatusPageMonitors.test.ts +343 -0
- package/Tests/App/StatusPage/BulkAddStatusPageMonitorsModal.test.tsx +320 -0
- package/Tests/Models/AnalyticsModels/RumSessionSchema.test.ts +455 -0
- package/Tests/Models/AnalyticsModels/SessionIdCorrelation.test.ts +158 -0
- package/Tests/Models/DatabaseModels/SessionReplayModels.test.ts +447 -0
- package/Tests/Models/RunnerVersionLabel.test.ts +223 -0
- package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +1287 -0
- package/Tests/Server/API/LegacyRunbookAgentRoutes.test.ts +117 -0
- package/Tests/Server/API/SessionReplayAPI.test.ts +2093 -0
- package/Tests/Server/API/UserIncomingCallNumberApi.test.ts +429 -0
- package/Tests/Server/API/UserSmsApi.test.ts +68 -2
- package/Tests/Server/DatabaseConfig.test.ts +150 -0
- package/Tests/Server/Infrastructure/ContainerBootConfiguration.test.ts +2 -2
- package/Tests/Server/Infrastructure/ProcessSignalDelivery.test.ts +2 -3
- package/Tests/Server/Services/AIRunCodeFixClaimScoping.test.ts +100 -0
- package/Tests/Server/Services/AIServiceDailyBudget.test.ts +8 -0
- package/Tests/Server/Services/AutoRemediationCommandRuleEngine.test.ts +334 -0
- package/Tests/Server/Services/AutoRemediationRuleEngineService.test.ts +517 -0
- package/Tests/Server/Services/BillingService.test.ts +158 -1
- package/Tests/Server/Services/DatabaseServiceEmptyUpdate.test.ts +24 -2
- package/Tests/Server/Services/DatabaseServiceSanitizeUpdateData.test.ts +17 -10
- package/Tests/Server/Services/DatabaseServiceUpdateColumnsWithoutHooks.test.ts +128 -0
- package/Tests/Server/Services/DatabaseServiceUpdateWriteRouting.test.ts +178 -0
- package/Tests/Server/Services/DatabaseServiceUpdateWriteRoutingMonitor.test.ts +206 -0
- package/Tests/Server/Services/MonitorServiceOperationalStatusSelection.test.ts +145 -0
- package/Tests/Server/Services/NetworkDeviceRuleEngines.test.ts +726 -0
- package/Tests/Server/Services/NetworkDeviceSiteAssignment.test.ts +570 -9
- package/Tests/Server/Services/NetworkSiteAssignmentRuleService.test.ts +94 -1
- package/Tests/Server/Services/NetworkSiteService.test.ts +85 -0
- package/Tests/Server/Services/RumApplicationReplayHealth.test.ts +114 -0
- package/Tests/Server/Services/RunbookCredentialService.test.ts +657 -0
- package/Tests/Server/Services/SessionReplayCreatePath.test.ts +376 -0
- package/Tests/Server/Services/SessionReplayGateCacheInvalidation.test.ts +211 -0
- package/Tests/Server/Services/SessionReplayMetering.test.ts +174 -0
- package/Tests/Server/Services/StatusPageSubscriberReport.test.ts +555 -0
- package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +25 -4
- package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +17 -2
- package/Tests/Server/Services/TraceAggregationService.test.ts +48 -0
- package/Tests/Server/Services/TraceAnalyticsResourceDisplayNames.test.ts +855 -0
- package/Tests/Server/Services/UpdateOneByIdKeepsRowId.test.ts +38 -27
- package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +44 -0
- package/Tests/Server/Utils/AI/AIIncidentGating.test.ts +475 -0
- package/Tests/Server/Utils/AI/CodeFix/CodeFixAgentAuth.test.ts +257 -0
- package/Tests/Server/Utils/AI/CodeFix/CodeFixAgentAvailability.test.ts +236 -0
- package/Tests/Server/Utils/AI/CodeFixReadiness.test.ts +44 -6
- package/Tests/Server/Utils/AI/CodeFixRunQueue.test.ts +47 -1
- package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +2 -2
- package/Tests/Server/Utils/AI/FixFromIncidentAutoTrigger.test.ts +294 -0
- package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +2 -2
- package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +47 -3
- package/Tests/Server/Utils/AI/InvestigationQueueRemediationExecution.test.ts +233 -0
- package/Tests/Server/Utils/AI/InvestigationSettlement.test.ts +463 -0
- package/Tests/Server/Utils/AI/PostedRootCause.test.ts +254 -0
- package/Tests/Server/Utils/AI/RemediationAllowlistNormalization.test.ts +248 -0
- package/Tests/Server/Utils/AI/RemediationCommandTools.test.ts +1008 -0
- package/Tests/Server/Utils/AI/RemediationExecutionRunner.test.ts +887 -0
- package/Tests/Server/Utils/AI/RemediationHandoff.test.ts +306 -0
- package/Tests/Server/Utils/AI/RemediationPlanRunner.test.ts +745 -0
- package/Tests/Server/Utils/AI/SubjectCodeFixRunDedupe.test.ts +291 -0
- package/Tests/Server/Utils/AutoRemediation/CommandPlanExecutor.test.ts +1050 -0
- package/Tests/Server/Utils/AutoRemediation/CommandPlanVerification.test.ts +350 -0
- package/Tests/Server/Utils/AutoRemediation/RemediationVerifier.test.ts +341 -0
- package/Tests/Server/Utils/CorsOptions.test.ts +119 -0
- package/Tests/Server/Utils/Database/RelationIdUtil.test.ts +120 -0
- package/Tests/Server/Utils/Database/ResolveReferenceId.test.ts +60 -0
- package/Tests/Server/Utils/InstanceHealth/PostgresHealth.test.ts +337 -0
- package/Tests/Server/Utils/InstanceHealth/RedisHealth.test.ts +671 -0
- package/Tests/Server/Utils/Monitor/MonitorSummaryCapture.test.ts +205 -0
- package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +313 -0
- package/Tests/Server/Utils/PushNotificationUtil.test.ts +228 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayGateCachePolicy.test.ts +177 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayOriginAllowlist.test.ts +108 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayRetention.test.ts +229 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayTargeting.test.ts +246 -0
- package/Tests/Server/Utils/Telemetry/TelemetryFanInWriter.test.ts +110 -0
- package/Tests/Types/AI/AIRunStatus.test.ts +25 -0
- package/Tests/Types/AutoRemediation/AiRemediationCommandPlan.test.ts +1063 -0
- package/Tests/Types/BaseDatabase/AggregationType.test.ts +56 -0
- package/Tests/Types/CustomField/CustomFieldDropdownOption.test.ts +227 -0
- package/Tests/Types/Dashboard/DashboardTemplateInvariants.test.ts +811 -0
- package/Tests/Types/Dashboard/RumDashboardTemplate.test.ts +1238 -0
- package/Tests/Types/Day/DayOfWeek.test.ts +46 -0
- package/Tests/Types/Docker/DockerInventoryExtractor.test.ts +249 -0
- package/Tests/Types/Kubernetes/KubernetesInventoryExtractor.test.ts +231 -0
- package/Tests/Types/Kubernetes/KubernetesRightSizing.test.ts +323 -0
- package/Tests/Types/Metrics/MetricDownsamplingRetentionDays.test.ts +77 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +42 -14
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +2 -2
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +3 -2
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +1 -1
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +6 -3
- package/Tests/Types/Monitor/RumAlertTemplates.test.ts +285 -0
- package/Tests/Types/Podman/PodmanInventoryExtractor.test.ts +159 -0
- package/Tests/Types/Runbook/RunbookExecutionDeadline.test.ts +268 -0
- package/Tests/Types/Runbook/RunbookStepType.test.ts +242 -0
- package/Tests/Types/Telemetry/TelemetryRetentionConfig.test.ts +225 -0
- package/Tests/Types/Text.test.ts +60 -0
- package/Tests/UI/Components/AutocompleteTextInputMenu.test.tsx +555 -0
- package/Tests/UI/Components/BulkLabelActions.test.tsx +1502 -0
- package/Tests/UI/Components/BulkOwnerActions.test.tsx +1255 -0
- package/Tests/UI/Components/CustomFields/DropdownOptionsInput.test.tsx +228 -0
- package/Tests/UI/Components/Detail/DropdownColors.test.tsx +128 -0
- package/Tests/UI/Components/Dropdown/DropdownValueBadge.test.tsx +60 -0
- package/Tests/UI/Components/FilterModalOperatorMenu.test.tsx +674 -0
- package/Tests/UI/Components/Forms/ColorPicker.test.tsx +48 -0
- package/Tests/UI/Components/Forms/ColorPickerPopup.test.tsx +222 -0
- package/Tests/UI/Components/Forms/IconPickerPopup.test.tsx +270 -0
- package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +125 -6
- package/Tests/UI/Components/OperatorSelectorFilterTypes.test.tsx +1595 -0
- package/Tests/UI/Components/OperatorSelectorKeyboard.test.tsx +851 -0
- package/Tests/UI/Components/OperatorSelectorMenu.test.tsx +1229 -0
- package/Tests/UI/Components/Pagination.test.tsx +85 -0
- package/Tests/UI/Monitor/MonitorSummarySnapshotRender.test.tsx +248 -0
- package/Tests/UI/Rum/ChunkLoader.test.ts +790 -0
- package/Tests/UI/Rum/ReplayScrubber.test.tsx +236 -0
- package/Tests/UI/Rum/ReplayStage.test.tsx +606 -0
- package/Tests/UI/Utils/Timezone.test.ts +86 -0
- package/Tests/UI/Utils/UseClockTick.test.tsx +276 -0
- package/Tests/Utils/AiRemediation/CommandPolicy.test.ts +1063 -0
- package/Tests/Utils/Dashboard/ClockWidgetFormat.test.ts +1374 -0
- package/Tests/Utils/Dashboard/DashboardClockComponent.test.ts +362 -0
- package/Tests/Utils/Dashboard/DashboardHtmlComponent.test.ts +217 -0
- package/Tests/Utils/Dashboard/HtmlWidgetDocument.test.ts +656 -0
- package/Tests/Utils/Dashboard/ValueWidgetLayout.test.ts +1007 -0
- package/Tests/Utils/Metrics/MetricSeriesScope.test.ts +1197 -0
- package/Tests/Utils/Monitor/MonitorSummarySnapshotUtil.test.ts +839 -0
- package/Tests/Utils/NetworkSite/CidrMatchUtil.test.ts +69 -0
- package/Tests/Utils/Rules/RulePatternMatchUtil.test.ts +274 -0
- package/Tests/Utils/Rum/ChunkMath.test.ts +286 -0
- package/Tests/Utils/Rum/Masking.test.ts +186 -0
- package/Tests/Utils/Rum/SessionIdentity.test.ts +272 -0
- package/Tests/Utils/Rum/SessionSampling.test.ts +164 -0
- package/Tests/Utils/Rum/UrlScrubber.test.ts +175 -0
- package/Tests/Utils/StatusPage/Report.test.ts +708 -0
- package/Tests/Utils/ValueFormatter.test.ts +299 -1
- package/Types/AI/AIRunStatus.ts +18 -7
- package/Types/AI/AIRunType.ts +18 -0
- package/Types/AI/FixVerificationStatus.ts +21 -0
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +16 -0
- package/Types/AutoRemediation/AiRemediationCommandPlan.ts +304 -0
- package/Types/AutoRemediation/AutoRemediationExecutionMode.ts +17 -0
- package/Types/AutoRemediation/AutoRemediationSuggestionStatus.ts +35 -0
- package/Types/AutoRemediation/AutoRemediationSuggestionType.ts +17 -0
- package/Types/AutoRemediation/AutoRemediationTriggerEntity.ts +11 -0
- package/Types/AutoRemediation/AutoRemediationVerificationStatus.ts +21 -0
- package/Types/CustomField/CustomFieldDropdownOption.ts +190 -0
- package/Types/Dashboard/DashboardComponentType.ts +2 -0
- package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +4 -0
- package/Types/Dashboard/DashboardComponents/DashboardClockComponent.ts +45 -0
- package/Types/Dashboard/DashboardComponents/DashboardHtmlComponent.ts +27 -0
- package/Types/Dashboard/DashboardComponents/DashboardValueComponent.ts +8 -0
- package/Types/Dashboard/DashboardTemplates.ts +516 -0
- package/Types/Date.ts +6 -0
- package/Types/Email/EmailTemplateType.ts +2 -0
- package/Types/Kubernetes/KubernetesRightSizing.ts +353 -0
- package/Types/MeteredPlan/ProductType.ts +1 -0
- package/Types/Monitor/MonitorStepMetricMonitor.ts +27 -1
- package/Types/Monitor/MonitorSteps.ts +5 -0
- package/Types/Monitor/MonitorSummarySnapshot.ts +88 -0
- package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +52 -10
- package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +7 -5
- package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +101 -20
- package/Types/Monitor/RumAlertTemplates.ts +386 -0
- package/Types/Permission.ts +204 -24
- package/Types/Rum/SessionReplay.ts +452 -0
- package/Types/Rum/SessionReplayCaptureTrigger.ts +26 -0
- package/Types/Rum/SessionReplayConsentMode.ts +27 -0
- package/Types/Rum/SessionReplayMaskingMode.ts +86 -0
- package/Types/Rum/SessionReplayTriggerReason.ts +31 -0
- package/Types/Runbook/RunbookCredentialType.ts +6 -0
- package/Types/Runbook/RunbookStep.ts +66 -1
- package/Types/Runbook/RunbookStepType.ts +26 -0
- package/Types/Runbook/RunnerJobOrigin.ts +20 -0
- package/Types/Runbook/{RunbookAgentJobStatus.ts → RunnerJobStatus.ts} +2 -2
- package/Types/StatusPage/StatusPageReport.ts +99 -0
- package/Types/Telemetry/TelemetryRetentionConfig.ts +18 -1
- package/Types/Text.ts +33 -0
- package/UI/Components/AutocompleteTextInput/AutocompleteTextInput.tsx +260 -75
- package/UI/Components/BulkUpdate/BulkLabelActions.tsx +99 -9
- package/UI/Components/BulkUpdate/BulkOwnerActions.tsx +11 -0
- package/UI/Components/CustomFields/CustomFieldsDetail.tsx +19 -14
- package/UI/Components/CustomFields/DropdownOptionsInput.tsx +144 -54
- package/UI/Components/Detail/Detail.tsx +9 -22
- package/UI/Components/Dropdown/Dropdown.tsx +2 -5
- package/UI/Components/Dropdown/DropdownMenuZIndex.ts +7 -0
- package/UI/Components/Dropdown/DropdownValueBadge.tsx +61 -0
- package/UI/Components/Filters/OperatorSelector.tsx +350 -39
- package/UI/Components/Forms/Fields/ColorPicker.tsx +60 -27
- package/UI/Components/Forms/Fields/IconPicker.tsx +89 -60
- package/UI/Components/Forms/Validation.ts +9 -4
- package/UI/Components/List/List.tsx +1 -0
- package/UI/Components/ModelTable/CustomFieldColumns.tsx +41 -32
- package/UI/Components/Pagination/Pagination.tsx +33 -10
- package/UI/Components/Table/Table.tsx +1 -0
- package/UI/Types/UseAnchoredFieldPopup.ts +321 -0
- package/UI/Utils/Dropdown.ts +26 -0
- package/UI/Utils/Timezone.ts +18 -2
- package/UI/Utils/UseClockTick.ts +78 -0
- package/Utils/AiRemediation/CommandPolicy.ts +398 -0
- package/Utils/Dashboard/ClockWidgetFormat.ts +604 -0
- package/Utils/Dashboard/Components/DashboardClockComponent.ts +181 -0
- package/Utils/Dashboard/Components/DashboardHtmlComponent.ts +162 -0
- package/Utils/Dashboard/Components/DashboardValueComponent.ts +12 -1
- package/Utils/Dashboard/Components/Index.ts +14 -0
- package/Utils/Dashboard/HtmlWidgetDocument.ts +309 -0
- package/Utils/Dashboard/ValueWidgetLayout.ts +471 -0
- package/Utils/Metrics/MetricSeriesScope.ts +301 -0
- package/Utils/Monitor/MonitorSummarySnapshotUtil.ts +593 -0
- package/Utils/NetworkSite/CidrMatchUtil.ts +30 -17
- package/Utils/Rules/RulePatternMatchUtil.ts +103 -0
- package/Utils/Rum/ChunkMath.ts +211 -0
- package/Utils/Rum/Masking.ts +168 -0
- package/Utils/Rum/SessionIdentity.ts +230 -0
- package/Utils/Rum/SessionSampling.ts +108 -0
- package/Utils/Rum/UrlScrubber.ts +185 -0
- package/Utils/Schema/ModelSchema.ts +27 -3
- package/Utils/StatusPage/Report.ts +304 -0
- package/Utils/ValueFormatter.ts +300 -54
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +63 -0
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Index.js +10 -0
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Log.js +56 -0
- package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/RumSession.js +1159 -0
- package/build/dist/Models/AnalyticsModels/RumSession.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/RumSessionChunk.js +670 -0
- package/build/dist/Models/AnalyticsModels/RumSessionChunk.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/Span.js +56 -0
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +54 -0
- package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIRun.js +32 -0
- package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Alert.js +30 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertCustomField.js +1 -1
- package/build/dist/Models/DatabaseModels/AlertCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertFeed.js +1 -0
- package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AutoRemediationRule.js +998 -0
- package/build/dist/Models/DatabaseModels/AutoRemediationRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AutoRemediationSuggestion.js +917 -0
- package/build/dist/Models/DatabaseModels/AutoRemediationSuggestion.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CodeRepository.js +132 -0
- package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalConfig.js +327 -0
- package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js +30 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentCustomField.js +1 -1
- package/build/dist/Models/DatabaseModels/IncidentCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentFeed.js +1 -0
- package/build/dist/Models/DatabaseModels/IncidentFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +20 -8
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/InstanceHealthLog.js +8 -0
- package/build/dist/Models/DatabaseModels/InstanceHealthLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorCustomField.js +1 -1
- package/build/dist/Models/DatabaseModels/MonitorCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorStatus.js +1 -1
- package/build/dist/Models/DatabaseModels/MonitorStatus.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js +2 -2
- package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js +2 -2
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +235 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplication.js +930 -0
- package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumSessionErasureRequest.js +591 -0
- package/build/dist/Models/DatabaseModels/RumSessionErasureRequest.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumSessionPin.js +483 -0
- package/build/dist/Models/DatabaseModels/RumSessionPin.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumSessionReplayView.js +433 -0
- package/build/dist/Models/DatabaseModels/RumSessionReplayView.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RunbookCredential.js +693 -0
- package/build/dist/Models/DatabaseModels/RunbookCredential.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RunbookSecret.js +8 -8
- package/build/dist/Models/DatabaseModels/RunbookSecret.js.map +1 -1
- package/build/dist/Models/DatabaseModels/{RunbookAgent.js → Runner.js} +235 -70
- package/build/dist/Models/DatabaseModels/Runner.js.map +1 -0
- package/build/dist/Models/DatabaseModels/{RunbookAgentJob.js → RunnerJob.js} +173 -40
- package/build/dist/Models/DatabaseModels/RunnerJob.js.map +1 -0
- package/build/dist/Models/DatabaseModels/{RunbookAgentOwnerTeam.js → RunnerOwnerTeam.js} +57 -57
- package/build/dist/Models/DatabaseModels/RunnerOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/{RunbookAgentOwnerUser.js → RunnerOwnerUser.js} +57 -57
- package/build/dist/Models/DatabaseModels/RunnerOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageCustomField.js +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TeamCustomField.js +1 -1
- package/build/dist/Models/DatabaseModels/TeamCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js +1 -1
- package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +130 -45
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/API/AIAgentTaskAPI.js +26 -36
- package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
- package/build/dist/Server/API/AIAgentTaskLogAPI.js +11 -28
- package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
- package/build/dist/Server/API/AutoRemediationAPI.js +416 -0
- package/build/dist/Server/API/AutoRemediationAPI.js.map +1 -0
- package/build/dist/Server/API/BaseAnalyticsAPI.js +4 -1
- package/build/dist/Server/API/BaseAnalyticsAPI.js.map +1 -1
- package/build/dist/Server/API/CommonAPI.js +24 -0
- package/build/dist/Server/API/CommonAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +265 -6
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +940 -3
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/API/UserIncomingCallNumberAPI.js +18 -0
- package/build/dist/Server/API/UserIncomingCallNumberAPI.js.map +1 -1
- package/build/dist/Server/DatabaseConfig.js +23 -4
- package/build/dist/Server/DatabaseConfig.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +8 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785417351021-AddSessionReplay.js +106 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785417351021-AddSessionReplay.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785491583874-EnableSessionReplayByDefault.js +37 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785491583874-EnableSessionReplayByDefault.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785496223183-AddMonitorSummaryToIncidentAndAlert.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785496223183-AddMonitorSummaryToIncidentAndAlert.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785516996695-AddSessionReplayReliabilityColumns.js +29 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785516996695-AddSessionReplayReliabilityColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785533806494-AddSessionReplayCorrelationColumns.js +35 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785533806494-AddSessionReplayCorrelationColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785749674203-AddRedisAndPostgresHealthNotificationColumns.js +40 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785749674203-AddRedisAndPostgresHealthNotificationColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785763818197-AddAutoRemediation.js +128 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785763818197-AddAutoRemediation.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785768089408-AddRemediationVerification.js +28 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785768089408-AddRemediationVerification.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785776960660-AddRunnerCapabilities.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785776960660-AddRunnerCapabilities.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785790000000-AddIncidentInvestigationGating.js +27 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785790000000-AddIncidentInvestigationGating.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785800000000-AddRunbookCredential.js +44 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785800000000-AddRunbookCredential.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785810000000-RenameRunbookAgentToRunner.js +88 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785810000000-RenameRunbookAgentToRunner.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785860000000-SessionReplayDefaultToSensitiveInputMasking.js +59 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785860000000-SessionReplayDefaultToSensitiveInputMasking.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785870000000-AddAiCommandRemediation.js +76 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785870000000-AddAiCommandRemediation.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785880000000-AlignRunnerSchemaWithEntities.js +214 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785880000000-AlignRunnerSchemaWithEntities.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785890000000-AddFixVerificationAndAutomaticCodeFixes.js +44 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785890000000-AddFixVerificationAndAutomaticCodeFixes.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +32 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AIRunService.js +1 -4
- package/build/dist/Server/Services/AIRunService.js.map +1 -1
- package/build/dist/Server/Services/AIService.js +26 -0
- package/build/dist/Server/Services/AIService.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +37 -4
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/AlertSeverityService.js +24 -11
- package/build/dist/Server/Services/AlertSeverityService.js.map +1 -1
- package/build/dist/Server/Services/AlertStateService.js +24 -11
- package/build/dist/Server/Services/AlertStateService.js.map +1 -1
- package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +917 -0
- package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/{RunbookAgentOwnerTeamService.js → AutoRemediationRuleService.js} +2 -2
- package/build/dist/Server/Services/AutoRemediationRuleService.js.map +1 -0
- package/build/dist/Server/Services/AutoRemediationSuggestionService.js +127 -0
- package/build/dist/Server/Services/AutoRemediationSuggestionService.js.map +1 -0
- package/build/dist/Server/Services/BillingService.js +45 -1
- package/build/dist/Server/Services/BillingService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +72 -4
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +52 -4
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/IncidentSeverityService.js +24 -11
- package/build/dist/Server/Services/IncidentSeverityService.js.map +1 -1
- package/build/dist/Server/Services/IncidentStateService.js +24 -11
- package/build/dist/Server/Services/IncidentStateService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +18 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +24 -0
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorStatusService.js +25 -11
- package/build/dist/Server/Services/MonitorStatusService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +12 -11
- package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js +43 -0
- package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +12 -11
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js +41 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceService.js +129 -20
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js +67 -10
- package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteService.js +19 -8
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +43 -0
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationService.js +202 -0
- package/build/dist/Server/Services/RumApplicationService.js.map +1 -1
- package/build/dist/Server/Services/RumSessionChunkService.js +9 -0
- package/build/dist/Server/Services/RumSessionChunkService.js.map +1 -0
- package/build/dist/Server/Services/RumSessionErasureRequestService.js +190 -0
- package/build/dist/Server/Services/RumSessionErasureRequestService.js.map +1 -0
- package/build/dist/Server/Services/RumSessionPinService.js +208 -0
- package/build/dist/Server/Services/RumSessionPinService.js.map +1 -0
- package/build/dist/Server/Services/RumSessionReplayViewService.js +180 -0
- package/build/dist/Server/Services/RumSessionReplayViewService.js.map +1 -0
- package/build/dist/Server/Services/RumSessionService.js +102 -0
- package/build/dist/Server/Services/RumSessionService.js.map +1 -0
- package/build/dist/Server/Services/RunbookCredentialService.js +67 -0
- package/build/dist/Server/Services/RunbookCredentialService.js.map +1 -0
- package/build/dist/Server/Services/{RunbookAgentJobService.js → RunnerJobService.js} +158 -46
- package/build/dist/Server/Services/RunnerJobService.js.map +1 -0
- package/build/dist/Server/Services/{RunbookAgentOwnerUserService.js → RunnerOwnerTeamService.js} +2 -2
- package/build/dist/Server/Services/RunnerOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/RunnerOwnerUserService.js +9 -0
- package/build/dist/Server/Services/RunnerOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/RunnerService.js +168 -0
- package/build/dist/Server/Services/RunnerService.js.map +1 -0
- package/build/dist/Server/Services/ScheduledMaintenanceStateService.js +24 -11
- package/build/dist/Server/Services/ScheduledMaintenanceStateService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +15 -1
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceService.js +8 -2
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +173 -16
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js +17 -1
- package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryExceptionService.js +3 -16
- package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +31 -3
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +106 -2
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Types/Billing/MeteredPlan/AllMeteredPlans.js +16 -0
- package/build/dist/Server/Types/Billing/MeteredPlan/AllMeteredPlans.js.map +1 -1
- package/build/dist/Server/Types/Billing/MeteredPlan/ServerMeteredPlan.js +9 -0
- package/build/dist/Server/Types/Billing/MeteredPlan/ServerMeteredPlan.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +38 -6
- package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentAuth.js +104 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentAuth.js.map +1 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentAvailability.js +54 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentAvailability.js.map +1 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +11 -7
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js +3 -4
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixRunQueue.js.map +1 -1
- package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js +724 -0
- package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js +668 -0
- package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js.map +1 -0
- package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js +657 -0
- package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +52 -7
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +53 -5
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +25 -6
- package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +131 -17
- package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +200 -5
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js +2 -7
- package/build/dist/Server/Utils/AI/SRE/Insights/Triage.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +4 -17
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +203 -19
- package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js +89 -0
- package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/RemediationHandoff.js +82 -0
- package/build/dist/Server/Utils/AI/SRE/RemediationHandoff.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +4 -19
- package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js +2 -2
- package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js +36 -0
- package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js.map +1 -1
- package/build/dist/Server/Utils/AutoRemediation/CommandPlanExecutor.js +498 -0
- package/build/dist/Server/Utils/AutoRemediation/CommandPlanExecutor.js.map +1 -0
- package/build/dist/Server/Utils/AutoRemediation/RemediationVerifier.js +492 -0
- package/build/dist/Server/Utils/AutoRemediation/RemediationVerifier.js.map +1 -0
- package/build/dist/Server/Utils/CorsOptions.js +47 -0
- package/build/dist/Server/Utils/CorsOptions.js.map +1 -0
- package/build/dist/Server/Utils/Database/RelationIdUtil.js +51 -0
- package/build/dist/Server/Utils/Database/RelationIdUtil.js.map +1 -0
- package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js +38 -0
- package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js.map +1 -1
- package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js +194 -0
- package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js.map +1 -0
- package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js +292 -0
- package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +9 -0
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +9 -0
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +16 -0
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorSummaryCapture.js +92 -0
- package/build/dist/Server/Utils/Monitor/MonitorSummaryCapture.js.map +1 -0
- package/build/dist/Server/Utils/NetworkDevice/RulePatternValidator.js +27 -0
- package/build/dist/Server/Utils/NetworkDevice/RulePatternValidator.js.map +1 -0
- package/build/dist/Server/Utils/OpenAPI.js +2 -1
- package/build/dist/Server/Utils/OpenAPI.js.map +1 -1
- package/build/dist/Server/Utils/Runbook/RunbookExecutePermission.js +67 -0
- package/build/dist/Server/Utils/Runbook/RunbookExecutePermission.js.map +1 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayErasureTombstone.js +98 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayErasureTombstone.js.map +1 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js +378 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js.map +1 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCacheStore.js +137 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCacheStore.js.map +1 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js +998 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js.map +1 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayRetention.js +59 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayRetention.js.map +1 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayTargeting.js +98 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayTargeting.js.map +1 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayUsage.js +69 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayUsage.js.map +1 -0
- package/build/dist/Server/Utils/StartServer.js +40 -3
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js +27 -6
- package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js.map +1 -1
- package/build/dist/Types/AI/AIRunStatus.js +17 -5
- package/build/dist/Types/AI/AIRunStatus.js.map +1 -1
- package/build/dist/Types/AI/AIRunType.js +18 -0
- package/build/dist/Types/AI/AIRunType.js.map +1 -1
- package/build/dist/Types/AI/FixVerificationStatus.js +22 -0
- package/build/dist/Types/AI/FixVerificationStatus.js.map +1 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +16 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
- package/build/dist/Types/AutoRemediation/AiRemediationCommandPlan.js +192 -0
- package/build/dist/Types/AutoRemediation/AiRemediationCommandPlan.js.map +1 -0
- package/build/dist/Types/AutoRemediation/AutoRemediationExecutionMode.js +18 -0
- package/build/dist/Types/AutoRemediation/AutoRemediationExecutionMode.js.map +1 -0
- package/build/dist/Types/AutoRemediation/AutoRemediationSuggestionStatus.js +31 -0
- package/build/dist/Types/AutoRemediation/AutoRemediationSuggestionStatus.js.map +1 -0
- package/build/dist/Types/AutoRemediation/AutoRemediationSuggestionType.js +18 -0
- package/build/dist/Types/AutoRemediation/AutoRemediationSuggestionType.js.map +1 -0
- package/build/dist/Types/AutoRemediation/AutoRemediationTriggerEntity.js +12 -0
- package/build/dist/Types/AutoRemediation/AutoRemediationTriggerEntity.js.map +1 -0
- package/build/dist/Types/AutoRemediation/AutoRemediationVerificationStatus.js +22 -0
- package/build/dist/Types/AutoRemediation/AutoRemediationVerificationStatus.js.map +1 -0
- package/build/dist/Types/CustomField/CustomFieldDropdownOption.js +110 -0
- package/build/dist/Types/CustomField/CustomFieldDropdownOption.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +4 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardClockComponent.js +19 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardClockComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardHtmlComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardHtmlComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js +487 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/Date.js +6 -0
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +2 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Kubernetes/KubernetesRightSizing.js +229 -0
- package/build/dist/Types/Kubernetes/KubernetesRightSizing.js.map +1 -0
- package/build/dist/Types/MeteredPlan/ProductType.js +1 -0
- package/build/dist/Types/MeteredPlan/ProductType.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js +12 -2
- package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorSteps.js +5 -0
- package/build/dist/Types/Monitor/MonitorSteps.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorSummarySnapshot.js +13 -0
- package/build/dist/Types/Monitor/MonitorSummarySnapshot.js.map +1 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +40 -8
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +4 -3
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +50 -10
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
- package/build/dist/Types/Monitor/RumAlertTemplates.js +297 -0
- package/build/dist/Types/Monitor/RumAlertTemplates.js.map +1 -0
- package/build/dist/Types/Permission.js +184 -24
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Rum/SessionReplay.js +155 -0
- package/build/dist/Types/Rum/SessionReplay.js.map +1 -0
- package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js +26 -0
- package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js.map +1 -0
- package/build/dist/Types/Rum/SessionReplayConsentMode.js +27 -0
- package/build/dist/Types/Rum/SessionReplayConsentMode.js.map +1 -0
- package/build/dist/Types/Rum/SessionReplayMaskingMode.js +79 -0
- package/build/dist/Types/Rum/SessionReplayMaskingMode.js.map +1 -0
- package/build/dist/Types/Rum/SessionReplayTriggerReason.js +28 -0
- package/build/dist/Types/Rum/SessionReplayTriggerReason.js.map +1 -0
- package/build/dist/Types/Runbook/RunbookCredentialType.js +7 -0
- package/build/dist/Types/Runbook/RunbookCredentialType.js.map +1 -0
- package/build/dist/Types/Runbook/RunbookStep.js +20 -1
- package/build/dist/Types/Runbook/RunbookStep.js.map +1 -1
- package/build/dist/Types/Runbook/RunbookStepType.js +24 -0
- package/build/dist/Types/Runbook/RunbookStepType.js.map +1 -1
- package/build/dist/Types/Runbook/RunnerJobOrigin.js +21 -0
- package/build/dist/Types/Runbook/RunnerJobOrigin.js.map +1 -0
- package/build/dist/Types/Runbook/RunnerJobStatus.js +22 -0
- package/build/dist/Types/Runbook/RunnerJobStatus.js.map +1 -0
- package/build/dist/Types/StatusPage/StatusPageReport.js +22 -0
- package/build/dist/Types/StatusPage/StatusPageReport.js.map +1 -0
- package/build/dist/Types/Telemetry/TelemetryRetentionConfig.js.map +1 -1
- package/build/dist/Types/Text.js +29 -0
- package/build/dist/Types/Text.js.map +1 -1
- package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js +143 -28
- package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js.map +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js +82 -9
- package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js.map +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkOwnerActions.js +11 -0
- package/build/dist/UI/Components/BulkUpdate/BulkOwnerActions.js.map +1 -1
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +11 -13
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
- package/build/dist/UI/Components/CustomFields/DropdownOptionsInput.js +76 -45
- package/build/dist/UI/Components/CustomFields/DropdownOptionsInput.js.map +1 -1
- package/build/dist/UI/Components/Detail/Detail.js +3 -8
- package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
- package/build/dist/UI/Components/Dropdown/Dropdown.js +2 -5
- package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
- package/build/dist/UI/Components/Dropdown/DropdownMenuZIndex.js +7 -0
- package/build/dist/UI/Components/Dropdown/DropdownMenuZIndex.js.map +1 -0
- package/build/dist/UI/Components/Dropdown/DropdownValueBadge.js +32 -0
- package/build/dist/UI/Components/Dropdown/DropdownValueBadge.js.map +1 -0
- package/build/dist/UI/Components/Filters/OperatorSelector.js +210 -20
- package/build/dist/UI/Components/Filters/OperatorSelector.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/ColorPicker.js +26 -10
- package/build/dist/UI/Components/Forms/Fields/ColorPicker.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/IconPicker.js +28 -13
- package/build/dist/UI/Components/Forms/Fields/IconPicker.js.map +1 -1
- package/build/dist/UI/Components/Forms/Validation.js +9 -5
- package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
- package/build/dist/UI/Components/List/List.js +1 -1
- package/build/dist/UI/Components/List/List.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js +21 -19
- package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js.map +1 -1
- package/build/dist/UI/Components/Pagination/Pagination.js +14 -3
- package/build/dist/UI/Components/Pagination/Pagination.js.map +1 -1
- package/build/dist/UI/Components/Table/Table.js +1 -1
- package/build/dist/UI/Components/Table/Table.js.map +1 -1
- package/build/dist/UI/Types/UseAnchoredFieldPopup.js +197 -0
- package/build/dist/UI/Types/UseAnchoredFieldPopup.js.map +1 -0
- package/build/dist/UI/Utils/Dropdown.js +18 -0
- package/build/dist/UI/Utils/Dropdown.js.map +1 -1
- package/build/dist/UI/Utils/Timezone.js +13 -2
- package/build/dist/UI/Utils/Timezone.js.map +1 -1
- package/build/dist/UI/Utils/UseClockTick.js +41 -0
- package/build/dist/UI/Utils/UseClockTick.js.map +1 -0
- package/build/dist/Utils/AiRemediation/CommandPolicy.js +303 -0
- package/build/dist/Utils/AiRemediation/CommandPolicy.js.map +1 -0
- package/build/dist/Utils/Dashboard/ClockWidgetFormat.js +232 -0
- package/build/dist/Utils/Dashboard/ClockWidgetFormat.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardClockComponent.js +146 -0
- package/build/dist/Utils/Dashboard/Components/DashboardClockComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardHtmlComponent.js +133 -0
- package/build/dist/Utils/Dashboard/Components/DashboardHtmlComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardValueComponent.js +10 -1
- package/build/dist/Utils/Dashboard/Components/DashboardValueComponent.js.map +1 -1
- package/build/dist/Utils/Dashboard/Components/Index.js +8 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js +198 -0
- package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js.map +1 -0
- package/build/dist/Utils/Dashboard/ValueWidgetLayout.js +276 -0
- package/build/dist/Utils/Dashboard/ValueWidgetLayout.js.map +1 -0
- package/build/dist/Utils/Metrics/MetricSeriesScope.js +203 -0
- package/build/dist/Utils/Metrics/MetricSeriesScope.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitorSummarySnapshotUtil.js +382 -0
- package/build/dist/Utils/Monitor/MonitorSummarySnapshotUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/CidrMatchUtil.js +13 -7
- package/build/dist/Utils/NetworkSite/CidrMatchUtil.js.map +1 -1
- package/build/dist/Utils/Rules/RulePatternMatchUtil.js +87 -0
- package/build/dist/Utils/Rules/RulePatternMatchUtil.js.map +1 -0
- package/build/dist/Utils/Rum/ChunkMath.js +147 -0
- package/build/dist/Utils/Rum/ChunkMath.js.map +1 -0
- package/build/dist/Utils/Rum/Masking.js +143 -0
- package/build/dist/Utils/Rum/Masking.js.map +1 -0
- package/build/dist/Utils/Rum/SessionIdentity.js +161 -0
- package/build/dist/Utils/Rum/SessionIdentity.js.map +1 -0
- package/build/dist/Utils/Rum/SessionSampling.js +91 -0
- package/build/dist/Utils/Rum/SessionSampling.js.map +1 -0
- package/build/dist/Utils/Rum/UrlScrubber.js +144 -0
- package/build/dist/Utils/Rum/UrlScrubber.js.map +1 -0
- package/build/dist/Utils/Schema/ModelSchema.js +28 -3
- package/build/dist/Utils/Schema/ModelSchema.js.map +1 -1
- package/build/dist/Utils/StatusPage/Report.js +194 -0
- package/build/dist/Utils/StatusPage/Report.js.map +1 -0
- package/build/dist/Utils/ValueFormatter.js +239 -46
- package/build/dist/Utils/ValueFormatter.js.map +1 -1
- package/jest.config.json +3 -0
- package/package.json +1 -1
- package/tsconfig.json +19 -1
- package/Server/Services/RunbookAgentService.ts +0 -93
- package/build/dist/Models/DatabaseModels/RunbookAgent.js.map +0 -1
- package/build/dist/Models/DatabaseModels/RunbookAgentJob.js.map +0 -1
- package/build/dist/Models/DatabaseModels/RunbookAgentOwnerTeam.js.map +0 -1
- package/build/dist/Models/DatabaseModels/RunbookAgentOwnerUser.js.map +0 -1
- package/build/dist/Server/Services/RunbookAgentJobService.js.map +0 -1
- package/build/dist/Server/Services/RunbookAgentOwnerTeamService.js.map +0 -1
- package/build/dist/Server/Services/RunbookAgentOwnerUserService.js.map +0 -1
- package/build/dist/Server/Services/RunbookAgentService.js +0 -91
- package/build/dist/Server/Services/RunbookAgentService.js.map +0 -1
- package/build/dist/Types/Runbook/RunbookAgentJobStatus.js +0 -22
- package/build/dist/Types/Runbook/RunbookAgentJobStatus.js.map +0 -1
|
@@ -99,9 +99,11 @@ export interface QueuedRunRef {
|
|
|
99
99
|
id: ObjectID;
|
|
100
100
|
projectId: ObjectID;
|
|
101
101
|
attemptCount: number;
|
|
102
|
+
runType?: AIRunType | undefined;
|
|
102
103
|
triggeredByIncidentId?: ObjectID | undefined;
|
|
103
104
|
triggeredByAlertId?: ObjectID | undefined;
|
|
104
105
|
triggeredByAiInsightId?: ObjectID | undefined;
|
|
106
|
+
triggeredByAutoRemediationSuggestionId?: ObjectID | undefined;
|
|
105
107
|
}
|
|
106
108
|
|
|
107
109
|
export default class AIInvestigationQueue {
|
|
@@ -122,6 +124,22 @@ export default class AIInvestigationQueue {
|
|
|
122
124
|
subjectAlertId?: ObjectID | undefined;
|
|
123
125
|
subjectMonitorId?: ObjectID | undefined;
|
|
124
126
|
subjectAIInsightId?: ObjectID | undefined;
|
|
127
|
+
/*
|
|
128
|
+
* When set, the run is a remediation run (not an Investigation): by
|
|
129
|
+
* default a read-only RemediationPlan that picks a runbook for this
|
|
130
|
+
* suggestion, or a RemediationExecution when remediationRunType says so.
|
|
131
|
+
* dispatch() routes on runType FIRST, so the incident/alert subject ids
|
|
132
|
+
* above may still be set for dashboard linkage.
|
|
133
|
+
*/
|
|
134
|
+
subjectAutoRemediationSuggestionId?: ObjectID | undefined;
|
|
135
|
+
/*
|
|
136
|
+
* Only meaningful with subjectAutoRemediationSuggestionId: which kind
|
|
137
|
+
* of remediation run to enqueue. Defaults to RemediationPlan.
|
|
138
|
+
*/
|
|
139
|
+
remediationRunType?:
|
|
140
|
+
| AIRunType.RemediationPlan
|
|
141
|
+
| AIRunType.RemediationExecution
|
|
142
|
+
| undefined;
|
|
125
143
|
}): Promise<ObjectID | null> {
|
|
126
144
|
const { projectId } = data;
|
|
127
145
|
|
|
@@ -147,9 +165,13 @@ export default class AIInvestigationQueue {
|
|
|
147
165
|
return null;
|
|
148
166
|
}
|
|
149
167
|
|
|
168
|
+
const runType: AIRunType = data.subjectAutoRemediationSuggestionId
|
|
169
|
+
? data.remediationRunType || AIRunType.RemediationPlan
|
|
170
|
+
: AIRunType.Investigation;
|
|
171
|
+
|
|
150
172
|
const run: AIRun = new AIRun();
|
|
151
173
|
run.projectId = projectId;
|
|
152
|
-
run.runType =
|
|
174
|
+
run.runType = runType;
|
|
153
175
|
run.status = AIRunStatus.Queued;
|
|
154
176
|
|
|
155
177
|
if (data.subjectIncidentId) {
|
|
@@ -164,6 +186,10 @@ export default class AIInvestigationQueue {
|
|
|
164
186
|
if (data.subjectAIInsightId) {
|
|
165
187
|
run.triggeredByAiInsightId = data.subjectAIInsightId;
|
|
166
188
|
}
|
|
189
|
+
if (data.subjectAutoRemediationSuggestionId) {
|
|
190
|
+
run.triggeredByAutoRemediationSuggestionId =
|
|
191
|
+
data.subjectAutoRemediationSuggestionId;
|
|
192
|
+
}
|
|
167
193
|
|
|
168
194
|
let createdRun: AIRun;
|
|
169
195
|
try {
|
|
@@ -181,9 +207,12 @@ export default class AIInvestigationQueue {
|
|
|
181
207
|
id: createdRun.id!,
|
|
182
208
|
projectId,
|
|
183
209
|
attemptCount: 0,
|
|
210
|
+
runType,
|
|
184
211
|
triggeredByIncidentId: data.subjectIncidentId,
|
|
185
212
|
triggeredByAlertId: data.subjectAlertId,
|
|
186
213
|
triggeredByAiInsightId: data.subjectAIInsightId,
|
|
214
|
+
triggeredByAutoRemediationSuggestionId:
|
|
215
|
+
data.subjectAutoRemediationSuggestionId,
|
|
187
216
|
}).catch((error: Error) => {
|
|
188
217
|
logger.error(
|
|
189
218
|
`AI: inline processing of queued run ${createdRun.id?.toString()} failed: ${error}`,
|
|
@@ -236,18 +265,28 @@ export default class AIInvestigationQueue {
|
|
|
236
265
|
|
|
237
266
|
const expiredRuns: Array<AIRun> = await AIRunService.findBy({
|
|
238
267
|
query: {
|
|
239
|
-
runType:
|
|
268
|
+
runType: QueryHelper.any([
|
|
269
|
+
AIRunType.Investigation,
|
|
270
|
+
AIRunType.RemediationPlan,
|
|
271
|
+
AIRunType.RemediationExecution,
|
|
272
|
+
]),
|
|
240
273
|
status: AIRunStatus.Queued,
|
|
241
274
|
createdAt: QueryHelper.lessThan(expiryThreshold),
|
|
242
275
|
},
|
|
243
|
-
select: {
|
|
276
|
+
select: {
|
|
277
|
+
_id: true,
|
|
278
|
+
projectId: true,
|
|
279
|
+
runType: true,
|
|
280
|
+
triggeredByIncidentId: true,
|
|
281
|
+
triggeredByAlertId: true,
|
|
282
|
+
},
|
|
244
283
|
limit: 100,
|
|
245
284
|
skip: 0,
|
|
246
285
|
props: { isRoot: true },
|
|
247
286
|
});
|
|
248
287
|
|
|
249
288
|
for (const expired of expiredRuns) {
|
|
250
|
-
await AIRunService.attemptStatusTransition({
|
|
289
|
+
const expiredCount: number = await AIRunService.attemptStatusTransition({
|
|
251
290
|
aiRunId: expired.id!,
|
|
252
291
|
fromStatus: AIRunStatus.Queued,
|
|
253
292
|
set: {
|
|
@@ -256,20 +295,42 @@ export default class AIInvestigationQueue {
|
|
|
256
295
|
errorMessage: `Expired in the investigation queue after ${QUEUE_TTL_MINUTES} minutes — a first-pass analysis this late would no longer be useful. The project may have been at its concurrency cap or daily token budget.`,
|
|
257
296
|
},
|
|
258
297
|
});
|
|
298
|
+
|
|
299
|
+
/*
|
|
300
|
+
* An expired incident/alert investigation is terminally settled —
|
|
301
|
+
* release the subject to auto-remediation (RCA-first ordering must
|
|
302
|
+
* not swallow remediation when the RCA never ran). Guarded on the
|
|
303
|
+
* WON transition so a run claimed between the query and this
|
|
304
|
+
* transition is settled by its executor instead.
|
|
305
|
+
*/
|
|
306
|
+
if (expiredCount > 0) {
|
|
307
|
+
await this.handOffSettledInvestigationToRemediation({
|
|
308
|
+
runType: expired.runType,
|
|
309
|
+
projectId: expired.projectId,
|
|
310
|
+
triggeredByIncidentId: expired.triggeredByIncidentId,
|
|
311
|
+
triggeredByAlertId: expired.triggeredByAlertId,
|
|
312
|
+
});
|
|
313
|
+
}
|
|
259
314
|
}
|
|
260
315
|
|
|
261
316
|
const queuedRuns: Array<AIRun> = await AIRunService.findBy({
|
|
262
317
|
query: {
|
|
263
|
-
runType:
|
|
318
|
+
runType: QueryHelper.any([
|
|
319
|
+
AIRunType.Investigation,
|
|
320
|
+
AIRunType.RemediationPlan,
|
|
321
|
+
AIRunType.RemediationExecution,
|
|
322
|
+
]),
|
|
264
323
|
status: AIRunStatus.Queued,
|
|
265
324
|
},
|
|
266
325
|
select: {
|
|
267
326
|
_id: true,
|
|
268
327
|
projectId: true,
|
|
269
328
|
attemptCount: true,
|
|
329
|
+
runType: true,
|
|
270
330
|
triggeredByIncidentId: true,
|
|
271
331
|
triggeredByAlertId: true,
|
|
272
332
|
triggeredByAiInsightId: true,
|
|
333
|
+
triggeredByAutoRemediationSuggestionId: true,
|
|
273
334
|
},
|
|
274
335
|
sort: { createdAt: SortOrder.Ascending },
|
|
275
336
|
limit: POLLER_BATCH_SIZE,
|
|
@@ -282,9 +343,12 @@ export default class AIInvestigationQueue {
|
|
|
282
343
|
id: queued.id!,
|
|
283
344
|
projectId: queued.projectId!,
|
|
284
345
|
attemptCount: queued.attemptCount || 0,
|
|
346
|
+
runType: queued.runType,
|
|
285
347
|
triggeredByIncidentId: queued.triggeredByIncidentId,
|
|
286
348
|
triggeredByAlertId: queued.triggeredByAlertId,
|
|
287
349
|
triggeredByAiInsightId: queued.triggeredByAiInsightId,
|
|
350
|
+
triggeredByAutoRemediationSuggestionId:
|
|
351
|
+
queued.triggeredByAutoRemediationSuggestionId,
|
|
288
352
|
};
|
|
289
353
|
|
|
290
354
|
try {
|
|
@@ -320,6 +384,12 @@ export default class AIInvestigationQueue {
|
|
|
320
384
|
* remain, otherwise mark the run Error. The transition guards on Running
|
|
321
385
|
* so a run that already completed (e.g. only postAnalysis failed) is
|
|
322
386
|
* never clobbered or re-run.
|
|
387
|
+
*
|
|
388
|
+
* Returns what actually happened, so callers can settle post-terminal
|
|
389
|
+
* work (the remediation hand-off) exactly once: "requeued" — a later
|
|
390
|
+
* attempt owns the run now; "finalized" — THIS call moved the run to
|
|
391
|
+
* Error, the run is settled; "noop" — another actor moved the run first
|
|
392
|
+
* (that actor owns settlement).
|
|
323
393
|
*/
|
|
324
394
|
@CaptureSpan()
|
|
325
395
|
public static async failOrRequeue(data: {
|
|
@@ -327,7 +397,7 @@ export default class AIInvestigationQueue {
|
|
|
327
397
|
attemptCount: number;
|
|
328
398
|
errorMessage: string;
|
|
329
399
|
isPermanent: boolean;
|
|
330
|
-
}): Promise<
|
|
400
|
+
}): Promise<"requeued" | "finalized" | "noop"> {
|
|
331
401
|
const truncatedMessage: string = data.errorMessage.substring(0, 400);
|
|
332
402
|
|
|
333
403
|
if (!data.isPermanent && data.attemptCount < MAX_INVESTIGATION_ATTEMPTS) {
|
|
@@ -344,11 +414,12 @@ export default class AIInvestigationQueue {
|
|
|
344
414
|
logger.debug(
|
|
345
415
|
`AI: requeued run ${data.aiRunId.toString()} after attempt ${data.attemptCount} failed.`,
|
|
346
416
|
);
|
|
417
|
+
return "requeued";
|
|
347
418
|
}
|
|
348
|
-
return;
|
|
419
|
+
return "noop";
|
|
349
420
|
}
|
|
350
421
|
|
|
351
|
-
await AIRunService.attemptStatusTransition({
|
|
422
|
+
const finalized: number = await AIRunService.attemptStatusTransition({
|
|
352
423
|
aiRunId: data.aiRunId,
|
|
353
424
|
fromStatus: AIRunStatus.Running,
|
|
354
425
|
set: {
|
|
@@ -357,17 +428,30 @@ export default class AIInvestigationQueue {
|
|
|
357
428
|
errorMessage: truncatedMessage,
|
|
358
429
|
},
|
|
359
430
|
});
|
|
431
|
+
|
|
432
|
+
return finalized > 0 ? "finalized" : "noop";
|
|
360
433
|
}
|
|
361
434
|
|
|
362
435
|
/*
|
|
363
436
|
* Called by the stale-run sweeper for an Investigation run whose
|
|
364
437
|
* heartbeat went silent (the pod running it died). Requeues while
|
|
365
438
|
* attempts remain; otherwise marks it Stale as before.
|
|
439
|
+
*
|
|
440
|
+
* The optional subject fields let the sweeper hand a terminally-staled
|
|
441
|
+
* incident/alert investigation to auto-remediation: remediation is
|
|
442
|
+
* deferred until the investigation settles (RCA-first ordering), so a
|
|
443
|
+
* run that dies without retries left must still release the subject to
|
|
444
|
+
* the rule engine — otherwise a dead investigation would silently
|
|
445
|
+
* swallow remediation for that incident/alert.
|
|
366
446
|
*/
|
|
367
447
|
@CaptureSpan()
|
|
368
448
|
public static async requeueOrMarkStale(run: {
|
|
369
449
|
id: ObjectID;
|
|
370
450
|
attemptCount: number;
|
|
451
|
+
runType?: AIRunType | undefined;
|
|
452
|
+
projectId?: ObjectID | undefined;
|
|
453
|
+
triggeredByIncidentId?: ObjectID | undefined;
|
|
454
|
+
triggeredByAlertId?: ObjectID | undefined;
|
|
371
455
|
}): Promise<"requeued" | "stale"> {
|
|
372
456
|
if ((run.attemptCount || 0) < MAX_INVESTIGATION_ATTEMPTS) {
|
|
373
457
|
const requeued: number = await AIRunService.attemptStatusTransition({
|
|
@@ -384,7 +468,7 @@ export default class AIInvestigationQueue {
|
|
|
384
468
|
}
|
|
385
469
|
}
|
|
386
470
|
|
|
387
|
-
await AIRunService.attemptStatusTransition({
|
|
471
|
+
const staled: number = await AIRunService.attemptStatusTransition({
|
|
388
472
|
aiRunId: run.id,
|
|
389
473
|
fromStatus: AIRunStatus.Running,
|
|
390
474
|
set: {
|
|
@@ -395,9 +479,64 @@ export default class AIInvestigationQueue {
|
|
|
395
479
|
},
|
|
396
480
|
});
|
|
397
481
|
|
|
482
|
+
/*
|
|
483
|
+
* Only the actor that WON the terminal transition may settle — a lost
|
|
484
|
+
* transition means the run moved on and another actor owns settlement.
|
|
485
|
+
*/
|
|
486
|
+
if (staled > 0) {
|
|
487
|
+
await this.handOffSettledInvestigationToRemediation(run);
|
|
488
|
+
}
|
|
489
|
+
|
|
398
490
|
return "stale";
|
|
399
491
|
}
|
|
400
492
|
|
|
493
|
+
/*
|
|
494
|
+
* Release a terminally-settled incident/alert investigation to the
|
|
495
|
+
* auto-remediation rule engine (the RCA-first ordering's terminal
|
|
496
|
+
* fallback for runs that expired or went stale — the happy path hands
|
|
497
|
+
* off from the engine via InvestigationRequest.onSettled). Only fires
|
|
498
|
+
* for Investigation runs with an incident/alert subject; remediation
|
|
499
|
+
* runs and insight triage never hand off. Never throws.
|
|
500
|
+
*/
|
|
501
|
+
private static async handOffSettledInvestigationToRemediation(run: {
|
|
502
|
+
runType?: AIRunType | undefined;
|
|
503
|
+
projectId?: ObjectID | undefined;
|
|
504
|
+
triggeredByIncidentId?: ObjectID | undefined;
|
|
505
|
+
triggeredByAlertId?: ObjectID | undefined;
|
|
506
|
+
}): Promise<void> {
|
|
507
|
+
if (run.runType !== AIRunType.Investigation) {
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
if (
|
|
512
|
+
!run.projectId ||
|
|
513
|
+
(!run.triggeredByIncidentId && !run.triggeredByAlertId)
|
|
514
|
+
) {
|
|
515
|
+
return;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
try {
|
|
519
|
+
/*
|
|
520
|
+
* Lazy require: RemediationHandoff imports the rule engine, which
|
|
521
|
+
* imports this queue — a top-level import here would be circular at
|
|
522
|
+
* module-init time (same pattern as the runner dispatch below).
|
|
523
|
+
*/
|
|
524
|
+
const remediationHandoff: typeof import("./RemediationHandoff").default =
|
|
525
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
526
|
+
require("./RemediationHandoff").default;
|
|
527
|
+
|
|
528
|
+
await remediationHandoff.runForSettledInvestigation({
|
|
529
|
+
projectId: run.projectId,
|
|
530
|
+
incidentId: run.triggeredByIncidentId,
|
|
531
|
+
alertId: run.triggeredByAlertId,
|
|
532
|
+
});
|
|
533
|
+
} catch (error) {
|
|
534
|
+
logger.error(
|
|
535
|
+
`AI: remediation hand-off after a settled investigation failed: ${error}`,
|
|
536
|
+
);
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
|
|
401
540
|
/*
|
|
402
541
|
* The claim-time cost gates: concurrency cap, the preventive-lane sub-cap
|
|
403
542
|
* and the daily budget. A run failing these stays Queued — the poller
|
|
@@ -421,11 +560,20 @@ export default class AIInvestigationQueue {
|
|
|
421
560
|
),
|
|
422
561
|
);
|
|
423
562
|
|
|
563
|
+
/*
|
|
564
|
+
* Investigations, remediation plans and remediation executions share
|
|
565
|
+
* the same per-project cap — all are short and storm-shaped on
|
|
566
|
+
* incident/alert creation, so one pool keeps the cost model simple.
|
|
567
|
+
*/
|
|
424
568
|
const runningCount: number = (
|
|
425
569
|
await AIRunService.countBy({
|
|
426
570
|
query: {
|
|
427
571
|
projectId: run.projectId,
|
|
428
|
-
runType:
|
|
572
|
+
runType: QueryHelper.any([
|
|
573
|
+
AIRunType.Investigation,
|
|
574
|
+
AIRunType.RemediationPlan,
|
|
575
|
+
AIRunType.RemediationExecution,
|
|
576
|
+
]),
|
|
429
577
|
status: AIRunStatus.Running,
|
|
430
578
|
},
|
|
431
579
|
props: { isRoot: true },
|
|
@@ -440,21 +588,33 @@ export default class AIInvestigationQueue {
|
|
|
440
588
|
}
|
|
441
589
|
|
|
442
590
|
/*
|
|
443
|
-
* The
|
|
444
|
-
* slot(s) reserved for incident/alert RCA (see
|
|
445
|
-
* INSIGHT_TRIAGE_RESERVED_SLOTS)
|
|
446
|
-
*
|
|
591
|
+
* The background lane's sub-cap: insight triage AND remediation plans
|
|
592
|
+
* may never occupy the slot(s) reserved for incident/alert RCA (see
|
|
593
|
+
* INSIGHT_TRIAGE_RESERVED_SLOTS) — the RCA is what a paged human is
|
|
594
|
+
* waiting for, and both background kinds are storm-shaped. The two
|
|
595
|
+
* kinds share ONE combined sub-cap, so together they always leave the
|
|
596
|
+
* reserved slot reachable. Floored at 1 so a project running at the
|
|
597
|
+
* minimum cap of 1 still drains its background work (slower, one at a
|
|
447
598
|
* time) instead of deadlocking the lane entirely — the interactive lane
|
|
448
599
|
* keeps its priority through the global cap check above, which a single
|
|
449
|
-
* running
|
|
450
|
-
* short).
|
|
600
|
+
* running background run cannot outlast for long (both kinds are
|
|
601
|
+
* read-only and short).
|
|
451
602
|
*/
|
|
452
|
-
|
|
453
|
-
|
|
603
|
+
const isBackgroundLane: boolean =
|
|
604
|
+
Boolean(run.triggeredByAiInsightId) ||
|
|
605
|
+
run.runType === AIRunType.RemediationPlan ||
|
|
606
|
+
run.runType === AIRunType.RemediationExecution;
|
|
607
|
+
|
|
608
|
+
if (isBackgroundLane) {
|
|
609
|
+
const backgroundCap: number = Math.max(
|
|
454
610
|
1,
|
|
455
611
|
concurrencyCap - INSIGHT_TRIAGE_RESERVED_SLOTS,
|
|
456
612
|
);
|
|
457
613
|
|
|
614
|
+
/*
|
|
615
|
+
* Triage runs are Investigations with an insight subject; plan runs
|
|
616
|
+
* are their own runType — the two counts never overlap.
|
|
617
|
+
*/
|
|
458
618
|
const runningTriageCount: number = (
|
|
459
619
|
await AIRunService.countBy({
|
|
460
620
|
query: {
|
|
@@ -467,9 +627,26 @@ export default class AIInvestigationQueue {
|
|
|
467
627
|
})
|
|
468
628
|
).toNumber();
|
|
469
629
|
|
|
470
|
-
|
|
630
|
+
const runningPlanCount: number = (
|
|
631
|
+
await AIRunService.countBy({
|
|
632
|
+
query: {
|
|
633
|
+
projectId: run.projectId,
|
|
634
|
+
runType: QueryHelper.any([
|
|
635
|
+
AIRunType.RemediationPlan,
|
|
636
|
+
AIRunType.RemediationExecution,
|
|
637
|
+
]),
|
|
638
|
+
status: AIRunStatus.Running,
|
|
639
|
+
},
|
|
640
|
+
props: { isRoot: true },
|
|
641
|
+
})
|
|
642
|
+
).toNumber();
|
|
643
|
+
|
|
644
|
+
const runningBackgroundCount: number =
|
|
645
|
+
runningTriageCount + runningPlanCount;
|
|
646
|
+
|
|
647
|
+
if (runningBackgroundCount >= backgroundCap) {
|
|
471
648
|
logger.debug(
|
|
472
|
-
`AI: leaving
|
|
649
|
+
`AI: leaving background run ${run.id.toString()} queued — ${runningBackgroundCount} background runs (triage + remediation plans) already running (background lane cap: ${backgroundCap} of ${concurrencyCap}).`,
|
|
473
650
|
);
|
|
474
651
|
return false;
|
|
475
652
|
}
|
|
@@ -521,6 +698,68 @@ export default class AIInvestigationQueue {
|
|
|
521
698
|
run: QueuedRunRef,
|
|
522
699
|
attempt: number,
|
|
523
700
|
): Promise<void> {
|
|
701
|
+
/*
|
|
702
|
+
* RemediationPlan runs also carry triggeredByIncidentId/AlertId (for
|
|
703
|
+
* dashboard linkage), so the runType discriminator MUST come before the
|
|
704
|
+
* subject-column routing below — otherwise a plan run would be executed
|
|
705
|
+
* as an RCA investigation.
|
|
706
|
+
*/
|
|
707
|
+
if (run.runType === AIRunType.RemediationPlan) {
|
|
708
|
+
if (!run.triggeredByAutoRemediationSuggestionId) {
|
|
709
|
+
await AIRunService.attemptStatusTransition({
|
|
710
|
+
aiRunId: run.id,
|
|
711
|
+
fromStatus: AIRunStatus.Running,
|
|
712
|
+
set: {
|
|
713
|
+
status: AIRunStatus.Error,
|
|
714
|
+
completedAt: OneUptimeDate.getCurrentDate(),
|
|
715
|
+
errorMessage:
|
|
716
|
+
"Queued remediation plan has no suggestion to plan for.",
|
|
717
|
+
},
|
|
718
|
+
});
|
|
719
|
+
return;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
const remediationPlanRunner: typeof import("../Remediation/RemediationPlanRunner").default =
|
|
723
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
724
|
+
require("../Remediation/RemediationPlanRunner").default;
|
|
725
|
+
|
|
726
|
+
await remediationPlanRunner.executePlan({
|
|
727
|
+
aiRunId: run.id,
|
|
728
|
+
projectId: run.projectId,
|
|
729
|
+
suggestionId: run.triggeredByAutoRemediationSuggestionId,
|
|
730
|
+
attemptCount: attempt,
|
|
731
|
+
});
|
|
732
|
+
return;
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
if (run.runType === AIRunType.RemediationExecution) {
|
|
736
|
+
if (!run.triggeredByAutoRemediationSuggestionId) {
|
|
737
|
+
await AIRunService.attemptStatusTransition({
|
|
738
|
+
aiRunId: run.id,
|
|
739
|
+
fromStatus: AIRunStatus.Running,
|
|
740
|
+
set: {
|
|
741
|
+
status: AIRunStatus.Error,
|
|
742
|
+
completedAt: OneUptimeDate.getCurrentDate(),
|
|
743
|
+
errorMessage:
|
|
744
|
+
"Queued remediation execution has no suggestion to work on.",
|
|
745
|
+
},
|
|
746
|
+
});
|
|
747
|
+
return;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
const remediationExecutionRunner: typeof import("../Remediation/RemediationExecutionRunner").default =
|
|
751
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
752
|
+
require("../Remediation/RemediationExecutionRunner").default;
|
|
753
|
+
|
|
754
|
+
await remediationExecutionRunner.executeRemediation({
|
|
755
|
+
aiRunId: run.id,
|
|
756
|
+
projectId: run.projectId,
|
|
757
|
+
suggestionId: run.triggeredByAutoRemediationSuggestionId,
|
|
758
|
+
attemptCount: attempt,
|
|
759
|
+
});
|
|
760
|
+
return;
|
|
761
|
+
}
|
|
762
|
+
|
|
524
763
|
if (run.triggeredByIncidentId) {
|
|
525
764
|
/*
|
|
526
765
|
* Lazy require: the runners import this queue to enqueue, so a
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import IncidentFeedService from "../../../Services/IncidentFeedService";
|
|
2
|
+
import AlertFeedService from "../../../Services/AlertFeedService";
|
|
3
|
+
import IncidentFeed, {
|
|
4
|
+
IncidentFeedEventType,
|
|
5
|
+
} from "../../../../Models/DatabaseModels/IncidentFeed";
|
|
6
|
+
import AlertFeed, {
|
|
7
|
+
AlertFeedEventType,
|
|
8
|
+
} from "../../../../Models/DatabaseModels/AlertFeed";
|
|
9
|
+
import ObjectID from "../../../../Types/ObjectID";
|
|
10
|
+
import SortOrder from "../../../../Types/BaseDatabase/SortOrder";
|
|
11
|
+
import CaptureSpan from "../../Telemetry/CaptureSpan";
|
|
12
|
+
|
|
13
|
+
/*
|
|
14
|
+
* The analysis an AI investigation posted for a subject.
|
|
15
|
+
*
|
|
16
|
+
* The RootCause feed item is the only persisted copy — the runner's
|
|
17
|
+
* postAnalysis is its sole writer, and the grader, the eval corpus and the
|
|
18
|
+
* fix-from-incident recipe all read it. Anything else that wants the RCA
|
|
19
|
+
* should come through here rather than re-deriving the query, so a change to
|
|
20
|
+
* where the analysis lives moves one place.
|
|
21
|
+
*/
|
|
22
|
+
export default class PostedRootCause {
|
|
23
|
+
@CaptureSpan()
|
|
24
|
+
public static async getForIncident(
|
|
25
|
+
incidentId: ObjectID,
|
|
26
|
+
): Promise<string | null> {
|
|
27
|
+
const feedItem: IncidentFeed | null = await IncidentFeedService.findOneBy({
|
|
28
|
+
query: {
|
|
29
|
+
incidentId: incidentId,
|
|
30
|
+
incidentFeedEventType: IncidentFeedEventType.RootCause,
|
|
31
|
+
},
|
|
32
|
+
select: {
|
|
33
|
+
feedInfoInMarkdown: true,
|
|
34
|
+
},
|
|
35
|
+
sort: {
|
|
36
|
+
createdAt: SortOrder.Descending,
|
|
37
|
+
},
|
|
38
|
+
props: { isRoot: true },
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
const analysis: string = (feedItem?.feedInfoInMarkdown || "").trim();
|
|
42
|
+
|
|
43
|
+
return analysis || null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@CaptureSpan()
|
|
47
|
+
public static async getForAlert(alertId: ObjectID): Promise<string | null> {
|
|
48
|
+
const feedItem: AlertFeed | null = await AlertFeedService.findOneBy({
|
|
49
|
+
query: {
|
|
50
|
+
alertId: alertId,
|
|
51
|
+
alertFeedEventType: AlertFeedEventType.RootCause,
|
|
52
|
+
},
|
|
53
|
+
select: {
|
|
54
|
+
feedInfoInMarkdown: true,
|
|
55
|
+
},
|
|
56
|
+
sort: {
|
|
57
|
+
createdAt: SortOrder.Descending,
|
|
58
|
+
},
|
|
59
|
+
props: { isRoot: true },
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
const analysis: string = (feedItem?.feedInfoInMarkdown || "").trim();
|
|
63
|
+
|
|
64
|
+
return analysis || null;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@CaptureSpan()
|
|
68
|
+
public static async getForSubject(data: {
|
|
69
|
+
incidentId?: ObjectID | undefined;
|
|
70
|
+
alertId?: ObjectID | undefined;
|
|
71
|
+
}): Promise<string | null> {
|
|
72
|
+
if (data.incidentId) {
|
|
73
|
+
return PostedRootCause.getForIncident(data.incidentId);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (data.alertId) {
|
|
77
|
+
return PostedRootCause.getForAlert(data.alertId);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -6,5 +6,6 @@ Wake-on-signal AI SRE: when an incident or alert is created (and the project has
|
|
|
6
6
|
- `IncidentInvestigationRunner.ts` / `AlertInvestigationRunner.ts` — per-subject context assembly + result posting
|
|
7
7
|
- `IncidentPostmortemRunner.ts` — auto-draft postmortem when an incident resolves
|
|
8
8
|
- `AIMemory.ts` — recurrence context from past resolved incidents (retrieval-only v1)
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
- `RemediationHandoff.ts` — the investigation → auto-remediation hand-off (RCA-first ordering). The incident/alert create hooks defer `AutoRemediationRuleEngineService` whenever an investigation was enqueued (the runners' `investigateNew*` return "enqueued"); this module releases the subject to the rule engine when that investigation **settles** — any terminal outcome. Settle-once discipline is inherited from the run-status CAS transitions (the same discipline that keeps `postAnalysis` single-shot): only the actor that WON a terminal transition calls the hand-off. The settle sites: Completed and finalized-Error via `InvestigationRequest.onSettled` / the runners' `failOrRequeue` outcome, queue-TTL expiry and terminal-stale via `InvestigationQueue`'s private hand-off. A failed investigation still hands off — remediation degrades to its pre-RCA behavior, never silently disappears; with no investigation enqueued, the create hook applies rules immediately and this module is never involved.
|
|
10
|
+
- `ConfidenceSignal.ts` — the structured, server-verified confidence signal (deterministic evidence floor + one constrained classification call), with per-consumer fail directions
|
|
11
|
+
- `FixFromIncidentTaskTrigger.ts` — the FixFromIncident recipe's two trigger forms: the human "Open Fix PR from this analysis" button (no opt-in flag — the click is the gate), and the automatic form for projects opted in via `Project.enableAutomaticCodeFixes` (default false). The automatic form fires from the runners' `postAnalysis`, only on `AIConfidenceSignal.shouldAutoEnqueueCodeFixTask` — a POSITIVE confident classification; the evidence floor and a failed classification both fail toward doing nothing. Never throws; pre-checks the daily fix-run budget as a quiet skip; same repo + per-subject dedupe gates as the button; the enqueued run is system-authored (no userId).
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import ObjectID from "../../../../Types/ObjectID";
|
|
2
|
+
import AutoRemediationRuleEngineService from "../../../Services/AutoRemediationRuleEngineService";
|
|
3
|
+
import logger from "../../Logger";
|
|
4
|
+
import CaptureSpan from "../../Telemetry/CaptureSpan";
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* AI SRE — the investigation → remediation hand-off (RCA-first ordering).
|
|
8
|
+
*
|
|
9
|
+
* Auto-remediation used to fire from the incident/alert create hook in
|
|
10
|
+
* PARALLEL with the AI investigation, so the remediation planner usually ran
|
|
11
|
+
* before any root cause analysis existed and could only read the RCA
|
|
12
|
+
* best-effort. Now the create hook DEFERS remediation whenever an
|
|
13
|
+
* investigation was enqueued for the subject, and this module releases the
|
|
14
|
+
* subject to the rule engine only after that investigation SETTLES — so the
|
|
15
|
+
* planner always has the posted RCA (when one was produced) as its input.
|
|
16
|
+
*
|
|
17
|
+
* "Settles" means any terminal outcome, exactly once:
|
|
18
|
+
* - Completed (analysis posted, or nothing worth posting) — via
|
|
19
|
+
* InvestigationRequest.onSettled from AIInvestigationEngine;
|
|
20
|
+
* - Error after retries were exhausted — via the failOrRequeue outcome in
|
|
21
|
+
* the engine/runners;
|
|
22
|
+
* - Cancelled (queue TTL expiry) or Stale (heartbeat death, no retries
|
|
23
|
+
* left) — via AIInvestigationQueue's terminal transitions.
|
|
24
|
+
*
|
|
25
|
+
* Exactly-once is inherited from the run-status CAS transitions: only the
|
|
26
|
+
* actor that WON a terminal transition calls this, the same discipline that
|
|
27
|
+
* keeps postAnalysis from double-posting. A failed investigation still hands
|
|
28
|
+
* off — remediation must degrade to its pre-RCA behavior, never silently
|
|
29
|
+
* disappear because the AI lane broke.
|
|
30
|
+
*
|
|
31
|
+
* When NO investigation is enqueued at creation (opt-out, gates, budget),
|
|
32
|
+
* the create hook applies the rules immediately and this module is never
|
|
33
|
+
* involved — remediation does not depend on the AI lane being enabled.
|
|
34
|
+
*/
|
|
35
|
+
export default class RemediationHandoff {
|
|
36
|
+
/*
|
|
37
|
+
* Release a settled investigation's subject to the auto-remediation rule
|
|
38
|
+
* engine. Exactly one of incidentId/alertId is expected (an investigation
|
|
39
|
+
* has exactly one subject). Never throws — the hand-off runs after
|
|
40
|
+
* terminal run transitions and inside postAnalysis follow-ups, where a
|
|
41
|
+
* failure must be logged, not propagated.
|
|
42
|
+
*/
|
|
43
|
+
@CaptureSpan()
|
|
44
|
+
public static async runForSettledInvestigation(data: {
|
|
45
|
+
projectId: ObjectID;
|
|
46
|
+
incidentId?: ObjectID | undefined;
|
|
47
|
+
alertId?: ObjectID | undefined;
|
|
48
|
+
}): Promise<void> {
|
|
49
|
+
try {
|
|
50
|
+
if (data.incidentId) {
|
|
51
|
+
logger.debug(
|
|
52
|
+
`AI: investigation settled for incident ${data.incidentId.toString()} — handing off to auto-remediation.`,
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
await AutoRemediationRuleEngineService.applyRulesToIncidentById({
|
|
56
|
+
incidentId: data.incidentId,
|
|
57
|
+
projectId: data.projectId,
|
|
58
|
+
});
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (data.alertId) {
|
|
63
|
+
logger.debug(
|
|
64
|
+
`AI: investigation settled for alert ${data.alertId.toString()} — handing off to auto-remediation.`,
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
await AutoRemediationRuleEngineService.applyRulesToAlertById({
|
|
68
|
+
alertId: data.alertId,
|
|
69
|
+
projectId: data.projectId,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
} catch (error) {
|
|
73
|
+
logger.error(
|
|
74
|
+
`AI: remediation hand-off failed for ${
|
|
75
|
+
data.incidentId
|
|
76
|
+
? `incident ${data.incidentId.toString()}`
|
|
77
|
+
: `alert ${data.alertId?.toString()}`
|
|
78
|
+
}: ${error}`,
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import ObjectID from "../../../../Types/ObjectID";
|
|
2
2
|
import AIRunType from "../../../../Types/AI/AIRunType";
|
|
3
|
-
import AIRunStatus
|
|
3
|
+
import AIRunStatus, {
|
|
4
|
+
AIRunStatusHelper,
|
|
5
|
+
} from "../../../../Types/AI/AIRunStatus";
|
|
4
6
|
import CodeFixTaskType from "../../../../Types/AI/CodeFixTaskType";
|
|
5
7
|
import CodeFixTaskContext from "../../../../Types/AI/CodeFixTaskContext";
|
|
6
8
|
import CodeRepositoryType from "../../../../Types/CodeRepository/CodeRepositoryType";
|
|
@@ -65,12 +67,7 @@ export default class SubjectCodeFixRun {
|
|
|
65
67
|
...(data.incidentId
|
|
66
68
|
? { triggeredByIncidentId: data.incidentId }
|
|
67
69
|
: { triggeredByAlertId: data.alertId! }),
|
|
68
|
-
status: QueryHelper.notIn(
|
|
69
|
-
AIRunStatus.Completed,
|
|
70
|
-
AIRunStatus.Error,
|
|
71
|
-
AIRunStatus.Cancelled,
|
|
72
|
-
AIRunStatus.Stale,
|
|
73
|
-
]),
|
|
70
|
+
status: QueryHelper.notIn(AIRunStatusHelper.terminalStatuses()),
|
|
74
71
|
},
|
|
75
72
|
select: { _id: true },
|
|
76
73
|
props: { isRoot: true },
|
|
@@ -96,12 +93,7 @@ export default class SubjectCodeFixRun {
|
|
|
96
93
|
projectId: data.projectId,
|
|
97
94
|
runType: AIRunType.CodeFix,
|
|
98
95
|
codeFixTaskType: CodeFixTaskType.FixPerformance,
|
|
99
|
-
status: QueryHelper.notIn(
|
|
100
|
-
AIRunStatus.Completed,
|
|
101
|
-
AIRunStatus.Error,
|
|
102
|
-
AIRunStatus.Cancelled,
|
|
103
|
-
AIRunStatus.Stale,
|
|
104
|
-
]),
|
|
96
|
+
status: QueryHelper.notIn(AIRunStatusHelper.terminalStatuses()),
|
|
105
97
|
},
|
|
106
98
|
select: { _id: true, taskContext: true },
|
|
107
99
|
limit: LIMIT_PER_PROJECT,
|
|
@@ -135,12 +127,7 @@ export default class SubjectCodeFixRun {
|
|
|
135
127
|
projectId: data.projectId,
|
|
136
128
|
runType: AIRunType.CodeFix,
|
|
137
129
|
codeFixTaskType: data.taskType,
|
|
138
|
-
status: QueryHelper.notIn(
|
|
139
|
-
AIRunStatus.Completed,
|
|
140
|
-
AIRunStatus.Error,
|
|
141
|
-
AIRunStatus.Cancelled,
|
|
142
|
-
AIRunStatus.Stale,
|
|
143
|
-
]),
|
|
130
|
+
status: QueryHelper.notIn(AIRunStatusHelper.terminalStatuses()),
|
|
144
131
|
},
|
|
145
132
|
select: { _id: true, taskContext: true },
|
|
146
133
|
limit: LIMIT_PER_PROJECT,
|