@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
|
@@ -3,7 +3,15 @@ import CephClusterLabelRuleEngineService from "./CephClusterLabelRuleEngineServi
|
|
|
3
3
|
import CephClusterOwnerRuleEngineService from "./CephClusterOwnerRuleEngineService";
|
|
4
4
|
import Model from "../../Models/DatabaseModels/CephCluster";
|
|
5
5
|
import Label from "../../Models/DatabaseModels/Label";
|
|
6
|
-
import { OnCreate, OnUpdate } from "../Types/Database/Hooks";
|
|
6
|
+
import { OnCreate, OnDelete, OnUpdate } from "../Types/Database/Hooks";
|
|
7
|
+
import CreateBy from "../Types/Database/CreateBy";
|
|
8
|
+
import DeleteBy from "../Types/Database/DeleteBy";
|
|
9
|
+
import UpdateBy from "../Types/Database/UpdateBy";
|
|
10
|
+
import ResourceAiAccessSettings, {
|
|
11
|
+
ResourceAiAccessFeedItem,
|
|
12
|
+
} from "../Utils/AI/ResourceAccess/ResourceAiAccessSettings";
|
|
13
|
+
import ResourceAiDeleteCleanup from "../Utils/AI/ResourceAccess/ResourceAiDeleteCleanup";
|
|
14
|
+
import AiResourceType from "../../Types/ResourceAiAgent/AiResourceType";
|
|
7
15
|
import CephClusterFeedService from "./CephClusterFeedService";
|
|
8
16
|
import { CephClusterFeedEventType } from "../../Models/DatabaseModels/CephClusterFeed";
|
|
9
17
|
import ResourceFeedUtil from "../Utils/ResourceFeed/ResourceFeedUtil";
|
|
@@ -503,6 +511,79 @@ export class Service extends DatabaseService<Model> {
|
|
|
503
511
|
});
|
|
504
512
|
}
|
|
505
513
|
|
|
514
|
+
/*
|
|
515
|
+
* Deleting a Ceph cluster settles its in-flight AI remediation rounds and
|
|
516
|
+
* removes its resource AI agent — read before the delete, done after it for
|
|
517
|
+
* the Ceph clusters actually deleted (ResourceAiDeleteCleanup, shared by
|
|
518
|
+
* every resource AI agent's resource).
|
|
519
|
+
*/
|
|
520
|
+
@CaptureSpan()
|
|
521
|
+
protected override async onBeforeDelete(
|
|
522
|
+
deleteBy: DeleteBy<Model>,
|
|
523
|
+
): Promise<OnDelete<Model>> {
|
|
524
|
+
return {
|
|
525
|
+
deleteBy,
|
|
526
|
+
carryForward: await ResourceAiDeleteCleanup.beforeDelete({
|
|
527
|
+
resourceType: AiResourceType.CephCluster,
|
|
528
|
+
service: this,
|
|
529
|
+
deleteBy,
|
|
530
|
+
}),
|
|
531
|
+
};
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
@CaptureSpan()
|
|
535
|
+
protected override async onDeleteSuccess(
|
|
536
|
+
onDelete: OnDelete<Model>,
|
|
537
|
+
deletedItemIds: Array<ObjectID>,
|
|
538
|
+
): Promise<OnDelete<Model>> {
|
|
539
|
+
await ResourceAiDeleteCleanup.afterDelete({
|
|
540
|
+
resourceType: AiResourceType.CephCluster,
|
|
541
|
+
onDelete,
|
|
542
|
+
deletedItemIds,
|
|
543
|
+
});
|
|
544
|
+
|
|
545
|
+
return onDelete;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
/*
|
|
549
|
+
* A create is held to the same AI access rules as an update, judged
|
|
550
|
+
* against the never-configured defaults a new Ceph cluster starts from: an
|
|
551
|
+
* unusable mode or allowlist is refused for every caller, and the
|
|
552
|
+
* server-only aiAccess* columns for every caller but root (a master admin
|
|
553
|
+
* included, whom the create column ACLs never check).
|
|
554
|
+
*/
|
|
555
|
+
@CaptureSpan()
|
|
556
|
+
protected override async onBeforeCreate(
|
|
557
|
+
createBy: CreateBy<Model>,
|
|
558
|
+
): Promise<OnCreate<Model>> {
|
|
559
|
+
ResourceAiAccessSettings.checkCreate({
|
|
560
|
+
resourceType: AiResourceType.CephCluster,
|
|
561
|
+
createBy,
|
|
562
|
+
});
|
|
563
|
+
|
|
564
|
+
return { createBy, carryForward: null };
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/*
|
|
568
|
+
* An operator's write of an AI access setting (the investigation switch, the
|
|
569
|
+
* remediation mode, the command allowlist) is validated and checked against
|
|
570
|
+
* who may make AI do more on this Ceph cluster — the rules every resource AI
|
|
571
|
+
* agent's resource shares (ResourceAiAccessSettings).
|
|
572
|
+
*/
|
|
573
|
+
@CaptureSpan()
|
|
574
|
+
protected override async onBeforeUpdate(
|
|
575
|
+
updateBy: UpdateBy<Model>,
|
|
576
|
+
): Promise<OnUpdate<Model>> {
|
|
577
|
+
return {
|
|
578
|
+
updateBy,
|
|
579
|
+
carryForward: await ResourceAiAccessSettings.checkUpdate({
|
|
580
|
+
resourceType: AiResourceType.CephCluster,
|
|
581
|
+
service: this,
|
|
582
|
+
updateBy,
|
|
583
|
+
}),
|
|
584
|
+
};
|
|
585
|
+
}
|
|
586
|
+
|
|
506
587
|
@CaptureSpan()
|
|
507
588
|
protected override async onUpdateSuccess(
|
|
508
589
|
onUpdate: OnUpdate<Model>,
|
|
@@ -514,6 +595,33 @@ export class Service extends DatabaseService<Model> {
|
|
|
514
595
|
},
|
|
515
596
|
);
|
|
516
597
|
|
|
598
|
+
/*
|
|
599
|
+
* An operator's AI access write: recorded on the feed, and the Ceph cluster
|
|
600
|
+
* marked AI-configured.
|
|
601
|
+
*/
|
|
602
|
+
await ResourceAiAccessSettings.afterUpdate({
|
|
603
|
+
service: this,
|
|
604
|
+
onUpdate,
|
|
605
|
+
updatedItemIds,
|
|
606
|
+
getResourceMarkdownLink: (
|
|
607
|
+
projectId: ObjectID,
|
|
608
|
+
cephClusterId: ObjectID,
|
|
609
|
+
): Promise<string> => {
|
|
610
|
+
return this.getCephClusterMarkdownLink(projectId, cephClusterId);
|
|
611
|
+
},
|
|
612
|
+
createFeedItem: async (item: ResourceAiAccessFeedItem): Promise<void> => {
|
|
613
|
+
await CephClusterFeedService.createCephClusterFeedItem({
|
|
614
|
+
cephClusterId: item.resourceId,
|
|
615
|
+
projectId: item.projectId,
|
|
616
|
+
cephClusterFeedEventType: CephClusterFeedEventType.CephClusterUpdated,
|
|
617
|
+
displayColor: item.displayColor,
|
|
618
|
+
feedInfoInMarkdown: item.feedInfoInMarkdown,
|
|
619
|
+
moreInformationInMarkdown: item.moreInformationInMarkdown,
|
|
620
|
+
userId: item.userId,
|
|
621
|
+
});
|
|
622
|
+
},
|
|
623
|
+
});
|
|
624
|
+
|
|
517
625
|
return onUpdate;
|
|
518
626
|
}
|
|
519
627
|
|
|
@@ -22,10 +22,17 @@ import PodmanHost from "../../Models/DatabaseModels/PodmanHost";
|
|
|
22
22
|
import DatabaseConfig from "../DatabaseConfig";
|
|
23
23
|
import GlobalCache from "../Infrastructure/GlobalCache";
|
|
24
24
|
import CreateBy from "../Types/Database/CreateBy";
|
|
25
|
-
import
|
|
25
|
+
import DeleteBy from "../Types/Database/DeleteBy";
|
|
26
|
+
import { OnCreate, OnDelete, OnUpdate } from "../Types/Database/Hooks";
|
|
26
27
|
import ModelPermission from "../Types/Database/Permissions/Index";
|
|
27
28
|
import QueryHelper from "../Types/Database/QueryHelper";
|
|
28
29
|
import Select from "../Types/Database/Select";
|
|
30
|
+
import UpdateBy from "../Types/Database/UpdateBy";
|
|
31
|
+
import ResourceAiAccessSettings, {
|
|
32
|
+
ResourceAiAccessFeedItem,
|
|
33
|
+
} from "../Utils/AI/ResourceAccess/ResourceAiAccessSettings";
|
|
34
|
+
import ResourceAiDeleteCleanup from "../Utils/AI/ResourceAccess/ResourceAiDeleteCleanup";
|
|
35
|
+
import AiResourceType from "../../Types/ResourceAiAgent/AiResourceType";
|
|
29
36
|
import RelationIdUtil from "../Utils/Database/RelationIdUtil";
|
|
30
37
|
import {
|
|
31
38
|
truncateLongText,
|
|
@@ -335,6 +342,15 @@ export interface FindOrCreateDatabaseServerByEndpointData {
|
|
|
335
342
|
* its Created feed item says whether the Database Agent found it.
|
|
336
343
|
*/
|
|
337
344
|
collector?: DatabaseServerCollectorReport | undefined;
|
|
345
|
+
/*
|
|
346
|
+
* False when the caller only looks the row up and saw no traffic or
|
|
347
|
+
* telemetry: a resource AI agent registering names its database's
|
|
348
|
+
* endpoint without being evidence the database is in use. The owner is
|
|
349
|
+
* then returned as it is: its endpoint's lastMatchedAt does not move, its
|
|
350
|
+
* engine is not weighed, and a row discovery archived stays archived.
|
|
351
|
+
* Defaults to true.
|
|
352
|
+
*/
|
|
353
|
+
isSighting?: boolean | undefined;
|
|
338
354
|
}
|
|
339
355
|
|
|
340
356
|
export interface DatabaseServerCollectorReport {
|
|
@@ -488,6 +504,19 @@ export class Service extends DatabaseService<Model> {
|
|
|
488
504
|
protected override async onBeforeCreate(
|
|
489
505
|
createBy: CreateBy<Model>,
|
|
490
506
|
): Promise<OnCreate<Model>> {
|
|
507
|
+
/*
|
|
508
|
+
* A create is held to the same AI access rules as an update, judged
|
|
509
|
+
* against the never-configured defaults a new database starts from: an
|
|
510
|
+
* unusable mode or allowlist is refused for every caller, root included,
|
|
511
|
+
* and the server-only aiAccess* columns for every caller but root (a
|
|
512
|
+
* master admin included, whom the create column ACLs never check). It
|
|
513
|
+
* looks nothing up, so it may run before the permission check.
|
|
514
|
+
*/
|
|
515
|
+
ResourceAiAccessSettings.checkCreate({
|
|
516
|
+
resourceType: AiResourceType.DatabaseServer,
|
|
517
|
+
createBy,
|
|
518
|
+
});
|
|
519
|
+
|
|
491
520
|
if (createBy.props.isRoot) {
|
|
492
521
|
return { createBy: createBy, carryForward: null };
|
|
493
522
|
}
|
|
@@ -631,6 +660,60 @@ export class Service extends DatabaseService<Model> {
|
|
|
631
660
|
return createdItem;
|
|
632
661
|
}
|
|
633
662
|
|
|
663
|
+
/*
|
|
664
|
+
* Deleting a database server settles its in-flight AI remediation rounds and
|
|
665
|
+
* removes its resource AI agent — read before the delete, done after it for
|
|
666
|
+
* the database servers actually deleted (ResourceAiDeleteCleanup, shared by
|
|
667
|
+
* every resource AI agent's resource).
|
|
668
|
+
*/
|
|
669
|
+
@CaptureSpan()
|
|
670
|
+
protected override async onBeforeDelete(
|
|
671
|
+
deleteBy: DeleteBy<Model>,
|
|
672
|
+
): Promise<OnDelete<Model>> {
|
|
673
|
+
return {
|
|
674
|
+
deleteBy,
|
|
675
|
+
carryForward: await ResourceAiDeleteCleanup.beforeDelete({
|
|
676
|
+
resourceType: AiResourceType.DatabaseServer,
|
|
677
|
+
service: this,
|
|
678
|
+
deleteBy,
|
|
679
|
+
}),
|
|
680
|
+
};
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
@CaptureSpan()
|
|
684
|
+
protected override async onDeleteSuccess(
|
|
685
|
+
onDelete: OnDelete<Model>,
|
|
686
|
+
deletedItemIds: Array<ObjectID>,
|
|
687
|
+
): Promise<OnDelete<Model>> {
|
|
688
|
+
await ResourceAiDeleteCleanup.afterDelete({
|
|
689
|
+
resourceType: AiResourceType.DatabaseServer,
|
|
690
|
+
onDelete,
|
|
691
|
+
deletedItemIds,
|
|
692
|
+
});
|
|
693
|
+
|
|
694
|
+
return onDelete;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
/*
|
|
698
|
+
* An operator's write of an AI access setting (the investigation switch, the
|
|
699
|
+
* remediation mode, the command allowlist) is validated and checked against
|
|
700
|
+
* who may make AI do more on this database — the rules every resource AI
|
|
701
|
+
* agent's resource shares (ResourceAiAccessSettings).
|
|
702
|
+
*/
|
|
703
|
+
@CaptureSpan()
|
|
704
|
+
protected override async onBeforeUpdate(
|
|
705
|
+
updateBy: UpdateBy<Model>,
|
|
706
|
+
): Promise<OnUpdate<Model>> {
|
|
707
|
+
return {
|
|
708
|
+
updateBy,
|
|
709
|
+
carryForward: await ResourceAiAccessSettings.checkUpdate({
|
|
710
|
+
resourceType: AiResourceType.DatabaseServer,
|
|
711
|
+
service: this,
|
|
712
|
+
updateBy,
|
|
713
|
+
}),
|
|
714
|
+
};
|
|
715
|
+
}
|
|
716
|
+
|
|
634
717
|
@CaptureSpan()
|
|
635
718
|
protected override async onUpdateSuccess(
|
|
636
719
|
onUpdate: OnUpdate<Model>,
|
|
@@ -683,6 +766,34 @@ export class Service extends DatabaseService<Model> {
|
|
|
683
766
|
},
|
|
684
767
|
);
|
|
685
768
|
|
|
769
|
+
/*
|
|
770
|
+
* An operator's AI access write: recorded on the feed, and the database
|
|
771
|
+
* marked AI-configured.
|
|
772
|
+
*/
|
|
773
|
+
await ResourceAiAccessSettings.afterUpdate({
|
|
774
|
+
service: this,
|
|
775
|
+
onUpdate,
|
|
776
|
+
updatedItemIds,
|
|
777
|
+
getResourceMarkdownLink: (
|
|
778
|
+
projectId: ObjectID,
|
|
779
|
+
databaseServerId: ObjectID,
|
|
780
|
+
): Promise<string> => {
|
|
781
|
+
return this.getDatabaseServerMarkdownLink(projectId, databaseServerId);
|
|
782
|
+
},
|
|
783
|
+
createFeedItem: async (item: ResourceAiAccessFeedItem): Promise<void> => {
|
|
784
|
+
await DatabaseServerFeedService.createDatabaseServerFeedItem({
|
|
785
|
+
databaseServerId: item.resourceId,
|
|
786
|
+
projectId: item.projectId,
|
|
787
|
+
databaseServerFeedEventType:
|
|
788
|
+
DatabaseServerFeedEventType.DatabaseServerUpdated,
|
|
789
|
+
displayColor: item.displayColor,
|
|
790
|
+
feedInfoInMarkdown: item.feedInfoInMarkdown,
|
|
791
|
+
moreInformationInMarkdown: item.moreInformationInMarkdown,
|
|
792
|
+
userId: item.userId,
|
|
793
|
+
});
|
|
794
|
+
},
|
|
795
|
+
});
|
|
796
|
+
|
|
686
797
|
return onUpdate;
|
|
687
798
|
}
|
|
688
799
|
|
|
@@ -738,6 +849,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
738
849
|
return null;
|
|
739
850
|
}
|
|
740
851
|
|
|
852
|
+
if (data.isSighting === false) {
|
|
853
|
+
return ownerRow;
|
|
854
|
+
}
|
|
855
|
+
|
|
741
856
|
await DatabaseServerEndpointService.markEndpointMatched(owner);
|
|
742
857
|
|
|
743
858
|
if (ownerRow) {
|
|
@@ -3,7 +3,15 @@ import DockerHostLabelRuleEngineService from "./DockerHostLabelRuleEngineService
|
|
|
3
3
|
import DockerHostOwnerRuleEngineService from "./DockerHostOwnerRuleEngineService";
|
|
4
4
|
import Model from "../../Models/DatabaseModels/DockerHost";
|
|
5
5
|
import Label from "../../Models/DatabaseModels/Label";
|
|
6
|
-
import { OnCreate, OnUpdate } from "../Types/Database/Hooks";
|
|
6
|
+
import { OnCreate, OnDelete, OnUpdate } from "../Types/Database/Hooks";
|
|
7
|
+
import CreateBy from "../Types/Database/CreateBy";
|
|
8
|
+
import DeleteBy from "../Types/Database/DeleteBy";
|
|
9
|
+
import UpdateBy from "../Types/Database/UpdateBy";
|
|
10
|
+
import ResourceAiAccessSettings, {
|
|
11
|
+
ResourceAiAccessFeedItem,
|
|
12
|
+
} from "../Utils/AI/ResourceAccess/ResourceAiAccessSettings";
|
|
13
|
+
import ResourceAiDeleteCleanup from "../Utils/AI/ResourceAccess/ResourceAiDeleteCleanup";
|
|
14
|
+
import AiResourceType from "../../Types/ResourceAiAgent/AiResourceType";
|
|
7
15
|
import DockerHostFeedService from "./DockerHostFeedService";
|
|
8
16
|
import { DockerHostFeedEventType } from "../../Models/DatabaseModels/DockerHostFeed";
|
|
9
17
|
import ResourceFeedUtil from "../Utils/ResourceFeed/ResourceFeedUtil";
|
|
@@ -472,6 +480,79 @@ export class Service extends DatabaseService<Model> {
|
|
|
472
480
|
});
|
|
473
481
|
}
|
|
474
482
|
|
|
483
|
+
/*
|
|
484
|
+
* Deleting a Docker host settles its in-flight AI remediation rounds and
|
|
485
|
+
* removes its resource AI agent — read before the delete, done after it for
|
|
486
|
+
* the Docker hosts actually deleted (ResourceAiDeleteCleanup, shared by every
|
|
487
|
+
* resource AI agent's resource).
|
|
488
|
+
*/
|
|
489
|
+
@CaptureSpan()
|
|
490
|
+
protected override async onBeforeDelete(
|
|
491
|
+
deleteBy: DeleteBy<Model>,
|
|
492
|
+
): Promise<OnDelete<Model>> {
|
|
493
|
+
return {
|
|
494
|
+
deleteBy,
|
|
495
|
+
carryForward: await ResourceAiDeleteCleanup.beforeDelete({
|
|
496
|
+
resourceType: AiResourceType.DockerHost,
|
|
497
|
+
service: this,
|
|
498
|
+
deleteBy,
|
|
499
|
+
}),
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
@CaptureSpan()
|
|
504
|
+
protected override async onDeleteSuccess(
|
|
505
|
+
onDelete: OnDelete<Model>,
|
|
506
|
+
deletedItemIds: Array<ObjectID>,
|
|
507
|
+
): Promise<OnDelete<Model>> {
|
|
508
|
+
await ResourceAiDeleteCleanup.afterDelete({
|
|
509
|
+
resourceType: AiResourceType.DockerHost,
|
|
510
|
+
onDelete,
|
|
511
|
+
deletedItemIds,
|
|
512
|
+
});
|
|
513
|
+
|
|
514
|
+
return onDelete;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
/*
|
|
518
|
+
* A create is held to the same AI access rules as an update, judged
|
|
519
|
+
* against the never-configured defaults a new Docker host starts from: an
|
|
520
|
+
* unusable mode or allowlist is refused for every caller, and the
|
|
521
|
+
* server-only aiAccess* columns for every caller but root (a master admin
|
|
522
|
+
* included, whom the create column ACLs never check).
|
|
523
|
+
*/
|
|
524
|
+
@CaptureSpan()
|
|
525
|
+
protected override async onBeforeCreate(
|
|
526
|
+
createBy: CreateBy<Model>,
|
|
527
|
+
): Promise<OnCreate<Model>> {
|
|
528
|
+
ResourceAiAccessSettings.checkCreate({
|
|
529
|
+
resourceType: AiResourceType.DockerHost,
|
|
530
|
+
createBy,
|
|
531
|
+
});
|
|
532
|
+
|
|
533
|
+
return { createBy, carryForward: null };
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
/*
|
|
537
|
+
* An operator's write of an AI access setting (the investigation switch, the
|
|
538
|
+
* remediation mode, the command allowlist) is validated and checked against
|
|
539
|
+
* who may make AI do more on this Docker host — the rules every resource AI
|
|
540
|
+
* agent's resource shares (ResourceAiAccessSettings).
|
|
541
|
+
*/
|
|
542
|
+
@CaptureSpan()
|
|
543
|
+
protected override async onBeforeUpdate(
|
|
544
|
+
updateBy: UpdateBy<Model>,
|
|
545
|
+
): Promise<OnUpdate<Model>> {
|
|
546
|
+
return {
|
|
547
|
+
updateBy,
|
|
548
|
+
carryForward: await ResourceAiAccessSettings.checkUpdate({
|
|
549
|
+
resourceType: AiResourceType.DockerHost,
|
|
550
|
+
service: this,
|
|
551
|
+
updateBy,
|
|
552
|
+
}),
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
|
|
475
556
|
@CaptureSpan()
|
|
476
557
|
protected override async onUpdateSuccess(
|
|
477
558
|
onUpdate: OnUpdate<Model>,
|
|
@@ -483,6 +564,33 @@ export class Service extends DatabaseService<Model> {
|
|
|
483
564
|
},
|
|
484
565
|
);
|
|
485
566
|
|
|
567
|
+
/*
|
|
568
|
+
* An operator's AI access write: recorded on the feed, and the Docker host
|
|
569
|
+
* marked AI-configured.
|
|
570
|
+
*/
|
|
571
|
+
await ResourceAiAccessSettings.afterUpdate({
|
|
572
|
+
service: this,
|
|
573
|
+
onUpdate,
|
|
574
|
+
updatedItemIds,
|
|
575
|
+
getResourceMarkdownLink: (
|
|
576
|
+
projectId: ObjectID,
|
|
577
|
+
dockerHostId: ObjectID,
|
|
578
|
+
): Promise<string> => {
|
|
579
|
+
return this.getDockerHostMarkdownLink(projectId, dockerHostId);
|
|
580
|
+
},
|
|
581
|
+
createFeedItem: async (item: ResourceAiAccessFeedItem): Promise<void> => {
|
|
582
|
+
await DockerHostFeedService.createDockerHostFeedItem({
|
|
583
|
+
dockerHostId: item.resourceId,
|
|
584
|
+
projectId: item.projectId,
|
|
585
|
+
dockerHostFeedEventType: DockerHostFeedEventType.DockerHostUpdated,
|
|
586
|
+
displayColor: item.displayColor,
|
|
587
|
+
feedInfoInMarkdown: item.feedInfoInMarkdown,
|
|
588
|
+
moreInformationInMarkdown: item.moreInformationInMarkdown,
|
|
589
|
+
userId: item.userId,
|
|
590
|
+
});
|
|
591
|
+
},
|
|
592
|
+
});
|
|
593
|
+
|
|
486
594
|
return onUpdate;
|
|
487
595
|
}
|
|
488
596
|
|
|
@@ -3,7 +3,15 @@ import DockerSwarmClusterLabelRuleEngineService from "./DockerSwarmClusterLabelR
|
|
|
3
3
|
import DockerSwarmClusterOwnerRuleEngineService from "./DockerSwarmClusterOwnerRuleEngineService";
|
|
4
4
|
import Model from "../../Models/DatabaseModels/DockerSwarmCluster";
|
|
5
5
|
import Label from "../../Models/DatabaseModels/Label";
|
|
6
|
-
import { OnCreate, OnUpdate } from "../Types/Database/Hooks";
|
|
6
|
+
import { OnCreate, OnDelete, OnUpdate } from "../Types/Database/Hooks";
|
|
7
|
+
import CreateBy from "../Types/Database/CreateBy";
|
|
8
|
+
import DeleteBy from "../Types/Database/DeleteBy";
|
|
9
|
+
import UpdateBy from "../Types/Database/UpdateBy";
|
|
10
|
+
import ResourceAiAccessSettings, {
|
|
11
|
+
ResourceAiAccessFeedItem,
|
|
12
|
+
} from "../Utils/AI/ResourceAccess/ResourceAiAccessSettings";
|
|
13
|
+
import ResourceAiDeleteCleanup from "../Utils/AI/ResourceAccess/ResourceAiDeleteCleanup";
|
|
14
|
+
import AiResourceType from "../../Types/ResourceAiAgent/AiResourceType";
|
|
7
15
|
import DockerSwarmClusterFeedService from "./DockerSwarmClusterFeedService";
|
|
8
16
|
import { DockerSwarmClusterFeedEventType } from "../../Models/DatabaseModels/DockerSwarmClusterFeed";
|
|
9
17
|
import ResourceFeedUtil from "../Utils/ResourceFeed/ResourceFeedUtil";
|
|
@@ -508,6 +516,79 @@ export class Service extends DatabaseService<Model> {
|
|
|
508
516
|
});
|
|
509
517
|
}
|
|
510
518
|
|
|
519
|
+
/*
|
|
520
|
+
* Deleting a Docker Swarm cluster settles its in-flight AI remediation rounds
|
|
521
|
+
* and removes its resource AI agent — read before the delete, done after it
|
|
522
|
+
* for the Docker Swarm clusters actually deleted (ResourceAiDeleteCleanup,
|
|
523
|
+
* shared by every resource AI agent's resource).
|
|
524
|
+
*/
|
|
525
|
+
@CaptureSpan()
|
|
526
|
+
protected override async onBeforeDelete(
|
|
527
|
+
deleteBy: DeleteBy<Model>,
|
|
528
|
+
): Promise<OnDelete<Model>> {
|
|
529
|
+
return {
|
|
530
|
+
deleteBy,
|
|
531
|
+
carryForward: await ResourceAiDeleteCleanup.beforeDelete({
|
|
532
|
+
resourceType: AiResourceType.DockerSwarmCluster,
|
|
533
|
+
service: this,
|
|
534
|
+
deleteBy,
|
|
535
|
+
}),
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
@CaptureSpan()
|
|
540
|
+
protected override async onDeleteSuccess(
|
|
541
|
+
onDelete: OnDelete<Model>,
|
|
542
|
+
deletedItemIds: Array<ObjectID>,
|
|
543
|
+
): Promise<OnDelete<Model>> {
|
|
544
|
+
await ResourceAiDeleteCleanup.afterDelete({
|
|
545
|
+
resourceType: AiResourceType.DockerSwarmCluster,
|
|
546
|
+
onDelete,
|
|
547
|
+
deletedItemIds,
|
|
548
|
+
});
|
|
549
|
+
|
|
550
|
+
return onDelete;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
/*
|
|
554
|
+
* A create is held to the same AI access rules as an update, judged
|
|
555
|
+
* against the never-configured defaults a new Docker Swarm cluster starts from: an
|
|
556
|
+
* unusable mode or allowlist is refused for every caller, and the
|
|
557
|
+
* server-only aiAccess* columns for every caller but root (a master admin
|
|
558
|
+
* included, whom the create column ACLs never check).
|
|
559
|
+
*/
|
|
560
|
+
@CaptureSpan()
|
|
561
|
+
protected override async onBeforeCreate(
|
|
562
|
+
createBy: CreateBy<Model>,
|
|
563
|
+
): Promise<OnCreate<Model>> {
|
|
564
|
+
ResourceAiAccessSettings.checkCreate({
|
|
565
|
+
resourceType: AiResourceType.DockerSwarmCluster,
|
|
566
|
+
createBy,
|
|
567
|
+
});
|
|
568
|
+
|
|
569
|
+
return { createBy, carryForward: null };
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
/*
|
|
573
|
+
* An operator's write of an AI access setting (the investigation switch, the
|
|
574
|
+
* remediation mode, the command allowlist) is validated and checked against
|
|
575
|
+
* who may make AI do more on this Docker Swarm cluster — the rules every
|
|
576
|
+
* resource AI agent's resource shares (ResourceAiAccessSettings).
|
|
577
|
+
*/
|
|
578
|
+
@CaptureSpan()
|
|
579
|
+
protected override async onBeforeUpdate(
|
|
580
|
+
updateBy: UpdateBy<Model>,
|
|
581
|
+
): Promise<OnUpdate<Model>> {
|
|
582
|
+
return {
|
|
583
|
+
updateBy,
|
|
584
|
+
carryForward: await ResourceAiAccessSettings.checkUpdate({
|
|
585
|
+
resourceType: AiResourceType.DockerSwarmCluster,
|
|
586
|
+
service: this,
|
|
587
|
+
updateBy,
|
|
588
|
+
}),
|
|
589
|
+
};
|
|
590
|
+
}
|
|
591
|
+
|
|
511
592
|
@CaptureSpan()
|
|
512
593
|
protected override async onUpdateSuccess(
|
|
513
594
|
onUpdate: OnUpdate<Model>,
|
|
@@ -519,6 +600,37 @@ export class Service extends DatabaseService<Model> {
|
|
|
519
600
|
},
|
|
520
601
|
);
|
|
521
602
|
|
|
603
|
+
/*
|
|
604
|
+
* An operator's AI access write: recorded on the feed, and the Docker Swarm
|
|
605
|
+
* cluster marked AI-configured.
|
|
606
|
+
*/
|
|
607
|
+
await ResourceAiAccessSettings.afterUpdate({
|
|
608
|
+
service: this,
|
|
609
|
+
onUpdate,
|
|
610
|
+
updatedItemIds,
|
|
611
|
+
getResourceMarkdownLink: (
|
|
612
|
+
projectId: ObjectID,
|
|
613
|
+
dockerSwarmClusterId: ObjectID,
|
|
614
|
+
): Promise<string> => {
|
|
615
|
+
return this.getDockerSwarmClusterMarkdownLink(
|
|
616
|
+
projectId,
|
|
617
|
+
dockerSwarmClusterId,
|
|
618
|
+
);
|
|
619
|
+
},
|
|
620
|
+
createFeedItem: async (item: ResourceAiAccessFeedItem): Promise<void> => {
|
|
621
|
+
await DockerSwarmClusterFeedService.createDockerSwarmClusterFeedItem({
|
|
622
|
+
dockerSwarmClusterId: item.resourceId,
|
|
623
|
+
projectId: item.projectId,
|
|
624
|
+
dockerSwarmClusterFeedEventType:
|
|
625
|
+
DockerSwarmClusterFeedEventType.DockerSwarmClusterUpdated,
|
|
626
|
+
displayColor: item.displayColor,
|
|
627
|
+
feedInfoInMarkdown: item.feedInfoInMarkdown,
|
|
628
|
+
moreInformationInMarkdown: item.moreInformationInMarkdown,
|
|
629
|
+
userId: item.userId,
|
|
630
|
+
});
|
|
631
|
+
},
|
|
632
|
+
});
|
|
633
|
+
|
|
522
634
|
return onUpdate;
|
|
523
635
|
}
|
|
524
636
|
|