@oneuptime/common 11.4.0 → 11.5.0

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 (473) hide show
  1. package/Models/DatabaseModels/AIRun.ts +50 -0
  2. package/Models/DatabaseModels/AlertSeverity.ts +6 -0
  3. package/Models/DatabaseModels/IncidentSeverity.ts +6 -0
  4. package/Models/DatabaseModels/Index.ts +16 -0
  5. package/Models/DatabaseModels/IoTDeviceCredential.ts +471 -0
  6. package/Models/DatabaseModels/LlmLog.ts +56 -0
  7. package/Models/DatabaseModels/LlmProvider.ts +33 -0
  8. package/Models/DatabaseModels/NetworkDevice.ts +1385 -0
  9. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +717 -0
  10. package/Models/DatabaseModels/NetworkDeviceLabelRule.ts +514 -0
  11. package/Models/DatabaseModels/NetworkDeviceOwnerRule.ts +596 -0
  12. package/Models/DatabaseModels/NetworkDeviceOwnerTeam.ts +487 -0
  13. package/Models/DatabaseModels/NetworkDeviceOwnerUser.ts +486 -0
  14. package/Models/DatabaseModels/NetworkInterface.ts +563 -0
  15. package/Models/DatabaseModels/Project.ts +145 -0
  16. package/Models/DatabaseModels/TelemetryEntityRelationship.ts +54 -0
  17. package/Server/API/AIAgentTaskAPI.ts +10 -24
  18. package/Server/API/AIInvestigationAPI.ts +131 -63
  19. package/Server/API/AlertAPI.ts +5 -0
  20. package/Server/API/IncidentAPI.ts +10 -0
  21. package/Server/API/IncidentEpisodeAPI.ts +5 -0
  22. package/Server/API/LlmProviderAPI.ts +4 -0
  23. package/Server/API/ScheduledMaintenanceAPI.ts +5 -0
  24. package/Server/API/TelemetryAPI.ts +4 -3
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.ts +19 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1783695782697-AddCacheTokenColumnsToLlmLog.ts +25 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1783701585317-AddAlertInvestigationGating.ts +31 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1783702431535-AddAiDailyAutonomousTokenLimitToProject.ts +19 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1783720000000-AddNetworkDeviceTables.ts +105 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1783721121260-AddAttemptCountToAIRun.ts +15 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1783730000000-AddNetworkDeviceOwnersAndRules.ts +192 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1783740000000-AddNetworkDeviceDiscoveryScan.ts +37 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1783750000000-AddLldpNeighborsToNetworkDevice.ts +19 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1783760576655-AddInvestigationTuningToProject.ts +25 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1783762505482-AddTelemetryEntityRelationshipMetrics.ts +31 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1783780000000-AddIoTDeviceCredentialTable.ts +79 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1783790000000-AddSnmpV3AuthColumnsToNetworkDevice.ts +49 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +24 -0
  39. package/Server/Services/AIAgentTaskService.ts +62 -0
  40. package/Server/Services/AIRunService.ts +58 -0
  41. package/Server/Services/AIService.ts +101 -0
  42. package/Server/Services/AnalyticsDatabaseService.ts +27 -0
  43. package/Server/Services/IncidentService.ts +14 -41
  44. package/Server/Services/Index.ts +14 -0
  45. package/Server/Services/IoTDeviceCredentialService.ts +351 -0
  46. package/Server/Services/IoTDeviceService.ts +64 -21
  47. package/Server/Services/LlmLogService.ts +26 -0
  48. package/Server/Services/LlmProviderService.ts +3 -0
  49. package/Server/Services/LogAggregationService.ts +29 -11
  50. package/Server/Services/MetricService.ts +603 -13
  51. package/Server/Services/MonitorService.ts +4 -1
  52. package/Server/Services/NetworkDeviceDiscoveryScanService.ts +10 -0
  53. package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +204 -0
  54. package/Server/Services/NetworkDeviceLabelRuleService.ts +14 -0
  55. package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +222 -0
  56. package/Server/Services/NetworkDeviceOwnerRuleService.ts +14 -0
  57. package/Server/Services/NetworkDeviceOwnerTeamService.ts +10 -0
  58. package/Server/Services/NetworkDeviceOwnerUserService.ts +10 -0
  59. package/Server/Services/NetworkDeviceService.ts +50 -0
  60. package/Server/Services/NetworkInterfaceService.ts +10 -0
  61. package/Server/Services/TelemetryEntityRelationshipService.ts +23 -0
  62. package/Server/Services/TelemetryEntityService.ts +72 -2
  63. package/Server/Utils/AI/Sentinel/AlertInvestigationRunner.ts +244 -12
  64. package/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.ts +92 -19
  65. package/Server/Utils/AI/Sentinel/InvestigationQueue.ts +493 -0
  66. package/Server/Utils/AI/Sentinel/README.md +10 -0
  67. package/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.ts +88 -68
  68. package/Server/Utils/AI/Toolbox/Index.ts +2 -1
  69. package/Server/Utils/AI/Toolbox/MetricTools.ts +391 -0
  70. package/Server/Utils/LLM/LLMService.ts +21 -0
  71. package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +44 -0
  72. package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +170 -2
  73. package/Server/Utils/Monitor/IoTDeviceAbsenceSeries.ts +101 -0
  74. package/Server/Utils/Monitor/MonitorAlert.ts +15 -3
  75. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +1 -1
  76. package/Server/Utils/Monitor/MonitorIncident.ts +19 -3
  77. package/Server/Utils/Monitor/MonitorMetricUtil.ts +195 -2
  78. package/Server/Utils/Monitor/MonitorResource.ts +77 -21
  79. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +1 -1
  80. package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +201 -0
  81. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +215 -0
  82. package/Server/Utils/Monitor/SnmpInterfaceRateUtil.ts +169 -0
  83. package/Tests/Server/Services/AIAgentTaskServiceClaim.test.ts +146 -0
  84. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +173 -0
  85. package/Tests/Server/Services/IncidentInternalNoteAnnouncement.test.ts +97 -0
  86. package/Tests/Server/Services/IoTDeviceService.test.ts +54 -0
  87. package/Tests/Server/Services/LogAggregationService.test.ts +22 -0
  88. package/Tests/Server/Services/MetricServiceAggregate.test.ts +194 -0
  89. package/Tests/Server/Utils/AI/BaselineAnomalyTool.test.ts +253 -0
  90. package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +44 -0
  91. package/Tests/Server/Utils/AI/SentinelAlertGating.test.ts +360 -0
  92. package/Tests/Server/Utils/AI/SentinelInvestigationQueue.test.ts +295 -0
  93. package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +59 -0
  94. package/Tests/Server/Utils/Monitor/IoTDeviceAbsenceSeries.test.ts +113 -0
  95. package/Tests/Server/Utils/Monitor/PerSeriesRecoveryResolution.test.ts +198 -0
  96. package/Tests/Types/AI/AIAgentTaskStatus.test.ts +86 -0
  97. package/Tests/Types/BaseDatabase/AggregationIntervalUtil.test.ts +127 -0
  98. package/Tests/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.test.ts +152 -0
  99. package/Tests/Types/Monitor/MonitorType.test.ts +1 -1
  100. package/Tests/Types/Trace/TraceRecordingRuleDefinition.test.ts +308 -0
  101. package/Tests/UI/Components/Dropdown.test.tsx +17 -0
  102. package/Tests/UI/Components/EntityDropdown.test.tsx +130 -0
  103. package/Tests/UI/Components/Modal.test.tsx +144 -2
  104. package/Tests/UI/Components/TelemetrySearchBar.test.tsx +90 -0
  105. package/Tests/UI/Utils/Theme.test.ts +161 -0
  106. package/Tests/Utils/Monitor/LatencyMatrixUtil.test.ts +111 -0
  107. package/Types/AI/AIRunStatus.ts +9 -0
  108. package/Types/BaseDatabase/AggregateBy.ts +12 -0
  109. package/Types/Dashboard/DashboardComponentType.ts +1 -0
  110. package/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.ts +24 -0
  111. package/Types/Dashboard/DashboardTemplates.ts +9 -1
  112. package/Types/LlmLogStatus.ts +1 -0
  113. package/Types/Monitor/CriteriaFilter.ts +9 -0
  114. package/Types/Monitor/HttpPhaseTimings.ts +16 -0
  115. package/Types/Monitor/IotAlertTemplates.ts +22 -3
  116. package/Types/Monitor/LatencyMatrix.ts +27 -0
  117. package/Types/Monitor/MonitorCriteriaInstance.ts +2 -2
  118. package/Types/Monitor/MonitorMetricType.ts +27 -0
  119. package/Types/Monitor/MonitorStep.ts +36 -11
  120. package/Types/Monitor/MonitorStepNetworkDeviceMonitor.ts +55 -0
  121. package/Types/Monitor/MonitorStepSnmpMonitor.ts +8 -0
  122. package/Types/Monitor/MonitorType.ts +14 -9
  123. package/Types/Monitor/PingMonitor/PingMonitorResponse.ts +20 -0
  124. package/Types/Monitor/SnmpMonitor/LldpNeighbor.ts +12 -0
  125. package/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.ts +116 -0
  126. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +29 -0
  127. package/Types/Monitor/SnmpMonitor/SnmpInterface.ts +31 -0
  128. package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +24 -0
  129. package/Types/Monitor/SnmpMonitor/SnmpTrap.ts +20 -0
  130. package/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.ts +173 -0
  131. package/Types/Permission.ts +314 -0
  132. package/Types/Probe/ProbeMonitorResponse.ts +22 -0
  133. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +8 -5
  134. package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +4 -1
  135. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +6 -3
  136. package/UI/Components/CodeBlock/CodeBlock.tsx +2 -1
  137. package/UI/Components/CodeEditor/CodeEditor.tsx +3 -0
  138. package/UI/Components/Divider/Divider.tsx +1 -1
  139. package/UI/Components/Dropdown/Dropdown.tsx +13 -4
  140. package/UI/Components/EntityDropdown/EntityDropdown.tsx +110 -2
  141. package/UI/Components/ErrorBoundary.tsx +2 -1
  142. package/UI/Components/EventItem/EventItem.tsx +2 -2
  143. package/UI/Components/GanttChart/Bar/Index.tsx +1 -1
  144. package/UI/Components/Graphs/UptimeBarTooltip.tsx +30 -23
  145. package/UI/Components/Header/Header.tsx +7 -0
  146. package/UI/Components/Header/HeaderIconDropdownButton.tsx +2 -0
  147. package/UI/Components/Icon/Icon.tsx +8 -6
  148. package/UI/Components/Label/Label.tsx +2 -2
  149. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +22 -10
  150. package/UI/Components/LogsViewer/components/LogsHistogram.tsx +9 -3
  151. package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +8 -8
  152. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +44 -20
  153. package/UI/Components/Modal/ConfirmModal.tsx +1 -1
  154. package/UI/Components/Modal/Modal.tsx +213 -121
  155. package/UI/Components/Modal/ModalFooter.tsx +33 -22
  156. package/UI/Components/ModelTable/TableView.tsx +1 -1
  157. package/UI/Components/MonitorGraphs/UptimeBarDayModal.tsx +20 -12
  158. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +2 -2
  159. package/UI/Components/Pill/Pill.tsx +21 -13
  160. package/UI/Components/StatusBubble/StatusBubble.tsx +3 -3
  161. package/UI/Components/Tabs/Tabs.tsx +10 -1
  162. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +7 -1
  163. package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +9 -3
  164. package/UI/Components/TelemetryViewer/components/TelemetrySearchBar.tsx +62 -4
  165. package/UI/Components/Workflow/Component.tsx +53 -33
  166. package/UI/Components/Workflow/ComponentPortViewer.tsx +6 -6
  167. package/UI/Components/Workflow/ComponentReturnValueViewer.tsx +8 -8
  168. package/UI/Components/Workflow/ComponentsModal.tsx +16 -9
  169. package/UI/Components/Workflow/Workflow.tsx +13 -11
  170. package/UI/Utils/Navigation.ts +10 -1
  171. package/UI/Utils/Theme.ts +140 -0
  172. package/Utils/Dashboard/Components/DashboardLogChartComponent.ts +99 -0
  173. package/Utils/Dashboard/Components/Index.ts +7 -0
  174. package/Utils/Monitor/LatencyMatrixUtil.ts +162 -0
  175. package/Utils/Monitor/MonitorMetricType.ts +141 -3
  176. package/Utils/Monitor/NetworkTopologyUtil.ts +159 -0
  177. package/Utils/Telemetry/EntityRelationship.ts +11 -0
  178. package/build/dist/Models/DatabaseModels/AIRun.js +52 -0
  179. package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
  180. package/build/dist/Models/DatabaseModels/AlertSeverity.js +6 -0
  181. package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
  182. package/build/dist/Models/DatabaseModels/IncidentSeverity.js +6 -0
  183. package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
  184. package/build/dist/Models/DatabaseModels/Index.js +16 -0
  185. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  186. package/build/dist/Models/DatabaseModels/IoTDeviceCredential.js +493 -0
  187. package/build/dist/Models/DatabaseModels/IoTDeviceCredential.js.map +1 -0
  188. package/build/dist/Models/DatabaseModels/LlmLog.js +58 -0
  189. package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
  190. package/build/dist/Models/DatabaseModels/LlmProvider.js +33 -0
  191. package/build/dist/Models/DatabaseModels/LlmProvider.js.map +1 -1
  192. package/build/dist/Models/DatabaseModels/NetworkDevice.js +1426 -0
  193. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -0
  194. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +738 -0
  195. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -0
  196. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js +522 -0
  197. package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js.map +1 -0
  198. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js +603 -0
  199. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js.map +1 -0
  200. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js +503 -0
  201. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js.map +1 -0
  202. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js +502 -0
  203. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js.map +1 -0
  204. package/build/dist/Models/DatabaseModels/NetworkInterface.js +589 -0
  205. package/build/dist/Models/DatabaseModels/NetworkInterface.js.map +1 -0
  206. package/build/dist/Models/DatabaseModels/Project.js +147 -0
  207. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  208. package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js +57 -0
  209. package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js.map +1 -1
  210. package/build/dist/Server/API/AIAgentTaskAPI.js +8 -23
  211. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
  212. package/build/dist/Server/API/AIInvestigationAPI.js +95 -55
  213. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  214. package/build/dist/Server/API/AlertAPI.js +5 -0
  215. package/build/dist/Server/API/AlertAPI.js.map +1 -1
  216. package/build/dist/Server/API/IncidentAPI.js +10 -0
  217. package/build/dist/Server/API/IncidentAPI.js.map +1 -1
  218. package/build/dist/Server/API/IncidentEpisodeAPI.js +5 -0
  219. package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
  220. package/build/dist/Server/API/LlmProviderAPI.js +5 -7
  221. package/build/dist/Server/API/LlmProviderAPI.js.map +1 -1
  222. package/build/dist/Server/API/ScheduledMaintenanceAPI.js +5 -0
  223. package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
  224. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  225. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.js +12 -0
  226. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.js.map +1 -0
  227. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783695782697-AddCacheTokenColumnsToLlmLog.js +14 -0
  228. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783695782697-AddCacheTokenColumnsToLlmLog.js.map +1 -0
  229. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783701585317-AddAlertInvestigationGating.js +18 -0
  230. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783701585317-AddAlertInvestigationGating.js.map +1 -0
  231. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783702431535-AddAiDailyAutonomousTokenLimitToProject.js +12 -0
  232. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783702431535-AddAiDailyAutonomousTokenLimitToProject.js.map +1 -0
  233. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783720000000-AddNetworkDeviceTables.js +51 -0
  234. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783720000000-AddNetworkDeviceTables.js.map +1 -0
  235. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783721121260-AddAttemptCountToAIRun.js +12 -0
  236. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783721121260-AddAttemptCountToAIRun.js.map +1 -0
  237. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783730000000-AddNetworkDeviceOwnersAndRules.js +101 -0
  238. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783730000000-AddNetworkDeviceOwnersAndRules.js.map +1 -0
  239. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783740000000-AddNetworkDeviceDiscoveryScan.js +18 -0
  240. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783740000000-AddNetworkDeviceDiscoveryScan.js.map +1 -0
  241. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783750000000-AddLldpNeighborsToNetworkDevice.js +12 -0
  242. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783750000000-AddLldpNeighborsToNetworkDevice.js.map +1 -0
  243. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783760576655-AddInvestigationTuningToProject.js +14 -0
  244. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783760576655-AddInvestigationTuningToProject.js.map +1 -0
  245. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783762505482-AddTelemetryEntityRelationshipMetrics.js +16 -0
  246. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783762505482-AddTelemetryEntityRelationshipMetrics.js.map +1 -0
  247. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783780000000-AddIoTDeviceCredentialTable.js +38 -0
  248. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783780000000-AddIoTDeviceCredentialTable.js.map +1 -0
  249. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783790000000-AddSnmpV3AuthColumnsToNetworkDevice.js +22 -0
  250. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783790000000-AddSnmpV3AuthColumnsToNetworkDevice.js.map +1 -0
  251. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +24 -0
  252. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  253. package/build/dist/Server/Services/AIAgentTaskService.js +59 -0
  254. package/build/dist/Server/Services/AIAgentTaskService.js.map +1 -1
  255. package/build/dist/Server/Services/AIRunService.js +33 -0
  256. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  257. package/build/dist/Server/Services/AIService.js +82 -9
  258. package/build/dist/Server/Services/AIService.js.map +1 -1
  259. package/build/dist/Server/Services/AnalyticsDatabaseService.js +19 -0
  260. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  261. package/build/dist/Server/Services/IncidentService.js +14 -25
  262. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  263. package/build/dist/Server/Services/Index.js +14 -0
  264. package/build/dist/Server/Services/Index.js.map +1 -1
  265. package/build/dist/Server/Services/IoTDeviceCredentialService.js +321 -0
  266. package/build/dist/Server/Services/IoTDeviceCredentialService.js.map +1 -0
  267. package/build/dist/Server/Services/IoTDeviceService.js +49 -15
  268. package/build/dist/Server/Services/IoTDeviceService.js.map +1 -1
  269. package/build/dist/Server/Services/LlmLogService.js +29 -0
  270. package/build/dist/Server/Services/LlmLogService.js.map +1 -1
  271. package/build/dist/Server/Services/LlmProviderService.js +3 -0
  272. package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
  273. package/build/dist/Server/Services/LogAggregationService.js +21 -7
  274. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  275. package/build/dist/Server/Services/MetricService.js +449 -7
  276. package/build/dist/Server/Services/MetricService.js.map +1 -1
  277. package/build/dist/Server/Services/MonitorService.js +2 -1
  278. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  279. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +9 -0
  280. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -0
  281. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +166 -0
  282. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -0
  283. package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js +13 -0
  284. package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js.map +1 -0
  285. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +186 -0
  286. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -0
  287. package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js +13 -0
  288. package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js.map +1 -0
  289. package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js +9 -0
  290. package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js.map +1 -0
  291. package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js +9 -0
  292. package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js.map +1 -0
  293. package/build/dist/Server/Services/NetworkDeviceService.js +52 -0
  294. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -0
  295. package/build/dist/Server/Services/NetworkInterfaceService.js +9 -0
  296. package/build/dist/Server/Services/NetworkInterfaceService.js.map +1 -0
  297. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js +22 -0
  298. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +1 -1
  299. package/build/dist/Server/Services/TelemetryEntityService.js +64 -2
  300. package/build/dist/Server/Services/TelemetryEntityService.js.map +1 -1
  301. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js +189 -9
  302. package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js.map +1 -1
  303. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js +84 -17
  304. package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js.map +1 -1
  305. package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js +428 -0
  306. package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js.map +1 -0
  307. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js +63 -47
  308. package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js.map +1 -1
  309. package/build/dist/Server/Utils/AI/Toolbox/Index.js +2 -1
  310. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  311. package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js +300 -0
  312. package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js.map +1 -1
  313. package/build/dist/Server/Utils/LLM/LLMService.js +16 -0
  314. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  315. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +29 -0
  316. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
  317. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +130 -2
  318. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
  319. package/build/dist/Server/Utils/Monitor/IoTDeviceAbsenceSeries.js +81 -0
  320. package/build/dist/Server/Utils/Monitor/IoTDeviceAbsenceSeries.js.map +1 -0
  321. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +18 -7
  322. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  323. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +1 -1
  324. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  325. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +25 -10
  326. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  327. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +155 -5
  328. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  329. package/build/dist/Server/Utils/Monitor/MonitorResource.js +76 -30
  330. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  331. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +1 -1
  332. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  333. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +147 -0
  334. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -0
  335. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +167 -0
  336. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -0
  337. package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js +93 -0
  338. package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js.map +1 -0
  339. package/build/dist/Types/AI/AIRunStatus.js +9 -0
  340. package/build/dist/Types/AI/AIRunStatus.js.map +1 -1
  341. package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
  342. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  343. package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.js +2 -0
  344. package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.js.map +1 -0
  345. package/build/dist/Types/Dashboard/DashboardTemplates.js +9 -1
  346. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  347. package/build/dist/Types/LlmLogStatus.js +1 -0
  348. package/build/dist/Types/LlmLogStatus.js.map +1 -1
  349. package/build/dist/Types/Monitor/CriteriaFilter.js +9 -0
  350. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  351. package/build/dist/Types/Monitor/HttpPhaseTimings.js +2 -0
  352. package/build/dist/Types/Monitor/HttpPhaseTimings.js.map +1 -0
  353. package/build/dist/Types/Monitor/IotAlertTemplates.js +7 -7
  354. package/build/dist/Types/Monitor/IotAlertTemplates.js.map +1 -1
  355. package/build/dist/Types/Monitor/LatencyMatrix.js +2 -0
  356. package/build/dist/Types/Monitor/LatencyMatrix.js.map +1 -0
  357. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +2 -2
  358. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  359. package/build/dist/Types/Monitor/MonitorMetricType.js +24 -0
  360. package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
  361. package/build/dist/Types/Monitor/MonitorStep.js +22 -9
  362. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  363. package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js +36 -0
  364. package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js.map +1 -0
  365. package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js +3 -0
  366. package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js.map +1 -1
  367. package/build/dist/Types/Monitor/MonitorType.js +14 -9
  368. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  369. package/build/dist/Types/Monitor/PingMonitor/PingMonitorResponse.js +2 -0
  370. package/build/dist/Types/Monitor/PingMonitor/PingMonitorResponse.js.map +1 -0
  371. package/build/dist/Types/Monitor/SnmpMonitor/LldpNeighbor.js +2 -0
  372. package/build/dist/Types/Monitor/SnmpMonitor/LldpNeighbor.js.map +1 -0
  373. package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js +89 -0
  374. package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js.map +1 -0
  375. package/build/dist/Types/Monitor/SnmpMonitor/NetworkTopology.js +2 -0
  376. package/build/dist/Types/Monitor/SnmpMonitor/NetworkTopology.js.map +1 -0
  377. package/build/dist/Types/Monitor/SnmpMonitor/SnmpInterface.js +2 -0
  378. package/build/dist/Types/Monitor/SnmpMonitor/SnmpInterface.js.map +1 -0
  379. package/build/dist/Types/Monitor/SnmpMonitor/SnmpTrap.js +2 -0
  380. package/build/dist/Types/Monitor/SnmpMonitor/SnmpTrap.js.map +1 -0
  381. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js +137 -0
  382. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js.map +1 -0
  383. package/build/dist/Types/Permission.js +280 -0
  384. package/build/dist/Types/Permission.js.map +1 -1
  385. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +7 -4
  386. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
  387. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +4 -1
  388. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
  389. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +6 -3
  390. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  391. package/build/dist/UI/Components/CodeBlock/CodeBlock.js +1 -1
  392. package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
  393. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +3 -1
  394. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  395. package/build/dist/UI/Components/Divider/Divider.js +1 -1
  396. package/build/dist/UI/Components/Divider/Divider.js.map +1 -1
  397. package/build/dist/UI/Components/Dropdown/Dropdown.js +10 -4
  398. package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
  399. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js +76 -3
  400. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js.map +1 -1
  401. package/build/dist/UI/Components/ErrorBoundary.js +2 -1
  402. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  403. package/build/dist/UI/Components/EventItem/EventItem.js +2 -2
  404. package/build/dist/UI/Components/EventItem/EventItem.js.map +1 -1
  405. package/build/dist/UI/Components/GanttChart/Bar/Index.js +1 -1
  406. package/build/dist/UI/Components/GanttChart/Bar/Index.js.map +1 -1
  407. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js +29 -23
  408. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js.map +1 -1
  409. package/build/dist/UI/Components/Header/Header.js +1 -0
  410. package/build/dist/UI/Components/Header/Header.js.map +1 -1
  411. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -1
  412. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  413. package/build/dist/UI/Components/Icon/Icon.js +8 -6
  414. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  415. package/build/dist/UI/Components/Label/Label.js +2 -2
  416. package/build/dist/UI/Components/Label/Label.js.map +1 -1
  417. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +20 -8
  418. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  419. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js +8 -2
  420. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js.map +1 -1
  421. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +8 -8
  422. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +40 -20
  423. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  424. package/build/dist/UI/Components/Modal/ConfirmModal.js +1 -1
  425. package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
  426. package/build/dist/UI/Components/Modal/Modal.js +109 -51
  427. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  428. package/build/dist/UI/Components/Modal/ModalFooter.js +13 -10
  429. package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
  430. package/build/dist/UI/Components/ModelTable/TableView.js +1 -1
  431. package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
  432. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js +17 -12
  433. package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js.map +1 -1
  434. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +2 -2
  435. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  436. package/build/dist/UI/Components/Pill/Pill.js +12 -13
  437. package/build/dist/UI/Components/Pill/Pill.js.map +1 -1
  438. package/build/dist/UI/Components/StatusBubble/StatusBubble.js +3 -3
  439. package/build/dist/UI/Components/StatusBubble/StatusBubble.js.map +1 -1
  440. package/build/dist/UI/Components/Tabs/Tabs.js +3 -1
  441. package/build/dist/UI/Components/Tabs/Tabs.js.map +1 -1
  442. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +1 -1
  443. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
  444. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +8 -2
  445. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
  446. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js +36 -6
  447. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js.map +1 -1
  448. package/build/dist/UI/Components/Workflow/Component.js +43 -33
  449. package/build/dist/UI/Components/Workflow/Component.js.map +1 -1
  450. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js +6 -6
  451. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js.map +1 -1
  452. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js +8 -8
  453. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js.map +1 -1
  454. package/build/dist/UI/Components/Workflow/ComponentsModal.js +15 -9
  455. package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
  456. package/build/dist/UI/Components/Workflow/Workflow.js +13 -11
  457. package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
  458. package/build/dist/UI/Utils/Navigation.js +11 -1
  459. package/build/dist/UI/Utils/Navigation.js.map +1 -1
  460. package/build/dist/UI/Utils/Theme.js +106 -0
  461. package/build/dist/UI/Utils/Theme.js.map +1 -0
  462. package/build/dist/Utils/Dashboard/Components/DashboardLogChartComponent.js +89 -0
  463. package/build/dist/Utils/Dashboard/Components/DashboardLogChartComponent.js.map +1 -0
  464. package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
  465. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  466. package/build/dist/Utils/Monitor/LatencyMatrixUtil.js +89 -0
  467. package/build/dist/Utils/Monitor/LatencyMatrixUtil.js.map +1 -0
  468. package/build/dist/Utils/Monitor/MonitorMetricType.js +138 -4
  469. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  470. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +112 -0
  471. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -0
  472. package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -1
  473. package/package.json +1 -1
@@ -8,11 +8,19 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import OneUptimeDate from "../../../../Types/Date";
11
+ import SortOrder from "../../../../Types/BaseDatabase/SortOrder";
12
+ import AIRunType from "../../../../Types/AI/AIRunType";
11
13
  import { Blue500 } from "../../../../Types/BrandColors";
12
14
  import { AlertFeedEventType } from "../../../../Models/DatabaseModels/AlertFeed";
15
+ import AlertService from "../../../Services/AlertService";
16
+ import AlertSeverityService from "../../../Services/AlertSeverityService";
17
+ import ProjectService from "../../../Services/ProjectService";
18
+ import AIRunService from "../../../Services/AIRunService";
13
19
  import AlertFeedService from "../../../Services/AlertFeedService";
20
+ import QueryHelper from "../../../Types/Database/QueryHelper";
14
21
  import AlertAIContextBuilder from "../AlertAIContextBuilder";
15
22
  import SentinelInvestigationEngine from "./SentinelInvestigationEngine";
23
+ import SentinelInvestigationQueue from "./InvestigationQueue";
16
24
  import logger from "../../Logger";
17
25
  import CaptureSpan from "../../Telemetry/CaptureSpan";
18
26
  /*
@@ -23,13 +31,23 @@ import CaptureSpan from "../../Telemetry/CaptureSpan";
23
31
  * the alert timeline + Slack/Teams. Symmetric to incident investigation and
24
32
  * built on the same shared SentinelInvestigationEngine.
25
33
  *
26
- * Gated by the same per-project opt-in as incidents. Alert volume can be higher
27
- * than incidents, so severity / rate gating is a deliberate follow-up.
34
+ * Gated by the same per-project opt-in as incidents, PLUS alert-specific cost
35
+ * gates (alert volume can be far higher than incidents):
36
+ * - severity floor: only alerts at or above the project's configured minimum
37
+ * severity are investigated; when unset, the top two severity tiers
38
+ * (lowest two `order` values) are the default.
39
+ * - per-monitor dedupe window: a monitor that already triggered an
40
+ * investigation recently is not re-investigated — the first RCA stands.
28
41
  */
42
+ // Per-project override lives in Project.alertInvestigationDedupeWindowMinutes.
43
+ export const DEFAULT_DEDUPE_WINDOW_MINUTES = 30;
44
+ // Clamp: an RCA older than a day is a new episode by any reading.
45
+ const MAX_DEDUPE_WINDOW_MINUTES = 24 * 60;
29
46
  export default class SentinelAlertInvestigationRunner {
30
47
  /*
31
48
  * Entry point called (fire-and-forget) from AlertService.onCreateSuccess.
32
- * Never throws all failures are logged and recorded on the AIRun.
49
+ * Cheap: gates + a Queued AIRun row; execution happens via the queue.
50
+ * Never throws — all failures are logged.
33
51
  */
34
52
  static async investigateNewAlert(data) {
35
53
  const { alertId, projectId } = data;
@@ -37,14 +55,59 @@ export default class SentinelAlertInvestigationRunner {
37
55
  if (!(await SentinelInvestigationEngine.isEnabledForProject(projectId, "Alert"))) {
38
56
  return;
39
57
  }
40
- const contextData = await AlertAIContextBuilder.buildAlertContext({
58
+ const gate = await this.shouldInvestigateAlert({
41
59
  alertId,
60
+ projectId,
42
61
  });
43
- await SentinelInvestigationEngine.investigate({
62
+ if (!gate.investigate) {
63
+ logger.debug(`Sentinel: skipping investigation for alert ${alertId.toString()} — ${gate.reason}.`);
64
+ return;
65
+ }
66
+ await SentinelInvestigationQueue.enqueue({
44
67
  projectId,
45
- feature: "Sentinel Alert Investigation",
46
68
  subjectAlertId: alertId,
47
- contextSummary: this.buildAlertSummary(contextData),
69
+ subjectMonitorId: gate.monitorId,
70
+ });
71
+ }
72
+ catch (error) {
73
+ logger.error(`Sentinel: unexpected error enqueueing investigation for alert ${alertId.toString()}: ${error}`);
74
+ }
75
+ }
76
+ /*
77
+ * Execute a claimed run: assemble alert context and hand it to the engine.
78
+ * Called by SentinelInvestigationQueue after a successful claim. Never
79
+ * throws — failures are handed to the queue's retry policy so a claimed
80
+ * run is always finalized or requeued.
81
+ */
82
+ static async executeInvestigation(data) {
83
+ const { aiRunId, projectId, alertId, attemptCount } = data;
84
+ let contextSummary;
85
+ try {
86
+ const contextData = await AlertAIContextBuilder.buildAlertContext({
87
+ alertId,
88
+ });
89
+ contextSummary = this.buildAlertSummary(contextData);
90
+ }
91
+ catch (error) {
92
+ /*
93
+ * Context assembly failed — the run is claimed, so hand it to the
94
+ * retry policy rather than leaving it Running until the sweeper.
95
+ */
96
+ await SentinelInvestigationQueue.failOrRequeue({
97
+ aiRunId,
98
+ attemptCount,
99
+ errorMessage: `Failed to build alert context: ${error instanceof Error ? error.message : String(error)}`,
100
+ isPermanent: false,
101
+ });
102
+ return;
103
+ }
104
+ await SentinelInvestigationEngine.executeRun({
105
+ aiRunId,
106
+ projectId,
107
+ attemptCount,
108
+ request: {
109
+ feature: "Sentinel Alert Investigation",
110
+ contextSummary,
48
111
  postAnalysis: async (postData) => {
49
112
  await AlertFeedService.createAlertFeedItem({
50
113
  alertId,
@@ -61,11 +124,116 @@ export default class SentinelAlertInvestigationRunner {
61
124
  },
62
125
  });
63
126
  },
127
+ },
128
+ });
129
+ }
130
+ /*
131
+ * The alert-specific cost gates, evaluated BEFORE the expensive context
132
+ * build. Severity first (cheapest to reason about), then the per-monitor
133
+ * dedupe window. The severity gate only filters KNOWN-low-severity noise:
134
+ * an alert whose severity order cannot be determined passes it.
135
+ */
136
+ static async shouldInvestigateAlert(data) {
137
+ var _a, _b;
138
+ const { alertId, projectId } = data;
139
+ const alert = await AlertService.findOneById({
140
+ id: alertId,
141
+ select: {
142
+ monitorId: true,
143
+ alertSeverity: {
144
+ order: true,
145
+ },
146
+ },
147
+ props: { isRoot: true },
148
+ });
149
+ if (!alert) {
150
+ return { investigate: false, reason: "alert not found" };
151
+ }
152
+ // One project read serves both the severity floor and the dedupe window.
153
+ const project = await ProjectService.findOneById({
154
+ id: projectId,
155
+ select: {
156
+ alertInvestigationMinimumSeverityId: true,
157
+ alertInvestigationDedupeWindowMinutes: true,
158
+ },
159
+ props: { isRoot: true },
160
+ });
161
+ // Severity floor.
162
+ const floorOrder = await this.getSeverityFloorOrder(projectId, project === null || project === void 0 ? void 0 : project.alertInvestigationMinimumSeverityId);
163
+ const alertOrder = (_a = alert.alertSeverity) === null || _a === void 0 ? void 0 : _a.order;
164
+ if (floorOrder !== null &&
165
+ alertOrder !== undefined &&
166
+ alertOrder > floorOrder) {
167
+ return {
168
+ investigate: false,
169
+ reason: `severity order ${alertOrder} is below the investigation floor (order ${floorOrder})`,
170
+ monitorId: alert.monitorId,
171
+ };
172
+ }
173
+ /*
174
+ * Per-monitor dedupe window: per-project override, defaulting to 30
175
+ * minutes, clamped to at most a day; 0 disables the cooldown. Alerts
176
+ * without a monitor have no dedupe key.
177
+ */
178
+ const dedupeWindowMinutes = Math.min(MAX_DEDUPE_WINDOW_MINUTES, Math.max(0, (_b = project === null || project === void 0 ? void 0 : project.alertInvestigationDedupeWindowMinutes) !== null && _b !== void 0 ? _b : DEFAULT_DEDUPE_WINDOW_MINUTES));
179
+ if (alert.monitorId && dedupeWindowMinutes > 0) {
180
+ const windowStart = OneUptimeDate.getSomeMinutesAgo(dedupeWindowMinutes);
181
+ const recentRunCount = (await AIRunService.countBy({
182
+ query: {
183
+ projectId,
184
+ monitorId: alert.monitorId,
185
+ runType: AIRunType.Investigation,
186
+ createdAt: QueryHelper.greaterThan(windowStart),
187
+ },
188
+ props: { isRoot: true },
189
+ })).toNumber();
190
+ if (recentRunCount > 0) {
191
+ return {
192
+ investigate: false,
193
+ reason: `monitor ${alert.monitorId.toString()} was already investigated within the last ${dedupeWindowMinutes} minutes`,
194
+ monitorId: alert.monitorId,
195
+ };
196
+ }
197
+ }
198
+ return {
199
+ investigate: true,
200
+ reason: "passed severity and dedupe gates",
201
+ monitorId: alert.monitorId,
202
+ };
203
+ }
204
+ /*
205
+ * The severity `order` value that still qualifies for investigation (lower
206
+ * order = higher severity; an alert qualifies when its order <= floor).
207
+ * An explicitly configured minimum severity wins; when unset — or when the
208
+ * configured severity has been deleted — the default is the project's top
209
+ * two tiers. Returns null when no floor applies (no severities configured).
210
+ */
211
+ static async getSeverityFloorOrder(projectId, minimumSeverityId) {
212
+ var _a;
213
+ if (minimumSeverityId) {
214
+ const floorSeverity = await AlertSeverityService.findOneById({
215
+ id: minimumSeverityId,
216
+ select: { order: true },
217
+ props: { isRoot: true },
64
218
  });
219
+ if (floorSeverity && floorSeverity.order !== undefined) {
220
+ return floorSeverity.order;
221
+ }
65
222
  }
66
- catch (error) {
67
- logger.error(`Sentinel: unexpected error investigating alert ${alertId.toString()}: ${error}`);
223
+ // Default: the top two severity tiers (the two lowest order values).
224
+ const topTiers = await AlertSeverityService.findBy({
225
+ query: { projectId },
226
+ select: { order: true },
227
+ sort: { order: SortOrder.Ascending },
228
+ limit: 2,
229
+ skip: 0,
230
+ props: { isRoot: true },
231
+ });
232
+ if (topTiers.length === 0) {
233
+ return null;
68
234
  }
235
+ const lastTier = topTiers[topTiers.length - 1];
236
+ return (_a = lastTier.order) !== null && _a !== void 0 ? _a : null;
69
237
  }
70
238
  // Build a compact alert record to seed the investigation.
71
239
  static buildAlertSummary(contextData) {
@@ -116,4 +284,16 @@ __decorate([
116
284
  __metadata("design:paramtypes", [Object]),
117
285
  __metadata("design:returntype", Promise)
118
286
  ], SentinelAlertInvestigationRunner, "investigateNewAlert", null);
287
+ __decorate([
288
+ CaptureSpan(),
289
+ __metadata("design:type", Function),
290
+ __metadata("design:paramtypes", [Object]),
291
+ __metadata("design:returntype", Promise)
292
+ ], SentinelAlertInvestigationRunner, "executeInvestigation", null);
293
+ __decorate([
294
+ CaptureSpan(),
295
+ __metadata("design:type", Function),
296
+ __metadata("design:paramtypes", [Object]),
297
+ __metadata("design:returntype", Promise)
298
+ ], SentinelAlertInvestigationRunner, "shouldInvestigateAlert", null);
119
299
  //# sourceMappingURL=AlertInvestigationRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AlertInvestigationRunner.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Sentinel/AlertInvestigationRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AlertInvestigationRunner.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Sentinel/AlertInvestigationRunner.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,aAAa,MAAM,wBAAwB,CAAC;AACnD,OAAO,SAAS,MAAM,0CAA0C,CAAC;AACjE,OAAO,SAAS,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAIxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,YAAY,MAAM,gCAAgC,CAAC;AAC1D,OAAO,oBAAoB,MAAM,wCAAwC,CAAC;AAC1E,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,YAAY,MAAM,gCAAgC,CAAC;AAC1D,OAAO,gBAAgB,MAAM,oCAAoC,CAAC;AAClE,OAAO,WAAW,MAAM,qCAAqC,CAAC;AAC9D,OAAO,qBAEN,MAAM,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AACxE,OAAO,0BAA0B,MAAM,sBAAsB,CAAC;AAE9D,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,WAAW,MAAM,6BAA6B,CAAC;AAEtD;;;;;;;;;;;;;;;GAeG;AAEH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,6BAA6B,GAAW,EAAE,CAAC;AACxD,kEAAkE;AAClE,MAAM,yBAAyB,GAAW,EAAE,GAAG,EAAE,CAAC;AAUlD,MAAM,CAAC,OAAO,OAAO,gCAAgC;IACnD;;;;OAIG;IAEiB,AAAb,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAGvC;QACC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAEpC,IAAI,CAAC;YACH,IACE,CAAC,CAAC,MAAM,2BAA2B,CAAC,mBAAmB,CACrD,SAAS,EACT,OAAO,CACR,CAAC,EACF,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAsB,MAAM,IAAI,CAAC,sBAAsB,CAAC;gBAChE,OAAO;gBACP,SAAS;aACV,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,MAAM,CAAC,KAAK,CACV,8CAA8C,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,GAAG,CACrF,CAAC;gBACF,OAAO;YACT,CAAC;YAED,MAAM,0BAA0B,CAAC,OAAO,CAAC;gBACvC,SAAS;gBACT,cAAc,EAAE,OAAO;gBACvB,gBAAgB,EAAE,IAAI,CAAC,SAAS;aACjC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CACV,iEAAiE,OAAO,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE,CAChG,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IAEiB,AAAb,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAKxC;QACC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAE3D,IAAI,cAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,WAAW,GACf,MAAM,qBAAqB,CAAC,iBAAiB,CAAC;gBAC5C,OAAO;aACR,CAAC,CAAC;YAEL,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf;;;eAGG;YACH,MAAM,0BAA0B,CAAC,aAAa,CAAC;gBAC7C,OAAO;gBACP,YAAY;gBACZ,YAAY,EAAE,kCACZ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE;gBACF,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,2BAA2B,CAAC,UAAU,CAAC;YAC3C,OAAO;YACP,SAAS;YACT,YAAY;YACZ,OAAO,EAAE;gBACP,OAAO,EAAE,8BAA8B;gBACvC,cAAc;gBACd,YAAY,EAAE,KAAK,EAAE,QAIpB,EAAiB,EAAE;oBAClB,MAAM,gBAAgB,CAAC,mBAAmB,CAAC;wBACzC,OAAO;wBACP,SAAS;wBACT,kBAAkB,EAAE,kBAAkB,CAAC,SAAS;wBAChD,YAAY,EAAE,OAAO;wBACrB,kBAAkB,EAAE,QAAQ,CAAC,gBAAgB;wBAC7C;;;2BAGG;wBACH,qBAAqB,EAAE;4BACrB,yBAAyB,EAAE,QAAQ,CAAC,WAAW;yBAChD;qBACF,CAAC,CAAC;gBACL,CAAC;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IAEiB,AAAb,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAG1C;;QACC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAEpC,MAAM,KAAK,GAAiB,MAAM,YAAY,CAAC,WAAW,CAAC;YACzD,EAAE,EAAE,OAAO;YACX,MAAM,EAAE;gBACN,SAAS,EAAE,IAAI;gBACf,aAAa,EAAE;oBACb,KAAK,EAAE,IAAI;iBACZ;aACF;YACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC3D,CAAC;QAED,yEAAyE;QACzE,MAAM,OAAO,GAAmB,MAAM,cAAc,CAAC,WAAW,CAAC;YAC/D,EAAE,EAAE,SAAS;YACb,MAAM,EAAE;gBACN,mCAAmC,EAAE,IAAI;gBACzC,qCAAqC,EAAE,IAAI;aAC5C;YACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SACxB,CAAC,CAAC;QAEH,kBAAkB;QAClB,MAAM,UAAU,GAAkB,MAAM,IAAI,CAAC,qBAAqB,CAChE,SAAS,EACT,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mCAAmC,CAC7C,CAAC;QACF,MAAM,UAAU,GAAuB,MAAA,KAAK,CAAC,aAAa,0CAAE,KAAK,CAAC;QAElE,IACE,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,SAAS;YACxB,UAAU,GAAG,UAAU,EACvB,CAAC;YACD,OAAO;gBACL,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,kBAAkB,UAAU,4CAA4C,UAAU,GAAG;gBAC7F,SAAS,EAAE,KAAK,CAAC,SAAS;aAC3B,CAAC;QACJ,CAAC;QAED;;;;WAIG;QACH,MAAM,mBAAmB,GAAW,IAAI,CAAC,GAAG,CAC1C,yBAAyB,EACzB,IAAI,CAAC,GAAG,CACN,CAAC,EACD,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,qCAAqC,mCAC5C,6BAA6B,CAChC,CACF,CAAC;QAEF,IAAI,KAAK,CAAC,SAAS,IAAI,mBAAmB,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,WAAW,GACf,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;YAEvD,MAAM,cAAc,GAAW,CAC7B,MAAM,YAAY,CAAC,OAAO,CAAC;gBACzB,KAAK,EAAE;oBACL,SAAS;oBACT,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,OAAO,EAAE,SAAS,CAAC,aAAa;oBAChC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;iBAChD;gBACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;aACxB,CAAC,CACH,CAAC,QAAQ,EAAE,CAAC;YAEb,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO;oBACL,WAAW,EAAE,KAAK;oBAClB,MAAM,EAAE,WAAW,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,6CAA6C,mBAAmB,UAAU;oBACvH,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC3B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,kCAAkC;YAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,KAAK,CAAC,qBAAqB,CACxC,SAAmB,EACnB,iBAAuC;;QAEvC,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,aAAa,GACjB,MAAM,oBAAoB,CAAC,WAAW,CAAC;gBACrC,EAAE,EAAE,iBAAiB;gBACrB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;gBACvB,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;aACxB,CAAC,CAAC;YAEL,IAAI,aAAa,IAAI,aAAa,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACvD,OAAO,aAAa,CAAC,KAAK,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,qEAAqE;QACrE,MAAM,QAAQ,GAAyB,MAAM,oBAAoB,CAAC,MAAM,CAAC;YACvE,KAAK,EAAE,EAAE,SAAS,EAAE;YACpB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACvB,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE;YACpC,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SACxB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAkB,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QAC/D,OAAO,MAAA,QAAQ,CAAC,KAAK,mCAAI,IAAI,CAAC;IAChC,CAAC;IAED,0DAA0D;IAClD,MAAM,CAAC,iBAAiB,CAAC,WAA6B;;QAC5D,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC;QAE7C,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;QAE7C,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,aAAa,CAAA,MAAA,KAAK,CAAC,aAAa,0CAAE,IAAI,KAAI,KAAK,EAAE,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAA,MAAA,KAAK,CAAC,iBAAiB,0CAAE,IAAI,KAAI,KAAK,EAAE,CAAC,CAAC;QACvE,KAAK,CAAC,IAAI,CACR,gBACE,KAAK,CAAC,SAAS;YACb,CAAC,CAAC,aAAa,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC;YACzD,CAAC,CAAC,KACN,EAAE,CACH,CAAC;QAEF,IAAI,MAAA,KAAK,CAAC,OAAO,0CAAE,IAAI,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,CACR,WAAW,KAAK,CAAC,MAAM;iBACpB,GAAG,CAAC,CAAC,CAAoB,EAAE,EAAE;gBAC5B,OAAO,CAAC,CAAC,IAAI,CAAC;YAChB,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,oCAAoC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,WAAW,GAAkB,CAAC,aAAa,IAAI,EAAE,CAAC;aACrD,KAAK,CAAC,CAAC,CAAC,CAAC;aACT,GAAG,CAAC,CAAC,IAAuB,EAAE,EAAE;YAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AAvTqB;IADnB,WAAW,EAAE;;;;iEAuCb;AASmB;IADnB,WAAW,EAAE;;;;kEA8Db;AASmB;IADnB,WAAW,EAAE;;;;oEA+Fb"}
@@ -10,9 +10,12 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  import OneUptimeDate from "../../../../Types/Date";
11
11
  import { Blue500 } from "../../../../Types/BrandColors";
12
12
  import { IncidentFeedEventType } from "../../../../Models/DatabaseModels/IncidentFeed";
13
+ import IncidentInternalNote from "../../../../Models/DatabaseModels/IncidentInternalNote";
13
14
  import IncidentFeedService from "../../../Services/IncidentFeedService";
15
+ import IncidentInternalNoteService from "../../../Services/IncidentInternalNoteService";
14
16
  import IncidentAIContextBuilder from "../IncidentAIContextBuilder";
15
17
  import SentinelInvestigationEngine from "./SentinelInvestigationEngine";
18
+ import SentinelInvestigationQueue from "./InvestigationQueue";
16
19
  import SentinelMemory from "./SentinelMemory";
17
20
  import logger from "../../Logger";
18
21
  import CaptureSpan from "../../Telemetry/CaptureSpan";
@@ -21,18 +24,17 @@ import CaptureSpan from "../../Telemetry/CaptureSpan";
21
24
  *
22
25
  * When a new incident is declared, wakes Sentinel to investigate it (read-only)
23
26
  * and post a cited root-cause analysis into the incident timeline + Slack/Teams
24
- * — before the on-call engineer has finished reading the page. The heavy lifting
25
- * (run lifecycle, the agent loop, confidence gating) lives in the shared
26
- * SentinelInvestigationEngine; this file only assembles incident context and
27
- * posts the result to the incident's feed.
28
- *
29
- * Built on the fire-and-forget async pattern already used throughout
30
- * IncidentService.onCreateSuccess. See Internal/Roadmap/AISentinelReliabilityBrain.md.
27
+ * — before the on-call engineer has finished reading the page. The trigger only
28
+ * records durable intent (a Queued AIRun via SentinelInvestigationQueue), so a
29
+ * pod restart can no longer orphan an investigation; the heavy lifting (run
30
+ * lifecycle, the agent loop, confidence gating) lives in the shared
31
+ * SentinelInvestigationEngine. See Internal/Roadmap/AISentinelExecution.md.
31
32
  */
32
33
  export default class SentinelIncidentInvestigationRunner {
33
34
  /*
34
35
  * Entry point called (fire-and-forget) from IncidentService.onCreateSuccess.
35
- * Never throws all failures are logged and recorded on the AIRun.
36
+ * Cheap: gates + a Queued AIRun row; execution happens via the queue.
37
+ * Never throws — all failures are logged.
36
38
  */
37
39
  static async investigateNewIncident(data) {
38
40
  const { incidentId, projectId } = data;
@@ -40,6 +42,25 @@ export default class SentinelIncidentInvestigationRunner {
40
42
  if (!(await SentinelInvestigationEngine.isEnabledForProject(projectId, "Incident"))) {
41
43
  return;
42
44
  }
45
+ await SentinelInvestigationQueue.enqueue({
46
+ projectId,
47
+ subjectIncidentId: incidentId,
48
+ });
49
+ }
50
+ catch (error) {
51
+ logger.error(`Sentinel: unexpected error enqueueing investigation for incident ${incidentId.toString()}: ${error}`);
52
+ }
53
+ }
54
+ /*
55
+ * Execute a claimed run: assemble incident context and hand it to the
56
+ * engine. Called by SentinelInvestigationQueue after a successful claim.
57
+ * Never throws — failures are handed to the queue's retry policy so a
58
+ * claimed run is always finalized or requeued.
59
+ */
60
+ static async executeInvestigation(data) {
61
+ const { aiRunId, projectId, incidentId, attemptCount } = data;
62
+ let contextSummary;
63
+ try {
43
64
  const contextData = await IncidentAIContextBuilder.buildIncidentContext({
44
65
  incidentId,
45
66
  includeWorkspaceMessages: false,
@@ -63,11 +84,29 @@ export default class SentinelIncidentInvestigationRunner {
63
84
  })
64
85
  .filter(Boolean),
65
86
  });
66
- await SentinelInvestigationEngine.investigate({
67
- projectId,
87
+ contextSummary =
88
+ this.buildIncidentSummary(contextData) + priorCasesContext;
89
+ }
90
+ catch (error) {
91
+ /*
92
+ * Context assembly failed — the run is claimed, so hand it to the
93
+ * retry policy rather than leaving it Running until the sweeper.
94
+ */
95
+ await SentinelInvestigationQueue.failOrRequeue({
96
+ aiRunId,
97
+ attemptCount,
98
+ errorMessage: `Failed to build incident context: ${error instanceof Error ? error.message : String(error)}`,
99
+ isPermanent: false,
100
+ });
101
+ return;
102
+ }
103
+ await SentinelInvestigationEngine.executeRun({
104
+ aiRunId,
105
+ projectId,
106
+ attemptCount,
107
+ request: {
68
108
  feature: "Sentinel Incident Investigation",
69
- subjectIncidentId: incidentId,
70
- contextSummary: this.buildIncidentSummary(contextData) + priorCasesContext,
109
+ contextSummary,
71
110
  postAnalysis: async (postData) => {
72
111
  await IncidentFeedService.createIncidentFeedItem({
73
112
  incidentId,
@@ -83,12 +122,34 @@ export default class SentinelIncidentInvestigationRunner {
83
122
  sendWorkspaceNotification: postData.isConfident,
84
123
  },
85
124
  });
125
+ /*
126
+ * Also file the RCA as an incident internal note, where responders
127
+ * collaborate. The RootCause feed item above, with its quiet-mode
128
+ * gating, must stay the single notification source, so:
129
+ * ignoreHooks skips the note service's "posted private note" feed
130
+ * item + unconditional workspace ping (workflow triggers and
131
+ * realtime updates still fire), and isOwnerNotified stops the
132
+ * note-posted owner-notification cron from paging owners about it.
133
+ * Best-effort: a note failure must not fail the run after the feed
134
+ * item already posted.
135
+ */
136
+ try {
137
+ const note = new IncidentInternalNote();
138
+ note.incidentId = incidentId;
139
+ note.projectId = projectId;
140
+ note.note = postData.analysisMarkdown;
141
+ note.isOwnerNotified = true;
142
+ await IncidentInternalNoteService.create({
143
+ data: note,
144
+ props: { isRoot: true, ignoreHooks: true },
145
+ });
146
+ }
147
+ catch (error) {
148
+ logger.error(`Sentinel: failed to post RCA internal note for incident ${incidentId.toString()}: ${error}`);
149
+ }
86
150
  },
87
- });
88
- }
89
- catch (error) {
90
- logger.error(`Sentinel: unexpected error investigating incident ${incidentId.toString()}: ${error}`);
91
- }
151
+ },
152
+ });
92
153
  }
93
154
  // Build a compact incident record to seed the investigation.
94
155
  static buildIncidentSummary(contextData) {
@@ -144,4 +205,10 @@ __decorate([
144
205
  __metadata("design:paramtypes", [Object]),
145
206
  __metadata("design:returntype", Promise)
146
207
  ], SentinelIncidentInvestigationRunner, "investigateNewIncident", null);
208
+ __decorate([
209
+ CaptureSpan(),
210
+ __metadata("design:type", Function),
211
+ __metadata("design:paramtypes", [Object]),
212
+ __metadata("design:returntype", Promise)
213
+ ], SentinelIncidentInvestigationRunner, "executeInvestigation", null);
147
214
  //# sourceMappingURL=IncidentInvestigationRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IncidentInvestigationRunner.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Sentinel/IncidentInvestigationRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IncidentInvestigationRunner.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Sentinel/IncidentInvestigationRunner.ts"],"names":[],"mappings":"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"}