@oneuptime/common 14.0.9 → 14.0.10
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/DatabaseModels/AutoRemediationSuggestion.ts +60 -0
- package/Models/DatabaseModels/CephCluster.ts +213 -0
- package/Models/DatabaseModels/DatabaseServer.ts +213 -0
- package/Models/DatabaseModels/DockerHost.ts +213 -0
- package/Models/DatabaseModels/DockerSwarmCluster.ts +213 -0
- package/Models/DatabaseModels/GlobalConfig.ts +1 -1
- package/Models/DatabaseModels/Host.ts +213 -0
- package/Models/DatabaseModels/Index.ts +2 -0
- package/Models/DatabaseModels/PodmanHost.ts +213 -0
- package/Models/DatabaseModels/ProxmoxCluster.ts +213 -0
- package/Models/DatabaseModels/ResourceAiAgent.ts +419 -0
- package/Models/DatabaseModels/RunnerJob.ts +144 -0
- package/Models/DatabaseModels/VMwareVCenter.ts +213 -0
- package/Server/API/AutoRemediationAPI.ts +392 -1
- package/Server/API/ResourceAiAccessAPI.ts +1669 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1796300000000-AddResourceAiAgents.ts +423 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
- package/Server/Infrastructure/Semaphore.ts +22 -0
- package/Server/Middleware/TelemetryIngest.ts +15 -5
- package/Server/Services/AnalyticsDatabaseService.ts +45 -1
- package/Server/Services/AutoRemediationRuleEngineService.ts +940 -112
- package/Server/Services/CephClusterService.ts +109 -1
- package/Server/Services/DatabaseServerService.ts +116 -1
- package/Server/Services/DockerHostService.ts +109 -1
- package/Server/Services/DockerSwarmClusterService.ts +113 -1
- package/Server/Services/HostService.ts +126 -4
- package/Server/Services/MetricRecordingRuleService.ts +47 -0
- package/Server/Services/PodmanHostService.ts +109 -1
- package/Server/Services/ProxmoxClusterService.ts +110 -1
- package/Server/Services/ResourceAiAccessService.ts +1439 -0
- package/Server/Services/ResourceAiAgentJobService.ts +202 -0
- package/Server/Services/ResourceAiAgentService.ts +2432 -0
- package/Server/Services/RunnerJobService.ts +611 -4
- package/Server/Services/TelemetryUsageBillingService.ts +28 -0
- package/Server/Services/TraceRecordingRuleService.ts +33 -0
- package/Server/Services/VMwareVCenterService.ts +110 -1
- package/Server/Utils/AI/Remediation/RemediationCommandTools.ts +1434 -32
- package/Server/Utils/AI/Remediation/RemediationExecutionRunner.ts +935 -21
- package/Server/Utils/AI/Remediation/RemediationPlanRunner.ts +25 -1
- package/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.ts +577 -0
- package/Server/Utils/AI/ResourceAccess/ResourceAccessContext.ts +271 -0
- package/Server/Utils/AI/ResourceAccess/ResourceAccessToolNames.ts +45 -0
- package/Server/Utils/AI/ResourceAccess/ResourceAiAccessSettings.ts +964 -0
- package/Server/Utils/AI/ResourceAccess/ResourceAiDeleteCleanup.ts +333 -0
- package/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.ts +873 -0
- package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +72 -2
- package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +72 -5
- package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +72 -5
- package/Server/Utils/AutoRemediation/CommandPlanExecutor.ts +396 -13
- package/Server/Utils/AutoRemediation/RemediationVerifier.ts +35 -2
- package/Server/Utils/Database/ProjectScopedReferenceValidator.ts +9 -1
- package/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.ts +920 -0
- package/Server/Utils/SessionReplay/SessionReplayUsage.ts +84 -6
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.ts +35 -15
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.ts +33 -15
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.ts +21 -1
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.ts +298 -224
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.ts +35 -15
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.ts +389 -175
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +366 -143
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsActivityDeduplicator.ts +163 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.ts +396 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCommands.ts +418 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsMessageSize.ts +152 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsReplies.ts +251 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezone.ts +214 -0
- package/Tests/App/Dashboard/ClusterAccessNotice.test.tsx +93 -0
- package/Tests/App/Dashboard/DatabaseDocumentationMarkdown.test.ts +18 -6
- package/Tests/App/Dashboard/InvestigationInfrastructureTools.test.tsx +506 -0
- package/Tests/App/Dashboard/RemediationSuggestionCardDescription.test.tsx +209 -0
- package/Tests/App/Dashboard/RemediationSuggestionCardResource.test.tsx +317 -0
- package/Tests/App/Dashboard/ResourceAiAccessSettingsUtil.test.ts +921 -0
- package/Tests/App/Dashboard/ResourceAiAgentInstall.test.ts +860 -0
- package/Tests/App/Dashboard/ResourceAiAgentPage.test.tsx +1721 -0
- package/Tests/App/Dashboard/ResourceAiAgentStatus.test.ts +1002 -0
- package/Tests/App/Dashboard/ResourceAiInsightsPage.test.tsx +931 -0
- package/Tests/App/Dashboard/ResourceAiNavigation.test.tsx +575 -0
- package/Tests/App/Dashboard/RunbookStepTypeMaps.test.ts +38 -7
- package/Tests/Models/DatabaseModels/DatabaseServerModels.test.ts +33 -1
- package/Tests/Models/DatabaseModels/ResourceAiAccessColumns.test.ts +738 -0
- package/Tests/Models/DatabaseModels/ResourceAiAgentModel.test.ts +842 -0
- package/Tests/Server/API/AutoRemediationApproveResourceRound.test.ts +835 -0
- package/Tests/Server/API/ResourceAiAccessAPI.test.ts +2730 -0
- package/Tests/Server/Infrastructure/Postgres/AddDatabaseServerTablesMigration.test.ts +60 -0
- package/Tests/Server/Infrastructure/Postgres/AddResourceAiAgentsMigration.test.ts +659 -0
- package/Tests/Server/Infrastructure/SemaphoreMutex.test.ts +31 -0
- package/Tests/Server/Middleware/TelemetryIngestBrowserKey.test.ts +63 -5
- package/Tests/Server/Middleware/TelemetryIngestKubernetesAgentRunnerPinnedKey.test.ts +103 -5
- package/Tests/Server/Middleware/TelemetryIngestKubernetesAgentRunnerRateLimit.test.ts +19 -1
- package/Tests/Server/Services/AutoRemediationResourceRuleEngine.test.ts +1279 -0
- package/Tests/Server/Services/DatabaseServerService.test.ts +55 -0
- package/Tests/Server/Services/GroupTelemetryUsageExcludeNames.test.ts +299 -0
- package/Tests/Server/Services/HostServiceFindOrCreateMemo.test.ts +44 -0
- package/Tests/Server/Services/MonitorProbeServiceIntervalScheduling.test.ts +45 -6
- package/Tests/Server/Services/RecordingRuleReservedMetricName.test.ts +171 -0
- package/Tests/Server/Services/ResourceAiAccessChangeAuthorization.test.ts +256 -0
- package/Tests/Server/Services/ResourceAiAccessService.test.ts +1373 -0
- package/Tests/Server/Services/ResourceAiAgentJobService.test.ts +375 -0
- package/Tests/Server/Services/ResourceAiAgentServiceHelpers.test.ts +1114 -0
- package/Tests/Server/Services/ResourceAiAgentServiceLifecycle.test.ts +1050 -0
- package/Tests/Server/Services/ResourceAiAgentServiceRegister.test.ts +2251 -0
- package/Tests/Server/Services/ResourceAiSettingsCreate.test.ts +373 -0
- package/Tests/Server/Services/ResourceAiSettingsPermission.test.ts +1042 -0
- package/Tests/Server/Services/ResourceServiceDeleteCleansUpAi.test.ts +319 -0
- package/Tests/Server/Services/RunnerJobEnqueueKubectl.test.ts +105 -0
- package/Tests/Server/Services/RunnerJobEnqueueResourceCommand.test.ts +986 -0
- package/Tests/Server/Services/RunnerJobResourceCommandLane.test.ts +211 -0
- package/Tests/Server/Services/RunnerJobResourceCommandTimeoutAndRedaction.test.ts +352 -0
- package/Tests/Server/Services/TelemetryUsageBillingSloExclusion.test.ts +218 -0
- package/Tests/Server/TestingUtils/Services/FakeRunnerJobCount.ts +145 -0
- package/Tests/Server/Utils/AI/InvestigationInfrastructureAccessWiring.test.ts +453 -0
- package/Tests/Server/Utils/AI/InvestigationInfrastructureReport.test.ts +721 -0
- package/Tests/Server/Utils/AI/RemediationCommandTools.test.ts +94 -1
- package/Tests/Server/Utils/AI/RemediationCommandToolsResource.test.ts +1530 -0
- package/Tests/Server/Utils/AI/RemediationExecutionRunnerResourceMode.test.ts +1249 -0
- package/Tests/Server/Utils/AI/RemediationPlanRunner.test.ts +117 -0
- package/Tests/Server/Utils/AI/RemediationResourceCopyParity.test.ts +463 -0
- package/Tests/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.test.ts +722 -0
- package/Tests/Server/Utils/AI/ResourceAccess/ResourceAccessContext.test.ts +266 -0
- package/Tests/Server/Utils/AI/ResourceAccess/ResourceAiAccessSettings.test.ts +1220 -0
- package/Tests/Server/Utils/AI/ResourceAccess/ResourceAiDeleteCleanup.test.ts +569 -0
- package/Tests/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.test.ts +830 -0
- package/Tests/Server/Utils/AutoRemediation/CommandPlanExecutorResource.test.ts +717 -0
- package/Tests/Server/Utils/AutoRemediation/RemediationVerifierResourceFollowUp.test.ts +338 -0
- package/Tests/Server/Utils/Monitor/Criteria/SessionReplayBudgetTemplateCriteria.test.ts +422 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.test.ts +1647 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayUsage.test.ts +143 -1
- package/Tests/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.test.ts +33 -3
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsAccountNotLinked.test.ts +1093 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsActivityDeduplicator.test.ts +1049 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.test.ts +1676 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCards.test.ts +2884 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCommands.test.ts +2490 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateSubmit.test.ts +2293 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateSubmitServerTimezone.test.ts +386 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsMessageSize.test.ts +1477 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsReplies.test.ts +1967 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsStripHtmlTags.test.ts +92 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsSubmittedFormRemoval.test.ts +1819 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezone.test.ts +1033 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezoneServerZone.test.ts +610 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsBotMessageHandling.test.ts +2610 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsCreateCommandsEndToEnd.test.ts +4672 -0
- package/Tests/Server/Utils/Workspace/WorkspaceCreateProjectReferences.test.ts +190 -65
- package/Tests/Types/AutoRemediation/AiRemediationCommandPlan.test.ts +10 -4
- package/Tests/Types/AutoRemediation/AiRemediationCommandPlanResourceCommand.test.ts +305 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +277 -13
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +113 -0
- package/Tests/Types/Monitor/RumAlertTemplates.test.ts +773 -2
- package/Tests/Types/ResourceAiAgent/AiResourceType.test.ts +419 -0
- package/Tests/Types/ResourceAiAgent/ResourceAiAccess.test.ts +517 -0
- package/Tests/Types/Runbook/RunbookStepType.test.ts +147 -8
- package/Tests/UI/Rum/RecordingHealthDashboard.test.tsx +769 -1
- package/Tests/Utils/AiRemediation/Resource/CephCommandPolicy.test.ts +1653 -0
- package/Tests/Utils/AiRemediation/Resource/CephOutputRedaction.test.ts +204 -0
- package/Tests/Utils/AiRemediation/Resource/DatabaseCommandPolicy.test.ts +1077 -0
- package/Tests/Utils/AiRemediation/Resource/DatabaseDiagnosticCatalog.test.ts +558 -0
- package/Tests/Utils/AiRemediation/Resource/DatabaseQueryRedactor.test.ts +834 -0
- package/Tests/Utils/AiRemediation/Resource/DockerCliGrammar.test.ts +747 -0
- package/Tests/Utils/AiRemediation/Resource/DockerEngineCommandPolicy.test.ts +1259 -0
- package/Tests/Utils/AiRemediation/Resource/DockerOutputRedaction.test.ts +386 -0
- package/Tests/Utils/AiRemediation/Resource/DockerSwarmCommandPolicy.test.ts +782 -0
- package/Tests/Utils/AiRemediation/Resource/GovcCommandPolicy.test.ts +2259 -0
- package/Tests/Utils/AiRemediation/Resource/HostCommandPolicy.test.ts +2019 -0
- package/Tests/Utils/AiRemediation/Resource/ProxmoxCommandPolicy.test.ts +2497 -0
- package/Tests/Utils/AiRemediation/Resource/ResourceCommandPolicy.test.ts +1305 -0
- package/Tests/Utils/AiRemediation/Resource/ResourceCommandPolicyCore.test.ts +585 -0
- package/Tests/Utils/AiRemediation/Resource/ResourceOutputRedactor.test.ts +334 -0
- package/Tests/Utils/AiRemediation/Resource/ResourceOutputRedactorCopyParity.test.ts +98 -0
- package/Tests/Utils/AiRemediation/Resource/ResourcePolicyImportClosure.test.ts +391 -0
- package/Tests/Utils/AiRemediation/ResourceAiAgentPolicyCopyParity.test.ts +497 -0
- package/Tests/Utils/SessionReplay/SessionReplayBudgetMetricType.test.ts +383 -0
- package/Types/AI/ResourceAiAccessApi.ts +140 -0
- package/Types/AI/ResourceAiAccessPermissions.ts +126 -0
- package/Types/AutoRemediation/AiRemediationCommandPlan.ts +183 -2
- package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +55 -22
- package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +35 -3
- package/Types/Monitor/RumAlertTemplates.ts +351 -4
- package/Types/ResourceAiAgent/AiResourceType.ts +310 -0
- package/Types/ResourceAiAgent/ResourceAiAccess.ts +574 -0
- package/Types/Rum/SessionReplayBudgetMetricType.ts +47 -0
- package/Types/Runbook/RunbookStepType.ts +29 -0
- package/Types/Telemetry/TelemetryIngestSurface.ts +14 -2
- package/Utils/AI/InvestigationReport.ts +121 -15
- package/Utils/AiRemediation/Resource/CephCommandPolicy.ts +1936 -0
- package/Utils/AiRemediation/Resource/DatabaseCommandPolicy.ts +166 -0
- package/Utils/AiRemediation/Resource/DatabaseDiagnosticCatalog.ts +1532 -0
- package/Utils/AiRemediation/Resource/DatabaseQueryRedactor.ts +1394 -0
- package/Utils/AiRemediation/Resource/DockerCliGrammar.ts +1839 -0
- package/Utils/AiRemediation/Resource/DockerEngineCommandPolicy.ts +490 -0
- package/Utils/AiRemediation/Resource/DockerSwarmCommandPolicy.ts +687 -0
- package/Utils/AiRemediation/Resource/GovcCommandPolicy.ts +2096 -0
- package/Utils/AiRemediation/Resource/HostCommandPolicy.ts +2982 -0
- package/Utils/AiRemediation/Resource/ProxmoxCommandPolicy.ts +1679 -0
- package/Utils/AiRemediation/Resource/ResourceCommandPolicy.ts +851 -0
- package/Utils/AiRemediation/Resource/ResourceCommandPolicyCore.ts +593 -0
- package/Utils/AiRemediation/Resource/ResourceOutputRedactor.ts +2812 -0
- package/Utils/SessionReplay/SessionReplayBudgetMetricType.ts +184 -0
- package/build/dist/Models/DatabaseModels/AutoRemediationSuggestion.js +62 -0
- package/build/dist/Models/DatabaseModels/AutoRemediationSuggestion.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CephCluster.js +219 -0
- package/build/dist/Models/DatabaseModels/CephCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DatabaseServer.js +219 -0
- package/build/dist/Models/DatabaseModels/DatabaseServer.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHost.js +219 -0
- package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js +219 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalConfig.js +1 -1
- package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Host.js +219 -0
- package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +2 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/PodmanHost.js +219 -0
- package/build/dist/Models/DatabaseModels/PodmanHost.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProxmoxCluster.js +219 -0
- package/build/dist/Models/DatabaseModels/ProxmoxCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ResourceAiAgent.js +439 -0
- package/build/dist/Models/DatabaseModels/ResourceAiAgent.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RunnerJob.js +145 -0
- package/build/dist/Models/DatabaseModels/RunnerJob.js.map +1 -1
- package/build/dist/Models/DatabaseModels/VMwareVCenter.js +219 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenter.js.map +1 -1
- package/build/dist/Server/API/AutoRemediationAPI.js +231 -1
- package/build/dist/Server/API/AutoRemediationAPI.js.map +1 -1
- package/build/dist/Server/API/ResourceAiAccessAPI.js +1119 -0
- package/build/dist/Server/API/ResourceAiAccessAPI.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796300000000-AddResourceAiAgents.js +168 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796300000000-AddResourceAiAgents.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/Semaphore.js +6 -0
- package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +12 -5
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +26 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +601 -3
- package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterService.js +104 -0
- package/build/dist/Server/Services/CephClusterService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseServerService.js +99 -0
- package/build/dist/Server/Services/DatabaseServerService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostService.js +104 -0
- package/build/dist/Server/Services/DockerHostService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterService.js +104 -0
- package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +114 -2
- package/build/dist/Server/Services/HostService.js.map +1 -1
- package/build/dist/Server/Services/MetricRecordingRuleService.js +46 -0
- package/build/dist/Server/Services/MetricRecordingRuleService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostService.js +104 -0
- package/build/dist/Server/Services/PodmanHostService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterService.js +104 -0
- package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -1
- package/build/dist/Server/Services/ResourceAiAccessService.js +1028 -0
- package/build/dist/Server/Services/ResourceAiAccessService.js.map +1 -0
- package/build/dist/Server/Services/ResourceAiAgentJobService.js +173 -0
- package/build/dist/Server/Services/ResourceAiAgentJobService.js.map +1 -0
- package/build/dist/Server/Services/ResourceAiAgentService.js +1687 -0
- package/build/dist/Server/Services/ResourceAiAgentService.js.map +1 -0
- package/build/dist/Server/Services/RunnerJobService.js +344 -5
- package/build/dist/Server/Services/RunnerJobService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +26 -0
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/TraceRecordingRuleService.js +37 -0
- package/build/dist/Server/Services/TraceRecordingRuleService.js.map +1 -1
- package/build/dist/Server/Services/VMwareVCenterService.js +104 -0
- package/build/dist/Server/Services/VMwareVCenterService.js.map +1 -1
- package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js +1029 -30
- package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js.map +1 -1
- package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js +633 -28
- package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js +21 -1
- package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.js +330 -0
- package/build/dist/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.js.map +1 -0
- package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAccessContext.js +160 -0
- package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAccessContext.js.map +1 -0
- package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAccessToolNames.js +33 -0
- package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAccessToolNames.js.map +1 -0
- package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAiAccessSettings.js +640 -0
- package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAiAccessSettings.js.map +1 -0
- package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAiDeleteCleanup.js +226 -0
- package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAiDeleteCleanup.js.map +1 -0
- package/build/dist/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.js +600 -0
- package/build/dist/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +50 -4
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +55 -4
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +55 -4
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AutoRemediation/CommandPlanExecutor.js +290 -13
- package/build/dist/Server/Utils/AutoRemediation/CommandPlanExecutor.js.map +1 -1
- package/build/dist/Server/Utils/AutoRemediation/RemediationVerifier.js +29 -1
- package/build/dist/Server/Utils/AutoRemediation/RemediationVerifier.js.map +1 -1
- package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js +9 -1
- package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js.map +1 -1
- package/build/dist/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.js +627 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.js.map +1 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayUsage.js +60 -5
- package/build/dist/Server/Utils/SessionReplay/SessionReplayUsage.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js +19 -15
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js +19 -15
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js +17 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js +183 -209
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js +19 -15
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.js +233 -167
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +263 -110
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsActivityDeduplicator.js +129 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsActivityDeduplicator.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.js +266 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCommands.js +258 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCommands.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsMessageSize.js +104 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsMessageSize.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsReplies.js +183 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsReplies.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezone.js +123 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezone.js.map +1 -0
- package/build/dist/Types/AI/ResourceAiAccessApi.js +30 -0
- package/build/dist/Types/AI/ResourceAiAccessApi.js.map +1 -0
- package/build/dist/Types/AI/ResourceAiAccessPermissions.js +98 -0
- package/build/dist/Types/AI/ResourceAiAccessPermissions.js.map +1 -0
- package/build/dist/Types/AutoRemediation/AiRemediationCommandPlan.js +116 -29
- package/build/dist/Types/AutoRemediation/AiRemediationCommandPlan.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +47 -21
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +5 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
- package/build/dist/Types/Monitor/RumAlertTemplates.js +199 -3
- package/build/dist/Types/Monitor/RumAlertTemplates.js.map +1 -1
- package/build/dist/Types/ResourceAiAgent/AiResourceType.js +242 -0
- package/build/dist/Types/ResourceAiAgent/AiResourceType.js.map +1 -0
- package/build/dist/Types/ResourceAiAgent/ResourceAiAccess.js +275 -0
- package/build/dist/Types/ResourceAiAgent/ResourceAiAccess.js.map +1 -0
- package/build/dist/Types/Rum/SessionReplayBudgetMetricType.js +45 -0
- package/build/dist/Types/Rum/SessionReplayBudgetMetricType.js.map +1 -0
- package/build/dist/Types/Runbook/RunbookStepType.js +27 -0
- package/build/dist/Types/Runbook/RunbookStepType.js.map +1 -1
- package/build/dist/Types/Telemetry/TelemetryIngestSurface.js +13 -2
- package/build/dist/Types/Telemetry/TelemetryIngestSurface.js.map +1 -1
- package/build/dist/Utils/AI/InvestigationReport.js +71 -11
- package/build/dist/Utils/AI/InvestigationReport.js.map +1 -1
- package/build/dist/Utils/AiRemediation/Resource/CephCommandPolicy.js +1462 -0
- package/build/dist/Utils/AiRemediation/Resource/CephCommandPolicy.js.map +1 -0
- package/build/dist/Utils/AiRemediation/Resource/DatabaseCommandPolicy.js +122 -0
- package/build/dist/Utils/AiRemediation/Resource/DatabaseCommandPolicy.js.map +1 -0
- package/build/dist/Utils/AiRemediation/Resource/DatabaseDiagnosticCatalog.js +1139 -0
- package/build/dist/Utils/AiRemediation/Resource/DatabaseDiagnosticCatalog.js.map +1 -0
- package/build/dist/Utils/AiRemediation/Resource/DatabaseQueryRedactor.js +1060 -0
- package/build/dist/Utils/AiRemediation/Resource/DatabaseQueryRedactor.js.map +1 -0
- package/build/dist/Utils/AiRemediation/Resource/DockerCliGrammar.js +1301 -0
- package/build/dist/Utils/AiRemediation/Resource/DockerCliGrammar.js.map +1 -0
- package/build/dist/Utils/AiRemediation/Resource/DockerEngineCommandPolicy.js +370 -0
- package/build/dist/Utils/AiRemediation/Resource/DockerEngineCommandPolicy.js.map +1 -0
- package/build/dist/Utils/AiRemediation/Resource/DockerSwarmCommandPolicy.js +498 -0
- package/build/dist/Utils/AiRemediation/Resource/DockerSwarmCommandPolicy.js.map +1 -0
- package/build/dist/Utils/AiRemediation/Resource/GovcCommandPolicy.js +1565 -0
- package/build/dist/Utils/AiRemediation/Resource/GovcCommandPolicy.js.map +1 -0
- package/build/dist/Utils/AiRemediation/Resource/HostCommandPolicy.js +2206 -0
- package/build/dist/Utils/AiRemediation/Resource/HostCommandPolicy.js.map +1 -0
- package/build/dist/Utils/AiRemediation/Resource/ProxmoxCommandPolicy.js +1129 -0
- package/build/dist/Utils/AiRemediation/Resource/ProxmoxCommandPolicy.js.map +1 -0
- package/build/dist/Utils/AiRemediation/Resource/ResourceCommandPolicy.js +565 -0
- package/build/dist/Utils/AiRemediation/Resource/ResourceCommandPolicy.js.map +1 -0
- package/build/dist/Utils/AiRemediation/Resource/ResourceCommandPolicyCore.js +408 -0
- package/build/dist/Utils/AiRemediation/Resource/ResourceCommandPolicyCore.js.map +1 -0
- package/build/dist/Utils/AiRemediation/Resource/ResourceOutputRedactor.js +1910 -0
- package/build/dist/Utils/AiRemediation/Resource/ResourceOutputRedactor.js.map +1 -0
- package/build/dist/Utils/SessionReplay/SessionReplayBudgetMetricType.js +160 -0
- package/build/dist/Utils/SessionReplay/SessionReplayBudgetMetricType.js.map +1 -0
- package/package.json +1 -1
|
@@ -8,7 +8,9 @@ import { CheckOn, EvaluateOverTimeType, FilterType } from "./CriteriaFilter";
|
|
|
8
8
|
import MonitorType from "./MonitorType";
|
|
9
9
|
import RollingTime from "../RollingTime/RollingTime";
|
|
10
10
|
import MetricsAggregationType from "../Metrics/MetricsAggregationType";
|
|
11
|
+
import SessionReplayBudgetMetricType from "../Rum/SessionReplayBudgetMetricType";
|
|
11
12
|
function buildCriteria(data) {
|
|
13
|
+
const metricAggregationType = data.metricAggregationType || EvaluateOverTimeType.Average;
|
|
12
14
|
const unhealthy = new MonitorCriteriaInstance();
|
|
13
15
|
unhealthy.data = {
|
|
14
16
|
id: ObjectID.generate().toString(),
|
|
@@ -21,7 +23,7 @@ function buildCriteria(data) {
|
|
|
21
23
|
value: data.threshold,
|
|
22
24
|
metricMonitorOptions: data.metricAlias
|
|
23
25
|
? {
|
|
24
|
-
metricAggregationType:
|
|
26
|
+
metricAggregationType: metricAggregationType,
|
|
25
27
|
metricAlias: data.metricAlias,
|
|
26
28
|
thresholdUnit: data.thresholdUnit,
|
|
27
29
|
}
|
|
@@ -66,7 +68,7 @@ function buildCriteria(data) {
|
|
|
66
68
|
value: data.threshold,
|
|
67
69
|
metricMonitorOptions: data.metricAlias
|
|
68
70
|
? {
|
|
69
|
-
metricAggregationType:
|
|
71
|
+
metricAggregationType: metricAggregationType,
|
|
70
72
|
metricAlias: data.metricAlias,
|
|
71
73
|
thresholdUnit: data.thresholdUnit,
|
|
72
74
|
}
|
|
@@ -79,7 +81,8 @@ function buildCriteria(data) {
|
|
|
79
81
|
createIncidents: false,
|
|
80
82
|
createAlerts: false,
|
|
81
83
|
name: "Healthy",
|
|
82
|
-
description:
|
|
84
|
+
description: data.healthyDescription ||
|
|
85
|
+
`The RUM signal for ${data.args.monitorName} is within its recommended threshold.`,
|
|
83
86
|
};
|
|
84
87
|
const criteria = new MonitorCriteria();
|
|
85
88
|
criteria.data = {
|
|
@@ -320,14 +323,207 @@ const unhandledExceptionsTemplate = {
|
|
|
320
323
|
return step;
|
|
321
324
|
},
|
|
322
325
|
};
|
|
326
|
+
// The unit the percent series are posted in, and so the one to read them in.
|
|
327
|
+
const SESSION_REPLAY_BUDGET_PERCENT_UNIT = "%";
|
|
328
|
+
function buildSessionReplayBudgetTemplate(data) {
|
|
329
|
+
return {
|
|
330
|
+
id: data.id,
|
|
331
|
+
name: data.name,
|
|
332
|
+
description: data.description,
|
|
333
|
+
category: "Session Replay",
|
|
334
|
+
severity: data.severity,
|
|
335
|
+
monitorType: MonitorType.Metrics,
|
|
336
|
+
requirement: data.requirement,
|
|
337
|
+
getMonitorStep: (args) => {
|
|
338
|
+
const step = MonitorStep.getDefaultMonitorStep({
|
|
339
|
+
monitorName: args.monitorName,
|
|
340
|
+
monitorType: MonitorType.Metrics,
|
|
341
|
+
onlineMonitorStatusId: args.onlineMonitorStatusId,
|
|
342
|
+
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
343
|
+
defaultIncidentSeverityId: args.defaultIncidentSeverityId,
|
|
344
|
+
defaultAlertSeverityId: args.defaultAlertSeverityId,
|
|
345
|
+
});
|
|
346
|
+
step.setMetricMonitor({
|
|
347
|
+
telemetryServiceIds: [new ObjectID(args.rumApplicationId)],
|
|
348
|
+
rollingTime: RollingTime.Past15Minutes,
|
|
349
|
+
metricViewConfig: {
|
|
350
|
+
queryConfigs: [
|
|
351
|
+
{
|
|
352
|
+
metricAliasData: {
|
|
353
|
+
metricVariable: data.metricAlias,
|
|
354
|
+
title: data.name,
|
|
355
|
+
description: data.description,
|
|
356
|
+
legend: data.name,
|
|
357
|
+
legendUnit: SESSION_REPLAY_BUDGET_PERCENT_UNIT,
|
|
358
|
+
},
|
|
359
|
+
metricQueryData: {
|
|
360
|
+
filterData: {
|
|
361
|
+
metricName: data.metricName,
|
|
362
|
+
attributes: {},
|
|
363
|
+
aggegationType: MetricsAggregationType.Max,
|
|
364
|
+
aggregateBy: {},
|
|
365
|
+
},
|
|
366
|
+
},
|
|
367
|
+
},
|
|
368
|
+
],
|
|
369
|
+
formulaConfigs: [],
|
|
370
|
+
},
|
|
371
|
+
});
|
|
372
|
+
step.setMonitorCriteria(buildCriteria({
|
|
373
|
+
args: args,
|
|
374
|
+
checkOn: CheckOn.MetricValue,
|
|
375
|
+
unhealthyFilterType: FilterType.GreaterThanOrEqualTo,
|
|
376
|
+
healthyFilterType: FilterType.LessThan,
|
|
377
|
+
threshold: data.threshold,
|
|
378
|
+
/*
|
|
379
|
+
* Load-bearing: without the alias no metricMonitorOptions are
|
|
380
|
+
* written, and the window silently falls back to All Values.
|
|
381
|
+
*/
|
|
382
|
+
metricAlias: data.metricAlias,
|
|
383
|
+
thresholdUnit: SESSION_REPLAY_BUDGET_PERCENT_UNIT,
|
|
384
|
+
metricAggregationType: EvaluateOverTimeType.MaximumValue,
|
|
385
|
+
unhealthyName: `${data.name} - ${data.thresholdLabel}`,
|
|
386
|
+
unhealthyDescription: data.breachDescription,
|
|
387
|
+
incidentTitle: `[RUM] ${data.incidentHeadline} - ${args.monitorName}`,
|
|
388
|
+
incidentDescription: data.getIncidentDescription(args.monitorName),
|
|
389
|
+
healthyDescription: `Session replay budget use for ${args.monitorName} is below the alert threshold.`,
|
|
390
|
+
}));
|
|
391
|
+
return step;
|
|
392
|
+
},
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
/*
|
|
396
|
+
* The incident descriptions only name levers that take effect BEFORE a byte
|
|
397
|
+
* is charged - the allowed origins and the sample percentage are checked
|
|
398
|
+
* ahead of the charge, and "On error or frustration" keeps ordinary sessions
|
|
399
|
+
* from uploading at all - because a setting that acts on what was already
|
|
400
|
+
* uploaded (retention, deleting recordings) gives none of the budget back.
|
|
401
|
+
* The daily limit itself cannot be raised from the dashboard, only by the
|
|
402
|
+
* deployment.
|
|
403
|
+
*/
|
|
404
|
+
const sessionReplayBudgetTemplates = [
|
|
405
|
+
buildSessionReplayBudgetTemplate({
|
|
406
|
+
id: "rum-session-replay-daily-budget-nearly-spent",
|
|
407
|
+
name: "Session Replay Daily Budget Nearly Spent",
|
|
408
|
+
description: "Alert when the project's session replay uploads today reach 80% of its daily limit, before recorders are told to stop. The limit is shared by every application in the project and resets at 00:00 UTC, so one of these monitors covers them all.",
|
|
409
|
+
severity: "Warning",
|
|
410
|
+
requirement: "SessionReplayRecording",
|
|
411
|
+
metricName: SessionReplayBudgetMetricType.ProjectDailyUsedPercent,
|
|
412
|
+
metricAlias: "rum_replay_daily_budget_used",
|
|
413
|
+
threshold: 80,
|
|
414
|
+
thresholdLabel: "80% or more used",
|
|
415
|
+
breachDescription: "Triggers when the project's session replay uploads today reach 80% of its daily limit at any point in the last 15 minutes.",
|
|
416
|
+
incidentHeadline: "Project's daily session replay budget nearly spent",
|
|
417
|
+
getIncidentDescription: () => {
|
|
418
|
+
return "This project has used 80% of today's session replay upload limit, which all of its RUM applications share. At 100% every recorder in the project is told to stop until 00:00 UTC. To make the rest of the day last, open the Replay Policy page of the busiest applications and lower the Sample percentage, upload only On error or frustration, or narrow the Allowed origins so staging traffic stops spending it. Self-hosted: the limit is SESSION_REPLAY_MAX_BYTES_PER_PROJECT_PER_DAY.";
|
|
419
|
+
},
|
|
420
|
+
}),
|
|
421
|
+
buildSessionReplayBudgetTemplate({
|
|
422
|
+
id: "rum-session-replay-daily-budget-spent",
|
|
423
|
+
name: "Session Replay Daily Budget Spent",
|
|
424
|
+
description: "Alert when the project's daily session replay limit is spent: every recorder in the project has been told to stop until 00:00 UTC. The limit is shared by every application in the project, so one of these monitors covers them all.",
|
|
425
|
+
severity: "Critical",
|
|
426
|
+
requirement: "SessionReplayRecording",
|
|
427
|
+
metricName: SessionReplayBudgetMetricType.ProjectDailyUsedPercent,
|
|
428
|
+
metricAlias: "rum_replay_daily_budget_used",
|
|
429
|
+
threshold: 100,
|
|
430
|
+
thresholdLabel: "100% used",
|
|
431
|
+
breachDescription: "Triggers when the project's session replay uploads today reach 100% of its daily limit at any point in the last 15 minutes.",
|
|
432
|
+
incidentHeadline: "Session replay paused: project's daily budget spent",
|
|
433
|
+
getIncidentDescription: () => {
|
|
434
|
+
return "This project has spent today's session replay upload limit, which all of its RUM applications share: every recorder in the project has been told to stop, and nothing more is recorded until 00:00 UTC. This resolves on its own at about 00:10-00:15 UTC, once the last reading over the limit has left the monitor's 15-minute window. To make tomorrow's limit last, lower the Sample percentage, upload only On error or frustration, or narrow the Allowed origins on the busiest applications' Replay Policy page. Self-hosted: the limit is SESSION_REPLAY_MAX_BYTES_PER_PROJECT_PER_DAY.";
|
|
435
|
+
},
|
|
436
|
+
}),
|
|
437
|
+
buildSessionReplayBudgetTemplate({
|
|
438
|
+
id: "rum-session-replay-monthly-budget-nearly-spent",
|
|
439
|
+
name: "Session Replay Monthly Budget Nearly Spent",
|
|
440
|
+
description: "Alert when this application's session replay uploads this month reach 80% of its monthly budget, before its recorders are told to stop for the rest of the month (UTC).",
|
|
441
|
+
severity: "Warning",
|
|
442
|
+
requirement: "SessionReplayMonthlyBudget",
|
|
443
|
+
metricName: SessionReplayBudgetMetricType.ApplicationMonthlyUsedPercent,
|
|
444
|
+
metricAlias: "rum_replay_monthly_budget_used",
|
|
445
|
+
threshold: 80,
|
|
446
|
+
thresholdLabel: "80% or more used",
|
|
447
|
+
breachDescription: "Triggers when this application's session replay uploads this month reach 80% of its monthly budget at any point in the last 15 minutes.",
|
|
448
|
+
incidentHeadline: "Monthly session replay budget nearly spent",
|
|
449
|
+
getIncidentDescription: (monitorName) => {
|
|
450
|
+
return `${monitorName} has used 80% of its monthly session replay budget. At 100% its recorders are told to stop until the 1st of next month (UTC). Raise the Monthly budget on its Replay Policy page, lower the Sample percentage, or upload only On error or frustration.`;
|
|
451
|
+
},
|
|
452
|
+
}),
|
|
453
|
+
buildSessionReplayBudgetTemplate({
|
|
454
|
+
id: "rum-session-replay-monthly-budget-spent",
|
|
455
|
+
name: "Session Replay Monthly Budget Spent",
|
|
456
|
+
description: "Alert when this application's monthly session replay budget is spent: its recorders have been told to stop until the 1st of next month (UTC) or until the budget is raised.",
|
|
457
|
+
severity: "Critical",
|
|
458
|
+
requirement: "SessionReplayMonthlyBudget",
|
|
459
|
+
metricName: SessionReplayBudgetMetricType.ApplicationMonthlyUsedPercent,
|
|
460
|
+
metricAlias: "rum_replay_monthly_budget_used",
|
|
461
|
+
threshold: 100,
|
|
462
|
+
thresholdLabel: "100% used",
|
|
463
|
+
breachDescription: "Triggers when this application's session replay uploads this month reach 100% of its monthly budget at any point in the last 15 minutes.",
|
|
464
|
+
incidentHeadline: "Session replay paused: monthly budget spent",
|
|
465
|
+
getIncidentDescription: (monitorName) => {
|
|
466
|
+
return `${monitorName} has spent its monthly session replay budget: its recorders have been told to stop, and nothing more is recorded until the 1st of next month (UTC) or until the budget is raised on its Replay Policy page. This resolves on its own.`;
|
|
467
|
+
},
|
|
468
|
+
}),
|
|
469
|
+
];
|
|
323
470
|
const ALL_RUM_ALERT_TEMPLATES = [
|
|
324
471
|
...webVitalTemplates,
|
|
325
472
|
failedUserOperationsTemplate,
|
|
326
473
|
unhandledExceptionsTemplate,
|
|
474
|
+
...sessionReplayBudgetTemplates,
|
|
327
475
|
];
|
|
476
|
+
/*
|
|
477
|
+
* Every template this module ships, whatever the application - the set that
|
|
478
|
+
* resolving an id and the catalog-wide invariants have to run over. What to
|
|
479
|
+
* offer ONE application is getRumAlertTemplates.
|
|
480
|
+
*/
|
|
328
481
|
export function getAllRumAlertTemplates() {
|
|
329
482
|
return [...ALL_RUM_ALERT_TEMPLATES];
|
|
330
483
|
}
|
|
484
|
+
/*
|
|
485
|
+
* Whether one application meets a template's requirement. Only an explicit
|
|
486
|
+
* `true` (and a real budget) counts: unknown is never read as yes.
|
|
487
|
+
*/
|
|
488
|
+
function isRequirementMet(data) {
|
|
489
|
+
var _a, _b, _c;
|
|
490
|
+
if (!data.requirement) {
|
|
491
|
+
return true;
|
|
492
|
+
}
|
|
493
|
+
const isRecording = ((_a = data.context) === null || _a === void 0 ? void 0 : _a.sessionReplayEnabled) === true &&
|
|
494
|
+
((_b = data.context) === null || _b === void 0 ? void 0 : _b.sessionReplayHasRecorded) === true;
|
|
495
|
+
const budgetInGB = (_c = data.context) === null || _c === void 0 ? void 0 : _c.sessionReplayMonthlyBudgetInGB;
|
|
496
|
+
switch (data.requirement) {
|
|
497
|
+
case "SessionReplayRecording":
|
|
498
|
+
return isRecording;
|
|
499
|
+
case "SessionReplayMonthlyBudget":
|
|
500
|
+
return (isRecording &&
|
|
501
|
+
typeof budgetInGB === "number" &&
|
|
502
|
+
Number.isFinite(budgetInGB) &&
|
|
503
|
+
budgetInGB > 0);
|
|
504
|
+
default:
|
|
505
|
+
return false;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
/*
|
|
509
|
+
* The templates to offer ONE application, given what is known about it.
|
|
510
|
+
*
|
|
511
|
+
* Every template without a requirement, always. The session replay budget
|
|
512
|
+
* pairs only once their series can exist (see the storage budget comment
|
|
513
|
+
* above): the daily pair once the application has session replay on and has
|
|
514
|
+
* recorded, the monthly pair once it also has a Monthly budget. No context,
|
|
515
|
+
* or a field that is null or undefined, withholds them - so what an unknown
|
|
516
|
+
* application is offered is exactly the set every application was offered
|
|
517
|
+
* before they existed.
|
|
518
|
+
*/
|
|
519
|
+
export function getRumAlertTemplates(context) {
|
|
520
|
+
return ALL_RUM_ALERT_TEMPLATES.filter((template) => {
|
|
521
|
+
return isRequirementMet({
|
|
522
|
+
requirement: template.requirement,
|
|
523
|
+
context: context,
|
|
524
|
+
});
|
|
525
|
+
});
|
|
526
|
+
}
|
|
331
527
|
export function getRumAlertTemplateById(id) {
|
|
332
528
|
return ALL_RUM_ALERT_TEMPLATES.find((template) => {
|
|
333
529
|
return template.id === id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RumAlertTemplates.js","sourceRoot":"","sources":["../../../../Types/Monitor/RumAlertTemplates.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RumAlertTemplates.js","sourceRoot":"","sources":["../../../../Types/Monitor/RumAlertTemplates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The infrastructure resources a resource AI agent can give OneUptime AI
|
|
3
|
+
* access to, and what each one's agent runs.
|
|
4
|
+
*
|
|
5
|
+
* One resource AI agent (image RESOURCE_AI_AGENT_IMAGE_REPOSITORY) is
|
|
6
|
+
* installed next to each resource's telemetry collector. It registers the
|
|
7
|
+
* resource by the same identity the collector reports (identityEnvVars), and
|
|
8
|
+
* runs only the programs listed for its type — every command an argv, never
|
|
9
|
+
* a shell line, tiered by the resource command policy
|
|
10
|
+
* (Utils/AiRemediation/Resource) on the server tool, at the enqueue
|
|
11
|
+
* chokepoint and again on the agent before anything is spawned.
|
|
12
|
+
*
|
|
13
|
+
* Kubernetes clusters are NOT here: they keep their own Kubernetes AI agent
|
|
14
|
+
* (Types/Kubernetes/KubernetesClusterAiAccess).
|
|
15
|
+
*
|
|
16
|
+
* This file imports NOTHING outside Types/ResourceAiAgent on purpose: the
|
|
17
|
+
* resource AI agent (agents/ResourceAIAgent) carries a byte-identical copy of
|
|
18
|
+
* this directory and must compile without the rest of Common.
|
|
19
|
+
*/
|
|
20
|
+
/*
|
|
21
|
+
* Stored as a plain string (ResourceAiAgent.resourceType, RunnerJob and
|
|
22
|
+
* AutoRemediationSuggestion rows, job payloads), so each value IS the wire
|
|
23
|
+
* and database contract: never rename one.
|
|
24
|
+
*/
|
|
25
|
+
var AiResourceType;
|
|
26
|
+
(function (AiResourceType) {
|
|
27
|
+
AiResourceType["DockerHost"] = "DockerHost";
|
|
28
|
+
AiResourceType["PodmanHost"] = "PodmanHost";
|
|
29
|
+
AiResourceType["DockerSwarmCluster"] = "DockerSwarmCluster";
|
|
30
|
+
AiResourceType["ProxmoxCluster"] = "ProxmoxCluster";
|
|
31
|
+
AiResourceType["VMwareVCenter"] = "VMwareVCenter";
|
|
32
|
+
AiResourceType["CephCluster"] = "CephCluster";
|
|
33
|
+
AiResourceType["DatabaseServer"] = "DatabaseServer";
|
|
34
|
+
AiResourceType["Host"] = "Host";
|
|
35
|
+
})(AiResourceType || (AiResourceType = {}));
|
|
36
|
+
export default AiResourceType;
|
|
37
|
+
/*
|
|
38
|
+
* Every type, in declaration order. This is also the priority order in
|
|
39
|
+
* which a remediation round picks among several resources linked to one
|
|
40
|
+
* incident or alert, so reordering it changes which resource AI fixes first.
|
|
41
|
+
*/
|
|
42
|
+
export const ALL_AI_RESOURCE_TYPES = [
|
|
43
|
+
AiResourceType.DockerHost,
|
|
44
|
+
AiResourceType.PodmanHost,
|
|
45
|
+
AiResourceType.DockerSwarmCluster,
|
|
46
|
+
AiResourceType.ProxmoxCluster,
|
|
47
|
+
AiResourceType.VMwareVCenter,
|
|
48
|
+
AiResourceType.CephCluster,
|
|
49
|
+
AiResourceType.DatabaseServer,
|
|
50
|
+
AiResourceType.Host,
|
|
51
|
+
];
|
|
52
|
+
// Exactly an enum value, case included — what a stored row must hold.
|
|
53
|
+
export function isAiResourceType(value) {
|
|
54
|
+
return (typeof value === "string" &&
|
|
55
|
+
ALL_AI_RESOURCE_TYPES.includes(value));
|
|
56
|
+
}
|
|
57
|
+
// The CLIs a Host agent runs through nsenter on the host itself.
|
|
58
|
+
const HOST_PROGRAMS = [
|
|
59
|
+
"systemctl",
|
|
60
|
+
"journalctl",
|
|
61
|
+
"df",
|
|
62
|
+
"free",
|
|
63
|
+
"uptime",
|
|
64
|
+
"ps",
|
|
65
|
+
"ss",
|
|
66
|
+
"ip",
|
|
67
|
+
"dmesg",
|
|
68
|
+
"lsblk",
|
|
69
|
+
"cat",
|
|
70
|
+
"top",
|
|
71
|
+
"uname",
|
|
72
|
+
"hostnamectl",
|
|
73
|
+
"timedatectl",
|
|
74
|
+
"kill",
|
|
75
|
+
];
|
|
76
|
+
export const AI_RESOURCE_TYPE_INFO = {
|
|
77
|
+
[AiResourceType.DockerHost]: {
|
|
78
|
+
type: AiResourceType.DockerHost,
|
|
79
|
+
displayName: "Docker host",
|
|
80
|
+
agentDisplayName: "Docker AI agent",
|
|
81
|
+
agentAlias: "docker",
|
|
82
|
+
programs: ["docker"],
|
|
83
|
+
testCommands: ["docker version", "docker info"],
|
|
84
|
+
identityEnvVars: ["DOCKER_HOST_NAME"],
|
|
85
|
+
defaultIdentityPlaceholders: ["docker-host"],
|
|
86
|
+
},
|
|
87
|
+
/*
|
|
88
|
+
* Podman serves the Docker-compatible API on its socket, so the agent
|
|
89
|
+
* drives it with the same docker CLI and the same engine policy.
|
|
90
|
+
*/
|
|
91
|
+
[AiResourceType.PodmanHost]: {
|
|
92
|
+
type: AiResourceType.PodmanHost,
|
|
93
|
+
displayName: "Podman host",
|
|
94
|
+
agentDisplayName: "Podman AI agent",
|
|
95
|
+
agentAlias: "podman",
|
|
96
|
+
programs: ["docker"],
|
|
97
|
+
testCommands: ["docker version", "docker info"],
|
|
98
|
+
identityEnvVars: ["PODMAN_HOST_NAME"],
|
|
99
|
+
defaultIdentityPlaceholders: ["podman-host"],
|
|
100
|
+
},
|
|
101
|
+
/*
|
|
102
|
+
* The swarm agent must run on a manager node: `docker node ls` fails on a
|
|
103
|
+
* worker, which is exactly what "Test connection" should reveal.
|
|
104
|
+
*/
|
|
105
|
+
[AiResourceType.DockerSwarmCluster]: {
|
|
106
|
+
type: AiResourceType.DockerSwarmCluster,
|
|
107
|
+
displayName: "Docker Swarm cluster",
|
|
108
|
+
agentDisplayName: "Docker Swarm AI agent",
|
|
109
|
+
agentAlias: "docker-swarm",
|
|
110
|
+
programs: ["docker"],
|
|
111
|
+
testCommands: ["docker version", "docker node ls"],
|
|
112
|
+
identityEnvVars: ["DOCKER_SWARM_CLUSTER_NAME"],
|
|
113
|
+
// The compose default, and the name install.sh suggests.
|
|
114
|
+
defaultIdentityPlaceholders: ["docker-swarm", "my-swarm"],
|
|
115
|
+
},
|
|
116
|
+
/*
|
|
117
|
+
* There is no Proxmox CLI in the agent: "pvesh" is parsed by the policy
|
|
118
|
+
* and executed as calls to the Proxmox VE HTTPS API with the agent's own
|
|
119
|
+
* API token.
|
|
120
|
+
*/
|
|
121
|
+
[AiResourceType.ProxmoxCluster]: {
|
|
122
|
+
type: AiResourceType.ProxmoxCluster,
|
|
123
|
+
displayName: "Proxmox cluster",
|
|
124
|
+
agentDisplayName: "Proxmox AI agent",
|
|
125
|
+
agentAlias: "proxmox",
|
|
126
|
+
programs: ["pvesh"],
|
|
127
|
+
testCommands: ["pvesh get /version", "pvesh get /cluster/status"],
|
|
128
|
+
identityEnvVars: ["PROXMOX_CLUSTER_NAME"],
|
|
129
|
+
defaultIdentityPlaceholders: ["proxmox-cluster"],
|
|
130
|
+
},
|
|
131
|
+
[AiResourceType.VMwareVCenter]: {
|
|
132
|
+
type: AiResourceType.VMwareVCenter,
|
|
133
|
+
displayName: "VMware vCenter",
|
|
134
|
+
agentDisplayName: "VMware AI agent",
|
|
135
|
+
agentAlias: "vmware",
|
|
136
|
+
programs: ["govc"],
|
|
137
|
+
testCommands: ["govc about"],
|
|
138
|
+
identityEnvVars: ["VMWARE_VCENTER_NAME"],
|
|
139
|
+
defaultIdentityPlaceholders: ["vmware-vcenter"],
|
|
140
|
+
},
|
|
141
|
+
[AiResourceType.CephCluster]: {
|
|
142
|
+
type: AiResourceType.CephCluster,
|
|
143
|
+
displayName: "Ceph cluster",
|
|
144
|
+
agentDisplayName: "Ceph AI agent",
|
|
145
|
+
agentAlias: "ceph",
|
|
146
|
+
programs: ["ceph"],
|
|
147
|
+
testCommands: ["ceph health", "ceph versions"],
|
|
148
|
+
identityEnvVars: ["CEPH_CLUSTER_NAME"],
|
|
149
|
+
defaultIdentityPlaceholders: ["ceph"],
|
|
150
|
+
},
|
|
151
|
+
/*
|
|
152
|
+
* "db" is not a binary: it names a typed catalog of diagnostic queries the
|
|
153
|
+
* agent runs through the database's own driver. Free SQL never runs.
|
|
154
|
+
* Database servers register by id or endpoint, never by name (names are
|
|
155
|
+
* not unique), so there is no placeholder to warn about.
|
|
156
|
+
*/
|
|
157
|
+
[AiResourceType.DatabaseServer]: {
|
|
158
|
+
type: AiResourceType.DatabaseServer,
|
|
159
|
+
displayName: "Database server",
|
|
160
|
+
agentDisplayName: "Database AI agent",
|
|
161
|
+
agentAlias: "database",
|
|
162
|
+
programs: ["db"],
|
|
163
|
+
testCommands: ["db ping", "db version"],
|
|
164
|
+
identityEnvVars: [
|
|
165
|
+
"DATABASE_SERVER_ID",
|
|
166
|
+
"DATABASE_SYSTEM",
|
|
167
|
+
"DATABASE_SERVER_ADDRESS",
|
|
168
|
+
"DATABASE_SERVER_PORT",
|
|
169
|
+
],
|
|
170
|
+
defaultIdentityPlaceholders: [],
|
|
171
|
+
},
|
|
172
|
+
// HOST_NAME defaults to the host's own hostname, so there is no placeholder.
|
|
173
|
+
[AiResourceType.Host]: {
|
|
174
|
+
type: AiResourceType.Host,
|
|
175
|
+
displayName: "Host",
|
|
176
|
+
agentDisplayName: "Host AI agent",
|
|
177
|
+
agentAlias: "host",
|
|
178
|
+
programs: HOST_PROGRAMS,
|
|
179
|
+
testCommands: ["uptime", "systemctl list-units --failed --no-pager"],
|
|
180
|
+
identityEnvVars: ["HOST_NAME"],
|
|
181
|
+
defaultIdentityPlaceholders: [],
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
export function getAiResourceTypeInfo(type) {
|
|
185
|
+
return AI_RESOURCE_TYPE_INFO[type];
|
|
186
|
+
}
|
|
187
|
+
/*
|
|
188
|
+
* Words an operator may set ONEUPTIME_AI_AGENT_RESOURCE_TYPE to besides the
|
|
189
|
+
* agentAlias itself. Compared after trimming, lowercasing and reading "_"
|
|
190
|
+
* as "-".
|
|
191
|
+
*/
|
|
192
|
+
const EXTRA_AGENT_ALIASES = {
|
|
193
|
+
swarm: AiResourceType.DockerSwarmCluster,
|
|
194
|
+
vcenter: AiResourceType.VMwareVCenter,
|
|
195
|
+
db: AiResourceType.DatabaseServer,
|
|
196
|
+
};
|
|
197
|
+
/*
|
|
198
|
+
* Read a resource type from configuration or a request: an enum value in
|
|
199
|
+
* any case ("DockerHost", "dockerhost"), or an agent alias ("docker",
|
|
200
|
+
* "podman", "docker-swarm"/"swarm", "proxmox", "vmware"/"vcenter", "ceph",
|
|
201
|
+
* "database"/"db", "host"). Anything else is null — never a guess.
|
|
202
|
+
*/
|
|
203
|
+
export function parseAiResourceType(value) {
|
|
204
|
+
if (typeof value !== "string") {
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
const trimmed = value.trim();
|
|
208
|
+
if (!trimmed) {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
const folded = trimmed.toLowerCase();
|
|
212
|
+
for (const type of ALL_AI_RESOURCE_TYPES) {
|
|
213
|
+
if (type.toLowerCase() === folded) {
|
|
214
|
+
return type;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
const alias = folded.replace(/_/g, "-");
|
|
218
|
+
for (const type of ALL_AI_RESOURCE_TYPES) {
|
|
219
|
+
if (AI_RESOURCE_TYPE_INFO[type].agentAlias === alias) {
|
|
220
|
+
return type;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
if (Object.prototype.hasOwnProperty.call(EXTRA_AGENT_ALIASES, alias)) {
|
|
224
|
+
return EXTRA_AGENT_ALIASES[alias] || null;
|
|
225
|
+
}
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
/*
|
|
229
|
+
* Whether an agent's identity is one of its collector's defaults, compared
|
|
230
|
+
* the way the resource rows are looked up (trimmed, case-insensitively). The
|
|
231
|
+
* agent warns on true; it never refuses.
|
|
232
|
+
*/
|
|
233
|
+
export function isDefaultIdentityPlaceholder(type, identifier) {
|
|
234
|
+
if (typeof identifier !== "string" || !isAiResourceType(type)) {
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
const folded = identifier.trim().toLowerCase();
|
|
238
|
+
return AI_RESOURCE_TYPE_INFO[type].defaultIdentityPlaceholders.some((placeholder) => {
|
|
239
|
+
return placeholder.toLowerCase() === folded;
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=AiResourceType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AiResourceType.js","sourceRoot":"","sources":["../../../../Types/ResourceAiAgent/AiResourceType.ts"],"names":[],"mappings":"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"}
|