@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
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The docker-swarm command policy: tiers the docker CLI on a swarm manager
|
|
3
|
+
* (nodes, services, tasks, stacks) for Docker Swarm clusters. The CLI's
|
|
4
|
+
* grammar — how the command is found, how flags are parsed, which values
|
|
5
|
+
* are accepted — lives in DockerCliGrammar, shared with the docker-engine
|
|
6
|
+
* policy.
|
|
7
|
+
*
|
|
8
|
+
* Read: node ls / ps / inspect, service ls / ps / inspect, bounded service
|
|
9
|
+
* logs (--tail N up to 2000, or --since; never --follow), stack ls / ps /
|
|
10
|
+
* services — and every read the docker-engine policy allows (docker ps,
|
|
11
|
+
* docker info, docker network ls, ...), since the agent runs on a manager
|
|
12
|
+
* node whose engine is an ordinary Docker engine.
|
|
13
|
+
*
|
|
14
|
+
* SafeWrite — a reversible change to exactly ONE named service:
|
|
15
|
+
* `service update --force SERVICE` (a rolling restart of its tasks with the
|
|
16
|
+
* spec it already has; -d/--detach allowed), `service rollback SERVICE`
|
|
17
|
+
* (back to its previous spec) and `service scale SERVICE=N` with N >= 1.
|
|
18
|
+
*
|
|
19
|
+
* RiskyWrite: scaling to 0 or several services at once; `service update`
|
|
20
|
+
* that changes the image, the replica count, CPU or memory limits and
|
|
21
|
+
* reservations, or the update parallelism, delay and failure action; and
|
|
22
|
+
* `node update --availability active NODE`. `node update --availability
|
|
23
|
+
* drain|pause NODE` is RiskyWrite AND requiresHuman: a drain moves every
|
|
24
|
+
* task off the node, in every stack, whatever the command names — the swarm
|
|
25
|
+
* counterpart of kubectl drain.
|
|
26
|
+
*
|
|
27
|
+
* Denied: service create / rm, stack deploy / rm / config, secrets,
|
|
28
|
+
* configs, node rm / promote / demote / labels / role, swarm, every other
|
|
29
|
+
* `service update` flag (mounts, secrets, configs, capabilities,
|
|
30
|
+
* environment, user, networks, ports, entrypoint, arguments, hostname,
|
|
31
|
+
* credential specs, registry auth, ...), the commands neither docker
|
|
32
|
+
* policy runs (exec, run, rm, prune, ...), and every engine-level change:
|
|
33
|
+
* restarting or stopping one container on this manager is not a Swarm fix
|
|
34
|
+
* (a service's containers are its tasks, spread over the nodes and replaced
|
|
35
|
+
* by the swarm), so the model is pointed at the service commands instead.
|
|
36
|
+
* As in the engine profile, any flag before the command is refused.
|
|
37
|
+
*
|
|
38
|
+
* Targets are service names (a scale's SERVICE, not SERVICE=N) and node
|
|
39
|
+
* names or ids, exactly as written.
|
|
40
|
+
*
|
|
41
|
+
* Part of the import-closed resource policy directory that the resource AI
|
|
42
|
+
* agent carries a byte-identical copy of: relative imports of that set only.
|
|
43
|
+
*/
|
|
44
|
+
import { ResourceCommandTier } from "../../../Types/ResourceAiAgent/ResourceAiAccess";
|
|
45
|
+
import { DOCKER_ENGINE_READ_COMMANDS, DOCKER_ENGINE_WRITE_PATHS, DOCKER_FILTER_FLAG, DOCKER_FORMAT_FLAG, DOCKER_FORMAT_FLAG_WITH_SHORTHAND, DOCKER_LOG_FLAGS, DOCKER_NO_TRUNC_FLAG, DOCKER_QUIET_FLAG, DockerFlagKind, deniedJudgement, dockerFlagValue, dockerNoArgumentReadSpec, evaluateDockerArgvSafely, findBadDockerFilter, findBadDockerFormat, findBadDockerName, findUnboundedLogProblem, isDockerCpuCount, isDockerImageReference, isDockerMemorySize, isDockerSwitchOn, isGoDuration, mergeDockerCommands, parseDockerCount, readJudgement, } from "./DockerCliGrammar";
|
|
46
|
+
// The largest replica count a scale or --replicas may name.
|
|
47
|
+
export const DOCKER_SWARM_MAX_REPLICAS = 999999;
|
|
48
|
+
const NO_RESOLVE_FLAG = {
|
|
49
|
+
name: "no-resolve",
|
|
50
|
+
kind: DockerFlagKind.Bool,
|
|
51
|
+
};
|
|
52
|
+
const DETACH_FLAG = {
|
|
53
|
+
name: "detach",
|
|
54
|
+
shorthand: "d",
|
|
55
|
+
kind: DockerFlagKind.Bool,
|
|
56
|
+
};
|
|
57
|
+
// ---- Reads -------------------------------------------------------------------
|
|
58
|
+
/*
|
|
59
|
+
* A read that lists the tasks or objects of the positionals it names:
|
|
60
|
+
* `min`..`max` names of `kind`, the given flags, --format json|table.
|
|
61
|
+
*/
|
|
62
|
+
const namedReadSpec = (data) => {
|
|
63
|
+
return {
|
|
64
|
+
verb: data.verb,
|
|
65
|
+
flags: data.flags,
|
|
66
|
+
judge(parsed) {
|
|
67
|
+
const count = parsed.positionals.length;
|
|
68
|
+
if (count < data.min || count > data.max) {
|
|
69
|
+
const wanted = data.min === data.max
|
|
70
|
+
? `exactly ${data.min} ${data.kind}`
|
|
71
|
+
: `at least ${data.min} ${data.kind}`;
|
|
72
|
+
return deniedJudgement(`it takes ${wanted} (got ${count})`);
|
|
73
|
+
}
|
|
74
|
+
const problem = findBadDockerName(parsed.positionals, data.kind) ||
|
|
75
|
+
findBadDockerFilter(parsed) ||
|
|
76
|
+
findBadDockerFormat(parsed, data.formats);
|
|
77
|
+
return problem ? deniedJudgement(problem) : readJudgement(data.reason);
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
const TASK_LIST_FLAGS = [
|
|
82
|
+
DOCKER_FILTER_FLAG,
|
|
83
|
+
DOCKER_FORMAT_FLAG,
|
|
84
|
+
NO_RESOLVE_FLAG,
|
|
85
|
+
DOCKER_NO_TRUNC_FLAG,
|
|
86
|
+
DOCKER_QUIET_FLAG,
|
|
87
|
+
];
|
|
88
|
+
const PRETTY_FLAG = {
|
|
89
|
+
name: "pretty",
|
|
90
|
+
kind: DockerFlagKind.Bool,
|
|
91
|
+
};
|
|
92
|
+
const MANY = Number.MAX_SAFE_INTEGER;
|
|
93
|
+
const SERVICE_LOGS_SPEC = {
|
|
94
|
+
verb: "service logs",
|
|
95
|
+
flags: [
|
|
96
|
+
...DOCKER_LOG_FLAGS,
|
|
97
|
+
NO_RESOLVE_FLAG,
|
|
98
|
+
{ name: "no-task-ids", kind: DockerFlagKind.Bool },
|
|
99
|
+
DOCKER_NO_TRUNC_FLAG,
|
|
100
|
+
{ name: "raw", kind: DockerFlagKind.Bool },
|
|
101
|
+
],
|
|
102
|
+
judge(parsed, command) {
|
|
103
|
+
if (parsed.positionals.length !== 1) {
|
|
104
|
+
return deniedJudgement(`it reads exactly one service's (or task's) log (got ${parsed.positionals.length} names)`);
|
|
105
|
+
}
|
|
106
|
+
const problem = findBadDockerName(parsed.positionals, "service or task") ||
|
|
107
|
+
findUnboundedLogProblem(parsed, command);
|
|
108
|
+
return problem
|
|
109
|
+
? deniedJudgement(problem)
|
|
110
|
+
: readJudgement("reads a bounded slice of one service's log across its tasks; it changes nothing");
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
// The swarm's own read commands, by canonical path.
|
|
114
|
+
export const DOCKER_SWARM_READ_COMMANDS = new Map([
|
|
115
|
+
[
|
|
116
|
+
"node ls",
|
|
117
|
+
dockerNoArgumentReadSpec("node ls", "lists the swarm's nodes; it changes nothing", [DOCKER_FILTER_FLAG, DOCKER_FORMAT_FLAG, DOCKER_QUIET_FLAG], ["json", "table"]),
|
|
118
|
+
],
|
|
119
|
+
[
|
|
120
|
+
"node ps",
|
|
121
|
+
namedReadSpec({
|
|
122
|
+
verb: "node ps",
|
|
123
|
+
kind: "node",
|
|
124
|
+
min: 0,
|
|
125
|
+
max: MANY,
|
|
126
|
+
flags: TASK_LIST_FLAGS,
|
|
127
|
+
formats: ["json", "table"],
|
|
128
|
+
reason: "lists the tasks running on nodes; it changes nothing",
|
|
129
|
+
}),
|
|
130
|
+
],
|
|
131
|
+
[
|
|
132
|
+
"node inspect",
|
|
133
|
+
namedReadSpec({
|
|
134
|
+
verb: "node inspect",
|
|
135
|
+
kind: "node",
|
|
136
|
+
min: 1,
|
|
137
|
+
max: MANY,
|
|
138
|
+
flags: [DOCKER_FORMAT_FLAG_WITH_SHORTHAND, PRETTY_FLAG],
|
|
139
|
+
formats: ["json"],
|
|
140
|
+
reason: "shows each node's configuration and state; it changes nothing",
|
|
141
|
+
}),
|
|
142
|
+
],
|
|
143
|
+
[
|
|
144
|
+
"service ls",
|
|
145
|
+
dockerNoArgumentReadSpec("service ls", "lists the swarm's services; it changes nothing", [DOCKER_FILTER_FLAG, DOCKER_FORMAT_FLAG, DOCKER_QUIET_FLAG], ["json", "table"]),
|
|
146
|
+
],
|
|
147
|
+
[
|
|
148
|
+
"service ps",
|
|
149
|
+
namedReadSpec({
|
|
150
|
+
verb: "service ps",
|
|
151
|
+
kind: "service",
|
|
152
|
+
min: 1,
|
|
153
|
+
max: MANY,
|
|
154
|
+
flags: TASK_LIST_FLAGS,
|
|
155
|
+
formats: ["json", "table"],
|
|
156
|
+
reason: "lists the tasks of services; it changes nothing",
|
|
157
|
+
}),
|
|
158
|
+
],
|
|
159
|
+
[
|
|
160
|
+
"service inspect",
|
|
161
|
+
namedReadSpec({
|
|
162
|
+
verb: "service inspect",
|
|
163
|
+
kind: "service",
|
|
164
|
+
min: 1,
|
|
165
|
+
max: MANY,
|
|
166
|
+
flags: [DOCKER_FORMAT_FLAG_WITH_SHORTHAND, PRETTY_FLAG],
|
|
167
|
+
formats: ["json"],
|
|
168
|
+
reason: "shows each service's spec and state (environment values are redacted); it changes nothing",
|
|
169
|
+
}),
|
|
170
|
+
],
|
|
171
|
+
["service logs", SERVICE_LOGS_SPEC],
|
|
172
|
+
[
|
|
173
|
+
"stack ls",
|
|
174
|
+
dockerNoArgumentReadSpec("stack ls", "lists the swarm's stacks; it changes nothing", [DOCKER_FORMAT_FLAG], ["json", "table"]),
|
|
175
|
+
],
|
|
176
|
+
[
|
|
177
|
+
"stack ps",
|
|
178
|
+
namedReadSpec({
|
|
179
|
+
verb: "stack ps",
|
|
180
|
+
kind: "stack",
|
|
181
|
+
min: 1,
|
|
182
|
+
max: 1,
|
|
183
|
+
flags: TASK_LIST_FLAGS,
|
|
184
|
+
formats: ["json", "table"],
|
|
185
|
+
reason: "lists the tasks of one stack; it changes nothing",
|
|
186
|
+
}),
|
|
187
|
+
],
|
|
188
|
+
[
|
|
189
|
+
"stack services",
|
|
190
|
+
namedReadSpec({
|
|
191
|
+
verb: "stack services",
|
|
192
|
+
kind: "stack",
|
|
193
|
+
min: 1,
|
|
194
|
+
max: 1,
|
|
195
|
+
flags: [DOCKER_FILTER_FLAG, DOCKER_FORMAT_FLAG, DOCKER_QUIET_FLAG],
|
|
196
|
+
formats: ["json", "table"],
|
|
197
|
+
reason: "lists the services of one stack; it changes nothing",
|
|
198
|
+
}),
|
|
199
|
+
],
|
|
200
|
+
]);
|
|
201
|
+
// ---- Writes ------------------------------------------------------------------
|
|
202
|
+
/*
|
|
203
|
+
* The `service update` flags that change the service in a way a human
|
|
204
|
+
* should approve, each with the check its value must pass.
|
|
205
|
+
*/
|
|
206
|
+
const SERVICE_UPDATE_RISKY_FLAGS = [
|
|
207
|
+
{
|
|
208
|
+
name: "image",
|
|
209
|
+
isValid: isDockerImageReference,
|
|
210
|
+
expected: "an image reference such as nginx:1.27",
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
name: "replicas",
|
|
214
|
+
isValid: (value) => {
|
|
215
|
+
return parseDockerCount(value, DOCKER_SWARM_MAX_REPLICAS) !== null;
|
|
216
|
+
},
|
|
217
|
+
expected: "a replica count",
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
name: "limit-cpu",
|
|
221
|
+
isValid: isDockerCpuCount,
|
|
222
|
+
expected: "a number of CPUs such as 0.5 or 2",
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
name: "limit-memory",
|
|
226
|
+
isValid: isDockerMemorySize,
|
|
227
|
+
expected: "a memory size such as 512M or 1G",
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: "reserve-cpu",
|
|
231
|
+
isValid: isDockerCpuCount,
|
|
232
|
+
expected: "a number of CPUs such as 0.25",
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
name: "reserve-memory",
|
|
236
|
+
isValid: isDockerMemorySize,
|
|
237
|
+
expected: "a memory size such as 256M",
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
name: "update-parallelism",
|
|
241
|
+
isValid: (value) => {
|
|
242
|
+
return parseDockerCount(value, 1000) !== null;
|
|
243
|
+
},
|
|
244
|
+
expected: "a number of tasks updated at once (0 means all)",
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
name: "update-delay",
|
|
248
|
+
isValid: isGoDuration,
|
|
249
|
+
expected: "a duration such as 10s or 1m",
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
name: "update-failure-action",
|
|
253
|
+
isValid: (value) => {
|
|
254
|
+
return value === "pause" || value === "continue" || value === "rollback";
|
|
255
|
+
},
|
|
256
|
+
expected: "pause, continue or rollback",
|
|
257
|
+
},
|
|
258
|
+
];
|
|
259
|
+
/*
|
|
260
|
+
* `service update` flags that change what the service runs, as whom, or
|
|
261
|
+
* what it can reach — refused by name so the model hears why.
|
|
262
|
+
*/
|
|
263
|
+
const SERVICE_UPDATE_REFUSAL = "is never allowed: it changes what the service runs, as whom, or what it can reach (mounts, secrets, configs, capabilities, environment, user, networks, ports, entrypoint, arguments, hostname, credentials, registry auth); leave that change to a human";
|
|
264
|
+
const SERVICE_UPDATE_REFUSED_FLAGS = [
|
|
265
|
+
{ name: "mount-add", kind: DockerFlagKind.Value },
|
|
266
|
+
{ name: "mount-rm", kind: DockerFlagKind.Value },
|
|
267
|
+
{ name: "secret-add", kind: DockerFlagKind.Value },
|
|
268
|
+
{ name: "secret-rm", kind: DockerFlagKind.Value },
|
|
269
|
+
{ name: "config-add", kind: DockerFlagKind.Value },
|
|
270
|
+
{ name: "config-rm", kind: DockerFlagKind.Value },
|
|
271
|
+
{ name: "cap-add", kind: DockerFlagKind.Value },
|
|
272
|
+
{ name: "cap-drop", kind: DockerFlagKind.Value },
|
|
273
|
+
{ name: "env-add", kind: DockerFlagKind.Value },
|
|
274
|
+
{ name: "env-rm", kind: DockerFlagKind.Value },
|
|
275
|
+
{ name: "user", shorthand: "u", kind: DockerFlagKind.Value },
|
|
276
|
+
{ name: "group-add", kind: DockerFlagKind.Value },
|
|
277
|
+
{ name: "group-rm", kind: DockerFlagKind.Value },
|
|
278
|
+
{ name: "network-add", kind: DockerFlagKind.Value },
|
|
279
|
+
{ name: "network-rm", kind: DockerFlagKind.Value },
|
|
280
|
+
{ name: "publish-add", kind: DockerFlagKind.Value },
|
|
281
|
+
{ name: "publish-rm", kind: DockerFlagKind.Value },
|
|
282
|
+
{ name: "entrypoint", kind: DockerFlagKind.Value },
|
|
283
|
+
{ name: "args", kind: DockerFlagKind.Value },
|
|
284
|
+
{ name: "hostname", kind: DockerFlagKind.Value },
|
|
285
|
+
{ name: "credential-spec", kind: DockerFlagKind.Value },
|
|
286
|
+
{ name: "with-registry-auth", kind: DockerFlagKind.Bool },
|
|
287
|
+
{ name: "sysctl-add", kind: DockerFlagKind.Value },
|
|
288
|
+
{ name: "sysctl-rm", kind: DockerFlagKind.Value },
|
|
289
|
+
{ name: "host-add", kind: DockerFlagKind.Value },
|
|
290
|
+
{ name: "host-rm", kind: DockerFlagKind.Value },
|
|
291
|
+
{ name: "workdir", shorthand: "w", kind: DockerFlagKind.Value },
|
|
292
|
+
{ name: "init", kind: DockerFlagKind.Bool },
|
|
293
|
+
{ name: "read-only", kind: DockerFlagKind.Bool },
|
|
294
|
+
{ name: "isolation", kind: DockerFlagKind.Value },
|
|
295
|
+
].map((flag) => {
|
|
296
|
+
return Object.assign(Object.assign({}, flag), { refusal: SERVICE_UPDATE_REFUSAL });
|
|
297
|
+
});
|
|
298
|
+
const SERVICE_UPDATE_SPEC = {
|
|
299
|
+
verb: "service update",
|
|
300
|
+
flags: [
|
|
301
|
+
{ name: "force", kind: DockerFlagKind.Bool },
|
|
302
|
+
DETACH_FLAG,
|
|
303
|
+
...SERVICE_UPDATE_RISKY_FLAGS.map((risky) => {
|
|
304
|
+
return { name: risky.name, kind: DockerFlagKind.Value };
|
|
305
|
+
}),
|
|
306
|
+
...SERVICE_UPDATE_REFUSED_FLAGS,
|
|
307
|
+
],
|
|
308
|
+
judge(parsed) {
|
|
309
|
+
if (parsed.positionals.length !== 1) {
|
|
310
|
+
return deniedJudgement(`it updates exactly one service (got ${parsed.positionals.length} names); write docker service update --force NAME`);
|
|
311
|
+
}
|
|
312
|
+
const nameProblem = findBadDockerName(parsed.positionals, "service");
|
|
313
|
+
if (nameProblem) {
|
|
314
|
+
return deniedJudgement(nameProblem);
|
|
315
|
+
}
|
|
316
|
+
const changed = [];
|
|
317
|
+
for (const risky of SERVICE_UPDATE_RISKY_FLAGS) {
|
|
318
|
+
const value = dockerFlagValue(parsed, risky.name);
|
|
319
|
+
if (value === undefined) {
|
|
320
|
+
continue;
|
|
321
|
+
}
|
|
322
|
+
if (!risky.isValid(value)) {
|
|
323
|
+
return deniedJudgement(`--${risky.name} takes ${risky.expected}, not "${value}"`);
|
|
324
|
+
}
|
|
325
|
+
changed.push(`--${risky.name}`);
|
|
326
|
+
}
|
|
327
|
+
if (changed.length > 0) {
|
|
328
|
+
return {
|
|
329
|
+
tier: ResourceCommandTier.RiskyWrite,
|
|
330
|
+
reason: `changes a service's ${changed.join(", ")}: a rolling update of every one of its tasks`,
|
|
331
|
+
targets: parsed.positionals,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
if (isDockerSwitchOn(parsed, "force")) {
|
|
335
|
+
return {
|
|
336
|
+
tier: ResourceCommandTier.SafeWrite,
|
|
337
|
+
reason: "restarts one service's tasks, one by one, with the spec it already has (a rolling restart)",
|
|
338
|
+
targets: parsed.positionals,
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
return deniedJudgement(`it changes nothing as written: add --force to restart the service's tasks, or one of ${SERVICE_UPDATE_RISKY_FLAGS.map((risky) => {
|
|
342
|
+
return `--${risky.name}`;
|
|
343
|
+
}).join(", ")}`);
|
|
344
|
+
},
|
|
345
|
+
};
|
|
346
|
+
const SERVICE_ROLLBACK_SPEC = {
|
|
347
|
+
verb: "service rollback",
|
|
348
|
+
flags: [DETACH_FLAG],
|
|
349
|
+
judge(parsed) {
|
|
350
|
+
if (parsed.positionals.length !== 1) {
|
|
351
|
+
return deniedJudgement(`it rolls back exactly one service (got ${parsed.positionals.length} names)`);
|
|
352
|
+
}
|
|
353
|
+
const problem = findBadDockerName(parsed.positionals, "service");
|
|
354
|
+
return problem
|
|
355
|
+
? deniedJudgement(problem)
|
|
356
|
+
: {
|
|
357
|
+
tier: ResourceCommandTier.SafeWrite,
|
|
358
|
+
reason: "rolls one service back to the spec it had before its last update",
|
|
359
|
+
targets: parsed.positionals,
|
|
360
|
+
};
|
|
361
|
+
},
|
|
362
|
+
};
|
|
363
|
+
// SERVICE=REPLICAS, as `docker service scale` reads each argument.
|
|
364
|
+
const SCALE_PAIR_REGEX = /^([A-Za-z0-9][A-Za-z0-9_.-]{0,254})=([0-9]{1,9})$/;
|
|
365
|
+
const SERVICE_SCALE_SPEC = {
|
|
366
|
+
verb: "service scale",
|
|
367
|
+
flags: [DETACH_FLAG],
|
|
368
|
+
judge(parsed) {
|
|
369
|
+
if (parsed.positionals.length === 0) {
|
|
370
|
+
return deniedJudgement("it needs SERVICE=REPLICAS (e.g. web=3)");
|
|
371
|
+
}
|
|
372
|
+
const services = [];
|
|
373
|
+
let scalesToZero = false;
|
|
374
|
+
for (const pair of parsed.positionals) {
|
|
375
|
+
const match = SCALE_PAIR_REGEX.exec(pair);
|
|
376
|
+
const count = match
|
|
377
|
+
? parseDockerCount(match[2] || "", DOCKER_SWARM_MAX_REPLICAS)
|
|
378
|
+
: null;
|
|
379
|
+
if (!match || count === null) {
|
|
380
|
+
return deniedJudgement(`"${pair}" is not SERVICE=REPLICAS with a replica count up to ${DOCKER_SWARM_MAX_REPLICAS} (e.g. web=3)`);
|
|
381
|
+
}
|
|
382
|
+
services.push(match[1] || "");
|
|
383
|
+
if (count === 0) {
|
|
384
|
+
scalesToZero = true;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
if (scalesToZero) {
|
|
388
|
+
return {
|
|
389
|
+
tier: ResourceCommandTier.RiskyWrite,
|
|
390
|
+
reason: "scaling a service to zero replicas stops it: an outage, not a reversible nudge",
|
|
391
|
+
targets: services,
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
if (services.length > 1) {
|
|
395
|
+
return {
|
|
396
|
+
tier: ResourceCommandTier.RiskyWrite,
|
|
397
|
+
reason: "scales several services at once (a scale is a safe change for exactly one service)",
|
|
398
|
+
targets: services,
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
return {
|
|
402
|
+
tier: ResourceCommandTier.SafeWrite,
|
|
403
|
+
reason: "scales one service to a non-zero replica count, which a second scale reverses",
|
|
404
|
+
targets: services,
|
|
405
|
+
};
|
|
406
|
+
},
|
|
407
|
+
};
|
|
408
|
+
const NODE_UPDATE_SPEC = {
|
|
409
|
+
verb: "node update",
|
|
410
|
+
flags: [
|
|
411
|
+
{ name: "availability", kind: DockerFlagKind.Value },
|
|
412
|
+
{
|
|
413
|
+
name: "label-add",
|
|
414
|
+
kind: DockerFlagKind.Value,
|
|
415
|
+
refusal: "is never allowed: node labels steer where every service is placed; leave that change to a human",
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
name: "label-rm",
|
|
419
|
+
kind: DockerFlagKind.Value,
|
|
420
|
+
refusal: "is never allowed: node labels steer where every service is placed; leave that change to a human",
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
name: "role",
|
|
424
|
+
kind: DockerFlagKind.Value,
|
|
425
|
+
refusal: "is never allowed: promoting or demoting a node changes the swarm's managers (its Raft quorum)",
|
|
426
|
+
},
|
|
427
|
+
],
|
|
428
|
+
judge(parsed) {
|
|
429
|
+
if (parsed.positionals.length !== 1) {
|
|
430
|
+
return deniedJudgement(`it updates exactly one node (got ${parsed.positionals.length} names)`);
|
|
431
|
+
}
|
|
432
|
+
const problem = findBadDockerName(parsed.positionals, "node");
|
|
433
|
+
if (problem) {
|
|
434
|
+
return deniedJudgement(problem);
|
|
435
|
+
}
|
|
436
|
+
const availability = dockerFlagValue(parsed, "availability");
|
|
437
|
+
if (availability === "active") {
|
|
438
|
+
return {
|
|
439
|
+
tier: ResourceCommandTier.RiskyWrite,
|
|
440
|
+
reason: "makes a node schedulable again (availability active)",
|
|
441
|
+
targets: parsed.positionals,
|
|
442
|
+
};
|
|
443
|
+
}
|
|
444
|
+
if (availability === "drain" || availability === "pause") {
|
|
445
|
+
return {
|
|
446
|
+
tier: ResourceCommandTier.RiskyWrite,
|
|
447
|
+
reason: availability === "drain"
|
|
448
|
+
? "drains a node: every task on it, in every stack, is moved to other nodes"
|
|
449
|
+
: "pauses a node: the swarm schedules no new task on it",
|
|
450
|
+
targets: parsed.positionals,
|
|
451
|
+
requiresHuman: true,
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
return deniedJudgement(availability === undefined
|
|
455
|
+
? "it needs --availability active|pause|drain, the only node change OneUptime AI may make"
|
|
456
|
+
: `--availability takes active, pause or drain, not "${availability}"`);
|
|
457
|
+
},
|
|
458
|
+
};
|
|
459
|
+
// The swarm's write commands, by canonical path.
|
|
460
|
+
export const DOCKER_SWARM_WRITE_COMMANDS = new Map([
|
|
461
|
+
["service update", SERVICE_UPDATE_SPEC],
|
|
462
|
+
["service rollback", SERVICE_ROLLBACK_SPEC],
|
|
463
|
+
["service scale", SERVICE_SCALE_SPEC],
|
|
464
|
+
["node update", NODE_UPDATE_SPEC],
|
|
465
|
+
]);
|
|
466
|
+
const ENGINE_WRITE_REFUSAL = "changes one container on this manager node, which is not a Swarm fix: a service's containers are its tasks, spread over the nodes and replaced by the swarm. Use docker service update --force SERVICE (a rolling restart), docker service scale SERVICE=N or docker service rollback SERVICE instead";
|
|
467
|
+
export const DOCKER_SWARM_PROFILE = {
|
|
468
|
+
name: "docker-swarm",
|
|
469
|
+
resourceDescription: "a Docker Swarm cluster",
|
|
470
|
+
commands: mergeDockerCommands(DOCKER_SWARM_READ_COMMANDS, DOCKER_ENGINE_READ_COMMANDS, DOCKER_SWARM_WRITE_COMMANDS),
|
|
471
|
+
refusals: new Map(DOCKER_ENGINE_WRITE_PATHS.map((path) => {
|
|
472
|
+
return [path, ENGINE_WRITE_REFUSAL];
|
|
473
|
+
})),
|
|
474
|
+
allowedSummary: "Allowed for a Docker Swarm cluster — reads: docker node ls, docker node ps [NODE], docker node inspect NODE, docker service ls, docker service ps SERVICE, docker service inspect SERVICE, docker service logs --tail 200 SERVICE, docker stack ls, docker stack ps STACK, docker stack services STACK, and this manager's engine reads (docker ps, docker container inspect NAME, docker logs --tail 200 NAME, docker info, docker version, docker network ls, ...); changes: docker service update --force SERVICE, docker service rollback SERVICE, docker service scale SERVICE=N, docker service update --image|--replicas|--limit-cpu|--limit-memory|--reserve-cpu|--reserve-memory|--update-parallelism|--update-delay|--update-failure-action VALUE SERVICE, docker node update --availability active|pause|drain NODE",
|
|
475
|
+
};
|
|
476
|
+
const DockerSwarmCommandPolicy = {
|
|
477
|
+
name: "docker-swarm",
|
|
478
|
+
programs: ["docker"],
|
|
479
|
+
readCommandGuide: [
|
|
480
|
+
"- `docker node ls`, `docker node ps [NODE...]`, `docker node inspect NODE --pretty` — nodes, their state and their tasks",
|
|
481
|
+
"- `docker service ls`, `docker service ps SERVICE` (`--no-trunc` shows full errors; `--filter KEY=VALUE`, `-q`), `docker service inspect SERVICE --pretty` — environment values come back redacted",
|
|
482
|
+
"- `docker service logs --tail 200 SERVICE` — `--tail N` (N up to 2000) or `--since 30m` is required (without `--tail`, `--since` must be a duration of at most 24h); `-t`, `--no-trunc`, `--raw`, `--no-task-ids` are fine; never `-f`/`--follow`",
|
|
483
|
+
"- `docker stack ls`, `docker stack ps STACK`, `docker stack services STACK`",
|
|
484
|
+
"- This manager's engine: `docker ps -a`, `docker container inspect NAME`, `docker logs --tail 200 NAME`, `docker stats --no-stream`, `docker events --since 30m --until 0s`, `docker info`, `docker version`, `docker network ls`, `docker network inspect NAME`, ...",
|
|
485
|
+
"- `--format json` (or `table` for lists) only, never a Go template; one command per call, no pipes, no global flags (`-H`, `--context`, ...)",
|
|
486
|
+
].join("\n"),
|
|
487
|
+
writeCommandGuide: [
|
|
488
|
+
"- Safe (one service; runs unattended in Automatic mode): `docker service update --force SERVICE` (rolling restart; `-d` ok), `docker service rollback SERVICE`, `docker service scale SERVICE=N` (N of 1 or more)",
|
|
489
|
+
"- Risky (needs approval unless allowlisted or approvals are bypassed): `docker service scale SERVICE=0` or several services, `docker service update` with `--image IMAGE`, `--replicas N`, `--limit-cpu`, `--limit-memory`, `--reserve-cpu`, `--reserve-memory`, `--update-parallelism`, `--update-delay` or `--update-failure-action`, and `docker node update --availability active NODE`",
|
|
490
|
+
"- Always asks a human: `docker node update --availability drain|pause NODE`",
|
|
491
|
+
"- Never: service create/rm, stack deploy/rm, secrets, configs, node rm/promote/demote/labels/role, swarm commands, other service update flags (env, mounts, secrets, networks, ports, user, ...), and container-level changes (docker restart/stop/kill/update of one container is not a Swarm fix)",
|
|
492
|
+
].join("\n"),
|
|
493
|
+
evaluateArgv(argv) {
|
|
494
|
+
return evaluateDockerArgvSafely(DOCKER_SWARM_PROFILE, argv);
|
|
495
|
+
},
|
|
496
|
+
};
|
|
497
|
+
export default DockerSwarmCommandPolicy;
|
|
498
|
+
//# sourceMappingURL=DockerSwarmCommandPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DockerSwarmCommandPolicy.js","sourceRoot":"","sources":["../../../../../Utils/AiRemediation/Resource/DockerSwarmCommandPolicy.ts"],"names":[],"mappings":"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"}
|