@oneuptime/common 12.0.4 → 12.0.5

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 (374) hide show
  1. package/Models/DatabaseModels/AIRun.ts +38 -1
  2. package/Models/DatabaseModels/AlertFeed.ts +30 -0
  3. package/Models/DatabaseModels/Dashboard.ts +28 -0
  4. package/Models/DatabaseModels/Incident.ts +2 -0
  5. package/Models/DatabaseModels/IncidentEpisode.ts +1 -0
  6. package/Models/DatabaseModels/IncidentEpisodePublicNote.ts +1 -0
  7. package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +1 -0
  8. package/Models/DatabaseModels/IncidentFeed.ts +30 -0
  9. package/Models/DatabaseModels/IncidentPublicNote.ts +1 -0
  10. package/Models/DatabaseModels/IncidentStateTimeline.ts +1 -0
  11. package/Models/DatabaseModels/LogSavedView.ts +33 -0
  12. package/Models/DatabaseModels/Project.ts +231 -9
  13. package/Models/DatabaseModels/ScheduledMaintenance.ts +1 -0
  14. package/Models/DatabaseModels/ScheduledMaintenancePublicNote.ts +1 -0
  15. package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +1 -0
  16. package/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.ts +4 -4
  17. package/Models/DatabaseModels/StatusPage.ts +28 -0
  18. package/Models/DatabaseModels/StatusPageAnnouncement.ts +1 -0
  19. package/Server/API/AIAgentDataAPI.ts +44 -55
  20. package/Server/API/AIInvestigationAPI.ts +175 -17
  21. package/Server/API/DashboardAPI.ts +10 -10
  22. package/Server/API/StatusPageAPI.ts +38 -19
  23. package/Server/EnvironmentConfig.ts +16 -0
  24. package/Server/Infrastructure/ClickhouseConfig.ts +15 -1
  25. package/Server/Infrastructure/ClickhouseDatabase.ts +1 -1
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.ts +27 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.ts +89 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.ts +27 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.ts +40 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.ts +26 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  32. package/Server/Services/AIRunService.ts +78 -10
  33. package/Server/Services/AIService.ts +94 -22
  34. package/Server/Services/AlertFeedService.ts +5 -0
  35. package/Server/Services/AnalyticsDatabaseService.ts +29 -0
  36. package/Server/Services/DatabaseService.ts +43 -2
  37. package/Server/Services/IncidentFeedService.ts +5 -0
  38. package/Server/Services/LlmLogService.ts +46 -2
  39. package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +6 -0
  40. package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +4 -0
  41. package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +8 -5
  42. package/Server/Utils/AI/CodeFix/FixRunBudget.ts +90 -16
  43. package/Server/Utils/AI/Remediation/RemediationExecutionRunner.ts +2 -0
  44. package/Server/Utils/AI/Remediation/RemediationPlanRunner.ts +2 -0
  45. package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +223 -22
  46. package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +25 -24
  47. package/Server/Utils/AI/SRE/ConfidenceSignal.ts +182 -71
  48. package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +252 -43
  49. package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +25 -24
  50. package/Server/Utils/AI/SRE/InstrumentationTaskTrigger.ts +47 -13
  51. package/Server/Utils/AI/SRE/InvestigationGrader.ts +9 -5
  52. package/Server/Utils/AI/SRE/InvestigationQueue.ts +141 -24
  53. package/Server/Utils/AI/SRE/InvestigationSubjectLock.ts +66 -0
  54. package/Server/Utils/AI/SRE/PostedRootCause.ts +94 -3
  55. package/Server/Utils/AI/SRE/README.md +1 -1
  56. package/Server/Utils/AI/SRE/SubjectCodeFixRun.ts +132 -10
  57. package/Server/Utils/AnalyticsDatabase/ClusterConfig.ts +24 -0
  58. package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +29 -0
  59. package/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.ts +56 -0
  60. package/Server/Utils/Monitor/MonitorMetricUtil.ts +46 -0
  61. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +1 -0
  62. package/Server/Utils/PasswordHash.ts +28 -4
  63. package/Tests/App/Dashboard/AIInvestigationHeaderStatus.test.tsx +251 -0
  64. package/Tests/App/Dashboard/EventStatusPanel.test.tsx +747 -0
  65. package/Tests/App/Dashboard/InvestigationFeedRefresh.test.tsx +480 -0
  66. package/Tests/App/Dashboard/InvestigationPanel.test.tsx +1184 -0
  67. package/Tests/App/Dashboard/InvestigationPanelStatus.test.tsx +500 -0
  68. package/Tests/App/Dashboard/PortMonitorCriteriaFilter.test.ts +93 -0
  69. package/Tests/App/StatusPage/PublicStatusPageAPIErrorHandling.test.ts +117 -0
  70. package/Tests/App/StatusPage/StatusPageModelAPIPolymorphism.test.ts +223 -0
  71. package/Tests/Models/DatabaseModels/PermissionCatalogueCoverage.test.ts +243 -0
  72. package/Tests/Server/API/AIAgentDataFixFromIncidentContext.test.ts +266 -0
  73. package/Tests/Server/API/AIInvestigationAPI.test.ts +594 -0
  74. package/Tests/Server/API/AIInvestigationCreateFixTask.test.ts +80 -0
  75. package/Tests/Server/API/DashboardMasterPasswordAPI.test.ts +172 -1
  76. package/Tests/Server/API/StatusPageMasterPasswordAPI.test.ts +335 -0
  77. package/Tests/Server/Services/AIRunCodeFixClaim.test.ts +59 -5
  78. package/Tests/Server/Services/AIRunHumanVerdict.test.ts +127 -58
  79. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +396 -20
  80. package/Tests/Server/Services/AddMasterPasswordSaltMigration.test.ts +283 -0
  81. package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +25 -1
  82. package/Tests/Server/Services/DatabaseServicePerUserPasswordSalt.test.ts +45 -35
  83. package/Tests/Server/Services/DatabaseServiceUpdateColumnsWithoutHooks.test.ts +54 -0
  84. package/Tests/Server/Services/FeedAIRunAssociation.test.ts +125 -0
  85. package/Tests/Server/Services/FixFromIncidentTaskTrigger.test.ts +418 -57
  86. package/Tests/Server/Services/InstrumentationTaskTrigger.test.ts +173 -14
  87. package/Tests/Server/Services/MasterPasswordScrypt.test.ts +567 -0
  88. package/Tests/Server/Services/SeparateIncidentAlertAiSettingsMigration.test.ts +194 -0
  89. package/Tests/Server/Utils/AI/AIAlertGating.test.ts +37 -4
  90. package/Tests/Server/Utils/AI/AIConfidenceSignal.test.ts +330 -29
  91. package/Tests/Server/Utils/AI/AIIncidentGating.test.ts +25 -0
  92. package/Tests/Server/Utils/AI/AIInvestigationQueue.test.ts +293 -5
  93. package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +59 -1
  94. package/Tests/Server/Utils/AI/FixFromIncidentAutoTrigger.test.ts +342 -19
  95. package/Tests/Server/Utils/AI/FixRunBudget.test.ts +214 -30
  96. package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +2 -0
  97. package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +65 -17
  98. package/Tests/Server/Utils/AI/InvestigationQueueRemediationExecution.test.ts +3 -0
  99. package/Tests/Server/Utils/AI/InvestigationSettlement.test.ts +313 -20
  100. package/Tests/Server/Utils/AI/PostedRootCause.test.ts +254 -0
  101. package/Tests/Server/Utils/AI/RemediationExecutionRunner.test.ts +4 -0
  102. package/Tests/Server/Utils/AI/RemediationPlanRunner.test.ts +2 -0
  103. package/Tests/Server/Utils/AI/SubjectCodeFixRunDedupe.test.ts +44 -0
  104. package/Tests/Server/Utils/AnalyticsDatabase/ClusterAwareSchema.test.ts +30 -0
  105. package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaPortTimings.test.ts +212 -0
  106. package/Tests/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.test.ts +401 -0
  107. package/Tests/Server/Utils/Monitor/MonitorMetricUtilPortTimings.test.ts +243 -0
  108. package/Tests/Server/Utils/PasswordHash.test.ts +30 -0
  109. package/Tests/Types/Dashboard/DashboardTemplates.test.ts +111 -0
  110. package/Tests/Types/Monitor/CephMetricCatalog.test.ts +104 -0
  111. package/Tests/Types/Monitor/CriteriaFilter.test.ts +4 -0
  112. package/Tests/Types/Monitor/DockerMetricCatalog.test.ts +109 -0
  113. package/Tests/Types/Monitor/DockerSwarmMetricCatalog.test.ts +118 -0
  114. package/Tests/Types/Monitor/HostMetricCatalog.test.ts +104 -0
  115. package/Tests/Types/Monitor/IotMetricCatalog.test.ts +104 -0
  116. package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +118 -0
  117. package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +42 -0
  118. package/Tests/Types/Monitor/MonitorStep.test.ts +38 -0
  119. package/Tests/Types/Monitor/MonitorStepDomainMonitor.test.ts +75 -0
  120. package/Tests/Types/Monitor/PodmanMetricCatalog.test.ts +109 -0
  121. package/Tests/Types/Monitor/ProxmoxMetricCatalog.test.ts +107 -0
  122. package/Tests/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.test.ts +151 -0
  123. package/Tests/Types/Permission.test.ts +137 -0
  124. package/Tests/Types/Rum/SessionReplayMaskingMode.test.ts +101 -0
  125. package/Tests/UI/Components/AiInvestigationSettingsCard.test.tsx +5 -5
  126. package/Tests/UI/Components/CardModelDetailEdit.test.tsx +3 -5
  127. package/Tests/UI/Components/ErrorBoundary.test.tsx +158 -0
  128. package/Tests/UI/Components/FeedItemSafeMode.test.tsx +74 -0
  129. package/Tests/UI/Components/MoreMenu.test.tsx +756 -0
  130. package/Tests/UI/Components/StatusPage/ResourceGroupSection.test.tsx +62 -0
  131. package/Tests/UI/Monitor/PortMonitorView.test.tsx +237 -0
  132. package/Tests/UI/Telemetry/TelemetrySnapshotWindowAlert.test.tsx +91 -0
  133. package/Tests/UI/Utils/DownloadFile.test.ts +103 -0
  134. package/Tests/UI/Utils/ErrorSupportBundle.test.ts +582 -0
  135. package/Tests/UI/Utils/Project.test.ts +31 -0
  136. package/Tests/UI/Utils/StatusPageModelAPIInjection.test.ts +245 -0
  137. package/Tests/UI/Utils/UseDashboardGridDnd.test.tsx +820 -0
  138. package/Tests/Utils/Dashboard/DashboardViewConfig.test.ts +329 -0
  139. package/Tests/Utils/Dashboard/GridLayout.test.ts +951 -0
  140. package/Tests/Utils/Monitor/MonitorMetricType.test.ts +117 -0
  141. package/Tests/Utils/RecordingRuleExpression.test.ts +327 -0
  142. package/Tests/Utils/StatusPage/GroupNestingLayout.test.ts +186 -0
  143. package/Tests/Utils/StatusPage/GroupTree.test.ts +456 -0
  144. package/Tests/Utils/StatusPage/OverviewGroupHierarchyVisibility.test.ts +588 -0
  145. package/Tests/Utils/Telemetry/SavedViewTimeRange.test.ts +244 -0
  146. package/Tests/Utils/Telemetry/TelemetryQueryTimeRange.test.ts +825 -0
  147. package/Types/AI/AIRunCodeFixRecommendation.ts +17 -0
  148. package/Types/AI/CodeFixTaskContext.ts +63 -3
  149. package/Types/AI/CodeFixTaskType.ts +3 -3
  150. package/Types/HashedString.ts +4 -3
  151. package/Types/Monitor/CriteriaFilter.ts +4 -0
  152. package/Types/Monitor/DomainMonitor/DomainLookupMethod.ts +23 -0
  153. package/Types/Monitor/DomainMonitor/DomainMonitorResponse.ts +7 -0
  154. package/Types/Monitor/MonitorCriteriaInstance.ts +24 -7
  155. package/Types/Monitor/MonitorMetricType.ts +8 -0
  156. package/Types/Monitor/MonitorStep.ts +10 -1
  157. package/Types/Monitor/MonitorStepDomainMonitor.ts +21 -0
  158. package/Types/Monitor/PortMonitor/PortMonitorTimings.ts +10 -0
  159. package/Types/Permission.ts +23 -175
  160. package/Types/Probe/ProbeMonitorResponse.ts +6 -0
  161. package/UI/Components/BulkUpdate/BulkUpdateForm.tsx +2 -3
  162. package/UI/Components/ErrorBoundary.tsx +138 -11
  163. package/UI/Components/Feed/FeedItem.tsx +9 -2
  164. package/UI/Components/ModelDetail/CardModelDetail.tsx +0 -12
  165. package/UI/Components/ModelTable/BaseModelTable.tsx +1 -1
  166. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +12 -2
  167. package/UI/Components/MoreMenu/MoreMenu.tsx +285 -97
  168. package/UI/Components/MoreMenu/MoreMenuItem.tsx +8 -5
  169. package/UI/Utils/DownloadFile.ts +16 -8
  170. package/UI/Utils/ErrorSupportBundle.ts +805 -0
  171. package/UI/Utils/ModelAPI/ModelAPI.ts +19 -8
  172. package/UI/Utils/Project.ts +4 -0
  173. package/UI/Utils/StatusPage.ts +8 -2
  174. package/UI/Utils/UseDashboardGridDnd.ts +917 -0
  175. package/Utils/Dashboard/DashboardViewConfig.ts +80 -36
  176. package/Utils/Dashboard/GridLayout.ts +523 -0
  177. package/Utils/Metrics/RecordingRuleExpression.ts +19 -17
  178. package/Utils/Monitor/MonitorMetricType.ts +44 -2
  179. package/Utils/StatusPage/GroupNestingLayout.ts +69 -0
  180. package/Utils/StatusPage/GroupTree.ts +157 -66
  181. package/Utils/StatusPage/ResourceUptime.ts +37 -2
  182. package/Utils/Telemetry/SavedViewTimeRange.ts +114 -0
  183. package/Utils/Telemetry/TelemetryQueryTimeRange.ts +334 -0
  184. package/build/dist/Models/DatabaseModels/AIRun.js +39 -1
  185. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  186. package/build/dist/Models/DatabaseModels/AlertFeed.js +32 -0
  187. package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
  188. package/build/dist/Models/DatabaseModels/Dashboard.js +29 -0
  189. package/build/dist/Models/DatabaseModels/Dashboard.js.map +1 -1
  190. package/build/dist/Models/DatabaseModels/Incident.js +2 -0
  191. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  192. package/build/dist/Models/DatabaseModels/IncidentEpisode.js +1 -0
  193. package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -1
  194. package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js +1 -0
  195. package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js.map +1 -1
  196. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +1 -0
  197. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -1
  198. package/build/dist/Models/DatabaseModels/IncidentFeed.js +32 -0
  199. package/build/dist/Models/DatabaseModels/IncidentFeed.js.map +1 -1
  200. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js +1 -0
  201. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js.map +1 -1
  202. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +1 -0
  203. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
  204. package/build/dist/Models/DatabaseModels/LogSavedView.js +33 -0
  205. package/build/dist/Models/DatabaseModels/LogSavedView.js.map +1 -1
  206. package/build/dist/Models/DatabaseModels/Project.js +241 -11
  207. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  208. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +1 -0
  209. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  210. package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js +1 -0
  211. package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js.map +1 -1
  212. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +1 -0
  213. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
  214. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.js +4 -4
  215. package/build/dist/Models/DatabaseModels/StatusPage.js +29 -0
  216. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  217. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +1 -0
  218. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
  219. package/build/dist/Server/API/AIAgentDataAPI.js +28 -46
  220. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  221. package/build/dist/Server/API/AIInvestigationAPI.js +111 -11
  222. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  223. package/build/dist/Server/API/DashboardAPI.js +8 -5
  224. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  225. package/build/dist/Server/API/StatusPageAPI.js +29 -11
  226. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  227. package/build/dist/Server/EnvironmentConfig.js +14 -0
  228. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  229. package/build/dist/Server/Infrastructure/ClickhouseConfig.js +12 -1
  230. package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
  231. package/build/dist/Server/Infrastructure/ClickhouseDatabase.js +1 -1
  232. package/build/dist/Server/Infrastructure/ClickhouseDatabase.js.map +1 -1
  233. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.js +22 -0
  234. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786096660558-AddTimeRangeToLogSavedView.js.map +1 -0
  235. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.js +36 -0
  236. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786101798351-MigrationName.js.map +1 -0
  237. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.js +18 -0
  238. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786105470826-MigrationName.js.map +1 -0
  239. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.js +19 -0
  240. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786400000000-AddMasterPasswordSalt.js.map +1 -0
  241. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.js +19 -0
  242. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786500000000-AddInvestigationCodeFixRecommendation.js.map +1 -0
  243. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  244. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  245. package/build/dist/Server/Services/AIRunService.js +58 -12
  246. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  247. package/build/dist/Server/Services/AIService.js +74 -21
  248. package/build/dist/Server/Services/AIService.js.map +1 -1
  249. package/build/dist/Server/Services/AlertFeedService.js +3 -0
  250. package/build/dist/Server/Services/AlertFeedService.js.map +1 -1
  251. package/build/dist/Server/Services/AnalyticsDatabaseService.js +29 -1
  252. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  253. package/build/dist/Server/Services/DatabaseService.js +21 -2
  254. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  255. package/build/dist/Server/Services/IncidentFeedService.js +3 -0
  256. package/build/dist/Server/Services/IncidentFeedService.js.map +1 -1
  257. package/build/dist/Server/Services/LlmLogService.js +22 -1
  258. package/build/dist/Server/Services/LlmLogService.js.map +1 -1
  259. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +3 -0
  260. package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
  261. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +4 -0
  262. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
  263. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +8 -5
  264. package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -1
  265. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +63 -24
  266. package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -1
  267. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js +2 -0
  268. package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js.map +1 -1
  269. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js +2 -0
  270. package/build/dist/Server/Utils/AI/Remediation/RemediationPlanRunner.js.map +1 -1
  271. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +156 -28
  272. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
  273. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +21 -19
  274. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
  275. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js +128 -49
  276. package/build/dist/Server/Utils/AI/SRE/ConfidenceSignal.js.map +1 -1
  277. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js +170 -31
  278. package/build/dist/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.js.map +1 -1
  279. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +21 -19
  280. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
  281. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js +33 -9
  282. package/build/dist/Server/Utils/AI/SRE/InstrumentationTaskTrigger.js.map +1 -1
  283. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +9 -5
  284. package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -1
  285. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +121 -41
  286. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
  287. package/build/dist/Server/Utils/AI/SRE/InvestigationSubjectLock.js +46 -0
  288. package/build/dist/Server/Utils/AI/SRE/InvestigationSubjectLock.js.map +1 -0
  289. package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js +61 -14
  290. package/build/dist/Server/Utils/AI/SRE/PostedRootCause.js.map +1 -1
  291. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js +79 -1
  292. package/build/dist/Server/Utils/AI/SRE/SubjectCodeFixRun.js.map +1 -1
  293. package/build/dist/Server/Utils/AnalyticsDatabase/ClusterConfig.js +21 -0
  294. package/build/dist/Server/Utils/AnalyticsDatabase/ClusterConfig.js.map +1 -1
  295. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +20 -3
  296. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
  297. package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js +43 -0
  298. package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js.map +1 -1
  299. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +33 -0
  300. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  301. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +1 -0
  302. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  303. package/build/dist/Server/Utils/PasswordHash.js +25 -4
  304. package/build/dist/Server/Utils/PasswordHash.js.map +1 -1
  305. package/build/dist/Types/AI/AIRunCodeFixRecommendation.js +18 -0
  306. package/build/dist/Types/AI/AIRunCodeFixRecommendation.js.map +1 -0
  307. package/build/dist/Types/AI/CodeFixTaskContext.js +23 -3
  308. package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -1
  309. package/build/dist/Types/AI/CodeFixTaskType.js +3 -3
  310. package/build/dist/Types/HashedString.js +4 -3
  311. package/build/dist/Types/HashedString.js.map +1 -1
  312. package/build/dist/Types/Monitor/CriteriaFilter.js +4 -0
  313. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  314. package/build/dist/Types/Monitor/DomainMonitor/DomainLookupMethod.js +24 -0
  315. package/build/dist/Types/Monitor/DomainMonitor/DomainLookupMethod.js.map +1 -0
  316. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +24 -7
  317. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  318. package/build/dist/Types/Monitor/MonitorMetricType.js +7 -0
  319. package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
  320. package/build/dist/Types/Monitor/MonitorStep.js +6 -1
  321. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  322. package/build/dist/Types/Monitor/MonitorStepDomainMonitor.js +15 -0
  323. package/build/dist/Types/Monitor/MonitorStepDomainMonitor.js.map +1 -1
  324. package/build/dist/Types/Monitor/PortMonitor/PortMonitorTimings.js +2 -0
  325. package/build/dist/Types/Monitor/PortMonitor/PortMonitorTimings.js.map +1 -0
  326. package/build/dist/Types/Permission.js +23 -155
  327. package/build/dist/Types/Permission.js.map +1 -1
  328. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js +2 -5
  329. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js.map +1 -1
  330. package/build/dist/UI/Components/ErrorBoundary.js +67 -8
  331. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  332. package/build/dist/UI/Components/Feed/FeedItem.js +2 -2
  333. package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
  334. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +0 -12
  335. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
  336. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +1 -1
  337. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  338. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +12 -2
  339. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  340. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +193 -65
  341. package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
  342. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +1 -1
  343. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -1
  344. package/build/dist/UI/Utils/DownloadFile.js +15 -8
  345. package/build/dist/UI/Utils/DownloadFile.js.map +1 -1
  346. package/build/dist/UI/Utils/ErrorSupportBundle.js +476 -0
  347. package/build/dist/UI/Utils/ErrorSupportBundle.js.map +1 -0
  348. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +18 -8
  349. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
  350. package/build/dist/UI/Utils/Project.js +3 -0
  351. package/build/dist/UI/Utils/Project.js.map +1 -1
  352. package/build/dist/UI/Utils/StatusPage.js +4 -4
  353. package/build/dist/UI/Utils/StatusPage.js.map +1 -1
  354. package/build/dist/UI/Utils/UseDashboardGridDnd.js +551 -0
  355. package/build/dist/UI/Utils/UseDashboardGridDnd.js.map +1 -0
  356. package/build/dist/Utils/Dashboard/DashboardViewConfig.js +42 -26
  357. package/build/dist/Utils/Dashboard/DashboardViewConfig.js.map +1 -1
  358. package/build/dist/Utils/Dashboard/GridLayout.js +338 -0
  359. package/build/dist/Utils/Dashboard/GridLayout.js.map +1 -0
  360. package/build/dist/Utils/Metrics/RecordingRuleExpression.js +19 -17
  361. package/build/dist/Utils/Metrics/RecordingRuleExpression.js.map +1 -1
  362. package/build/dist/Utils/Monitor/MonitorMetricType.js +38 -6
  363. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  364. package/build/dist/Utils/StatusPage/GroupNestingLayout.js +46 -0
  365. package/build/dist/Utils/StatusPage/GroupNestingLayout.js.map +1 -1
  366. package/build/dist/Utils/StatusPage/GroupTree.js +79 -34
  367. package/build/dist/Utils/StatusPage/GroupTree.js.map +1 -1
  368. package/build/dist/Utils/StatusPage/ResourceUptime.js +22 -1
  369. package/build/dist/Utils/StatusPage/ResourceUptime.js.map +1 -1
  370. package/build/dist/Utils/Telemetry/SavedViewTimeRange.js +79 -0
  371. package/build/dist/Utils/Telemetry/SavedViewTimeRange.js.map +1 -0
  372. package/build/dist/Utils/Telemetry/TelemetryQueryTimeRange.js +236 -0
  373. package/build/dist/Utils/Telemetry/TelemetryQueryTimeRange.js.map +1 -0
  374. package/package.json +1 -1
@@ -21,6 +21,7 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
21
21
  import EnableDocumentation from "../../Types/Database/EnableDocumentation";
22
22
  import AIRunType from "../../Types/AI/AIRunType";
23
23
  import AIRunStatus from "../../Types/AI/AIRunStatus";
24
+ import AIRunCodeFixRecommendation from "../../Types/AI/AIRunCodeFixRecommendation";
24
25
  import AIRunHumanVerdict from "../../Types/AI/AIRunHumanVerdict";
25
26
  import AIRunAutoGrade from "../../Types/AI/AIRunAutoGrade";
26
27
  import CodeFixTaskType from "../../Types/AI/CodeFixTaskType";
@@ -243,6 +244,42 @@ export default class AIRun extends BaseModel {
243
244
  })
244
245
  public status?: AIRunStatus = undefined;
245
246
 
247
+ /*
248
+ * The server-authored decision that controls whether an incident/alert
249
+ * investigation may be turned into a FixFromIncident task. New subject
250
+ * investigations move to Pending in the atomic Completed transition; the
251
+ * investigation engine settles the value after its structured
252
+ * classification and analysis post. Other lifecycle paths and legacy rows
253
+ * default to NotRecommended so a missing decision never creates a PR.
254
+ */
255
+ @ColumnAccessControl({
256
+ create: [],
257
+ read: [
258
+ Permission.ProjectOwner,
259
+ Permission.ProjectAdmin,
260
+ Permission.ProjectMember,
261
+ Permission.Viewer,
262
+ ],
263
+ update: [],
264
+ })
265
+ @TableColumn({
266
+ required: true,
267
+ type: TableColumnType.ShortText,
268
+ title: "Code Fix Recommendation",
269
+ description:
270
+ "For incident/alert investigations: whether the structured investigation outcome recommends opening a code-fix pull request.",
271
+ defaultValue: AIRunCodeFixRecommendation.NotRecommended,
272
+ isDefaultValueColumn: true,
273
+ canReadOnRelationQuery: true,
274
+ })
275
+ @Column({
276
+ nullable: false,
277
+ type: ColumnType.ShortText,
278
+ length: ColumnLength.ShortText,
279
+ default: AIRunCodeFixRecommendation.NotRecommended,
280
+ })
281
+ public codeFixRecommendation?: AIRunCodeFixRecommendation = undefined;
282
+
246
283
  @ColumnAccessControl({
247
284
  create: [],
248
285
  read: [
@@ -803,7 +840,7 @@ export default class AIRun extends BaseModel {
803
840
  type: TableColumnType.JSON,
804
841
  title: "Task Context",
805
842
  description:
806
- "Internal: trigger-time context for code-fix recipes without a subject row (e.g. FixPerformance trace evidence).",
843
+ "Internal: immutable trigger-time context for code-fix recipes, including pinned investigation analyses and FixPerformance trace evidence.",
807
844
  })
808
845
  @Column({
809
846
  nullable: true,
@@ -93,6 +93,7 @@ export enum AlertFeedEventType {
93
93
  "Log of the entire alert state change. This is a log of all the alert state changes, public notes, more etc.",
94
94
  })
95
95
  @Index(["alertId", "postedAt"]) // Alert detail page: feed sorted by postedAt
96
+ @Index(["alertId", "aiRunId"]) // Exact AI investigation result lookup
96
97
  export default class AlertFeed extends BaseModel {
97
98
  @ColumnAccessControl({
98
99
  create: [
@@ -251,6 +252,35 @@ export default class AlertFeed extends BaseModel {
251
252
  })
252
253
  public alertId?: ObjectID = undefined;
253
254
 
255
+ @ColumnAccessControl({
256
+ create: [],
257
+ read: [
258
+ Permission.ProjectOwner,
259
+ Permission.ProjectAdmin,
260
+ Permission.ProjectMember,
261
+ Permission.Viewer,
262
+ Permission.AlertAdmin,
263
+ Permission.AlertMember,
264
+ Permission.AlertViewer,
265
+ Permission.ReadAlertFeed,
266
+ ],
267
+ update: [],
268
+ })
269
+ @TableColumn({
270
+ type: TableColumnType.ObjectID,
271
+ required: false,
272
+ canReadOnRelationQuery: true,
273
+ title: "AI Run ID",
274
+ description:
275
+ "AI investigation run that produced this feed item when the event is a root cause.",
276
+ })
277
+ @Column({
278
+ type: ColumnType.ObjectID,
279
+ nullable: true,
280
+ transformer: ObjectID.getDatabaseTransformer(),
281
+ })
282
+ public aiRunId?: ObjectID = undefined;
283
+
254
284
  @ColumnAccessControl({
255
285
  create: [
256
286
  Permission.ProjectOwner,
@@ -826,6 +826,7 @@ export default class Dashboard extends BaseModel {
826
826
  description:
827
827
  "Password required to unlock a public dashboard. This value is stored as a secure hash.",
828
828
  hashed: true,
829
+ hashSaltColumn: "masterPasswordSalt",
829
830
  type: TableColumnType.HashedString,
830
831
  placeholder: "Enter a new master password",
831
832
  })
@@ -837,6 +838,33 @@ export default class Dashboard extends BaseModel {
837
838
  })
838
839
  public masterPassword?: HashedString = undefined;
839
840
 
841
+ /*
842
+ * Per-dashboard salt mixed into `masterPassword`. Written by the database
843
+ * write path on every master-password write and never exposed to API
844
+ * callers. Nullable so existing unsalted hashes can be verified and
845
+ * upgraded after a successful unlock.
846
+ */
847
+ @ColumnAccessControl({
848
+ create: [],
849
+ read: [],
850
+ update: [],
851
+ })
852
+ @TableColumn({
853
+ title: "Master Password Salt",
854
+ description:
855
+ "Per-dashboard random salt mixed into this dashboard's master password hash.",
856
+ computed: true,
857
+ type: TableColumnType.ShortText,
858
+ hideColumnInDocumentation: true,
859
+ })
860
+ @Column({
861
+ type: ColumnType.ShortText,
862
+ length: ColumnLength.ShortText,
863
+ unique: false,
864
+ nullable: true,
865
+ })
866
+ public masterPasswordSalt?: string = undefined;
867
+
840
868
  @ColumnAccessControl({
841
869
  create: [
842
870
  Permission.ProjectOwner,
@@ -1715,6 +1715,7 @@ export default class Incident extends BaseModel {
1715
1715
  ],
1716
1716
  })
1717
1717
  @TableColumn({
1718
+ computed: true,
1718
1719
  type: TableColumnType.VeryLongText,
1719
1720
  title: "Notification Status Message",
1720
1721
  description:
@@ -1802,6 +1803,7 @@ export default class Incident extends BaseModel {
1802
1803
  ],
1803
1804
  })
1804
1805
  @TableColumn({
1806
+ computed: true,
1805
1807
  type: TableColumnType.VeryLongText,
1806
1808
  title: "Notification Status Message on Postmortem Published",
1807
1809
  description:
@@ -1680,6 +1680,7 @@ export default class IncidentEpisode extends BaseModel {
1680
1680
  update: [],
1681
1681
  })
1682
1682
  @TableColumn({
1683
+ computed: true,
1683
1684
  type: TableColumnType.VeryLongText,
1684
1685
  title: "Subscriber Notification Status Message",
1685
1686
  description:
@@ -541,6 +541,7 @@ export default class IncidentEpisodePublicNote extends BaseModel {
541
541
  ],
542
542
  })
543
543
  @TableColumn({
544
+ computed: true,
544
545
  type: TableColumnType.VeryLongText,
545
546
  title: "Notification Status Message",
546
547
  description:
@@ -695,6 +695,7 @@ export default class IncidentEpisodeStateTimeline extends BaseModel {
695
695
  update: [],
696
696
  })
697
697
  @TableColumn({
698
+ computed: true,
698
699
  type: TableColumnType.VeryLongText,
699
700
  title: "Subscriber Notification Status Message",
700
701
  description:
@@ -93,6 +93,7 @@ export enum IncidentFeedEventType {
93
93
  "Log of the entire incident state change. This is a log of all the incident state changes, public notes, more etc.",
94
94
  })
95
95
  @Index(["incidentId", "postedAt"]) // Incident detail page: feed sorted by postedAt
96
+ @Index(["incidentId", "aiRunId"]) // Exact AI investigation result lookup
96
97
  export default class IncidentFeed extends BaseModel {
97
98
  @ColumnAccessControl({
98
99
  create: [
@@ -253,6 +254,35 @@ export default class IncidentFeed extends BaseModel {
253
254
  })
254
255
  public incidentId?: ObjectID = undefined;
255
256
 
257
+ @ColumnAccessControl({
258
+ create: [],
259
+ read: [
260
+ Permission.ProjectOwner,
261
+ Permission.ProjectAdmin,
262
+ Permission.ProjectMember,
263
+ Permission.Viewer,
264
+ Permission.IncidentAdmin,
265
+ Permission.IncidentMember,
266
+ Permission.IncidentViewer,
267
+ Permission.ReadIncidentFeed,
268
+ ],
269
+ update: [],
270
+ })
271
+ @TableColumn({
272
+ type: TableColumnType.ObjectID,
273
+ required: false,
274
+ canReadOnRelationQuery: true,
275
+ title: "AI Run ID",
276
+ description:
277
+ "AI investigation run that produced this feed item when the event is a root cause.",
278
+ })
279
+ @Column({
280
+ type: ColumnType.ObjectID,
281
+ nullable: true,
282
+ transformer: ObjectID.getDatabaseTransformer(),
283
+ })
284
+ public aiRunId?: ObjectID = undefined;
285
+
256
286
  @ColumnAccessControl({
257
287
  create: [
258
288
  Permission.ProjectOwner,
@@ -544,6 +544,7 @@ export default class IncidentPublicNote extends BaseModel {
544
544
  ],
545
545
  })
546
546
  @TableColumn({
547
+ computed: true,
547
548
  type: TableColumnType.VeryLongText,
548
549
  title: "Notification Status Message",
549
550
  description:
@@ -544,6 +544,7 @@ export default class IncidentStateTimeline extends BaseModel {
544
544
  ],
545
545
  })
546
546
  @TableColumn({
547
+ computed: true,
547
548
  type: TableColumnType.VeryLongText,
548
549
  title: "Notification Status Message",
549
550
  description:
@@ -19,6 +19,7 @@ import TenantColumn from "../../Types/Database/TenantColumn";
19
19
  import IconProp from "../../Types/Icon/IconProp";
20
20
  import ObjectID from "../../Types/ObjectID";
21
21
  import Permission from "../../Types/Permission";
22
+ import { TelemetrySavedViewTimeRange } from "../../Types/Telemetry/TelemetrySavedViewState";
22
23
  import { PlanType } from "../../Types/Billing/SubscriptionPlan";
23
24
  import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
24
25
 
@@ -430,6 +431,38 @@ export default class LogSavedView extends BaseModel {
430
431
  })
431
432
  public pageSize?: number = undefined;
432
433
 
434
+ @ColumnAccessControl({
435
+ create: [
436
+ Permission.ProjectOwner,
437
+ Permission.ProjectAdmin,
438
+ Permission.ProjectMember,
439
+ ],
440
+ read: [
441
+ Permission.ProjectOwner,
442
+ Permission.ProjectAdmin,
443
+ Permission.ProjectMember,
444
+ Permission.Viewer,
445
+ ],
446
+ update: [
447
+ Permission.ProjectOwner,
448
+ Permission.ProjectAdmin,
449
+ Permission.ProjectMember,
450
+ ],
451
+ })
452
+ @TableColumn({
453
+ title: "Time Range",
454
+ required: false,
455
+ type: TableColumnType.JSON,
456
+ canReadOnRelationQuery: true,
457
+ description:
458
+ "Time selection for this saved view — the rolling range token (e.g. Past 1 Hour), or an absolute window when the range is Custom.",
459
+ })
460
+ @Column({
461
+ type: ColumnType.JSON,
462
+ nullable: true,
463
+ })
464
+ public timeRange?: TelemetrySavedViewTimeRange = undefined;
465
+
433
466
  @ColumnAccessControl({
434
467
  create: [
435
468
  Permission.ProjectOwner,
@@ -1592,9 +1592,9 @@ export default class Project extends TenantModel {
1592
1592
  required: true,
1593
1593
  isDefaultValueColumn: true,
1594
1594
  type: TableColumnType.Boolean,
1595
- title: "Enable Instrumentation Fix Tasks",
1595
+ title: "Enable Incident Instrumentation Fix Tasks",
1596
1596
  description:
1597
- "When enabled, an AI investigation that ends inconclusive (telemetry was insufficient to determine a root cause) automatically queues an AI agent task that opens a pull request adding the missing instrumentation to the implicated code paths. Requires a repository connected through the GitHub App. Pull requests are always human-reviewed — nothing merges automatically.",
1597
+ "When enabled, an incident AI investigation that ends inconclusive (telemetry was insufficient to determine a root cause) automatically queues an AI agent task that opens a pull request adding the missing instrumentation to the implicated code paths. Requires a repository connected through the GitHub App. Pull requests are always human-reviewed — nothing merges automatically.",
1598
1598
  defaultValue: false,
1599
1599
  example: true,
1600
1600
  })
@@ -1603,7 +1603,7 @@ export default class Project extends TenantModel {
1603
1603
  default: false,
1604
1604
  type: ColumnType.Boolean,
1605
1605
  })
1606
- public enableInstrumentationFixTasks?: boolean = undefined;
1606
+ public enableIncidentInstrumentationFixTasks?: boolean = undefined;
1607
1607
 
1608
1608
  @ColumnAccessControl({
1609
1609
  create: [],
@@ -1622,9 +1622,9 @@ export default class Project extends TenantModel {
1622
1622
  required: true,
1623
1623
  isDefaultValueColumn: true,
1624
1624
  type: TableColumnType.Boolean,
1625
- title: "Enable Automatic Code Fixes",
1625
+ title: "Enable Alert Instrumentation Fix Tasks",
1626
1626
  description:
1627
- "When enabled, an AI investigation that ends with a confident, evidenced root cause analysis automatically queues an AI agent task that opens a draft fix pull request from that analysis — the automatic form of the 'Open Fix PR from this analysis' button. Requires a repository connected through the GitHub App and a Runner with the code-fix capability. Pull requests are always human-reviewed — nothing merges automatically.",
1627
+ "When enabled, an alert AI investigation that ends inconclusive (telemetry was insufficient to determine a root cause) automatically queues an AI agent task that opens a pull request adding the missing instrumentation to the implicated code paths. Requires a repository connected through the GitHub App. Pull requests are always human-reviewed — nothing merges automatically.",
1628
1628
  defaultValue: false,
1629
1629
  example: true,
1630
1630
  })
@@ -1633,7 +1633,67 @@ export default class Project extends TenantModel {
1633
1633
  default: false,
1634
1634
  type: ColumnType.Boolean,
1635
1635
  })
1636
- public enableAutomaticCodeFixes?: boolean = undefined;
1636
+ public enableAlertInstrumentationFixTasks?: boolean = undefined;
1637
+
1638
+ @ColumnAccessControl({
1639
+ create: [],
1640
+ read: [
1641
+ Permission.ProjectOwner,
1642
+ Permission.ProjectAdmin,
1643
+ Permission.ProjectMember,
1644
+ Permission.Viewer,
1645
+ Permission.ReadProject,
1646
+ Permission.UnAuthorizedSsoUser,
1647
+ Permission.ProjectUser,
1648
+ ],
1649
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
1650
+ })
1651
+ @TableColumn({
1652
+ required: true,
1653
+ isDefaultValueColumn: true,
1654
+ type: TableColumnType.Boolean,
1655
+ title: "Enable Automatic Incident Code Fixes",
1656
+ description:
1657
+ "When enabled, an incident AI investigation that ends with a confident, evidenced root cause analysis and recommends a repository code change automatically queues an AI agent task that opens a draft fix pull request from that analysis — the automatic form of the 'Open Fix PR from this analysis' button. Operational, infrastructure, external, user-error and inconclusive findings do not offer or open code-fix pull requests. Requires a repository connected through the GitHub App and a Runner with the code-fix capability. Pull requests are always human-reviewed — nothing merges automatically.",
1658
+ defaultValue: false,
1659
+ example: true,
1660
+ })
1661
+ @Column({
1662
+ nullable: false,
1663
+ default: false,
1664
+ type: ColumnType.Boolean,
1665
+ })
1666
+ public enableAutomaticIncidentCodeFixes?: boolean = undefined;
1667
+
1668
+ @ColumnAccessControl({
1669
+ create: [],
1670
+ read: [
1671
+ Permission.ProjectOwner,
1672
+ Permission.ProjectAdmin,
1673
+ Permission.ProjectMember,
1674
+ Permission.Viewer,
1675
+ Permission.ReadProject,
1676
+ Permission.UnAuthorizedSsoUser,
1677
+ Permission.ProjectUser,
1678
+ ],
1679
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
1680
+ })
1681
+ @TableColumn({
1682
+ required: true,
1683
+ isDefaultValueColumn: true,
1684
+ type: TableColumnType.Boolean,
1685
+ title: "Enable Automatic Alert Code Fixes",
1686
+ description:
1687
+ "When enabled, an alert AI investigation that ends with a confident, evidenced root cause analysis and recommends a repository code change automatically queues an AI agent task that opens a draft fix pull request from that analysis — the automatic form of the 'Open Fix PR from this analysis' button. Operational, infrastructure, external, user-error and inconclusive findings do not offer or open code-fix pull requests. Requires a repository connected through the GitHub App and a Runner with the code-fix capability. Pull requests are always human-reviewed — nothing merges automatically.",
1688
+ defaultValue: false,
1689
+ example: true,
1690
+ })
1691
+ @Column({
1692
+ nullable: false,
1693
+ default: false,
1694
+ type: ColumnType.Boolean,
1695
+ })
1696
+ public enableAutomaticAlertCodeFixes?: boolean = undefined;
1637
1697
 
1638
1698
  @ColumnAccessControl({
1639
1699
  create: [],
@@ -1806,7 +1866,7 @@ export default class Project extends TenantModel {
1806
1866
  type: TableColumnType.Number,
1807
1867
  title: "Daily Autonomous AI Token Limit",
1808
1868
  description:
1809
- "Maximum tokens per UTC day that autonomous AI investigations may consume for this project. When the limit is reached, new autonomous investigations are skipped until the next day — interactive AI chat is never blocked. Unset means no limit.",
1869
+ "Fallback maximum tokens per UTC day for autonomous AI work that is not associated with an incident or alert. When the limit is reached, new autonomous work is skipped until the next day — interactive AI chat is never blocked. Unset means no limit.",
1810
1870
  example: 500000,
1811
1871
  })
1812
1872
  @Column({
@@ -1815,6 +1875,60 @@ export default class Project extends TenantModel {
1815
1875
  })
1816
1876
  public aiDailyAutonomousTokenLimit?: number = undefined;
1817
1877
 
1878
+ @ColumnAccessControl({
1879
+ create: [],
1880
+ read: [
1881
+ Permission.ProjectOwner,
1882
+ Permission.ProjectAdmin,
1883
+ Permission.ProjectMember,
1884
+ Permission.Viewer,
1885
+ Permission.ReadProject,
1886
+ Permission.UnAuthorizedSsoUser,
1887
+ Permission.ProjectUser,
1888
+ ],
1889
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
1890
+ })
1891
+ @TableColumn({
1892
+ required: false,
1893
+ type: TableColumnType.Number,
1894
+ title: "Daily Incident AI Token Limit",
1895
+ description:
1896
+ "Maximum tokens per UTC day that autonomous incident-linked AI work may consume for this project, including investigations, remediation, and follow-up fix tasks. When the limit is reached, new incident-linked AI work is skipped until the next day — interactive AI chat is never blocked. Unset means no limit.",
1897
+ example: 500000,
1898
+ })
1899
+ @Column({
1900
+ nullable: true,
1901
+ type: ColumnType.Number,
1902
+ })
1903
+ public incidentAiDailyAutonomousTokenLimit?: number = undefined;
1904
+
1905
+ @ColumnAccessControl({
1906
+ create: [],
1907
+ read: [
1908
+ Permission.ProjectOwner,
1909
+ Permission.ProjectAdmin,
1910
+ Permission.ProjectMember,
1911
+ Permission.Viewer,
1912
+ Permission.ReadProject,
1913
+ Permission.UnAuthorizedSsoUser,
1914
+ Permission.ProjectUser,
1915
+ ],
1916
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
1917
+ })
1918
+ @TableColumn({
1919
+ required: false,
1920
+ type: TableColumnType.Number,
1921
+ title: "Daily Alert AI Token Limit",
1922
+ description:
1923
+ "Maximum tokens per UTC day that autonomous alert-linked AI work may consume for this project, including investigations, remediation, and follow-up fix tasks. When the limit is reached, new alert-linked AI work is skipped until the next day — interactive AI chat is never blocked. Unset means no limit.",
1924
+ example: 500000,
1925
+ })
1926
+ @Column({
1927
+ nullable: true,
1928
+ type: ColumnType.Number,
1929
+ })
1930
+ public alertAiDailyAutonomousTokenLimit?: number = undefined;
1931
+
1818
1932
  @ColumnAccessControl({
1819
1933
  create: [],
1820
1934
  read: [
@@ -1833,7 +1947,7 @@ export default class Project extends TenantModel {
1833
1947
  type: TableColumnType.Number,
1834
1948
  title: "Daily AI Fix Task Limit",
1835
1949
  description:
1836
- "Maximum AI fix tasks (agent runs that open pull requests) that may be created per UTC day for this project, across every fix recipe and trigger. Unset means the default of 25 per day; 0 pauses AI fix tasks entirely.",
1950
+ "Fallback maximum AI fix tasks (agent runs that open pull requests) that may be created per UTC day for work not associated with an incident or alert, across every fix recipe and trigger. Unset means the default of 25 per day; 0 pauses these AI fix tasks entirely.",
1837
1951
  example: 25,
1838
1952
  })
1839
1953
  @Column({
@@ -1842,6 +1956,60 @@ export default class Project extends TenantModel {
1842
1956
  })
1843
1957
  public aiDailyFixTaskLimit?: number = undefined;
1844
1958
 
1959
+ @ColumnAccessControl({
1960
+ create: [],
1961
+ read: [
1962
+ Permission.ProjectOwner,
1963
+ Permission.ProjectAdmin,
1964
+ Permission.ProjectMember,
1965
+ Permission.Viewer,
1966
+ Permission.ReadProject,
1967
+ Permission.UnAuthorizedSsoUser,
1968
+ Permission.ProjectUser,
1969
+ ],
1970
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
1971
+ })
1972
+ @TableColumn({
1973
+ required: false,
1974
+ type: TableColumnType.Number,
1975
+ title: "Daily Incident AI Fix Task Limit",
1976
+ description:
1977
+ "Maximum AI fix tasks derived from incidents that may be created per UTC day for this project. Unset means the default of 25 per day; 0 pauses incident AI fix tasks entirely.",
1978
+ example: 25,
1979
+ })
1980
+ @Column({
1981
+ nullable: true,
1982
+ type: ColumnType.Number,
1983
+ })
1984
+ public incidentAiDailyFixTaskLimit?: number = undefined;
1985
+
1986
+ @ColumnAccessControl({
1987
+ create: [],
1988
+ read: [
1989
+ Permission.ProjectOwner,
1990
+ Permission.ProjectAdmin,
1991
+ Permission.ProjectMember,
1992
+ Permission.Viewer,
1993
+ Permission.ReadProject,
1994
+ Permission.UnAuthorizedSsoUser,
1995
+ Permission.ProjectUser,
1996
+ ],
1997
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
1998
+ })
1999
+ @TableColumn({
2000
+ required: false,
2001
+ type: TableColumnType.Number,
2002
+ title: "Daily Alert AI Fix Task Limit",
2003
+ description:
2004
+ "Maximum AI fix tasks derived from alerts that may be created per UTC day for this project. Unset means the default of 25 per day; 0 pauses alert AI fix tasks entirely.",
2005
+ example: 25,
2006
+ })
2007
+ @Column({
2008
+ nullable: true,
2009
+ type: ColumnType.Number,
2010
+ })
2011
+ public alertAiDailyFixTaskLimit?: number = undefined;
2012
+
1845
2013
  @ColumnAccessControl({
1846
2014
  create: [],
1847
2015
  read: [
@@ -1976,7 +2144,7 @@ export default class Project extends TenantModel {
1976
2144
  type: TableColumnType.Number,
1977
2145
  title: "Max Concurrent Investigations",
1978
2146
  description:
1979
- "How many AI investigations may run at the same time for this project, shared across incidents and alerts. Unset means the default of 3. Minimum 1 — pause investigations with the opt-in toggles or a daily token limit of 0 instead.",
2147
+ "Fallback maximum number of non-incident and non-alert AI investigations that may run at the same time for this project. Unset means the default of 3. Minimum 1 — pause autonomous work with its opt-in toggle or a daily token limit of 0 instead.",
1980
2148
  example: 3,
1981
2149
  })
1982
2150
  @Column({
@@ -1985,6 +2153,60 @@ export default class Project extends TenantModel {
1985
2153
  })
1986
2154
  public aiMaxConcurrentInvestigations?: number = undefined;
1987
2155
 
2156
+ @ColumnAccessControl({
2157
+ create: [],
2158
+ read: [
2159
+ Permission.ProjectOwner,
2160
+ Permission.ProjectAdmin,
2161
+ Permission.ProjectMember,
2162
+ Permission.Viewer,
2163
+ Permission.ReadProject,
2164
+ Permission.UnAuthorizedSsoUser,
2165
+ Permission.ProjectUser,
2166
+ ],
2167
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
2168
+ })
2169
+ @TableColumn({
2170
+ required: false,
2171
+ type: TableColumnType.Number,
2172
+ title: "Max Concurrent Incident Investigations",
2173
+ description:
2174
+ "How many incident AI investigations may run at the same time for this project. Unset means the default of 3. Minimum 1 — pause incident investigations with the opt-in toggle or a daily token limit of 0 instead.",
2175
+ example: 3,
2176
+ })
2177
+ @Column({
2178
+ nullable: true,
2179
+ type: ColumnType.Number,
2180
+ })
2181
+ public incidentAiMaxConcurrentInvestigations?: number = undefined;
2182
+
2183
+ @ColumnAccessControl({
2184
+ create: [],
2185
+ read: [
2186
+ Permission.ProjectOwner,
2187
+ Permission.ProjectAdmin,
2188
+ Permission.ProjectMember,
2189
+ Permission.Viewer,
2190
+ Permission.ReadProject,
2191
+ Permission.UnAuthorizedSsoUser,
2192
+ Permission.ProjectUser,
2193
+ ],
2194
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
2195
+ })
2196
+ @TableColumn({
2197
+ required: false,
2198
+ type: TableColumnType.Number,
2199
+ title: "Max Concurrent Alert Investigations",
2200
+ description:
2201
+ "How many alert AI investigations may run at the same time for this project. Unset means the default of 3. Minimum 1 — pause alert investigations with the opt-in toggle or a daily token limit of 0 instead.",
2202
+ example: 3,
2203
+ })
2204
+ @Column({
2205
+ nullable: true,
2206
+ type: ColumnType.Number,
2207
+ })
2208
+ public alertAiMaxConcurrentInvestigations?: number = undefined;
2209
+
1988
2210
  @ColumnAccessControl({
1989
2211
  create: [],
1990
2212
  read: [
@@ -1426,6 +1426,7 @@ export default class ScheduledMaintenance extends BaseModel {
1426
1426
  ],
1427
1427
  })
1428
1428
  @TableColumn({
1429
+ computed: true,
1429
1430
  type: TableColumnType.VeryLongText,
1430
1431
  title: "Notification Status Message On Event Scheduled",
1431
1432
  description:
@@ -544,6 +544,7 @@ export default class ScheduledMaintenancePublicNote extends BaseModel {
544
544
  ],
545
545
  })
546
546
  @TableColumn({
547
+ computed: true,
547
548
  type: TableColumnType.VeryLongText,
548
549
  title: "Notification Status Message",
549
550
  description:
@@ -541,6 +541,7 @@ export default class ScheduledMaintenanceStateTimeline extends BaseModel {
541
541
  ],
542
542
  })
543
543
  @TableColumn({
544
+ computed: true,
544
545
  type: TableColumnType.VeryLongText,
545
546
  title: "Notification Status Message",
546
547
  description:
@@ -239,7 +239,7 @@ export default class ScheduledMaintenanceTemplateOwnerUser extends BaseModel {
239
239
  Permission.ProjectMember,
240
240
  Permission.ScheduledMaintenanceAdmin,
241
241
  Permission.ScheduledMaintenanceMember,
242
- Permission.CreateScheduledMaintenanceTemplateOwnerTeam,
242
+ Permission.CreateScheduledMaintenanceTemplateOwnerUser,
243
243
  ],
244
244
  read: [
245
245
  Permission.ProjectOwner,
@@ -249,7 +249,7 @@ export default class ScheduledMaintenanceTemplateOwnerUser extends BaseModel {
249
249
  Permission.ScheduledMaintenanceAdmin,
250
250
  Permission.ScheduledMaintenanceMember,
251
251
  Permission.ScheduledMaintenanceViewer,
252
- Permission.ReadScheduledMaintenanceTemplateOwnerTeam,
252
+ Permission.ReadScheduledMaintenanceTemplateOwnerUser,
253
253
  ],
254
254
  update: [],
255
255
  })
@@ -283,7 +283,7 @@ export default class ScheduledMaintenanceTemplateOwnerUser extends BaseModel {
283
283
  Permission.ProjectMember,
284
284
  Permission.ScheduledMaintenanceAdmin,
285
285
  Permission.ScheduledMaintenanceMember,
286
- Permission.CreateScheduledMaintenanceTemplateOwnerTeam,
286
+ Permission.CreateScheduledMaintenanceTemplateOwnerUser,
287
287
  ],
288
288
  read: [
289
289
  Permission.ProjectOwner,
@@ -293,7 +293,7 @@ export default class ScheduledMaintenanceTemplateOwnerUser extends BaseModel {
293
293
  Permission.ScheduledMaintenanceAdmin,
294
294
  Permission.ScheduledMaintenanceMember,
295
295
  Permission.ScheduledMaintenanceViewer,
296
- Permission.ReadScheduledMaintenanceTemplateOwnerTeam,
296
+ Permission.ReadScheduledMaintenanceTemplateOwnerUser,
297
297
  ],
298
298
  update: [],
299
299
  })