@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
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Right-sizing recommendations for Kubernetes workloads.
|
|
3
|
+
*
|
|
4
|
+
* Pure math over aggregates the cost pipeline already stores, kept out of
|
|
5
|
+
* the dashboard so it can be unit-tested and reused server-side (digests,
|
|
6
|
+
* alerts) without a browser.
|
|
7
|
+
*
|
|
8
|
+
* One asymmetry drives every choice in this file: a CPU request set too low
|
|
9
|
+
* throttles a container, a memory request set too low gets it OOMKilled.
|
|
10
|
+
* So CPU is sized from a P95 of hourly averages, while memory is sized only
|
|
11
|
+
* ever from a true peak — never from an average, and not at all when the
|
|
12
|
+
* peak is unknown. See `ramBytesUsageMax` on the KubernetesCostAllocation
|
|
13
|
+
* model for why a 0 peak has to mean "unknown".
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/** Hours in an average month (365 * 24 / 12), for monthly projections. */
|
|
17
|
+
export const HOURS_IN_MONTH: number = 730;
|
|
18
|
+
|
|
19
|
+
/*
|
|
20
|
+
* A workload has to be observed for at least a day before it gets a
|
|
21
|
+
* recommendation. A four-hour window catches a nightly batch job at rest
|
|
22
|
+
* and would happily advise shrinking it to nothing.
|
|
23
|
+
*/
|
|
24
|
+
export const MIN_OBSERVED_HOURS: number = 24;
|
|
25
|
+
export const MIN_SAMPLE_COUNT: number = 24;
|
|
26
|
+
|
|
27
|
+
/*
|
|
28
|
+
* Headroom over observed demand. CPU can be tighter than memory because
|
|
29
|
+
* overshooting CPU costs latency while overshooting memory costs the pod.
|
|
30
|
+
*/
|
|
31
|
+
export const CPU_HEADROOM_RATIO: number = 0.25;
|
|
32
|
+
export const MEMORY_HEADROOM_RATIO: number = 0.25;
|
|
33
|
+
|
|
34
|
+
/*
|
|
35
|
+
* Floors, so a near-idle sidecar is never told to request 1m of CPU or
|
|
36
|
+
* 4Mi of RAM — values that schedule badly and read as noise.
|
|
37
|
+
*/
|
|
38
|
+
export const MIN_RECOMMENDED_CPU_CORES: number = 0.01;
|
|
39
|
+
export const MIN_RECOMMENDED_MEMORY_BYTES: number = 32 * 1024 * 1024;
|
|
40
|
+
|
|
41
|
+
/*
|
|
42
|
+
* Nobody should edit a manifest to shave 3% off a request, so a
|
|
43
|
+
* recommendation within this band of the current value reads as "Optimal".
|
|
44
|
+
*/
|
|
45
|
+
export const SIGNIFICANCE_RATIO: number = 0.15;
|
|
46
|
+
|
|
47
|
+
const CPU_ROUNDING_STEP_CORES: number = 0.01; // 10 millicores
|
|
48
|
+
const MEMORY_ROUNDING_STEP_BYTES: number = 16 * 1024 * 1024; // 16 MiB
|
|
49
|
+
|
|
50
|
+
export enum RightSizingVerdict {
|
|
51
|
+
/** Requesting materially more than observed demand — money on the table. */
|
|
52
|
+
Overprovisioned = "Overprovisioned",
|
|
53
|
+
/** Requesting materially less than observed demand — throttle / OOM risk. */
|
|
54
|
+
Underprovisioned = "Underprovisioned",
|
|
55
|
+
/** Request already sits within the significance band of the recommendation. */
|
|
56
|
+
Optimal = "Optimal",
|
|
57
|
+
/** No request set at all. A scheduling problem, not a cost one. */
|
|
58
|
+
NoRequestSet = "NoRequestSet",
|
|
59
|
+
/** Not enough signal to advise anything. Never guess here. */
|
|
60
|
+
Unavailable = "Unavailable",
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface ResourceRecommendation {
|
|
64
|
+
/** Current per-container request. Null when none is set. */
|
|
65
|
+
current: number | null;
|
|
66
|
+
/** What the request should be. Null when we cannot say. */
|
|
67
|
+
recommended: number | null;
|
|
68
|
+
/** Observed demand the recommendation was built from (P95 CPU / peak RAM). */
|
|
69
|
+
observedDemand: number | null;
|
|
70
|
+
verdict: RightSizingVerdict;
|
|
71
|
+
/**
|
|
72
|
+
* Spend change over the observed window if the recommendation is applied.
|
|
73
|
+
* Negative saves money, positive costs more (an under-provisioned
|
|
74
|
+
* workload is under-charged today precisely because it is starved).
|
|
75
|
+
*/
|
|
76
|
+
costDeltaInWindow: number;
|
|
77
|
+
/** Why the recommendation is unavailable, for the UI to explain itself. */
|
|
78
|
+
unavailableReason?: string | undefined;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* One container's recommendation. Keyed by controller rather than pod:
|
|
83
|
+
* requests live in the pod template, so advice has to be per-container of a
|
|
84
|
+
* controller to be actionable.
|
|
85
|
+
*/
|
|
86
|
+
export interface RightSizingRecommendation {
|
|
87
|
+
namespace: string;
|
|
88
|
+
controllerKind: string;
|
|
89
|
+
controllerName: string;
|
|
90
|
+
containerName: string;
|
|
91
|
+
cpu: ResourceRecommendation;
|
|
92
|
+
memory: ResourceRecommendation;
|
|
93
|
+
/** Spend on this container over the observed window (CPU + RAM). */
|
|
94
|
+
costInWindow: number;
|
|
95
|
+
/** Projected monthly saving. Clamped at 0 — an increase is not a saving. */
|
|
96
|
+
estimatedMonthlySavings: number;
|
|
97
|
+
/** Projected monthly cost increase from fixing under-provisioning. */
|
|
98
|
+
estimatedMonthlyIncrease: number;
|
|
99
|
+
sampleCount: number;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Per-container aggregates over the whole window. CPU usage is a P95 of the
|
|
104
|
+
* hourly averages; memory usage is the maximum of the per-window peaks, so
|
|
105
|
+
* it survives a burst that an average would smooth away.
|
|
106
|
+
*/
|
|
107
|
+
export interface RightSizingObservation {
|
|
108
|
+
namespace: string;
|
|
109
|
+
controllerKind: string;
|
|
110
|
+
controllerName: string;
|
|
111
|
+
containerName: string;
|
|
112
|
+
/** Rows behind these aggregates — replicas * windows. */
|
|
113
|
+
sampleCount: number;
|
|
114
|
+
cpuCoreRequestAverage: number;
|
|
115
|
+
cpuCoreUsageP95: number;
|
|
116
|
+
cpuCost: number;
|
|
117
|
+
ramBytesRequestAverage: number;
|
|
118
|
+
/** Max of `ramBytesUsageMax`. 0 means unknown, never a real peak of zero. */
|
|
119
|
+
ramBytesUsagePeak: number;
|
|
120
|
+
ramCost: number;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function roundUpTo(value: number, step: number): number {
|
|
124
|
+
return Math.ceil(value / step) * step;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/*
|
|
128
|
+
* Cost scales with what the engine allocated, which is max(request, usage)
|
|
129
|
+
* — a container burning more than it asked for is billed for what it burnt.
|
|
130
|
+
* Using that as the denominator keeps the delta honest in both directions.
|
|
131
|
+
*
|
|
132
|
+
* In the case that actually produces a savings headline (request above
|
|
133
|
+
* demand) this collapses to the request, so the estimate there is exact
|
|
134
|
+
* rather than approximate.
|
|
135
|
+
*/
|
|
136
|
+
function getAllocatedBasis(request: number, demand: number): number {
|
|
137
|
+
return Math.max(request, demand);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
interface BuildResourceInput {
|
|
141
|
+
request: number;
|
|
142
|
+
demand: number;
|
|
143
|
+
demandIsKnown: boolean;
|
|
144
|
+
cost: number;
|
|
145
|
+
headroomRatio: number;
|
|
146
|
+
floor: number;
|
|
147
|
+
roundingStep: number;
|
|
148
|
+
unknownDemandReason: string;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function buildResourceRecommendation(
|
|
152
|
+
input: BuildResourceInput,
|
|
153
|
+
): ResourceRecommendation {
|
|
154
|
+
const request: number = input.request > 0 ? input.request : 0;
|
|
155
|
+
|
|
156
|
+
if (!input.demandIsKnown || !Number.isFinite(input.demand)) {
|
|
157
|
+
return {
|
|
158
|
+
current: request > 0 ? request : null,
|
|
159
|
+
recommended: null,
|
|
160
|
+
observedDemand: null,
|
|
161
|
+
verdict: RightSizingVerdict.Unavailable,
|
|
162
|
+
costDeltaInWindow: 0,
|
|
163
|
+
unavailableReason: input.unknownDemandReason,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const demand: number = Math.max(0, input.demand);
|
|
168
|
+
const recommended: number = Math.max(
|
|
169
|
+
input.floor,
|
|
170
|
+
roundUpTo(demand * (1 + input.headroomRatio), input.roundingStep),
|
|
171
|
+
);
|
|
172
|
+
|
|
173
|
+
/*
|
|
174
|
+
* A container with no request is a scheduling risk (it can be evicted or
|
|
175
|
+
* scheduled onto a node that cannot hold it), but there is no request to
|
|
176
|
+
* shrink, so it never contributes a saving.
|
|
177
|
+
*/
|
|
178
|
+
if (request <= 0) {
|
|
179
|
+
return {
|
|
180
|
+
current: null,
|
|
181
|
+
recommended: recommended,
|
|
182
|
+
observedDemand: demand,
|
|
183
|
+
verdict: RightSizingVerdict.NoRequestSet,
|
|
184
|
+
costDeltaInWindow: 0,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
const basis: number = getAllocatedBasis(request, demand);
|
|
189
|
+
const costDeltaInWindow: number =
|
|
190
|
+
basis > 0 ? input.cost * (recommended / basis - 1) : 0;
|
|
191
|
+
|
|
192
|
+
const ratio: number = recommended / request;
|
|
193
|
+
|
|
194
|
+
let verdict: RightSizingVerdict = RightSizingVerdict.Optimal;
|
|
195
|
+
if (ratio < 1 - SIGNIFICANCE_RATIO) {
|
|
196
|
+
verdict = RightSizingVerdict.Overprovisioned;
|
|
197
|
+
} else if (ratio > 1 + SIGNIFICANCE_RATIO) {
|
|
198
|
+
verdict = RightSizingVerdict.Underprovisioned;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
return {
|
|
202
|
+
current: request,
|
|
203
|
+
recommended: recommended,
|
|
204
|
+
observedDemand: demand,
|
|
205
|
+
verdict: verdict,
|
|
206
|
+
// Within the significance band we advise no change, so nothing moves.
|
|
207
|
+
costDeltaInWindow:
|
|
208
|
+
verdict === RightSizingVerdict.Optimal ? 0 : costDeltaInWindow,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
const INSUFFICIENT_DATA_REASON: string =
|
|
213
|
+
"Not enough history yet — a workload needs at least a day of cost windows before it can be sized.";
|
|
214
|
+
|
|
215
|
+
const NO_MEMORY_PEAK_REASON: string =
|
|
216
|
+
"No memory peak available. The agent reads peaks from Prometheus; without one, a memory request could only be guessed from an average, which is how containers get OOMKilled.";
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Turns one container's window aggregates into a recommendation.
|
|
220
|
+
*
|
|
221
|
+
* `observedHours` is the wall-clock length of the query window and is what
|
|
222
|
+
* monthly projections scale by — not the sample count, which counts
|
|
223
|
+
* replicas too and would multiply a Deployment's savings by its replica
|
|
224
|
+
* count.
|
|
225
|
+
*/
|
|
226
|
+
export function buildRightSizingRecommendation(
|
|
227
|
+
observation: RightSizingObservation,
|
|
228
|
+
observedHours: number,
|
|
229
|
+
): RightSizingRecommendation {
|
|
230
|
+
const costInWindow: number =
|
|
231
|
+
(observation.cpuCost || 0) + (observation.ramCost || 0);
|
|
232
|
+
|
|
233
|
+
const hasEnoughHistory: boolean =
|
|
234
|
+
observedHours >= MIN_OBSERVED_HOURS &&
|
|
235
|
+
observation.sampleCount >= MIN_SAMPLE_COUNT;
|
|
236
|
+
|
|
237
|
+
const cpu: ResourceRecommendation = buildResourceRecommendation({
|
|
238
|
+
request: observation.cpuCoreRequestAverage,
|
|
239
|
+
demand: observation.cpuCoreUsageP95,
|
|
240
|
+
demandIsKnown: hasEnoughHistory,
|
|
241
|
+
cost: observation.cpuCost || 0,
|
|
242
|
+
headroomRatio: CPU_HEADROOM_RATIO,
|
|
243
|
+
floor: MIN_RECOMMENDED_CPU_CORES,
|
|
244
|
+
roundingStep: CPU_ROUNDING_STEP_CORES,
|
|
245
|
+
unknownDemandReason: INSUFFICIENT_DATA_REASON,
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
/*
|
|
249
|
+
* A zero peak is indistinguishable from "the agent never reported one",
|
|
250
|
+
* so it is treated as unknown. Sizing memory off the average instead is
|
|
251
|
+
* the one shortcut this feature must not take.
|
|
252
|
+
*/
|
|
253
|
+
const hasMemoryPeak: boolean = observation.ramBytesUsagePeak > 0;
|
|
254
|
+
|
|
255
|
+
const memory: ResourceRecommendation = buildResourceRecommendation({
|
|
256
|
+
request: observation.ramBytesRequestAverage,
|
|
257
|
+
demand: observation.ramBytesUsagePeak,
|
|
258
|
+
demandIsKnown: hasEnoughHistory && hasMemoryPeak,
|
|
259
|
+
cost: observation.ramCost || 0,
|
|
260
|
+
headroomRatio: MEMORY_HEADROOM_RATIO,
|
|
261
|
+
floor: MIN_RECOMMENDED_MEMORY_BYTES,
|
|
262
|
+
roundingStep: MEMORY_ROUNDING_STEP_BYTES,
|
|
263
|
+
unknownDemandReason: hasEnoughHistory
|
|
264
|
+
? NO_MEMORY_PEAK_REASON
|
|
265
|
+
: INSUFFICIENT_DATA_REASON,
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
const windowDelta: number = cpu.costDeltaInWindow + memory.costDeltaInWindow;
|
|
269
|
+
const monthlyFactor: number =
|
|
270
|
+
observedHours > 0 ? HOURS_IN_MONTH / observedHours : 0;
|
|
271
|
+
const monthlyDelta: number = windowDelta * monthlyFactor;
|
|
272
|
+
|
|
273
|
+
return {
|
|
274
|
+
namespace: observation.namespace,
|
|
275
|
+
controllerKind: observation.controllerKind,
|
|
276
|
+
controllerName: observation.controllerName,
|
|
277
|
+
containerName: observation.containerName,
|
|
278
|
+
cpu: cpu,
|
|
279
|
+
memory: memory,
|
|
280
|
+
costInWindow: costInWindow,
|
|
281
|
+
estimatedMonthlySavings: monthlyDelta < 0 ? -monthlyDelta : 0,
|
|
282
|
+
estimatedMonthlyIncrease: monthlyDelta > 0 ? monthlyDelta : 0,
|
|
283
|
+
sampleCount: observation.sampleCount,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/** True when a recommendation is worth showing at all. */
|
|
288
|
+
export function hasActionableRecommendation(
|
|
289
|
+
recommendation: RightSizingRecommendation,
|
|
290
|
+
): boolean {
|
|
291
|
+
const actionable: Array<RightSizingVerdict> = [
|
|
292
|
+
RightSizingVerdict.Overprovisioned,
|
|
293
|
+
RightSizingVerdict.Underprovisioned,
|
|
294
|
+
RightSizingVerdict.NoRequestSet,
|
|
295
|
+
];
|
|
296
|
+
|
|
297
|
+
return (
|
|
298
|
+
actionable.includes(recommendation.cpu.verdict) ||
|
|
299
|
+
actionable.includes(recommendation.memory.verdict)
|
|
300
|
+
);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Formats cores the way Kubernetes writes them, so the value can be pasted
|
|
305
|
+
* straight into a manifest: sub-core as millicores, whole cores as decimals.
|
|
306
|
+
*/
|
|
307
|
+
export function formatCpuCores(cores: number | null): string {
|
|
308
|
+
if (cores === null || !Number.isFinite(cores)) {
|
|
309
|
+
return "-";
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
if (cores < 1) {
|
|
313
|
+
return `${Math.round(cores * 1000)}m`;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
return `${Number(cores.toFixed(2))}`;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/** Formats bytes as a Kubernetes binary quantity (`512Mi`, `2Gi`). */
|
|
320
|
+
export function formatMemoryBytes(bytes: number | null): string {
|
|
321
|
+
if (bytes === null || !Number.isFinite(bytes)) {
|
|
322
|
+
return "-";
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
const gibibyte: number = 1024 * 1024 * 1024;
|
|
326
|
+
const mebibyte: number = 1024 * 1024;
|
|
327
|
+
|
|
328
|
+
if (bytes >= gibibyte) {
|
|
329
|
+
return `${Number((bytes / gibibyte).toFixed(2))}Gi`;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
if (bytes >= mebibyte) {
|
|
333
|
+
return `${Math.round(bytes / mebibyte)}Mi`;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
return `${Math.max(1, Math.round(bytes / 1024))}Ki`;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/** Human label for a verdict. */
|
|
340
|
+
export function getVerdictLabel(verdict: RightSizingVerdict): string {
|
|
341
|
+
switch (verdict) {
|
|
342
|
+
case RightSizingVerdict.Overprovisioned:
|
|
343
|
+
return "Over-provisioned";
|
|
344
|
+
case RightSizingVerdict.Underprovisioned:
|
|
345
|
+
return "Under-provisioned";
|
|
346
|
+
case RightSizingVerdict.Optimal:
|
|
347
|
+
return "Right-sized";
|
|
348
|
+
case RightSizingVerdict.NoRequestSet:
|
|
349
|
+
return "No request set";
|
|
350
|
+
default:
|
|
351
|
+
return "Unavailable";
|
|
352
|
+
}
|
|
353
|
+
}
|
|
@@ -2,11 +2,20 @@ import { JSONObject } from "../JSON";
|
|
|
2
2
|
import MetricFormulaConfigData from "../Metrics/MetricFormulaConfigData";
|
|
3
3
|
import MetricQueryConfigData from "../Metrics/MetricQueryConfigData";
|
|
4
4
|
import MetricsViewConfig from "../Metrics/MetricsViewConfig";
|
|
5
|
+
import ObjectID from "../ObjectID";
|
|
5
6
|
import RollingTime from "../RollingTime/RollingTime";
|
|
6
7
|
|
|
7
8
|
export default interface MonitorStepMetricMonitor {
|
|
8
9
|
metricViewConfig: MetricsViewConfig;
|
|
9
10
|
rollingTime: RollingTime;
|
|
11
|
+
/*
|
|
12
|
+
* Optional telemetry-resource scope. Historically generic metric monitors
|
|
13
|
+
* queried every matching series in the project; recommendation-created RUM
|
|
14
|
+
* monitors need to watch one application, whose id is stored in Metric as
|
|
15
|
+
* primaryEntityId. Optional keeps every existing project-wide metric
|
|
16
|
+
* monitor behaving exactly as before.
|
|
17
|
+
*/
|
|
18
|
+
telemetryServiceIds?: Array<ObjectID> | undefined;
|
|
10
19
|
}
|
|
11
20
|
|
|
12
21
|
export class MonitorStepMetricMonitorUtil {
|
|
@@ -17,6 +26,7 @@ export class MonitorStepMetricMonitorUtil {
|
|
|
17
26
|
formulaConfigs: [],
|
|
18
27
|
},
|
|
19
28
|
rollingTime: RollingTime.Past1Minute,
|
|
29
|
+
telemetryServiceIds: [],
|
|
20
30
|
};
|
|
21
31
|
}
|
|
22
32
|
|
|
@@ -64,10 +74,26 @@ export class MonitorStepMetricMonitorUtil {
|
|
|
64
74
|
metricViewConfig: this.getMetricViewConfig(monitorStepMetricMonitor),
|
|
65
75
|
rollingTime:
|
|
66
76
|
monitorStepMetricMonitor?.rollingTime || RollingTime.Past1Minute,
|
|
77
|
+
...(json["telemetryServiceIds"]
|
|
78
|
+
? {
|
|
79
|
+
telemetryServiceIds: ObjectID.fromJSONArray(
|
|
80
|
+
json["telemetryServiceIds"] as Array<JSONObject>,
|
|
81
|
+
),
|
|
82
|
+
}
|
|
83
|
+
: {}),
|
|
67
84
|
};
|
|
68
85
|
}
|
|
69
86
|
|
|
70
87
|
public static toJSON(monitor: MonitorStepMetricMonitor): JSONObject {
|
|
71
|
-
return
|
|
88
|
+
return {
|
|
89
|
+
...(monitor as any as JSONObject),
|
|
90
|
+
...(monitor.telemetryServiceIds !== undefined
|
|
91
|
+
? {
|
|
92
|
+
telemetryServiceIds: ObjectID.toJSONArray(
|
|
93
|
+
monitor.telemetryServiceIds,
|
|
94
|
+
),
|
|
95
|
+
}
|
|
96
|
+
: {}),
|
|
97
|
+
};
|
|
72
98
|
}
|
|
73
99
|
}
|
|
@@ -223,6 +223,11 @@ export default class MonitorSteps extends DatabaseProperty {
|
|
|
223
223
|
}).openapi({
|
|
224
224
|
type: "object",
|
|
225
225
|
description: "MonitorSteps object",
|
|
226
|
+
/*
|
|
227
|
+
* Machine-readable marker so spec consumers (e.g. the Terraform
|
|
228
|
+
* provider generator) can emit a typed nested schema for this field.
|
|
229
|
+
*/
|
|
230
|
+
"x-oneuptime-type": ObjectType.MonitorSteps,
|
|
226
231
|
example: {
|
|
227
232
|
_type: ObjectType.MonitorSteps,
|
|
228
233
|
value: {
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import ProbeMonitorResponse from "../Probe/ProbeMonitorResponse";
|
|
2
|
+
import IncomingEmailMonitorRequest from "./IncomingEmailMonitor/IncomingEmailMonitorRequest";
|
|
3
|
+
import IncomingMonitorRequest from "./IncomingMonitor/IncomingMonitorRequest";
|
|
4
|
+
import MonitorEvaluationSummary from "./MonitorEvaluationSummary";
|
|
5
|
+
import MonitorType from "./MonitorType";
|
|
6
|
+
import ServerMonitorResponse from "./ServerMonitor/ServerMonitorResponse";
|
|
7
|
+
|
|
8
|
+
/*
|
|
9
|
+
* A frozen copy of the "Monitor Summary" card, taken at the moment a
|
|
10
|
+
* monitor's criteria opened an incident or an alert.
|
|
11
|
+
*
|
|
12
|
+
* The monitor page renders that card from live data - the probe's last
|
|
13
|
+
* monitoring log, the server agent's last push, the monitor's incoming
|
|
14
|
+
* request. All of that ages out (MonitorLog rows have a ClickHouse
|
|
15
|
+
* retention, MonitorProbe.lastMonitoringLog is overwritten on the next
|
|
16
|
+
* check), so an incident opened last quarter has no way to show what the
|
|
17
|
+
* monitor actually saw. Storing the snapshot on the incident/alert row is
|
|
18
|
+
* what makes "why did this fire?" answerable after the evidence is gone.
|
|
19
|
+
*
|
|
20
|
+
* Everything here must survive a JSON round-trip through a jsonb column,
|
|
21
|
+
* so it holds only plain data - no database models, no class instances
|
|
22
|
+
* beyond the ones JSONFunctions.serialize already knows how to encode.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/*
|
|
26
|
+
* Telemetry monitors (logs / metrics / traces / exceptions / profiles and
|
|
27
|
+
* the infrastructure types built on them) have no per-probe check log to
|
|
28
|
+
* capture. What they do have is the moment of evaluation and the count
|
|
29
|
+
* the criteria was evaluated against, which is the useful half of the
|
|
30
|
+
* live card plus the number that actually tripped it.
|
|
31
|
+
*/
|
|
32
|
+
export interface MonitorSummaryTelemetrySnapshot {
|
|
33
|
+
monitoredAt?: Date | undefined;
|
|
34
|
+
// e.g. 412 log records, 3 spans, 7 exceptions. Undefined for metric monitors.
|
|
35
|
+
observedCount?: number | undefined;
|
|
36
|
+
// What observedCount counts: "Logs", "Spans", "Exceptions", "Profiles".
|
|
37
|
+
observedCountTitle?: string | undefined;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export enum MonitorSummarySnapshotSource {
|
|
41
|
+
// Captured at incident/alert creation by the monitor evaluation pipeline.
|
|
42
|
+
Captured = "Captured",
|
|
43
|
+
/*
|
|
44
|
+
* Reconstructed on read from the incident's createdStateLog, for rows
|
|
45
|
+
* created before the snapshot column existed. Best-effort: it has no
|
|
46
|
+
* probe name and no monitor name, because those were never in the log.
|
|
47
|
+
*/
|
|
48
|
+
Legacy = "Legacy",
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export const MonitorSummarySnapshotVersion: number = 1;
|
|
52
|
+
|
|
53
|
+
export default interface MonitorSummarySnapshot {
|
|
54
|
+
/*
|
|
55
|
+
* Bumped when the shape changes incompatibly. Readers that do not
|
|
56
|
+
* understand a version render nothing rather than guessing.
|
|
57
|
+
*/
|
|
58
|
+
version: number;
|
|
59
|
+
source: MonitorSummarySnapshotSource;
|
|
60
|
+
monitorType: MonitorType;
|
|
61
|
+
monitorId?: string | undefined;
|
|
62
|
+
monitorName?: string | undefined;
|
|
63
|
+
capturedAt?: Date | undefined;
|
|
64
|
+
|
|
65
|
+
// Which probe produced the check below. Probeable monitor types only.
|
|
66
|
+
probeId?: string | undefined;
|
|
67
|
+
probeName?: string | undefined;
|
|
68
|
+
|
|
69
|
+
// Exactly one of these is set, chosen by monitorType.
|
|
70
|
+
probeMonitorResponse?: ProbeMonitorResponse | undefined;
|
|
71
|
+
serverMonitorResponse?: ServerMonitorResponse | undefined;
|
|
72
|
+
incomingMonitorRequest?: IncomingMonitorRequest | undefined;
|
|
73
|
+
incomingEmailMonitorRequest?: IncomingEmailMonitorRequest | undefined;
|
|
74
|
+
telemetryMonitorSummary?: MonitorSummaryTelemetrySnapshot | undefined;
|
|
75
|
+
|
|
76
|
+
// The criteria evaluation that decided to open this incident / alert.
|
|
77
|
+
evaluationSummary?: MonitorEvaluationSummary | undefined;
|
|
78
|
+
|
|
79
|
+
/*
|
|
80
|
+
* Set when the synthetic-monitor screenshots were stripped to keep the
|
|
81
|
+
* stored row within MonitorSummarySnapshotUtil's size budget. The view
|
|
82
|
+
* says so rather than silently showing a check with no screenshots.
|
|
83
|
+
*/
|
|
84
|
+
areScreenshotsOmitted?: boolean | undefined;
|
|
85
|
+
|
|
86
|
+
// Same idea for an oversized Website / API response body.
|
|
87
|
+
isResponseBodyTruncated?: boolean | undefined;
|
|
88
|
+
}
|
|
@@ -42,6 +42,10 @@ import {
|
|
|
42
42
|
ProxmoxAlertTemplate,
|
|
43
43
|
getAllProxmoxAlertTemplates,
|
|
44
44
|
} from "../ProxmoxAlertTemplates";
|
|
45
|
+
import {
|
|
46
|
+
RumAlertTemplate,
|
|
47
|
+
getAllRumAlertTemplates,
|
|
48
|
+
} from "../RumAlertTemplates";
|
|
45
49
|
|
|
46
50
|
/*
|
|
47
51
|
* A resource type's entry in the registry.
|
|
@@ -53,14 +57,20 @@ import {
|
|
|
53
57
|
*/
|
|
54
58
|
export interface MonitorRecommendationResourceTypeDefinition {
|
|
55
59
|
resourceType: MonitorRecommendationResourceType;
|
|
56
|
-
|
|
60
|
+
/*
|
|
61
|
+
* Infrastructure recommendations all use their resource's dedicated
|
|
62
|
+
* MonitorType. RUM recommendations intentionally span Metrics, Traces and
|
|
63
|
+
* Exceptions, so coverage queries must consider every type in this list.
|
|
64
|
+
*/
|
|
65
|
+
monitorTypes: Array<MonitorType>;
|
|
57
66
|
// Human label, singular, e.g. "Kubernetes Cluster".
|
|
58
67
|
resourceLabel: string;
|
|
59
68
|
// The field name in the owning module's own args interface.
|
|
60
69
|
identifierFieldName:
|
|
61
70
|
| "clusterIdentifier"
|
|
62
71
|
| "hostIdentifier"
|
|
63
|
-
| "fleetIdentifier"
|
|
72
|
+
| "fleetIdentifier"
|
|
73
|
+
| "rumApplicationId";
|
|
64
74
|
icon: IconProp;
|
|
65
75
|
getRecommendations: () => Array<MonitorRecommendation>;
|
|
66
76
|
}
|
|
@@ -277,11 +287,31 @@ function getIoTRecommendations(): Array<MonitorRecommendation> {
|
|
|
277
287
|
});
|
|
278
288
|
}
|
|
279
289
|
|
|
290
|
+
function getRumRecommendations(): Array<MonitorRecommendation> {
|
|
291
|
+
return getAllRumAlertTemplates().map((template: RumAlertTemplate) => {
|
|
292
|
+
return normalize({
|
|
293
|
+
resourceType: MonitorRecommendationResourceType.RumApplication,
|
|
294
|
+
monitorType: template.monitorType,
|
|
295
|
+
template: template,
|
|
296
|
+
getMonitorStep: (args: MonitorRecommendationArgs) => {
|
|
297
|
+
return template.getMonitorStep({
|
|
298
|
+
rumApplicationId: args.resourceIdentifier,
|
|
299
|
+
onlineMonitorStatusId: args.onlineMonitorStatusId,
|
|
300
|
+
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
301
|
+
defaultIncidentSeverityId: args.defaultIncidentSeverityId,
|
|
302
|
+
defaultAlertSeverityId: args.defaultAlertSeverityId,
|
|
303
|
+
monitorName: args.monitorName,
|
|
304
|
+
});
|
|
305
|
+
},
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
|
|
280
310
|
const RESOURCE_TYPE_DEFINITIONS: Array<MonitorRecommendationResourceTypeDefinition> =
|
|
281
311
|
[
|
|
282
312
|
{
|
|
283
313
|
resourceType: MonitorRecommendationResourceType.Kubernetes,
|
|
284
|
-
|
|
314
|
+
monitorTypes: [MonitorType.Kubernetes],
|
|
285
315
|
resourceLabel: "Kubernetes Cluster",
|
|
286
316
|
identifierFieldName: "clusterIdentifier",
|
|
287
317
|
icon: IconProp.Kubernetes,
|
|
@@ -289,7 +319,7 @@ const RESOURCE_TYPE_DEFINITIONS: Array<MonitorRecommendationResourceTypeDefiniti
|
|
|
289
319
|
},
|
|
290
320
|
{
|
|
291
321
|
resourceType: MonitorRecommendationResourceType.Host,
|
|
292
|
-
|
|
322
|
+
monitorTypes: [MonitorType.Host],
|
|
293
323
|
resourceLabel: "Host",
|
|
294
324
|
identifierFieldName: "hostIdentifier",
|
|
295
325
|
icon: IconProp.Server,
|
|
@@ -297,7 +327,7 @@ const RESOURCE_TYPE_DEFINITIONS: Array<MonitorRecommendationResourceTypeDefiniti
|
|
|
297
327
|
},
|
|
298
328
|
{
|
|
299
329
|
resourceType: MonitorRecommendationResourceType.Docker,
|
|
300
|
-
|
|
330
|
+
monitorTypes: [MonitorType.Docker],
|
|
301
331
|
resourceLabel: "Docker Host",
|
|
302
332
|
identifierFieldName: "hostIdentifier",
|
|
303
333
|
icon: IconProp.Docker,
|
|
@@ -305,7 +335,7 @@ const RESOURCE_TYPE_DEFINITIONS: Array<MonitorRecommendationResourceTypeDefiniti
|
|
|
305
335
|
},
|
|
306
336
|
{
|
|
307
337
|
resourceType: MonitorRecommendationResourceType.DockerSwarm,
|
|
308
|
-
|
|
338
|
+
monitorTypes: [MonitorType.DockerSwarm],
|
|
309
339
|
resourceLabel: "Docker Swarm Cluster",
|
|
310
340
|
identifierFieldName: "clusterIdentifier",
|
|
311
341
|
icon: IconProp.DockerSwarm,
|
|
@@ -313,7 +343,7 @@ const RESOURCE_TYPE_DEFINITIONS: Array<MonitorRecommendationResourceTypeDefiniti
|
|
|
313
343
|
},
|
|
314
344
|
{
|
|
315
345
|
resourceType: MonitorRecommendationResourceType.Podman,
|
|
316
|
-
|
|
346
|
+
monitorTypes: [MonitorType.Podman],
|
|
317
347
|
resourceLabel: "Podman Host",
|
|
318
348
|
identifierFieldName: "hostIdentifier",
|
|
319
349
|
icon: IconProp.Podman,
|
|
@@ -321,7 +351,7 @@ const RESOURCE_TYPE_DEFINITIONS: Array<MonitorRecommendationResourceTypeDefiniti
|
|
|
321
351
|
},
|
|
322
352
|
{
|
|
323
353
|
resourceType: MonitorRecommendationResourceType.Proxmox,
|
|
324
|
-
|
|
354
|
+
monitorTypes: [MonitorType.Proxmox],
|
|
325
355
|
resourceLabel: "Proxmox Cluster",
|
|
326
356
|
identifierFieldName: "clusterIdentifier",
|
|
327
357
|
icon: IconProp.Server,
|
|
@@ -329,7 +359,7 @@ const RESOURCE_TYPE_DEFINITIONS: Array<MonitorRecommendationResourceTypeDefiniti
|
|
|
329
359
|
},
|
|
330
360
|
{
|
|
331
361
|
resourceType: MonitorRecommendationResourceType.Ceph,
|
|
332
|
-
|
|
362
|
+
monitorTypes: [MonitorType.Ceph],
|
|
333
363
|
resourceLabel: "Ceph Cluster",
|
|
334
364
|
identifierFieldName: "clusterIdentifier",
|
|
335
365
|
icon: IconProp.Database,
|
|
@@ -337,12 +367,24 @@ const RESOURCE_TYPE_DEFINITIONS: Array<MonitorRecommendationResourceTypeDefiniti
|
|
|
337
367
|
},
|
|
338
368
|
{
|
|
339
369
|
resourceType: MonitorRecommendationResourceType.IoTDevice,
|
|
340
|
-
|
|
370
|
+
monitorTypes: [MonitorType.IoTDevice],
|
|
341
371
|
resourceLabel: "IoT Fleet",
|
|
342
372
|
identifierFieldName: "fleetIdentifier",
|
|
343
373
|
icon: IconProp.CPUChip,
|
|
344
374
|
getRecommendations: getIoTRecommendations,
|
|
345
375
|
},
|
|
376
|
+
{
|
|
377
|
+
resourceType: MonitorRecommendationResourceType.RumApplication,
|
|
378
|
+
monitorTypes: [
|
|
379
|
+
MonitorType.Metrics,
|
|
380
|
+
MonitorType.Traces,
|
|
381
|
+
MonitorType.Exceptions,
|
|
382
|
+
],
|
|
383
|
+
resourceLabel: "RUM Application",
|
|
384
|
+
identifierFieldName: "rumApplicationId",
|
|
385
|
+
icon: IconProp.Globe,
|
|
386
|
+
getRecommendations: getRumRecommendations,
|
|
387
|
+
},
|
|
346
388
|
];
|
|
347
389
|
|
|
348
390
|
export default class MonitorRecommendationCatalog {
|