@oneuptime/common 11.7.4 → 12.0.1
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/OnCallDutyPolicyScheduleLayer.ts +12 -2
- 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/LocalMigrationGenerationDataSource.ts +12 -2
- 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/LlmProviderService.ts +69 -9
- 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 +166 -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/Criteria/CompareCriteria.ts +12 -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/RunnerInstallInstructions.test.tsx +119 -0
- package/Tests/App/Dashboard/RunnerStatus.test.tsx +274 -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/LlmProviderUsableByProject.test.ts +293 -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/AI/ToolArgsExtractors.test.ts +141 -0
- package/Tests/Server/Utils/AI/Toolbox/WidgetBuilder.test.ts +205 -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/Criteria/CompareCriteria.test.ts +897 -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/Runner/RunnerLiveStatus.test.ts +320 -0
- package/Tests/Types/Telemetry/TelemetryRetentionConfig.test.ts +225 -0
- package/Tests/Types/Text.test.ts +60 -0
- package/Tests/UI/Components/AiInvestigationSettingsCard.test.tsx +285 -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/Detail/EntityFields.test.tsx +166 -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 +81 -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/Runner/RunnerLiveStatus.ts +114 -0
- 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 +164 -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/OnCallDutyPolicyScheduleLayer.js +16 -4
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLayer.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/LocalMigrationGenerationDataSource.js +11 -1
- package/build/dist/Server/Infrastructure/Postgres/LocalMigrationGenerationDataSource.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/LlmProviderService.js +61 -8
- package/build/dist/Server/Services/LlmProviderService.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 +163 -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/Criteria/CompareCriteria.js +11 -0
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
- 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/Runner/RunnerLiveStatus.js +69 -0
- package/build/dist/Types/Runner/RunnerLiveStatus.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 +100 -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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import DatabaseService from "./DatabaseService";
|
|
2
|
-
import Model from "../../Models/DatabaseModels/
|
|
2
|
+
import Model from "../../Models/DatabaseModels/AutoRemediationRule";
|
|
3
3
|
|
|
4
4
|
export class Service extends DatabaseService<Model> {
|
|
5
5
|
public constructor() {
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import AutoRemediationSuggestionStatus from "../../Types/AutoRemediation/AutoRemediationSuggestionStatus";
|
|
2
|
+
import AutoRemediationVerificationStatus from "../../Types/AutoRemediation/AutoRemediationVerificationStatus";
|
|
3
|
+
import { JSONObject } from "../../Types/JSON";
|
|
4
|
+
import ObjectID from "../../Types/ObjectID";
|
|
5
|
+
import PositiveNumber from "../../Types/PositiveNumber";
|
|
6
|
+
import CountBy from "../Types/Database/CountBy";
|
|
7
|
+
import DeleteBy from "../Types/Database/DeleteBy";
|
|
8
|
+
import FindBy from "../Types/Database/FindBy";
|
|
9
|
+
import { OnDelete, OnFind, OnUpdate } from "../Types/Database/Hooks";
|
|
10
|
+
import UpdateBy from "../Types/Database/UpdateBy";
|
|
11
|
+
import DatabaseService from "./DatabaseService";
|
|
12
|
+
import Model from "../../Models/DatabaseModels/AutoRemediationSuggestion";
|
|
13
|
+
import { applyOptionalAlertRelatedRecordPrivacyFilter } from "../Utils/Alert/AlertPrivacyFilter";
|
|
14
|
+
import { applyOptionalIncidentRelatedRecordPrivacyFilter } from "../Utils/Incident/IncidentPrivacyFilter";
|
|
15
|
+
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
16
|
+
import { UpdateQueryBuilder, UpdateResult } from "typeorm";
|
|
17
|
+
import { QueryDeepPartialEntity } from "typeorm/query-builder/QueryPartialEntity";
|
|
18
|
+
|
|
19
|
+
/*
|
|
20
|
+
* The fields a status transition may set. Primitives only — the query-builder
|
|
21
|
+
* update below bypasses column transformers, so ObjectID-backed columns must
|
|
22
|
+
* be passed as their pre-transformed string form (ObjectID.toString()).
|
|
23
|
+
*/
|
|
24
|
+
export interface SuggestionTransitionSet {
|
|
25
|
+
status: AutoRemediationSuggestionStatus;
|
|
26
|
+
runbookId?: string | undefined;
|
|
27
|
+
runbookNameSnapshot?: string | undefined;
|
|
28
|
+
rationaleMarkdown?: string | undefined;
|
|
29
|
+
runbookExecutionId?: string | undefined;
|
|
30
|
+
approvedByUserId?: string | undefined;
|
|
31
|
+
approvedAt?: Date | undefined;
|
|
32
|
+
dismissedByUserId?: string | undefined;
|
|
33
|
+
dismissedAt?: Date | undefined;
|
|
34
|
+
verificationStatus?: AutoRemediationVerificationStatus | undefined;
|
|
35
|
+
verificationDeadlineAt?: Date | undefined;
|
|
36
|
+
/*
|
|
37
|
+
* The frozen AI-composed command plan (AiRemediationCommandPlan as plain
|
|
38
|
+
* JSON) for CommandPlan suggestions. jsonb column — no transformer, so
|
|
39
|
+
* the query-builder update stores it as-is.
|
|
40
|
+
*/
|
|
41
|
+
commandPlan?: JSONObject | undefined;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// What the outcome verifier may set when a verification concludes.
|
|
45
|
+
export interface VerificationTransitionSet {
|
|
46
|
+
verificationStatus: AutoRemediationVerificationStatus;
|
|
47
|
+
verificationCompletedAt?: Date | undefined;
|
|
48
|
+
verificationNote?: string | undefined;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export class Service extends DatabaseService<Model> {
|
|
52
|
+
public constructor() {
|
|
53
|
+
super(Model);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/*
|
|
57
|
+
* Suggestions are incident/alert child records whose rationale can quote
|
|
58
|
+
* the AI's analysis of the subject — reads must respect the subject's
|
|
59
|
+
* privacy exactly like feed items and internal notes do. Both link
|
|
60
|
+
* columns are nullable (a row links an incident OR an alert), so the
|
|
61
|
+
* null-tolerant filter variants apply: a NULL link passes its own clause
|
|
62
|
+
* and the sibling column's filter does the gating.
|
|
63
|
+
*/
|
|
64
|
+
@CaptureSpan()
|
|
65
|
+
protected override async onBeforeFind(
|
|
66
|
+
findBy: FindBy<Model>,
|
|
67
|
+
): Promise<OnFind<Model>> {
|
|
68
|
+
findBy.query = applyOptionalIncidentRelatedRecordPrivacyFilter(
|
|
69
|
+
findBy.query,
|
|
70
|
+
findBy.props,
|
|
71
|
+
);
|
|
72
|
+
findBy.query = applyOptionalAlertRelatedRecordPrivacyFilter(
|
|
73
|
+
findBy.query,
|
|
74
|
+
findBy.props,
|
|
75
|
+
);
|
|
76
|
+
return { findBy, carryForward: null };
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@CaptureSpan()
|
|
80
|
+
public override async countBy(
|
|
81
|
+
countBy: CountBy<Model>,
|
|
82
|
+
): Promise<PositiveNumber> {
|
|
83
|
+
countBy.query = applyOptionalIncidentRelatedRecordPrivacyFilter(
|
|
84
|
+
countBy.query,
|
|
85
|
+
countBy.props,
|
|
86
|
+
);
|
|
87
|
+
countBy.query = applyOptionalAlertRelatedRecordPrivacyFilter(
|
|
88
|
+
countBy.query,
|
|
89
|
+
countBy.props,
|
|
90
|
+
);
|
|
91
|
+
return super.countBy(countBy);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@CaptureSpan()
|
|
95
|
+
protected override async onBeforeUpdate(
|
|
96
|
+
updateBy: UpdateBy<Model>,
|
|
97
|
+
): Promise<OnUpdate<Model>> {
|
|
98
|
+
updateBy.query = applyOptionalIncidentRelatedRecordPrivacyFilter(
|
|
99
|
+
updateBy.query,
|
|
100
|
+
updateBy.props,
|
|
101
|
+
);
|
|
102
|
+
updateBy.query = applyOptionalAlertRelatedRecordPrivacyFilter(
|
|
103
|
+
updateBy.query,
|
|
104
|
+
updateBy.props,
|
|
105
|
+
);
|
|
106
|
+
return { updateBy, carryForward: null };
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
@CaptureSpan()
|
|
110
|
+
protected override async onBeforeDelete(
|
|
111
|
+
deleteBy: DeleteBy<Model>,
|
|
112
|
+
): Promise<OnDelete<Model>> {
|
|
113
|
+
deleteBy.query = applyOptionalIncidentRelatedRecordPrivacyFilter(
|
|
114
|
+
deleteBy.query,
|
|
115
|
+
deleteBy.props,
|
|
116
|
+
);
|
|
117
|
+
deleteBy.query = applyOptionalAlertRelatedRecordPrivacyFilter(
|
|
118
|
+
deleteBy.query,
|
|
119
|
+
deleteBy.props,
|
|
120
|
+
);
|
|
121
|
+
return { deleteBy, carryForward: null };
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/*
|
|
125
|
+
* A genuinely atomic status transition: one conditional UPDATE whose WHERE
|
|
126
|
+
* carries the expected current status. Returns the number of rows changed —
|
|
127
|
+
* 0 means another actor won the race. This is what makes double-approving
|
|
128
|
+
* (and therefore double-starting a runbook) impossible; updateOneBy is
|
|
129
|
+
* SELECT-then-save and cannot implement a claim.
|
|
130
|
+
*/
|
|
131
|
+
@CaptureSpan()
|
|
132
|
+
public async attemptStatusTransition(data: {
|
|
133
|
+
suggestionId: ObjectID;
|
|
134
|
+
fromStatus: AutoRemediationSuggestionStatus;
|
|
135
|
+
set: SuggestionTransitionSet;
|
|
136
|
+
}): Promise<number> {
|
|
137
|
+
/*
|
|
138
|
+
* The double cast stops TS from structurally exploring JSONObject
|
|
139
|
+
* (commandPlan) against the entity type — a recursive type that trips
|
|
140
|
+
* TS2589. The set is intentionally a raw column map.
|
|
141
|
+
*/
|
|
142
|
+
const queryBuilder: UpdateQueryBuilder<Model> = this.getRepository()
|
|
143
|
+
.createQueryBuilder()
|
|
144
|
+
.update(Model)
|
|
145
|
+
.set(data.set as unknown as QueryDeepPartialEntity<Model>)
|
|
146
|
+
.where('"_id" = :id', { id: data.suggestionId.toString() })
|
|
147
|
+
.andWhere('"status" = :fromStatus', { fromStatus: data.fromStatus })
|
|
148
|
+
.andWhere('"deletedAt" IS NULL');
|
|
149
|
+
|
|
150
|
+
const result: UpdateResult = await queryBuilder.execute();
|
|
151
|
+
|
|
152
|
+
return result.affected || 0;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/*
|
|
156
|
+
* The verification twin of attemptStatusTransition: one conditional
|
|
157
|
+
* UPDATE guarded on the expected current verificationStatus, so
|
|
158
|
+
* concurrent verifier sweeps (multiple Workers replicas) settle each
|
|
159
|
+
* verification exactly once.
|
|
160
|
+
*/
|
|
161
|
+
@CaptureSpan()
|
|
162
|
+
public async attemptVerificationTransition(data: {
|
|
163
|
+
suggestionId: ObjectID;
|
|
164
|
+
fromVerificationStatus: AutoRemediationVerificationStatus;
|
|
165
|
+
set: VerificationTransitionSet;
|
|
166
|
+
}): Promise<number> {
|
|
167
|
+
const queryBuilder: UpdateQueryBuilder<Model> = this.getRepository()
|
|
168
|
+
.createQueryBuilder()
|
|
169
|
+
.update(Model)
|
|
170
|
+
.set(data.set as QueryDeepPartialEntity<Model>)
|
|
171
|
+
.where('"_id" = :id', { id: data.suggestionId.toString() })
|
|
172
|
+
.andWhere('"verificationStatus" = :fromVerificationStatus', {
|
|
173
|
+
fromVerificationStatus: data.fromVerificationStatus,
|
|
174
|
+
})
|
|
175
|
+
.andWhere('"deletedAt" IS NULL');
|
|
176
|
+
|
|
177
|
+
const result: UpdateResult = await queryBuilder.execute();
|
|
178
|
+
|
|
179
|
+
return result.affected || 0;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export default new Service();
|
|
@@ -261,12 +261,23 @@ export class BillingService extends BaseService {
|
|
|
261
261
|
meteredSubscriptionId: string;
|
|
262
262
|
trialEndsAt: Date | null;
|
|
263
263
|
}> {
|
|
264
|
+
/*
|
|
265
|
+
* Only plans with a Stripe price can become subscription items. A plan
|
|
266
|
+
* without one yet would make getPriceId throw and abort project
|
|
267
|
+
* creation, so we skip them here - their usage still stages
|
|
268
|
+
* into TelemetryUsageBilling and is pushed once the price ids exist.
|
|
269
|
+
*/
|
|
270
|
+
const priceableMeteredPlans: Array<ServerMeteredPlan> =
|
|
271
|
+
data.serverMeteredPlans.filter((plan: ServerMeteredPlan) => {
|
|
272
|
+
return plan.hasPriceId();
|
|
273
|
+
});
|
|
274
|
+
|
|
264
275
|
const meteredPlanSubscriptionParams: Stripe.SubscriptionCreateParams = {
|
|
265
276
|
customer: data.customerId,
|
|
266
277
|
|
|
267
278
|
proration_behavior: "always_invoice",
|
|
268
279
|
|
|
269
|
-
items:
|
|
280
|
+
items: priceableMeteredPlans.map((item: ServerMeteredPlan) => {
|
|
270
281
|
return {
|
|
271
282
|
price: item.getPriceId(),
|
|
272
283
|
};
|
|
@@ -456,6 +467,16 @@ export class BillingService extends BaseService {
|
|
|
456
467
|
throw new BadDataException(Errors.BillingService.BILLING_NOT_ENABLED);
|
|
457
468
|
}
|
|
458
469
|
|
|
470
|
+
/*
|
|
471
|
+
* A plan without a Stripe price yet cannot be pushed
|
|
472
|
+
* to a subscription - getPriceId would throw. Usage has already been staged
|
|
473
|
+
* into TelemetryUsageBilling by the caller, so skipping here loses nothing;
|
|
474
|
+
* the push happens once the price ids are created.
|
|
475
|
+
*/
|
|
476
|
+
if (!serverMeteredPlan.hasPriceId()) {
|
|
477
|
+
return;
|
|
478
|
+
}
|
|
479
|
+
|
|
459
480
|
// get subscription.
|
|
460
481
|
const subscription: Stripe.Subscription = await this.getSubscription(
|
|
461
482
|
subscriptionId.toString(),
|
|
@@ -1496,11 +1517,39 @@ export class BillingService extends BaseService {
|
|
|
1496
1517
|
return "price_1TGwTDANuQdJ93r7s0jKRxaT";
|
|
1497
1518
|
}
|
|
1498
1519
|
|
|
1520
|
+
if (productType === ProductType.SessionReplay) {
|
|
1521
|
+
if (this.isTestEnvironment()) {
|
|
1522
|
+
return "price_1U0icaANuQdJ93r7yE4a6icc";
|
|
1523
|
+
}
|
|
1524
|
+
|
|
1525
|
+
return "price_1U0iWJANuQdJ93r7iVAXwhdP";
|
|
1526
|
+
}
|
|
1527
|
+
|
|
1499
1528
|
throw new BadDataException(
|
|
1500
1529
|
"Plan with productType " + productType + " not found",
|
|
1501
1530
|
);
|
|
1502
1531
|
}
|
|
1503
1532
|
|
|
1533
|
+
/*
|
|
1534
|
+
* Whether a Stripe metered price exists for this product type yet.
|
|
1535
|
+
*
|
|
1536
|
+
* getMeteredPlanPriceId throws for product types whose Stripe prices have
|
|
1537
|
+
* not been created and for unknown types. Every product type is priced
|
|
1538
|
+
* today, so this only guards the next one added ahead of its Stripe price.
|
|
1539
|
+
* Callers that build Stripe subscription items must skip those plans instead of
|
|
1540
|
+
* letting the throw abort the whole operation - a metered plan without a
|
|
1541
|
+
* price still stages usage into TelemetryUsageBilling, only the push to
|
|
1542
|
+
* Stripe waits on the price ids. This is the single, side-effect-free way to
|
|
1543
|
+
* ask, so we keep getMeteredPlanPriceId as the single source of truth.
|
|
1544
|
+
*/
|
|
1545
|
+
public hasMeteredPlanPriceId(productType: ProductType): boolean {
|
|
1546
|
+
try {
|
|
1547
|
+
return Boolean(this.getMeteredPlanPriceId(productType));
|
|
1548
|
+
} catch {
|
|
1549
|
+
return false;
|
|
1550
|
+
}
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1504
1553
|
@CaptureSpan()
|
|
1505
1554
|
public verifyWebhookSignature(
|
|
1506
1555
|
payload: string | Buffer,
|
|
@@ -68,6 +68,7 @@ import {
|
|
|
68
68
|
EntityManager,
|
|
69
69
|
Repository,
|
|
70
70
|
SelectQueryBuilder,
|
|
71
|
+
UpdateResult,
|
|
71
72
|
} from "typeorm";
|
|
72
73
|
import { ColumnMetadata } from "typeorm/metadata/ColumnMetadata";
|
|
73
74
|
import { EntityMetadata } from "typeorm/metadata/EntityMetadata";
|
|
@@ -1950,6 +1951,49 @@ class DatabaseService<TBaseModel extends BaseModel> extends BaseService {
|
|
|
1950
1951
|
})
|
|
1951
1952
|
: [];
|
|
1952
1953
|
|
|
1954
|
+
/*
|
|
1955
|
+
* save() has upsert semantics: if the located row is hard-deleted by a
|
|
1956
|
+
* concurrent request between the _findBy above and the write below,
|
|
1957
|
+
* save() INSERTs a resurrected "zombie" row carrying only the update's
|
|
1958
|
+
* columns. Zombies with enough NOT NULL columns persist and then hold
|
|
1959
|
+
* foreign keys forever (e.g. a probe status-update racing a monitor
|
|
1960
|
+
* delete resurrected the Monitor and permanently blocked deleting the
|
|
1961
|
+
* MonitorStatus it referenced). Updates therefore go through
|
|
1962
|
+
* repository.update(), which never inserts and simply affects zero
|
|
1963
|
+
* rows when the target is gone.
|
|
1964
|
+
*
|
|
1965
|
+
* Only EntityArray (many-to-many) columns still need save(), because
|
|
1966
|
+
* their junction rows cannot be written by a plain UPDATE. Entity
|
|
1967
|
+
* (many-to-one) columns must NOT route to save(): they are ordinary
|
|
1968
|
+
* foreign-key columns on this same table, and TypeORM's update()
|
|
1969
|
+
* resolves a relation property to its join columns
|
|
1970
|
+
* (EntityMetadata.findColumnsWithPropertyPath). Routing them to save()
|
|
1971
|
+
* left the resurrection hole open for any caller that expressed the
|
|
1972
|
+
* write as the relation member rather than the scalar id — e.g.
|
|
1973
|
+
* Monitor.currentMonitorStatus vs Monitor.currentMonitorStatusId,
|
|
1974
|
+
* which are two decorated members over the SAME physical column.
|
|
1975
|
+
*/
|
|
1976
|
+
const relationColumnNames: Set<string> = new Set<string>(
|
|
1977
|
+
this.getModel()
|
|
1978
|
+
.getTableColumns()
|
|
1979
|
+
.columns.filter((column: string) => {
|
|
1980
|
+
const metadata: TableColumnMetadata | undefined =
|
|
1981
|
+
this.getModel().getTableColumnMetadata(column);
|
|
1982
|
+
return metadata?.type === TableColumnType.EntityArray;
|
|
1983
|
+
}),
|
|
1984
|
+
);
|
|
1985
|
+
const hasRelationUpdates: boolean = dataKeys.some((key: string) => {
|
|
1986
|
+
return relationColumnNames.has(key);
|
|
1987
|
+
});
|
|
1988
|
+
|
|
1989
|
+
/*
|
|
1990
|
+
* Rows the write actually touched. A row hard-deleted between the find
|
|
1991
|
+
* above and the write is reported by update() as zero rows affected;
|
|
1992
|
+
* it must not fire success hooks (they re-read the row and would
|
|
1993
|
+
* dereference null) nor be counted as updated.
|
|
1994
|
+
*/
|
|
1995
|
+
const affectedItems: Array<TBaseModel> = [];
|
|
1996
|
+
|
|
1953
1997
|
for (const item of items) {
|
|
1954
1998
|
/*
|
|
1955
1999
|
* _id must be set AFTER the spread: update data can carry an
|
|
@@ -1971,7 +2015,37 @@ class DatabaseService<TBaseModel extends BaseModel> extends BaseService {
|
|
|
1971
2015
|
projectId: updateBy.props.tenantId?.toString(),
|
|
1972
2016
|
} as LogAttributes);
|
|
1973
2017
|
|
|
1974
|
-
|
|
2018
|
+
if (hasRelationUpdates) {
|
|
2019
|
+
await this.getRepository().save(updatedItem);
|
|
2020
|
+
} else {
|
|
2021
|
+
const { _id, ...updateData } = updatedItem;
|
|
2022
|
+
const updateResult: UpdateResult = await this.getRepository().update(
|
|
2023
|
+
{ _id: _id } as any,
|
|
2024
|
+
{
|
|
2025
|
+
...updateData,
|
|
2026
|
+
/*
|
|
2027
|
+
* save() bumps the @VersionColumn automatically; update() does
|
|
2028
|
+
* not, so emulate it to keep the audit counter behaviour
|
|
2029
|
+
* identical.
|
|
2030
|
+
*/
|
|
2031
|
+
version: () => {
|
|
2032
|
+
return '"version" + 1';
|
|
2033
|
+
},
|
|
2034
|
+
} as any,
|
|
2035
|
+
);
|
|
2036
|
+
|
|
2037
|
+
/*
|
|
2038
|
+
* The row was hard-deleted between the find above and this write.
|
|
2039
|
+
* Nothing was updated, so skip the success hooks for it: they
|
|
2040
|
+
* re-read the row and would dereference null (and would report a
|
|
2041
|
+
* change that never happened).
|
|
2042
|
+
*/
|
|
2043
|
+
if (updateResult.affected === 0) {
|
|
2044
|
+
continue;
|
|
2045
|
+
}
|
|
2046
|
+
}
|
|
2047
|
+
|
|
2048
|
+
affectedItems.push(item);
|
|
1975
2049
|
|
|
1976
2050
|
// hit workflow.
|
|
1977
2051
|
if (
|
|
@@ -2033,16 +2107,22 @@ class DatabaseService<TBaseModel extends BaseModel> extends BaseService {
|
|
|
2033
2107
|
* ).affected || 0;
|
|
2034
2108
|
*/
|
|
2035
2109
|
|
|
2110
|
+
/*
|
|
2111
|
+
* onUpdateSuccess always fires — subclasses rely on it being called
|
|
2112
|
+
* even when nothing matched — but it is handed only the rows the write
|
|
2113
|
+
* actually affected, so a row deleted mid-update never appears as a
|
|
2114
|
+
* phantom id that hooks would then fail to re-read.
|
|
2115
|
+
*/
|
|
2036
2116
|
if (!updateBy.props.ignoreHooks) {
|
|
2037
2117
|
await this.onUpdateSuccess(
|
|
2038
2118
|
{ updateBy, carryForward },
|
|
2039
|
-
|
|
2119
|
+
affectedItems.map((i: TBaseModel) => {
|
|
2040
2120
|
return new ObjectID(i._id!);
|
|
2041
2121
|
}),
|
|
2042
2122
|
);
|
|
2043
2123
|
}
|
|
2044
2124
|
|
|
2045
|
-
return
|
|
2125
|
+
return affectedItems.length;
|
|
2046
2126
|
} catch (error) {
|
|
2047
2127
|
await this.onUpdateError(error as Exception);
|
|
2048
2128
|
throw this.getException(error as Exception);
|
|
@@ -2173,6 +2253,14 @@ class DatabaseService<TBaseModel extends BaseModel> extends BaseService {
|
|
|
2173
2253
|
public async updateColumnsByIdWithoutHooks(input: {
|
|
2174
2254
|
id: ObjectID;
|
|
2175
2255
|
data: PartialEntity<TBaseModel>;
|
|
2256
|
+
/*
|
|
2257
|
+
* Leave `updatedAt` untouched. For passive bookkeeping writes (liveness
|
|
2258
|
+
* timestamps, ingest health markers) where consumers key change
|
|
2259
|
+
* detection off updatedAt - e.g. the session replay configEpoch - a
|
|
2260
|
+
* refreshed updateDate would broadcast "configuration changed" on every
|
|
2261
|
+
* heartbeat.
|
|
2262
|
+
*/
|
|
2263
|
+
skipUpdateDateColumn?: boolean;
|
|
2176
2264
|
}): Promise<void> {
|
|
2177
2265
|
if (!input.id) {
|
|
2178
2266
|
throw new BadDataException("id is required");
|
|
@@ -2222,7 +2310,7 @@ class DatabaseService<TBaseModel extends BaseModel> extends BaseService {
|
|
|
2222
2310
|
}
|
|
2223
2311
|
|
|
2224
2312
|
// The raw path has no entity machinery to touch updateDate — do it here.
|
|
2225
|
-
if (metadata.updateDateColumn) {
|
|
2313
|
+
if (metadata.updateDateColumn && !input.skipUpdateDateColumn) {
|
|
2226
2314
|
setClauses.push(
|
|
2227
2315
|
`"${metadata.updateDateColumn.databaseName}" = CURRENT_TIMESTAMP`,
|
|
2228
2316
|
);
|
|
@@ -71,6 +71,7 @@ import IncidentOnCallRuleEngineService from "./IncidentOnCallRuleEngineService";
|
|
|
71
71
|
import IncidentOwnerRuleEngineService from "./IncidentOwnerRuleEngineService";
|
|
72
72
|
import IncidentPrivacyRuleEngineService from "./IncidentPrivacyRuleEngineService";
|
|
73
73
|
import RunbookRuleEngineService from "./RunbookRuleEngineService";
|
|
74
|
+
import AutoRemediationRuleEngineService from "./AutoRemediationRuleEngineService";
|
|
74
75
|
import { Blue500, Gray500, Red500 } from "../../Types/BrandColors";
|
|
75
76
|
import Label from "../../Models/DatabaseModels/Label";
|
|
76
77
|
import LabelService from "./LabelService";
|
|
@@ -1081,6 +1082,14 @@ export class Service extends DatabaseService<Model> {
|
|
|
1081
1082
|
throw new BadDataException("Incident not found");
|
|
1082
1083
|
}
|
|
1083
1084
|
|
|
1085
|
+
/*
|
|
1086
|
+
* Whether an AI investigation run was enqueued for this incident — set
|
|
1087
|
+
* by the investigation step below and read by the auto-remediation step
|
|
1088
|
+
* after it: an enqueued investigation DEFERS remediation until the run
|
|
1089
|
+
* settles (RCA-first ordering, see RemediationHandoff).
|
|
1090
|
+
*/
|
|
1091
|
+
let aiInvestigationEnqueued: boolean = false;
|
|
1092
|
+
|
|
1084
1093
|
// Execute operations sequentially with error handling
|
|
1085
1094
|
Promise.resolve()
|
|
1086
1095
|
.then(async () => {
|
|
@@ -1383,10 +1392,11 @@ export class Service extends DatabaseService<Model> {
|
|
|
1383
1392
|
*/
|
|
1384
1393
|
try {
|
|
1385
1394
|
if (createdItem.projectId && createdItem.id) {
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1395
|
+
aiInvestigationEnqueued =
|
|
1396
|
+
await AIIncidentInvestigationRunner.investigateNewIncident({
|
|
1397
|
+
incidentId: createdItem.id,
|
|
1398
|
+
projectId: createdItem.projectId,
|
|
1399
|
+
});
|
|
1390
1400
|
}
|
|
1391
1401
|
} catch (error) {
|
|
1392
1402
|
logger.error(
|
|
@@ -1398,6 +1408,33 @@ export class Service extends DatabaseService<Model> {
|
|
|
1398
1408
|
);
|
|
1399
1409
|
}
|
|
1400
1410
|
})
|
|
1411
|
+
.then(async () => {
|
|
1412
|
+
/*
|
|
1413
|
+
* Auto-remediation runs LAST — and only when NO AI investigation
|
|
1414
|
+
* was enqueued above. RCA-first ordering: when an investigation is
|
|
1415
|
+
* in flight, remediation is deferred until that run settles
|
|
1416
|
+
* (RemediationHandoff releases it on any terminal outcome), so the
|
|
1417
|
+
* remediation planner always has the posted root cause analysis as
|
|
1418
|
+
* input instead of racing it. Without an investigation (opt-out,
|
|
1419
|
+
* gates, budget) remediation fires here immediately — it must
|
|
1420
|
+
* never silently depend on the AI lane being enabled.
|
|
1421
|
+
*/
|
|
1422
|
+
try {
|
|
1423
|
+
if (!aiInvestigationEnqueued) {
|
|
1424
|
+
await AutoRemediationRuleEngineService.applyRulesToIncident(
|
|
1425
|
+
createdItem,
|
|
1426
|
+
);
|
|
1427
|
+
}
|
|
1428
|
+
} catch (error) {
|
|
1429
|
+
logger.error(
|
|
1430
|
+
`Apply auto-remediation rules failed in IncidentService.onCreateSuccess: ${error}`,
|
|
1431
|
+
{
|
|
1432
|
+
projectId: createdItem.projectId?.toString(),
|
|
1433
|
+
incidentId: createdItem.id?.toString(),
|
|
1434
|
+
} as LogAttributes,
|
|
1435
|
+
);
|
|
1436
|
+
}
|
|
1437
|
+
})
|
|
1401
1438
|
.catch((error: Error) => {
|
|
1402
1439
|
logger.error(
|
|
1403
1440
|
`Critical error in IncidentService sequential operations: ${error}`,
|
|
@@ -2643,12 +2680,27 @@ ${incidentSeverity.name}
|
|
|
2643
2680
|
|
|
2644
2681
|
if (monitors.length > 0) {
|
|
2645
2682
|
// get resolved monitor state.
|
|
2683
|
+
/*
|
|
2684
|
+
* Resolve monitors back to the project's operational status. A project
|
|
2685
|
+
* can hold more than one operational state, so this lookup MUST be
|
|
2686
|
+
* deterministic: without an explicit sort findOneBy falls back to
|
|
2687
|
+
* `createdAt DESC` and would resolve monitors into whichever operational
|
|
2688
|
+
* status was created most recently (e.g. a user- or fixture-added one)
|
|
2689
|
+
* rather than the seeded default. Order by priority ascending (the
|
|
2690
|
+
* seeded default operational status is priority 0), tie-broken by the
|
|
2691
|
+
* oldest row, matching MonitorService.onBeforeCreate so a monitor's
|
|
2692
|
+
* operational status is the same canonical one throughout its lifecycle.
|
|
2693
|
+
*/
|
|
2646
2694
|
const resolvedMonitorState: MonitorStatus | null =
|
|
2647
2695
|
await MonitorStatusService.findOneBy({
|
|
2648
2696
|
query: {
|
|
2649
2697
|
projectId: projectId!,
|
|
2650
2698
|
isOperationalState: true,
|
|
2651
2699
|
},
|
|
2700
|
+
sort: {
|
|
2701
|
+
priority: SortOrder.Ascending,
|
|
2702
|
+
createdAt: SortOrder.Ascending,
|
|
2703
|
+
},
|
|
2652
2704
|
props: {
|
|
2653
2705
|
isRoot: true,
|
|
2654
2706
|
},
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import logger from "../Utils/Logger";
|
|
1
2
|
import CreateBy from "../Types/Database/CreateBy";
|
|
2
3
|
import DeleteBy from "../Types/Database/DeleteBy";
|
|
3
4
|
import { OnCreate, OnDelete, OnUpdate } from "../Types/Database/Hooks";
|
|
@@ -145,17 +146,30 @@ export class Service extends DatabaseService<Model> {
|
|
|
145
146
|
newOrder = incidentSeverity.order! - 1;
|
|
146
147
|
}
|
|
147
148
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
149
|
+
/*
|
|
150
|
+
* Concurrent deletes (e.g. Terraform destroying several items in
|
|
151
|
+
* parallel) can soft-delete a row between the findBy above and
|
|
152
|
+
* this update; save() would then INSERT with a null projectId and
|
|
153
|
+
* fail the whole delete with a 500. A row that vanished
|
|
154
|
+
* mid-rearrange needs no repositioning - skip it.
|
|
155
|
+
*/
|
|
156
|
+
try {
|
|
157
|
+
await this.updateOneBy({
|
|
158
|
+
query: {
|
|
159
|
+
_id: incidentSeverity._id!,
|
|
160
|
+
},
|
|
161
|
+
data: {
|
|
162
|
+
order: newOrder,
|
|
163
|
+
},
|
|
164
|
+
props: {
|
|
165
|
+
isRoot: true,
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
} catch (err) {
|
|
169
|
+
logger.warn(
|
|
170
|
+
`rearrange: skipping row (likely deleted concurrently): ${err}`,
|
|
171
|
+
);
|
|
172
|
+
}
|
|
159
173
|
}
|
|
160
174
|
}
|
|
161
175
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import logger from "../Utils/Logger";
|
|
1
2
|
import CreateBy from "../Types/Database/CreateBy";
|
|
2
3
|
import DeleteBy from "../Types/Database/DeleteBy";
|
|
3
4
|
import { OnCreate, OnDelete, OnUpdate } from "../Types/Database/Hooks";
|
|
@@ -143,17 +144,30 @@ export class Service extends DatabaseService<IncidentState> {
|
|
|
143
144
|
newOrder = incidentState.order! - 1;
|
|
144
145
|
}
|
|
145
146
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
147
|
+
/*
|
|
148
|
+
* Concurrent deletes (e.g. Terraform destroying several items in
|
|
149
|
+
* parallel) can soft-delete a row between the findBy above and
|
|
150
|
+
* this update; save() would then INSERT with a null projectId and
|
|
151
|
+
* fail the whole delete with a 500. A row that vanished
|
|
152
|
+
* mid-rearrange needs no repositioning - skip it.
|
|
153
|
+
*/
|
|
154
|
+
try {
|
|
155
|
+
await this.updateOneBy({
|
|
156
|
+
query: {
|
|
157
|
+
_id: incidentState._id!,
|
|
158
|
+
},
|
|
159
|
+
data: {
|
|
160
|
+
order: newOrder,
|
|
161
|
+
},
|
|
162
|
+
props: {
|
|
163
|
+
isRoot: true,
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
} catch (err) {
|
|
167
|
+
logger.warn(
|
|
168
|
+
`rearrange: skipping row (likely deleted concurrently): ${err}`,
|
|
169
|
+
);
|
|
170
|
+
}
|
|
157
171
|
}
|
|
158
172
|
}
|
|
159
173
|
|
package/Server/Services/Index.ts
CHANGED
|
@@ -90,6 +90,7 @@ import MonitorOwnerTeamService from "./MonitorOwnerTeamService";
|
|
|
90
90
|
import MonitorOwnerUserService from "./MonitorOwnerUserService";
|
|
91
91
|
import MonitorProbeService from "./MonitorProbeService";
|
|
92
92
|
import MonitorSecretService from "./MonitorSecretService";
|
|
93
|
+
import RunbookCredentialService from "./RunbookCredentialService";
|
|
93
94
|
import RunbookSecretService from "./RunbookSecretService";
|
|
94
95
|
import AIInsightService from "./AIInsightService";
|
|
95
96
|
|
|
@@ -121,6 +122,11 @@ import ProjectService from "./ProjectService";
|
|
|
121
122
|
import ProjectUserProfileService from "./ProjectUserProfileService";
|
|
122
123
|
import ProfileService from "./ProfileService";
|
|
123
124
|
import ProfileSampleService from "./ProfileSampleService";
|
|
125
|
+
import RumSessionService from "./RumSessionService";
|
|
126
|
+
import RumSessionChunkService from "./RumSessionChunkService";
|
|
127
|
+
import RumSessionReplayViewService from "./RumSessionReplayViewService";
|
|
128
|
+
import RumSessionErasureRequestService from "./RumSessionErasureRequestService";
|
|
129
|
+
import RumSessionPinService from "./RumSessionPinService";
|
|
124
130
|
// Project SMTP Config.
|
|
125
131
|
import ProjectSmtpConfigService from "./ProjectSmtpConfigService";
|
|
126
132
|
import ProjectSsoService from "./ProjectSsoService";
|
|
@@ -372,6 +378,7 @@ const services: Array<BaseService> = [
|
|
|
372
378
|
MonitorStatusService,
|
|
373
379
|
MonitorStatusTimelineService,
|
|
374
380
|
MonitorSecretService,
|
|
381
|
+
RunbookCredentialService,
|
|
375
382
|
RunbookSecretService,
|
|
376
383
|
AIInsightService,
|
|
377
384
|
MonitorFeedService,
|
|
@@ -546,6 +553,11 @@ const services: Array<BaseService> = [
|
|
|
546
553
|
|
|
547
554
|
ProjectSCIMLogService,
|
|
548
555
|
StatusPageSCIMLogService,
|
|
556
|
+
|
|
557
|
+
// Session replay control tables (the recordings themselves are in ClickHouse).
|
|
558
|
+
RumSessionReplayViewService,
|
|
559
|
+
RumSessionErasureRequestService,
|
|
560
|
+
RumSessionPinService,
|
|
549
561
|
];
|
|
550
562
|
|
|
551
563
|
export const AnalyticsServices: Array<
|
|
@@ -573,6 +585,13 @@ export const AnalyticsServices: Array<
|
|
|
573
585
|
NetworkFlowService,
|
|
574
586
|
ProfileService,
|
|
575
587
|
ProfileSampleService,
|
|
588
|
+
/*
|
|
589
|
+
* Session replay. THIS is the array boot-time createTables() iterates —
|
|
590
|
+
* omitting it here means the tables are silently never created, however
|
|
591
|
+
* correctly the models are registered elsewhere.
|
|
592
|
+
*/
|
|
593
|
+
RumSessionService,
|
|
594
|
+
RumSessionChunkService,
|
|
576
595
|
AuditLogService,
|
|
577
596
|
];
|
|
578
597
|
|