@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
|
@@ -21,14 +21,8 @@ import OnCallDutyPolicyService from "../../../../Services/OnCallDutyPolicyServic
|
|
|
21
21
|
import IncidentStateService from "../../../../Services/IncidentStateService";
|
|
22
22
|
import UserNotificationEventType from "../../../../../Types/UserNotification/UserNotificationEventType";
|
|
23
23
|
import OnCallDutyPolicy from "../../../../../Models/DatabaseModels/OnCallDutyPolicy";
|
|
24
|
-
import IncidentSeverityService from "../../../../Services/IncidentSeverityService";
|
|
25
|
-
import MonitorService from "../../../../Services/MonitorService";
|
|
26
24
|
import Monitor from "../../../../../Models/DatabaseModels/Monitor";
|
|
27
|
-
import MonitorStatusService from "../../../../Services/MonitorStatusService";
|
|
28
|
-
import LabelService from "../../../../Services/LabelService";
|
|
29
25
|
import Label from "../../../../../Models/DatabaseModels/Label";
|
|
30
|
-
import SortOrder from "../../../../../Types/BaseDatabase/SortOrder";
|
|
31
|
-
import { LIMIT_PER_PROJECT } from "../../../../../Types/Database/LimitMax";
|
|
32
26
|
import BadDataException from "../../../../../Types/Exception/BadDataException";
|
|
33
27
|
import MicrosoftTeamsActionAuthorization from "./Authorization";
|
|
34
28
|
import WorkspaceProjectReferenceValidator from "../../WorkspaceProjectReferenceValidator";
|
|
@@ -37,6 +31,13 @@ import IncidentStateTimeline from "../../../../../Models/DatabaseModels/Incident
|
|
|
37
31
|
import IncidentPublicNote from "../../../../../Models/DatabaseModels/IncidentPublicNote";
|
|
38
32
|
import IncidentInternalNote from "../../../../../Models/DatabaseModels/IncidentInternalNote";
|
|
39
33
|
import OnCallDutyPolicyExecutionLog from "../../../../../Models/DatabaseModels/OnCallDutyPolicyExecutionLog";
|
|
34
|
+
import ColumnLength from "../../../../../Types/Database/ColumnLength";
|
|
35
|
+
import { truncateToLength } from "../../../Database/TruncateColumnValue";
|
|
36
|
+
import MicrosoftTeamsCardChoices from "../MicrosoftTeamsCardChoices";
|
|
37
|
+
import { MICROSOFT_TEAMS_CARD_SIZE_BUDGETS_IN_BYTES } from "../MicrosoftTeamsMessageSize";
|
|
38
|
+
import MicrosoftTeamsReplies from "../MicrosoftTeamsReplies";
|
|
39
|
+
// Incident.title is a LongText column.
|
|
40
|
+
const MICROSOFT_TEAMS_INCIDENT_TITLE_MAX_LENGTH = ColumnLength.LongText;
|
|
40
41
|
export default class MicrosoftTeamsIncidentActions {
|
|
41
42
|
static isIncidentAction(data) {
|
|
42
43
|
// Check if the action is related to incidents
|
|
@@ -383,11 +384,12 @@ export default class MicrosoftTeamsIncidentActions {
|
|
|
383
384
|
userId: oneUptimeUserId,
|
|
384
385
|
});
|
|
385
386
|
}
|
|
386
|
-
await
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
387
|
+
await MicrosoftTeamsReplies.sendBestEffort(turnContext, "✅ Note added successfully.");
|
|
388
|
+
/*
|
|
389
|
+
* The action is done: a refused reply or a failed delete of the
|
|
390
|
+
* form must not read as a failed action, which invites a repeat.
|
|
391
|
+
*/
|
|
392
|
+
await MicrosoftTeamsReplies.deleteBestEffort(turnContext, turnContext.activity.replyToId);
|
|
391
393
|
return;
|
|
392
394
|
}
|
|
393
395
|
await turnContext.sendActivity("Unable to add note: missing note data.");
|
|
@@ -440,11 +442,12 @@ export default class MicrosoftTeamsIncidentActions {
|
|
|
440
442
|
triggeredByIncidentId: incidentId,
|
|
441
443
|
userNotificationEventType: UserNotificationEventType.IncidentCreated,
|
|
442
444
|
});
|
|
443
|
-
await
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
445
|
+
await MicrosoftTeamsReplies.sendBestEffort(turnContext, "✅ On-call policy executed successfully.");
|
|
446
|
+
/*
|
|
447
|
+
* The action is done: a refused reply or a failed delete of the
|
|
448
|
+
* form must not read as a failed action, which invites a repeat.
|
|
449
|
+
*/
|
|
450
|
+
await MicrosoftTeamsReplies.deleteBestEffort(turnContext, turnContext.activity.replyToId);
|
|
448
451
|
return;
|
|
449
452
|
}
|
|
450
453
|
await turnContext.sendActivity("Unable to execute on-call policy: missing policy id.");
|
|
@@ -490,11 +493,12 @@ export default class MicrosoftTeamsIncidentActions {
|
|
|
490
493
|
},
|
|
491
494
|
props: databaseProps,
|
|
492
495
|
});
|
|
493
|
-
await
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
496
|
+
await MicrosoftTeamsReplies.sendBestEffort(turnContext, "✅ Incident state changed successfully.");
|
|
497
|
+
/*
|
|
498
|
+
* The action is done: a refused reply or a failed delete of the
|
|
499
|
+
* form must not read as a failed action, which invites a repeat.
|
|
500
|
+
*/
|
|
501
|
+
await MicrosoftTeamsReplies.deleteBestEffort(turnContext, turnContext.activity.replyToId);
|
|
498
502
|
return;
|
|
499
503
|
}
|
|
500
504
|
await turnContext.sendActivity("Unable to change incident state: missing state id.");
|
|
@@ -502,8 +506,8 @@ export default class MicrosoftTeamsIncidentActions {
|
|
|
502
506
|
}
|
|
503
507
|
if (actionType === MicrosoftTeamsIncidentActionType.SubmitNewIncident) {
|
|
504
508
|
// Handle new incident submission
|
|
505
|
-
const title = value["incidentTitle"] || "";
|
|
506
|
-
const description = value["incidentDescription"] || "";
|
|
509
|
+
const title = (value["incidentTitle"] || "").trim();
|
|
510
|
+
const description = (value["incidentDescription"] || "").trim();
|
|
507
511
|
const severityId = value["incidentSeverity"] || "";
|
|
508
512
|
const monitorIds = value["incidentMonitors"] || "";
|
|
509
513
|
const monitorStatusId = value["monitorStatus"] || "";
|
|
@@ -513,8 +517,9 @@ export default class MicrosoftTeamsIncidentActions {
|
|
|
513
517
|
await turnContext.sendActivity("Unable to create incident: missing required fields (title, description, or severity).");
|
|
514
518
|
return;
|
|
515
519
|
}
|
|
520
|
+
let createdIncident;
|
|
516
521
|
try {
|
|
517
|
-
|
|
522
|
+
createdIncident = await this.createIncidentInProject({
|
|
518
523
|
projectId,
|
|
519
524
|
oneUptimeUserId,
|
|
520
525
|
title,
|
|
@@ -525,35 +530,69 @@ export default class MicrosoftTeamsIncidentActions {
|
|
|
525
530
|
labelIds,
|
|
526
531
|
onCallPolicyIds,
|
|
527
532
|
});
|
|
528
|
-
// Hide the form card by deleting it first
|
|
529
|
-
if (turnContext.activity.replyToId) {
|
|
530
|
-
await turnContext.deleteActivity(turnContext.activity.replyToId);
|
|
531
|
-
}
|
|
532
|
-
// Get the incident link
|
|
533
|
-
const incidentLink = await IncidentService.getIncidentLinkInDashboard(projectId, createdIncident.id);
|
|
534
|
-
// Send confirmation message as a new message in the thread
|
|
535
|
-
await turnContext.sendActivity(`✅ Incident created successfully!\n\nView incident: ${incidentLink.toString()}`);
|
|
536
|
-
return;
|
|
537
533
|
}
|
|
538
534
|
catch (error) {
|
|
539
|
-
|
|
535
|
+
MicrosoftTeamsReplies.logFailure("Could not create an incident from Microsoft Teams", error, {
|
|
540
536
|
projectId: projectId.toString(),
|
|
541
537
|
});
|
|
542
|
-
|
|
543
|
-
|
|
538
|
+
await MicrosoftTeamsReplies.sendBestEffort(turnContext, await this.getIncidentCreateFailedMessage({
|
|
539
|
+
error: error,
|
|
540
|
+
projectId: projectId,
|
|
541
|
+
}));
|
|
544
542
|
return;
|
|
545
543
|
}
|
|
544
|
+
/*
|
|
545
|
+
* The incident exists from here on, so nothing below may report the
|
|
546
|
+
* create as failed: a user told it failed submits again, which creates
|
|
547
|
+
* a second incident and pages its on-call policies a second time. The
|
|
548
|
+
* confirmation goes first; removing the submitted form is a courtesy.
|
|
549
|
+
*/
|
|
550
|
+
await MicrosoftTeamsReplies.sendBestEffort(turnContext, await this.getIncidentCreatedMessage({
|
|
551
|
+
projectId: projectId,
|
|
552
|
+
incidentId: createdIncident.id || undefined,
|
|
553
|
+
}));
|
|
554
|
+
await MicrosoftTeamsReplies.deleteBestEffort(turnContext, turnContext.activity.replyToId);
|
|
555
|
+
return;
|
|
546
556
|
}
|
|
547
557
|
// Default fallback for unimplemented actions
|
|
548
558
|
await turnContext.sendActivity("Sorry, but the action " +
|
|
549
559
|
actionType +
|
|
550
560
|
" you requested is not implemented yet.");
|
|
551
561
|
}
|
|
562
|
+
/*
|
|
563
|
+
* Why a submitted incident was not created, for the user: the reason when
|
|
564
|
+
* OneUptime wrote one for them (a reference to another project's monitor,
|
|
565
|
+
* say), otherwise a generic line; the details go to the log.
|
|
566
|
+
*/
|
|
567
|
+
static async getIncidentCreateFailedMessage(data) {
|
|
568
|
+
const reason = MicrosoftTeamsReplies.getUserFacingErrorMessage(data.error);
|
|
569
|
+
if (reason) {
|
|
570
|
+
return `❌ Could not create the incident: ${reason}`;
|
|
571
|
+
}
|
|
572
|
+
const createInOneUptimeUrl = await MicrosoftTeamsReplies.getDashboardLink({
|
|
573
|
+
projectId: data.projectId,
|
|
574
|
+
route: "/incidents/create",
|
|
575
|
+
});
|
|
576
|
+
return `❌ Could not create the incident because of an unexpected error. Please try again, or create it in OneUptime${createInOneUptimeUrl ? `: ${createInOneUptimeUrl}` : "."}`;
|
|
577
|
+
}
|
|
578
|
+
// The confirmation, with a link to the incident when one can be built.
|
|
579
|
+
static async getIncidentCreatedMessage(data) {
|
|
580
|
+
if (data.incidentId) {
|
|
581
|
+
try {
|
|
582
|
+
const incidentLink = await IncidentService.getIncidentLinkInDashboard(data.projectId, data.incidentId);
|
|
583
|
+
return `✅ Incident created successfully!\n\nView incident: ${incidentLink.toString()}`;
|
|
584
|
+
}
|
|
585
|
+
catch (error) {
|
|
586
|
+
logger.debug("Could not build the link to a new incident");
|
|
587
|
+
logger.debug(error);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
return "✅ Incident created successfully!";
|
|
591
|
+
}
|
|
552
592
|
/*
|
|
553
593
|
* Every id below comes from the submitted card, not from the form we sent,
|
|
554
|
-
* and the
|
|
555
|
-
* before anything is created
|
|
556
|
-
* project as well.
|
|
594
|
+
* and the incident is created as root. So they are checked against the
|
|
595
|
+
* linked project before anything is created.
|
|
557
596
|
*/
|
|
558
597
|
static async createIncidentInProject(data) {
|
|
559
598
|
var _a, _b;
|
|
@@ -601,6 +640,16 @@ export default class MicrosoftTeamsIncidentActions {
|
|
|
601
640
|
return policy;
|
|
602
641
|
});
|
|
603
642
|
}
|
|
643
|
+
/*
|
|
644
|
+
* IncidentService moves the incident's monitors to this status, as it does
|
|
645
|
+
* for an incident declared in the dashboard or from Slack: with a status
|
|
646
|
+
* timeline entry and owner notifications, and back again once the
|
|
647
|
+
* incident is resolved. Teams used to write currentMonitorStatusId on the
|
|
648
|
+
* monitors directly, which did none of that.
|
|
649
|
+
*/
|
|
650
|
+
if (monitorStatusId) {
|
|
651
|
+
incident.changeMonitorStatusToId = monitorStatusId;
|
|
652
|
+
}
|
|
604
653
|
// Save the incident
|
|
605
654
|
const createdIncident = await IncidentService.create({
|
|
606
655
|
data: incident,
|
|
@@ -612,23 +661,6 @@ export default class MicrosoftTeamsIncidentActions {
|
|
|
612
661
|
projectId: projectId.toString(),
|
|
613
662
|
incidentId: (_b = createdIncident.id) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
614
663
|
});
|
|
615
|
-
// Update monitor status if specified
|
|
616
|
-
if (monitorStatusId) {
|
|
617
|
-
for (const monitorId of monitorIdArray) {
|
|
618
|
-
await MonitorService.updateOneBy({
|
|
619
|
-
query: {
|
|
620
|
-
_id: monitorId.toString(),
|
|
621
|
-
projectId: projectId,
|
|
622
|
-
},
|
|
623
|
-
data: {
|
|
624
|
-
currentMonitorStatusId: monitorStatusId,
|
|
625
|
-
},
|
|
626
|
-
props: {
|
|
627
|
-
isRoot: true,
|
|
628
|
-
},
|
|
629
|
-
});
|
|
630
|
-
}
|
|
631
|
-
}
|
|
632
664
|
return createdIncident;
|
|
633
665
|
}
|
|
634
666
|
static buildAddIncidentNoteCard(incidentId) {
|
|
@@ -870,135 +902,60 @@ export default class MicrosoftTeamsIncidentActions {
|
|
|
870
902
|
logger.error(error);
|
|
871
903
|
}
|
|
872
904
|
}
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
const severities = await
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
query: {
|
|
901
|
-
projectId: projectId,
|
|
902
|
-
},
|
|
903
|
-
select: {
|
|
904
|
-
name: true,
|
|
905
|
-
},
|
|
906
|
-
props: {
|
|
907
|
-
isRoot: true,
|
|
908
|
-
},
|
|
909
|
-
limit: LIMIT_PER_PROJECT,
|
|
910
|
-
skip: 0,
|
|
911
|
-
});
|
|
912
|
-
const monitorChoices = monitors
|
|
913
|
-
.map((monitor) => {
|
|
914
|
-
var _a;
|
|
915
|
-
return {
|
|
916
|
-
title: monitor.name || "",
|
|
917
|
-
value: ((_a = monitor._id) === null || _a === void 0 ? void 0 : _a.toString()) || "",
|
|
918
|
-
};
|
|
919
|
-
})
|
|
920
|
-
.filter((choice) => {
|
|
921
|
-
return choice.title && choice.value;
|
|
922
|
-
});
|
|
923
|
-
// Fetch monitor statuses
|
|
924
|
-
const monitorStatuses = await MonitorStatusService.findBy({
|
|
925
|
-
query: {
|
|
926
|
-
projectId: projectId,
|
|
927
|
-
},
|
|
928
|
-
select: {
|
|
929
|
-
name: true,
|
|
930
|
-
},
|
|
931
|
-
props: {
|
|
932
|
-
isRoot: true,
|
|
933
|
-
},
|
|
934
|
-
sort: {
|
|
935
|
-
priority: SortOrder.Ascending,
|
|
936
|
-
},
|
|
937
|
-
limit: LIMIT_PER_PROJECT,
|
|
938
|
-
skip: 0,
|
|
939
|
-
});
|
|
940
|
-
const monitorStatusChoices = monitorStatuses
|
|
941
|
-
.map((status) => {
|
|
942
|
-
var _a;
|
|
943
|
-
return {
|
|
944
|
-
title: status.name || "",
|
|
945
|
-
value: ((_a = status._id) === null || _a === void 0 ? void 0 : _a.toString()) || "",
|
|
946
|
-
};
|
|
947
|
-
})
|
|
948
|
-
.filter((choice) => {
|
|
949
|
-
return choice.title && choice.value;
|
|
950
|
-
});
|
|
951
|
-
// Fetch labels
|
|
952
|
-
const labels = await LabelService.findBy({
|
|
953
|
-
query: {
|
|
954
|
-
projectId: projectId,
|
|
955
|
-
},
|
|
956
|
-
select: {
|
|
957
|
-
name: true,
|
|
958
|
-
},
|
|
959
|
-
props: {
|
|
960
|
-
isRoot: true,
|
|
961
|
-
},
|
|
962
|
-
limit: LIMIT_PER_PROJECT,
|
|
963
|
-
skip: 0,
|
|
964
|
-
});
|
|
965
|
-
const labelChoices = labels
|
|
966
|
-
.map((label) => {
|
|
967
|
-
var _a;
|
|
968
|
-
return {
|
|
969
|
-
title: label.name || "",
|
|
970
|
-
value: ((_a = label._id) === null || _a === void 0 ? void 0 : _a.toString()) || "",
|
|
971
|
-
};
|
|
972
|
-
})
|
|
973
|
-
.filter((choice) => {
|
|
974
|
-
return choice.title && choice.value;
|
|
905
|
+
// Every list the "Create New Incident" card offers, read for one project.
|
|
906
|
+
static async getNewIncidentFormChoices(projectId) {
|
|
907
|
+
const [severities, monitors, monitorStatuses, labels, onCallDutyPolicies] = await Promise.all([
|
|
908
|
+
MicrosoftTeamsCardChoices.getIncidentSeverityChoices(projectId),
|
|
909
|
+
MicrosoftTeamsCardChoices.getMonitorChoices(projectId),
|
|
910
|
+
MicrosoftTeamsCardChoices.getMonitorStatusChoices(projectId),
|
|
911
|
+
MicrosoftTeamsCardChoices.getLabelChoices(projectId),
|
|
912
|
+
MicrosoftTeamsCardChoices.getOnCallDutyPolicyChoices(projectId),
|
|
913
|
+
]);
|
|
914
|
+
return {
|
|
915
|
+
severities: severities,
|
|
916
|
+
monitors: monitors,
|
|
917
|
+
monitorStatuses: monitorStatuses,
|
|
918
|
+
labels: labels,
|
|
919
|
+
onCallDutyPolicies: onCallDutyPolicies,
|
|
920
|
+
};
|
|
921
|
+
}
|
|
922
|
+
/*
|
|
923
|
+
* The "Create New Incident" card for a project, fitted to the first size
|
|
924
|
+
* budget. The bot itself sends the card through
|
|
925
|
+
* MicrosoftTeamsCreateCommands, which also tries the smaller budgets.
|
|
926
|
+
*/
|
|
927
|
+
static async buildNewIncidentCard(projectId, options) {
|
|
928
|
+
return this.buildNewIncidentCardForBudget({
|
|
929
|
+
choices: await this.getNewIncidentFormChoices(projectId),
|
|
930
|
+
budgetInBytes: MICROSOFT_TEAMS_CARD_SIZE_BUDGETS_IN_BYTES[0],
|
|
931
|
+
initialTitle: options === null || options === void 0 ? void 0 : options.initialTitle,
|
|
975
932
|
});
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
933
|
+
}
|
|
934
|
+
/*
|
|
935
|
+
* The "Create New Incident" card with its monitor, label and on-call policy
|
|
936
|
+
* lists shortened until it fits the budget (issue #4111: listing all of
|
|
937
|
+
* them made Teams refuse the card). Severities are required, so they are
|
|
938
|
+
* never shortened to fit (they are read up to 50).
|
|
939
|
+
*/
|
|
940
|
+
static buildNewIncidentCardForBudget(data) {
|
|
941
|
+
return MicrosoftTeamsCardChoices.fitCardToBudget({
|
|
942
|
+
lists: data.choices,
|
|
943
|
+
trimmableKeys: ["monitors", "labels", "onCallDutyPolicies"],
|
|
944
|
+
budgetInBytes: data.budgetInBytes,
|
|
945
|
+
buildCard: (shown) => {
|
|
946
|
+
return this.buildNewIncidentCardBody({
|
|
947
|
+
shown: shown,
|
|
948
|
+
initialTitle: data.initialTitle,
|
|
949
|
+
createInOneUptimeUrl: data.createInOneUptimeUrl,
|
|
950
|
+
});
|
|
986
951
|
},
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
const
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
title: policy.name || "",
|
|
995
|
-
value: ((_a = policy._id) === null || _a === void 0 ? void 0 : _a.toString()) || "",
|
|
996
|
-
};
|
|
997
|
-
})
|
|
998
|
-
.filter((choice) => {
|
|
999
|
-
return choice.title && choice.value;
|
|
1000
|
-
});
|
|
1001
|
-
// Build the card
|
|
952
|
+
}).card;
|
|
953
|
+
}
|
|
954
|
+
static buildNewIncidentCardBody(data) {
|
|
955
|
+
const { shown } = data;
|
|
956
|
+
const initialTitle = (data.initialTitle || "").trim();
|
|
957
|
+
let isAnythingLeftOff = false;
|
|
958
|
+
const addLaterHint = "You can add them to the incident in OneUptime after it is created.";
|
|
1002
959
|
const bodyElements = [
|
|
1003
960
|
{
|
|
1004
961
|
type: "TextBlock",
|
|
@@ -1006,13 +963,11 @@ export default class MicrosoftTeamsIncidentActions {
|
|
|
1006
963
|
size: "Large",
|
|
1007
964
|
weight: "Bolder",
|
|
1008
965
|
},
|
|
1009
|
-
{
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
isRequired: true,
|
|
1015
|
-
},
|
|
966
|
+
Object.assign({ type: "Input.Text", id: "incidentTitle", label: "Incident Title", placeholder: "Enter incident title", isRequired: true, maxLength: MICROSOFT_TEAMS_INCIDENT_TITLE_MAX_LENGTH }, (initialTitle
|
|
967
|
+
? {
|
|
968
|
+
value: truncateToLength(initialTitle, MICROSOFT_TEAMS_INCIDENT_TITLE_MAX_LENGTH),
|
|
969
|
+
}
|
|
970
|
+
: {})),
|
|
1016
971
|
{
|
|
1017
972
|
type: "Input.Text",
|
|
1018
973
|
id: "incidentDescription",
|
|
@@ -1022,74 +977,93 @@ export default class MicrosoftTeamsIncidentActions {
|
|
|
1022
977
|
isRequired: true,
|
|
1023
978
|
},
|
|
1024
979
|
];
|
|
980
|
+
const addNotShownNote = (list, pluralNoun) => {
|
|
981
|
+
const note = MicrosoftTeamsCardChoices.buildNotShownNoteElement({
|
|
982
|
+
list: list,
|
|
983
|
+
pluralNoun: pluralNoun,
|
|
984
|
+
addLaterHint: addLaterHint,
|
|
985
|
+
});
|
|
986
|
+
if (note) {
|
|
987
|
+
isAnythingLeftOff = true;
|
|
988
|
+
bodyElements.push(note);
|
|
989
|
+
}
|
|
990
|
+
};
|
|
1025
991
|
// Add severity dropdown if we have severities
|
|
1026
|
-
if (
|
|
992
|
+
if (shown.severities.choices.length > 0) {
|
|
1027
993
|
bodyElements.push({
|
|
1028
994
|
type: "Input.ChoiceSet",
|
|
1029
995
|
id: "incidentSeverity",
|
|
1030
996
|
label: "Incident Severity",
|
|
1031
997
|
style: "compact",
|
|
1032
998
|
isRequired: true,
|
|
1033
|
-
choices:
|
|
999
|
+
choices: shown.severities.choices,
|
|
1034
1000
|
});
|
|
1035
1001
|
}
|
|
1036
1002
|
// Add monitor multi-select if we have monitors
|
|
1037
|
-
if (
|
|
1003
|
+
if (shown.monitors.choices.length > 0) {
|
|
1038
1004
|
bodyElements.push({
|
|
1039
1005
|
type: "Input.ChoiceSet",
|
|
1040
1006
|
id: "incidentMonitors",
|
|
1041
1007
|
label: "Affected Monitors (Optional)",
|
|
1042
1008
|
style: "compact",
|
|
1043
1009
|
isMultiSelect: true,
|
|
1044
|
-
choices:
|
|
1010
|
+
choices: shown.monitors.choices,
|
|
1045
1011
|
});
|
|
1046
1012
|
}
|
|
1013
|
+
addNotShownNote(shown.monitors, "monitors");
|
|
1047
1014
|
// Add monitor status dropdown if we have statuses and monitors
|
|
1048
|
-
if (
|
|
1015
|
+
if (shown.monitorStatuses.choices.length > 0 &&
|
|
1016
|
+
shown.monitors.choices.length > 0) {
|
|
1049
1017
|
bodyElements.push({
|
|
1050
1018
|
type: "Input.ChoiceSet",
|
|
1051
1019
|
id: "monitorStatus",
|
|
1052
1020
|
label: "Change Monitor Status To (Optional)",
|
|
1053
1021
|
style: "compact",
|
|
1054
|
-
choices:
|
|
1022
|
+
choices: shown.monitorStatuses.choices,
|
|
1055
1023
|
});
|
|
1056
1024
|
}
|
|
1057
1025
|
// Add on-call policy multi-select if we have policies
|
|
1058
|
-
if (
|
|
1026
|
+
if (shown.onCallDutyPolicies.choices.length > 0) {
|
|
1059
1027
|
bodyElements.push({
|
|
1060
1028
|
type: "Input.ChoiceSet",
|
|
1061
1029
|
id: "onCallDutyPolicies",
|
|
1062
1030
|
label: "Execute On-Call Policies (Optional)",
|
|
1063
1031
|
style: "compact",
|
|
1064
1032
|
isMultiSelect: true,
|
|
1065
|
-
choices:
|
|
1033
|
+
choices: shown.onCallDutyPolicies.choices,
|
|
1066
1034
|
});
|
|
1067
1035
|
}
|
|
1036
|
+
addNotShownNote(shown.onCallDutyPolicies, "on-call policies");
|
|
1068
1037
|
// Add labels multi-select if we have labels
|
|
1069
|
-
if (
|
|
1038
|
+
if (shown.labels.choices.length > 0) {
|
|
1070
1039
|
bodyElements.push({
|
|
1071
1040
|
type: "Input.ChoiceSet",
|
|
1072
1041
|
id: "labels",
|
|
1073
1042
|
label: "Labels (Optional)",
|
|
1074
1043
|
style: "compact",
|
|
1075
1044
|
isMultiSelect: true,
|
|
1076
|
-
choices:
|
|
1045
|
+
choices: shown.labels.choices,
|
|
1077
1046
|
});
|
|
1078
1047
|
}
|
|
1048
|
+
addNotShownNote(shown.labels, "labels");
|
|
1049
|
+
const actions = [
|
|
1050
|
+
{
|
|
1051
|
+
type: "Action.Submit",
|
|
1052
|
+
title: "Create Incident",
|
|
1053
|
+
data: {
|
|
1054
|
+
action: MicrosoftTeamsIncidentActionType.SubmitNewIncident,
|
|
1055
|
+
},
|
|
1056
|
+
},
|
|
1057
|
+
];
|
|
1058
|
+
if (isAnythingLeftOff && data.createInOneUptimeUrl) {
|
|
1059
|
+
actions.push(MicrosoftTeamsCardChoices.buildCreateInOneUptimeAction(data.createInOneUptimeUrl));
|
|
1060
|
+
}
|
|
1079
1061
|
return {
|
|
1080
1062
|
type: "AdaptiveCard",
|
|
1081
1063
|
$schema: "http://adaptivecards.io/schemas/adaptive-card.json",
|
|
1082
1064
|
version: "1.5",
|
|
1083
1065
|
body: bodyElements,
|
|
1084
|
-
actions:
|
|
1085
|
-
{
|
|
1086
|
-
type: "Action.Submit",
|
|
1087
|
-
title: "Create Incident",
|
|
1088
|
-
data: {
|
|
1089
|
-
action: MicrosoftTeamsIncidentActionType.SubmitNewIncident,
|
|
1090
|
-
},
|
|
1091
|
-
},
|
|
1092
|
-
],
|
|
1066
|
+
actions: actions,
|
|
1093
1067
|
};
|
|
1094
1068
|
}
|
|
1095
1069
|
}
|