@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
|
@@ -14,6 +14,11 @@ import {
|
|
|
14
14
|
LIST_CLUSTER_ACCESS_TOOL_NAME,
|
|
15
15
|
RUN_KUBECTL_TOOL_NAME,
|
|
16
16
|
} from "../../../../Types/Kubernetes/KubernetesClusterAiAccessToolNames";
|
|
17
|
+
import {
|
|
18
|
+
LIST_INFRASTRUCTURE_ACCESS_TOOL_NAME,
|
|
19
|
+
RUN_INFRASTRUCTURE_COMMAND_TOOL_NAME,
|
|
20
|
+
isInfrastructureToolName,
|
|
21
|
+
} from "../ResourceAccess/ResourceAccessToolNames";
|
|
17
22
|
import Project from "../../../../Models/DatabaseModels/Project";
|
|
18
23
|
import LlmProvider from "../../../../Models/DatabaseModels/LlmProvider";
|
|
19
24
|
import AIRunService from "../../../Services/AIRunService";
|
|
@@ -352,6 +357,14 @@ export default class AIInvestigationEngine {
|
|
|
352
357
|
*/
|
|
353
358
|
let clusterToolCallCount: number = 0;
|
|
354
359
|
|
|
360
|
+
/*
|
|
361
|
+
* The same for the tools that reach an infrastructure resource through
|
|
362
|
+
* its AI agent (run_infrastructure_command, list_infrastructure_access):
|
|
363
|
+
* commands on a host, a container engine, a hypervisor, a storage
|
|
364
|
+
* cluster or a database — never telemetry queries either.
|
|
365
|
+
*/
|
|
366
|
+
let infrastructureToolCallCount: number = 0;
|
|
367
|
+
|
|
355
368
|
/*
|
|
356
369
|
* Live narration: persist each LLM/tool step as an AIRunEvent so the UI can
|
|
357
370
|
* "watch it think" by polling the run's events. Best-effort, ordered.
|
|
@@ -366,6 +379,13 @@ export default class AIInvestigationEngine {
|
|
|
366
379
|
clusterToolCallCount++;
|
|
367
380
|
}
|
|
368
381
|
|
|
382
|
+
if (
|
|
383
|
+
step.type === "tool_started" &&
|
|
384
|
+
isInfrastructureToolName(step.toolName)
|
|
385
|
+
) {
|
|
386
|
+
infrastructureToolCallCount++;
|
|
387
|
+
}
|
|
388
|
+
|
|
369
389
|
/*
|
|
370
390
|
* A completed tool call also records the citation it minted (label +
|
|
371
391
|
* deep-link target) and — via toolArguments below — the arguments it
|
|
@@ -599,6 +619,7 @@ export default class AIInvestigationEngine {
|
|
|
599
619
|
result,
|
|
600
620
|
analysis,
|
|
601
621
|
clusterToolCallCount,
|
|
622
|
+
infrastructureToolCallCount,
|
|
602
623
|
);
|
|
603
624
|
|
|
604
625
|
await request.postAnalysis({
|
|
@@ -863,11 +884,17 @@ export default class AIInvestigationEngine {
|
|
|
863
884
|
* model's). So a run that made no cluster call posts exactly what it
|
|
864
885
|
* always has, and a run that did writes its telemetry count only when it
|
|
865
886
|
* is not zero.
|
|
887
|
+
*
|
|
888
|
+
* Commands on infrastructure resources (run_infrastructure_command) are
|
|
889
|
+
* counted the same way, as their own "N infrastructure commands run"
|
|
890
|
+
* part appended only when a run used those tools — so every footer of a
|
|
891
|
+
* run that did not stays byte-for-byte what it was.
|
|
866
892
|
*/
|
|
867
893
|
public static buildBrandedMarkdown(
|
|
868
894
|
result: ObservabilityAssistantResult,
|
|
869
895
|
analysisMarkdown: string,
|
|
870
896
|
clusterToolCallCount: number = 0,
|
|
897
|
+
infrastructureToolCallCount: number = 0,
|
|
871
898
|
): string {
|
|
872
899
|
let markdown: string = `## 🧠 AI — Automated Root Cause Analysis\n\n${analysisMarkdown}`;
|
|
873
900
|
|
|
@@ -888,7 +915,7 @@ export default class AIInvestigationEngine {
|
|
|
888
915
|
}
|
|
889
916
|
}
|
|
890
917
|
|
|
891
|
-
if (clusterToolCallCount <= 0) {
|
|
918
|
+
if (clusterToolCallCount <= 0 && infrastructureToolCallCount <= 0) {
|
|
892
919
|
markdown += `\n\n---\n*Investigated automatically by OneUptime AI — read-only, ${result.toolCallCount} quer${
|
|
893
920
|
result.toolCallCount === 1 ? "y" : "ies"
|
|
894
921
|
} run across your own telemetry${
|
|
@@ -900,7 +927,9 @@ export default class AIInvestigationEngine {
|
|
|
900
927
|
|
|
901
928
|
const telemetryQueryCount: number = Math.max(
|
|
902
929
|
0,
|
|
903
|
-
result.toolCallCount -
|
|
930
|
+
result.toolCallCount -
|
|
931
|
+
Math.max(0, clusterToolCallCount) -
|
|
932
|
+
Math.max(0, infrastructureToolCallCount),
|
|
904
933
|
);
|
|
905
934
|
// Only commands that reached kubectl are cited, so only they are "run".
|
|
906
935
|
const kubectlCommandCount: number = citations.filter(
|
|
@@ -926,10 +955,38 @@ export default class AIInvestigationEngine {
|
|
|
926
955
|
);
|
|
927
956
|
}
|
|
928
957
|
|
|
958
|
+
// Only commands that reached a resource are cited, so only they are "run".
|
|
959
|
+
const infrastructureCommandCount: number = citations.filter(
|
|
960
|
+
(citation: AIChatCitation): boolean => {
|
|
961
|
+
return citation.toolName === RUN_INFRASTRUCTURE_COMMAND_TOOL_NAME;
|
|
962
|
+
},
|
|
963
|
+
).length;
|
|
964
|
+
|
|
965
|
+
if (infrastructureCommandCount > 0) {
|
|
966
|
+
counts.push(
|
|
967
|
+
`${infrastructureCommandCount} infrastructure ${
|
|
968
|
+
infrastructureCommandCount === 1 ? "command" : "commands"
|
|
969
|
+
} run on your infrastructure`,
|
|
970
|
+
);
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
if (counts.length === 0 && infrastructureToolCallCount > 0) {
|
|
974
|
+
counts.push(
|
|
975
|
+
clusterToolCallCount > 0
|
|
976
|
+
? "no telemetry queries, kubectl commands or infrastructure commands run"
|
|
977
|
+
: "no telemetry queries or infrastructure commands run",
|
|
978
|
+
);
|
|
979
|
+
}
|
|
980
|
+
|
|
929
981
|
if (counts.length === 0) {
|
|
930
982
|
counts.push("no telemetry queries or kubectl commands run");
|
|
931
983
|
}
|
|
932
984
|
|
|
985
|
+
// Three parts read "A, B and C"; one or two read exactly as they always have.
|
|
986
|
+
if (counts.length > 2) {
|
|
987
|
+
counts.splice(0, counts.length - 1, counts.slice(0, -1).join(", "));
|
|
988
|
+
}
|
|
989
|
+
|
|
933
990
|
markdown += `\n\n---\n*Investigated automatically by OneUptime AI — read-only, ${counts.join(
|
|
934
991
|
" and ",
|
|
935
992
|
)}${
|
|
@@ -956,6 +1013,19 @@ export default class AIInvestigationEngine {
|
|
|
956
1013
|
return `${citation.rowCount} cluster(s)`;
|
|
957
1014
|
}
|
|
958
1015
|
|
|
1016
|
+
/*
|
|
1017
|
+
* A command on an infrastructure resource: 1 when it completed, 0 when
|
|
1018
|
+
* it ran and the program returned an error; a listing of resources is
|
|
1019
|
+
* the number it listed.
|
|
1020
|
+
*/
|
|
1021
|
+
if (citation.toolName === RUN_INFRASTRUCTURE_COMMAND_TOOL_NAME) {
|
|
1022
|
+
return citation.rowCount > 0 ? "succeeded" : "command returned an error";
|
|
1023
|
+
}
|
|
1024
|
+
|
|
1025
|
+
if (citation.toolName === LIST_INFRASTRUCTURE_ACCESS_TOOL_NAME) {
|
|
1026
|
+
return `${citation.rowCount} resource(s)`;
|
|
1027
|
+
}
|
|
1028
|
+
|
|
959
1029
|
return null;
|
|
960
1030
|
}
|
|
961
1031
|
|
|
@@ -41,6 +41,10 @@ import ClusterAccessContext from "../ClusterAccess/ClusterAccessContext";
|
|
|
41
41
|
import KubectlInvestigationToolkit, {
|
|
42
42
|
INVESTIGATION_MAX_WALL_CLOCK_MS,
|
|
43
43
|
} from "../ClusterAccess/KubectlInvestigationToolkit";
|
|
44
|
+
import { ResourceAiAccessStatus } from "../../../../Types/ResourceAiAgent/ResourceAiAccess";
|
|
45
|
+
import ResourceAiAccessService from "../../../Services/ResourceAiAccessService";
|
|
46
|
+
import ResourceAccessContext from "../ResourceAccess/ResourceAccessContext";
|
|
47
|
+
import InfrastructureInvestigationToolkit from "../ResourceAccess/InfrastructureInvestigationToolkit";
|
|
44
48
|
import logger from "../../Logger";
|
|
45
49
|
import CaptureSpan from "../../Telemetry/CaptureSpan";
|
|
46
50
|
|
|
@@ -165,6 +169,7 @@ export default class AIAlertInvestigationRunner {
|
|
|
165
169
|
|
|
166
170
|
let contextSummary: string;
|
|
167
171
|
let clusterStatuses: Array<KubernetesClusterAiAccessStatus> = [];
|
|
172
|
+
let resourceStatuses: Array<ResourceAiAccessStatus> = [];
|
|
168
173
|
try {
|
|
169
174
|
const contextData: AlertContextData =
|
|
170
175
|
await AlertAIContextBuilder.buildAlertContext({
|
|
@@ -192,6 +197,29 @@ export default class AIAlertInvestigationRunner {
|
|
|
192
197
|
|
|
193
198
|
contextSummary +=
|
|
194
199
|
ClusterAccessContext.buildContextSection(clusterStatuses);
|
|
200
|
+
|
|
201
|
+
/*
|
|
202
|
+
* Direct infrastructure access (Docker, Podman, Swarm, Proxmox,
|
|
203
|
+
* VMware, Ceph, databases, hosts) through their resource AI agents.
|
|
204
|
+
* Enrichment only, like cluster access, and on its own: losing it
|
|
205
|
+
* never fails the investigation nor takes the cluster access away.
|
|
206
|
+
*/
|
|
207
|
+
try {
|
|
208
|
+
const statuses: Array<ResourceAiAccessStatus> =
|
|
209
|
+
await ResourceAiAccessService.getStatusesForSubject({
|
|
210
|
+
projectId,
|
|
211
|
+
alertId,
|
|
212
|
+
});
|
|
213
|
+
const section: string =
|
|
214
|
+
ResourceAccessContext.buildContextSection(statuses);
|
|
215
|
+
|
|
216
|
+
resourceStatuses = statuses;
|
|
217
|
+
contextSummary += section;
|
|
218
|
+
} catch (error) {
|
|
219
|
+
logger.error(
|
|
220
|
+
`AI: could not resolve infrastructure access for alert ${alertId.toString()}; investigating it with OneUptime data only: ${error}`,
|
|
221
|
+
);
|
|
222
|
+
}
|
|
195
223
|
} catch (error) {
|
|
196
224
|
/*
|
|
197
225
|
* Context assembly failed — the run is claimed, so hand it to the
|
|
@@ -238,6 +266,48 @@ export default class AIAlertInvestigationRunner {
|
|
|
238
266
|
const extraTools: Array<ObservabilityAssistantExtraTool> =
|
|
239
267
|
kubectlToolkit.buildTools();
|
|
240
268
|
|
|
269
|
+
/*
|
|
270
|
+
* The infrastructure tools, bound to the same run and deadline. Built
|
|
271
|
+
* on their own so a failure here leaves the kubectl tools (and the
|
|
272
|
+
* run) as they are.
|
|
273
|
+
*/
|
|
274
|
+
let resourceAddendum: string = "";
|
|
275
|
+
|
|
276
|
+
try {
|
|
277
|
+
const infrastructureToolkit: InfrastructureInvestigationToolkit =
|
|
278
|
+
new InfrastructureInvestigationToolkit({
|
|
279
|
+
projectId,
|
|
280
|
+
aiRunId,
|
|
281
|
+
resources: resourceStatuses,
|
|
282
|
+
runDeadlineAtMs,
|
|
283
|
+
});
|
|
284
|
+
const infrastructureTools: Array<ObservabilityAssistantExtraTool> =
|
|
285
|
+
infrastructureToolkit.buildTools();
|
|
286
|
+
|
|
287
|
+
resourceAddendum =
|
|
288
|
+
resourceStatuses.length > 0
|
|
289
|
+
? ResourceAccessContext.buildPersonaAddendum(resourceStatuses)
|
|
290
|
+
: "";
|
|
291
|
+
extraTools.push(...infrastructureTools);
|
|
292
|
+
} catch (error) {
|
|
293
|
+
logger.error(
|
|
294
|
+
`AI: could not offer infrastructure access for alert ${alertId.toString()}; investigating it with OneUptime data only: ${error}`,
|
|
295
|
+
);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// The cluster rules first, exactly as before; the infrastructure rules after.
|
|
299
|
+
const additionalInstructions: Array<string> = [];
|
|
300
|
+
|
|
301
|
+
if (clusterStatuses.length > 0) {
|
|
302
|
+
additionalInstructions.push(
|
|
303
|
+
ClusterAccessContext.buildPersonaAddendum(clusterStatuses),
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
if (resourceAddendum) {
|
|
308
|
+
additionalInstructions.push(resourceAddendum);
|
|
309
|
+
}
|
|
310
|
+
|
|
241
311
|
await AIInvestigationEngine.executeRun({
|
|
242
312
|
aiRunId,
|
|
243
313
|
projectId,
|
|
@@ -248,11 +318,8 @@ export default class AIAlertInvestigationRunner {
|
|
|
248
318
|
alertId,
|
|
249
319
|
contextSummary,
|
|
250
320
|
maxWallClockMs: INVESTIGATION_MAX_WALL_CLOCK_MS,
|
|
251
|
-
...(
|
|
252
|
-
? {
|
|
253
|
-
additionalInstructions:
|
|
254
|
-
ClusterAccessContext.buildPersonaAddendum(clusterStatuses),
|
|
255
|
-
}
|
|
321
|
+
...(additionalInstructions.length > 0
|
|
322
|
+
? { additionalInstructions: additionalInstructions.join("\n\n") }
|
|
256
323
|
: {}),
|
|
257
324
|
...(extraTools.length > 0 ? { extraTools } : {}),
|
|
258
325
|
persistCodeFixRecommendation: true,
|
|
@@ -43,6 +43,10 @@ import ClusterAccessContext from "../ClusterAccess/ClusterAccessContext";
|
|
|
43
43
|
import KubectlInvestigationToolkit, {
|
|
44
44
|
INVESTIGATION_MAX_WALL_CLOCK_MS,
|
|
45
45
|
} from "../ClusterAccess/KubectlInvestigationToolkit";
|
|
46
|
+
import { ResourceAiAccessStatus } from "../../../../Types/ResourceAiAgent/ResourceAiAccess";
|
|
47
|
+
import ResourceAiAccessService from "../../../Services/ResourceAiAccessService";
|
|
48
|
+
import ResourceAccessContext from "../ResourceAccess/ResourceAccessContext";
|
|
49
|
+
import InfrastructureInvestigationToolkit from "../ResourceAccess/InfrastructureInvestigationToolkit";
|
|
46
50
|
import logger from "../../Logger";
|
|
47
51
|
import CaptureSpan from "../../Telemetry/CaptureSpan";
|
|
48
52
|
|
|
@@ -334,6 +338,7 @@ export default class AIIncidentInvestigationRunner {
|
|
|
334
338
|
|
|
335
339
|
let contextSummary: string;
|
|
336
340
|
let clusterStatuses: Array<KubernetesClusterAiAccessStatus> = [];
|
|
341
|
+
let resourceStatuses: Array<ResourceAiAccessStatus> = [];
|
|
337
342
|
try {
|
|
338
343
|
const contextData: IncidentContextData =
|
|
339
344
|
await IncidentAIContextBuilder.buildIncidentContext({
|
|
@@ -380,6 +385,29 @@ export default class AIIncidentInvestigationRunner {
|
|
|
380
385
|
|
|
381
386
|
contextSummary +=
|
|
382
387
|
ClusterAccessContext.buildContextSection(clusterStatuses);
|
|
388
|
+
|
|
389
|
+
/*
|
|
390
|
+
* Direct infrastructure access (Docker, Podman, Swarm, Proxmox,
|
|
391
|
+
* VMware, Ceph, databases, hosts) through their resource AI agents.
|
|
392
|
+
* Enrichment only, like cluster access, and on its own: losing it
|
|
393
|
+
* never fails the investigation nor takes the cluster access away.
|
|
394
|
+
*/
|
|
395
|
+
try {
|
|
396
|
+
const statuses: Array<ResourceAiAccessStatus> =
|
|
397
|
+
await ResourceAiAccessService.getStatusesForSubject({
|
|
398
|
+
projectId,
|
|
399
|
+
incidentId,
|
|
400
|
+
});
|
|
401
|
+
const section: string =
|
|
402
|
+
ResourceAccessContext.buildContextSection(statuses);
|
|
403
|
+
|
|
404
|
+
resourceStatuses = statuses;
|
|
405
|
+
contextSummary += section;
|
|
406
|
+
} catch (error) {
|
|
407
|
+
logger.error(
|
|
408
|
+
`AI: could not resolve infrastructure access for incident ${incidentId.toString()}; investigating it with OneUptime data only: ${error}`,
|
|
409
|
+
);
|
|
410
|
+
}
|
|
383
411
|
} catch (error) {
|
|
384
412
|
/*
|
|
385
413
|
* Context assembly failed — the run is claimed, so hand it to the
|
|
@@ -426,6 +454,48 @@ export default class AIIncidentInvestigationRunner {
|
|
|
426
454
|
const extraTools: Array<ObservabilityAssistantExtraTool> =
|
|
427
455
|
kubectlToolkit.buildTools();
|
|
428
456
|
|
|
457
|
+
/*
|
|
458
|
+
* The infrastructure tools, bound to the same run and deadline. Built
|
|
459
|
+
* on their own so a failure here leaves the kubectl tools (and the
|
|
460
|
+
* run) as they are.
|
|
461
|
+
*/
|
|
462
|
+
let resourceAddendum: string = "";
|
|
463
|
+
|
|
464
|
+
try {
|
|
465
|
+
const infrastructureToolkit: InfrastructureInvestigationToolkit =
|
|
466
|
+
new InfrastructureInvestigationToolkit({
|
|
467
|
+
projectId,
|
|
468
|
+
aiRunId,
|
|
469
|
+
resources: resourceStatuses,
|
|
470
|
+
runDeadlineAtMs,
|
|
471
|
+
});
|
|
472
|
+
const infrastructureTools: Array<ObservabilityAssistantExtraTool> =
|
|
473
|
+
infrastructureToolkit.buildTools();
|
|
474
|
+
|
|
475
|
+
resourceAddendum =
|
|
476
|
+
resourceStatuses.length > 0
|
|
477
|
+
? ResourceAccessContext.buildPersonaAddendum(resourceStatuses)
|
|
478
|
+
: "";
|
|
479
|
+
extraTools.push(...infrastructureTools);
|
|
480
|
+
} catch (error) {
|
|
481
|
+
logger.error(
|
|
482
|
+
`AI: could not offer infrastructure access for incident ${incidentId.toString()}; investigating it with OneUptime data only: ${error}`,
|
|
483
|
+
);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
// The cluster rules first, exactly as before; the infrastructure rules after.
|
|
487
|
+
const additionalInstructions: Array<string> = [];
|
|
488
|
+
|
|
489
|
+
if (clusterStatuses.length > 0) {
|
|
490
|
+
additionalInstructions.push(
|
|
491
|
+
ClusterAccessContext.buildPersonaAddendum(clusterStatuses),
|
|
492
|
+
);
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
if (resourceAddendum) {
|
|
496
|
+
additionalInstructions.push(resourceAddendum);
|
|
497
|
+
}
|
|
498
|
+
|
|
429
499
|
await AIInvestigationEngine.executeRun({
|
|
430
500
|
aiRunId,
|
|
431
501
|
projectId,
|
|
@@ -436,11 +506,8 @@ export default class AIIncidentInvestigationRunner {
|
|
|
436
506
|
incidentId,
|
|
437
507
|
contextSummary,
|
|
438
508
|
maxWallClockMs: INVESTIGATION_MAX_WALL_CLOCK_MS,
|
|
439
|
-
...(
|
|
440
|
-
? {
|
|
441
|
-
additionalInstructions:
|
|
442
|
-
ClusterAccessContext.buildPersonaAddendum(clusterStatuses),
|
|
443
|
-
}
|
|
509
|
+
...(additionalInstructions.length > 0
|
|
510
|
+
? { additionalInstructions: additionalInstructions.join("\n\n") }
|
|
444
511
|
: {}),
|
|
445
512
|
...(extraTools.length > 0 ? { extraTools } : {}),
|
|
446
513
|
persistCodeFixRecommendation: true,
|