@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.
Files changed (383) hide show
  1. package/Models/DatabaseModels/AutoRemediationSuggestion.ts +60 -0
  2. package/Models/DatabaseModels/CephCluster.ts +213 -0
  3. package/Models/DatabaseModels/DatabaseServer.ts +213 -0
  4. package/Models/DatabaseModels/DockerHost.ts +213 -0
  5. package/Models/DatabaseModels/DockerSwarmCluster.ts +213 -0
  6. package/Models/DatabaseModels/GlobalConfig.ts +1 -1
  7. package/Models/DatabaseModels/Host.ts +213 -0
  8. package/Models/DatabaseModels/Index.ts +2 -0
  9. package/Models/DatabaseModels/PodmanHost.ts +213 -0
  10. package/Models/DatabaseModels/ProxmoxCluster.ts +213 -0
  11. package/Models/DatabaseModels/ResourceAiAgent.ts +419 -0
  12. package/Models/DatabaseModels/RunnerJob.ts +144 -0
  13. package/Models/DatabaseModels/VMwareVCenter.ts +213 -0
  14. package/Server/API/AutoRemediationAPI.ts +392 -1
  15. package/Server/API/ResourceAiAccessAPI.ts +1669 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/1796300000000-AddResourceAiAgents.ts +423 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  18. package/Server/Infrastructure/Semaphore.ts +22 -0
  19. package/Server/Middleware/TelemetryIngest.ts +15 -5
  20. package/Server/Services/AnalyticsDatabaseService.ts +45 -1
  21. package/Server/Services/AutoRemediationRuleEngineService.ts +940 -112
  22. package/Server/Services/CephClusterService.ts +109 -1
  23. package/Server/Services/DatabaseServerService.ts +116 -1
  24. package/Server/Services/DockerHostService.ts +109 -1
  25. package/Server/Services/DockerSwarmClusterService.ts +113 -1
  26. package/Server/Services/HostService.ts +126 -4
  27. package/Server/Services/MetricRecordingRuleService.ts +47 -0
  28. package/Server/Services/PodmanHostService.ts +109 -1
  29. package/Server/Services/ProxmoxClusterService.ts +110 -1
  30. package/Server/Services/ResourceAiAccessService.ts +1439 -0
  31. package/Server/Services/ResourceAiAgentJobService.ts +202 -0
  32. package/Server/Services/ResourceAiAgentService.ts +2432 -0
  33. package/Server/Services/RunnerJobService.ts +611 -4
  34. package/Server/Services/TelemetryUsageBillingService.ts +28 -0
  35. package/Server/Services/TraceRecordingRuleService.ts +33 -0
  36. package/Server/Services/VMwareVCenterService.ts +110 -1
  37. package/Server/Utils/AI/Remediation/RemediationCommandTools.ts +1434 -32
  38. package/Server/Utils/AI/Remediation/RemediationExecutionRunner.ts +935 -21
  39. package/Server/Utils/AI/Remediation/RemediationPlanRunner.ts +25 -1
  40. package/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.ts +577 -0
  41. package/Server/Utils/AI/ResourceAccess/ResourceAccessContext.ts +271 -0
  42. package/Server/Utils/AI/ResourceAccess/ResourceAccessToolNames.ts +45 -0
  43. package/Server/Utils/AI/ResourceAccess/ResourceAiAccessSettings.ts +964 -0
  44. package/Server/Utils/AI/ResourceAccess/ResourceAiDeleteCleanup.ts +333 -0
  45. package/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.ts +873 -0
  46. package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +72 -2
  47. package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +72 -5
  48. package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +72 -5
  49. package/Server/Utils/AutoRemediation/CommandPlanExecutor.ts +396 -13
  50. package/Server/Utils/AutoRemediation/RemediationVerifier.ts +35 -2
  51. package/Server/Utils/Database/ProjectScopedReferenceValidator.ts +9 -1
  52. package/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.ts +920 -0
  53. package/Server/Utils/SessionReplay/SessionReplayUsage.ts +84 -6
  54. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.ts +35 -15
  55. package/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.ts +33 -15
  56. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.ts +21 -1
  57. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.ts +298 -224
  58. package/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.ts +35 -15
  59. package/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.ts +389 -175
  60. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +366 -143
  61. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsActivityDeduplicator.ts +163 -0
  62. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.ts +396 -0
  63. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCommands.ts +418 -0
  64. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsMessageSize.ts +152 -0
  65. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsReplies.ts +251 -0
  66. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezone.ts +214 -0
  67. package/Tests/App/Dashboard/ClusterAccessNotice.test.tsx +93 -0
  68. package/Tests/App/Dashboard/DatabaseDocumentationMarkdown.test.ts +18 -6
  69. package/Tests/App/Dashboard/InvestigationInfrastructureTools.test.tsx +506 -0
  70. package/Tests/App/Dashboard/RemediationSuggestionCardDescription.test.tsx +209 -0
  71. package/Tests/App/Dashboard/RemediationSuggestionCardResource.test.tsx +317 -0
  72. package/Tests/App/Dashboard/ResourceAiAccessSettingsUtil.test.ts +921 -0
  73. package/Tests/App/Dashboard/ResourceAiAgentInstall.test.ts +860 -0
  74. package/Tests/App/Dashboard/ResourceAiAgentPage.test.tsx +1721 -0
  75. package/Tests/App/Dashboard/ResourceAiAgentStatus.test.ts +1002 -0
  76. package/Tests/App/Dashboard/ResourceAiInsightsPage.test.tsx +931 -0
  77. package/Tests/App/Dashboard/ResourceAiNavigation.test.tsx +575 -0
  78. package/Tests/App/Dashboard/RunbookStepTypeMaps.test.ts +38 -7
  79. package/Tests/Models/DatabaseModels/DatabaseServerModels.test.ts +33 -1
  80. package/Tests/Models/DatabaseModels/ResourceAiAccessColumns.test.ts +738 -0
  81. package/Tests/Models/DatabaseModels/ResourceAiAgentModel.test.ts +842 -0
  82. package/Tests/Server/API/AutoRemediationApproveResourceRound.test.ts +835 -0
  83. package/Tests/Server/API/ResourceAiAccessAPI.test.ts +2730 -0
  84. package/Tests/Server/Infrastructure/Postgres/AddDatabaseServerTablesMigration.test.ts +60 -0
  85. package/Tests/Server/Infrastructure/Postgres/AddResourceAiAgentsMigration.test.ts +659 -0
  86. package/Tests/Server/Infrastructure/SemaphoreMutex.test.ts +31 -0
  87. package/Tests/Server/Middleware/TelemetryIngestBrowserKey.test.ts +63 -5
  88. package/Tests/Server/Middleware/TelemetryIngestKubernetesAgentRunnerPinnedKey.test.ts +103 -5
  89. package/Tests/Server/Middleware/TelemetryIngestKubernetesAgentRunnerRateLimit.test.ts +19 -1
  90. package/Tests/Server/Services/AutoRemediationResourceRuleEngine.test.ts +1279 -0
  91. package/Tests/Server/Services/DatabaseServerService.test.ts +55 -0
  92. package/Tests/Server/Services/GroupTelemetryUsageExcludeNames.test.ts +299 -0
  93. package/Tests/Server/Services/HostServiceFindOrCreateMemo.test.ts +44 -0
  94. package/Tests/Server/Services/MonitorProbeServiceIntervalScheduling.test.ts +45 -6
  95. package/Tests/Server/Services/RecordingRuleReservedMetricName.test.ts +171 -0
  96. package/Tests/Server/Services/ResourceAiAccessChangeAuthorization.test.ts +256 -0
  97. package/Tests/Server/Services/ResourceAiAccessService.test.ts +1373 -0
  98. package/Tests/Server/Services/ResourceAiAgentJobService.test.ts +375 -0
  99. package/Tests/Server/Services/ResourceAiAgentServiceHelpers.test.ts +1114 -0
  100. package/Tests/Server/Services/ResourceAiAgentServiceLifecycle.test.ts +1050 -0
  101. package/Tests/Server/Services/ResourceAiAgentServiceRegister.test.ts +2251 -0
  102. package/Tests/Server/Services/ResourceAiSettingsCreate.test.ts +373 -0
  103. package/Tests/Server/Services/ResourceAiSettingsPermission.test.ts +1042 -0
  104. package/Tests/Server/Services/ResourceServiceDeleteCleansUpAi.test.ts +319 -0
  105. package/Tests/Server/Services/RunnerJobEnqueueKubectl.test.ts +105 -0
  106. package/Tests/Server/Services/RunnerJobEnqueueResourceCommand.test.ts +986 -0
  107. package/Tests/Server/Services/RunnerJobResourceCommandLane.test.ts +211 -0
  108. package/Tests/Server/Services/RunnerJobResourceCommandTimeoutAndRedaction.test.ts +352 -0
  109. package/Tests/Server/Services/TelemetryUsageBillingSloExclusion.test.ts +218 -0
  110. package/Tests/Server/TestingUtils/Services/FakeRunnerJobCount.ts +145 -0
  111. package/Tests/Server/Utils/AI/InvestigationInfrastructureAccessWiring.test.ts +453 -0
  112. package/Tests/Server/Utils/AI/InvestigationInfrastructureReport.test.ts +721 -0
  113. package/Tests/Server/Utils/AI/RemediationCommandTools.test.ts +94 -1
  114. package/Tests/Server/Utils/AI/RemediationCommandToolsResource.test.ts +1530 -0
  115. package/Tests/Server/Utils/AI/RemediationExecutionRunnerResourceMode.test.ts +1249 -0
  116. package/Tests/Server/Utils/AI/RemediationPlanRunner.test.ts +117 -0
  117. package/Tests/Server/Utils/AI/RemediationResourceCopyParity.test.ts +463 -0
  118. package/Tests/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.test.ts +722 -0
  119. package/Tests/Server/Utils/AI/ResourceAccess/ResourceAccessContext.test.ts +266 -0
  120. package/Tests/Server/Utils/AI/ResourceAccess/ResourceAiAccessSettings.test.ts +1220 -0
  121. package/Tests/Server/Utils/AI/ResourceAccess/ResourceAiDeleteCleanup.test.ts +569 -0
  122. package/Tests/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.test.ts +830 -0
  123. package/Tests/Server/Utils/AutoRemediation/CommandPlanExecutorResource.test.ts +717 -0
  124. package/Tests/Server/Utils/AutoRemediation/RemediationVerifierResourceFollowUp.test.ts +338 -0
  125. package/Tests/Server/Utils/Monitor/Criteria/SessionReplayBudgetTemplateCriteria.test.ts +422 -0
  126. package/Tests/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.test.ts +1647 -0
  127. package/Tests/Server/Utils/SessionReplay/SessionReplayUsage.test.ts +143 -1
  128. package/Tests/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.test.ts +33 -3
  129. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsAccountNotLinked.test.ts +1093 -0
  130. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsActivityDeduplicator.test.ts +1049 -0
  131. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.test.ts +1676 -0
  132. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCards.test.ts +2884 -0
  133. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCommands.test.ts +2490 -0
  134. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateSubmit.test.ts +2293 -0
  135. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateSubmitServerTimezone.test.ts +386 -0
  136. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsMessageSize.test.ts +1477 -0
  137. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsReplies.test.ts +1967 -0
  138. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsStripHtmlTags.test.ts +92 -0
  139. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsSubmittedFormRemoval.test.ts +1819 -0
  140. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezone.test.ts +1033 -0
  141. package/Tests/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezoneServerZone.test.ts +610 -0
  142. package/Tests/Server/Utils/Workspace/MicrosoftTeamsBotMessageHandling.test.ts +2610 -0
  143. package/Tests/Server/Utils/Workspace/MicrosoftTeamsCreateCommandsEndToEnd.test.ts +4672 -0
  144. package/Tests/Server/Utils/Workspace/WorkspaceCreateProjectReferences.test.ts +190 -65
  145. package/Tests/Types/AutoRemediation/AiRemediationCommandPlan.test.ts +10 -4
  146. package/Tests/Types/AutoRemediation/AiRemediationCommandPlanResourceCommand.test.ts +305 -0
  147. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +277 -13
  148. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +113 -0
  149. package/Tests/Types/Monitor/RumAlertTemplates.test.ts +773 -2
  150. package/Tests/Types/ResourceAiAgent/AiResourceType.test.ts +419 -0
  151. package/Tests/Types/ResourceAiAgent/ResourceAiAccess.test.ts +517 -0
  152. package/Tests/Types/Runbook/RunbookStepType.test.ts +147 -8
  153. package/Tests/UI/Rum/RecordingHealthDashboard.test.tsx +769 -1
  154. package/Tests/Utils/AiRemediation/Resource/CephCommandPolicy.test.ts +1653 -0
  155. package/Tests/Utils/AiRemediation/Resource/CephOutputRedaction.test.ts +204 -0
  156. package/Tests/Utils/AiRemediation/Resource/DatabaseCommandPolicy.test.ts +1077 -0
  157. package/Tests/Utils/AiRemediation/Resource/DatabaseDiagnosticCatalog.test.ts +558 -0
  158. package/Tests/Utils/AiRemediation/Resource/DatabaseQueryRedactor.test.ts +834 -0
  159. package/Tests/Utils/AiRemediation/Resource/DockerCliGrammar.test.ts +747 -0
  160. package/Tests/Utils/AiRemediation/Resource/DockerEngineCommandPolicy.test.ts +1259 -0
  161. package/Tests/Utils/AiRemediation/Resource/DockerOutputRedaction.test.ts +386 -0
  162. package/Tests/Utils/AiRemediation/Resource/DockerSwarmCommandPolicy.test.ts +782 -0
  163. package/Tests/Utils/AiRemediation/Resource/GovcCommandPolicy.test.ts +2259 -0
  164. package/Tests/Utils/AiRemediation/Resource/HostCommandPolicy.test.ts +2019 -0
  165. package/Tests/Utils/AiRemediation/Resource/ProxmoxCommandPolicy.test.ts +2497 -0
  166. package/Tests/Utils/AiRemediation/Resource/ResourceCommandPolicy.test.ts +1305 -0
  167. package/Tests/Utils/AiRemediation/Resource/ResourceCommandPolicyCore.test.ts +585 -0
  168. package/Tests/Utils/AiRemediation/Resource/ResourceOutputRedactor.test.ts +334 -0
  169. package/Tests/Utils/AiRemediation/Resource/ResourceOutputRedactorCopyParity.test.ts +98 -0
  170. package/Tests/Utils/AiRemediation/Resource/ResourcePolicyImportClosure.test.ts +391 -0
  171. package/Tests/Utils/AiRemediation/ResourceAiAgentPolicyCopyParity.test.ts +497 -0
  172. package/Tests/Utils/SessionReplay/SessionReplayBudgetMetricType.test.ts +383 -0
  173. package/Types/AI/ResourceAiAccessApi.ts +140 -0
  174. package/Types/AI/ResourceAiAccessPermissions.ts +126 -0
  175. package/Types/AutoRemediation/AiRemediationCommandPlan.ts +183 -2
  176. package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +55 -22
  177. package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +35 -3
  178. package/Types/Monitor/RumAlertTemplates.ts +351 -4
  179. package/Types/ResourceAiAgent/AiResourceType.ts +310 -0
  180. package/Types/ResourceAiAgent/ResourceAiAccess.ts +574 -0
  181. package/Types/Rum/SessionReplayBudgetMetricType.ts +47 -0
  182. package/Types/Runbook/RunbookStepType.ts +29 -0
  183. package/Types/Telemetry/TelemetryIngestSurface.ts +14 -2
  184. package/Utils/AI/InvestigationReport.ts +121 -15
  185. package/Utils/AiRemediation/Resource/CephCommandPolicy.ts +1936 -0
  186. package/Utils/AiRemediation/Resource/DatabaseCommandPolicy.ts +166 -0
  187. package/Utils/AiRemediation/Resource/DatabaseDiagnosticCatalog.ts +1532 -0
  188. package/Utils/AiRemediation/Resource/DatabaseQueryRedactor.ts +1394 -0
  189. package/Utils/AiRemediation/Resource/DockerCliGrammar.ts +1839 -0
  190. package/Utils/AiRemediation/Resource/DockerEngineCommandPolicy.ts +490 -0
  191. package/Utils/AiRemediation/Resource/DockerSwarmCommandPolicy.ts +687 -0
  192. package/Utils/AiRemediation/Resource/GovcCommandPolicy.ts +2096 -0
  193. package/Utils/AiRemediation/Resource/HostCommandPolicy.ts +2982 -0
  194. package/Utils/AiRemediation/Resource/ProxmoxCommandPolicy.ts +1679 -0
  195. package/Utils/AiRemediation/Resource/ResourceCommandPolicy.ts +851 -0
  196. package/Utils/AiRemediation/Resource/ResourceCommandPolicyCore.ts +593 -0
  197. package/Utils/AiRemediation/Resource/ResourceOutputRedactor.ts +2812 -0
  198. package/Utils/SessionReplay/SessionReplayBudgetMetricType.ts +184 -0
  199. package/build/dist/Models/DatabaseModels/AutoRemediationSuggestion.js +62 -0
  200. package/build/dist/Models/DatabaseModels/AutoRemediationSuggestion.js.map +1 -1
  201. package/build/dist/Models/DatabaseModels/CephCluster.js +219 -0
  202. package/build/dist/Models/DatabaseModels/CephCluster.js.map +1 -1
  203. package/build/dist/Models/DatabaseModels/DatabaseServer.js +219 -0
  204. package/build/dist/Models/DatabaseModels/DatabaseServer.js.map +1 -1
  205. package/build/dist/Models/DatabaseModels/DockerHost.js +219 -0
  206. package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -1
  207. package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js +219 -0
  208. package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js.map +1 -1
  209. package/build/dist/Models/DatabaseModels/GlobalConfig.js +1 -1
  210. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  211. package/build/dist/Models/DatabaseModels/Host.js +219 -0
  212. package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
  213. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  214. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  215. package/build/dist/Models/DatabaseModels/PodmanHost.js +219 -0
  216. package/build/dist/Models/DatabaseModels/PodmanHost.js.map +1 -1
  217. package/build/dist/Models/DatabaseModels/ProxmoxCluster.js +219 -0
  218. package/build/dist/Models/DatabaseModels/ProxmoxCluster.js.map +1 -1
  219. package/build/dist/Models/DatabaseModels/ResourceAiAgent.js +439 -0
  220. package/build/dist/Models/DatabaseModels/ResourceAiAgent.js.map +1 -0
  221. package/build/dist/Models/DatabaseModels/RunnerJob.js +145 -0
  222. package/build/dist/Models/DatabaseModels/RunnerJob.js.map +1 -1
  223. package/build/dist/Models/DatabaseModels/VMwareVCenter.js +219 -0
  224. package/build/dist/Models/DatabaseModels/VMwareVCenter.js.map +1 -1
  225. package/build/dist/Server/API/AutoRemediationAPI.js +231 -1
  226. package/build/dist/Server/API/AutoRemediationAPI.js.map +1 -1
  227. package/build/dist/Server/API/ResourceAiAccessAPI.js +1119 -0
  228. package/build/dist/Server/API/ResourceAiAccessAPI.js.map +1 -0
  229. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796300000000-AddResourceAiAgents.js +168 -0
  230. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796300000000-AddResourceAiAgents.js.map +1 -0
  231. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  232. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  233. package/build/dist/Server/Infrastructure/Semaphore.js +6 -0
  234. package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
  235. package/build/dist/Server/Middleware/TelemetryIngest.js +12 -5
  236. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  237. package/build/dist/Server/Services/AnalyticsDatabaseService.js +26 -1
  238. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  239. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +601 -3
  240. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -1
  241. package/build/dist/Server/Services/CephClusterService.js +104 -0
  242. package/build/dist/Server/Services/CephClusterService.js.map +1 -1
  243. package/build/dist/Server/Services/DatabaseServerService.js +99 -0
  244. package/build/dist/Server/Services/DatabaseServerService.js.map +1 -1
  245. package/build/dist/Server/Services/DockerHostService.js +104 -0
  246. package/build/dist/Server/Services/DockerHostService.js.map +1 -1
  247. package/build/dist/Server/Services/DockerSwarmClusterService.js +104 -0
  248. package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -1
  249. package/build/dist/Server/Services/HostService.js +114 -2
  250. package/build/dist/Server/Services/HostService.js.map +1 -1
  251. package/build/dist/Server/Services/MetricRecordingRuleService.js +46 -0
  252. package/build/dist/Server/Services/MetricRecordingRuleService.js.map +1 -1
  253. package/build/dist/Server/Services/PodmanHostService.js +104 -0
  254. package/build/dist/Server/Services/PodmanHostService.js.map +1 -1
  255. package/build/dist/Server/Services/ProxmoxClusterService.js +104 -0
  256. package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -1
  257. package/build/dist/Server/Services/ResourceAiAccessService.js +1028 -0
  258. package/build/dist/Server/Services/ResourceAiAccessService.js.map +1 -0
  259. package/build/dist/Server/Services/ResourceAiAgentJobService.js +173 -0
  260. package/build/dist/Server/Services/ResourceAiAgentJobService.js.map +1 -0
  261. package/build/dist/Server/Services/ResourceAiAgentService.js +1687 -0
  262. package/build/dist/Server/Services/ResourceAiAgentService.js.map +1 -0
  263. package/build/dist/Server/Services/RunnerJobService.js +344 -5
  264. package/build/dist/Server/Services/RunnerJobService.js.map +1 -1
  265. package/build/dist/Server/Services/TelemetryUsageBillingService.js +26 -0
  266. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  267. package/build/dist/Server/Services/TraceRecordingRuleService.js +37 -0
  268. package/build/dist/Server/Services/TraceRecordingRuleService.js.map +1 -1
  269. package/build/dist/Server/Services/VMwareVCenterService.js +104 -0
  270. package/build/dist/Server/Services/VMwareVCenterService.js.map +1 -1
  271. package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js +1029 -30
  272. package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js.map +1 -1
  273. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js +633 -28
  274. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js.map +1 -1
  275. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js +21 -1
  276. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js.map +1 -1
  277. package/build/dist/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.js +330 -0
  278. package/build/dist/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.js.map +1 -0
  279. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAccessContext.js +160 -0
  280. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAccessContext.js.map +1 -0
  281. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAccessToolNames.js +33 -0
  282. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAccessToolNames.js.map +1 -0
  283. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAiAccessSettings.js +640 -0
  284. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAiAccessSettings.js.map +1 -0
  285. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAiDeleteCleanup.js +226 -0
  286. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceAiDeleteCleanup.js.map +1 -0
  287. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.js +600 -0
  288. package/build/dist/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.js.map +1 -0
  289. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +50 -4
  290. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
  291. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +55 -4
  292. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
  293. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +55 -4
  294. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
  295. package/build/dist/Server/Utils/AutoRemediation/CommandPlanExecutor.js +290 -13
  296. package/build/dist/Server/Utils/AutoRemediation/CommandPlanExecutor.js.map +1 -1
  297. package/build/dist/Server/Utils/AutoRemediation/RemediationVerifier.js +29 -1
  298. package/build/dist/Server/Utils/AutoRemediation/RemediationVerifier.js.map +1 -1
  299. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js +9 -1
  300. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js.map +1 -1
  301. package/build/dist/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.js +627 -0
  302. package/build/dist/Server/Utils/SessionReplay/SessionReplayBudgetMetrics.js.map +1 -0
  303. package/build/dist/Server/Utils/SessionReplay/SessionReplayUsage.js +60 -5
  304. package/build/dist/Server/Utils/SessionReplay/SessionReplayUsage.js.map +1 -1
  305. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js +19 -15
  306. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js.map +1 -1
  307. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js +19 -15
  308. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js.map +1 -1
  309. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js +17 -1
  310. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js.map +1 -1
  311. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js +183 -209
  312. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js.map +1 -1
  313. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js +19 -15
  314. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js.map +1 -1
  315. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.js +233 -167
  316. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.js.map +1 -1
  317. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +263 -110
  318. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  319. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsActivityDeduplicator.js +129 -0
  320. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsActivityDeduplicator.js.map +1 -0
  321. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.js +266 -0
  322. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCardChoices.js.map +1 -0
  323. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCommands.js +258 -0
  324. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsCreateCommands.js.map +1 -0
  325. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsMessageSize.js +104 -0
  326. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsMessageSize.js.map +1 -0
  327. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsReplies.js +183 -0
  328. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsReplies.js.map +1 -0
  329. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezone.js +123 -0
  330. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeamsTimezone.js.map +1 -0
  331. package/build/dist/Types/AI/ResourceAiAccessApi.js +30 -0
  332. package/build/dist/Types/AI/ResourceAiAccessApi.js.map +1 -0
  333. package/build/dist/Types/AI/ResourceAiAccessPermissions.js +98 -0
  334. package/build/dist/Types/AI/ResourceAiAccessPermissions.js.map +1 -0
  335. package/build/dist/Types/AutoRemediation/AiRemediationCommandPlan.js +116 -29
  336. package/build/dist/Types/AutoRemediation/AiRemediationCommandPlan.js.map +1 -1
  337. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +47 -21
  338. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
  339. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +5 -0
  340. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
  341. package/build/dist/Types/Monitor/RumAlertTemplates.js +199 -3
  342. package/build/dist/Types/Monitor/RumAlertTemplates.js.map +1 -1
  343. package/build/dist/Types/ResourceAiAgent/AiResourceType.js +242 -0
  344. package/build/dist/Types/ResourceAiAgent/AiResourceType.js.map +1 -0
  345. package/build/dist/Types/ResourceAiAgent/ResourceAiAccess.js +275 -0
  346. package/build/dist/Types/ResourceAiAgent/ResourceAiAccess.js.map +1 -0
  347. package/build/dist/Types/Rum/SessionReplayBudgetMetricType.js +45 -0
  348. package/build/dist/Types/Rum/SessionReplayBudgetMetricType.js.map +1 -0
  349. package/build/dist/Types/Runbook/RunbookStepType.js +27 -0
  350. package/build/dist/Types/Runbook/RunbookStepType.js.map +1 -1
  351. package/build/dist/Types/Telemetry/TelemetryIngestSurface.js +13 -2
  352. package/build/dist/Types/Telemetry/TelemetryIngestSurface.js.map +1 -1
  353. package/build/dist/Utils/AI/InvestigationReport.js +71 -11
  354. package/build/dist/Utils/AI/InvestigationReport.js.map +1 -1
  355. package/build/dist/Utils/AiRemediation/Resource/CephCommandPolicy.js +1462 -0
  356. package/build/dist/Utils/AiRemediation/Resource/CephCommandPolicy.js.map +1 -0
  357. package/build/dist/Utils/AiRemediation/Resource/DatabaseCommandPolicy.js +122 -0
  358. package/build/dist/Utils/AiRemediation/Resource/DatabaseCommandPolicy.js.map +1 -0
  359. package/build/dist/Utils/AiRemediation/Resource/DatabaseDiagnosticCatalog.js +1139 -0
  360. package/build/dist/Utils/AiRemediation/Resource/DatabaseDiagnosticCatalog.js.map +1 -0
  361. package/build/dist/Utils/AiRemediation/Resource/DatabaseQueryRedactor.js +1060 -0
  362. package/build/dist/Utils/AiRemediation/Resource/DatabaseQueryRedactor.js.map +1 -0
  363. package/build/dist/Utils/AiRemediation/Resource/DockerCliGrammar.js +1301 -0
  364. package/build/dist/Utils/AiRemediation/Resource/DockerCliGrammar.js.map +1 -0
  365. package/build/dist/Utils/AiRemediation/Resource/DockerEngineCommandPolicy.js +370 -0
  366. package/build/dist/Utils/AiRemediation/Resource/DockerEngineCommandPolicy.js.map +1 -0
  367. package/build/dist/Utils/AiRemediation/Resource/DockerSwarmCommandPolicy.js +498 -0
  368. package/build/dist/Utils/AiRemediation/Resource/DockerSwarmCommandPolicy.js.map +1 -0
  369. package/build/dist/Utils/AiRemediation/Resource/GovcCommandPolicy.js +1565 -0
  370. package/build/dist/Utils/AiRemediation/Resource/GovcCommandPolicy.js.map +1 -0
  371. package/build/dist/Utils/AiRemediation/Resource/HostCommandPolicy.js +2206 -0
  372. package/build/dist/Utils/AiRemediation/Resource/HostCommandPolicy.js.map +1 -0
  373. package/build/dist/Utils/AiRemediation/Resource/ProxmoxCommandPolicy.js +1129 -0
  374. package/build/dist/Utils/AiRemediation/Resource/ProxmoxCommandPolicy.js.map +1 -0
  375. package/build/dist/Utils/AiRemediation/Resource/ResourceCommandPolicy.js +565 -0
  376. package/build/dist/Utils/AiRemediation/Resource/ResourceCommandPolicy.js.map +1 -0
  377. package/build/dist/Utils/AiRemediation/Resource/ResourceCommandPolicyCore.js +408 -0
  378. package/build/dist/Utils/AiRemediation/Resource/ResourceCommandPolicyCore.js.map +1 -0
  379. package/build/dist/Utils/AiRemediation/Resource/ResourceOutputRedactor.js +1910 -0
  380. package/build/dist/Utils/AiRemediation/Resource/ResourceOutputRedactor.js.map +1 -0
  381. package/build/dist/Utils/SessionReplay/SessionReplayBudgetMetricType.js +160 -0
  382. package/build/dist/Utils/SessionReplay/SessionReplayBudgetMetricType.js.map +1 -0
  383. package/package.json +1 -1
@@ -2,6 +2,7 @@ import AcmeCertificate from "./AcmeCertificate";
2
2
  import AcmeChallenge from "./AcmeChallenge";
3
3
  import KubernetesCluster from "./KubernetesCluster";
4
4
  import KubernetesAiAgent from "./KubernetesAiAgent";
5
+ import ResourceAiAgent from "./ResourceAiAgent";
5
6
  import KubernetesClusterOwnerTeam from "./KubernetesClusterOwnerTeam";
6
7
  import KubernetesClusterOwnerUser from "./KubernetesClusterOwnerUser";
7
8
  import KubernetesResource from "./KubernetesResource";
@@ -910,6 +911,7 @@ const AllModelTypes: Array<{
910
911
 
911
912
  KubernetesCluster,
912
913
  KubernetesAiAgent,
914
+ ResourceAiAgent,
913
915
  KubernetesClusterOwnerTeam,
914
916
  KubernetesClusterOwnerUser,
915
917
  KubernetesResource,
@@ -19,6 +19,7 @@ import UniqueColumnBy from "../../Types/Database/UniqueColumnBy";
19
19
  import IconProp from "../../Types/Icon/IconProp";
20
20
  import ObjectID from "../../Types/ObjectID";
21
21
  import Permission from "../../Types/Permission";
22
+ import { ResourceAiRemediationMode } from "../../Types/ResourceAiAgent/ResourceAiAccess";
22
23
  import TelemetryRetentionConfig from "../../Types/Telemetry/TelemetryRetentionConfig";
23
24
  import {
24
25
  Column,
@@ -990,4 +991,216 @@ export default class PodmanHost extends BaseModel {
990
991
  nullable: true,
991
992
  })
992
993
  public telemetryRetentionConfig?: TelemetryRetentionConfig = undefined;
994
+
995
+ /*
996
+ * OneUptime AI access to this Podman host through its Podman AI agent (a resource AI
997
+ * agent, ResourceAiAgent). The settings are plain columns written through
998
+ * ordinary CRUD, so they exist before any agent registers. The columns
999
+ * keep the Podman host's own update ACL: anyone who may edit the Podman host may make
1000
+ * AI do LESS; making it do MORE is refused by the service unless the
1001
+ * caller may author a FullAuto auto-remediation rule. The aiAccess*
1002
+ * columns are written only by the server.
1003
+ */
1004
+ @ColumnAccessControl({
1005
+ create: [],
1006
+ read: [
1007
+ Permission.ProjectOwner,
1008
+ Permission.ProjectAdmin,
1009
+ Permission.ProjectMember,
1010
+ Permission.Viewer,
1011
+ Permission.SettingsAdmin,
1012
+ Permission.SettingsMember,
1013
+ Permission.SettingsViewer,
1014
+ Permission.ReadPodmanHost,
1015
+ ],
1016
+ update: [
1017
+ Permission.ProjectOwner,
1018
+ Permission.ProjectAdmin,
1019
+ Permission.ProjectMember,
1020
+ Permission.SettingsAdmin,
1021
+ Permission.SettingsMember,
1022
+ Permission.EditPodmanHost,
1023
+ ],
1024
+ })
1025
+ @TableColumn({
1026
+ isDefaultValueColumn: true,
1027
+ required: true,
1028
+ type: TableColumnType.Boolean,
1029
+ title: "Let AI Investigate With Read-Only Commands",
1030
+ description:
1031
+ "When on, OneUptime AI runs read-only commands (docker ps, inspect, logs, stats, events, against the Podman API) on this Podman host, through its Podman AI agent, while investigating incidents and alerts linked to it, and uses their output, with secret values redacted, as evidence. Nothing is ever changed by an investigation. Off by default. Anyone who may edit the Podman host can turn it on or off.",
1032
+ defaultValue: false,
1033
+ })
1034
+ @Column({
1035
+ type: ColumnType.Boolean,
1036
+ nullable: false,
1037
+ default: false,
1038
+ })
1039
+ public isAiInvestigationEnabled?: boolean = undefined;
1040
+
1041
+ @ColumnAccessControl({
1042
+ create: [],
1043
+ read: [
1044
+ Permission.ProjectOwner,
1045
+ Permission.ProjectAdmin,
1046
+ Permission.ProjectMember,
1047
+ Permission.Viewer,
1048
+ Permission.SettingsAdmin,
1049
+ Permission.SettingsMember,
1050
+ Permission.SettingsViewer,
1051
+ Permission.ReadPodmanHost,
1052
+ ],
1053
+ update: [
1054
+ Permission.ProjectOwner,
1055
+ Permission.ProjectAdmin,
1056
+ Permission.ProjectMember,
1057
+ Permission.SettingsAdmin,
1058
+ Permission.SettingsMember,
1059
+ Permission.EditPodmanHost,
1060
+ ],
1061
+ })
1062
+ @TableColumn({
1063
+ isDefaultValueColumn: true,
1064
+ required: true,
1065
+ type: TableColumnType.ShortText,
1066
+ title: "AI Remediation Mode",
1067
+ /*
1068
+ * The API and Terraform docs for the mode: the same semantics as the
1069
+ * ResourceAiRemediationMode doc comment in
1070
+ * Types/ResourceAiAgent/ResourceAiAccess.ts (the canonical text).
1071
+ */
1072
+ description:
1073
+ "Disabled: AI never proposes or runs a change on this Podman host. RequireApproval: AI composes a command plan and a human approves it with one click before anything runs. Automatic: safe changes (SafeWrite) run without a human; a riskier change is proposed for approval unless the Podman host's allowlist names its exact shape. BypassApproval: every change the policy allows — safe AND riskier — runs on its own, except what always needs a human. In EVERY mode: Denied commands never run, commands the policy marks requiresHuman always ask, and the agent itself refuses every write unless it was started with ONEUPTIME_AI_ALLOW_WRITES=true (and then only on the targets ONEUPTIME_AI_WRITE_TARGETS allows, never its protected targets). Anyone who may edit the Podman host can lower the mode; raising it needs Project Owner, Project Admin or Edit Auto Remediation Rule.",
1074
+ defaultValue: ResourceAiRemediationMode.Disabled,
1075
+ example: ResourceAiRemediationMode.RequireApproval,
1076
+ })
1077
+ @Column({
1078
+ type: ColumnType.ShortText,
1079
+ length: ColumnLength.ShortText,
1080
+ nullable: false,
1081
+ default: ResourceAiRemediationMode.Disabled,
1082
+ })
1083
+ public aiRemediationMode?: ResourceAiRemediationMode = undefined;
1084
+
1085
+ @ColumnAccessControl({
1086
+ create: [],
1087
+ read: [
1088
+ Permission.ProjectOwner,
1089
+ Permission.ProjectAdmin,
1090
+ Permission.ProjectMember,
1091
+ Permission.Viewer,
1092
+ Permission.SettingsAdmin,
1093
+ Permission.SettingsMember,
1094
+ Permission.SettingsViewer,
1095
+ Permission.ReadPodmanHost,
1096
+ ],
1097
+ update: [
1098
+ Permission.ProjectOwner,
1099
+ Permission.ProjectAdmin,
1100
+ Permission.ProjectMember,
1101
+ Permission.SettingsAdmin,
1102
+ Permission.SettingsMember,
1103
+ Permission.EditPodmanHost,
1104
+ ],
1105
+ })
1106
+ @TableColumn({
1107
+ type: TableColumnType.JSON,
1108
+ required: false,
1109
+ title: "AI Command Allowlist",
1110
+ description:
1111
+ "Optional JSON array of command patterns that Automatic mode may run on this Podman host without approval even though they are riskier changes. Each pattern is one command line for this Podman host's agent (docker, against the Podman API) and is compared with the command word by word: * stands for exactly one word (a name, an id), never for extra words or flags, and every flag the command uses must be written out in the pattern. At most 50 patterns of at most 500 characters each; a pattern that is not one valid write command for this Podman host is refused. Destructive commands (Denied tier) never run regardless, and a command that always needs a human still asks. Adding a pattern needs Project Owner, Project Admin or Edit Auto Remediation Rule; anyone who may edit the Podman host can remove patterns or clear the list.",
1112
+ })
1113
+ @Column({
1114
+ type: ColumnType.JSON,
1115
+ nullable: true,
1116
+ })
1117
+ public aiCommandAllowlist?: Array<string> = undefined;
1118
+
1119
+ @ColumnAccessControl({
1120
+ create: [],
1121
+ read: [
1122
+ Permission.ProjectOwner,
1123
+ Permission.ProjectAdmin,
1124
+ Permission.ProjectMember,
1125
+ Permission.Viewer,
1126
+ Permission.SettingsAdmin,
1127
+ Permission.SettingsMember,
1128
+ Permission.SettingsViewer,
1129
+ Permission.ReadPodmanHost,
1130
+ ],
1131
+ update: [],
1132
+ })
1133
+ @TableColumn({
1134
+ required: false,
1135
+ type: TableColumnType.Date,
1136
+ title: "AI Access Last Verified At",
1137
+ description:
1138
+ "When a command from OneUptime AI last succeeded on this Podman host through its Podman AI agent. Set by the server.",
1139
+ })
1140
+ @Column({
1141
+ type: ColumnType.Date,
1142
+ nullable: true,
1143
+ })
1144
+ public aiAccessLastVerifiedAt?: Date = undefined;
1145
+
1146
+ @ColumnAccessControl({
1147
+ create: [],
1148
+ read: [
1149
+ Permission.ProjectOwner,
1150
+ Permission.ProjectAdmin,
1151
+ Permission.ProjectMember,
1152
+ Permission.Viewer,
1153
+ Permission.SettingsAdmin,
1154
+ Permission.SettingsMember,
1155
+ Permission.SettingsViewer,
1156
+ Permission.ReadPodmanHost,
1157
+ ],
1158
+ update: [],
1159
+ })
1160
+ @TableColumn({
1161
+ required: false,
1162
+ type: TableColumnType.LongText,
1163
+ title: "AI Access Last Error",
1164
+ description:
1165
+ "The most recent failure OneUptime AI hit while running a command on this Podman host, kept until the next successful command. Set by the server.",
1166
+ })
1167
+ @Column({
1168
+ type: ColumnType.LongText,
1169
+ nullable: true,
1170
+ })
1171
+ public aiAccessLastError?: string = undefined;
1172
+
1173
+ /*
1174
+ * When this Podman host's AI access was first configured — by anyone writing an
1175
+ * AI access setting. Only the server writes it, and nothing ever clears
1176
+ * it. A registering Podman AI agent reads it to tell "never configured" (it may
1177
+ * apply its first-connection defaults) from "an operator chose settings,
1178
+ * perhaps before installing the agent" (every setting stays as chosen).
1179
+ */
1180
+ @ColumnAccessControl({
1181
+ create: [],
1182
+ read: [
1183
+ Permission.ProjectOwner,
1184
+ Permission.ProjectAdmin,
1185
+ Permission.ProjectMember,
1186
+ Permission.Viewer,
1187
+ Permission.SettingsAdmin,
1188
+ Permission.SettingsMember,
1189
+ Permission.SettingsViewer,
1190
+ Permission.ReadPodmanHost,
1191
+ ],
1192
+ update: [],
1193
+ })
1194
+ @TableColumn({
1195
+ required: false,
1196
+ type: TableColumnType.Date,
1197
+ title: "AI Access Configured At",
1198
+ description:
1199
+ "When OneUptime AI access to this Podman host was first configured by anyone saving an AI access setting. Set by the server; never cleared, so a Podman AI agent that registers later never overwrites a setting an operator chose.",
1200
+ })
1201
+ @Column({
1202
+ type: ColumnType.Date,
1203
+ nullable: true,
1204
+ })
1205
+ public aiAccessConfiguredAt?: Date = undefined;
993
1206
  }
@@ -20,6 +20,7 @@ import UniqueColumnBy from "../../Types/Database/UniqueColumnBy";
20
20
  import IconProp from "../../Types/Icon/IconProp";
21
21
  import ObjectID from "../../Types/ObjectID";
22
22
  import Permission from "../../Types/Permission";
23
+ import { ResourceAiRemediationMode } from "../../Types/ResourceAiAgent/ResourceAiAccess";
23
24
  import TelemetryRetentionConfig from "../../Types/Telemetry/TelemetryRetentionConfig";
24
25
  import {
25
26
  Column,
@@ -1088,4 +1089,216 @@ export default class ProxmoxCluster extends BaseModel {
1088
1089
  nullable: true,
1089
1090
  })
1090
1091
  public telemetryRetentionConfig?: TelemetryRetentionConfig = undefined;
1092
+
1093
+ /*
1094
+ * OneUptime AI access to this Proxmox cluster through its Proxmox AI agent (a resource AI
1095
+ * agent, ResourceAiAgent). The settings are plain columns written through
1096
+ * ordinary CRUD, so they exist before any agent registers. The columns
1097
+ * keep the Proxmox cluster's own update ACL: anyone who may edit the Proxmox cluster may make
1098
+ * AI do LESS; making it do MORE is refused by the service unless the
1099
+ * caller may author a FullAuto auto-remediation rule. The aiAccess*
1100
+ * columns are written only by the server.
1101
+ */
1102
+ @ColumnAccessControl({
1103
+ create: [],
1104
+ read: [
1105
+ Permission.ProjectOwner,
1106
+ Permission.ProjectAdmin,
1107
+ Permission.ProjectMember,
1108
+ Permission.Viewer,
1109
+ Permission.SettingsAdmin,
1110
+ Permission.SettingsMember,
1111
+ Permission.SettingsViewer,
1112
+ Permission.ReadProxmoxCluster,
1113
+ ],
1114
+ update: [
1115
+ Permission.ProjectOwner,
1116
+ Permission.ProjectAdmin,
1117
+ Permission.ProjectMember,
1118
+ Permission.SettingsAdmin,
1119
+ Permission.SettingsMember,
1120
+ Permission.EditProxmoxCluster,
1121
+ ],
1122
+ })
1123
+ @TableColumn({
1124
+ isDefaultValueColumn: true,
1125
+ required: true,
1126
+ type: TableColumnType.Boolean,
1127
+ title: "Let AI Investigate With Read-Only Commands",
1128
+ description:
1129
+ "When on, OneUptime AI runs read-only commands (pvesh get on cluster, node, VM and container status) on this Proxmox cluster, through its Proxmox AI agent, while investigating incidents and alerts linked to it, and uses their output, with secret values redacted, as evidence. Nothing is ever changed by an investigation. Off by default. Anyone who may edit the Proxmox cluster can turn it on or off.",
1130
+ defaultValue: false,
1131
+ })
1132
+ @Column({
1133
+ type: ColumnType.Boolean,
1134
+ nullable: false,
1135
+ default: false,
1136
+ })
1137
+ public isAiInvestigationEnabled?: boolean = undefined;
1138
+
1139
+ @ColumnAccessControl({
1140
+ create: [],
1141
+ read: [
1142
+ Permission.ProjectOwner,
1143
+ Permission.ProjectAdmin,
1144
+ Permission.ProjectMember,
1145
+ Permission.Viewer,
1146
+ Permission.SettingsAdmin,
1147
+ Permission.SettingsMember,
1148
+ Permission.SettingsViewer,
1149
+ Permission.ReadProxmoxCluster,
1150
+ ],
1151
+ update: [
1152
+ Permission.ProjectOwner,
1153
+ Permission.ProjectAdmin,
1154
+ Permission.ProjectMember,
1155
+ Permission.SettingsAdmin,
1156
+ Permission.SettingsMember,
1157
+ Permission.EditProxmoxCluster,
1158
+ ],
1159
+ })
1160
+ @TableColumn({
1161
+ isDefaultValueColumn: true,
1162
+ required: true,
1163
+ type: TableColumnType.ShortText,
1164
+ title: "AI Remediation Mode",
1165
+ /*
1166
+ * The API and Terraform docs for the mode: the same semantics as the
1167
+ * ResourceAiRemediationMode doc comment in
1168
+ * Types/ResourceAiAgent/ResourceAiAccess.ts (the canonical text).
1169
+ */
1170
+ description:
1171
+ "Disabled: AI never proposes or runs a change on this Proxmox cluster. RequireApproval: AI composes a command plan and a human approves it with one click before anything runs. Automatic: safe changes (SafeWrite) run without a human; a riskier change is proposed for approval unless the Proxmox cluster's allowlist names its exact shape. BypassApproval: every change the policy allows — safe AND riskier — runs on its own, except what always needs a human. In EVERY mode: Denied commands never run, commands the policy marks requiresHuman always ask, and the agent itself refuses every write unless it was started with ONEUPTIME_AI_ALLOW_WRITES=true (and then only on the targets ONEUPTIME_AI_WRITE_TARGETS allows, never its protected targets). Anyone who may edit the Proxmox cluster can lower the mode; raising it needs Project Owner, Project Admin or Edit Auto Remediation Rule.",
1172
+ defaultValue: ResourceAiRemediationMode.Disabled,
1173
+ example: ResourceAiRemediationMode.RequireApproval,
1174
+ })
1175
+ @Column({
1176
+ type: ColumnType.ShortText,
1177
+ length: ColumnLength.ShortText,
1178
+ nullable: false,
1179
+ default: ResourceAiRemediationMode.Disabled,
1180
+ })
1181
+ public aiRemediationMode?: ResourceAiRemediationMode = undefined;
1182
+
1183
+ @ColumnAccessControl({
1184
+ create: [],
1185
+ read: [
1186
+ Permission.ProjectOwner,
1187
+ Permission.ProjectAdmin,
1188
+ Permission.ProjectMember,
1189
+ Permission.Viewer,
1190
+ Permission.SettingsAdmin,
1191
+ Permission.SettingsMember,
1192
+ Permission.SettingsViewer,
1193
+ Permission.ReadProxmoxCluster,
1194
+ ],
1195
+ update: [
1196
+ Permission.ProjectOwner,
1197
+ Permission.ProjectAdmin,
1198
+ Permission.ProjectMember,
1199
+ Permission.SettingsAdmin,
1200
+ Permission.SettingsMember,
1201
+ Permission.EditProxmoxCluster,
1202
+ ],
1203
+ })
1204
+ @TableColumn({
1205
+ type: TableColumnType.JSON,
1206
+ required: false,
1207
+ title: "AI Command Allowlist",
1208
+ description:
1209
+ "Optional JSON array of command patterns that Automatic mode may run on this Proxmox cluster without approval even though they are riskier changes. Each pattern is one command line for this Proxmox cluster's agent (pvesh) and is compared with the command word by word: * stands for exactly one word (a name, an id), never for extra words or flags, and every flag the command uses must be written out in the pattern. At most 50 patterns of at most 500 characters each; a pattern that is not one valid write command for this Proxmox cluster is refused. Destructive commands (Denied tier) never run regardless, and a command that always needs a human still asks. Adding a pattern needs Project Owner, Project Admin or Edit Auto Remediation Rule; anyone who may edit the Proxmox cluster can remove patterns or clear the list.",
1210
+ })
1211
+ @Column({
1212
+ type: ColumnType.JSON,
1213
+ nullable: true,
1214
+ })
1215
+ public aiCommandAllowlist?: Array<string> = undefined;
1216
+
1217
+ @ColumnAccessControl({
1218
+ create: [],
1219
+ read: [
1220
+ Permission.ProjectOwner,
1221
+ Permission.ProjectAdmin,
1222
+ Permission.ProjectMember,
1223
+ Permission.Viewer,
1224
+ Permission.SettingsAdmin,
1225
+ Permission.SettingsMember,
1226
+ Permission.SettingsViewer,
1227
+ Permission.ReadProxmoxCluster,
1228
+ ],
1229
+ update: [],
1230
+ })
1231
+ @TableColumn({
1232
+ required: false,
1233
+ type: TableColumnType.Date,
1234
+ title: "AI Access Last Verified At",
1235
+ description:
1236
+ "When a command from OneUptime AI last succeeded on this Proxmox cluster through its Proxmox AI agent. Set by the server.",
1237
+ })
1238
+ @Column({
1239
+ type: ColumnType.Date,
1240
+ nullable: true,
1241
+ })
1242
+ public aiAccessLastVerifiedAt?: Date = undefined;
1243
+
1244
+ @ColumnAccessControl({
1245
+ create: [],
1246
+ read: [
1247
+ Permission.ProjectOwner,
1248
+ Permission.ProjectAdmin,
1249
+ Permission.ProjectMember,
1250
+ Permission.Viewer,
1251
+ Permission.SettingsAdmin,
1252
+ Permission.SettingsMember,
1253
+ Permission.SettingsViewer,
1254
+ Permission.ReadProxmoxCluster,
1255
+ ],
1256
+ update: [],
1257
+ })
1258
+ @TableColumn({
1259
+ required: false,
1260
+ type: TableColumnType.LongText,
1261
+ title: "AI Access Last Error",
1262
+ description:
1263
+ "The most recent failure OneUptime AI hit while running a command on this Proxmox cluster, kept until the next successful command. Set by the server.",
1264
+ })
1265
+ @Column({
1266
+ type: ColumnType.LongText,
1267
+ nullable: true,
1268
+ })
1269
+ public aiAccessLastError?: string = undefined;
1270
+
1271
+ /*
1272
+ * When this Proxmox cluster's AI access was first configured — by anyone writing an
1273
+ * AI access setting. Only the server writes it, and nothing ever clears
1274
+ * it. A registering Proxmox AI agent reads it to tell "never configured" (it may
1275
+ * apply its first-connection defaults) from "an operator chose settings,
1276
+ * perhaps before installing the agent" (every setting stays as chosen).
1277
+ */
1278
+ @ColumnAccessControl({
1279
+ create: [],
1280
+ read: [
1281
+ Permission.ProjectOwner,
1282
+ Permission.ProjectAdmin,
1283
+ Permission.ProjectMember,
1284
+ Permission.Viewer,
1285
+ Permission.SettingsAdmin,
1286
+ Permission.SettingsMember,
1287
+ Permission.SettingsViewer,
1288
+ Permission.ReadProxmoxCluster,
1289
+ ],
1290
+ update: [],
1291
+ })
1292
+ @TableColumn({
1293
+ required: false,
1294
+ type: TableColumnType.Date,
1295
+ title: "AI Access Configured At",
1296
+ description:
1297
+ "When OneUptime AI access to this Proxmox cluster was first configured by anyone saving an AI access setting. Set by the server; never cleared, so a Proxmox AI agent that registers later never overwrites a setting an operator chose.",
1298
+ })
1299
+ @Column({
1300
+ type: ColumnType.Date,
1301
+ nullable: true,
1302
+ })
1303
+ public aiAccessConfiguredAt?: Date = undefined;
1091
1304
  }